diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7f85cfb..4bc6288 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,28 @@
# Change Log
+## 2.0.1
+
+- gatsby-source-wordpress v5.14.2 and v6.1.0 both support WPGatsby v2.0.0+. This release re-published v2 as the latest WPGatsby version.
+
## 1.1.4
-- Rolling out a release to overwrite v2.0.0
+- Rolling out a release to overwrite v2.0.0. gatsby-source-wordpress didn't yet have a new release allowing WPGatsby v2.0.0+ support.
+
+## 2.0.0
+
+We finalized support for Gatsby Cloud Content Sync Previews in this release. Content Sync is a Gatsby Cloud preview loader. Previously preview loading was handled within this plugin but we removed support for that legacy preview loader as the support burden for keeping the old and new preview logic around would be too much. Gatsby Cloud Content Sync is far more reliable than WPGatsby's preview loader as it has more context on the Gatsby build process.
+
+For Content Sync to work you will need to upgrade to the latest version of `gatsby-source-wordpress` and either the latest `3.0.0` or `4.0.0` version of Gatsby core.
+
+In addition this release comes with some bug fixes:
+
+- Fixed double instantiation of ActionMonitor classes which caused double webhooks and potentially double saving of data in some cases.
+- Makes preview routing more reliable by simplifying our logic and adding a `gatsby_preview=true` param to all preview links. For some users every second preview would fail to correctly route to the preview template. This is now fixed.
+
+## 1.1.3
+
+- The uri field was being overwritten during GraphQL requests, resulting in post uri's that included the content sync URL.
+- Some logic attempting to choose the correct manifest ID instead of regenerating it was causing manifest id's to be outdated during previews.
## 1.1.2
diff --git a/composer.lock b/composer.lock
index 4352694..5062ea5 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4423,23 +4423,30 @@
},
{
"name": "rmccue/requests",
- "version": "v1.7.0",
+ "version": "v1.8.0",
"source": {
"type": "git",
- "url": "https://github.com/rmccue/Requests.git",
- "reference": "87932f52ffad70504d93f04f15690cf16a089546"
+ "url": "https://github.com/WordPress/Requests.git",
+ "reference": "afbe4790e4def03581c4a0963a1e8aa01f6030f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rmccue/Requests/zipball/87932f52ffad70504d93f04f15690cf16a089546",
- "reference": "87932f52ffad70504d93f04f15690cf16a089546",
+ "url": "https://api.github.com/repos/WordPress/Requests/zipball/afbe4790e4def03581c4a0963a1e8aa01f6030f1",
+ "reference": "afbe4790e4def03581c4a0963a1e8aa01f6030f1",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
"require-dev": {
- "requests/test-server": "dev-master"
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
+ "php-parallel-lint/php-console-highlighter": "^0.5.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpcompatibility/php-compatibility": "^9.0",
+ "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5",
+ "requests/test-server": "dev-master",
+ "squizlabs/php_codesniffer": "^3.5",
+ "wp-coding-standards/wpcs": "^2.0"
},
"type": "library",
"autoload": {
@@ -4458,7 +4465,7 @@
}
],
"description": "A HTTP library written in PHP, for human beings.",
- "homepage": "http://github.com/rmccue/Requests",
+ "homepage": "http://github.com/WordPress/Requests",
"keywords": [
"curl",
"fsockopen",
@@ -4469,10 +4476,10 @@
"sockets"
],
"support": {
- "issues": "https://github.com/rmccue/Requests/issues",
- "source": "https://github.com/rmccue/Requests/tree/master"
+ "issues": "https://github.com/WordPress/Requests/issues",
+ "source": "https://github.com/WordPress/Requests/tree/v1.8.0"
},
- "time": "2016-10-13T00:11:37+00:00"
+ "time": "2021-04-27T11:05:25+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -6274,16 +6281,16 @@
},
{
"name": "symfony/finder",
- "version": "v5.2.2",
+ "version": "v5.2.9",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "196f45723b5e618bf0e23b97e96d11652696ea9e"
+ "reference": "ccccb9d48ca42757dd12f2ca4bf857a4e217d90d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/196f45723b5e618bf0e23b97e96d11652696ea9e",
- "reference": "196f45723b5e618bf0e23b97e96d11652696ea9e",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/ccccb9d48ca42757dd12f2ca4bf857a4e217d90d",
+ "reference": "ccccb9d48ca42757dd12f2ca4bf857a4e217d90d",
"shasum": ""
},
"require": {
@@ -6315,7 +6322,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.2.2"
+ "source": "https://github.com/symfony/finder/tree/v5.2.9"
},
"funding": [
{
@@ -6331,7 +6338,7 @@
"type": "tidelift"
}
],
- "time": "2021-01-27T10:01:46+00:00"
+ "time": "2021-05-16T13:07:46+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -8869,16 +8876,16 @@
},
{
"name": "wp-cli/php-cli-tools",
- "version": "v0.11.11",
+ "version": "v0.11.12",
"source": {
"type": "git",
"url": "https://github.com/wp-cli/php-cli-tools.git",
- "reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f"
+ "reference": "e472e08489f7504d9e8c5c5a057e1419cd1b2b3e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f",
- "reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f",
+ "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/e472e08489f7504d9e8c5c5a057e1419cd1b2b3e",
+ "reference": "e472e08489f7504d9e8c5c5a057e1419cd1b2b3e",
"shasum": ""
},
"require": {
@@ -8898,15 +8905,15 @@
"MIT"
],
"authors": [
- {
- "name": "James Logsdon",
- "email": "jlogsdon@php.net",
- "role": "Developer"
- },
{
"name": "Daniel Bachhuber",
"email": "daniel@handbuilt.co",
"role": "Maintainer"
+ },
+ {
+ "name": "James Logsdon",
+ "email": "jlogsdon@php.net",
+ "role": "Developer"
}
],
"description": "Console utilities for PHP",
@@ -8917,9 +8924,9 @@
],
"support": {
"issues": "https://github.com/wp-cli/php-cli-tools/issues",
- "source": "https://github.com/wp-cli/php-cli-tools/tree/master"
+ "source": "https://github.com/wp-cli/php-cli-tools/tree/v0.11.12"
},
- "time": "2018-09-04T13:28:00+00:00"
+ "time": "2021-03-03T12:43:49+00:00"
},
{
"name": "wp-cli/rewrite-command",
@@ -9420,23 +9427,23 @@
},
{
"name": "wp-cli/wp-cli",
- "version": "v2.4.1",
+ "version": "v2.5.0",
"source": {
"type": "git",
"url": "https://github.com/wp-cli/wp-cli.git",
- "reference": "ceb18598e79befa9b2a37a51efbb34910628988b"
+ "reference": "0bcf0c54f4d35685211d435e25219cc7acbe6d48"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/ceb18598e79befa9b2a37a51efbb34910628988b",
- "reference": "ceb18598e79befa9b2a37a51efbb34910628988b",
+ "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/0bcf0c54f4d35685211d435e25219cc7acbe6d48",
+ "reference": "0bcf0c54f4d35685211d435e25219cc7acbe6d48",
"shasum": ""
},
"require": {
"ext-curl": "*",
"mustache/mustache": "~2.13",
- "php": "^5.4 || ^7.0",
- "rmccue/requests": "~1.6",
+ "php": "^5.6 || ^7.0 || ^8.0",
+ "rmccue/requests": "^1.8",
"symfony/finder": ">2.7",
"wp-cli/mustangostang-spyc": "^0.6.3",
"wp-cli/php-cli-tools": "~0.11.2"
@@ -9447,7 +9454,7 @@
"wp-cli/entity-command": "^1.2 || ^2",
"wp-cli/extension-command": "^1.1 || ^2",
"wp-cli/package-command": "^1 || ^2",
- "wp-cli/wp-cli-tests": "^2.1"
+ "wp-cli/wp-cli-tests": "^3.0.7"
},
"suggest": {
"ext-readline": "Include for a better --prompt implementation",
@@ -9460,13 +9467,17 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.4.x-dev"
+ "dev-master": "2.5.x-dev"
}
},
"autoload": {
"psr-0": {
- "WP_CLI": "php"
- }
+ "WP_CLI\\": "php/"
+ },
+ "classmap": [
+ "php/class-wp-cli.php",
+ "php/class-wp-cli-command.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -9483,7 +9494,7 @@
"issues": "https://github.com/wp-cli/wp-cli/issues",
"source": "https://github.com/wp-cli/wp-cli"
},
- "time": "2020-02-18T08:15:37+00:00"
+ "time": "2021-05-14T13:44:51+00:00"
},
{
"name": "wp-cli/wp-cli-bundle",
diff --git a/readme.txt b/readme.txt
index 91e2882..e83743a 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,7 +4,7 @@ Tags: Gatsby, GatsbyJS, JavaScript, JAMStack, Static Site generator, GraphQL, He
Requires at least: 5.4.2
Tested up to: 5.6
Requires PHP: 7.3
-Stable tag: 1.1.4
+Stable tag: 2.0.1
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html
diff --git a/src/ActionMonitor/ActionMonitor.php b/src/ActionMonitor/ActionMonitor.php
index 297b65c..52852a7 100644
--- a/src/ActionMonitor/ActionMonitor.php
+++ b/src/ActionMonitor/ActionMonitor.php
@@ -352,7 +352,6 @@ function init_action_monitors() {
$class = 'WPGatsby\ActionMonitor\Monitors\\' . $class_name;
if ( class_exists( $class ) ) {
$monitor = new $class( $this );
- $monitor->init();
$action_monitors[ $class_name ] = $monitor;
}
}
diff --git a/src/ActionMonitor/Monitors/ActionMonitor.php b/src/ActionMonitor/Monitors/ActionMonitor.php
deleted file mode 100644
index a315cf3..0000000
--- a/src/ActionMonitor/Monitors/ActionMonitor.php
+++ /dev/null
@@ -1,7 +0,0 @@
-post_type ? get_post_type_object( $post->post_type ) : null;
+
+ if ( $post_type_object && ! $post_type_object->show_in_graphql ?? true ) {
+ return plugin_dir_path( __FILE__ ) . '../../Admin/includes/post-type-not-shown-in-graphql.php';
+ }
+
+ // WP doesn't call post_save for every second preview with no content changes.
+ // Since we're using post_save to trigger the webhook to Gatsby, we need to get WP to call post_save for this post.
+ do_action( 'save_post', $post->ID, $post, true );
+
+ $this->post_to_preview_instance( $post->ID, $post );
+
+ return trailingslashit( dirname( __FILE__ ) ) . '../../Admin/includes/preview-template.php';
+ }
+
+ return $template;
}
/**
@@ -41,13 +93,13 @@ static function get_gatsby_preview_webhook() {
*/
public function post_to_preview_instance( $post_ID, $post ) {
$revisions_are_disabled =
- !wp_revisions_enabled( $post );
+ ! wp_revisions_enabled( $post );
if (
defined( 'DOING_AUTOSAVE' )
&& DOING_AUTOSAVE
// if revisions are disabled, our autosave is our preview
- && !$revisions_are_disabled
+ && ! $revisions_are_disabled
) {
return;
}
@@ -72,7 +124,15 @@ public function post_to_preview_instance( $post_ID, $post ) {
$is_revision = $post->post_type === 'revision';
$is_draft = $post->post_status === 'draft';
- if ( !$is_draft && !$is_revision && !$is_new_post_draft ) {
+ $is_gatsby_content_sync_preview = self::is_gatsby_content_sync_preview();
+
+
+ if (
+ ! $is_draft
+ && ! $is_revision
+ && ! $is_new_post_draft
+ && ! $is_gatsby_content_sync_preview
+ ) {
return;
}
@@ -90,15 +150,16 @@ public function post_to_preview_instance( $post_ID, $post ) {
$original_post = get_post( $post->post_parent );
$this_is_a_publish_not_a_preview =
- $original_post && $original_post->post_modified === $post->post_modified;
+ $original_post
+ && $original_post->post_modified === $post->post_modified
+ && ! $is_gatsby_content_sync_preview;
+
if ( $this_is_a_publish_not_a_preview ) {
// we will handle this in ActionMonitor.php, not here.
return;
}
- $parent_post_id = $original_post->ID ?? $post_ID;
-
$post_type_object = $original_post
? \get_post_type_object( $original_post->post_type )
: \get_post_type_object( $post->post_type );
@@ -108,37 +169,8 @@ public function post_to_preview_instance( $post_ID, $post ) {
// we don't want to send a preview webhook for this post type.
return;
}
-
- $last_sent_modified_time = Preview::get_last_sent_modified_time_by_post_id(
- $parent_post_id
- );
-
- $last_sent_modified_time_unix = strtotime( $last_sent_modified_time );
- $this_sent_modified_time_unix = strtotime( $post->post_modified );
-
- $difference_between_last_modified_and_this_modified =
- $this_sent_modified_time_unix - $last_sent_modified_time_unix;
-
- if (
- $last_sent_modified_time &&
- (
- // if the last time was the same as this.
- $last_sent_modified_time === $post->post_modified ||
- // or the last time was within the last 5 seconds.
- $difference_between_last_modified_and_this_modified < 5
- )
- ) {
- // we've already sent a webhook for this revision.
- // return early to prevent extra builds.
- return;
- }
-
- // otherwise store this modified time so we can compare it next time.
- update_post_meta(
- $parent_post_id,
- self::$last_sent_modified_time_key,
- $post->post_modified
- );
+
+ $parent_post_id = $original_post->ID ?? $post_ID;
$global_relay_id = Relay::toGlobalId(
'post',
@@ -210,21 +242,25 @@ public function post_to_preview_instance( $post_ID, $post ) {
]
);
- // this is used to optimistically load the preview iframe
- // we also check if the frontend is responding to requests from the
- // preview template JS.
- $webhook_success = Preview::was_request_successful( $response );
+ if ( \is_wp_error( $response ) ) {
+ error_log( "WPGatsby couldn\'t POST to the Preview webhook set in plugin options.\nWebhook returned error: {$response->get_error_message()}" );
+ }
+ }
+
+ /**
+ * Get the Gatsby Preview instance refresh webhook
+ */
+ static function get_gatsby_preview_webhook() {
+ $preview_webhook = Settings::get_setting( 'preview_api_webhook' );
- update_option(
- '_wp_gatsby_preview_webhook_is_online',
- $webhook_success, // boolean.
- true
- );
+ if ( ! $preview_webhook || ! filter_var( $preview_webhook, FILTER_VALIDATE_URL ) ) {
+ return false;
+ }
- if ( ! $webhook_success ) {
- error_log(
- 'WPGatsby couldn\'t reach the Preview webhook set in plugin options.'
- );
+ if ( substr( $preview_webhook, -1 ) !== '/' ) {
+ $preview_webhook .= '/';
}
+
+ return $preview_webhook;
}
}
diff --git a/src/Admin/Preview.php b/src/Admin/Preview.php
index 9bc598f..b7bd670 100644
--- a/src/Admin/Preview.php
+++ b/src/Admin/Preview.php
@@ -4,117 +4,21 @@
use GraphQL\Error\UserError;
use WPGraphQL\Router;
+use WPGatsby\Admin\Settings;
class Preview {
-
- public static $last_sent_modified_time_key = '_wpgatsby_last_preview_modified_time';
-
function __construct() {
- $enable_gatsby_preview = self::get_setting( 'enable_gatsby_preview' );
-
- if ( $enable_gatsby_preview === 'on' ) {
- add_filter( 'template_include', [ $this, 'setup_preview_template' ], 1, 99 );
-
- add_action(
- 'graphql_register_types',
- function() {
- $this->registerPreviewStatusFieldsAndMutations();
- }
- );
-
- $use_cloud_loader = self::get_setting( 'use_gatsby_content_sync' );
-
- if ( $use_cloud_loader === 'on' ) {
- add_filter( 'preview_post_link', function( $link, $post ) {
- return self::get_gatsby_content_sync_url_for_post( $post );
- }, 10, 2 );
- }
- }
- }
-
- public static function get_preview_manifest_id_for_post( $post ) {
- $graphql_single_name =
- get_post_type_object( $post->post_type )
- ->graphql_single_name;
-
- if ( !$graphql_single_name || $graphql_single_name === "" ) {
- // if we don't have a graphql single name
- // Gatsby can't use this post anyway.
- // No need to return a manifest
- return null;
- }
-
- $action_monitor_posts = new \WP_Query( [
- 'post_type' => 'action_monitor',
- 'post_status' => 'any',
- 'posts_per_page' => 1,
- 'no_found_rows' => true,
- 'fields' => 'ids',
- 'tax_query' => [
- 'relation' => 'AND',
- [
- 'taxonomy' => 'gatsby_action_ref_node_dbid',
- 'field' => 'name',
- 'terms' => sanitize_text_field( $post->ID ),
- ],
- [
- 'taxonomy' => 'gatsby_action_ref_node_type',
- 'field' => 'name',
- 'terms' => sanitize_text_field( $graphql_single_name ),
- ],
- [
- 'taxonomy' => 'gatsby_action_stream_type',
- 'field' => 'name',
- 'terms' => 'PREVIEW',
- ]
- ],
- ] );
-
- if (
- isset( $action_monitor_posts->posts )
- && ! empty( $action_monitor_posts->posts )
- ) {
- $action_monitor_post_id = $action_monitor_posts->posts[0];
- $referenced_node_preview_data = get_post_meta(
- $action_monitor_post_id,
- '_gatsby_preview_data',
- true
- );
-
- $preview_data = false;
-
- if (
- $referenced_node_preview_data
- && $referenced_node_preview_data !== ""
- ) {
- $preview_data = json_decode( $referenced_node_preview_data );
+ add_action(
+ 'graphql_register_types',
+ function() {
+ $this->register_preview_status_fields_and_mutations();
}
-
- if (
- $preview_data
- && property_exists( $preview_data, 'manifestIds' )
- && count( $preview_data->manifestIds ) > 0
- ) {
- return $preview_data->manifestIds[0];
- }
- }
-
- // if the above doesn't return a value we generate a new manifest ID from the post_modified date and post db id
- $revision = self::getPreviewablePostObjectByPostId( $post->ID );
- $revision_modified = $revision->post_modified ?? null;
-
- if ( !$revision_modified || $revision_modified === "" ) {
- return null;
- }
-
- $manifest_id = $post->ID . $revision_modified;
-
- return $manifest_id;
+ );
}
public static function get_gatsby_content_sync_url_for_post( $post ) {
// get the Gatsby Cloud loader url w/ site id
- $gatsby_content_sync_url = self::get_setting( 'gatsby_content_sync_url' );
+ $gatsby_content_sync_url = Settings::get_setting( 'gatsby_content_sync_url' );
// create the dynamic path the loader will need
$manifest_id = self::get_preview_manifest_id_for_post( $post );
@@ -129,70 +33,52 @@ public static function get_gatsby_content_sync_url_for_post( $post ) {
return $url;
}
- public static function print_initial_preview_template_state_js() {
- global $post;
- $post_id = $post->ID;
-
- $preview_url = self::get_gatsby_preview_instance_url();
- $preview_url = rtrim( $preview_url, '/' );
-
- $preview_webhook_online = get_option(
- '_wp_gatsby_preview_webhook_is_online'
- );
-
- $initial_state = json_encode(
- [
- 'postId' => $post_id,
- 'previewFrontendUrl' => $preview_url,
- 'previewWebhookIsOnline' => $preview_webhook_online,
- 'graphqlEndpoint' => Router::$route,
- 'webhookWasCalled' => self::was_preview_webhook_called_for_post_id(
- $post_id
- ),
- 'wordpressSiteUrl' => get_site_url()
- ]
- );
+ public static function get_previewable_post_object_by_post_id( $post_id ) {
+ $revision = array_values(
+ wp_get_post_revisions( $post_id )
+ )[0]
+ // or if revisions are disabled, get the autosave
+ ?? wp_get_post_autosave( $post_id, get_current_user_id() )
+ // otherwise we can't preview anything
+ ?? null;
- echo "var initialState = $initial_state; console.log({ initialState: initialState });";
- }
+ if ( $revision ) {
+ return $revision;
+ }
- public static function get_last_sent_modified_time_by_post_id( $post_id ) {
- return get_post_meta(
- $post_id,
- self::$last_sent_modified_time_key,
- true
- );
+ return get_post( $post_id );
}
- static function was_preview_webhook_called_for_post_id( $post_id ) {
- $revision = self::getPreviewablePostObjectByPostId( $post_id );
+ public static function get_preview_manifest_id_for_post( $post ) {
+ $revision = self::get_previewable_post_object_by_post_id( $post->ID );
$revision_modified = $revision->post_modified ?? null;
- $last_sent_modified_time = self::get_last_sent_modified_time_by_post_id(
- $post_id
- );
+ $modified =
+ $post->post_status === "draft"
+ ? $post->post_modified
+ : $revision_modified;
- return $revision_modified === $last_sent_modified_time;
- }
+ if ( ! $modified || $modified === "" ) {
+ return null;
+ }
- static function getPreviewablePostObjectByPostId( $post_id ) {
- $revision = array_values(
- wp_get_post_revisions( $post_id )
- )[0]
- // or if revisions are disabled, get the autosave
- ?? wp_get_post_autosave( $post_id, get_current_user_id() )
- // otherwise we can't preview anything
- ?? null;
+ $manifest_id = $post->ID . $modified;
- if ( $revision ) {
- return $revision;
- }
+ return $manifest_id;
+ }
- return get_post( $post_id );
+ /**
+ * This is used to print out the client CSS file directly to the
+ * Preview template html when Content Sync isn't set up correctly.
+ */
+ public static function print_file_contents( $fileName ) {
+ $pluginDirectory = plugin_dir_path( __FILE__ );
+ $filePath = $pluginDirectory . $fileName;
+ echo file_get_contents( $filePath );
}
- function registerPreviewStatusFieldsAndMutations() {
+ function register_preview_status_fields_and_mutations() {
register_graphql_enum_type(
'WPGatsbyRemotePreviewStatusEnum',
[
@@ -218,6 +104,12 @@ function registerPreviewStatusFieldsAndMutations() {
'wpGatsbyRemotePreviewStatus',
[
'inputFields' => [
+ // parentDatabaseId is the only input arg we need now.
+ // the rest are left for backwards compatibility so errors aren't thrown.
+ 'parentDatabaseId' => [
+ 'type' => 'Number',
+ 'description' => __( 'The previewed revisions post parent id', 'wp-gatsby' ),
+ ],
'pagePath' => [
'type' => 'String',
'description' => __( 'The Gatsby page path for this preview.', 'wp-gatsby' ),
@@ -226,10 +118,6 @@ function registerPreviewStatusFieldsAndMutations() {
'type' => 'String',
'description' => __( 'The modified date of the latest revision for this preview.', 'wp-gatsby' ),
],
- 'parentDatabaseId' => [
- 'type' => 'Number',
- 'description' => __( 'The previewed revisions post parent id', 'wp-gatsby' ),
- ],
'status' => [
'type' => [ 'non_null' => 'WPGatsbyRemotePreviewStatusEnum' ],
'description' => __( 'The remote status of the previewed node', 'wp-gatsby' ),
@@ -253,12 +141,8 @@ function registerPreviewStatusFieldsAndMutations() {
],
],
'mutateAndGetPayload' => function( $input, $context, $info ) {
- $page_path = $input['pagePath'] ?? null;
- $modified = $input['modified'] ?? null;
- $parent_id = $input['parentDatabaseId'] ?? null;
- $remote_status = $input['status'] ?? null;
- $preview_context = $input['statusContext'] ?? null;
-
+ $parent_id = $input['parentDatabaseId'] ?? null;
+
$post = get_post( $parent_id );
$post_type_object = $post
@@ -284,38 +168,6 @@ function registerPreviewStatusFieldsAndMutations() {
throw new UserError( $message );
}
- if ( $page_path ) {
- update_post_meta(
- $parent_id,
- '_wpgatsby_page_path',
- $page_path
- );
- }
-
- if ( $modified ) {
- update_post_meta(
- $parent_id,
- '_wpgatsby_node_modified',
- $modified
- );
- }
-
- if ( $remote_status ) {
- update_post_meta(
- $parent_id,
- '_wpgatsby_node_remote_preview_status',
- $remote_status
- );
- }
-
- if ( $preview_context ) {
- update_post_meta(
- $parent_id,
- '_wpgatsby_node_remote_preview_status_context',
- $preview_context
- );
- }
-
// delete action monitor preview action.
// once we've saved this preview status as succes
// we don't need the preview action anymore.
@@ -470,7 +322,7 @@ function registerPreviewStatusFieldsAndMutations() {
true
);
- $revision = $this::getPreviewablePostObjectByPostId( $post_id );
+ $revision = Preview::getPreviewablePostObjectByPostId( $post_id );
$revision_modified = $revision->post_modified ?? null;
@@ -511,7 +363,7 @@ function registerPreviewStatusFieldsAndMutations() {
$server_side = true;
$gatbsy_preview_frontend_url =
- \WPGatsby\Admin\Preview::get_gatsby_preview_instance_url(
+ self::get_gatsby_preview_instance_url(
$server_side
);
@@ -535,10 +387,18 @@ function registerPreviewStatusFieldsAndMutations() {
$page_data->result->pageContext->__wpGatsbyNodeModified
?? null;
+ error_log(print_r('$modified_response', true));
+ error_log(print_r($modified_response, true));
+ error_log(print_r('$modified', true));
+ error_log(print_r($modified, true));
+
$preview_was_deployed =
$modified_response &&
strtotime( $modified_response ) >= strtotime( $modified );
+ error_log(print_r('$preview_was_deployed', true));
+ error_log(print_r($preview_was_deployed, true));
+
if ( ! $preview_was_deployed ) {
// if preview was not yet deployed, send back PREVIEW_PAGE_UPDATED_BUT_NOT_YET_DEPLOYED.
return [
@@ -633,148 +493,4 @@ function registerPreviewStatusFieldsAndMutations() {
]
);
}
-
- /**
- * If specific conditions are met, this loads the Gatsby Preview template
- * instead of the core WordPress preview template
- *
- * @param string $template The template to load
- *
- * @return string
- */
- public function setup_preview_template( $template ) {
- global $post;
-
- // If the global post isn't set, but the preview_id is passed, use that to determine
- // the preview post
- if ( empty( $post ) && isset( $_GET['preview_id'] ) ) {
- $post = get_post( $_GET['preview_id'] );
- }
-
- // Determine the post_type of the post to be previewed
- $post_type = $post->post_type ?? null;
-
- // Ensure the post_type is set to show_in_graphql
- $post_type_object = $post_type ? get_post_type_object( $post->post_type ) : null;
-
- if ( $post_type && ! $post_type_object->show_in_graphql ?? true ) {
- return plugin_dir_path( __FILE__ ) . 'includes/post-type-not-shown-in-graphql.php';
- }
-
- // Determine if it's a preview
- $is_preview = is_preview() || isset( $_GET['preview_nonce'] );
- $preview_url = self::get_gatsby_preview_instance_url();
- $enable_gatsby_preview = self::get_setting( 'enable_gatsby_preview' );
-
- if (
- $is_preview && (
- $preview_url ||
- ( ! $preview_url && $enable_gatsby_preview === 'on' )
- )
- ) {
- return trailingslashit( dirname( __FILE__ ) ) . 'includes/preview-template.php';
- } elseif ( $is_preview && ! $preview_url ) {
- return trailingslashit( dirname( __FILE__ ) ) . 'includes/no-preview-url-set.php';
- }
-
- return $template;
- }
-
- /**
- * This is used to print out the client JS file directly to the
- * Preview template html
- */
- public static function printFileContents( $fileName ) {
- $pluginDirectory = plugin_dir_path( __FILE__ );
- $filePath = $pluginDirectory . $fileName;
- echo file_get_contents( $filePath );
- }
-
- /**
- * Get a WPGatsby setting by setting key
- *
- * @param string $key The name of the setting to get the value for
- */
- static function get_setting( string $key ) {
- $wpgatsby_settings = get_option( 'wpgatsby_settings' );
-
- return isset( $wpgatsby_settings[ $key ] ) ? $wpgatsby_settings[ $key ] : null;
- }
-
- /**
- * Get the normalized/validated frontend url of the Gatsby Preview
- */
- static function get_gatsby_preview_instance_url( $server_side = false ) {
- $preview_url = self::get_setting( 'preview_instance_url' );
-
- $preview_url_exploded = explode( ',', $preview_url );
-
- // this allows using a different url as the frontend url
- // on the server side and in the preview browser
- // for our tests we need to use http://host.docker.internal:8000 for the PHP
- // side checks for wether or not the page-data.json has deployed
- // but we need to run the preview-template.php code with the frontend url as
- // http://localhost:8000
- // So this allows passing
- // "http://host.docker.internal:8000,http://localhost:8000"
- // as the server preview frontend and template preview frontend
- if ( count( $preview_url_exploded ) > 1 ) {
- $preview_url = $server_side
- ? $preview_url_exploded[0]
- : $preview_url_exploded[1];
- }
-
- if ( ! $preview_url || ! filter_var( $preview_url, FILTER_VALIDATE_URL ) ) {
- return false;
- }
-
- if ( substr( $preview_url, -1 ) !== '/' ) {
- $preview_url .= '/';
- }
-
- return $preview_url;
- }
-
- /**
- * Get the Gatsby Preview instance refresh webhook
- */
- static function get_gatsby_preview_webhook() {
- $preview_webhook = self::get_setting( 'preview_api_webhook' );
-
- if ( ! $preview_webhook
- || ! filter_var( $preview_webhook, FILTER_VALIDATE_URL )
- ) {
- return false;
- }
-
- if ( substr( $preview_webhook, -1 ) !== '/' ) {
- $preview_webhook .= '/';
- }
-
- return $preview_webhook;
- }
-
- public static function was_request_successful( $response ) {
- $is_wp_error = is_wp_error( $response );
-
- $status_code = ! $is_wp_error ? $response['response']['code'] ?? null : null;
- $response_message_was_ok = ! $is_wp_error ? $response['response']['message'] === 'OK' ?? null : null;
-
- // this is used to optimistically load the preview iframe
- // we also check if the frontend is responding to requests from the
- // preview template JS
- $success =
- ! $is_wp_error &&
- (
- $status_code === 200 ||
- $status_code === 204 ||
- $response_message_was_ok
- );
-
- if ( ! $success ) {
- error_log($status_code);
- }
-
- return $success;
- }
}
diff --git a/src/Admin/Settings.php b/src/Admin/Settings.php
index a936f3a..f6479b9 100644
--- a/src/Admin/Settings.php
+++ b/src/Admin/Settings.php
@@ -4,7 +4,6 @@
class Settings {
-
private $settings_api;
function __construct() {
@@ -23,10 +22,9 @@ function __construct() {
/**
* If the settings haven't been saved yet, save the JWT once to prevent it from re-generating.
*/
- public function set_default_jwt_key() {
-
+ public function set_default_jwt_key() {
// Get the JWT Secret
- $default_secret = Preview::get_setting( 'preview_jwt_secret' );
+ $default_secret = self::get_setting( 'preview_jwt_secret' );
if ( empty( $default_secret ) ) {
@@ -169,7 +167,7 @@ private static function generate_secret() {
}
private static function get_default_secret() {
- $default_secret = \WPGatsby\Admin\Preview::get_setting( 'preview_jwt_secret' );
+ $default_secret = self::get_setting( 'preview_jwt_secret' );
if ( ! $default_secret ) {
$default_secret = self::generate_secret();
@@ -211,16 +209,6 @@ public static function get_setting( $key ) {
function get_settings_fields() {
$settings_fields = [
'wpgatsby_settings' => [
- [
- 'name' => 'builds_api_webhook',
- 'label' => __( 'Builds Webhook URL', 'wpgatsby_settings' ),
- 'desc' => __( 'Use a comma-separated list to configure multiple webhooks.', 'wpgatsby_settings' ),
- 'placeholder' => __( 'https://', 'wpgatsby_settings' ),
- 'type' => 'text',
- 'sanitize_callback' => function ( $input ) {
- return $this->sanitize_url_field( $input );
- },
- ],
[
'name' => 'enable_gatsby_preview',
'label' => __( 'Enable Gatsby Preview?', 'wpgatsby_settings' ),
@@ -228,8 +216,9 @@ function get_settings_fields() {
'type' => 'checkbox',
],
[
- 'name' => 'preview_instance_url',
- 'label' => __( 'Preview Frontend URL', 'wpgatsby_settings' ),
+ 'name' => 'preview_api_webhook',
+ 'label' => __( 'Preview Webhook URL', 'wpgatsby_settings' ),
+ 'desc' => __( 'Use a comma-separated list to configure multiple webhooks.', 'wpgatsby_settings' ),
'placeholder' => __( 'https://', 'wpgatsby_settings' ),
'type' => 'text',
'sanitize_callback' => function ( $input ) {
@@ -237,8 +226,8 @@ function get_settings_fields() {
},
],
[
- 'name' => 'preview_api_webhook',
- 'label' => __( 'Preview Webhook URL', 'wpgatsby_settings' ),
+ 'name' => 'builds_api_webhook',
+ 'label' => __( 'Builds Webhook URL', 'wpgatsby_settings' ),
'desc' => __( 'Use a comma-separated list to configure multiple webhooks.', 'wpgatsby_settings' ),
'placeholder' => __( 'https://', 'wpgatsby_settings' ),
'type' => 'text',
@@ -246,12 +235,6 @@ function get_settings_fields() {
return $this->sanitize_url_field( $input );
},
],
- [
- 'name' => 'use_gatsby_content_sync',
- 'label' => __( 'Use Gatsby Content Sync? (BETA feature)', 'wpgatsby_settings' ),
- 'desc' => __( 'Yes, I want to use Gatsby Cloud to redirect admins to the right preview page. (BETA but recommended)', 'wpgatsby_settings' ),
- 'type' => 'checkbox',
- ],
[
'name' => 'gatsby_content_sync_url',
'label' => __( 'Gatsby Content Sync URL', 'wpgatsby_settings' ),
diff --git a/src/Admin/assets/.browserslistrc b/src/Admin/assets/.browserslistrc
deleted file mode 100644
index 6511107..0000000
--- a/src/Admin/assets/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
->0.2%
-not dead
-IE 11
\ No newline at end of file
diff --git a/src/Admin/assets/babel.config.js b/src/Admin/assets/babel.config.js
deleted file mode 100644
index f1159e3..0000000
--- a/src/Admin/assets/babel.config.js
+++ /dev/null
@@ -1,20 +0,0 @@
-module.exports = {
- ignore: [/core-js/, /@babel\/runtime/],
- presets: [
- [
- "@babel/preset-env",
- {
- useBuiltIns: "usage",
- corejs: 3,
- modules: false,
- },
- ],
- "minify",
- ],
- plugins: [
- "@babel/plugin-transform-typescript",
- "@babel/plugin-transform-runtime",
- "@babel/plugin-transform-regenerator",
- "@babel/plugin-proposal-optional-chaining",
- ],
-}
diff --git a/src/Admin/assets/dist/preview-client.js b/src/Admin/assets/dist/preview-client.js
deleted file mode 100644
index 83749ad..0000000
--- a/src/Admin/assets/dist/preview-client.js
+++ /dev/null
@@ -1,5026 +0,0 @@
-(function () {
- 'use strict';
-
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
-
- function createCommonjsModule(fn, basedir, module) {
- return module = {
- path: basedir,
- exports: {},
- require: function (path, base) {
- return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
- }
- }, fn(module, module.exports), module.exports;
- }
-
- function commonjsRequire () {
- throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
- }
-
- var check = function (it) {
- return it && it.Math == Math && it;
- };
- var global_1 =
- check(typeof globalThis == 'object' && globalThis) ||
- check(typeof window == 'object' && window) ||
- check(typeof self == 'object' && self) ||
- check(typeof commonjsGlobal == 'object' && commonjsGlobal) ||
- (function () { return this; })() || Function('return this')();
-
- var fails = function (exec) {
- try {
- return !!exec();
- } catch (error) {
- return true;
- }
- };
-
- var descriptors = !fails(function () {
- return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
- });
-
- var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
- var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
- var f = NASHORN_BUG ? function propertyIsEnumerable(V) {
- var descriptor = getOwnPropertyDescriptor(this, V);
- return !!descriptor && descriptor.enumerable;
- } : nativePropertyIsEnumerable;
- var objectPropertyIsEnumerable = {
- f: f
- };
-
- var createPropertyDescriptor = function (bitmap, value) {
- return {
- enumerable: !(bitmap & 1),
- configurable: !(bitmap & 2),
- writable: !(bitmap & 4),
- value: value
- };
- };
-
- var toString = {}.toString;
- var classofRaw = function (it) {
- return toString.call(it).slice(8, -1);
- };
-
- var split = ''.split;
- var indexedObject = fails(function () {
- return !Object('z').propertyIsEnumerable(0);
- }) ? function (it) {
- return classofRaw(it) == 'String' ? split.call(it, '') : Object(it);
- } : Object;
-
- var requireObjectCoercible = function (it) {
- if (it == undefined) throw TypeError("Can't call method on " + it);
- return it;
- };
-
- var toIndexedObject = function (it) {
- return indexedObject(requireObjectCoercible(it));
- };
-
- var isObject = function (it) {
- return typeof it === 'object' ? it !== null : typeof it === 'function';
- };
-
- var toPrimitive = function (input, PREFERRED_STRING) {
- if (!isObject(input)) return input;
- var fn, val;
- if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
- if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
- if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
- throw TypeError("Can't convert object to primitive value");
- };
-
- var hasOwnProperty = {}.hasOwnProperty;
- var has = function (it, key) {
- return hasOwnProperty.call(it, key);
- };
-
- var document$1 = global_1.document;
- var EXISTS = isObject(document$1) && isObject(document$1.createElement);
- var documentCreateElement = function (it) {
- return EXISTS ? document$1.createElement(it) : {};
- };
-
- var ie8DomDefine = !descriptors && !fails(function () {
- return Object.defineProperty(documentCreateElement('div'), 'a', {
- get: function () { return 7; }
- }).a != 7;
- });
-
- var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
- var f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
- O = toIndexedObject(O);
- P = toPrimitive(P, true);
- if (ie8DomDefine) try {
- return nativeGetOwnPropertyDescriptor(O, P);
- } catch (error) { }
- if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);
- };
- var objectGetOwnPropertyDescriptor = {
- f: f$1
- };
-
- var anObject = function (it) {
- if (!isObject(it)) {
- throw TypeError(String(it) + ' is not an object');
- } return it;
- };
-
- var nativeDefineProperty = Object.defineProperty;
- var f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
- anObject(O);
- P = toPrimitive(P, true);
- anObject(Attributes);
- if (ie8DomDefine) try {
- return nativeDefineProperty(O, P, Attributes);
- } catch (error) { }
- if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
- if ('value' in Attributes) O[P] = Attributes.value;
- return O;
- };
- var objectDefineProperty = {
- f: f$2
- };
-
- var createNonEnumerableProperty = descriptors ? function (object, key, value) {
- return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));
- } : function (object, key, value) {
- object[key] = value;
- return object;
- };
-
- var setGlobal = function (key, value) {
- try {
- createNonEnumerableProperty(global_1, key, value);
- } catch (error) {
- global_1[key] = value;
- } return value;
- };
-
- var SHARED = '__core-js_shared__';
- var store = global_1[SHARED] || setGlobal(SHARED, {});
- var sharedStore = store;
-
- var functionToString = Function.toString;
- if (typeof sharedStore.inspectSource != 'function') {
- sharedStore.inspectSource = function (it) {
- return functionToString.call(it);
- };
- }
- var inspectSource = sharedStore.inspectSource;
-
- var WeakMap = global_1.WeakMap;
- var nativeWeakMap = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));
-
- var isPure = false;
-
- var shared = createCommonjsModule(function (module) {
- (module.exports = function (key, value) {
- return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
- })('versions', []).push({
- version: '3.7.0',
- mode: 'global',
- copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
- });
- });
-
- var id = 0;
- var postfix = Math.random();
- var uid = function (key) {
- return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
- };
-
- var keys = shared('keys');
- var sharedKey = function (key) {
- return keys[key] || (keys[key] = uid(key));
- };
-
- var hiddenKeys = {};
-
- var WeakMap$1 = global_1.WeakMap;
- var set, get, has$1;
- var enforce = function (it) {
- return has$1(it) ? get(it) : set(it, {});
- };
- var getterFor = function (TYPE) {
- return function (it) {
- var state;
- if (!isObject(it) || (state = get(it)).type !== TYPE) {
- throw TypeError('Incompatible receiver, ' + TYPE + ' required');
- } return state;
- };
- };
- if (nativeWeakMap) {
- var store$1 = sharedStore.state || (sharedStore.state = new WeakMap$1());
- var wmget = store$1.get;
- var wmhas = store$1.has;
- var wmset = store$1.set;
- set = function (it, metadata) {
- metadata.facade = it;
- wmset.call(store$1, it, metadata);
- return metadata;
- };
- get = function (it) {
- return wmget.call(store$1, it) || {};
- };
- has$1 = function (it) {
- return wmhas.call(store$1, it);
- };
- } else {
- var STATE = sharedKey('state');
- hiddenKeys[STATE] = true;
- set = function (it, metadata) {
- metadata.facade = it;
- createNonEnumerableProperty(it, STATE, metadata);
- return metadata;
- };
- get = function (it) {
- return has(it, STATE) ? it[STATE] : {};
- };
- has$1 = function (it) {
- return has(it, STATE);
- };
- }
- var internalState = {
- set: set,
- get: get,
- has: has$1,
- enforce: enforce,
- getterFor: getterFor
- };
-
- var redefine = createCommonjsModule(function (module) {
- var getInternalState = internalState.get;
- var enforceInternalState = internalState.enforce;
- var TEMPLATE = String(String).split('String');
- (module.exports = function (O, key, value, options) {
- var unsafe = options ? !!options.unsafe : false;
- var simple = options ? !!options.enumerable : false;
- var noTargetGet = options ? !!options.noTargetGet : false;
- var state;
- if (typeof value == 'function') {
- if (typeof key == 'string' && !has(value, 'name')) {
- createNonEnumerableProperty(value, 'name', key);
- }
- state = enforceInternalState(value);
- if (!state.source) {
- state.source = TEMPLATE.join(typeof key == 'string' ? key : '');
- }
- }
- if (O === global_1) {
- if (simple) O[key] = value;
- else setGlobal(key, value);
- return;
- } else if (!unsafe) {
- delete O[key];
- } else if (!noTargetGet && O[key]) {
- simple = true;
- }
- if (simple) O[key] = value;
- else createNonEnumerableProperty(O, key, value);
- })(Function.prototype, 'toString', function toString() {
- return typeof this == 'function' && getInternalState(this).source || inspectSource(this);
- });
- });
-
- var path = global_1;
-
- var aFunction = function (variable) {
- return typeof variable == 'function' ? variable : undefined;
- };
- var getBuiltIn = function (namespace, method) {
- return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace])
- : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method];
- };
-
- var ceil = Math.ceil;
- var floor = Math.floor;
- var toInteger = function (argument) {
- return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
- };
-
- var min = Math.min;
- var toLength = function (argument) {
- return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0;
- };
-
- var max = Math.max;
- var min$1 = Math.min;
- var toAbsoluteIndex = function (index, length) {
- var integer = toInteger(index);
- return integer < 0 ? max(integer + length, 0) : min$1(integer, length);
- };
-
- var createMethod = function (IS_INCLUDES) {
- return function ($this, el, fromIndex) {
- var O = toIndexedObject($this);
- var length = toLength(O.length);
- var index = toAbsoluteIndex(fromIndex, length);
- var value;
- if (IS_INCLUDES && el != el) while (length > index) {
- value = O[index++];
- if (value != value) return true;
- } else for (;length > index; index++) {
- if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
- } return !IS_INCLUDES && -1;
- };
- };
- var arrayIncludes = {
- includes: createMethod(true),
- indexOf: createMethod(false)
- };
-
- var indexOf = arrayIncludes.indexOf;
- var objectKeysInternal = function (object, names) {
- var O = toIndexedObject(object);
- var i = 0;
- var result = [];
- var key;
- for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
- while (names.length > i) if (has(O, key = names[i++])) {
- ~indexOf(result, key) || result.push(key);
- }
- return result;
- };
-
- var enumBugKeys = [
- 'constructor',
- 'hasOwnProperty',
- 'isPrototypeOf',
- 'propertyIsEnumerable',
- 'toLocaleString',
- 'toString',
- 'valueOf'
- ];
-
- var hiddenKeys$1 = enumBugKeys.concat('length', 'prototype');
- var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
- return objectKeysInternal(O, hiddenKeys$1);
- };
- var objectGetOwnPropertyNames = {
- f: f$3
- };
-
- var f$4 = Object.getOwnPropertySymbols;
- var objectGetOwnPropertySymbols = {
- f: f$4
- };
-
- var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
- var keys = objectGetOwnPropertyNames.f(anObject(it));
- var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
- return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
- };
-
- var copyConstructorProperties = function (target, source) {
- var keys = ownKeys(source);
- var defineProperty = objectDefineProperty.f;
- var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
- }
- };
-
- var replacement = /#|\.prototype\./;
- var isForced = function (feature, detection) {
- var value = data[normalize(feature)];
- return value == POLYFILL ? true
- : value == NATIVE ? false
- : typeof detection == 'function' ? fails(detection)
- : !!detection;
- };
- var normalize = isForced.normalize = function (string) {
- return String(string).replace(replacement, '.').toLowerCase();
- };
- var data = isForced.data = {};
- var NATIVE = isForced.NATIVE = 'N';
- var POLYFILL = isForced.POLYFILL = 'P';
- var isForced_1 = isForced;
-
- var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
- var _export = function (options, source) {
- var TARGET = options.target;
- var GLOBAL = options.global;
- var STATIC = options.stat;
- var FORCED, target, key, targetProperty, sourceProperty, descriptor;
- if (GLOBAL) {
- target = global_1;
- } else if (STATIC) {
- target = global_1[TARGET] || setGlobal(TARGET, {});
- } else {
- target = (global_1[TARGET] || {}).prototype;
- }
- if (target) for (key in source) {
- sourceProperty = source[key];
- if (options.noTargetGet) {
- descriptor = getOwnPropertyDescriptor$1(target, key);
- targetProperty = descriptor && descriptor.value;
- } else targetProperty = target[key];
- FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
- if (!FORCED && targetProperty !== undefined) {
- if (typeof sourceProperty === typeof targetProperty) continue;
- copyConstructorProperties(sourceProperty, targetProperty);
- }
- if (options.sham || (targetProperty && targetProperty.sham)) {
- createNonEnumerableProperty(sourceProperty, 'sham', true);
- }
- redefine(target, key, sourceProperty, options);
- }
- };
-
- var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {
- return !String(Symbol());
- });
-
- var useSymbolAsUid = nativeSymbol
- && !Symbol.sham
- && typeof Symbol.iterator == 'symbol';
-
- var isArray = Array.isArray || function isArray(arg) {
- return classofRaw(arg) == 'Array';
- };
-
- var toObject = function (argument) {
- return Object(requireObjectCoercible(argument));
- };
-
- var objectKeys = Object.keys || function keys(O) {
- return objectKeysInternal(O, enumBugKeys);
- };
-
- var objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) {
- anObject(O);
- var keys = objectKeys(Properties);
- var length = keys.length;
- var index = 0;
- var key;
- while (length > index) objectDefineProperty.f(O, key = keys[index++], Properties[key]);
- return O;
- };
-
- var html = getBuiltIn('document', 'documentElement');
-
- var GT = '>';
- var LT = '<';
- var PROTOTYPE = 'prototype';
- var SCRIPT = 'script';
- var IE_PROTO = sharedKey('IE_PROTO');
- var EmptyConstructor = function () { };
- var scriptTag = function (content) {
- return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
- };
- var NullProtoObjectViaActiveX = function (activeXDocument) {
- activeXDocument.write(scriptTag(''));
- activeXDocument.close();
- var temp = activeXDocument.parentWindow.Object;
- activeXDocument = null;
- return temp;
- };
- var NullProtoObjectViaIFrame = function () {
- var iframe = documentCreateElement('iframe');
- var JS = 'java' + SCRIPT + ':';
- var iframeDocument;
- iframe.style.display = 'none';
- html.appendChild(iframe);
- iframe.src = String(JS);
- iframeDocument = iframe.contentWindow.document;
- iframeDocument.open();
- iframeDocument.write(scriptTag('document.F=Object'));
- iframeDocument.close();
- return iframeDocument.F;
- };
- var activeXDocument;
- var NullProtoObject = function () {
- try {
- activeXDocument = document.domain && new ActiveXObject('htmlfile');
- } catch (error) { }
- NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();
- var length = enumBugKeys.length;
- while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
- return NullProtoObject();
- };
- hiddenKeys[IE_PROTO] = true;
- var objectCreate = Object.create || function create(O, Properties) {
- var result;
- if (O !== null) {
- EmptyConstructor[PROTOTYPE] = anObject(O);
- result = new EmptyConstructor();
- EmptyConstructor[PROTOTYPE] = null;
- result[IE_PROTO] = O;
- } else result = NullProtoObject();
- return Properties === undefined ? result : objectDefineProperties(result, Properties);
- };
-
- var nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f;
- var toString$1 = {}.toString;
- var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
- ? Object.getOwnPropertyNames(window) : [];
- var getWindowNames = function (it) {
- try {
- return nativeGetOwnPropertyNames(it);
- } catch (error) {
- return windowNames.slice();
- }
- };
- var f$5 = function getOwnPropertyNames(it) {
- return windowNames && toString$1.call(it) == '[object Window]'
- ? getWindowNames(it)
- : nativeGetOwnPropertyNames(toIndexedObject(it));
- };
- var objectGetOwnPropertyNamesExternal = {
- f: f$5
- };
-
- var WellKnownSymbolsStore = shared('wks');
- var Symbol$1 = global_1.Symbol;
- var createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;
- var wellKnownSymbol = function (name) {
- if (!has(WellKnownSymbolsStore, name)) {
- if (nativeSymbol && has(Symbol$1, name)) WellKnownSymbolsStore[name] = Symbol$1[name];
- else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
- } return WellKnownSymbolsStore[name];
- };
-
- var f$6 = wellKnownSymbol;
- var wellKnownSymbolWrapped = {
- f: f$6
- };
-
- var defineProperty = objectDefineProperty.f;
- var defineWellKnownSymbol = function (NAME) {
- var Symbol = path.Symbol || (path.Symbol = {});
- if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {
- value: wellKnownSymbolWrapped.f(NAME)
- });
- };
-
- var defineProperty$1 = objectDefineProperty.f;
- var TO_STRING_TAG = wellKnownSymbol('toStringTag');
- var setToStringTag = function (it, TAG, STATIC) {
- if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
- defineProperty$1(it, TO_STRING_TAG, { configurable: true, value: TAG });
- }
- };
-
- var aFunction$1 = function (it) {
- if (typeof it != 'function') {
- throw TypeError(String(it) + ' is not a function');
- } return it;
- };
-
- var functionBindContext = function (fn, that, length) {
- aFunction$1(fn);
- if (that === undefined) return fn;
- switch (length) {
- case 0: return function () {
- return fn.call(that);
- };
- case 1: return function (a) {
- return fn.call(that, a);
- };
- case 2: return function (a, b) {
- return fn.call(that, a, b);
- };
- case 3: return function (a, b, c) {
- return fn.call(that, a, b, c);
- };
- }
- return function () {
- return fn.apply(that, arguments);
- };
- };
-
- var SPECIES = wellKnownSymbol('species');
- var arraySpeciesCreate = function (originalArray, length) {
- var C;
- if (isArray(originalArray)) {
- C = originalArray.constructor;
- if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
- else if (isObject(C)) {
- C = C[SPECIES];
- if (C === null) C = undefined;
- }
- } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
- };
-
- var push = [].push;
- var createMethod$1 = function (TYPE) {
- var IS_MAP = TYPE == 1;
- var IS_FILTER = TYPE == 2;
- var IS_SOME = TYPE == 3;
- var IS_EVERY = TYPE == 4;
- var IS_FIND_INDEX = TYPE == 6;
- var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
- return function ($this, callbackfn, that, specificCreate) {
- var O = toObject($this);
- var self = indexedObject(O);
- var boundFunction = functionBindContext(callbackfn, that, 3);
- var length = toLength(self.length);
- var index = 0;
- var create = specificCreate || arraySpeciesCreate;
- var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
- var value, result;
- for (;length > index; index++) if (NO_HOLES || index in self) {
- value = self[index];
- result = boundFunction(value, index, O);
- if (TYPE) {
- if (IS_MAP) target[index] = result;
- else if (result) switch (TYPE) {
- case 3: return true;
- case 5: return value;
- case 6: return index;
- case 2: push.call(target, value);
- } else if (IS_EVERY) return false;
- }
- }
- return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
- };
- };
- var arrayIteration = {
- forEach: createMethod$1(0),
- map: createMethod$1(1),
- filter: createMethod$1(2),
- some: createMethod$1(3),
- every: createMethod$1(4),
- find: createMethod$1(5),
- findIndex: createMethod$1(6)
- };
-
- var $forEach = arrayIteration.forEach;
- var HIDDEN = sharedKey('hidden');
- var SYMBOL = 'Symbol';
- var PROTOTYPE$1 = 'prototype';
- var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
- var setInternalState = internalState.set;
- var getInternalState = internalState.getterFor(SYMBOL);
- var ObjectPrototype = Object[PROTOTYPE$1];
- var $Symbol = global_1.Symbol;
- var $stringify = getBuiltIn('JSON', 'stringify');
- var nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
- var nativeDefineProperty$1 = objectDefineProperty.f;
- var nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f;
- var nativePropertyIsEnumerable$1 = objectPropertyIsEnumerable.f;
- var AllSymbols = shared('symbols');
- var ObjectPrototypeSymbols = shared('op-symbols');
- var StringToSymbolRegistry = shared('string-to-symbol-registry');
- var SymbolToStringRegistry = shared('symbol-to-string-registry');
- var WellKnownSymbolsStore$1 = shared('wks');
- var QObject = global_1.QObject;
- var USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild;
- var setSymbolDescriptor = descriptors && fails(function () {
- return objectCreate(nativeDefineProperty$1({}, 'a', {
- get: function () { return nativeDefineProperty$1(this, 'a', { value: 7 }).a; }
- })).a != 7;
- }) ? function (O, P, Attributes) {
- var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype, P);
- if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];
- nativeDefineProperty$1(O, P, Attributes);
- if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
- nativeDefineProperty$1(ObjectPrototype, P, ObjectPrototypeDescriptor);
- }
- } : nativeDefineProperty$1;
- var wrap = function (tag, description) {
- var symbol = AllSymbols[tag] = objectCreate($Symbol[PROTOTYPE$1]);
- setInternalState(symbol, {
- type: SYMBOL,
- tag: tag,
- description: description
- });
- if (!descriptors) symbol.description = description;
- return symbol;
- };
- var isSymbol = useSymbolAsUid ? function (it) {
- return typeof it == 'symbol';
- } : function (it) {
- return Object(it) instanceof $Symbol;
- };
- var $defineProperty = function defineProperty(O, P, Attributes) {
- if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
- anObject(O);
- var key = toPrimitive(P, true);
- anObject(Attributes);
- if (has(AllSymbols, key)) {
- if (!Attributes.enumerable) {
- if (!has(O, HIDDEN)) nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor(1, {}));
- O[HIDDEN][key] = true;
- } else {
- if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
- Attributes = objectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
- } return setSymbolDescriptor(O, key, Attributes);
- } return nativeDefineProperty$1(O, key, Attributes);
- };
- var $defineProperties = function defineProperties(O, Properties) {
- anObject(O);
- var properties = toIndexedObject(Properties);
- var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));
- $forEach(keys, function (key) {
- if (!descriptors || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);
- });
- return O;
- };
- var $create = function create(O, Properties) {
- return Properties === undefined ? objectCreate(O) : $defineProperties(objectCreate(O), Properties);
- };
- var $propertyIsEnumerable = function propertyIsEnumerable(V) {
- var P = toPrimitive(V, true);
- var enumerable = nativePropertyIsEnumerable$1.call(this, P);
- if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;
- return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
- };
- var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
- var it = toIndexedObject(O);
- var key = toPrimitive(P, true);
- if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;
- var descriptor = nativeGetOwnPropertyDescriptor$1(it, key);
- if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {
- descriptor.enumerable = true;
- }
- return descriptor;
- };
- var $getOwnPropertyNames = function getOwnPropertyNames(O) {
- var names = nativeGetOwnPropertyNames$1(toIndexedObject(O));
- var result = [];
- $forEach(names, function (key) {
- if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);
- });
- return result;
- };
- var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
- var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;
- var names = nativeGetOwnPropertyNames$1(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
- var result = [];
- $forEach(names, function (key) {
- if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {
- result.push(AllSymbols[key]);
- }
- });
- return result;
- };
- if (!nativeSymbol) {
- $Symbol = function Symbol() {
- if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');
- var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);
- var tag = uid(description);
- var setter = function (value) {
- if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);
- if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
- setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
- };
- if (descriptors && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
- return wrap(tag, description);
- };
- redefine($Symbol[PROTOTYPE$1], 'toString', function toString() {
- return getInternalState(this).tag;
- });
- redefine($Symbol, 'withoutSetter', function (description) {
- return wrap(uid(description), description);
- });
- objectPropertyIsEnumerable.f = $propertyIsEnumerable;
- objectDefineProperty.f = $defineProperty;
- objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor;
- objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames;
- objectGetOwnPropertySymbols.f = $getOwnPropertySymbols;
- wellKnownSymbolWrapped.f = function (name) {
- return wrap(wellKnownSymbol(name), name);
- };
- if (descriptors) {
- nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', {
- configurable: true,
- get: function description() {
- return getInternalState(this).description;
- }
- });
- {
- redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
- }
- }
- }
- _export({ global: true, wrap: true, forced: !nativeSymbol, sham: !nativeSymbol }, {
- Symbol: $Symbol
- });
- $forEach(objectKeys(WellKnownSymbolsStore$1), function (name) {
- defineWellKnownSymbol(name);
- });
- _export({ target: SYMBOL, stat: true, forced: !nativeSymbol }, {
- 'for': function (key) {
- var string = String(key);
- if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
- var symbol = $Symbol(string);
- StringToSymbolRegistry[string] = symbol;
- SymbolToStringRegistry[symbol] = string;
- return symbol;
- },
- keyFor: function keyFor(sym) {
- if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');
- if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
- },
- useSetter: function () { USE_SETTER = true; },
- useSimple: function () { USE_SETTER = false; }
- });
- _export({ target: 'Object', stat: true, forced: !nativeSymbol, sham: !descriptors }, {
- create: $create,
- defineProperty: $defineProperty,
- defineProperties: $defineProperties,
- getOwnPropertyDescriptor: $getOwnPropertyDescriptor
- });
- _export({ target: 'Object', stat: true, forced: !nativeSymbol }, {
- getOwnPropertyNames: $getOwnPropertyNames,
- getOwnPropertySymbols: $getOwnPropertySymbols
- });
- _export({ target: 'Object', stat: true, forced: fails(function () { objectGetOwnPropertySymbols.f(1); }) }, {
- getOwnPropertySymbols: function getOwnPropertySymbols(it) {
- return objectGetOwnPropertySymbols.f(toObject(it));
- }
- });
- if ($stringify) {
- var FORCED_JSON_STRINGIFY = !nativeSymbol || fails(function () {
- var symbol = $Symbol();
- return $stringify([symbol]) != '[null]'
- || $stringify({ a: symbol }) != '{}'
- || $stringify(Object(symbol)) != '{}';
- });
- _export({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {
- stringify: function stringify(it, replacer, space) {
- var args = [it];
- var index = 1;
- var $replacer;
- while (arguments.length > index) args.push(arguments[index++]);
- $replacer = replacer;
- if (!isObject(replacer) && it === undefined || isSymbol(it)) return;
- if (!isArray(replacer)) replacer = function (key, value) {
- if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
- if (!isSymbol(value)) return value;
- };
- args[1] = replacer;
- return $stringify.apply(null, args);
- }
- });
- }
- if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) {
- createNonEnumerableProperty($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf);
- }
- setToStringTag($Symbol, SYMBOL);
- hiddenKeys[HIDDEN] = true;
-
- var defineProperty$2 = objectDefineProperty.f;
- var NativeSymbol = global_1.Symbol;
- if (descriptors && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||
- NativeSymbol().description !== undefined
- )) {
- var EmptyStringDescriptionStore = {};
- var SymbolWrapper = function Symbol() {
- var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);
- var result = this instanceof SymbolWrapper
- ? new NativeSymbol(description)
- : description === undefined ? NativeSymbol() : NativeSymbol(description);
- if (description === '') EmptyStringDescriptionStore[result] = true;
- return result;
- };
- copyConstructorProperties(SymbolWrapper, NativeSymbol);
- var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;
- symbolPrototype.constructor = SymbolWrapper;
- var symbolToString = symbolPrototype.toString;
- var native = String(NativeSymbol('test')) == 'Symbol(test)';
- var regexp = /^Symbol\((.*)\)[^)]+$/;
- defineProperty$2(symbolPrototype, 'description', {
- configurable: true,
- get: function description() {
- var symbol = isObject(this) ? this.valueOf() : this;
- var string = symbolToString.call(symbol);
- if (has(EmptyStringDescriptionStore, symbol)) return '';
- var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');
- return desc === '' ? undefined : desc;
- }
- });
- _export({ global: true, forced: true }, {
- Symbol: SymbolWrapper
- });
- }
-
- defineWellKnownSymbol('asyncIterator');
-
- defineWellKnownSymbol('iterator');
-
- defineWellKnownSymbol('toStringTag');
-
- var arrayMethodIsStrict = function (METHOD_NAME, argument) {
- var method = [][METHOD_NAME];
- return !!method && fails(function () {
- method.call(null, argument || function () { throw 1; }, 1);
- });
- };
-
- var defineProperty$3 = Object.defineProperty;
- var cache = {};
- var thrower = function (it) { throw it; };
- var arrayMethodUsesToLength = function (METHOD_NAME, options) {
- if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];
- if (!options) options = {};
- var method = [][METHOD_NAME];
- var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;
- var argument0 = has(options, 0) ? options[0] : thrower;
- var argument1 = has(options, 1) ? options[1] : undefined;
- return cache[METHOD_NAME] = !!method && !fails(function () {
- if (ACCESSORS && !descriptors) return true;
- var O = { length: -1 };
- if (ACCESSORS) defineProperty$3(O, 1, { enumerable: true, get: thrower });
- else O[1] = 1;
- method.call(O, argument0, argument1);
- });
- };
-
- var $forEach$1 = arrayIteration.forEach;
- var STRICT_METHOD = arrayMethodIsStrict('forEach');
- var USES_TO_LENGTH = arrayMethodUsesToLength('forEach');
- var arrayForEach = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn ) {
- return $forEach$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
- } : [].forEach;
-
- _export({ target: 'Array', proto: true, forced: [].forEach != arrayForEach }, {
- forEach: arrayForEach
- });
-
- var UNSCOPABLES = wellKnownSymbol('unscopables');
- var ArrayPrototype = Array.prototype;
- if (ArrayPrototype[UNSCOPABLES] == undefined) {
- objectDefineProperty.f(ArrayPrototype, UNSCOPABLES, {
- configurable: true,
- value: objectCreate(null)
- });
- }
- var addToUnscopables = function (key) {
- ArrayPrototype[UNSCOPABLES][key] = true;
- };
-
- var iterators = {};
-
- var correctPrototypeGetter = !fails(function () {
- function F() { }
- F.prototype.constructor = null;
- return Object.getPrototypeOf(new F()) !== F.prototype;
- });
-
- var IE_PROTO$1 = sharedKey('IE_PROTO');
- var ObjectPrototype$1 = Object.prototype;
- var objectGetPrototypeOf = correctPrototypeGetter ? Object.getPrototypeOf : function (O) {
- O = toObject(O);
- if (has(O, IE_PROTO$1)) return O[IE_PROTO$1];
- if (typeof O.constructor == 'function' && O instanceof O.constructor) {
- return O.constructor.prototype;
- } return O instanceof Object ? ObjectPrototype$1 : null;
- };
-
- var ITERATOR = wellKnownSymbol('iterator');
- var BUGGY_SAFARI_ITERATORS = false;
- var returnThis = function () { return this; };
- var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
- if ([].keys) {
- arrayIterator = [].keys();
- if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
- else {
- PrototypeOfArrayIteratorPrototype = objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator));
- if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
- }
- }
- if (IteratorPrototype == undefined) IteratorPrototype = {};
- if ( !has(IteratorPrototype, ITERATOR)) {
- createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);
- }
- var iteratorsCore = {
- IteratorPrototype: IteratorPrototype,
- BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
- };
-
- var IteratorPrototype$1 = iteratorsCore.IteratorPrototype;
- var returnThis$1 = function () { return this; };
- var createIteratorConstructor = function (IteratorConstructor, NAME, next) {
- var TO_STRING_TAG = NAME + ' Iterator';
- IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, { next: createPropertyDescriptor(1, next) });
- setToStringTag(IteratorConstructor, TO_STRING_TAG, false);
- iterators[TO_STRING_TAG] = returnThis$1;
- return IteratorConstructor;
- };
-
- var aPossiblePrototype = function (it) {
- if (!isObject(it) && it !== null) {
- throw TypeError("Can't set " + String(it) + ' as a prototype');
- } return it;
- };
-
- var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () {
- var CORRECT_SETTER = false;
- var test = {};
- var setter;
- try {
- setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
- setter.call(test, []);
- CORRECT_SETTER = test instanceof Array;
- } catch (error) { }
- return function setPrototypeOf(O, proto) {
- anObject(O);
- aPossiblePrototype(proto);
- if (CORRECT_SETTER) setter.call(O, proto);
- else O.__proto__ = proto;
- return O;
- };
- }() : undefined);
-
- var IteratorPrototype$2 = iteratorsCore.IteratorPrototype;
- var BUGGY_SAFARI_ITERATORS$1 = iteratorsCore.BUGGY_SAFARI_ITERATORS;
- var ITERATOR$1 = wellKnownSymbol('iterator');
- var KEYS = 'keys';
- var VALUES = 'values';
- var ENTRIES = 'entries';
- var returnThis$2 = function () { return this; };
- var defineIterator = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
- createIteratorConstructor(IteratorConstructor, NAME, next);
- var getIterationMethod = function (KIND) {
- if (KIND === DEFAULT && defaultIterator) return defaultIterator;
- if (!BUGGY_SAFARI_ITERATORS$1 && KIND in IterablePrototype) return IterablePrototype[KIND];
- switch (KIND) {
- case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
- case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
- case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
- } return function () { return new IteratorConstructor(this); };
- };
- var TO_STRING_TAG = NAME + ' Iterator';
- var INCORRECT_VALUES_NAME = false;
- var IterablePrototype = Iterable.prototype;
- var nativeIterator = IterablePrototype[ITERATOR$1]
- || IterablePrototype['@@iterator']
- || DEFAULT && IterablePrototype[DEFAULT];
- var defaultIterator = !BUGGY_SAFARI_ITERATORS$1 && nativeIterator || getIterationMethod(DEFAULT);
- var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
- var CurrentIteratorPrototype, methods, KEY;
- if (anyNativeIterator) {
- CurrentIteratorPrototype = objectGetPrototypeOf(anyNativeIterator.call(new Iterable()));
- if (IteratorPrototype$2 !== Object.prototype && CurrentIteratorPrototype.next) {
- if ( objectGetPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype$2) {
- if (objectSetPrototypeOf) {
- objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype$2);
- } else if (typeof CurrentIteratorPrototype[ITERATOR$1] != 'function') {
- createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR$1, returnThis$2);
- }
- }
- setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true);
- }
- }
- if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
- INCORRECT_VALUES_NAME = true;
- defaultIterator = function values() { return nativeIterator.call(this); };
- }
- if ( IterablePrototype[ITERATOR$1] !== defaultIterator) {
- createNonEnumerableProperty(IterablePrototype, ITERATOR$1, defaultIterator);
- }
- iterators[NAME] = defaultIterator;
- if (DEFAULT) {
- methods = {
- values: getIterationMethod(VALUES),
- keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
- entries: getIterationMethod(ENTRIES)
- };
- if (FORCED) for (KEY in methods) {
- if (BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
- redefine(IterablePrototype, KEY, methods[KEY]);
- }
- } else _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME }, methods);
- }
- return methods;
- };
-
- var ARRAY_ITERATOR = 'Array Iterator';
- var setInternalState$1 = internalState.set;
- var getInternalState$1 = internalState.getterFor(ARRAY_ITERATOR);
- var es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) {
- setInternalState$1(this, {
- type: ARRAY_ITERATOR,
- target: toIndexedObject(iterated),
- index: 0,
- kind: kind
- });
- }, function () {
- var state = getInternalState$1(this);
- var target = state.target;
- var kind = state.kind;
- var index = state.index++;
- if (!target || index >= target.length) {
- state.target = undefined;
- return { value: undefined, done: true };
- }
- if (kind == 'keys') return { value: index, done: false };
- if (kind == 'values') return { value: target[index], done: false };
- return { value: [index, target[index]], done: false };
- }, 'values');
- iterators.Arguments = iterators.Array;
- addToUnscopables('keys');
- addToUnscopables('values');
- addToUnscopables('entries');
-
- var nativeReverse = [].reverse;
- var test = [1, 2];
- _export({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {
- reverse: function reverse() {
- if (isArray(this)) this.length = this.length;
- return nativeReverse.call(this);
- }
- });
-
- var createProperty = function (object, key, value) {
- var propertyKey = toPrimitive(key);
- if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));
- else object[propertyKey] = value;
- };
-
- var engineUserAgent = getBuiltIn('navigator', 'userAgent') || '';
-
- var process = global_1.process;
- var versions = process && process.versions;
- var v8 = versions && versions.v8;
- var match, version;
- if (v8) {
- match = v8.split('.');
- version = match[0] + match[1];
- } else if (engineUserAgent) {
- match = engineUserAgent.match(/Edge\/(\d+)/);
- if (!match || match[1] >= 74) {
- match = engineUserAgent.match(/Chrome\/(\d+)/);
- if (match) version = match[1];
- }
- }
- var engineV8Version = version && +version;
-
- var SPECIES$1 = wellKnownSymbol('species');
- var arrayMethodHasSpeciesSupport = function (METHOD_NAME) {
- return engineV8Version >= 51 || !fails(function () {
- var array = [];
- var constructor = array.constructor = {};
- constructor[SPECIES$1] = function () {
- return { foo: 1 };
- };
- return array[METHOD_NAME](Boolean).foo !== 1;
- });
- };
-
- var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
- var USES_TO_LENGTH$1 = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });
- var SPECIES$2 = wellKnownSymbol('species');
- var nativeSlice = [].slice;
- var max$1 = Math.max;
- _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH$1 }, {
- slice: function slice(start, end) {
- var O = toIndexedObject(this);
- var length = toLength(O.length);
- var k = toAbsoluteIndex(start, length);
- var fin = toAbsoluteIndex(end === undefined ? length : end, length);
- var Constructor, result, n;
- if (isArray(O)) {
- Constructor = O.constructor;
- if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {
- Constructor = undefined;
- } else if (isObject(Constructor)) {
- Constructor = Constructor[SPECIES$2];
- if (Constructor === null) Constructor = undefined;
- }
- if (Constructor === Array || Constructor === undefined) {
- return nativeSlice.call(O, k, fin);
- }
- }
- result = new (Constructor === undefined ? Array : Constructor)(max$1(fin - k, 0));
- for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
- result.length = n;
- return result;
- }
- });
-
- var defineProperty$4 = objectDefineProperty.f;
- var FunctionPrototype = Function.prototype;
- var FunctionPrototypeToString = FunctionPrototype.toString;
- var nameRE = /^\s*function ([^ (]*)/;
- var NAME = 'name';
- if (descriptors && !(NAME in FunctionPrototype)) {
- defineProperty$4(FunctionPrototype, NAME, {
- configurable: true,
- get: function () {
- try {
- return FunctionPrototypeToString.call(this).match(nameRE)[1];
- } catch (error) {
- return '';
- }
- }
- });
- }
-
- setToStringTag(global_1.JSON, 'JSON', true);
-
- setToStringTag(Math, 'Math', true);
-
- var FAILS_ON_PRIMITIVES = fails(function () { objectGetPrototypeOf(1); });
- _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !correctPrototypeGetter }, {
- getPrototypeOf: function getPrototypeOf(it) {
- return objectGetPrototypeOf(toObject(it));
- }
- });
-
- var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag');
- var test$1 = {};
- test$1[TO_STRING_TAG$1] = 'z';
- var toStringTagSupport = String(test$1) === '[object z]';
-
- var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag');
- var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
- var tryGet = function (it, key) {
- try {
- return it[key];
- } catch (error) { }
- };
- var classof = toStringTagSupport ? classofRaw : function (it) {
- var O, tag, result;
- return it === undefined ? 'Undefined' : it === null ? 'Null'
- : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$2)) == 'string' ? tag
- : CORRECT_ARGUMENTS ? classofRaw(O)
- : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
- };
-
- var objectToString = toStringTagSupport ? {}.toString : function toString() {
- return '[object ' + classof(this) + ']';
- };
-
- if (!toStringTagSupport) {
- redefine(Object.prototype, 'toString', objectToString, { unsafe: true });
- }
-
- var nativePromiseConstructor = global_1.Promise;
-
- var redefineAll = function (target, src, options) {
- for (var key in src) redefine(target, key, src[key], options);
- return target;
- };
-
- var SPECIES$3 = wellKnownSymbol('species');
- var setSpecies = function (CONSTRUCTOR_NAME) {
- var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
- var defineProperty = objectDefineProperty.f;
- if (descriptors && Constructor && !Constructor[SPECIES$3]) {
- defineProperty(Constructor, SPECIES$3, {
- configurable: true,
- get: function () { return this; }
- });
- }
- };
-
- var anInstance = function (it, Constructor, name) {
- if (!(it instanceof Constructor)) {
- throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');
- } return it;
- };
-
- var ITERATOR$2 = wellKnownSymbol('iterator');
- var ArrayPrototype$1 = Array.prototype;
- var isArrayIteratorMethod = function (it) {
- return it !== undefined && (iterators.Array === it || ArrayPrototype$1[ITERATOR$2] === it);
- };
-
- var ITERATOR$3 = wellKnownSymbol('iterator');
- var getIteratorMethod = function (it) {
- if (it != undefined) return it[ITERATOR$3]
- || it['@@iterator']
- || iterators[classof(it)];
- };
-
- var iteratorClose = function (iterator) {
- var returnMethod = iterator['return'];
- if (returnMethod !== undefined) {
- return anObject(returnMethod.call(iterator)).value;
- }
- };
-
- var Result = function (stopped, result) {
- this.stopped = stopped;
- this.result = result;
- };
- var iterate = function (iterable, unboundFunction, options) {
- var that = options && options.that;
- var AS_ENTRIES = !!(options && options.AS_ENTRIES);
- var IS_ITERATOR = !!(options && options.IS_ITERATOR);
- var INTERRUPTED = !!(options && options.INTERRUPTED);
- var fn = functionBindContext(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);
- var iterator, iterFn, index, length, result, next, step;
- var stop = function (condition) {
- if (iterator) iteratorClose(iterator);
- return new Result(true, condition);
- };
- var callFn = function (value) {
- if (AS_ENTRIES) {
- anObject(value);
- return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
- } return INTERRUPTED ? fn(value, stop) : fn(value);
- };
- if (IS_ITERATOR) {
- iterator = iterable;
- } else {
- iterFn = getIteratorMethod(iterable);
- if (typeof iterFn != 'function') throw TypeError('Target is not iterable');
- if (isArrayIteratorMethod(iterFn)) {
- for (index = 0, length = toLength(iterable.length); length > index; index++) {
- result = callFn(iterable[index]);
- if (result && result instanceof Result) return result;
- } return new Result(false);
- }
- iterator = iterFn.call(iterable);
- }
- next = iterator.next;
- while (!(step = next.call(iterator)).done) {
- try {
- result = callFn(step.value);
- } catch (error) {
- iteratorClose(iterator);
- throw error;
- }
- if (typeof result == 'object' && result && result instanceof Result) return result;
- } return new Result(false);
- };
-
- var ITERATOR$4 = wellKnownSymbol('iterator');
- var SAFE_CLOSING = false;
- try {
- var called = 0;
- var iteratorWithReturn = {
- next: function () {
- return { done: !!called++ };
- },
- 'return': function () {
- SAFE_CLOSING = true;
- }
- };
- iteratorWithReturn[ITERATOR$4] = function () {
- return this;
- };
- Array.from(iteratorWithReturn, function () { throw 2; });
- } catch (error) { }
- var checkCorrectnessOfIteration = function (exec, SKIP_CLOSING) {
- if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
- var ITERATION_SUPPORT = false;
- try {
- var object = {};
- object[ITERATOR$4] = function () {
- return {
- next: function () {
- return { done: ITERATION_SUPPORT = true };
- }
- };
- };
- exec(object);
- } catch (error) { }
- return ITERATION_SUPPORT;
- };
-
- var SPECIES$4 = wellKnownSymbol('species');
- var speciesConstructor = function (O, defaultConstructor) {
- var C = anObject(O).constructor;
- var S;
- return C === undefined || (S = anObject(C)[SPECIES$4]) == undefined ? defaultConstructor : aFunction$1(S);
- };
-
- var engineIsIos = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent);
-
- var engineIsNode = classofRaw(global_1.process) == 'process';
-
- var location = global_1.location;
- var set$1 = global_1.setImmediate;
- var clear = global_1.clearImmediate;
- var process$1 = global_1.process;
- var MessageChannel = global_1.MessageChannel;
- var Dispatch = global_1.Dispatch;
- var counter = 0;
- var queue = {};
- var ONREADYSTATECHANGE = 'onreadystatechange';
- var defer, channel, port;
- var run = function (id) {
- if (queue.hasOwnProperty(id)) {
- var fn = queue[id];
- delete queue[id];
- fn();
- }
- };
- var runner = function (id) {
- return function () {
- run(id);
- };
- };
- var listener = function (event) {
- run(event.data);
- };
- var post = function (id) {
- global_1.postMessage(id + '', location.protocol + '//' + location.host);
- };
- if (!set$1 || !clear) {
- set$1 = function setImmediate(fn) {
- var args = [];
- var i = 1;
- while (arguments.length > i) args.push(arguments[i++]);
- queue[++counter] = function () {
- (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);
- };
- defer(counter);
- return counter;
- };
- clear = function clearImmediate(id) {
- delete queue[id];
- };
- if (engineIsNode) {
- defer = function (id) {
- process$1.nextTick(runner(id));
- };
- } else if (Dispatch && Dispatch.now) {
- defer = function (id) {
- Dispatch.now(runner(id));
- };
- } else if (MessageChannel && !engineIsIos) {
- channel = new MessageChannel();
- port = channel.port2;
- channel.port1.onmessage = listener;
- defer = functionBindContext(port.postMessage, port, 1);
- } else if (
- global_1.addEventListener &&
- typeof postMessage == 'function' &&
- !global_1.importScripts &&
- location && location.protocol !== 'file:' &&
- !fails(post)
- ) {
- defer = post;
- global_1.addEventListener('message', listener, false);
- } else if (ONREADYSTATECHANGE in documentCreateElement('script')) {
- defer = function (id) {
- html.appendChild(documentCreateElement('script'))[ONREADYSTATECHANGE] = function () {
- html.removeChild(this);
- run(id);
- };
- };
- } else {
- defer = function (id) {
- setTimeout(runner(id), 0);
- };
- }
- }
- var task = {
- set: set$1,
- clear: clear
- };
-
- var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;
- var macrotask = task.set;
- var MutationObserver = global_1.MutationObserver || global_1.WebKitMutationObserver;
- var document$2 = global_1.document;
- var process$2 = global_1.process;
- var Promise$1 = global_1.Promise;
- var queueMicrotaskDescriptor = getOwnPropertyDescriptor$2(global_1, 'queueMicrotask');
- var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;
- var flush, head, last, notify, toggle, node, promise, then;
- if (!queueMicrotask) {
- flush = function () {
- var parent, fn;
- if (engineIsNode && (parent = process$2.domain)) parent.exit();
- while (head) {
- fn = head.fn;
- head = head.next;
- try {
- fn();
- } catch (error) {
- if (head) notify();
- else last = undefined;
- throw error;
- }
- } last = undefined;
- if (parent) parent.enter();
- };
- if (!engineIsIos && !engineIsNode && MutationObserver && document$2) {
- toggle = true;
- node = document$2.createTextNode('');
- new MutationObserver(flush).observe(node, { characterData: true });
- notify = function () {
- node.data = toggle = !toggle;
- };
- } else if (Promise$1 && Promise$1.resolve) {
- promise = Promise$1.resolve(undefined);
- then = promise.then;
- notify = function () {
- then.call(promise, flush);
- };
- } else if (engineIsNode) {
- notify = function () {
- process$2.nextTick(flush);
- };
- } else {
- notify = function () {
- macrotask.call(global_1, flush);
- };
- }
- }
- var microtask = queueMicrotask || function (fn) {
- var task = { fn: fn, next: undefined };
- if (last) last.next = task;
- if (!head) {
- head = task;
- notify();
- } last = task;
- };
-
- var PromiseCapability = function (C) {
- var resolve, reject;
- this.promise = new C(function ($$resolve, $$reject) {
- if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
- resolve = $$resolve;
- reject = $$reject;
- });
- this.resolve = aFunction$1(resolve);
- this.reject = aFunction$1(reject);
- };
- var f$7 = function (C) {
- return new PromiseCapability(C);
- };
- var newPromiseCapability = {
- f: f$7
- };
-
- var promiseResolve = function (C, x) {
- anObject(C);
- if (isObject(x) && x.constructor === C) return x;
- var promiseCapability = newPromiseCapability.f(C);
- var resolve = promiseCapability.resolve;
- resolve(x);
- return promiseCapability.promise;
- };
-
- var hostReportErrors = function (a, b) {
- var console = global_1.console;
- if (console && console.error) {
- arguments.length === 1 ? console.error(a) : console.error(a, b);
- }
- };
-
- var perform = function (exec) {
- try {
- return { error: false, value: exec() };
- } catch (error) {
- return { error: true, value: error };
- }
- };
-
- var task$1 = task.set;
- var SPECIES$5 = wellKnownSymbol('species');
- var PROMISE = 'Promise';
- var getInternalState$2 = internalState.get;
- var setInternalState$2 = internalState.set;
- var getInternalPromiseState = internalState.getterFor(PROMISE);
- var PromiseConstructor = nativePromiseConstructor;
- var TypeError$1 = global_1.TypeError;
- var document$3 = global_1.document;
- var process$3 = global_1.process;
- var $fetch = getBuiltIn('fetch');
- var newPromiseCapability$1 = newPromiseCapability.f;
- var newGenericPromiseCapability = newPromiseCapability$1;
- var DISPATCH_EVENT = !!(document$3 && document$3.createEvent && global_1.dispatchEvent);
- var NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';
- var UNHANDLED_REJECTION = 'unhandledrejection';
- var REJECTION_HANDLED = 'rejectionhandled';
- var PENDING = 0;
- var FULFILLED = 1;
- var REJECTED = 2;
- var HANDLED = 1;
- var UNHANDLED = 2;
- var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
- var FORCED = isForced_1(PROMISE, function () {
- var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);
- if (!GLOBAL_CORE_JS_PROMISE) {
- if (engineV8Version === 66) return true;
- if (!engineIsNode && !NATIVE_REJECTION_EVENT) return true;
- }
- if (engineV8Version >= 51 && /native code/.test(PromiseConstructor)) return false;
- var promise = PromiseConstructor.resolve(1);
- var FakePromise = function (exec) {
- exec(function () { }, function () { });
- };
- var constructor = promise.constructor = {};
- constructor[SPECIES$5] = FakePromise;
- return !(promise.then(function () { }) instanceof FakePromise);
- });
- var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {
- PromiseConstructor.all(iterable)['catch'](function () { });
- });
- var isThenable = function (it) {
- var then;
- return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
- };
- var notify$1 = function (state, isReject) {
- if (state.notified) return;
- state.notified = true;
- var chain = state.reactions;
- microtask(function () {
- var value = state.value;
- var ok = state.state == FULFILLED;
- var index = 0;
- while (chain.length > index) {
- var reaction = chain[index++];
- var handler = ok ? reaction.ok : reaction.fail;
- var resolve = reaction.resolve;
- var reject = reaction.reject;
- var domain = reaction.domain;
- var result, then, exited;
- try {
- if (handler) {
- if (!ok) {
- if (state.rejection === UNHANDLED) onHandleUnhandled(state);
- state.rejection = HANDLED;
- }
- if (handler === true) result = value;
- else {
- if (domain) domain.enter();
- result = handler(value);
- if (domain) {
- domain.exit();
- exited = true;
- }
- }
- if (result === reaction.promise) {
- reject(TypeError$1('Promise-chain cycle'));
- } else if (then = isThenable(result)) {
- then.call(result, resolve, reject);
- } else resolve(result);
- } else reject(value);
- } catch (error) {
- if (domain && !exited) domain.exit();
- reject(error);
- }
- }
- state.reactions = [];
- state.notified = false;
- if (isReject && !state.rejection) onUnhandled(state);
- });
- };
- var dispatchEvent = function (name, promise, reason) {
- var event, handler;
- if (DISPATCH_EVENT) {
- event = document$3.createEvent('Event');
- event.promise = promise;
- event.reason = reason;
- event.initEvent(name, false, true);
- global_1.dispatchEvent(event);
- } else event = { promise: promise, reason: reason };
- if (!NATIVE_REJECTION_EVENT && (handler = global_1['on' + name])) handler(event);
- else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);
- };
- var onUnhandled = function (state) {
- task$1.call(global_1, function () {
- var promise = state.facade;
- var value = state.value;
- var IS_UNHANDLED = isUnhandled(state);
- var result;
- if (IS_UNHANDLED) {
- result = perform(function () {
- if (engineIsNode) {
- process$3.emit('unhandledRejection', value, promise);
- } else dispatchEvent(UNHANDLED_REJECTION, promise, value);
- });
- state.rejection = engineIsNode || isUnhandled(state) ? UNHANDLED : HANDLED;
- if (result.error) throw result.value;
- }
- });
- };
- var isUnhandled = function (state) {
- return state.rejection !== HANDLED && !state.parent;
- };
- var onHandleUnhandled = function (state) {
- task$1.call(global_1, function () {
- var promise = state.facade;
- if (engineIsNode) {
- process$3.emit('rejectionHandled', promise);
- } else dispatchEvent(REJECTION_HANDLED, promise, state.value);
- });
- };
- var bind = function (fn, state, unwrap) {
- return function (value) {
- fn(state, value, unwrap);
- };
- };
- var internalReject = function (state, value, unwrap) {
- if (state.done) return;
- state.done = true;
- if (unwrap) state = unwrap;
- state.value = value;
- state.state = REJECTED;
- notify$1(state, true);
- };
- var internalResolve = function (state, value, unwrap) {
- if (state.done) return;
- state.done = true;
- if (unwrap) state = unwrap;
- try {
- if (state.facade === value) throw TypeError$1("Promise can't be resolved itself");
- var then = isThenable(value);
- if (then) {
- microtask(function () {
- var wrapper = { done: false };
- try {
- then.call(value,
- bind(internalResolve, wrapper, state),
- bind(internalReject, wrapper, state)
- );
- } catch (error) {
- internalReject(wrapper, error, state);
- }
- });
- } else {
- state.value = value;
- state.state = FULFILLED;
- notify$1(state, false);
- }
- } catch (error) {
- internalReject({ done: false }, error, state);
- }
- };
- if (FORCED) {
- PromiseConstructor = function Promise(executor) {
- anInstance(this, PromiseConstructor, PROMISE);
- aFunction$1(executor);
- Internal.call(this);
- var state = getInternalState$2(this);
- try {
- executor(bind(internalResolve, state), bind(internalReject, state));
- } catch (error) {
- internalReject(state, error);
- }
- };
- Internal = function Promise(executor) {
- setInternalState$2(this, {
- type: PROMISE,
- done: false,
- notified: false,
- parent: false,
- reactions: [],
- rejection: false,
- state: PENDING,
- value: undefined
- });
- };
- Internal.prototype = redefineAll(PromiseConstructor.prototype, {
- then: function then(onFulfilled, onRejected) {
- var state = getInternalPromiseState(this);
- var reaction = newPromiseCapability$1(speciesConstructor(this, PromiseConstructor));
- reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
- reaction.fail = typeof onRejected == 'function' && onRejected;
- reaction.domain = engineIsNode ? process$3.domain : undefined;
- state.parent = true;
- state.reactions.push(reaction);
- if (state.state != PENDING) notify$1(state, false);
- return reaction.promise;
- },
- 'catch': function (onRejected) {
- return this.then(undefined, onRejected);
- }
- });
- OwnPromiseCapability = function () {
- var promise = new Internal();
- var state = getInternalState$2(promise);
- this.promise = promise;
- this.resolve = bind(internalResolve, state);
- this.reject = bind(internalReject, state);
- };
- newPromiseCapability.f = newPromiseCapability$1 = function (C) {
- return C === PromiseConstructor || C === PromiseWrapper
- ? new OwnPromiseCapability(C)
- : newGenericPromiseCapability(C);
- };
- if ( typeof nativePromiseConstructor == 'function') {
- nativeThen = nativePromiseConstructor.prototype.then;
- redefine(nativePromiseConstructor.prototype, 'then', function then(onFulfilled, onRejected) {
- var that = this;
- return new PromiseConstructor(function (resolve, reject) {
- nativeThen.call(that, resolve, reject);
- }).then(onFulfilled, onRejected);
- }, { unsafe: true });
- if (typeof $fetch == 'function') _export({ global: true, enumerable: true, forced: true }, {
- fetch: function fetch(input ) {
- return promiseResolve(PromiseConstructor, $fetch.apply(global_1, arguments));
- }
- });
- }
- }
- _export({ global: true, wrap: true, forced: FORCED }, {
- Promise: PromiseConstructor
- });
- setToStringTag(PromiseConstructor, PROMISE, false);
- setSpecies(PROMISE);
- PromiseWrapper = getBuiltIn(PROMISE);
- _export({ target: PROMISE, stat: true, forced: FORCED }, {
- reject: function reject(r) {
- var capability = newPromiseCapability$1(this);
- capability.reject.call(undefined, r);
- return capability.promise;
- }
- });
- _export({ target: PROMISE, stat: true, forced: FORCED }, {
- resolve: function resolve(x) {
- return promiseResolve( this, x);
- }
- });
- _export({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
- all: function all(iterable) {
- var C = this;
- var capability = newPromiseCapability$1(C);
- var resolve = capability.resolve;
- var reject = capability.reject;
- var result = perform(function () {
- var $promiseResolve = aFunction$1(C.resolve);
- var values = [];
- var counter = 0;
- var remaining = 1;
- iterate(iterable, function (promise) {
- var index = counter++;
- var alreadyCalled = false;
- values.push(undefined);
- remaining++;
- $promiseResolve.call(C, promise).then(function (value) {
- if (alreadyCalled) return;
- alreadyCalled = true;
- values[index] = value;
- --remaining || resolve(values);
- }, reject);
- });
- --remaining || resolve(values);
- });
- if (result.error) reject(result.value);
- return capability.promise;
- },
- race: function race(iterable) {
- var C = this;
- var capability = newPromiseCapability$1(C);
- var reject = capability.reject;
- var result = perform(function () {
- var $promiseResolve = aFunction$1(C.resolve);
- iterate(iterable, function (promise) {
- $promiseResolve.call(C, promise).then(capability.resolve, reject);
- });
- });
- if (result.error) reject(result.value);
- return capability.promise;
- }
- });
-
- var regexpFlags = function () {
- var that = anObject(this);
- var result = '';
- if (that.global) result += 'g';
- if (that.ignoreCase) result += 'i';
- if (that.multiline) result += 'm';
- if (that.dotAll) result += 's';
- if (that.unicode) result += 'u';
- if (that.sticky) result += 'y';
- return result;
- };
-
- var TO_STRING = 'toString';
- var RegExpPrototype = RegExp.prototype;
- var nativeToString = RegExpPrototype[TO_STRING];
- var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
- var INCORRECT_NAME = nativeToString.name != TO_STRING;
- if (NOT_GENERIC || INCORRECT_NAME) {
- redefine(RegExp.prototype, TO_STRING, function toString() {
- var R = anObject(this);
- var p = String(R.source);
- var rf = R.flags;
- var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf);
- return '/' + p + '/' + f;
- }, { unsafe: true });
- }
-
- var createMethod$2 = function (CONVERT_TO_STRING) {
- return function ($this, pos) {
- var S = String(requireObjectCoercible($this));
- var position = toInteger(pos);
- var size = S.length;
- var first, second;
- if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
- first = S.charCodeAt(position);
- return first < 0xD800 || first > 0xDBFF || position + 1 === size
- || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
- ? CONVERT_TO_STRING ? S.charAt(position) : first
- : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
- };
- };
- var stringMultibyte = {
- codeAt: createMethod$2(false),
- charAt: createMethod$2(true)
- };
-
- var charAt = stringMultibyte.charAt;
- var STRING_ITERATOR = 'String Iterator';
- var setInternalState$3 = internalState.set;
- var getInternalState$3 = internalState.getterFor(STRING_ITERATOR);
- defineIterator(String, 'String', function (iterated) {
- setInternalState$3(this, {
- type: STRING_ITERATOR,
- string: String(iterated),
- index: 0
- });
- }, function next() {
- var state = getInternalState$3(this);
- var string = state.string;
- var index = state.index;
- var point;
- if (index >= string.length) return { value: undefined, done: true };
- point = charAt(string, index);
- state.index += point.length;
- return { value: point, done: false };
- });
-
- var domIterables = {
- CSSRuleList: 0,
- CSSStyleDeclaration: 0,
- CSSValueList: 0,
- ClientRectList: 0,
- DOMRectList: 0,
- DOMStringList: 0,
- DOMTokenList: 1,
- DataTransferItemList: 0,
- FileList: 0,
- HTMLAllCollection: 0,
- HTMLCollection: 0,
- HTMLFormElement: 0,
- HTMLSelectElement: 0,
- MediaList: 0,
- MimeTypeArray: 0,
- NamedNodeMap: 0,
- NodeList: 1,
- PaintRequestList: 0,
- Plugin: 0,
- PluginArray: 0,
- SVGLengthList: 0,
- SVGNumberList: 0,
- SVGPathSegList: 0,
- SVGPointList: 0,
- SVGStringList: 0,
- SVGTransformList: 0,
- SourceBufferList: 0,
- StyleSheetList: 0,
- TextTrackCueList: 0,
- TextTrackList: 0,
- TouchList: 0
- };
-
- for (var COLLECTION_NAME in domIterables) {
- var Collection = global_1[COLLECTION_NAME];
- var CollectionPrototype = Collection && Collection.prototype;
- if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) try {
- createNonEnumerableProperty(CollectionPrototype, 'forEach', arrayForEach);
- } catch (error) {
- CollectionPrototype.forEach = arrayForEach;
- }
- }
-
- var ITERATOR$5 = wellKnownSymbol('iterator');
- var TO_STRING_TAG$3 = wellKnownSymbol('toStringTag');
- var ArrayValues = es_array_iterator.values;
- for (var COLLECTION_NAME$1 in domIterables) {
- var Collection$1 = global_1[COLLECTION_NAME$1];
- var CollectionPrototype$1 = Collection$1 && Collection$1.prototype;
- if (CollectionPrototype$1) {
- if (CollectionPrototype$1[ITERATOR$5] !== ArrayValues) try {
- createNonEnumerableProperty(CollectionPrototype$1, ITERATOR$5, ArrayValues);
- } catch (error) {
- CollectionPrototype$1[ITERATOR$5] = ArrayValues;
- }
- if (!CollectionPrototype$1[TO_STRING_TAG$3]) {
- createNonEnumerableProperty(CollectionPrototype$1, TO_STRING_TAG$3, COLLECTION_NAME$1);
- }
- if (domIterables[COLLECTION_NAME$1]) for (var METHOD_NAME in es_array_iterator) {
- if (CollectionPrototype$1[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) try {
- createNonEnumerableProperty(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]);
- } catch (error) {
- CollectionPrototype$1[METHOD_NAME] = es_array_iterator[METHOD_NAME];
- }
- }
- }
- }
-
- var _typeof_1 = createCommonjsModule(function (module) {
- function _typeof(obj) {
- "@babel/helpers - typeof";
- if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
- module.exports = _typeof = function _typeof(obj) {
- return typeof obj;
- };
- } else {
- module.exports = _typeof = function _typeof(obj) {
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
- };
- }
- return _typeof(obj);
- }
- module.exports = _typeof;
- });
-
- var runtime_1=createCommonjsModule(function(a){
- var b=function(a){function b(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function c(a,b,c,d){
- var f=b&&b.prototype instanceof e?b:e,g=Object.create(f.prototype),h=new n(d||[]);return g._invoke=j(a,c,h),g}
- function d(a,b,c){try{return {type:"normal",arg:a.call(b,c)}}catch(a){return {type:"throw",arg:a}}}
- function e(){}function f(){}function g(){}
- function h(a){["next","throw","return"].forEach(function(c){b(a,c,function(a){return this._invoke(c,a)});});}function i(a,b){function c(e,f,g,h){var i=d(a[e],a,f);if("throw"===i.type)h(i.arg);else {var j=i.arg,k=j.value;return k&&"object"===_typeof_1(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){c("next",a,g,h);},function(a){c("throw",a,g,h);}):b.resolve(k).then(function(a){j.value=a,g(j);},function(a){
- return c("throw",a,g,h)})}}function e(a,d){function e(){return new b(function(b,e){c(a,d,b,e);})}return f=
- f?f.then(e,
- e):e()}
- var f;this._invoke=e;}function j(a,b,c){var e="suspendedStart";return function(f,g){if("executing"===e)throw new Error("Generator is already running");if("completed"===e){if("throw"===f)throw g;
- return p()}for(c.method=f,c.arg=g;;){var h=c.delegate;if(h){var i=k(h,c);if(i){if(i===w)continue;return i}}if("next"===c.method)c.sent=c._sent=c.arg;else if("throw"===c.method){if("suspendedStart"===e)throw e="completed",c.arg;c.dispatchException(c.arg);}else "return"===c.method&&c.abrupt("return",c.arg);e="executing";var j=d(a,b,c);if("normal"===j.type){if(e=c.done?"completed":"suspendedYield",j.arg===w)continue;return {value:j.arg,done:c.done}}"throw"===j.type&&(
- e="completed",c.method="throw",c.arg=j.arg);}}}
- function k(a,b){var c=a.iterator[b.method];if(void 0===c){if(b.delegate=null,"throw"===b.method){
- if(a.iterator["return"]&&(b.method="return",b.arg=void 0,k(a,b),"throw"===b.method))
- return w;b.method="throw",b.arg=new TypeError("The iterator does not provide a 'throw' method");}return w}var e=d(c,a.iterator,b.arg);if("throw"===e.type)return b.method="throw",b.arg=e.arg,b.delegate=null,w;var f=e.arg;if(!f)return b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,w;if(f.done)b[a.resultName]=f.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0);else
- return f;
- return b.delegate=null,w}
- function l(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b);}function m(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b;}function n(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(l,this),this.reset(!0);}function o(a){if(a){var b=a[t];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c 1 ? arguments[1] : undefined);
- }
- });
-
- var nativeJoin = [].join;
- var ES3_STRINGS = indexedObject != Object;
- var STRICT_METHOD$2 = arrayMethodIsStrict('join', ',');
- _export({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD$2 }, {
- join: function join(separator) {
- return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);
- }
- });
-
- var $map = arrayIteration.map;
- var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport('map');
- var USES_TO_LENGTH$3 = arrayMethodUsesToLength('map');
- _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 || !USES_TO_LENGTH$3 }, {
- map: function map(callbackfn ) {
- return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
- }
- });
-
- var arrayBufferNative = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';
-
- var toIndex = function (it) {
- if (it === undefined) return 0;
- var number = toInteger(it);
- var length = toLength(number);
- if (number !== length) throw RangeError('Wrong length or index');
- return length;
- };
-
- var Infinity = 1 / 0;
- var abs = Math.abs;
- var pow = Math.pow;
- var floor$1 = Math.floor;
- var log = Math.log;
- var LN2 = Math.LN2;
- var pack = function (number, mantissaLength, bytes) {
- var buffer = new Array(bytes);
- var exponentLength = bytes * 8 - mantissaLength - 1;
- var eMax = (1 << exponentLength) - 1;
- var eBias = eMax >> 1;
- var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;
- var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;
- var index = 0;
- var exponent, mantissa, c;
- number = abs(number);
- if (number != number || number === Infinity) {
- mantissa = number != number ? 1 : 0;
- exponent = eMax;
- } else {
- exponent = floor$1(log(number) / LN2);
- if (number * (c = pow(2, -exponent)) < 1) {
- exponent--;
- c *= 2;
- }
- if (exponent + eBias >= 1) {
- number += rt / c;
- } else {
- number += rt * pow(2, 1 - eBias);
- }
- if (number * c >= 2) {
- exponent++;
- c /= 2;
- }
- if (exponent + eBias >= eMax) {
- mantissa = 0;
- exponent = eMax;
- } else if (exponent + eBias >= 1) {
- mantissa = (number * c - 1) * pow(2, mantissaLength);
- exponent = exponent + eBias;
- } else {
- mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);
- exponent = 0;
- }
- }
- for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);
- exponent = exponent << mantissaLength | mantissa;
- exponentLength += mantissaLength;
- for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);
- buffer[--index] |= sign * 128;
- return buffer;
- };
- var unpack = function (buffer, mantissaLength) {
- var bytes = buffer.length;
- var exponentLength = bytes * 8 - mantissaLength - 1;
- var eMax = (1 << exponentLength) - 1;
- var eBias = eMax >> 1;
- var nBits = exponentLength - 7;
- var index = bytes - 1;
- var sign = buffer[index--];
- var exponent = sign & 127;
- var mantissa;
- sign >>= 7;
- for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);
- mantissa = exponent & (1 << -nBits) - 1;
- exponent >>= -nBits;
- nBits += mantissaLength;
- for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);
- if (exponent === 0) {
- exponent = 1 - eBias;
- } else if (exponent === eMax) {
- return mantissa ? NaN : sign ? -Infinity : Infinity;
- } else {
- mantissa = mantissa + pow(2, mantissaLength);
- exponent = exponent - eBias;
- } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);
- };
- var ieee754 = {
- pack: pack,
- unpack: unpack
- };
-
- var arrayFill = function fill(value ) {
- var O = toObject(this);
- var length = toLength(O.length);
- var argumentsLength = arguments.length;
- var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);
- var end = argumentsLength > 2 ? arguments[2] : undefined;
- var endPos = end === undefined ? length : toAbsoluteIndex(end, length);
- while (endPos > index) O[index++] = value;
- return O;
- };
-
- var getOwnPropertyNames = objectGetOwnPropertyNames.f;
- var defineProperty$5 = objectDefineProperty.f;
- var getInternalState$4 = internalState.get;
- var setInternalState$4 = internalState.set;
- var ARRAY_BUFFER = 'ArrayBuffer';
- var DATA_VIEW = 'DataView';
- var PROTOTYPE$2 = 'prototype';
- var WRONG_LENGTH = 'Wrong length';
- var WRONG_INDEX = 'Wrong index';
- var NativeArrayBuffer = global_1[ARRAY_BUFFER];
- var $ArrayBuffer = NativeArrayBuffer;
- var $DataView = global_1[DATA_VIEW];
- var $DataViewPrototype = $DataView && $DataView[PROTOTYPE$2];
- var ObjectPrototype$2 = Object.prototype;
- var RangeError$1 = global_1.RangeError;
- var packIEEE754 = ieee754.pack;
- var unpackIEEE754 = ieee754.unpack;
- var packInt8 = function (number) {
- return [number & 0xFF];
- };
- var packInt16 = function (number) {
- return [number & 0xFF, number >> 8 & 0xFF];
- };
- var packInt32 = function (number) {
- return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];
- };
- var unpackInt32 = function (buffer) {
- return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];
- };
- var packFloat32 = function (number) {
- return packIEEE754(number, 23, 4);
- };
- var packFloat64 = function (number) {
- return packIEEE754(number, 52, 8);
- };
- var addGetter = function (Constructor, key) {
- defineProperty$5(Constructor[PROTOTYPE$2], key, { get: function () { return getInternalState$4(this)[key]; } });
- };
- var get$1 = function (view, count, index, isLittleEndian) {
- var intIndex = toIndex(index);
- var store = getInternalState$4(view);
- if (intIndex + count > store.byteLength) throw RangeError$1(WRONG_INDEX);
- var bytes = getInternalState$4(store.buffer).bytes;
- var start = intIndex + store.byteOffset;
- var pack = bytes.slice(start, start + count);
- return isLittleEndian ? pack : pack.reverse();
- };
- var set$2 = function (view, count, index, conversion, value, isLittleEndian) {
- var intIndex = toIndex(index);
- var store = getInternalState$4(view);
- if (intIndex + count > store.byteLength) throw RangeError$1(WRONG_INDEX);
- var bytes = getInternalState$4(store.buffer).bytes;
- var start = intIndex + store.byteOffset;
- var pack = conversion(+value);
- for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];
- };
- if (!arrayBufferNative) {
- $ArrayBuffer = function ArrayBuffer(length) {
- anInstance(this, $ArrayBuffer, ARRAY_BUFFER);
- var byteLength = toIndex(length);
- setInternalState$4(this, {
- bytes: arrayFill.call(new Array(byteLength), 0),
- byteLength: byteLength
- });
- if (!descriptors) this.byteLength = byteLength;
- };
- $DataView = function DataView(buffer, byteOffset, byteLength) {
- anInstance(this, $DataView, DATA_VIEW);
- anInstance(buffer, $ArrayBuffer, DATA_VIEW);
- var bufferLength = getInternalState$4(buffer).byteLength;
- var offset = toInteger(byteOffset);
- if (offset < 0 || offset > bufferLength) throw RangeError$1('Wrong offset');
- byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
- if (offset + byteLength > bufferLength) throw RangeError$1(WRONG_LENGTH);
- setInternalState$4(this, {
- buffer: buffer,
- byteLength: byteLength,
- byteOffset: offset
- });
- if (!descriptors) {
- this.buffer = buffer;
- this.byteLength = byteLength;
- this.byteOffset = offset;
- }
- };
- if (descriptors) {
- addGetter($ArrayBuffer, 'byteLength');
- addGetter($DataView, 'buffer');
- addGetter($DataView, 'byteLength');
- addGetter($DataView, 'byteOffset');
- }
- redefineAll($DataView[PROTOTYPE$2], {
- getInt8: function getInt8(byteOffset) {
- return get$1(this, 1, byteOffset)[0] << 24 >> 24;
- },
- getUint8: function getUint8(byteOffset) {
- return get$1(this, 1, byteOffset)[0];
- },
- getInt16: function getInt16(byteOffset ) {
- var bytes = get$1(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);
- return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
- },
- getUint16: function getUint16(byteOffset ) {
- var bytes = get$1(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);
- return bytes[1] << 8 | bytes[0];
- },
- getInt32: function getInt32(byteOffset ) {
- return unpackInt32(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));
- },
- getUint32: function getUint32(byteOffset ) {
- return unpackInt32(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;
- },
- getFloat32: function getFloat32(byteOffset ) {
- return unpackIEEE754(get$1(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);
- },
- getFloat64: function getFloat64(byteOffset ) {
- return unpackIEEE754(get$1(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);
- },
- setInt8: function setInt8(byteOffset, value) {
- set$2(this, 1, byteOffset, packInt8, value);
- },
- setUint8: function setUint8(byteOffset, value) {
- set$2(this, 1, byteOffset, packInt8, value);
- },
- setInt16: function setInt16(byteOffset, value ) {
- set$2(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
- },
- setUint16: function setUint16(byteOffset, value ) {
- set$2(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);
- },
- setInt32: function setInt32(byteOffset, value ) {
- set$2(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
- },
- setUint32: function setUint32(byteOffset, value ) {
- set$2(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);
- },
- setFloat32: function setFloat32(byteOffset, value ) {
- set$2(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);
- },
- setFloat64: function setFloat64(byteOffset, value ) {
- set$2(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);
- }
- });
- } else {
- if (!fails(function () {
- NativeArrayBuffer(1);
- }) || !fails(function () {
- new NativeArrayBuffer(-1);
- }) || fails(function () {
- new NativeArrayBuffer();
- new NativeArrayBuffer(1.5);
- new NativeArrayBuffer(NaN);
- return NativeArrayBuffer.name != ARRAY_BUFFER;
- })) {
- $ArrayBuffer = function ArrayBuffer(length) {
- anInstance(this, $ArrayBuffer);
- return new NativeArrayBuffer(toIndex(length));
- };
- var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE$2] = NativeArrayBuffer[PROTOTYPE$2];
- for (var keys$1 = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys$1.length > j;) {
- if (!((key = keys$1[j++]) in $ArrayBuffer)) {
- createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);
- }
- }
- ArrayBufferPrototype.constructor = $ArrayBuffer;
- }
- if (objectSetPrototypeOf && objectGetPrototypeOf($DataViewPrototype) !== ObjectPrototype$2) {
- objectSetPrototypeOf($DataViewPrototype, ObjectPrototype$2);
- }
- var testView = new $DataView(new $ArrayBuffer(2));
- var nativeSetInt8 = $DataViewPrototype.setInt8;
- testView.setInt8(0, 2147483648);
- testView.setInt8(1, 2147483649);
- if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {
- setInt8: function setInt8(byteOffset, value) {
- nativeSetInt8.call(this, byteOffset, value << 24 >> 24);
- },
- setUint8: function setUint8(byteOffset, value) {
- nativeSetInt8.call(this, byteOffset, value << 24 >> 24);
- }
- }, { unsafe: true });
- }
- setToStringTag($ArrayBuffer, ARRAY_BUFFER);
- setToStringTag($DataView, DATA_VIEW);
- var arrayBuffer = {
- ArrayBuffer: $ArrayBuffer,
- DataView: $DataView
- };
-
- var ARRAY_BUFFER$1 = 'ArrayBuffer';
- var ArrayBuffer$1 = arrayBuffer[ARRAY_BUFFER$1];
- var NativeArrayBuffer$1 = global_1[ARRAY_BUFFER$1];
- _export({ global: true, forced: NativeArrayBuffer$1 !== ArrayBuffer$1 }, {
- ArrayBuffer: ArrayBuffer$1
- });
- setSpecies(ARRAY_BUFFER$1);
-
- var ArrayBuffer$2 = arrayBuffer.ArrayBuffer;
- var DataView$1 = arrayBuffer.DataView;
- var nativeArrayBufferSlice = ArrayBuffer$2.prototype.slice;
- var INCORRECT_SLICE = fails(function () {
- return !new ArrayBuffer$2(2).slice(1, undefined).byteLength;
- });
- _export({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {
- slice: function slice(start, end) {
- if (nativeArrayBufferSlice !== undefined && end === undefined) {
- return nativeArrayBufferSlice.call(anObject(this), start);
- }
- var length = anObject(this).byteLength;
- var first = toAbsoluteIndex(start, length);
- var fin = toAbsoluteIndex(end === undefined ? length : end, length);
- var result = new (speciesConstructor(this, ArrayBuffer$2))(toLength(fin - first));
- var viewSource = new DataView$1(this);
- var viewTarget = new DataView$1(result);
- var index = 0;
- while (first < fin) {
- viewTarget.setUint8(index++, viewSource.getUint8(first++));
- } return result;
- }
- });
-
- var nativeGetOwnPropertyNames$2 = objectGetOwnPropertyNamesExternal.f;
- var FAILS_ON_PRIMITIVES$1 = fails(function () { return !Object.getOwnPropertyNames(1); });
- _export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES$1 }, {
- getOwnPropertyNames: nativeGetOwnPropertyNames$2
- });
-
- function RE(s, f) {
- return RegExp(s, f);
- }
- var UNSUPPORTED_Y = fails(function () {
- var re = RE('a', 'y');
- re.lastIndex = 2;
- return re.exec('abcd') != null;
- });
- var BROKEN_CARET = fails(function () {
- var re = RE('^r', 'gy');
- re.lastIndex = 2;
- return re.exec('str') != null;
- });
- var regexpStickyHelpers = {
- UNSUPPORTED_Y: UNSUPPORTED_Y,
- BROKEN_CARET: BROKEN_CARET
- };
-
- var nativeExec = RegExp.prototype.exec;
- var nativeReplace = String.prototype.replace;
- var patchedExec = nativeExec;
- var UPDATES_LAST_INDEX_WRONG = (function () {
- var re1 = /a/;
- var re2 = /b*/g;
- nativeExec.call(re1, 'a');
- nativeExec.call(re2, 'a');
- return re1.lastIndex !== 0 || re2.lastIndex !== 0;
- })();
- var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET;
- var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
- var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1;
- if (PATCH) {
- patchedExec = function exec(str) {
- var re = this;
- var lastIndex, reCopy, match, i;
- var sticky = UNSUPPORTED_Y$1 && re.sticky;
- var flags = regexpFlags.call(re);
- var source = re.source;
- var charsAdded = 0;
- var strCopy = str;
- if (sticky) {
- flags = flags.replace('y', '');
- if (flags.indexOf('g') === -1) {
- flags += 'g';
- }
- strCopy = String(str).slice(re.lastIndex);
- if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) {
- source = '(?: ' + source + ')';
- strCopy = ' ' + strCopy;
- charsAdded++;
- }
- reCopy = new RegExp('^(?:' + source + ')', flags);
- }
- if (NPCG_INCLUDED) {
- reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
- }
- if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
- match = nativeExec.call(sticky ? reCopy : re, strCopy);
- if (sticky) {
- if (match) {
- match.input = match.input.slice(charsAdded);
- match[0] = match[0].slice(charsAdded);
- match.index = re.lastIndex;
- re.lastIndex += match[0].length;
- } else re.lastIndex = 0;
- } else if (UPDATES_LAST_INDEX_WRONG && match) {
- re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
- }
- if (NPCG_INCLUDED && match && match.length > 1) {
- nativeReplace.call(match[0], reCopy, function () {
- for (i = 1; i < arguments.length - 2; i++) {
- if (arguments[i] === undefined) match[i] = undefined;
- }
- });
- }
- return match;
- };
- }
- var regexpExec = patchedExec;
-
- _export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, {
- exec: regexpExec
- });
-
- var SPECIES$6 = wellKnownSymbol('species');
- var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
- var re = /./;
- re.exec = function () {
- var result = [];
- result.groups = { a: '7' };
- return result;
- };
- return ''.replace(re, '$') !== '7';
- });
- var REPLACE_KEEPS_$0 = (function () {
- return 'a'.replace(/./, '$0') === '$0';
- })();
- var REPLACE = wellKnownSymbol('replace');
- var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
- if (/./[REPLACE]) {
- return /./[REPLACE]('a', '$0') === '';
- }
- return false;
- })();
- var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
- var re = /(?:)/;
- var originalExec = re.exec;
- re.exec = function () { return originalExec.apply(this, arguments); };
- var result = 'ab'.split(re);
- return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
- });
- var fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) {
- var SYMBOL = wellKnownSymbol(KEY);
- var DELEGATES_TO_SYMBOL = !fails(function () {
- var O = {};
- O[SYMBOL] = function () { return 7; };
- return ''[KEY](O) != 7;
- });
- var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
- var execCalled = false;
- var re = /a/;
- if (KEY === 'split') {
- re = {};
- re.constructor = {};
- re.constructor[SPECIES$6] = function () { return re; };
- re.flags = '';
- re[SYMBOL] = /./[SYMBOL];
- }
- re.exec = function () { execCalled = true; return null; };
- re[SYMBOL]('');
- return !execCalled;
- });
- if (
- !DELEGATES_TO_SYMBOL ||
- !DELEGATES_TO_EXEC ||
- (KEY === 'replace' && !(
- REPLACE_SUPPORTS_NAMED_GROUPS &&
- REPLACE_KEEPS_$0 &&
- !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
- )) ||
- (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
- ) {
- var nativeRegExpMethod = /./[SYMBOL];
- var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
- if (regexp.exec === regexpExec) {
- if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
- return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
- }
- return { done: true, value: nativeMethod.call(str, regexp, arg2) };
- }
- return { done: false };
- }, {
- REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,
- REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
- });
- var stringMethod = methods[0];
- var regexMethod = methods[1];
- redefine(String.prototype, KEY, stringMethod);
- redefine(RegExp.prototype, SYMBOL, length == 2
- ? function (string, arg) { return regexMethod.call(string, this, arg); }
- : function (string) { return regexMethod.call(string, this); }
- );
- }
- if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);
- };
-
- var charAt$1 = stringMultibyte.charAt;
- var advanceStringIndex = function (S, index, unicode) {
- return index + (unicode ? charAt$1(S, index).length : 1);
- };
-
- var regexpExecAbstract = function (R, S) {
- var exec = R.exec;
- if (typeof exec === 'function') {
- var result = exec.call(R, S);
- if (typeof result !== 'object') {
- throw TypeError('RegExp exec method returned something other than an Object or null');
- }
- return result;
- }
- if (classofRaw(R) !== 'RegExp') {
- throw TypeError('RegExp#exec called on incompatible receiver');
- }
- return regexpExec.call(R, S);
- };
-
- var max$2 = Math.max;
- var min$2 = Math.min;
- var floor$2 = Math.floor;
- var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g;
- var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g;
- var maybeToString = function (it) {
- return it === undefined ? it : String(it);
- };
- fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {
- var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;
- var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;
- var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
- return [
- function replace(searchValue, replaceValue) {
- var O = requireObjectCoercible(this);
- var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
- return replacer !== undefined
- ? replacer.call(searchValue, O, replaceValue)
- : nativeReplace.call(String(O), searchValue, replaceValue);
- },
- function (regexp, replaceValue) {
- if (
- (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||
- (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)
- ) {
- var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
- if (res.done) return res.value;
- }
- var rx = anObject(regexp);
- var S = String(this);
- var functionalReplace = typeof replaceValue === 'function';
- if (!functionalReplace) replaceValue = String(replaceValue);
- var global = rx.global;
- if (global) {
- var fullUnicode = rx.unicode;
- rx.lastIndex = 0;
- }
- var results = [];
- while (true) {
- var result = regexpExecAbstract(rx, S);
- if (result === null) break;
- results.push(result);
- if (!global) break;
- var matchStr = String(result[0]);
- if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
- }
- var accumulatedResult = '';
- var nextSourcePosition = 0;
- for (var i = 0; i < results.length; i++) {
- result = results[i];
- var matched = String(result[0]);
- var position = max$2(min$2(toInteger(result.index), S.length), 0);
- var captures = [];
- for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
- var namedCaptures = result.groups;
- if (functionalReplace) {
- var replacerArgs = [matched].concat(captures, position, S);
- if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
- var replacement = String(replaceValue.apply(undefined, replacerArgs));
- } else {
- replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
- }
- if (position >= nextSourcePosition) {
- accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
- nextSourcePosition = position + matched.length;
- }
- }
- return accumulatedResult + S.slice(nextSourcePosition);
- }
- ];
- function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
- var tailPos = position + matched.length;
- var m = captures.length;
- var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
- if (namedCaptures !== undefined) {
- namedCaptures = toObject(namedCaptures);
- symbols = SUBSTITUTION_SYMBOLS;
- }
- return nativeReplace.call(replacement, symbols, function (match, ch) {
- var capture;
- switch (ch.charAt(0)) {
- case '$': return '$';
- case '&': return matched;
- case '`': return str.slice(0, position);
- case "'": return str.slice(tailPos);
- case '<':
- capture = namedCaptures[ch.slice(1, -1)];
- break;
- default:
- var n = +ch;
- if (n === 0) return match;
- if (n > m) {
- var f = floor$2(n / 10);
- if (f === 0) return match;
- if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
- return match;
- }
- capture = captures[n - 1];
- }
- return capture === undefined ? '' : capture;
- });
- }
- });
-
- var MATCH = wellKnownSymbol('match');
- var isRegexp = function (it) {
- var isRegExp;
- return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp');
- };
-
- var arrayPush = [].push;
- var min$3 = Math.min;
- var MAX_UINT32 = 0xFFFFFFFF;
- var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });
- fixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {
- var internalSplit;
- if (
- 'abbc'.split(/(b)*/)[1] == 'c' ||
- 'test'.split(/(?:)/, -1).length != 4 ||
- 'ab'.split(/(?:ab)*/).length != 2 ||
- '.'.split(/(.?)(.?)/).length != 4 ||
- '.'.split(/()()/).length > 1 ||
- ''.split(/.?/).length
- ) {
- internalSplit = function (separator, limit) {
- var string = String(requireObjectCoercible(this));
- var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
- if (lim === 0) return [];
- if (separator === undefined) return [string];
- if (!isRegexp(separator)) {
- return nativeSplit.call(string, separator, lim);
- }
- var output = [];
- var flags = (separator.ignoreCase ? 'i' : '') +
- (separator.multiline ? 'm' : '') +
- (separator.unicode ? 'u' : '') +
- (separator.sticky ? 'y' : '');
- var lastLastIndex = 0;
- var separatorCopy = new RegExp(separator.source, flags + 'g');
- var match, lastIndex, lastLength;
- while (match = regexpExec.call(separatorCopy, string)) {
- lastIndex = separatorCopy.lastIndex;
- if (lastIndex > lastLastIndex) {
- output.push(string.slice(lastLastIndex, match.index));
- if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));
- lastLength = match[0].length;
- lastLastIndex = lastIndex;
- if (output.length >= lim) break;
- }
- if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++;
- }
- if (lastLastIndex === string.length) {
- if (lastLength || !separatorCopy.test('')) output.push('');
- } else output.push(string.slice(lastLastIndex));
- return output.length > lim ? output.slice(0, lim) : output;
- };
- } else if ('0'.split(undefined, 0).length) {
- internalSplit = function (separator, limit) {
- return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
- };
- } else internalSplit = nativeSplit;
- return [
- function split(separator, limit) {
- var O = requireObjectCoercible(this);
- var splitter = separator == undefined ? undefined : separator[SPLIT];
- return splitter !== undefined
- ? splitter.call(separator, O, limit)
- : internalSplit.call(String(O), separator, limit);
- },
- function (regexp, limit) {
- var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);
- if (res.done) return res.value;
- var rx = anObject(regexp);
- var S = String(this);
- var C = speciesConstructor(rx, RegExp);
- var unicodeMatching = rx.unicode;
- var flags = (rx.ignoreCase ? 'i' : '') +
- (rx.multiline ? 'm' : '') +
- (rx.unicode ? 'u' : '') +
- (SUPPORTS_Y ? 'y' : 'g');
- var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
- var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
- if (lim === 0) return [];
- if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : [];
- var p = 0;
- var q = 0;
- var A = [];
- while (q < S.length) {
- splitter.lastIndex = SUPPORTS_Y ? q : 0;
- var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q));
- var e;
- if (
- z === null ||
- (e = min$3(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
- ) {
- q = advanceStringIndex(S, q, unicodeMatching);
- } else {
- A.push(S.slice(p, q));
- if (A.length === lim) return A;
- for (var i = 1; i <= z.length - 1; i++) {
- A.push(z[i]);
- if (A.length === lim) return A;
- }
- q = p = e;
- }
- }
- A.push(S.slice(p));
- return A;
- }
- ];
- }, !SUPPORTS_Y);
-
- var whitespaces = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
-
- var whitespace = '[' + whitespaces + ']';
- var ltrim = RegExp('^' + whitespace + whitespace + '*');
- var rtrim = RegExp(whitespace + whitespace + '*$');
- var createMethod$3 = function (TYPE) {
- return function ($this) {
- var string = String(requireObjectCoercible($this));
- if (TYPE & 1) string = string.replace(ltrim, '');
- if (TYPE & 2) string = string.replace(rtrim, '');
- return string;
- };
- };
- var stringTrim = {
- start: createMethod$3(1),
- end: createMethod$3(2),
- trim: createMethod$3(3)
- };
-
- var non = '\u200B\u0085\u180E';
- var stringTrimForced = function (METHOD_NAME) {
- return fails(function () {
- return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;
- });
- };
-
- var $trim = stringTrim.trim;
- _export({ target: 'String', proto: true, forced: stringTrimForced('trim') }, {
- trim: function trim() {
- return $trim(this);
- }
- });
-
- var defineProperty$6 = objectDefineProperty.f;
- var Int8Array$1 = global_1.Int8Array;
- var Int8ArrayPrototype = Int8Array$1 && Int8Array$1.prototype;
- var Uint8ClampedArray = global_1.Uint8ClampedArray;
- var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;
- var TypedArray = Int8Array$1 && objectGetPrototypeOf(Int8Array$1);
- var TypedArrayPrototype = Int8ArrayPrototype && objectGetPrototypeOf(Int8ArrayPrototype);
- var ObjectPrototype$3 = Object.prototype;
- var isPrototypeOf = ObjectPrototype$3.isPrototypeOf;
- var TO_STRING_TAG$4 = wellKnownSymbol('toStringTag');
- var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');
- var NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferNative && !!objectSetPrototypeOf && classof(global_1.opera) !== 'Opera';
- var TYPED_ARRAY_TAG_REQIRED = false;
- var NAME$1;
- var TypedArrayConstructorsList = {
- Int8Array: 1,
- Uint8Array: 1,
- Uint8ClampedArray: 1,
- Int16Array: 2,
- Uint16Array: 2,
- Int32Array: 4,
- Uint32Array: 4,
- Float32Array: 4,
- Float64Array: 8
- };
- var isView = function isView(it) {
- var klass = classof(it);
- return klass === 'DataView' || has(TypedArrayConstructorsList, klass);
- };
- var isTypedArray = function (it) {
- return isObject(it) && has(TypedArrayConstructorsList, classof(it));
- };
- var aTypedArray = function (it) {
- if (isTypedArray(it)) return it;
- throw TypeError('Target is not a typed array');
- };
- var aTypedArrayConstructor = function (C) {
- if (objectSetPrototypeOf) {
- if (isPrototypeOf.call(TypedArray, C)) return C;
- } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME$1)) {
- var TypedArrayConstructor = global_1[ARRAY];
- if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {
- return C;
- }
- } throw TypeError('Target is not a typed array constructor');
- };
- var exportTypedArrayMethod = function (KEY, property, forced) {
- if (!descriptors) return;
- if (forced) for (var ARRAY in TypedArrayConstructorsList) {
- var TypedArrayConstructor = global_1[ARRAY];
- if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {
- delete TypedArrayConstructor.prototype[KEY];
- }
- }
- if (!TypedArrayPrototype[KEY] || forced) {
- redefine(TypedArrayPrototype, KEY, forced ? property
- : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);
- }
- };
- var exportTypedArrayStaticMethod = function (KEY, property, forced) {
- var ARRAY, TypedArrayConstructor;
- if (!descriptors) return;
- if (objectSetPrototypeOf) {
- if (forced) for (ARRAY in TypedArrayConstructorsList) {
- TypedArrayConstructor = global_1[ARRAY];
- if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {
- delete TypedArrayConstructor[KEY];
- }
- }
- if (!TypedArray[KEY] || forced) {
- try {
- return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array$1[KEY] || property);
- } catch (error) { }
- } else return;
- }
- for (ARRAY in TypedArrayConstructorsList) {
- TypedArrayConstructor = global_1[ARRAY];
- if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
- redefine(TypedArrayConstructor, KEY, property);
- }
- }
- };
- for (NAME$1 in TypedArrayConstructorsList) {
- if (!global_1[NAME$1]) NATIVE_ARRAY_BUFFER_VIEWS = false;
- }
- if (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {
- TypedArray = function TypedArray() {
- throw TypeError('Incorrect invocation');
- };
- if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME$1 in TypedArrayConstructorsList) {
- if (global_1[NAME$1]) objectSetPrototypeOf(global_1[NAME$1], TypedArray);
- }
- }
- if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype$3) {
- TypedArrayPrototype = TypedArray.prototype;
- if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME$1 in TypedArrayConstructorsList) {
- if (global_1[NAME$1]) objectSetPrototypeOf(global_1[NAME$1].prototype, TypedArrayPrototype);
- }
- }
- if (NATIVE_ARRAY_BUFFER_VIEWS && objectGetPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {
- objectSetPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);
- }
- if (descriptors && !has(TypedArrayPrototype, TO_STRING_TAG$4)) {
- TYPED_ARRAY_TAG_REQIRED = true;
- defineProperty$6(TypedArrayPrototype, TO_STRING_TAG$4, { get: function () {
- return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;
- } });
- for (NAME$1 in TypedArrayConstructorsList) if (global_1[NAME$1]) {
- createNonEnumerableProperty(global_1[NAME$1], TYPED_ARRAY_TAG, NAME$1);
- }
- }
- var arrayBufferViewCore = {
- NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,
- TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,
- aTypedArray: aTypedArray,
- aTypedArrayConstructor: aTypedArrayConstructor,
- exportTypedArrayMethod: exportTypedArrayMethod,
- exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,
- isView: isView,
- isTypedArray: isTypedArray,
- TypedArray: TypedArray,
- TypedArrayPrototype: TypedArrayPrototype
- };
-
- var NATIVE_ARRAY_BUFFER_VIEWS$1 = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
- var ArrayBuffer$3 = global_1.ArrayBuffer;
- var Int8Array$2 = global_1.Int8Array;
- var typedArrayConstructorsRequireWrappers = !NATIVE_ARRAY_BUFFER_VIEWS$1 || !fails(function () {
- Int8Array$2(1);
- }) || !fails(function () {
- new Int8Array$2(-1);
- }) || !checkCorrectnessOfIteration(function (iterable) {
- new Int8Array$2();
- new Int8Array$2(null);
- new Int8Array$2(1.5);
- new Int8Array$2(iterable);
- }, true) || fails(function () {
- return new Int8Array$2(new ArrayBuffer$3(2), 1, undefined).length !== 1;
- });
-
- var toPositiveInteger = function (it) {
- var result = toInteger(it);
- if (result < 0) throw RangeError("The argument can't be less than 0");
- return result;
- };
-
- var toOffset = function (it, BYTES) {
- var offset = toPositiveInteger(it);
- if (offset % BYTES) throw RangeError('Wrong offset');
- return offset;
- };
-
- var aTypedArrayConstructor$1 = arrayBufferViewCore.aTypedArrayConstructor;
- var typedArrayFrom = function from(source ) {
- var O = toObject(source);
- var argumentsLength = arguments.length;
- var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
- var mapping = mapfn !== undefined;
- var iteratorMethod = getIteratorMethod(O);
- var i, length, result, step, iterator, next;
- if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {
- iterator = iteratorMethod.call(O);
- next = iterator.next;
- O = [];
- while (!(step = next.call(iterator)).done) {
- O.push(step.value);
- }
- }
- if (mapping && argumentsLength > 2) {
- mapfn = functionBindContext(mapfn, arguments[2], 2);
- }
- length = toLength(O.length);
- result = new (aTypedArrayConstructor$1(this))(length);
- for (i = 0; length > i; i++) {
- result[i] = mapping ? mapfn(O[i], i) : O[i];
- }
- return result;
- };
-
- var inheritIfRequired = function ($this, dummy, Wrapper) {
- var NewTarget, NewTargetPrototype;
- if (
- objectSetPrototypeOf &&
- typeof (NewTarget = dummy.constructor) == 'function' &&
- NewTarget !== Wrapper &&
- isObject(NewTargetPrototype = NewTarget.prototype) &&
- NewTargetPrototype !== Wrapper.prototype
- ) objectSetPrototypeOf($this, NewTargetPrototype);
- return $this;
- };
-
- var typedArrayConstructor = createCommonjsModule(function (module) {
- var getOwnPropertyNames = objectGetOwnPropertyNames.f;
- var forEach = arrayIteration.forEach;
- var getInternalState = internalState.get;
- var setInternalState = internalState.set;
- var nativeDefineProperty = objectDefineProperty.f;
- var nativeGetOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
- var round = Math.round;
- var RangeError = global_1.RangeError;
- var ArrayBuffer = arrayBuffer.ArrayBuffer;
- var DataView = arrayBuffer.DataView;
- var NATIVE_ARRAY_BUFFER_VIEWS = arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;
- var TYPED_ARRAY_TAG = arrayBufferViewCore.TYPED_ARRAY_TAG;
- var TypedArray = arrayBufferViewCore.TypedArray;
- var TypedArrayPrototype = arrayBufferViewCore.TypedArrayPrototype;
- var aTypedArrayConstructor = arrayBufferViewCore.aTypedArrayConstructor;
- var isTypedArray = arrayBufferViewCore.isTypedArray;
- var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
- var WRONG_LENGTH = 'Wrong length';
- var fromList = function (C, list) {
- var index = 0;
- var length = list.length;
- var result = new (aTypedArrayConstructor(C))(length);
- while (length > index) result[index] = list[index++];
- return result;
- };
- var addGetter = function (it, key) {
- nativeDefineProperty(it, key, { get: function () {
- return getInternalState(this)[key];
- } });
- };
- var isArrayBuffer = function (it) {
- var klass;
- return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';
- };
- var isTypedArrayIndex = function (target, key) {
- return isTypedArray(target)
- && typeof key != 'symbol'
- && key in target
- && String(+key) == String(key);
- };
- var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {
- return isTypedArrayIndex(target, key = toPrimitive(key, true))
- ? createPropertyDescriptor(2, target[key])
- : nativeGetOwnPropertyDescriptor(target, key);
- };
- var wrappedDefineProperty = function defineProperty(target, key, descriptor) {
- if (isTypedArrayIndex(target, key = toPrimitive(key, true))
- && isObject(descriptor)
- && has(descriptor, 'value')
- && !has(descriptor, 'get')
- && !has(descriptor, 'set')
- && !descriptor.configurable
- && (!has(descriptor, 'writable') || descriptor.writable)
- && (!has(descriptor, 'enumerable') || descriptor.enumerable)
- ) {
- target[key] = descriptor.value;
- return target;
- } return nativeDefineProperty(target, key, descriptor);
- };
- if (descriptors) {
- if (!NATIVE_ARRAY_BUFFER_VIEWS) {
- objectGetOwnPropertyDescriptor.f = wrappedGetOwnPropertyDescriptor;
- objectDefineProperty.f = wrappedDefineProperty;
- addGetter(TypedArrayPrototype, 'buffer');
- addGetter(TypedArrayPrototype, 'byteOffset');
- addGetter(TypedArrayPrototype, 'byteLength');
- addGetter(TypedArrayPrototype, 'length');
- }
- _export({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {
- getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,
- defineProperty: wrappedDefineProperty
- });
- module.exports = function (TYPE, wrapper, CLAMPED) {
- var BYTES = TYPE.match(/\d+$/)[0] / 8;
- var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';
- var GETTER = 'get' + TYPE;
- var SETTER = 'set' + TYPE;
- var NativeTypedArrayConstructor = global_1[CONSTRUCTOR_NAME];
- var TypedArrayConstructor = NativeTypedArrayConstructor;
- var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;
- var exported = {};
- var getter = function (that, index) {
- var data = getInternalState(that);
- return data.view[GETTER](index * BYTES + data.byteOffset, true);
- };
- var setter = function (that, index, value) {
- var data = getInternalState(that);
- if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;
- data.view[SETTER](index * BYTES + data.byteOffset, value, true);
- };
- var addElement = function (that, index) {
- nativeDefineProperty(that, index, {
- get: function () {
- return getter(this, index);
- },
- set: function (value) {
- return setter(this, index, value);
- },
- enumerable: true
- });
- };
- if (!NATIVE_ARRAY_BUFFER_VIEWS) {
- TypedArrayConstructor = wrapper(function (that, data, offset, $length) {
- anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);
- var index = 0;
- var byteOffset = 0;
- var buffer, byteLength, length;
- if (!isObject(data)) {
- length = toIndex(data);
- byteLength = length * BYTES;
- buffer = new ArrayBuffer(byteLength);
- } else if (isArrayBuffer(data)) {
- buffer = data;
- byteOffset = toOffset(offset, BYTES);
- var $len = data.byteLength;
- if ($length === undefined) {
- if ($len % BYTES) throw RangeError(WRONG_LENGTH);
- byteLength = $len - byteOffset;
- if (byteLength < 0) throw RangeError(WRONG_LENGTH);
- } else {
- byteLength = toLength($length) * BYTES;
- if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);
- }
- length = byteLength / BYTES;
- } else if (isTypedArray(data)) {
- return fromList(TypedArrayConstructor, data);
- } else {
- return typedArrayFrom.call(TypedArrayConstructor, data);
- }
- setInternalState(that, {
- buffer: buffer,
- byteOffset: byteOffset,
- byteLength: byteLength,
- length: length,
- view: new DataView(buffer)
- });
- while (index < length) addElement(that, index++);
- });
- if (objectSetPrototypeOf) objectSetPrototypeOf(TypedArrayConstructor, TypedArray);
- TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = objectCreate(TypedArrayPrototype);
- } else if (typedArrayConstructorsRequireWrappers) {
- TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {
- anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);
- return inheritIfRequired(function () {
- if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));
- if (isArrayBuffer(data)) return $length !== undefined
- ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)
- : typedArrayOffset !== undefined
- ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))
- : new NativeTypedArrayConstructor(data);
- if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);
- return typedArrayFrom.call(TypedArrayConstructor, data);
- }(), dummy, TypedArrayConstructor);
- });
- if (objectSetPrototypeOf) objectSetPrototypeOf(TypedArrayConstructor, TypedArray);
- forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {
- if (!(key in TypedArrayConstructor)) {
- createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);
- }
- });
- TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;
- }
- if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {
- createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);
- }
- if (TYPED_ARRAY_TAG) {
- createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);
- }
- exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;
- _export({
- global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS
- }, exported);
- if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {
- createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);
- }
- if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {
- createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);
- }
- setSpecies(CONSTRUCTOR_NAME);
- };
- } else module.exports = function () { };
- });
-
- typedArrayConstructor('Uint8', function (init) {
- return function Uint8Array(data, byteOffset, length) {
- return init(this, data, byteOffset, length);
- };
- });
-
- var min$4 = Math.min;
- var arrayCopyWithin = [].copyWithin || function copyWithin(target , start ) {
- var O = toObject(this);
- var len = toLength(O.length);
- var to = toAbsoluteIndex(target, len);
- var from = toAbsoluteIndex(start, len);
- var end = arguments.length > 2 ? arguments[2] : undefined;
- var count = min$4((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
- var inc = 1;
- if (from < to && to < from + count) {
- inc = -1;
- from += count - 1;
- to += count - 1;
- }
- while (count-- > 0) {
- if (from in O) O[to] = O[from];
- else delete O[to];
- to += inc;
- from += inc;
- } return O;
- };
-
- var aTypedArray$1 = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$1 = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$1('copyWithin', function copyWithin(target, start ) {
- return arrayCopyWithin.call(aTypedArray$1(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
- });
-
- var $every = arrayIteration.every;
- var aTypedArray$2 = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$2 = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$2('every', function every(callbackfn ) {
- return $every(aTypedArray$2(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
- });
-
- var aTypedArray$3 = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$3 = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$3('fill', function fill(value ) {
- return arrayFill.apply(aTypedArray$3(this), arguments);
- });
-
- var $filter = arrayIteration.filter;
- var aTypedArray$4 = arrayBufferViewCore.aTypedArray;
- var aTypedArrayConstructor$2 = arrayBufferViewCore.aTypedArrayConstructor;
- var exportTypedArrayMethod$4 = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$4('filter', function filter(callbackfn ) {
- var list = $filter(aTypedArray$4(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
- var C = speciesConstructor(this, this.constructor);
- var index = 0;
- var length = list.length;
- var result = new (aTypedArrayConstructor$2(C))(length);
- while (length > index) result[index] = list[index++];
- return result;
- });
-
- var $find = arrayIteration.find;
- var aTypedArray$5 = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$5 = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$5('find', function find(predicate ) {
- return $find(aTypedArray$5(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
- });
-
- var $findIndex = arrayIteration.findIndex;
- var aTypedArray$6 = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$6 = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$6('findIndex', function findIndex(predicate ) {
- return $findIndex(aTypedArray$6(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
- });
-
- var $forEach$2 = arrayIteration.forEach;
- var aTypedArray$7 = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$7 = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$7('forEach', function forEach(callbackfn ) {
- $forEach$2(aTypedArray$7(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
- });
-
- var $includes = arrayIncludes.includes;
- var aTypedArray$8 = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$8 = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$8('includes', function includes(searchElement ) {
- return $includes(aTypedArray$8(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
- });
-
- var $indexOf$1 = arrayIncludes.indexOf;
- var aTypedArray$9 = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$9 = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$9('indexOf', function indexOf(searchElement ) {
- return $indexOf$1(aTypedArray$9(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
- });
-
- var ITERATOR$6 = wellKnownSymbol('iterator');
- var Uint8Array$1 = global_1.Uint8Array;
- var arrayValues = es_array_iterator.values;
- var arrayKeys = es_array_iterator.keys;
- var arrayEntries = es_array_iterator.entries;
- var aTypedArray$a = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$a = arrayBufferViewCore.exportTypedArrayMethod;
- var nativeTypedArrayIterator = Uint8Array$1 && Uint8Array$1.prototype[ITERATOR$6];
- var CORRECT_ITER_NAME = !!nativeTypedArrayIterator
- && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);
- var typedArrayValues = function values() {
- return arrayValues.call(aTypedArray$a(this));
- };
- exportTypedArrayMethod$a('entries', function entries() {
- return arrayEntries.call(aTypedArray$a(this));
- });
- exportTypedArrayMethod$a('keys', function keys() {
- return arrayKeys.call(aTypedArray$a(this));
- });
- exportTypedArrayMethod$a('values', typedArrayValues, !CORRECT_ITER_NAME);
- exportTypedArrayMethod$a(ITERATOR$6, typedArrayValues, !CORRECT_ITER_NAME);
-
- var aTypedArray$b = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$b = arrayBufferViewCore.exportTypedArrayMethod;
- var $join = [].join;
- exportTypedArrayMethod$b('join', function join(separator) {
- return $join.apply(aTypedArray$b(this), arguments);
- });
-
- var min$5 = Math.min;
- var nativeLastIndexOf = [].lastIndexOf;
- var NEGATIVE_ZERO$1 = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;
- var STRICT_METHOD$3 = arrayMethodIsStrict('lastIndexOf');
- var USES_TO_LENGTH$4 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
- var FORCED$1 = NEGATIVE_ZERO$1 || !STRICT_METHOD$3 || !USES_TO_LENGTH$4;
- var arrayLastIndexOf = FORCED$1 ? function lastIndexOf(searchElement ) {
- if (NEGATIVE_ZERO$1) return nativeLastIndexOf.apply(this, arguments) || 0;
- var O = toIndexedObject(this);
- var length = toLength(O.length);
- var index = length - 1;
- if (arguments.length > 1) index = min$5(index, toInteger(arguments[1]));
- if (index < 0) index = length + index;
- for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;
- return -1;
- } : nativeLastIndexOf;
-
- var aTypedArray$c = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$c = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$c('lastIndexOf', function lastIndexOf(searchElement ) {
- return arrayLastIndexOf.apply(aTypedArray$c(this), arguments);
- });
-
- var $map$1 = arrayIteration.map;
- var aTypedArray$d = arrayBufferViewCore.aTypedArray;
- var aTypedArrayConstructor$3 = arrayBufferViewCore.aTypedArrayConstructor;
- var exportTypedArrayMethod$d = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$d('map', function map(mapfn ) {
- return $map$1(aTypedArray$d(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {
- return new (aTypedArrayConstructor$3(speciesConstructor(O, O.constructor)))(length);
- });
- });
-
- var createMethod$4 = function (IS_RIGHT) {
- return function (that, callbackfn, argumentsLength, memo) {
- aFunction$1(callbackfn);
- var O = toObject(that);
- var self = indexedObject(O);
- var length = toLength(O.length);
- var index = IS_RIGHT ? length - 1 : 0;
- var i = IS_RIGHT ? -1 : 1;
- if (argumentsLength < 2) while (true) {
- if (index in self) {
- memo = self[index];
- index += i;
- break;
- }
- index += i;
- if (IS_RIGHT ? index < 0 : length <= index) {
- throw TypeError('Reduce of empty array with no initial value');
- }
- }
- for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
- memo = callbackfn(memo, self[index], index, O);
- }
- return memo;
- };
- };
- var arrayReduce = {
- left: createMethod$4(false),
- right: createMethod$4(true)
- };
-
- var $reduce = arrayReduce.left;
- var aTypedArray$e = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$e = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$e('reduce', function reduce(callbackfn ) {
- return $reduce(aTypedArray$e(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
- });
-
- var $reduceRight = arrayReduce.right;
- var aTypedArray$f = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$f = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$f('reduceRight', function reduceRight(callbackfn ) {
- return $reduceRight(aTypedArray$f(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
- });
-
- var aTypedArray$g = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$g = arrayBufferViewCore.exportTypedArrayMethod;
- var floor$3 = Math.floor;
- exportTypedArrayMethod$g('reverse', function reverse() {
- var that = this;
- var length = aTypedArray$g(that).length;
- var middle = floor$3(length / 2);
- var index = 0;
- var value;
- while (index < middle) {
- value = that[index];
- that[index++] = that[--length];
- that[length] = value;
- } return that;
- });
-
- var aTypedArray$h = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$h = arrayBufferViewCore.exportTypedArrayMethod;
- var FORCED$2 = fails(function () {
- new Int8Array(1).set({});
- });
- exportTypedArrayMethod$h('set', function set(arrayLike ) {
- aTypedArray$h(this);
- var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);
- var length = this.length;
- var src = toObject(arrayLike);
- var len = toLength(src.length);
- var index = 0;
- if (len + offset > length) throw RangeError('Wrong length');
- while (index < len) this[offset + index] = src[index++];
- }, FORCED$2);
-
- var aTypedArray$i = arrayBufferViewCore.aTypedArray;
- var aTypedArrayConstructor$4 = arrayBufferViewCore.aTypedArrayConstructor;
- var exportTypedArrayMethod$i = arrayBufferViewCore.exportTypedArrayMethod;
- var $slice = [].slice;
- var FORCED$3 = fails(function () {
- new Int8Array(1).slice();
- });
- exportTypedArrayMethod$i('slice', function slice(start, end) {
- var list = $slice.call(aTypedArray$i(this), start, end);
- var C = speciesConstructor(this, this.constructor);
- var index = 0;
- var length = list.length;
- var result = new (aTypedArrayConstructor$4(C))(length);
- while (length > index) result[index] = list[index++];
- return result;
- }, FORCED$3);
-
- var $some = arrayIteration.some;
- var aTypedArray$j = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$j = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$j('some', function some(callbackfn ) {
- return $some(aTypedArray$j(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
- });
-
- var aTypedArray$k = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$k = arrayBufferViewCore.exportTypedArrayMethod;
- var $sort = [].sort;
- exportTypedArrayMethod$k('sort', function sort(comparefn) {
- return $sort.call(aTypedArray$k(this), comparefn);
- });
-
- var aTypedArray$l = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$l = arrayBufferViewCore.exportTypedArrayMethod;
- exportTypedArrayMethod$l('subarray', function subarray(begin, end) {
- var O = aTypedArray$l(this);
- var length = O.length;
- var beginIndex = toAbsoluteIndex(begin, length);
- return new (speciesConstructor(O, O.constructor))(
- O.buffer,
- O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,
- toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)
- );
- });
-
- var Int8Array$3 = global_1.Int8Array;
- var aTypedArray$m = arrayBufferViewCore.aTypedArray;
- var exportTypedArrayMethod$m = arrayBufferViewCore.exportTypedArrayMethod;
- var $toLocaleString = [].toLocaleString;
- var $slice$1 = [].slice;
- var TO_LOCALE_STRING_BUG = !!Int8Array$3 && fails(function () {
- $toLocaleString.call(new Int8Array$3(1));
- });
- var FORCED$4 = fails(function () {
- return [1, 2].toLocaleString() != new Int8Array$3([1, 2]).toLocaleString();
- }) || !fails(function () {
- Int8Array$3.prototype.toLocaleString.call([1, 2]);
- });
- exportTypedArrayMethod$m('toLocaleString', function toLocaleString() {
- return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice$1.call(aTypedArray$m(this)) : aTypedArray$m(this), arguments);
- }, FORCED$4);
-
- var exportTypedArrayMethod$n = arrayBufferViewCore.exportTypedArrayMethod;
- var Uint8Array$2 = global_1.Uint8Array;
- var Uint8ArrayPrototype = Uint8Array$2 && Uint8Array$2.prototype || {};
- var arrayToString = [].toString;
- var arrayJoin = [].join;
- if (fails(function () { arrayToString.call({}); })) {
- arrayToString = function toString() {
- return arrayJoin.call(this);
- };
- }
- var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;
- exportTypedArrayMethod$n('toString', arrayToString, IS_NOT_ARRAY_METHOD);
-
- var ITERATOR$7 = wellKnownSymbol('iterator');
- var nativeUrl = !fails(function () {
- var url = new URL('b?a=1&b=2&c=3', 'http://a');
- var searchParams = url.searchParams;
- var result = '';
- url.pathname = 'c%20d';
- searchParams.forEach(function (value, key) {
- searchParams['delete']('b');
- result += key + value;
- });
- return (isPure && !url.toJSON)
- || !searchParams.sort
- || url.href !== 'http://a/c%20d?a=1&c=3'
- || searchParams.get('c') !== '3'
- || String(new URLSearchParams('?a=1')) !== 'a=1'
- || !searchParams[ITERATOR$7]
- || new URL('https://a@b').username !== 'a'
- || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'
- || new URL('http://тест').host !== 'xn--e1aybc'
- || new URL('http://a#б').hash !== '#%D0%B1'
- || result !== 'a1c3'
- || new URL('http://x', undefined).host !== 'x';
- });
-
- var nativeAssign = Object.assign;
- var defineProperty$7 = Object.defineProperty;
- var objectAssign = !nativeAssign || fails(function () {
- if (descriptors && nativeAssign({ b: 1 }, nativeAssign(defineProperty$7({}, 'a', {
- enumerable: true,
- get: function () {
- defineProperty$7(this, 'b', {
- value: 3,
- enumerable: false
- });
- }
- }), { b: 2 })).b !== 1) return true;
- var A = {};
- var B = {};
- var symbol = Symbol();
- var alphabet = 'abcdefghijklmnopqrst';
- A[symbol] = 7;
- alphabet.split('').forEach(function (chr) { B[chr] = chr; });
- return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;
- }) ? function assign(target, source) {
- var T = toObject(target);
- var argumentsLength = arguments.length;
- var index = 1;
- var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
- var propertyIsEnumerable = objectPropertyIsEnumerable.f;
- while (argumentsLength > index) {
- var S = indexedObject(arguments[index++]);
- var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);
- var length = keys.length;
- var j = 0;
- var key;
- while (length > j) {
- key = keys[j++];
- if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key];
- }
- } return T;
- } : nativeAssign;
-
- var callWithSafeIterationClosing = function (iterator, fn, value, ENTRIES) {
- try {
- return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
- } catch (error) {
- iteratorClose(iterator);
- throw error;
- }
- };
-
- var arrayFrom = function from(arrayLike ) {
- var O = toObject(arrayLike);
- var C = typeof this == 'function' ? this : Array;
- var argumentsLength = arguments.length;
- var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
- var mapping = mapfn !== undefined;
- var iteratorMethod = getIteratorMethod(O);
- var index = 0;
- var length, result, step, iterator, next, value;
- if (mapping) mapfn = functionBindContext(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);
- if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {
- iterator = iteratorMethod.call(O);
- next = iterator.next;
- result = new C();
- for (;!(step = next.call(iterator)).done; index++) {
- value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
- createProperty(result, index, value);
- }
- } else {
- length = toLength(O.length);
- result = new C(length);
- for (;length > index; index++) {
- value = mapping ? mapfn(O[index], index) : O[index];
- createProperty(result, index, value);
- }
- }
- result.length = index;
- return result;
- };
-
- var maxInt = 2147483647;
- var base = 36;
- var tMin = 1;
- var tMax = 26;
- var skew = 38;
- var damp = 700;
- var initialBias = 72;
- var initialN = 128;
- var delimiter = '-';
- var regexNonASCII = /[^\0-\u007E]/;
- var regexSeparators = /[.\u3002\uFF0E\uFF61]/g;
- var OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';
- var baseMinusTMin = base - tMin;
- var floor$4 = Math.floor;
- var stringFromCharCode = String.fromCharCode;
- var ucs2decode = function (string) {
- var output = [];
- var counter = 0;
- var length = string.length;
- while (counter < length) {
- var value = string.charCodeAt(counter++);
- if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
- var extra = string.charCodeAt(counter++);
- if ((extra & 0xFC00) == 0xDC00) {
- output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
- } else {
- output.push(value);
- counter--;
- }
- } else {
- output.push(value);
- }
- }
- return output;
- };
- var digitToBasic = function (digit) {
- return digit + 22 + 75 * (digit < 26);
- };
- var adapt = function (delta, numPoints, firstTime) {
- var k = 0;
- delta = firstTime ? floor$4(delta / damp) : delta >> 1;
- delta += floor$4(delta / numPoints);
- for (; delta > baseMinusTMin * tMax >> 1; k += base) {
- delta = floor$4(delta / baseMinusTMin);
- }
- return floor$4(k + (baseMinusTMin + 1) * delta / (delta + skew));
- };
- var encode = function (input) {
- var output = [];
- input = ucs2decode(input);
- var inputLength = input.length;
- var n = initialN;
- var delta = 0;
- var bias = initialBias;
- var i, currentValue;
- for (i = 0; i < input.length; i++) {
- currentValue = input[i];
- if (currentValue < 0x80) {
- output.push(stringFromCharCode(currentValue));
- }
- }
- var basicLength = output.length;
- var handledCPCount = basicLength;
- if (basicLength) {
- output.push(delimiter);
- }
- while (handledCPCount < inputLength) {
- var m = maxInt;
- for (i = 0; i < input.length; i++) {
- currentValue = input[i];
- if (currentValue >= n && currentValue < m) {
- m = currentValue;
- }
- }
- var handledCPCountPlusOne = handledCPCount + 1;
- if (m - n > floor$4((maxInt - delta) / handledCPCountPlusOne)) {
- throw RangeError(OVERFLOW_ERROR);
- }
- delta += (m - n) * handledCPCountPlusOne;
- n = m;
- for (i = 0; i < input.length; i++) {
- currentValue = input[i];
- if (currentValue < n && ++delta > maxInt) {
- throw RangeError(OVERFLOW_ERROR);
- }
- if (currentValue == n) {
- var q = delta;
- for (var k = base; ; k += base) {
- var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
- if (q < t) break;
- var qMinusT = q - t;
- var baseMinusT = base - t;
- output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));
- q = floor$4(qMinusT / baseMinusT);
- }
- output.push(stringFromCharCode(digitToBasic(q)));
- bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
- delta = 0;
- ++handledCPCount;
- }
- }
- ++delta;
- ++n;
- }
- return output.join('');
- };
- var stringPunycodeToAscii = function (input) {
- var encoded = [];
- var labels = input.toLowerCase().replace(regexSeparators, '\u002E').split('.');
- var i, label;
- for (i = 0; i < labels.length; i++) {
- label = labels[i];
- encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);
- }
- return encoded.join('.');
- };
-
- var getIterator = function (it) {
- var iteratorMethod = getIteratorMethod(it);
- if (typeof iteratorMethod != 'function') {
- throw TypeError(String(it) + ' is not iterable');
- } return anObject(iteratorMethod.call(it));
- };
-
- var $fetch$1 = getBuiltIn('fetch');
- var Headers = getBuiltIn('Headers');
- var ITERATOR$8 = wellKnownSymbol('iterator');
- var URL_SEARCH_PARAMS = 'URLSearchParams';
- var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';
- var setInternalState$5 = internalState.set;
- var getInternalParamsState = internalState.getterFor(URL_SEARCH_PARAMS);
- var getInternalIteratorState = internalState.getterFor(URL_SEARCH_PARAMS_ITERATOR);
- var plus = /\+/g;
- var sequences = Array(4);
- var percentSequence = function (bytes) {
- return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi'));
- };
- var percentDecode = function (sequence) {
- try {
- return decodeURIComponent(sequence);
- } catch (error) {
- return sequence;
- }
- };
- var deserialize = function (it) {
- var result = it.replace(plus, ' ');
- var bytes = 4;
- try {
- return decodeURIComponent(result);
- } catch (error) {
- while (bytes) {
- result = result.replace(percentSequence(bytes--), percentDecode);
- }
- return result;
- }
- };
- var find = /[!'()~]|%20/g;
- var replace = {
- '!': '%21',
- "'": '%27',
- '(': '%28',
- ')': '%29',
- '~': '%7E',
- '%20': '+'
- };
- var replacer = function (match) {
- return replace[match];
- };
- var serialize = function (it) {
- return encodeURIComponent(it).replace(find, replacer);
- };
- var parseSearchParams = function (result, query) {
- if (query) {
- var attributes = query.split('&');
- var index = 0;
- var attribute, entry;
- while (index < attributes.length) {
- attribute = attributes[index++];
- if (attribute.length) {
- entry = attribute.split('=');
- result.push({
- key: deserialize(entry.shift()),
- value: deserialize(entry.join('='))
- });
- }
- }
- }
- };
- var updateSearchParams = function (query) {
- this.entries.length = 0;
- parseSearchParams(this.entries, query);
- };
- var validateArgumentsLength = function (passed, required) {
- if (passed < required) throw TypeError('Not enough arguments');
- };
- var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {
- setInternalState$5(this, {
- type: URL_SEARCH_PARAMS_ITERATOR,
- iterator: getIterator(getInternalParamsState(params).entries),
- kind: kind
- });
- }, 'Iterator', function next() {
- var state = getInternalIteratorState(this);
- var kind = state.kind;
- var step = state.iterator.next();
- var entry = step.value;
- if (!step.done) {
- step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];
- } return step;
- });
- var URLSearchParamsConstructor = function URLSearchParams() {
- anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);
- var init = arguments.length > 0 ? arguments[0] : undefined;
- var that = this;
- var entries = [];
- var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;
- setInternalState$5(that, {
- type: URL_SEARCH_PARAMS,
- entries: entries,
- updateURL: function () { },
- updateSearchParams: updateSearchParams
- });
- if (init !== undefined) {
- if (isObject(init)) {
- iteratorMethod = getIteratorMethod(init);
- if (typeof iteratorMethod === 'function') {
- iterator = iteratorMethod.call(init);
- next = iterator.next;
- while (!(step = next.call(iterator)).done) {
- entryIterator = getIterator(anObject(step.value));
- entryNext = entryIterator.next;
- if (
- (first = entryNext.call(entryIterator)).done ||
- (second = entryNext.call(entryIterator)).done ||
- !entryNext.call(entryIterator).done
- ) throw TypeError('Expected sequence with length 2');
- entries.push({ key: first.value + '', value: second.value + '' });
- }
- } else for (key in init) if (has(init, key)) entries.push({ key: key, value: init[key] + '' });
- } else {
- parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');
- }
- }
- };
- var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;
- redefineAll(URLSearchParamsPrototype, {
- append: function append(name, value) {
- validateArgumentsLength(arguments.length, 2);
- var state = getInternalParamsState(this);
- state.entries.push({ key: name + '', value: value + '' });
- state.updateURL();
- },
- 'delete': function (name) {
- validateArgumentsLength(arguments.length, 1);
- var state = getInternalParamsState(this);
- var entries = state.entries;
- var key = name + '';
- var index = 0;
- while (index < entries.length) {
- if (entries[index].key === key) entries.splice(index, 1);
- else index++;
- }
- state.updateURL();
- },
- get: function get(name) {
- validateArgumentsLength(arguments.length, 1);
- var entries = getInternalParamsState(this).entries;
- var key = name + '';
- var index = 0;
- for (; index < entries.length; index++) {
- if (entries[index].key === key) return entries[index].value;
- }
- return null;
- },
- getAll: function getAll(name) {
- validateArgumentsLength(arguments.length, 1);
- var entries = getInternalParamsState(this).entries;
- var key = name + '';
- var result = [];
- var index = 0;
- for (; index < entries.length; index++) {
- if (entries[index].key === key) result.push(entries[index].value);
- }
- return result;
- },
- has: function has(name) {
- validateArgumentsLength(arguments.length, 1);
- var entries = getInternalParamsState(this).entries;
- var key = name + '';
- var index = 0;
- while (index < entries.length) {
- if (entries[index++].key === key) return true;
- }
- return false;
- },
- set: function set(name, value) {
- validateArgumentsLength(arguments.length, 1);
- var state = getInternalParamsState(this);
- var entries = state.entries;
- var found = false;
- var key = name + '';
- var val = value + '';
- var index = 0;
- var entry;
- for (; index < entries.length; index++) {
- entry = entries[index];
- if (entry.key === key) {
- if (found) entries.splice(index--, 1);
- else {
- found = true;
- entry.value = val;
- }
- }
- }
- if (!found) entries.push({ key: key, value: val });
- state.updateURL();
- },
- sort: function sort() {
- var state = getInternalParamsState(this);
- var entries = state.entries;
- var slice = entries.slice();
- var entry, entriesIndex, sliceIndex;
- entries.length = 0;
- for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {
- entry = slice[sliceIndex];
- for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {
- if (entries[entriesIndex].key > entry.key) {
- entries.splice(entriesIndex, 0, entry);
- break;
- }
- }
- if (entriesIndex === sliceIndex) entries.push(entry);
- }
- state.updateURL();
- },
- forEach: function forEach(callback ) {
- var entries = getInternalParamsState(this).entries;
- var boundFunction = functionBindContext(callback, arguments.length > 1 ? arguments[1] : undefined, 3);
- var index = 0;
- var entry;
- while (index < entries.length) {
- entry = entries[index++];
- boundFunction(entry.value, entry.key, this);
- }
- },
- keys: function keys() {
- return new URLSearchParamsIterator(this, 'keys');
- },
- values: function values() {
- return new URLSearchParamsIterator(this, 'values');
- },
- entries: function entries() {
- return new URLSearchParamsIterator(this, 'entries');
- }
- }, { enumerable: true });
- redefine(URLSearchParamsPrototype, ITERATOR$8, URLSearchParamsPrototype.entries);
- redefine(URLSearchParamsPrototype, 'toString', function toString() {
- var entries = getInternalParamsState(this).entries;
- var result = [];
- var index = 0;
- var entry;
- while (index < entries.length) {
- entry = entries[index++];
- result.push(serialize(entry.key) + '=' + serialize(entry.value));
- } return result.join('&');
- }, { enumerable: true });
- setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);
- _export({ global: true, forced: !nativeUrl }, {
- URLSearchParams: URLSearchParamsConstructor
- });
- if (!nativeUrl && typeof $fetch$1 == 'function' && typeof Headers == 'function') {
- _export({ global: true, enumerable: true, forced: true }, {
- fetch: function fetch(input ) {
- var args = [input];
- var init, body, headers;
- if (arguments.length > 1) {
- init = arguments[1];
- if (isObject(init)) {
- body = init.body;
- if (classof(body) === URL_SEARCH_PARAMS) {
- headers = init.headers ? new Headers(init.headers) : new Headers();
- if (!headers.has('content-type')) {
- headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
- }
- init = objectCreate(init, {
- body: createPropertyDescriptor(0, String(body)),
- headers: createPropertyDescriptor(0, headers)
- });
- }
- }
- args.push(init);
- } return $fetch$1.apply(this, args);
- }
- });
- }
- var web_urlSearchParams = {
- URLSearchParams: URLSearchParamsConstructor,
- getState: getInternalParamsState
- };
-
- var codeAt = stringMultibyte.codeAt;
- var NativeURL = global_1.URL;
- var URLSearchParams$1 = web_urlSearchParams.URLSearchParams;
- var getInternalSearchParamsState = web_urlSearchParams.getState;
- var setInternalState$6 = internalState.set;
- var getInternalURLState = internalState.getterFor('URL');
- var floor$5 = Math.floor;
- var pow$1 = Math.pow;
- var INVALID_AUTHORITY = 'Invalid authority';
- var INVALID_SCHEME = 'Invalid scheme';
- var INVALID_HOST = 'Invalid host';
- var INVALID_PORT = 'Invalid port';
- var ALPHA = /[A-Za-z]/;
- var ALPHANUMERIC = /[\d+-.A-Za-z]/;
- var DIGIT = /\d/;
- var HEX_START = /^(0x|0X)/;
- var OCT = /^[0-7]+$/;
- var DEC = /^\d+$/;
- var HEX = /^[\dA-Fa-f]+$/;
- var FORBIDDEN_HOST_CODE_POINT = /[\u0000\u0009\u000A\u000D #%/:?@[\\]]/;
- var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\u0000\u0009\u000A\u000D #/:?@[\\]]/;
- var LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g;
- var TAB_AND_NEW_LINE = /[\u0009\u000A\u000D]/g;
- var EOF;
- var parseHost = function (url, input) {
- var result, codePoints, index;
- if (input.charAt(0) == '[') {
- if (input.charAt(input.length - 1) != ']') return INVALID_HOST;
- result = parseIPv6(input.slice(1, -1));
- if (!result) return INVALID_HOST;
- url.host = result;
- } else if (!isSpecial(url)) {
- if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;
- result = '';
- codePoints = arrayFrom(input);
- for (index = 0; index < codePoints.length; index++) {
- result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);
- }
- url.host = result;
- } else {
- input = stringPunycodeToAscii(input);
- if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;
- result = parseIPv4(input);
- if (result === null) return INVALID_HOST;
- url.host = result;
- }
- };
- var parseIPv4 = function (input) {
- var parts = input.split('.');
- var partsLength, numbers, index, part, radix, number, ipv4;
- if (parts.length && parts[parts.length - 1] == '') {
- parts.pop();
- }
- partsLength = parts.length;
- if (partsLength > 4) return input;
- numbers = [];
- for (index = 0; index < partsLength; index++) {
- part = parts[index];
- if (part == '') return input;
- radix = 10;
- if (part.length > 1 && part.charAt(0) == '0') {
- radix = HEX_START.test(part) ? 16 : 8;
- part = part.slice(radix == 8 ? 1 : 2);
- }
- if (part === '') {
- number = 0;
- } else {
- if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;
- number = parseInt(part, radix);
- }
- numbers.push(number);
- }
- for (index = 0; index < partsLength; index++) {
- number = numbers[index];
- if (index == partsLength - 1) {
- if (number >= pow$1(256, 5 - partsLength)) return null;
- } else if (number > 255) return null;
- }
- ipv4 = numbers.pop();
- for (index = 0; index < numbers.length; index++) {
- ipv4 += numbers[index] * pow$1(256, 3 - index);
- }
- return ipv4;
- };
- var parseIPv6 = function (input) {
- var address = [0, 0, 0, 0, 0, 0, 0, 0];
- var pieceIndex = 0;
- var compress = null;
- var pointer = 0;
- var value, length, numbersSeen, ipv4Piece, number, swaps, swap;
- var char = function () {
- return input.charAt(pointer);
- };
- if (char() == ':') {
- if (input.charAt(1) != ':') return;
- pointer += 2;
- pieceIndex++;
- compress = pieceIndex;
- }
- while (char()) {
- if (pieceIndex == 8) return;
- if (char() == ':') {
- if (compress !== null) return;
- pointer++;
- pieceIndex++;
- compress = pieceIndex;
- continue;
- }
- value = length = 0;
- while (length < 4 && HEX.test(char())) {
- value = value * 16 + parseInt(char(), 16);
- pointer++;
- length++;
- }
- if (char() == '.') {
- if (length == 0) return;
- pointer -= length;
- if (pieceIndex > 6) return;
- numbersSeen = 0;
- while (char()) {
- ipv4Piece = null;
- if (numbersSeen > 0) {
- if (char() == '.' && numbersSeen < 4) pointer++;
- else return;
- }
- if (!DIGIT.test(char())) return;
- while (DIGIT.test(char())) {
- number = parseInt(char(), 10);
- if (ipv4Piece === null) ipv4Piece = number;
- else if (ipv4Piece == 0) return;
- else ipv4Piece = ipv4Piece * 10 + number;
- if (ipv4Piece > 255) return;
- pointer++;
- }
- address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;
- numbersSeen++;
- if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;
- }
- if (numbersSeen != 4) return;
- break;
- } else if (char() == ':') {
- pointer++;
- if (!char()) return;
- } else if (char()) return;
- address[pieceIndex++] = value;
- }
- if (compress !== null) {
- swaps = pieceIndex - compress;
- pieceIndex = 7;
- while (pieceIndex != 0 && swaps > 0) {
- swap = address[pieceIndex];
- address[pieceIndex--] = address[compress + swaps - 1];
- address[compress + --swaps] = swap;
- }
- } else if (pieceIndex != 8) return;
- return address;
- };
- var findLongestZeroSequence = function (ipv6) {
- var maxIndex = null;
- var maxLength = 1;
- var currStart = null;
- var currLength = 0;
- var index = 0;
- for (; index < 8; index++) {
- if (ipv6[index] !== 0) {
- if (currLength > maxLength) {
- maxIndex = currStart;
- maxLength = currLength;
- }
- currStart = null;
- currLength = 0;
- } else {
- if (currStart === null) currStart = index;
- ++currLength;
- }
- }
- if (currLength > maxLength) {
- maxIndex = currStart;
- maxLength = currLength;
- }
- return maxIndex;
- };
- var serializeHost = function (host) {
- var result, index, compress, ignore0;
- if (typeof host == 'number') {
- result = [];
- for (index = 0; index < 4; index++) {
- result.unshift(host % 256);
- host = floor$5(host / 256);
- } return result.join('.');
- } else if (typeof host == 'object') {
- result = '';
- compress = findLongestZeroSequence(host);
- for (index = 0; index < 8; index++) {
- if (ignore0 && host[index] === 0) continue;
- if (ignore0) ignore0 = false;
- if (compress === index) {
- result += index ? ':' : '::';
- ignore0 = true;
- } else {
- result += host[index].toString(16);
- if (index < 7) result += ':';
- }
- }
- return '[' + result + ']';
- } return host;
- };
- var C0ControlPercentEncodeSet = {};
- var fragmentPercentEncodeSet = objectAssign({}, C0ControlPercentEncodeSet, {
- ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1
- });
- var pathPercentEncodeSet = objectAssign({}, fragmentPercentEncodeSet, {
- '#': 1, '?': 1, '{': 1, '}': 1
- });
- var userinfoPercentEncodeSet = objectAssign({}, pathPercentEncodeSet, {
- '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1
- });
- var percentEncode = function (char, set) {
- var code = codeAt(char, 0);
- return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);
- };
- var specialSchemes = {
- ftp: 21,
- file: null,
- http: 80,
- https: 443,
- ws: 80,
- wss: 443
- };
- var isSpecial = function (url) {
- return has(specialSchemes, url.scheme);
- };
- var includesCredentials = function (url) {
- return url.username != '' || url.password != '';
- };
- var cannotHaveUsernamePasswordPort = function (url) {
- return !url.host || url.cannotBeABaseURL || url.scheme == 'file';
- };
- var isWindowsDriveLetter = function (string, normalized) {
- var second;
- return string.length == 2 && ALPHA.test(string.charAt(0))
- && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));
- };
- var startsWithWindowsDriveLetter = function (string) {
- var third;
- return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (
- string.length == 2 ||
- ((third = string.charAt(2)) === '/' || third === '\\' || third === '?' || third === '#')
- );
- };
- var shortenURLsPath = function (url) {
- var path = url.path;
- var pathSize = path.length;
- if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {
- path.pop();
- }
- };
- var isSingleDot = function (segment) {
- return segment === '.' || segment.toLowerCase() === '%2e';
- };
- var isDoubleDot = function (segment) {
- segment = segment.toLowerCase();
- return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';
- };
- var SCHEME_START = {};
- var SCHEME = {};
- var NO_SCHEME = {};
- var SPECIAL_RELATIVE_OR_AUTHORITY = {};
- var PATH_OR_AUTHORITY = {};
- var RELATIVE = {};
- var RELATIVE_SLASH = {};
- var SPECIAL_AUTHORITY_SLASHES = {};
- var SPECIAL_AUTHORITY_IGNORE_SLASHES = {};
- var AUTHORITY = {};
- var HOST = {};
- var HOSTNAME = {};
- var PORT = {};
- var FILE = {};
- var FILE_SLASH = {};
- var FILE_HOST = {};
- var PATH_START = {};
- var PATH = {};
- var CANNOT_BE_A_BASE_URL_PATH = {};
- var QUERY = {};
- var FRAGMENT = {};
- var parseURL = function (url, input, stateOverride, base) {
- var state = stateOverride || SCHEME_START;
- var pointer = 0;
- var buffer = '';
- var seenAt = false;
- var seenBracket = false;
- var seenPasswordToken = false;
- var codePoints, char, bufferCodePoints, failure;
- if (!stateOverride) {
- url.scheme = '';
- url.username = '';
- url.password = '';
- url.host = null;
- url.port = null;
- url.path = [];
- url.query = null;
- url.fragment = null;
- url.cannotBeABaseURL = false;
- input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');
- }
- input = input.replace(TAB_AND_NEW_LINE, '');
- codePoints = arrayFrom(input);
- while (pointer <= codePoints.length) {
- char = codePoints[pointer];
- switch (state) {
- case SCHEME_START:
- if (char && ALPHA.test(char)) {
- buffer += char.toLowerCase();
- state = SCHEME;
- } else if (!stateOverride) {
- state = NO_SCHEME;
- continue;
- } else return INVALID_SCHEME;
- break;
- case SCHEME:
- if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {
- buffer += char.toLowerCase();
- } else if (char == ':') {
- if (stateOverride && (
- (isSpecial(url) != has(specialSchemes, buffer)) ||
- (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||
- (url.scheme == 'file' && !url.host)
- )) return;
- url.scheme = buffer;
- if (stateOverride) {
- if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;
- return;
- }
- buffer = '';
- if (url.scheme == 'file') {
- state = FILE;
- } else if (isSpecial(url) && base && base.scheme == url.scheme) {
- state = SPECIAL_RELATIVE_OR_AUTHORITY;
- } else if (isSpecial(url)) {
- state = SPECIAL_AUTHORITY_SLASHES;
- } else if (codePoints[pointer + 1] == '/') {
- state = PATH_OR_AUTHORITY;
- pointer++;
- } else {
- url.cannotBeABaseURL = true;
- url.path.push('');
- state = CANNOT_BE_A_BASE_URL_PATH;
- }
- } else if (!stateOverride) {
- buffer = '';
- state = NO_SCHEME;
- pointer = 0;
- continue;
- } else return INVALID_SCHEME;
- break;
- case NO_SCHEME:
- if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;
- if (base.cannotBeABaseURL && char == '#') {
- url.scheme = base.scheme;
- url.path = base.path.slice();
- url.query = base.query;
- url.fragment = '';
- url.cannotBeABaseURL = true;
- state = FRAGMENT;
- break;
- }
- state = base.scheme == 'file' ? FILE : RELATIVE;
- continue;
- case SPECIAL_RELATIVE_OR_AUTHORITY:
- if (char == '/' && codePoints[pointer + 1] == '/') {
- state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
- pointer++;
- } else {
- state = RELATIVE;
- continue;
- } break;
- case PATH_OR_AUTHORITY:
- if (char == '/') {
- state = AUTHORITY;
- break;
- } else {
- state = PATH;
- continue;
- }
- case RELATIVE:
- url.scheme = base.scheme;
- if (char == EOF) {
- url.username = base.username;
- url.password = base.password;
- url.host = base.host;
- url.port = base.port;
- url.path = base.path.slice();
- url.query = base.query;
- } else if (char == '/' || (char == '\\' && isSpecial(url))) {
- state = RELATIVE_SLASH;
- } else if (char == '?') {
- url.username = base.username;
- url.password = base.password;
- url.host = base.host;
- url.port = base.port;
- url.path = base.path.slice();
- url.query = '';
- state = QUERY;
- } else if (char == '#') {
- url.username = base.username;
- url.password = base.password;
- url.host = base.host;
- url.port = base.port;
- url.path = base.path.slice();
- url.query = base.query;
- url.fragment = '';
- state = FRAGMENT;
- } else {
- url.username = base.username;
- url.password = base.password;
- url.host = base.host;
- url.port = base.port;
- url.path = base.path.slice();
- url.path.pop();
- state = PATH;
- continue;
- } break;
- case RELATIVE_SLASH:
- if (isSpecial(url) && (char == '/' || char == '\\')) {
- state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
- } else if (char == '/') {
- state = AUTHORITY;
- } else {
- url.username = base.username;
- url.password = base.password;
- url.host = base.host;
- url.port = base.port;
- state = PATH;
- continue;
- } break;
- case SPECIAL_AUTHORITY_SLASHES:
- state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
- if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;
- pointer++;
- break;
- case SPECIAL_AUTHORITY_IGNORE_SLASHES:
- if (char != '/' && char != '\\') {
- state = AUTHORITY;
- continue;
- } break;
- case AUTHORITY:
- if (char == '@') {
- if (seenAt) buffer = '%40' + buffer;
- seenAt = true;
- bufferCodePoints = arrayFrom(buffer);
- for (var i = 0; i < bufferCodePoints.length; i++) {
- var codePoint = bufferCodePoints[i];
- if (codePoint == ':' && !seenPasswordToken) {
- seenPasswordToken = true;
- continue;
- }
- var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);
- if (seenPasswordToken) url.password += encodedCodePoints;
- else url.username += encodedCodePoints;
- }
- buffer = '';
- } else if (
- char == EOF || char == '/' || char == '?' || char == '#' ||
- (char == '\\' && isSpecial(url))
- ) {
- if (seenAt && buffer == '') return INVALID_AUTHORITY;
- pointer -= arrayFrom(buffer).length + 1;
- buffer = '';
- state = HOST;
- } else buffer += char;
- break;
- case HOST:
- case HOSTNAME:
- if (stateOverride && url.scheme == 'file') {
- state = FILE_HOST;
- continue;
- } else if (char == ':' && !seenBracket) {
- if (buffer == '') return INVALID_HOST;
- failure = parseHost(url, buffer);
- if (failure) return failure;
- buffer = '';
- state = PORT;
- if (stateOverride == HOSTNAME) return;
- } else if (
- char == EOF || char == '/' || char == '?' || char == '#' ||
- (char == '\\' && isSpecial(url))
- ) {
- if (isSpecial(url) && buffer == '') return INVALID_HOST;
- if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;
- failure = parseHost(url, buffer);
- if (failure) return failure;
- buffer = '';
- state = PATH_START;
- if (stateOverride) return;
- continue;
- } else {
- if (char == '[') seenBracket = true;
- else if (char == ']') seenBracket = false;
- buffer += char;
- } break;
- case PORT:
- if (DIGIT.test(char)) {
- buffer += char;
- } else if (
- char == EOF || char == '/' || char == '?' || char == '#' ||
- (char == '\\' && isSpecial(url)) ||
- stateOverride
- ) {
- if (buffer != '') {
- var port = parseInt(buffer, 10);
- if (port > 0xFFFF) return INVALID_PORT;
- url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;
- buffer = '';
- }
- if (stateOverride) return;
- state = PATH_START;
- continue;
- } else return INVALID_PORT;
- break;
- case FILE:
- url.scheme = 'file';
- if (char == '/' || char == '\\') state = FILE_SLASH;
- else if (base && base.scheme == 'file') {
- if (char == EOF) {
- url.host = base.host;
- url.path = base.path.slice();
- url.query = base.query;
- } else if (char == '?') {
- url.host = base.host;
- url.path = base.path.slice();
- url.query = '';
- state = QUERY;
- } else if (char == '#') {
- url.host = base.host;
- url.path = base.path.slice();
- url.query = base.query;
- url.fragment = '';
- state = FRAGMENT;
- } else {
- if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {
- url.host = base.host;
- url.path = base.path.slice();
- shortenURLsPath(url);
- }
- state = PATH;
- continue;
- }
- } else {
- state = PATH;
- continue;
- } break;
- case FILE_SLASH:
- if (char == '/' || char == '\\') {
- state = FILE_HOST;
- break;
- }
- if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {
- if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);
- else url.host = base.host;
- }
- state = PATH;
- continue;
- case FILE_HOST:
- if (char == EOF || char == '/' || char == '\\' || char == '?' || char == '#') {
- if (!stateOverride && isWindowsDriveLetter(buffer)) {
- state = PATH;
- } else if (buffer == '') {
- url.host = '';
- if (stateOverride) return;
- state = PATH_START;
- } else {
- failure = parseHost(url, buffer);
- if (failure) return failure;
- if (url.host == 'localhost') url.host = '';
- if (stateOverride) return;
- buffer = '';
- state = PATH_START;
- } continue;
- } else buffer += char;
- break;
- case PATH_START:
- if (isSpecial(url)) {
- state = PATH;
- if (char != '/' && char != '\\') continue;
- } else if (!stateOverride && char == '?') {
- url.query = '';
- state = QUERY;
- } else if (!stateOverride && char == '#') {
- url.fragment = '';
- state = FRAGMENT;
- } else if (char != EOF) {
- state = PATH;
- if (char != '/') continue;
- } break;
- case PATH:
- if (
- char == EOF || char == '/' ||
- (char == '\\' && isSpecial(url)) ||
- (!stateOverride && (char == '?' || char == '#'))
- ) {
- if (isDoubleDot(buffer)) {
- shortenURLsPath(url);
- if (char != '/' && !(char == '\\' && isSpecial(url))) {
- url.path.push('');
- }
- } else if (isSingleDot(buffer)) {
- if (char != '/' && !(char == '\\' && isSpecial(url))) {
- url.path.push('');
- }
- } else {
- if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {
- if (url.host) url.host = '';
- buffer = buffer.charAt(0) + ':';
- }
- url.path.push(buffer);
- }
- buffer = '';
- if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {
- while (url.path.length > 1 && url.path[0] === '') {
- url.path.shift();
- }
- }
- if (char == '?') {
- url.query = '';
- state = QUERY;
- } else if (char == '#') {
- url.fragment = '';
- state = FRAGMENT;
- }
- } else {
- buffer += percentEncode(char, pathPercentEncodeSet);
- } break;
- case CANNOT_BE_A_BASE_URL_PATH:
- if (char == '?') {
- url.query = '';
- state = QUERY;
- } else if (char == '#') {
- url.fragment = '';
- state = FRAGMENT;
- } else if (char != EOF) {
- url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);
- } break;
- case QUERY:
- if (!stateOverride && char == '#') {
- url.fragment = '';
- state = FRAGMENT;
- } else if (char != EOF) {
- if (char == "'" && isSpecial(url)) url.query += '%27';
- else if (char == '#') url.query += '%23';
- else url.query += percentEncode(char, C0ControlPercentEncodeSet);
- } break;
- case FRAGMENT:
- if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);
- break;
- }
- pointer++;
- }
- };
- var URLConstructor = function URL(url ) {
- var that = anInstance(this, URLConstructor, 'URL');
- var base = arguments.length > 1 ? arguments[1] : undefined;
- var urlString = String(url);
- var state = setInternalState$6(that, { type: 'URL' });
- var baseState, failure;
- if (base !== undefined) {
- if (base instanceof URLConstructor) baseState = getInternalURLState(base);
- else {
- failure = parseURL(baseState = {}, String(base));
- if (failure) throw TypeError(failure);
- }
- }
- failure = parseURL(state, urlString, null, baseState);
- if (failure) throw TypeError(failure);
- var searchParams = state.searchParams = new URLSearchParams$1();
- var searchParamsState = getInternalSearchParamsState(searchParams);
- searchParamsState.updateSearchParams(state.query);
- searchParamsState.updateURL = function () {
- state.query = String(searchParams) || null;
- };
- if (!descriptors) {
- that.href = serializeURL.call(that);
- that.origin = getOrigin.call(that);
- that.protocol = getProtocol.call(that);
- that.username = getUsername.call(that);
- that.password = getPassword.call(that);
- that.host = getHost.call(that);
- that.hostname = getHostname.call(that);
- that.port = getPort.call(that);
- that.pathname = getPathname.call(that);
- that.search = getSearch.call(that);
- that.searchParams = getSearchParams.call(that);
- that.hash = getHash.call(that);
- }
- };
- var URLPrototype = URLConstructor.prototype;
- var serializeURL = function () {
- var url = getInternalURLState(this);
- var scheme = url.scheme;
- var username = url.username;
- var password = url.password;
- var host = url.host;
- var port = url.port;
- var path = url.path;
- var query = url.query;
- var fragment = url.fragment;
- var output = scheme + ':';
- if (host !== null) {
- output += '//';
- if (includesCredentials(url)) {
- output += username + (password ? ':' + password : '') + '@';
- }
- output += serializeHost(host);
- if (port !== null) output += ':' + port;
- } else if (scheme == 'file') output += '//';
- output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';
- if (query !== null) output += '?' + query;
- if (fragment !== null) output += '#' + fragment;
- return output;
- };
- var getOrigin = function () {
- var url = getInternalURLState(this);
- var scheme = url.scheme;
- var port = url.port;
- if (scheme == 'blob') try {
- return new URL(scheme.path[0]).origin;
- } catch (error) {
- return 'null';
- }
- if (scheme == 'file' || !isSpecial(url)) return 'null';
- return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');
- };
- var getProtocol = function () {
- return getInternalURLState(this).scheme + ':';
- };
- var getUsername = function () {
- return getInternalURLState(this).username;
- };
- var getPassword = function () {
- return getInternalURLState(this).password;
- };
- var getHost = function () {
- var url = getInternalURLState(this);
- var host = url.host;
- var port = url.port;
- return host === null ? ''
- : port === null ? serializeHost(host)
- : serializeHost(host) + ':' + port;
- };
- var getHostname = function () {
- var host = getInternalURLState(this).host;
- return host === null ? '' : serializeHost(host);
- };
- var getPort = function () {
- var port = getInternalURLState(this).port;
- return port === null ? '' : String(port);
- };
- var getPathname = function () {
- var url = getInternalURLState(this);
- var path = url.path;
- return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';
- };
- var getSearch = function () {
- var query = getInternalURLState(this).query;
- return query ? '?' + query : '';
- };
- var getSearchParams = function () {
- return getInternalURLState(this).searchParams;
- };
- var getHash = function () {
- var fragment = getInternalURLState(this).fragment;
- return fragment ? '#' + fragment : '';
- };
- var accessorDescriptor = function (getter, setter) {
- return { get: getter, set: setter, configurable: true, enumerable: true };
- };
- if (descriptors) {
- objectDefineProperties(URLPrototype, {
- href: accessorDescriptor(serializeURL, function (href) {
- var url = getInternalURLState(this);
- var urlString = String(href);
- var failure = parseURL(url, urlString);
- if (failure) throw TypeError(failure);
- getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);
- }),
- origin: accessorDescriptor(getOrigin),
- protocol: accessorDescriptor(getProtocol, function (protocol) {
- var url = getInternalURLState(this);
- parseURL(url, String(protocol) + ':', SCHEME_START);
- }),
- username: accessorDescriptor(getUsername, function (username) {
- var url = getInternalURLState(this);
- var codePoints = arrayFrom(String(username));
- if (cannotHaveUsernamePasswordPort(url)) return;
- url.username = '';
- for (var i = 0; i < codePoints.length; i++) {
- url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);
- }
- }),
- password: accessorDescriptor(getPassword, function (password) {
- var url = getInternalURLState(this);
- var codePoints = arrayFrom(String(password));
- if (cannotHaveUsernamePasswordPort(url)) return;
- url.password = '';
- for (var i = 0; i < codePoints.length; i++) {
- url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);
- }
- }),
- host: accessorDescriptor(getHost, function (host) {
- var url = getInternalURLState(this);
- if (url.cannotBeABaseURL) return;
- parseURL(url, String(host), HOST);
- }),
- hostname: accessorDescriptor(getHostname, function (hostname) {
- var url = getInternalURLState(this);
- if (url.cannotBeABaseURL) return;
- parseURL(url, String(hostname), HOSTNAME);
- }),
- port: accessorDescriptor(getPort, function (port) {
- var url = getInternalURLState(this);
- if (cannotHaveUsernamePasswordPort(url)) return;
- port = String(port);
- if (port == '') url.port = null;
- else parseURL(url, port, PORT);
- }),
- pathname: accessorDescriptor(getPathname, function (pathname) {
- var url = getInternalURLState(this);
- if (url.cannotBeABaseURL) return;
- url.path = [];
- parseURL(url, pathname + '', PATH_START);
- }),
- search: accessorDescriptor(getSearch, function (search) {
- var url = getInternalURLState(this);
- search = String(search);
- if (search == '') {
- url.query = null;
- } else {
- if ('?' == search.charAt(0)) search = search.slice(1);
- url.query = '';
- parseURL(url, search, QUERY);
- }
- getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);
- }),
- searchParams: accessorDescriptor(getSearchParams),
- hash: accessorDescriptor(getHash, function (hash) {
- var url = getInternalURLState(this);
- hash = String(hash);
- if (hash == '') {
- url.fragment = null;
- return;
- }
- if ('#' == hash.charAt(0)) hash = hash.slice(1);
- url.fragment = '';
- parseURL(url, hash, FRAGMENT);
- })
- });
- }
- redefine(URLPrototype, 'toJSON', function toJSON() {
- return serializeURL.call(this);
- }, { enumerable: true });
- redefine(URLPrototype, 'toString', function toString() {
- return serializeURL.call(this);
- }, { enumerable: true });
- if (NativeURL) {
- var nativeCreateObjectURL = NativeURL.createObjectURL;
- var nativeRevokeObjectURL = NativeURL.revokeObjectURL;
- if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {
- return nativeCreateObjectURL.apply(NativeURL, arguments);
- });
- if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {
- return nativeRevokeObjectURL.apply(NativeURL, arguments);
- });
- }
- setToStringTag(URLConstructor, 'URL');
- _export({ global: true, forced: !nativeUrl, sham: !descriptors }, {
- URL: URLConstructor
- });
-
- var global$1="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||"undefined"!=typeof global$1&&global$1,support={searchParams:"URLSearchParams"in global$1,iterable:"Symbol"in global$1&&"iterator"in Symbol,blob:"FileReader"in global$1&&"Blob"in global$1&&function(){try{return new Blob,!0}catch(a){return !1}}(),formData:"FormData"in global$1,arrayBuffer:"ArrayBuffer"in global$1};function isDataView(a){return a&&DataView.prototype.isPrototypeOf(a)}if(support.arrayBuffer)var viewClasses=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],isArrayBufferView=ArrayBuffer.isView||function(a){return a&&-1this.status,this.statusText="statusText"in b?b.statusText:"",this.headers=new Headers$1(b.headers),this.url=b.url||"",this._initBody(a);}Body.call(Response.prototype),Response.prototype.clone=function(){return new Response(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new Headers$1(this.headers),url:this.url})},Response.error=function(){var a=new Response(null,{status:0,statusText:""});return a.type="error",a};var redirectStatuses=[301,302,303,307,308];Response.redirect=function(a,b){if(-1===redirectStatuses.indexOf(b))throw new RangeError("Invalid status code");return new Response(null,{status:b,headers:{location:a}})};var DOMException=global$1.DOMException;try{new DOMException;}catch(a){DOMException=function(a,b){this.message=a,this.name=b;var c=Error(a);this.stack=c.stack;},DOMException.prototype=Object.create(Error.prototype),DOMException.prototype.constructor=DOMException;}function fetch$1(a,b){return new Promise(function(c,d){function e(){g.abort();}var f=new Request(a,b);if(f.signal&&f.signal.aborted)return d(new DOMException("Aborted","AbortError"));var g=new XMLHttpRequest;g.onload=function(){var a={status:g.status,statusText:g.statusText,headers:parseHeaders(g.getAllResponseHeaders()||"")};a.url="responseURL"in g?g.responseURL:a.headers.get("X-Request-URL");var b="response"in g?g.response:g.responseText;setTimeout(function(){c(new Response(b,a));},0);},g.onerror=function(){setTimeout(function(){d(new TypeError("Network request failed"));},0);},g.ontimeout=function(){setTimeout(function(){d(new TypeError("Network request failed"));},0);},g.onabort=function(){setTimeout(function(){d(new DOMException("Aborted","AbortError"));},0);},g.open(f.method,function(a){try{return ""===a&&global$1.location.href?global$1.location.href:a}catch(b){return a}}(f.url),!0),"include"===f.credentials?g.withCredentials=!0:"omit"===f.credentials&&(g.withCredentials=!1),"responseType"in g&&(support.blob?g.responseType="blob":support.arrayBuffer&&f.headers.get("Content-Type")&&-1!==f.headers.get("Content-Type").indexOf("application/octet-stream")&&(g.responseType="arraybuffer")),b&&"object"===_typeof_1(b.headers)&&!(b.headers instanceof Headers$1)?Object.getOwnPropertyNames(b.headers).forEach(function(a){g.setRequestHeader(a,normalizeValue(b.headers[a]));}):f.headers.forEach(function(a,b){g.setRequestHeader(b,a);}),f.signal&&(f.signal.addEventListener("abort",e),g.onreadystatechange=function(){4===g.readyState&&f.signal.removeEventListener("abort",e);}),g.send("undefined"==typeof f._bodyInit?null:f._bodyInit);})}fetch$1.polyfill=!0,global$1.fetch||(global$1.fetch=fetch$1,global$1.Headers=Headers$1,global$1.Request=Request,global$1.Response=Response);
-
- var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
- var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
- var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
- var IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function () {
- var array = [];
- array[IS_CONCAT_SPREADABLE] = false;
- return array.concat()[0] !== array;
- });
- var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');
- var isConcatSpreadable = function (O) {
- if (!isObject(O)) return false;
- var spreadable = O[IS_CONCAT_SPREADABLE];
- return spreadable !== undefined ? !!spreadable : isArray(O);
- };
- var FORCED$5 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
- _export({ target: 'Array', proto: true, forced: FORCED$5 }, {
- concat: function concat(arg) {
- var O = toObject(this);
- var A = arraySpeciesCreate(O, 0);
- var n = 0;
- var i, k, length, len, E;
- for (i = -1, length = arguments.length; i < length; i++) {
- E = i === -1 ? O : arguments[i];
- if (isConcatSpreadable(E)) {
- len = toLength(E.length);
- if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
- for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
- } else {
- if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
- createProperty(A, n++, E);
- }
- }
- A.length = n;
- return A;
- }
- });
-
- var timeoutSeconds=45,timeoutMilliseconds=45000;/**
- * After 45 seconds, display a warning, unless cancelled by clearing this timeout once the UI is updated and the iframe is loaded.
- */var timeoutWarning=setTimeout(function(){updateLoaderWarning("Preview is taking a very long time to load (more than ".concat(timeoutSeconds," seconds). Try pressing \"preview\" again from the WordPress edit screen. If you see this again, your preview builds are either slow or there's something wrong."));},timeoutMilliseconds);function showError(a){"string"==typeof a&&(a={message:a});var b=document.getElementById("preview");b.style.display="none";var c=document.getElementById("loader");c.style.display="none";var d=document.getElementById("error-message-element");d.textContent=a.message;var e=document.querySelector(".content.error");if(e.style.display="block",!!("remoteStatus"in a))switch(a.remoteStatus){case"NO_PAGE_CREATED_FOR_PREVIEWED_NODE":updateTroubleshootingMessage("\n\t\t\tGatsby wasn't able to find a page for the post you're trying to preview. This can mean one of three things:\n\t\t\t
\n\t\t\t\n\t\t\t\t A page is not being built for the post being previewed. \n\t\t\t\t The id of this post is not being included in the pageContext of it's Gatsby page. \n\t\t\t\t An error was thrown in Gatsby during Preview sourcing (check your logs). \n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\tHint: if you want to account for any possible post type (even those that haven't yet been registered) you can use the WpContentNode interface as a fallback template in gatsby-node.js when you're creating pages and you'll never see this message when registering new post types.\t\t\t\n\t\t");break;case"GATSBY_PREVIEW_PROCESS_ERROR":updateTroubleshootingMessage("\n\t\t\t\tThe Gatsby Preview process errored while sourcing this preview. Please check your error logs for additional information.\t\t\n\t\t\t");break;case"RECEIVED_PREVIEW_DATA_FROM_WRONG_URL":updateTroubleshootingMessage("\n\t\t\t\tThe Gatsby instance this WP site is configured to send Previews to is configured to receive source data from a different WordPress instance. Please check your gatsby-config.js and WPGatsby settings to ensure the WordPress instance URL's match up.\t\t\t\n\t\t\t");break;}}function updateTroubleshootingMessage(a){var b=document.getElementById("troubleshooting-html-area");b.innerHTML="\n\t\t
".concat(a).concat(" If you're not a developer, please screenshot this page and send it to your developer.Note: Once this error is fixed, you'll need to press \"preview\" again to clear out this message.","
\t\t\t\n\t");}function updateLoaderWarning(a){var b=document.getElementById("preview-loader-warning");b.innerHTML="".concat(a,"Cancel and Troubleshoot "),b.style.display="initial";var c=document.getElementById("cancel-button");c.addEventListener("keypress",function(a){"Enter"===a.key&&cancelPreviewLoader();}),c.addEventListener("click",cancelPreviewLoader);}function cancelPreviewLoader(){showError("Preview was cancelled.");}
-
- var $includes$1 = arrayIncludes.includes;
- var USES_TO_LENGTH$5 = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
- _export({ target: 'Array', proto: true, forced: !USES_TO_LENGTH$5 }, {
- includes: function includes(el ) {
- return $includes$1(this, el, arguments.length > 1 ? arguments[1] : undefined);
- }
- });
- addToUnscopables('includes');
-
- var previewFrontendIsOnlineQuery=/* GraphQL */"\n\tquery PREVIEW_FRONTEND_IS_ONLINE {\n\t\twpGatsby {\n\t\t\tisPreviewFrontendOnline\n\t\t}\n\t}\n",previewStatusQuery=/* GraphQL */"\n\tquery PREVIEW_STATUS_QUERY($postId: Float!) {\n\t\twpGatsby {\n\t\t\tgatsbyPreviewStatus(nodeId: $postId) {\n\t\t\t\tpageNode {\n\t\t\t\t\tpath\n\t\t\t\t}\n\t\t\t\tstatusType\n\t\t\t\tremoteStatus\n\t\t\t\tstatusContext\n\t\t\t}\n\t\t}\n\t}\n",remoteStatuses=["NO_PAGE_CREATED_FOR_PREVIEWED_NODE","GATSBY_PREVIEW_PROCESS_ERROR","RECEIVED_PREVIEW_DATA_FROM_WRONG_URL"];/**
- * This function checks the preview status that Gatsby has stored in post meta for
- * the parent post of this preview
- * When the preview is ready, it calls onPreviewReadyUpdateUI() which updates the UI
- *
- * If a status besides PREVIEW_READY comes back, we wait a bit and try again
- *
- * This function doesn't return anything
- */function fetchPreviewStatusAndUpdateUI(){return _fetchPreviewStatusAndUpdateUI.apply(this,arguments)}function _fetchPreviewStatusAndUpdateUI(){return _fetchPreviewStatusAndUpdateUI=asyncToGenerator(/*#__PURE__*/regenerator.mark(function a(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s=arguments;return regenerator.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return d=0frontendOnlineCheckCount)){a.next=17;break}return console.log("frontend not online.. rechecking"),frontendOnlineCheckCount++,a.next=13,new Promise(function(a){return setTimeout(a,1e3)});case 13:return a.next=15,doubleCheckIfPreviewFrontendIsOnline();case 15:a.next=18;break;case 17:throw Error("The Gatsby Preview frontend is not responding to requests.");case 18:case"end":return a.stop();}},a)})),_doubleCheckIfPreviewFrontendIsOnline.apply(this,arguments)}
-
- start().catch(function(a){console.error(a),"complete"===document.readyState?showError(a):document.addEventListener("DOMContentLoaded",function(){showError(a);});});function start(){return _start.apply(this,arguments)}function _start(){return _start=asyncToGenerator(/*#__PURE__*/regenerator.mark(function a(){return regenerator.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(!initialState.previewWebhookIsOnline){a.next=5;break}return a.next=3,fetchPreviewStatusAndUpdateUI();case 3:a.next=7;break;case 5:return a.next=7,doubleCheckIfPreviewFrontendIsOnline();case 7:case"end":return a.stop();}},a)})),_start.apply(this,arguments)}
-
-}());
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1jbGllbnQuanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1nbG9iYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wYXRoLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3duLWtleXMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC13cmFwcGVkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWZ1bmN0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24uanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmRlc2NyaXB0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5pdGVyYXRvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLnRvLXN0cmluZy10YWcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1tZXRob2QtdXNlcy10by1sZW5ndGguanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZm9yLWVhY2guanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZvci1lYWNoLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3Rvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtaXRlcmF0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZXZlcnNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmpzb24udG8tc3RyaW5nLXRhZy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC50by1zdHJpbmctdGFnLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS1wcm9taXNlLWNvbnN0cnVjdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZGVmaW5lLWFsbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc3BlY2llcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1pbnN0YW5jZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jbG9zZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdGFzay5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9taWNyb3Rhc2suanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20taXRlcmFibGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvci9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluZGV4LW9mLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLW5hdGl2ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZWVlNzU0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZpbGwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIuY29uc3RydWN0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LWJ1ZmZlci5zbGljZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1yZWdleHAuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zcGxpdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93aGl0ZXNwYWNlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctdHJpbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctdHJpbS1mb3JjZWQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3JzLXJlcXVpcmUtd3JhcHBlcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcG9zaXRpdmUtaW50ZWdlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vZmZzZXQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktZnJvbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS51aW50OC1hcnJheS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1jb3B5LXdpdGhpbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuY29weS13aXRoaW4uanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmV2ZXJ5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5maWxsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5maWx0ZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZpbmQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZpbmQtaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZvci1lYWNoLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5pbmNsdWRlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuaW5kZXgtb2YuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5Lml0ZXJhdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5qb2luLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWxhc3QtaW5kZXgtb2YuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5Lmxhc3QtaW5kZXgtb2YuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5Lm1hcC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1yZWR1Y2UuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnJlZHVjZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkucmVkdWNlLXJpZ2h0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5yZXZlcnNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zZXQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnNsaWNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zb21lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zb3J0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zdWJhcnJheS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudG8tbG9jYWxlLXN0cmluZy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudG8tc3RyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS11cmwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWFzc2lnbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1mcm9tLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1wdW55Y29kZS10by1hc2NpaS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5qcyIsIi4uL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyIsIi4uL3NyYy9lcnJvci13YXJuaW5nLnRzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcy5qcyIsIi4uL3NyYy9wcmV2aWV3LXN0YXR1cy50cyIsIi4uL3NyYy9zdGFydC1wcmV2aWV3LWNsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICFuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciBzcGxpdCA9ICcnLnNwbGl0O1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICByZXR1cm4gIU9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09ICdTdHJpbmcnID8gc3BsaXQuY2FsbChpdCwgJycpIDogT2JqZWN0KGl0KTtcbn0gOiBPYmplY3Q7XG4iLCIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxuLy8gYFRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBQUkVGRVJSRURfU1RSSU5HKSB7XG4gIGlmICghaXNPYmplY3QoaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUFJFRkVSUkVEX1NUUklORyAmJiB0eXBlb2YgKGZuID0gaW5wdXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpbnB1dC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUFJFRkVSUkVEX1NUUklORyAmJiB0eXBlb2YgKGZuID0gaW5wdXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9IDc7XG59KTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbnZhciBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhcyhPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcblxudmFyIG5hdGl2ZURlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGdsb2JhbCwga2V5LCB2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBzZXRHbG9iYWwoU0hBUkVELCB7fSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmU7XG4iLCJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gRnVuY3Rpb24udG9TdHJpbmc7XG5cbi8vIHRoaXMgaGVscGVyIGJyb2tlbiBpbiBgMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAodHlwZW9mIHN0b3JlLmluc3BlY3RTb3VyY2UgIT0gJ2Z1bmN0aW9uJykge1xuICBzdG9yZS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9TdHJpbmcuY2FsbChpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChpbnNwZWN0U291cmNlKFdlYWtNYXApKTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCJ2YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy43LjAnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMjAgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsInZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgU3RyaW5nKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArICgrK2lkICsgcG9zdGZpeCkudG9TdHJpbmcoMzYpO1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJ2YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgb2JqZWN0SGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVApIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgdmFyIHdtZ2V0ID0gc3RvcmUuZ2V0O1xuICB2YXIgd21oYXMgPSBzdG9yZS5oYXM7XG4gIHZhciB3bXNldCA9IHN0b3JlLnNldDtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHdtc2V0LmNhbGwoc3RvcmUsIGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21nZXQuY2FsbChzdG9yZSwgaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21oYXMuY2FsbChzdG9yZSwgaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIG9iamVjdEhhcyhpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdW5zYWZlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy51bnNhZmUgOiBmYWxzZTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMuZW51bWVyYWJsZSA6IGZhbHNlO1xuICB2YXIgbm9UYXJnZXRHZXQgPSBvcHRpb25zID8gISFvcHRpb25zLm5vVGFyZ2V0R2V0IDogZmFsc2U7XG4gIHZhciBzdGF0ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgJiYgIWhhcyh2YWx1ZSwgJ25hbWUnKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIGtleSk7XG4gICAgfVxuICAgIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICAgIGlmICghc3RhdGUuc291cmNlKSB7XG4gICAgICBzdGF0ZS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAnJyk7XG4gICAgfVxuICB9XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIHNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gIH0gZWxzZSBpZiAoIW5vVGFyZ2V0R2V0ICYmIE9ba2V5XSkge1xuICAgIHNpbXBsZSA9IHRydWU7XG4gIH1cbiAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gIGVsc2UgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdsb2JhbDtcbiIsInZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFyaWFibGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YXJpYWJsZSA9PSAnZnVuY3Rpb24nID8gdmFyaWFibGUgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24ocGF0aFtuYW1lc3BhY2VdKSB8fCBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pXG4gICAgOiBwYXRoW25hbWVzcGFjZV0gJiYgcGF0aFtuYW1lc3BhY2VdW21ldGhvZF0gfHwgZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCJ2YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBUb0ludGVnZXJgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9pbnRlZ2VyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNOYU4oYXJndW1lbnQgPSArYXJndW1lbnQpID8gMCA6IChhcmd1bWVudCA+IDAgPyBmbG9vciA6IGNlaWwpKGFyZ3VtZW50KTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBhcmd1bWVudCA+IDAgPyBtaW4odG9JbnRlZ2VyKGFyZ3VtZW50KSwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsInZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCJ2YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhcyhoaWRkZW5LZXlzLCBrZXkpICYmIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCJleHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzKHRhcmdldCwga2V5KSkgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICB9XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogdHlwZW9mIGRldGVjdGlvbiA9PSAnZnVuY3Rpb24nID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMubm9UYXJnZXRHZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IHNldEdsb2JhbChUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSAoZ2xvYmFsW1RBUkdFVF0gfHwge30pLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLm5vVGFyZ2V0R2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgcmV0dXJuICFTdHJpbmcoU3ltYm9sKCkpO1xufSk7XG4iLCJ2YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgJiYgIVN5bWJvbC5zaGFtXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnO1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxuLy8gYElzQXJyYXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNhcnJheVxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjbGFzc29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG4iLCJ2YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCJ2YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIFByb3BlcnRpZXNba2V5XSk7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xuXG52YXIgR1QgPSAnPic7XG52YXIgTFQgPSAnPCc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgU0NSSVBUID0gJ3NjcmlwdCc7XG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG5cbnZhciBFbXB0eUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG52YXIgc2NyaXB0VGFnID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgcmV0dXJuIExUICsgU0NSSVBUICsgR1QgKyBjb250ZW50ICsgTFQgKyAnLycgKyBTQ1JJUFQgKyBHVDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBBY3RpdmVYIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWCA9IGZ1bmN0aW9uIChhY3RpdmVYRG9jdW1lbnQpIHtcbiAgYWN0aXZlWERvY3VtZW50LndyaXRlKHNjcmlwdFRhZygnJykpO1xuICBhY3RpdmVYRG9jdW1lbnQuY2xvc2UoKTtcbiAgdmFyIHRlbXAgPSBhY3RpdmVYRG9jdW1lbnQucGFyZW50V2luZG93Lk9iamVjdDtcbiAgYWN0aXZlWERvY3VtZW50ID0gbnVsbDsgLy8gYXZvaWQgbWVtb3J5IGxlYWtcbiAgcmV0dXJuIHRlbXA7XG59O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgdmFyIEpTID0gJ2phdmEnICsgU0NSSVBUICsgJzonO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBodG1sLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy80NzVcbiAgaWZyYW1lLnNyYyA9IFN0cmluZyhKUyk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCdkb2N1bWVudC5GPU9iamVjdCcpKTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgcmV0dXJuIGlmcmFtZURvY3VtZW50LkY7XG59O1xuXG4vLyBDaGVjayBmb3IgZG9jdW1lbnQuZG9tYWluIGFuZCBhY3RpdmUgeCBzdXBwb3J0XG4vLyBObyBuZWVkIHRvIHVzZSBhY3RpdmUgeCBhcHByb2FjaCB3aGVuIGRvY3VtZW50LmRvbWFpbiBpcyBub3Qgc2V0XG4vLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzLXNoaW1zL2VzNS1zaGltL2lzc3Vlcy8xNTBcbi8vIHZhcmlhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20va2l0Y2FtYnJpZGdlL2VzNS1zaGltL2NvbW1pdC80ZjczOGFjMDY2MzQ2XG4vLyBhdm9pZCBJRSBHQyBidWdcbnZhciBhY3RpdmVYRG9jdW1lbnQ7XG52YXIgTnVsbFByb3RvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIC8qIGdsb2JhbCBBY3RpdmVYT2JqZWN0ICovXG4gICAgYWN0aXZlWERvY3VtZW50ID0gZG9jdW1lbnQuZG9tYWluICYmIG5ldyBBY3RpdmVYT2JqZWN0KCdodG1sZmlsZScpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBpZ25vcmUgKi8gfVxuICBOdWxsUHJvdG9PYmplY3QgPSBhY3RpdmVYRG9jdW1lbnQgPyBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCkgOiBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUoKTtcbiAgdmFyIGxlbmd0aCA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgTnVsbFByb3RvT2JqZWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbbGVuZ3RoXV07XG4gIHJldHVybiBOdWxsUHJvdG9PYmplY3QoKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcblxuLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5Q29uc3RydWN0b3IoKTtcbiAgICBFbXB0eUNvbnN0cnVjdG9yW1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IE51bGxQcm90b09iamVjdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsInZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBuYXRpdmVHZXRPd25Qcm9wZXJ0eU5hbWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJykuZjtcblxudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzXG4gID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG52YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyhpdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJ1xuICAgID8gZ2V0V2luZG93TmFtZXMoaXQpXG4gICAgOiBuYXRpdmVHZXRPd25Qcm9wZXJ0eU5hbWVzKHRvSW5kZXhlZE9iamVjdChpdCkpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXMoV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSkge1xuICAgIGlmIChOQVRJVkVfU1lNQk9MICYmIGhhcyhTeW1ib2wsIG5hbWUpKSBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBTeW1ib2xbbmFtZV07XG4gICAgZWxzZSBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbmV4cG9ydHMuZiA9IHdlbGxLbm93blN5bWJvbDtcbiIsInZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgd3JhcHBlZFdlbGxLbm93blN5bWJvbE1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC13cmFwcGVkJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUpIHtcbiAgdmFyIFN5bWJvbCA9IHBhdGguU3ltYm9sIHx8IChwYXRoLlN5bWJvbCA9IHt9KTtcbiAgaWYgKCFoYXMoU3ltYm9sLCBOQU1FKSkgZGVmaW5lUHJvcGVydHkoU3ltYm9sLCBOQU1FLCB7XG4gICAgdmFsdWU6IHdyYXBwZWRXZWxsS25vd25TeW1ib2xNb2R1bGUuZihOQU1FKVxuICB9KTtcbn07XG4iLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRBRywgU1RBVElDKSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gU1RBVElDID8gaXQgOiBpdC5wcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoaXQsIFRPX1NUUklOR19UQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogVEFHIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1mdW5jdGlvbicpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQpO1xuICAgIH07XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxuLy8gYEFycmF5U3BlY2llc0NyZWF0ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheXNwZWNpZXNjcmVhdGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsQXJyYXksIGxlbmd0aCkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWxBcnJheSkpIHtcbiAgICBDID0gb3JpZ2luYWxBcnJheS5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgZWxzZSBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBuZXcgKEMgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQykobGVuZ3RoID09PSAwID8gMCA6IGxlbmd0aCk7XG59O1xuIiwidmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjcmVhdGUgPSBzcGVjaWZpY0NyZWF0ZSB8fCBhcnJheVNwZWNpZXNDcmVhdGU7XG4gICAgdmFyIHRhcmdldCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHZhbHVlLCByZXN1bHQ7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWx1ZSA9IHNlbGZbaW5kZXhdO1xuICAgICAgcmVzdWx0ID0gYm91bmRGdW5jdGlvbih2YWx1ZSwgaW5kZXgsIE8pO1xuICAgICAgaWYgKFRZUEUpIHtcbiAgICAgICAgaWYgKElTX01BUCkgdGFyZ2V0W2luZGV4XSA9IHJlc3VsdDsgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWx1ZTsgICAgICAgICAgICAgLy8gZmluZFxuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIGluZGV4OyAgICAgICAgICAgICAvLyBmaW5kSW5kZXhcbiAgICAgICAgICBjYXNlIDI6IHB1c2guY2FsbCh0YXJnZXQsIHZhbHVlKTsgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgIC8vIGV2ZXJ5XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5tYXBcbiAgbWFwOiBjcmVhdGVNZXRob2QoMSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuICBmaWx0ZXI6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kKDMpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmV2ZXJ5XG4gIGV2ZXJ5OiBjcmVhdGVNZXRob2QoNCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg1KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kKDYpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBuYXRpdmVPYmplY3RDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWV4dGVybmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgd3JhcHBlZFdlbGxLbm93blN5bWJvbE1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC13cmFwcGVkJyk7XG52YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZvckVhY2g7XG5cbnZhciBISURERU4gPSBzaGFyZWRLZXkoJ2hpZGRlbicpO1xudmFyIFNZTUJPTCA9ICdTeW1ib2wnO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIFRPX1BSSU1JVElWRSA9IHdlbGxLbm93blN5bWJvbCgndG9QcmltaXRpdmUnKTtcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNZTUJPTCk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0W1BST1RPVFlQRV07XG52YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgJHN0cmluZ2lmeSA9IGdldEJ1aWx0SW4oJ0pTT04nLCAnc3RyaW5naWZ5Jyk7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG52YXIgbmF0aXZlRGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xudmFyIG5hdGl2ZUdldE93blByb3BlcnR5TmFtZXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzRXh0ZXJuYWwuZjtcbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmY7XG52YXIgQWxsU3ltYm9scyA9IHNoYXJlZCgnc3ltYm9scycpO1xudmFyIE9iamVjdFByb3RvdHlwZVN5bWJvbHMgPSBzaGFyZWQoJ29wLXN5bWJvbHMnKTtcbnZhciBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzdHJpbmctdG8tc3ltYm9sLXJlZ2lzdHJ5Jyk7XG52YXIgU3ltYm9sVG9TdHJpbmdSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeScpO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgVVNFX1NFVFRFUiA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7XG5cbi8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xudmFyIHNldFN5bWJvbERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RDcmVhdGUobmF0aXZlRGVmaW5lUHJvcGVydHkoe30sICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24gKE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgdmFyIE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0UHJvdG90eXBlLCBQKTtcbiAgaWYgKE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IpIGRlbGV0ZSBPYmplY3RQcm90b3R5cGVbUF07XG4gIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICBpZiAoT2JqZWN0UHJvdG90eXBlRGVzY3JpcHRvciAmJiBPICE9PSBPYmplY3RQcm90b3R5cGUpIHtcbiAgICBuYXRpdmVEZWZpbmVQcm9wZXJ0eShPYmplY3RQcm90b3R5cGUsIFAsIE9iamVjdFByb3RvdHlwZURlc2NyaXB0b3IpO1xuICB9XG59IDogbmF0aXZlRGVmaW5lUHJvcGVydHk7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZywgZGVzY3JpcHRpb24pIHtcbiAgdmFyIHN5bWJvbCA9IEFsbFN5bWJvbHNbdGFnXSA9IG5hdGl2ZU9iamVjdENyZWF0ZSgkU3ltYm9sW1BST1RPVFlQRV0pO1xuICBzZXRJbnRlcm5hbFN0YXRlKHN5bWJvbCwge1xuICAgIHR5cGU6IFNZTUJPTCxcbiAgICB0YWc6IHRhZyxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25cbiAgfSk7XG4gIGlmICghREVTQ1JJUFRPUlMpIHN5bWJvbC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICByZXR1cm4gc3ltYm9sO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChpdCkgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgaWYgKE8gPT09IE9iamVjdFByb3RvdHlwZSkgJGRlZmluZVByb3BlcnR5KE9iamVjdFByb3RvdHlwZVN5bWJvbHMsIFAsIEF0dHJpYnV0ZXMpO1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFBdHRyaWJ1dGVzLmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKE8sIEhJRERFTikpIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIEhJRERFTiwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHt9KSk7XG4gICAgICBPW0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXMoTywgSElEREVOKSAmJiBPW0hJRERFTl1ba2V5XSkgT1tISURERU5dW2tleV0gPSBmYWxzZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSBuYXRpdmVPYmplY3RDcmVhdGUoQXR0cmlidXRlcywgeyBlbnVtZXJhYmxlOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2NyaXB0b3IoTywga2V5LCBBdHRyaWJ1dGVzKTtcbiAgfSByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkoTywga2V5LCBBdHRyaWJ1dGVzKTtcbn07XG5cbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIHByb3BlcnRpZXMgPSB0b0luZGV4ZWRPYmplY3QoUHJvcGVydGllcyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhwcm9wZXJ0aWVzKS5jb25jYXQoJGdldE93blByb3BlcnR5U3ltYm9scyhwcm9wZXJ0aWVzKSk7XG4gICRmb3JFYWNoKGtleXMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIURFU0NSSVBUT1JTIHx8ICRwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHByb3BlcnRpZXMsIGtleSkpICRkZWZpbmVQcm9wZXJ0eShPLCBrZXksIHByb3BlcnRpZXNba2V5XSk7XG4gIH0pO1xuICByZXR1cm4gTztcbn07XG5cbnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IG5hdGl2ZU9iamVjdENyZWF0ZShPKSA6ICRkZWZpbmVQcm9wZXJ0aWVzKG5hdGl2ZU9iamVjdENyZWF0ZShPKSwgUHJvcGVydGllcyk7XG59O1xuXG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgUCA9IHRvUHJpbWl0aXZlKFYsIHRydWUpO1xuICB2YXIgZW51bWVyYWJsZSA9IG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodGhpcywgUCk7XG4gIGlmICh0aGlzID09PSBPYmplY3RQcm90b3R5cGUgJiYgaGFzKEFsbFN5bWJvbHMsIFApICYmICFoYXMoT2JqZWN0UHJvdG90eXBlU3ltYm9scywgUCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIGVudW1lcmFibGUgfHwgIWhhcyh0aGlzLCBQKSB8fCAhaGFzKEFsbFN5bWJvbHMsIFApIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtQXSA/IGVudW1lcmFibGUgOiB0cnVlO1xufTtcblxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICB2YXIgaXQgPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90b3R5cGUgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPYmplY3RQcm90b3R5cGVTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBkZXNjcmlwdG9yID0gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpO1xuICBpZiAoZGVzY3JpcHRvciAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pKSB7XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZGVzY3JpcHRvcjtcbn07XG5cbnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICB2YXIgbmFtZXMgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eU5hbWVzKHRvSW5kZXhlZE9iamVjdChPKSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgJGZvckVhY2gobmFtZXMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoaGlkZGVuS2V5cywga2V5KSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhPKSB7XG4gIHZhciBJU19PQkpFQ1RfUFJPVE9UWVBFID0gTyA9PT0gT2JqZWN0UHJvdG90eXBlO1xuICB2YXIgbmFtZXMgPSBuYXRpdmVHZXRPd25Qcm9wZXJ0eU5hbWVzKElTX09CSkVDVF9QUk9UT1RZUEUgPyBPYmplY3RQcm90b3R5cGVTeW1ib2xzIDogdG9JbmRleGVkT2JqZWN0KE8pKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICAkZm9yRWFjaChuYW1lcywgZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5KSAmJiAoIUlTX09CSkVDVF9QUk9UT1RZUEUgfHwgaGFzKE9iamVjdFByb3RvdHlwZSwga2V5KSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIGBTeW1ib2xgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zeW1ib2wtY29uc3RydWN0b3JcbmlmICghTkFUSVZFX1NZTUJPTCkge1xuICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgJFN5bWJvbCkgdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3InKTtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSAhYXJndW1lbnRzLmxlbmd0aCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IFN0cmluZyhhcmd1bWVudHNbMF0pO1xuICAgIHZhciB0YWcgPSB1aWQoZGVzY3JpcHRpb24pO1xuICAgIHZhciBzZXR0ZXIgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzID09PSBPYmplY3RQcm90b3R5cGUpIHNldHRlci5jYWxsKE9iamVjdFByb3RvdHlwZVN5bWJvbHMsIHZhbHVlKTtcbiAgICAgIGlmIChoYXModGhpcywgSElEREVOKSAmJiBoYXModGhpc1tISURERU5dLCB0YWcpKSB0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzY3JpcHRvcih0aGlzLCB0YWcsIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xuICAgIH07XG4gICAgaWYgKERFU0NSSVBUT1JTICYmIFVTRV9TRVRURVIpIHNldFN5bWJvbERlc2NyaXB0b3IoT2JqZWN0UHJvdG90eXBlLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6IHNldHRlciB9KTtcbiAgICByZXR1cm4gd3JhcCh0YWcsIGRlc2NyaXB0aW9uKTtcbiAgfTtcblxuICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnRhZztcbiAgfSk7XG5cbiAgcmVkZWZpbmUoJFN5bWJvbCwgJ3dpdGhvdXRTZXR0ZXInLCBmdW5jdGlvbiAoZGVzY3JpcHRpb24pIHtcbiAgICByZXR1cm4gd3JhcCh1aWQoZGVzY3JpcHRpb24pLCBkZXNjcmlwdGlvbik7XG4gIH0pO1xuXG4gIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIGRlZmluZVByb3BlcnR5TW9kdWxlLmYgPSAkZGVmaW5lUHJvcGVydHk7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mID0gZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsLmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIHdyYXBwZWRXZWxsS25vd25TeW1ib2xNb2R1bGUuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2VsbEtub3duU3ltYm9sKG5hbWUpLCBuYW1lKTtcbiAgfTtcblxuICBpZiAoREVTQ1JJUFRPUlMpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1TeW1ib2wtZGVzY3JpcHRpb25cbiAgICBuYXRpdmVEZWZpbmVQcm9wZXJ0eSgkU3ltYm9sW1BST1RPVFlQRV0sICdkZXNjcmlwdGlvbicsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLmRlc2NyaXB0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghSVNfUFVSRSkge1xuICAgICAgcmVkZWZpbmUoT2JqZWN0UHJvdG90eXBlLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHsgdW5zYWZlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxufVxuXG4kKHsgZ2xvYmFsOiB0cnVlLCB3cmFwOiB0cnVlLCBmb3JjZWQ6ICFOQVRJVkVfU1lNQk9MLCBzaGFtOiAhTkFUSVZFX1NZTUJPTCB9LCB7XG4gIFN5bWJvbDogJFN5bWJvbFxufSk7XG5cbiRmb3JFYWNoKG9iamVjdEtleXMoV2VsbEtub3duU3ltYm9sc1N0b3JlKSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgZGVmaW5lV2VsbEtub3duU3ltYm9sKG5hbWUpO1xufSk7XG5cbiQoeyB0YXJnZXQ6IFNZTUJPTCwgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhTkFUSVZFX1NZTUJPTCB9LCB7XG4gIC8vIGBTeW1ib2wuZm9yYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3ltYm9sLmZvclxuICAnZm9yJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBzdHJpbmcgPSBTdHJpbmcoa2V5KTtcbiAgICBpZiAoaGFzKFN0cmluZ1RvU3ltYm9sUmVnaXN0cnksIHN0cmluZykpIHJldHVybiBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5W3N0cmluZ107XG4gICAgdmFyIHN5bWJvbCA9ICRTeW1ib2woc3RyaW5nKTtcbiAgICBTdHJpbmdUb1N5bWJvbFJlZ2lzdHJ5W3N0cmluZ10gPSBzeW1ib2w7XG4gICAgU3ltYm9sVG9TdHJpbmdSZWdpc3RyeVtzeW1ib2xdID0gc3RyaW5nO1xuICAgIHJldHVybiBzeW1ib2w7XG4gIH0sXG4gIC8vIGBTeW1ib2wua2V5Rm9yYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3ltYm9sLmtleWZvclxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCcpO1xuICAgIGlmIChoYXMoU3ltYm9sVG9TdHJpbmdSZWdpc3RyeSwgc3ltKSkgcmV0dXJuIFN5bWJvbFRvU3RyaW5nUmVnaXN0cnlbc3ltXTtcbiAgfSxcbiAgdXNlU2V0dGVyOiBmdW5jdGlvbiAoKSB7IFVTRV9TRVRURVIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgVVNFX1NFVFRFUiA9IGZhbHNlOyB9XG59KTtcblxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9TWU1CT0wsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIC8vIGBPYmplY3QuY3JlYXRlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxuICBjcmVhdGU6ICRjcmVhdGUsXG4gIC8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcbiAgLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnRpZXNcbiAgZGVmaW5lUHJvcGVydGllczogJGRlZmluZVByb3BlcnRpZXMsXG4gIC8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvcnNcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yXG59KTtcblxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9TWU1CT0wgfSwge1xuICAvLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcbiAgLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlzeW1ib2xzXG4gIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xufSk7XG5cbi8vIENocm9tZSAzOCBhbmQgMzkgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgIGZhaWxzIG9uIHByaW1pdGl2ZXNcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTM0NDNcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IGZhaWxzKGZ1bmN0aW9uICgpIHsgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmYoMSk7IH0pIH0sIHtcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmYodG9PYmplY3QoaXQpKTtcbiAgfVxufSk7XG5cbi8vIGBKU09OLnN0cmluZ2lmeWAgbWV0aG9kIGJlaGF2aW9yIHdpdGggc3ltYm9sc1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtanNvbi5zdHJpbmdpZnlcbmlmICgkc3RyaW5naWZ5KSB7XG4gIHZhciBGT1JDRURfSlNPTl9TVFJJTkdJRlkgPSAhTkFUSVZFX1NZTUJPTCB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN5bWJvbCA9ICRTeW1ib2woKTtcbiAgICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuICAgIHJldHVybiAkc3RyaW5naWZ5KFtzeW1ib2xdKSAhPSAnW251bGxdJ1xuICAgICAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gICAgICB8fCAkc3RyaW5naWZ5KHsgYTogc3ltYm9sIH0pICE9ICd7fSdcbiAgICAgIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gICAgICB8fCAkc3RyaW5naWZ5KE9iamVjdChzeW1ib2wpKSAhPSAne30nO1xuICB9KTtcblxuICAkKHsgdGFyZ2V0OiAnSlNPTicsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEX0pTT05fU1RSSU5HSUZZIH0sIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCwgcmVwbGFjZXIsIHNwYWNlKSB7XG4gICAgICB2YXIgYXJncyA9IFtpdF07XG4gICAgICB2YXIgaW5kZXggPSAxO1xuICAgICAgdmFyICRyZXBsYWNlcjtcbiAgICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaW5kZXgpIGFyZ3MucHVzaChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgICAgJHJlcGxhY2VyID0gcmVwbGFjZXI7XG4gICAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkXG4gICAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgJHJlcGxhY2VyID09ICdmdW5jdGlvbicpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgYXJnc1sxXSA9IHJlcGxhY2VyO1xuICAgICAgcmV0dXJuICRzdHJpbmdpZnkuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gYFN5bWJvbC5wcm90b3R5cGVbQEB0b1ByaW1pdGl2ZV1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3ltYm9sLnByb3RvdHlwZS1AQHRvcHJpbWl0aXZlXG5pZiAoISRTeW1ib2xbUFJPVE9UWVBFXVtUT19QUklNSVRJVkVdKSB7XG4gIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSgkU3ltYm9sW1BST1RPVFlQRV0sIFRPX1BSSU1JVElWRSwgJFN5bWJvbFtQUk9UT1RZUEVdLnZhbHVlT2YpO1xufVxuLy8gYFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11gIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zeW1ib2wucHJvdG90eXBlLUBAdG9zdHJpbmd0YWdcbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsIFNZTUJPTCk7XG5cbmhpZGRlbktleXNbSElEREVOXSA9IHRydWU7XG4iLCIvLyBgU3ltYm9sLnByb3RvdHlwZS5kZXNjcmlwdGlvbmAgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zeW1ib2wucHJvdG90eXBlLmRlc2NyaXB0aW9uXG4ndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcblxudmFyIE5hdGl2ZVN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG5cbmlmIChERVNDUklQVE9SUyAmJiB0eXBlb2YgTmF0aXZlU3ltYm9sID09ICdmdW5jdGlvbicgJiYgKCEoJ2Rlc2NyaXB0aW9uJyBpbiBOYXRpdmVTeW1ib2wucHJvdG90eXBlKSB8fFxuICAvLyBTYWZhcmkgMTIgYnVnXG4gIE5hdGl2ZVN5bWJvbCgpLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWRcbikpIHtcbiAgdmFyIEVtcHR5U3RyaW5nRGVzY3JpcHRpb25TdG9yZSA9IHt9O1xuICAvLyB3cmFwIFN5bWJvbCBjb25zdHJ1Y3RvciBmb3IgY29ycmVjdCB3b3JrIHdpdGggdW5kZWZpbmVkIGRlc2NyaXB0aW9uXG4gIHZhciBTeW1ib2xXcmFwcGVyID0gZnVuY3Rpb24gU3ltYm9sKCkge1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAxIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogU3RyaW5nKGFyZ3VtZW50c1swXSk7XG4gICAgdmFyIHJlc3VsdCA9IHRoaXMgaW5zdGFuY2VvZiBTeW1ib2xXcmFwcGVyXG4gICAgICA/IG5ldyBOYXRpdmVTeW1ib2woZGVzY3JpcHRpb24pXG4gICAgICAvLyBpbiBFZGdlIDEzLCBTdHJpbmcoU3ltYm9sKHVuZGVmaW5lZCkpID09PSAnU3ltYm9sKHVuZGVmaW5lZCknXG4gICAgICA6IGRlc2NyaXB0aW9uID09PSB1bmRlZmluZWQgPyBOYXRpdmVTeW1ib2woKSA6IE5hdGl2ZVN5bWJvbChkZXNjcmlwdGlvbik7XG4gICAgaWYgKGRlc2NyaXB0aW9uID09PSAnJykgRW1wdHlTdHJpbmdEZXNjcmlwdGlvblN0b3JlW3Jlc3VsdF0gPSB0cnVlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoU3ltYm9sV3JhcHBlciwgTmF0aXZlU3ltYm9sKTtcbiAgdmFyIHN5bWJvbFByb3RvdHlwZSA9IFN5bWJvbFdyYXBwZXIucHJvdG90eXBlID0gTmF0aXZlU3ltYm9sLnByb3RvdHlwZTtcbiAgc3ltYm9sUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ltYm9sV3JhcHBlcjtcblxuICB2YXIgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90b3R5cGUudG9TdHJpbmc7XG4gIHZhciBuYXRpdmUgPSBTdHJpbmcoTmF0aXZlU3ltYm9sKCd0ZXN0JykpID09ICdTeW1ib2wodGVzdCknO1xuICB2YXIgcmVnZXhwID0gL15TeW1ib2xcXCgoLiopXFwpW14pXSskLztcbiAgZGVmaW5lUHJvcGVydHkoc3ltYm9sUHJvdG90eXBlLCAnZGVzY3JpcHRpb24nLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gZGVzY3JpcHRpb24oKSB7XG4gICAgICB2YXIgc3ltYm9sID0gaXNPYmplY3QodGhpcykgPyB0aGlzLnZhbHVlT2YoKSA6IHRoaXM7XG4gICAgICB2YXIgc3RyaW5nID0gc3ltYm9sVG9TdHJpbmcuY2FsbChzeW1ib2wpO1xuICAgICAgaWYgKGhhcyhFbXB0eVN0cmluZ0Rlc2NyaXB0aW9uU3RvcmUsIHN5bWJvbCkpIHJldHVybiAnJztcbiAgICAgIHZhciBkZXNjID0gbmF0aXZlID8gc3RyaW5nLnNsaWNlKDcsIC0xKSA6IHN0cmluZy5yZXBsYWNlKHJlZ2V4cCwgJyQxJyk7XG4gICAgICByZXR1cm4gZGVzYyA9PT0gJycgPyB1bmRlZmluZWQgOiBkZXNjO1xuICAgIH1cbiAgfSk7XG5cbiAgJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiB0cnVlIH0sIHtcbiAgICBTeW1ib2w6IFN5bWJvbFdyYXBwZXJcbiAgfSk7XG59XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLmFzeW5jSXRlcmF0b3JgIHdlbGwta25vd24gc3ltYm9sXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zeW1ib2wuYXN5bmNpdGVyYXRvclxuZGVmaW5lV2VsbEtub3duU3ltYm9sKCdhc3luY0l0ZXJhdG9yJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLml0ZXJhdG9yYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3ltYm9sLml0ZXJhdG9yXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG4iLCJ2YXIgZGVmaW5lV2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS13ZWxsLWtub3duLXN5bWJvbCcpO1xuXG4vLyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB3ZWxsLWtub3duIHN5bWJvbFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3ltYm9sLnRvc3RyaW5ndGFnXG5kZWZpbmVXZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIGFyZ3VtZW50KSB7XG4gIHZhciBtZXRob2QgPSBbXVtNRVRIT0RfTkFNRV07XG4gIHJldHVybiAhIW1ldGhvZCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbCxuby10aHJvdy1saXRlcmFsXG4gICAgbWV0aG9kLmNhbGwobnVsbCwgYXJndW1lbnQgfHwgZnVuY3Rpb24gKCkgeyB0aHJvdyAxOyB9LCAxKTtcbiAgfSk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBjYWNoZSA9IHt9O1xuXG52YXIgdGhyb3dlciA9IGZ1bmN0aW9uIChpdCkgeyB0aHJvdyBpdDsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIG9wdGlvbnMpIHtcbiAgaWYgKGhhcyhjYWNoZSwgTUVUSE9EX05BTUUpKSByZXR1cm4gY2FjaGVbTUVUSE9EX05BTUVdO1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIG1ldGhvZCA9IFtdW01FVEhPRF9OQU1FXTtcbiAgdmFyIEFDQ0VTU09SUyA9IGhhcyhvcHRpb25zLCAnQUNDRVNTT1JTJykgPyBvcHRpb25zLkFDQ0VTU09SUyA6IGZhbHNlO1xuICB2YXIgYXJndW1lbnQwID0gaGFzKG9wdGlvbnMsIDApID8gb3B0aW9uc1swXSA6IHRocm93ZXI7XG4gIHZhciBhcmd1bWVudDEgPSBoYXMob3B0aW9ucywgMSkgPyBvcHRpb25zWzFdIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiBjYWNoZVtNRVRIT0RfTkFNRV0gPSAhIW1ldGhvZCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIGlmIChBQ0NFU1NPUlMgJiYgIURFU0NSSVBUT1JTKSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgTyA9IHsgbGVuZ3RoOiAtMSB9O1xuXG4gICAgaWYgKEFDQ0VTU09SUykgZGVmaW5lUHJvcGVydHkoTywgMSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IHRocm93ZXIgfSk7XG4gICAgZWxzZSBPWzFdID0gMTtcblxuICAgIG1ldGhvZC5jYWxsKE8sIGFyZ3VtZW50MCwgYXJndW1lbnQxKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZvckVhY2g7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG52YXIgYXJyYXlNZXRob2RVc2VzVG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLXVzZXMtdG8tbGVuZ3RoJyk7XG5cbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgnZm9yRWFjaCcpO1xudmFyIFVTRVNfVE9fTEVOR1RIID0gYXJyYXlNZXRob2RVc2VzVG9MZW5ndGgoJ2ZvckVhY2gnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG5tb2R1bGUuZXhwb3J0cyA9ICghU1RSSUNUX01FVEhPRCB8fCAhVVNFU19UT19MRU5HVEgpID8gZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJGZvckVhY2godGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSA6IFtdLmZvckVhY2g7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZvci1lYWNoJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogW10uZm9yRWFjaCAhPSBmb3JFYWNoIH0sIHtcbiAgZm9yRWFjaDogZm9yRWFjaFxufSk7XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbnZhciBVTlNDT1BBQkxFUyA9IHdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuaWYgKEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHtcbiAgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihBcnJheVByb3RvdHlwZSwgVU5TQ09QQUJMRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6IGNyZWF0ZShudWxsKVxuICB9KTtcbn1cblxuLy8gYWRkIGEga2V5IHRvIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXVtrZXldID0gdHJ1ZTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICBGLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IG51bGw7XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IEYoKSkgIT09IEYucHJvdG90eXBlO1xufSk7XG4iLCJ2YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlcicpO1xuXG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLy8gYE9iamVjdC5nZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0cHJvdG90eXBlb2Zcbm1vZHVsZS5leHBvcnRzID0gQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvdHlwZSA6IG51bGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBmYWxzZTtcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG4vLyBgJUl0ZXJhdG9yUHJvdG90eXBlJWAgb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy0laXRlcmF0b3Jwcm90b3R5cGUlLW9iamVjdFxudmFyIEl0ZXJhdG9yUHJvdG90eXBlLCBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUsIGFycmF5SXRlcmF0b3I7XG5cbmlmIChbXS5rZXlzKSB7XG4gIGFycmF5SXRlcmF0b3IgPSBbXS5rZXlzKCk7XG4gIC8vIFNhZmFyaSA4IGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxuICBpZiAoISgnbmV4dCcgaW4gYXJyYXlJdGVyYXRvcikpIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSB0cnVlO1xuICBlbHNlIHtcbiAgICBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZihnZXRQcm90b3R5cGVPZihhcnJheUl0ZXJhdG9yKSk7XG4gICAgaWYgKFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSkgSXRlcmF0b3JQcm90b3R5cGUgPSBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cbn1cblxuaWYgKEl0ZXJhdG9yUHJvdG90eXBlID09IHVuZGVmaW5lZCkgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbmlmICghSVNfUFVSRSAmJiAhaGFzKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUikpIHtcbiAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBJdGVyYXRvclByb3RvdHlwZTogSXRlcmF0b3JQcm90b3R5cGUsXG4gIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlNcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEl0ZXJhdG9yQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIEl0ZXJhdG9yQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JDb25zdHJ1Y3RvciwgVE9fU1RSSU5HX1RBRywgZmFsc2UsIHRydWUpO1xuICBJdGVyYXRvcnNbVE9fU1RSSU5HX1RBR10gPSByZXR1cm5UaGlzO1xuICByZXR1cm4gSXRlcmF0b3JDb25zdHJ1Y3Rvcjtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpICYmIGl0ICE9PSBudWxsKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3Qgc2V0IFwiICsgU3RyaW5nKGl0KSArICcgYXMgYSBwcm90b3R5cGUnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFQb3NzaWJsZVByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LnNldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5zZXRwcm90b3R5cGVvZlxuLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gZnVuY3Rpb24gKCkge1xuICB2YXIgQ09SUkVDVF9TRVRURVIgPSBmYWxzZTtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgdmFyIHNldHRlcjtcbiAgdHJ5IHtcbiAgICBzZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXQ7XG4gICAgc2V0dGVyLmNhbGwodGVzdCwgW10pO1xuICAgIENPUlJFQ1RfU0VUVEVSID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIGFuT2JqZWN0KE8pO1xuICAgIGFQb3NzaWJsZVByb3RvdHlwZShwcm90byk7XG4gICAgaWYgKENPUlJFQ1RfU0VUVEVSKSBzZXR0ZXIuY2FsbChPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIEl0ZXJhdG9yc0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKTtcblxudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gSXRlcmF0b3JzQ29yZS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gSXRlcmF0b3JzQ29yZS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTO1xudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG52YXIgRU5UUklFUyA9ICdlbnRyaWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYWJsZSwgTkFNRSwgSXRlcmF0b3JDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcblxuICB2YXIgZ2V0SXRlcmF0aW9uTWV0aG9kID0gZnVuY3Rpb24gKEtJTkQpIHtcbiAgICBpZiAoS0lORCA9PT0gREVGQVVMVCAmJiBkZWZhdWx0SXRlcmF0b3IpIHJldHVybiBkZWZhdWx0SXRlcmF0b3I7XG4gICAgaWYgKCFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIEtJTkQgaW4gSXRlcmFibGVQcm90b3R5cGUpIHJldHVybiBJdGVyYWJsZVByb3RvdHlwZVtLSU5EXTtcbiAgICBzd2l0Y2ggKEtJTkQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIEVOVFJJRVM6IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcyk7IH07XG4gIH07XG5cbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgPSBmYWxzZTtcbiAgdmFyIEl0ZXJhYmxlUHJvdG90eXBlID0gSXRlcmFibGUucHJvdG90eXBlO1xuICB2YXIgbmF0aXZlSXRlcmF0b3IgPSBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl1cbiAgICB8fCBJdGVyYWJsZVByb3RvdHlwZVsnQEBpdGVyYXRvciddXG4gICAgfHwgREVGQVVMVCAmJiBJdGVyYWJsZVByb3RvdHlwZVtERUZBVUxUXTtcbiAgdmFyIGRlZmF1bHRJdGVyYXRvciA9ICFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIG5hdGl2ZUl0ZXJhdG9yIHx8IGdldEl0ZXJhdGlvbk1ldGhvZChERUZBVUxUKTtcbiAgdmFyIGFueU5hdGl2ZUl0ZXJhdG9yID0gTkFNRSA9PSAnQXJyYXknID8gSXRlcmFibGVQcm90b3R5cGUuZW50cmllcyB8fCBuYXRpdmVJdGVyYXRvciA6IG5hdGl2ZUl0ZXJhdG9yO1xuICB2YXIgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBtZXRob2RzLCBLRVk7XG5cbiAgLy8gZml4IG5hdGl2ZVxuICBpZiAoYW55TmF0aXZlSXRlcmF0b3IpIHtcbiAgICBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZihhbnlOYXRpdmVJdGVyYXRvci5jYWxsKG5ldyBJdGVyYWJsZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICBpZiAoIUlTX1BVUkUgJiYgZ2V0UHJvdG90eXBlT2YoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlKSAhPT0gSXRlcmF0b3JQcm90b3R5cGUpIHtcbiAgICAgICAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgICAgICAgc2V0UHJvdG90eXBlT2YoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBJdGVyYXRvclByb3RvdHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCB0cnVlLCB0cnVlKTtcbiAgICAgIGlmIChJU19QVVJFKSBJdGVyYXRvcnNbVE9fU1RSSU5HX1RBR10gPSByZXR1cm5UaGlzO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRkFVTFQgPT0gVkFMVUVTICYmIG5hdGl2ZUl0ZXJhdG9yICYmIG5hdGl2ZUl0ZXJhdG9yLm5hbWUgIT09IFZBTFVFUykge1xuICAgIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IHRydWU7XG4gICAgZGVmYXVsdEl0ZXJhdG9yID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmF0aXZlSXRlcmF0b3IuY2FsbCh0aGlzKTsgfTtcbiAgfVxuXG4gIC8vIGRlZmluZSBpdGVyYXRvclxuICBpZiAoKCFJU19QVVJFIHx8IEZPUkNFRCkgJiYgSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdICE9PSBkZWZhdWx0SXRlcmF0b3IpIHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoSXRlcmFibGVQcm90b3R5cGUsIElURVJBVE9SLCBkZWZhdWx0SXRlcmF0b3IpO1xuICB9XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IGRlZmF1bHRJdGVyYXRvcjtcblxuICAvLyBleHBvcnQgYWRkaXRpb25hbCBtZXRob2RzXG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogZ2V0SXRlcmF0aW9uTWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyBkZWZhdWx0SXRlcmF0b3IgOiBnZXRJdGVyYXRpb25NZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiBnZXRJdGVyYXRpb25NZXRob2QoRU5UUklFUylcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoS0VZIGluIG1ldGhvZHMpIHtcbiAgICAgIGlmIChCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB8fCAhKEtFWSBpbiBJdGVyYWJsZVByb3RvdHlwZSkpIHtcbiAgICAgICAgcmVkZWZpbmUoSXRlcmFibGVQcm90b3R5cGUsIEtFWSwgbWV0aG9kc1tLRVldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgJCh7IHRhcmdldDogTkFNRSwgcHJvdG86IHRydWUsIGZvcmNlZDogQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfSwgbWV0aG9kcyk7XG4gIH1cblxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGRlZmluZUl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1pdGVyYXRvcicpO1xuXG52YXIgQVJSQVlfSVRFUkFUT1IgPSAnQXJyYXkgSXRlcmF0b3InO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoQVJSQVlfSVRFUkFUT1IpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmVudHJpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmVudHJpZXNcbi8vIGBBcnJheS5wcm90b3R5cGUua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUua2V5c1xuLy8gYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnZhbHVlc1xuLy8gYEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEBpdGVyYXRvclxuLy8gYENyZWF0ZUFycmF5SXRlcmF0b3JgIGludGVybmFsIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtY3JlYXRlYXJyYXlpdGVyYXRvclxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVJdGVyYXRvcihBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IEFSUkFZX0lURVJBVE9SLFxuICAgIHRhcmdldDogdG9JbmRleGVkT2JqZWN0KGl0ZXJhdGVkKSwgLy8gdGFyZ2V0XG4gICAgaW5kZXg6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gICAga2luZDoga2luZCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBraW5kXG4gIH0pO1xuLy8gYCVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSVhcnJheWl0ZXJhdG9ycHJvdG90eXBlJS5uZXh0XG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gIHZhciB0YXJnZXQgPSBzdGF0ZS50YXJnZXQ7XG4gIHZhciBraW5kID0gc3RhdGUua2luZDtcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXgrKztcbiAgaWYgKCF0YXJnZXQgfHwgaW5kZXggPj0gdGFyZ2V0Lmxlbmd0aCkge1xuICAgIHN0YXRlLnRhcmdldCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4geyB2YWx1ZTogaW5kZXgsIGRvbmU6IGZhbHNlIH07XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4geyB2YWx1ZTogdGFyZ2V0W2luZGV4XSwgZG9uZTogZmFsc2UgfTtcbiAgcmV0dXJuIHsgdmFsdWU6IFtpbmRleCwgdGFyZ2V0W2luZGV4XV0sIGRvbmU6IGZhbHNlIH07XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJVxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtY3JlYXRldW5tYXBwZWRhcmd1bWVudHNvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWNyZWF0ZW1hcHBlZGFyZ3VtZW50c29iamVjdFxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xuXG52YXIgbmF0aXZlUmV2ZXJzZSA9IFtdLnJldmVyc2U7XG52YXIgdGVzdCA9IFsxLCAyXTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5yZXZlcnNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5yZXZlcnNlXG4vLyBmaXggZm9yIFNhZmFyaSAxMi4wIGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODc5NFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogU3RyaW5nKHRlc3QpID09PSBTdHJpbmcodGVzdC5yZXZlcnNlKCkpIH0sIHtcbiAgcmV2ZXJzZTogZnVuY3Rpb24gcmV2ZXJzZSgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICBpZiAoaXNBcnJheSh0aGlzKSkgdGhpcy5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICByZXR1cm4gbmF0aXZlUmV2ZXJzZS5jYWxsKHRoaXMpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgcHJvcGVydHlLZXkgPSB0b1ByaW1pdGl2ZShrZXkpO1xuICBpZiAocHJvcGVydHlLZXkgaW4gb2JqZWN0KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwgcHJvcGVydHlLZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbn07XG4iLCJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCduYXZpZ2F0b3InLCAndXNlckFnZW50JykgfHwgJyc7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIHZlcnNpb24gPSBtYXRjaFswXSArIG1hdGNoWzFdO1xufSBlbHNlIGlmICh1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSBtYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb24gJiYgK3ZlcnNpb247XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIC8vIFdlIGNhbid0IHVzZSB0aGlzIGZlYXR1cmUgZGV0ZWN0aW9uIGluIFY4IHNpbmNlIGl0IGNhdXNlc1xuICAvLyBkZW9wdGltaXphdGlvbiBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc3XG4gIHJldHVybiBWOF9WRVJTSU9OID49IDUxIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gYXJyYXkuY29uc3RydWN0b3IgPSB7fTtcbiAgICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGZvbzogMSB9O1xuICAgIH07XG4gICAgcmV0dXJuIGFycmF5W01FVEhPRF9OQU1FXShCb29sZWFuKS5mb28gIT09IDE7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0Jyk7XG52YXIgYXJyYXlNZXRob2RVc2VzVG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLXVzZXMtdG8tbGVuZ3RoJyk7XG5cbnZhciBIQVNfU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnc2xpY2UnKTtcbnZhciBVU0VTX1RPX0xFTkdUSCA9IGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoKCdzbGljZScsIHsgQUNDRVNTT1JTOiB0cnVlLCAwOiAwLCAxOiAyIH0pO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIG5hdGl2ZVNsaWNlID0gW10uc2xpY2U7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuc2xpY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNsaWNlXG4vLyBmYWxsYmFjayBmb3Igbm90IGFycmF5LWxpa2UgRVMzIHN0cmluZ3MgYW5kIERPTSBvYmplY3RzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhSEFTX1NQRUNJRVNfU1VQUE9SVCB8fCAhVVNFU19UT19MRU5HVEggfSwge1xuICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGsgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbmd0aCk7XG4gICAgdmFyIGZpbiA9IHRvQWJzb2x1dGVJbmRleChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZCwgbGVuZ3RoKTtcbiAgICAvLyBpbmxpbmUgYEFycmF5U3BlY2llc0NyZWF0ZWAgZm9yIHVzYWdlIG5hdGl2ZSBgQXJyYXkjc2xpY2VgIHdoZXJlIGl0J3MgcG9zc2libGVcbiAgICB2YXIgQ29uc3RydWN0b3IsIHJlc3VsdCwgbjtcbiAgICBpZiAoaXNBcnJheShPKSkge1xuICAgICAgQ29uc3RydWN0b3IgPSBPLmNvbnN0cnVjdG9yO1xuICAgICAgLy8gY3Jvc3MtcmVhbG0gZmFsbGJhY2tcbiAgICAgIGlmICh0eXBlb2YgQ29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAoQ29uc3RydWN0b3IgPT09IEFycmF5IHx8IGlzQXJyYXkoQ29uc3RydWN0b3IucHJvdG90eXBlKSkpIHtcbiAgICAgICAgQ29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KENvbnN0cnVjdG9yKSkge1xuICAgICAgICBDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yW1NQRUNJRVNdO1xuICAgICAgICBpZiAoQ29uc3RydWN0b3IgPT09IG51bGwpIENvbnN0cnVjdG9yID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yID09PSBBcnJheSB8fCBDb25zdHJ1Y3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVTbGljZS5jYWxsKE8sIGssIGZpbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdCA9IG5ldyAoQ29uc3RydWN0b3IgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQ29uc3RydWN0b3IpKG1heChmaW4gLSBrLCAwKSk7XG4gICAgZm9yIChuID0gMDsgayA8IGZpbjsgaysrLCBuKyspIGlmIChrIGluIE8pIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgbiwgT1trXSk7XG4gICAgcmVzdWx0Lmxlbmd0aCA9IG47XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIEZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmcgPSBGdW5jdGlvblByb3RvdHlwZS50b1N0cmluZztcbnZhciBuYW1lUkUgPSAvXlxccypmdW5jdGlvbiAoW14gKF0qKS87XG52YXIgTkFNRSA9ICduYW1lJztcblxuLy8gRnVuY3Rpb24gaW5zdGFuY2VzIGAubmFtZWAgcHJvcGVydHlcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWZ1bmN0aW9uLWluc3RhbmNlcy1uYW1lXG5pZiAoREVTQ1JJUFRPUlMgJiYgIShOQU1FIGluIEZ1bmN0aW9uUHJvdG90eXBlKSkge1xuICBkZWZpbmVQcm9wZXJ0eShGdW5jdGlvblByb3RvdHlwZSwgTkFNRSwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nLmNhbGwodGhpcykubWF0Y2gobmFtZVJFKVsxXTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xuXG4vLyBKU09OW0BAdG9TdHJpbmdUYWddIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1qc29uLUBAdG9zdHJpbmd0YWdcbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuIiwidmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG5cbi8vIE1hdGhbQEB0b1N0cmluZ1RhZ10gcHJvcGVydHlcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW1hdGgtQEB0b3N0cmluZ3RhZ1xuc2V0VG9TdHJpbmdUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgbmF0aXZlR2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyJyk7XG5cbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyBuYXRpdmVHZXRQcm90b3R5cGVPZigxKTsgfSk7XG5cbi8vIGBPYmplY3QuZ2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmdldHByb3RvdHlwZW9mXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGQUlMU19PTl9QUklNSVRJVkVTLCBzaGFtOiAhQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSIH0sIHtcbiAgZ2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKGl0KSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldFByb3RvdHlwZU9mKHRvT2JqZWN0KGl0KSk7XG4gIH1cbn0pO1xuXG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIHRlc3QgPSB7fTtcblxudGVzdFtUT19TVFJJTkdfVEFHXSA9ICd6JztcblxubW9kdWxlLmV4cG9ydHMgPSBTdHJpbmcodGVzdCkgPT09ICdbb2JqZWN0IHpdJztcbiIsInZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQ09SUkVDVF9BUkdVTUVOVFMgPSBjbGFzc29mUmF3KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8ge30udG9TdHJpbmcgOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdbb2JqZWN0ICcgKyBjbGFzc29mKHRoaXMpICsgJ10nO1xufTtcbiIsInZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmdcbmlmICghVE9fU1RSSU5HX1RBR19TVVBQT1JUKSB7XG4gIHJlZGVmaW5lKE9iamVjdC5wcm90b3R5cGUsICd0b1N0cmluZycsIHRvU3RyaW5nLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbn1cbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLlByb21pc2U7XG4iLCJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIG9wdGlvbnMpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNyY1trZXldLCBvcHRpb25zKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09OU1RSVUNUT1JfTkFNRSkge1xuICB2YXIgQ29uc3RydWN0b3IgPSBnZXRCdWlsdEluKENPTlNUUlVDVE9SX05BTUUpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiBDb25zdHJ1Y3RvciAmJiAhQ29uc3RydWN0b3JbU1BFQ0lFU10pIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgU1BFQ0lFUywge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgQ29uc3RydWN0b3IsIG5hbWUpIHtcbiAgaWYgKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29ycmVjdCAnICsgKG5hbWUgPyBuYW1lICsgJyAnIDogJycpICsgJ2ludm9jYXRpb24nKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yKSB7XG4gIHZhciByZXR1cm5NZXRob2QgPSBpdGVyYXRvclsncmV0dXJuJ107XG4gIGlmIChyZXR1cm5NZXRob2QgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBhbk9iamVjdChyZXR1cm5NZXRob2QuY2FsbChpdGVyYXRvcikpLnZhbHVlO1xuICB9XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzQXJyYXlJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbnZhciBSZXN1bHQgPSBmdW5jdGlvbiAoc3RvcHBlZCwgcmVzdWx0KSB7XG4gIHRoaXMuc3RvcHBlZCA9IHN0b3BwZWQ7XG4gIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIHVuYm91bmRGdW5jdGlvbiwgb3B0aW9ucykge1xuICB2YXIgdGhhdCA9IG9wdGlvbnMgJiYgb3B0aW9ucy50aGF0O1xuICB2YXIgQVNfRU5UUklFUyA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5BU19FTlRSSUVTKTtcbiAgdmFyIElTX0lURVJBVE9SID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklTX0lURVJBVE9SKTtcbiAgdmFyIElOVEVSUlVQVEVEID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklOVEVSUlVQVEVEKTtcbiAgdmFyIGZuID0gYmluZCh1bmJvdW5kRnVuY3Rpb24sIHRoYXQsIDEgKyBBU19FTlRSSUVTICsgSU5URVJSVVBURUQpO1xuICB2YXIgaXRlcmF0b3IsIGl0ZXJGbiwgaW5kZXgsIGxlbmd0aCwgcmVzdWx0LCBuZXh0LCBzdGVwO1xuXG4gIHZhciBzdG9wID0gZnVuY3Rpb24gKGNvbmRpdGlvbikge1xuICAgIGlmIChpdGVyYXRvcikgaXRlcmF0b3JDbG9zZShpdGVyYXRvcik7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodHJ1ZSwgY29uZGl0aW9uKTtcbiAgfTtcblxuICB2YXIgY2FsbEZuID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKEFTX0VOVFJJRVMpIHtcbiAgICAgIGFuT2JqZWN0KHZhbHVlKTtcbiAgICAgIHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlWzBdLCB2YWx1ZVsxXSwgc3RvcCkgOiBmbih2YWx1ZVswXSwgdmFsdWVbMV0pO1xuICAgIH0gcmV0dXJuIElOVEVSUlVQVEVEID8gZm4odmFsdWUsIHN0b3ApIDogZm4odmFsdWUpO1xuICB9O1xuXG4gIGlmIChJU19JVEVSQVRPUikge1xuICAgIGl0ZXJhdG9yID0gaXRlcmFibGU7XG4gIH0gZWxzZSB7XG4gICAgaXRlckZuID0gZ2V0SXRlcmF0b3JNZXRob2QoaXRlcmFibGUpO1xuICAgIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcignVGFyZ2V0IGlzIG5vdCBpdGVyYWJsZScpO1xuICAgIC8vIG9wdGltaXNhdGlvbiBmb3IgYXJyYXkgaXRlcmF0b3JzXG4gICAgaWYgKGlzQXJyYXlJdGVyYXRvck1ldGhvZChpdGVyRm4pKSB7XG4gICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gdG9MZW5ndGgoaXRlcmFibGUubGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbEZuKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuICAgICAgfSByZXR1cm4gbmV3IFJlc3VsdChmYWxzZSk7XG4gICAgfVxuICAgIGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpO1xuICB9XG5cbiAgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7XG4gIHdoaWxlICghKHN0ZXAgPSBuZXh0LmNhbGwoaXRlcmF0b3IpKS5kb25lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGNhbGxGbihzdGVwLnZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT0gJ29iamVjdCcgJiYgcmVzdWx0ICYmIHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgfSByZXR1cm4gbmV3IFJlc3VsdChmYWxzZSk7XG59O1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBjYWxsZWQgPSAwO1xuICB2YXIgaXRlcmF0b3JXaXRoUmV0dXJuID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6ICEhY2FsbGVkKysgfTtcbiAgICB9LFxuICAgICdyZXR1cm4nOiBmdW5jdGlvbiAoKSB7XG4gICAgICBTQUZFX0NMT1NJTkcgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgaXRlcmF0b3JXaXRoUmV0dXJuW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShpdGVyYXRvcldpdGhSZXR1cm4sIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIFNLSVBfQ0xPU0lORykge1xuICBpZiAoIVNLSVBfQ0xPU0lORyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBJVEVSQVRJT05fU1VQUE9SVCA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICBvYmplY3RbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IElURVJBVElPTl9TVVBQT1JUID0gdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXhlYyhvYmplY3QpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBJVEVSQVRJT05fU1VQUE9SVDtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtZnVuY3Rpb24nKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxuLy8gYFNwZWNpZXNDb25zdHJ1Y3RvcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zcGVjaWVzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGRlZmF1bHRDb25zdHJ1Y3Rvcikge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBkZWZhdWx0Q29uc3RydWN0b3IgOiBhRnVuY3Rpb24oUyk7XG59O1xuIiwidmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IC8oaXBob25lfGlwb2R8aXBhZCkuKmFwcGxld2Via2l0L2kudGVzdCh1c2VyQWdlbnQpO1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gY2xhc3NvZihnbG9iYWwucHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIElTX0lPUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtaW9zJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZScpO1xuXG52YXIgbG9jYXRpb24gPSBnbG9iYWwubG9jYXRpb247XG52YXIgc2V0ID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhciA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBkZWZlciwgY2hhbm5lbCwgcG9ydDtcblxudmFyIHJ1biA9IGZ1bmN0aW9uIChpZCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xuXG52YXIgcnVubmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcnVuKGlkKTtcbiAgfTtcbn07XG5cbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4oZXZlbnQuZGF0YSk7XG59O1xuXG52YXIgcG9zdCA9IGZ1bmN0aW9uIChpZCkge1xuICAvLyBvbGQgZW5naW5lcyBoYXZlIG5vdCBsb2NhdGlvbi5vcmlnaW5cbiAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsIGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3QpO1xufTtcblxuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXQgfHwgIWNsZWFyKSB7XG4gIHNldCA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICAodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSkuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9O1xuICAgIGRlZmVyKGNvdW50ZXIpO1xuICAgIHJldHVybiBjb3VudGVyO1xuICB9O1xuICBjbGVhciA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChJU19OT0RFKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2socnVubmVyKGlkKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhydW5uZXIoaWQpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIC8vIGV4Y2VwdCBpT1MgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjI0XG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwgJiYgIUlTX0lPUykge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gYmluZChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoXG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiZcbiAgICB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJlxuICAgICFnbG9iYWwuaW1wb3J0U2NyaXB0cyAmJlxuICAgIGxvY2F0aW9uICYmIGxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonICYmXG4gICAgIWZhaWxzKHBvc3QpXG4gICkge1xuICAgIGRlZmVyID0gcG9zdDtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChydW5uZXIoaWQpLCAwKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgY2xlYXI6IGNsZWFyXG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgSVNfSU9TID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG5cbnZhciBNdXRhdGlvbk9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbi8vIE5vZGUuanMgMTEgc2hvd3MgRXhwZXJpbWVudGFsV2FybmluZyBvbiBnZXR0aW5nIGBxdWV1ZU1pY3JvdGFza2BcbnZhciBxdWV1ZU1pY3JvdGFza0Rlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAncXVldWVNaWNyb3Rhc2snKTtcbnZhciBxdWV1ZU1pY3JvdGFzayA9IHF1ZXVlTWljcm90YXNrRGVzY3JpcHRvciAmJiBxdWV1ZU1pY3JvdGFza0Rlc2NyaXB0b3IudmFsdWU7XG5cbnZhciBmbHVzaCwgaGVhZCwgbGFzdCwgbm90aWZ5LCB0b2dnbGUsIG5vZGUsIHByb21pc2UsIHRoZW47XG5cbi8vIG1vZGVybiBlbmdpbmVzIGhhdmUgcXVldWVNaWNyb3Rhc2sgbWV0aG9kXG5pZiAoIXF1ZXVlTWljcm90YXNrKSB7XG4gIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChJU19OT0RFICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGhlYWQpIG5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIGlmICghSVNfSU9TICYmICFJU19OT0RFICYmIE11dGF0aW9uT2JzZXJ2ZXIgJiYgZG9jdW1lbnQpIHtcbiAgICB0b2dnbGUgPSB0cnVlO1xuICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmIChQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIC8vIFByb21pc2UucmVzb2x2ZSB3aXRob3V0IGFuIGFyZ3VtZW50IHRocm93cyBhbiBlcnJvciBpbiBMRyBXZWJPUyAyXG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIHRoZW4gPSBwcm9taXNlLnRoZW47XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGhlbi5jYWxsKHByb21pc2UsIGZsdXNoKTtcbiAgICB9O1xuICAvLyBOb2RlLmpzIHdpdGhvdXQgcHJvbWlzZXNcbiAgfSBlbHNlIGlmIChJU19OT0RFKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcbiAgICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBxdWV1ZU1pY3JvdGFzayB8fCBmdW5jdGlvbiAoZm4pIHtcbiAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gIGlmIChsYXN0KSBsYXN0Lm5leHQgPSB0YXNrO1xuICBpZiAoIWhlYWQpIHtcbiAgICBoZWFkID0gdGFzaztcbiAgICBub3RpZnkoKTtcbiAgfSBsYXN0ID0gdGFzaztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtZnVuY3Rpb24nKTtcblxudmFyIFByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgdmFyIHJlc29sdmUsIHJlamVjdDtcbiAgdGhpcy5wcm9taXNlID0gbmV3IEMoZnVuY3Rpb24gKCQkcmVzb2x2ZSwgJCRyZWplY3QpIHtcbiAgICBpZiAocmVzb2x2ZSAhPT0gdW5kZWZpbmVkIHx8IHJlamVjdCAhPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoJ0JhZCBQcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTtcbiAgICByZWplY3QgPSAkJHJlamVjdDtcbiAgfSk7XG4gIHRoaXMucmVzb2x2ZSA9IGFGdW5jdGlvbihyZXNvbHZlKTtcbiAgdGhpcy5yZWplY3QgPSBhRnVuY3Rpb24ocmVqZWN0KTtcbn07XG5cbi8vIDI1LjQuMS41IE5ld1Byb21pc2VDYXBhYmlsaXR5KEMpXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYSwgYikge1xuICB2YXIgY29uc29sZSA9IGdsb2JhbC5jb25zb2xlO1xuICBpZiAoY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGNvbnNvbGUuZXJyb3IoYSkgOiBjb25zb2xlLmVycm9yKGEsIGIpO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiB7IGVycm9yOiBmYWxzZSwgdmFsdWU6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7IGVycm9yOiB0cnVlLCB2YWx1ZTogZXJyb3IgfTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIE5hdGl2ZVByb21pc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXByb21pc2UtY29uc3RydWN0b3InKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lLWFsbCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc3BlY2llcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21pY3JvdGFzaycpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIGhvc3RSZXBvcnRFcnJvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFBST01JU0UpO1xudmFyIFByb21pc2VDb25zdHJ1Y3RvciA9IE5hdGl2ZVByb21pc2U7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgJGZldGNoID0gZ2V0QnVpbHRJbignZmV0Y2gnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG52YXIgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHk7XG52YXIgRElTUEFUQ0hfRVZFTlQgPSAhIShkb2N1bWVudCAmJiBkb2N1bWVudC5jcmVhdGVFdmVudCAmJiBnbG9iYWwuZGlzcGF0Y2hFdmVudCk7XG52YXIgTkFUSVZFX1JFSkVDVElPTl9FVkVOVCA9IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJztcbnZhciBVTkhBTkRMRURfUkVKRUNUSU9OID0gJ3VuaGFuZGxlZHJlamVjdGlvbic7XG52YXIgUkVKRUNUSU9OX0hBTkRMRUQgPSAncmVqZWN0aW9uaGFuZGxlZCc7XG52YXIgUEVORElORyA9IDA7XG52YXIgRlVMRklMTEVEID0gMTtcbnZhciBSRUpFQ1RFRCA9IDI7XG52YXIgSEFORExFRCA9IDE7XG52YXIgVU5IQU5ETEVEID0gMjtcbnZhciBJbnRlcm5hbCwgT3duUHJvbWlzZUNhcGFiaWxpdHksIFByb21pc2VXcmFwcGVyLCBuYXRpdmVUaGVuO1xuXG52YXIgRk9SQ0VEID0gaXNGb3JjZWQoUFJPTUlTRSwgZnVuY3Rpb24gKCkge1xuICB2YXIgR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSA9IGluc3BlY3RTb3VyY2UoUHJvbWlzZUNvbnN0cnVjdG9yKSAhPT0gU3RyaW5nKFByb21pc2VDb25zdHJ1Y3Rvcik7XG4gIGlmICghR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSkge1xuICAgIC8vIFY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD04MzA1NjVcbiAgICAvLyBXZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICAgIGlmIChWOF9WRVJTSU9OID09PSA2NikgcmV0dXJuIHRydWU7XG4gICAgLy8gVW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIGlmICghSVNfTk9ERSAmJiAhTkFUSVZFX1JFSkVDVElPTl9FVkVOVCkgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gV2UgbmVlZCBQcm9taXNlI2ZpbmFsbHkgaW4gdGhlIHB1cmUgdmVyc2lvbiBmb3IgcHJldmVudGluZyBwcm90b3R5cGUgcG9sbHV0aW9uXG4gIGlmIChJU19QVVJFICYmICFQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlWydmaW5hbGx5J10pIHJldHVybiB0cnVlO1xuICAvLyBXZSBjYW4ndCB1c2UgQEBzcGVjaWVzIGZlYXR1cmUgZGV0ZWN0aW9uIGluIFY4IHNpbmNlIGl0IGNhdXNlc1xuICAvLyBkZW9wdGltaXphdGlvbiBhbmQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxuICBpZiAoVjhfVkVSU0lPTiA+PSA1MSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoUHJvbWlzZUNvbnN0cnVjdG9yKSkgcmV0dXJuIGZhbHNlO1xuICAvLyBEZXRlY3QgY29ycmVjdG5lc3Mgb2Ygc3ViY2xhc3Npbmcgd2l0aCBAQHNwZWNpZXMgc3VwcG9ydFxuICB2YXIgcHJvbWlzZSA9IFByb21pc2VDb25zdHJ1Y3Rvci5yZXNvbHZlKDEpO1xuICB2YXIgRmFrZVByb21pc2UgPSBmdW5jdGlvbiAoZXhlYykge1xuICAgIGV4ZWMoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xuICB9O1xuICB2YXIgY29uc3RydWN0b3IgPSBwcm9taXNlLmNvbnN0cnVjdG9yID0ge307XG4gIGNvbnN0cnVjdG9yW1NQRUNJRVNdID0gRmFrZVByb21pc2U7XG4gIHJldHVybiAhKHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pIGluc3RhbmNlb2YgRmFrZVByb21pc2UpO1xufSk7XG5cbnZhciBJTkNPUlJFQ1RfSVRFUkFUSU9OID0gRk9SQ0VEIHx8ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIFByb21pc2VDb25zdHJ1Y3Rvci5hbGwoaXRlcmFibGUpWydjYXRjaCddKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG5cbnZhciBub3RpZnkgPSBmdW5jdGlvbiAoc3RhdGUsIGlzUmVqZWN0KSB7XG4gIGlmIChzdGF0ZS5ub3RpZmllZCkgcmV0dXJuO1xuICBzdGF0ZS5ub3RpZmllZCA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHN0YXRlLnJlYWN0aW9ucztcbiAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgICB2YXIgb2sgPSBzdGF0ZS5zdGF0ZSA9PSBGVUxGSUxMRUQ7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gY2hhaW5baW5kZXgrK107XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5yZWplY3Rpb24gPT09IFVOSEFORExFRCkgb25IYW5kbGVVbmhhbmRsZWQoc3RhdGUpO1xuICAgICAgICAgICAgc3RhdGUucmVqZWN0aW9uID0gSEFORExFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gY2FuIHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICBzdGF0ZS5yZWFjdGlvbnMgPSBbXTtcbiAgICBzdGF0ZS5ub3RpZmllZCA9IGZhbHNlO1xuICAgIGlmIChpc1JlamVjdCAmJiAhc3RhdGUucmVqZWN0aW9uKSBvblVuaGFuZGxlZChzdGF0ZSk7XG4gIH0pO1xufTtcblxudmFyIGRpc3BhdGNoRXZlbnQgPSBmdW5jdGlvbiAobmFtZSwgcHJvbWlzZSwgcmVhc29uKSB7XG4gIHZhciBldmVudCwgaGFuZGxlcjtcbiAgaWYgKERJU1BBVENIX0VWRU5UKSB7XG4gICAgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICBldmVudC5wcm9taXNlID0gcHJvbWlzZTtcbiAgICBldmVudC5yZWFzb24gPSByZWFzb247XG4gICAgZXZlbnQuaW5pdEV2ZW50KG5hbWUsIGZhbHNlLCB0cnVlKTtcbiAgICBnbG9iYWwuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH0gZWxzZSBldmVudCA9IHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiByZWFzb24gfTtcbiAgaWYgKCFOQVRJVkVfUkVKRUNUSU9OX0VWRU5UICYmIChoYW5kbGVyID0gZ2xvYmFsWydvbicgKyBuYW1lXSkpIGhhbmRsZXIoZXZlbnQpO1xuICBlbHNlIGlmIChuYW1lID09PSBVTkhBTkRMRURfUkVKRUNUSU9OKSBob3N0UmVwb3J0RXJyb3JzKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24nLCByZWFzb24pO1xufTtcblxudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHN0YXRlLmZhY2FkZTtcbiAgICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgICB2YXIgSVNfVU5IQU5ETEVEID0gaXNVbmhhbmRsZWQoc3RhdGUpO1xuICAgIHZhciByZXN1bHQ7XG4gICAgaWYgKElTX1VOSEFORExFRCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChJU19OT0RFKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgIH0gZWxzZSBkaXNwYXRjaEV2ZW50KFVOSEFORExFRF9SRUpFQ1RJT04sIHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgLy8gQnJvd3NlcnMgc2hvdWxkIG5vdCB0cmlnZ2VyIGByZWplY3Rpb25IYW5kbGVkYCBldmVudCBpZiBpdCB3YXMgaGFuZGxlZCBoZXJlLCBOb2RlSlMgLSBzaG91bGRcbiAgICAgIHN0YXRlLnJlamVjdGlvbiA9IElTX05PREUgfHwgaXNVbmhhbmRsZWQoc3RhdGUpID8gVU5IQU5ETEVEIDogSEFORExFRDtcbiAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHRocm93IHJlc3VsdC52YWx1ZTtcbiAgICB9XG4gIH0pO1xufTtcblxudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5yZWplY3Rpb24gIT09IEhBTkRMRUQgJiYgIXN0YXRlLnBhcmVudDtcbn07XG5cbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBzdGF0ZS5mYWNhZGU7XG4gICAgaWYgKElTX05PREUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBkaXNwYXRjaEV2ZW50KFJFSkVDVElPTl9IQU5ETEVELCBwcm9taXNlLCBzdGF0ZS52YWx1ZSk7XG4gIH0pO1xufTtcblxudmFyIGJpbmQgPSBmdW5jdGlvbiAoZm4sIHN0YXRlLCB1bndyYXApIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGZuKHN0YXRlLCB2YWx1ZSwgdW53cmFwKTtcbiAgfTtcbn07XG5cbnZhciBpbnRlcm5hbFJlamVjdCA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUsIHVud3JhcCkge1xuICBpZiAoc3RhdGUuZG9uZSkgcmV0dXJuO1xuICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgaWYgKHVud3JhcCkgc3RhdGUgPSB1bndyYXA7XG4gIHN0YXRlLnZhbHVlID0gdmFsdWU7XG4gIHN0YXRlLnN0YXRlID0gUkVKRUNURUQ7XG4gIG5vdGlmeShzdGF0ZSwgdHJ1ZSk7XG59O1xuXG52YXIgaW50ZXJuYWxSZXNvbHZlID0gZnVuY3Rpb24gKHN0YXRlLCB2YWx1ZSwgdW53cmFwKSB7XG4gIGlmIChzdGF0ZS5kb25lKSByZXR1cm47XG4gIHN0YXRlLmRvbmUgPSB0cnVlO1xuICBpZiAodW53cmFwKSBzdGF0ZSA9IHVud3JhcDtcbiAgdHJ5IHtcbiAgICBpZiAoc3RhdGUuZmFjYWRlID09PSB2YWx1ZSkgdGhyb3cgVHlwZUVycm9yKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7XG4gICAgdmFyIHRoZW4gPSBpc1RoZW5hYmxlKHZhbHVlKTtcbiAgICBpZiAodGhlbikge1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHdyYXBwZXIgPSB7IGRvbmU6IGZhbHNlIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLFxuICAgICAgICAgICAgYmluZChpbnRlcm5hbFJlc29sdmUsIHdyYXBwZXIsIHN0YXRlKSxcbiAgICAgICAgICAgIGJpbmQoaW50ZXJuYWxSZWplY3QsIHdyYXBwZXIsIHN0YXRlKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaW50ZXJuYWxSZWplY3Qod3JhcHBlciwgZXJyb3IsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnZhbHVlID0gdmFsdWU7XG4gICAgICBzdGF0ZS5zdGF0ZSA9IEZVTEZJTExFRDtcbiAgICAgIG5vdGlmeShzdGF0ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpbnRlcm5hbFJlamVjdCh7IGRvbmU6IGZhbHNlIH0sIGVycm9yLCBzdGF0ZSk7XG4gIH1cbn07XG5cbi8vIGNvbnN0cnVjdG9yIHBvbHlmaWxsXG5pZiAoRk9SQ0VEKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gIFByb21pc2VDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsIFByb21pc2VDb25zdHJ1Y3RvciwgUFJPTUlTRSk7XG4gICAgYUZ1bmN0aW9uKGV4ZWN1dG9yKTtcbiAgICBJbnRlcm5hbC5jYWxsKHRoaXMpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGJpbmQoaW50ZXJuYWxSZXNvbHZlLCBzdGF0ZSksIGJpbmQoaW50ZXJuYWxSZWplY3QsIHN0YXRlKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGludGVybmFsUmVqZWN0KHN0YXRlLCBlcnJvcik7XG4gICAgfVxuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgSW50ZXJuYWwgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgICB0eXBlOiBQUk9NSVNFLFxuICAgICAgZG9uZTogZmFsc2UsXG4gICAgICBub3RpZmllZDogZmFsc2UsXG4gICAgICBwYXJlbnQ6IGZhbHNlLFxuICAgICAgcmVhY3Rpb25zOiBbXSxcbiAgICAgIHJlamVjdGlvbjogZmFsc2UsXG4gICAgICBzdGF0ZTogUEVORElORyxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICB9KTtcbiAgfTtcbiAgSW50ZXJuYWwucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZSwge1xuICAgIC8vIGBQcm9taXNlLnByb3RvdHlwZS50aGVuYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS50aGVuXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUodGhpcyk7XG4gICAgICB2YXIgcmVhY3Rpb24gPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgUHJvbWlzZUNvbnN0cnVjdG9yKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IElTX05PREUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHN0YXRlLnBhcmVudCA9IHRydWU7XG4gICAgICBzdGF0ZS5yZWFjdGlvbnMucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAoc3RhdGUuc3RhdGUgIT0gUEVORElORykgbm90aWZ5KHN0YXRlLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIGBQcm9taXNlLnByb3RvdHlwZS5jYXRjaGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hcbiAgICAnY2F0Y2gnOiBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cbiAgfSk7XG4gIE93blByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gbmV3IEludGVybmFsKCk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZShwcm9taXNlKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGJpbmQoaW50ZXJuYWxSZXNvbHZlLCBzdGF0ZSk7XG4gICAgdGhpcy5yZWplY3QgPSBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09IFByb21pc2VDb25zdHJ1Y3RvciB8fCBDID09PSBQcm9taXNlV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xuXG4gIGlmICghSVNfUFVSRSAmJiB0eXBlb2YgTmF0aXZlUHJvbWlzZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgbmF0aXZlVGhlbiA9IE5hdGl2ZVByb21pc2UucHJvdG90eXBlLnRoZW47XG5cbiAgICAvLyB3cmFwIG5hdGl2ZSBQcm9taXNlI3RoZW4gZm9yIG5hdGl2ZSBhc3luYyBmdW5jdGlvbnNcbiAgICByZWRlZmluZShOYXRpdmVQcm9taXNlLnByb3RvdHlwZSwgJ3RoZW4nLCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2VDb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIG5hdGl2ZVRoZW4uY2FsbCh0aGF0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSkudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY0MFxuICAgIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xuXG4gICAgLy8gd3JhcCBmZXRjaCByZXN1bHRcbiAgICBpZiAodHlwZW9mICRmZXRjaCA9PSAnZnVuY3Rpb24nKSAkKHsgZ2xvYmFsOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICBmZXRjaDogZnVuY3Rpb24gZmV0Y2goaW5wdXQgLyogLCBpbml0ICovKSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShQcm9taXNlQ29uc3RydWN0b3IsICRmZXRjaC5hcHBseShnbG9iYWwsIGFyZ3VtZW50cykpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbiQoeyBnbG9iYWw6IHRydWUsIHdyYXA6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgUHJvbWlzZTogUHJvbWlzZUNvbnN0cnVjdG9yXG59KTtcblxuc2V0VG9TdHJpbmdUYWcoUHJvbWlzZUNvbnN0cnVjdG9yLCBQUk9NSVNFLCBmYWxzZSwgdHJ1ZSk7XG5zZXRTcGVjaWVzKFBST01JU0UpO1xuXG5Qcm9taXNlV3JhcHBlciA9IGdldEJ1aWx0SW4oUFJPTUlTRSk7XG5cbi8vIHN0YXRpY3NcbiQoeyB0YXJnZXQ6IFBST01JU0UsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gYFByb21pc2UucmVqZWN0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcHJvbWlzZS5yZWplY3RcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgY2FwYWJpbGl0eS5yZWplY3QuY2FsbCh1bmRlZmluZWQsIHIpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuXG4kKHsgdGFyZ2V0OiBQUk9NSVNFLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfHwgRk9SQ0VEIH0sIHtcbiAgLy8gYFByb21pc2UucmVzb2x2ZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXByb21pc2UucmVzb2x2ZVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoSVNfUFVSRSAmJiB0aGlzID09PSBQcm9taXNlV3JhcHBlciA/IFByb21pc2VDb25zdHJ1Y3RvciA6IHRoaXMsIHgpO1xuICB9XG59KTtcblxuJCh7IHRhcmdldDogUFJPTUlTRSwgc3RhdDogdHJ1ZSwgZm9yY2VkOiBJTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgLy8gYFByb21pc2UuYWxsYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRwcm9taXNlUmVzb2x2ZSA9IGFGdW5jdGlvbihDLnJlc29sdmUpO1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICAkcHJvbWlzZVJlc29sdmUuY2FsbChDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIGBQcm9taXNlLnJhY2VgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJhY2VcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHByb21pc2VSZXNvbHZlID0gYUZ1bmN0aW9uKEMucmVzb2x2ZSk7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICAkcHJvbWlzZVJlc29sdmUuY2FsbChDLCBwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LmRvdEFsbCkgcmVzdWx0ICs9ICdzJztcbiAgaWYgKHRoYXQudW5pY29kZSkgcmVzdWx0ICs9ICd1JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZmxhZ3MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzJyk7XG5cbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG52YXIgbmF0aXZlVG9TdHJpbmcgPSBSZWdFeHBQcm90b3R5cGVbVE9fU1RSSU5HXTtcblxudmFyIE5PVF9HRU5FUklDID0gZmFpbHMoZnVuY3Rpb24gKCkgeyByZXR1cm4gbmF0aXZlVG9TdHJpbmcuY2FsbCh7IHNvdXJjZTogJ2EnLCBmbGFnczogJ2InIH0pICE9ICcvYS9iJzsgfSk7XG4vLyBGRjQ0LSBSZWdFeHAjdG9TdHJpbmcgaGFzIGEgd3JvbmcgbmFtZVxudmFyIElOQ09SUkVDVF9OQU1FID0gbmF0aXZlVG9TdHJpbmcubmFtZSAhPSBUT19TVFJJTkc7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbmlmIChOT1RfR0VORVJJQyB8fCBJTkNPUlJFQ1RfTkFNRSkge1xuICByZWRlZmluZShSZWdFeHAucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIHAgPSBTdHJpbmcoUi5zb3VyY2UpO1xuICAgIHZhciByZiA9IFIuZmxhZ3M7XG4gICAgdmFyIGYgPSBTdHJpbmcocmYgPT09IHVuZGVmaW5lZCAmJiBSIGluc3RhbmNlb2YgUmVnRXhwICYmICEoJ2ZsYWdzJyBpbiBSZWdFeHBQcm90b3R5cGUpID8gZmxhZ3MuY2FsbChSKSA6IHJmKTtcbiAgICByZXR1cm4gJy8nICsgcCArICcvJyArIGY7XG4gIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyBjb2RlUG9pbnRBdCwgYXQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChDT05WRVJUX1RPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBwb3MpIHtcbiAgICB2YXIgUyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgICB2YXIgZmlyc3QsIHNlY29uZDtcbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGZpcnN0ID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgICByZXR1cm4gZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwgcG9zaXRpb24gKyAxID09PSBzaXplXG4gICAgICB8fCAoc2Vjb25kID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgICA/IENPTlZFUlRfVE9fU1RSSU5HID8gUy5jaGFyQXQocG9zaXRpb24pIDogZmlyc3RcbiAgICAgICAgOiBDT05WRVJUX1RPX1NUUklORyA/IFMuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgMikgOiAoZmlyc3QgLSAweEQ4MDAgPDwgMTApICsgKHNlY29uZCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdFxuICBjb2RlQXQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxuICBjaGFyQXQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yJyk7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUtQEBpdGVyYXRvclxuZGVmaW5lSXRlcmF0b3IoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFNUUklOR19JVEVSQVRPUixcbiAgICBzdHJpbmc6IFN0cmluZyhpdGVyYXRlZCksXG4gICAgaW5kZXg6IDBcbiAgfSk7XG4vLyBgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSBjaGFyQXQoc3RyaW5nLCBpbmRleCk7XG4gIHN0YXRlLmluZGV4ICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG4iLCIvLyBpdGVyYWJsZSBET00gY29sbGVjdGlvbnNcbi8vIGZsYWcgLSBgaXRlcmFibGVgIGludGVyZmFjZSAtICdlbnRyaWVzJywgJ2tleXMnLCAndmFsdWVzJywgJ2ZvckVhY2gnIG1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0ge1xuICBDU1NSdWxlTGlzdDogMCxcbiAgQ1NTU3R5bGVEZWNsYXJhdGlvbjogMCxcbiAgQ1NTVmFsdWVMaXN0OiAwLFxuICBDbGllbnRSZWN0TGlzdDogMCxcbiAgRE9NUmVjdExpc3Q6IDAsXG4gIERPTVN0cmluZ0xpc3Q6IDAsXG4gIERPTVRva2VuTGlzdDogMSxcbiAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IDAsXG4gIEZpbGVMaXN0OiAwLFxuICBIVE1MQWxsQ29sbGVjdGlvbjogMCxcbiAgSFRNTENvbGxlY3Rpb246IDAsXG4gIEhUTUxGb3JtRWxlbWVudDogMCxcbiAgSFRNTFNlbGVjdEVsZW1lbnQ6IDAsXG4gIE1lZGlhTGlzdDogMCxcbiAgTWltZVR5cGVBcnJheTogMCxcbiAgTmFtZWROb2RlTWFwOiAwLFxuICBOb2RlTGlzdDogMSxcbiAgUGFpbnRSZXF1ZXN0TGlzdDogMCxcbiAgUGx1Z2luOiAwLFxuICBQbHVnaW5BcnJheTogMCxcbiAgU1ZHTGVuZ3RoTGlzdDogMCxcbiAgU1ZHTnVtYmVyTGlzdDogMCxcbiAgU1ZHUGF0aFNlZ0xpc3Q6IDAsXG4gIFNWR1BvaW50TGlzdDogMCxcbiAgU1ZHU3RyaW5nTGlzdDogMCxcbiAgU1ZHVHJhbnNmb3JtTGlzdDogMCxcbiAgU291cmNlQnVmZmVyTGlzdDogMCxcbiAgU3R5bGVTaGVldExpc3Q6IDAsXG4gIFRleHRUcmFja0N1ZUxpc3Q6IDAsXG4gIFRleHRUcmFja0xpc3Q6IDAsXG4gIFRvdWNoTGlzdDogMFxufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgRE9NSXRlcmFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMnKTtcbnZhciBmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZvci1lYWNoJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xuXG5mb3IgKHZhciBDT0xMRUNUSU9OX05BTUUgaW4gRE9NSXRlcmFibGVzKSB7XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW0NPTExFQ1RJT05fTkFNRV07XG4gIHZhciBDb2xsZWN0aW9uUHJvdG90eXBlID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgLy8gc29tZSBDaHJvbWUgdmVyc2lvbnMgaGF2ZSBub24tY29uZmlndXJhYmxlIG1ldGhvZHMgb24gRE9NVG9rZW5MaXN0XG4gIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlICYmIENvbGxlY3Rpb25Qcm90b3R5cGUuZm9yRWFjaCAhPT0gZm9yRWFjaCkgdHJ5IHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoQ29sbGVjdGlvblByb3RvdHlwZSwgJ2ZvckVhY2gnLCBmb3JFYWNoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBDb2xsZWN0aW9uUHJvdG90eXBlLmZvckVhY2ggPSBmb3JFYWNoO1xuICB9XG59XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERPTUl0ZXJhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb20taXRlcmFibGVzJyk7XG52YXIgQXJyYXlJdGVyYXRvck1ldGhvZHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciBBcnJheVZhbHVlcyA9IEFycmF5SXRlcmF0b3JNZXRob2RzLnZhbHVlcztcblxuZm9yICh2YXIgQ09MTEVDVElPTl9OQU1FIGluIERPTUl0ZXJhYmxlcykge1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtDT0xMRUNUSU9OX05BTUVdO1xuICB2YXIgQ29sbGVjdGlvblByb3RvdHlwZSA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlKSB7XG4gICAgLy8gc29tZSBDaHJvbWUgdmVyc2lvbnMgaGF2ZSBub24tY29uZmlndXJhYmxlIG1ldGhvZHMgb24gRE9NVG9rZW5MaXN0XG4gICAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGVbSVRFUkFUT1JdICE9PSBBcnJheVZhbHVlcykgdHJ5IHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBJVEVSQVRPUiwgQXJyYXlWYWx1ZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBDb2xsZWN0aW9uUHJvdG90eXBlW0lURVJBVE9SXSA9IEFycmF5VmFsdWVzO1xuICAgIH1cbiAgICBpZiAoIUNvbGxlY3Rpb25Qcm90b3R5cGVbVE9fU1RSSU5HX1RBR10pIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCBDT0xMRUNUSU9OX05BTUUpO1xuICAgIH1cbiAgICBpZiAoRE9NSXRlcmFibGVzW0NPTExFQ1RJT05fTkFNRV0pIGZvciAodmFyIE1FVEhPRF9OQU1FIGluIEFycmF5SXRlcmF0b3JNZXRob2RzKSB7XG4gICAgICAvLyBzb21lIENocm9tZSB2ZXJzaW9ucyBoYXZlIG5vbi1jb25maWd1cmFibGUgbWV0aG9kcyBvbiBET01Ub2tlbkxpc3RcbiAgICAgIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlW01FVEhPRF9OQU1FXSAhPT0gQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdKSB0cnkge1xuICAgICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoQ29sbGVjdGlvblByb3RvdHlwZSwgTUVUSE9EX05BTUUsIEFycmF5SXRlcmF0b3JNZXRob2RzW01FVEhPRF9OQU1FXSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBDb2xsZWN0aW9uUHJvdG90eXBlW01FVEhPRF9OQU1FXSA9IEFycmF5SXRlcmF0b3JNZXRob2RzW01FVEhPRF9OQU1FXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZjsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbnZhciBydW50aW1lID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCxcbiAgICBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgKTtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKTtcbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgaWYgKFByb21pc2VJbXBsID09PSB2b2lkIDApIFByb21pc2VJbXBsID0gUHJvbWlzZTtcblxuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSxcbiAgICAgIFByb21pc2VJbXBsXG4gICAgKTtcblxuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWVcIik7XG4iLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7XG4gIHRyeSB7XG4gICAgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpO1xuICAgIHZhciB2YWx1ZSA9IGluZm8udmFsdWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaW5mby5kb25lKSB7XG4gICAgcmVzb2x2ZSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICBhcmdzID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7XG5cbiAgICAgIGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gX3Rocm93KGVycikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgIH1cblxuICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfYXN5bmNUb0dlbmVyYXRvcjsiLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG52YXIgYXJyYXlNZXRob2RVc2VzVG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLXVzZXMtdG8tbGVuZ3RoJyk7XG5cbnZhciBuYXRpdmVJbmRleE9mID0gW10uaW5kZXhPZjtcblxudmFyIE5FR0FUSVZFX1pFUk8gPSAhIW5hdGl2ZUluZGV4T2YgJiYgMSAvIFsxXS5pbmRleE9mKDEsIC0wKSA8IDA7XG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ2luZGV4T2YnKTtcbnZhciBVU0VTX1RPX0xFTkdUSCA9IGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoKCdpbmRleE9mJywgeyBBQ0NFU1NPUlM6IHRydWUsIDE6IDAgfSk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogTkVHQVRJVkVfWkVSTyB8fCAhU1RSSUNUX01FVEhPRCB8fCAhVVNFU19UT19MRU5HVEggfSwge1xuICBpbmRleE9mOiBmdW5jdGlvbiBpbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuIE5FR0FUSVZFX1pFUk9cbiAgICAgIC8vIGNvbnZlcnQgLTAgdG8gKzBcbiAgICAgID8gbmF0aXZlSW5kZXhPZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IDBcbiAgICAgIDogJGluZGV4T2YodGhpcywgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIG5hdGl2ZUpvaW4gPSBbXS5qb2luO1xuXG52YXIgRVMzX1NUUklOR1MgPSBJbmRleGVkT2JqZWN0ICE9IE9iamVjdDtcbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgnam9pbicsICcsJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuam9pbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuam9pblxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogRVMzX1NUUklOR1MgfHwgIVNUUklDVF9NRVRIT0QgfSwge1xuICBqb2luOiBmdW5jdGlvbiBqb2luKHNlcGFyYXRvcikge1xuICAgIHJldHVybiBuYXRpdmVKb2luLmNhbGwodG9JbmRleGVkT2JqZWN0KHRoaXMpLCBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCA/ICcsJyA6IHNlcGFyYXRvcik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJG1hcCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5tYXA7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xudmFyIGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC11c2VzLXRvLWxlbmd0aCcpO1xuXG52YXIgSEFTX1NQRUNJRVNfU1VQUE9SVCA9IGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ21hcCcpO1xuLy8gRkY0OS0gaXNzdWVcbnZhciBVU0VTX1RPX0xFTkdUSCA9IGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoKCdtYXAnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLm1hcFxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQHNwZWNpZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFIQVNfU1BFQ0lFU19TVVBQT1JUIHx8ICFVU0VTX1RPX0xFTkdUSCB9LCB7XG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRtYXAodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgRGF0YVZpZXcgIT09ICd1bmRlZmluZWQnO1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBUb0luZGV4YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW5kZXhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgdmFyIG51bWJlciA9IHRvSW50ZWdlcihpdCk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChudW1iZXIpO1xuICBpZiAobnVtYmVyICE9PSBsZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIGxlbmd0aCBvciBpbmRleCcpO1xuICByZXR1cm4gbGVuZ3RoO1xufTtcbiIsIi8vIElFRUU3NTQgY29udmVyc2lvbnMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9pZWVlNzU0XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93LXJlc3RyaWN0ZWQtbmFtZXNcbnZhciBJbmZpbml0eSA9IDEgLyAwO1xudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIHBvdyA9IE1hdGgucG93O1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBMTjIgPSBNYXRoLkxOMjtcblxudmFyIHBhY2sgPSBmdW5jdGlvbiAobnVtYmVyLCBtYW50aXNzYUxlbmd0aCwgYnl0ZXMpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShieXRlcyk7XG4gIHZhciBleHBvbmVudExlbmd0aCA9IGJ5dGVzICogOCAtIG1hbnRpc3NhTGVuZ3RoIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBleHBvbmVudExlbmd0aCkgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBydCA9IG1hbnRpc3NhTGVuZ3RoID09PSAyMyA/IHBvdygyLCAtMjQpIC0gcG93KDIsIC03NykgOiAwO1xuICB2YXIgc2lnbiA9IG51bWJlciA8IDAgfHwgbnVtYmVyID09PSAwICYmIDEgLyBudW1iZXIgPCAwID8gMSA6IDA7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBleHBvbmVudCwgbWFudGlzc2EsIGM7XG4gIG51bWJlciA9IGFicyhudW1iZXIpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIGlmIChudW1iZXIgIT0gbnVtYmVyIHx8IG51bWJlciA9PT0gSW5maW5pdHkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgbWFudGlzc2EgPSBudW1iZXIgIT0gbnVtYmVyID8gMSA6IDA7XG4gICAgZXhwb25lbnQgPSBlTWF4O1xuICB9IGVsc2Uge1xuICAgIGV4cG9uZW50ID0gZmxvb3IobG9nKG51bWJlcikgLyBMTjIpO1xuICAgIGlmIChudW1iZXIgKiAoYyA9IHBvdygyLCAtZXhwb25lbnQpKSA8IDEpIHtcbiAgICAgIGV4cG9uZW50LS07XG4gICAgICBjICo9IDI7XG4gICAgfVxuICAgIGlmIChleHBvbmVudCArIGVCaWFzID49IDEpIHtcbiAgICAgIG51bWJlciArPSBydCAvIGM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG51bWJlciArPSBydCAqIHBvdygyLCAxIC0gZUJpYXMpO1xuICAgIH1cbiAgICBpZiAobnVtYmVyICogYyA+PSAyKSB7XG4gICAgICBleHBvbmVudCsrO1xuICAgICAgYyAvPSAyO1xuICAgIH1cbiAgICBpZiAoZXhwb25lbnQgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtYW50aXNzYSA9IDA7XG4gICAgICBleHBvbmVudCA9IGVNYXg7XG4gICAgfSBlbHNlIGlmIChleHBvbmVudCArIGVCaWFzID49IDEpIHtcbiAgICAgIG1hbnRpc3NhID0gKG51bWJlciAqIGMgLSAxKSAqIHBvdygyLCBtYW50aXNzYUxlbmd0aCk7XG4gICAgICBleHBvbmVudCA9IGV4cG9uZW50ICsgZUJpYXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hbnRpc3NhID0gbnVtYmVyICogcG93KDIsIGVCaWFzIC0gMSkgKiBwb3coMiwgbWFudGlzc2FMZW5ndGgpO1xuICAgICAgZXhwb25lbnQgPSAwO1xuICAgIH1cbiAgfVxuICBmb3IgKDsgbWFudGlzc2FMZW5ndGggPj0gODsgYnVmZmVyW2luZGV4KytdID0gbWFudGlzc2EgJiAyNTUsIG1hbnRpc3NhIC89IDI1NiwgbWFudGlzc2FMZW5ndGggLT0gOCk7XG4gIGV4cG9uZW50ID0gZXhwb25lbnQgPDwgbWFudGlzc2FMZW5ndGggfCBtYW50aXNzYTtcbiAgZXhwb25lbnRMZW5ndGggKz0gbWFudGlzc2FMZW5ndGg7XG4gIGZvciAoOyBleHBvbmVudExlbmd0aCA+IDA7IGJ1ZmZlcltpbmRleCsrXSA9IGV4cG9uZW50ICYgMjU1LCBleHBvbmVudCAvPSAyNTYsIGV4cG9uZW50TGVuZ3RoIC09IDgpO1xuICBidWZmZXJbLS1pbmRleF0gfD0gc2lnbiAqIDEyODtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn07XG5cbnZhciB1bnBhY2sgPSBmdW5jdGlvbiAoYnVmZmVyLCBtYW50aXNzYUxlbmd0aCkge1xuICB2YXIgYnl0ZXMgPSBidWZmZXIubGVuZ3RoO1xuICB2YXIgZXhwb25lbnRMZW5ndGggPSBieXRlcyAqIDggLSBtYW50aXNzYUxlbmd0aCAtIDE7XG4gIHZhciBlTWF4ID0gKDEgPDwgZXhwb25lbnRMZW5ndGgpIC0gMTtcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxO1xuICB2YXIgbkJpdHMgPSBleHBvbmVudExlbmd0aCAtIDc7XG4gIHZhciBpbmRleCA9IGJ5dGVzIC0gMTtcbiAgdmFyIHNpZ24gPSBidWZmZXJbaW5kZXgtLV07XG4gIHZhciBleHBvbmVudCA9IHNpZ24gJiAxMjc7XG4gIHZhciBtYW50aXNzYTtcbiAgc2lnbiA+Pj0gNztcbiAgZm9yICg7IG5CaXRzID4gMDsgZXhwb25lbnQgPSBleHBvbmVudCAqIDI1NiArIGJ1ZmZlcltpbmRleF0sIGluZGV4LS0sIG5CaXRzIC09IDgpO1xuICBtYW50aXNzYSA9IGV4cG9uZW50ICYgKDEgPDwgLW5CaXRzKSAtIDE7XG4gIGV4cG9uZW50ID4+PSAtbkJpdHM7XG4gIG5CaXRzICs9IG1hbnRpc3NhTGVuZ3RoO1xuICBmb3IgKDsgbkJpdHMgPiAwOyBtYW50aXNzYSA9IG1hbnRpc3NhICogMjU2ICsgYnVmZmVyW2luZGV4XSwgaW5kZXgtLSwgbkJpdHMgLT0gOCk7XG4gIGlmIChleHBvbmVudCA9PT0gMCkge1xuICAgIGV4cG9uZW50ID0gMSAtIGVCaWFzO1xuICB9IGVsc2UgaWYgKGV4cG9uZW50ID09PSBlTWF4KSB7XG4gICAgcmV0dXJuIG1hbnRpc3NhID8gTmFOIDogc2lnbiA/IC1JbmZpbml0eSA6IEluZmluaXR5O1xuICB9IGVsc2Uge1xuICAgIG1hbnRpc3NhID0gbWFudGlzc2EgKyBwb3coMiwgbWFudGlzc2FMZW5ndGgpO1xuICAgIGV4cG9uZW50ID0gZXhwb25lbnQgLSBlQmlhcztcbiAgfSByZXR1cm4gKHNpZ24gPyAtMSA6IDEpICogbWFudGlzc2EgKiBwb3coMiwgZXhwb25lbnQgLSBtYW50aXNzYUxlbmd0aCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgcGFjazogcGFjayxcbiAgdW5wYWNrOiB1bnBhY2tcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmlsbGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmlsbFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qICwgc3RhcnQgPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoYXJndW1lbnRzTGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgbGVuZ3RoKTtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50c0xlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBlbmRQb3MgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbmd0aCk7XG4gIHdoaWxlIChlbmRQb3MgPiBpbmRleCkgT1tpbmRleCsrXSA9IHZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgTkFUSVZFX0FSUkFZX0JVRkZFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItbmF0aXZlJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lLWFsbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9JbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleCcpO1xudmFyIElFRUU3NTQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWVlZTc1NCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJykuZjtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBhcnJheUZpbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZmlsbCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xudmFyIERBVEFfVklFVyA9ICdEYXRhVmlldyc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgV1JPTkdfTEVOR1RIID0gJ1dyb25nIGxlbmd0aCc7XG52YXIgV1JPTkdfSU5ERVggPSAnV3JvbmcgaW5kZXgnO1xudmFyIE5hdGl2ZUFycmF5QnVmZmVyID0gZ2xvYmFsW0FSUkFZX0JVRkZFUl07XG52YXIgJEFycmF5QnVmZmVyID0gTmF0aXZlQXJyYXlCdWZmZXI7XG52YXIgJERhdGFWaWV3ID0gZ2xvYmFsW0RBVEFfVklFV107XG52YXIgJERhdGFWaWV3UHJvdG90eXBlID0gJERhdGFWaWV3ICYmICREYXRhVmlld1tQUk9UT1RZUEVdO1xudmFyIE9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG52YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xuXG52YXIgcGFja0lFRUU3NTQgPSBJRUVFNzU0LnBhY2s7XG52YXIgdW5wYWNrSUVFRTc1NCA9IElFRUU3NTQudW5wYWNrO1xuXG52YXIgcGFja0ludDggPSBmdW5jdGlvbiAobnVtYmVyKSB7XG4gIHJldHVybiBbbnVtYmVyICYgMHhGRl07XG59O1xuXG52YXIgcGFja0ludDE2ID0gZnVuY3Rpb24gKG51bWJlcikge1xuICByZXR1cm4gW251bWJlciAmIDB4RkYsIG51bWJlciA+PiA4ICYgMHhGRl07XG59O1xuXG52YXIgcGFja0ludDMyID0gZnVuY3Rpb24gKG51bWJlcikge1xuICByZXR1cm4gW251bWJlciAmIDB4RkYsIG51bWJlciA+PiA4ICYgMHhGRiwgbnVtYmVyID4+IDE2ICYgMHhGRiwgbnVtYmVyID4+IDI0ICYgMHhGRl07XG59O1xuXG52YXIgdW5wYWNrSW50MzIgPSBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXJbM10gPDwgMjQgfCBidWZmZXJbMl0gPDwgMTYgfCBidWZmZXJbMV0gPDwgOCB8IGJ1ZmZlclswXTtcbn07XG5cbnZhciBwYWNrRmxvYXQzMiA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KG51bWJlciwgMjMsIDQpO1xufTtcblxudmFyIHBhY2tGbG9hdDY0ID0gZnVuY3Rpb24gKG51bWJlcikge1xuICByZXR1cm4gcGFja0lFRUU3NTQobnVtYmVyLCA1MiwgOCk7XG59O1xuXG52YXIgYWRkR2V0dGVyID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBrZXkpIHtcbiAgZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3JbUFJPVE9UWVBFXSwga2V5LCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKVtrZXldOyB9IH0pO1xufTtcblxudmFyIGdldCA9IGZ1bmN0aW9uICh2aWV3LCBjb3VudCwgaW5kZXgsIGlzTGl0dGxlRW5kaWFuKSB7XG4gIHZhciBpbnRJbmRleCA9IHRvSW5kZXgoaW5kZXgpO1xuICB2YXIgc3RvcmUgPSBnZXRJbnRlcm5hbFN0YXRlKHZpZXcpO1xuICBpZiAoaW50SW5kZXggKyBjb3VudCA+IHN0b3JlLmJ5dGVMZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfSU5ERVgpO1xuICB2YXIgYnl0ZXMgPSBnZXRJbnRlcm5hbFN0YXRlKHN0b3JlLmJ1ZmZlcikuYnl0ZXM7XG4gIHZhciBzdGFydCA9IGludEluZGV4ICsgc3RvcmUuYnl0ZU9mZnNldDtcbiAgdmFyIHBhY2sgPSBieXRlcy5zbGljZShzdGFydCwgc3RhcnQgKyBjb3VudCk7XG4gIHJldHVybiBpc0xpdHRsZUVuZGlhbiA/IHBhY2sgOiBwYWNrLnJldmVyc2UoKTtcbn07XG5cbnZhciBzZXQgPSBmdW5jdGlvbiAodmlldywgY291bnQsIGluZGV4LCBjb252ZXJzaW9uLCB2YWx1ZSwgaXNMaXR0bGVFbmRpYW4pIHtcbiAgdmFyIGludEluZGV4ID0gdG9JbmRleChpbmRleCk7XG4gIHZhciBzdG9yZSA9IGdldEludGVybmFsU3RhdGUodmlldyk7XG4gIGlmIChpbnRJbmRleCArIGNvdW50ID4gc3RvcmUuYnl0ZUxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19JTkRFWCk7XG4gIHZhciBieXRlcyA9IGdldEludGVybmFsU3RhdGUoc3RvcmUuYnVmZmVyKS5ieXRlcztcbiAgdmFyIHN0YXJ0ID0gaW50SW5kZXggKyBzdG9yZS5ieXRlT2Zmc2V0O1xuICB2YXIgcGFjayA9IGNvbnZlcnNpb24oK3ZhbHVlKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSBieXRlc1tzdGFydCArIGldID0gcGFja1tpc0xpdHRsZUVuZGlhbiA/IGkgOiBjb3VudCAtIGkgLSAxXTtcbn07XG5cbmlmICghTkFUSVZFX0FSUkFZX0JVRkZFUikge1xuICAkQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRBcnJheUJ1ZmZlciwgQVJSQVlfQlVGRkVSKTtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRvSW5kZXgobGVuZ3RoKTtcbiAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICAgIGJ5dGVzOiBhcnJheUZpbGwuY2FsbChuZXcgQXJyYXkoYnl0ZUxlbmd0aCksIDApLFxuICAgICAgYnl0ZUxlbmd0aDogYnl0ZUxlbmd0aFxuICAgIH0pO1xuICAgIGlmICghREVTQ1JJUFRPUlMpIHRoaXMuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGg7XG4gIH07XG5cbiAgJERhdGFWaWV3ID0gZnVuY3Rpb24gRGF0YVZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCAkRGF0YVZpZXcsIERBVEFfVklFVyk7XG4gICAgYW5JbnN0YW5jZShidWZmZXIsICRBcnJheUJ1ZmZlciwgREFUQV9WSUVXKTtcbiAgICB2YXIgYnVmZmVyTGVuZ3RoID0gZ2V0SW50ZXJuYWxTdGF0ZShidWZmZXIpLmJ5dGVMZW5ndGg7XG4gICAgdmFyIG9mZnNldCA9IHRvSW50ZWdlcihieXRlT2Zmc2V0KTtcbiAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPiBidWZmZXJMZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIG9mZnNldCcpO1xuICAgIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID09PSB1bmRlZmluZWQgPyBidWZmZXJMZW5ndGggLSBvZmZzZXQgOiB0b0xlbmd0aChieXRlTGVuZ3RoKTtcbiAgICBpZiAob2Zmc2V0ICsgYnl0ZUxlbmd0aCA+IGJ1ZmZlckxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgICAgYnVmZmVyOiBidWZmZXIsXG4gICAgICBieXRlTGVuZ3RoOiBieXRlTGVuZ3RoLFxuICAgICAgYnl0ZU9mZnNldDogb2Zmc2V0XG4gICAgfSk7XG4gICAgaWYgKCFERVNDUklQVE9SUykge1xuICAgICAgdGhpcy5idWZmZXIgPSBidWZmZXI7XG4gICAgICB0aGlzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoO1xuICAgICAgdGhpcy5ieXRlT2Zmc2V0ID0gb2Zmc2V0O1xuICAgIH1cbiAgfTtcblxuICBpZiAoREVTQ1JJUFRPUlMpIHtcbiAgICBhZGRHZXR0ZXIoJEFycmF5QnVmZmVyLCAnYnl0ZUxlbmd0aCcpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsICdidWZmZXInKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCAnYnl0ZUxlbmd0aCcpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsICdieXRlT2Zmc2V0Jyk7XG4gIH1cblxuICByZWRlZmluZUFsbCgkRGF0YVZpZXdbUFJPVE9UWVBFXSwge1xuICAgIGdldEludDg6IGZ1bmN0aW9uIGdldEludDgoYnl0ZU9mZnNldCkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCAxLCBieXRlT2Zmc2V0KVswXSA8PCAyNCA+PiAyNDtcbiAgICB9LFxuICAgIGdldFVpbnQ4OiBmdW5jdGlvbiBnZXRVaW50OChieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQpWzBdO1xuICAgIH0sXG4gICAgZ2V0SW50MTY6IGZ1bmN0aW9uIGdldEludDE2KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm4gKGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXSkgPDwgMTYgPj4gMTY7XG4gICAgfSxcbiAgICBnZXRVaW50MTY6IGZ1bmN0aW9uIGdldFVpbnQxNihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBnZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuIGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXTtcbiAgICB9LFxuICAgIGdldEludDMyOiBmdW5jdGlvbiBnZXRJbnQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSW50MzIoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKSk7XG4gICAgfSxcbiAgICBnZXRVaW50MzI6IGZ1bmN0aW9uIGdldFVpbnQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSW50MzIoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKSkgPj4+IDA7XG4gICAgfSxcbiAgICBnZXRGbG9hdDMyOiBmdW5jdGlvbiBnZXRGbG9hdDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJRUVFNzU0KGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCksIDIzKTtcbiAgICB9LFxuICAgIGdldEZsb2F0NjQ6IGZ1bmN0aW9uIGdldEZsb2F0NjQoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsIDgsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKSwgNTIpO1xuICAgIH0sXG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgc2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQsIHBhY2tJbnQ4LCB2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXRVaW50ODogZnVuY3Rpb24gc2V0VWludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgIHNldCh0aGlzLCAxLCBieXRlT2Zmc2V0LCBwYWNrSW50OCwgdmFsdWUpO1xuICAgIH0sXG4gICAgc2V0SW50MTY6IGZ1bmN0aW9uIHNldEludDE2KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgcGFja0ludDE2LCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgc2V0VWludDE2OiBmdW5jdGlvbiBzZXRVaW50MTYoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBwYWNrSW50MTYsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBzZXRJbnQzMjogZnVuY3Rpb24gc2V0SW50MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrSW50MzIsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBzZXRVaW50MzI6IGZ1bmN0aW9uIHNldFVpbnQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tJbnQzMiwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHNldEZsb2F0MzI6IGZ1bmN0aW9uIHNldEZsb2F0MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrRmxvYXQzMiwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHNldEZsb2F0NjQ6IGZ1bmN0aW9uIHNldEZsb2F0NjQoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA4LCBieXRlT2Zmc2V0LCBwYWNrRmxvYXQ2NCwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgaWYgKCFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgTmF0aXZlQXJyYXlCdWZmZXIoMSk7XG4gIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3IE5hdGl2ZUFycmF5QnVmZmVyKC0xKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgfSkgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyBOYXRpdmVBcnJheUJ1ZmZlcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5ldyBOYXRpdmVBcnJheUJ1ZmZlcigxLjUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5ldyBOYXRpdmVBcnJheUJ1ZmZlcihOYU4pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIHJldHVybiBOYXRpdmVBcnJheUJ1ZmZlci5uYW1lICE9IEFSUkFZX0JVRkZFUjtcbiAgfSkpIHtcbiAgICAkQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhpcywgJEFycmF5QnVmZmVyKTtcbiAgICAgIHJldHVybiBuZXcgTmF0aXZlQXJyYXlCdWZmZXIodG9JbmRleChsZW5ndGgpKTtcbiAgICB9O1xuICAgIHZhciBBcnJheUJ1ZmZlclByb3RvdHlwZSA9ICRBcnJheUJ1ZmZlcltQUk9UT1RZUEVdID0gTmF0aXZlQXJyYXlCdWZmZXJbUFJPVE9UWVBFXTtcbiAgICBmb3IgKHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhOYXRpdmVBcnJheUJ1ZmZlciksIGogPSAwLCBrZXk7IGtleXMubGVuZ3RoID4gajspIHtcbiAgICAgIGlmICghKChrZXkgPSBrZXlzW2orK10pIGluICRBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KCRBcnJheUJ1ZmZlciwga2V5LCBOYXRpdmVBcnJheUJ1ZmZlcltrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQXJyYXlCdWZmZXJQcm90b3R5cGUuY29uc3RydWN0b3IgPSAkQXJyYXlCdWZmZXI7XG4gIH1cblxuICAvLyBXZWJLaXQgYnVnIC0gdGhlIHNhbWUgcGFyZW50IHByb3RvdHlwZSBmb3IgdHlwZWQgYXJyYXlzIGFuZCBkYXRhIHZpZXdcbiAgaWYgKHNldFByb3RvdHlwZU9mICYmIGdldFByb3RvdHlwZU9mKCREYXRhVmlld1Byb3RvdHlwZSkgIT09IE9iamVjdFByb3RvdHlwZSkge1xuICAgIHNldFByb3RvdHlwZU9mKCREYXRhVmlld1Byb3RvdHlwZSwgT2JqZWN0UHJvdG90eXBlKTtcbiAgfVxuXG4gIC8vIGlPUyBTYWZhcmkgNy54IGJ1Z1xuICB2YXIgdGVzdFZpZXcgPSBuZXcgJERhdGFWaWV3KG5ldyAkQXJyYXlCdWZmZXIoMikpO1xuICB2YXIgbmF0aXZlU2V0SW50OCA9ICREYXRhVmlld1Byb3RvdHlwZS5zZXRJbnQ4O1xuICB0ZXN0Vmlldy5zZXRJbnQ4KDAsIDIxNDc0ODM2NDgpO1xuICB0ZXN0Vmlldy5zZXRJbnQ4KDEsIDIxNDc0ODM2NDkpO1xuICBpZiAodGVzdFZpZXcuZ2V0SW50OCgwKSB8fCAhdGVzdFZpZXcuZ2V0SW50OCgxKSkgcmVkZWZpbmVBbGwoJERhdGFWaWV3UHJvdG90eXBlLCB7XG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgbmF0aXZlU2V0SW50OC5jYWxsKHRoaXMsIGJ5dGVPZmZzZXQsIHZhbHVlIDw8IDI0ID4+IDI0KTtcbiAgICB9LFxuICAgIHNldFVpbnQ4OiBmdW5jdGlvbiBzZXRVaW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgbmF0aXZlU2V0SW50OC5jYWxsKHRoaXMsIGJ5dGVPZmZzZXQsIHZhbHVlIDw8IDI0ID4+IDI0KTtcbiAgICB9XG4gIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xufVxuXG5zZXRUb1N0cmluZ1RhZygkQXJyYXlCdWZmZXIsIEFSUkFZX0JVRkZFUik7XG5zZXRUb1N0cmluZ1RhZygkRGF0YVZpZXcsIERBVEFfVklFVyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBcnJheUJ1ZmZlcjogJEFycmF5QnVmZmVyLFxuICBEYXRhVmlldzogJERhdGFWaWV3XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGFycmF5QnVmZmVyTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlcicpO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNwZWNpZXMnKTtcblxudmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG52YXIgQXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlck1vZHVsZVtBUlJBWV9CVUZGRVJdO1xudmFyIE5hdGl2ZUFycmF5QnVmZmVyID0gZ2xvYmFsW0FSUkFZX0JVRkZFUl07XG5cbi8vIGBBcnJheUJ1ZmZlcmAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5YnVmZmVyLWNvbnN0cnVjdG9yXG4kKHsgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IE5hdGl2ZUFycmF5QnVmZmVyICE9PSBBcnJheUJ1ZmZlciB9LCB7XG4gIEFycmF5QnVmZmVyOiBBcnJheUJ1ZmZlclxufSk7XG5cbnNldFNwZWNpZXMoQVJSQVlfQlVGRkVSKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgQXJyYXlCdWZmZXJNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcblxudmFyIEFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXJNb2R1bGUuQXJyYXlCdWZmZXI7XG52YXIgRGF0YVZpZXcgPSBBcnJheUJ1ZmZlck1vZHVsZS5EYXRhVmlldztcbnZhciBuYXRpdmVBcnJheUJ1ZmZlclNsaWNlID0gQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlO1xuXG52YXIgSU5DT1JSRUNUX1NMSUNFID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gIW5ldyBBcnJheUJ1ZmZlcigyKS5zbGljZSgxLCB1bmRlZmluZWQpLmJ5dGVMZW5ndGg7XG59KTtcblxuLy8gYEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheWJ1ZmZlci5wcm90b3R5cGUuc2xpY2VcbiQoeyB0YXJnZXQ6ICdBcnJheUJ1ZmZlcicsIHByb3RvOiB0cnVlLCB1bnNhZmU6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX1NMSUNFIH0sIHtcbiAgc2xpY2U6IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAobmF0aXZlQXJyYXlCdWZmZXJTbGljZSAhPT0gdW5kZWZpbmVkICYmIGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbmF0aXZlQXJyYXlCdWZmZXJTbGljZS5jYWxsKGFuT2JqZWN0KHRoaXMpLCBzdGFydCk7IC8vIEZGIGZpeFxuICAgIH1cbiAgICB2YXIgbGVuZ3RoID0gYW5PYmplY3QodGhpcykuYnl0ZUxlbmd0aDtcbiAgICB2YXIgZmlyc3QgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbmd0aCk7XG4gICAgdmFyIGZpbiA9IHRvQWJzb2x1dGVJbmRleChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZCwgbGVuZ3RoKTtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgQXJyYXlCdWZmZXIpKSh0b0xlbmd0aChmaW4gLSBmaXJzdCkpO1xuICAgIHZhciB2aWV3U291cmNlID0gbmV3IERhdGFWaWV3KHRoaXMpO1xuICAgIHZhciB2aWV3VGFyZ2V0ID0gbmV3IERhdGFWaWV3KHJlc3VsdCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoZmlyc3QgPCBmaW4pIHtcbiAgICAgIHZpZXdUYXJnZXQuc2V0VWludDgoaW5kZXgrKywgdmlld1NvdXJjZS5nZXRVaW50OChmaXJzdCsrKSk7XG4gICAgfSByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbCcpLmY7XG5cbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyByZXR1cm4gIU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKDEpOyB9KTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGQUlMU19PTl9QUklNSVRJVkVTIH0sIHtcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogbmF0aXZlR2V0T3duUHJvcGVydHlOYW1lc1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vZmFpbHMnKTtcblxuLy8gYmFiZWwtbWluaWZ5IHRyYW5zcGlsZXMgUmVnRXhwKCdhJywgJ3knKSAtPiAvYS95IGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3IsXG4vLyBzbyB3ZSB1c2UgYW4gaW50ZXJtZWRpYXRlIGZ1bmN0aW9uLlxuZnVuY3Rpb24gUkUocywgZikge1xuICByZXR1cm4gUmVnRXhwKHMsIGYpO1xufVxuXG5leHBvcnRzLlVOU1VQUE9SVEVEX1kgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGJhYmVsLW1pbmlmeSB0cmFuc3BpbGVzIFJlZ0V4cCgnYScsICd5JykgLT4gL2EveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG4gIHZhciByZSA9IFJFKCdhJywgJ3knKTtcbiAgcmUubGFzdEluZGV4ID0gMjtcbiAgcmV0dXJuIHJlLmV4ZWMoJ2FiY2QnKSAhPSBudWxsO1xufSk7XG5cbmV4cG9ydHMuQlJPS0VOX0NBUkVUID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM2ODdcbiAgdmFyIHJlID0gUkUoJ15yJywgJ2d5Jyk7XG4gIHJlLmxhc3RJbmRleCA9IDI7XG4gIHJldHVybiByZS5leGVjKCdzdHInKSAhPSBudWxsO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVnZXhwRmxhZ3MgPSByZXF1aXJlKCcuL3JlZ2V4cC1mbGFncycpO1xudmFyIHN0aWNreUhlbHBlcnMgPSByZXF1aXJlKCcuL3JlZ2V4cC1zdGlja3ktaGVscGVycycpO1xuXG52YXIgbmF0aXZlRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcbi8vIFRoaXMgYWx3YXlzIHJlZmVycyB0byB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIHRoZVxuLy8gU3RyaW5nI3JlcGxhY2UgcG9seWZpbGwgdXNlcyAuL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMuanMsXG4vLyB3aGljaCBsb2FkcyB0aGlzIGZpbGUgYmVmb3JlIHBhdGNoaW5nIHRoZSBtZXRob2QuXG52YXIgbmF0aXZlUmVwbGFjZSA9IFN0cmluZy5wcm90b3R5cGUucmVwbGFjZTtcblxudmFyIHBhdGNoZWRFeGVjID0gbmF0aXZlRXhlYztcblxudmFyIFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciByZTEgPSAvYS87XG4gIHZhciByZTIgPSAvYiovZztcbiAgbmF0aXZlRXhlYy5jYWxsKHJlMSwgJ2EnKTtcbiAgbmF0aXZlRXhlYy5jYWxsKHJlMiwgJ2EnKTtcbiAgcmV0dXJuIHJlMS5sYXN0SW5kZXggIT09IDAgfHwgcmUyLmxhc3RJbmRleCAhPT0gMDtcbn0pKCk7XG5cbnZhciBVTlNVUFBPUlRFRF9ZID0gc3RpY2t5SGVscGVycy5VTlNVUFBPUlRFRF9ZIHx8IHN0aWNreUhlbHBlcnMuQlJPS0VOX0NBUkVUO1xuXG4vLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cCwgY29waWVkIGZyb20gZXM1LXNoaW0ncyBTdHJpbmcjc3BsaXQgcGF0Y2guXG52YXIgTlBDR19JTkNMVURFRCA9IC8oKT8/Ly5leGVjKCcnKVsxXSAhPT0gdW5kZWZpbmVkO1xuXG52YXIgUEFUQ0ggPSBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgfHwgTlBDR19JTkNMVURFRCB8fCBVTlNVUFBPUlRFRF9ZO1xuXG5pZiAoUEFUQ0gpIHtcbiAgcGF0Y2hlZEV4ZWMgPSBmdW5jdGlvbiBleGVjKHN0cikge1xuICAgIHZhciByZSA9IHRoaXM7XG4gICAgdmFyIGxhc3RJbmRleCwgcmVDb3B5LCBtYXRjaCwgaTtcbiAgICB2YXIgc3RpY2t5ID0gVU5TVVBQT1JURURfWSAmJiByZS5zdGlja3k7XG4gICAgdmFyIGZsYWdzID0gcmVnZXhwRmxhZ3MuY2FsbChyZSk7XG4gICAgdmFyIHNvdXJjZSA9IHJlLnNvdXJjZTtcbiAgICB2YXIgY2hhcnNBZGRlZCA9IDA7XG4gICAgdmFyIHN0ckNvcHkgPSBzdHI7XG5cbiAgICBpZiAoc3RpY2t5KSB7XG4gICAgICBmbGFncyA9IGZsYWdzLnJlcGxhY2UoJ3knLCAnJyk7XG4gICAgICBpZiAoZmxhZ3MuaW5kZXhPZignZycpID09PSAtMSkge1xuICAgICAgICBmbGFncyArPSAnZyc7XG4gICAgICB9XG5cbiAgICAgIHN0ckNvcHkgPSBTdHJpbmcoc3RyKS5zbGljZShyZS5sYXN0SW5kZXgpO1xuICAgICAgLy8gU3VwcG9ydCBhbmNob3JlZCBzdGlja3kgYmVoYXZpb3IuXG4gICAgICBpZiAocmUubGFzdEluZGV4ID4gMCAmJiAoIXJlLm11bHRpbGluZSB8fCByZS5tdWx0aWxpbmUgJiYgc3RyW3JlLmxhc3RJbmRleCAtIDFdICE9PSAnXFxuJykpIHtcbiAgICAgICAgc291cmNlID0gJyg/OiAnICsgc291cmNlICsgJyknO1xuICAgICAgICBzdHJDb3B5ID0gJyAnICsgc3RyQ29weTtcbiAgICAgICAgY2hhcnNBZGRlZCsrO1xuICAgICAgfVxuICAgICAgLy8gXig/ICsgcnggKyApIGlzIG5lZWRlZCwgaW4gY29tYmluYXRpb24gd2l0aCBzb21lIHN0ciBzbGljaW5nLCB0b1xuICAgICAgLy8gc2ltdWxhdGUgdGhlICd5JyBmbGFnLlxuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXig/OicgKyBzb3VyY2UgKyAnKScsIGZsYWdzKTtcbiAgICB9XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyBzb3VyY2UgKyAnJCg/IVxcXFxzKScsIGZsYWdzKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmUubGFzdEluZGV4O1xuXG4gICAgbWF0Y2ggPSBuYXRpdmVFeGVjLmNhbGwoc3RpY2t5ID8gcmVDb3B5IDogcmUsIHN0ckNvcHkpO1xuXG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIG1hdGNoLmlucHV0ID0gbWF0Y2guaW5wdXQuc2xpY2UoY2hhcnNBZGRlZCk7XG4gICAgICAgIG1hdGNoWzBdID0gbWF0Y2hbMF0uc2xpY2UoY2hhcnNBZGRlZCk7XG4gICAgICAgIG1hdGNoLmluZGV4ID0gcmUubGFzdEluZGV4O1xuICAgICAgICByZS5sYXN0SW5kZXggKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgfSBlbHNlIHJlLmxhc3RJbmRleCA9IDA7XG4gICAgfSBlbHNlIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgJiYgbWF0Y2gpIHtcbiAgICAgIHJlLmxhc3RJbmRleCA9IHJlLmdsb2JhbCA/IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoIDogbGFzdEluZGV4O1xuICAgIH1cbiAgICBpZiAoTlBDR19JTkNMVURFRCAmJiBtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYFxuICAgICAgLy8gZm9yIE5QQ0csIGxpa2UgSUU4LiBOT1RFOiBUaGlzIGRvZXNuJyB3b3JrIGZvciAvKC4/KT8vXG4gICAgICBuYXRpdmVSZXBsYWNlLmNhbGwobWF0Y2hbMF0sIHJlQ29weSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDI7IGkrKykge1xuICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmaW5lZCkgbWF0Y2hbaV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXRjaGVkRXhlYztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMnKTtcblxuJCh7IHRhcmdldDogJ1JlZ0V4cCcsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IC8uLy5leGVjICE9PSBleGVjIH0sIHtcbiAgZXhlYzogZXhlY1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIG1vdmVkIHRvIGVudHJ5IHBvaW50c1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5yZWdleHAuZXhlYycpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG52YXIgUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyAjcmVwbGFjZSBuZWVkcyBidWlsdC1pbiBzdXBwb3J0IGZvciBuYW1lZCBncm91cHMuXG4gIC8vICNtYXRjaCB3b3JrcyBmaW5lIGJlY2F1c2UgaXQganVzdCByZXR1cm4gdGhlIGV4ZWMgcmVzdWx0cywgZXZlbiBpZiBpdCBoYXNcbiAgLy8gYSBcImdyb3BzXCIgcHJvcGVydHkuXG4gIHZhciByZSA9IC8uLztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgcmVzdWx0Lmdyb3VwcyA9IHsgYTogJzcnIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgcmV0dXJuICcnLnJlcGxhY2UocmUsICckPGE+JykgIT09ICc3Jztcbn0pO1xuXG4vLyBJRSA8PSAxMSByZXBsYWNlcyAkMCB3aXRoIHRoZSB3aG9sZSBtYXRjaCwgYXMgaWYgaXQgd2FzICQmXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MDI0NjY2L2dldHRpbmctaWUtdG8tcmVwbGFjZS1hLXJlZ2V4LXdpdGgtdGhlLWxpdGVyYWwtc3RyaW5nLTBcbnZhciBSRVBMQUNFX0tFRVBTXyQwID0gKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdhJy5yZXBsYWNlKC8uLywgJyQwJykgPT09ICckMCc7XG59KSgpO1xuXG52YXIgUkVQTEFDRSA9IHdlbGxLbm93blN5bWJvbCgncmVwbGFjZScpO1xuLy8gU2FmYXJpIDw9IDEzLjAuMyg/KSBzdWJzdGl0dXRlcyBudGggY2FwdHVyZSB3aGVyZSBuPm0gd2l0aCBhbiBlbXB0eSBzdHJpbmdcbnZhciBSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSA9IChmdW5jdGlvbiAoKSB7XG4gIGlmICgvLi9bUkVQTEFDRV0pIHtcbiAgICByZXR1cm4gLy4vW1JFUExBQ0VdKCdhJywgJyQwJykgPT09ICcnO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn0pKCk7XG5cbi8vIENocm9tZSA1MSBoYXMgYSBidWdneSBcInNwbGl0XCIgaW1wbGVtZW50YXRpb24gd2hlbiBSZWdFeHAjZXhlYyAhPT0gbmF0aXZlRXhlY1xuLy8gV2VleCBKUyBoYXMgZnJvemVuIGJ1aWx0LWluIHByb3RvdHlwZXMsIHNvIHVzZSB0cnkgLyBjYXRjaCB3cmFwcGVyXG52YXIgU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gLyg/OikvO1xuICB2YXIgb3JpZ2luYWxFeGVjID0gcmUuZXhlYztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9yaWdpbmFsRXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xuICB2YXIgcmVzdWx0ID0gJ2FiJy5zcGxpdChyZSk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoICE9PSAyIHx8IHJlc3VsdFswXSAhPT0gJ2EnIHx8IHJlc3VsdFsxXSAhPT0gJ2InO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgbGVuZ3RoLCBleGVjLCBzaGFtKSB7XG4gIHZhciBTWU1CT0wgPSB3ZWxsS25vd25TeW1ib2woS0VZKTtcblxuICB2YXIgREVMRUdBVEVTX1RPX1NZTUJPTCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3RyaW5nIG1ldGhvZHMgY2FsbCBzeW1ib2wtbmFtZWQgUmVnRXAgbWV0aG9kc1xuICAgIHZhciBPID0ge307XG4gICAgT1tTWU1CT0xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfTtcbiAgICByZXR1cm4gJydbS0VZXShPKSAhPSA3O1xuICB9KTtcblxuICB2YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBERUxFR0FURVNfVE9fU1lNQk9MICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3ltYm9sLW5hbWVkIFJlZ0V4cCBtZXRob2RzIGNhbGwgLmV4ZWNcbiAgICB2YXIgZXhlY0NhbGxlZCA9IGZhbHNlO1xuICAgIHZhciByZSA9IC9hLztcblxuICAgIGlmIChLRVkgPT09ICdzcGxpdCcpIHtcbiAgICAgIC8vIFdlIGNhbid0IHVzZSByZWFsIHJlZ2V4IGhlcmUgc2luY2UgaXQgY2F1c2VzIGRlb3B0aW1pemF0aW9uXG4gICAgICAvLyBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBpbiBWOFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMwNlxuICAgICAgcmUgPSB7fTtcbiAgICAgIC8vIFJlZ0V4cFtAQHNwbGl0XSBkb2Vzbid0IGNhbGwgdGhlIHJlZ2V4J3MgZXhlYyBtZXRob2QsIGJ1dCBmaXJzdCBjcmVhdGVzXG4gICAgICAvLyBhIG5ldyBvbmUuIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBwYXRjaGVkIHJlZ2V4IHdoZW4gY3JlYXRpbmcgdGhlIG5ldyBvbmUuXG4gICAgICByZS5jb25zdHJ1Y3RvciA9IHt9O1xuICAgICAgcmUuY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZTsgfTtcbiAgICAgIHJlLmZsYWdzID0gJyc7XG4gICAgICByZVtTWU1CT0xdID0gLy4vW1NZTUJPTF07XG4gICAgfVxuXG4gICAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgZXhlY0NhbGxlZCA9IHRydWU7IHJldHVybiBudWxsOyB9O1xuXG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KTtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICAoS0VZID09PSAncmVwbGFjZScgJiYgIShcbiAgICAgIFJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTICYmXG4gICAgICBSRVBMQUNFX0tFRVBTXyQwICYmXG4gICAgICAhUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkVcbiAgICApKSB8fFxuICAgIChLRVkgPT09ICdzcGxpdCcgJiYgIVNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQylcbiAgKSB7XG4gICAgdmFyIG5hdGl2ZVJlZ0V4cE1ldGhvZCA9IC8uL1tTWU1CT0xdO1xuICAgIHZhciBtZXRob2RzID0gZXhlYyhTWU1CT0wsICcnW0tFWV0sIGZ1bmN0aW9uIChuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgaWYgKHJlZ2V4cC5leGVjID09PSByZWdleHBFeGVjKSB7XG4gICAgICAgIGlmIChERUxFR0FURVNfVE9fU1lNQk9MICYmICFmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgICAgIC8vIFRoZSBuYXRpdmUgU3RyaW5nIG1ldGhvZCBhbHJlYWR5IGRlbGVnYXRlcyB0byBAQG1ldGhvZCAodGhpc1xuICAgICAgICAgIC8vIHBvbHlmaWxsZWQgZnVuY3Rpb24pLCBsZWFzaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgICAgICAgICAvLyBXZSBhdm9pZCBpdCBieSBkaXJlY3RseSBjYWxsaW5nIHRoZSBuYXRpdmUgQEBtZXRob2QgbWV0aG9kLlxuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVSZWdFeHBNZXRob2QuY2FsbChyZWdleHAsIHN0ciwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlTWV0aG9kLmNhbGwoc3RyLCByZWdleHAsIGFyZzIpIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSB9O1xuICAgIH0sIHtcbiAgICAgIFJFUExBQ0VfS0VFUFNfJDA6IFJFUExBQ0VfS0VFUFNfJDAsXG4gICAgICBSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRTogUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkVcbiAgICB9KTtcbiAgICB2YXIgc3RyaW5nTWV0aG9kID0gbWV0aG9kc1swXTtcbiAgICB2YXIgcmVnZXhNZXRob2QgPSBtZXRob2RzWzFdO1xuXG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBzdHJpbmdNZXRob2QpO1xuICAgIHJlZGVmaW5lKFJlZ0V4cC5wcm90b3R5cGUsIFNZTUJPTCwgbGVuZ3RoID09IDJcbiAgICAgIC8vIDIxLjIuNS44IFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXShzdHJpbmcsIHJlcGxhY2VWYWx1ZSlcbiAgICAgIC8vIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdKHN0cmluZywgbGltaXQpXG4gICAgICA/IGZ1bmN0aW9uIChzdHJpbmcsIGFyZykgeyByZXR1cm4gcmVnZXhNZXRob2QuY2FsbChzdHJpbmcsIHRoaXMsIGFyZyk7IH1cbiAgICAgIC8vIDIxLjIuNS42IFJlZ0V4cC5wcm90b3R5cGVbQEBtYXRjaF0oc3RyaW5nKVxuICAgICAgLy8gMjEuMi41LjkgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF0oc3RyaW5nKVxuICAgICAgOiBmdW5jdGlvbiAoc3RyaW5nKSB7IHJldHVybiByZWdleE1ldGhvZC5jYWxsKHN0cmluZywgdGhpcyk7IH1cbiAgICApO1xuICB9XG5cbiAgaWYgKHNoYW0pIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlW1NZTUJPTF0sICdzaGFtJywgdHJ1ZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNoYXJBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlJykuY2hhckF0O1xuXG4vLyBgQWR2YW5jZVN0cmluZ0luZGV4YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFkdmFuY2VzdHJpbmdpbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUywgaW5kZXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIGluZGV4ICsgKHVuaWNvZGUgPyBjaGFyQXQoUywgaW5kZXgpLmxlbmd0aCA6IDEpO1xufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9jbGFzc29mLXJhdycpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL3JlZ2V4cC1leGVjJyk7XG5cbi8vIGBSZWdFeHBFeGVjYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cGV4ZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFIsIFMpIHtcbiAgdmFyIGV4ZWMgPSBSLmV4ZWM7XG4gIGlmICh0eXBlb2YgZXhlYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBleGVjLmNhbGwoUiwgUyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZ0V4cCBleGVjIG1ldGhvZCByZXR1cm5lZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBPYmplY3Qgb3IgbnVsbCcpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaWYgKGNsYXNzb2YoUikgIT09ICdSZWdFeHAnKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG4gIH1cblxuICByZXR1cm4gcmVnZXhwRXhlYy5jYWxsKFIsIFMpO1xufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTID0gL1xcJChbJCYnYF18XFxkXFxkP3w8W14+XSo+KS9nO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEID0gL1xcJChbJCYnYF18XFxkXFxkPykvZztcblxudmFyIG1heWJlVG9TdHJpbmcgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyBpdCA6IFN0cmluZyhpdCk7XG59O1xuXG4vLyBAQHJlcGxhY2UgbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdyZXBsYWNlJywgMiwgZnVuY3Rpb24gKFJFUExBQ0UsIG5hdGl2ZVJlcGxhY2UsIG1heWJlQ2FsbE5hdGl2ZSwgcmVhc29uKSB7XG4gIHZhciBSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSA9IHJlYXNvbi5SRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRTtcbiAgdmFyIFJFUExBQ0VfS0VFUFNfJDAgPSByZWFzb24uUkVQTEFDRV9LRUVQU18kMDtcbiAgdmFyIFVOU0FGRV9TVUJTVElUVVRFID0gUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkUgPyAnJCcgOiAnJDAnO1xuXG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUucmVwbGFjZWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlXG4gICAgZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgcmVwbGFjZXIgPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZWFyY2hWYWx1ZVtSRVBMQUNFXTtcbiAgICAgIHJldHVybiByZXBsYWNlciAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcmVwbGFjZXIuY2FsbChzZWFyY2hWYWx1ZSwgTywgcmVwbGFjZVZhbHVlKVxuICAgICAgICA6IG5hdGl2ZVJlcGxhY2UuY2FsbChTdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHJlcGxhY2VcbiAgICBmdW5jdGlvbiAocmVnZXhwLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKCFSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRSAmJiBSRVBMQUNFX0tFRVBTXyQwKSB8fFxuICAgICAgICAodHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ3N0cmluZycgJiYgcmVwbGFjZVZhbHVlLmluZGV4T2YoVU5TQUZFX1NVQlNUSVRVVEUpID09PSAtMSlcbiAgICAgICkge1xuICAgICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKG5hdGl2ZVJlcGxhY2UsIHJlZ2V4cCwgdGhpcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG5cbiAgICAgIHZhciBmdW5jdGlvbmFsUmVwbGFjZSA9IHR5cGVvZiByZXBsYWNlVmFsdWUgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoIWZ1bmN0aW9uYWxSZXBsYWNlKSByZXBsYWNlVmFsdWUgPSBTdHJpbmcocmVwbGFjZVZhbHVlKTtcblxuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICBpZiAoIWdsb2JhbCkgYnJlYWs7XG5cbiAgICAgICAgdmFyIG1hdGNoU3RyID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcblxuICAgICAgICB2YXIgbWF0Y2hlZCA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICB2YXIgcG9zaXRpb24gPSBtYXgobWluKHRvSW50ZWdlcihyZXN1bHQuaW5kZXgpLCBTLmxlbmd0aCksIDApO1xuICAgICAgICB2YXIgY2FwdHVyZXMgPSBbXTtcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgIC8vICAgY2FwdHVyZXMgPSByZXN1bHQuc2xpY2UoMSkubWFwKG1heWJlVG9TdHJpbmcpXG4gICAgICAgIC8vIGJ1dCBmb3Igc29tZSByZWFzb24gYG5hdGl2ZVNsaWNlLmNhbGwocmVzdWx0LCAxLCByZXN1bHQubGVuZ3RoKWAgKGNhbGxlZCBpblxuICAgICAgICAvLyB0aGUgc2xpY2UgcG9seWZpbGwgd2hlbiBzbGljaW5nIG5hdGl2ZSBhcnJheXMpIFwiZG9lc24ndCB3b3JrXCIgaW4gc2FmYXJpIDkgYW5kXG4gICAgICAgIC8vIGNhdXNlcyBhIGNyYXNoIChodHRwczovL3Bhc3RlYmluLmNvbS9OMjFRemVRQSkgd2hlbiB0cnlpbmcgdG8gZGVidWcgaXQuXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcmVzdWx0Lmxlbmd0aDsgaisrKSBjYXB0dXJlcy5wdXNoKG1heWJlVG9TdHJpbmcocmVzdWx0W2pdKSk7XG4gICAgICAgIHZhciBuYW1lZENhcHR1cmVzID0gcmVzdWx0Lmdyb3VwcztcbiAgICAgICAgaWYgKGZ1bmN0aW9uYWxSZXBsYWNlKSB7XG4gICAgICAgICAgdmFyIHJlcGxhY2VyQXJncyA9IFttYXRjaGVkXS5jb25jYXQoY2FwdHVyZXMsIHBvc2l0aW9uLCBTKTtcbiAgICAgICAgICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSByZXBsYWNlckFyZ3MucHVzaChuYW1lZENhcHR1cmVzKTtcbiAgICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSBTdHJpbmcocmVwbGFjZVZhbHVlLmFwcGx5KHVuZGVmaW5lZCwgcmVwbGFjZXJBcmdzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVwbGFjZW1lbnQgPSBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgUywgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSBuZXh0U291cmNlUG9zaXRpb24pIHtcbiAgICAgICAgICBhY2N1bXVsYXRlZFJlc3VsdCArPSBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24pICsgcmVwbGFjZW1lbnQ7XG4gICAgICAgICAgbmV4dFNvdXJjZVBvc2l0aW9uID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkUmVzdWx0ICsgUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24pO1xuICAgIH1cbiAgXTtcblxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRzdWJzdGl0dXRpb25cbiAgZnVuY3Rpb24gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlbWVudCkge1xuICAgIHZhciB0YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICB2YXIgbSA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgICB2YXIgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEO1xuICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5hbWVkQ2FwdHVyZXMgPSB0b09iamVjdChuYW1lZENhcHR1cmVzKTtcbiAgICAgIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MUztcbiAgICB9XG4gICAgcmV0dXJuIG5hdGl2ZVJlcGxhY2UuY2FsbChyZXBsYWNlbWVudCwgc3ltYm9scywgZnVuY3Rpb24gKG1hdGNoLCBjaCkge1xuICAgICAgdmFyIGNhcHR1cmU7XG4gICAgICBzd2l0Y2ggKGNoLmNoYXJBdCgwKSkge1xuICAgICAgICBjYXNlICckJzogcmV0dXJuICckJztcbiAgICAgICAgY2FzZSAnJic6IHJldHVybiBtYXRjaGVkO1xuICAgICAgICBjYXNlICdgJzogcmV0dXJuIHN0ci5zbGljZSgwLCBwb3NpdGlvbik7XG4gICAgICAgIGNhc2UgXCInXCI6IHJldHVybiBzdHIuc2xpY2UodGFpbFBvcyk7XG4gICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgIGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2NoLnNsaWNlKDEsIC0xKV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6IC8vIFxcZFxcZD9cbiAgICAgICAgICB2YXIgbiA9ICtjaDtcbiAgICAgICAgICBpZiAobiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgIGlmIChuID4gbSkge1xuICAgICAgICAgICAgdmFyIGYgPSBmbG9vcihuIC8gMTApO1xuICAgICAgICAgICAgaWYgKGYgPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIGlmIChmIDw9IG0pIHJldHVybiBjYXB0dXJlc1tmIC0gMV0gPT09IHVuZGVmaW5lZCA/IGNoLmNoYXJBdCgxKSA6IGNhcHR1cmVzW2YgLSAxXSArIGNoLmNoYXJBdCgxKTtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FwdHVyZSA9IGNhcHR1cmVzW24gLSAxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjYXB0dXJlID09PSB1bmRlZmluZWQgPyAnJyA6IGNhcHR1cmU7XG4gICAgfSk7XG4gIH1cbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIE1BVENIID0gd2VsbEtub3duU3ltYm9sKCdtYXRjaCcpO1xuXG4vLyBgSXNSZWdFeHBgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNyZWdleHBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpc1JlZ0V4cDtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiAoKGlzUmVnRXhwID0gaXRbTUFUQ0hdKSAhPT0gdW5kZWZpbmVkID8gISFpc1JlZ0V4cCA6IGNsYXNzb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYycpO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBjYWxsUmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgYXJyYXlQdXNoID0gW10ucHVzaDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBNQVhfVUlOVDMyID0gMHhGRkZGRkZGRjtcblxuLy8gYmFiZWwtbWluaWZ5IHRyYW5zcGlsZXMgUmVnRXhwKCd4JywgJ3knKSAtPiAveC95IGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciBTVVBQT1JUU19ZID0gIWZhaWxzKGZ1bmN0aW9uICgpIHsgcmV0dXJuICFSZWdFeHAoTUFYX1VJTlQzMiwgJ3knKTsgfSk7XG5cbi8vIEBAc3BsaXQgbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdzcGxpdCcsIDIsIGZ1bmN0aW9uIChTUExJVCwgbmF0aXZlU3BsaXQsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICB2YXIgaW50ZXJuYWxTcGxpdDtcbiAgaWYgKFxuICAgICdhYmJjJy5zcGxpdCgvKGIpKi8pWzFdID09ICdjJyB8fFxuICAgICd0ZXN0Jy5zcGxpdCgvKD86KS8sIC0xKS5sZW5ndGggIT0gNCB8fFxuICAgICdhYicuc3BsaXQoLyg/OmFiKSovKS5sZW5ndGggIT0gMiB8fFxuICAgICcuJy5zcGxpdCgvKC4/KSguPykvKS5sZW5ndGggIT0gNCB8fFxuICAgICcuJy5zcGxpdCgvKCkoKS8pLmxlbmd0aCA+IDEgfHxcbiAgICAnJy5zcGxpdCgvLj8vKS5sZW5ndGhcbiAgKSB7XG4gICAgLy8gYmFzZWQgb24gZXM1LXNoaW0gaW1wbGVtZW50YXRpb24sIG5lZWQgdG8gcmV3b3JrIGl0XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgc3RyaW5nID0gU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpO1xuICAgICAgdmFyIGxpbSA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfVUlOVDMyIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAobGltID09PSAwKSByZXR1cm4gW107XG4gICAgICBpZiAoc2VwYXJhdG9yID09PSB1bmRlZmluZWQpIHJldHVybiBbc3RyaW5nXTtcbiAgICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgbmF0aXZlIHNwbGl0XG4gICAgICBpZiAoIWlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbSk7XG4gICAgICB9XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICAgIHdoaWxlIChtYXRjaCA9IHJlZ2V4cEV4ZWMuY2FsbChzZXBhcmF0b3JDb3B5LCBzdHJpbmcpKSB7XG4gICAgICAgIGxhc3RJbmRleCA9IHNlcGFyYXRvckNvcHkubGFzdEluZGV4O1xuICAgICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICAgIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyaW5nLmxlbmd0aCkgYXJyYXlQdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCA+PSBsaW0pIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXBhcmF0b3JDb3B5Lmxhc3RJbmRleCA9PT0gbWF0Y2guaW5kZXgpIHNlcGFyYXRvckNvcHkubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3JDb3B5LnRlc3QoJycpKSBvdXRwdXQucHVzaCgnJyk7XG4gICAgICB9IGVsc2Ugb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICAgIHJldHVybiBvdXRwdXQubGVuZ3RoID4gbGltID8gb3V0cHV0LnNsaWNlKDAsIGxpbSkgOiBvdXRwdXQ7XG4gICAgfTtcbiAgLy8gQ2hha3JhLCBWOFxuICB9IGVsc2UgaWYgKCcwJy5zcGxpdCh1bmRlZmluZWQsIDApLmxlbmd0aCkge1xuICAgIGludGVybmFsU3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwID8gW10gOiBuYXRpdmVTcGxpdC5jYWxsKHRoaXMsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH07XG4gIH0gZWxzZSBpbnRlcm5hbFNwbGl0ID0gbmF0aXZlU3BsaXQ7XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zcGxpdFxuICAgIGZ1bmN0aW9uIHNwbGl0KHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHZhciBPID0gcmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKTtcbiAgICAgIHZhciBzcGxpdHRlciA9IHNlcGFyYXRvciA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZXBhcmF0b3JbU1BMSVRdO1xuICAgICAgcmV0dXJuIHNwbGl0dGVyICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBzcGxpdHRlci5jYWxsKHNlcGFyYXRvciwgTywgbGltaXQpXG4gICAgICAgIDogaW50ZXJuYWxTcGxpdC5jYWxsKFN0cmluZyhPKSwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHNwbGl0XG4gICAgLy9cbiAgICAvLyBOT1RFOiBUaGlzIGNhbm5vdCBiZSBwcm9wZXJseSBwb2x5ZmlsbGVkIGluIGVuZ2luZXMgdGhhdCBkb24ndCBzdXBwb3J0XG4gICAgLy8gdGhlICd5JyBmbGFnLlxuICAgIGZ1bmN0aW9uIChyZWdleHAsIGxpbWl0KSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKGludGVybmFsU3BsaXQsIHJlZ2V4cCwgdGhpcywgbGltaXQsIGludGVybmFsU3BsaXQgIT09IG5hdGl2ZVNwbGl0KTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgICAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IocngsIFJlZ0V4cCk7XG5cbiAgICAgIHZhciB1bmljb2RlTWF0Y2hpbmcgPSByeC51bmljb2RlO1xuICAgICAgdmFyIGZsYWdzID0gKHJ4Lmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJ4Lm11bHRpbGluZSA/ICdtJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAocngudW5pY29kZSA/ICd1JyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoU1VQUE9SVFNfWSA/ICd5JyA6ICdnJyk7XG5cbiAgICAgIC8vIF4oPyArIHJ4ICsgKSBpcyBuZWVkZWQsIGluIGNvbWJpbmF0aW9uIHdpdGggc29tZSBTIHNsaWNpbmcsIHRvXG4gICAgICAvLyBzaW11bGF0ZSB0aGUgJ3knIGZsYWcuXG4gICAgICB2YXIgc3BsaXR0ZXIgPSBuZXcgQyhTVVBQT1JUU19ZID8gcnggOiAnXig/OicgKyByeC5zb3VyY2UgKyAnKScsIGZsYWdzKTtcbiAgICAgIHZhciBsaW0gPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gTUFYX1VJTlQzMiA6IGxpbWl0ID4+PiAwO1xuICAgICAgaWYgKGxpbSA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgaWYgKFMubGVuZ3RoID09PSAwKSByZXR1cm4gY2FsbFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpID09PSBudWxsID8gW1NdIDogW107XG4gICAgICB2YXIgcCA9IDA7XG4gICAgICB2YXIgcSA9IDA7XG4gICAgICB2YXIgQSA9IFtdO1xuICAgICAgd2hpbGUgKHEgPCBTLmxlbmd0aCkge1xuICAgICAgICBzcGxpdHRlci5sYXN0SW5kZXggPSBTVVBQT1JUU19ZID8gcSA6IDA7XG4gICAgICAgIHZhciB6ID0gY2FsbFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFNVUFBPUlRTX1kgPyBTIDogUy5zbGljZShxKSk7XG4gICAgICAgIHZhciBlO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgeiA9PT0gbnVsbCB8fFxuICAgICAgICAgIChlID0gbWluKHRvTGVuZ3RoKHNwbGl0dGVyLmxhc3RJbmRleCArIChTVVBQT1JUU19ZID8gMCA6IHEpKSwgUy5sZW5ndGgpKSA9PT0gcFxuICAgICAgICApIHtcbiAgICAgICAgICBxID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVuaWNvZGVNYXRjaGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQS5wdXNoKFMuc2xpY2UocCwgcSkpO1xuICAgICAgICAgIGlmIChBLmxlbmd0aCA9PT0gbGltKSByZXR1cm4gQTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSB6Lmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgQS5wdXNoKHpbaV0pO1xuICAgICAgICAgICAgaWYgKEEubGVuZ3RoID09PSBsaW0pIHJldHVybiBBO1xuICAgICAgICAgIH1cbiAgICAgICAgICBxID0gcCA9IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEEucHVzaChTLnNsaWNlKHApKTtcbiAgICAgIHJldHVybiBBO1xuICAgIH1cbiAgXTtcbn0sICFTVVBQT1JUU19ZKTtcbiIsIi8vIGEgc3RyaW5nIG9mIGFsbCB2YWxpZCB1bmljb2RlIHdoaXRlc3BhY2VzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxubW9kdWxlLmV4cG9ydHMgPSAnXFx1MDAwOVxcdTAwMEFcXHUwMDBCXFx1MDAwQ1xcdTAwMERcXHUwMDIwXFx1MDBBMFxcdTE2ODBcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7XG4iLCJ2YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciB3aGl0ZXNwYWNlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93aGl0ZXNwYWNlcycpO1xuXG52YXIgd2hpdGVzcGFjZSA9ICdbJyArIHdoaXRlc3BhY2VzICsgJ10nO1xudmFyIGx0cmltID0gUmVnRXhwKCdeJyArIHdoaXRlc3BhY2UgKyB3aGl0ZXNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cCh3aGl0ZXNwYWNlICsgd2hpdGVzcGFjZSArICcqJCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW0sIHRyaW1TdGFydCwgdHJpbUVuZCwgdHJpbUxlZnQsIHRyaW1SaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcykge1xuICAgIHZhciBzdHJpbmcgPSBTdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIGlmIChUWVBFICYgMSkgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UobHRyaW0sICcnKTtcbiAgICBpZiAoVFlQRSAmIDIpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJ0cmltLCAnJyk7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1MZWZ0LCB0cmltU3RhcnQgfWAgbWV0aG9kc1xuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1zdGFydFxuICBzdGFydDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1SaWdodCwgdHJpbUVuZCB9YCBtZXRob2RzXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbWVuZFxuICBlbmQ6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUudHJpbWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbVxuICB0cmltOiBjcmVhdGVNZXRob2QoMylcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3aGl0ZXNwYWNlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93aGl0ZXNwYWNlcycpO1xuXG52YXIgbm9uID0gJ1xcdTIwMEJcXHUwMDg1XFx1MTgwRSc7XG5cbi8vIGNoZWNrIHRoYXQgYSBtZXRob2Qgd29ya3Mgd2l0aCB0aGUgY29ycmVjdCBsaXN0XG4vLyBvZiB3aGl0ZXNwYWNlcyBhbmQgaGFzIGEgY29ycmVjdCBuYW1lXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICByZXR1cm4gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXdoaXRlc3BhY2VzW01FVEhPRF9OQU1FXSgpIHx8IG5vbltNRVRIT0RfTkFNRV0oKSAhPSBub24gfHwgd2hpdGVzcGFjZXNbTUVUSE9EX05BTUVdLm5hbWUgIT09IE1FVEhPRF9OQU1FO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkdHJpbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnRyaW07XG52YXIgZm9yY2VkU3RyaW5nVHJpbU1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbS1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUudHJpbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1cbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBmb3JjZWRTdHJpbmdUcmltTWV0aG9kKCd0cmltJykgfSwge1xuICB0cmltOiBmdW5jdGlvbiB0cmltKCkge1xuICAgIHJldHVybiAkdHJpbSh0aGlzKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0FSUkFZX0JVRkZFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItbmF0aXZlJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBJbnQ4QXJyYXkgPSBnbG9iYWwuSW50OEFycmF5O1xudmFyIEludDhBcnJheVByb3RvdHlwZSA9IEludDhBcnJheSAmJiBJbnQ4QXJyYXkucHJvdG90eXBlO1xudmFyIFVpbnQ4Q2xhbXBlZEFycmF5ID0gZ2xvYmFsLlVpbnQ4Q2xhbXBlZEFycmF5O1xudmFyIFVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlID0gVWludDhDbGFtcGVkQXJyYXkgJiYgVWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlO1xudmFyIFR5cGVkQXJyYXkgPSBJbnQ4QXJyYXkgJiYgZ2V0UHJvdG90eXBlT2YoSW50OEFycmF5KTtcbnZhciBUeXBlZEFycmF5UHJvdG90eXBlID0gSW50OEFycmF5UHJvdG90eXBlICYmIGdldFByb3RvdHlwZU9mKEludDhBcnJheVByb3RvdHlwZSk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbnZhciBpc1Byb3RvdHlwZU9mID0gT2JqZWN0UHJvdG90eXBlLmlzUHJvdG90eXBlT2Y7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIFRZUEVEX0FSUkFZX1RBRyA9IHVpZCgnVFlQRURfQVJSQVlfVEFHJyk7XG4vLyBGaXhpbmcgbmF0aXZlIHR5cGVkIGFycmF5cyBpbiBPcGVyYSBQcmVzdG8gY3Jhc2hlcyB0aGUgYnJvd3Nlciwgc2VlICM1OTVcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gTkFUSVZFX0FSUkFZX0JVRkZFUiAmJiAhIXNldFByb3RvdHlwZU9mICYmIGNsYXNzb2YoZ2xvYmFsLm9wZXJhKSAhPT0gJ09wZXJhJztcbnZhciBUWVBFRF9BUlJBWV9UQUdfUkVRSVJFRCA9IGZhbHNlO1xudmFyIE5BTUU7XG5cbnZhciBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCA9IHtcbiAgSW50OEFycmF5OiAxLFxuICBVaW50OEFycmF5OiAxLFxuICBVaW50OENsYW1wZWRBcnJheTogMSxcbiAgSW50MTZBcnJheTogMixcbiAgVWludDE2QXJyYXk6IDIsXG4gIEludDMyQXJyYXk6IDQsXG4gIFVpbnQzMkFycmF5OiA0LFxuICBGbG9hdDMyQXJyYXk6IDQsXG4gIEZsb2F0NjRBcnJheTogOFxufTtcblxudmFyIGlzVmlldyA9IGZ1bmN0aW9uIGlzVmlldyhpdCkge1xuICB2YXIga2xhc3MgPSBjbGFzc29mKGl0KTtcbiAgcmV0dXJuIGtsYXNzID09PSAnRGF0YVZpZXcnIHx8IGhhcyhUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCwga2xhc3MpO1xufTtcblxudmFyIGlzVHlwZWRBcnJheSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmIGhhcyhUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCwgY2xhc3NvZihpdCkpO1xufTtcblxudmFyIGFUeXBlZEFycmF5ID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc1R5cGVkQXJyYXkoaXQpKSByZXR1cm4gaXQ7XG4gIHRocm93IFR5cGVFcnJvcignVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Jyk7XG59O1xuXG52YXIgYVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIChDKSB7XG4gIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgIGlmIChpc1Byb3RvdHlwZU9mLmNhbGwoVHlwZWRBcnJheSwgQykpIHJldHVybiBDO1xuICB9IGVsc2UgZm9yICh2YXIgQVJSQVkgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIGlmIChoYXMoVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QsIE5BTUUpKSB7XG4gICAgdmFyIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGdsb2JhbFtBUlJBWV07XG4gICAgaWYgKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciAmJiAoQyA9PT0gVHlwZWRBcnJheUNvbnN0cnVjdG9yIHx8IGlzUHJvdG90eXBlT2YuY2FsbChUeXBlZEFycmF5Q29uc3RydWN0b3IsIEMpKSkge1xuICAgICAgcmV0dXJuIEM7XG4gICAgfVxuICB9IHRocm93IFR5cGVFcnJvcignVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yJyk7XG59O1xuXG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IGZ1bmN0aW9uIChLRVksIHByb3BlcnR5LCBmb3JjZWQpIHtcbiAgaWYgKCFERVNDUklQVE9SUykgcmV0dXJuO1xuICBpZiAoZm9yY2VkKSBmb3IgKHZhciBBUlJBWSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCkge1xuICAgIHZhciBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBnbG9iYWxbQVJSQVldO1xuICAgIGlmIChUeXBlZEFycmF5Q29uc3RydWN0b3IgJiYgaGFzKFR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIEtFWSkpIHtcbiAgICAgIGRlbGV0ZSBUeXBlZEFycmF5Q29uc3RydWN0b3IucHJvdG90eXBlW0tFWV07XG4gICAgfVxuICB9XG4gIGlmICghVHlwZWRBcnJheVByb3RvdHlwZVtLRVldIHx8IGZvcmNlZCkge1xuICAgIHJlZGVmaW5lKFR5cGVkQXJyYXlQcm90b3R5cGUsIEtFWSwgZm9yY2VkID8gcHJvcGVydHlcbiAgICAgIDogTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyAmJiBJbnQ4QXJyYXlQcm90b3R5cGVbS0VZXSB8fCBwcm9wZXJ0eSk7XG4gIH1cbn07XG5cbnZhciBleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kID0gZnVuY3Rpb24gKEtFWSwgcHJvcGVydHksIGZvcmNlZCkge1xuICB2YXIgQVJSQVksIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcbiAgaWYgKCFERVNDUklQVE9SUykgcmV0dXJuO1xuICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICBpZiAoZm9yY2VkKSBmb3IgKEFSUkFZIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBnbG9iYWxbQVJSQVldO1xuICAgICAgaWYgKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciAmJiBoYXMoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBLRVkpKSB7XG4gICAgICAgIGRlbGV0ZSBUeXBlZEFycmF5Q29uc3RydWN0b3JbS0VZXTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFUeXBlZEFycmF5W0tFWV0gfHwgZm9yY2VkKSB7XG4gICAgICAvLyBWOCB+IENocm9tZSA0OS01MCBgJVR5cGVkQXJyYXklYCBtZXRob2RzIGFyZSBub24td3JpdGFibGUgbm9uLWNvbmZpZ3VyYWJsZVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHJlZGVmaW5lKFR5cGVkQXJyYXksIEtFWSwgZm9yY2VkID8gcHJvcGVydHkgOiBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTICYmIEludDhBcnJheVtLRVldIHx8IHByb3BlcnR5KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgICB9IGVsc2UgcmV0dXJuO1xuICB9XG4gIGZvciAoQVJSQVkgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIHtcbiAgICBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBnbG9iYWxbQVJSQVldO1xuICAgIGlmIChUeXBlZEFycmF5Q29uc3RydWN0b3IgJiYgKCFUeXBlZEFycmF5Q29uc3RydWN0b3JbS0VZXSB8fCBmb3JjZWQpKSB7XG4gICAgICByZWRlZmluZShUeXBlZEFycmF5Q29uc3RydWN0b3IsIEtFWSwgcHJvcGVydHkpO1xuICAgIH1cbiAgfVxufTtcblxuZm9yIChOQU1FIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gIGlmICghZ2xvYmFsW05BTUVdKSBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gZmFsc2U7XG59XG5cbi8vIFdlYktpdCBidWcgLSB0eXBlZCBhcnJheXMgY29uc3RydWN0b3JzIHByb3RvdHlwZSBpcyBPYmplY3QucHJvdG90eXBlXG5pZiAoIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgfHwgdHlwZW9mIFR5cGVkQXJyYXkgIT0gJ2Z1bmN0aW9uJyB8fCBUeXBlZEFycmF5ID09PSBGdW5jdGlvbi5wcm90b3R5cGUpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvd1xuICBUeXBlZEFycmF5ID0gZnVuY3Rpb24gVHlwZWRBcnJheSgpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29ycmVjdCBpbnZvY2F0aW9uJyk7XG4gIH07XG4gIGlmIChOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTKSBmb3IgKE5BTUUgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIHtcbiAgICBpZiAoZ2xvYmFsW05BTUVdKSBzZXRQcm90b3R5cGVPZihnbG9iYWxbTkFNRV0sIFR5cGVkQXJyYXkpO1xuICB9XG59XG5cbmlmICghTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyB8fCAhVHlwZWRBcnJheVByb3RvdHlwZSB8fCBUeXBlZEFycmF5UHJvdG90eXBlID09PSBPYmplY3RQcm90b3R5cGUpIHtcbiAgVHlwZWRBcnJheVByb3RvdHlwZSA9IFR5cGVkQXJyYXkucHJvdG90eXBlO1xuICBpZiAoTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUykgZm9yIChOQU1FIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gICAgaWYgKGdsb2JhbFtOQU1FXSkgc2V0UHJvdG90eXBlT2YoZ2xvYmFsW05BTUVdLnByb3RvdHlwZSwgVHlwZWRBcnJheVByb3RvdHlwZSk7XG4gIH1cbn1cblxuLy8gV2ViS2l0IGJ1ZyAtIG9uZSBtb3JlIG9iamVjdCBpbiBVaW50OENsYW1wZWRBcnJheSBwcm90b3R5cGUgY2hhaW5cbmlmIChOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTICYmIGdldFByb3RvdHlwZU9mKFVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlKSAhPT0gVHlwZWRBcnJheVByb3RvdHlwZSkge1xuICBzZXRQcm90b3R5cGVPZihVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSwgVHlwZWRBcnJheVByb3RvdHlwZSk7XG59XG5cbmlmIChERVNDUklQVE9SUyAmJiAhaGFzKFR5cGVkQXJyYXlQcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gIFRZUEVEX0FSUkFZX1RBR19SRVFJUkVEID0gdHJ1ZTtcbiAgZGVmaW5lUHJvcGVydHkoVHlwZWRBcnJheVByb3RvdHlwZSwgVE9fU1RSSU5HX1RBRywgeyBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gaXNPYmplY3QodGhpcykgPyB0aGlzW1RZUEVEX0FSUkFZX1RBR10gOiB1bmRlZmluZWQ7XG4gIH0gfSk7XG4gIGZvciAoTkFNRSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCkgaWYgKGdsb2JhbFtOQU1FXSkge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShnbG9iYWxbTkFNRV0sIFRZUEVEX0FSUkFZX1RBRywgTkFNRSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6IE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MsXG4gIFRZUEVEX0FSUkFZX1RBRzogVFlQRURfQVJSQVlfVEFHX1JFUUlSRUQgJiYgVFlQRURfQVJSQVlfVEFHLFxuICBhVHlwZWRBcnJheTogYVR5cGVkQXJyYXksXG4gIGFUeXBlZEFycmF5Q29uc3RydWN0b3I6IGFUeXBlZEFycmF5Q29uc3RydWN0b3IsXG4gIGV4cG9ydFR5cGVkQXJyYXlNZXRob2Q6IGV4cG9ydFR5cGVkQXJyYXlNZXRob2QsXG4gIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6IGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QsXG4gIGlzVmlldzogaXNWaWV3LFxuICBpc1R5cGVkQXJyYXk6IGlzVHlwZWRBcnJheSxcbiAgVHlwZWRBcnJheTogVHlwZWRBcnJheSxcbiAgVHlwZWRBcnJheVByb3RvdHlwZTogVHlwZWRBcnJheVByb3RvdHlwZVxufTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLW5ldyAqL1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24nKTtcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTO1xuXG52YXIgQXJyYXlCdWZmZXIgPSBnbG9iYWwuQXJyYXlCdWZmZXI7XG52YXIgSW50OEFycmF5ID0gZ2xvYmFsLkludDhBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSAhTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBJbnQ4QXJyYXkoMSk7XG59KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBuZXcgSW50OEFycmF5KC0xKTtcbn0pIHx8ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIG5ldyBJbnQ4QXJyYXkoKTtcbiAgbmV3IEludDhBcnJheShudWxsKTtcbiAgbmV3IEludDhBcnJheSgxLjUpO1xuICBuZXcgSW50OEFycmF5KGl0ZXJhYmxlKTtcbn0sIHRydWUpIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gU2FmYXJpICgxMSspIGJ1ZyAtIGEgcmVhc29uIHdoeSBldmVuIFNhZmFyaSAxMyBzaG91bGQgbG9hZCBhIHR5cGVkIGFycmF5IHBvbHlmaWxsXG4gIHJldHVybiBuZXcgSW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcigyKSwgMSwgdW5kZWZpbmVkKS5sZW5ndGggIT09IDE7XG59KTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgcmVzdWx0ID0gdG9JbnRlZ2VyKGl0KTtcbiAgaWYgKHJlc3VsdCA8IDApIHRocm93IFJhbmdlRXJyb3IoXCJUaGUgYXJndW1lbnQgY2FuJ3QgYmUgbGVzcyB0aGFuIDBcIik7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwidmFyIHRvUG9zaXRpdmVJbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXBvc2l0aXZlLWludGVnZXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIEJZVEVTKSB7XG4gIHZhciBvZmZzZXQgPSB0b1Bvc2l0aXZlSW50ZWdlcihpdCk7XG4gIGlmIChvZmZzZXQgJSBCWVRFUykgdGhyb3cgUmFuZ2VFcnJvcignV3Jvbmcgb2Zmc2V0Jyk7XG4gIHJldHVybiBvZmZzZXQ7XG59O1xuIiwidmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKS5hVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwZm4sIHRoaXNBcmcgKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdChzb3VyY2UpO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIG1hcGZuID0gYXJndW1lbnRzTGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBnZXRJdGVyYXRvck1ldGhvZChPKTtcbiAgdmFyIGksIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvciwgbmV4dDtcbiAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IHVuZGVmaW5lZCAmJiAhaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJhdG9yTWV0aG9kKSkge1xuICAgIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuY2FsbChPKTtcbiAgICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgICBPID0gW107XG4gICAgd2hpbGUgKCEoc3RlcCA9IG5leHQuY2FsbChpdGVyYXRvcikpLmRvbmUpIHtcbiAgICAgIE8ucHVzaChzdGVwLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgaWYgKG1hcHBpbmcgJiYgYXJndW1lbnRzTGVuZ3RoID4gMikge1xuICAgIG1hcGZuID0gYmluZChtYXBmbiwgYXJndW1lbnRzWzJdLCAyKTtcbiAgfVxuICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHJlc3VsdCA9IG5ldyAoYVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0aGlzKSkobGVuZ3RoKTtcbiAgZm9yIChpID0gMDsgbGVuZ3RoID4gaTsgaSsrKSB7XG4gICAgcmVzdWx0W2ldID0gbWFwcGluZyA/IG1hcGZuKE9baV0sIGkpIDogT1tpXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xuXG4vLyBtYWtlcyBzdWJjbGFzc2luZyB3b3JrIGNvcnJlY3QgZm9yIHdyYXBwZWQgYnVpbHQtaW5zXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgkdGhpcywgZHVtbXksIFdyYXBwZXIpIHtcbiAgdmFyIE5ld1RhcmdldCwgTmV3VGFyZ2V0UHJvdG90eXBlO1xuICBpZiAoXG4gICAgLy8gaXQgY2FuIHdvcmsgb25seSB3aXRoIG5hdGl2ZSBgc2V0UHJvdG90eXBlT2ZgXG4gICAgc2V0UHJvdG90eXBlT2YgJiZcbiAgICAvLyB3ZSBoYXZlbid0IGNvbXBsZXRlbHkgY29ycmVjdCBwcmUtRVM2IHdheSBmb3IgZ2V0dGluZyBgbmV3LnRhcmdldGAsIHNvIHVzZSB0aGlzXG4gICAgdHlwZW9mIChOZXdUYXJnZXQgPSBkdW1teS5jb25zdHJ1Y3RvcikgPT0gJ2Z1bmN0aW9uJyAmJlxuICAgIE5ld1RhcmdldCAhPT0gV3JhcHBlciAmJlxuICAgIGlzT2JqZWN0KE5ld1RhcmdldFByb3RvdHlwZSA9IE5ld1RhcmdldC5wcm90b3R5cGUpICYmXG4gICAgTmV3VGFyZ2V0UHJvdG90eXBlICE9PSBXcmFwcGVyLnByb3RvdHlwZVxuICApIHNldFByb3RvdHlwZU9mKCR0aGlzLCBOZXdUYXJnZXRQcm90b3R5cGUpO1xuICByZXR1cm4gJHRoaXM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcnMtcmVxdWlyZS13cmFwcGVycycpO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIEFycmF5QnVmZmVyTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlcicpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9JbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleCcpO1xudmFyIHRvT2Zmc2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9mZnNldCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpLmY7XG52YXIgdHlwZWRBcnJheUZyb20gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktZnJvbScpO1xudmFyIGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZm9yRWFjaDtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgbmF0aXZlRGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xudmFyIHJvdW5kID0gTWF0aC5yb3VuZDtcbnZhciBSYW5nZUVycm9yID0gZ2xvYmFsLlJhbmdlRXJyb3I7XG52YXIgQXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlck1vZHVsZS5BcnJheUJ1ZmZlcjtcbnZhciBEYXRhVmlldyA9IEFycmF5QnVmZmVyTW9kdWxlLkRhdGFWaWV3O1xudmFyIE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M7XG52YXIgVFlQRURfQVJSQVlfVEFHID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5UWVBFRF9BUlJBWV9UQUc7XG52YXIgVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuVHlwZWRBcnJheTtcbnZhciBUeXBlZEFycmF5UHJvdG90eXBlID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5UeXBlZEFycmF5UHJvdG90eXBlO1xudmFyIGFUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5Q29uc3RydWN0b3I7XG52YXIgaXNUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5pc1R5cGVkQXJyYXk7XG52YXIgQllURVNfUEVSX0VMRU1FTlQgPSAnQllURVNfUEVSX0VMRU1FTlQnO1xudmFyIFdST05HX0xFTkdUSCA9ICdXcm9uZyBsZW5ndGgnO1xuXG52YXIgZnJvbUxpc3QgPSBmdW5jdGlvbiAoQywgbGlzdCkge1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSBuZXcgKGFUeXBlZEFycmF5Q29uc3RydWN0b3IoQykpKGxlbmd0aCk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGxpc3RbaW5kZXgrK107XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgYWRkR2V0dGVyID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgbmF0aXZlRGVmaW5lUHJvcGVydHkoaXQsIGtleSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKVtrZXldO1xuICB9IH0pO1xufTtcblxudmFyIGlzQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIGtsYXNzO1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGl0KSkgPT0gJ0FycmF5QnVmZmVyJyB8fCBrbGFzcyA9PSAnU2hhcmVkQXJyYXlCdWZmZXInO1xufTtcblxudmFyIGlzVHlwZWRBcnJheUluZGV4ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gIHJldHVybiBpc1R5cGVkQXJyYXkodGFyZ2V0KVxuICAgICYmIHR5cGVvZiBrZXkgIT0gJ3N5bWJvbCdcbiAgICAmJiBrZXkgaW4gdGFyZ2V0XG4gICAgJiYgU3RyaW5nKCtrZXkpID09IFN0cmluZyhrZXkpO1xufTtcblxudmFyIHdyYXBwZWRHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIHtcbiAgcmV0dXJuIGlzVHlwZWRBcnJheUluZGV4KHRhcmdldCwga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSlcbiAgICA/IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigyLCB0YXJnZXRba2V5XSlcbiAgICA6IG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG59O1xuXG52YXIgd3JhcHBlZERlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpIHtcbiAgaWYgKGlzVHlwZWRBcnJheUluZGV4KHRhcmdldCwga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSlcbiAgICAmJiBpc09iamVjdChkZXNjcmlwdG9yKVxuICAgICYmIGhhcyhkZXNjcmlwdG9yLCAndmFsdWUnKVxuICAgICYmICFoYXMoZGVzY3JpcHRvciwgJ2dldCcpXG4gICAgJiYgIWhhcyhkZXNjcmlwdG9yLCAnc2V0JylcbiAgICAvLyBUT0RPOiBhZGQgdmFsaWRhdGlvbiBkZXNjcmlwdG9yIHcvbyBjYWxsaW5nIGFjY2Vzc29yc1xuICAgICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVxuICAgICYmICghaGFzKGRlc2NyaXB0b3IsICd3cml0YWJsZScpIHx8IGRlc2NyaXB0b3Iud3JpdGFibGUpXG4gICAgJiYgKCFoYXMoZGVzY3JpcHRvciwgJ2VudW1lcmFibGUnKSB8fCBkZXNjcmlwdG9yLmVudW1lcmFibGUpXG4gICkge1xuICAgIHRhcmdldFtrZXldID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9IHJldHVybiBuYXRpdmVEZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzY3JpcHRvcik7XG59O1xuXG5pZiAoREVTQ1JJUFRPUlMpIHtcbiAgaWYgKCFOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTKSB7XG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmYgPSB3cmFwcGVkR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGRlZmluZVByb3BlcnR5TW9kdWxlLmYgPSB3cmFwcGVkRGVmaW5lUHJvcGVydHk7XG4gICAgYWRkR2V0dGVyKFR5cGVkQXJyYXlQcm90b3R5cGUsICdidWZmZXInKTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2J5dGVPZmZzZXQnKTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2J5dGVMZW5ndGgnKTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2xlbmd0aCcpO1xuICB9XG5cbiAgJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgfSwge1xuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogd3JhcHBlZEdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgICBkZWZpbmVQcm9wZXJ0eTogd3JhcHBlZERlZmluZVByb3BlcnR5XG4gIH0pO1xuXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRZUEUsIHdyYXBwZXIsIENMQU1QRUQpIHtcbiAgICB2YXIgQllURVMgPSBUWVBFLm1hdGNoKC9cXGQrJC8pWzBdIC8gODtcbiAgICB2YXIgQ09OU1RSVUNUT1JfTkFNRSA9IFRZUEUgKyAoQ0xBTVBFRCA/ICdDbGFtcGVkJyA6ICcnKSArICdBcnJheSc7XG4gICAgdmFyIEdFVFRFUiA9ICdnZXQnICsgVFlQRTtcbiAgICB2YXIgU0VUVEVSID0gJ3NldCcgKyBUWVBFO1xuICAgIHZhciBOYXRpdmVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBnbG9iYWxbQ09OU1RSVUNUT1JfTkFNRV07XG4gICAgdmFyIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcbiAgICB2YXIgVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlID0gVHlwZWRBcnJheUNvbnN0cnVjdG9yICYmIFR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gICAgdmFyIGV4cG9ydGVkID0ge307XG5cbiAgICB2YXIgZ2V0dGVyID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4KSB7XG4gICAgICB2YXIgZGF0YSA9IGdldEludGVybmFsU3RhdGUodGhhdCk7XG4gICAgICByZXR1cm4gZGF0YS52aWV3W0dFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEuYnl0ZU9mZnNldCwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBzZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgsIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IGdldEludGVybmFsU3RhdGUodGhhdCk7XG4gICAgICBpZiAoQ0xBTVBFRCkgdmFsdWUgPSAodmFsdWUgPSByb3VuZCh2YWx1ZSkpIDwgMCA/IDAgOiB2YWx1ZSA+IDB4RkYgPyAweEZGIDogdmFsdWUgJiAweEZGO1xuICAgICAgZGF0YS52aWV3W1NFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEuYnl0ZU9mZnNldCwgdmFsdWUsIHRydWUpO1xuICAgIH07XG5cbiAgICB2YXIgYWRkRWxlbWVudCA9IGZ1bmN0aW9uICh0aGF0LCBpbmRleCkge1xuICAgICAgbmF0aXZlRGVmaW5lUHJvcGVydHkodGhhdCwgaW5kZXgsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGdldHRlcih0aGlzLCBpbmRleCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHNldHRlcih0aGlzLCBpbmRleCwgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKCFOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTKSB7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBkYXRhLCBvZmZzZXQsICRsZW5ndGgpIHtcbiAgICAgICAgYW5JbnN0YW5jZSh0aGF0LCBUeXBlZEFycmF5Q29uc3RydWN0b3IsIENPTlNUUlVDVE9SX05BTUUpO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICB2YXIgYnl0ZU9mZnNldCA9IDA7XG4gICAgICAgIHZhciBidWZmZXIsIGJ5dGVMZW5ndGgsIGxlbmd0aDtcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkge1xuICAgICAgICAgIGxlbmd0aCA9IHRvSW5kZXgoZGF0YSk7XG4gICAgICAgICAgYnl0ZUxlbmd0aCA9IGxlbmd0aCAqIEJZVEVTO1xuICAgICAgICAgIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlTGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5QnVmZmVyKGRhdGEpKSB7XG4gICAgICAgICAgYnVmZmVyID0gZGF0YTtcbiAgICAgICAgICBieXRlT2Zmc2V0ID0gdG9PZmZzZXQob2Zmc2V0LCBCWVRFUyk7XG4gICAgICAgICAgdmFyICRsZW4gPSBkYXRhLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgaWYgKCRsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCRsZW4gJSBCWVRFUykgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9ICRsZW4gLSBieXRlT2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggPCAwKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ5dGVMZW5ndGggPSB0b0xlbmd0aCgkbGVuZ3RoKSAqIEJZVEVTO1xuICAgICAgICAgICAgaWYgKGJ5dGVMZW5ndGggKyBieXRlT2Zmc2V0ID4gJGxlbikgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZW5ndGggPSBieXRlTGVuZ3RoIC8gQllURVM7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNUeXBlZEFycmF5KGRhdGEpKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb21MaXN0KFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlGcm9tLmNhbGwoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRJbnRlcm5hbFN0YXRlKHRoYXQsIHtcbiAgICAgICAgICBidWZmZXI6IGJ1ZmZlcixcbiAgICAgICAgICBieXRlT2Zmc2V0OiBieXRlT2Zmc2V0LFxuICAgICAgICAgIGJ5dGVMZW5ndGg6IGJ5dGVMZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICAgICAgdmlldzogbmV3IERhdGFWaWV3KGJ1ZmZlcilcbiAgICAgICAgfSk7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgYWRkRWxlbWVudCh0aGF0LCBpbmRleCsrKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHNldFByb3RvdHlwZU9mKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgVHlwZWRBcnJheSk7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUgPSBUeXBlZEFycmF5Q29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKFR5cGVkQXJyYXlQcm90b3R5cGUpO1xuICAgIH0gZWxzZSBpZiAoVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUykge1xuICAgICAgVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gd3JhcHBlcihmdW5jdGlvbiAoZHVtbXksIGRhdGEsIHR5cGVkQXJyYXlPZmZzZXQsICRsZW5ndGgpIHtcbiAgICAgICAgYW5JbnN0YW5jZShkdW1teSwgVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBDT05TVFJVQ1RPUl9OQU1FKTtcbiAgICAgICAgcmV0dXJuIGluaGVyaXRJZlJlcXVpcmVkKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSByZXR1cm4gbmV3IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0b0luZGV4KGRhdGEpKTtcbiAgICAgICAgICBpZiAoaXNBcnJheUJ1ZmZlcihkYXRhKSkgcmV0dXJuICRsZW5ndGggIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBuZXcgTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGRhdGEsIHRvT2Zmc2V0KHR5cGVkQXJyYXlPZmZzZXQsIEJZVEVTKSwgJGxlbmd0aClcbiAgICAgICAgICAgIDogdHlwZWRBcnJheU9mZnNldCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gbmV3IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihkYXRhLCB0b09mZnNldCh0eXBlZEFycmF5T2Zmc2V0LCBCWVRFUykpXG4gICAgICAgICAgICAgIDogbmV3IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihkYXRhKTtcbiAgICAgICAgICBpZiAoaXNUeXBlZEFycmF5KGRhdGEpKSByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBkYXRhKTtcbiAgICAgICAgICByZXR1cm4gdHlwZWRBcnJheUZyb20uY2FsbChUeXBlZEFycmF5Q29uc3RydWN0b3IsIGRhdGEpO1xuICAgICAgICB9KCksIGR1bW15LCBUeXBlZEFycmF5Q29uc3RydWN0b3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChzZXRQcm90b3R5cGVPZikgc2V0UHJvdG90eXBlT2YoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBUeXBlZEFycmF5KTtcbiAgICAgIGZvckVhY2goZ2V0T3duUHJvcGVydHlOYW1lcyhOYXRpdmVUeXBlZEFycmF5Q29uc3RydWN0b3IpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmICghKGtleSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3IpKSB7XG4gICAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFR5cGVkQXJyYXlDb25zdHJ1Y3Rvciwga2V5LCBOYXRpdmVUeXBlZEFycmF5Q29uc3RydWN0b3Jba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgVHlwZWRBcnJheUNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZTtcbiAgICB9XG5cbiAgICBpZiAoVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlLmNvbnN0cnVjdG9yICE9PSBUeXBlZEFycmF5Q29uc3RydWN0b3IpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUsICdjb25zdHJ1Y3RvcicsIFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcik7XG4gICAgfVxuXG4gICAgaWYgKFRZUEVEX0FSUkFZX1RBRykge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSwgVFlQRURfQVJSQVlfVEFHLCBDT05TVFJVQ1RPUl9OQU1FKTtcbiAgICB9XG5cbiAgICBleHBvcnRlZFtDT05TVFJVQ1RPUl9OQU1FXSA9IFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcblxuICAgICQoe1xuICAgICAgZ2xvYmFsOiB0cnVlLCBmb3JjZWQ6IFR5cGVkQXJyYXlDb25zdHJ1Y3RvciAhPSBOYXRpdmVUeXBlZEFycmF5Q29uc3RydWN0b3IsIHNoYW06ICFOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTXG4gICAgfSwgZXhwb3J0ZWQpO1xuXG4gICAgaWYgKCEoQllURVNfUEVSX0VMRU1FTlQgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgQllURVNfUEVSX0VMRU1FTlQsIEJZVEVTKTtcbiAgICB9XG5cbiAgICBpZiAoIShCWVRFU19QRVJfRUxFTUVOVCBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUpKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlLCBCWVRFU19QRVJfRUxFTUVOVCwgQllURVMpO1xuICAgIH1cblxuICAgIHNldFNwZWNpZXMoQ09OU1RSVUNUT1JfTkFNRSk7XG4gIH07XG59IGVsc2UgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG4iLCJ2YXIgY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9yJyk7XG5cbi8vIGBVaW50OEFycmF5YCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ1VpbnQ4JywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbmAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuY29weXdpdGhpblxubW9kdWxlLmV4cG9ydHMgPSBbXS5jb3B5V2l0aGluIHx8IGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0IC8qID0gMCAqLywgc3RhcnQgLyogPSAwLCBlbmQgPSBAbGVuZ3RoICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gIHZhciBsZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciB0byA9IHRvQWJzb2x1dGVJbmRleCh0YXJnZXQsIGxlbik7XG4gIHZhciBmcm9tID0gdG9BYnNvbHV0ZUluZGV4KHN0YXJ0LCBsZW4pO1xuICB2YXIgZW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG4gIHZhciBjb3VudCA9IG1pbigoZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW4pKSAtIGZyb20sIGxlbiAtIHRvKTtcbiAgdmFyIGluYyA9IDE7XG4gIGlmIChmcm9tIDwgdG8gJiYgdG8gPCBmcm9tICsgY291bnQpIHtcbiAgICBpbmMgPSAtMTtcbiAgICBmcm9tICs9IGNvdW50IC0gMTtcbiAgICB0byArPSBjb3VudCAtIDE7XG4gIH1cbiAgd2hpbGUgKGNvdW50LS0gPiAwKSB7XG4gICAgaWYgKGZyb20gaW4gTykgT1t0b10gPSBPW2Zyb21dO1xuICAgIGVsc2UgZGVsZXRlIE9bdG9dO1xuICAgIHRvICs9IGluYztcbiAgICBmcm9tICs9IGluYztcbiAgfSByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGNvcHlXaXRoaW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktY29weS13aXRoaW4nKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5jb3B5V2l0aGluYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuY29weXdpdGhpblxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnY29weVdpdGhpbicsIGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0LCBzdGFydCAvKiAsIGVuZCAqLykge1xuICByZXR1cm4gJGNvcHlXaXRoaW4uY2FsbChhVHlwZWRBcnJheSh0aGlzKSwgdGFyZ2V0LCBzdGFydCwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGV2ZXJ5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmV2ZXJ5O1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuZXZlcnlcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2V2ZXJ5JywgZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgcmV0dXJuICRldmVyeShhVHlwZWRBcnJheSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGZpbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZmlsbCcpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmZpbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5maWxsXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2ZpbGwnLCBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qICwgc3RhcnQsIGVuZCAqLykge1xuICByZXR1cm4gJGZpbGwuYXBwbHkoYVR5cGVkQXJyYXkodGhpcyksIGFyZ3VtZW50cyk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZmlsdGVyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZpbHRlcjtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGFUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5Q29uc3RydWN0b3I7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuZmlsdGVyXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaWx0ZXInLCBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgdmFyIGxpc3QgPSAkZmlsdGVyKGFUeXBlZEFycmF5KHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSBuZXcgKGFUeXBlZEFycmF5Q29uc3RydWN0b3IoQykpKGxlbmd0aCk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGxpc3RbaW5kZXgrK107XG4gIHJldHVybiByZXN1bHQ7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maW5kO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5maW5kXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaW5kJywgZnVuY3Rpb24gZmluZChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkZmluZChhVHlwZWRBcnJheSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkZmluZEluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZpbmRJbmRleDtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5maW5kaW5kZXhcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2ZpbmRJbmRleCcsIGZ1bmN0aW9uIGZpbmRJbmRleChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkZmluZEluZGV4KGFUeXBlZEFycmF5KHRoaXMpLCBwcmVkaWNhdGUsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZvckVhY2g7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmZvcmVhY2hcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2ZvckVhY2gnLCBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICRmb3JFYWNoKGFUeXBlZEFycmF5KHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkaW5jbHVkZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmNsdWRlcztcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmluY2x1ZGVzXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdpbmNsdWRlcycsIGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHtcbiAgcmV0dXJuICRpbmNsdWRlcyhhVHlwZWRBcnJheSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5pbmRleG9mXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdpbmRleE9mJywgZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ICovKSB7XG4gIHJldHVybiAkaW5kZXhPZihhVHlwZWRBcnJheSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIEFycmF5SXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvcicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5O1xudmFyIGFycmF5VmFsdWVzID0gQXJyYXlJdGVyYXRvcnMudmFsdWVzO1xudmFyIGFycmF5S2V5cyA9IEFycmF5SXRlcmF0b3JzLmtleXM7XG52YXIgYXJyYXlFbnRyaWVzID0gQXJyYXlJdGVyYXRvcnMuZW50cmllcztcbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcbnZhciBuYXRpdmVUeXBlZEFycmF5SXRlcmF0b3IgPSBVaW50OEFycmF5ICYmIFVpbnQ4QXJyYXkucHJvdG90eXBlW0lURVJBVE9SXTtcblxudmFyIENPUlJFQ1RfSVRFUl9OQU1FID0gISFuYXRpdmVUeXBlZEFycmF5SXRlcmF0b3JcbiAgJiYgKG5hdGl2ZVR5cGVkQXJyYXlJdGVyYXRvci5uYW1lID09ICd2YWx1ZXMnIHx8IG5hdGl2ZVR5cGVkQXJyYXlJdGVyYXRvci5uYW1lID09IHVuZGVmaW5lZCk7XG5cbnZhciB0eXBlZEFycmF5VmFsdWVzID0gZnVuY3Rpb24gdmFsdWVzKCkge1xuICByZXR1cm4gYXJyYXlWYWx1ZXMuY2FsbChhVHlwZWRBcnJheSh0aGlzKSk7XG59O1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuZW50cmllc1xuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZW50cmllcycsIGZ1bmN0aW9uIGVudHJpZXMoKSB7XG4gIHJldHVybiBhcnJheUVudHJpZXMuY2FsbChhVHlwZWRBcnJheSh0aGlzKSk7XG59KTtcbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5rZXlzXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdrZXlzJywgZnVuY3Rpb24ga2V5cygpIHtcbiAgcmV0dXJuIGFycmF5S2V5cy5jYWxsKGFUeXBlZEFycmF5KHRoaXMpKTtcbn0pO1xuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUudmFsdWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUudmFsdWVzXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCd2YWx1ZXMnLCB0eXBlZEFycmF5VmFsdWVzLCAhQ09SUkVDVF9JVEVSX05BTUUpO1xuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS1AQGl0ZXJhdG9yXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKElURVJBVE9SLCB0eXBlZEFycmF5VmFsdWVzLCAhQ09SUkVDVF9JVEVSX05BTUUpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgJGpvaW4gPSBbXS5qb2luO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5qb2luYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuam9pblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdqb2luJywgZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHtcbiAgcmV0dXJuICRqb2luLmFwcGx5KGFUeXBlZEFycmF5KHRoaXMpLCBhcmd1bWVudHMpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcbnZhciBhcnJheU1ldGhvZFVzZXNUb0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtdXNlcy10by1sZW5ndGgnKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xudmFyIG5hdGl2ZUxhc3RJbmRleE9mID0gW10ubGFzdEluZGV4T2Y7XG52YXIgTkVHQVRJVkVfWkVSTyA9ICEhbmF0aXZlTGFzdEluZGV4T2YgJiYgMSAvIFsxXS5sYXN0SW5kZXhPZigxLCAtMCkgPCAwO1xudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdsYXN0SW5kZXhPZicpO1xuLy8gRm9yIHByZXZlbnRpbmcgcG9zc2libGUgYWxtb3N0IGluZmluaXRlIGxvb3AgaW4gbm9uLXN0YW5kYXJkIGltcGxlbWVudGF0aW9ucywgdGVzdCB0aGUgZm9yd2FyZCB2ZXJzaW9uIG9mIHRoZSBtZXRob2RcbnZhciBVU0VTX1RPX0xFTkdUSCA9IGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoKCdpbmRleE9mJywgeyBBQ0NFU1NPUlM6IHRydWUsIDE6IDAgfSk7XG52YXIgRk9SQ0VEID0gTkVHQVRJVkVfWkVSTyB8fCAhU1RSSUNUX01FVEhPRCB8fCAhVVNFU19UT19MRU5HVEg7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2ZgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmxhc3RpbmRleG9mXG5tb2R1bGUuZXhwb3J0cyA9IEZPUkNFRCA/IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggPSBAWyotMV0gKi8pIHtcbiAgLy8gY29udmVydCAtMCB0byArMFxuICBpZiAoTkVHQVRJVkVfWkVSTykgcmV0dXJuIG5hdGl2ZUxhc3RJbmRleE9mLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgMDtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QodGhpcyk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gIHZhciBpbmRleCA9IGxlbmd0aCAtIDE7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgaW5kZXggPSBtaW4oaW5kZXgsIHRvSW50ZWdlcihhcmd1bWVudHNbMV0pKTtcbiAgaWYgKGluZGV4IDwgMCkgaW5kZXggPSBsZW5ndGggKyBpbmRleDtcbiAgZm9yICg7aW5kZXggPj0gMDsgaW5kZXgtLSkgaWYgKGluZGV4IGluIE8gJiYgT1tpbmRleF0gPT09IHNlYXJjaEVsZW1lbnQpIHJldHVybiBpbmRleCB8fCAwO1xuICByZXR1cm4gLTE7XG59IDogbmF0aXZlTGFzdEluZGV4T2Y7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJGxhc3RJbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWxhc3QtaW5kZXgtb2YnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5sYXN0SW5kZXhPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmxhc3RpbmRleG9mXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2xhc3RJbmRleE9mJywgZnVuY3Rpb24gbGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCAqLykge1xuICByZXR1cm4gJGxhc3RJbmRleE9mLmFwcGx5KGFUeXBlZEFycmF5KHRoaXMpLCBhcmd1bWVudHMpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJG1hcCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5tYXA7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLm1hcFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnbWFwJywgZnVuY3Rpb24gbWFwKG1hcGZuIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJG1hcChhVHlwZWRBcnJheSh0aGlzKSwgbWFwZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBmdW5jdGlvbiAoTywgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIG5ldyAoYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihzcGVjaWVzQ29uc3RydWN0b3IoTywgTy5jb25zdHJ1Y3RvcikpKShsZW5ndGgpO1xuICB9KTtcbn0pO1xuIiwidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgcmVkdWNlLCByZWR1Y2VSaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX1JJR0hUKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgY2FsbGJhY2tmbiwgYXJndW1lbnRzTGVuZ3RoLCBtZW1vKSB7XG4gICAgYUZ1bmN0aW9uKGNhbGxiYWNrZm4pO1xuICAgIHZhciBPID0gdG9PYmplY3QodGhhdCk7XG4gICAgdmFyIHNlbGYgPSBJbmRleGVkT2JqZWN0KE8pO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gSVNfUklHSFQgPyBsZW5ndGggLSAxIDogMDtcbiAgICB2YXIgaSA9IElTX1JJR0hUID8gLTEgOiAxO1xuICAgIGlmIChhcmd1bWVudHNMZW5ndGggPCAyKSB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGluZGV4IGluIHNlbGYpIHtcbiAgICAgICAgbWVtbyA9IHNlbGZbaW5kZXhdO1xuICAgICAgICBpbmRleCArPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGluZGV4ICs9IGk7XG4gICAgICBpZiAoSVNfUklHSFQgPyBpbmRleCA8IDAgOiBsZW5ndGggPD0gaW5kZXgpIHtcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoO0lTX1JJR0hUID8gaW5kZXggPj0gMCA6IGxlbmd0aCA+IGluZGV4OyBpbmRleCArPSBpKSBpZiAoaW5kZXggaW4gc2VsZikge1xuICAgICAgbWVtbyA9IGNhbGxiYWNrZm4obWVtbywgc2VsZltpbmRleF0sIGluZGV4LCBPKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5yZWR1Y2VgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUucmVkdWNlXG4gIGxlZnQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUucmVkdWNlcmlnaHRcbiAgcmlnaHQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkcmVkdWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXJlZHVjZScpLmxlZnQ7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUucmVkdWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUucmVkdWNlXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdyZWR1Y2UnLCBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICByZXR1cm4gJHJlZHVjZShhVHlwZWRBcnJheSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgJHJlZHVjZVJpZ2h0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXJlZHVjZScpLnJpZ2h0O1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnJlZHVjZVJpY2h0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUucmVkdWNlcmlnaHRcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3JlZHVjZVJpZ2h0JywgZnVuY3Rpb24gcmVkdWNlUmlnaHQoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykge1xuICByZXR1cm4gJHJlZHVjZVJpZ2h0KGFUeXBlZEFycmF5KHRoaXMpLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUucmV2ZXJzZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnJldmVyc2VcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3JldmVyc2UnLCBmdW5jdGlvbiByZXZlcnNlKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciBsZW5ndGggPSBhVHlwZWRBcnJheSh0aGF0KS5sZW5ndGg7XG4gIHZhciBtaWRkbGUgPSBmbG9vcihsZW5ndGggLyAyKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHZhbHVlO1xuICB3aGlsZSAoaW5kZXggPCBtaWRkbGUpIHtcbiAgICB2YWx1ZSA9IHRoYXRbaW5kZXhdO1xuICAgIHRoYXRbaW5kZXgrK10gPSB0aGF0Wy0tbGVuZ3RoXTtcbiAgICB0aGF0W2xlbmd0aF0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdGhhdDtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvT2Zmc2V0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9mZnNldCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIG5ldyBJbnQ4QXJyYXkoMSkuc2V0KHt9KTtcbn0pO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5zZXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5zZXRcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3NldCcsIGZ1bmN0aW9uIHNldChhcnJheUxpa2UgLyogLCBvZmZzZXQgKi8pIHtcbiAgYVR5cGVkQXJyYXkodGhpcyk7XG4gIHZhciBvZmZzZXQgPSB0b09mZnNldChhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMSk7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgdmFyIHNyYyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gIHZhciBsZW4gPSB0b0xlbmd0aChzcmMubGVuZ3RoKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgaWYgKGxlbiArIG9mZnNldCA+IGxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcignV3JvbmcgbGVuZ3RoJyk7XG4gIHdoaWxlIChpbmRleCA8IGxlbikgdGhpc1tvZmZzZXQgKyBpbmRleF0gPSBzcmNbaW5kZXgrK107XG59LCBGT1JDRUQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgJHNsaWNlID0gW10uc2xpY2U7XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBuZXcgSW50OEFycmF5KDEpLnNsaWNlKCk7XG59KTtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuc2xpY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5zbGljZVxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnc2xpY2UnLCBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKSB7XG4gIHZhciBsaXN0ID0gJHNsaWNlLmNhbGwoYVR5cGVkQXJyYXkodGhpcyksIHN0YXJ0LCBlbmQpO1xuICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICB2YXIgcmVzdWx0ID0gbmV3IChhVHlwZWRBcnJheUNvbnN0cnVjdG9yKEMpKShsZW5ndGgpO1xuICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHJlc3VsdFtpbmRleF0gPSBsaXN0W2luZGV4KytdO1xuICByZXR1cm4gcmVzdWx0O1xufSwgRk9SQ0VEKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKTtcbnZhciAkc29tZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5zb21lO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnNvbWVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS5zb21lXG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdzb21lJywgZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJHNvbWUoYVR5cGVkQXJyYXkodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZScpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgJHNvcnQgPSBbXS5zb3J0O1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5zb3J0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuc29ydFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnc29ydCcsIGZ1bmN0aW9uIHNvcnQoY29tcGFyZWZuKSB7XG4gIHJldHVybiAkc29ydC5jYWxsKGFUeXBlZEFycmF5KHRoaXMpLCBjb21wYXJlZm4pO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5zdWJhcnJheWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnN1YmFycmF5XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdzdWJhcnJheScsIGZ1bmN0aW9uIHN1YmFycmF5KGJlZ2luLCBlbmQpIHtcbiAgdmFyIE8gPSBhVHlwZWRBcnJheSh0aGlzKTtcbiAgdmFyIGxlbmd0aCA9IE8ubGVuZ3RoO1xuICB2YXIgYmVnaW5JbmRleCA9IHRvQWJzb2x1dGVJbmRleChiZWdpbiwgbGVuZ3RoKTtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKE8sIE8uY29uc3RydWN0b3IpKShcbiAgICBPLmJ1ZmZlcixcbiAgICBPLmJ5dGVPZmZzZXQgKyBiZWdpbkluZGV4ICogTy5CWVRFU19QRVJfRUxFTUVOVCxcbiAgICB0b0xlbmd0aCgoZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW5ndGgpKSAtIGJlZ2luSW5kZXgpXG4gICk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIEludDhBcnJheSA9IGdsb2JhbC5JbnQ4QXJyYXk7XG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgJHRvTG9jYWxlU3RyaW5nID0gW10udG9Mb2NhbGVTdHJpbmc7XG52YXIgJHNsaWNlID0gW10uc2xpY2U7XG5cbi8vIGlPUyBTYWZhcmkgNi54IGZhaWxzIGhlcmVcbnZhciBUT19MT0NBTEVfU1RSSU5HX0JVRyA9ICEhSW50OEFycmF5ICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgJHRvTG9jYWxlU3RyaW5nLmNhbGwobmV3IEludDhBcnJheSgxKSk7XG59KTtcblxudmFyIEZPUkNFRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFsxLCAyXS50b0xvY2FsZVN0cmluZygpICE9IG5ldyBJbnQ4QXJyYXkoWzEsIDJdKS50b0xvY2FsZVN0cmluZygpO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgSW50OEFycmF5LnByb3RvdHlwZS50b0xvY2FsZVN0cmluZy5jYWxsKFsxLCAyXSk7XG59KTtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS50b2xvY2FsZXN0cmluZ1xuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgndG9Mb2NhbGVTdHJpbmcnLCBmdW5jdGlvbiB0b0xvY2FsZVN0cmluZygpIHtcbiAgcmV0dXJuICR0b0xvY2FsZVN0cmluZy5hcHBseShUT19MT0NBTEVfU1RSSU5HX0JVRyA/ICRzbGljZS5jYWxsKGFUeXBlZEFycmF5KHRoaXMpKSA6IGFUeXBlZEFycmF5KHRoaXMpLCBhcmd1bWVudHMpO1xufSwgRk9SQ0VEKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUnKS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5O1xudmFyIFVpbnQ4QXJyYXlQcm90b3R5cGUgPSBVaW50OEFycmF5ICYmIFVpbnQ4QXJyYXkucHJvdG90eXBlIHx8IHt9O1xudmFyIGFycmF5VG9TdHJpbmcgPSBbXS50b1N0cmluZztcbnZhciBhcnJheUpvaW4gPSBbXS5qb2luO1xuXG5pZiAoZmFpbHMoZnVuY3Rpb24gKCkgeyBhcnJheVRvU3RyaW5nLmNhbGwoe30pOyB9KSkge1xuICBhcnJheVRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGFycmF5Sm9pbi5jYWxsKHRoaXMpO1xuICB9O1xufVxuXG52YXIgSVNfTk9UX0FSUkFZX01FVEhPRCA9IFVpbnQ4QXJyYXlQcm90b3R5cGUudG9TdHJpbmcgIT0gYXJyYXlUb1N0cmluZztcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS50b3N0cmluZ1xuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgndG9TdHJpbmcnLCBhcnJheVRvU3RyaW5nLCBJU19OT1RfQVJSQVlfTUVUSE9EKTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHVybCA9IG5ldyBVUkwoJ2I/YT0xJmI9MiZjPTMnLCAnaHR0cDovL2EnKTtcbiAgdmFyIHNlYXJjaFBhcmFtcyA9IHVybC5zZWFyY2hQYXJhbXM7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdXJsLnBhdGhuYW1lID0gJ2MlMjBkJztcbiAgc2VhcmNoUGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICBzZWFyY2hQYXJhbXNbJ2RlbGV0ZSddKCdiJyk7XG4gICAgcmVzdWx0ICs9IGtleSArIHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIChJU19QVVJFICYmICF1cmwudG9KU09OKVxuICAgIHx8ICFzZWFyY2hQYXJhbXMuc29ydFxuICAgIHx8IHVybC5ocmVmICE9PSAnaHR0cDovL2EvYyUyMGQ/YT0xJmM9MydcbiAgICB8fCBzZWFyY2hQYXJhbXMuZ2V0KCdjJykgIT09ICczJ1xuICAgIHx8IFN0cmluZyhuZXcgVVJMU2VhcmNoUGFyYW1zKCc/YT0xJykpICE9PSAnYT0xJ1xuICAgIHx8ICFzZWFyY2hQYXJhbXNbSVRFUkFUT1JdXG4gICAgLy8gdGhyb3dzIGluIEVkZ2VcbiAgICB8fCBuZXcgVVJMKCdodHRwczovL2FAYicpLnVzZXJuYW1lICE9PSAnYSdcbiAgICB8fCBuZXcgVVJMU2VhcmNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMoJ2E9YicpKS5nZXQoJ2EnKSAhPT0gJ2InXG4gICAgLy8gbm90IHB1bnljb2RlZCBpbiBFZGdlXG4gICAgfHwgbmV3IFVSTCgnaHR0cDovL9GC0LXRgdGCJykuaG9zdCAhPT0gJ3huLS1lMWF5YmMnXG4gICAgLy8gbm90IGVzY2FwZWQgaW4gQ2hyb21lIDYyLVxuICAgIHx8IG5ldyBVUkwoJ2h0dHA6Ly9hI9CxJykuaGFzaCAhPT0gJyMlRDAlQjEnXG4gICAgLy8gZmFpbHMgaW4gQ2hyb21lIDY2LVxuICAgIHx8IHJlc3VsdCAhPT0gJ2ExYzMnXG4gICAgLy8gdGhyb3dzIGluIFNhZmFyaVxuICAgIHx8IG5ldyBVUkwoJ2h0dHA6Ly94JywgdW5kZWZpbmVkKS5ob3N0ICE9PSAneCc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG5cbnZhciBuYXRpdmVBc3NpZ24gPSBPYmplY3QuYXNzaWduO1xudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuYXNzaWduXG5tb2R1bGUuZXhwb3J0cyA9ICFuYXRpdmVBc3NpZ24gfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBzaG91bGQgaGF2ZSBjb3JyZWN0IG9yZGVyIG9mIG9wZXJhdGlvbnMgKEVkZ2UgYnVnKVxuICBpZiAoREVTQ1JJUFRPUlMgJiYgbmF0aXZlQXNzaWduKHsgYjogMSB9LCBuYXRpdmVBc3NpZ24oZGVmaW5lUHJvcGVydHkoe30sICdhJywge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAnYicsIHtcbiAgICAgICAgdmFsdWU6IDMsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCB7IGI6IDIgfSkpLmIgIT09IDEpIHJldHVybiB0cnVlO1xuICAvLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1ZylcbiAgdmFyIEEgPSB7fTtcbiAgdmFyIEIgPSB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBzeW1ib2wgPSBTeW1ib2woKTtcbiAgdmFyIGFscGhhYmV0ID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtzeW1ib2xdID0gNztcbiAgYWxwaGFiZXQuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGNocikgeyBCW2Nocl0gPSBjaHI7IH0pO1xuICByZXR1cm4gbmF0aXZlQXNzaWduKHt9LCBBKVtzeW1ib2xdICE9IDcgfHwgb2JqZWN0S2V5cyhuYXRpdmVBc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBhbHBoYWJldDtcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICB2YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mO1xuICB3aGlsZSAoYXJndW1lbnRzTGVuZ3RoID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IEluZGV4ZWRPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5U3ltYm9scyA/IG9iamVjdEtleXMoUykuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhTKSkgOiBvYmplY3RLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKFMsIGtleSkpIFRba2V5XSA9IFNba2V5XTtcbiAgICB9XG4gIH0gcmV0dXJuIFQ7XG59IDogbmF0aXZlQXNzaWduO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxuLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgRU5UUklFUykge1xuICB0cnkge1xuICAgIHJldHVybiBFTlRSSUVTID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NhbGwtd2l0aC1zYWZlLWl0ZXJhdGlvbi1jbG9zaW5nJyk7XG52YXIgaXNBcnJheUl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcblxuLy8gYEFycmF5LmZyb21gIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkuZnJvbVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5O1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIG1hcGZuID0gYXJndW1lbnRzTGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBnZXRJdGVyYXRvck1ldGhvZChPKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvciwgbmV4dCwgdmFsdWU7XG4gIGlmIChtYXBwaW5nKSBtYXBmbiA9IGJpbmQobWFwZm4sIGFyZ3VtZW50c0xlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAvLyBpZiB0aGUgdGFyZ2V0IGlzIG5vdCBpdGVyYWJsZSBvciBpdCdzIGFuIGFycmF5IHdpdGggdGhlIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2UgYSBzaW1wbGUgY2FzZVxuICBpZiAoaXRlcmF0b3JNZXRob2QgIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlcmF0b3JNZXRob2QpKSkge1xuICAgIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuY2FsbChPKTtcbiAgICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgICByZXN1bHQgPSBuZXcgQygpO1xuICAgIGZvciAoOyEoc3RlcCA9IG5leHQuY2FsbChpdGVyYXRvcikpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgIHZhbHVlID0gbWFwcGluZyA/IGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWU7XG4gICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICByZXN1bHQgPSBuZXcgQyhsZW5ndGgpO1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICB2YWx1ZSA9IG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF07XG4gICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vYmVzdGllanMvcHVueWNvZGUuanMvYmxvYi9tYXN0ZXIvcHVueWNvZGUuanNcbnZhciBtYXhJbnQgPSAyMTQ3NDgzNjQ3OyAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG52YXIgYmFzZSA9IDM2O1xudmFyIHRNaW4gPSAxO1xudmFyIHRNYXggPSAyNjtcbnZhciBza2V3ID0gMzg7XG52YXIgZGFtcCA9IDcwMDtcbnZhciBpbml0aWFsQmlhcyA9IDcyO1xudmFyIGluaXRpYWxOID0gMTI4OyAvLyAweDgwXG52YXIgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG52YXIgcmVnZXhOb25BU0NJSSA9IC9bXlxcMC1cXHUwMDdFXS87IC8vIG5vbi1BU0NJSSBjaGFyc1xudmFyIHJlZ2V4U2VwYXJhdG9ycyA9IC9bLlxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZzsgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xudmFyIE9WRVJGTE9XX0VSUk9SID0gJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJztcbnZhciBiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHN0cmluZ0Zyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcbiAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuICogbWF0Y2hpbmcgVVRGLTE2LlxuICovXG52YXIgdWNzMmRlY29kZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICB2YXIgY291bnRlciA9IDA7XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICB3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG4gICAgaWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuICAgICAgLy8gSXQncyBhIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3Rlci5cbiAgICAgIHZhciBleHRyYSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG4gICAgICBpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHsgLy8gTG93IHN1cnJvZ2F0ZS5cbiAgICAgICAgb3V0cHV0LnB1c2goKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEl0J3MgYW4gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlXG4gICAgICAgIC8vIG5leHQgY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyLlxuICAgICAgICBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKi9cbnZhciBkaWdpdFRvQmFzaWMgPSBmdW5jdGlvbiAoZGlnaXQpIHtcbiAgLy8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcbiAgLy8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG4gIHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNik7XG59O1xuXG4vKipcbiAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG4gKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuICovXG52YXIgYWRhcHQgPSBmdW5jdGlvbiAoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG4gIHZhciBrID0gMDtcbiAgZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcbiAgZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuICBmb3IgKDsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcbiAgICBkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG4gIH1cbiAgcmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG4gKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIG1heC1zdGF0ZW1lbnRzXG52YXIgZW5jb2RlID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcblxuICAvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBhbiBhcnJheSBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLlxuICBpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG4gIC8vIENhY2hlIHRoZSBsZW5ndGguXG4gIHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuICAvLyBJbml0aWFsaXplIHRoZSBzdGF0ZS5cbiAgdmFyIG4gPSBpbml0aWFsTjtcbiAgdmFyIGRlbHRhID0gMDtcbiAgdmFyIGJpYXMgPSBpbml0aWFsQmlhcztcbiAgdmFyIGksIGN1cnJlbnRWYWx1ZTtcblxuICAvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzLlxuICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtpXTtcbiAgICBpZiAoY3VycmVudFZhbHVlIDwgMHg4MCkge1xuICAgICAgb3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7IC8vIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cbiAgdmFyIGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGg7IC8vIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXG4gIC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIHdpdGggYSBkZWxpbWl0ZXIgdW5sZXNzIGl0J3MgZW1wdHkuXG4gIGlmIChiYXNpY0xlbmd0aCkge1xuICAgIG91dHB1dC5wdXNoKGRlbGltaXRlcik7XG4gIH1cblxuICAvLyBNYWluIGVuY29kaW5nIGxvb3A6XG4gIHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG4gICAgLy8gQWxsIG5vbi1iYXNpYyBjb2RlIHBvaW50cyA8IG4gaGF2ZSBiZWVuIGhhbmRsZWQgYWxyZWFkeS4gRmluZCB0aGUgbmV4dCBsYXJnZXIgb25lOlxuICAgIHZhciBtID0gbWF4SW50O1xuICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgY3VycmVudFZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoY3VycmVudFZhbHVlID49IG4gJiYgY3VycmVudFZhbHVlIDwgbSkge1xuICAgICAgICBtID0gY3VycmVudFZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPiwgYnV0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuXG4gICAgdmFyIGhhbmRsZWRDUENvdW50UGx1c09uZSA9IGhhbmRsZWRDUENvdW50ICsgMTtcbiAgICBpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuICAgICAgdGhyb3cgUmFuZ2VFcnJvcihPVkVSRkxPV19FUlJPUik7XG4gICAgfVxuXG4gICAgZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcbiAgICBuID0gbTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgY3VycmVudFZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG4gICAgICAgIHRocm93IFJhbmdlRXJyb3IoT1ZFUkZMT1dfRVJST1IpO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBuKSB7XG4gICAgICAgIC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuICAgICAgICB2YXIgcSA9IGRlbHRhO1xuICAgICAgICBmb3IgKHZhciBrID0gYmFzZTsgLyogbm8gY29uZGl0aW9uICovOyBrICs9IGJhc2UpIHtcbiAgICAgICAgICB2YXIgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG4gICAgICAgICAgaWYgKHEgPCB0KSBicmVhaztcbiAgICAgICAgICB2YXIgcU1pbnVzVCA9IHEgLSB0O1xuICAgICAgICAgIHZhciBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG4gICAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QpKSk7XG4gICAgICAgICAgcSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSkpKTtcbiAgICAgICAgYmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcbiAgICAgICAgZGVsdGEgPSAwO1xuICAgICAgICArK2hhbmRsZWRDUENvdW50O1xuICAgICAgfVxuICAgIH1cblxuICAgICsrZGVsdGE7XG4gICAgKytuO1xuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgZW5jb2RlZCA9IFtdO1xuICB2YXIgbGFiZWxzID0gaW5wdXQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xcdTAwMkUnKS5zcGxpdCgnLicpO1xuICB2YXIgaSwgbGFiZWw7XG4gIGZvciAoaSA9IDA7IGkgPCBsYWJlbHMubGVuZ3RoOyBpKyspIHtcbiAgICBsYWJlbCA9IGxhYmVsc1tpXTtcbiAgICBlbmNvZGVkLnB1c2gocmVnZXhOb25BU0NJSS50ZXN0KGxhYmVsKSA/ICd4bi0tJyArIGVuY29kZShsYWJlbCkgOiBsYWJlbCk7XG4gIH1cbiAgcmV0dXJuIGVuY29kZWQuam9pbignLicpO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKGl0KTtcbiAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuICB9IHJldHVybiBhbk9iamVjdChpdGVyYXRvck1ldGhvZC5jYWxsKGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogaW4gY29yZS1qc0A0LCBtb3ZlIC9tb2R1bGVzLyBkZXBlbmRlbmNpZXMgdG8gcHVibGljIGVudHJpZXMgZm9yIGJldHRlciBvcHRpbWl6YXRpb24gYnkgdG9vbHMgbGlrZSBgcHJlc2V0LWVudmBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3InKTtcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgVVNFX05BVElWRV9VUkwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXVybCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3RvcicpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciAkZmV0Y2ggPSBnZXRCdWlsdEluKCdmZXRjaCcpO1xudmFyIEhlYWRlcnMgPSBnZXRCdWlsdEluKCdIZWFkZXJzJyk7XG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgVVJMX1NFQVJDSF9QQVJBTVMgPSAnVVJMU2VhcmNoUGFyYW1zJztcbnZhciBVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUiA9IFVSTF9TRUFSQ0hfUEFSQU1TICsgJ0l0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFVSTF9TRUFSQ0hfUEFSQU1TKTtcbnZhciBnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUik7XG5cbnZhciBwbHVzID0gL1xcKy9nO1xudmFyIHNlcXVlbmNlcyA9IEFycmF5KDQpO1xuXG52YXIgcGVyY2VudFNlcXVlbmNlID0gZnVuY3Rpb24gKGJ5dGVzKSB7XG4gIHJldHVybiBzZXF1ZW5jZXNbYnl0ZXMgLSAxXSB8fCAoc2VxdWVuY2VzW2J5dGVzIC0gMV0gPSBSZWdFeHAoJygoPzolW1xcXFxkYS1mXXsyfSl7JyArIGJ5dGVzICsgJ30pJywgJ2dpJykpO1xufTtcblxudmFyIHBlcmNlbnREZWNvZGUgPSBmdW5jdGlvbiAoc2VxdWVuY2UpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHNlcXVlbmNlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gc2VxdWVuY2U7XG4gIH1cbn07XG5cbnZhciBkZXNlcmlhbGl6ZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgcmVzdWx0ID0gaXQucmVwbGFjZShwbHVzLCAnICcpO1xuICB2YXIgYnl0ZXMgPSA0O1xuICB0cnkge1xuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB3aGlsZSAoYnl0ZXMpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHBlcmNlbnRTZXF1ZW5jZShieXRlcy0tKSwgcGVyY2VudERlY29kZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5cbnZhciBmaW5kID0gL1shJygpfl18JTIwL2c7XG5cbnZhciByZXBsYWNlID0ge1xuICAnISc6ICclMjEnLFxuICBcIidcIjogJyUyNycsXG4gICcoJzogJyUyOCcsXG4gICcpJzogJyUyOScsXG4gICd+JzogJyU3RScsXG4gICclMjAnOiAnKydcbn07XG5cbnZhciByZXBsYWNlciA9IGZ1bmN0aW9uIChtYXRjaCkge1xuICByZXR1cm4gcmVwbGFjZVttYXRjaF07XG59O1xuXG52YXIgc2VyaWFsaXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoaXQpLnJlcGxhY2UoZmluZCwgcmVwbGFjZXIpO1xufTtcblxudmFyIHBhcnNlU2VhcmNoUGFyYW1zID0gZnVuY3Rpb24gKHJlc3VsdCwgcXVlcnkpIHtcbiAgaWYgKHF1ZXJ5KSB7XG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBxdWVyeS5zcGxpdCgnJicpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGF0dHJpYnV0ZSwgZW50cnk7XG4gICAgd2hpbGUgKGluZGV4IDwgYXR0cmlidXRlcy5sZW5ndGgpIHtcbiAgICAgIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbaW5kZXgrK107XG4gICAgICBpZiAoYXR0cmlidXRlLmxlbmd0aCkge1xuICAgICAgICBlbnRyeSA9IGF0dHJpYnV0ZS5zcGxpdCgnPScpO1xuICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAga2V5OiBkZXNlcmlhbGl6ZShlbnRyeS5zaGlmdCgpKSxcbiAgICAgICAgICB2YWx1ZTogZGVzZXJpYWxpemUoZW50cnkuam9pbignPScpKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciB1cGRhdGVTZWFyY2hQYXJhbXMgPSBmdW5jdGlvbiAocXVlcnkpIHtcbiAgdGhpcy5lbnRyaWVzLmxlbmd0aCA9IDA7XG4gIHBhcnNlU2VhcmNoUGFyYW1zKHRoaXMuZW50cmllcywgcXVlcnkpO1xufTtcblxudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gZnVuY3Rpb24gKHBhc3NlZCwgcmVxdWlyZWQpIHtcbiAgaWYgKHBhc3NlZCA8IHJlcXVpcmVkKSB0aHJvdyBUeXBlRXJyb3IoJ05vdCBlbm91Z2ggYXJndW1lbnRzJyk7XG59O1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKGZ1bmN0aW9uIEl0ZXJhdG9yKHBhcmFtcywga2luZCkge1xuICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICB0eXBlOiBVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUixcbiAgICBpdGVyYXRvcjogZ2V0SXRlcmF0b3IoZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZShwYXJhbXMpLmVudHJpZXMpLFxuICAgIGtpbmQ6IGtpbmRcbiAgfSk7XG59LCAnSXRlcmF0b3InLCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUodGhpcyk7XG4gIHZhciBraW5kID0gc3RhdGUua2luZDtcbiAgdmFyIHN0ZXAgPSBzdGF0ZS5pdGVyYXRvci5uZXh0KCk7XG4gIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG4gIGlmICghc3RlcC5kb25lKSB7XG4gICAgc3RlcC52YWx1ZSA9IGtpbmQgPT09ICdrZXlzJyA/IGVudHJ5LmtleSA6IGtpbmQgPT09ICd2YWx1ZXMnID8gZW50cnkudmFsdWUgOiBbZW50cnkua2V5LCBlbnRyeS52YWx1ZV07XG4gIH0gcmV0dXJuIHN0ZXA7XG59KTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtc2AgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLXVybHNlYXJjaHBhcmFtc1xudmFyIFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yID0gZnVuY3Rpb24gVVJMU2VhcmNoUGFyYW1zKC8qIGluaXQgKi8pIHtcbiAgYW5JbnN0YW5jZSh0aGlzLCBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvciwgVVJMX1NFQVJDSF9QQVJBTVMpO1xuICB2YXIgaW5pdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkO1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciBlbnRyaWVzID0gW107XG4gIHZhciBpdGVyYXRvck1ldGhvZCwgaXRlcmF0b3IsIG5leHQsIHN0ZXAsIGVudHJ5SXRlcmF0b3IsIGVudHJ5TmV4dCwgZmlyc3QsIHNlY29uZCwga2V5O1xuXG4gIHNldEludGVybmFsU3RhdGUodGhhdCwge1xuICAgIHR5cGU6IFVSTF9TRUFSQ0hfUEFSQU1TLFxuICAgIGVudHJpZXM6IGVudHJpZXMsXG4gICAgdXBkYXRlVVJMOiBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sXG4gICAgdXBkYXRlU2VhcmNoUGFyYW1zOiB1cGRhdGVTZWFyY2hQYXJhbXNcbiAgfSk7XG5cbiAgaWYgKGluaXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChpc09iamVjdChpbml0KSkge1xuICAgICAgaXRlcmF0b3JNZXRob2QgPSBnZXRJdGVyYXRvck1ldGhvZChpbml0KTtcbiAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JNZXRob2QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5jYWxsKGluaXQpO1xuICAgICAgICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IG5leHQuY2FsbChpdGVyYXRvcikpLmRvbmUpIHtcbiAgICAgICAgICBlbnRyeUl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoYW5PYmplY3Qoc3RlcC52YWx1ZSkpO1xuICAgICAgICAgIGVudHJ5TmV4dCA9IGVudHJ5SXRlcmF0b3IubmV4dDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZmlyc3QgPSBlbnRyeU5leHQuY2FsbChlbnRyeUl0ZXJhdG9yKSkuZG9uZSB8fFxuICAgICAgICAgICAgKHNlY29uZCA9IGVudHJ5TmV4dC5jYWxsKGVudHJ5SXRlcmF0b3IpKS5kb25lIHx8XG4gICAgICAgICAgICAhZW50cnlOZXh0LmNhbGwoZW50cnlJdGVyYXRvcikuZG9uZVxuICAgICAgICAgICkgdGhyb3cgVHlwZUVycm9yKCdFeHBlY3RlZCBzZXF1ZW5jZSB3aXRoIGxlbmd0aCAyJyk7XG4gICAgICAgICAgZW50cmllcy5wdXNoKHsga2V5OiBmaXJzdC52YWx1ZSArICcnLCB2YWx1ZTogc2Vjb25kLnZhbHVlICsgJycgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBmb3IgKGtleSBpbiBpbml0KSBpZiAoaGFzT3duKGluaXQsIGtleSkpIGVudHJpZXMucHVzaCh7IGtleToga2V5LCB2YWx1ZTogaW5pdFtrZXldICsgJycgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlU2VhcmNoUGFyYW1zKGVudHJpZXMsIHR5cGVvZiBpbml0ID09PSAnc3RyaW5nJyA/IGluaXQuY2hhckF0KDApID09PSAnPycgPyBpbml0LnNsaWNlKDEpIDogaW5pdCA6IGluaXQgKyAnJyk7XG4gICAgfVxuICB9XG59O1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG5yZWRlZmluZUFsbChVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsIHtcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuYXBwZW5kYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWFwcGVuZFxuICBhcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDIpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgc3RhdGUuZW50cmllcy5wdXNoKHsga2V5OiBuYW1lICsgJycsIHZhbHVlOiB2YWx1ZSArICcnIH0pO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5kZWxldGVgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZGVsZXRlXG4gICdkZWxldGUnOiBmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgdmFyIGVudHJpZXMgPSBzdGF0ZS5lbnRyaWVzO1xuICAgIHZhciBrZXkgPSBuYW1lICsgJyc7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXhdLmtleSA9PT0ga2V5KSBlbnRyaWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBlbHNlIGluZGV4Kys7XG4gICAgfVxuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5nZXRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZ2V0XG4gIGdldDogZnVuY3Rpb24gZ2V0KG5hbWUpIHtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YXIga2V5ID0gbmFtZSArICcnO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgZm9yICg7IGluZGV4IDwgZW50cmllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChlbnRyaWVzW2luZGV4XS5rZXkgPT09IGtleSkgcmV0dXJuIGVudHJpZXNbaW5kZXhdLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZ2V0QWxsYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWdldGFsbFxuICBnZXRBbGw6IGZ1bmN0aW9uIGdldEFsbChuYW1lKSB7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFyIGtleSA9IG5hbWUgKyAnJztcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBmb3IgKDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXhdLmtleSA9PT0ga2V5KSByZXN1bHQucHVzaChlbnRyaWVzW2luZGV4XS52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmhhc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1oYXNcbiAgaGFzOiBmdW5jdGlvbiBoYXMobmFtZSkge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhciBrZXkgPSBuYW1lICsgJyc7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXgrK10ua2V5ID09PSBrZXkpIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNldGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1zZXRcbiAgc2V0OiBmdW5jdGlvbiBzZXQobmFtZSwgdmFsdWUpIHtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIHZhciBlbnRyaWVzID0gc3RhdGUuZW50cmllcztcbiAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICB2YXIga2V5ID0gbmFtZSArICcnO1xuICAgIHZhciB2YWwgPSB2YWx1ZSArICcnO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGVudHJ5O1xuICAgIGZvciAoOyBpbmRleCA8IGVudHJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgaWYgKGVudHJ5LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIGlmIChmb3VuZCkgZW50cmllcy5zcGxpY2UoaW5kZXgtLSwgMSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICBlbnRyeS52YWx1ZSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWZvdW5kKSBlbnRyaWVzLnB1c2goeyBrZXk6IGtleSwgdmFsdWU6IHZhbCB9KTtcbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc29ydGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1zb3J0XG4gIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICB2YXIgZW50cmllcyA9IHN0YXRlLmVudHJpZXM7XG4gICAgLy8gQXJyYXkjc29ydCBpcyBub3Qgc3RhYmxlIGluIHNvbWUgZW5naW5lc1xuICAgIHZhciBzbGljZSA9IGVudHJpZXMuc2xpY2UoKTtcbiAgICB2YXIgZW50cnksIGVudHJpZXNJbmRleCwgc2xpY2VJbmRleDtcbiAgICBlbnRyaWVzLmxlbmd0aCA9IDA7XG4gICAgZm9yIChzbGljZUluZGV4ID0gMDsgc2xpY2VJbmRleCA8IHNsaWNlLmxlbmd0aDsgc2xpY2VJbmRleCsrKSB7XG4gICAgICBlbnRyeSA9IHNsaWNlW3NsaWNlSW5kZXhdO1xuICAgICAgZm9yIChlbnRyaWVzSW5kZXggPSAwOyBlbnRyaWVzSW5kZXggPCBzbGljZUluZGV4OyBlbnRyaWVzSW5kZXgrKykge1xuICAgICAgICBpZiAoZW50cmllc1tlbnRyaWVzSW5kZXhdLmtleSA+IGVudHJ5LmtleSkge1xuICAgICAgICAgIGVudHJpZXMuc3BsaWNlKGVudHJpZXNJbmRleCwgMCwgZW50cnkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZW50cmllc0luZGV4ID09PSBzbGljZUluZGV4KSBlbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIH1cbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgMyk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgZW50cnk7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIGJvdW5kRnVuY3Rpb24oZW50cnkudmFsdWUsIGVudHJ5LmtleSwgdGhpcyk7XG4gICAgfVxuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5rZXlzYCBtZXRob2RcbiAga2V5czogZnVuY3Rpb24ga2V5cygpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yKHRoaXMsICdrZXlzJyk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnZhbHVlc2AgbWV0aG9kXG4gIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IodGhpcywgJ3ZhbHVlcycpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2RcbiAgZW50cmllczogZnVuY3Rpb24gZW50cmllcygpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yKHRoaXMsICdlbnRyaWVzJyk7XG4gIH1cbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxucmVkZWZpbmUoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCBJVEVSQVRPUiwgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmVudHJpZXMpO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybHNlYXJjaHBhcmFtcy1zdHJpbmdpZmljYXRpb24tYmVoYXZpb3JcbnJlZGVmaW5lKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBlbnRyeTtcbiAgd2hpbGUgKGluZGV4IDwgZW50cmllcy5sZW5ndGgpIHtcbiAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXgrK107XG4gICAgcmVzdWx0LnB1c2goc2VyaWFsaXplKGVudHJ5LmtleSkgKyAnPScgKyBzZXJpYWxpemUoZW50cnkudmFsdWUpKTtcbiAgfSByZXR1cm4gcmVzdWx0LmpvaW4oJyYnKTtcbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuc2V0VG9TdHJpbmdUYWcoVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IsIFVSTF9TRUFSQ0hfUEFSQU1TKTtcblxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiAhVVNFX05BVElWRV9VUkwgfSwge1xuICBVUkxTZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yXG59KTtcblxuLy8gV3JhcCBgZmV0Y2hgIGZvciBjb3JyZWN0IHdvcmsgd2l0aCBwb2x5ZmlsbGVkIGBVUkxTZWFyY2hQYXJhbXNgXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc0XG5pZiAoIVVTRV9OQVRJVkVfVVJMICYmIHR5cGVvZiAkZmV0Y2ggPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgSGVhZGVycyA9PSAnZnVuY3Rpb24nKSB7XG4gICQoeyBnbG9iYWw6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGZvcmNlZDogdHJ1ZSB9LCB7XG4gICAgZmV0Y2g6IGZ1bmN0aW9uIGZldGNoKGlucHV0IC8qICwgaW5pdCAqLykge1xuICAgICAgdmFyIGFyZ3MgPSBbaW5wdXRdO1xuICAgICAgdmFyIGluaXQsIGJvZHksIGhlYWRlcnM7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaW5pdCA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgaWYgKGlzT2JqZWN0KGluaXQpKSB7XG4gICAgICAgICAgYm9keSA9IGluaXQuYm9keTtcbiAgICAgICAgICBpZiAoY2xhc3NvZihib2R5KSA9PT0gVVJMX1NFQVJDSF9QQVJBTVMpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBpbml0LmhlYWRlcnMgPyBuZXcgSGVhZGVycyhpbml0LmhlYWRlcnMpIDogbmV3IEhlYWRlcnMoKTtcbiAgICAgICAgICAgIGlmICghaGVhZGVycy5oYXMoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICAgICAgICAgIGhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluaXQgPSBjcmVhdGUoaW5pdCwge1xuICAgICAgICAgICAgICBib2R5OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgU3RyaW5nKGJvZHkpKSxcbiAgICAgICAgICAgICAgaGVhZGVyczogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDAsIGhlYWRlcnMpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYXJncy5wdXNoKGluaXQpO1xuICAgICAgfSByZXR1cm4gJGZldGNoLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH1cbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBVUkxTZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yLFxuICBnZXRTdGF0ZTogZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZVxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IGluIGNvcmUtanNANCwgbW92ZSAvbW9kdWxlcy8gZGVwZW5kZW5jaWVzIHRvIHB1YmxpYyBlbnRyaWVzIGZvciBiZXR0ZXIgb3B0aW1pemF0aW9uIGJ5IHRvb2xzIGxpa2UgYHByZXNldC1lbnZgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvcicpO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBVU0VfTkFUSVZFX1VSTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtdXJsJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtYXNzaWduJyk7XG52YXIgYXJyYXlGcm9tID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZyb20nKTtcbnZhciBjb2RlQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNvZGVBdDtcbnZhciB0b0FTQ0lJID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1wdW55Y29kZS10by1hc2NpaScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgVVJMU2VhcmNoUGFyYW1zTW9kdWxlID0gcmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBOYXRpdmVVUkwgPSBnbG9iYWwuVVJMO1xudmFyIFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtc01vZHVsZS5VUkxTZWFyY2hQYXJhbXM7XG52YXIgZ2V0SW50ZXJuYWxTZWFyY2hQYXJhbXNTdGF0ZSA9IFVSTFNlYXJjaFBhcmFtc01vZHVsZS5nZXRTdGF0ZTtcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxVUkxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKCdVUkwnKTtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgcG93ID0gTWF0aC5wb3c7XG5cbnZhciBJTlZBTElEX0FVVEhPUklUWSA9ICdJbnZhbGlkIGF1dGhvcml0eSc7XG52YXIgSU5WQUxJRF9TQ0hFTUUgPSAnSW52YWxpZCBzY2hlbWUnO1xudmFyIElOVkFMSURfSE9TVCA9ICdJbnZhbGlkIGhvc3QnO1xudmFyIElOVkFMSURfUE9SVCA9ICdJbnZhbGlkIHBvcnQnO1xuXG52YXIgQUxQSEEgPSAvW0EtWmEtel0vO1xudmFyIEFMUEhBTlVNRVJJQyA9IC9bXFxkKy0uQS1aYS16XS87XG52YXIgRElHSVQgPSAvXFxkLztcbnZhciBIRVhfU1RBUlQgPSAvXigweHwwWCkvO1xudmFyIE9DVCA9IC9eWzAtN10rJC87XG52YXIgREVDID0gL15cXGQrJC87XG52YXIgSEVYID0gL15bXFxkQS1GYS1mXSskLztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG52YXIgRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCA9IC9bXFx1MDAwMFxcdTAwMDlcXHUwMDBBXFx1MDAwRCAjJS86P0BbXFxcXF1dLztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG52YXIgRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVF9FWENMVURJTkdfUEVSQ0VOVCA9IC9bXFx1MDAwMFxcdTAwMDlcXHUwMDBBXFx1MDAwRCAjLzo/QFtcXFxcXV0vO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbnZhciBMRUFESU5HX0FORF9UUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFID0gL15bXFx1MDAwMC1cXHUwMDFGIF0rfFtcXHUwMDAwLVxcdTAwMUYgXSskL2c7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udHJvbC1yZWdleFxudmFyIFRBQl9BTkRfTkVXX0xJTkUgPSAvW1xcdTAwMDlcXHUwMDBBXFx1MDAwRF0vZztcbnZhciBFT0Y7XG5cbnZhciBwYXJzZUhvc3QgPSBmdW5jdGlvbiAodXJsLCBpbnB1dCkge1xuICB2YXIgcmVzdWx0LCBjb2RlUG9pbnRzLCBpbmRleDtcbiAgaWYgKGlucHV0LmNoYXJBdCgwKSA9PSAnWycpIHtcbiAgICBpZiAoaW5wdXQuY2hhckF0KGlucHV0Lmxlbmd0aCAtIDEpICE9ICddJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICByZXN1bHQgPSBwYXJzZUlQdjYoaW5wdXQuc2xpY2UoMSwgLTEpKTtcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICB1cmwuaG9zdCA9IHJlc3VsdDtcbiAgLy8gb3BhcXVlIGhvc3RcbiAgfSBlbHNlIGlmICghaXNTcGVjaWFsKHVybCkpIHtcbiAgICBpZiAoRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVF9FWENMVURJTkdfUEVSQ0VOVC50ZXN0KGlucHV0KSkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICByZXN1bHQgPSAnJztcbiAgICBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKGlucHV0KTtcbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb2RlUG9pbnRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgcmVzdWx0ICs9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50c1tpbmRleF0sIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgIH1cbiAgICB1cmwuaG9zdCA9IHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBpbnB1dCA9IHRvQVNDSUkoaW5wdXQpO1xuICAgIGlmIChGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5ULnRlc3QoaW5wdXQpKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgIHJlc3VsdCA9IHBhcnNlSVB2NChpbnB1dCk7XG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICB1cmwuaG9zdCA9IHJlc3VsdDtcbiAgfVxufTtcblxudmFyIHBhcnNlSVB2NCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgcGFydHMgPSBpbnB1dC5zcGxpdCgnLicpO1xuICB2YXIgcGFydHNMZW5ndGgsIG51bWJlcnMsIGluZGV4LCBwYXJ0LCByYWRpeCwgbnVtYmVyLCBpcHY0O1xuICBpZiAocGFydHMubGVuZ3RoICYmIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdID09ICcnKSB7XG4gICAgcGFydHMucG9wKCk7XG4gIH1cbiAgcGFydHNMZW5ndGggPSBwYXJ0cy5sZW5ndGg7XG4gIGlmIChwYXJ0c0xlbmd0aCA+IDQpIHJldHVybiBpbnB1dDtcbiAgbnVtYmVycyA9IFtdO1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBwYXJ0c0xlbmd0aDsgaW5kZXgrKykge1xuICAgIHBhcnQgPSBwYXJ0c1tpbmRleF07XG4gICAgaWYgKHBhcnQgPT0gJycpIHJldHVybiBpbnB1dDtcbiAgICByYWRpeCA9IDEwO1xuICAgIGlmIChwYXJ0Lmxlbmd0aCA+IDEgJiYgcGFydC5jaGFyQXQoMCkgPT0gJzAnKSB7XG4gICAgICByYWRpeCA9IEhFWF9TVEFSVC50ZXN0KHBhcnQpID8gMTYgOiA4O1xuICAgICAgcGFydCA9IHBhcnQuc2xpY2UocmFkaXggPT0gOCA/IDEgOiAyKTtcbiAgICB9XG4gICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICBudW1iZXIgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIShyYWRpeCA9PSAxMCA/IERFQyA6IHJhZGl4ID09IDggPyBPQ1QgOiBIRVgpLnRlc3QocGFydCkpIHJldHVybiBpbnB1dDtcbiAgICAgIG51bWJlciA9IHBhcnNlSW50KHBhcnQsIHJhZGl4KTtcbiAgICB9XG4gICAgbnVtYmVycy5wdXNoKG51bWJlcik7XG4gIH1cbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcGFydHNMZW5ndGg7IGluZGV4KyspIHtcbiAgICBudW1iZXIgPSBudW1iZXJzW2luZGV4XTtcbiAgICBpZiAoaW5kZXggPT0gcGFydHNMZW5ndGggLSAxKSB7XG4gICAgICBpZiAobnVtYmVyID49IHBvdygyNTYsIDUgLSBwYXJ0c0xlbmd0aCkpIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyID4gMjU1KSByZXR1cm4gbnVsbDtcbiAgfVxuICBpcHY0ID0gbnVtYmVycy5wb3AoKTtcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBpcHY0ICs9IG51bWJlcnNbaW5kZXhdICogcG93KDI1NiwgMyAtIGluZGV4KTtcbiAgfVxuICByZXR1cm4gaXB2NDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50c1xudmFyIHBhcnNlSVB2NiA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgYWRkcmVzcyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbiAgdmFyIHBpZWNlSW5kZXggPSAwO1xuICB2YXIgY29tcHJlc3MgPSBudWxsO1xuICB2YXIgcG9pbnRlciA9IDA7XG4gIHZhciB2YWx1ZSwgbGVuZ3RoLCBudW1iZXJzU2VlbiwgaXB2NFBpZWNlLCBudW1iZXIsIHN3YXBzLCBzd2FwO1xuXG4gIHZhciBjaGFyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBpbnB1dC5jaGFyQXQocG9pbnRlcik7XG4gIH07XG5cbiAgaWYgKGNoYXIoKSA9PSAnOicpIHtcbiAgICBpZiAoaW5wdXQuY2hhckF0KDEpICE9ICc6JykgcmV0dXJuO1xuICAgIHBvaW50ZXIgKz0gMjtcbiAgICBwaWVjZUluZGV4Kys7XG4gICAgY29tcHJlc3MgPSBwaWVjZUluZGV4O1xuICB9XG4gIHdoaWxlIChjaGFyKCkpIHtcbiAgICBpZiAocGllY2VJbmRleCA9PSA4KSByZXR1cm47XG4gICAgaWYgKGNoYXIoKSA9PSAnOicpIHtcbiAgICAgIGlmIChjb21wcmVzcyAhPT0gbnVsbCkgcmV0dXJuO1xuICAgICAgcG9pbnRlcisrO1xuICAgICAgcGllY2VJbmRleCsrO1xuICAgICAgY29tcHJlc3MgPSBwaWVjZUluZGV4O1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhbHVlID0gbGVuZ3RoID0gMDtcbiAgICB3aGlsZSAobGVuZ3RoIDwgNCAmJiBIRVgudGVzdChjaGFyKCkpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlICogMTYgKyBwYXJzZUludChjaGFyKCksIDE2KTtcbiAgICAgIHBvaW50ZXIrKztcbiAgICAgIGxlbmd0aCsrO1xuICAgIH1cbiAgICBpZiAoY2hhcigpID09ICcuJykge1xuICAgICAgaWYgKGxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgICBwb2ludGVyIC09IGxlbmd0aDtcbiAgICAgIGlmIChwaWVjZUluZGV4ID4gNikgcmV0dXJuO1xuICAgICAgbnVtYmVyc1NlZW4gPSAwO1xuICAgICAgd2hpbGUgKGNoYXIoKSkge1xuICAgICAgICBpcHY0UGllY2UgPSBudWxsO1xuICAgICAgICBpZiAobnVtYmVyc1NlZW4gPiAwKSB7XG4gICAgICAgICAgaWYgKGNoYXIoKSA9PSAnLicgJiYgbnVtYmVyc1NlZW4gPCA0KSBwb2ludGVyKys7XG4gICAgICAgICAgZWxzZSByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFESUdJVC50ZXN0KGNoYXIoKSkpIHJldHVybjtcbiAgICAgICAgd2hpbGUgKERJR0lULnRlc3QoY2hhcigpKSkge1xuICAgICAgICAgIG51bWJlciA9IHBhcnNlSW50KGNoYXIoKSwgMTApO1xuICAgICAgICAgIGlmIChpcHY0UGllY2UgPT09IG51bGwpIGlwdjRQaWVjZSA9IG51bWJlcjtcbiAgICAgICAgICBlbHNlIGlmIChpcHY0UGllY2UgPT0gMCkgcmV0dXJuO1xuICAgICAgICAgIGVsc2UgaXB2NFBpZWNlID0gaXB2NFBpZWNlICogMTAgKyBudW1iZXI7XG4gICAgICAgICAgaWYgKGlwdjRQaWVjZSA+IDI1NSkgcmV0dXJuO1xuICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgfVxuICAgICAgICBhZGRyZXNzW3BpZWNlSW5kZXhdID0gYWRkcmVzc1twaWVjZUluZGV4XSAqIDI1NiArIGlwdjRQaWVjZTtcbiAgICAgICAgbnVtYmVyc1NlZW4rKztcbiAgICAgICAgaWYgKG51bWJlcnNTZWVuID09IDIgfHwgbnVtYmVyc1NlZW4gPT0gNCkgcGllY2VJbmRleCsrO1xuICAgICAgfVxuICAgICAgaWYgKG51bWJlcnNTZWVuICE9IDQpIHJldHVybjtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAoY2hhcigpID09ICc6Jykge1xuICAgICAgcG9pbnRlcisrO1xuICAgICAgaWYgKCFjaGFyKCkpIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGNoYXIoKSkgcmV0dXJuO1xuICAgIGFkZHJlc3NbcGllY2VJbmRleCsrXSA9IHZhbHVlO1xuICB9XG4gIGlmIChjb21wcmVzcyAhPT0gbnVsbCkge1xuICAgIHN3YXBzID0gcGllY2VJbmRleCAtIGNvbXByZXNzO1xuICAgIHBpZWNlSW5kZXggPSA3O1xuICAgIHdoaWxlIChwaWVjZUluZGV4ICE9IDAgJiYgc3dhcHMgPiAwKSB7XG4gICAgICBzd2FwID0gYWRkcmVzc1twaWVjZUluZGV4XTtcbiAgICAgIGFkZHJlc3NbcGllY2VJbmRleC0tXSA9IGFkZHJlc3NbY29tcHJlc3MgKyBzd2FwcyAtIDFdO1xuICAgICAgYWRkcmVzc1tjb21wcmVzcyArIC0tc3dhcHNdID0gc3dhcDtcbiAgICB9XG4gIH0gZWxzZSBpZiAocGllY2VJbmRleCAhPSA4KSByZXR1cm47XG4gIHJldHVybiBhZGRyZXNzO1xufTtcblxudmFyIGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlID0gZnVuY3Rpb24gKGlwdjYpIHtcbiAgdmFyIG1heEluZGV4ID0gbnVsbDtcbiAgdmFyIG1heExlbmd0aCA9IDE7XG4gIHZhciBjdXJyU3RhcnQgPSBudWxsO1xuICB2YXIgY3Vyckxlbmd0aCA9IDA7XG4gIHZhciBpbmRleCA9IDA7XG4gIGZvciAoOyBpbmRleCA8IDg7IGluZGV4KyspIHtcbiAgICBpZiAoaXB2NltpbmRleF0gIT09IDApIHtcbiAgICAgIGlmIChjdXJyTGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgIG1heEluZGV4ID0gY3VyclN0YXJ0O1xuICAgICAgICBtYXhMZW5ndGggPSBjdXJyTGVuZ3RoO1xuICAgICAgfVxuICAgICAgY3VyclN0YXJ0ID0gbnVsbDtcbiAgICAgIGN1cnJMZW5ndGggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VyclN0YXJ0ID09PSBudWxsKSBjdXJyU3RhcnQgPSBpbmRleDtcbiAgICAgICsrY3Vyckxlbmd0aDtcbiAgICB9XG4gIH1cbiAgaWYgKGN1cnJMZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICBtYXhJbmRleCA9IGN1cnJTdGFydDtcbiAgICBtYXhMZW5ndGggPSBjdXJyTGVuZ3RoO1xuICB9XG4gIHJldHVybiBtYXhJbmRleDtcbn07XG5cbnZhciBzZXJpYWxpemVIb3N0ID0gZnVuY3Rpb24gKGhvc3QpIHtcbiAgdmFyIHJlc3VsdCwgaW5kZXgsIGNvbXByZXNzLCBpZ25vcmUwO1xuICAvLyBpcHY0XG4gIGlmICh0eXBlb2YgaG9zdCA9PSAnbnVtYmVyJykge1xuICAgIHJlc3VsdCA9IFtdO1xuICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDQ7IGluZGV4KyspIHtcbiAgICAgIHJlc3VsdC51bnNoaWZ0KGhvc3QgJSAyNTYpO1xuICAgICAgaG9zdCA9IGZsb29yKGhvc3QgLyAyNTYpO1xuICAgIH0gcmV0dXJuIHJlc3VsdC5qb2luKCcuJyk7XG4gIC8vIGlwdjZcbiAgfSBlbHNlIGlmICh0eXBlb2YgaG9zdCA9PSAnb2JqZWN0Jykge1xuICAgIHJlc3VsdCA9ICcnO1xuICAgIGNvbXByZXNzID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoaG9zdCk7XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgODsgaW5kZXgrKykge1xuICAgICAgaWYgKGlnbm9yZTAgJiYgaG9zdFtpbmRleF0gPT09IDApIGNvbnRpbnVlO1xuICAgICAgaWYgKGlnbm9yZTApIGlnbm9yZTAgPSBmYWxzZTtcbiAgICAgIGlmIChjb21wcmVzcyA9PT0gaW5kZXgpIHtcbiAgICAgICAgcmVzdWx0ICs9IGluZGV4ID8gJzonIDogJzo6JztcbiAgICAgICAgaWdub3JlMCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgKz0gaG9zdFtpbmRleF0udG9TdHJpbmcoMTYpO1xuICAgICAgICBpZiAoaW5kZXggPCA3KSByZXN1bHQgKz0gJzonO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJ1snICsgcmVzdWx0ICsgJ10nO1xuICB9IHJldHVybiBob3N0O1xufTtcblxudmFyIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQgPSB7fTtcbnZhciBmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQgPSBhc3NpZ24oe30sIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQsIHtcbiAgJyAnOiAxLCAnXCInOiAxLCAnPCc6IDEsICc+JzogMSwgJ2AnOiAxXG59KTtcbnZhciBwYXRoUGVyY2VudEVuY29kZVNldCA9IGFzc2lnbih7fSwgZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0LCB7XG4gICcjJzogMSwgJz8nOiAxLCAneyc6IDEsICd9JzogMVxufSk7XG52YXIgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0ID0gYXNzaWduKHt9LCBwYXRoUGVyY2VudEVuY29kZVNldCwge1xuICAnLyc6IDEsICc6JzogMSwgJzsnOiAxLCAnPSc6IDEsICdAJzogMSwgJ1snOiAxLCAnXFxcXCc6IDEsICddJzogMSwgJ14nOiAxLCAnfCc6IDFcbn0pO1xuXG52YXIgcGVyY2VudEVuY29kZSA9IGZ1bmN0aW9uIChjaGFyLCBzZXQpIHtcbiAgdmFyIGNvZGUgPSBjb2RlQXQoY2hhciwgMCk7XG4gIHJldHVybiBjb2RlID4gMHgyMCAmJiBjb2RlIDwgMHg3RiAmJiAhaGFzKHNldCwgY2hhcikgPyBjaGFyIDogZW5jb2RlVVJJQ29tcG9uZW50KGNoYXIpO1xufTtcblxudmFyIHNwZWNpYWxTY2hlbWVzID0ge1xuICBmdHA6IDIxLFxuICBmaWxlOiBudWxsLFxuICBodHRwOiA4MCxcbiAgaHR0cHM6IDQ0MyxcbiAgd3M6IDgwLFxuICB3c3M6IDQ0M1xufTtcblxudmFyIGlzU3BlY2lhbCA9IGZ1bmN0aW9uICh1cmwpIHtcbiAgcmV0dXJuIGhhcyhzcGVjaWFsU2NoZW1lcywgdXJsLnNjaGVtZSk7XG59O1xuXG52YXIgaW5jbHVkZXNDcmVkZW50aWFscyA9IGZ1bmN0aW9uICh1cmwpIHtcbiAgcmV0dXJuIHVybC51c2VybmFtZSAhPSAnJyB8fCB1cmwucGFzc3dvcmQgIT0gJyc7XG59O1xuXG52YXIgY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0ID0gZnVuY3Rpb24gKHVybCkge1xuICByZXR1cm4gIXVybC5ob3N0IHx8IHVybC5jYW5ub3RCZUFCYXNlVVJMIHx8IHVybC5zY2hlbWUgPT0gJ2ZpbGUnO1xufTtcblxudmFyIGlzV2luZG93c0RyaXZlTGV0dGVyID0gZnVuY3Rpb24gKHN0cmluZywgbm9ybWFsaXplZCkge1xuICB2YXIgc2Vjb25kO1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aCA9PSAyICYmIEFMUEhBLnRlc3Qoc3RyaW5nLmNoYXJBdCgwKSlcbiAgICAmJiAoKHNlY29uZCA9IHN0cmluZy5jaGFyQXQoMSkpID09ICc6JyB8fCAoIW5vcm1hbGl6ZWQgJiYgc2Vjb25kID09ICd8JykpO1xufTtcblxudmFyIHN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciB0aGlyZDtcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggPiAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKHN0cmluZy5zbGljZSgwLCAyKSkgJiYgKFxuICAgIHN0cmluZy5sZW5ndGggPT0gMiB8fFxuICAgICgodGhpcmQgPSBzdHJpbmcuY2hhckF0KDIpKSA9PT0gJy8nIHx8IHRoaXJkID09PSAnXFxcXCcgfHwgdGhpcmQgPT09ICc/JyB8fCB0aGlyZCA9PT0gJyMnKVxuICApO1xufTtcblxudmFyIHNob3J0ZW5VUkxzUGF0aCA9IGZ1bmN0aW9uICh1cmwpIHtcbiAgdmFyIHBhdGggPSB1cmwucGF0aDtcbiAgdmFyIHBhdGhTaXplID0gcGF0aC5sZW5ndGg7XG4gIGlmIChwYXRoU2l6ZSAmJiAodXJsLnNjaGVtZSAhPSAnZmlsZScgfHwgcGF0aFNpemUgIT0gMSB8fCAhaXNXaW5kb3dzRHJpdmVMZXR0ZXIocGF0aFswXSwgdHJ1ZSkpKSB7XG4gICAgcGF0aC5wb3AoKTtcbiAgfVxufTtcblxudmFyIGlzU2luZ2xlRG90ID0gZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgcmV0dXJuIHNlZ21lbnQgPT09ICcuJyB8fCBzZWdtZW50LnRvTG93ZXJDYXNlKCkgPT09ICclMmUnO1xufTtcblxudmFyIGlzRG91YmxlRG90ID0gZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgc2VnbWVudCA9IHNlZ21lbnQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHNlZ21lbnQgPT09ICcuLicgfHwgc2VnbWVudCA9PT0gJyUyZS4nIHx8IHNlZ21lbnQgPT09ICcuJTJlJyB8fCBzZWdtZW50ID09PSAnJTJlJTJlJztcbn07XG5cbi8vIFN0YXRlczpcbnZhciBTQ0hFTUVfU1RBUlQgPSB7fTtcbnZhciBTQ0hFTUUgPSB7fTtcbnZhciBOT19TQ0hFTUUgPSB7fTtcbnZhciBTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWSA9IHt9O1xudmFyIFBBVEhfT1JfQVVUSE9SSVRZID0ge307XG52YXIgUkVMQVRJVkUgPSB7fTtcbnZhciBSRUxBVElWRV9TTEFTSCA9IHt9O1xudmFyIFNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVMgPSB7fTtcbnZhciBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUyA9IHt9O1xudmFyIEFVVEhPUklUWSA9IHt9O1xudmFyIEhPU1QgPSB7fTtcbnZhciBIT1NUTkFNRSA9IHt9O1xudmFyIFBPUlQgPSB7fTtcbnZhciBGSUxFID0ge307XG52YXIgRklMRV9TTEFTSCA9IHt9O1xudmFyIEZJTEVfSE9TVCA9IHt9O1xudmFyIFBBVEhfU1RBUlQgPSB7fTtcbnZhciBQQVRIID0ge307XG52YXIgQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSCA9IHt9O1xudmFyIFFVRVJZID0ge307XG52YXIgRlJBR01FTlQgPSB7fTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzXG52YXIgcGFyc2VVUkwgPSBmdW5jdGlvbiAodXJsLCBpbnB1dCwgc3RhdGVPdmVycmlkZSwgYmFzZSkge1xuICB2YXIgc3RhdGUgPSBzdGF0ZU92ZXJyaWRlIHx8IFNDSEVNRV9TVEFSVDtcbiAgdmFyIHBvaW50ZXIgPSAwO1xuICB2YXIgYnVmZmVyID0gJyc7XG4gIHZhciBzZWVuQXQgPSBmYWxzZTtcbiAgdmFyIHNlZW5CcmFja2V0ID0gZmFsc2U7XG4gIHZhciBzZWVuUGFzc3dvcmRUb2tlbiA9IGZhbHNlO1xuICB2YXIgY29kZVBvaW50cywgY2hhciwgYnVmZmVyQ29kZVBvaW50cywgZmFpbHVyZTtcblxuICBpZiAoIXN0YXRlT3ZlcnJpZGUpIHtcbiAgICB1cmwuc2NoZW1lID0gJyc7XG4gICAgdXJsLnVzZXJuYW1lID0gJyc7XG4gICAgdXJsLnBhc3N3b3JkID0gJyc7XG4gICAgdXJsLmhvc3QgPSBudWxsO1xuICAgIHVybC5wb3J0ID0gbnVsbDtcbiAgICB1cmwucGF0aCA9IFtdO1xuICAgIHVybC5xdWVyeSA9IG51bGw7XG4gICAgdXJsLmZyYWdtZW50ID0gbnVsbDtcbiAgICB1cmwuY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlO1xuICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShMRUFESU5HX0FORF9UUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFLCAnJyk7XG4gIH1cblxuICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoVEFCX0FORF9ORVdfTElORSwgJycpO1xuXG4gIGNvZGVQb2ludHMgPSBhcnJheUZyb20oaW5wdXQpO1xuXG4gIHdoaWxlIChwb2ludGVyIDw9IGNvZGVQb2ludHMubGVuZ3RoKSB7XG4gICAgY2hhciA9IGNvZGVQb2ludHNbcG9pbnRlcl07XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSBTQ0hFTUVfU1RBUlQ6XG4gICAgICAgIGlmIChjaGFyICYmIEFMUEhBLnRlc3QoY2hhcikpIHtcbiAgICAgICAgICBidWZmZXIgKz0gY2hhci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIHN0YXRlID0gU0NIRU1FO1xuICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgc3RhdGUgPSBOT19TQ0hFTUU7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9TQ0hFTUU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNDSEVNRTpcbiAgICAgICAgaWYgKGNoYXIgJiYgKEFMUEhBTlVNRVJJQy50ZXN0KGNoYXIpIHx8IGNoYXIgPT0gJysnIHx8IGNoYXIgPT0gJy0nIHx8IGNoYXIgPT0gJy4nKSkge1xuICAgICAgICAgIGJ1ZmZlciArPSBjaGFyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhciA9PSAnOicpIHtcbiAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSAmJiAoXG4gICAgICAgICAgICAoaXNTcGVjaWFsKHVybCkgIT0gaGFzKHNwZWNpYWxTY2hlbWVzLCBidWZmZXIpKSB8fFxuICAgICAgICAgICAgKGJ1ZmZlciA9PSAnZmlsZScgJiYgKGluY2x1ZGVzQ3JlZGVudGlhbHModXJsKSB8fCB1cmwucG9ydCAhPT0gbnVsbCkpIHx8XG4gICAgICAgICAgICAodXJsLnNjaGVtZSA9PSAnZmlsZScgJiYgIXVybC5ob3N0KVxuICAgICAgICAgICkpIHJldHVybjtcbiAgICAgICAgICB1cmwuc2NoZW1lID0gYnVmZmVyO1xuICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICBpZiAoaXNTcGVjaWFsKHVybCkgJiYgc3BlY2lhbFNjaGVtZXNbdXJsLnNjaGVtZV0gPT0gdXJsLnBvcnQpIHVybC5wb3J0ID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgaWYgKHVybC5zY2hlbWUgPT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEZJTEU7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc1NwZWNpYWwodXJsKSAmJiBiYXNlICYmIGJhc2Uuc2NoZW1lID09IHVybC5zY2hlbWUpIHtcbiAgICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc1NwZWNpYWwodXJsKSkge1xuICAgICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZVBvaW50c1twb2ludGVyICsgMV0gPT0gJy8nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEhfT1JfQVVUSE9SSVRZO1xuICAgICAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cmwuY2Fubm90QmVBQmFzZVVSTCA9IHRydWU7XG4gICAgICAgICAgICB1cmwucGF0aC5wdXNoKCcnKTtcbiAgICAgICAgICAgIHN0YXRlID0gQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUpIHtcbiAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IE5PX1NDSEVNRTtcbiAgICAgICAgICBwb2ludGVyID0gMDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBJTlZBTElEX1NDSEVNRTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgTk9fU0NIRU1FOlxuICAgICAgICBpZiAoIWJhc2UgfHwgKGJhc2UuY2Fubm90QmVBQmFzZVVSTCAmJiBjaGFyICE9ICcjJykpIHJldHVybiBJTlZBTElEX1NDSEVNRTtcbiAgICAgICAgaWYgKGJhc2UuY2Fubm90QmVBQmFzZVVSTCAmJiBjaGFyID09ICcjJykge1xuICAgICAgICAgIHVybC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICAgICAgICB1cmwucGF0aCA9IGJhc2UucGF0aC5zbGljZSgpO1xuICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSB0cnVlO1xuICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUgPSBiYXNlLnNjaGVtZSA9PSAnZmlsZScgPyBGSUxFIDogUkVMQVRJVkU7XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlIFNQRUNJQUxfUkVMQVRJVkVfT1JfQVVUSE9SSVRZOlxuICAgICAgICBpZiAoY2hhciA9PSAnLycgJiYgY29kZVBvaW50c1twb2ludGVyICsgMV0gPT0gJy8nKSB7XG4gICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUztcbiAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBSRUxBVElWRTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBQQVRIX09SX0FVVEhPUklUWTpcbiAgICAgICAgaWYgKGNoYXIgPT0gJy8nKSB7XG4gICAgICAgICAgc3RhdGUgPSBBVVRIT1JJVFk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVMQVRJVkU6XG4gICAgICAgIHVybC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICAgICAgaWYgKGNoYXIgPT0gRU9GKSB7XG4gICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyID09ICcvJyB8fCAoY2hhciA9PSAnXFxcXCcgJiYgaXNTcGVjaWFsKHVybCkpKSB7XG4gICAgICAgICAgc3RhdGUgPSBSRUxBVElWRV9TTEFTSDtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyID09ICc/Jykge1xuICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICB1cmwucGF0aCA9IGJhc2UucGF0aC5zbGljZSgpO1xuICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhciA9PSAnIycpIHtcbiAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgdXJsLnBhdGggPSBiYXNlLnBhdGguc2xpY2UoKTtcbiAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgdXJsLnBhdGgucG9wKCk7XG4gICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICBjYXNlIFJFTEFUSVZFX1NMQVNIOlxuICAgICAgICBpZiAoaXNTcGVjaWFsKHVybCkgJiYgKGNoYXIgPT0gJy8nIHx8IGNoYXIgPT0gJ1xcXFwnKSkge1xuICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhciA9PSAnLycpIHtcbiAgICAgICAgICBzdGF0ZSA9IEFVVEhPUklUWTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICBjYXNlIFNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVM6XG4gICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgIGlmIChjaGFyICE9ICcvJyB8fCBidWZmZXIuY2hhckF0KHBvaW50ZXIgKyAxKSAhPSAnLycpIGNvbnRpbnVlO1xuICAgICAgICBwb2ludGVyKys7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTOlxuICAgICAgICBpZiAoY2hhciAhPSAnLycgJiYgY2hhciAhPSAnXFxcXCcpIHtcbiAgICAgICAgICBzdGF0ZSA9IEFVVEhPUklUWTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBBVVRIT1JJVFk6XG4gICAgICAgIGlmIChjaGFyID09ICdAJykge1xuICAgICAgICAgIGlmIChzZWVuQXQpIGJ1ZmZlciA9ICclNDAnICsgYnVmZmVyO1xuICAgICAgICAgIHNlZW5BdCA9IHRydWU7XG4gICAgICAgICAgYnVmZmVyQ29kZVBvaW50cyA9IGFycmF5RnJvbShidWZmZXIpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmZmVyQ29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGNvZGVQb2ludCA9IGJ1ZmZlckNvZGVQb2ludHNbaV07XG4gICAgICAgICAgICBpZiAoY29kZVBvaW50ID09ICc6JyAmJiAhc2VlblBhc3N3b3JkVG9rZW4pIHtcbiAgICAgICAgICAgICAgc2VlblBhc3N3b3JkVG9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBlbmNvZGVkQ29kZVBvaW50cyA9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50LCB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgICAgaWYgKHNlZW5QYXNzd29yZFRva2VuKSB1cmwucGFzc3dvcmQgKz0gZW5jb2RlZENvZGVQb2ludHM7XG4gICAgICAgICAgICBlbHNlIHVybC51c2VybmFtZSArPSBlbmNvZGVkQ29kZVBvaW50cztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgY2hhciA9PSBFT0YgfHwgY2hhciA9PSAnLycgfHwgY2hhciA9PSAnPycgfHwgY2hhciA9PSAnIycgfHxcbiAgICAgICAgICAoY2hhciA9PSAnXFxcXCcgJiYgaXNTcGVjaWFsKHVybCkpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChzZWVuQXQgJiYgYnVmZmVyID09ICcnKSByZXR1cm4gSU5WQUxJRF9BVVRIT1JJVFk7XG4gICAgICAgICAgcG9pbnRlciAtPSBhcnJheUZyb20oYnVmZmVyKS5sZW5ndGggKyAxO1xuICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gSE9TVDtcbiAgICAgICAgfSBlbHNlIGJ1ZmZlciArPSBjaGFyO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBIT1NUOlxuICAgICAgY2FzZSBIT1NUTkFNRTpcbiAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgJiYgdXJsLnNjaGVtZSA9PSAnZmlsZScpIHtcbiAgICAgICAgICBzdGF0ZSA9IEZJTEVfSE9TVDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyID09ICc6JyAmJiAhc2VlbkJyYWNrZXQpIHtcbiAgICAgICAgICBpZiAoYnVmZmVyID09ICcnKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgICAgIGZhaWx1cmUgPSBwYXJzZUhvc3QodXJsLCBidWZmZXIpO1xuICAgICAgICAgIGlmIChmYWlsdXJlKSByZXR1cm4gZmFpbHVyZTtcbiAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IFBPUlQ7XG4gICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgPT0gSE9TVE5BTUUpIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBjaGFyID09IEVPRiB8fCBjaGFyID09ICcvJyB8fCBjaGFyID09ICc/JyB8fCBjaGFyID09ICcjJyB8fFxuICAgICAgICAgIChjaGFyID09ICdcXFxcJyAmJiBpc1NwZWNpYWwodXJsKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGlzU3BlY2lhbCh1cmwpICYmIGJ1ZmZlciA9PSAnJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSAmJiBidWZmZXIgPT0gJycgJiYgKGluY2x1ZGVzQ3JlZGVudGlhbHModXJsKSB8fCB1cmwucG9ydCAhPT0gbnVsbCkpIHJldHVybjtcbiAgICAgICAgICBmYWlsdXJlID0gcGFyc2VIb3N0KHVybCwgYnVmZmVyKTtcbiAgICAgICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGNoYXIgPT0gJ1snKSBzZWVuQnJhY2tldCA9IHRydWU7XG4gICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnXScpIHNlZW5CcmFja2V0ID0gZmFsc2U7XG4gICAgICAgICAgYnVmZmVyICs9IGNoYXI7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgIGNhc2UgUE9SVDpcbiAgICAgICAgaWYgKERJR0lULnRlc3QoY2hhcikpIHtcbiAgICAgICAgICBidWZmZXIgKz0gY2hhcjtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBjaGFyID09IEVPRiB8fCBjaGFyID09ICcvJyB8fCBjaGFyID09ICc/JyB8fCBjaGFyID09ICcjJyB8fFxuICAgICAgICAgIChjaGFyID09ICdcXFxcJyAmJiBpc1NwZWNpYWwodXJsKSkgfHxcbiAgICAgICAgICBzdGF0ZU92ZXJyaWRlXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChidWZmZXIgIT0gJycpIHtcbiAgICAgICAgICAgIHZhciBwb3J0ID0gcGFyc2VJbnQoYnVmZmVyLCAxMCk7XG4gICAgICAgICAgICBpZiAocG9ydCA+IDB4RkZGRikgcmV0dXJuIElOVkFMSURfUE9SVDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gKGlzU3BlY2lhbCh1cmwpICYmIHBvcnQgPT09IHNwZWNpYWxTY2hlbWVzW3VybC5zY2hlbWVdKSA/IG51bGwgOiBwb3J0O1xuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIElOVkFMSURfUE9SVDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgRklMRTpcbiAgICAgICAgdXJsLnNjaGVtZSA9ICdmaWxlJztcbiAgICAgICAgaWYgKGNoYXIgPT0gJy8nIHx8IGNoYXIgPT0gJ1xcXFwnKSBzdGF0ZSA9IEZJTEVfU0xBU0g7XG4gICAgICAgIGVsc2UgaWYgKGJhc2UgJiYgYmFzZS5zY2hlbWUgPT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgaWYgKGNoYXIgPT0gRU9GKSB7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhciA9PSAnPycpIHtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdXJsLnBhdGggPSBiYXNlLnBhdGguc2xpY2UoKTtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYXIgPT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIoY29kZVBvaW50cy5zbGljZShwb2ludGVyKS5qb2luKCcnKSkpIHtcbiAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgIHVybC5wYXRoID0gYmFzZS5wYXRoLnNsaWNlKCk7XG4gICAgICAgICAgICAgIHNob3J0ZW5VUkxzUGF0aCh1cmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBGSUxFX1NMQVNIOlxuICAgICAgICBpZiAoY2hhciA9PSAnLycgfHwgY2hhciA9PSAnXFxcXCcpIHtcbiAgICAgICAgICBzdGF0ZSA9IEZJTEVfSE9TVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFzZSAmJiBiYXNlLnNjaGVtZSA9PSAnZmlsZScgJiYgIXN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIoY29kZVBvaW50cy5zbGljZShwb2ludGVyKS5qb2luKCcnKSkpIHtcbiAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZS5wYXRoWzBdLCB0cnVlKSkgdXJsLnBhdGgucHVzaChiYXNlLnBhdGhbMF0pO1xuICAgICAgICAgIGVsc2UgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICBjb250aW51ZTtcblxuICAgICAgY2FzZSBGSUxFX0hPU1Q6XG4gICAgICAgIGlmIChjaGFyID09IEVPRiB8fCBjaGFyID09ICcvJyB8fCBjaGFyID09ICdcXFxcJyB8fCBjaGFyID09ICc/JyB8fCBjaGFyID09ICcjJykge1xuICAgICAgICAgIGlmICghc3RhdGVPdmVycmlkZSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihidWZmZXIpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgfSBlbHNlIGlmIChidWZmZXIgPT0gJycpIHtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gJyc7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmYWlsdXJlID0gcGFyc2VIb3N0KHVybCwgYnVmZmVyKTtcbiAgICAgICAgICAgIGlmIChmYWlsdXJlKSByZXR1cm4gZmFpbHVyZTtcbiAgICAgICAgICAgIGlmICh1cmwuaG9zdCA9PSAnbG9jYWxob3N0JykgdXJsLmhvc3QgPSAnJztcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICB9IGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgYnVmZmVyICs9IGNoYXI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFBBVEhfU1RBUlQ6XG4gICAgICAgIGlmIChpc1NwZWNpYWwodXJsKSkge1xuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBpZiAoY2hhciAhPSAnLycgJiYgY2hhciAhPSAnXFxcXCcpIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNoYXIgPT0gJz8nKSB7XG4gICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgfSBlbHNlIGlmICghc3RhdGVPdmVycmlkZSAmJiBjaGFyID09ICcjJykge1xuICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhciAhPSBFT0YpIHtcbiAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgaWYgKGNoYXIgIT0gJy8nKSBjb250aW51ZTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBQQVRIOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2hhciA9PSBFT0YgfHwgY2hhciA9PSAnLycgfHxcbiAgICAgICAgICAoY2hhciA9PSAnXFxcXCcgJiYgaXNTcGVjaWFsKHVybCkpIHx8XG4gICAgICAgICAgKCFzdGF0ZU92ZXJyaWRlICYmIChjaGFyID09ICc/JyB8fCBjaGFyID09ICcjJykpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChpc0RvdWJsZURvdChidWZmZXIpKSB7XG4gICAgICAgICAgICBzaG9ydGVuVVJMc1BhdGgodXJsKTtcbiAgICAgICAgICAgIGlmIChjaGFyICE9ICcvJyAmJiAhKGNoYXIgPT0gJ1xcXFwnICYmIGlzU3BlY2lhbCh1cmwpKSkge1xuICAgICAgICAgICAgICB1cmwucGF0aC5wdXNoKCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGlzU2luZ2xlRG90KGJ1ZmZlcikpIHtcbiAgICAgICAgICAgIGlmIChjaGFyICE9ICcvJyAmJiAhKGNoYXIgPT0gJ1xcXFwnICYmIGlzU3BlY2lhbCh1cmwpKSkge1xuICAgICAgICAgICAgICB1cmwucGF0aC5wdXNoKCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHVybC5zY2hlbWUgPT0gJ2ZpbGUnICYmICF1cmwucGF0aC5sZW5ndGggJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYnVmZmVyKSkge1xuICAgICAgICAgICAgICBpZiAodXJsLmhvc3QpIHVybC5ob3N0ID0gJyc7XG4gICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5jaGFyQXQoMCkgKyAnOic7IC8vIG5vcm1hbGl6ZSB3aW5kb3dzIGRyaXZlIGxldHRlclxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXJsLnBhdGgucHVzaChidWZmZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICBpZiAodXJsLnNjaGVtZSA9PSAnZmlsZScgJiYgKGNoYXIgPT0gRU9GIHx8IGNoYXIgPT0gJz8nIHx8IGNoYXIgPT0gJyMnKSkge1xuICAgICAgICAgICAgd2hpbGUgKHVybC5wYXRoLmxlbmd0aCA+IDEgJiYgdXJsLnBhdGhbMF0gPT09ICcnKSB7XG4gICAgICAgICAgICAgIHVybC5wYXRoLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjaGFyID09ICc/Jykge1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhciA9PSAnIycpIHtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVmZmVyICs9IHBlcmNlbnRFbmNvZGUoY2hhciwgcGF0aFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICBjYXNlIENBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEg6XG4gICAgICAgIGlmIChjaGFyID09ICc/Jykge1xuICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhciA9PSAnIycpIHtcbiAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXIgIT0gRU9GKSB7XG4gICAgICAgICAgdXJsLnBhdGhbMF0gKz0gcGVyY2VudEVuY29kZShjaGFyLCBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgY2FzZSBRVUVSWTpcbiAgICAgICAgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNoYXIgPT0gJyMnKSB7XG4gICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyICE9IEVPRikge1xuICAgICAgICAgIGlmIChjaGFyID09IFwiJ1wiICYmIGlzU3BlY2lhbCh1cmwpKSB1cmwucXVlcnkgKz0gJyUyNyc7XG4gICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnIycpIHVybC5xdWVyeSArPSAnJTIzJztcbiAgICAgICAgICBlbHNlIHVybC5xdWVyeSArPSBwZXJjZW50RW5jb2RlKGNoYXIsIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICBjYXNlIEZSQUdNRU5UOlxuICAgICAgICBpZiAoY2hhciAhPSBFT0YpIHVybC5mcmFnbWVudCArPSBwZXJjZW50RW5jb2RlKGNoYXIsIGZyYWdtZW50UGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHBvaW50ZXIrKztcbiAgfVxufTtcblxuLy8gYFVSTGAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsLWNsYXNzXG52YXIgVVJMQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBVUkwodXJsIC8qICwgYmFzZSAqLykge1xuICB2YXIgdGhhdCA9IGFuSW5zdGFuY2UodGhpcywgVVJMQ29uc3RydWN0b3IsICdVUkwnKTtcbiAgdmFyIGJhc2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIHVybFN0cmluZyA9IFN0cmluZyh1cmwpO1xuICB2YXIgc3RhdGUgPSBzZXRJbnRlcm5hbFN0YXRlKHRoYXQsIHsgdHlwZTogJ1VSTCcgfSk7XG4gIHZhciBiYXNlU3RhdGUsIGZhaWx1cmU7XG4gIGlmIChiYXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoYmFzZSBpbnN0YW5jZW9mIFVSTENvbnN0cnVjdG9yKSBiYXNlU3RhdGUgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKGJhc2UpO1xuICAgIGVsc2Uge1xuICAgICAgZmFpbHVyZSA9IHBhcnNlVVJMKGJhc2VTdGF0ZSA9IHt9LCBTdHJpbmcoYmFzZSkpO1xuICAgICAgaWYgKGZhaWx1cmUpIHRocm93IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICB9XG4gIH1cbiAgZmFpbHVyZSA9IHBhcnNlVVJMKHN0YXRlLCB1cmxTdHJpbmcsIG51bGwsIGJhc2VTdGF0ZSk7XG4gIGlmIChmYWlsdXJlKSB0aHJvdyBUeXBlRXJyb3IoZmFpbHVyZSk7XG4gIHZhciBzZWFyY2hQYXJhbXMgPSBzdGF0ZS5zZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIHZhciBzZWFyY2hQYXJhbXNTdGF0ZSA9IGdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUoc2VhcmNoUGFyYW1zKTtcbiAgc2VhcmNoUGFyYW1zU3RhdGUudXBkYXRlU2VhcmNoUGFyYW1zKHN0YXRlLnF1ZXJ5KTtcbiAgc2VhcmNoUGFyYW1zU3RhdGUudXBkYXRlVVJMID0gZnVuY3Rpb24gKCkge1xuICAgIHN0YXRlLnF1ZXJ5ID0gU3RyaW5nKHNlYXJjaFBhcmFtcykgfHwgbnVsbDtcbiAgfTtcbiAgaWYgKCFERVNDUklQVE9SUykge1xuICAgIHRoYXQuaHJlZiA9IHNlcmlhbGl6ZVVSTC5jYWxsKHRoYXQpO1xuICAgIHRoYXQub3JpZ2luID0gZ2V0T3JpZ2luLmNhbGwodGhhdCk7XG4gICAgdGhhdC5wcm90b2NvbCA9IGdldFByb3RvY29sLmNhbGwodGhhdCk7XG4gICAgdGhhdC51c2VybmFtZSA9IGdldFVzZXJuYW1lLmNhbGwodGhhdCk7XG4gICAgdGhhdC5wYXNzd29yZCA9IGdldFBhc3N3b3JkLmNhbGwodGhhdCk7XG4gICAgdGhhdC5ob3N0ID0gZ2V0SG9zdC5jYWxsKHRoYXQpO1xuICAgIHRoYXQuaG9zdG5hbWUgPSBnZXRIb3N0bmFtZS5jYWxsKHRoYXQpO1xuICAgIHRoYXQucG9ydCA9IGdldFBvcnQuY2FsbCh0aGF0KTtcbiAgICB0aGF0LnBhdGhuYW1lID0gZ2V0UGF0aG5hbWUuY2FsbCh0aGF0KTtcbiAgICB0aGF0LnNlYXJjaCA9IGdldFNlYXJjaC5jYWxsKHRoYXQpO1xuICAgIHRoYXQuc2VhcmNoUGFyYW1zID0gZ2V0U2VhcmNoUGFyYW1zLmNhbGwodGhhdCk7XG4gICAgdGhhdC5oYXNoID0gZ2V0SGFzaC5jYWxsKHRoYXQpO1xuICB9XG59O1xuXG52YXIgVVJMUHJvdG90eXBlID0gVVJMQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG52YXIgc2VyaWFsaXplVVJMID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgdmFyIHNjaGVtZSA9IHVybC5zY2hlbWU7XG4gIHZhciB1c2VybmFtZSA9IHVybC51c2VybmFtZTtcbiAgdmFyIHBhc3N3b3JkID0gdXJsLnBhc3N3b3JkO1xuICB2YXIgaG9zdCA9IHVybC5ob3N0O1xuICB2YXIgcG9ydCA9IHVybC5wb3J0O1xuICB2YXIgcGF0aCA9IHVybC5wYXRoO1xuICB2YXIgcXVlcnkgPSB1cmwucXVlcnk7XG4gIHZhciBmcmFnbWVudCA9IHVybC5mcmFnbWVudDtcbiAgdmFyIG91dHB1dCA9IHNjaGVtZSArICc6JztcbiAgaWYgKGhvc3QgIT09IG51bGwpIHtcbiAgICBvdXRwdXQgKz0gJy8vJztcbiAgICBpZiAoaW5jbHVkZXNDcmVkZW50aWFscyh1cmwpKSB7XG4gICAgICBvdXRwdXQgKz0gdXNlcm5hbWUgKyAocGFzc3dvcmQgPyAnOicgKyBwYXNzd29yZCA6ICcnKSArICdAJztcbiAgICB9XG4gICAgb3V0cHV0ICs9IHNlcmlhbGl6ZUhvc3QoaG9zdCk7XG4gICAgaWYgKHBvcnQgIT09IG51bGwpIG91dHB1dCArPSAnOicgKyBwb3J0O1xuICB9IGVsc2UgaWYgKHNjaGVtZSA9PSAnZmlsZScpIG91dHB1dCArPSAnLy8nO1xuICBvdXRwdXQgKz0gdXJsLmNhbm5vdEJlQUJhc2VVUkwgPyBwYXRoWzBdIDogcGF0aC5sZW5ndGggPyAnLycgKyBwYXRoLmpvaW4oJy8nKSA6ICcnO1xuICBpZiAocXVlcnkgIT09IG51bGwpIG91dHB1dCArPSAnPycgKyBxdWVyeTtcbiAgaWYgKGZyYWdtZW50ICE9PSBudWxsKSBvdXRwdXQgKz0gJyMnICsgZnJhZ21lbnQ7XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG52YXIgZ2V0T3JpZ2luID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgdmFyIHNjaGVtZSA9IHVybC5zY2hlbWU7XG4gIHZhciBwb3J0ID0gdXJsLnBvcnQ7XG4gIGlmIChzY2hlbWUgPT0gJ2Jsb2InKSB0cnkge1xuICAgIHJldHVybiBuZXcgVVJMKHNjaGVtZS5wYXRoWzBdKS5vcmlnaW47XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICdudWxsJztcbiAgfVxuICBpZiAoc2NoZW1lID09ICdmaWxlJyB8fCAhaXNTcGVjaWFsKHVybCkpIHJldHVybiAnbnVsbCc7XG4gIHJldHVybiBzY2hlbWUgKyAnOi8vJyArIHNlcmlhbGl6ZUhvc3QodXJsLmhvc3QpICsgKHBvcnQgIT09IG51bGwgPyAnOicgKyBwb3J0IDogJycpO1xufTtcblxudmFyIGdldFByb3RvY29sID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5zY2hlbWUgKyAnOic7XG59O1xuXG52YXIgZ2V0VXNlcm5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLnVzZXJuYW1lO1xufTtcblxudmFyIGdldFBhc3N3b3JkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5wYXNzd29yZDtcbn07XG5cbnZhciBnZXRIb3N0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgdmFyIGhvc3QgPSB1cmwuaG9zdDtcbiAgdmFyIHBvcnQgPSB1cmwucG9ydDtcbiAgcmV0dXJuIGhvc3QgPT09IG51bGwgPyAnJ1xuICAgIDogcG9ydCA9PT0gbnVsbCA/IHNlcmlhbGl6ZUhvc3QoaG9zdClcbiAgICA6IHNlcmlhbGl6ZUhvc3QoaG9zdCkgKyAnOicgKyBwb3J0O1xufTtcblxudmFyIGdldEhvc3RuYW1lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaG9zdCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcykuaG9zdDtcbiAgcmV0dXJuIGhvc3QgPT09IG51bGwgPyAnJyA6IHNlcmlhbGl6ZUhvc3QoaG9zdCk7XG59O1xuXG52YXIgZ2V0UG9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHBvcnQgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLnBvcnQ7XG4gIHJldHVybiBwb3J0ID09PSBudWxsID8gJycgOiBTdHJpbmcocG9ydCk7XG59O1xuXG52YXIgZ2V0UGF0aG5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICB2YXIgcGF0aCA9IHVybC5wYXRoO1xuICByZXR1cm4gdXJsLmNhbm5vdEJlQUJhc2VVUkwgPyBwYXRoWzBdIDogcGF0aC5sZW5ndGggPyAnLycgKyBwYXRoLmpvaW4oJy8nKSA6ICcnO1xufTtcblxudmFyIGdldFNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHF1ZXJ5ID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5xdWVyeTtcbiAgcmV0dXJuIHF1ZXJ5ID8gJz8nICsgcXVlcnkgOiAnJztcbn07XG5cbnZhciBnZXRTZWFyY2hQYXJhbXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLnNlYXJjaFBhcmFtcztcbn07XG5cbnZhciBnZXRIYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZnJhZ21lbnQgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLmZyYWdtZW50O1xuICByZXR1cm4gZnJhZ21lbnQgPyAnIycgKyBmcmFnbWVudCA6ICcnO1xufTtcblxudmFyIGFjY2Vzc29yRGVzY3JpcHRvciA9IGZ1bmN0aW9uIChnZXR0ZXIsIHNldHRlcikge1xuICByZXR1cm4geyBnZXQ6IGdldHRlciwgc2V0OiBzZXR0ZXIsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSB9O1xufTtcblxuaWYgKERFU0NSSVBUT1JTKSB7XG4gIGRlZmluZVByb3BlcnRpZXMoVVJMUHJvdG90eXBlLCB7XG4gICAgLy8gYFVSTC5wcm90b3R5cGUuaHJlZmAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaHJlZlxuICAgIGhyZWY6IGFjY2Vzc29yRGVzY3JpcHRvcihzZXJpYWxpemVVUkwsIGZ1bmN0aW9uIChocmVmKSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIHZhciB1cmxTdHJpbmcgPSBTdHJpbmcoaHJlZik7XG4gICAgICB2YXIgZmFpbHVyZSA9IHBhcnNlVVJMKHVybCwgdXJsU3RyaW5nKTtcbiAgICAgIGlmIChmYWlsdXJlKSB0aHJvdyBUeXBlRXJyb3IoZmFpbHVyZSk7XG4gICAgICBnZXRJbnRlcm5hbFNlYXJjaFBhcmFtc1N0YXRlKHVybC5zZWFyY2hQYXJhbXMpLnVwZGF0ZVNlYXJjaFBhcmFtcyh1cmwucXVlcnkpO1xuICAgIH0pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLm9yaWdpbmAgZ2V0dGVyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLW9yaWdpblxuICAgIG9yaWdpbjogYWNjZXNzb3JEZXNjcmlwdG9yKGdldE9yaWdpbiksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUucHJvdG9jb2xgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXByb3RvY29sXG4gICAgcHJvdG9jb2w6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRQcm90b2NvbCwgZnVuY3Rpb24gKHByb3RvY29sKSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIHBhcnNlVVJMKHVybCwgU3RyaW5nKHByb3RvY29sKSArICc6JywgU0NIRU1FX1NUQVJUKTtcbiAgICB9KSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS51c2VybmFtZWAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdXNlcm5hbWVcbiAgICB1c2VybmFtZTogYWNjZXNzb3JEZXNjcmlwdG9yKGdldFVzZXJuYW1lLCBmdW5jdGlvbiAodXNlcm5hbWUpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgdmFyIGNvZGVQb2ludHMgPSBhcnJheUZyb20oU3RyaW5nKHVzZXJuYW1lKSk7XG4gICAgICBpZiAoY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KHVybCkpIHJldHVybjtcbiAgICAgIHVybC51c2VybmFtZSA9ICcnO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHVybC51c2VybmFtZSArPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludHNbaV0sIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgICB9XG4gICAgfSksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUucGFzc3dvcmRgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBhc3N3b3JkXG4gICAgcGFzc3dvcmQ6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRQYXNzd29yZCwgZnVuY3Rpb24gKHBhc3N3b3JkKSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIHZhciBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKFN0cmluZyhwYXNzd29yZCkpO1xuICAgICAgaWYgKGNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCh1cmwpKSByZXR1cm47XG4gICAgICB1cmwucGFzc3dvcmQgPSAnJztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB1cmwucGFzc3dvcmQgKz0gcGVyY2VudEVuY29kZShjb2RlUG9pbnRzW2ldLCB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgfVxuICAgIH0pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLmhvc3RgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RcbiAgICBob3N0OiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0SG9zdCwgZnVuY3Rpb24gKGhvc3QpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgICBwYXJzZVVSTCh1cmwsIFN0cmluZyhob3N0KSwgSE9TVCk7XG4gICAgfSksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUuaG9zdG5hbWVgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RuYW1lXG4gICAgaG9zdG5hbWU6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRIb3N0bmFtZSwgZnVuY3Rpb24gKGhvc3RuYW1lKSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIGlmICh1cmwuY2Fubm90QmVBQmFzZVVSTCkgcmV0dXJuO1xuICAgICAgcGFyc2VVUkwodXJsLCBTdHJpbmcoaG9zdG5hbWUpLCBIT1NUTkFNRSk7XG4gICAgfSksXG4gICAgLy8gYFVSTC5wcm90b3R5cGUucG9ydGAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcG9ydFxuICAgIHBvcnQ6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRQb3J0LCBmdW5jdGlvbiAocG9ydCkge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICBpZiAoY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KHVybCkpIHJldHVybjtcbiAgICAgIHBvcnQgPSBTdHJpbmcocG9ydCk7XG4gICAgICBpZiAocG9ydCA9PSAnJykgdXJsLnBvcnQgPSBudWxsO1xuICAgICAgZWxzZSBwYXJzZVVSTCh1cmwsIHBvcnQsIFBPUlQpO1xuICAgIH0pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLnBhdGhuYW1lYCBhY2Nlc3NvcnMgcGFpclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wYXRobmFtZVxuICAgIHBhdGhuYW1lOiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0UGF0aG5hbWUsIGZ1bmN0aW9uIChwYXRobmFtZSkge1xuICAgICAgdmFyIHVybCA9IGdldEludGVybmFsVVJMU3RhdGUodGhpcyk7XG4gICAgICBpZiAodXJsLmNhbm5vdEJlQUJhc2VVUkwpIHJldHVybjtcbiAgICAgIHVybC5wYXRoID0gW107XG4gICAgICBwYXJzZVVSTCh1cmwsIHBhdGhuYW1lICsgJycsIFBBVEhfU1RBUlQpO1xuICAgIH0pLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLnNlYXJjaGAgYWNjZXNzb3JzIHBhaXJcbiAgICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNoXG4gICAgc2VhcmNoOiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0U2VhcmNoLCBmdW5jdGlvbiAoc2VhcmNoKSB7XG4gICAgICB2YXIgdXJsID0gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKTtcbiAgICAgIHNlYXJjaCA9IFN0cmluZyhzZWFyY2gpO1xuICAgICAgaWYgKHNlYXJjaCA9PSAnJykge1xuICAgICAgICB1cmwucXVlcnkgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCc/JyA9PSBzZWFyY2guY2hhckF0KDApKSBzZWFyY2ggPSBzZWFyY2guc2xpY2UoMSk7XG4gICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICBwYXJzZVVSTCh1cmwsIHNlYXJjaCwgUVVFUlkpO1xuICAgICAgfVxuICAgICAgZ2V0SW50ZXJuYWxTZWFyY2hQYXJhbXNTdGF0ZSh1cmwuc2VhcmNoUGFyYW1zKS51cGRhdGVTZWFyY2hQYXJhbXModXJsLnF1ZXJ5KTtcbiAgICB9KSxcbiAgICAvLyBgVVJMLnByb3RvdHlwZS5zZWFyY2hQYXJhbXNgIGdldHRlclxuICAgIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1zZWFyY2hwYXJhbXNcbiAgICBzZWFyY2hQYXJhbXM6IGFjY2Vzc29yRGVzY3JpcHRvcihnZXRTZWFyY2hQYXJhbXMpLFxuICAgIC8vIGBVUkwucHJvdG90eXBlLmhhc2hgIGFjY2Vzc29ycyBwYWlyXG4gICAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhhc2hcbiAgICBoYXNoOiBhY2Nlc3NvckRlc2NyaXB0b3IoZ2V0SGFzaCwgZnVuY3Rpb24gKGhhc2gpIHtcbiAgICAgIHZhciB1cmwgPSBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpO1xuICAgICAgaGFzaCA9IFN0cmluZyhoYXNoKTtcbiAgICAgIGlmIChoYXNoID09ICcnKSB7XG4gICAgICAgIHVybC5mcmFnbWVudCA9IG51bGw7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICgnIycgPT0gaGFzaC5jaGFyQXQoMCkpIGhhc2ggPSBoYXNoLnNsaWNlKDEpO1xuICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICBwYXJzZVVSTCh1cmwsIGhhc2gsIEZSQUdNRU5UKTtcbiAgICB9KVxuICB9KTtcbn1cblxuLy8gYFVSTC5wcm90b3R5cGUudG9KU09OYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC10b2pzb25cbnJlZGVmaW5lKFVSTFByb3RvdHlwZSwgJ3RvSlNPTicsIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgcmV0dXJuIHNlcmlhbGl6ZVVSTC5jYWxsKHRoaXMpO1xufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG4vLyBgVVJMLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI1VSTC1zdHJpbmdpZmljYXRpb24tYmVoYXZpb3JcbnJlZGVmaW5lKFVSTFByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBzZXJpYWxpemVVUkwuY2FsbCh0aGlzKTtcbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuaWYgKE5hdGl2ZVVSTCkge1xuICB2YXIgbmF0aXZlQ3JlYXRlT2JqZWN0VVJMID0gTmF0aXZlVVJMLmNyZWF0ZU9iamVjdFVSTDtcbiAgdmFyIG5hdGl2ZVJldm9rZU9iamVjdFVSTCA9IE5hdGl2ZVVSTC5yZXZva2VPYmplY3RVUkw7XG4gIC8vIGBVUkwuY3JlYXRlT2JqZWN0VVJMYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC9jcmVhdGVPYmplY3RVUkxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGlmIChuYXRpdmVDcmVhdGVPYmplY3RVUkwpIHJlZGVmaW5lKFVSTENvbnN0cnVjdG9yLCAnY3JlYXRlT2JqZWN0VVJMJywgZnVuY3Rpb24gY3JlYXRlT2JqZWN0VVJMKGJsb2IpIHtcbiAgICByZXR1cm4gbmF0aXZlQ3JlYXRlT2JqZWN0VVJMLmFwcGx5KE5hdGl2ZVVSTCwgYXJndW1lbnRzKTtcbiAgfSk7XG4gIC8vIGBVUkwucmV2b2tlT2JqZWN0VVJMYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC9yZXZva2VPYmplY3RVUkxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGlmIChuYXRpdmVSZXZva2VPYmplY3RVUkwpIHJlZGVmaW5lKFVSTENvbnN0cnVjdG9yLCAncmV2b2tlT2JqZWN0VVJMJywgZnVuY3Rpb24gcmV2b2tlT2JqZWN0VVJMKHVybCkge1xuICAgIHJldHVybiBuYXRpdmVSZXZva2VPYmplY3RVUkwuYXBwbHkoTmF0aXZlVVJMLCBhcmd1bWVudHMpO1xuICB9KTtcbn1cblxuc2V0VG9TdHJpbmdUYWcoVVJMQ29uc3RydWN0b3IsICdVUkwnKTtcblxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiAhVVNFX05BVElWRV9VUkwsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIFVSTDogVVJMQ29uc3RydWN0b3Jcbn0pO1xuIiwidmFyIGdsb2JhbCA9XG4gICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmKSB8fFxuICAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsKVxuXG52YXIgc3VwcG9ydCA9IHtcbiAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBnbG9iYWwsXG4gIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBnbG9iYWwgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gIGJsb2I6XG4gICAgJ0ZpbGVSZWFkZXInIGluIGdsb2JhbCAmJlxuICAgICdCbG9iJyBpbiBnbG9iYWwgJiZcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgQmxvYigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pKCksXG4gIGZvcm1EYXRhOiAnRm9ybURhdGEnIGluIGdsb2JhbCxcbiAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gZ2xvYmFsXG59XG5cbmZ1bmN0aW9uIGlzRGF0YVZpZXcob2JqKSB7XG4gIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxufVxuXG5pZiAoc3VwcG9ydC5hcnJheUJ1ZmZlcikge1xuICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgXVxuXG4gIHZhciBpc0FycmF5QnVmZmVyVmlldyA9XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3IHx8XG4gICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHZpZXdDbGFzc2VzLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikpID4gLTFcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuICB9XG4gIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+IV0vaS50ZXN0KG5hbWUpIHx8IG5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWUnKVxuICB9XG4gIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVlIGxpc3RcbmZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gIHZhciBpdGVyYXRvciA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcbiAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdGhpcy5tYXAgPSB7fVxuXG4gIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgdGhpcy5hcHBlbmQoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAgIH0sIHRoaXMpXG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgdmFyIG9sZFZhbHVlID0gdGhpcy5tYXBbbmFtZV1cbiAgdGhpcy5tYXBbbmFtZV0gPSBvbGRWYWx1ZSA/IG9sZFZhbHVlICsgJywgJyArIHZhbHVlIDogdmFsdWVcbn1cblxuSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gdGhpcy5tYXApIHtcbiAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdGhpcy5tYXBbbmFtZV0sIG5hbWUsIHRoaXMpXG4gICAgfVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChuYW1lKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpdGVtcy5wdXNoKHZhbHVlKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbmlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gIEhlYWRlcnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJykpXG4gIH1cbiAgYm9keS5ib2R5VXNlZCA9IHRydWVcbn1cblxuZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgIH1cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzVGV4dChibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQoYnVmKSB7XG4gIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxuICB2YXIgY2hhcnMgPSBuZXcgQXJyYXkodmlldy5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pXG4gIH1cbiAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwKVxuICB9IGVsc2Uge1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgdmlldy5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmKSlcbiAgICByZXR1cm4gdmlldy5idWZmZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBCb2R5KCkge1xuICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAvKlxuICAgICAgZmV0Y2gtbW9jayB3cmFwcyB0aGUgUmVzcG9uc2Ugb2JqZWN0IGluIGFuIEVTNiBQcm94eSB0b1xuICAgICAgcHJvdmlkZSB1c2VmdWwgdGVzdCBoYXJuZXNzIGZlYXR1cmVzIHN1Y2ggYXMgZmx1c2guIEhvd2V2ZXIsIG9uXG4gICAgICBFUzUgYnJvd3NlcnMgd2l0aG91dCBmZXRjaCBvciBQcm94eSBzdXBwb3J0IHBvbGx5ZmlsbHMgbXVzdCBiZSB1c2VkO1xuICAgICAgdGhlIHByb3h5LXBvbGx5ZmlsbCBpcyB1bmFibGUgdG8gcHJveHkgYW4gYXR0cmlidXRlIHVubGVzcyBpdCBleGlzdHNcbiAgICAgIG9uIHRoZSBvYmplY3QgYmVmb3JlIHRoZSBQcm94eSBpcyBjcmVhdGVkLiBUaGlzIGNoYW5nZSBlbnN1cmVzXG4gICAgICBSZXNwb25zZS5ib2R5VXNlZCBleGlzdHMgb24gdGhlIGluc3RhbmNlLCB3aGlsZSBtYWludGFpbmluZyB0aGVcbiAgICAgIHNlbWFudGljIG9mIHNldHRpbmcgUmVxdWVzdC5ib2R5VXNlZCBpbiB0aGUgY29uc3RydWN0b3IgYmVmb3JlXG4gICAgICBfaW5pdEJvZHkgaXMgY2FsbGVkLlxuICAgICovXG4gICAgdGhpcy5ib2R5VXNlZCA9IHRoaXMuYm9keVVzZWRcbiAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIHN1cHBvcnQuYmxvYiAmJiBpc0RhdGFWaWV3KGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcilcbiAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiAoQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkgfHwgaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgdmFyIGlzQ29uc3VtZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAoaXNDb25zdW1lZCkge1xuICAgICAgICAgIHJldHVybiBpc0NvbnN1bWVkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCArIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3RlZFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlYWRBcnJheUJ1ZmZlckFzVGV4dCh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihkZWNvZGUpXG4gICAgfVxuICB9XG5cbiAgdGhpcy5qc29uID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhUVFAgbWV0aG9kcyB3aG9zZSBjYXBpdGFsaXphdGlvbiBzaG91bGQgYmUgbm9ybWFsaXplZFxudmFyIG1ldGhvZHMgPSBbJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BPU1QnLCAnUFVUJ11cblxuZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlcXVlc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGJvZHkgPSBvcHRpb25zLmJvZHlcblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgIH1cbiAgICB0aGlzLnVybCA9IGlucHV0LnVybFxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcbiAgICB0aGlzLnNpZ25hbCA9IGlucHV0LnNpZ25hbFxuICAgIGlmICghYm9keSAmJiBpbnB1dC5fYm9keUluaXQgIT0gbnVsbCkge1xuICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICB9XG5cbiAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnc2FtZS1vcmlnaW4nXG4gIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgfVxuICB0aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgdGhpcy5tb2RlID0gb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG4gIHRoaXMuc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgfHwgdGhpcy5zaWduYWxcbiAgdGhpcy5yZWZlcnJlciA9IG51bGxcblxuICBpZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICB9XG4gIHRoaXMuX2luaXRCb2R5KGJvZHkpXG5cbiAgaWYgKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgaWYgKG9wdGlvbnMuY2FjaGUgPT09ICduby1zdG9yZScgfHwgb3B0aW9ucy5jYWNoZSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgLy8gU2VhcmNoIGZvciBhICdfJyBwYXJhbWV0ZXIgaW4gdGhlIHF1ZXJ5IHN0cmluZ1xuICAgICAgdmFyIHJlUGFyYW1TZWFyY2ggPSAvKFs/Jl0pXz1bXiZdKi9cbiAgICAgIGlmIChyZVBhcmFtU2VhcmNoLnRlc3QodGhpcy51cmwpKSB7XG4gICAgICAgIC8vIElmIGl0IGFscmVhZHkgZXhpc3RzIHRoZW4gc2V0IHRoZSB2YWx1ZSB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5yZXBsYWNlKHJlUGFyYW1TZWFyY2gsICckMV89JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBhIG5ldyAnXycgcGFyYW1ldGVyIHRvIHRoZSBlbmQgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHZhciByZVF1ZXJ5U3RyaW5nID0gL1xcPy9cbiAgICAgICAgdGhpcy51cmwgKz0gKHJlUXVlcnlTdHJpbmcudGVzdCh0aGlzLnVybCkgPyAnJicgOiAnPycpICsgJ189JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxufVxuXG5mdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICB2YXIgZm9ybSA9IG5ldyBGb3JtRGF0YSgpXG4gIGJvZHlcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KCcmJylcbiAgICAuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGZvcm1cbn1cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIHtcbiAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gIC8vIFJlcGxhY2UgaW5zdGFuY2VzIG9mIFxcclxcbiBhbmQgXFxuIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBzcGFjZSBvciBob3Jpem9udGFsIHRhYiB3aXRoIGEgc3BhY2VcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgdmFyIHByZVByb2Nlc3NlZEhlYWRlcnMgPSByYXdIZWFkZXJzLnJlcGxhY2UoL1xccj9cXG5bXFx0IF0rL2csICcgJylcbiAgLy8gQXZvaWRpbmcgc3BsaXQgdmlhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEgY29tbW9uIElFMTEgYnVnIHdpdGggdGhlIGNvcmUtanMgMy42LjAgcmVnZXggcG9seWZpbGxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaC9pc3N1ZXMvNzQ4XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy83NTFcbiAgcHJlUHJvY2Vzc2VkSGVhZGVyc1xuICAgIC5zcGxpdCgnXFxyJylcbiAgICAubWFwKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgcmV0dXJuIGhlYWRlci5pbmRleE9mKCdcXG4nKSA9PT0gMCA/IGhlYWRlci5zdWJzdHIoMSwgaGVhZGVyLmxlbmd0aCkgOiBoZWFkZXJcbiAgICB9KVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHZhciBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCkudHJpbSgpXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKClcbiAgICAgICAgaGVhZGVycy5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gaGVhZGVyc1xufVxuXG5Cb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cbmV4cG9ydCBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzXG4gIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDBcbiAgdGhpcy5zdGF0dXNUZXh0ID0gJ3N0YXR1c1RleHQnIGluIG9wdGlvbnMgPyBvcHRpb25zLnN0YXR1c1RleHQgOiAnJ1xuICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIHRoaXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgdGhpcy5faW5pdEJvZHkoYm9keUluaXQpXG59XG5cbkJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cblJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgaGVhZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICB1cmw6IHRoaXMudXJsXG4gIH0pXG59XG5cblJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiAwLCBzdGF0dXNUZXh0OiAnJ30pXG4gIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG4gIHJldHVybiByZXNwb25zZVxufVxuXG52YXIgcmVkaXJlY3RTdGF0dXNlcyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cblxuUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykge1xuICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgc3RhdHVzIGNvZGUnKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJsfX0pXG59XG5cbmV4cG9ydCB2YXIgRE9NRXhjZXB0aW9uID0gZ2xvYmFsLkRPTUV4Y2VwdGlvblxudHJ5IHtcbiAgbmV3IERPTUV4Y2VwdGlvbigpXG59IGNhdGNoIChlcnIpIHtcbiAgRE9NRXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgbmFtZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSlcbiAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgfVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBET01FeGNlcHRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGlucHV0LCBpbml0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICBmdW5jdGlvbiBhYm9ydFhocigpIHtcbiAgICAgIHhoci5hYm9ydCgpXG4gICAgfVxuXG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIHN0YXR1czogeGhyLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICB9XG4gICAgICBvcHRpb25zLnVybCA9ICdyZXNwb25zZVVSTCcgaW4geGhyID8geGhyLnJlc3BvbnNlVVJMIDogb3B0aW9ucy5oZWFkZXJzLmdldCgnWC1SZXF1ZXN0LVVSTCcpXG4gICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwgb3B0aW9ucykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXhVcmwodXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdXJsID09PSAnJyAmJiBnbG9iYWwubG9jYXRpb24uaHJlZiA/IGdsb2JhbC5sb2NhdGlvbi5ocmVmIDogdXJsXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgZml4VXJsKHJlcXVlc3QudXJsKSwgdHJ1ZSlcblxuICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnb21pdCcpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIpIHtcbiAgICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc3VwcG9ydC5hcnJheUJ1ZmZlciAmJlxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKSAmJlxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKS5pbmRleE9mKCdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKSAhPT0gLTFcbiAgICAgICkge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbml0ICYmIHR5cGVvZiBpbml0LmhlYWRlcnMgPT09ICdvYmplY3QnICYmICEoaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykpIHtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluaXQuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIG5vcm1hbGl6ZVZhbHVlKGluaXQuaGVhZGVyc1tuYW1lXSkpXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsKSB7XG4gICAgICByZXF1ZXN0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuXG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIERPTkUgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG4gICAgICAgICAgcmVxdWVzdC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5zZW5kKHR5cGVvZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9keUluaXQpXG4gIH0pXG59XG5cbmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxuXG5pZiAoIWdsb2JhbC5mZXRjaCkge1xuICBnbG9iYWwuZmV0Y2ggPSBmZXRjaFxuICBnbG9iYWwuSGVhZGVycyA9IEhlYWRlcnNcbiAgZ2xvYmFsLlJlcXVlc3QgPSBSZXF1ZXN0XG4gIGdsb2JhbC5SZXNwb25zZSA9IFJlc3BvbnNlXG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xuXG52YXIgSVNfQ09OQ0FUX1NQUkVBREFCTEUgPSB3ZWxsS25vd25TeW1ib2woJ2lzQ29uY2F0U3ByZWFkYWJsZScpO1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFGRkZGRkZGRkZGRkZGO1xudmFyIE1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCA9ICdNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQnO1xuXG4vLyBXZSBjYW4ndCB1c2UgdGhpcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbi8vIGRlb3B0aW1pemF0aW9uIGFuZCBzZXJpb3VzIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc5XG52YXIgSVNfQ09OQ0FUX1NQUkVBREFCTEVfU1VQUE9SVCA9IFY4X1ZFUlNJT04gPj0gNTEgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFycmF5ID0gW107XG4gIGFycmF5W0lTX0NPTkNBVF9TUFJFQURBQkxFXSA9IGZhbHNlO1xuICByZXR1cm4gYXJyYXkuY29uY2F0KClbMF0gIT09IGFycmF5O1xufSk7XG5cbnZhciBTUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdjb25jYXQnKTtcblxudmFyIGlzQ29uY2F0U3ByZWFkYWJsZSA9IGZ1bmN0aW9uIChPKSB7XG4gIGlmICghaXNPYmplY3QoTykpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNwcmVhZGFibGUgPSBPW0lTX0NPTkNBVF9TUFJFQURBQkxFXTtcbiAgcmV0dXJuIHNwcmVhZGFibGUgIT09IHVuZGVmaW5lZCA/ICEhc3ByZWFkYWJsZSA6IGlzQXJyYXkoTyk7XG59O1xuXG52YXIgRk9SQ0VEID0gIUlTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQgfHwgIVNQRUNJRVNfU1VQUE9SVDtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5jb25jYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmNvbmNhdFxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQGlzQ29uY2F0U3ByZWFkYWJsZSBhbmQgQEBzcGVjaWVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBjb25jYXQ6IGZ1bmN0aW9uIGNvbmNhdChhcmcpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgMCk7XG4gICAgdmFyIG4gPSAwO1xuICAgIHZhciBpLCBrLCBsZW5ndGgsIGxlbiwgRTtcbiAgICBmb3IgKGkgPSAtMSwgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBFID0gaSA9PT0gLTEgPyBPIDogYXJndW1lbnRzW2ldO1xuICAgICAgaWYgKGlzQ29uY2F0U3ByZWFkYWJsZShFKSkge1xuICAgICAgICBsZW4gPSB0b0xlbmd0aChFLmxlbmd0aCk7XG4gICAgICAgIGlmIChuICsgbGVuID4gTUFYX1NBRkVfSU5URUdFUikgdGhyb3cgVHlwZUVycm9yKE1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCk7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBsZW47IGsrKywgbisrKSBpZiAoayBpbiBFKSBjcmVhdGVQcm9wZXJ0eShBLCBuLCBFW2tdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuID49IE1BWF9TQUZFX0lOVEVHRVIpIHRocm93IFR5cGVFcnJvcihNQVhJTVVNX0FMTE9XRURfSU5ERVhfRVhDRUVERUQpO1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShBLCBuKyssIEUpO1xuICAgICAgfVxuICAgIH1cbiAgICBBLmxlbmd0aCA9IG47XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuIiwiaW1wb3J0IHsgUmVtb3RlU3RhdHVzVW5pb24gfSBmcm9tIFwiLi9wcmV2aWV3LXN0YXR1c1wiXG5jb25zdCB0aW1lb3V0U2Vjb25kczogbnVtYmVyID0gNDVcbmNvbnN0IHRpbWVvdXRNaWxsaXNlY29uZHM6IG51bWJlciA9IDEwMDAgKiB0aW1lb3V0U2Vjb25kc1xuXG4vKipcbiAqIEFmdGVyIDQ1IHNlY29uZHMsIGRpc3BsYXkgYSB3YXJuaW5nLCB1bmxlc3MgY2FuY2VsbGVkIGJ5IGNsZWFyaW5nIHRoaXMgdGltZW91dCBvbmNlIHRoZSBVSSBpcyB1cGRhdGVkIGFuZCB0aGUgaWZyYW1lIGlzIGxvYWRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRpbWVvdXRXYXJuaW5nOiBudW1iZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0dXBkYXRlTG9hZGVyV2FybmluZyhcblx0XHRgUHJldmlldyBpcyB0YWtpbmcgYSB2ZXJ5IGxvbmcgdGltZSB0byBsb2FkIChtb3JlIHRoYW4gJHt0aW1lb3V0U2Vjb25kc30gc2Vjb25kcykuPGJyIC8+VHJ5IHByZXNzaW5nIFwicHJldmlld1wiIGFnYWluIGZyb20gdGhlIFdvcmRQcmVzcyBlZGl0IHNjcmVlbi48YnIgLz5JZiB5b3Ugc2VlIHRoaXMgYWdhaW4sIHlvdXIgcHJldmlldyBidWlsZHMgYXJlIGVpdGhlciBzbG93IG9yIHRoZXJlJ3Mgc29tZXRoaW5nIHdyb25nLmAsXG5cdClcbn0sIHRpbWVvdXRNaWxsaXNlY29uZHMpXG5cbmV4cG9ydCB0eXBlIEN1c3RvbUVycm9yID0ge1xuXHRtZXNzYWdlOiBzdHJpbmdcblx0cmVtb3RlU3RhdHVzPzogUmVtb3RlU3RhdHVzVW5pb25cbn1cblxudHlwZSBTaG93YWJsZUVycm9yID0gQ3VzdG9tRXJyb3IgfCBFcnJvciB8IHN0cmluZ1xuXG5leHBvcnQgZnVuY3Rpb24gc2hvd0Vycm9yKGVycm9yOiBTaG93YWJsZUVycm9yKTogdm9pZCB7XG5cdGlmICh0eXBlb2YgZXJyb3IgPT09IGBzdHJpbmdgKSB7XG5cdFx0ZXJyb3IgPSB7XG5cdFx0XHRtZXNzYWdlOiBlcnJvcixcblx0XHR9XG5cdH1cblxuXHRjb25zdCBpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG5cdFx0XCJwcmV2aWV3XCIsXG5cdCkgYXMgSFRNTElGcmFtZUVsZW1lbnRcblxuXHRpZnJhbWUuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiXG5cblx0Y29uc3QgbG9hZGVyOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibG9hZGVyXCIpXG5cblx0bG9hZGVyLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIlxuXG5cdGNvbnN0IGVycm9yRWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcblx0XHRcImVycm9yLW1lc3NhZ2UtZWxlbWVudFwiLFxuXHQpXG5cblx0ZXJyb3JFbGVtZW50LnRleHRDb250ZW50ID0gZXJyb3IubWVzc2FnZVxuXG5cdGNvbnN0IGNvbnRlbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihcblx0XHRcIi5jb250ZW50LmVycm9yXCIsXG5cdCkgYXMgSFRNTEVsZW1lbnRcblxuXHRjb250ZW50LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCJcblxuXHRpZiAoIShgcmVtb3RlU3RhdHVzYCBpbiBlcnJvcikpIHtcblx0XHRyZXR1cm5cblx0fVxuXG5cdHN3aXRjaCAoZXJyb3IucmVtb3RlU3RhdHVzKSB7XG5cdFx0Y2FzZSBgTk9fUEFHRV9DUkVBVEVEX0ZPUl9QUkVWSUVXRURfTk9ERWA6XG5cdFx0XHR1cGRhdGVUcm91Ymxlc2hvb3RpbmdNZXNzYWdlKGBcblx0XHRcdEdhdHNieSB3YXNuJ3QgYWJsZSB0byBmaW5kIGEgcGFnZSBmb3IgdGhlIHBvc3QgeW91J3JlIHRyeWluZyB0byBwcmV2aWV3LiBUaGlzIGNhbiBtZWFuIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG5cdFx0XHQ8L3A+XG5cdFx0XHQ8b2w+XG5cdFx0XHRcdCA8bGk+QSBwYWdlIGlzIG5vdCBiZWluZyBidWlsdCBmb3IgdGhlIHBvc3QgYmVpbmcgcHJldmlld2VkLjwvbGk+XG5cdFx0XHRcdCA8bGk+VGhlIGlkIG9mIHRoaXMgcG9zdCBpcyBub3QgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIHBhZ2VDb250ZXh0IG9mIGl0J3MgR2F0c2J5IHBhZ2UuPC9saT5cblx0XHRcdFx0IDxsaT5BbiBlcnJvciB3YXMgdGhyb3duIGluIEdhdHNieSBkdXJpbmcgUHJldmlldyBzb3VyY2luZyAoY2hlY2sgeW91ciBsb2dzKS48L2xpPlxuXHRcdFx0PC9vbD5cblx0XHRcdDxiciAvPiBcblx0XHRcdDxwPlxuXHRcdFx0XHQ8Yj5IaW50OjwvYj4gaWYgeW91IHdhbnQgdG8gYWNjb3VudCBmb3IgYW55IHBvc3NpYmxlIHBvc3QgdHlwZSAoZXZlbiB0aG9zZSB0aGF0IGhhdmVuJ3QgeWV0IGJlZW4gcmVnaXN0ZXJlZCkgeW91IGNhbiB1c2UgdGhlIFdwQ29udGVudE5vZGUgaW50ZXJmYWNlIGFzIGEgZmFsbGJhY2sgdGVtcGxhdGUgaW4gZ2F0c2J5LW5vZGUuanMgd2hlbiB5b3UncmUgY3JlYXRpbmcgcGFnZXMgYW5kIHlvdSdsbCBuZXZlciBzZWUgdGhpcyBtZXNzYWdlIHdoZW4gcmVnaXN0ZXJpbmcgbmV3IHBvc3QgdHlwZXMuXHRcdFx0XG5cdFx0YClcblx0XHRcdGJyZWFrXG5cblx0XHRjYXNlIGBHQVRTQllfUFJFVklFV19QUk9DRVNTX0VSUk9SYDpcblx0XHRcdHVwZGF0ZVRyb3VibGVzaG9vdGluZ01lc3NhZ2UoYFxuXHRcdFx0XHRUaGUgR2F0c2J5IFByZXZpZXcgcHJvY2VzcyBlcnJvcmVkIHdoaWxlIHNvdXJjaW5nIHRoaXMgcHJldmlldy48YnIgLz5QbGVhc2UgY2hlY2sgeW91ciBlcnJvciBsb2dzIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlx0XHRcblx0XHRcdGApXG5cdFx0XHRicmVha1xuXG5cdFx0Y2FzZSBgUkVDRUlWRURfUFJFVklFV19EQVRBX0ZST01fV1JPTkdfVVJMYDpcblx0XHRcdHVwZGF0ZVRyb3VibGVzaG9vdGluZ01lc3NhZ2UoYFxuXHRcdFx0XHRUaGUgR2F0c2J5IGluc3RhbmNlIHRoaXMgV1Agc2l0ZSBpcyBjb25maWd1cmVkIHRvIHNlbmQgUHJldmlld3MgdG8gaXMgY29uZmlndXJlZCB0byByZWNlaXZlIHNvdXJjZSBkYXRhIGZyb20gYSBkaWZmZXJlbnQgV29yZFByZXNzIGluc3RhbmNlLiBQbGVhc2UgY2hlY2sgeW91ciBnYXRzYnktY29uZmlnLmpzIGFuZCBXUEdhdHNieSBzZXR0aW5ncyB0byBlbnN1cmUgdGhlIFdvcmRQcmVzcyBpbnN0YW5jZSBVUkwncyBtYXRjaCB1cC5cdFx0XHRcblx0XHRcdGApXG5cdFx0XHRicmVha1xuXG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrXG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlVHJvdWJsZXNob290aW5nTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcblx0Y29uc3Qgc2hhcmVkTWVzc2FnZSA9IGA8YnIvPjxici8+SWYgeW91J3JlIG5vdCBhIGRldmVsb3BlciwgcGxlYXNlIHNjcmVlbnNob3QgdGhpcyBwYWdlIGFuZCBzZW5kIGl0IHRvIHlvdXIgZGV2ZWxvcGVyLjxiciAvPjxiciAvPjxiPk5vdGU6PC9iPiBPbmNlIHRoaXMgZXJyb3IgaXMgZml4ZWQsIHlvdSdsbCBuZWVkIHRvIHByZXNzIFwicHJldmlld1wiIGFnYWluIHRvIGNsZWFyIG91dCB0aGlzIG1lc3NhZ2UuYFxuXG5cdGNvbnN0IHRyb3VibGVzaG9vdGluZ0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcblx0XHRcInRyb3VibGVzaG9vdGluZy1odG1sLWFyZWFcIixcblx0KVxuXG5cdHRyb3VibGVzaG9vdGluZ0VsZW1lbnQuaW5uZXJIVE1MID0gYFxuXHRcdDxwPiR7bWVzc2FnZX0ke3NoYXJlZE1lc3NhZ2V9PC9wPlx0XHRcdFxuXHRgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVMb2FkZXJXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRjb25zdCBwcmV2aWV3V2FybmluZ1AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInByZXZpZXctbG9hZGVyLXdhcm5pbmdcIilcblxuXHRwcmV2aWV3V2FybmluZ1AuaW5uZXJIVE1MID0gYCR7bWVzc2FnZX08YnIgLz48YnIgLz48YnV0dG9uIGlkPVwiY2FuY2VsLWJ1dHRvblwiPkNhbmNlbCBhbmQgVHJvdWJsZXNob290PC9idXR0b24+YFxuXHRwcmV2aWV3V2FybmluZ1Auc3R5bGUuZGlzcGxheSA9IFwiaW5pdGlhbFwiXG5cblx0Y29uc3QgY2FuY2VsQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjYW5jZWwtYnV0dG9uXCIpXG5cblx0Y2FuY2VsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCBmdW5jdGlvbiAoZSkge1xuXHRcdGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7XG5cdFx0XHRjYW5jZWxQcmV2aWV3TG9hZGVyKClcblx0XHR9XG5cdH0pXG5cblx0Y2FuY2VsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBjYW5jZWxQcmV2aWV3TG9hZGVyKVxufVxuXG5mdW5jdGlvbiBjYW5jZWxQcmV2aWV3TG9hZGVyKCk6IHZvaWQge1xuXHRzaG93RXJyb3IoYFByZXZpZXcgd2FzIGNhbmNlbGxlZC5gKVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5jbHVkZXM7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBhcnJheU1ldGhvZFVzZXNUb0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtdXNlcy10by1sZW5ndGgnKTtcblxudmFyIFVTRVNfVE9fTEVOR1RIID0gYXJyYXlNZXRob2RVc2VzVG9MZW5ndGgoJ2luZGV4T2YnLCB7IEFDQ0VTU09SUzogdHJ1ZSwgMTogMCB9KTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFVU0VTX1RPX0xFTkdUSCB9LCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhlbCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygnaW5jbHVkZXMnKTtcbiIsImltcG9ydCB7IHRpbWVvdXRXYXJuaW5nIH0gZnJvbSBcIi4vZXJyb3Itd2FybmluZ1wiXG5cbmltcG9ydCB0eXBlIHsgSW5pdGlhbFN0YXRlIH0gZnJvbSBcIi4vc3RhcnQtcHJldmlldy1jbGllbnRcIlxuXG5kZWNsYXJlIHZhciBpbml0aWFsU3RhdGU6IEluaXRpYWxTdGF0ZVxuXG5jb25zdCBwcmV2aWV3RnJvbnRlbmRJc09ubGluZVF1ZXJ5OiBzdHJpbmcgPSAvKiBHcmFwaFFMICovIGBcblx0cXVlcnkgUFJFVklFV19GUk9OVEVORF9JU19PTkxJTkUge1xuXHRcdHdwR2F0c2J5IHtcblx0XHRcdGlzUHJldmlld0Zyb250ZW5kT25saW5lXG5cdFx0fVxuXHR9XG5gXG5cbmNvbnN0IHByZXZpZXdTdGF0dXNRdWVyeTogc3RyaW5nID0gLyogR3JhcGhRTCAqLyBgXG5cdHF1ZXJ5IFBSRVZJRVdfU1RBVFVTX1FVRVJZKCRwb3N0SWQ6IEZsb2F0ISkge1xuXHRcdHdwR2F0c2J5IHtcblx0XHRcdGdhdHNieVByZXZpZXdTdGF0dXMobm9kZUlkOiAkcG9zdElkKSB7XG5cdFx0XHRcdHBhZ2VOb2RlIHtcblx0XHRcdFx0XHRwYXRoXG5cdFx0XHRcdH1cblx0XHRcdFx0c3RhdHVzVHlwZVxuXHRcdFx0XHRyZW1vdGVTdGF0dXNcblx0XHRcdFx0c3RhdHVzQ29udGV4dFxuXHRcdFx0fVxuXHRcdH1cblx0fVxuYFxuXG5jb25zdCB3cFByZXZpZXdlZE5vZGVTdGF0dXMgPSBbXG5cdGBOT19OT0RFX0ZPVU5EYCxcblx0YFBSRVZJRVdfUkVBRFlgLFxuXHRgUkVNT1RFX05PREVfTk9UX1lFVF9VUERBVEVEYCxcblx0YE5PX1BSRVZJRVdfUEFUSF9GT1VORGAsXG5cdGBQUkVWSUVXX1BBR0VfVVBEQVRFRF9CVVRfTk9UX1lFVF9ERVBMT1lFRGAsXG5dIGFzIGNvbnN0XG5cbnR5cGUgV3BQcmV2aWV3ZWROb2RlU3RhdHVzVW5pb24gPSB0eXBlb2Ygd3BQcmV2aWV3ZWROb2RlU3RhdHVzW251bWJlcl1cblxuY29uc3QgcmVtb3RlU3RhdHVzZXMgPSBbXG5cdGBOT19QQUdFX0NSRUFURURfRk9SX1BSRVZJRVdFRF9OT0RFYCxcblx0YEdBVFNCWV9QUkVWSUVXX1BST0NFU1NfRVJST1JgLFxuXHRgUkVDRUlWRURfUFJFVklFV19EQVRBX0ZST01fV1JPTkdfVVJMYCxcbl0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgUmVtb3RlU3RhdHVzVW5pb24gPSB0eXBlb2YgcmVtb3RlU3RhdHVzZXNbbnVtYmVyXVxuXG50eXBlIFByZXZpZXdTdGF0dXNSZXNwb25zZUpzb24gPSB7XG5cdGRhdGE6IHtcblx0XHR3cEdhdHNieToge1xuXHRcdFx0Z2F0c2J5UHJldmlld1N0YXR1czoge1xuXHRcdFx0XHRwYWdlTm9kZToge1xuXHRcdFx0XHRcdHBhdGg6IHN0cmluZ1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0YXR1c1R5cGU6IFdwUHJldmlld2VkTm9kZVN0YXR1c1VuaW9uXG5cdFx0XHRcdHJlbW90ZVN0YXR1czogUmVtb3RlU3RhdHVzVW5pb25cblx0XHRcdFx0c3RhdHVzQ29udGV4dDogc3RyaW5nXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhlIHByZXZpZXcgc3RhdHVzIHRoYXQgR2F0c2J5IGhhcyBzdG9yZWQgaW4gcG9zdCBtZXRhIGZvclxuICogdGhlIHBhcmVudCBwb3N0IG9mIHRoaXMgcHJldmlld1xuICogV2hlbiB0aGUgcHJldmlldyBpcyByZWFkeSwgaXQgY2FsbHMgb25QcmV2aWV3UmVhZHlVcGRhdGVVSSgpIHdoaWNoIHVwZGF0ZXMgdGhlIFVJXG4gKlxuICogSWYgYSBzdGF0dXMgYmVzaWRlcyBQUkVWSUVXX1JFQURZIGNvbWVzIGJhY2ssIHdlIHdhaXQgYSBiaXQgYW5kIHRyeSBhZ2FpblxuICpcbiAqIFRoaXMgZnVuY3Rpb24gZG9lc24ndCByZXR1cm4gYW55dGhpbmdcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoUHJldmlld1N0YXR1c0FuZFVwZGF0ZVVJKHtcblx0cmVmZXRjaENvdW50ID0gMCxcblx0cmVmZXRjaERlbGF5ID0gNTAwLFxufSA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IHsgd29yZHByZXNzU2l0ZVVybCwgZ3JhcGhxbEVuZHBvaW50IH0gPSBpbml0aWFsU3RhdGVcblx0Ly8gQXNrIFdQR3JhcGhRTCBmb3IgdGhlIHN0YXR1cyBvZiB0aGlzIHByZXZpZXdcblx0Ly8gR2F0c2J5IHdpbGwgdXBkYXRlIHRoaXMgd2hlbiB0aGUgcHJldmlldyBpcyByZWFkeVxuXHRjb25zdCByZXNwb25zZTogUHJldmlld1N0YXR1c1Jlc3BvbnNlSnNvbiA9IGF3YWl0IChcblx0XHRhd2FpdCBmZXRjaChgJHt3b3JkcHJlc3NTaXRlVXJsfS8/JHtncmFwaHFsRW5kcG9pbnR9YCwge1xuXHRcdFx0bWV0aG9kOiBcIlBPU1RcIixcblx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0cXVlcnk6IHByZXZpZXdTdGF0dXNRdWVyeSxcblx0XHRcdFx0dmFyaWFibGVzOiB7XG5cdFx0XHRcdFx0cG9zdElkOiBpbml0aWFsU3RhdGUucG9zdElkLFxuXHRcdFx0XHR9LFxuXHRcdFx0fSksXG5cdFx0XHRoZWFkZXJzOiB7XG5cdFx0XHRcdFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuXHRcdFx0fSxcblx0XHR9KVxuXHQpLmpzb24oKVxuXG5cdGNvbnN0IHsgc3RhdHVzVHlwZSwgcmVtb3RlU3RhdHVzLCBzdGF0dXNDb250ZXh0IH0gPVxuXHRcdHJlc3BvbnNlPy5kYXRhPy53cEdhdHNieT8uZ2F0c2J5UHJldmlld1N0YXR1cyB8fCB7fVxuXG5cdGNvbnN0IGlzU3BlY2lhbFN0YXR1czogYm9vbGVhbiA9IHJlbW90ZVN0YXR1c2VzLmluY2x1ZGVzKHJlbW90ZVN0YXR1cylcblxuXHRpZiAoaXNTcGVjaWFsU3RhdHVzKSB7XG5cdFx0Y29uc29sZS5sb2coeyByZXNwb25zZSB9KVxuXHRcdC8vIHdlIGNsZWFyIHRoaXMgdGltZW91dCB3aGVuIHRoZSBwcmV2aWV3IGlzIHJlYWR5IHNvIHRoYXQgdGhlXG5cdFx0Ly8gXCJsb25nIHByZXZpZXcgdGltZVwiIHdhcm5pbmcgZG9lc24ndCBhcHBlYXJcblx0XHRjbGVhclRpbWVvdXQodGltZW91dFdhcm5pbmcpXG5cblx0XHR0aHJvdyB7XG5cdFx0XHRyZW1vdGVTdGF0dXMsXG5cdFx0XHRtZXNzYWdlOiBgR2F0c2J5IHJldHVybmVkIHVuc3VjY2Vzc2Z1bCBQcmV2aWV3IHN0YXR1czpcXG4ke3JlbW90ZVN0YXR1c30ke1xuXHRcdFx0XHRzdGF0dXNDb250ZXh0ID8gYFxcblxcbldpdGggYWRkaXRpb25hbCBjb250ZXh0OlxcbiR7c3RhdHVzQ29udGV4dH1gIDogYGBcblx0XHRcdH1gLFxuXHRcdH1cblx0fVxuXG5cdGlmIChzdGF0dXNUeXBlKSB7XG5cdFx0Y29uc29sZS5sb2coc3RhdHVzVHlwZSlcblx0fVxuXG5cdGlmIChyZW1vdGVTdGF0dXMpIHtcblx0XHRjb25zb2xlLmxvZyhyZW1vdGVTdGF0dXMpXG5cdH1cblxuXHRpZiAoc3RhdHVzVHlwZSA9PT0gYFBSRVZJRVdfUkVBRFlgKSB7XG5cdFx0Y2xlYXJUaW1lb3V0KHRpbWVvdXRXYXJuaW5nKVxuXG5cdFx0b25QcmV2aWV3UmVhZHlVcGRhdGVVSShyZXNwb25zZSlcblxuXHRcdC8vIGlmIHRoZSBwcmV2aWV3IGlzIHJlYWR5IHdlIGRvbid0IG5lZWQgdG8gY29udGludWUgc28gd2UgcmV0dXJuIGhlcmVcblx0XHQvLyB0aGlzIGZ1bmN0aW9uIGlzbid0IGV4cGVjdGVkIHRvIHJldHVybiBhbnl0aGluZ1xuXHRcdHJldHVyblxuXHR9XG5cblx0Y29uc3QgcmVmZXRjaERlbGF5TWFwID0ge1xuXHRcdC8vIGFmdGVyIDMwIHJldHJpZXMgb2YgNTAwbXMsIHN0YXJ0IGNoZWNraW5nIGV2ZXJ5IHNlY29uZFxuXHRcdDMwOiAxMDAwLFxuXHRcdC8vIGFmdGVyIDIwIG1vcmUgcmV0cmllcyBvZiAxIHNlY29uZCwgc3RhcnQgY2hlY2tpbmcgZXZlcnkgMiBzZWNvbmRzXG5cdFx0NTA6IDIwMDAsXG5cdFx0Ly8gYWZ0ZXIgMjAgbW9yZSByZXRyaWVzIG9mIDIgc2Vjb25kcywgc3RhcnQgY2hlY2tpbmcgZXZlcnkgNSBzZWNvbmRzXG5cdFx0NzA6IDUwMDAsXG5cdH1cblxuXHRyZWZldGNoQ291bnQrK1xuXHQvLyBvdXIgZGVsYXkgaW5jcmVhc2VzIGlmIHdlIGhhdmUgYSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcmVmZXRjaENvdW50XG5cdHJlZmV0Y2hEZWxheSA9IHJlZmV0Y2hEZWxheU1hcFtyZWZldGNoQ291bnRdIHx8IHJlZmV0Y2hEZWxheVxuXG5cdGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PlxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0cmVzb2x2ZSgpXG5cdFx0fSwgcmVmZXRjaERlbGF5KSxcblx0KVxuXG5cdC8vIHdlIG5lZWQgdG8gYXdhaXQgdGhpcyBzbyBvdXIgdG9wIGxldmVsIHN0YXJ0KCkgZm4gY2FuIHByb3Blcmx5IHRyeS9jYXRjaCBhbmQgZGlzcGxheSB0aGUgZXJyb3Igdmlld1xuXHRhd2FpdCBmZXRjaFByZXZpZXdTdGF0dXNBbmRVcGRhdGVVSSh7XG5cdFx0cmVmZXRjaENvdW50LFxuXHRcdHJlZmV0Y2hEZWxheSxcblx0fSlcbn1cblxuZnVuY3Rpb24gb25QcmV2aWV3UmVhZHlVcGRhdGVVSShyZXNwb25zZTogUHJldmlld1N0YXR1c1Jlc3BvbnNlSnNvbik6IHZvaWQge1xuXHRjb25zdCB7IGdhdHNieVByZXZpZXdTdGF0dXMgfSA9IHJlc3BvbnNlPy5kYXRhPy53cEdhdHNieSB8fCB7fVxuXG5cdGNvbnNvbGUubG9nKHsgcHJldmlld1JlYWR5OiB7IGdhdHNieVByZXZpZXdTdGF0dXMgfSB9KVxuXG5cdGlmIChcblx0XHQhZ2F0c2J5UHJldmlld1N0YXR1cyB8fFxuXHRcdCFnYXRzYnlQcmV2aWV3U3RhdHVzLnN0YXR1c1R5cGUgfHxcblx0XHQhZ2F0c2J5UHJldmlld1N0YXR1cz8ucGFnZU5vZGU/LnBhdGhcblx0KSB7XG5cdFx0dGhyb3cgRXJyb3IoYFJlY2VpdmVkIGFuIGltcHJvcGVyIHJlc3BvbnNlIGZyb20gdGhlIFByZXZpZXcgc2VydmVyLmApXG5cdH1cblxuXHRjb25zdCBwcmV2aWV3SWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuXHRcdFwicHJldmlld1wiLFxuXHQpIGFzIEhUTUxJRnJhbWVFbGVtZW50XG5cblx0Ly8gd2hlbiB0aGUgaWZyYW1lIGxvYWRzIHdlIHdhbnQgb3VyIGlmcmFtZSBsb2FkZWQgZXZlbnQgdG8gZmlyZVxuXHQvLyBzbyB3ZSBjYW4gcmVtb3ZlIHRoZSBsb2FkZXJcblx0cHJldmlld0lmcmFtZS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCBvbklmcmFtZUxvYWRlZEhpZGVMb2FkZXJVSSlcblxuXHRjb25zb2xlLmxvZyhgTG9hZGluZyBHYXRzYnkgUHJldmlldyBpbiBhbiBpZnJhbWUuLi5gKVxuXHQvLyBwb2ludCB0aGUgaWZyYW1lIGF0IHRoZSBmcm9udGVuZCBwcmV2aWV3IHVybCBmb3IgdGhpcyBwcmV2aWV3XG5cdHByZXZpZXdJZnJhbWUuc3JjID1cblx0XHRpbml0aWFsU3RhdGUucHJldmlld0Zyb250ZW5kVXJsICsgZ2F0c2J5UHJldmlld1N0YXR1cy5wYWdlTm9kZS5wYXRoXG5cblx0Y29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoXCJ3cC1nYXRzYnktcHJldmlldy1yZWFkeVwiKVxuXHRkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KVxufVxuXG5mdW5jdGlvbiBvbklmcmFtZUxvYWRlZEhpZGVMb2FkZXJVSSgpOiB2b2lkIHtcblx0Y29uc3QgbG9hZGVyOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibG9hZGVyXCIpXG5cdGNvbnNvbGUubG9nKGBMb2FkZWQgR2F0c2J5IFByZXZpZXchYClcblxuXHRjb25zb2xlLmxvZyhsb2FkZXIpXG5cblx0Ly8gdGhpcyBkZWxheSBwcmV2ZW50cyBhIGZsYXNoIGJldHdlZW5cblx0Ly8gdGhlIGlmcmFtZSBwYWludGluZyBhbmQgdGhlIGxvYWRlciBkaXNzYXBlYXJpbmdcblx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0Ly8gdGhlcmUgaXMgYSBmYWRlb3V0IGNzcyBhbmltYXRpb24gb24gdGhpc1xuXHRcdGxvYWRlci5jbGFzc0xpc3QuYWRkKFwibG9hZGVkXCIpXG5cblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdC8vIHdlIHdhaXQgYSBzZWMgdG8gZGlzcGxheSBub25lIHNvIHRoZSBjc3MgYW5pbWF0aW9uIGZhZGVvdXQgY2FuIGNvbXBsZXRlXG5cdFx0XHRsb2FkZXIuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiXG5cdFx0fSwgMTAwKVxuXHR9LCA1MClcbn1cblxuY29uc3QgcmVxdWVzdFByZXZpZXdGcm9udGVuZElzT25saW5lID0gYXN5bmMgKCk6IFByb21pc2U8Ym9vbGVhbj4gPT5cblx0KFxuXHRcdGF3YWl0IChcblx0XHRcdGF3YWl0IGZldGNoKGAvPyR7aW5pdGlhbFN0YXRlLmdyYXBocWxFbmRwb2ludH1gLCB7XG5cdFx0XHRcdG1ldGhvZDogXCJQT1NUXCIsXG5cdFx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0XHRxdWVyeTogcHJldmlld0Zyb250ZW5kSXNPbmxpbmVRdWVyeSxcblx0XHRcdFx0fSksXG5cdFx0XHRcdGhlYWRlcnM6IHtcblx0XHRcdFx0XHRcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcblx0XHRcdFx0fSxcblx0XHRcdH0pXG5cdFx0KS5qc29uKClcblx0KT8uZGF0YT8ud3BHYXRzYnk/LmlzUHJldmlld0Zyb250ZW5kT25saW5lXG5cbmxldCBmcm9udGVuZE9ubGluZUNoZWNrQ291bnQgPSAwXG5cbi8qKlxuICogSWYgb3VyIGJhY2tlbmQgd2ViaG9vayBwcmV2aWV3IFBPU1QgY2FtZSBiYWNrIHdpdGggYW4gZXJyb3IsIHdlIGNhbid0IGJlIHN1cmUgb3VyIGZyb250ZW5kIGlzIG9ubGluZS5cbiAqIFNvIHRoaXMgZnVuY3Rpb24gY2hlY2tzIGp1c3QgdGhhdCBhbmQgdGhlbiBhZnRlciAxMCBzZWNvbmRzICgrIHJlcXVlc3QgdGltZSkgb2YgaXQgbm90IGJlaW5nIG9ubGluZSBpdCB3aWxsIHNob3cgYW4gZXJyb3JcbiAqIElmIGl0J3Mgb25saW5lIGl0IHdpbGwgc3RhcnQgdGhlIHByZXZpZXcgc3RhdHVzIHdhdGNoZXIgYW5kIHVwZGF0ZSB0aGUgVUlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvdWJsZUNoZWNrSWZQcmV2aWV3RnJvbnRlbmRJc09ubGluZSgpOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgcHJldmlld0Zyb250ZW5kSXNPbmxpbmU6IGJvb2xlYW4gPSBhd2FpdCByZXF1ZXN0UHJldmlld0Zyb250ZW5kSXNPbmxpbmUoKVxuXG5cdGlmIChwcmV2aWV3RnJvbnRlbmRJc09ubGluZSkge1xuXHRcdC8vIGlmIHRoZSByZXNwb25zZSBjYW1lIGJhY2sgb2sgc3RhcnQgbG9hZGluZyB0aGUgZnJvbnRlbmRcblx0XHQvLyAgYmVjYXVzZSB0aGUgZnJvbnRlbmQgYWN0dWFsbHkgaXMgb25saW5lXG5cdFx0YXdhaXQgZmV0Y2hQcmV2aWV3U3RhdHVzQW5kVXBkYXRlVUkoKVxuXHR9IGVsc2UgaWYgKGZyb250ZW5kT25saW5lQ2hlY2tDb3VudCA8IDEwKSB7XG5cdFx0Y29uc29sZS5sb2coYGZyb250ZW5kIG5vdCBvbmxpbmUuLiByZWNoZWNraW5nYClcblxuXHRcdGZyb250ZW5kT25saW5lQ2hlY2tDb3VudCsrXG5cblx0XHRhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSlcblxuXHRcdGF3YWl0IGRvdWJsZUNoZWNrSWZQcmV2aWV3RnJvbnRlbmRJc09ubGluZSgpXG5cdH0gZWxzZSB7XG5cdFx0Ly8gb3RoZXJ3aXNlIHRocm93aW5nIHRoaXMgd2lsbCBkaXNwbGF5IHRoZSBlcnJvciBVSVxuXHRcdHRocm93IEVycm9yKGBUaGUgR2F0c2J5IFByZXZpZXcgZnJvbnRlbmQgaXMgbm90IHJlc3BvbmRpbmcgdG8gcmVxdWVzdHMuYClcblx0fVxufVxuIiwiaW1wb3J0IFwid2hhdHdnLWZldGNoXCJcblxuaW1wb3J0IHsgc2hvd0Vycm9yIH0gZnJvbSBcIi4vZXJyb3Itd2FybmluZ1wiXG5pbXBvcnQge1xuXHRmZXRjaFByZXZpZXdTdGF0dXNBbmRVcGRhdGVVSSxcblx0ZG91YmxlQ2hlY2tJZlByZXZpZXdGcm9udGVuZElzT25saW5lLFxufSBmcm9tIFwiLi9wcmV2aWV3LXN0YXR1c1wiXG5cbmV4cG9ydCB0eXBlIEluaXRpYWxTdGF0ZSA9IHtcblx0cHJldmlld1dlYmhvb2tJc09ubGluZTogYm9vbGVhblxuXHRwcmV2aWV3RnJvbnRlbmRVcmw6IHN0cmluZ1xuXHRwb3N0SWQ6IG51bWJlclxuXHRncmFwaHFsRW5kcG9pbnQ6IHN0cmluZ1xuXHR3ZWJob29rV2FzQ2FsbGVkOiBib29sZWFuXG5cdHdvcmRwcmVzc1NpdGVVcmw6IHN0cmluZ1xufVxuXG5kZWNsYXJlIHZhciBpbml0aWFsU3RhdGU6IEluaXRpYWxTdGF0ZVxuXG4vKipcbiAqIFRoaXMgZmlsZSBpcyBwcmludGVkIG91dCBpbiBwcmV2aWV3LXRlbXBsYXRlLnBocFxuICogaW5pdGlhbFN0YXRlIGdsb2JhbCBjb21lcyBmcm9tIHByZXZpZXctdGVtcGxhdGUucGhwIGFib3ZlIHdoZXJlIHRoaXMgaXMgcHJpbnRlZCB0byB0aGUgcGFnZVxuICovXG5zdGFydCgpLmNhdGNoKChlKSA9PiB7XG5cdGNvbnNvbGUuZXJyb3IoZSlcblx0XG5cdGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcblx0XHQvLyBkb2N1bWVudCBpcyBhbHJlYWR5IHJlYWR5IHRvIGdvIHNvIHNob3cgdGhlIGVycm9yXG5cdFx0c2hvd0Vycm9yKGUpXG5cdH0gZWxzZSB7XG5cdFx0Ly8gb3RoZXJ3aXNlIHdhaXQgZm9yIGl0IHRvIGxvYWQgYmVmb3JlIHNob3dpbmcgdGhlIGVycm9yXG5cdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIiwgKCkgPT4ge1xuXHRcdFx0c2hvd0Vycm9yKGUpXG5cdFx0fSlcblx0fVxufSlcblxuYXN5bmMgZnVuY3Rpb24gc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChpbml0aWFsU3RhdGUucHJldmlld1dlYmhvb2tJc09ubGluZSkge1xuXHRcdC8vIGlmIHdlIHdlYmhvb2sgY2FtZSBiYWNrIGFzIG9ubGluZSwgZmV0Y2ggdGhlIHN0YXR1cyBhbmQgdXBkYXRlIHRoZSB1aVxuXHRcdGF3YWl0IGZldGNoUHJldmlld1N0YXR1c0FuZFVwZGF0ZVVJKClcblx0fSBlbHNlIHtcblx0XHQvLyBvdGhlcndpc2UgY2hlY2sgdG8gc2VlIGlmIGl0IGFjdHVhbGx5IGlzIG9ubGluZVxuXHRcdC8vIHRoZW4gaWYgaXQgaXMsIGZldGNoIHRoZSBzdGF0dXMgYW5kIHVwZGF0ZSB0aGUgVUlcblx0XHRhd2FpdCBkb3VibGVDaGVja0lmUHJldmlld0Zyb250ZW5kSXNPbmxpbmUoKVxuXHR9XG59XG4iXSwibmFtZXMiOlsiZ2xvYmFsIiwiY2xhc3NvZiIsIkluZGV4ZWRPYmplY3QiLCJkb2N1bWVudCIsIkRFU0NSSVBUT1JTIiwiY3JlYXRlRWxlbWVudCIsIklFOF9ET01fREVGSU5FIiwicHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUiLCJkZWZpbmVQcm9wZXJ0eU1vZHVsZSIsInN0b3JlIiwiV2Vha01hcCIsImhhcyIsIk5BVElWRV9XRUFLX01BUCIsInNoYXJlZCIsIm9iamVjdEhhcyIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJtaW4iLCJyZXF1aXJlJCQwIiwiaGlkZGVuS2V5cyIsImludGVybmFsT2JqZWN0S2V5cyIsImdldE93blByb3BlcnR5TmFtZXNNb2R1bGUiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJpc0ZvcmNlZCIsIk5BVElWRV9TWU1CT0wiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidG9TdHJpbmciLCJTeW1ib2wiLCJVU0VfU1lNQk9MX0FTX1VJRCIsIndyYXBwZWRXZWxsS25vd25TeW1ib2xNb2R1bGUiLCJkZWZpbmVQcm9wZXJ0eSIsImFGdW5jdGlvbiIsImNyZWF0ZU1ldGhvZCIsImJpbmQiLCJQUk9UT1RZUEUiLCJuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJuYXRpdmVEZWZpbmVQcm9wZXJ0eSIsIm5hdGl2ZUdldE93blByb3BlcnR5TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzRXh0ZXJuYWwiLCJuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSIsIldlbGxLbm93blN5bWJvbHNTdG9yZSIsIm5hdGl2ZU9iamVjdENyZWF0ZSIsIiQiLCIkZm9yRWFjaCIsImZvckVhY2giLCJjcmVhdGUiLCJJRV9QUk9UTyIsIk9iamVjdFByb3RvdHlwZSIsIkNPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiIsImdldFByb3RvdHlwZU9mIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJyZXR1cm5UaGlzIiwiSXRlcmF0b3JzIiwiSXRlcmF0b3JzQ29yZSIsIkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMiLCJJVEVSQVRPUiIsInNldFByb3RvdHlwZU9mIiwic2V0SW50ZXJuYWxTdGF0ZSIsImdldEludGVybmFsU3RhdGUiLCJ1c2VyQWdlbnQiLCJTUEVDSUVTIiwiVjhfVkVSU0lPTiIsIlVTRVNfVE9fTEVOR1RIIiwibWF4IiwibmF0aXZlR2V0UHJvdG90eXBlT2YiLCJUT19TVFJJTkdfVEFHIiwidGVzdCIsIlRPX1NUUklOR19UQUdfU1VQUE9SVCIsIkFycmF5UHJvdG90eXBlIiwic2V0IiwicHJvY2VzcyIsIklTX05PREUiLCJJU19JT1MiLCJyZXF1aXJlJCQxIiwiUHJvbWlzZSIsInRhc2siLCJOYXRpdmVQcm9taXNlIiwiVHlwZUVycm9yIiwibmV3UHJvbWlzZUNhcGFiaWxpdHkiLCJuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSIsIm5vdGlmeSIsImZsYWdzIiwiRE9NSXRlcmFibGVzIiwiQXJyYXlJdGVyYXRvck1ldGhvZHMiLCJDT0xMRUNUSU9OX05BTUUiLCJDb2xsZWN0aW9uIiwiQ29sbGVjdGlvblByb3RvdHlwZSIsInJ1bnRpbWUiLCJleHBvcnRzIiwiZGVmaW5lIiwib2JqIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJzZWxmIiwidHJ5TG9jc0xpc3QiLCJwcm90b0dlbmVyYXRvciIsInByb3RvdHlwZSIsIkdlbmVyYXRvciIsImdlbmVyYXRvciIsImNvbnRleHQiLCJDb250ZXh0IiwiX2ludm9rZSIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImZuIiwiYXJnIiwidHlwZSIsImNhbGwiLCJlcnIiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwibWV0aG9kIiwiQXN5bmNJdGVyYXRvciIsIlByb21pc2VJbXBsIiwiaW52b2tlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlY29yZCIsInJlc3VsdCIsImhhc093biIsIl9fYXdhaXQiLCJ0aGVuIiwidW53cmFwcGVkIiwiZXJyb3IiLCJlbnF1ZXVlIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJwcmV2aW91c1Byb21pc2UiLCJzdGF0ZSIsIkVycm9yIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwiQ29udGludWVTZW50aW5lbCIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiZG9uZSIsIml0ZXJhdG9yIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwidmFsdWVzIiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsIml0ZXJhdG9yU3ltYm9sIiwiaXNOYU4iLCJsZW5ndGgiLCJpIiwiT3AiLCJoYXNPd25Qcm9wZXJ0eSIsIiRTeW1ib2wiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwidG9TdHJpbmdUYWciLCJnZXRQcm90byIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwiR3AiLCJjb25zdHJ1Y3RvciIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJuYW1lIiwibWFyayIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJpdGVyIiwia2V5cyIsIm9iamVjdCIsInJldmVyc2UiLCJwb3AiLCJza2lwVGVtcFJlc2V0IiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJvb3RFbnRyeSIsInJvb3RSZWNvcmQiLCJydmFsIiwiZXhjZXB0aW9uIiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiZmluYWxseUVudHJ5IiwiY29tcGxldGUiLCJmaW5pc2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwibW9kdWxlIiwicmVnZW5lcmF0b3JSdW50aW1lIiwiYWNjaWRlbnRhbFN0cmljdE1vZGUiLCJGdW5jdGlvbiIsIlNUUklDVF9NRVRIT0QiLCJIQVNfU1BFQ0lFU19TVVBQT1JUIiwiZmxvb3IiLCJSYW5nZUVycm9yIiwiSUVFRTc1NCIsImdldCIsIk5BVElWRV9BUlJBWV9CVUZGRVIiLCJBUlJBWV9CVUZGRVIiLCJBcnJheUJ1ZmZlciIsImFycmF5QnVmZmVyTW9kdWxlIiwiTmF0aXZlQXJyYXlCdWZmZXIiLCJBcnJheUJ1ZmZlck1vZHVsZSIsIkRhdGFWaWV3IiwiRkFJTFNfT05fUFJJTUlUSVZFUyIsIlVOU1VQUE9SVEVEX1kiLCJzdGlja3lIZWxwZXJzIiwiZXhlYyIsImZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljIiwicmVnRXhwRXhlYyIsImlzUmVnRXhwIiwiY2FsbFJlZ0V4cEV4ZWMiLCJmb3JjZWRTdHJpbmdUcmltTWV0aG9kIiwiSW50OEFycmF5IiwiTkFNRSIsIk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MiLCJhVHlwZWRBcnJheUNvbnN0cnVjdG9yIiwiQXJyYXlCdWZmZXJWaWV3Q29yZSIsIlRZUEVEX0FSUkFZU19DT05TVFJVQ1RPUlNfUkVRVUlSRVNfV1JBUFBFUlMiLCJjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IiLCJhVHlwZWRBcnJheSIsImV4cG9ydFR5cGVkQXJyYXlNZXRob2QiLCIkY29weVdpdGhpbiIsIiRmaWxsIiwiJGluZGV4T2YiLCJVaW50OEFycmF5IiwiQXJyYXlJdGVyYXRvcnMiLCJORUdBVElWRV9aRVJPIiwiRk9SQ0VEIiwiJGxhc3RJbmRleE9mIiwiJG1hcCIsIiRzbGljZSIsIklTX1BVUkUiLCIkZmV0Y2giLCJVU0VfTkFUSVZFX1VSTCIsIlVSTFNlYXJjaFBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtc01vZHVsZSIsInBvdyIsInRvQVNDSUkiLCJhc3NpZ24iLCJnbG9iYWxUaGlzIiwic3VwcG9ydCIsInNlYXJjaFBhcmFtcyIsImJsb2IiLCJCbG9iIiwiZSIsImZvcm1EYXRhIiwiYXJyYXlCdWZmZXIiLCJpc0RhdGFWaWV3IiwiaXNQcm90b3R5cGVPZiIsInZpZXdDbGFzc2VzIiwiaXNBcnJheUJ1ZmZlclZpZXciLCJpc1ZpZXciLCJpbmRleE9mIiwibm9ybWFsaXplTmFtZSIsInRvTG93ZXJDYXNlIiwibm9ybWFsaXplVmFsdWUiLCJpdGVyYXRvckZvciIsIml0ZW1zIiwic2hpZnQiLCJIZWFkZXJzIiwiaGVhZGVycyIsIm1hcCIsImFwcGVuZCIsIkFycmF5IiwiaXNBcnJheSIsImhlYWRlciIsImdldE93blByb3BlcnR5TmFtZXMiLCJvbGRWYWx1ZSIsImNhbGxiYWNrIiwidGhpc0FyZyIsImVudHJpZXMiLCJjb25zdW1lZCIsImJvZHkiLCJib2R5VXNlZCIsImZpbGVSZWFkZXJSZWFkeSIsInJlYWRlciIsIm9ubG9hZCIsIm9uZXJyb3IiLCJyZWFkQmxvYkFzQXJyYXlCdWZmZXIiLCJGaWxlUmVhZGVyIiwicHJvbWlzZSIsInJlYWRBc0FycmF5QnVmZmVyIiwicmVhZEJsb2JBc1RleHQiLCJyZWFkQXNUZXh0IiwicmVhZEFycmF5QnVmZmVyQXNUZXh0IiwiYnVmIiwidmlldyIsImNoYXJzIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImJ1ZmZlckNsb25lIiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIkJvZHkiLCJfaW5pdEJvZHkiLCJfYm9keUluaXQiLCJfYm9keVRleHQiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJfYm9keUFycmF5QnVmZmVyIiwicmVqZWN0ZWQiLCJpc0NvbnN1bWVkIiwiYnl0ZU9mZnNldCIsInRleHQiLCJkZWNvZGUiLCJqc29uIiwiSlNPTiIsInBhcnNlIiwibWV0aG9kcyIsIm5vcm1hbGl6ZU1ldGhvZCIsInVwY2FzZWQiLCJ0b1VwcGVyQ2FzZSIsIlJlcXVlc3QiLCJpbnB1dCIsIm9wdGlvbnMiLCJ1cmwiLCJjcmVkZW50aWFscyIsIm1vZGUiLCJzaWduYWwiLCJyZWZlcnJlciIsImNhY2hlIiwicmVQYXJhbVNlYXJjaCIsInJlcGxhY2UiLCJEYXRlIiwiZ2V0VGltZSIsImNsb25lIiwiZm9ybSIsInRyaW0iLCJzcGxpdCIsImJ5dGVzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwicGFyc2VIZWFkZXJzIiwicmF3SGVhZGVycyIsInByZVByb2Nlc3NlZEhlYWRlcnMiLCJzdWJzdHIiLCJsaW5lIiwicGFydHMiLCJSZXNwb25zZSIsImJvZHlJbml0Iiwic3RhdHVzIiwib2siLCJzdGF0dXNUZXh0IiwicmVzcG9uc2UiLCJyZWRpcmVjdFN0YXR1c2VzIiwicmVkaXJlY3QiLCJsb2NhdGlvbiIsIkRPTUV4Y2VwdGlvbiIsIm1lc3NhZ2UiLCJzdGFjayIsImZldGNoIiwiaW5pdCIsImFib3J0WGhyIiwieGhyIiwiYWJvcnQiLCJyZXF1ZXN0IiwiYWJvcnRlZCIsIlhNTEh0dHBSZXF1ZXN0IiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwicmVzcG9uc2VVUkwiLCJyZXNwb25zZVRleHQiLCJzZXRUaW1lb3V0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJocmVmIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2VUeXBlIiwic2V0UmVxdWVzdEhlYWRlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNlbmQiLCJwb2x5ZmlsbCIsInRpbWVvdXRTZWNvbmRzIiwidGltZW91dE1pbGxpc2Vjb25kcyIsInRpbWVvdXRXYXJuaW5nIiwidXBkYXRlTG9hZGVyV2FybmluZyIsInNob3dFcnJvciIsImlmcmFtZSIsImdldEVsZW1lbnRCeUlkIiwic3R5bGUiLCJkaXNwbGF5IiwibG9hZGVyIiwiZXJyb3JFbGVtZW50IiwidGV4dENvbnRlbnQiLCJjb250ZW50IiwicXVlcnlTZWxlY3RvciIsInJlbW90ZVN0YXR1cyIsInVwZGF0ZVRyb3VibGVzaG9vdGluZ01lc3NhZ2UiLCJ0cm91Ymxlc2hvb3RpbmdFbGVtZW50IiwiaW5uZXJIVE1MIiwicHJldmlld1dhcm5pbmdQIiwiY2FuY2VsQnV0dG9uIiwiY2FuY2VsUHJldmlld0xvYWRlciIsIiRpbmNsdWRlcyIsInByZXZpZXdGcm9udGVuZElzT25saW5lUXVlcnkiLCJwcmV2aWV3U3RhdHVzUXVlcnkiLCJyZW1vdGVTdGF0dXNlcyIsImZldGNoUHJldmlld1N0YXR1c0FuZFVwZGF0ZVVJIiwicmVmZXRjaENvdW50IiwicmVmZXRjaERlbGF5IiwiaW5pdGlhbFN0YXRlIiwid29yZHByZXNzU2l0ZVVybCIsImdyYXBocWxFbmRwb2ludCIsInN0cmluZ2lmeSIsInF1ZXJ5IiwidmFyaWFibGVzIiwicG9zdElkIiwiZGF0YSIsIndwR2F0c2J5IiwiZ2F0c2J5UHJldmlld1N0YXR1cyIsInN0YXR1c1R5cGUiLCJzdGF0dXNDb250ZXh0IiwiaXNTcGVjaWFsU3RhdHVzIiwiaW5jbHVkZXMiLCJjb25zb2xlIiwibG9nIiwiY2xlYXJUaW1lb3V0Iiwib25QcmV2aWV3UmVhZHlVcGRhdGVVSSIsInJlZmV0Y2hEZWxheU1hcCIsInByZXZpZXdSZWFkeSIsInBhZ2VOb2RlIiwicGF0aCIsInByZXZpZXdJZnJhbWUiLCJvbklmcmFtZUxvYWRlZEhpZGVMb2FkZXJVSSIsInNyYyIsInByZXZpZXdGcm9udGVuZFVybCIsImV2ZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwicmVxdWVzdFByZXZpZXdGcm9udGVuZElzT25saW5lIiwiaXNQcmV2aWV3RnJvbnRlbmRPbmxpbmUiLCJmcm9udGVuZE9ubGluZUNoZWNrQ291bnQiLCJkb3VibGVDaGVja0lmUHJldmlld0Zyb250ZW5kSXNPbmxpbmUiLCJwcmV2aWV3RnJvbnRlbmRJc09ubGluZSIsInN0YXJ0IiwiY2F0Y2giLCJwcmV2aWV3V2ViaG9va0lzT25saW5lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7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
diff --git a/src/Admin/assets/dist/preview-client.js.map b/src/Admin/assets/dist/preview-client.js.map
deleted file mode 100644
index 6669cad..0000000
--- a/src/Admin/assets/dist/preview-client.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"preview-client.js","sources":["../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/has.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/is-pure.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/to-integer.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/native-symbol.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/object-get-own-property-names-external.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/well-known-symbol-wrapped.js","../node_modules/core-js/internals/define-well-known-symbol.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/a-function.js","../node_modules/core-js/internals/function-bind-context.js","../node_modules/core-js/internals/array-species-create.js","../node_modules/core-js/internals/array-iteration.js","../node_modules/core-js/modules/es.symbol.js","../node_modules/core-js/modules/es.symbol.description.js","../node_modules/core-js/modules/es.symbol.async-iterator.js","../node_modules/core-js/modules/es.symbol.iterator.js","../node_modules/core-js/modules/es.symbol.to-string-tag.js","../node_modules/core-js/internals/array-method-is-strict.js","../node_modules/core-js/internals/array-method-uses-to-length.js","../node_modules/core-js/internals/array-for-each.js","../node_modules/core-js/modules/es.array.for-each.js","../node_modules/core-js/internals/add-to-unscopables.js","../node_modules/core-js/internals/iterators.js","../node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/core-js/internals/iterators-core.js","../node_modules/core-js/internals/create-iterator-constructor.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/define-iterator.js","../node_modules/core-js/modules/es.array.iterator.js","../node_modules/core-js/modules/es.array.reverse.js","../node_modules/core-js/internals/create-property.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/engine-v8-version.js","../node_modules/core-js/internals/array-method-has-species-support.js","../node_modules/core-js/modules/es.array.slice.js","../node_modules/core-js/modules/es.function.name.js","../node_modules/core-js/modules/es.json.to-string-tag.js","../node_modules/core-js/modules/es.math.to-string-tag.js","../node_modules/core-js/modules/es.object.get-prototype-of.js","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/object-to-string.js","../node_modules/core-js/modules/es.object.to-string.js","../node_modules/core-js/internals/native-promise-constructor.js","../node_modules/core-js/internals/redefine-all.js","../node_modules/core-js/internals/set-species.js","../node_modules/core-js/internals/an-instance.js","../node_modules/core-js/internals/is-array-iterator-method.js","../node_modules/core-js/internals/get-iterator-method.js","../node_modules/core-js/internals/iterator-close.js","../node_modules/core-js/internals/iterate.js","../node_modules/core-js/internals/check-correctness-of-iteration.js","../node_modules/core-js/internals/species-constructor.js","../node_modules/core-js/internals/engine-is-ios.js","../node_modules/core-js/internals/engine-is-node.js","../node_modules/core-js/internals/task.js","../node_modules/core-js/internals/microtask.js","../node_modules/core-js/internals/new-promise-capability.js","../node_modules/core-js/internals/promise-resolve.js","../node_modules/core-js/internals/host-report-errors.js","../node_modules/core-js/internals/perform.js","../node_modules/core-js/modules/es.promise.js","../node_modules/core-js/internals/regexp-flags.js","../node_modules/core-js/modules/es.regexp.to-string.js","../node_modules/core-js/internals/string-multibyte.js","../node_modules/core-js/modules/es.string.iterator.js","../node_modules/core-js/internals/dom-iterables.js","../node_modules/core-js/modules/web.dom-collections.for-each.js","../node_modules/core-js/modules/web.dom-collections.iterator.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/core-js/modules/es.array.index-of.js","../node_modules/core-js/modules/es.array.join.js","../node_modules/core-js/modules/es.array.map.js","../node_modules/core-js/internals/array-buffer-native.js","../node_modules/core-js/internals/to-index.js","../node_modules/core-js/internals/ieee754.js","../node_modules/core-js/internals/array-fill.js","../node_modules/core-js/internals/array-buffer.js","../node_modules/core-js/modules/es.array-buffer.constructor.js","../node_modules/core-js/modules/es.array-buffer.slice.js","../node_modules/core-js/modules/es.object.get-own-property-names.js","../node_modules/core-js/internals/regexp-sticky-helpers.js","../node_modules/core-js/internals/regexp-exec.js","../node_modules/core-js/modules/es.regexp.exec.js","../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../node_modules/core-js/internals/advance-string-index.js","../node_modules/core-js/internals/regexp-exec-abstract.js","../node_modules/core-js/modules/es.string.replace.js","../node_modules/core-js/internals/is-regexp.js","../node_modules/core-js/modules/es.string.split.js","../node_modules/core-js/internals/whitespaces.js","../node_modules/core-js/internals/string-trim.js","../node_modules/core-js/internals/string-trim-forced.js","../node_modules/core-js/modules/es.string.trim.js","../node_modules/core-js/internals/array-buffer-view-core.js","../node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","../node_modules/core-js/internals/to-positive-integer.js","../node_modules/core-js/internals/to-offset.js","../node_modules/core-js/internals/typed-array-from.js","../node_modules/core-js/internals/inherit-if-required.js","../node_modules/core-js/internals/typed-array-constructor.js","../node_modules/core-js/modules/es.typed-array.uint8-array.js","../node_modules/core-js/internals/array-copy-within.js","../node_modules/core-js/modules/es.typed-array.copy-within.js","../node_modules/core-js/modules/es.typed-array.every.js","../node_modules/core-js/modules/es.typed-array.fill.js","../node_modules/core-js/modules/es.typed-array.filter.js","../node_modules/core-js/modules/es.typed-array.find.js","../node_modules/core-js/modules/es.typed-array.find-index.js","../node_modules/core-js/modules/es.typed-array.for-each.js","../node_modules/core-js/modules/es.typed-array.includes.js","../node_modules/core-js/modules/es.typed-array.index-of.js","../node_modules/core-js/modules/es.typed-array.iterator.js","../node_modules/core-js/modules/es.typed-array.join.js","../node_modules/core-js/internals/array-last-index-of.js","../node_modules/core-js/modules/es.typed-array.last-index-of.js","../node_modules/core-js/modules/es.typed-array.map.js","../node_modules/core-js/internals/array-reduce.js","../node_modules/core-js/modules/es.typed-array.reduce.js","../node_modules/core-js/modules/es.typed-array.reduce-right.js","../node_modules/core-js/modules/es.typed-array.reverse.js","../node_modules/core-js/modules/es.typed-array.set.js","../node_modules/core-js/modules/es.typed-array.slice.js","../node_modules/core-js/modules/es.typed-array.some.js","../node_modules/core-js/modules/es.typed-array.sort.js","../node_modules/core-js/modules/es.typed-array.subarray.js","../node_modules/core-js/modules/es.typed-array.to-locale-string.js","../node_modules/core-js/modules/es.typed-array.to-string.js","../node_modules/core-js/internals/native-url.js","../node_modules/core-js/internals/object-assign.js","../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../node_modules/core-js/internals/array-from.js","../node_modules/core-js/internals/string-punycode-to-ascii.js","../node_modules/core-js/internals/get-iterator.js","../node_modules/core-js/modules/web.url-search-params.js","../node_modules/core-js/modules/web.url.js","../node_modules/whatwg-fetch/fetch.js","../node_modules/core-js/modules/es.array.concat.js","../src/error-warning.ts","../node_modules/core-js/modules/es.array.includes.js","../src/preview-status.ts","../src/start-preview-client.ts"],"sourcesContent":["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","module.exports = false;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.7.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","module.exports = {};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.github.io/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n if (!IS_IOS && !IS_NODE && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = require(\"regenerator-runtime\");\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","module.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","// IEEE754 conversions based on https://github.com/feross/ieee754\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.github.io/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names-external').f;\n\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n getOwnPropertyNames: nativeGetOwnPropertyNames\n});\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/function-bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\n// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global)\n\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : ''\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n global.fetch = fetch\n global.Headers = Headers\n global.Request = Request\n global.Response = Response\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","import { RemoteStatusUnion } from \"./preview-status\"\nconst timeoutSeconds: number = 45\nconst timeoutMilliseconds: number = 1000 * timeoutSeconds\n\n/**\n * After 45 seconds, display a warning, unless cancelled by clearing this timeout once the UI is updated and the iframe is loaded.\n */\nexport const timeoutWarning: number = setTimeout(() => {\n\tupdateLoaderWarning(\n\t\t`Preview is taking a very long time to load (more than ${timeoutSeconds} seconds). Try pressing \"preview\" again from the WordPress edit screen. If you see this again, your preview builds are either slow or there's something wrong.`,\n\t)\n}, timeoutMilliseconds)\n\nexport type CustomError = {\n\tmessage: string\n\tremoteStatus?: RemoteStatusUnion\n}\n\ntype ShowableError = CustomError | Error | string\n\nexport function showError(error: ShowableError): void {\n\tif (typeof error === `string`) {\n\t\terror = {\n\t\t\tmessage: error,\n\t\t}\n\t}\n\n\tconst iframe: HTMLIFrameElement = document.getElementById(\n\t\t\"preview\",\n\t) as HTMLIFrameElement\n\n\tiframe.style.display = \"none\"\n\n\tconst loader: HTMLElement = document.getElementById(\"loader\")\n\n\tloader.style.display = \"none\"\n\n\tconst errorElement: HTMLElement = document.getElementById(\n\t\t\"error-message-element\",\n\t)\n\n\terrorElement.textContent = error.message\n\n\tconst content: HTMLElement = document.querySelector(\n\t\t\".content.error\",\n\t) as HTMLElement\n\n\tcontent.style.display = \"block\"\n\n\tif (!(`remoteStatus` in error)) {\n\t\treturn\n\t}\n\n\tswitch (error.remoteStatus) {\n\t\tcase `NO_PAGE_CREATED_FOR_PREVIEWED_NODE`:\n\t\t\tupdateTroubleshootingMessage(`\n\t\t\tGatsby wasn't able to find a page for the post you're trying to preview. This can mean one of three things:\n\t\t\t\n\t\t\t\n\t\t\t\t A page is not being built for the post being previewed. \n\t\t\t\t The id of this post is not being included in the pageContext of it's Gatsby page. \n\t\t\t\t An error was thrown in Gatsby during Preview sourcing (check your logs). \n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\tHint: if you want to account for any possible post type (even those that haven't yet been registered) you can use the WpContentNode interface as a fallback template in gatsby-node.js when you're creating pages and you'll never see this message when registering new post types.\t\t\t\n\t\t`)\n\t\t\tbreak\n\n\t\tcase `GATSBY_PREVIEW_PROCESS_ERROR`:\n\t\t\tupdateTroubleshootingMessage(`\n\t\t\t\tThe Gatsby Preview process errored while sourcing this preview. Please check your error logs for additional information.\t\t\n\t\t\t`)\n\t\t\tbreak\n\n\t\tcase `RECEIVED_PREVIEW_DATA_FROM_WRONG_URL`:\n\t\t\tupdateTroubleshootingMessage(`\n\t\t\t\tThe Gatsby instance this WP site is configured to send Previews to is configured to receive source data from a different WordPress instance. Please check your gatsby-config.js and WPGatsby settings to ensure the WordPress instance URL's match up.\t\t\t\n\t\t\t`)\n\t\t\tbreak\n\n\t\tdefault:\n\t\t\tbreak\n\t}\n}\n\nfunction updateTroubleshootingMessage(message: string): void {\n\tconst sharedMessage = ` If you're not a developer, please screenshot this page and send it to your developer.Note: Once this error is fixed, you'll need to press \"preview\" again to clear out this message.`\n\n\tconst troubleshootingElement = document.getElementById(\n\t\t\"troubleshooting-html-area\",\n\t)\n\n\ttroubleshootingElement.innerHTML = `\n\t\t
${message}${sharedMessage}
\t\t\t\n\t`\n}\n\nexport function updateLoaderWarning(message: string): void {\n\tconst previewWarningP = document.getElementById(\"preview-loader-warning\")\n\n\tpreviewWarningP.innerHTML = `${message}Cancel and Troubleshoot `\n\tpreviewWarningP.style.display = \"initial\"\n\n\tconst cancelButton = document.getElementById(\"cancel-button\")\n\n\tcancelButton.addEventListener(\"keypress\", function (e) {\n\t\tif (e.key === \"Enter\") {\n\t\t\tcancelPreviewLoader()\n\t\t}\n\t})\n\n\tcancelButton.addEventListener(\"click\", cancelPreviewLoader)\n}\n\nfunction cancelPreviewLoader(): void {\n\tshowError(`Preview was cancelled.`)\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","import { timeoutWarning } from \"./error-warning\"\n\nimport type { InitialState } from \"./start-preview-client\"\n\ndeclare var initialState: InitialState\n\nconst previewFrontendIsOnlineQuery: string = /* GraphQL */ `\n\tquery PREVIEW_FRONTEND_IS_ONLINE {\n\t\twpGatsby {\n\t\t\tisPreviewFrontendOnline\n\t\t}\n\t}\n`\n\nconst previewStatusQuery: string = /* GraphQL */ `\n\tquery PREVIEW_STATUS_QUERY($postId: Float!) {\n\t\twpGatsby {\n\t\t\tgatsbyPreviewStatus(nodeId: $postId) {\n\t\t\t\tpageNode {\n\t\t\t\t\tpath\n\t\t\t\t}\n\t\t\t\tstatusType\n\t\t\t\tremoteStatus\n\t\t\t\tstatusContext\n\t\t\t}\n\t\t}\n\t}\n`\n\nconst wpPreviewedNodeStatus = [\n\t`NO_NODE_FOUND`,\n\t`PREVIEW_READY`,\n\t`REMOTE_NODE_NOT_YET_UPDATED`,\n\t`NO_PREVIEW_PATH_FOUND`,\n\t`PREVIEW_PAGE_UPDATED_BUT_NOT_YET_DEPLOYED`,\n] as const\n\ntype WpPreviewedNodeStatusUnion = typeof wpPreviewedNodeStatus[number]\n\nconst remoteStatuses = [\n\t`NO_PAGE_CREATED_FOR_PREVIEWED_NODE`,\n\t`GATSBY_PREVIEW_PROCESS_ERROR`,\n\t`RECEIVED_PREVIEW_DATA_FROM_WRONG_URL`,\n] as const\n\nexport type RemoteStatusUnion = typeof remoteStatuses[number]\n\ntype PreviewStatusResponseJson = {\n\tdata: {\n\t\twpGatsby: {\n\t\t\tgatsbyPreviewStatus: {\n\t\t\t\tpageNode: {\n\t\t\t\t\tpath: string\n\t\t\t\t}\n\t\t\t\tstatusType: WpPreviewedNodeStatusUnion\n\t\t\t\tremoteStatus: RemoteStatusUnion\n\t\t\t\tstatusContext: string\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * This function checks the preview status that Gatsby has stored in post meta for\n * the parent post of this preview\n * When the preview is ready, it calls onPreviewReadyUpdateUI() which updates the UI\n *\n * If a status besides PREVIEW_READY comes back, we wait a bit and try again\n *\n * This function doesn't return anything\n */\nexport async function fetchPreviewStatusAndUpdateUI({\n\trefetchCount = 0,\n\trefetchDelay = 500,\n} = {}): Promise {\n\t// Ask WPGraphQL for the status of this preview\n\t// Gatsby will update this when the preview is ready\n\tconst response: PreviewStatusResponseJson = await (\n\t\tawait fetch(`/?${initialState.graphqlEndpoint}`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify({\n\t\t\t\tquery: previewStatusQuery,\n\t\t\t\tvariables: {\n\t\t\t\t\tpostId: initialState.postId,\n\t\t\t\t},\n\t\t\t}),\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t},\n\t\t})\n\t).json()\n\n\tconst { statusType, remoteStatus, statusContext } =\n\t\tresponse?.data?.wpGatsby?.gatsbyPreviewStatus || {}\n\n\tconst isSpecialStatus: boolean = remoteStatuses.includes(remoteStatus)\n\n\tif (isSpecialStatus) {\n\t\tconsole.log({ response })\n\t\t// we clear this timeout when the preview is ready so that the\n\t\t// \"long preview time\" warning doesn't appear\n\t\tclearTimeout(timeoutWarning)\n\n\t\tthrow {\n\t\t\tremoteStatus,\n\t\t\tmessage: `Gatsby returned unsuccessful Preview status:\\n${remoteStatus}${\n\t\t\t\tstatusContext ? `\\n\\nWith additional context:\\n${statusContext}` : ``\n\t\t\t}`,\n\t\t}\n\t}\n\n\tif (statusType) {\n\t\tconsole.log(statusType)\n\t}\n\n\tif (remoteStatus) {\n\t\tconsole.log(remoteStatus)\n\t}\n\n\tif (statusType === `PREVIEW_READY`) {\n\t\tclearTimeout(timeoutWarning)\n\n\t\tonPreviewReadyUpdateUI(response)\n\n\t\t// if the preview is ready we don't need to continue so we return here\n\t\t// this function isn't expected to return anything\n\t\treturn\n\t}\n\n\tconst refetchDelayMap = {\n\t\t// after 30 retries of 500ms, start checking every second\n\t\t30: 1000,\n\t\t// after 20 more retries of 1 second, start checking every 2 seconds\n\t\t50: 2000,\n\t\t// after 20 more retries of 2 seconds, start checking every 5 seconds\n\t\t70: 5000,\n\t}\n\n\trefetchCount++\n\t// our delay increases if we have a value for the current refetchCount\n\trefetchDelay = refetchDelayMap[refetchCount] || refetchDelay\n\n\tawait new Promise((resolve) =>\n\t\tsetTimeout(() => {\n\t\t\tresolve()\n\t\t}, refetchDelay),\n\t)\n\n\t// we need to await this so our top level start() fn can properly try/catch and display the error view\n\tawait fetchPreviewStatusAndUpdateUI({\n\t\trefetchCount,\n\t\trefetchDelay,\n\t})\n}\n\nfunction onPreviewReadyUpdateUI(response: PreviewStatusResponseJson): void {\n\tconst { gatsbyPreviewStatus } = response?.data?.wpGatsby || {}\n\n\tconsole.log({ previewReady: { gatsbyPreviewStatus } })\n\n\tif (\n\t\t!gatsbyPreviewStatus ||\n\t\t!gatsbyPreviewStatus.statusType ||\n\t\t!gatsbyPreviewStatus?.pageNode?.path\n\t) {\n\t\tthrow Error(`Received an improper response from the Preview server.`)\n\t}\n\n\tconst previewIframe: HTMLIFrameElement = document.getElementById(\n\t\t\"preview\",\n\t) as HTMLIFrameElement\n\n\t// when the iframe loads we want our iframe loaded event to fire\n\t// so we can remove the loader\n\tpreviewIframe.addEventListener(\"load\", onIframeLoadedHideLoaderUI)\n\n\tconsole.log(`Loading Gatsby Preview in an iframe...`)\n\t// point the iframe at the frontend preview url for this preview\n\tpreviewIframe.src =\n\t\tinitialState.previewFrontendUrl + gatsbyPreviewStatus.pageNode.path\n\n\tconst event = new Event(\"wp-gatsby-preview-ready\")\n\tdocument.dispatchEvent(event)\n}\n\nfunction onIframeLoadedHideLoaderUI(): void {\n\tconst loader: HTMLElement = document.getElementById(\"loader\")\n\tconsole.log(`Loaded Gatsby Preview!`)\n\n\tconsole.log(loader)\n\n\t// this delay prevents a flash between\n\t// the iframe painting and the loader dissapearing\n\tsetTimeout(() => {\n\t\t// there is a fadeout css animation on this\n\t\tloader.classList.add(\"loaded\")\n\n\t\tsetTimeout(() => {\n\t\t\t// we wait a sec to display none so the css animation fadeout can complete\n\t\t\tloader.style.display = \"none\"\n\t\t}, 100)\n\t}, 50)\n}\n\nconst requestPreviewFrontendIsOnline = async (): Promise =>\n\t(\n\t\tawait (\n\t\t\tawait fetch(`/?${initialState.graphqlEndpoint}`, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tquery: previewFrontendIsOnlineQuery,\n\t\t\t\t}),\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t},\n\t\t\t})\n\t\t).json()\n\t)?.data?.wpGatsby?.isPreviewFrontendOnline\n\nlet frontendOnlineCheckCount = 0\n\n/**\n * If our backend webhook preview POST came back with an error, we can't be sure our frontend is online.\n * So this function checks just that and then after 10 seconds (+ request time) of it not being online it will show an error\n * If it's online it will start the preview status watcher and update the UI\n */\nexport async function doubleCheckIfPreviewFrontendIsOnline(): Promise {\n\tconst previewFrontendIsOnline: boolean = await requestPreviewFrontendIsOnline()\n\n\tif (previewFrontendIsOnline) {\n\t\t// if the response came back ok start loading the frontend\n\t\t// because the frontend actually is online\n\t\tawait fetchPreviewStatusAndUpdateUI()\n\t} else if (frontendOnlineCheckCount < 10) {\n\t\tconsole.log(`frontend not online.. rechecking`)\n\n\t\tfrontendOnlineCheckCount++\n\n\t\tawait new Promise((resolve) => setTimeout(resolve, 1000))\n\n\t\tawait doubleCheckIfPreviewFrontendIsOnline()\n\t} else {\n\t\t// otherwise throwing this will display the error UI\n\t\tthrow Error(`The Gatsby Preview frontend is not responding to requests.`)\n\t}\n}\n","import \"whatwg-fetch\"\n\nimport { showError } from \"./error-warning\"\nimport {\n\tfetchPreviewStatusAndUpdateUI,\n\tdoubleCheckIfPreviewFrontendIsOnline,\n} from \"./preview-status\"\n\nexport type InitialState = {\n\tpreviewWebhookIsOnline: boolean\n\tpreviewFrontendUrl: string\n\tpostId: number\n\tgraphqlEndpoint: string\n\twebhookWasCalled: boolean\n}\n\ndeclare var initialState: InitialState\n\n/**\n * This file is printed out in preview-template.php\n * initialState global comes from preview-template.php above where this is printed to the page\n */\nstart().catch((e) => {\n\tconsole.error(e)\n\tif (document.readyState === \"complete\") {\n\t\t// document is already ready to go so show the error\n\t\tshowError(e)\n\t} else {\n\t\t// otherwise wait for it to load before showing the error\n\t\tdocument.addEventListener(\"DOMContentLoaded\", () => {\n\t\t\tshowError(e)\n\t\t})\n\t}\n})\n\nasync function start(): Promise {\n\tif (initialState.previewWebhookIsOnline) {\n\t\t// if we webhook came back as online, fetch the status and update the ui\n\t\tawait fetchPreviewStatusAndUpdateUI()\n\t} else {\n\t\t// otherwise check to see if it actually is online\n\t\t// then if it is, fetch the status and update the UI\n\t\tawait doubleCheckIfPreviewFrontendIsOnline()\n\t}\n}\n"],"names":["global","classof","IndexedObject","document","DESCRIPTORS","createElement","IE8_DOM_DEFINE","propertyIsEnumerableModule","definePropertyModule","store","WeakMap","has","NATIVE_WEAK_MAP","shared","objectHas","InternalStateModule","min","require$$0","hiddenKeys","internalObjectKeys","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertyDescriptorModule","getOwnPropertyDescriptor","isForced","NATIVE_SYMBOL","defineProperties","toString","Symbol","USE_SYMBOL_AS_UID","wrappedWellKnownSymbolModule","defineProperty","aFunction","createMethod","bind","PROTOTYPE","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","getOwnPropertyNamesExternal","nativePropertyIsEnumerable","WellKnownSymbolsStore","nativeObjectCreate","$","$forEach","forEach","create","IE_PROTO","ObjectPrototype","CORRECT_PROTOTYPE_GETTER","getPrototypeOf","IteratorPrototype","returnThis","Iterators","IteratorsCore","BUGGY_SAFARI_ITERATORS","ITERATOR","setPrototypeOf","setInternalState","getInternalState","userAgent","SPECIES","V8_VERSION","USES_TO_LENGTH","max","nativeGetPrototypeOf","TO_STRING_TAG","test","TO_STRING_TAG_SUPPORT","ArrayPrototype","set","process","IS_NODE","IS_IOS","require$$1","Promise","task","NativePromise","TypeError","newPromiseCapability","newPromiseCapabilityModule","notify","flags","DOMIterables","ArrayIteratorMethods","COLLECTION_NAME","Collection","CollectionPrototype","runtime","exports","define","obj","key","value","Object","enumerable","configurable","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","prototype","Generator","generator","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","type","call","err","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","method","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","hasOwn","__await","then","unwrapped","error","enqueue","callInvokeWithMethodAndArg","previousPromise","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","done","iterator","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","values","iterable","iteratorMethod","iteratorSymbol","isNaN","length","i","Op","hasOwnProperty","$Symbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","getProto","NativeIteratorPrototype","Gp","constructor","displayName","isGeneratorFunction","genFun","ctor","name","mark","__proto__","awrap","async","iter","keys","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","STRICT_METHOD","HAS_SPECIES_SUPPORT","floor","RangeError","IEEE754","get","NATIVE_ARRAY_BUFFER","ARRAY_BUFFER","ArrayBuffer","arrayBufferModule","NativeArrayBuffer","ArrayBufferModule","DataView","FAILS_ON_PRIMITIVES","UNSUPPORTED_Y","stickyHelpers","exec","fixRegExpWellKnownSymbolLogic","regExpExec","isRegExp","callRegExpExec","forcedStringTrimMethod","Int8Array","NAME","NATIVE_ARRAY_BUFFER_VIEWS","aTypedArrayConstructor","ArrayBufferViewCore","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","createTypedArrayConstructor","aTypedArray","exportTypedArrayMethod","$copyWithin","$fill","$indexOf","Uint8Array","ArrayIterators","NEGATIVE_ZERO","FORCED","$lastIndexOf","$map","$slice","IS_PURE","$fetch","USE_NATIVE_URL","URLSearchParams","URLSearchParamsModule","pow","toASCII","assign","globalThis","support","searchParams","blob","Blob","e","formData","arrayBuffer","isDataView","isPrototypeOf","viewClasses","isArrayBufferView","isView","indexOf","normalizeName","toLowerCase","normalizeValue","iteratorFor","items","shift","Headers","headers","map","append","Array","isArray","header","getOwnPropertyNames","oldValue","callback","thisArg","entries","consumed","body","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","buf","view","chars","String","fromCharCode","join","bufferClone","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","_bodyBlob","FormData","_bodyFormData","_bodyArrayBuffer","rejected","isConsumed","byteOffset","text","decode","json","JSON","parse","methods","normalizeMethod","upcased","toUpperCase","Request","input","options","url","credentials","mode","signal","referrer","cache","reParamSearch","replace","Date","getTime","clone","form","trim","split","bytes","decodeURIComponent","parseHeaders","rawHeaders","preProcessedHeaders","substr","line","parts","Response","bodyInit","status","ok","statusText","response","redirectStatuses","redirect","location","DOMException","message","stack","fetch","init","abortXhr","xhr","abort","request","aborted","XMLHttpRequest","getAllResponseHeaders","responseURL","responseText","setTimeout","ontimeout","onabort","open","href","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill","timeoutSeconds","timeoutMilliseconds","timeoutWarning","updateLoaderWarning","showError","iframe","getElementById","style","display","loader","errorElement","textContent","content","querySelector","remoteStatus","updateTroubleshootingMessage","troubleshootingElement","innerHTML","previewWarningP","cancelButton","cancelPreviewLoader","$includes","previewFrontendIsOnlineQuery","previewStatusQuery","remoteStatuses","fetchPreviewStatusAndUpdateUI","refetchCount","refetchDelay","initialState","graphqlEndpoint","stringify","query","variables","postId","data","wpGatsby","gatsbyPreviewStatus","statusType","statusContext","isSpecialStatus","includes","console","log","clearTimeout","onPreviewReadyUpdateUI","refetchDelayMap","previewReady","pageNode","path","previewIframe","onIframeLoadedHideLoaderUI","src","previewFrontendUrl","event","Event","dispatchEvent","classList","add","requestPreviewFrontendIsOnline","isPreviewFrontendOnline","frontendOnlineCheckCount","doubleCheckIfPreviewFrontendIsOnline","previewFrontendIsOnline","start","catch","previewWebhookIsOnline"],"mappings":"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"}
\ No newline at end of file
diff --git a/src/Admin/assets/dist/script.js b/src/Admin/assets/dist/script.js
deleted file mode 100644
index 4603aae..0000000
--- a/src/Admin/assets/dist/script.js
+++ /dev/null
@@ -1,84 +0,0 @@
-(function () {
- 'use strict';
-
- function _arrayWithHoles(a){if(Array.isArray(a))return a}var arrayWithHoles=_arrayWithHoles;
-
- function _iterableToArrayLimit(a,b){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a)){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!(b&&c.length===b));d=!0);}catch(a){e=!0,f=a;}finally{try{d||null==h["return"]||h["return"]();}finally{if(e)throw f}}return c}}var iterableToArrayLimit=_iterableToArrayLimit;
-
- function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c Try pressing \"preview\" again from the WordPress edit screen. If you see this again, your preview builds are either slow or there's something wrong."));},timeoutMilliseconds);function showError(a){var b=document.getElementById("preview");b.style.display="none";var c=document.getElementById("loader");c.style.display="none";var d=document.getElementById("error-message-element");d.textContent="".concat(a.message).concat(a.context?":\n".concat(a.context):"");var e=document.querySelector(".content.error");e.style.display="block","NO_PAGE_CREATED_FOR_PREVIEWED_NODE"===a.message?document.getElementById("troubleshooting-html-area").innerHTML="\n\t\t\tIf you're not a developer, please screenshot this page and send it to your developer.Note: Once this error is fixed, you'll need to press \"preview\" again to clear out this message. Gatsby wasn't able to find a page for the post you're trying to preview. This can mean one of three things:\n\t\t\t
\n\t\t\t\n\t\t\t\t A page is not being built for the post being previewed. \n\t\t\t\t The id of this post is not being included in the pageContext of it's Gatsby page. \n\t\t\t\t An error was thrown in Gatsby during Preview sourcing (check your logs). \n\t\t\t \n\t\t\t \n\t\t\t\n\t\t\t\tHint: if you want to account for any possible post type (even those that haven't yet been registered) you can use the WpContentNode interface as a fallback template in gatsby-node.js when you're creating pages and you'll never see this message when registering new post types.\n\t\t\t
\t\t\t\n\t\t":"GATSBY_PREVIEW_PROCESS_ERROR"===a.message&&(document.getElementById("troubleshooting-html-area").innerHTML="\n\t\t\tIf you're not a developer, please screenshot this page and send it to your developer.Note: Once this error is fixed, you'll need to press \"preview\" again to clear out this message. The Gatsby Preview process errored while sourcing this preview. Please check your error logs for additional information.\n\t\t\t
\t\t\t\n\t\t");}function updateLoaderWarning(a){var b=document.getElementById("preview-loader-warning");b.innerHTML="".concat(a,"Cancel and Troubleshoot "),b.style.display="initial";var c=document.getElementById("cancel-button");c.addEventListener("keypress",function(a){"Enter"===a.key&&cancelPreviewLoader();}),c.addEventListener("click",cancelPreviewLoader);}function cancelPreviewLoader(){showError("Preview was cancelled.");}
-
- var previewStatusQuery="\n\tquery PREVIEW_STATUS_QUERY($postId: Float!) {\n\t\twpGatsby {\n\t\t\tgatsbyPreviewStatus(nodeId: $postId) {\n\t\t\t\tpageNode {\n\t\t\t\t\tpath\n\t\t\t\t}\n\t\t\t\tstatusType\n\t\t\t\tremoteStatusType\n\t\t\t\tstatusContext\n\t\t\t}\n\t\t}\n\t}\n";
- function fetchPreviewStatusAndUpdateUI(){return _fetchPreviewStatusAndUpdateUI.apply(this,arguments)}function _fetchPreviewStatusAndUpdateUI(){return _fetchPreviewStatusAndUpdateUI=asyncToGenerator(regenerator.mark(function a(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o=arguments;return regenerator.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return d=0 result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = require(\"regenerator-runtime\");\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import \"./styles.scss\"\n/**\n * This file is printed out in preview-template.php\n * initialState global comes from preview-template.php above where this is printed to the page\n */\n;(() => {\n\tstart().catch((e) => {\n\t\tif (document.readyState === \"complete\" || document.readyState === \"loaded\") {\n\t\t\t// document is already ready to go so show the error\n\t\t\tshowError(e)\n\t\t} else {\n\t\t\t// otherwise wait for it to load before showing the error\n\t\t\tdocument.addEventListener(\"DOMContentLoaded\", () => {\n\t\t\t\tshowError(e)\n\t\t\t})\n\t\t}\n\t})\n})()\n\nconst timeoutSeconds = 45\nconst timeoutMilliseconds = 1000 * timeoutSeconds\n\n/**\n * After 45 seconds, display a warning, unless cancelled by clearing this timeout once the UI is updated and the iframe is loaded.\n */\nconst timeoutWarning = setTimeout(() => {\n\tupdateLoaderWarning(\n\t\t`Preview is taking a very long time to load (more than ${timeoutSeconds} seconds). Try pressing \"preview\" again from the WordPress edit screen. If you see this again, your preview builds are either slow or there's something wrong.`,\n\t)\n}, timeoutMilliseconds)\n\nasync function start() {\n\t// optimistically try to load the UI\n\tfetchPreviewStatusAndUpdateUI()\n\n\t// Simultaneously check if it's been online since the last backend check\n\tconst response = await fetch(`https://google.com`, { mode: \"no-cors\" })\n\t// const response = await fetch(initialState.previewFrontendUrl)\n\n\tif (response.ok) {\n\t\t// if this was successfully called above, it wont do anything here\n\t\tfetchPreviewStatusAndUpdateUI()\n\t} else {\n\t\t// if it really is down, throw the error one level higher\n\t\tthrow Error(response.statusText)\n\t}\n}\n\nlet noIndicationOfSourcingWarningTimeout\n\nfunction showError(error) {\n\tconst iframe = document.getElementById(\"preview\")\n\tiframe.style.display = \"none\"\n\n\tconst loader = document.getElementById(\"loader\")\n\tloader.style.display = \"none\"\n\n\tconst errorElement = document.getElementById(\"error-message-element\")\n\terrorElement.textContent = error\n\n\tconst content = document.querySelector(\".content.error\")\n\tcontent.style.display = \"block\"\n}\n\nfunction updateLoaderWarning(message) {\n\tconst previewWarningP = document.getElementById(\"preview-loader-warning\")\n\n\tpreviewWarningP.innerHTML = `${message}Cancel and Troubleshoot `\n\tpreviewWarningP.style.display = \"initial\"\n}\n\nexport function cancelPreviewLoader() {\n\tshowError(`Preview was cancelled.`)\n}\n\nfunction onIframeLoaded() {\n\tisUIDisplayed = true\n\tconst loader = document.getElementById(\"loader\")\n\n\t// this delay prevents a flash between\n\t// the iframe painting and the loader dissapearing\n\tsetTimeout(() => {\n\t\t// there is a fadeout css animation on this\n\t\tloader.classList.add(\"loaded\")\n\n\t\tsetTimeout(() => {\n\t\t\t// we wait a sec to display none so the css animation fadeout can complete\n\t\t\tloader.style.display = \"none\"\n\t\t}, 100)\n\t}, 50)\n}\n\nlet isUIDisplayed = false\n\nfunction fetchPreviewStatusAndUpdateUI() {\n\tif (isUIDisplayed) {\n\t\treturn\n\t}\n\n\tconst queryRequestBody = {\n\t\tquery: /* GraphQL */ `\n\t\t\tquery PREVIEW_STATUS_QUERY($postId: Float!) {\n\t\t\t\twpGatsby {\n\t\t\t\t\tgatsbyPreviewStatus(nodeId: $postId) {\n\t\t\t\t\t\tpageNode {\n\t\t\t\t\t\t\tpath\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstatusType\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t`,\n\t\tvariables: {\n\t\t\tpostId: initialState.postId,\n\t\t},\n\t}\n\n\tconsole.log({ queryRequestBody })\n\n\tfetch(`/?${initialState.graphqlEndpoint}`, {\n\t\tmethod: \"POST\",\n\t\tbody: JSON.stringify(queryRequestBody),\n\t\theaders: {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t},\n\t})\n\t\t.then((response) => response.json())\n\t\t.then((response) => {\n\t\t\tif (\n\t\t\t\tresponse.data.wpGatsby.gatsbyPreviewStatus.statusType ===\n\t\t\t\t`PREVIEW_READY`\n\t\t\t) {\n\t\t\t\tonPreviewReady(response)\n\t\t\t} else {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tfetchPreviewStatusAndUpdateUI()\n\t\t\t\t}, 500)\n\t\t\t}\n\t\t})\n\t\t.catch((errorMessage) => {\n\t\t\tif (\n\t\t\t\ttypeof errorMessage === `string` &&\n\t\t\t\terrorMessage.str_post(`Unexpected token < in JSON at position 0`)\n\t\t\t) {\n\t\t\t\terrorMessage += `\\n\\nYour version of gatsby-source-wordpress-experimental is likely out of date.\\n\\nPlease upgrade to the latest version.`\n\t\t\t}\n\t\t\tshowError(errorMessage)\n\t\t})\n}\n\nfunction onPreviewReady(response) {\n\tconsole.log(response)\n\tclearTimeout(timeoutWarning)\n\n\tconst {\n\t\tdata: {\n\t\t\twpGatsby: { gatsbyPreviewStatus },\n\t\t},\n\t} = response || { data: { wpGatsby: { gatsbyPreviewStatus: {} } } }\n\n\tif (\n\t\tgatsbyPreviewStatus.statusType &&\n\t\tgatsbyPreviewStatus.statusType === `NOT_IN_PREVIEW_MODE`\n\t) {\n\t\tthrow new Error(\n\t\t\t`Your Gatsby site is not in Preview mode.\\nIf you're hosting on Gatsby Cloud, please see below for where to contact support.\\nIf you're running Previews locally or are self-hosting, please refer to https://www.gatsbyjs.com/docs/refreshing-content to put Gatsby into Preview mode.`,\n\t\t)\n\t}\n\n\tconsole.log(`Received a response:`)\n\tconsole.log(response)\n\n\tconsole.log({ gatsbyPreviewStatus })\n\n\tif (\n\t\t!gatsbyPreviewStatus ||\n\t\t!gatsbyPreviewStatus.statusType ||\n\t\t!gatsbyPreviewStatus.pageNode ||\n\t\t!gatsbyPreviewStatus.pageNode.path\n\t) {\n\t\tthrow new Error(`Received an improper response from the Preview server.`)\n\t}\n\n\tconst previewIframe = document.getElementById(\"preview\")\n\n\tpreviewIframe.addEventListener(\"load\", onIframeLoaded)\n\n\tpreviewIframe.src =\n\t\tinitialState.previewFrontendUrl + gatsbyPreviewStatus.pageNode.path\n\n\tif (!noIndicationOfSourcingWarningTimeout) {\n\t\tclearTimeout(noIndicationOfSourcingWarningTimeout)\n\t}\n}\n"],"names":["_typeof","obj","module","Symbol","iterator","constructor","prototype","runtime","exports","define","key","value","Object","defineProperty","enumerable","configurable","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","arg","type","call","err","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","forEach","method","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","hasOwn","__await","then","unwrapped","error","enqueue","callInvokeWithMethodAndArg","previousPromise","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","done","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","values","iterable","iteratorMethod","iteratorSymbol","isNaN","length","i","Op","hasOwnProperty","$Symbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","toString","keys","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","require$$0","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","start","catch","e","readyState","showError","addEventListener","timeoutSeconds","timeoutMilliseconds","timeoutWarning","setTimeout","updateLoaderWarning","fetchPreviewStatusAndUpdateUI","fetch","mode","response","ok","statusText","noIndicationOfSourcingWarningTimeout","iframe","getElementById","display","loader","errorElement","textContent","content","querySelector","message","previewWarningP","innerHTML","cancelPreviewLoader","onIframeLoaded","isUIDisplayed","classList","add","queryRequestBody","query","variables","postId","initialState","console","log","graphqlEndpoint","body","JSON","stringify","headers","json","data","wpGatsby","gatsbyPreviewStatus","statusType","onPreviewReady","errorMessage","str_post","clearTimeout","pageNode","path","previewIframe","src","previewFrontendUrl"],"mappings":"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"}
\ No newline at end of file
diff --git a/src/Admin/assets/dist/styles.css b/src/Admin/assets/dist/styles.css
deleted file mode 100644
index 743123f..0000000
--- a/src/Admin/assets/dist/styles.css
+++ /dev/null
@@ -1 +0,0 @@
-#loader{position:fixed;top:32px;bottom:0;left:0;right:0;width:100%;height:100%;height:calc(100% - 46px);background:#fff;z-index:100;text-align:center;display:flex;justify-content:center;flex-direction:column;opacity:1;transition:opacity .125s ease-out;padding:0 50px;box-sizing:border-box}@media (max-width:782px){#loader{top:46px}}#loader.loaded{opacity:0}button{font-size:1rem;padding:15px 30px;cursor:pointer;font-weight:medium;color:#fff!important;background:#639;border:none;margin-top:20px;letter-spacing:.25px}b,button,h1,h2,li,p,pre{font-family:Futura PT,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.45}b,button,p{color:#272727}h1,h2{color:#639}[dir=ltr] h1{margin-left:0}[dir=ltr] h1,[dir=rtl] h1{margin-right:0}[dir=rtl] h1{margin-left:0}h1{display:block;font-size:2em;margin-top:.67em;margin-bottom:.67em;font-weight:700}body{font-size:18px}#gatsby-loading-logo{max-width:80%;width:64px;height:64px;margin:0 auto 10px;box-shadow:0 0 0 rgba(102,51,153,.4);-webkit-animation:pulse 2s infinite;animation:pulse 2s infinite;border-radius:50%}@-webkit-keyframes pulse{0%{box-shadow:0 0 0 0 rgba(102,51,153,.4)}70%{box-shadow:0 0 0 30px rgba(102,51,153,0)}to{box-shadow:0 0 0 0 rgba(102,51,153,0)}}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(102,51,153,.4)}70%{box-shadow:0 0 0 30px rgba(102,51,153,0)}to{box-shadow:0 0 0 0 rgba(102,51,153,0)}}.content{width:100%;left:0;padding-top:46px;padding-bottom:70px;min-height:100%;min-height:calc(100vh - 46px);box-sizing:border-box;display:flex;justify-content:center;align-items:center;flex-direction:column}#preview-loader-warning,.content{max-width:80%;width:800px;margin:0 auto}.content p{margin:0 auto}iframe{position:fixed;width:100%;left:0;top:46px;height:100%;height:calc(100vh - 46px)}@media (min-width:783px){iframe{top:32px;height:calc(100vh - 32px)}}pre{white-space:pre-wrap;word-wrap:break-word;background:#f1f1f1;padding:50px 40px 40px 80px;margin-bottom:50px;position:relative;max-width:640px;box-sizing:border-box}br{line-height:1.75}#error-message-element:before{content:"Error";position:absolute;top:0;left:0;padding:5px 10px;background:#639;color:#fff;font-size:12px}a[target=_blank]:after{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==);margin:0 3px 0 5px}
\ No newline at end of file
diff --git a/src/Admin/assets/package.json b/src/Admin/assets/package.json
deleted file mode 100644
index c051283..0000000
--- a/src/Admin/assets/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "wp-gatsby-preview-client",
- "version": "1.0.0",
- "description": "A small preview client script for Gatsby Preview with WordPress",
- "main": "index.js",
- "author": "Tyler Barnes ",
- "license": "MIT",
- "devDependencies": {
- "@babel/cli": "^7.6.4",
- "@babel/core": "^7.6.4",
- "@babel/plugin-proposal-optional-chaining": "^7.12.1",
- "@babel/plugin-transform-regenerator": "^7.12.1",
- "@babel/plugin-transform-runtime": "^7.12.1",
- "@babel/plugin-transform-typescript": "^7.12.1",
- "@babel/preset-env": "^7.12.1",
- "@babel/runtime-corejs3": "^7.12.5",
- "@rollup/plugin-babel": "^5.2.1",
- "@rollup/plugin-commonjs": "^16.0.0",
- "@rollup/plugin-node-resolve": "^10.0.0",
- "babel-preset-minify": "^0.5.1",
- "core-js": "3",
- "cssnano": "^4.1.10",
- "node-sass": "^5.0.0",
- "npm-run-all": "^4.1.5",
- "postcss": "^8.1.4",
- "postcss-cli": "^8.1.0",
- "postcss-preset-env": "^6.7.0",
- "rollup": "^2.33.1",
- "rollup-plugin-cleanup": "^3.2.1"
- },
- "scripts": {
- "build": "npm-run-all --parallel build:*",
- "watch": "npm-run-all --parallel watch:*",
- "build:js": "rollup --config",
- "watch:js": "rollup --watch --config -m inline",
- "build:css": "postcss src/styles.scss --output dist/styles.css --verbose",
- "watch:css": "postcss src/styles.scss --output dist/styles.css --verbose --watch"
- },
- "dependencies": {
- "whatwg-fetch": "^3.5.0"
- }
-}
diff --git a/src/Admin/assets/postcss.config.js b/src/Admin/assets/postcss.config.js
deleted file mode 100644
index 92f5cac..0000000
--- a/src/Admin/assets/postcss.config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const postcssPresetEnv = require("postcss-preset-env")
-
-module.exports = {
- plugins: [
- postcssPresetEnv(),
- require("cssnano")({
- preset: "default",
- }),
- ],
-}
diff --git a/src/Admin/assets/rollup.config.js b/src/Admin/assets/rollup.config.js
deleted file mode 100644
index c593952..0000000
--- a/src/Admin/assets/rollup.config.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import commonjs from "@rollup/plugin-commonjs"
-import { nodeResolve } from "@rollup/plugin-node-resolve"
-import babel from "@rollup/plugin-babel"
-
-import cleanup from "rollup-plugin-cleanup"
-
-const extensions = [".js", ".ts"]
-
-const config = {
- input: "src/start-preview-client.ts",
- output: {
- file: "dist/preview-client.js",
- format: "iife",
- sourcemap: true,
- name: "WPGatsbyPreviewClient",
- },
- plugins: [
- commonjs(),
- nodeResolve({
- extensions,
- }),
- babel({ babelHelpers: "runtime", extensions }),
- cleanup(),
- ],
-}
-
-export default config
diff --git a/src/Admin/assets/src/error-warning.ts b/src/Admin/assets/src/error-warning.ts
deleted file mode 100644
index 2707422..0000000
--- a/src/Admin/assets/src/error-warning.ts
+++ /dev/null
@@ -1,118 +0,0 @@
-import { RemoteStatusUnion } from "./preview-status"
-const timeoutSeconds: number = 45
-const timeoutMilliseconds: number = 1000 * timeoutSeconds
-
-/**
- * After 45 seconds, display a warning, unless cancelled by clearing this timeout once the UI is updated and the iframe is loaded.
- */
-export const timeoutWarning: number = setTimeout(() => {
- updateLoaderWarning(
- `Preview is taking a very long time to load (more than ${timeoutSeconds} seconds). Try pressing "preview" again from the WordPress edit screen. If you see this again, your preview builds are either slow or there's something wrong.`,
- )
-}, timeoutMilliseconds)
-
-export type CustomError = {
- message: string
- remoteStatus?: RemoteStatusUnion
-}
-
-type ShowableError = CustomError | Error | string
-
-export function showError(error: ShowableError): void {
- if (typeof error === `string`) {
- error = {
- message: error,
- }
- }
-
- const iframe: HTMLIFrameElement = document.getElementById(
- "preview",
- ) as HTMLIFrameElement
-
- iframe.style.display = "none"
-
- const loader: HTMLElement = document.getElementById("loader")
-
- loader.style.display = "none"
-
- const errorElement: HTMLElement = document.getElementById(
- "error-message-element",
- )
-
- errorElement.textContent = error.message
-
- const content: HTMLElement = document.querySelector(
- ".content.error",
- ) as HTMLElement
-
- content.style.display = "block"
-
- if (!(`remoteStatus` in error)) {
- return
- }
-
- switch (error.remoteStatus) {
- case `NO_PAGE_CREATED_FOR_PREVIEWED_NODE`:
- updateTroubleshootingMessage(`
- Gatsby wasn't able to find a page for the post you're trying to preview. This can mean one of three things:
-
-
- A page is not being built for the post being previewed.
- The id of this post is not being included in the pageContext of it's Gatsby page.
- An error was thrown in Gatsby during Preview sourcing (check your logs).
-
-
-
- Hint: if you want to account for any possible post type (even those that haven't yet been registered) you can use the WpContentNode interface as a fallback template in gatsby-node.js when you're creating pages and you'll never see this message when registering new post types.
- `)
- break
-
- case `GATSBY_PREVIEW_PROCESS_ERROR`:
- updateTroubleshootingMessage(`
- The Gatsby Preview process errored while sourcing this preview. Please check your error logs for additional information.
- `)
- break
-
- case `RECEIVED_PREVIEW_DATA_FROM_WRONG_URL`:
- updateTroubleshootingMessage(`
- The Gatsby instance this WP site is configured to send Previews to is configured to receive source data from a different WordPress instance. Please check your gatsby-config.js and WPGatsby settings to ensure the WordPress instance URL's match up.
- `)
- break
-
- default:
- break
- }
-}
-
-function updateTroubleshootingMessage(message: string): void {
- const sharedMessage = ` If you're not a developer, please screenshot this page and send it to your developer.Note: Once this error is fixed, you'll need to press "preview" again to clear out this message.`
-
- const troubleshootingElement = document.getElementById(
- "troubleshooting-html-area",
- )
-
- troubleshootingElement.innerHTML = `
-
${message}${sharedMessage}
- `
-}
-
-export function updateLoaderWarning(message: string): void {
- const previewWarningP = document.getElementById("preview-loader-warning")
-
- previewWarningP.innerHTML = `${message}Cancel and Troubleshoot `
- previewWarningP.style.display = "initial"
-
- const cancelButton = document.getElementById("cancel-button")
-
- cancelButton.addEventListener("keypress", function (e) {
- if (e.key === "Enter") {
- cancelPreviewLoader()
- }
- })
-
- cancelButton.addEventListener("click", cancelPreviewLoader)
-}
-
-function cancelPreviewLoader(): void {
- showError(`Preview was cancelled.`)
-}
diff --git a/src/Admin/assets/src/preview-status.ts b/src/Admin/assets/src/preview-status.ts
deleted file mode 100644
index 4d53c25..0000000
--- a/src/Admin/assets/src/preview-status.ts
+++ /dev/null
@@ -1,247 +0,0 @@
-import { timeoutWarning } from "./error-warning"
-
-import type { InitialState } from "./start-preview-client"
-
-declare var initialState: InitialState
-
-const previewFrontendIsOnlineQuery: string = /* GraphQL */ `
- query PREVIEW_FRONTEND_IS_ONLINE {
- wpGatsby {
- isPreviewFrontendOnline
- }
- }
-`
-
-const previewStatusQuery: string = /* GraphQL */ `
- query PREVIEW_STATUS_QUERY($postId: Float!) {
- wpGatsby {
- gatsbyPreviewStatus(nodeId: $postId) {
- pageNode {
- path
- }
- statusType
- remoteStatus
- statusContext
- }
- }
- }
-`
-
-const wpPreviewedNodeStatus = [
- `NO_NODE_FOUND`,
- `PREVIEW_READY`,
- `REMOTE_NODE_NOT_YET_UPDATED`,
- `NO_PREVIEW_PATH_FOUND`,
- `PREVIEW_PAGE_UPDATED_BUT_NOT_YET_DEPLOYED`,
-] as const
-
-type WpPreviewedNodeStatusUnion = typeof wpPreviewedNodeStatus[number]
-
-const remoteStatuses = [
- `NO_PAGE_CREATED_FOR_PREVIEWED_NODE`,
- `GATSBY_PREVIEW_PROCESS_ERROR`,
- `RECEIVED_PREVIEW_DATA_FROM_WRONG_URL`,
-] as const
-
-export type RemoteStatusUnion = typeof remoteStatuses[number]
-
-type PreviewStatusResponseJson = {
- data: {
- wpGatsby: {
- gatsbyPreviewStatus: {
- pageNode: {
- path: string
- }
- statusType: WpPreviewedNodeStatusUnion
- remoteStatus: RemoteStatusUnion
- statusContext: string
- }
- }
- }
-}
-
-/**
- * This function checks the preview status that Gatsby has stored in post meta for
- * the parent post of this preview
- * When the preview is ready, it calls onPreviewReadyUpdateUI() which updates the UI
- *
- * If a status besides PREVIEW_READY comes back, we wait a bit and try again
- *
- * This function doesn't return anything
- */
-export async function fetchPreviewStatusAndUpdateUI({
- refetchCount = 0,
- refetchDelay = 500,
-} = {}): Promise {
- const { wordpressSiteUrl, graphqlEndpoint } = initialState
- // Ask WPGraphQL for the status of this preview
- // Gatsby will update this when the preview is ready
- const response: PreviewStatusResponseJson = await (
- await fetch(`${wordpressSiteUrl}/?${graphqlEndpoint}`, {
- method: "POST",
- body: JSON.stringify({
- query: previewStatusQuery,
- variables: {
- postId: initialState.postId,
- },
- }),
- headers: {
- "Content-Type": "application/json",
- },
- })
- ).json()
-
- const { statusType, remoteStatus, statusContext } =
- response?.data?.wpGatsby?.gatsbyPreviewStatus || {}
-
- const isSpecialStatus: boolean = remoteStatuses.includes(remoteStatus)
-
- if (isSpecialStatus) {
- console.log({ response })
- // we clear this timeout when the preview is ready so that the
- // "long preview time" warning doesn't appear
- clearTimeout(timeoutWarning)
-
- throw {
- remoteStatus,
- message: `Gatsby returned unsuccessful Preview status:\n${remoteStatus}${
- statusContext ? `\n\nWith additional context:\n${statusContext}` : ``
- }`,
- }
- }
-
- if (statusType) {
- console.log(statusType)
- }
-
- if (remoteStatus) {
- console.log(remoteStatus)
- }
-
- if (statusType === `PREVIEW_READY`) {
- clearTimeout(timeoutWarning)
-
- onPreviewReadyUpdateUI(response)
-
- // if the preview is ready we don't need to continue so we return here
- // this function isn't expected to return anything
- return
- }
-
- const refetchDelayMap = {
- // after 30 retries of 500ms, start checking every second
- 30: 1000,
- // after 20 more retries of 1 second, start checking every 2 seconds
- 50: 2000,
- // after 20 more retries of 2 seconds, start checking every 5 seconds
- 70: 5000,
- }
-
- refetchCount++
- // our delay increases if we have a value for the current refetchCount
- refetchDelay = refetchDelayMap[refetchCount] || refetchDelay
-
- await new Promise((resolve) =>
- setTimeout(() => {
- resolve()
- }, refetchDelay),
- )
-
- // we need to await this so our top level start() fn can properly try/catch and display the error view
- await fetchPreviewStatusAndUpdateUI({
- refetchCount,
- refetchDelay,
- })
-}
-
-function onPreviewReadyUpdateUI(response: PreviewStatusResponseJson): void {
- const { gatsbyPreviewStatus } = response?.data?.wpGatsby || {}
-
- console.log({ previewReady: { gatsbyPreviewStatus } })
-
- if (
- !gatsbyPreviewStatus ||
- !gatsbyPreviewStatus.statusType ||
- !gatsbyPreviewStatus?.pageNode?.path
- ) {
- throw Error(`Received an improper response from the Preview server.`)
- }
-
- const previewIframe: HTMLIFrameElement = document.getElementById(
- "preview",
- ) as HTMLIFrameElement
-
- // when the iframe loads we want our iframe loaded event to fire
- // so we can remove the loader
- previewIframe.addEventListener("load", onIframeLoadedHideLoaderUI)
-
- console.log(`Loading Gatsby Preview in an iframe...`)
- // point the iframe at the frontend preview url for this preview
- previewIframe.src =
- initialState.previewFrontendUrl + gatsbyPreviewStatus.pageNode.path
-
- const event = new Event("wp-gatsby-preview-ready")
- document.dispatchEvent(event)
-}
-
-function onIframeLoadedHideLoaderUI(): void {
- const loader: HTMLElement = document.getElementById("loader")
- console.log(`Loaded Gatsby Preview!`)
-
- console.log(loader)
-
- // this delay prevents a flash between
- // the iframe painting and the loader dissapearing
- setTimeout(() => {
- // there is a fadeout css animation on this
- loader.classList.add("loaded")
-
- setTimeout(() => {
- // we wait a sec to display none so the css animation fadeout can complete
- loader.style.display = "none"
- }, 100)
- }, 50)
-}
-
-const requestPreviewFrontendIsOnline = async (): Promise =>
- (
- await (
- await fetch(`/?${initialState.graphqlEndpoint}`, {
- method: "POST",
- body: JSON.stringify({
- query: previewFrontendIsOnlineQuery,
- }),
- headers: {
- "Content-Type": "application/json",
- },
- })
- ).json()
- )?.data?.wpGatsby?.isPreviewFrontendOnline
-
-let frontendOnlineCheckCount = 0
-
-/**
- * If our backend webhook preview POST came back with an error, we can't be sure our frontend is online.
- * So this function checks just that and then after 10 seconds (+ request time) of it not being online it will show an error
- * If it's online it will start the preview status watcher and update the UI
- */
-export async function doubleCheckIfPreviewFrontendIsOnline(): Promise {
- const previewFrontendIsOnline: boolean = await requestPreviewFrontendIsOnline()
-
- if (previewFrontendIsOnline) {
- // if the response came back ok start loading the frontend
- // because the frontend actually is online
- await fetchPreviewStatusAndUpdateUI()
- } else if (frontendOnlineCheckCount < 10) {
- console.log(`frontend not online.. rechecking`)
-
- frontendOnlineCheckCount++
-
- await new Promise((resolve) => setTimeout(resolve, 1000))
-
- await doubleCheckIfPreviewFrontendIsOnline()
- } else {
- // otherwise throwing this will display the error UI
- throw Error(`The Gatsby Preview frontend is not responding to requests.`)
- }
-}
diff --git a/src/Admin/assets/src/start-preview-client.ts b/src/Admin/assets/src/start-preview-client.ts
deleted file mode 100644
index 35be954..0000000
--- a/src/Admin/assets/src/start-preview-client.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import "whatwg-fetch"
-
-import { showError } from "./error-warning"
-import {
- fetchPreviewStatusAndUpdateUI,
- doubleCheckIfPreviewFrontendIsOnline,
-} from "./preview-status"
-
-export type InitialState = {
- previewWebhookIsOnline: boolean
- previewFrontendUrl: string
- postId: number
- graphqlEndpoint: string
- webhookWasCalled: boolean
- wordpressSiteUrl: string
-}
-
-declare var initialState: InitialState
-
-/**
- * This file is printed out in preview-template.php
- * initialState global comes from preview-template.php above where this is printed to the page
- */
-start().catch((e) => {
- console.error(e)
- if (document.readyState === "complete") {
- // document is already ready to go so show the error
- showError(e)
- } else {
- // otherwise wait for it to load before showing the error
- document.addEventListener("DOMContentLoaded", () => {
- showError(e)
- })
- }
-})
-
-async function start(): Promise {
- if (initialState.previewWebhookIsOnline) {
- // if we webhook came back as online, fetch the status and update the ui
- await fetchPreviewStatusAndUpdateUI()
- } else {
- // otherwise check to see if it actually is online
- // then if it is, fetch the status and update the UI
- await doubleCheckIfPreviewFrontendIsOnline()
- }
-}
diff --git a/src/Admin/assets/src/styles.scss b/src/Admin/assets/src/styles.scss
deleted file mode 100644
index b4adc93..0000000
--- a/src/Admin/assets/src/styles.scss
+++ /dev/null
@@ -1,193 +0,0 @@
-#loader {
- position: fixed;
- top: 32px;
- bottom: 0;
- left: 0;
- right: 0;
- width: 100%;
- height: 100%;
- height: calc(100% - 46px);
- background: white;
- z-index: 100;
- text-align: center;
- display: flex;
- justify-content: center;
- flex-direction: column;
- opacity: 1;
- transition: 0.125s ease-out opacity;
- padding: 0 50px;
- box-sizing: border-box;
-}
-
-@media (max-width: 782px) {
- #loader {
- top: 46px;
- }
-}
-
-#loader.loaded {
- opacity: 0;
-}
-
-button {
- font-size: 1rem;
- padding: 15px 30px;
- cursor: pointer;
- font-weight: medium;
- color: white !important;
- background: rebeccapurple;
- border: none;
- margin-top: 20px;
- letter-spacing: 0.25px;
-}
-
-h1,
-h2,
-pre,
-p,
-li,
-b,
-button {
- font-family: "Futura PT", -apple-system, "BlinkMacSystemFont", "Segoe UI",
- "Roboto", "Helvetica Neue", "Arial", "Noto Sans", sans-serif,
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
- line-height: 1.45;
-}
-
-b,
-p,
-button {
- color: #272727;
-}
-
-h1,
-h2 {
- color: rebeccapurple;
-}
-
-h1 {
- display: block;
- font-size: 2em;
- margin-block-start: 0.67em;
- margin-block-end: 0.67em;
- margin-inline-start: 0px;
- margin-inline-end: 0px;
- font-weight: bold;
-}
-
-body {
- font-size: 18px;
-}
-
-#gatsby-loading-logo {
- max-width: 80%;
- width: 64px;
- height: 64px;
- margin: 0 auto;
- margin-bottom: 10px;
- box-shadow: 0 0 0 rgba(102, 51, 153, 0.4);
- -webkit-animation: pulse 2s infinite;
- animation: pulse 2s infinite;
- border-radius: 50%;
-}
-
-@-webkit-keyframes pulse {
- 0% {
- box-shadow: 0 0 0 0 rgba(102, 51, 153, 0.4);
- }
- 70% {
- box-shadow: 0 0 0 30px rgba(102, 51, 153, 0);
- }
- 100% {
- box-shadow: 0 0 0 0 rgba(102, 51, 153, 0);
- }
-}
-
-@keyframes pulse {
- 0% {
- box-shadow: 0 0 0 0 rgba(102, 51, 153, 0.4);
- }
- 70% {
- box-shadow: 0 0 0 30px rgba(102, 51, 153, 0);
- }
- 100% {
- box-shadow: 0 0 0 0 rgba(102, 51, 153, 0);
- }
-}
-
-.content {
- width: 100%;
- left: 0;
- padding-top: 46px;
- padding-bottom: 70px;
- min-height: 100%;
- min-height: calc(100vh - 46px);
- box-sizing: border-box;
-
- display: flex;
- justify-content: center;
- align-items: center;
- flex-direction: column;
-}
-
-#preview-loader-warning,
-.content {
- max-width: 80%;
- width: 800px;
- margin: 0 auto;
-}
-
-.content p {
- margin: 0 auto;
-}
-
-iframe {
- position: fixed;
-
- width: 100%;
- left: 0;
-
- top: 46px;
- height: 100%;
- height: calc(100vh - 46px);
-}
-
-@media (min-width: 783px) {
- iframe {
- top: 32px;
- height: calc(100vh - 32px);
- }
-}
-
-pre {
- white-space: pre-wrap; /* css-3 */
- word-wrap: break-word; /* Internet Explorer 5.5+ */
-
- background: #f1f1f1;
- padding: 50px 40px 40px 80px;
- margin-bottom: 50px;
-
- position: relative;
- max-width: 640px;
- box-sizing: border-box;
-}
-
-br {
- line-height: 1.75;
-}
-
-#error-message-element::before {
- content: "Error";
- position: absolute;
- top: 0;
- left: 0;
- padding: 5px 10px;
- background: rebeccapurple;
- color: white;
- font-size: 12px;
-}
-
-a[target="_blank"]::after {
- content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==);
- margin: 0 3px 0 5px;
-}
diff --git a/src/Admin/assets/yarn.lock b/src/Admin/assets/yarn.lock
deleted file mode 100644
index 2303c2f..0000000
--- a/src/Admin/assets/yarn.lock
+++ /dev/null
@@ -1,5467 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@babel/cli@^7.6.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.12.1.tgz#e08a0b1cb6fcd4b9eb6a606ba5602c5c0fe24a0c"
- integrity sha512-eRJREyrfAJ2r42Iaxe8h3v6yyj1wu9OyosaUHW6UImjGf9ahGL9nsFNh7OCopvtcPL8WnEo7tp78wrZaZ6vG9g==
- dependencies:
- commander "^4.0.1"
- convert-source-map "^1.1.0"
- fs-readdir-recursive "^1.1.0"
- glob "^7.0.0"
- lodash "^4.17.19"
- make-dir "^2.1.0"
- slash "^2.0.0"
- source-map "^0.5.0"
- optionalDependencies:
- "@nicolo-ribaudo/chokidar-2" "^2.1.8"
- chokidar "^3.4.0"
-
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
- integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
- dependencies:
- "@babel/highlight" "^7.10.4"
-
-"@babel/compat-data@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.1.tgz#d7386a689aa0ddf06255005b4b991988021101a0"
- integrity sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ==
-
-"@babel/core@^7.6.4":
- version "7.12.3"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8"
- integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==
- dependencies:
- "@babel/code-frame" "^7.10.4"
- "@babel/generator" "^7.12.1"
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helpers" "^7.12.1"
- "@babel/parser" "^7.12.3"
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.12.1"
- "@babel/types" "^7.12.1"
- convert-source-map "^1.7.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.1"
- json5 "^2.1.2"
- lodash "^4.17.19"
- resolve "^1.3.2"
- semver "^5.4.1"
- source-map "^0.5.0"
-
-"@babel/generator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468"
- integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==
- dependencies:
- "@babel/types" "^7.12.1"
- jsesc "^2.5.1"
- source-map "^0.5.0"
-
-"@babel/helper-annotate-as-pure@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
- integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==
- dependencies:
- "@babel/types" "^7.10.4"
-
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3"
- integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==
- dependencies:
- "@babel/helper-explode-assignable-expression" "^7.10.4"
- "@babel/types" "^7.10.4"
-
-"@babel/helper-compilation-targets@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz#310e352888fbdbdd8577be8dfdd2afb9e7adcf50"
- integrity sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g==
- dependencies:
- "@babel/compat-data" "^7.12.1"
- "@babel/helper-validator-option" "^7.12.1"
- browserslist "^4.12.0"
- semver "^5.5.0"
-
-"@babel/helper-create-class-features-plugin@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e"
- integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==
- dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-member-expression-to-functions" "^7.12.1"
- "@babel/helper-optimise-call-expression" "^7.10.4"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.10.4"
-
-"@babel/helper-create-regexp-features-plugin@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8"
- integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.10.4"
- "@babel/helper-regex" "^7.10.4"
- regexpu-core "^4.7.1"
-
-"@babel/helper-define-map@^7.10.4":
- version "7.10.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30"
- integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==
- dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/types" "^7.10.5"
- lodash "^4.17.19"
-
-"@babel/helper-explode-assignable-expression@^7.10.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633"
- integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==
- dependencies:
- "@babel/types" "^7.12.1"
-
-"@babel/helper-function-name@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a"
- integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==
- dependencies:
- "@babel/helper-get-function-arity" "^7.10.4"
- "@babel/template" "^7.10.4"
- "@babel/types" "^7.10.4"
-
-"@babel/helper-get-function-arity@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2"
- integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==
- dependencies:
- "@babel/types" "^7.10.4"
-
-"@babel/helper-hoist-variables@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e"
- integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==
- dependencies:
- "@babel/types" "^7.10.4"
-
-"@babel/helper-member-expression-to-functions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c"
- integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==
- dependencies:
- "@babel/types" "^7.12.1"
-
-"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c"
- integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA==
- dependencies:
- "@babel/types" "^7.12.1"
-
-"@babel/helper-module-transforms@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c"
- integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==
- dependencies:
- "@babel/helper-module-imports" "^7.12.1"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-simple-access" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.11.0"
- "@babel/helper-validator-identifier" "^7.10.4"
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.12.1"
- "@babel/types" "^7.12.1"
- lodash "^4.17.19"
-
-"@babel/helper-optimise-call-expression@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673"
- integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==
- dependencies:
- "@babel/types" "^7.10.4"
-
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
- integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
-
-"@babel/helper-regex@^7.10.4":
- version "7.10.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0"
- integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==
- dependencies:
- lodash "^4.17.19"
-
-"@babel/helper-remap-async-to-generator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd"
- integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.10.4"
- "@babel/helper-wrap-function" "^7.10.4"
- "@babel/types" "^7.12.1"
-
-"@babel/helper-replace-supers@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9"
- integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==
- dependencies:
- "@babel/helper-member-expression-to-functions" "^7.12.1"
- "@babel/helper-optimise-call-expression" "^7.10.4"
- "@babel/traverse" "^7.12.1"
- "@babel/types" "^7.12.1"
-
-"@babel/helper-simple-access@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136"
- integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==
- dependencies:
- "@babel/types" "^7.12.1"
-
-"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
- integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
- dependencies:
- "@babel/types" "^7.12.1"
-
-"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0":
- version "7.11.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f"
- integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==
- dependencies:
- "@babel/types" "^7.11.0"
-
-"@babel/helper-validator-identifier@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
- integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
-
-"@babel/helper-validator-option@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9"
- integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==
-
-"@babel/helper-wrap-function@^7.10.4":
- version "7.12.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9"
- integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==
- dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.10.4"
- "@babel/types" "^7.10.4"
-
-"@babel/helpers@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79"
- integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g==
- dependencies:
- "@babel/template" "^7.10.4"
- "@babel/traverse" "^7.12.1"
- "@babel/types" "^7.12.1"
-
-"@babel/highlight@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
- integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
- dependencies:
- "@babel/helper-validator-identifier" "^7.10.4"
- chalk "^2.0.0"
- js-tokens "^4.0.0"
-
-"@babel/parser@^7.10.4", "@babel/parser@^7.12.1", "@babel/parser@^7.12.3":
- version "7.12.3"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd"
- integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==
-
-"@babel/plugin-proposal-async-generator-functions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e"
- integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-remap-async-to-generator" "^7.12.1"
- "@babel/plugin-syntax-async-generators" "^7.8.0"
-
-"@babel/plugin-proposal-class-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de"
- integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==
- dependencies:
- "@babel/helper-create-class-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-proposal-dynamic-import@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc"
- integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-dynamic-import" "^7.8.0"
-
-"@babel/plugin-proposal-export-namespace-from@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4"
- integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-
-"@babel/plugin-proposal-json-strings@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c"
- integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-json-strings" "^7.8.0"
-
-"@babel/plugin-proposal-logical-assignment-operators@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751"
- integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
-
-"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c"
- integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
-
-"@babel/plugin-proposal-numeric-separator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6"
- integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-numeric-separator" "^7.10.4"
-
-"@babel/plugin-proposal-object-rest-spread@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
- integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
- "@babel/plugin-transform-parameters" "^7.12.1"
-
-"@babel/plugin-proposal-optional-catch-binding@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942"
- integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
-
-"@babel/plugin-proposal-optional-chaining@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797"
- integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
- "@babel/plugin-syntax-optional-chaining" "^7.8.0"
-
-"@babel/plugin-proposal-private-methods@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389"
- integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==
- dependencies:
- "@babel/helper-create-class-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072"
- integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==
- dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-async-generators@^7.8.0":
- version "7.8.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
- integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-class-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978"
- integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-dynamic-import@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
- integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-export-namespace-from@^7.8.3":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
- integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-syntax-json-strings@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
- integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
- integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
- integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-numeric-separator@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
- integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-object-rest-spread@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
- integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-optional-catch-binding@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
- integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-optional-chaining@^7.8.0":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
- integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-top-level-await@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0"
- integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-typescript@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5"
- integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-arrow-functions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3"
- integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-async-to-generator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1"
- integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==
- dependencies:
- "@babel/helper-module-imports" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-remap-async-to-generator" "^7.12.1"
-
-"@babel/plugin-transform-block-scoped-functions@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9"
- integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-block-scoping@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1"
- integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-classes@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6"
- integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.10.4"
- "@babel/helper-define-map" "^7.10.4"
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-optimise-call-expression" "^7.10.4"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-replace-supers" "^7.12.1"
- "@babel/helper-split-export-declaration" "^7.10.4"
- globals "^11.1.0"
-
-"@babel/plugin-transform-computed-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852"
- integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-destructuring@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847"
- integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975"
- integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==
- dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-duplicate-keys@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228"
- integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-exponentiation-operator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0"
- integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==
- dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-for-of@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa"
- integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-function-name@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667"
- integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==
- dependencies:
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57"
- integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-member-expression-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad"
- integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-modules-amd@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9"
- integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==
- dependencies:
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- babel-plugin-dynamic-import-node "^2.3.3"
-
-"@babel/plugin-transform-modules-commonjs@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648"
- integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==
- dependencies:
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-simple-access" "^7.12.1"
- babel-plugin-dynamic-import-node "^2.3.3"
-
-"@babel/plugin-transform-modules-systemjs@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086"
- integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==
- dependencies:
- "@babel/helper-hoist-variables" "^7.10.4"
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-validator-identifier" "^7.10.4"
- babel-plugin-dynamic-import-node "^2.3.3"
-
-"@babel/plugin-transform-modules-umd@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902"
- integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==
- dependencies:
- "@babel/helper-module-transforms" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753"
- integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==
- dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
-
-"@babel/plugin-transform-new-target@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0"
- integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-object-super@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e"
- integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-replace-supers" "^7.12.1"
-
-"@babel/plugin-transform-parameters@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d"
- integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-property-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd"
- integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-regenerator@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753"
- integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==
- dependencies:
- regenerator-transform "^0.14.2"
-
-"@babel/plugin-transform-reserved-words@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8"
- integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-runtime@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5"
- integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==
- dependencies:
- "@babel/helper-module-imports" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- resolve "^1.8.1"
- semver "^5.5.1"
-
-"@babel/plugin-transform-shorthand-properties@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3"
- integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-spread@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e"
- integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
-
-"@babel/plugin-transform-sticky-regex@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf"
- integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-regex" "^7.10.4"
-
-"@babel/plugin-transform-template-literals@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843"
- integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-typeof-symbol@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a"
- integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-typescript@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4"
- integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==
- dependencies:
- "@babel/helper-create-class-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/plugin-syntax-typescript" "^7.12.1"
-
-"@babel/plugin-transform-unicode-escapes@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709"
- integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-unicode-regex@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb"
- integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==
- dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/preset-env@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2"
- integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==
- dependencies:
- "@babel/compat-data" "^7.12.1"
- "@babel/helper-compilation-targets" "^7.12.1"
- "@babel/helper-module-imports" "^7.12.1"
- "@babel/helper-plugin-utils" "^7.10.4"
- "@babel/helper-validator-option" "^7.12.1"
- "@babel/plugin-proposal-async-generator-functions" "^7.12.1"
- "@babel/plugin-proposal-class-properties" "^7.12.1"
- "@babel/plugin-proposal-dynamic-import" "^7.12.1"
- "@babel/plugin-proposal-export-namespace-from" "^7.12.1"
- "@babel/plugin-proposal-json-strings" "^7.12.1"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1"
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
- "@babel/plugin-proposal-numeric-separator" "^7.12.1"
- "@babel/plugin-proposal-object-rest-spread" "^7.12.1"
- "@babel/plugin-proposal-optional-catch-binding" "^7.12.1"
- "@babel/plugin-proposal-optional-chaining" "^7.12.1"
- "@babel/plugin-proposal-private-methods" "^7.12.1"
- "@babel/plugin-proposal-unicode-property-regex" "^7.12.1"
- "@babel/plugin-syntax-async-generators" "^7.8.0"
- "@babel/plugin-syntax-class-properties" "^7.12.1"
- "@babel/plugin-syntax-dynamic-import" "^7.8.0"
- "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
- "@babel/plugin-syntax-json-strings" "^7.8.0"
- "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
- "@babel/plugin-syntax-numeric-separator" "^7.10.4"
- "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
- "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
- "@babel/plugin-syntax-optional-chaining" "^7.8.0"
- "@babel/plugin-syntax-top-level-await" "^7.12.1"
- "@babel/plugin-transform-arrow-functions" "^7.12.1"
- "@babel/plugin-transform-async-to-generator" "^7.12.1"
- "@babel/plugin-transform-block-scoped-functions" "^7.12.1"
- "@babel/plugin-transform-block-scoping" "^7.12.1"
- "@babel/plugin-transform-classes" "^7.12.1"
- "@babel/plugin-transform-computed-properties" "^7.12.1"
- "@babel/plugin-transform-destructuring" "^7.12.1"
- "@babel/plugin-transform-dotall-regex" "^7.12.1"
- "@babel/plugin-transform-duplicate-keys" "^7.12.1"
- "@babel/plugin-transform-exponentiation-operator" "^7.12.1"
- "@babel/plugin-transform-for-of" "^7.12.1"
- "@babel/plugin-transform-function-name" "^7.12.1"
- "@babel/plugin-transform-literals" "^7.12.1"
- "@babel/plugin-transform-member-expression-literals" "^7.12.1"
- "@babel/plugin-transform-modules-amd" "^7.12.1"
- "@babel/plugin-transform-modules-commonjs" "^7.12.1"
- "@babel/plugin-transform-modules-systemjs" "^7.12.1"
- "@babel/plugin-transform-modules-umd" "^7.12.1"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1"
- "@babel/plugin-transform-new-target" "^7.12.1"
- "@babel/plugin-transform-object-super" "^7.12.1"
- "@babel/plugin-transform-parameters" "^7.12.1"
- "@babel/plugin-transform-property-literals" "^7.12.1"
- "@babel/plugin-transform-regenerator" "^7.12.1"
- "@babel/plugin-transform-reserved-words" "^7.12.1"
- "@babel/plugin-transform-shorthand-properties" "^7.12.1"
- "@babel/plugin-transform-spread" "^7.12.1"
- "@babel/plugin-transform-sticky-regex" "^7.12.1"
- "@babel/plugin-transform-template-literals" "^7.12.1"
- "@babel/plugin-transform-typeof-symbol" "^7.12.1"
- "@babel/plugin-transform-unicode-escapes" "^7.12.1"
- "@babel/plugin-transform-unicode-regex" "^7.12.1"
- "@babel/preset-modules" "^0.1.3"
- "@babel/types" "^7.12.1"
- core-js-compat "^3.6.2"
- semver "^5.5.0"
-
-"@babel/preset-modules@^0.1.3":
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
- integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
- "@babel/plugin-transform-dotall-regex" "^7.4.4"
- "@babel/types" "^7.4.4"
- esutils "^2.0.2"
-
-"@babel/runtime-corejs3@^7.12.5":
- version "7.12.5"
- resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz#ffee91da0eb4c6dae080774e94ba606368e414f4"
- integrity sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==
- dependencies:
- core-js-pure "^3.0.0"
- regenerator-runtime "^0.13.4"
-
-"@babel/runtime@^7.8.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740"
- integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==
- dependencies:
- regenerator-runtime "^0.13.4"
-
-"@babel/template@^7.10.4":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
- integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==
- dependencies:
- "@babel/code-frame" "^7.10.4"
- "@babel/parser" "^7.10.4"
- "@babel/types" "^7.10.4"
-
-"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e"
- integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==
- dependencies:
- "@babel/code-frame" "^7.10.4"
- "@babel/generator" "^7.12.1"
- "@babel/helper-function-name" "^7.10.4"
- "@babel/helper-split-export-declaration" "^7.11.0"
- "@babel/parser" "^7.12.1"
- "@babel/types" "^7.12.1"
- debug "^4.1.0"
- globals "^11.1.0"
- lodash "^4.17.19"
-
-"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.4.4":
- version "7.12.1"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae"
- integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==
- dependencies:
- "@babel/helper-validator-identifier" "^7.10.4"
- lodash "^4.17.19"
- to-fast-properties "^2.0.0"
-
-"@csstools/convert-colors@^1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
- integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==
-
-"@nicolo-ribaudo/chokidar-2@^2.1.8":
- version "2.1.8"
- resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8.tgz#eef8d9b47e8dc589499f14d656e8d2dd978c3d14"
- integrity sha512-FohwULwAebCUKi/akMFyGi7jfc7JXTeMHzKxuP3umRd9mK/2Y7/SMBSI2jX+YLopPXi+PF9l307NmpfxTdCegA==
- dependencies:
- chokidar "2.1.8"
-
-"@nodelib/fs.scandir@2.1.3":
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
- integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==
- dependencies:
- "@nodelib/fs.stat" "2.0.3"
- run-parallel "^1.1.9"
-
-"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3"
- integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==
-
-"@nodelib/fs.walk@^1.2.3":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976"
- integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==
- dependencies:
- "@nodelib/fs.scandir" "2.1.3"
- fastq "^1.6.0"
-
-"@rollup/plugin-babel@^5.2.1":
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.2.1.tgz#20fc8f8864dc0eaa1c5578408459606808f72924"
- integrity sha512-Jd7oqFR2dzZJ3NWANDyBjwTtX/lYbZpVcmkHrfQcpvawHs9E4c0nYk5U2mfZ6I/DZcIvy506KZJi54XK/jxH7A==
- dependencies:
- "@babel/helper-module-imports" "^7.10.4"
- "@rollup/pluginutils" "^3.1.0"
-
-"@rollup/plugin-commonjs@^16.0.0":
- version "16.0.0"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz#169004d56cd0f0a1d0f35915d31a036b0efe281f"
- integrity sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw==
- dependencies:
- "@rollup/pluginutils" "^3.1.0"
- commondir "^1.0.1"
- estree-walker "^2.0.1"
- glob "^7.1.6"
- is-reference "^1.2.1"
- magic-string "^0.25.7"
- resolve "^1.17.0"
-
-"@rollup/plugin-node-resolve@^10.0.0":
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz#44064a2b98df7530e66acf8941ff262fc9b4ead8"
- integrity sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==
- dependencies:
- "@rollup/pluginutils" "^3.1.0"
- "@types/resolve" "1.17.1"
- builtin-modules "^3.1.0"
- deepmerge "^4.2.2"
- is-module "^1.0.0"
- resolve "^1.17.0"
-
-"@rollup/pluginutils@^3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
- integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
- dependencies:
- "@types/estree" "0.0.39"
- estree-walker "^1.0.1"
- picomatch "^2.2.2"
-
-"@types/estree@*":
- version "0.0.45"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884"
- integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==
-
-"@types/estree@0.0.39":
- version "0.0.39"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
- integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
-
-"@types/node@*":
- version "14.14.6"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.6.tgz#146d3da57b3c636cc0d1769396ce1cfa8991147f"
- integrity sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw==
-
-"@types/parse-json@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
- integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
-
-"@types/q@^1.5.1":
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
- integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
-
-"@types/resolve@1.17.1":
- version "1.17.1"
- resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6"
- integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==
- dependencies:
- "@types/node" "*"
-
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
- integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
-ajv@^6.12.3:
- version "6.12.6"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
- integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
- dependencies:
- fast-deep-equal "^3.1.1"
- fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.4.1"
- uri-js "^4.2.2"
-
-alphanum-sort@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
- integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
-
-amdefine@>=0.0.4:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
- integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
- integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-
-ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
- integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
-ansi-regex@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
- integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
-
-ansi-regex@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
- integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
-
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
- integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-
-ansi-styles@^3.2.0, ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
- dependencies:
- color-convert "^1.9.0"
-
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
- dependencies:
- color-convert "^2.0.1"
-
-anymatch@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
- integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
- dependencies:
- micromatch "^3.1.4"
- normalize-path "^2.1.1"
-
-anymatch@~3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
- integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
- dependencies:
- normalize-path "^3.0.0"
- picomatch "^2.0.4"
-
-aproba@^1.0.3:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
- integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
-
-are-we-there-yet@~1.1.2:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
- integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
-argparse@^1.0.7:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
- integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
- dependencies:
- sprintf-js "~1.0.2"
-
-arr-diff@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
- integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
-arr-flatten@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
- integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-
-arr-union@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
- integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
-array-find-index@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
- integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
-
-array-union@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
- integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-
-array-unique@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
- integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-
-asn1@~0.2.3:
- version "0.2.4"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
- integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
- dependencies:
- safer-buffer "~2.1.0"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
- integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-
-assign-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
- integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
-async-each@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
- integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
-
-async-foreach@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
- integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
- integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
-
-at-least-node@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
- integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-
-atob@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
- integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-
-autoprefixer@^9.6.1:
- version "9.8.6"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f"
- integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==
- dependencies:
- browserslist "^4.12.0"
- caniuse-lite "^1.0.30001109"
- colorette "^1.2.1"
- normalize-range "^0.1.2"
- num2fraction "^1.2.2"
- postcss "^7.0.32"
- postcss-value-parser "^4.1.0"
-
-aws-sign2@~0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
- integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
-
-aws4@^1.8.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
- integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
-
-babel-helper-evaluate-path@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz#a62fa9c4e64ff7ea5cea9353174ef023a900a67c"
- integrity sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==
-
-babel-helper-flip-expressions@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz#3696736a128ac18bc25254b5f40a22ceb3c1d3fd"
- integrity sha1-NpZzahKKwYvCUlS19AoizrPB0/0=
-
-babel-helper-is-nodes-equiv@^0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
- integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=
-
-babel-helper-is-void-0@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz#7d9c01b4561e7b95dbda0f6eee48f5b60e67313e"
- integrity sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=
-
-babel-helper-mark-eval-scopes@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz#d244a3bef9844872603ffb46e22ce8acdf551562"
- integrity sha1-0kSjvvmESHJgP/tG4izorN9VFWI=
-
-babel-helper-remove-or-void@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz#a4f03b40077a0ffe88e45d07010dee241ff5ae60"
- integrity sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=
-
-babel-helper-to-multiple-sequence-expressions@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d"
- integrity sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==
-
-babel-plugin-dynamic-import-node@^2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
- integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
- dependencies:
- object.assign "^4.1.0"
-
-babel-plugin-minify-builtins@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz#31eb82ed1a0d0efdc31312f93b6e4741ce82c36b"
- integrity sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==
-
-babel-plugin-minify-constant-folding@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz#f84bc8dbf6a561e5e350ff95ae216b0ad5515b6e"
- integrity sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==
- dependencies:
- babel-helper-evaluate-path "^0.5.0"
-
-babel-plugin-minify-dead-code-elimination@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz#1a0c68e44be30de4976ca69ffc535e08be13683f"
- integrity sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==
- dependencies:
- babel-helper-evaluate-path "^0.5.0"
- babel-helper-mark-eval-scopes "^0.4.3"
- babel-helper-remove-or-void "^0.4.3"
- lodash "^4.17.11"
-
-babel-plugin-minify-flip-comparisons@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz#00ca870cb8f13b45c038b3c1ebc0f227293c965a"
- integrity sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=
- dependencies:
- babel-helper-is-void-0 "^0.4.3"
-
-babel-plugin-minify-guarded-expressions@^0.4.4:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz#818960f64cc08aee9d6c75bec6da974c4d621135"
- integrity sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==
- dependencies:
- babel-helper-evaluate-path "^0.5.0"
- babel-helper-flip-expressions "^0.4.3"
-
-babel-plugin-minify-infinity@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz#dfb876a1b08a06576384ef3f92e653ba607b39ca"
- integrity sha1-37h2obCKBldjhO8/kuZTumB7Oco=
-
-babel-plugin-minify-mangle-names@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz#bcddb507c91d2c99e138bd6b17a19c3c271e3fd3"
- integrity sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==
- dependencies:
- babel-helper-mark-eval-scopes "^0.4.3"
-
-babel-plugin-minify-numeric-literals@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz#8e4fd561c79f7801286ff60e8c5fd9deee93c0bc"
- integrity sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=
-
-babel-plugin-minify-replace@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz#d3e2c9946c9096c070efc96761ce288ec5c3f71c"
- integrity sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==
-
-babel-plugin-minify-simplify@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz#f21613c8b95af3450a2ca71502fdbd91793c8d6a"
- integrity sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==
- dependencies:
- babel-helper-evaluate-path "^0.5.0"
- babel-helper-flip-expressions "^0.4.3"
- babel-helper-is-nodes-equiv "^0.0.1"
- babel-helper-to-multiple-sequence-expressions "^0.5.0"
-
-babel-plugin-minify-type-constructors@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz#1bc6f15b87f7ab1085d42b330b717657a2156500"
- integrity sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=
- dependencies:
- babel-helper-is-void-0 "^0.4.3"
-
-babel-plugin-transform-inline-consecutive-adds@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz#323d47a3ea63a83a7ac3c811ae8e6941faf2b0d1"
- integrity sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=
-
-babel-plugin-transform-member-expression-literals@^6.9.4:
- version "6.9.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz#37039c9a0c3313a39495faac2ff3a6b5b9d038bf"
- integrity sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=
-
-babel-plugin-transform-merge-sibling-variables@^6.9.4:
- version "6.9.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz#85b422fc3377b449c9d1cde44087203532401dae"
- integrity sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=
-
-babel-plugin-transform-minify-booleans@^6.9.4:
- version "6.9.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz#acbb3e56a3555dd23928e4b582d285162dd2b198"
- integrity sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=
-
-babel-plugin-transform-property-literals@^6.9.4:
- version "6.9.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz#98c1d21e255736573f93ece54459f6ce24985d39"
- integrity sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=
- dependencies:
- esutils "^2.0.2"
-
-babel-plugin-transform-regexp-constructors@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz#58b7775b63afcf33328fae9a5f88fbd4fb0b4965"
- integrity sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=
-
-babel-plugin-transform-remove-console@^6.9.4:
- version "6.9.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780"
- integrity sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=
-
-babel-plugin-transform-remove-debugger@^6.9.4:
- version "6.9.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz#42b727631c97978e1eb2d199a7aec84a18339ef2"
- integrity sha1-QrcnYxyXl44estGZp67IShgznvI=
-
-babel-plugin-transform-remove-undefined@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz#80208b31225766c630c97fa2d288952056ea22dd"
- integrity sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==
- dependencies:
- babel-helper-evaluate-path "^0.5.0"
-
-babel-plugin-transform-simplify-comparison-operators@^6.9.4:
- version "6.9.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz#f62afe096cab0e1f68a2d753fdf283888471ceb9"
- integrity sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=
-
-babel-plugin-transform-undefined-to-void@^6.9.4:
- version "6.9.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280"
- integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=
-
-babel-preset-minify@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz#25f5d0bce36ec818be80338d0e594106e21eaa9f"
- integrity sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==
- dependencies:
- babel-plugin-minify-builtins "^0.5.0"
- babel-plugin-minify-constant-folding "^0.5.0"
- babel-plugin-minify-dead-code-elimination "^0.5.1"
- babel-plugin-minify-flip-comparisons "^0.4.3"
- babel-plugin-minify-guarded-expressions "^0.4.4"
- babel-plugin-minify-infinity "^0.4.3"
- babel-plugin-minify-mangle-names "^0.5.0"
- babel-plugin-minify-numeric-literals "^0.4.3"
- babel-plugin-minify-replace "^0.5.0"
- babel-plugin-minify-simplify "^0.5.1"
- babel-plugin-minify-type-constructors "^0.4.3"
- babel-plugin-transform-inline-consecutive-adds "^0.4.3"
- babel-plugin-transform-member-expression-literals "^6.9.4"
- babel-plugin-transform-merge-sibling-variables "^6.9.4"
- babel-plugin-transform-minify-booleans "^6.9.4"
- babel-plugin-transform-property-literals "^6.9.4"
- babel-plugin-transform-regexp-constructors "^0.4.3"
- babel-plugin-transform-remove-console "^6.9.4"
- babel-plugin-transform-remove-debugger "^6.9.4"
- babel-plugin-transform-remove-undefined "^0.5.0"
- babel-plugin-transform-simplify-comparison-operators "^6.9.4"
- babel-plugin-transform-undefined-to-void "^6.9.4"
- lodash "^4.17.11"
-
-balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
-base@^0.11.1:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
- integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
- dependencies:
- 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"
-
-bcrypt-pbkdf@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
- integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
- dependencies:
- tweetnacl "^0.14.3"
-
-binary-extensions@^1.0.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
- integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
-
-binary-extensions@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
- integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
-
-bindings@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
- integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
- dependencies:
- file-uri-to-path "1.0.0"
-
-boolbase@^1.0.0, boolbase@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@^2.3.1, braces@^2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
- integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
- dependencies:
- 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"
-
-braces@^3.0.1, braces@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
-browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.6.4, browserslist@^4.8.5:
- version "4.14.5"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.5.tgz#1c751461a102ddc60e40993639b709be7f2c4015"
- integrity sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==
- dependencies:
- caniuse-lite "^1.0.30001135"
- electron-to-chromium "^1.3.571"
- escalade "^3.1.0"
- node-releases "^1.1.61"
-
-builtin-modules@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
- integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==
-
-cache-base@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
- integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
- dependencies:
- 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"
-
-caller-callsite@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
- integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
- dependencies:
- callsites "^2.0.0"
-
-caller-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
- integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
- dependencies:
- caller-callsite "^2.0.0"
-
-callsites@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
- integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
-
-callsites@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
- integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-
-camelcase-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
- integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
- dependencies:
- camelcase "^2.0.0"
- map-obj "^1.0.0"
-
-camelcase@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
- integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-
-camelcase@^5.0.0:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
- integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-
-caniuse-api@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
- integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
- dependencies:
- browserslist "^4.0.0"
- caniuse-lite "^1.0.0"
- lodash.memoize "^4.1.2"
- lodash.uniq "^4.5.0"
-
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001135:
- version "1.0.30001151"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001151.tgz#1ddfde5e6fff02aad7940b4edb7d3ac76b0cb00b"
- integrity sha512-Zh3sHqskX6mHNrqUerh+fkf0N72cMxrmflzje/JyVImfpknscMnkeJrlFGJcqTmaa0iszdYptGpWMJCRQDkBVw==
-
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
- integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-
-chalk@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
- 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"
-
-chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
-
-chalk@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
- integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
- dependencies:
- ansi-styles "^4.1.0"
- supports-color "^7.1.0"
-
-chokidar@2.1.8:
- version "2.1.8"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
- integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
- dependencies:
- anymatch "^2.0.0"
- async-each "^1.0.1"
- braces "^2.3.2"
- glob-parent "^3.1.0"
- inherits "^2.0.3"
- is-binary-path "^1.0.0"
- is-glob "^4.0.0"
- normalize-path "^3.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.2.1"
- upath "^1.1.1"
- optionalDependencies:
- fsevents "^1.2.7"
-
-chokidar@^3.3.0, chokidar@^3.4.0:
- version "3.4.3"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b"
- integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==
- dependencies:
- anymatch "~3.1.1"
- braces "~3.0.2"
- glob-parent "~5.1.0"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.5.0"
- optionalDependencies:
- fsevents "~2.1.2"
-
-chownr@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
- integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
-
-class-utils@^0.3.5:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
- integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
- dependencies:
- arr-union "^3.1.0"
- define-property "^0.2.5"
- isobject "^3.0.0"
- static-extend "^0.1.1"
-
-cliui@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
- integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
- dependencies:
- string-width "^3.1.0"
- strip-ansi "^5.2.0"
- wrap-ansi "^5.1.0"
-
-cliui@^7.0.2:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.3.tgz#ef180f26c8d9bff3927ee52428bfec2090427981"
- integrity sha512-Gj3QHTkVMPKqwP3f7B4KPkBZRMR9r4rfi5bXFpg1a+Svvj8l7q5CnkBkVQzfxT5DFSsGk2+PascOgL0JYkL2kw==
- dependencies:
- string-width "^4.2.0"
- strip-ansi "^6.0.0"
- wrap-ansi "^7.0.0"
-
-coa@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
- integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
- dependencies:
- "@types/q" "^1.5.1"
- chalk "^2.4.1"
- q "^1.1.2"
-
-code-point-at@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
- integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-
-collection-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
- integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
- dependencies:
- map-visit "^1.0.0"
- object-visit "^1.0.0"
-
-color-convert@^1.9.0, color-convert@^1.9.1:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
- dependencies:
- color-name "1.1.3"
-
-color-convert@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
- integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
- dependencies:
- color-name "~1.1.4"
-
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
-color-name@^1.0.0, color-name@~1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-color-string@^1.5.4:
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6"
- integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==
- dependencies:
- color-name "^1.0.0"
- simple-swizzle "^0.2.2"
-
-color@^3.0.0:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
- integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==
- dependencies:
- color-convert "^1.9.1"
- color-string "^1.5.4"
-
-colorette@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
- integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
-
-combined-stream@^1.0.6, combined-stream@~1.0.6:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
- integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
- dependencies:
- delayed-stream "~1.0.0"
-
-commander@^4.0.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
- integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
-
-commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
- integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-
-component-emitter@^1.2.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
- integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
- integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-
-convert-source-map@^1.1.0, convert-source-map@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
- integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
- dependencies:
- safe-buffer "~5.1.1"
-
-copy-descriptor@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
- integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-
-core-js-compat@^3.6.2:
- version "3.6.5"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c"
- integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==
- dependencies:
- browserslist "^4.8.5"
- semver "7.0.0"
-
-core-js-pure@^3.0.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.7.0.tgz#28a57c861d5698e053f0ff36905f7a3301b4191e"
- integrity sha512-EZD2ckZysv8MMt4J6HSvS9K2GdtlZtdBncKAmF9lr2n0c9dJUaUN88PSTjvgwCgQPWKTkERXITgS6JJRAnljtg==
-
-core-js@3:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.7.0.tgz#b0a761a02488577afbf97179e4681bf49568520f"
- integrity sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA==
-
-core-util-is@1.0.2, core-util-is@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
- integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-cosmiconfig@^5.0.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
- integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
- dependencies:
- import-fresh "^2.0.0"
- is-directory "^0.3.1"
- js-yaml "^3.13.1"
- parse-json "^4.0.0"
-
-cosmiconfig@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3"
- integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==
- dependencies:
- "@types/parse-json" "^4.0.0"
- import-fresh "^3.2.1"
- parse-json "^5.0.0"
- path-type "^4.0.0"
- yaml "^1.10.0"
-
-cross-spawn@^6.0.5:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
- integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
- dependencies:
- nice-try "^1.0.4"
- path-key "^2.0.1"
- semver "^5.5.0"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
-cross-spawn@^7.0.3:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
- dependencies:
- path-key "^3.1.0"
- shebang-command "^2.0.0"
- which "^2.0.1"
-
-css-blank-pseudo@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5"
- integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==
- dependencies:
- postcss "^7.0.5"
-
-css-color-names@0.0.4, css-color-names@^0.0.4:
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
- integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
-
-css-declaration-sorter@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
- integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
- dependencies:
- postcss "^7.0.1"
- timsort "^0.3.0"
-
-css-has-pseudo@^0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee"
- integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==
- dependencies:
- postcss "^7.0.6"
- postcss-selector-parser "^5.0.0-rc.4"
-
-css-prefers-color-scheme@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4"
- integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==
- dependencies:
- postcss "^7.0.5"
-
-css-select-base-adapter@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
- integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
-
-css-select@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
- integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
- dependencies:
- boolbase "^1.0.0"
- css-what "^3.2.1"
- domutils "^1.7.0"
- nth-check "^1.0.2"
-
-css-tree@1.0.0-alpha.37:
- version "1.0.0-alpha.37"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
- integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
- dependencies:
- mdn-data "2.0.4"
- source-map "^0.6.1"
-
-css-tree@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0.tgz#21993fa270d742642a90409a2c0cb3ac0298adf6"
- integrity sha512-CdVYz/Yuqw0VdKhXPBIgi8DO3NicJVYZNWeX9XcIuSp9ZoFT5IcleVRW07O5rMjdcx1mb+MEJPknTTEW7DdsYw==
- dependencies:
- mdn-data "2.0.12"
- source-map "^0.6.1"
-
-css-what@^3.2.1:
- version "3.4.2"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
- integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
-
-cssdb@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0"
- integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==
-
-cssesc@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
- integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
-
-cssesc@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
- integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-
-cssnano-preset-default@^4.0.7:
- version "4.0.7"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
- integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
- dependencies:
- css-declaration-sorter "^4.0.1"
- cssnano-util-raw-cache "^4.0.1"
- postcss "^7.0.0"
- postcss-calc "^7.0.1"
- postcss-colormin "^4.0.3"
- postcss-convert-values "^4.0.1"
- postcss-discard-comments "^4.0.2"
- postcss-discard-duplicates "^4.0.2"
- postcss-discard-empty "^4.0.1"
- postcss-discard-overridden "^4.0.1"
- postcss-merge-longhand "^4.0.11"
- postcss-merge-rules "^4.0.3"
- postcss-minify-font-values "^4.0.2"
- postcss-minify-gradients "^4.0.2"
- postcss-minify-params "^4.0.2"
- postcss-minify-selectors "^4.0.2"
- postcss-normalize-charset "^4.0.1"
- postcss-normalize-display-values "^4.0.2"
- postcss-normalize-positions "^4.0.2"
- postcss-normalize-repeat-style "^4.0.2"
- postcss-normalize-string "^4.0.2"
- postcss-normalize-timing-functions "^4.0.2"
- postcss-normalize-unicode "^4.0.1"
- postcss-normalize-url "^4.0.1"
- postcss-normalize-whitespace "^4.0.2"
- postcss-ordered-values "^4.1.2"
- postcss-reduce-initial "^4.0.3"
- postcss-reduce-transforms "^4.0.2"
- postcss-svgo "^4.0.2"
- postcss-unique-selectors "^4.0.1"
-
-cssnano-util-get-arguments@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
- integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
-
-cssnano-util-get-match@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
- integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
-
-cssnano-util-raw-cache@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
- integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
- dependencies:
- postcss "^7.0.0"
-
-cssnano-util-same-parent@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
- integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
-
-cssnano@^4.1.10:
- version "4.1.10"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
- integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
- dependencies:
- cosmiconfig "^5.0.0"
- cssnano-preset-default "^4.0.7"
- is-resolvable "^1.0.0"
- postcss "^7.0.0"
-
-csso@^4.0.2:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/csso/-/csso-4.1.0.tgz#1d31193efa99b87aa6bad6c0cef155e543d09e8b"
- integrity sha512-h+6w/W1WqXaJA4tb1dk7r5tVbOm97MsKxzwnvOR04UQ6GILroryjMWu3pmCCtL2mLaEStQ0fZgeGiy99mo7iyg==
- dependencies:
- css-tree "^1.0.0"
-
-currently-unhandled@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
- integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
- dependencies:
- array-find-index "^1.0.1"
-
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
- dependencies:
- assert-plus "^1.0.0"
-
-debug@^2.2.0, debug@^2.3.3:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-debug@^4.1.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1"
- integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==
- dependencies:
- ms "2.1.2"
-
-decamelize@^1.1.2, decamelize@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
- integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-
-decode-uri-component@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
- integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
-
-deepmerge@^4.2.2:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
- integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
-
-define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
-define-property@^0.2.5:
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
- integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
- dependencies:
- is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
- integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
- dependencies:
- is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
- integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
- dependencies:
- is-descriptor "^1.0.2"
- isobject "^3.0.1"
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
- integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
-
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
- integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-
-dependency-graph@^0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.9.0.tgz#11aed7e203bc8b00f48356d92db27b265c445318"
- integrity sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==
-
-dir-glob@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
- integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
- dependencies:
- path-type "^4.0.0"
-
-dom-serializer@0:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
- integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
- dependencies:
- domelementtype "^2.0.1"
- entities "^2.0.0"
-
-domelementtype@1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
- integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-
-domelementtype@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971"
- integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==
-
-domutils@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
- integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
-dot-prop@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
- integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
- dependencies:
- is-obj "^2.0.0"
-
-ecc-jsbn@~0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
- integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
- dependencies:
- jsbn "~0.1.0"
- safer-buffer "^2.1.0"
-
-electron-to-chromium@^1.3.571:
- version "1.3.584"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.584.tgz#506cf7ba5895aafa8241876ab028654b61fd9ceb"
- integrity sha512-NB3DzrTzJFhWkUp+nl2KtUtoFzrfGXTir2S+BU4tXGyXH9vlluPuFpE3pTKeH7+PY460tHLjKzh6K2+TWwW+Ww==
-
-emoji-regex@^7.0.1:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
- integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
-
-emoji-regex@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
- integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
-entities@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
- integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==
-
-env-paths@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43"
- integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
-
-error-ex@^1.2.0, error-ex@^1.3.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
- integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
- dependencies:
- is-arrayish "^0.2.1"
-
-es-abstract@^1.17.0-next.1, es-abstract@^1.17.2:
- version "1.17.7"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
- integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
- dependencies:
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
- is-callable "^1.2.2"
- is-regex "^1.1.1"
- object-inspect "^1.8.0"
- object-keys "^1.1.1"
- object.assign "^4.1.1"
- string.prototype.trimend "^1.0.1"
- string.prototype.trimstart "^1.0.1"
-
-es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1:
- version "1.18.0-next.1"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68"
- integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==
- dependencies:
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
- is-callable "^1.2.2"
- is-negative-zero "^2.0.0"
- is-regex "^1.1.1"
- object-inspect "^1.8.0"
- object-keys "^1.1.1"
- object.assign "^4.1.1"
- string.prototype.trimend "^1.0.1"
- string.prototype.trimstart "^1.0.1"
-
-es-to-primitive@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
-escalade@^3.1.0, escalade@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
- integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
-esprima@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
- integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-
-estree-walker@^0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
- integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
-
-estree-walker@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
- integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
-
-estree-walker@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0"
- integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg==
-
-esutils@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
- integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-
-expand-brackets@^2.1.4:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
- integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
- 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"
-
-extend-shallow@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
- integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
- dependencies:
- is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
- integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
- dependencies:
- assign-symbols "^1.0.0"
- is-extendable "^1.0.1"
-
-extend@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
- integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
-extglob@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
- integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
- 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"
-
-extsprintf@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
- integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
-
-extsprintf@^1.2.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
- integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
-
-fast-deep-equal@^3.1.1:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
- integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-
-fast-glob@^3.1.1:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3"
- integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.0"
- merge2 "^1.3.0"
- micromatch "^4.0.2"
- picomatch "^2.2.1"
-
-fast-json-stable-stringify@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
- integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-
-fastq@^1.6.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481"
- integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==
- dependencies:
- reusify "^1.0.4"
-
-file-uri-to-path@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
- integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
-
-fill-range@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
- integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
- dependencies:
- extend-shallow "^2.0.1"
- is-number "^3.0.0"
- repeat-string "^1.6.1"
- to-regex-range "^2.1.0"
-
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
- dependencies:
- to-regex-range "^5.0.1"
-
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
- integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
- dependencies:
- path-exists "^2.0.0"
- pinkie-promise "^2.0.0"
-
-find-up@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
- integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
- dependencies:
- locate-path "^3.0.0"
-
-flatten@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b"
- integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==
-
-for-in@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
- integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
- integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
-
-form-data@~2.3.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
- integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.6"
- mime-types "^2.1.12"
-
-fragment-cache@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
- integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
- dependencies:
- map-cache "^0.2.2"
-
-fs-extra@^9.0.0:
- version "9.0.1"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc"
- integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==
- dependencies:
- at-least-node "^1.0.0"
- graceful-fs "^4.2.0"
- jsonfile "^6.0.1"
- universalify "^1.0.0"
-
-fs-minipass@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
- integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
- dependencies:
- minipass "^3.0.0"
-
-fs-readdir-recursive@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
- integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-fsevents@^1.2.7:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
- integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
- dependencies:
- bindings "^1.5.0"
- nan "^2.12.1"
-
-fsevents@~2.1.2:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
- integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
-
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
-gauge@~2.7.3:
- version "2.7.4"
- resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
- integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
- 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"
-
-gaze@^1.0.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a"
- integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==
- dependencies:
- globule "^1.0.0"
-
-gensync@^1.0.0-beta.1:
- version "1.0.0-beta.2"
- resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
- integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-
-get-caller-file@^2.0.1, get-caller-file@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
- integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-
-get-stdin@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
- integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
-
-get-stdin@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
- integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
-
-get-value@^2.0.3, get-value@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
- integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
- dependencies:
- assert-plus "^1.0.0"
-
-glob-parent@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
- integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
- dependencies:
- is-glob "^3.1.0"
- path-dirname "^1.0.0"
-
-glob-parent@^5.1.0, glob-parent@~5.1.0:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
- integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
- dependencies:
- is-glob "^4.0.1"
-
-glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1:
- version "7.1.6"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
- integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
- 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"
-
-globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
-globby@^11.0.0:
- version "11.0.1"
- resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
- integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
- dependencies:
- array-union "^2.1.0"
- dir-glob "^3.0.1"
- fast-glob "^3.1.1"
- ignore "^5.1.4"
- merge2 "^1.3.0"
- slash "^3.0.0"
-
-globule@^1.0.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.2.tgz#d8bdd9e9e4eef8f96e245999a5dee7eb5d8529c4"
- integrity sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==
- dependencies:
- glob "~7.1.1"
- lodash "~4.17.10"
- minimatch "~3.0.2"
-
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3:
- version "4.2.4"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
- integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
-
-har-schema@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
- integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-
-har-validator@~5.1.3:
- version "5.1.5"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
- integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
- dependencies:
- ajv "^6.12.3"
- har-schema "^2.0.0"
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
- dependencies:
- ansi-regex "^2.0.0"
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-
-has-flag@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
- integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
-has-symbols@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
- integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
-
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
- integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
-
-has-value@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
- integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
- dependencies:
- get-value "^2.0.3"
- has-values "^0.1.4"
- isobject "^2.0.0"
-
-has-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
- integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
- dependencies:
- get-value "^2.0.6"
- has-values "^1.0.0"
- isobject "^3.0.0"
-
-has-values@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
- integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
-
-has-values@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
- integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-has@^1.0.0, has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
-hex-color-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
- integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
-
-hosted-git-info@^2.1.4:
- version "2.8.8"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
- integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
-
-hsl-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
- integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
-
-hsla-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
- integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
-
-html-comment-regex@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
- integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
-
-http-signature@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
- integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
- dependencies:
- assert-plus "^1.0.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
-
-ignore@^5.1.4:
- version "5.1.8"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
- integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
-
-import-cwd@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92"
- integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==
- dependencies:
- import-from "^3.0.0"
-
-import-fresh@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
- integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
- dependencies:
- caller-path "^2.0.0"
- resolve-from "^3.0.0"
-
-import-fresh@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
- integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==
- dependencies:
- parent-module "^1.0.0"
- resolve-from "^4.0.0"
-
-import-from@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966"
- integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==
- dependencies:
- resolve-from "^5.0.0"
-
-indent-string@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
- integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
- dependencies:
- repeating "^2.0.0"
-
-indexes-of@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
- integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@^2.0.3, inherits@~2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-is-absolute-url@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
- integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
-
-is-accessor-descriptor@^0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
- integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
- dependencies:
- kind-of "^3.0.2"
-
-is-accessor-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
- integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
- dependencies:
- kind-of "^6.0.0"
-
-is-arrayish@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
- integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-
-is-arrayish@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
- integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-
-is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
- integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
- dependencies:
- binary-extensions "^1.0.0"
-
-is-binary-path@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
- dependencies:
- binary-extensions "^2.0.0"
-
-is-buffer@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
- integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-callable@^1.1.4, is-callable@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
- integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
-
-is-color-stop@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
- integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
- dependencies:
- css-color-names "^0.0.4"
- hex-color-regex "^1.1.0"
- hsl-regex "^1.0.0"
- hsla-regex "^1.0.0"
- rgb-regex "^1.0.1"
- rgba-regex "^1.0.0"
-
-is-core-module@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d"
- integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==
- dependencies:
- has "^1.0.3"
-
-is-data-descriptor@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
- integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
- dependencies:
- kind-of "^3.0.2"
-
-is-data-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
- integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
- dependencies:
- kind-of "^6.0.0"
-
-is-date-object@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
- integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
-
-is-descriptor@^0.1.0:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
- integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
- dependencies:
- is-accessor-descriptor "^0.1.6"
- is-data-descriptor "^0.1.4"
- kind-of "^5.0.0"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
- integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
- dependencies:
- is-accessor-descriptor "^1.0.0"
- is-data-descriptor "^1.0.0"
- kind-of "^6.0.2"
-
-is-directory@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
- integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
- integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
-
-is-extendable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
- integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
- dependencies:
- is-plain-object "^2.0.4"
-
-is-extglob@^2.1.0, is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-finite@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
- integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
-
-is-fullwidth-code-point@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
- integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
- dependencies:
- number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
- integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
-is-fullwidth-code-point@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
- integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
-is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
- dependencies:
- is-extglob "^2.1.0"
-
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
- integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
- integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
-
-is-negative-zero@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
- integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-obj@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
- integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
-
-is-plain-object@^2.0.3, is-plain-object@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
- dependencies:
- isobject "^3.0.1"
-
-is-reference@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
- integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
- dependencies:
- "@types/estree" "*"
-
-is-regex@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
- integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
- dependencies:
- has-symbols "^1.0.1"
-
-is-resolvable@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
- integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
-
-is-svg@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
- integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
- dependencies:
- html-comment-regex "^1.1.0"
-
-is-symbol@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
- integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
- dependencies:
- has-symbols "^1.0.1"
-
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
- integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-
-is-windows@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
- integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
- dependencies:
- isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
- integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
- integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-
-js-base64@^2.1.8:
- version "2.6.4"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
- integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
-
-js-cleanup@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/js-cleanup/-/js-cleanup-1.2.0.tgz#8dbc65954b1d38b255f1e8cf02cd17b3f7a053f9"
- integrity sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==
- dependencies:
- magic-string "^0.25.7"
- perf-regexes "^1.0.1"
- skip-regex "^1.0.2"
-
-js-tokens@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
- integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
-js-yaml@^3.13.1:
- version "3.14.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
- integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
- integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-
-jsesc@^2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-
-jsesc@~0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
- integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-
-json-parse-better-errors@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
- integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
-
-json-parse-even-better-errors@^2.3.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
- integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-
-json-schema-traverse@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
- integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
-json-schema@0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
- integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
- integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-
-json5@^2.1.2:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
- integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
- dependencies:
- minimist "^1.2.5"
-
-jsonfile@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
- integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==
- dependencies:
- universalify "^1.0.0"
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-jsprim@^1.2.2:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
- integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.2.3"
- verror "1.10.0"
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
- integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-
-kind-of@^6.0.0, kind-of@^6.0.2:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
- integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-
-line-column@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2"
- integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI=
- dependencies:
- isarray "^1.0.0"
- isobject "^2.0.0"
-
-lines-and-columns@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
- integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
-
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
- integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
- 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"
-
-load-json-file@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
- integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^4.0.0"
- pify "^3.0.0"
- strip-bom "^3.0.0"
-
-locate-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
- integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
- dependencies:
- p-locate "^3.0.0"
- path-exists "^3.0.0"
-
-lodash._reinterpolate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
- integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-
-lodash.difference@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
- integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=
-
-lodash.forown@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/lodash.forown/-/lodash.forown-4.4.0.tgz#85115cf04f73ef966eced52511d3893cc46683af"
- integrity sha1-hRFc8E9z75ZuztUlEdOJPMRmg68=
-
-lodash.get@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
- integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
-
-lodash.groupby@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1"
- integrity sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=
-
-lodash.memoize@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
- integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
-
-lodash.sortby@^4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
- integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
-
-lodash.template@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
- integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
- dependencies:
- lodash._reinterpolate "^3.0.0"
- lodash.templatesettings "^4.0.0"
-
-lodash.templatesettings@^4.0.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
- integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
- dependencies:
- lodash._reinterpolate "^3.0.0"
-
-lodash.uniq@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
- integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-
-lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@~4.17.10:
- version "4.17.20"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
- integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
-
-log-symbols@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920"
- integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==
- dependencies:
- chalk "^4.0.0"
-
-loud-rejection@^1.0.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
- integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
- dependencies:
- currently-unhandled "^0.4.1"
- signal-exit "^3.0.0"
-
-magic-string@^0.25.7:
- version "0.25.7"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
- integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
- dependencies:
- sourcemap-codec "^1.4.4"
-
-make-dir@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
- integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
- dependencies:
- pify "^4.0.1"
- semver "^5.6.0"
-
-map-cache@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
- integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-
-map-obj@^1.0.0, map-obj@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
- integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
-
-map-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
- integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
- dependencies:
- object-visit "^1.0.0"
-
-mdn-data@2.0.12:
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.12.tgz#bbb658d08b38f574bbb88f7b83703defdcc46844"
- integrity sha512-ULbAlgzVb8IqZ0Hsxm6hHSlQl3Jckst2YEQS7fODu9ilNWy2LvcoSY7TRFIktABP2mdppBioc66va90T+NUs8Q==
-
-mdn-data@2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
- integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
-
-memorystream@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
- integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
-
-meow@^3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
- integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
- 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"
-
-merge2@^1.3.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
- integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-
-micromatch@^3.1.10, micromatch@^3.1.4:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
- integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
- 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"
-
-micromatch@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
- integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
- dependencies:
- braces "^3.0.1"
- picomatch "^2.0.5"
-
-mime-db@1.44.0:
- version "1.44.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
- integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
-
-mime-types@^2.1.12, mime-types@~2.1.19:
- version "2.1.27"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
- integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
- dependencies:
- mime-db "1.44.0"
-
-minimatch@^3.0.4, minimatch@~3.0.2:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@^1.1.3, minimist@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
-
-minipass@^3.0.0:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
- integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
- dependencies:
- yallist "^4.0.0"
-
-minizlib@^2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
- integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
- dependencies:
- minipass "^3.0.0"
- yallist "^4.0.0"
-
-mixin-deep@^1.2.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
- integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
- dependencies:
- for-in "^1.0.2"
- is-extendable "^1.0.1"
-
-mkdirp@^0.5.1, mkdirp@~0.5.1:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
- integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
- dependencies:
- minimist "^1.2.5"
-
-mkdirp@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
- integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-nan@^2.12.1, nan@^2.13.2:
- version "2.14.2"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
- integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
-
-nanoid@^3.1.15:
- version "3.1.16"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.16.tgz#b21f0a7d031196faf75314d7c65d36352beeef64"
- integrity sha512-+AK8MN0WHji40lj8AEuwLOvLSbWYApQpre/aFJZD71r43wVRLrOYS4FmJOPQYon1TqB462RzrrxlfA74XRES8w==
-
-nanomatch@^1.2.9:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
- integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
- 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-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"
-
-nice-try@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
- integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
-node-gyp@^7.1.0:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae"
- integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==
- dependencies:
- env-paths "^2.2.0"
- glob "^7.1.4"
- graceful-fs "^4.2.3"
- nopt "^5.0.0"
- npmlog "^4.1.2"
- request "^2.88.2"
- rimraf "^3.0.2"
- semver "^7.3.2"
- tar "^6.0.2"
- which "^2.0.2"
-
-node-releases@^1.1.61:
- version "1.1.64"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.64.tgz#71b4ae988e9b1dd7c1ffce58dd9e561752dfebc5"
- integrity sha512-Iec8O9166/x2HRMJyLLLWkd0sFFLrFNy+Xf+JQfSQsdBJzPcHpNl3JQ9gD4j+aJxmCa25jNsIbM4bmACtSbkSg==
-
-node-sass@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-5.0.0.tgz#4e8f39fbef3bac8d2dc72ebe3b539711883a78d2"
- integrity sha512-opNgmlu83ZCF792U281Ry7tak9IbVC+AKnXGovcQ8LG8wFaJv6cLnRlc6DIHlmNxWEexB5bZxi9SZ9JyUuOYjw==
- dependencies:
- async-foreach "^0.1.3"
- chalk "^1.1.1"
- cross-spawn "^7.0.3"
- gaze "^1.0.0"
- get-stdin "^4.0.1"
- glob "^7.0.3"
- lodash "^4.17.15"
- meow "^3.7.0"
- mkdirp "^0.5.1"
- nan "^2.13.2"
- node-gyp "^7.1.0"
- npmlog "^4.0.0"
- request "^2.88.0"
- sass-graph "2.2.5"
- stdout-stream "^1.4.0"
- "true-case-path" "^1.0.2"
-
-nopt@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
- integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
- dependencies:
- abbrev "1"
-
-normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
- integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
- dependencies:
- hosted-git-info "^2.1.4"
- resolve "^1.10.0"
- semver "2 || 3 || 4 || 5"
- validate-npm-package-license "^3.0.1"
-
-normalize-path@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-normalize-path@^3.0.0, normalize-path@~3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
-
-normalize-url@^3.0.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
- integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
-
-npm-run-all@^4.1.5:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
- integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
- dependencies:
- ansi-styles "^3.2.1"
- chalk "^2.4.1"
- cross-spawn "^6.0.5"
- memorystream "^0.3.1"
- minimatch "^3.0.4"
- pidtree "^0.3.0"
- read-pkg "^3.0.0"
- shell-quote "^1.6.1"
- string.prototype.padend "^3.0.0"
-
-npmlog@^4.0.0, npmlog@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
- dependencies:
- are-we-there-yet "~1.1.2"
- console-control-strings "~1.1.0"
- gauge "~2.7.3"
- set-blocking "~2.0.0"
-
-nth-check@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
- integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
- dependencies:
- boolbase "~1.0.0"
-
-num2fraction@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
- integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
-
-number-is-nan@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
- integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-
-oauth-sign@~0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
- integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-
-object-assign@^4.0.1, object-assign@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-object-copy@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
- integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
- dependencies:
- copy-descriptor "^0.1.0"
- define-property "^0.2.5"
- kind-of "^3.0.3"
-
-object-inspect@^1.8.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
- integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
-
-object-keys@^1.0.12, object-keys@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object-visit@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
- integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
- dependencies:
- isobject "^3.0.0"
-
-object.assign@^4.1.0, object.assign@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd"
- integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.0"
- has-symbols "^1.0.1"
- object-keys "^1.1.1"
-
-object.getownpropertydescriptors@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
- integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.0-next.1"
-
-object.pick@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
- integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
- dependencies:
- isobject "^3.0.1"
-
-object.values@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e"
- integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.0-next.1"
- function-bind "^1.1.1"
- has "^1.0.3"
-
-once@^1.3.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
- dependencies:
- wrappy "1"
-
-p-limit@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
- integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
- dependencies:
- p-try "^2.0.0"
-
-p-locate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
- integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
- dependencies:
- p-limit "^2.0.0"
-
-p-try@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
- integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-
-parent-module@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
- integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
- dependencies:
- callsites "^3.0.0"
-
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
- dependencies:
- error-ex "^1.2.0"
-
-parse-json@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
- dependencies:
- error-ex "^1.3.1"
- json-parse-better-errors "^1.0.1"
-
-parse-json@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646"
- integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==
- dependencies:
- "@babel/code-frame" "^7.0.0"
- error-ex "^1.3.1"
- json-parse-even-better-errors "^2.3.0"
- lines-and-columns "^1.1.6"
-
-pascalcase@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
- integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-
-path-dirname@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
- integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-
-path-exists@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
- integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
- dependencies:
- pinkie-promise "^2.0.0"
-
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
- integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
-
-path-is-absolute@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-path-key@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-
-path-key@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
- integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-parse@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
- integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
-
-path-type@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
- integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
-path-type@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
- integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
- dependencies:
- pify "^3.0.0"
-
-path-type@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
- integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-
-perf-regexes@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/perf-regexes/-/perf-regexes-1.0.1.tgz#6da1d62f5a94bf9353a0451bccacf69068b75d0b"
- integrity sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==
-
-performance-now@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
- integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
-
-picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
- integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
-
-pidtree@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
- integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
-
-pify@^2.0.0, pify@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
-pify@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
- integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-
-pify@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
- integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-
-pinkie-promise@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
- integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
- dependencies:
- pinkie "^2.0.0"
-
-pinkie@^2.0.0:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
- integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
-
-posix-character-classes@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
- integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-
-postcss-attribute-case-insensitive@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880"
- integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==
- dependencies:
- postcss "^7.0.2"
- postcss-selector-parser "^6.0.2"
-
-postcss-calc@^7.0.1:
- version "7.0.5"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e"
- integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==
- dependencies:
- postcss "^7.0.27"
- postcss-selector-parser "^6.0.2"
- postcss-value-parser "^4.0.2"
-
-postcss-cli@^8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-8.1.0.tgz#cc93de3c652bf167a213ef689a855ae7fb1c8745"
- integrity sha512-FYuV5zyYX53X5RywInxjWLqHZ4oCBC3nDwrHYU3Z75mFqUo5IHfbeY593heWSagG90nPnXq3tXCck8+2CUl8EA==
- dependencies:
- chalk "^4.0.0"
- chokidar "^3.3.0"
- dependency-graph "^0.9.0"
- fs-extra "^9.0.0"
- get-stdin "^8.0.0"
- globby "^11.0.0"
- postcss-load-config "^3.0.0"
- postcss-reporter "^7.0.0"
- pretty-hrtime "^1.0.3"
- read-cache "^1.0.0"
- yargs "^16.0.0"
-
-postcss-color-functional-notation@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0"
- integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-color-gray@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547"
- integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==
- dependencies:
- "@csstools/convert-colors" "^1.4.0"
- postcss "^7.0.5"
- postcss-values-parser "^2.0.0"
-
-postcss-color-hex-alpha@^5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388"
- integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==
- dependencies:
- postcss "^7.0.14"
- postcss-values-parser "^2.0.1"
-
-postcss-color-mod-function@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d"
- integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==
- dependencies:
- "@csstools/convert-colors" "^1.4.0"
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-color-rebeccapurple@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77"
- integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-colormin@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
- integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
- dependencies:
- browserslist "^4.0.0"
- color "^3.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-convert-values@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
- integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-custom-media@^7.0.8:
- version "7.0.8"
- resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c"
- integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==
- dependencies:
- postcss "^7.0.14"
-
-postcss-custom-properties@^8.0.11:
- version "8.0.11"
- resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97"
- integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==
- dependencies:
- postcss "^7.0.17"
- postcss-values-parser "^2.0.1"
-
-postcss-custom-selectors@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba"
- integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==
- dependencies:
- postcss "^7.0.2"
- postcss-selector-parser "^5.0.0-rc.3"
-
-postcss-dir-pseudo-class@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2"
- integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==
- dependencies:
- postcss "^7.0.2"
- postcss-selector-parser "^5.0.0-rc.3"
-
-postcss-discard-comments@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
- integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
- dependencies:
- postcss "^7.0.0"
-
-postcss-discard-duplicates@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
- integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
- dependencies:
- postcss "^7.0.0"
-
-postcss-discard-empty@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
- integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
- dependencies:
- postcss "^7.0.0"
-
-postcss-discard-overridden@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
- integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
- dependencies:
- postcss "^7.0.0"
-
-postcss-double-position-gradients@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e"
- integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==
- dependencies:
- postcss "^7.0.5"
- postcss-values-parser "^2.0.0"
-
-postcss-env-function@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7"
- integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-focus-visible@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e"
- integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==
- dependencies:
- postcss "^7.0.2"
-
-postcss-focus-within@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680"
- integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==
- dependencies:
- postcss "^7.0.2"
-
-postcss-font-variant@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc"
- integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==
- dependencies:
- postcss "^7.0.2"
-
-postcss-gap-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715"
- integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==
- dependencies:
- postcss "^7.0.2"
-
-postcss-image-set-function@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288"
- integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-initial@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d"
- integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==
- dependencies:
- lodash.template "^4.5.0"
- postcss "^7.0.2"
-
-postcss-lab-function@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e"
- integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==
- dependencies:
- "@csstools/convert-colors" "^1.4.0"
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-load-config@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.0.0.tgz#850bb066edd65b734329eacf83af0c0764226c87"
- integrity sha512-lErrN8imuEF1cSiHBV8MiR7HeuzlDpCGNtaMyYHlOBuJHHOGw6S4xOMZp8BbXPr7AGQp14L6PZDlIOpfFJ6f7w==
- dependencies:
- cosmiconfig "^7.0.0"
- import-cwd "^3.0.0"
-
-postcss-logical@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5"
- integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==
- dependencies:
- postcss "^7.0.2"
-
-postcss-media-minmax@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5"
- integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==
- dependencies:
- postcss "^7.0.2"
-
-postcss-merge-longhand@^4.0.11:
- version "4.0.11"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
- integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
- dependencies:
- css-color-names "0.0.4"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- stylehacks "^4.0.0"
-
-postcss-merge-rules@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
- integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
- dependencies:
- browserslist "^4.0.0"
- caniuse-api "^3.0.0"
- cssnano-util-same-parent "^4.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
- vendors "^1.0.0"
-
-postcss-minify-font-values@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
- integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-minify-gradients@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
- integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- is-color-stop "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-minify-params@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
- integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
- dependencies:
- alphanum-sort "^1.0.0"
- browserslist "^4.0.0"
- cssnano-util-get-arguments "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- uniqs "^2.0.0"
-
-postcss-minify-selectors@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
- integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
- dependencies:
- alphanum-sort "^1.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
-
-postcss-nesting@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052"
- integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==
- dependencies:
- postcss "^7.0.2"
-
-postcss-normalize-charset@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
- integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
- dependencies:
- postcss "^7.0.0"
-
-postcss-normalize-display-values@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
- integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-positions@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
- integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-repeat-style@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
- integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-string@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
- integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
- dependencies:
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-timing-functions@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
- integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-unicode@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
- integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
- dependencies:
- browserslist "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-url@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
- integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
- dependencies:
- is-absolute-url "^2.0.0"
- normalize-url "^3.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-normalize-whitespace@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
- integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
- dependencies:
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-ordered-values@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
- integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
- dependencies:
- cssnano-util-get-arguments "^4.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-overflow-shorthand@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30"
- integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==
- dependencies:
- postcss "^7.0.2"
-
-postcss-page-break@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf"
- integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==
- dependencies:
- postcss "^7.0.2"
-
-postcss-place@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62"
- integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==
- dependencies:
- postcss "^7.0.2"
- postcss-values-parser "^2.0.0"
-
-postcss-preset-env@^6.7.0:
- version "6.7.0"
- resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5"
- integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==
- dependencies:
- autoprefixer "^9.6.1"
- browserslist "^4.6.4"
- caniuse-lite "^1.0.30000981"
- css-blank-pseudo "^0.1.4"
- css-has-pseudo "^0.10.0"
- css-prefers-color-scheme "^3.1.1"
- cssdb "^4.4.0"
- postcss "^7.0.17"
- postcss-attribute-case-insensitive "^4.0.1"
- postcss-color-functional-notation "^2.0.1"
- postcss-color-gray "^5.0.0"
- postcss-color-hex-alpha "^5.0.3"
- postcss-color-mod-function "^3.0.3"
- postcss-color-rebeccapurple "^4.0.1"
- postcss-custom-media "^7.0.8"
- postcss-custom-properties "^8.0.11"
- postcss-custom-selectors "^5.1.2"
- postcss-dir-pseudo-class "^5.0.0"
- postcss-double-position-gradients "^1.0.0"
- postcss-env-function "^2.0.2"
- postcss-focus-visible "^4.0.0"
- postcss-focus-within "^3.0.0"
- postcss-font-variant "^4.0.0"
- postcss-gap-properties "^2.0.0"
- postcss-image-set-function "^3.0.1"
- postcss-initial "^3.0.0"
- postcss-lab-function "^2.0.1"
- postcss-logical "^3.0.0"
- postcss-media-minmax "^4.0.0"
- postcss-nesting "^7.0.0"
- postcss-overflow-shorthand "^2.0.0"
- postcss-page-break "^2.0.0"
- postcss-place "^4.0.1"
- postcss-pseudo-class-any-link "^6.0.0"
- postcss-replace-overflow-wrap "^3.0.0"
- postcss-selector-matches "^4.0.0"
- postcss-selector-not "^4.0.0"
-
-postcss-pseudo-class-any-link@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1"
- integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==
- dependencies:
- postcss "^7.0.2"
- postcss-selector-parser "^5.0.0-rc.3"
-
-postcss-reduce-initial@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
- integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
- dependencies:
- browserslist "^4.0.0"
- caniuse-api "^3.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
-
-postcss-reduce-transforms@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
- integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
- dependencies:
- cssnano-util-get-match "^4.0.0"
- has "^1.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
-
-postcss-replace-overflow-wrap@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c"
- integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==
- dependencies:
- postcss "^7.0.2"
-
-postcss-reporter@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.0.1.tgz#463780d0d8d64f356403eba901fdeae71d988f2b"
- integrity sha512-R9AK80KIqqMb+lwGRBcRkXS7r96VCTxrZvvrfibyA/dWjqctwx7leHMCC05A9HbW8PnChwOWwrmISwp5HQu5wg==
- dependencies:
- colorette "^1.2.1"
- lodash.difference "^4.5.0"
- lodash.forown "^4.4.0"
- lodash.get "^4.4.2"
- lodash.groupby "^4.6.0"
- lodash.sortby "^4.7.0"
- log-symbols "^4.0.0"
-
-postcss-selector-matches@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff"
- integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==
- dependencies:
- balanced-match "^1.0.0"
- postcss "^7.0.2"
-
-postcss-selector-not@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0"
- integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==
- dependencies:
- balanced-match "^1.0.0"
- postcss "^7.0.2"
-
-postcss-selector-parser@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270"
- integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
- dependencies:
- dot-prop "^5.2.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
- integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
- dependencies:
- cssesc "^2.0.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss-selector-parser@^6.0.2:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3"
- integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==
- dependencies:
- cssesc "^3.0.0"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
- util-deprecate "^1.0.2"
-
-postcss-svgo@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
- integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
- dependencies:
- is-svg "^3.0.0"
- postcss "^7.0.0"
- postcss-value-parser "^3.0.0"
- svgo "^1.0.0"
-
-postcss-unique-selectors@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
- integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
- dependencies:
- alphanum-sort "^1.0.0"
- postcss "^7.0.0"
- uniqs "^2.0.0"
-
-postcss-value-parser@^3.0.0:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
- integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
-
-postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
- integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
-
-postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f"
- integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==
- dependencies:
- flatten "^1.0.2"
- indexes-of "^1.0.1"
- uniq "^1.0.1"
-
-postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
- version "7.0.35"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
- integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
- dependencies:
- chalk "^2.4.2"
- source-map "^0.6.1"
- supports-color "^6.1.0"
-
-postcss@^8.1.4:
- version "8.1.4"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.4.tgz#356dfef367a70f3d04347f74560c85846e20e4c1"
- integrity sha512-LfqcwgMq9LOd8pX7K2+r2HPitlIGC5p6PoZhVELlqhh2YGDVcXKpkCseqan73Hrdik6nBd2OvoDPUaP/oMj9hQ==
- dependencies:
- colorette "^1.2.1"
- line-column "^1.0.2"
- nanoid "^3.1.15"
- source-map "^0.6.1"
-
-pretty-hrtime@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
- integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=
-
-process-nextick-args@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
- integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
-psl@^1.1.28:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
- integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
-
-punycode@^2.1.0, punycode@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
- integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-
-q@^1.1.2:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
- integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
-
-qs@~6.5.2:
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
- integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-
-read-cache@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
- integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=
- dependencies:
- pify "^2.3.0"
-
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
- integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
- dependencies:
- find-up "^1.0.0"
- read-pkg "^1.0.0"
-
-read-pkg@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
- integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
- dependencies:
- load-json-file "^1.0.0"
- normalize-package-data "^2.3.2"
- path-type "^1.0.0"
-
-read-pkg@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
- integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
- dependencies:
- load-json-file "^4.0.0"
- normalize-package-data "^2.3.2"
- path-type "^3.0.0"
-
-readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6:
- version "2.3.7"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
- integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
- 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"
-
-readdirp@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
- integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
- dependencies:
- graceful-fs "^4.1.11"
- micromatch "^3.1.10"
- readable-stream "^2.0.2"
-
-readdirp@~3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
- integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
- dependencies:
- picomatch "^2.2.1"
-
-redent@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
- integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
- dependencies:
- indent-string "^2.1.0"
- strip-indent "^1.0.1"
-
-regenerate-unicode-properties@^8.2.0:
- version "8.2.0"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
- integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
- dependencies:
- regenerate "^1.4.0"
-
-regenerate@^1.4.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f"
- integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==
-
-regenerator-runtime@^0.13.4:
- version "0.13.7"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
- integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
-
-regenerator-transform@^0.14.2:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
- integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
- dependencies:
- "@babel/runtime" "^7.8.4"
-
-regex-not@^1.0.0, regex-not@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
- integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
- dependencies:
- extend-shallow "^3.0.2"
- safe-regex "^1.1.0"
-
-regexpu-core@^4.7.1:
- version "4.7.1"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
- integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
- dependencies:
- regenerate "^1.4.0"
- regenerate-unicode-properties "^8.2.0"
- regjsgen "^0.5.1"
- regjsparser "^0.6.4"
- unicode-match-property-ecmascript "^1.0.4"
- unicode-match-property-value-ecmascript "^1.2.0"
-
-regjsgen@^0.5.1:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
- integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
-
-regjsparser@^0.6.4:
- version "0.6.4"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272"
- integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==
- dependencies:
- jsesc "~0.5.0"
-
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
- integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
-repeat-element@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
- integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
-
-repeat-string@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
- integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
- dependencies:
- is-finite "^1.0.0"
-
-request@^2.88.0, request@^2.88.2:
- version "2.88.2"
- resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
- integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.8.0"
- caseless "~0.12.0"
- combined-stream "~1.0.6"
- extend "~3.0.2"
- forever-agent "~0.6.1"
- form-data "~2.3.2"
- har-validator "~5.1.3"
- http-signature "~1.2.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.19"
- oauth-sign "~0.9.0"
- performance-now "^2.1.0"
- qs "~6.5.2"
- safe-buffer "^5.1.2"
- tough-cookie "~2.5.0"
- tunnel-agent "^0.6.0"
- uuid "^3.3.2"
-
-require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
- integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
-
-require-main-filename@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
- integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
-
-resolve-from@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
- integrity sha1-six699nWiBvItuZTM17rywoYh0g=
-
-resolve-from@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
- integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-
-resolve-from@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
- integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-
-resolve-url@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
- integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-
-resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1:
- version "1.18.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130"
- integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==
- dependencies:
- is-core-module "^2.0.0"
- path-parse "^1.0.6"
-
-ret@~0.1.10:
- version "0.1.15"
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
- integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-
-reusify@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
- integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-
-rgb-regex@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
- integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
-
-rgba-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
- integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
-
-rimraf@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
- integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
- dependencies:
- glob "^7.1.3"
-
-rollup-plugin-cleanup@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz#8cbc92ecf58babd7c210051929797f137bbf777c"
- integrity sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ==
- dependencies:
- js-cleanup "^1.2.0"
- rollup-pluginutils "^2.8.2"
-
-rollup-pluginutils@^2.8.2:
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
- integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
- dependencies:
- estree-walker "^0.6.1"
-
-rollup@^2.33.1:
- version "2.33.1"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.33.1.tgz#802795164164ee63cd47769d8879c33ec8ae0c40"
- integrity sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==
- optionalDependencies:
- fsevents "~2.1.2"
-
-run-parallel@^1.1.9:
- version "1.1.10"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef"
- integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==
-
-safe-buffer@^5.0.1, safe-buffer@^5.1.2:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
- integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
- dependencies:
- ret "~0.1.10"
-
-safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-sass-graph@2.2.5:
- version "2.2.5"
- resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8"
- integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==
- dependencies:
- glob "^7.0.0"
- lodash "^4.0.0"
- scss-tokenizer "^0.2.3"
- yargs "^13.3.2"
-
-sax@~1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
- integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-
-scss-tokenizer@^0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
- integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE=
- dependencies:
- js-base64 "^2.1.8"
- source-map "^0.4.2"
-
-"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
- integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-
-semver@7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
- integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-
-semver@^7.3.2:
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
- integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
-
-set-blocking@^2.0.0, set-blocking@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
- integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-
-set-value@^2.0.0, set-value@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
- integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.3"
- split-string "^3.0.1"
-
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
- dependencies:
- shebang-regex "^1.0.0"
-
-shebang-command@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
- integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
- dependencies:
- shebang-regex "^3.0.0"
-
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
-shebang-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
- integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-shell-quote@^1.6.1:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
- integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
-
-signal-exit@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
- integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
-
-simple-swizzle@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
- integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
- dependencies:
- is-arrayish "^0.3.1"
-
-skip-regex@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/skip-regex/-/skip-regex-1.0.2.tgz#ac655d77e7c771ac2b9f37585fea37bff56ad65b"
- integrity sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==
-
-slash@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
- integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
-
-slash@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
- integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-
-snapdragon-node@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
- integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
- dependencies:
- define-property "^1.0.0"
- isobject "^3.0.0"
- snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
- integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
- dependencies:
- kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
- integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
- 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"
-
-source-map-resolve@^0.5.0:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
- integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
- dependencies:
- atob "^2.1.2"
- decode-uri-component "^0.2.0"
- resolve-url "^0.2.1"
- source-map-url "^0.4.0"
- urix "^0.1.0"
-
-source-map-url@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
- integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-
-source-map@^0.4.2:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
- integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
- dependencies:
- amdefine ">=0.0.4"
-
-source-map@^0.5.0, source-map@^0.5.6:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
-source-map@^0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-sourcemap-codec@^1.4.4:
- version "1.4.8"
- resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
- integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
-
-spdx-correct@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
- integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
- dependencies:
- spdx-expression-parse "^3.0.0"
- spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
- integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
-
-spdx-expression-parse@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
- integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce"
- integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==
-
-split-string@^3.0.1, split-string@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
- integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
- dependencies:
- extend-shallow "^3.0.0"
-
-sprintf-js@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
- integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
-sshpk@^1.7.0:
- version "1.16.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
- integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- bcrypt-pbkdf "^1.0.0"
- dashdash "^1.12.0"
- ecc-jsbn "~0.1.1"
- getpass "^0.1.1"
- jsbn "~0.1.0"
- safer-buffer "^2.0.2"
- tweetnacl "~0.14.0"
-
-stable@^0.1.8:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
- integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-
-static-extend@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
- integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
- dependencies:
- define-property "^0.2.5"
- object-copy "^0.1.0"
-
-stdout-stream@^1.4.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de"
- integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==
- dependencies:
- readable-stream "^2.0.1"
-
-string-width@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-"string-width@^1.0.2 || 2":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
-string-width@^3.0.0, string-width@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
- integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
- dependencies:
- emoji-regex "^7.0.1"
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^5.1.0"
-
-string-width@^4.1.0, string-width@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
- integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.0"
-
-string.prototype.padend@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3"
- integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.0-next.1"
-
-string.prototype.trimend@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46"
- integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
-
-string.prototype.trimstart@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7"
- integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.18.0-next.1"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
- integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
- dependencies:
- ansi-regex "^2.0.0"
-
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
- dependencies:
- ansi-regex "^3.0.0"
-
-strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
- integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
- dependencies:
- ansi-regex "^4.1.0"
-
-strip-ansi@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
- integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
- dependencies:
- ansi-regex "^5.0.0"
-
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
- dependencies:
- is-utf8 "^0.2.0"
-
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
- integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
-
-strip-indent@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
- integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
- dependencies:
- get-stdin "^4.0.1"
-
-stylehacks@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
- integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
- dependencies:
- browserslist "^4.0.0"
- postcss "^7.0.0"
- postcss-selector-parser "^3.0.0"
-
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
- integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
-supports-color@^5.3.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
-supports-color@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
- integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
- dependencies:
- has-flag "^3.0.0"
-
-supports-color@^7.1.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
- integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
- dependencies:
- has-flag "^4.0.0"
-
-svgo@^1.0.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
- integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
- dependencies:
- chalk "^2.4.1"
- coa "^2.0.2"
- css-select "^2.0.0"
- css-select-base-adapter "^0.1.1"
- css-tree "1.0.0-alpha.37"
- csso "^4.0.2"
- js-yaml "^3.13.1"
- mkdirp "~0.5.1"
- object.values "^1.1.0"
- sax "~1.2.4"
- stable "^0.1.8"
- unquote "~1.1.1"
- util.promisify "~1.0.0"
-
-tar@^6.0.2:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f"
- integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==
- dependencies:
- chownr "^2.0.0"
- fs-minipass "^2.0.0"
- minipass "^3.0.0"
- minizlib "^2.1.1"
- mkdirp "^1.0.3"
- yallist "^4.0.0"
-
-timsort@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
- integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
-
-to-fast-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-
-to-object-path@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
- integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
- dependencies:
- kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
- integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
- dependencies:
- is-number "^3.0.0"
- repeat-string "^1.6.1"
-
-to-regex-range@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
- dependencies:
- is-number "^7.0.0"
-
-to-regex@^3.0.1, to-regex@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
- integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
- dependencies:
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- regex-not "^1.0.2"
- safe-regex "^1.1.0"
-
-tough-cookie@~2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
- integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
- dependencies:
- psl "^1.1.28"
- punycode "^2.1.1"
-
-trim-newlines@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
- integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
-
-"true-case-path@^1.0.2":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d"
- integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==
- dependencies:
- glob "^7.1.2"
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
- dependencies:
- safe-buffer "^5.0.1"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
- integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
-
-unicode-canonical-property-names-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
- integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
-
-unicode-match-property-ecmascript@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
- integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
- dependencies:
- unicode-canonical-property-names-ecmascript "^1.0.4"
- unicode-property-aliases-ecmascript "^1.0.4"
-
-unicode-match-property-value-ecmascript@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
- integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
-
-unicode-property-aliases-ecmascript@^1.0.4:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
- integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
-
-union-value@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
- integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
- dependencies:
- arr-union "^3.1.0"
- get-value "^2.0.6"
- is-extendable "^0.1.1"
- set-value "^2.0.1"
-
-uniq@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
- integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
-
-uniqs@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
- integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
-
-universalify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
- integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
-
-unquote@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
- integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
-
-unset-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
- integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
- dependencies:
- has-value "^0.3.1"
- isobject "^3.0.0"
-
-upath@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
- integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
-
-uri-js@^4.2.2:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
- integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==
- dependencies:
- punycode "^2.1.0"
-
-urix@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
- integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-
-use@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
- integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-
-util-deprecate@^1.0.2, util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-
-util.promisify@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
- integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
- dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.2"
- has-symbols "^1.0.1"
- object.getownpropertydescriptors "^2.1.0"
-
-uuid@^3.3.2:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
- integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-
-validate-npm-package-license@^3.0.1:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
- integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
- dependencies:
- spdx-correct "^3.0.0"
- spdx-expression-parse "^3.0.0"
-
-vendors@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
- integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
-
-verror@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
- dependencies:
- assert-plus "^1.0.0"
- core-util-is "1.0.2"
- extsprintf "^1.2.0"
-
-whatwg-fetch@^3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868"
- integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==
-
-which-module@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
- integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-
-which@^1.2.9:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
- dependencies:
- isexe "^2.0.0"
-
-which@^2.0.1, which@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
- integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
- dependencies:
- isexe "^2.0.0"
-
-wide-align@^1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
- integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
- dependencies:
- string-width "^1.0.2 || 2"
-
-wrap-ansi@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
- integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
- dependencies:
- ansi-styles "^3.2.0"
- string-width "^3.0.0"
- strip-ansi "^5.0.0"
-
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
-y18n@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
- integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
-
-y18n@^5.0.2:
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18"
- integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==
-
-yallist@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
-yaml@^1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
- integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
-
-yargs-parser@^13.1.2:
- version "13.1.2"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
- integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
- dependencies:
- camelcase "^5.0.0"
- decamelize "^1.2.0"
-
-yargs-parser@^20.2.2:
- version "20.2.3"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.3.tgz#92419ba867b858c868acf8bae9bf74af0dd0ce26"
- integrity sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww==
-
-yargs@^13.3.2:
- version "13.3.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
- integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
- dependencies:
- cliui "^5.0.0"
- find-up "^3.0.0"
- get-caller-file "^2.0.1"
- require-directory "^2.1.1"
- require-main-filename "^2.0.0"
- set-blocking "^2.0.0"
- string-width "^3.0.0"
- which-module "^2.0.0"
- y18n "^4.0.0"
- yargs-parser "^13.1.2"
-
-yargs@^16.0.0:
- version "16.1.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.1.0.tgz#fc333fe4791660eace5a894b39d42f851cd48f2a"
- integrity sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g==
- dependencies:
- cliui "^7.0.2"
- escalade "^3.1.1"
- get-caller-file "^2.0.5"
- require-directory "^2.1.1"
- string-width "^4.2.0"
- y18n "^5.0.2"
- yargs-parser "^20.2.2"
diff --git a/src/Admin/includes/no-preview-url-set.php b/src/Admin/includes/no-preview-url-set.php
index 09d4952..7deb1b3 100644
--- a/src/Admin/includes/no-preview-url-set.php
+++ b/src/Admin/includes/no-preview-url-set.php
@@ -7,7 +7,7 @@
Preview
diff --git a/src/Admin/includes/post-type-not-shown-in-graphql.php b/src/Admin/includes/post-type-not-shown-in-graphql.php
index ccf989f..5b33c7d 100644
--- a/src/Admin/includes/post-type-not-shown-in-graphql.php
+++ b/src/Admin/includes/post-type-not-shown-in-graphql.php
@@ -7,7 +7,7 @@
Preview error
diff --git a/src/Admin/includes/preview-template.php b/src/Admin/includes/preview-template.php
index de75b63..adb03eb 100644
--- a/src/Admin/includes/preview-template.php
+++ b/src/Admin/includes/preview-template.php
@@ -2,8 +2,11 @@
use WPGatsby\Admin\Preview;
-$preview_url = Preview::get_gatsby_preview_instance_url();
-$use_gatsby_content_sync = Preview::get_setting( 'use_gatsby_content_sync' );
+global $post;
+
+$gatsby_content_sync_url = Preview::get_gatsby_content_sync_url_for_post(
+ $post
+);
?>
@@ -12,66 +15,30 @@
- Preview
+ Gatsby Preview
-
-
-
-
-
-
+
The Preview couldn't be loaded
- The Preview frontend url set on the
- settings
- page isn't working properly.
-
-
- Preview URL:
-
-
-
+ >settings page.
diff --git a/src/Admin/includes/style.css b/src/Admin/includes/style.css
new file mode 100644
index 0000000..6d216f8
--- /dev/null
+++ b/src/Admin/includes/style.css
@@ -0,0 +1,193 @@
+#loader {
+ position: fixed;
+ top: 32px;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ height: calc(100% - 46px);
+ background: white;
+ z-index: 100;
+ text-align: center;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ opacity: 1;
+ transition: 0.125s ease-out opacity;
+ padding: 0 50px;
+ box-sizing: border-box;
+}
+
+@media (max-width: 782px) {
+ #loader {
+ top: 46px;
+ }
+}
+
+#loader.loaded {
+ opacity: 0;
+}
+
+button {
+ font-size: 1rem;
+ padding: 15px 30px;
+ cursor: pointer;
+ font-weight: medium;
+ color: white !important;
+ background: rebeccapurple;
+ border: none;
+ margin-top: 20px;
+ letter-spacing: 0.25px;
+}
+
+h1,
+h2,
+pre,
+p,
+li,
+b,
+button {
+ font-family: "Futura PT", -apple-system, "BlinkMacSystemFont", "Segoe UI",
+ "Roboto", "Helvetica Neue", "Arial", "Noto Sans", sans-serif,
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ line-height: 1.45;
+}
+
+b,
+p,
+button {
+ color: #272727;
+}
+
+h1,
+h2 {
+ color: rebeccapurple;
+}
+
+h1 {
+ display: block;
+ font-size: 2em;
+ margin-block-start: 0.67em;
+ margin-block-end: 0.67em;
+ margin-inline-start: 0px;
+ margin-inline-end: 0px;
+ font-weight: bold;
+}
+
+body {
+ font-size: 18px;
+}
+
+#gatsby-loading-logo {
+ max-width: 80%;
+ width: 64px;
+ height: 64px;
+ margin: 0 auto;
+ margin-bottom: 10px;
+ box-shadow: 0 0 0 rgba(102, 51, 153, 0.4);
+ -webkit-animation: pulse 2s infinite;
+ animation: pulse 2s infinite;
+ border-radius: 50%;
+}
+
+@-webkit-keyframes pulse {
+ 0% {
+ box-shadow: 0 0 0 0 rgba(102, 51, 153, 0.4);
+ }
+ 70% {
+ box-shadow: 0 0 0 30px rgba(102, 51, 153, 0);
+ }
+ 100% {
+ box-shadow: 0 0 0 0 rgba(102, 51, 153, 0);
+ }
+}
+
+@keyframes pulse {
+ 0% {
+ box-shadow: 0 0 0 0 rgba(102, 51, 153, 0.4);
+ }
+ 70% {
+ box-shadow: 0 0 0 30px rgba(102, 51, 153, 0);
+ }
+ 100% {
+ box-shadow: 0 0 0 0 rgba(102, 51, 153, 0);
+ }
+}
+
+.content {
+ width: 100%;
+ left: 0;
+ padding-top: 46px;
+ padding-bottom: 70px;
+ min-height: 100%;
+ min-height: calc(100vh - 46px);
+ box-sizing: border-box;
+
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+}
+
+#preview-loader-warning,
+.content {
+ max-width: 80%;
+ width: 800px;
+ margin: 0 auto;
+}
+
+.content p {
+ margin: 0 auto;
+}
+
+iframe {
+ position: fixed;
+
+ width: 100%;
+ left: 0;
+
+ top: 46px;
+ height: 100%;
+ height: calc(100vh - 46px);
+}
+
+@media (min-width: 783px) {
+ iframe {
+ top: 32px;
+ height: calc(100vh - 32px);
+ }
+}
+
+pre {
+ white-space: pre-wrap; /* css-3 */
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+
+ background: #f1f1f1;
+ padding: 50px 40px 40px 80px;
+ margin-bottom: 50px;
+
+ position: relative;
+ max-width: 640px;
+ box-sizing: border-box;
+}
+
+br {
+ line-height: 1.75;
+}
+
+#error-message-element::before {
+ content: "Error";
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: 5px 10px;
+ background: rebeccapurple;
+ color: white;
+ font-size: 12px;
+}
+
+a[target="_blank"]::after {
+ content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==);
+ margin: 0 3px 0 5px;
+}
diff --git a/src/GraphQL/Auth.php b/src/GraphQL/Auth.php
index b7454e7..7bd5ee5 100644
--- a/src/GraphQL/Auth.php
+++ b/src/GraphQL/Auth.php
@@ -3,20 +3,19 @@
namespace WPGatsby\GraphQL;
use \Firebase\JWT\JWT;
-use \WPGatsby\Admin\Preview;
+use \WPGatsby\Admin\Settings;
class Auth {
static function get_token() {
$site_url = get_bloginfo( 'url' );
- $preview_url = Preview::get_gatsby_preview_instance_url();
- $secret = Preview::get_setting( 'preview_jwt_secret' );
+ $secret = Settings::get_setting( 'preview_jwt_secret' );
$now = time();
$expiry = $now + 3600;
$user_id = get_current_user_id();
$payload = [
'iss' => $site_url,
- 'aud' => $preview_url,
+ 'aud' => $site_url,
'iat' => $now,
'nbf' => $now,
'exp' => $expiry,
diff --git a/src/GraphQL/ParseAuthToken.php b/src/GraphQL/ParseAuthToken.php
index 737f0b0..b080480 100644
--- a/src/GraphQL/ParseAuthToken.php
+++ b/src/GraphQL/ParseAuthToken.php
@@ -3,7 +3,7 @@
namespace WPGatsby\GraphQL;
use \Firebase\JWT\JWT;
-use \WPGatsby\Admin\Preview;
+use \WPGatsby\Admin\Settings;
class ParseAuthToken {
function __construct() {
@@ -14,7 +14,7 @@ function set_current_user() {
$jwt = $_SERVER['HTTP_WPGATSBYPREVIEW'] ?? null;
if ( $jwt ) {
- $secret = Preview::get_setting( 'preview_jwt_secret' );
+ $secret = Settings::get_setting( 'preview_jwt_secret' );
$decoded = JWT::decode( $jwt, $secret, [ 'HS256' ] );
$decoded_user_id = $decoded->data->user_id ?? null;
diff --git a/wp-gatsby.php b/wp-gatsby.php
index 938658a..078e661 100644
--- a/wp-gatsby.php
+++ b/wp-gatsby.php
@@ -2,7 +2,7 @@
/**
* Plugin Name: WP Gatsby
* Description: Optimize your WordPress site to be a source for Gatsby sites.
- * Version: 1.1.4
+ * Version: 2.0.1
* Author: GatsbyJS, Jason Bahl, Tyler Barnes
* Author URI: https://gatsbyjs.org
* Text Domain: wp-gatsby
@@ -103,7 +103,7 @@ private function setup_constants()
{
// Plugin version.
if (! defined('WPGATSBY_VERSION') ) {
- define('WPGATSBY_VERSION', '1.1.4');
+ define('WPGATSBY_VERSION', '2.0.1');
}
// Plugin Folder Path.