Mollie Payments for WooCommerce - Version 7.3.1

Version Description

  • 13-09-2022 =

  • Fix - When refunding from Mollie profile order notes and status not updated

  • Fix - Error on checkout block, surcharge added for all payment methods

  • Fix - PayPal button display issues

  • Fix - Logs created when logging is disabled

  • Fix - Bank Transfer disappears on order pay page

  • Fix - Surcharge value not including VAT

  • Fix - UTM parameters missing in mollie.com links

  • Fix - Voucher category does not reflect on variations

  • Fix - Issuers dropdown not loading

  • Fix - Querying gateway settings on every page load

  • Fix - Inconsistency in expiry date terms

  • Fix - Filter should allow SDD enabled without WooCommerce Subscriptions active

  • Fix - Change link to API key profile in mollie.com

  • Fix - Translations errors

  • Fix - Conflict with SSH SFTP Updater Support

  • Fix - Error when customer attempts payment with non-Mollie method after expiration

Download this release

Release Info

Developer carmen222
Plugin Icon wp plugin Mollie Payments for WooCommerce
Version 7.3.1
Comparing to
See all releases

Code changes from version 7.3.0 to 7.3.1

inc/utils.php CHANGED
@@ -111,16 +111,18 @@ function mollieWooCommerceCheckIfNeedShipping($product)
111
  ) {
112
  return false;
113
  }
114
- $needs_shipping = false;
115
- if ($product->is_type('variable')) {
116
- return false;
117
- }
118
-
119
- if ($product->needs_shipping()) {
120
- $needs_shipping = true;
 
 
121
  }
122
 
123
- return $needs_shipping;
124
  }
125
 
126
  function checkIndexExistOrDefault($array, $key, $default)
@@ -168,24 +170,6 @@ function mollieWooCommerceIsMollieGateway($gateway)
168
  return false;
169
  }
170
 
171
- function mollieWooCommercIsExpiryDateEnabled()
172
- {
173
- global $wpdb;
174
- $option = 'mollie_wc_gateway_%_settings';
175
- $gatewaySettings = $wpdb->get_results($wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name LIKE %s", $option));
176
- $expiryDateEnabled = false;
177
- foreach ($gatewaySettings as $gatewaySetting) {
178
- $values = unserialize($gatewaySetting->option_value);
179
- if ($values['enabled'] !== 'yes') {
180
- continue;
181
- }
182
- if (!empty($values["activate_expiry_days_setting"]) && $values["activate_expiry_days_setting"] === 'yes') {
183
- $expiryDateEnabled = true;
184
- }
185
- }
186
- return $expiryDateEnabled;
187
- }
188
-
189
  /**
190
  * Format the value that is sent to Mollie's API
191
  * with the required number of decimals
@@ -209,7 +193,9 @@ function mollieDeleteWPTranslationFiles()
209
  {
210
  WP_Filesystem();
211
  global $wp_filesystem;
212
-
 
 
213
  $remote_destination = $wp_filesystem->find_folder(WP_LANG_DIR);
214
  if (!$wp_filesystem->exists($remote_destination)) {
215
  return;
111
  ) {
112
  return false;
113
  }
114
+ //variations might be virtual
115
+ if ($product->is_type('variable')) {
116
+ $variations = $product->get_available_variations();
117
+ foreach ($variations as $variation) {
118
+ if($variation["is_virtual"]) {
119
+ return false;
120
+ }
121
+ }
122
+ return true;
123
  }
124
 
125
+ return $product->needs_shipping();
126
  }
127
 
128
  function checkIndexExistOrDefault($array, $key, $default)
170
  return false;
171
  }
172
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  /**
174
  * Format the value that is sent to Mollie's API
175
  * with the required number of decimals
193
  {
194
  WP_Filesystem();
195
  global $wp_filesystem;
196
+ if (!$wp_filesystem) {
197
+ return;
198
+ }
199
  $remote_destination = $wp_filesystem->find_folder(WP_LANG_DIR);
200
  if (!$wp_filesystem->exists($remote_destination)) {
201
  return;
languages/mollie-payments-for-woocommerce-de_DE.mo CHANGED
Binary file
languages/mollie-payments-for-woocommerce-de_DE_formal.mo CHANGED
Binary file
languages/mollie-payments-for-woocommerce-es_ES.mo CHANGED
Binary file
languages/mollie-payments-for-woocommerce-fr_FR.mo CHANGED
Binary file
languages/mollie-payments-for-woocommerce-it_IT.mo CHANGED
Binary file
languages/mollie-payments-for-woocommerce-nl_BE.mo CHANGED
Binary file
languages/mollie-payments-for-woocommerce-nl_BE_formal.mo CHANGED
Binary file
languages/mollie-payments-for-woocommerce-nl_NL.mo CHANGED
Binary file
languages/mollie-payments-for-woocommerce-nl_NL_formal.mo CHANGED
Binary file
languages/mollie-payments-for-woocommerce.pot CHANGED
@@ -1330,17 +1330,17 @@ msgstr ""
1330
 
1331
  #: build/src/Mollie/WC/Gateway/Abstract.php:2580
1332
  #: src/Mollie/WC/Gateway/Abstract.php:2580
1333
- msgid "A + %1s %2s fee might apply"
1334
  msgstr ""
1335
 
1336
  #: build/src/Mollie/WC/Gateway/Abstract.php:2590
1337
  #: src/Mollie/WC/Gateway/Abstract.php:2590
1338
- msgid "A + %1s%% fee might apply"
1339
  msgstr ""
1340
 
1341
  #: build/src/Mollie/WC/Gateway/Abstract.php:2607
1342
  #: src/Mollie/WC/Gateway/Abstract.php:2607
1343
- msgid "A + %1s %2s + %3s%% fee might apply"
1344
  msgstr ""
1345
 
1346
  #: build/src/Mollie/WC/Gateway/Abstract.php:2646
@@ -1443,7 +1443,7 @@ msgstr ""
1443
  #: src/Mollie/WC/Gateway/DirectDebit.php:80
1444
  #: src/Mollie/WC/Gateway/Ideal.php:124
1445
  #: src/Mollie/WC/Gateway/Sofort.php:64
1446
- msgid "Payment completed by <strong>%s</strong> (IBAN (last 4 digits): %s, BIC: %s)"
1447
  msgstr ""
1448
 
1449
  #: build/src/Mollie/WC/Gateway/BankTransfer.php:198
@@ -1917,6 +1917,10 @@ msgstr ""
1917
  msgid "Refresh"
1918
  msgstr ""
1919
 
 
 
 
 
1920
  #: build/src/Mollie/WC/Helper/Settings.php:591
1921
  #: src/Mollie/WC/Helper/Settings.php:591
1922
  msgid "Edit"
1330
 
1331
  #: build/src/Mollie/WC/Gateway/Abstract.php:2580
1332
  #: src/Mollie/WC/Gateway/Abstract.php:2580
1333
+ msgid " + %1$s %2$s fee might apply"
1334
  msgstr ""
1335
 
1336
  #: build/src/Mollie/WC/Gateway/Abstract.php:2590
1337
  #: src/Mollie/WC/Gateway/Abstract.php:2590
1338
+ msgid " + %1$s%% fee might apply"
1339
  msgstr ""
1340
 
1341
  #: build/src/Mollie/WC/Gateway/Abstract.php:2607
1342
  #: src/Mollie/WC/Gateway/Abstract.php:2607
1343
+ msgid " + %1$s %2$s + %3$s%% fee might apply"
1344
  msgstr ""
1345
 
1346
  #: build/src/Mollie/WC/Gateway/Abstract.php:2646
1443
  #: src/Mollie/WC/Gateway/DirectDebit.php:80
1444
  #: src/Mollie/WC/Gateway/Ideal.php:124
1445
  #: src/Mollie/WC/Gateway/Sofort.php:64
1446
+ msgid "Payment completed by <strong>%1$s</strong> (IBAN (last 4 digits): %2$s, BIC: %3$s)"
1447
  msgstr ""
1448
 
1449
  #: build/src/Mollie/WC/Gateway/BankTransfer.php:198
1917
  msgid "Refresh"
1918
  msgstr ""
1919
 
1920
+ #: src/Settings/Page/MollieSettingsPage.php:342
1921
+ msgid "No payment methods available"
1922
+ msgstr ""
1923
+
1924
  #: build/src/Mollie/WC/Helper/Settings.php:591
1925
  #: src/Mollie/WC/Helper/Settings.php:591
1926
  msgid "Edit"
mollie-payments-for-woocommerce.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Mollie Payments for WooCommerce
4
  * Plugin URI: https://www.mollie.com
5
  * Description: Accept payments in WooCommerce with the official Mollie plugin
6
- * Version: 7.3.0
7
  * Author: Mollie
8
  * Author URI: https://www.mollie.com
9
  * Requires at least: 5.0
@@ -145,12 +145,12 @@ function initialize()
145
  $properties = PluginProperties::new(__FILE__);
146
  $bootstrap = Package::new($properties);
147
  $modules = [
148
- new ActivationModule(__FILE__, $properties->version()),
149
- new LogModule('mollie-payments-for-woocommerce-'),
150
  new NoticeModule(),
151
  new SharedModule(),
152
  new SDKModule(),
153
  new SettingsModule(),
 
154
  new AssetsModule(),
155
  new GatewayModule(),
156
  new VoucherModule(),
3
  * Plugin Name: Mollie Payments for WooCommerce
4
  * Plugin URI: https://www.mollie.com
5
  * Description: Accept payments in WooCommerce with the official Mollie plugin
6
+ * Version: 7.3.1
7
  * Author: Mollie
8
  * Author URI: https://www.mollie.com
9
  * Requires at least: 5.0
145
  $properties = PluginProperties::new(__FILE__);
146
  $bootstrap = Package::new($properties);
147
  $modules = [
148
+ new ActivationModule(__FILE__, $properties->get('version')),
 
149
  new NoticeModule(),
150
  new SharedModule(),
151
  new SDKModule(),
152
  new SettingsModule(),
153
+ new LogModule('mollie-payments-for-woocommerce-'),
154
  new AssetsModule(),
155
  new GatewayModule(),
156
  new VoucherModule(),
public/css/mollie-applepaydirect.min.css CHANGED
@@ -1,23 +1 @@
1
- .buttonDisabled {
2
- opacity: 0.2;
3
- }
4
-
5
- .apple-pay-button {
6
- display: inline-block;
7
- -webkit-appearance: -apple-pay-button;
8
- -apple-pay-button-type: checkout; /* also: check-out, book, or subscribe */
9
- }
10
-
11
- .apple-pay-button-black {
12
- -apple-pay-button-style: black;
13
- }
14
-
15
- .apple-pay-button-white {
16
- -apple-pay-button-style: white;
17
- }
18
-
19
- .apple-pay-button-white-with-line {
20
- -apple-pay-button-style: white-outline;
21
- }
22
-
23
- /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vbW9sbGllLWFwcGxlcGF5ZGlyZWN0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRTtBQUNGOztBQUNBO0VBQ0U7RUFDQTtFQUNBO0FBRUY7O0FBQ0E7RUFDRTtBQUVGOztBQUNBO0VBQ0U7QUFFRjs7QUFDQTtFQUNFO0FBRUYsQyIsImZpbGUiOiJtb2xsaWUtYXBwbGVwYXlkaXJlY3QubWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idXR0b25EaXNhYmxlZCB7XG4gIG9wYWNpdHk6IC4yO1xufVxuLmFwcGxlLXBheS1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogLWFwcGxlLXBheS1idXR0b247XG4gIC1hcHBsZS1wYXktYnV0dG9uLXR5cGU6IGNoZWNrb3V0OyAvKiBhbHNvOiBjaGVjay1vdXQsIGJvb2ssIG9yIHN1YnNjcmliZSAqL1xufVxuXG4uYXBwbGUtcGF5LWJ1dHRvbi1ibGFjayB7XG4gIC1hcHBsZS1wYXktYnV0dG9uLXN0eWxlOiBibGFjaztcbn1cblxuLmFwcGxlLXBheS1idXR0b24td2hpdGUge1xuICAtYXBwbGUtcGF5LWJ1dHRvbi1zdHlsZTogd2hpdGU7XG59XG5cbi5hcHBsZS1wYXktYnV0dG9uLXdoaXRlLXdpdGgtbGluZSB7XG4gIC1hcHBsZS1wYXktYnV0dG9uLXN0eWxlOiB3aGl0ZS1vdXRsaW5lO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==*/
1
+ .buttonDisabled{opacity:.2}.apple-pay-button{display:inline-block;-webkit-appearance:-apple-pay-button;-apple-pay-button-type:checkout}.apple-pay-button-black{-apple-pay-button-style:#000}.apple-pay-button-white{-apple-pay-button-style:#fff}.apple-pay-button-white-with-line{-apple-pay-button-style:white-outline}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/css/mollie-components.min.css CHANGED
@@ -1,53 +1 @@
1
- .mollie-components {
2
- display: flex;
3
- flex-wrap: wrap;
4
- }
5
- .mollie-components .mollie-component-label {
6
- font-weight: 400;
7
- }
8
- .mollie-components .mollie-component {
9
- width: 100%;
10
- min-height: 34px;
11
- background-color: #FFF;
12
- border-radius: 6px;
13
- color: #222;
14
- transition: all 0.05s ease;
15
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.1), 0px 1px 3px 0px rgba(0, 0, 0, 0.1), 0px 0px 0px 1px rgba(0, 0, 0, 0.05);
16
- border: 2px solid transparent;
17
- }
18
- .mollie-components .mollie-component iframe {
19
- border-radius: 6px;
20
- margin: 0;
21
- }
22
- .mollie-components .mollie-component.is-invalid {
23
- box-shadow: 0px 1px 1px 0px rgba(255, 51, 68, 0.1), 0px 1px 3px 0px rgba(255, 51, 68, 0.1);
24
- border-color: #fff0f0;
25
- }
26
- .mollie-components .mollie-component.has-focus {
27
- box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.1), 0px 2px 6px 0px rgba(0, 0, 0, 0.1), 0px 0px 0px 1px rgba(0, 0, 0, 0.05);
28
- border-color: #07f;
29
- }
30
- .mollie-components div {
31
- flex-grow: 1;
32
- width: 100%;
33
- }
34
- .mollie-components div + div {
35
- display: block;
36
- margin-top: 0.63em;
37
- }
38
- .mollie-components #expiryDate,
39
- .mollie-components #verificationCode {
40
- max-width: 50%;
41
- }
42
- .mollie-components #expiryDate {
43
- padding-right: 5%;
44
- }
45
- .mollie-components #verificationCode {
46
- padding-left: 5%;
47
- }
48
-
49
- .mollie-components-description svg {
50
- display: inline;
51
- }
52
-
53
- /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vbW9sbGllLWNvbXBvbmVudHMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFO0VBQ0E7QUFDRjtBQUNFO0VBQ0U7QUFDSjtBQUVFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtBQUZKO0FBSUk7RUFDRTtFQUNBO0FBRk47QUFLSTtFQUNFO0VBRUE7QUFKTjtBQU9JO0VBQ0U7RUFHQTtBQVBOO0FBV0U7RUFDRTtFQUNBO0FBVEo7QUFZRTtFQUNFO0VBQ0E7QUFWSjtBQWFFOztFQUVFO0FBWEo7QUFjRTtFQUNFO0FBWko7QUFlRTtFQUNFO0FBYko7O0FBa0JFO0VBQ0U7QUFmSixDIiwiZmlsZSI6Im1vbGxpZS1jb21wb25lbnRzLm1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubW9sbGllLWNvbXBvbmVudHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgLm1vbGxpZS1jb21wb25lbnQtbGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIH1cblxuICAubW9sbGllLWNvbXBvbmVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMzRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBjb2xvcjogIzIyMjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgLjA1cyBlYXNlO1xuICAgIGJveC1zaGFkb3c6IDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSksXG4gICAgMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKSxcbiAgICAwcHggMHB4IDBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgIGlmcmFtZSB7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgJi5pcy1pbnZhbGlkIHtcbiAgICAgIGJveC1zaGFkb3c6IDBweCAxcHggMXB4IDBweCByZ2JhKDI1NSwgNTEsIDY4LCAwLjEpLFxuICAgICAgMHB4IDFweCAzcHggMHB4IHJnYmEoMjU1LCA1MSwgNjgsIDAuMSk7XG4gICAgICBib3JkZXItY29sb3I6ICNmZmYwZjA7XG4gICAgfVxuXG4gICAgJi5oYXMtZm9jdXMge1xuICAgICAgYm94LXNoYWRvdzogMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKSxcbiAgICAgIDBweCAycHggNnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMSksXG4gICAgICAwcHggMHB4IDBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAgIGJvcmRlci1jb2xvcjogIzA3ZjtcbiAgICB9XG4gIH1cblxuICBkaXYge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIGRpdiArIGRpdiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogLjYzZW07XG4gIH1cblxuICAjZXhwaXJ5RGF0ZSxcbiAgI3ZlcmlmaWNhdGlvbkNvZGUge1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG5cbiAgI2V4cGlyeURhdGUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDUlO1xuICB9XG5cbiAgI3ZlcmlmaWNhdGlvbkNvZGUge1xuICAgIHBhZGRpbmctbGVmdDogNSU7XG4gIH1cbn1cblxuLm1vbGxpZS1jb21wb25lbnRzLWRlc2NyaXB0aW9uIHtcbiAgc3ZnIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=*/
1
+ .mollie-components{display:flex;flex-wrap:wrap}.mollie-components .mollie-component-label{font-weight:400}.mollie-components .mollie-component{width:100%;min-height:34px;background-color:#fff;border-radius:6px;color:#222;transition:all .05s ease;box-shadow:0 1px 1px 0 rgba(0,0,0,.1),0 1px 3px 0 rgba(0,0,0,.1),0 0 0 1px rgba(0,0,0,.05);border:2px solid transparent}.mollie-components .mollie-component iframe{border-radius:6px;margin:0}.mollie-components .mollie-component.is-invalid{box-shadow:0 1px 1px 0 rgba(255,51,68,.1),0 1px 3px 0 rgba(255,51,68,.1);border-color:#fff0f0}.mollie-components .mollie-component.has-focus{box-shadow:0 1px 1px 0 rgba(0,0,0,.1),0 2px 6px 0 rgba(0,0,0,.1),0 0 0 1px rgba(0,0,0,.05);border-color:#07f}.mollie-components div{flex-grow:1;width:100%}.mollie-components div+div{display:block;margin-top:.63em}.mollie-components #expiryDate,.mollie-components #verificationCode{max-width:50%}.mollie-components #expiryDate{padding-right:5%}.mollie-components #verificationCode{padding-left:5%}.mollie-components-description svg{display:inline}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/css/mollie-gateway-icons.min.css CHANGED
@@ -1,22 +1 @@
1
- .mollie-gateway-icon {
2
- vertical-align: bottom;
3
- height: 24px;
4
- }
5
-
6
- label .mollie-gateway-icon {
7
- float: right;
8
- }
9
-
10
- .mollie-gateway-icon svg {
11
- float: right;
12
- }
13
-
14
- .mollie_custom_icon {
15
- padding: 1em;
16
- }
17
-
18
- #mol-paypal-settings-icon {
19
- margin-left: 1em;
20
- }
21
-
22
- /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vbW9sbGllLWdhdGV3YXktaWNvbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFO0VBQ0E7QUFDRjs7QUFDQTtFQUNFO0FBRUY7O0FBQUE7RUFDRTtBQUdGOztBQURBO0VBQ0U7QUFJRjs7QUFGQTtFQUNFO0FBS0YsQyIsImZpbGUiOiJtb2xsaWUtZ2F0ZXdheS1pY29ucy5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm1vbGxpZS1nYXRld2F5LWljb24ge1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICBoZWlnaHQ6IDI0cHg7XG59XG5sYWJlbCAubW9sbGllLWdhdGV3YXktaWNvbntcbiAgZmxvYXQ6cmlnaHQ7XG59XG4ubW9sbGllLWdhdGV3YXktaWNvbiBzdmd7XG4gIGZsb2F0OnJpZ2h0O1xufVxuLm1vbGxpZV9jdXN0b21faWNvbntcbiAgcGFkZGluZzoxZW07XG59XG4jbW9sLXBheXBhbC1zZXR0aW5ncy1pY29ue1xuICBtYXJnaW4tbGVmdDoxZW07XG59XG4iXSwic291cmNlUm9vdCI6IiJ9*/
1
+ .mollie-gateway-icon{vertical-align:bottom;height:24px}.mollie-gateway-icon svg,label .mollie-gateway-icon{float:right}.mollie_custom_icon{padding:1em}#mol-paypal-settings-icon{margin-left:1em}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/css/unabledButton.min.css CHANGED
@@ -1,5 +1 @@
1
- .buttonDisabled {
2
- opacity: 0.2;
3
- }
4
-
5
- /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vdW5hYmxlZEJ1dHRvbi5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0U7QUFDRixDIiwiZmlsZSI6InVuYWJsZWRCdXR0b24ubWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idXR0b25EaXNhYmxlZCB7XG4gIG9wYWNpdHk6IC4yO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==*/
1
+ .buttonDisabled{opacity:.2}
 
 
 
 
public/js/advancedSettings.min.js CHANGED
@@ -1,156 +1 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
- /******/ }
41
- /******/ };
42
- /******/
43
- /******/ // define __esModule on exports
44
- /******/ __webpack_require__.r = function(exports) {
45
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
- /******/ }
48
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
- /******/ };
50
- /******/
51
- /******/ // create a fake namespace object
52
- /******/ // mode & 1: value is a module id, require it
53
- /******/ // mode & 2: merge all properties of value into the ns
54
- /******/ // mode & 4: return value when already ns object
55
- /******/ // mode & 8|1: behave like require
56
- /******/ __webpack_require__.t = function(value, mode) {
57
- /******/ if(mode & 1) value = __webpack_require__(value);
58
- /******/ if(mode & 8) return value;
59
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
- /******/ var ns = Object.create(null);
61
- /******/ __webpack_require__.r(ns);
62
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
- /******/ return ns;
65
- /******/ };
66
- /******/
67
- /******/ // getDefaultExport function for compatibility with non-harmony modules
68
- /******/ __webpack_require__.n = function(module) {
69
- /******/ var getter = module && module.__esModule ?
70
- /******/ function getDefault() { return module['default']; } :
71
- /******/ function getModuleExports() { return module; };
72
- /******/ __webpack_require__.d(getter, 'a', getter);
73
- /******/ return getter;
74
- /******/ };
75
- /******/
76
- /******/ // Object.prototype.hasOwnProperty.call
77
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
- /******/
79
- /******/ // __webpack_public_path__
80
- /******/ __webpack_require__.p = "/public/js/";
81
- /******/
82
- /******/
83
- /******/ // Load entry module and return exports
84
- /******/ return __webpack_require__(__webpack_require__.s = "./resources/js/advancedSettings.js");
85
- /******/ })
86
- /************************************************************************/
87
- /******/ ({
88
-
89
- /***/ "./resources/js/advancedSettings.js":
90
- /*!******************************************!*\
91
- !*** ./resources/js/advancedSettings.js ***!
92
- \******************************************/
93
- /*! no static exports found */
94
- /***/ (function(module, exports) {
95
-
96
- (function (_ref) {
97
- var _ = _ref._,
98
- jQuery = _ref.jQuery;
99
-
100
- function mollie_settings__insertTextAtCursor(target, text, dontIgnoreSelection) {
101
- if (target.setRangeText) {
102
- if (!dontIgnoreSelection) {
103
- // insert at end
104
- target.setRangeText(text, target.value.length, target.value.length, "end");
105
- } else {
106
- // replace selection
107
- target.setRangeText(text, target.selectionStart, target.selectionEnd, "end");
108
- }
109
- } else {
110
- target.focus();
111
- document.execCommand("insertText", false
112
- /*no UI*/
113
- , text);
114
- }
115
-
116
- target.focus();
117
- }
118
-
119
- jQuery(document).ready(function ($) {
120
- $(".mollie-settings-advanced-payment-desc-label").data("ignore-click", "false").on("mousedown", function (e) {
121
- var input = document.getElementById("mollie-payments-for-woocommerce_api_payment_description");
122
-
123
- if (document.activeElement && input === document.activeElement) {
124
- $(this).on("mouseup.molliesettings", function (e) {
125
- $(this).data("ignore-click", "true");
126
- $(this).off(".molliesettings");
127
- var tag = $(this).data("tag");
128
- var input = document.getElementById("mollie-payments-for-woocommerce_api_payment_description");
129
- mollie_settings__insertTextAtCursor(input, tag, true);
130
- });
131
- }
132
-
133
- var $this = $(this);
134
- $(window).on("mouseup.molliesettings drag.molliesettings blur.molliesettings", function (e) {
135
- $this.off(".molliesettings");
136
- $(window).off(".molliesettings");
137
- });
138
- }).on("click", function (e) {
139
- e.preventDefault();
140
- e.stopImmediatePropagation();
141
-
142
- if ($(this).data("ignore-click") === "false") {
143
- var tag = $(this).data("tag");
144
- var input = document.getElementById("mollie-payments-for-woocommerce_api_payment_description");
145
- mollie_settings__insertTextAtCursor(input, tag, false);
146
- } else {
147
- $(this).data("ignore-click", "false");
148
- }
149
- });
150
- });
151
- })(window);
152
-
153
- /***/ })
154
-
155
- /******/ });
156
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2FkdmFuY2VkU2V0dGluZ3MuanMiXSwibmFtZXMiOlsiXyIsImpRdWVyeSIsIm1vbGxpZV9zZXR0aW5nc19faW5zZXJ0VGV4dEF0Q3Vyc29yIiwidGFyZ2V0IiwidGV4dCIsImRvbnRJZ25vcmVTZWxlY3Rpb24iLCJzZXRSYW5nZVRleHQiLCJ2YWx1ZSIsImxlbmd0aCIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwiZm9jdXMiLCJkb2N1bWVudCIsImV4ZWNDb21tYW5kIiwicmVhZHkiLCIkIiwiZGF0YSIsIm9uIiwiZSIsImlucHV0IiwiZ2V0RWxlbWVudEJ5SWQiLCJhY3RpdmVFbGVtZW50Iiwib2ZmIiwidGFnIiwiJHRoaXMiLCJ3aW5kb3ciLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNE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Q0FBbUMsQ0FBQ2lCLEtBQUQsRUFBUUksR0FBUixFQUFhLEtBQWIsQ0FBbkM7TUFDSCxDQUpELE1BSU87UUFDSFIsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRQyxJQUFSLENBQWEsY0FBYixFQUE2QixPQUE3QjtNQUNIO0lBQ0osQ0E3Qkw7RUErQkgsQ0FoQ0Q7QUFpQ0gsQ0FuREwsRUFzRElTLE1BdERKLEUiLCJmaWxlIjoiYWR2YW5jZWRTZXR0aW5ncy5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9wdWJsaWMvanMvXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vcmVzb3VyY2VzL2pzL2FkdmFuY2VkU2V0dGluZ3MuanNcIik7XG4iLCIoXG4gICAgZnVuY3Rpb24gKHtfLCBqUXVlcnkgfSkge1xuXG4gICAgICAgIGZ1bmN0aW9uIG1vbGxpZV9zZXR0aW5nc19faW5zZXJ0VGV4dEF0Q3Vyc29yKHRhcmdldCwgdGV4dCwgZG9udElnbm9yZVNlbGVjdGlvbikge1xuICAgICAgICAgICAgaWYgKHRhcmdldC5zZXRSYW5nZVRleHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoICFkb250SWdub3JlU2VsZWN0aW9uICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpbnNlcnQgYXQgZW5kXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zZXRSYW5nZVRleHQodGV4dCwgdGFyZ2V0LnZhbHVlLmxlbmd0aCwgdGFyZ2V0LnZhbHVlLmxlbmd0aCwgXCJlbmRcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVwbGFjZSBzZWxlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNldFJhbmdlVGV4dCh0ZXh0LCB0YXJnZXQuc2VsZWN0aW9uU3RhcnQsIHRhcmdldC5zZWxlY3Rpb25FbmQsIFwiZW5kXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJpbnNlcnRUZXh0XCIsIGZhbHNlIC8qbm8gVUkqLywgdGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpIHtcbiAgICAgICAgICAgICQoXCIubW9sbGllLXNldHRpbmdzLWFkdmFuY2VkLXBheW1lbnQtZGVzYy1sYWJlbFwiKVxuICAgICAgICAgICAgICAgIC5kYXRhKFwiaWdub3JlLWNsaWNrXCIsIFwiZmFsc2VcIilcbiAgICAgICAgICAgICAgICAub24oXCJtb3VzZWRvd25cIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibW9sbGllLXBheW1lbnRzLWZvci13b29jb21tZXJjZV9hcGlfcGF5bWVudF9kZXNjcmlwdGlvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGlucHV0ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5vbihcIm1vdXNldXAubW9sbGllc2V0dGluZ3NcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZGF0YShcImlnbm9yZS1jbGlja1wiLCBcInRydWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5vZmYoXCIubW9sbGllc2V0dGluZ3NcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFnID0gJCh0aGlzKS5kYXRhKFwidGFnXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtb2xsaWUtcGF5bWVudHMtZm9yLXdvb2NvbW1lcmNlX2FwaV9wYXltZW50X2Rlc2NyaXB0aW9uXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGxpZV9zZXR0aW5nc19faW5zZXJ0VGV4dEF0Q3Vyc29yKGlucHV0LCB0YWcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGV0ICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLm9uKFwibW91c2V1cC5tb2xsaWVzZXR0aW5ncyBkcmFnLm1vbGxpZXNldHRpbmdzIGJsdXIubW9sbGllc2V0dGluZ3NcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMub2ZmKFwiLm1vbGxpZXNldHRpbmdzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLm9mZihcIi5tb2xsaWVzZXR0aW5nc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAub24oXCJjbGlja1wiLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCAkKHRoaXMpLmRhdGEoXCJpZ25vcmUtY2xpY2tcIikgPT09IFwiZmFsc2VcIiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhZyA9ICQodGhpcykuZGF0YShcInRhZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtb2xsaWUtcGF5bWVudHMtZm9yLXdvb2NvbW1lcmNlX2FwaV9wYXltZW50X2Rlc2NyaXB0aW9uXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9sbGllX3NldHRpbmdzX19pbnNlcnRUZXh0QXRDdXJzb3IoaW5wdXQsIHRhZywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5kYXRhKFwiaWdub3JlLWNsaWNrXCIsIFwiZmFsc2VcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgO1xuICAgICAgICB9KTtcbiAgICB9XG4pXG4oXG4gICAgd2luZG93XG4pXG4iXSwic291cmNlUm9vdCI6IiJ9
1
+ !function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/public/js/",n(n.s="ZlrM")}({ZlrM:function(e,t){!function(e){e._;function t(e,t,n){e.setRangeText?n?e.setRangeText(t,e.selectionStart,e.selectionEnd,"end"):e.setRangeText(t,e.value.length,e.value.length,"end"):(e.focus(),document.execCommand("insertText",!1,t)),e.focus()}(0,e.jQuery)(document).ready((function(e){e(".mollie-settings-advanced-payment-desc-label").data("ignore-click","false").on("mousedown",(function(n){var o=document.getElementById("mollie-payments-for-woocommerce_api_payment_description");document.activeElement&&o===document.activeElement&&e(this).on("mouseup.molliesettings",(function(n){e(this).data("ignore-click","true"),e(this).off(".molliesettings");var o=e(this).data("tag");t(document.getElementById("mollie-payments-for-woocommerce_api_payment_description"),o,!0)}));var i=e(this);e(window).on("mouseup.molliesettings drag.molliesettings blur.molliesettings",(function(t){i.off(".molliesettings"),e(window).off(".molliesettings")}))})).on("click",(function(n){if(n.preventDefault(),n.stopImmediatePropagation(),"false"===e(this).data("ignore-click")){var o=e(this).data("tag");t(document.getElementById("mollie-payments-for-woocommerce_api_payment_description"),o,!1)}else e(this).data("ignore-click","false")}))}))}(window)}});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/js/applepay.min.js CHANGED
@@ -1,117 +1 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
- /******/ }
41
- /******/ };
42
- /******/
43
- /******/ // define __esModule on exports
44
- /******/ __webpack_require__.r = function(exports) {
45
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
- /******/ }
48
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
- /******/ };
50
- /******/
51
- /******/ // create a fake namespace object
52
- /******/ // mode & 1: value is a module id, require it
53
- /******/ // mode & 2: merge all properties of value into the ns
54
- /******/ // mode & 4: return value when already ns object
55
- /******/ // mode & 8|1: behave like require
56
- /******/ __webpack_require__.t = function(value, mode) {
57
- /******/ if(mode & 1) value = __webpack_require__(value);
58
- /******/ if(mode & 8) return value;
59
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
- /******/ var ns = Object.create(null);
61
- /******/ __webpack_require__.r(ns);
62
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
- /******/ return ns;
65
- /******/ };
66
- /******/
67
- /******/ // getDefaultExport function for compatibility with non-harmony modules
68
- /******/ __webpack_require__.n = function(module) {
69
- /******/ var getter = module && module.__esModule ?
70
- /******/ function getDefault() { return module['default']; } :
71
- /******/ function getModuleExports() { return module; };
72
- /******/ __webpack_require__.d(getter, 'a', getter);
73
- /******/ return getter;
74
- /******/ };
75
- /******/
76
- /******/ // Object.prototype.hasOwnProperty.call
77
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
- /******/
79
- /******/ // __webpack_public_path__
80
- /******/ __webpack_require__.p = "/public/js/";
81
- /******/
82
- /******/
83
- /******/ // Load entry module and return exports
84
- /******/ return __webpack_require__(__webpack_require__.s = "./resources/js/applepay.js");
85
- /******/ })
86
- /************************************************************************/
87
- /******/ ({
88
-
89
- /***/ "./resources/js/applepay.js":
90
- /*!**********************************!*\
91
- !*** ./resources/js/applepay.js ***!
92
- \**********************************/
93
- /*! no static exports found */
94
- /***/ (function(module, exports) {
95
-
96
- (function (ApplePaySession) {
97
- document.addEventListener('DOMContentLoaded', function () {
98
- var applePayMethodElement = document.querySelector('.payment_method_mollie_wc_gateway_applepay');
99
- var woocommerceCheckoutForm = document.querySelector('form.woocommerce-checkout');
100
-
101
- if (!woocommerceCheckoutForm) {
102
- return;
103
- }
104
-
105
- if (!ApplePaySession || !ApplePaySession.canMakePayments()) {
106
- applePayMethodElement && applePayMethodElement.parentNode.removeChild(applePayMethodElement);
107
- return;
108
- }
109
-
110
- woocommerceCheckoutForm.insertAdjacentHTML('beforeend', '<input type="hidden" name="mollie_apple_pay_method_allowed" value="1" />');
111
- });
112
- })(window.ApplePaySession);
113
-
114
- /***/ })
115
-
116
- /******/ });
117
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2FwcGxlcGF5LmpzIl0sIm5hbWVzIjpbIkFwcGxlUGF5U2Vzc2lvbiIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImFwcGxlUGF5TWV0aG9kRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ3b29jb21tZXJjZUNoZWNrb3V0Rm9ybSIsImNhbk1ha2VQYXltZW50cyIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImluc2VydEFkamFjZW50SFRNTCIsIndpbmRvdyJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7O1FBR0E7UUFDQTs7Ozs7Ozs7Ozs7O0FDbEZBLENBQUMsVUFBVUEsZUFBVixFQUEyQjtFQUUxQkMsUUFBUSxDQUFDQyxnQkFBVCxDQUEwQixrQkFBMUIsRUFBOEMsWUFBWTtJQUN4RCxJQUFJQyxxQkFBcUIsR0FBR0YsUUFBUSxDQUFDRyxhQUFULENBQzFCLDRDQUQwQixDQUE1QjtJQUlBLElBQUlDLHVCQUF1QixHQUFHSixRQUFRLENBQUNHLGFBQVQsQ0FDNUIsMkJBRDRCLENBQTlCOztJQUlBLElBQUksQ0FBQ0MsdUJBQUwsRUFBOEI7TUFDNUI7SUFDRDs7SUFFRCxJQUFJLENBQUNMLGVBQUQsSUFBb0IsQ0FBQ0EsZUFBZSxDQUFDTSxlQUFoQixFQUF6QixFQUE0RDtNQUMxREgscUJBQXFCLElBQ3JCQSxxQkFBcUIsQ0FBQ0ksVUFBdEIsQ0FBaUNDLFdBQWpDLENBQTZDTCxxQkFBN0MsQ0FEQTtNQUVBO0lBQ0Q7O0lBRURFLHVCQUF1QixDQUFDSSxrQkFBeEIsQ0FDRSxXQURGLEVBRUUsMEVBRkY7RUFJRCxDQXZCRDtBQXdCRCxDQTFCRCxFQTBCR0MsTUFBTSxDQUFDVixlQTFCVixFIiwiZmlsZSI6ImFwcGxlcGF5Lm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL3B1YmxpYy9qcy9cIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9yZXNvdXJjZXMvanMvYXBwbGVwYXkuanNcIik7XG4iLCIoZnVuY3Rpb24gKEFwcGxlUGF5U2Vzc2lvbikge1xuXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFwcGxlUGF5TWV0aG9kRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnLnBheW1lbnRfbWV0aG9kX21vbGxpZV93Y19nYXRld2F5X2FwcGxlcGF5JyxcbiAgICApXG5cbiAgICB2YXIgd29vY29tbWVyY2VDaGVja291dEZvcm0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2Zvcm0ud29vY29tbWVyY2UtY2hlY2tvdXQnLFxuICAgIClcblxuICAgIGlmICghd29vY29tbWVyY2VDaGVja291dEZvcm0pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghQXBwbGVQYXlTZXNzaW9uIHx8ICFBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpIHtcbiAgICAgIGFwcGxlUGF5TWV0aG9kRWxlbWVudCAmJlxuICAgICAgYXBwbGVQYXlNZXRob2RFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYXBwbGVQYXlNZXRob2RFbGVtZW50KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgd29vY29tbWVyY2VDaGVja291dEZvcm0uaW5zZXJ0QWRqYWNlbnRIVE1MKFxuICAgICAgJ2JlZm9yZWVuZCcsXG4gICAgICAnPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibW9sbGllX2FwcGxlX3BheV9tZXRob2RfYWxsb3dlZFwiIHZhbHVlPVwiMVwiIC8+JyxcbiAgICApXG4gIH0pXG59KSh3aW5kb3cuQXBwbGVQYXlTZXNzaW9uKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
1
+ !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/public/js/",n(n.s="zZ86")}({zZ86:function(e,t){var n;n=window.ApplePaySession,document.addEventListener("DOMContentLoaded",(function(){var e=document.querySelector(".payment_method_mollie_wc_gateway_applepay"),t=document.querySelector("form.woocommerce-checkout");t&&(n&&n.canMakePayments()?t.insertAdjacentHTML("beforeend",'<input type="hidden" name="mollie_apple_pay_method_allowed" value="1" />'):e&&e.parentNode.removeChild(e))}))}});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/js/applepayButtonBlockComponent.min.js CHANGED
@@ -1,427 +1 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
- /******/ }
41
- /******/ };
42
- /******/
43
- /******/ // define __esModule on exports
44
- /******/ __webpack_require__.r = function(exports) {
45
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
- /******/ }
48
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
- /******/ };
50
- /******/
51
- /******/ // create a fake namespace object
52
- /******/ // mode & 1: value is a module id, require it
53
- /******/ // mode & 2: merge all properties of value into the ns
54
- /******/ // mode & 4: return value when already ns object
55
- /******/ // mode & 8|1: behave like require
56
- /******/ __webpack_require__.t = function(value, mode) {
57
- /******/ if(mode & 1) value = __webpack_require__(value);
58
- /******/ if(mode & 8) return value;
59
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
- /******/ var ns = Object.create(null);
61
- /******/ __webpack_require__.r(ns);
62
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
- /******/ return ns;
65
- /******/ };
66
- /******/
67
- /******/ // getDefaultExport function for compatibility with non-harmony modules
68
- /******/ __webpack_require__.n = function(module) {
69
- /******/ var getter = module && module.__esModule ?
70
- /******/ function getDefault() { return module['default']; } :
71
- /******/ function getModuleExports() { return module; };
72
- /******/ __webpack_require__.d(getter, 'a', getter);
73
- /******/ return getter;
74
- /******/ };
75
- /******/
76
- /******/ // Object.prototype.hasOwnProperty.call
77
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
- /******/
79
- /******/ // __webpack_public_path__
80
- /******/ __webpack_require__.p = "/public/js/";
81
- /******/
82
- /******/
83
- /******/ // Load entry module and return exports
84
- /******/ return __webpack_require__(__webpack_require__.s = "./resources/js/applepayButtonBlockComponent.js");
85
- /******/ })
86
- /************************************************************************/
87
- /******/ ({
88
-
89
- /***/ "./resources/js/applePayError.js":
90
- /*!***************************************!*\
91
- !*** ./resources/js/applePayError.js ***!
92
- \***************************************/
93
- /*! exports provided: createAppleErrors */
94
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
95
-
96
- "use strict";
97
- __webpack_require__.r(__webpack_exports__);
98
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createAppleErrors", function() { return createAppleErrors; });
99
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
100
-
101
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
102
-
103
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
104
-
105
- function createAppleErrors(errors) {
106
- var errorList = [];
107
-
108
- var _iterator = _createForOfIteratorHelper(errors),
109
- _step;
110
-
111
- try {
112
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
113
- var error = _step.value;
114
- var _error$contactField = error.contactField,
115
- contactField = _error$contactField === void 0 ? null : _error$contactField,
116
- _error$code = error.code,
117
- code = _error$code === void 0 ? null : _error$code,
118
- _error$message = error.message,
119
- message = _error$message === void 0 ? null : _error$message;
120
- var appleError = contactField ? new ApplePayError(code, contactField, message) : new ApplePayError(code);
121
- errorList.push(appleError);
122
- }
123
- } catch (err) {
124
- _iterator.e(err);
125
- } finally {
126
- _iterator.f();
127
- }
128
-
129
- return errorList;
130
- }
131
-
132
- /***/ }),
133
-
134
- /***/ "./resources/js/applePayRequest.js":
135
- /*!*****************************************!*\
136
- !*** ./resources/js/applePayRequest.js ***!
137
- \*****************************************/
138
- /*! exports provided: request */
139
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
140
-
141
- "use strict";
142
- __webpack_require__.r(__webpack_exports__);
143
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "request", function() { return request; });
144
- var request = function request(countryCode, currencyCode, totalLabel, subtotal) {
145
- return {
146
- countryCode: countryCode,
147
- currencyCode: currencyCode,
148
- supportedNetworks: ['amex', 'maestro', 'masterCard', 'visa', 'vPay'],
149
- merchantCapabilities: ['supports3DS'],
150
- shippingType: 'shipping',
151
- requiredBillingContactFields: ['postalAddress', 'email'],
152
- requiredShippingContactFields: ['postalAddress', 'email'],
153
- total: {
154
- label: totalLabel,
155
- amount: subtotal,
156
- type: 'final'
157
- }
158
- };
159
- };
160
-
161
- /***/ }),
162
-
163
- /***/ "./resources/js/applepayButtonBlockComponent.js":
164
- /*!******************************************************!*\
165
- !*** ./resources/js/applepayButtonBlockComponent.js ***!
166
- \******************************************************/
167
- /*! no exports provided */
168
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
169
-
170
- "use strict";
171
- __webpack_require__.r(__webpack_exports__);
172
- /* harmony import */ var _maybeShowApplePayButton_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./maybeShowApplePayButton.js */ "./resources/js/maybeShowApplePayButton.js");
173
- /* harmony import */ var _applePayRequest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./applePayRequest */ "./resources/js/applePayRequest.js");
174
- /* harmony import */ var _applePayError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./applePayError */ "./resources/js/applePayError.js");
175
-
176
-
177
-
178
-
179
- (function (_ref) {
180
- var mollieApplePayBlockDataCart = _ref.mollieApplePayBlockDataCart;
181
-
182
- if (mollieApplePayBlockDataCart.length === 0) {
183
- return;
184
- }
185
-
186
- var _mollieApplePayBlockD = mollieApplePayBlockDataCart.product,
187
- _mollieApplePayBlockD2 = _mollieApplePayBlockD.needShipping,
188
- needShipping = _mollieApplePayBlockD2 === void 0 ? true : _mollieApplePayBlockD2,
189
- subtotal = _mollieApplePayBlockD.subtotal,
190
- _mollieApplePayBlockD3 = mollieApplePayBlockDataCart.shop,
191
- countryCode = _mollieApplePayBlockD3.countryCode,
192
- _mollieApplePayBlockD4 = _mollieApplePayBlockD3.currencyCode,
193
- currencyCode = _mollieApplePayBlockD4 === void 0 ? 'EUR' : _mollieApplePayBlockD4,
194
- _mollieApplePayBlockD5 = _mollieApplePayBlockD3.totalLabel,
195
- totalLabel = _mollieApplePayBlockD5 === void 0 ? '' : _mollieApplePayBlockD5,
196
- buttonMarkup = mollieApplePayBlockDataCart.buttonMarkup,
197
- ajaxUrl = mollieApplePayBlockDataCart.ajaxUrl;
198
- var registerPlugin = wp.plugins.registerPlugin;
199
- var ExperimentalOrderMeta = wc.blocksCheckout.ExperimentalOrderMeta;
200
-
201
- var ApplePayButtonComponent = function ApplePayButtonComponent(_ref2) {
202
- var cart = _ref2.cart,
203
- extensions = _ref2.extensions;
204
- return /*#__PURE__*/React.createElement("div", {
205
- dangerouslySetInnerHTML: {
206
- __html: buttonMarkup
207
- }
208
- });
209
- };
210
-
211
- var MollieApplePayButtonCart = function MollieApplePayButtonCart() {
212
- return /*#__PURE__*/React.createElement(ExperimentalOrderMeta, null, /*#__PURE__*/React.createElement(ApplePayButtonComponent, null));
213
- };
214
-
215
- registerPlugin('mollie-applepay-block-button', {
216
- render: function render() {
217
- return /*#__PURE__*/React.createElement(MollieApplePayButtonCart, null);
218
- },
219
- scope: 'woocommerce-checkout'
220
- });
221
- setTimeout(function () {
222
- if (!Object(_maybeShowApplePayButton_js__WEBPACK_IMPORTED_MODULE_0__["maybeShowButton"])()) {
223
- return;
224
- }
225
-
226
- var nonce = document.getElementById("woocommerce-process-checkout-nonce").value;
227
- var updatedContactInfo = [];
228
- var selectedShippingMethod = [];
229
- var redirectionUrl = '';
230
-
231
- var applePaySession = function applePaySession() {
232
- var session = new ApplePaySession(3, Object(_applePayRequest__WEBPACK_IMPORTED_MODULE_1__["request"])(countryCode, currencyCode, totalLabel, subtotal));
233
- session.begin();
234
-
235
- session.onshippingmethodselected = function (event) {
236
- var _this = this;
237
-
238
- jQuery.ajax({
239
- url: ajaxUrl,
240
- method: 'POST',
241
- data: {
242
- action: 'mollie_apple_pay_update_shipping_method',
243
- shippingMethod: event.shippingMethod,
244
- callerPage: 'cart',
245
- simplifiedContact: updatedContactInfo,
246
- 'woocommerce-process-checkout-nonce': nonce
247
- },
248
- complete: function complete(jqXHR, textStatus) {},
249
- success: function success(applePayShippingMethodUpdate, textStatus, jqXHR) {
250
- var response = applePayShippingMethodUpdate.data;
251
- selectedShippingMethod = event.shippingMethod;
252
-
253
- if (applePayShippingMethodUpdate.success === false) {
254
- response.errors = Object(_applePayError__WEBPACK_IMPORTED_MODULE_2__["createAppleErrors"])(response.errors);
255
- }
256
-
257
- _this.completeShippingMethodSelection(response);
258
- },
259
- error: function error(jqXHR, textStatus, errorThrown) {
260
- console.warn(textStatus, errorThrown);
261
- session.abort();
262
- }
263
- });
264
- };
265
-
266
- session.onshippingcontactselected = function (event) {
267
- var _this2 = this;
268
-
269
- jQuery.ajax({
270
- url: ajaxUrl,
271
- method: 'POST',
272
- data: {
273
- action: 'mollie_apple_pay_update_shipping_contact',
274
- simplifiedContact: event.shippingContact,
275
- callerPage: 'cart',
276
- needShipping: needShipping,
277
- 'woocommerce-process-checkout-nonce': nonce
278
- },
279
- complete: function complete(jqXHR, textStatus) {},
280
- success: function success(applePayShippingContactUpdate, textStatus, jqXHR) {
281
- var response = applePayShippingContactUpdate.data;
282
- updatedContactInfo = event.shippingContact;
283
-
284
- if (applePayShippingContactUpdate.success === false) {
285
- response.errors = Object(_applePayError__WEBPACK_IMPORTED_MODULE_2__["createAppleErrors"])(response.errors);
286
- }
287
-
288
- if (response.newShippingMethods) {
289
- selectedShippingMethod = response.newShippingMethods[0];
290
- }
291
-
292
- _this2.completeShippingContactSelection(response);
293
- },
294
- error: function error(jqXHR, textStatus, errorThrown) {
295
- console.warn(textStatus, errorThrown);
296
- session.abort();
297
- }
298
- });
299
- };
300
-
301
- session.onvalidatemerchant = function (applePayValidateMerchantEvent) {
302
- jQuery.ajax({
303
- url: ajaxUrl,
304
- method: 'POST',
305
- data: {
306
- action: 'mollie_apple_pay_validation',
307
- validationUrl: applePayValidateMerchantEvent.validationURL,
308
- 'woocommerce-process-checkout-nonce': nonce
309
- },
310
- complete: function complete(jqXHR, textStatus) {},
311
- success: function success(merchantSession, textStatus, jqXHR) {
312
- if (merchantSession.success === true) {
313
- session.completeMerchantValidation(JSON.parse(merchantSession.data));
314
- } else {
315
- console.warn(merchantSession.data);
316
- session.abort();
317
- }
318
- },
319
- error: function error(jqXHR, textStatus, errorThrown) {
320
- console.warn(textStatus, errorThrown);
321
- session.abort();
322
- }
323
- });
324
- };
325
-
326
- session.onpaymentauthorized = function (ApplePayPayment) {
327
- var _ApplePayPayment$paym = ApplePayPayment.payment,
328
- billingContact = _ApplePayPayment$paym.billingContact,
329
- shippingContact = _ApplePayPayment$paym.shippingContact;
330
- jQuery.ajax({
331
- url: ajaxUrl,
332
- method: 'POST',
333
- data: {
334
- action: 'mollie_apple_pay_create_order_cart',
335
- shippingContact: ApplePayPayment.payment.shippingContact,
336
- billingContact: ApplePayPayment.payment.billingContact,
337
- token: ApplePayPayment.payment.token,
338
- shippingMethod: selectedShippingMethod,
339
- 'mollie-payments-for-woocommerce_issuer_applepay': 'applepay',
340
- 'woocommerce-process-checkout-nonce': nonce,
341
- 'billing_first_name': billingContact.givenName || '',
342
- 'billing_last_name': billingContact.familyName || '',
343
- 'billing_company': '',
344
- 'billing_country': billingContact.countryCode || '',
345
- 'billing_address_1': billingContact.addressLines[0] || '',
346
- 'billing_address_2': billingContact.addressLines[1] || '',
347
- 'billing_postcode': billingContact.postalCode || '',
348
- 'billing_city': billingContact.locality || '',
349
- 'billing_state': billingContact.administrativeArea || '',
350
- 'billing_phone': billingContact.phoneNumber || '000000000000',
351
- 'billing_email': shippingContact.emailAddress || '',
352
- 'shipping_first_name': shippingContact.givenName || '',
353
- 'shipping_last_name': shippingContact.familyName || '',
354
- 'shipping_company': '',
355
- 'shipping_country': shippingContact.countryCode || '',
356
- 'shipping_address_1': shippingContact.addressLines[0] || '',
357
- 'shipping_address_2': shippingContact.addressLines[1] || '',
358
- 'shipping_postcode': shippingContact.postalCode || '',
359
- 'shipping_city': shippingContact.locality || '',
360
- 'shipping_state': shippingContact.administrativeArea || '',
361
- 'shipping_phone': shippingContact.phoneNumber || '000000000000',
362
- 'shipping_email': shippingContact.emailAddress || '',
363
- 'order_comments': '',
364
- 'payment_method': 'mollie_wc_gateway_applepay',
365
- '_wp_http_referer': '/?wc-ajax=update_order_review'
366
- },
367
- complete: function complete(jqXHR, textStatus) {},
368
- success: function success(authorizationResult, textStatus, jqXHR) {
369
- var result = authorizationResult.data;
370
-
371
- if (authorizationResult.success === true) {
372
- redirectionUrl = result['returnUrl'];
373
- session.completePayment(result['responseToApple']);
374
- window.location.href = redirectionUrl;
375
- } else {
376
- result.errors = Object(_applePayError__WEBPACK_IMPORTED_MODULE_2__["createAppleErrors"])(result.errors);
377
- session.completePayment(result);
378
- }
379
- },
380
- error: function error(jqXHR, textStatus, errorThrown) {
381
- console.warn(textStatus, errorThrown);
382
- session.abort();
383
- }
384
- });
385
- };
386
- };
387
-
388
- document.querySelector('#mollie_applepay_button').addEventListener('click', function (evt) {
389
- applePaySession();
390
- });
391
- }, 2000);
392
- })(window);
393
-
394
- /***/ }),
395
-
396
- /***/ "./resources/js/maybeShowApplePayButton.js":
397
- /*!*************************************************!*\
398
- !*** ./resources/js/maybeShowApplePayButton.js ***!
399
- \*************************************************/
400
- /*! exports provided: maybeShowButton */
401
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
402
-
403
- "use strict";
404
- __webpack_require__.r(__webpack_exports__);
405
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "maybeShowButton", function() { return maybeShowButton; });
406
- var maybeShowButton = function maybeShowButton() {
407
- var _window = window,
408
- ApplePaySession = _window.ApplePaySession;
409
- var applePayMethodElement = document.querySelector('#mollie-applepayDirect-button');
410
- var canShowButton = applePayMethodElement && ApplePaySession && ApplePaySession.canMakePayments();
411
-
412
- if (!canShowButton) {
413
- return false;
414
- }
415
-
416
- var button = document.createElement('button');
417
- button.setAttribute('id', 'mollie_applepay_button');
418
- button.classList.add('apple-pay-button');
419
- button.classList.add('apple-pay-button-black');
420
- applePayMethodElement.appendChild(button);
421
- return true;
422
- };
423
-
424
- /***/ })
425
-
426
- /******/ });
427
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2FwcGxlUGF5RXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2FwcGxlUGF5UmVxdWVzdC5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYXBwbGVwYXlCdXR0b25CbG9ja0NvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWF5YmVTaG93QXBwbGVQYXlCdXR0b24uanMiXSwibmFtZXMiOlsiY3JlYXRlQXBwbGVFcnJvcnMiLCJlcnJvcnMiLCJlcnJvckxpc3QiLCJlcnJvciIsImNvbnRhY3RGaWVsZCIsImNvZGUiLCJtZXNzYWdlIiwiYXBwbGVFcnJvciIsIkFwcGxlUGF5RXJyb3IiLCJwdXNoIiwicmVxdWVzdCIsImNvdW50cnlDb2RlIiwiY3VycmVuY3lDb2RlIiwidG90YWxMYWJlbCIsInN1YnRvdGFsIiwic3VwcG9ydGVkTmV0d29ya3MiLCJtZXJjaGFudENhcGFiaWxpdGllcyIsInNoaXBwaW5nVHlwZSIsInJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHMiLCJyZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcyIsInRvdGFsIiwibGFiZWwiLCJhbW91bnQiLCJ0eXBlIiwibW9sbGllQXBwbGVQYXlCbG9ja0RhdGFDYXJ0IiwibGVuZ3RoIiwicHJvZHVjdCIsIm5lZWRTaGlwcGluZyIsInNob3AiLCJidXR0b25NYXJrdXAiLCJhamF4VXJsIiwicmVnaXN0ZXJQbHVnaW4iLCJ3cCIsInBsdWdpbnMiLCJFeHBlcmltZW50YWxPcmRlck1ldGEiLCJ3YyIsImJsb2Nrc0NoZWNrb3V0IiwiQXBwbGVQYXlCdXR0b25Db21wb25lbnQiLCJjYXJ0IiwiZXh0ZW5zaW9ucyIsIl9faHRtbCIsIk1vbGxpZUFwcGxlUGF5QnV0dG9uQ2FydCIsInJlbmRlciIsInNjb3BlIiwic2V0VGltZW91dCIsIm1heWJlU2hvd0J1dHRvbiIsIm5vbmNlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInZhbHVlIiwidXBkYXRlZENvbnRhY3RJbmZvIiwic2VsZWN0ZWRTaGlwcGluZ01ldGhvZCIsInJlZGlyZWN0aW9uVXJsIiwiYXBwbGVQYXlTZXNzaW9uIiwic2Vzc2lvbiIsIkFwcGxlUGF5U2Vzc2lvbiIsImJlZ2luIiwib25zaGlwcGluZ21ldGhvZHNlbGVjdGVkIiwiZXZlbnQiLCJqUXVlcnkiLCJhamF4IiwidXJsIiwibWV0aG9kIiwiZGF0YSIsImFjdGlvbiIsInNoaXBwaW5nTWV0aG9kIiwiY2FsbGVyUGFnZSIsInNpbXBsaWZpZWRDb250YWN0IiwiY29tcGxldGUiLCJqcVhIUiIsInRleHRTdGF0dXMiLCJzdWNjZXNzIiwiYXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZSIsInJlc3BvbnNlIiwiY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbiIsImVycm9yVGhyb3duIiwiY29uc29sZSIsIndhcm4iLCJhYm9ydCIsIm9uc2hpcHBpbmdjb250YWN0c2VsZWN0ZWQiLCJzaGlwcGluZ0NvbnRhY3QiLCJhcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZSIsIm5ld1NoaXBwaW5nTWV0aG9kcyIsImNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uIiwib252YWxpZGF0ZW1lcmNoYW50IiwiYXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQiLCJ2YWxpZGF0aW9uVXJsIiwidmFsaWRhdGlvblVSTCIsIm1lcmNoYW50U2Vzc2lvbiIsImNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uIiwiSlNPTiIsInBhcnNlIiwib25wYXltZW50YXV0aG9yaXplZCIsIkFwcGxlUGF5UGF5bWVudCIsInBheW1lbnQiLCJiaWxsaW5nQ29udGFjdCIsInRva2VuIiwiZ2l2ZW5OYW1lIiwiZmFtaWx5TmFtZSIsImFkZHJlc3NMaW5lcyIsInBvc3RhbENvZGUiLCJsb2NhbGl0eSIsImFkbWluaXN0cmF0aXZlQXJlYSIsInBob25lTnVtYmVyIiwiZW1haWxBZGRyZXNzIiwiYXV0aG9yaXphdGlvblJlc3VsdCIsInJlc3VsdCIsImNvbXBsZXRlUGF5bWVudCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsInF1ZXJ5U2VsZWN0b3IiLCJhZGRFdmVudExpc3RlbmVyIiwiZXZ0IiwiYXBwbGVQYXlNZXRob2RFbGVtZW50IiwiY2FuU2hvd0J1dHRvbiIsImNhbk1ha2VQYXltZW50cyIsImJ1dHRvbiIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJjbGFzc0xpc3QiLCJhZGQiLCJhcHBlbmRDaGlsZCJdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7O1FBR0E7UUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEZPLFNBQVNBLGlCQUFULENBQTJCQyxNQUEzQixFQUFtQztFQUN0QyxJQUFNQyxTQUFTLEdBQUcsRUFBbEI7O0VBRHNDLDJDQUVsQkQsTUFGa0I7RUFBQTs7RUFBQTtJQUV0QyxvREFBNEI7TUFB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QUFQO0VBQ0EsSUFBTTJELHFCQUFxQixHQUFHbkUsUUFBUSxDQUFDZ0UsYUFBVCxDQUMxQiwrQkFEMEIsQ0FBOUI7RUFHQSxJQUFNSSxhQUFhLEdBQUdELHFCQUFxQixJQUFLM0QsZUFBZSxJQUFJQSxlQUFlLENBQUM2RCxlQUFoQixFQUFuRTs7RUFDQSxJQUFJLENBQUNELGFBQUwsRUFBb0I7SUFDaEIsT0FBTyxLQUFQO0VBQ0g7O0VBQ0QsSUFBTUUsTUFBTSxHQUFHdEUsUUFBUSxDQUFDdUUsYUFBVCxDQUF1QixRQUF2QixDQUFmO0VBQ0FELE1BQU0sQ0FBQ0UsWUFBUCxDQUFvQixJQUFwQixFQUEwQix3QkFBMUI7RUFDQUYsTUFBTSxDQUFDRyxTQUFQLENBQWlCQyxHQUFqQixDQUFxQixrQkFBckI7RUFDQUosTUFBTSxDQUFDRyxTQUFQLENBQWlCQyxHQUFqQixDQUFxQix3QkFBckI7RUFDQVAscUJBQXFCLENBQUNRLFdBQXRCLENBQWtDTCxNQUFsQztFQUNBLE9BQU8sSUFBUDtBQUNILENBZk0sQyIsImZpbGUiOiJhcHBsZXBheUJ1dHRvbkJsb2NrQ29tcG9uZW50Lm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL3B1YmxpYy9qcy9cIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9yZXNvdXJjZXMvanMvYXBwbGVwYXlCdXR0b25CbG9ja0NvbXBvbmVudC5qc1wiKTtcbiIsImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcHBsZUVycm9ycyhlcnJvcnMpIHtcbiAgICBjb25zdCBlcnJvckxpc3QgPSBbXVxuICAgIGZvciAoY29uc3QgZXJyb3Igb2YgZXJyb3JzKSB7XG4gICAgICAgIGNvbnN0IHtjb250YWN0RmllbGQgPSBudWxsLCBjb2RlID0gbnVsbCwgbWVzc2FnZSA9IG51bGx9ID0gZXJyb3JcbiAgICAgICAgY29uc3QgYXBwbGVFcnJvciA9IGNvbnRhY3RGaWVsZCA/IG5ldyBBcHBsZVBheUVycm9yKGNvZGUsIGNvbnRhY3RGaWVsZCwgbWVzc2FnZSkgOiBuZXcgQXBwbGVQYXlFcnJvcihjb2RlKVxuICAgICAgICBlcnJvckxpc3QucHVzaChhcHBsZUVycm9yKVxuICAgIH1cblxuICAgIHJldHVybiBlcnJvckxpc3Rcbn1cbiIsImV4cG9ydCBjb25zdCByZXF1ZXN0ID0gKGNvdW50cnlDb2RlLCBjdXJyZW5jeUNvZGUsIHRvdGFsTGFiZWwsIHN1YnRvdGFsKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY291bnRyeUNvZGU6IGNvdW50cnlDb2RlLFxuICAgICAgICBjdXJyZW5jeUNvZGU6IGN1cnJlbmN5Q29kZSxcbiAgICAgICAgc3VwcG9ydGVkTmV0d29ya3M6IFsnYW1leCcsICdtYWVzdHJvJywgJ21hc3RlckNhcmQnLCAndmlzYScsICd2UGF5J10sXG4gICAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBbJ3N1cHBvcnRzM0RTJ10sXG4gICAgICAgIHNoaXBwaW5nVHlwZTogJ3NoaXBwaW5nJyxcbiAgICAgICAgcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkczogW1xuICAgICAgICAgICAgJ3Bvc3RhbEFkZHJlc3MnLFxuICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICBdLFxuICAgICAgICByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczogW1xuICAgICAgICAgICAgJ3Bvc3RhbEFkZHJlc3MnLFxuICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICBdLFxuICAgICAgICB0b3RhbDoge1xuICAgICAgICAgICAgbGFiZWw6IHRvdGFsTGFiZWwsXG4gICAgICAgICAgICBhbW91bnQ6IHN1YnRvdGFsLFxuICAgICAgICAgICAgdHlwZTogJ2ZpbmFsJ1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IHttYXliZVNob3dCdXR0b259IGZyb20gJy4vbWF5YmVTaG93QXBwbGVQYXlCdXR0b24uanMnO1xuaW1wb3J0IHtyZXF1ZXN0fSBmcm9tIFwiLi9hcHBsZVBheVJlcXVlc3RcIjtcbmltcG9ydCB7Y3JlYXRlQXBwbGVFcnJvcnN9IGZyb20gXCIuL2FwcGxlUGF5RXJyb3JcIjtcblxuKFxuICAgIGZ1bmN0aW9uICh7bW9sbGllQXBwbGVQYXlCbG9ja0RhdGFDYXJ0fSlcbiAgICB7XG4gICAgICAgIGlmIChtb2xsaWVBcHBsZVBheUJsb2NrRGF0YUNhcnQubGVuZ3RoID09PSAwICkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge3Byb2R1Y3Q6IHtuZWVkU2hpcHBpbmcgPSB0cnVlLCBzdWJ0b3RhbH0sIHNob3A6IHtjb3VudHJ5Q29kZSwgY3VycmVuY3lDb2RlID0gJ0VVUicsIHRvdGFsTGFiZWwgPSAnJ30sIGJ1dHRvbk1hcmt1cCwgYWpheFVybH0gPSBtb2xsaWVBcHBsZVBheUJsb2NrRGF0YUNhcnRcblxuICAgICAgICBjb25zdCB7IHJlZ2lzdGVyUGx1Z2luIH0gPSB3cC5wbHVnaW5zO1xuICAgICAgICBjb25zdCB7IEV4cGVyaW1lbnRhbE9yZGVyTWV0YSB9ID0gd2MuYmxvY2tzQ2hlY2tvdXQ7XG4gICAgICAgIGNvbnN0IEFwcGxlUGF5QnV0dG9uQ29tcG9uZW50ID0gKCB7IGNhcnQsIGV4dGVuc2lvbnMgfSApID0+IHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXsge19faHRtbDogYnV0dG9uTWFya3VwfSB9Lz5cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBNb2xsaWVBcHBsZVBheUJ1dHRvbkNhcnQgPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIDxFeHBlcmltZW50YWxPcmRlck1ldGE+XG4gICAgICAgICAgICAgICAgPEFwcGxlUGF5QnV0dG9uQ29tcG9uZW50IC8+XG4gICAgICAgICAgICA8L0V4cGVyaW1lbnRhbE9yZGVyTWV0YT5cbiAgICAgICAgfTtcblxuICAgICAgICByZWdpc3RlclBsdWdpbiggJ21vbGxpZS1hcHBsZXBheS1ibG9jay1idXR0b24nLCB7XG4gICAgICAgICAgICByZW5kZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPE1vbGxpZUFwcGxlUGF5QnV0dG9uQ2FydCAvPjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY29wZTogJ3dvb2NvbW1lcmNlLWNoZWNrb3V0J1xuICAgICAgICB9ICk7XG5cbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgaWYoIW1heWJlU2hvd0J1dHRvbigpKXtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5vbmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3b29jb21tZXJjZS1wcm9jZXNzLWNoZWNrb3V0LW5vbmNlXCIpLnZhbHVlXG4gICAgICAgICAgICBsZXQgdXBkYXRlZENvbnRhY3RJbmZvID0gW11cbiAgICAgICAgICAgIGxldCBzZWxlY3RlZFNoaXBwaW5nTWV0aG9kID0gW11cbiAgICAgICAgICAgIGxldCByZWRpcmVjdGlvblVybCA9ICcnXG4gICAgICAgICAgICBsZXQgYXBwbGVQYXlTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgQXBwbGVQYXlTZXNzaW9uKDMsIHJlcXVlc3QoY291bnRyeUNvZGUsIGN1cnJlbmN5Q29kZSwgdG90YWxMYWJlbCwgc3VidG90YWwpKVxuICAgICAgICAgICAgICAgIHNlc3Npb24uYmVnaW4oKVxuICAgICAgICAgICAgICAgIHNlc3Npb24ub25zaGlwcGluZ21ldGhvZHNlbGVjdGVkID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWpheFVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ21vbGxpZV9hcHBsZV9wYXlfdXBkYXRlX3NoaXBwaW5nX21ldGhvZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpcHBpbmdNZXRob2Q6IGV2ZW50LnNoaXBwaW5nTWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlclBhZ2U6ICdjYXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGlmaWVkQ29udGFjdDogdXBkYXRlZENvbnRhY3RJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3b29jb21tZXJjZS1wcm9jZXNzLWNoZWNrb3V0LW5vbmNlJzogbm9uY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IChqcVhIUiwgdGV4dFN0YXR1cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IChhcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlLCB0ZXh0U3RhdHVzLCBqcVhIUikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUuZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU2hpcHBpbmdNZXRob2QgPSBldmVudC5zaGlwcGluZ01ldGhvZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlLnN1Y2Nlc3MgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IGNyZWF0ZUFwcGxlRXJyb3JzKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHRleHRTdGF0dXMsIGVycm9yVGhyb3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uYWJvcnQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2Vzc2lvbi5vbnNoaXBwaW5nY29udGFjdHNlbGVjdGVkID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeS5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWpheFVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ21vbGxpZV9hcHBsZV9wYXlfdXBkYXRlX3NoaXBwaW5nX2NvbnRhY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBsaWZpZWRDb250YWN0OiBldmVudC5zaGlwcGluZ0NvbnRhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVyUGFnZTogJ2NhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRTaGlwcGluZzogbmVlZFNoaXBwaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3b29jb21tZXJjZS1wcm9jZXNzLWNoZWNrb3V0LW5vbmNlJzogbm9uY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IChqcVhIUiwgdGV4dFN0YXR1cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IChhcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZSwgdGV4dFN0YXR1cywganFYSFIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5kYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZENvbnRhY3RJbmZvID0gZXZlbnQuc2hpcHBpbmdDb250YWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLnN1Y2Nlc3MgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IGNyZWF0ZUFwcGxlRXJyb3JzKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLm5ld1NoaXBwaW5nTWV0aG9kcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNoaXBwaW5nTWV0aG9kID0gcmVzcG9uc2UubmV3U2hpcHBpbmdNZXRob2RzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24ocmVzcG9uc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4odGV4dFN0YXR1cywgZXJyb3JUaHJvd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5hYm9ydCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXNzaW9uLm9udmFsaWRhdGVtZXJjaGFudCA9IChhcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXhVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdtb2xsaWVfYXBwbGVfcGF5X3ZhbGlkYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25Vcmw6IGFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LnZhbGlkYXRpb25VUkwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dvb2NvbW1lcmNlLXByb2Nlc3MtY2hlY2tvdXQtbm9uY2UnOiBub25jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKGpxWEhSLCB0ZXh0U3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKG1lcmNoYW50U2Vzc2lvbiwgdGV4dFN0YXR1cywganFYSFIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVyY2hhbnRTZXNzaW9uLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihKU09OLnBhcnNlKG1lcmNoYW50U2Vzc2lvbi5kYXRhKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4obWVyY2hhbnRTZXNzaW9uLmRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uYWJvcnQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybih0ZXh0U3RhdHVzLCBlcnJvclRocm93bilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmFib3J0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlc3Npb24ub25wYXltZW50YXV0aG9yaXplZCA9IChBcHBsZVBheVBheW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge2JpbGxpbmdDb250YWN0LCBzaGlwcGluZ0NvbnRhY3QgfSA9IEFwcGxlUGF5UGF5bWVudC5wYXltZW50XG5cbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhamF4VXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnbW9sbGllX2FwcGxlX3BheV9jcmVhdGVfb3JkZXJfY2FydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpcHBpbmdDb250YWN0OiBBcHBsZVBheVBheW1lbnQucGF5bWVudC5zaGlwcGluZ0NvbnRhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlsbGluZ0NvbnRhY3Q6IEFwcGxlUGF5UGF5bWVudC5wYXltZW50LmJpbGxpbmdDb250YWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuOiBBcHBsZVBheVBheW1lbnQucGF5bWVudC50b2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ01ldGhvZDogc2VsZWN0ZWRTaGlwcGluZ01ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9sbGllLXBheW1lbnRzLWZvci13b29jb21tZXJjZV9pc3N1ZXJfYXBwbGVwYXknOiAnYXBwbGVwYXknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3b29jb21tZXJjZS1wcm9jZXNzLWNoZWNrb3V0LW5vbmNlJzogbm9uY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpbGxpbmdfZmlyc3RfbmFtZSc6IGJpbGxpbmdDb250YWN0LmdpdmVuTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19sYXN0X25hbWUnOiBiaWxsaW5nQ29udGFjdC5mYW1pbHlOYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX2NvbXBhbnknOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19jb3VudHJ5JzogYmlsbGluZ0NvbnRhY3QuY291bnRyeUNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpbGxpbmdfYWRkcmVzc18xJzogYmlsbGluZ0NvbnRhY3QuYWRkcmVzc0xpbmVzWzBdIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX2FkZHJlc3NfMic6IGJpbGxpbmdDb250YWN0LmFkZHJlc3NMaW5lc1sxXSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19wb3N0Y29kZSc6IGJpbGxpbmdDb250YWN0LnBvc3RhbENvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpbGxpbmdfY2l0eSc6IGJpbGxpbmdDb250YWN0LmxvY2FsaXR5IHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX3N0YXRlJzogYmlsbGluZ0NvbnRhY3QuYWRtaW5pc3RyYXRpdmVBcmVhIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX3Bob25lJzogYmlsbGluZ0NvbnRhY3QucGhvbmVOdW1iZXIgfHwgJzAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JpbGxpbmdfZW1haWwnOiBzaGlwcGluZ0NvbnRhY3QuZW1haWxBZGRyZXNzIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGlwcGluZ19maXJzdF9uYW1lJzogc2hpcHBpbmdDb250YWN0LmdpdmVuTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfbGFzdF9uYW1lJzogc2hpcHBpbmdDb250YWN0LmZhbWlseU5hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoaXBwaW5nX2NvbXBhbnknOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfY291bnRyeSc6IHNoaXBwaW5nQ29udGFjdC5jb3VudHJ5Q29kZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfYWRkcmVzc18xJzogc2hpcHBpbmdDb250YWN0LmFkZHJlc3NMaW5lc1swXSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfYWRkcmVzc18yJzogc2hpcHBpbmdDb250YWN0LmFkZHJlc3NMaW5lc1sxXSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfcG9zdGNvZGUnOiBzaGlwcGluZ0NvbnRhY3QucG9zdGFsQ29kZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfY2l0eSc6IHNoaXBwaW5nQ29udGFjdC5sb2NhbGl0eSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfc3RhdGUnOiBzaGlwcGluZ0NvbnRhY3QuYWRtaW5pc3RyYXRpdmVBcmVhIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGlwcGluZ19waG9uZSc6IHNoaXBwaW5nQ29udGFjdC5waG9uZU51bWJlciB8fCAnMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfZW1haWwnOiBzaGlwcGluZ0NvbnRhY3QuZW1haWxBZGRyZXNzIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcmRlcl9jb21tZW50cycgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGF5bWVudF9tZXRob2QnIDogJ21vbGxpZV93Y19nYXRld2F5X2FwcGxlcGF5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX3dwX2h0dHBfcmVmZXJlcicgOiAnLz93Yy1hamF4PXVwZGF0ZV9vcmRlcl9yZXZpZXcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IChqcVhIUiwgdGV4dFN0YXR1cykgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKGF1dGhvcml6YXRpb25SZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF1dGhvcml6YXRpb25SZXN1bHQuZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRob3JpemF0aW9uUmVzdWx0LnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Rpb25VcmwgPSByZXN1bHRbJ3JldHVyblVybCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmNvbXBsZXRlUGF5bWVudChyZXN1bHRbJ3Jlc3BvbnNlVG9BcHBsZSddKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0aW9uVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9ycyA9IGNyZWF0ZUFwcGxlRXJyb3JzKHJlc3VsdC5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uY29tcGxldGVQYXltZW50KHJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4odGV4dFN0YXR1cywgZXJyb3JUaHJvd24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5hYm9ydCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtb2xsaWVfYXBwbGVwYXlfYnV0dG9uJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgYXBwbGVQYXlTZXNzaW9uKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sMjAwMCk7XG5cbiAgICB9XG4pXG4oXG4gICAgd2luZG93XG4pXG4iLCJleHBvcnQgY29uc3QgbWF5YmVTaG93QnV0dG9uID0gKCkgPT4ge1xuICAgIGNvbnN0IHtBcHBsZVBheVNlc3Npb259ID0gd2luZG93XG4gICAgY29uc3QgYXBwbGVQYXlNZXRob2RFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJyNtb2xsaWUtYXBwbGVwYXlEaXJlY3QtYnV0dG9uJyxcbiAgICApXG4gICAgY29uc3QgY2FuU2hvd0J1dHRvbiA9IGFwcGxlUGF5TWV0aG9kRWxlbWVudCAmJiAoQXBwbGVQYXlTZXNzaW9uICYmIEFwcGxlUGF5U2Vzc2lvbi5jYW5NYWtlUGF5bWVudHMoKSlcbiAgICBpZiAoIWNhblNob3dCdXR0b24pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpXG4gICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnaWQnLCAnbW9sbGllX2FwcGxlcGF5X2J1dHRvbicpXG4gICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2FwcGxlLXBheS1idXR0b24nKVxuICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdhcHBsZS1wYXktYnV0dG9uLWJsYWNrJylcbiAgICBhcHBsZVBheU1ldGhvZEVsZW1lbnQuYXBwZW5kQ2hpbGQoYnV0dG9uKVxuICAgIHJldHVybiB0cnVlXG59XG4iXSwic291cmNlUm9vdCI6IiJ9
1
+ !function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/public/js/",n(n.s="Ixi8")}({Ixi8:function(e,t,n){"use strict";n.r(t);var o=n("OiFV"),r=n("uXQx"),i=n("nxB1");!function(e){var t=window.mollieApplePayBlockDataCart;if(0!==t.length){var n=t.product,a=n.needShipping,c=void 0===a||a,l=n.subtotal,p=t.shop,s=p.countryCode,u=p.currencyCode,d=void 0===u?"EUR":u,m=p.totalLabel,f=void 0===m?"":m,y=t.buttonMarkup,h=t.ajaxUrl,g=wp.plugins.registerPlugin,_=wc.blocksCheckout.ExperimentalOrderMeta,b=function(e){e.cart,e.extensions;return React.createElement("div",{dangerouslySetInnerHTML:{__html:y}})},v=function(){return React.createElement(_,null,React.createElement(b,null))};g("mollie-applepay-block-button",{render:function(){return React.createElement(v,null)},scope:"woocommerce-checkout"}),setTimeout((function(){if(Object(o.a)()){var e=document.getElementById("woocommerce-process-checkout-nonce").value,t=[],n=[],a="";document.querySelector("#mollie_applepay_button").addEventListener("click",(function(o){var p;(p=new ApplePaySession(3,Object(r.a)(s,d,f,l))).begin(),p.onshippingmethodselected=function(o){var r=this;jQuery.ajax({url:h,method:"POST",data:{action:"mollie_apple_pay_update_shipping_method",shippingMethod:o.shippingMethod,callerPage:"cart",simplifiedContact:t,"woocommerce-process-checkout-nonce":e},complete:function(e,t){},success:function(e,t,a){var c=e.data;n=o.shippingMethod,!1===e.success&&(c.errors=Object(i.a)(c.errors)),r.completeShippingMethodSelection(c)},error:function(e,t,n){console.warn(t,n),p.abort()}})},p.onshippingcontactselected=function(o){var r=this;jQuery.ajax({url:h,method:"POST",data:{action:"mollie_apple_pay_update_shipping_contact",simplifiedContact:o.shippingContact,callerPage:"cart",needShipping:c,"woocommerce-process-checkout-nonce":e},complete:function(e,t){},success:function(e,a,c){var l=e.data;t=o.shippingContact,!1===e.success&&(l.errors=Object(i.a)(l.errors)),l.newShippingMethods&&(n=l.newShippingMethods[0]),r.completeShippingContactSelection(l)},error:function(e,t,n){console.warn(t,n),p.abort()}})},p.onvalidatemerchant=function(t){jQuery.ajax({url:h,method:"POST",data:{action:"mollie_apple_pay_validation",validationUrl:t.validationURL,"woocommerce-process-checkout-nonce":e},complete:function(e,t){},success:function(e,t,n){!0===e.success?p.completeMerchantValidation(JSON.parse(e.data)):(console.warn(e.data),p.abort())},error:function(e,t,n){console.warn(t,n),p.abort()}})},p.onpaymentauthorized=function(t){var o=t.payment,r=o.billingContact,c=o.shippingContact;jQuery.ajax({url:h,method:"POST",data:{action:"mollie_apple_pay_create_order_cart",shippingContact:t.payment.shippingContact,billingContact:t.payment.billingContact,token:t.payment.token,shippingMethod:n,"mollie-payments-for-woocommerce_issuer_applepay":"applepay","woocommerce-process-checkout-nonce":e,billing_first_name:r.givenName||"",billing_last_name:r.familyName||"",billing_company:"",billing_country:r.countryCode||"",billing_address_1:r.addressLines[0]||"",billing_address_2:r.addressLines[1]||"",billing_postcode:r.postalCode||"",billing_city:r.locality||"",billing_state:r.administrativeArea||"",billing_phone:r.phoneNumber||"000000000000",billing_email:c.emailAddress||"",shipping_first_name:c.givenName||"",shipping_last_name:c.familyName||"",shipping_company:"",shipping_country:c.countryCode||"",shipping_address_1:c.addressLines[0]||"",shipping_address_2:c.addressLines[1]||"",shipping_postcode:c.postalCode||"",shipping_city:c.locality||"",shipping_state:c.administrativeArea||"",shipping_phone:c.phoneNumber||"000000000000",shipping_email:c.emailAddress||"",order_comments:"",payment_method:"mollie_wc_gateway_applepay",_wp_http_referer:"/?wc-ajax=update_order_review"},complete:function(e,t){},success:function(e,t,n){var o=e.data;!0===e.success?(a=o.returnUrl,p.completePayment(o.responseToApple),window.location.href=a):(o.errors=Object(i.a)(o.errors),p.completePayment(o))},error:function(e,t,n){console.warn(t,n),p.abort()}})}}))}}),2e3)}}()},OiFV:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var o=function(){var e=window.ApplePaySession,t=document.querySelector("#mollie-applepayDirect-button");if(!(t&&e&&e.canMakePayments()))return!1;var n=document.createElement("button");return n.setAttribute("id","mollie_applepay_button"),n.classList.add("apple-pay-button"),n.classList.add("apple-pay-button-black"),t.appendChild(n),!0}},nxB1:function(e,t,n){"use strict";function o(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,i=function(){};return{s:i,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){l=!0,a=e},f:function(){try{c||null==n.return||n.return()}finally{if(l)throw a}}}}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function i(e){var t,n=[],r=o(e);try{for(r.s();!(t=r.n()).done;){var i=t.value,a=i.contactField,c=void 0===a?null:a,l=i.code,p=void 0===l?null:l,s=i.message,u=c?new ApplePayError(p,c,void 0===s?null:s):new ApplePayError(p);n.push(u)}}catch(e){r.e(e)}finally{r.f()}return n}n.d(t,"a",(function(){return i}))},uXQx:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var o=function(e,t,n,o){return{countryCode:e,currencyCode:t,supportedNetworks:["amex","maestro","masterCard","visa","vPay"],merchantCapabilities:["supports3DS"],shippingType:"shipping",requiredBillingContactFields:["postalAddress","email"],requiredShippingContactFields:["postalAddress","email"],total:{label:n,amount:o,type:"final"}}}}});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/js/applepayDirect.min.js CHANGED
@@ -1,442 +1 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
- /******/ }
41
- /******/ };
42
- /******/
43
- /******/ // define __esModule on exports
44
- /******/ __webpack_require__.r = function(exports) {
45
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
- /******/ }
48
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
- /******/ };
50
- /******/
51
- /******/ // create a fake namespace object
52
- /******/ // mode & 1: value is a module id, require it
53
- /******/ // mode & 2: merge all properties of value into the ns
54
- /******/ // mode & 4: return value when already ns object
55
- /******/ // mode & 8|1: behave like require
56
- /******/ __webpack_require__.t = function(value, mode) {
57
- /******/ if(mode & 1) value = __webpack_require__(value);
58
- /******/ if(mode & 8) return value;
59
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
- /******/ var ns = Object.create(null);
61
- /******/ __webpack_require__.r(ns);
62
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
- /******/ return ns;
65
- /******/ };
66
- /******/
67
- /******/ // getDefaultExport function for compatibility with non-harmony modules
68
- /******/ __webpack_require__.n = function(module) {
69
- /******/ var getter = module && module.__esModule ?
70
- /******/ function getDefault() { return module['default']; } :
71
- /******/ function getModuleExports() { return module; };
72
- /******/ __webpack_require__.d(getter, 'a', getter);
73
- /******/ return getter;
74
- /******/ };
75
- /******/
76
- /******/ // Object.prototype.hasOwnProperty.call
77
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
- /******/
79
- /******/ // __webpack_public_path__
80
- /******/ __webpack_require__.p = "/public/js/";
81
- /******/
82
- /******/
83
- /******/ // Load entry module and return exports
84
- /******/ return __webpack_require__(__webpack_require__.s = "./resources/js/applepayDirect.js");
85
- /******/ })
86
- /************************************************************************/
87
- /******/ ({
88
-
89
- /***/ "./resources/js/applePayError.js":
90
- /*!***************************************!*\
91
- !*** ./resources/js/applePayError.js ***!
92
- \***************************************/
93
- /*! exports provided: createAppleErrors */
94
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
95
-
96
- "use strict";
97
- __webpack_require__.r(__webpack_exports__);
98
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createAppleErrors", function() { return createAppleErrors; });
99
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
100
-
101
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
102
-
103
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
104
-
105
- function createAppleErrors(errors) {
106
- var errorList = [];
107
-
108
- var _iterator = _createForOfIteratorHelper(errors),
109
- _step;
110
-
111
- try {
112
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
113
- var error = _step.value;
114
- var _error$contactField = error.contactField,
115
- contactField = _error$contactField === void 0 ? null : _error$contactField,
116
- _error$code = error.code,
117
- code = _error$code === void 0 ? null : _error$code,
118
- _error$message = error.message,
119
- message = _error$message === void 0 ? null : _error$message;
120
- var appleError = contactField ? new ApplePayError(code, contactField, message) : new ApplePayError(code);
121
- errorList.push(appleError);
122
- }
123
- } catch (err) {
124
- _iterator.e(err);
125
- } finally {
126
- _iterator.f();
127
- }
128
-
129
- return errorList;
130
- }
131
-
132
- /***/ }),
133
-
134
- /***/ "./resources/js/applePayRequest.js":
135
- /*!*****************************************!*\
136
- !*** ./resources/js/applePayRequest.js ***!
137
- \*****************************************/
138
- /*! exports provided: request */
139
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
140
-
141
- "use strict";
142
- __webpack_require__.r(__webpack_exports__);
143
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "request", function() { return request; });
144
- var request = function request(countryCode, currencyCode, totalLabel, subtotal) {
145
- return {
146
- countryCode: countryCode,
147
- currencyCode: currencyCode,
148
- supportedNetworks: ['amex', 'maestro', 'masterCard', 'visa', 'vPay'],
149
- merchantCapabilities: ['supports3DS'],
150
- shippingType: 'shipping',
151
- requiredBillingContactFields: ['postalAddress', 'email'],
152
- requiredShippingContactFields: ['postalAddress', 'email'],
153
- total: {
154
- label: totalLabel,
155
- amount: subtotal,
156
- type: 'final'
157
- }
158
- };
159
- };
160
-
161
- /***/ }),
162
-
163
- /***/ "./resources/js/applepayDirect.js":
164
- /*!****************************************!*\
165
- !*** ./resources/js/applepayDirect.js ***!
166
- \****************************************/
167
- /*! no exports provided */
168
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
169
-
170
- "use strict";
171
- __webpack_require__.r(__webpack_exports__);
172
- /* harmony import */ var _applePayError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applePayError.js */ "./resources/js/applePayError.js");
173
- /* harmony import */ var _maybeShowApplePayButton_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./maybeShowApplePayButton.js */ "./resources/js/maybeShowApplePayButton.js");
174
- /* harmony import */ var _applePayRequest_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./applePayRequest.js */ "./resources/js/applePayRequest.js");
175
-
176
-
177
-
178
-
179
- (function (_ref) {
180
- var _ = _ref._,
181
- mollieApplePayDirectData = _ref.mollieApplePayDirectData,
182
- jQuery = _ref.jQuery;
183
-
184
- if (_.isEmpty(mollieApplePayDirectData)) {
185
- return;
186
- }
187
-
188
- var _mollieApplePayDirect = mollieApplePayDirectData.product,
189
- id = _mollieApplePayDirect.id,
190
- _mollieApplePayDirect2 = _mollieApplePayDirect.needShipping,
191
- needShipping = _mollieApplePayDirect2 === void 0 ? true : _mollieApplePayDirect2,
192
- _mollieApplePayDirect3 = _mollieApplePayDirect.isVariation,
193
- isVariation = _mollieApplePayDirect3 === void 0 ? false : _mollieApplePayDirect3,
194
- price = _mollieApplePayDirect.price,
195
- _mollieApplePayDirect4 = mollieApplePayDirectData.shop,
196
- countryCode = _mollieApplePayDirect4.countryCode,
197
- _mollieApplePayDirect5 = _mollieApplePayDirect4.currencyCode,
198
- currencyCode = _mollieApplePayDirect5 === void 0 ? 'EUR' : _mollieApplePayDirect5,
199
- _mollieApplePayDirect6 = _mollieApplePayDirect4.totalLabel,
200
- totalLabel = _mollieApplePayDirect6 === void 0 ? '' : _mollieApplePayDirect6,
201
- ajaxUrl = mollieApplePayDirectData.ajaxUrl;
202
-
203
- if (!id || !price || !countryCode || !ajaxUrl) {
204
- return;
205
- }
206
-
207
- if (!Object(_maybeShowApplePayButton_js__WEBPACK_IMPORTED_MODULE_1__["maybeShowButton"])()) {
208
- return;
209
- }
210
-
211
- var nonce = document.getElementById('woocommerce-process-checkout-nonce').value;
212
- var productId = id;
213
- var productQuantity = 1;
214
- var updatedContactInfo = [];
215
- var selectedShippingMethod = [];
216
- var redirectionUrl = '';
217
- document.querySelector('input.qty').addEventListener('change', function (event) {
218
- productQuantity = event.currentTarget.value;
219
- });
220
-
221
- if (isVariation) {
222
- var appleButton = document.querySelector('#mollie_applepay_button');
223
- jQuery('.single_variation_wrap').on('show_variation', function (event, variation) {
224
- // Fired when the user selects all the required dropdowns / attributes
225
- // and a final variation is selected / shown
226
- if (variation.variation_id) {
227
- productId = variation.variation_id;
228
- }
229
-
230
- appleButton.disabled = false;
231
- appleButton.classList.remove("buttonDisabled");
232
- });
233
- appleButton.disabled = true;
234
- appleButton.classList.add("buttonDisabled");
235
- }
236
-
237
- var amountWithoutTax = productQuantity * price;
238
-
239
- var applePaySession = function applePaySession() {
240
- var session = new ApplePaySession(3, Object(_applePayRequest_js__WEBPACK_IMPORTED_MODULE_2__["request"])(countryCode, currencyCode, totalLabel, amountWithoutTax));
241
- session.begin();
242
-
243
- if (needShipping) {
244
- session.onshippingmethodselected = function (event) {
245
- var _this = this;
246
-
247
- jQuery.ajax({
248
- url: ajaxUrl,
249
- method: 'POST',
250
- data: {
251
- action: 'mollie_apple_pay_update_shipping_method',
252
- shippingMethod: event.shippingMethod,
253
- productId: productId,
254
- callerPage: 'productDetail',
255
- productQuantity: productQuantity,
256
- simplifiedContact: updatedContactInfo,
257
- 'woocommerce-process-checkout-nonce': nonce
258
- },
259
- complete: function complete(jqXHR, textStatus) {},
260
- success: function success(applePayShippingMethodUpdate, textStatus, jqXHR) {
261
- var response = applePayShippingMethodUpdate.data;
262
- selectedShippingMethod = event.shippingMethod;
263
-
264
- if (applePayShippingMethodUpdate.success === false) {
265
- response.errors = Object(_applePayError_js__WEBPACK_IMPORTED_MODULE_0__["createAppleErrors"])(response.errors);
266
- }
267
-
268
- _this.completeShippingMethodSelection(response);
269
- },
270
- error: function error(jqXHR, textStatus, errorThrown) {
271
- console.warn(textStatus, errorThrown);
272
- session.abort();
273
- }
274
- });
275
- };
276
-
277
- session.onshippingcontactselected = function (event) {
278
- var _this2 = this;
279
-
280
- jQuery.ajax({
281
- url: ajaxUrl,
282
- method: 'POST',
283
- data: {
284
- action: 'mollie_apple_pay_update_shipping_contact',
285
- productId: productId,
286
- callerPage: 'productDetail',
287
- productQuantity: productQuantity,
288
- simplifiedContact: event.shippingContact,
289
- needShipping: needShipping,
290
- 'woocommerce-process-checkout-nonce': nonce
291
- },
292
- complete: function complete(jqXHR, textStatus) {},
293
- success: function success(applePayShippingContactUpdate, textStatus, jqXHR) {
294
- var response = applePayShippingContactUpdate.data;
295
- updatedContactInfo = event.shippingContact;
296
-
297
- if (applePayShippingContactUpdate.success === false) {
298
- response.errors = Object(_applePayError_js__WEBPACK_IMPORTED_MODULE_0__["createAppleErrors"])(response.errors);
299
- }
300
-
301
- if (response.newShippingMethods) {
302
- selectedShippingMethod = response.newShippingMethods[0];
303
- }
304
-
305
- _this2.completeShippingContactSelection(response);
306
- },
307
- error: function error(jqXHR, textStatus, errorThrown) {
308
- console.warn(textStatus, errorThrown);
309
- session.abort();
310
- }
311
- });
312
- };
313
- }
314
-
315
- session.onvalidatemerchant = function (applePayValidateMerchantEvent) {
316
- jQuery.ajax({
317
- url: ajaxUrl,
318
- method: 'POST',
319
- data: {
320
- action: 'mollie_apple_pay_validation',
321
- validationUrl: applePayValidateMerchantEvent.validationURL,
322
- 'woocommerce-process-checkout-nonce': nonce
323
- },
324
- complete: function complete(jqXHR, textStatus) {},
325
- success: function success(merchantSession, textStatus, jqXHR) {
326
- if (merchantSession.success === true) {
327
- session.completeMerchantValidation(JSON.parse(merchantSession.data));
328
- } else {
329
- console.warn(merchantSession.data);
330
- session.abort();
331
- }
332
- },
333
- error: function error(jqXHR, textStatus, errorThrown) {
334
- console.warn(textStatus, errorThrown);
335
- session.abort();
336
- }
337
- });
338
- };
339
-
340
- session.onpaymentauthorized = function (ApplePayPayment) {
341
- var _ApplePayPayment$paym = ApplePayPayment.payment,
342
- billingContact = _ApplePayPayment$paym.billingContact,
343
- shippingContact = _ApplePayPayment$paym.shippingContact;
344
- jQuery.ajax({
345
- url: ajaxUrl,
346
- method: 'POST',
347
- data: {
348
- action: 'mollie_apple_pay_create_order',
349
- productId: productId,
350
- productQuantity: productQuantity,
351
- shippingContact: ApplePayPayment.payment.shippingContact,
352
- billingContact: ApplePayPayment.payment.billingContact,
353
- token: ApplePayPayment.payment.token,
354
- shippingMethod: selectedShippingMethod,
355
- 'mollie-payments-for-woocommerce_issuer_applepay': 'applepay',
356
- 'woocommerce-process-checkout-nonce': nonce,
357
- 'billing_first_name': billingContact.givenName || '',
358
- 'billing_last_name': billingContact.familyName || '',
359
- 'billing_company': '',
360
- 'billing_country': billingContact.countryCode || '',
361
- 'billing_address_1': billingContact.addressLines[0] || '',
362
- 'billing_address_2': billingContact.addressLines[1] || '',
363
- 'billing_postcode': billingContact.postalCode || '',
364
- 'billing_city': billingContact.locality || '',
365
- 'billing_state': billingContact.administrativeArea || '',
366
- 'billing_phone': billingContact.phoneNumber || '000000000000',
367
- 'billing_email': shippingContact.emailAddress || '',
368
- 'shipping_first_name': shippingContact.givenName || '',
369
- 'shipping_last_name': shippingContact.familyName || '',
370
- 'shipping_company': '',
371
- 'shipping_country': shippingContact.countryCode || '',
372
- 'shipping_address_1': shippingContact.addressLines[0] || '',
373
- 'shipping_address_2': shippingContact.addressLines[1] || '',
374
- 'shipping_postcode': shippingContact.postalCode || '',
375
- 'shipping_city': shippingContact.locality || '',
376
- 'shipping_state': shippingContact.administrativeArea || '',
377
- 'shipping_phone': shippingContact.phoneNumber || '000000000000',
378
- 'shipping_email': shippingContact.emailAddress || '',
379
- 'order_comments': '',
380
- 'payment_method': 'mollie_wc_gateway_applepay',
381
- '_wp_http_referer': '/?wc-ajax=update_order_review'
382
- },
383
- complete: function complete(jqXHR, textStatus) {},
384
- success: function success(authorizationResult, textStatus, jqXHR) {
385
- var result = authorizationResult.data;
386
-
387
- if (authorizationResult.success === true) {
388
- redirectionUrl = result['returnUrl'];
389
- session.completePayment(result['responseToApple']);
390
- window.location.href = redirectionUrl;
391
- } else {
392
- result.errors = Object(_applePayError_js__WEBPACK_IMPORTED_MODULE_0__["createAppleErrors"])(result.errors);
393
- session.completePayment(result);
394
- }
395
- },
396
- error: function error(jqXHR, textStatus, errorThrown) {
397
- console.warn(textStatus, errorThrown);
398
- session.abort();
399
- }
400
- });
401
- };
402
- };
403
-
404
- document.querySelector('#mollie_applepay_button').addEventListener('click', function (evt) {
405
- applePaySession();
406
- });
407
- })(window);
408
-
409
- /***/ }),
410
-
411
- /***/ "./resources/js/maybeShowApplePayButton.js":
412
- /*!*************************************************!*\
413
- !*** ./resources/js/maybeShowApplePayButton.js ***!
414
- \*************************************************/
415
- /*! exports provided: maybeShowButton */
416
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
417
-
418
- "use strict";
419
- __webpack_require__.r(__webpack_exports__);
420
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "maybeShowButton", function() { return maybeShowButton; });
421
- var maybeShowButton = function maybeShowButton() {
422
- var _window = window,
423
- ApplePaySession = _window.ApplePaySession;
424
- var applePayMethodElement = document.querySelector('#mollie-applepayDirect-button');
425
- var canShowButton = applePayMethodElement && ApplePaySession && ApplePaySession.canMakePayments();
426
-
427
- if (!canShowButton) {
428
- return false;
429
- }
430
-
431
- var button = document.createElement('button');
432
- button.setAttribute('id', 'mollie_applepay_button');
433
- button.classList.add('apple-pay-button');
434
- button.classList.add('apple-pay-button-black');
435
- applePayMethodElement.appendChild(button);
436
- return true;
437
- };
438
-
439
- /***/ })
440
-
441
- /******/ });
442
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2FwcGxlUGF5RXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2FwcGxlUGF5UmVxdWVzdC5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYXBwbGVwYXlEaXJlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL21heWJlU2hvd0FwcGxlUGF5QnV0dG9uLmpzIl0sIm5hbWVzIjpbImNyZWF0ZUFwcGxlRXJyb3JzIiwiZXJyb3JzIiwiZXJyb3JMaXN0IiwiZXJyb3IiLCJjb250YWN0RmllbGQiLCJjb2RlIiwibWVzc2FnZSIsImFwcGxlRXJyb3IiLCJBcHBsZVBheUVycm9yIiwicHVzaCIsInJlcXVlc3QiLCJjb3VudHJ5Q29kZSIsImN1cnJlbmN5Q29kZSIsInRvdGFsTGFiZWwiLCJzdWJ0b3RhbCIsInN1cHBvcnRlZE5ldHdvcmtzIiwibWVyY2hhbnRDYXBhYmlsaXRpZXMiLCJzaGlwcGluZ1R5cGUiLCJyZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzIiwicmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMiLCJ0b3RhbCIsImxhYmVsIiwiYW1vdW50IiwidHlwZSIsIl8iLCJtb2xsaWVBcHBsZVBheURpcmVjdERhdGEiLCJqUXVlcnkiLCJpc0VtcHR5IiwicHJvZHVjdCIsImlkIiwibmVlZFNoaXBwaW5nIiwiaXNWYXJpYXRpb24iLCJwcmljZSIsInNob3AiLCJhamF4VXJsIiwibWF5YmVTaG93QnV0dG9uIiwibm9uY2UiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidmFsdWUiLCJwcm9kdWN0SWQiLCJwcm9kdWN0UXVhbnRpdHkiLCJ1cGRhdGVkQ29udGFjdEluZm8iLCJzZWxlY3RlZFNoaXBwaW5nTWV0aG9kIiwicmVkaXJlY3Rpb25VcmwiLCJxdWVyeVNlbGVjdG9yIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiY3VycmVudFRhcmdldCIsImFwcGxlQnV0dG9uIiwib24iLCJ2YXJpYXRpb24iLCJ2YXJpYXRpb25faWQiLCJkaXNhYmxlZCIsImNsYXNzTGlzdCIsInJlbW92ZSIsImFkZCIsImFtb3VudFdpdGhvdXRUYXgiLCJhcHBsZVBheVNlc3Npb24iLCJzZXNzaW9uIiwiQXBwbGVQYXlTZXNzaW9uIiwiYmVnaW4iLCJvbnNoaXBwaW5nbWV0aG9kc2VsZWN0ZWQiLCJhamF4IiwidXJsIiwibWV0aG9kIiwiZGF0YSIsImFjdGlvbiIsInNoaXBwaW5nTWV0aG9kIiwiY2FsbGVyUGFnZSIsInNpbXBsaWZpZWRDb250YWN0IiwiY29tcGxldGUiLCJqcVhIUiIsInRleHRTdGF0dXMiLCJzdWNjZXNzIiwiYXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZSIsInJlc3BvbnNlIiwiY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbiIsImVycm9yVGhyb3duIiwiY29uc29sZSIsIndhcm4iLCJhYm9ydCIsIm9uc2hpcHBpbmdjb250YWN0c2VsZWN0ZWQiLCJzaGlwcGluZ0NvbnRhY3QiLCJhcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZSIsIm5ld1NoaXBwaW5nTWV0aG9kcyIsImNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uIiwib252YWxpZGF0ZW1lcmNoYW50IiwiYXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQiLCJ2YWxpZGF0aW9uVXJsIiwidmFsaWRhdGlvblVSTCIsIm1lcmNoYW50U2Vzc2lvbiIsImNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uIiwiSlNPTiIsInBhcnNlIiwib25wYXltZW50YXV0aG9yaXplZCIsIkFwcGxlUGF5UGF5bWVudCIsInBheW1lbnQiLCJiaWxsaW5nQ29udGFjdCIsInRva2VuIiwiZ2l2ZW5OYW1lIiwiZmFtaWx5TmFtZSIsImFkZHJlc3NMaW5lcyIsInBvc3RhbENvZGUiLCJsb2NhbGl0eSIsImFkbWluaXN0cmF0aXZlQXJlYSIsInBob25lTnVtYmVyIiwiZW1haWxBZGRyZXNzIiwiYXV0aG9yaXphdGlvblJlc3VsdCIsInJlc3VsdCIsImNvbXBsZXRlUGF5bWVudCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImV2dCIsImFwcGxlUGF5TWV0aG9kRWxlbWVudCIsImNhblNob3dCdXR0b24iLCJjYW5NYWtlUGF5bWVudHMiLCJidXR0b24iLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiYXBwZW5kQ2hpbGQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xGTyxTQUFTQSxpQkFBVCxDQUEyQkMsTUFBM0IsRUFBbUM7RUFDdEMsSUFBTUMsU0FBUyxHQUFHLEVBQWxCOztFQURzQywyQ0FFbEJELE1BRmtCO0VBQUE7O0VBQUE7SUFFdEMsb0RBQTRCO01BQUEsSUFBakJFLEtBQWlCO01BQ3hCLDBCQUEyREEsS0FBM0QsQ0FBT0MsWUFBUDtNQUFBLElBQU9BLFlB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YXBwbGVwYXlEaXJlY3QubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvcHVibGljL2pzL1wiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3Jlc291cmNlcy9qcy9hcHBsZXBheURpcmVjdC5qc1wiKTtcbiIsImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcHBsZUVycm9ycyhlcnJvcnMpIHtcbiAgICBjb25zdCBlcnJvckxpc3QgPSBbXVxuICAgIGZvciAoY29uc3QgZXJyb3Igb2YgZXJyb3JzKSB7XG4gICAgICAgIGNvbnN0IHtjb250YWN0RmllbGQgPSBudWxsLCBjb2RlID0gbnVsbCwgbWVzc2FnZSA9IG51bGx9ID0gZXJyb3JcbiAgICAgICAgY29uc3QgYXBwbGVFcnJvciA9IGNvbnRhY3RGaWVsZCA/IG5ldyBBcHBsZVBheUVycm9yKGNvZGUsIGNvbnRhY3RGaWVsZCwgbWVzc2FnZSkgOiBuZXcgQXBwbGVQYXlFcnJvcihjb2RlKVxuICAgICAgICBlcnJvckxpc3QucHVzaChhcHBsZUVycm9yKVxuICAgIH1cblxuICAgIHJldHVybiBlcnJvckxpc3Rcbn1cbiIsImV4cG9ydCBjb25zdCByZXF1ZXN0ID0gKGNvdW50cnlDb2RlLCBjdXJyZW5jeUNvZGUsIHRvdGFsTGFiZWwsIHN1YnRvdGFsKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY291bnRyeUNvZGU6IGNvdW50cnlDb2RlLFxuICAgICAgICBjdXJyZW5jeUNvZGU6IGN1cnJlbmN5Q29kZSxcbiAgICAgICAgc3VwcG9ydGVkTmV0d29ya3M6IFsnYW1leCcsICdtYWVzdHJvJywgJ21hc3RlckNhcmQnLCAndmlzYScsICd2UGF5J10sXG4gICAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBbJ3N1cHBvcnRzM0RTJ10sXG4gICAgICAgIHNoaXBwaW5nVHlwZTogJ3NoaXBwaW5nJyxcbiAgICAgICAgcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkczogW1xuICAgICAgICAgICAgJ3Bvc3RhbEFkZHJlc3MnLFxuICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICBdLFxuICAgICAgICByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczogW1xuICAgICAgICAgICAgJ3Bvc3RhbEFkZHJlc3MnLFxuICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICBdLFxuICAgICAgICB0b3RhbDoge1xuICAgICAgICAgICAgbGFiZWw6IHRvdGFsTGFiZWwsXG4gICAgICAgICAgICBhbW91bnQ6IHN1YnRvdGFsLFxuICAgICAgICAgICAgdHlwZTogJ2ZpbmFsJ1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IHtjcmVhdGVBcHBsZUVycm9yc30gZnJvbSAnLi9hcHBsZVBheUVycm9yLmpzJztcbmltcG9ydCB7bWF5YmVTaG93QnV0dG9ufSBmcm9tICcuL21heWJlU2hvd0FwcGxlUGF5QnV0dG9uLmpzJztcbmltcG9ydCB7cmVxdWVzdH0gZnJvbSAnLi9hcHBsZVBheVJlcXVlc3QuanMnO1xuXG4oXG4gICAgZnVuY3Rpb24gKHtfLCBtb2xsaWVBcHBsZVBheURpcmVjdERhdGEsIGpRdWVyeX0pIHtcbiAgICAgICAgaWYgKF8uaXNFbXB0eShtb2xsaWVBcHBsZVBheURpcmVjdERhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtwcm9kdWN0OiB7aWQsIG5lZWRTaGlwcGluZyA9IHRydWUsIGlzVmFyaWF0aW9uID0gZmFsc2UsIHByaWNlfSwgc2hvcDoge2NvdW50cnlDb2RlLCBjdXJyZW5jeUNvZGUgPSAnRVVSJywgdG90YWxMYWJlbCA9ICcnfSwgYWpheFVybH0gPSBtb2xsaWVBcHBsZVBheURpcmVjdERhdGFcblxuICAgICAgICBpZiAoIWlkIHx8ICFwcmljZSB8fCAhY291bnRyeUNvZGUgfHwgIWFqYXhVcmwpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmKCFtYXliZVNob3dCdXR0b24oKSl7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vbmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dvb2NvbW1lcmNlLXByb2Nlc3MtY2hlY2tvdXQtbm9uY2UnKS52YWx1ZVxuICAgICAgICBsZXQgcHJvZHVjdElkID0gaWRcbiAgICAgICAgbGV0IHByb2R1Y3RRdWFudGl0eSA9IDFcbiAgICAgICAgbGV0IHVwZGF0ZWRDb250YWN0SW5mbyA9IFtdXG4gICAgICAgIGxldCBzZWxlY3RlZFNoaXBwaW5nTWV0aG9kID0gW11cbiAgICAgICAgbGV0IHJlZGlyZWN0aW9uVXJsID0gJydcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQucXR5JykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnQgPT4ge1xuICAgICAgICAgICAgcHJvZHVjdFF1YW50aXR5ID0gZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChpc1ZhcmlhdGlvbikge1xuICAgICAgICAgICAgbGV0IGFwcGxlQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21vbGxpZV9hcHBsZXBheV9idXR0b24nKTtcbiAgICAgICAgICAgIGpRdWVyeSgnLnNpbmdsZV92YXJpYXRpb25fd3JhcCcpLm9uKCdzaG93X3ZhcmlhdGlvbicsIGZ1bmN0aW9uIChldmVudCwgdmFyaWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gRmlyZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGFsbCB0aGUgcmVxdWlyZWQgZHJvcGRvd25zIC8gYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIC8vIGFuZCBhIGZpbmFsIHZhcmlhdGlvbiBpcyBzZWxlY3RlZCAvIHNob3duXG4gICAgICAgICAgICAgICAgaWYgKHZhcmlhdGlvbi52YXJpYXRpb25faWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdElkID0gdmFyaWF0aW9uLnZhcmlhdGlvbl9pZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcHBsZUJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGFwcGxlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJidXR0b25EaXNhYmxlZFwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXBwbGVCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgYXBwbGVCdXR0b24uY2xhc3NMaXN0LmFkZChcImJ1dHRvbkRpc2FibGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtb3VudFdpdGhvdXRUYXggPSBwcm9kdWN0UXVhbnRpdHkgKiBwcmljZVxuICAgICAgICBsZXQgYXBwbGVQYXlTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBBcHBsZVBheVNlc3Npb24oMywgcmVxdWVzdChjb3VudHJ5Q29kZSwgY3VycmVuY3lDb2RlLCB0b3RhbExhYmVsLCBhbW91bnRXaXRob3V0VGF4KSlcbiAgICAgICAgICAgIHNlc3Npb24uYmVnaW4oKVxuICAgICAgICAgICAgaWYobmVlZFNoaXBwaW5nKXtcbiAgICAgICAgICAgICAgICBzZXNzaW9uLm9uc2hpcHBpbmdtZXRob2RzZWxlY3RlZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXhVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdtb2xsaWVfYXBwbGVfcGF5X3VwZGF0ZV9zaGlwcGluZ19tZXRob2QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaXBwaW5nTWV0aG9kOiBldmVudC5zaGlwcGluZ01ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3RJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXJQYWdlOiAncHJvZHVjdERldGFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdFF1YW50aXR5OiBwcm9kdWN0UXVhbnRpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcGxpZmllZENvbnRhY3Q6IHVwZGF0ZWRDb250YWN0SW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd29vY29tbWVyY2UtcHJvY2Vzcy1jaGVja291dC1ub25jZSc6IG5vbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoanFYSFIsIHRleHRTdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoYXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZSwgdGV4dFN0YXR1cywganFYSFIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlLmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNoaXBwaW5nTWV0aG9kID0gZXZlbnQuc2hpcHBpbmdNZXRob2RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBjcmVhdGVBcHBsZUVycm9ycyhyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihyZXNwb25zZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybih0ZXh0U3RhdHVzLCBlcnJvclRocm93bilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmFib3J0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlc3Npb24ub25zaGlwcGluZ2NvbnRhY3RzZWxlY3RlZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXhVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdtb2xsaWVfYXBwbGVfcGF5X3VwZGF0ZV9zaGlwcGluZ19jb250YWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3RJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXJQYWdlOiAncHJvZHVjdERldGFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdFF1YW50aXR5OiBwcm9kdWN0UXVhbnRpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltcGxpZmllZENvbnRhY3Q6IGV2ZW50LnNoaXBwaW5nQ29udGFjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkU2hpcHBpbmc6IG5lZWRTaGlwcGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd29vY29tbWVyY2UtcHJvY2Vzcy1jaGVja291dC1ub25jZSc6IG5vbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoanFYSFIsIHRleHRTdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoYXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUsIHRleHRTdGF0dXMsIGpxWEhSKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gYXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUuZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRDb250YWN0SW5mbyA9IGV2ZW50LnNoaXBwaW5nQ29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMgPSBjcmVhdGVBcHBsZUVycm9ycyhyZXNwb25zZS5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5uZXdTaGlwcGluZ01ldGhvZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTaGlwcGluZ01ldGhvZCA9IHJlc3BvbnNlLm5ld1NoaXBwaW5nTWV0aG9kc1swXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHRleHRTdGF0dXMsIGVycm9yVGhyb3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uYWJvcnQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXNzaW9uLm9udmFsaWRhdGVtZXJjaGFudCA9IChhcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGpRdWVyeS5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBhamF4VXJsLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnbW9sbGllX2FwcGxlX3BheV92YWxpZGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25Vcmw6IGFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LnZhbGlkYXRpb25VUkwsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd29vY29tbWVyY2UtcHJvY2Vzcy1jaGVja291dC1ub25jZSc6IG5vbmNlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKGpxWEhSLCB0ZXh0U3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IChtZXJjaGFudFNlc3Npb24sIHRleHRTdGF0dXMsIGpxWEhSKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVyY2hhbnRTZXNzaW9uLnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKEpTT04ucGFyc2UobWVyY2hhbnRTZXNzaW9uLmRhdGEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4obWVyY2hhbnRTZXNzaW9uLmRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5hYm9ydCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4odGV4dFN0YXR1cywgZXJyb3JUaHJvd24pXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmFib3J0KClcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2Vzc2lvbi5vbnBheW1lbnRhdXRob3JpemVkID0gKEFwcGxlUGF5UGF5bWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHtiaWxsaW5nQ29udGFjdCwgc2hpcHBpbmdDb250YWN0IH0gPSBBcHBsZVBheVBheW1lbnQucGF5bWVudFxuXG4gICAgICAgICAgICAgICAgalF1ZXJ5LmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXhVcmwsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdtb2xsaWVfYXBwbGVfcGF5X2NyZWF0ZV9vcmRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3RJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RRdWFudGl0eTogcHJvZHVjdFF1YW50aXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpcHBpbmdDb250YWN0OiBBcHBsZVBheVBheW1lbnQucGF5bWVudC5zaGlwcGluZ0NvbnRhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBiaWxsaW5nQ29udGFjdDogQXBwbGVQYXlQYXltZW50LnBheW1lbnQuYmlsbGluZ0NvbnRhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogQXBwbGVQYXlQYXltZW50LnBheW1lbnQudG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ01ldGhvZDogc2VsZWN0ZWRTaGlwcGluZ01ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtb2xsaWUtcGF5bWVudHMtZm9yLXdvb2NvbW1lcmNlX2lzc3Vlcl9hcHBsZXBheSc6ICdhcHBsZXBheScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd29vY29tbWVyY2UtcHJvY2Vzcy1jaGVja291dC1ub25jZSc6IG5vbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JpbGxpbmdfZmlyc3RfbmFtZSc6ICBiaWxsaW5nQ29udGFjdC5naXZlbk5hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19sYXN0X25hbWUnIDogYmlsbGluZ0NvbnRhY3QuZmFtaWx5TmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX2NvbXBhbnknOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX2NvdW50cnknIDogYmlsbGluZ0NvbnRhY3QuY291bnRyeUNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19hZGRyZXNzXzEnIDogYmlsbGluZ0NvbnRhY3QuYWRkcmVzc0xpbmVzWzBdIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JpbGxpbmdfYWRkcmVzc18yJyA6IGJpbGxpbmdDb250YWN0LmFkZHJlc3NMaW5lc1sxXSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX3Bvc3Rjb2RlJyA6IGJpbGxpbmdDb250YWN0LnBvc3RhbENvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19jaXR5JzogYmlsbGluZ0NvbnRhY3QubG9jYWxpdHkgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19zdGF0ZScgOiBiaWxsaW5nQ29udGFjdC5hZG1pbmlzdHJhdGl2ZUFyZWEgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19waG9uZScgOiBiaWxsaW5nQ29udGFjdC5waG9uZU51bWJlciB8fCAnMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX2VtYWlsJyA6IHNoaXBwaW5nQ29udGFjdC5lbWFpbEFkZHJlc3MgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfZmlyc3RfbmFtZSc6ICBzaGlwcGluZ0NvbnRhY3QuZ2l2ZW5OYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoaXBwaW5nX2xhc3RfbmFtZScgOiBzaGlwcGluZ0NvbnRhY3QuZmFtaWx5TmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGlwcGluZ19jb21wYW55JzogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfY291bnRyeScgOiBzaGlwcGluZ0NvbnRhY3QuY291bnRyeUNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfYWRkcmVzc18xJyA6IHNoaXBwaW5nQ29udGFjdC5hZGRyZXNzTGluZXNbMF0gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfYWRkcmVzc18yJyA6IHNoaXBwaW5nQ29udGFjdC5hZGRyZXNzTGluZXNbMV0gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfcG9zdGNvZGUnIDogc2hpcHBpbmdDb250YWN0LnBvc3RhbENvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfY2l0eSc6IHNoaXBwaW5nQ29udGFjdC5sb2NhbGl0eSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGlwcGluZ19zdGF0ZScgOiBzaGlwcGluZ0NvbnRhY3QuYWRtaW5pc3RyYXRpdmVBcmVhIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoaXBwaW5nX3Bob25lJyA6IHNoaXBwaW5nQ29udGFjdC5waG9uZU51bWJlciB8fCAnMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGlwcGluZ19lbWFpbCcgOiBzaGlwcGluZ0NvbnRhY3QuZW1haWxBZGRyZXNzIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29yZGVyX2NvbW1lbnRzJyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BheW1lbnRfbWV0aG9kJyA6ICdtb2xsaWVfd2NfZ2F0ZXdheV9hcHBsZXBheScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnX3dwX2h0dHBfcmVmZXJlcicgOiAnLz93Yy1hamF4PXVwZGF0ZV9vcmRlcl9yZXZpZXcnXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoanFYSFIsIHRleHRTdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKGF1dGhvcml6YXRpb25SZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXV0aG9yaXphdGlvblJlc3VsdC5kYXRhXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRob3JpemF0aW9uUmVzdWx0LnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdGlvblVybCA9IHJlc3VsdFsncmV0dXJuVXJsJ107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQocmVzdWx0WydyZXNwb25zZVRvQXBwbGUnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0aW9uVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMgPSBjcmVhdGVBcHBsZUVycm9ycyhyZXN1bHQuZXJyb3JzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uY29tcGxldGVQYXltZW50KHJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybih0ZXh0U3RhdHVzLCBlcnJvclRocm93bilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uYWJvcnQoKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21vbGxpZV9hcHBsZXBheV9idXR0b24nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldnQpID0+IHtcbiAgICAgICAgICAgIGFwcGxlUGF5U2Vzc2lvbigpXG4gICAgICAgIH0pXG4gICAgfVxuKVxuKFxuICAgIHdpbmRvd1xuKVxuIiwiZXhwb3J0IGNvbnN0IG1heWJlU2hvd0J1dHRvbiA9ICgpID0+IHtcbiAgICBjb25zdCB7QXBwbGVQYXlTZXNzaW9ufSA9IHdpbmRvd1xuICAgIGNvbnN0IGFwcGxlUGF5TWV0aG9kRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICcjbW9sbGllLWFwcGxlcGF5RGlyZWN0LWJ1dHRvbicsXG4gICAgKVxuICAgIGNvbnN0IGNhblNob3dCdXR0b24gPSBhcHBsZVBheU1ldGhvZEVsZW1lbnQgJiYgKEFwcGxlUGF5U2Vzc2lvbiAmJiBBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgaWYgKCFjYW5TaG93QnV0dG9uKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKVxuICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ21vbGxpZV9hcHBsZXBheV9idXR0b24nKVxuICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdhcHBsZS1wYXktYnV0dG9uJylcbiAgICBidXR0b24uY2xhc3NMaXN0LmFkZCgnYXBwbGUtcGF5LWJ1dHRvbi1ibGFjaycpXG4gICAgYXBwbGVQYXlNZXRob2RFbGVtZW50LmFwcGVuZENoaWxkKGJ1dHRvbilcbiAgICByZXR1cm4gdHJ1ZVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
1
+ !function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/public/js/",n(n.s="fmef")}({OiFV:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var o=function(){var e=window.ApplePaySession,t=document.querySelector("#mollie-applepayDirect-button");if(!(t&&e&&e.canMakePayments()))return!1;var n=document.createElement("button");return n.setAttribute("id","mollie_applepay_button"),n.classList.add("apple-pay-button"),n.classList.add("apple-pay-button-black"),t.appendChild(n),!0}},fmef:function(e,t,n){"use strict";n.r(t);var o=n("nxB1"),r=n("OiFV"),i=n("uXQx");!function(e){var t=e._,n=e.mollieApplePayDirectData,a=e.jQuery;if(!t.isEmpty(n)){var c=n.product,l=c.id,p=c.needShipping,s=void 0===p||p,u=c.isVariation,d=void 0!==u&&u,m=c.price,f=n.shop,y=f.countryCode,h=f.currencyCode,_=void 0===h?"EUR":h,g=f.totalLabel,b=void 0===g?"":g,v=n.ajaxUrl;if(l&&m&&y&&v&&Object(r.a)()){var w=document.getElementById("woocommerce-process-checkout-nonce").value,S=l,C=1,j=[],O=[],P="";if(document.querySelector("input.qty").addEventListener("change",(function(e){C=e.currentTarget.value})),d){var A=document.querySelector("#mollie_applepay_button");a(".single_variation_wrap").on("show_variation",(function(e,t){t.variation_id&&(S=t.variation_id),A.disabled=!1,A.classList.remove("buttonDisabled")})),A.disabled=!0,A.classList.add("buttonDisabled")}var x=C*m;document.querySelector("#mollie_applepay_button").addEventListener("click",(function(e){var t;(t=new ApplePaySession(3,Object(i.a)(y,_,b,x))).begin(),s&&(t.onshippingmethodselected=function(e){var n=this;a.ajax({url:v,method:"POST",data:{action:"mollie_apple_pay_update_shipping_method",shippingMethod:e.shippingMethod,productId:S,callerPage:"productDetail",productQuantity:C,simplifiedContact:j,"woocommerce-process-checkout-nonce":w},complete:function(e,t){},success:function(t,r,i){var a=t.data;O=e.shippingMethod,!1===t.success&&(a.errors=Object(o.a)(a.errors)),n.completeShippingMethodSelection(a)},error:function(e,n,o){console.warn(n,o),t.abort()}})},t.onshippingcontactselected=function(e){var n=this;a.ajax({url:v,method:"POST",data:{action:"mollie_apple_pay_update_shipping_contact",productId:S,callerPage:"productDetail",productQuantity:C,simplifiedContact:e.shippingContact,needShipping:s,"woocommerce-process-checkout-nonce":w},complete:function(e,t){},success:function(t,r,i){var a=t.data;j=e.shippingContact,!1===t.success&&(a.errors=Object(o.a)(a.errors)),a.newShippingMethods&&(O=a.newShippingMethods[0]),n.completeShippingContactSelection(a)},error:function(e,n,o){console.warn(n,o),t.abort()}})}),t.onvalidatemerchant=function(e){a.ajax({url:v,method:"POST",data:{action:"mollie_apple_pay_validation",validationUrl:e.validationURL,"woocommerce-process-checkout-nonce":w},complete:function(e,t){},success:function(e,n,o){!0===e.success?t.completeMerchantValidation(JSON.parse(e.data)):(console.warn(e.data),t.abort())},error:function(e,n,o){console.warn(n,o),t.abort()}})},t.onpaymentauthorized=function(e){var n=e.payment,r=n.billingContact,i=n.shippingContact;a.ajax({url:v,method:"POST",data:{action:"mollie_apple_pay_create_order",productId:S,productQuantity:C,shippingContact:e.payment.shippingContact,billingContact:e.payment.billingContact,token:e.payment.token,shippingMethod:O,"mollie-payments-for-woocommerce_issuer_applepay":"applepay","woocommerce-process-checkout-nonce":w,billing_first_name:r.givenName||"",billing_last_name:r.familyName||"",billing_company:"",billing_country:r.countryCode||"",billing_address_1:r.addressLines[0]||"",billing_address_2:r.addressLines[1]||"",billing_postcode:r.postalCode||"",billing_city:r.locality||"",billing_state:r.administrativeArea||"",billing_phone:r.phoneNumber||"000000000000",billing_email:i.emailAddress||"",shipping_first_name:i.givenName||"",shipping_last_name:i.familyName||"",shipping_company:"",shipping_country:i.countryCode||"",shipping_address_1:i.addressLines[0]||"",shipping_address_2:i.addressLines[1]||"",shipping_postcode:i.postalCode||"",shipping_city:i.locality||"",shipping_state:i.administrativeArea||"",shipping_phone:i.phoneNumber||"000000000000",shipping_email:i.emailAddress||"",order_comments:"",payment_method:"mollie_wc_gateway_applepay",_wp_http_referer:"/?wc-ajax=update_order_review"},complete:function(e,t){},success:function(e,n,r){var i=e.data;!0===e.success?(P=i.returnUrl,t.completePayment(i.responseToApple),window.location.href=P):(i.errors=Object(o.a)(i.errors),t.completePayment(i))},error:function(e,n,o){console.warn(n,o),t.abort()}})}}))}}}(window)},nxB1:function(e,t,n){"use strict";function o(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,i=function(){};return{s:i,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){l=!0,a=e},f:function(){try{c||null==n.return||n.return()}finally{if(l)throw a}}}}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function i(e){var t,n=[],r=o(e);try{for(r.s();!(t=r.n()).done;){var i=t.value,a=i.contactField,c=void 0===a?null:a,l=i.code,p=void 0===l?null:l,s=i.message,u=c?new ApplePayError(p,c,void 0===s?null:s):new ApplePayError(p);n.push(u)}}catch(e){r.e(e)}finally{r.f()}return n}n.d(t,"a",(function(){return i}))},uXQx:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var o=function(e,t,n,o){return{countryCode:e,currencyCode:t,supportedNetworks:["amex","maestro","masterCard","visa","vPay"],merchantCapabilities:["supports3DS"],shippingType:"shipping",requiredBillingContactFields:["postalAddress","email"],requiredShippingContactFields:["postalAddress","email"],total:{label:n,amount:o,type:"final"}}}}});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/js/applepayDirectCart.min.js CHANGED
@@ -1,414 +1 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
- /******/ }
41
- /******/ };
42
- /******/
43
- /******/ // define __esModule on exports
44
- /******/ __webpack_require__.r = function(exports) {
45
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
- /******/ }
48
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
- /******/ };
50
- /******/
51
- /******/ // create a fake namespace object
52
- /******/ // mode & 1: value is a module id, require it
53
- /******/ // mode & 2: merge all properties of value into the ns
54
- /******/ // mode & 4: return value when already ns object
55
- /******/ // mode & 8|1: behave like require
56
- /******/ __webpack_require__.t = function(value, mode) {
57
- /******/ if(mode & 1) value = __webpack_require__(value);
58
- /******/ if(mode & 8) return value;
59
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
- /******/ var ns = Object.create(null);
61
- /******/ __webpack_require__.r(ns);
62
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
- /******/ return ns;
65
- /******/ };
66
- /******/
67
- /******/ // getDefaultExport function for compatibility with non-harmony modules
68
- /******/ __webpack_require__.n = function(module) {
69
- /******/ var getter = module && module.__esModule ?
70
- /******/ function getDefault() { return module['default']; } :
71
- /******/ function getModuleExports() { return module; };
72
- /******/ __webpack_require__.d(getter, 'a', getter);
73
- /******/ return getter;
74
- /******/ };
75
- /******/
76
- /******/ // Object.prototype.hasOwnProperty.call
77
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
- /******/
79
- /******/ // __webpack_public_path__
80
- /******/ __webpack_require__.p = "/public/js/";
81
- /******/
82
- /******/
83
- /******/ // Load entry module and return exports
84
- /******/ return __webpack_require__(__webpack_require__.s = "./resources/js/applepayDirectCart.js");
85
- /******/ })
86
- /************************************************************************/
87
- /******/ ({
88
-
89
- /***/ "./resources/js/applePayError.js":
90
- /*!***************************************!*\
91
- !*** ./resources/js/applePayError.js ***!
92
- \***************************************/
93
- /*! exports provided: createAppleErrors */
94
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
95
-
96
- "use strict";
97
- __webpack_require__.r(__webpack_exports__);
98
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createAppleErrors", function() { return createAppleErrors; });
99
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
100
-
101
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
102
-
103
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
104
-
105
- function createAppleErrors(errors) {
106
- var errorList = [];
107
-
108
- var _iterator = _createForOfIteratorHelper(errors),
109
- _step;
110
-
111
- try {
112
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
113
- var error = _step.value;
114
- var _error$contactField = error.contactField,
115
- contactField = _error$contactField === void 0 ? null : _error$contactField,
116
- _error$code = error.code,
117
- code = _error$code === void 0 ? null : _error$code,
118
- _error$message = error.message,
119
- message = _error$message === void 0 ? null : _error$message;
120
- var appleError = contactField ? new ApplePayError(code, contactField, message) : new ApplePayError(code);
121
- errorList.push(appleError);
122
- }
123
- } catch (err) {
124
- _iterator.e(err);
125
- } finally {
126
- _iterator.f();
127
- }
128
-
129
- return errorList;
130
- }
131
-
132
- /***/ }),
133
-
134
- /***/ "./resources/js/applePayRequest.js":
135
- /*!*****************************************!*\
136
- !*** ./resources/js/applePayRequest.js ***!
137
- \*****************************************/
138
- /*! exports provided: request */
139
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
140
-
141
- "use strict";
142
- __webpack_require__.r(__webpack_exports__);
143
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "request", function() { return request; });
144
- var request = function request(countryCode, currencyCode, totalLabel, subtotal) {
145
- return {
146
- countryCode: countryCode,
147
- currencyCode: currencyCode,
148
- supportedNetworks: ['amex', 'maestro', 'masterCard', 'visa', 'vPay'],
149
- merchantCapabilities: ['supports3DS'],
150
- shippingType: 'shipping',
151
- requiredBillingContactFields: ['postalAddress', 'email'],
152
- requiredShippingContactFields: ['postalAddress', 'email'],
153
- total: {
154
- label: totalLabel,
155
- amount: subtotal,
156
- type: 'final'
157
- }
158
- };
159
- };
160
-
161
- /***/ }),
162
-
163
- /***/ "./resources/js/applepayDirectCart.js":
164
- /*!********************************************!*\
165
- !*** ./resources/js/applepayDirectCart.js ***!
166
- \********************************************/
167
- /*! no exports provided */
168
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
169
-
170
- "use strict";
171
- __webpack_require__.r(__webpack_exports__);
172
- /* harmony import */ var _applePayError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applePayError.js */ "./resources/js/applePayError.js");
173
- /* harmony import */ var _applePayRequest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./applePayRequest */ "./resources/js/applePayRequest.js");
174
- /* harmony import */ var _maybeShowApplePayButton_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./maybeShowApplePayButton.js */ "./resources/js/maybeShowApplePayButton.js");
175
-
176
-
177
-
178
-
179
- (function (_ref) {
180
- var _ = _ref._,
181
- mollieApplePayDirectDataCart = _ref.mollieApplePayDirectDataCart,
182
- jQuery = _ref.jQuery;
183
-
184
- if (_.isEmpty(mollieApplePayDirectDataCart)) {
185
- return;
186
- }
187
-
188
- var _mollieApplePayDirect = mollieApplePayDirectDataCart.product,
189
- _mollieApplePayDirect2 = _mollieApplePayDirect.needShipping,
190
- needShipping = _mollieApplePayDirect2 === void 0 ? true : _mollieApplePayDirect2,
191
- subtotal = _mollieApplePayDirect.subtotal,
192
- _mollieApplePayDirect3 = mollieApplePayDirectDataCart.shop,
193
- countryCode = _mollieApplePayDirect3.countryCode,
194
- _mollieApplePayDirect4 = _mollieApplePayDirect3.currencyCode,
195
- currencyCode = _mollieApplePayDirect4 === void 0 ? 'EUR' : _mollieApplePayDirect4,
196
- _mollieApplePayDirect5 = _mollieApplePayDirect3.totalLabel,
197
- totalLabel = _mollieApplePayDirect5 === void 0 ? '' : _mollieApplePayDirect5,
198
- ajaxUrl = mollieApplePayDirectDataCart.ajaxUrl;
199
-
200
- if (!subtotal || !countryCode || !ajaxUrl) {
201
- return;
202
- }
203
-
204
- var nonce = document.getElementById("woocommerce-process-checkout-nonce").value;
205
- var updatedContactInfo = [];
206
- var selectedShippingMethod = [];
207
- var redirectionUrl = '';
208
-
209
- var applePaySession = function applePaySession() {
210
- var session = new ApplePaySession(3, Object(_applePayRequest__WEBPACK_IMPORTED_MODULE_1__["request"])(countryCode, currencyCode, totalLabel, subtotal));
211
- session.begin();
212
-
213
- session.onshippingmethodselected = function (event) {
214
- var _this = this;
215
-
216
- jQuery.ajax({
217
- url: ajaxUrl,
218
- method: 'POST',
219
- data: {
220
- action: 'mollie_apple_pay_update_shipping_method',
221
- shippingMethod: event.shippingMethod,
222
- callerPage: 'cart',
223
- simplifiedContact: updatedContactInfo,
224
- 'woocommerce-process-checkout-nonce': nonce
225
- },
226
- complete: function complete(jqXHR, textStatus) {},
227
- success: function success(applePayShippingMethodUpdate, textStatus, jqXHR) {
228
- var response = applePayShippingMethodUpdate.data;
229
- selectedShippingMethod = event.shippingMethod;
230
-
231
- if (applePayShippingMethodUpdate.success === false) {
232
- response.errors = Object(_applePayError_js__WEBPACK_IMPORTED_MODULE_0__["createAppleErrors"])(response.errors);
233
- }
234
-
235
- _this.completeShippingMethodSelection(response);
236
- },
237
- error: function error(jqXHR, textStatus, errorThrown) {
238
- console.warn(textStatus, errorThrown);
239
- session.abort();
240
- }
241
- });
242
- };
243
-
244
- session.onshippingcontactselected = function (event) {
245
- var _this2 = this;
246
-
247
- jQuery.ajax({
248
- url: ajaxUrl,
249
- method: 'POST',
250
- data: {
251
- action: 'mollie_apple_pay_update_shipping_contact',
252
- simplifiedContact: event.shippingContact,
253
- callerPage: 'cart',
254
- needShipping: needShipping,
255
- 'woocommerce-process-checkout-nonce': nonce
256
- },
257
- complete: function complete(jqXHR, textStatus) {},
258
- success: function success(applePayShippingContactUpdate, textStatus, jqXHR) {
259
- var response = applePayShippingContactUpdate.data;
260
- updatedContactInfo = event.shippingContact;
261
-
262
- if (applePayShippingContactUpdate.success === false) {
263
- response.errors = Object(_applePayError_js__WEBPACK_IMPORTED_MODULE_0__["createAppleErrors"])(response.errors);
264
- }
265
-
266
- if (response.newShippingMethods) {
267
- selectedShippingMethod = response.newShippingMethods[0];
268
- }
269
-
270
- _this2.completeShippingContactSelection(response);
271
- },
272
- error: function error(jqXHR, textStatus, errorThrown) {
273
- console.warn(textStatus, errorThrown);
274
- session.abort();
275
- }
276
- });
277
- };
278
-
279
- session.onvalidatemerchant = function (applePayValidateMerchantEvent) {
280
- jQuery.ajax({
281
- url: ajaxUrl,
282
- method: 'POST',
283
- data: {
284
- action: 'mollie_apple_pay_validation',
285
- validationUrl: applePayValidateMerchantEvent.validationURL,
286
- 'woocommerce-process-checkout-nonce': nonce
287
- },
288
- complete: function complete(jqXHR, textStatus) {},
289
- success: function success(merchantSession, textStatus, jqXHR) {
290
- if (merchantSession.success === true) {
291
- session.completeMerchantValidation(JSON.parse(merchantSession.data));
292
- } else {
293
- console.warn(merchantSession.data);
294
- session.abort();
295
- }
296
- },
297
- error: function error(jqXHR, textStatus, errorThrown) {
298
- console.warn(textStatus, errorThrown);
299
- session.abort();
300
- }
301
- });
302
- };
303
-
304
- session.onpaymentauthorized = function (ApplePayPayment) {
305
- var _ApplePayPayment$paym = ApplePayPayment.payment,
306
- billingContact = _ApplePayPayment$paym.billingContact,
307
- shippingContact = _ApplePayPayment$paym.shippingContact;
308
- jQuery.ajax({
309
- url: ajaxUrl,
310
- method: 'POST',
311
- data: {
312
- action: 'mollie_apple_pay_create_order_cart',
313
- shippingContact: ApplePayPayment.payment.shippingContact,
314
- billingContact: ApplePayPayment.payment.billingContact,
315
- token: ApplePayPayment.payment.token,
316
- shippingMethod: selectedShippingMethod,
317
- 'mollie-payments-for-woocommerce_issuer_applepay': 'applepay',
318
- 'woocommerce-process-checkout-nonce': nonce,
319
- 'billing_first_name': billingContact.givenName || '',
320
- 'billing_last_name': billingContact.familyName || '',
321
- 'billing_company': '',
322
- 'billing_country': billingContact.countryCode || '',
323
- 'billing_address_1': billingContact.addressLines[0] || '',
324
- 'billing_address_2': billingContact.addressLines[1] || '',
325
- 'billing_postcode': billingContact.postalCode || '',
326
- 'billing_city': billingContact.locality || '',
327
- 'billing_state': billingContact.administrativeArea || '',
328
- 'billing_phone': billingContact.phoneNumber || '000000000000',
329
- 'billing_email': shippingContact.emailAddress || '',
330
- 'shipping_first_name': shippingContact.givenName || '',
331
- 'shipping_last_name': shippingContact.familyName || '',
332
- 'shipping_company': '',
333
- 'shipping_country': shippingContact.countryCode || '',
334
- 'shipping_address_1': shippingContact.addressLines[0] || '',
335
- 'shipping_address_2': shippingContact.addressLines[1] || '',
336
- 'shipping_postcode': shippingContact.postalCode || '',
337
- 'shipping_city': shippingContact.locality || '',
338
- 'shipping_state': shippingContact.administrativeArea || '',
339
- 'shipping_phone': shippingContact.phoneNumber || '000000000000',
340
- 'shipping_email': shippingContact.emailAddress || '',
341
- 'order_comments': '',
342
- 'payment_method': 'mollie_wc_gateway_applepay',
343
- '_wp_http_referer': '/?wc-ajax=update_order_review'
344
- },
345
- complete: function complete(jqXHR, textStatus) {},
346
- success: function success(authorizationResult, textStatus, jqXHR) {
347
- var result = authorizationResult.data;
348
-
349
- if (authorizationResult.success === true) {
350
- redirectionUrl = result['returnUrl'];
351
- session.completePayment(result['responseToApple']);
352
- window.location.href = redirectionUrl;
353
- } else {
354
- result.errors = Object(_applePayError_js__WEBPACK_IMPORTED_MODULE_0__["createAppleErrors"])(result.errors);
355
- session.completePayment(result);
356
- }
357
- },
358
- error: function error(jqXHR, textStatus, errorThrown) {
359
- console.warn(textStatus, errorThrown);
360
- session.abort();
361
- }
362
- });
363
- };
364
- };
365
-
366
- if (!Object(_maybeShowApplePayButton_js__WEBPACK_IMPORTED_MODULE_2__["maybeShowButton"])()) {
367
- return;
368
- }
369
-
370
- jQuery(document.body).on('updated_cart_totals', function (event) {
371
- Object(_maybeShowApplePayButton_js__WEBPACK_IMPORTED_MODULE_2__["maybeShowButton"])();
372
- document.querySelector('#mollie_applepay_button').addEventListener('click', function (evt) {
373
- applePaySession();
374
- });
375
- });
376
- document.querySelector('#mollie_applepay_button').addEventListener('click', function (evt) {
377
- applePaySession();
378
- });
379
- })(window);
380
-
381
- /***/ }),
382
-
383
- /***/ "./resources/js/maybeShowApplePayButton.js":
384
- /*!*************************************************!*\
385
- !*** ./resources/js/maybeShowApplePayButton.js ***!
386
- \*************************************************/
387
- /*! exports provided: maybeShowButton */
388
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
389
-
390
- "use strict";
391
- __webpack_require__.r(__webpack_exports__);
392
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "maybeShowButton", function() { return maybeShowButton; });
393
- var maybeShowButton = function maybeShowButton() {
394
- var _window = window,
395
- ApplePaySession = _window.ApplePaySession;
396
- var applePayMethodElement = document.querySelector('#mollie-applepayDirect-button');
397
- var canShowButton = applePayMethodElement && ApplePaySession && ApplePaySession.canMakePayments();
398
-
399
- if (!canShowButton) {
400
- return false;
401
- }
402
-
403
- var button = document.createElement('button');
404
- button.setAttribute('id', 'mollie_applepay_button');
405
- button.classList.add('apple-pay-button');
406
- button.classList.add('apple-pay-button-black');
407
- applePayMethodElement.appendChild(button);
408
- return true;
409
- };
410
-
411
- /***/ })
412
-
413
- /******/ });
414
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2FwcGxlUGF5RXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2FwcGxlUGF5UmVxdWVzdC5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYXBwbGVwYXlEaXJlY3RDYXJ0LmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9tYXliZVNob3dBcHBsZVBheUJ1dHRvbi5qcyJdLCJuYW1lcyI6WyJjcmVhdGVBcHBsZUVycm9ycyIsImVycm9ycyIsImVycm9yTGlzdCIsImVycm9yIiwiY29udGFjdEZpZWxkIiwiY29kZSIsIm1lc3NhZ2UiLCJhcHBsZUVycm9yIiwiQXBwbGVQYXlFcnJvciIsInB1c2giLCJyZXF1ZXN0IiwiY291bnRyeUNvZGUiLCJjdXJyZW5jeUNvZGUiLCJ0b3RhbExhYmVsIiwic3VidG90YWwiLCJzdXBwb3J0ZWROZXR3b3JrcyIsIm1lcmNoYW50Q2FwYWJpbGl0aWVzIiwic2hpcHBpbmdUeXBlIiwicmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcyIsInJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzIiwidG90YWwiLCJsYWJlbCIsImFtb3VudCIsInR5cGUiLCJfIiwibW9sbGllQXBwbGVQYXlEaXJlY3REYXRhQ2FydCIsImpRdWVyeSIsImlzRW1wdHkiLCJwcm9kdWN0IiwibmVlZFNoaXBwaW5nIiwic2hvcCIsImFqYXhVcmwiLCJub25jZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ2YWx1ZSIsInVwZGF0ZWRDb250YWN0SW5mbyIsInNlbGVjdGVkU2hpcHBpbmdNZXRob2QiLCJyZWRpcmVjdGlvblVybCIsImFwcGxlUGF5U2Vzc2lvbiIsInNlc3Npb24iLCJBcHBsZVBheVNlc3Npb24iLCJiZWdpbiIsIm9uc2hpcHBpbmdtZXRob2RzZWxlY3RlZCIsImV2ZW50IiwiYWpheCIsInVybCIsIm1ldGhvZCIsImRhdGEiLCJhY3Rpb24iLCJzaGlwcGluZ01ldGhvZCIsImNhbGxlclBhZ2UiLCJzaW1wbGlmaWVkQ29udGFjdCIsImNvbXBsZXRlIiwianFYSFIiLCJ0ZXh0U3RhdHVzIiwic3VjY2VzcyIsImFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUiLCJyZXNwb25zZSIsImNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24iLCJlcnJvclRocm93biIsImNvbnNvbGUiLCJ3YXJuIiwiYWJvcnQiLCJvbnNoaXBwaW5nY29udGFjdHNlbGVjdGVkIiwic2hpcHBpbmdDb250YWN0IiwiYXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUiLCJuZXdTaGlwcGluZ01ldGhvZHMiLCJjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbiIsIm9udmFsaWRhdGVtZXJjaGFudCIsImFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50IiwidmFsaWRhdGlvblVybCIsInZhbGlkYXRpb25VUkwiLCJtZXJjaGFudFNlc3Npb24iLCJjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbiIsIkpTT04iLCJwYXJzZSIsIm9ucGF5bWVudGF1dGhvcml6ZWQiLCJBcHBsZVBheVBheW1lbnQiLCJwYXltZW50IiwiYmlsbGluZ0NvbnRhY3QiLCJ0b2tlbiIsImdpdmVuTmFtZSIsImZhbWlseU5hbWUiLCJhZGRyZXNzTGluZXMiLCJwb3N0YWxDb2RlIiwibG9jYWxpdHkiLCJhZG1pbmlzdHJhdGl2ZUFyZWEiLCJwaG9uZU51bWJlciIsImVtYWlsQWRkcmVzcyIsImF1dGhvcml6YXRpb25SZXN1bHQiLCJyZXN1bHQiLCJjb21wbGV0ZVBheW1lbnQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJtYXliZVNob3dCdXR0b24iLCJib2R5Iiwib24iLCJxdWVyeVNlbGVjdG9yIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2dCIsImFwcGxlUGF5TWV0aG9kRWxlbWVudCIsImNhblNob3dCdXR0b24iLCJjYW5NYWtlUGF5bWVudHMiLCJidXR0b24iLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiY2xhc3NMaXN0IiwiYWRkIiwiYXBwZW5kQ2hpbGQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xGTyxTQUFTQSxpQkFBVCxDQUEyQkMsTUFBM0IsRUFBbUM7RUFDdEMsSUFBTUMsU0FBUyxHQUFHLEVBQWxCOztFQURzQywyQ0FFbEJELE1BRmtCO0VBQUE7O0VBQUE7SUFFdEMsb0RBQTRCO01BQUEsSUFBakJFLEtBQWlCO01BQ3hCLDBCQUEyREEsS0FBM0QsQ0FBT0MsWUFBUDtNQUFBLElBQU9BLFlBQVAsb0NBQXNCLElBQXRCO01BQUEsa0JBQTJERCxLQUEzRCxDQUE0QkUsSUFBNUI7TUFBQSxJQUE0QkEsSUFBNUIsNEJBQW1DLElBQW5DO01BQUEscUJBQTJERixLQUEzRCxDQUF5Q0csT0FBekM7TUFBQSxJQUF5Q0EsT0FBekMsK0JBQW1ELElB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QUNILENBZk0sQyIsImZpbGUiOiJhcHBsZXBheURpcmVjdENhcnQubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvcHVibGljL2pzL1wiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3Jlc291cmNlcy9qcy9hcHBsZXBheURpcmVjdENhcnQuanNcIik7XG4iLCJleHBvcnQgZnVuY3Rpb24gY3JlYXRlQXBwbGVFcnJvcnMoZXJyb3JzKSB7XG4gICAgY29uc3QgZXJyb3JMaXN0ID0gW11cbiAgICBmb3IgKGNvbnN0IGVycm9yIG9mIGVycm9ycykge1xuICAgICAgICBjb25zdCB7Y29udGFjdEZpZWxkID0gbnVsbCwgY29kZSA9IG51bGwsIG1lc3NhZ2UgPSBudWxsfSA9IGVycm9yXG4gICAgICAgIGNvbnN0IGFwcGxlRXJyb3IgPSBjb250YWN0RmllbGQgPyBuZXcgQXBwbGVQYXlFcnJvcihjb2RlLCBjb250YWN0RmllbGQsIG1lc3NhZ2UpIDogbmV3IEFwcGxlUGF5RXJyb3IoY29kZSlcbiAgICAgICAgZXJyb3JMaXN0LnB1c2goYXBwbGVFcnJvcilcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JMaXN0XG59XG4iLCJleHBvcnQgY29uc3QgcmVxdWVzdCA9IChjb3VudHJ5Q29kZSwgY3VycmVuY3lDb2RlLCB0b3RhbExhYmVsLCBzdWJ0b3RhbCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGNvdW50cnlDb2RlOiBjb3VudHJ5Q29kZSxcbiAgICAgICAgY3VycmVuY3lDb2RlOiBjdXJyZW5jeUNvZGUsXG4gICAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiBbJ2FtZXgnLCAnbWFlc3RybycsICdtYXN0ZXJDYXJkJywgJ3Zpc2EnLCAndlBheSddLFxuICAgICAgICBtZXJjaGFudENhcGFiaWxpdGllczogWydzdXBwb3J0czNEUyddLFxuICAgICAgICBzaGlwcGluZ1R5cGU6ICdzaGlwcGluZycsXG4gICAgICAgIHJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM6IFtcbiAgICAgICAgICAgICdwb3N0YWxBZGRyZXNzJyxcbiAgICAgICAgICAgICdlbWFpbCdcbiAgICAgICAgXSxcbiAgICAgICAgcmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHM6IFtcbiAgICAgICAgICAgICdwb3N0YWxBZGRyZXNzJyxcbiAgICAgICAgICAgICdlbWFpbCdcbiAgICAgICAgXSxcbiAgICAgICAgdG90YWw6IHtcbiAgICAgICAgICAgIGxhYmVsOiB0b3RhbExhYmVsLFxuICAgICAgICAgICAgYW1vdW50OiBzdWJ0b3RhbCxcbiAgICAgICAgICAgIHR5cGU6ICdmaW5hbCdcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCB7Y3JlYXRlQXBwbGVFcnJvcnN9IGZyb20gJy4vYXBwbGVQYXlFcnJvci5qcyc7XG5pbXBvcnQge3JlcXVlc3R9IGZyb20gXCIuL2FwcGxlUGF5UmVxdWVzdFwiO1xuaW1wb3J0IHttYXliZVNob3dCdXR0b259IGZyb20gJy4vbWF5YmVTaG93QXBwbGVQYXlCdXR0b24uanMnO1xuXG4oXG4gICAgZnVuY3Rpb24gKHtfLCBtb2xsaWVBcHBsZVBheURpcmVjdERhdGFDYXJ0LCBqUXVlcnl9KSB7XG4gICAgICAgIGlmIChfLmlzRW1wdHkobW9sbGllQXBwbGVQYXlEaXJlY3REYXRhQ2FydCkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHtwcm9kdWN0OiB7bmVlZFNoaXBwaW5nID0gdHJ1ZSwgc3VidG90YWx9LCBzaG9wOiB7Y291bnRyeUNvZGUsIGN1cnJlbmN5Q29kZSA9ICdFVVInLCB0b3RhbExhYmVsID0gJyd9LCBhamF4VXJsfSA9IG1vbGxpZUFwcGxlUGF5RGlyZWN0RGF0YUNhcnRcblxuICAgICAgICBpZiAoIXN1YnRvdGFsIHx8ICFjb3VudHJ5Q29kZSB8fCAhYWpheFVybCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub25jZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid29vY29tbWVyY2UtcHJvY2Vzcy1jaGVja291dC1ub25jZVwiKS52YWx1ZVxuXG4gICAgICAgIGxldCB1cGRhdGVkQ29udGFjdEluZm8gPSBbXVxuICAgICAgICBsZXQgc2VsZWN0ZWRTaGlwcGluZ01ldGhvZCA9IFtdXG4gICAgICAgIGxldCByZWRpcmVjdGlvblVybCA9ICcnXG4gICAgICAgIGxldCBhcHBsZVBheVNlc3Npb24gPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IEFwcGxlUGF5U2Vzc2lvbigzLCByZXF1ZXN0KGNvdW50cnlDb2RlLCBjdXJyZW5jeUNvZGUsIHRvdGFsTGFiZWwsIHN1YnRvdGFsKSlcbiAgICAgICAgICAgIHNlc3Npb24uYmVnaW4oKVxuICAgICAgICAgICAgc2Vzc2lvbi5vbnNoaXBwaW5nbWV0aG9kc2VsZWN0ZWQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgIHVybDogYWpheFVybCxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ21vbGxpZV9hcHBsZV9wYXlfdXBkYXRlX3NoaXBwaW5nX21ldGhvZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ01ldGhvZDogZXZlbnQuc2hpcHBpbmdNZXRob2QsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXJQYWdlOiAnY2FydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGlmaWVkQ29udGFjdDogdXBkYXRlZENvbnRhY3RJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dvb2NvbW1lcmNlLXByb2Nlc3MtY2hlY2tvdXQtbm9uY2UnOiBub25jZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IChqcVhIUiwgdGV4dFN0YXR1cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoYXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZSwgdGV4dFN0YXR1cywganFYSFIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUuZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTaGlwcGluZ01ldGhvZCA9IGV2ZW50LnNoaXBwaW5nTWV0aG9kXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IGNyZWF0ZUFwcGxlRXJyb3JzKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihyZXNwb25zZSlcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybih0ZXh0U3RhdHVzLCBlcnJvclRocm93bilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uYWJvcnQoKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXNzaW9uLm9uc2hpcHBpbmdjb250YWN0c2VsZWN0ZWQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgIHVybDogYWpheFVybCxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ21vbGxpZV9hcHBsZV9wYXlfdXBkYXRlX3NoaXBwaW5nX2NvbnRhY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2ltcGxpZmllZENvbnRhY3Q6IGV2ZW50LnNoaXBwaW5nQ29udGFjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlclBhZ2U6ICdjYXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRTaGlwcGluZzogbmVlZFNoaXBwaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dvb2NvbW1lcmNlLXByb2Nlc3MtY2hlY2tvdXQtbm9uY2UnOiBub25jZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IChqcVhIUiwgdGV4dFN0YXR1cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoYXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUsIHRleHRTdGF0dXMsIGpxWEhSKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBhcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5kYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQ29udGFjdEluZm8gPSBldmVudC5zaGlwcGluZ0NvbnRhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyA9IGNyZWF0ZUFwcGxlRXJyb3JzKHJlc3BvbnNlLmVycm9ycylcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5uZXdTaGlwcGluZ01ldGhvZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNoaXBwaW5nTWV0aG9kID0gcmVzcG9uc2UubmV3U2hpcHBpbmdNZXRob2RzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHRleHRTdGF0dXMsIGVycm9yVGhyb3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5hYm9ydCgpXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlc3Npb24ub252YWxpZGF0ZW1lcmNoYW50ID0gKGFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgalF1ZXJ5LmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXhVcmwsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdtb2xsaWVfYXBwbGVfcGF5X3ZhbGlkYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvblVybDogYXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3b29jb21tZXJjZS1wcm9jZXNzLWNoZWNrb3V0LW5vbmNlJzogbm9uY2UsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoanFYSFIsIHRleHRTdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKG1lcmNoYW50U2Vzc2lvbiwgdGV4dFN0YXR1cywganFYSFIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJjaGFudFNlc3Npb24uc3VjY2VzcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oSlNPTi5wYXJzZShtZXJjaGFudFNlc3Npb24uZGF0YSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihtZXJjaGFudFNlc3Npb24uZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmFib3J0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybih0ZXh0U3RhdHVzLCBlcnJvclRocm93bilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uYWJvcnQoKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXNzaW9uLm9ucGF5bWVudGF1dGhvcml6ZWQgPSAoQXBwbGVQYXlQYXltZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qge2JpbGxpbmdDb250YWN0LCBzaGlwcGluZ0NvbnRhY3QgfSA9IEFwcGxlUGF5UGF5bWVudC5wYXltZW50XG5cbiAgICAgICAgICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgIHVybDogYWpheFVybCxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ21vbGxpZV9hcHBsZV9wYXlfY3JlYXRlX29yZGVyX2NhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpcHBpbmdDb250YWN0OiBBcHBsZVBheVBheW1lbnQucGF5bWVudC5zaGlwcGluZ0NvbnRhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBiaWxsaW5nQ29udGFjdDogQXBwbGVQYXlQYXltZW50LnBheW1lbnQuYmlsbGluZ0NvbnRhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogQXBwbGVQYXlQYXltZW50LnBheW1lbnQudG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ01ldGhvZDogc2VsZWN0ZWRTaGlwcGluZ01ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtb2xsaWUtcGF5bWVudHMtZm9yLXdvb2NvbW1lcmNlX2lzc3Vlcl9hcHBsZXBheSc6ICdhcHBsZXBheScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd29vY29tbWVyY2UtcHJvY2Vzcy1jaGVja291dC1ub25jZSc6IG5vbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JpbGxpbmdfZmlyc3RfbmFtZSc6IGJpbGxpbmdDb250YWN0LmdpdmVuTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX2xhc3RfbmFtZSc6IGJpbGxpbmdDb250YWN0LmZhbWlseU5hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19jb21wYW55JzogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19jb3VudHJ5JzogYmlsbGluZ0NvbnRhY3QuY291bnRyeUNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19hZGRyZXNzXzEnOiBiaWxsaW5nQ29udGFjdC5hZGRyZXNzTGluZXNbMF0gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19hZGRyZXNzXzInOiBiaWxsaW5nQ29udGFjdC5hZGRyZXNzTGluZXNbMV0gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19wb3N0Y29kZSc6IGJpbGxpbmdDb250YWN0LnBvc3RhbENvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19jaXR5JzogYmlsbGluZ0NvbnRhY3QubG9jYWxpdHkgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19zdGF0ZSc6IGJpbGxpbmdDb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdiaWxsaW5nX3Bob25lJzogYmlsbGluZ0NvbnRhY3QucGhvbmVOdW1iZXIgfHwgJzAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmlsbGluZ19lbWFpbCc6IHNoaXBwaW5nQ29udGFjdC5lbWFpbEFkZHJlc3MgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfZmlyc3RfbmFtZSc6IHNoaXBwaW5nQ29udGFjdC5naXZlbk5hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfbGFzdF9uYW1lJzogc2hpcHBpbmdDb250YWN0LmZhbWlseU5hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfY29tcGFueSc6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoaXBwaW5nX2NvdW50cnknOiBzaGlwcGluZ0NvbnRhY3QuY291bnRyeUNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfYWRkcmVzc18xJzogc2hpcHBpbmdDb250YWN0LmFkZHJlc3NMaW5lc1swXSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGlwcGluZ19hZGRyZXNzXzInOiBzaGlwcGluZ0NvbnRhY3QuYWRkcmVzc0xpbmVzWzFdIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NoaXBwaW5nX3Bvc3Rjb2RlJzogc2hpcHBpbmdDb250YWN0LnBvc3RhbENvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfY2l0eSc6IHNoaXBwaW5nQ29udGFjdC5sb2NhbGl0eSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGlwcGluZ19zdGF0ZSc6IHNoaXBwaW5nQ29udGFjdC5hZG1pbmlzdHJhdGl2ZUFyZWEgfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfcGhvbmUnOiBzaGlwcGluZ0NvbnRhY3QucGhvbmVOdW1iZXIgfHwgJzAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2hpcHBpbmdfZW1haWwnOiBzaGlwcGluZ0NvbnRhY3QuZW1haWxBZGRyZXNzIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29yZGVyX2NvbW1lbnRzJyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BheW1lbnRfbWV0aG9kJyA6ICdtb2xsaWVfd2NfZ2F0ZXdheV9hcHBsZXBheScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnX3dwX2h0dHBfcmVmZXJlcicgOiAnLz93Yy1hamF4PXVwZGF0ZV9vcmRlcl9yZXZpZXcnXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoanFYSFIsIHRleHRTdGF0dXMpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoYXV0aG9yaXphdGlvblJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBhdXRob3JpemF0aW9uUmVzdWx0LmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRob3JpemF0aW9uUmVzdWx0LnN1Y2Nlc3MgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdGlvblVybCA9IHJlc3VsdFsncmV0dXJuVXJsJ107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQocmVzdWx0WydyZXNwb25zZVRvQXBwbGUnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0aW9uVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMgPSBjcmVhdGVBcHBsZUVycm9ycyhyZXN1bHQuZXJyb3JzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uY29tcGxldGVQYXltZW50KHJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybih0ZXh0U3RhdHVzLCBlcnJvclRocm93bilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uYWJvcnQoKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZighbWF5YmVTaG93QnV0dG9uKCkpe1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBqUXVlcnkoZG9jdW1lbnQuYm9keSkub24oJ3VwZGF0ZWRfY2FydF90b3RhbHMnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIG1heWJlU2hvd0J1dHRvbigpXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9sbGllX2FwcGxlcGF5X2J1dHRvbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIGFwcGxlUGF5U2Vzc2lvbigpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtb2xsaWVfYXBwbGVwYXlfYnV0dG9uJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICBhcHBsZVBheVNlc3Npb24oKVxuICAgICAgICB9KVxuICAgIH1cblxuKVxuKFxuICAgIHdpbmRvd1xuKVxuXG5cblxuIiwiZXhwb3J0IGNvbnN0IG1heWJlU2hvd0J1dHRvbiA9ICgpID0+IHtcbiAgICBjb25zdCB7QXBwbGVQYXlTZXNzaW9ufSA9IHdpbmRvd1xuICAgIGNvbnN0IGFwcGxlUGF5TWV0aG9kRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICcjbW9sbGllLWFwcGxlcGF5RGlyZWN0LWJ1dHRvbicsXG4gICAgKVxuICAgIGNvbnN0IGNhblNob3dCdXR0b24gPSBhcHBsZVBheU1ldGhvZEVsZW1lbnQgJiYgKEFwcGxlUGF5U2Vzc2lvbiAmJiBBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgaWYgKCFjYW5TaG93QnV0dG9uKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKVxuICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ21vbGxpZV9hcHBsZXBheV9idXR0b24nKVxuICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdhcHBsZS1wYXktYnV0dG9uJylcbiAgICBidXR0b24uY2xhc3NMaXN0LmFkZCgnYXBwbGUtcGF5LWJ1dHRvbi1ibGFjaycpXG4gICAgYXBwbGVQYXlNZXRob2RFbGVtZW50LmFwcGVuZENoaWxkKGJ1dHRvbilcbiAgICByZXR1cm4gdHJ1ZVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
1
+ !function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/public/js/",n(n.s="RX5I")}({OiFV:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var o=function(){var e=window.ApplePaySession,t=document.querySelector("#mollie-applepayDirect-button");if(!(t&&e&&e.canMakePayments()))return!1;var n=document.createElement("button");return n.setAttribute("id","mollie_applepay_button"),n.classList.add("apple-pay-button"),n.classList.add("apple-pay-button-black"),t.appendChild(n),!0}},RX5I:function(e,t,n){"use strict";n.r(t);var o=n("nxB1"),r=n("uXQx"),i=n("OiFV");!function(e){var t=e._,n=e.mollieApplePayDirectDataCart,a=e.jQuery;if(!t.isEmpty(n)){var c=n.product,l=c.needShipping,p=void 0===l||l,s=c.subtotal,u=n.shop,d=u.countryCode,m=u.currencyCode,f=void 0===m?"EUR":m,y=u.totalLabel,h=void 0===y?"":y,_=n.ajaxUrl;if(s&&d&&_){var g=document.getElementById("woocommerce-process-checkout-nonce").value,b=[],v=[],w="",S=function(){var e=new ApplePaySession(3,Object(r.a)(d,f,h,s));e.begin(),e.onshippingmethodselected=function(t){var n=this;a.ajax({url:_,method:"POST",data:{action:"mollie_apple_pay_update_shipping_method",shippingMethod:t.shippingMethod,callerPage:"cart",simplifiedContact:b,"woocommerce-process-checkout-nonce":g},complete:function(e,t){},success:function(e,r,i){var a=e.data;v=t.shippingMethod,!1===e.success&&(a.errors=Object(o.a)(a.errors)),n.completeShippingMethodSelection(a)},error:function(t,n,o){console.warn(n,o),e.abort()}})},e.onshippingcontactselected=function(t){var n=this;a.ajax({url:_,method:"POST",data:{action:"mollie_apple_pay_update_shipping_contact",simplifiedContact:t.shippingContact,callerPage:"cart",needShipping:p,"woocommerce-process-checkout-nonce":g},complete:function(e,t){},success:function(e,r,i){var a=e.data;b=t.shippingContact,!1===e.success&&(a.errors=Object(o.a)(a.errors)),a.newShippingMethods&&(v=a.newShippingMethods[0]),n.completeShippingContactSelection(a)},error:function(t,n,o){console.warn(n,o),e.abort()}})},e.onvalidatemerchant=function(t){a.ajax({url:_,method:"POST",data:{action:"mollie_apple_pay_validation",validationUrl:t.validationURL,"woocommerce-process-checkout-nonce":g},complete:function(e,t){},success:function(t,n,o){!0===t.success?e.completeMerchantValidation(JSON.parse(t.data)):(console.warn(t.data),e.abort())},error:function(t,n,o){console.warn(n,o),e.abort()}})},e.onpaymentauthorized=function(t){var n=t.payment,r=n.billingContact,i=n.shippingContact;a.ajax({url:_,method:"POST",data:{action:"mollie_apple_pay_create_order_cart",shippingContact:t.payment.shippingContact,billingContact:t.payment.billingContact,token:t.payment.token,shippingMethod:v,"mollie-payments-for-woocommerce_issuer_applepay":"applepay","woocommerce-process-checkout-nonce":g,billing_first_name:r.givenName||"",billing_last_name:r.familyName||"",billing_company:"",billing_country:r.countryCode||"",billing_address_1:r.addressLines[0]||"",billing_address_2:r.addressLines[1]||"",billing_postcode:r.postalCode||"",billing_city:r.locality||"",billing_state:r.administrativeArea||"",billing_phone:r.phoneNumber||"000000000000",billing_email:i.emailAddress||"",shipping_first_name:i.givenName||"",shipping_last_name:i.familyName||"",shipping_company:"",shipping_country:i.countryCode||"",shipping_address_1:i.addressLines[0]||"",shipping_address_2:i.addressLines[1]||"",shipping_postcode:i.postalCode||"",shipping_city:i.locality||"",shipping_state:i.administrativeArea||"",shipping_phone:i.phoneNumber||"000000000000",shipping_email:i.emailAddress||"",order_comments:"",payment_method:"mollie_wc_gateway_applepay",_wp_http_referer:"/?wc-ajax=update_order_review"},complete:function(e,t){},success:function(t,n,r){var i=t.data;!0===t.success?(w=i.returnUrl,e.completePayment(i.responseToApple),window.location.href=w):(i.errors=Object(o.a)(i.errors),e.completePayment(i))},error:function(t,n,o){console.warn(n,o),e.abort()}})}};Object(i.a)()&&(a(document.body).on("updated_cart_totals",(function(e){Object(i.a)(),document.querySelector("#mollie_applepay_button").addEventListener("click",(function(e){S()}))})),document.querySelector("#mollie_applepay_button").addEventListener("click",(function(e){S()})))}}}(window)},nxB1:function(e,t,n){"use strict";function o(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,i=function(){};return{s:i,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){l=!0,a=e},f:function(){try{c||null==n.return||n.return()}finally{if(l)throw a}}}}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function i(e){var t,n=[],r=o(e);try{for(r.s();!(t=r.n()).done;){var i=t.value,a=i.contactField,c=void 0===a?null:a,l=i.code,p=void 0===l?null:l,s=i.message,u=c?new ApplePayError(p,c,void 0===s?null:s):new ApplePayError(p);n.push(u)}}catch(e){r.e(e)}finally{r.f()}return n}n.d(t,"a",(function(){return i}))},uXQx:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var o=function(e,t,n,o){return{countryCode:e,currencyCode:t,supportedNetworks:["amex","maestro","masterCard","visa","vPay"],merchantCapabilities:["supports3DS"],shippingType:"shipping",requiredBillingContactFields:["postalAddress","email"],requiredShippingContactFields:["postalAddress","email"],total:{label:n,amount:o,type:"final"}}}}});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/js/babel-polyfill.min.js CHANGED
@@ -1,10279 +1 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
40
- /******/ }
41
- /******/ };
42
- /******/
43
- /******/ // define __esModule on exports
44
- /******/ __webpack_require__.r = function(exports) {
45
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47
- /******/ }
48
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
49
- /******/ };
50
- /******/
51
- /******/ // create a fake namespace object
52
- /******/ // mode & 1: value is a module id, require it
53
- /******/ // mode & 2: merge all properties of value into the ns
54
- /******/ // mode & 4: return value when already ns object
55
- /******/ // mode & 8|1: behave like require
56
- /******/ __webpack_require__.t = function(value, mode) {
57
- /******/ if(mode & 1) value = __webpack_require__(value);
58
- /******/ if(mode & 8) return value;
59
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60
- /******/ var ns = Object.create(null);
61
- /******/ __webpack_require__.r(ns);
62
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64
- /******/ return ns;
65
- /******/ };
66
- /******/
67
- /******/ // getDefaultExport function for compatibility with non-harmony modules
68
- /******/ __webpack_require__.n = function(module) {
69
- /******/ var getter = module && module.__esModule ?
70
- /******/ function getDefault() { return module['default']; } :
71
- /******/ function getModuleExports() { return module; };
72
- /******/ __webpack_require__.d(getter, 'a', getter);
73
- /******/ return getter;
74
- /******/ };
75
- /******/
76
- /******/ // Object.prototype.hasOwnProperty.call
77
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78
- /******/
79
- /******/ // __webpack_public_path__
80
- /******/ __webpack_require__.p = "/public/js/";
81
- /******/
82
- /******/
83
- /******/ // Load entry module and return exports
84
- /******/ return __webpack_require__(__webpack_require__.s = "./node_modules/@babel/polyfill/lib/index.js");
85
- /******/ })
86
- /************************************************************************/
87
- /******/ ({
88
-
89
- /***/ "./node_modules/@babel/polyfill/lib/index.js":
90
- /*!***************************************************!*\
91
- !*** ./node_modules/@babel/polyfill/lib/index.js ***!
92
- \***************************************************/
93
- /*! no static exports found */
94
- /***/ (function(module, exports, __webpack_require__) {
95
-
96
- "use strict";
97
-
98
-
99
- __webpack_require__(/*! ./noConflict */ "./node_modules/@babel/polyfill/lib/noConflict.js");
100
-
101
- var _global = _interopRequireDefault(__webpack_require__(/*! core-js/library/fn/global */ "./node_modules/core-js/library/fn/global.js"));
102
-
103
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
104
-
105
- if (_global["default"]._babelPolyfill && typeof console !== "undefined" && console.warn) {
106
- console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended " + "and may have consequences if different versions of the polyfills are applied sequentially. " + "If you do need to load the polyfill more than once, use @babel/polyfill/noConflict " + "instead to bypass the warning.");
107
- }
108
-
109
- _global["default"]._babelPolyfill = true;
110
-
111
- /***/ }),
112
-
113
- /***/ "./node_modules/@babel/polyfill/lib/noConflict.js":
114
- /*!********************************************************!*\
115
- !*** ./node_modules/@babel/polyfill/lib/noConflict.js ***!
116
- \********************************************************/
117
- /*! no static exports found */
118
- /***/ (function(module, exports, __webpack_require__) {
119
-
120
- "use strict";
121
-
122
-
123
- __webpack_require__(/*! core-js/es6 */ "./node_modules/core-js/es6/index.js");
124
-
125
- __webpack_require__(/*! core-js/fn/array/includes */ "./node_modules/core-js/fn/array/includes.js");
126
-
127
- __webpack_require__(/*! core-js/fn/array/flat-map */ "./node_modules/core-js/fn/array/flat-map.js");
128
-
129
- __webpack_require__(/*! core-js/fn/string/pad-start */ "./node_modules/core-js/fn/string/pad-start.js");
130
-
131
- __webpack_require__(/*! core-js/fn/string/pad-end */ "./node_modules/core-js/fn/string/pad-end.js");
132
-
133
- __webpack_require__(/*! core-js/fn/string/trim-start */ "./node_modules/core-js/fn/string/trim-start.js");
134
-
135
- __webpack_require__(/*! core-js/fn/string/trim-end */ "./node_modules/core-js/fn/string/trim-end.js");
136
-
137
- __webpack_require__(/*! core-js/fn/symbol/async-iterator */ "./node_modules/core-js/fn/symbol/async-iterator.js");
138
-
139
- __webpack_require__(/*! core-js/fn/object/get-own-property-descriptors */ "./node_modules/core-js/fn/object/get-own-property-descriptors.js");
140
-
141
- __webpack_require__(/*! core-js/fn/object/values */ "./node_modules/core-js/fn/object/values.js");
142
-
143
- __webpack_require__(/*! core-js/fn/object/entries */ "./node_modules/core-js/fn/object/entries.js");
144
-
145
- __webpack_require__(/*! core-js/fn/promise/finally */ "./node_modules/core-js/fn/promise/finally.js");
146
-
147
- __webpack_require__(/*! core-js/web */ "./node_modules/core-js/web/index.js");
148
-
149
- __webpack_require__(/*! regenerator-runtime/runtime */ "./node_modules/regenerator-runtime/runtime.js");
150
-
151
- /***/ }),
152
-
153
- /***/ "./node_modules/core-js/es6/index.js":
154
- /*!*******************************************!*\
155
- !*** ./node_modules/core-js/es6/index.js ***!
156
- \*******************************************/
157
- /*! no static exports found */
158
- /***/ (function(module, exports, __webpack_require__) {
159
-
160
- __webpack_require__(/*! ../modules/es6.symbol */ "./node_modules/core-js/modules/es6.symbol.js");
161
- __webpack_require__(/*! ../modules/es6.object.create */ "./node_modules/core-js/modules/es6.object.create.js");
162
- __webpack_require__(/*! ../modules/es6.object.define-property */ "./node_modules/core-js/modules/es6.object.define-property.js");
163
- __webpack_require__(/*! ../modules/es6.object.define-properties */ "./node_modules/core-js/modules/es6.object.define-properties.js");
164
- __webpack_require__(/*! ../modules/es6.object.get-own-property-descriptor */ "./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js");
165
- __webpack_require__(/*! ../modules/es6.object.get-prototype-of */ "./node_modules/core-js/modules/es6.object.get-prototype-of.js");
166
- __webpack_require__(/*! ../modules/es6.object.keys */ "./node_modules/core-js/modules/es6.object.keys.js");
167
- __webpack_require__(/*! ../modules/es6.object.get-own-property-names */ "./node_modules/core-js/modules/es6.object.get-own-property-names.js");
168
- __webpack_require__(/*! ../modules/es6.object.freeze */ "./node_modules/core-js/modules/es6.object.freeze.js");
169
- __webpack_require__(/*! ../modules/es6.object.seal */ "./node_modules/core-js/modules/es6.object.seal.js");
170
- __webpack_require__(/*! ../modules/es6.object.prevent-extensions */ "./node_modules/core-js/modules/es6.object.prevent-extensions.js");
171
- __webpack_require__(/*! ../modules/es6.object.is-frozen */ "./node_modules/core-js/modules/es6.object.is-frozen.js");
172
- __webpack_require__(/*! ../modules/es6.object.is-sealed */ "./node_modules/core-js/modules/es6.object.is-sealed.js");
173
- __webpack_require__(/*! ../modules/es6.object.is-extensible */ "./node_modules/core-js/modules/es6.object.is-extensible.js");
174
- __webpack_require__(/*! ../modules/es6.object.assign */ "./node_modules/core-js/modules/es6.object.assign.js");
175
- __webpack_require__(/*! ../modules/es6.object.is */ "./node_modules/core-js/modules/es6.object.is.js");
176
- __webpack_require__(/*! ../modules/es6.object.set-prototype-of */ "./node_modules/core-js/modules/es6.object.set-prototype-of.js");
177
- __webpack_require__(/*! ../modules/es6.object.to-string */ "./node_modules/core-js/modules/es6.object.to-string.js");
178
- __webpack_require__(/*! ../modules/es6.function.bind */ "./node_modules/core-js/modules/es6.function.bind.js");
179
- __webpack_require__(/*! ../modules/es6.function.name */ "./node_modules/core-js/modules/es6.function.name.js");
180
- __webpack_require__(/*! ../modules/es6.function.has-instance */ "./node_modules/core-js/modules/es6.function.has-instance.js");
181
- __webpack_require__(/*! ../modules/es6.parse-int */ "./node_modules/core-js/modules/es6.parse-int.js");
182
- __webpack_require__(/*! ../modules/es6.parse-float */ "./node_modules/core-js/modules/es6.parse-float.js");
183
- __webpack_require__(/*! ../modules/es6.number.constructor */ "./node_modules/core-js/modules/es6.number.constructor.js");
184
- __webpack_require__(/*! ../modules/es6.number.to-fixed */ "./node_modules/core-js/modules/es6.number.to-fixed.js");
185
- __webpack_require__(/*! ../modules/es6.number.to-precision */ "./node_modules/core-js/modules/es6.number.to-precision.js");
186
- __webpack_require__(/*! ../modules/es6.number.epsilon */ "./node_modules/core-js/modules/es6.number.epsilon.js");
187
- __webpack_require__(/*! ../modules/es6.number.is-finite */ "./node_modules/core-js/modules/es6.number.is-finite.js");
188
- __webpack_require__(/*! ../modules/es6.number.is-integer */ "./node_modules/core-js/modules/es6.number.is-integer.js");
189
- __webpack_require__(/*! ../modules/es6.number.is-nan */ "./node_modules/core-js/modules/es6.number.is-nan.js");
190
- __webpack_require__(/*! ../modules/es6.number.is-safe-integer */ "./node_modules/core-js/modules/es6.number.is-safe-integer.js");
191
- __webpack_require__(/*! ../modules/es6.number.max-safe-integer */ "./node_modules/core-js/modules/es6.number.max-safe-integer.js");
192
- __webpack_require__(/*! ../modules/es6.number.min-safe-integer */ "./node_modules/core-js/modules/es6.number.min-safe-integer.js");
193
- __webpack_require__(/*! ../modules/es6.number.parse-float */ "./node_modules/core-js/modules/es6.number.parse-float.js");
194
- __webpack_require__(/*! ../modules/es6.number.parse-int */ "./node_modules/core-js/modules/es6.number.parse-int.js");
195
- __webpack_require__(/*! ../modules/es6.math.acosh */ "./node_modules/core-js/modules/es6.math.acosh.js");
196
- __webpack_require__(/*! ../modules/es6.math.asinh */ "./node_modules/core-js/modules/es6.math.asinh.js");
197
- __webpack_require__(/*! ../modules/es6.math.atanh */ "./node_modules/core-js/modules/es6.math.atanh.js");
198
- __webpack_require__(/*! ../modules/es6.math.cbrt */ "./node_modules/core-js/modules/es6.math.cbrt.js");
199
- __webpack_require__(/*! ../modules/es6.math.clz32 */ "./node_modules/core-js/modules/es6.math.clz32.js");
200
- __webpack_require__(/*! ../modules/es6.math.cosh */ "./node_modules/core-js/modules/es6.math.cosh.js");
201
- __webpack_require__(/*! ../modules/es6.math.expm1 */ "./node_modules/core-js/modules/es6.math.expm1.js");
202
- __webpack_require__(/*! ../modules/es6.math.fround */ "./node_modules/core-js/modules/es6.math.fround.js");
203
- __webpack_require__(/*! ../modules/es6.math.hypot */ "./node_modules/core-js/modules/es6.math.hypot.js");
204
- __webpack_require__(/*! ../modules/es6.math.imul */ "./node_modules/core-js/modules/es6.math.imul.js");
205
- __webpack_require__(/*! ../modules/es6.math.log10 */ "./node_modules/core-js/modules/es6.math.log10.js");
206
- __webpack_require__(/*! ../modules/es6.math.log1p */ "./node_modules/core-js/modules/es6.math.log1p.js");
207
- __webpack_require__(/*! ../modules/es6.math.log2 */ "./node_modules/core-js/modules/es6.math.log2.js");
208
- __webpack_require__(/*! ../modules/es6.math.sign */ "./node_modules/core-js/modules/es6.math.sign.js");
209
- __webpack_require__(/*! ../modules/es6.math.sinh */ "./node_modules/core-js/modules/es6.math.sinh.js");
210
- __webpack_require__(/*! ../modules/es6.math.tanh */ "./node_modules/core-js/modules/es6.math.tanh.js");
211
- __webpack_require__(/*! ../modules/es6.math.trunc */ "./node_modules/core-js/modules/es6.math.trunc.js");
212
- __webpack_require__(/*! ../modules/es6.string.from-code-point */ "./node_modules/core-js/modules/es6.string.from-code-point.js");
213
- __webpack_require__(/*! ../modules/es6.string.raw */ "./node_modules/core-js/modules/es6.string.raw.js");
214
- __webpack_require__(/*! ../modules/es6.string.trim */ "./node_modules/core-js/modules/es6.string.trim.js");
215
- __webpack_require__(/*! ../modules/es6.string.iterator */ "./node_modules/core-js/modules/es6.string.iterator.js");
216
- __webpack_require__(/*! ../modules/es6.string.code-point-at */ "./node_modules/core-js/modules/es6.string.code-point-at.js");
217
- __webpack_require__(/*! ../modules/es6.string.ends-with */ "./node_modules/core-js/modules/es6.string.ends-with.js");
218
- __webpack_require__(/*! ../modules/es6.string.includes */ "./node_modules/core-js/modules/es6.string.includes.js");
219
- __webpack_require__(/*! ../modules/es6.string.repeat */ "./node_modules/core-js/modules/es6.string.repeat.js");
220
- __webpack_require__(/*! ../modules/es6.string.starts-with */ "./node_modules/core-js/modules/es6.string.starts-with.js");
221
- __webpack_require__(/*! ../modules/es6.string.anchor */ "./node_modules/core-js/modules/es6.string.anchor.js");
222
- __webpack_require__(/*! ../modules/es6.string.big */ "./node_modules/core-js/modules/es6.string.big.js");
223
- __webpack_require__(/*! ../modules/es6.string.blink */ "./node_modules/core-js/modules/es6.string.blink.js");
224
- __webpack_require__(/*! ../modules/es6.string.bold */ "./node_modules/core-js/modules/es6.string.bold.js");
225
- __webpack_require__(/*! ../modules/es6.string.fixed */ "./node_modules/core-js/modules/es6.string.fixed.js");
226
- __webpack_require__(/*! ../modules/es6.string.fontcolor */ "./node_modules/core-js/modules/es6.string.fontcolor.js");
227
- __webpack_require__(/*! ../modules/es6.string.fontsize */ "./node_modules/core-js/modules/es6.string.fontsize.js");
228
- __webpack_require__(/*! ../modules/es6.string.italics */ "./node_modules/core-js/modules/es6.string.italics.js");
229
- __webpack_require__(/*! ../modules/es6.string.link */ "./node_modules/core-js/modules/es6.string.link.js");
230
- __webpack_require__(/*! ../modules/es6.string.small */ "./node_modules/core-js/modules/es6.string.small.js");
231
- __webpack_require__(/*! ../modules/es6.string.strike */ "./node_modules/core-js/modules/es6.string.strike.js");
232
- __webpack_require__(/*! ../modules/es6.string.sub */ "./node_modules/core-js/modules/es6.string.sub.js");
233
- __webpack_require__(/*! ../modules/es6.string.sup */ "./node_modules/core-js/modules/es6.string.sup.js");
234
- __webpack_require__(/*! ../modules/es6.date.now */ "./node_modules/core-js/modules/es6.date.now.js");
235
- __webpack_require__(/*! ../modules/es6.date.to-json */ "./node_modules/core-js/modules/es6.date.to-json.js");
236
- __webpack_require__(/*! ../modules/es6.date.to-iso-string */ "./node_modules/core-js/modules/es6.date.to-iso-string.js");
237
- __webpack_require__(/*! ../modules/es6.date.to-string */ "./node_modules/core-js/modules/es6.date.to-string.js");
238
- __webpack_require__(/*! ../modules/es6.date.to-primitive */ "./node_modules/core-js/modules/es6.date.to-primitive.js");
239
- __webpack_require__(/*! ../modules/es6.array.is-array */ "./node_modules/core-js/modules/es6.array.is-array.js");
240
- __webpack_require__(/*! ../modules/es6.array.from */ "./node_modules/core-js/modules/es6.array.from.js");
241
- __webpack_require__(/*! ../modules/es6.array.of */ "./node_modules/core-js/modules/es6.array.of.js");
242
- __webpack_require__(/*! ../modules/es6.array.join */ "./node_modules/core-js/modules/es6.array.join.js");
243
- __webpack_require__(/*! ../modules/es6.array.slice */ "./node_modules/core-js/modules/es6.array.slice.js");
244
- __webpack_require__(/*! ../modules/es6.array.sort */ "./node_modules/core-js/modules/es6.array.sort.js");
245
- __webpack_require__(/*! ../modules/es6.array.for-each */ "./node_modules/core-js/modules/es6.array.for-each.js");
246
- __webpack_require__(/*! ../modules/es6.array.map */ "./node_modules/core-js/modules/es6.array.map.js");
247
- __webpack_require__(/*! ../modules/es6.array.filter */ "./node_modules/core-js/modules/es6.array.filter.js");
248
- __webpack_require__(/*! ../modules/es6.array.some */ "./node_modules/core-js/modules/es6.array.some.js");
249
- __webpack_require__(/*! ../modules/es6.array.every */ "./node_modules/core-js/modules/es6.array.every.js");
250
- __webpack_require__(/*! ../modules/es6.array.reduce */ "./node_modules/core-js/modules/es6.array.reduce.js");
251
- __webpack_require__(/*! ../modules/es6.array.reduce-right */ "./node_modules/core-js/modules/es6.array.reduce-right.js");
252
- __webpack_require__(/*! ../modules/es6.array.index-of */ "./node_modules/core-js/modules/es6.array.index-of.js");
253
- __webpack_require__(/*! ../modules/es6.array.last-index-of */ "./node_modules/core-js/modules/es6.array.last-index-of.js");
254
- __webpack_require__(/*! ../modules/es6.array.copy-within */ "./node_modules/core-js/modules/es6.array.copy-within.js");
255
- __webpack_require__(/*! ../modules/es6.array.fill */ "./node_modules/core-js/modules/es6.array.fill.js");
256
- __webpack_require__(/*! ../modules/es6.array.find */ "./node_modules/core-js/modules/es6.array.find.js");
257
- __webpack_require__(/*! ../modules/es6.array.find-index */ "./node_modules/core-js/modules/es6.array.find-index.js");
258
- __webpack_require__(/*! ../modules/es6.array.species */ "./node_modules/core-js/modules/es6.array.species.js");
259
- __webpack_require__(/*! ../modules/es6.array.iterator */ "./node_modules/core-js/modules/es6.array.iterator.js");
260
- __webpack_require__(/*! ../modules/es6.regexp.constructor */ "./node_modules/core-js/modules/es6.regexp.constructor.js");
261
- __webpack_require__(/*! ../modules/es6.regexp.exec */ "./node_modules/core-js/modules/es6.regexp.exec.js");
262
- __webpack_require__(/*! ../modules/es6.regexp.to-string */ "./node_modules/core-js/modules/es6.regexp.to-string.js");
263
- __webpack_require__(/*! ../modules/es6.regexp.flags */ "./node_modules/core-js/modules/es6.regexp.flags.js");
264
- __webpack_require__(/*! ../modules/es6.regexp.match */ "./node_modules/core-js/modules/es6.regexp.match.js");
265
- __webpack_require__(/*! ../modules/es6.regexp.replace */ "./node_modules/core-js/modules/es6.regexp.replace.js");
266
- __webpack_require__(/*! ../modules/es6.regexp.search */ "./node_modules/core-js/modules/es6.regexp.search.js");
267
- __webpack_require__(/*! ../modules/es6.regexp.split */ "./node_modules/core-js/modules/es6.regexp.split.js");
268
- __webpack_require__(/*! ../modules/es6.promise */ "./node_modules/core-js/modules/es6.promise.js");
269
- __webpack_require__(/*! ../modules/es6.map */ "./node_modules/core-js/modules/es6.map.js");
270
- __webpack_require__(/*! ../modules/es6.set */ "./node_modules/core-js/modules/es6.set.js");
271
- __webpack_require__(/*! ../modules/es6.weak-map */ "./node_modules/core-js/modules/es6.weak-map.js");
272
- __webpack_require__(/*! ../modules/es6.weak-set */ "./node_modules/core-js/modules/es6.weak-set.js");
273
- __webpack_require__(/*! ../modules/es6.typed.array-buffer */ "./node_modules/core-js/modules/es6.typed.array-buffer.js");
274
- __webpack_require__(/*! ../modules/es6.typed.data-view */ "./node_modules/core-js/modules/es6.typed.data-view.js");
275
- __webpack_require__(/*! ../modules/es6.typed.int8-array */ "./node_modules/core-js/modules/es6.typed.int8-array.js");
276
- __webpack_require__(/*! ../modules/es6.typed.uint8-array */ "./node_modules/core-js/modules/es6.typed.uint8-array.js");
277
- __webpack_require__(/*! ../modules/es6.typed.uint8-clamped-array */ "./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js");
278
- __webpack_require__(/*! ../modules/es6.typed.int16-array */ "./node_modules/core-js/modules/es6.typed.int16-array.js");
279
- __webpack_require__(/*! ../modules/es6.typed.uint16-array */ "./node_modules/core-js/modules/es6.typed.uint16-array.js");
280
- __webpack_require__(/*! ../modules/es6.typed.int32-array */ "./node_modules/core-js/modules/es6.typed.int32-array.js");
281
- __webpack_require__(/*! ../modules/es6.typed.uint32-array */ "./node_modules/core-js/modules/es6.typed.uint32-array.js");
282
- __webpack_require__(/*! ../modules/es6.typed.float32-array */ "./node_modules/core-js/modules/es6.typed.float32-array.js");
283
- __webpack_require__(/*! ../modules/es6.typed.float64-array */ "./node_modules/core-js/modules/es6.typed.float64-array.js");
284
- __webpack_require__(/*! ../modules/es6.reflect.apply */ "./node_modules/core-js/modules/es6.reflect.apply.js");
285
- __webpack_require__(/*! ../modules/es6.reflect.construct */ "./node_modules/core-js/modules/es6.reflect.construct.js");
286
- __webpack_require__(/*! ../modules/es6.reflect.define-property */ "./node_modules/core-js/modules/es6.reflect.define-property.js");
287
- __webpack_require__(/*! ../modules/es6.reflect.delete-property */ "./node_modules/core-js/modules/es6.reflect.delete-property.js");
288
- __webpack_require__(/*! ../modules/es6.reflect.enumerate */ "./node_modules/core-js/modules/es6.reflect.enumerate.js");
289
- __webpack_require__(/*! ../modules/es6.reflect.get */ "./node_modules/core-js/modules/es6.reflect.get.js");
290
- __webpack_require__(/*! ../modules/es6.reflect.get-own-property-descriptor */ "./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js");
291
- __webpack_require__(/*! ../modules/es6.reflect.get-prototype-of */ "./node_modules/core-js/modules/es6.reflect.get-prototype-of.js");
292
- __webpack_require__(/*! ../modules/es6.reflect.has */ "./node_modules/core-js/modules/es6.reflect.has.js");
293
- __webpack_require__(/*! ../modules/es6.reflect.is-extensible */ "./node_modules/core-js/modules/es6.reflect.is-extensible.js");
294
- __webpack_require__(/*! ../modules/es6.reflect.own-keys */ "./node_modules/core-js/modules/es6.reflect.own-keys.js");
295
- __webpack_require__(/*! ../modules/es6.reflect.prevent-extensions */ "./node_modules/core-js/modules/es6.reflect.prevent-extensions.js");
296
- __webpack_require__(/*! ../modules/es6.reflect.set */ "./node_modules/core-js/modules/es6.reflect.set.js");
297
- __webpack_require__(/*! ../modules/es6.reflect.set-prototype-of */ "./node_modules/core-js/modules/es6.reflect.set-prototype-of.js");
298
- module.exports = __webpack_require__(/*! ../modules/_core */ "./node_modules/core-js/modules/_core.js");
299
-
300
-
301
- /***/ }),
302
-
303
- /***/ "./node_modules/core-js/fn/array/flat-map.js":
304
- /*!***************************************************!*\
305
- !*** ./node_modules/core-js/fn/array/flat-map.js ***!
306
- \***************************************************/
307
- /*! no static exports found */
308
- /***/ (function(module, exports, __webpack_require__) {
309
-
310
- __webpack_require__(/*! ../../modules/es7.array.flat-map */ "./node_modules/core-js/modules/es7.array.flat-map.js");
311
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Array.flatMap;
312
-
313
-
314
- /***/ }),
315
-
316
- /***/ "./node_modules/core-js/fn/array/includes.js":
317
- /*!***************************************************!*\
318
- !*** ./node_modules/core-js/fn/array/includes.js ***!
319
- \***************************************************/
320
- /*! no static exports found */
321
- /***/ (function(module, exports, __webpack_require__) {
322
-
323
- __webpack_require__(/*! ../../modules/es7.array.includes */ "./node_modules/core-js/modules/es7.array.includes.js");
324
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Array.includes;
325
-
326
-
327
- /***/ }),
328
-
329
- /***/ "./node_modules/core-js/fn/object/entries.js":
330
- /*!***************************************************!*\
331
- !*** ./node_modules/core-js/fn/object/entries.js ***!
332
- \***************************************************/
333
- /*! no static exports found */
334
- /***/ (function(module, exports, __webpack_require__) {
335
-
336
- __webpack_require__(/*! ../../modules/es7.object.entries */ "./node_modules/core-js/modules/es7.object.entries.js");
337
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Object.entries;
338
-
339
-
340
- /***/ }),
341
-
342
- /***/ "./node_modules/core-js/fn/object/get-own-property-descriptors.js":
343
- /*!************************************************************************!*\
344
- !*** ./node_modules/core-js/fn/object/get-own-property-descriptors.js ***!
345
- \************************************************************************/
346
- /*! no static exports found */
347
- /***/ (function(module, exports, __webpack_require__) {
348
-
349
- __webpack_require__(/*! ../../modules/es7.object.get-own-property-descriptors */ "./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js");
350
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Object.getOwnPropertyDescriptors;
351
-
352
-
353
- /***/ }),
354
-
355
- /***/ "./node_modules/core-js/fn/object/values.js":
356
- /*!**************************************************!*\
357
- !*** ./node_modules/core-js/fn/object/values.js ***!
358
- \**************************************************/
359
- /*! no static exports found */
360
- /***/ (function(module, exports, __webpack_require__) {
361
-
362
- __webpack_require__(/*! ../../modules/es7.object.values */ "./node_modules/core-js/modules/es7.object.values.js");
363
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Object.values;
364
-
365
-
366
- /***/ }),
367
-
368
- /***/ "./node_modules/core-js/fn/promise/finally.js":
369
- /*!****************************************************!*\
370
- !*** ./node_modules/core-js/fn/promise/finally.js ***!
371
- \****************************************************/
372
- /*! no static exports found */
373
- /***/ (function(module, exports, __webpack_require__) {
374
-
375
- "use strict";
376
-
377
- __webpack_require__(/*! ../../modules/es6.promise */ "./node_modules/core-js/modules/es6.promise.js");
378
- __webpack_require__(/*! ../../modules/es7.promise.finally */ "./node_modules/core-js/modules/es7.promise.finally.js");
379
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").Promise['finally'];
380
-
381
-
382
- /***/ }),
383
-
384
- /***/ "./node_modules/core-js/fn/string/pad-end.js":
385
- /*!***************************************************!*\
386
- !*** ./node_modules/core-js/fn/string/pad-end.js ***!
387
- \***************************************************/
388
- /*! no static exports found */
389
- /***/ (function(module, exports, __webpack_require__) {
390
-
391
- __webpack_require__(/*! ../../modules/es7.string.pad-end */ "./node_modules/core-js/modules/es7.string.pad-end.js");
392
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").String.padEnd;
393
-
394
-
395
- /***/ }),
396
-
397
- /***/ "./node_modules/core-js/fn/string/pad-start.js":
398
- /*!*****************************************************!*\
399
- !*** ./node_modules/core-js/fn/string/pad-start.js ***!
400
- \*****************************************************/
401
- /*! no static exports found */
402
- /***/ (function(module, exports, __webpack_require__) {
403
-
404
- __webpack_require__(/*! ../../modules/es7.string.pad-start */ "./node_modules/core-js/modules/es7.string.pad-start.js");
405
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").String.padStart;
406
-
407
-
408
- /***/ }),
409
-
410
- /***/ "./node_modules/core-js/fn/string/trim-end.js":
411
- /*!****************************************************!*\
412
- !*** ./node_modules/core-js/fn/string/trim-end.js ***!
413
- \****************************************************/
414
- /*! no static exports found */
415
- /***/ (function(module, exports, __webpack_require__) {
416
-
417
- __webpack_require__(/*! ../../modules/es7.string.trim-right */ "./node_modules/core-js/modules/es7.string.trim-right.js");
418
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").String.trimRight;
419
-
420
-
421
- /***/ }),
422
-
423
- /***/ "./node_modules/core-js/fn/string/trim-start.js":
424
- /*!******************************************************!*\
425
- !*** ./node_modules/core-js/fn/string/trim-start.js ***!
426
- \******************************************************/
427
- /*! no static exports found */
428
- /***/ (function(module, exports, __webpack_require__) {
429
-
430
- __webpack_require__(/*! ../../modules/es7.string.trim-left */ "./node_modules/core-js/modules/es7.string.trim-left.js");
431
- module.exports = __webpack_require__(/*! ../../modules/_core */ "./node_modules/core-js/modules/_core.js").String.trimLeft;
432
-
433
-
434
- /***/ }),
435
-
436
- /***/ "./node_modules/core-js/fn/symbol/async-iterator.js":
437
- /*!**********************************************************!*\
438
- !*** ./node_modules/core-js/fn/symbol/async-iterator.js ***!
439
- \**********************************************************/
440
- /*! no static exports found */
441
- /***/ (function(module, exports, __webpack_require__) {
442
-
443
- __webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ "./node_modules/core-js/modules/es7.symbol.async-iterator.js");
444
- module.exports = __webpack_require__(/*! ../../modules/_wks-ext */ "./node_modules/core-js/modules/_wks-ext.js").f('asyncIterator');
445
-
446
-
447
- /***/ }),
448
-
449
- /***/ "./node_modules/core-js/library/fn/global.js":
450
- /*!***************************************************!*\
451
- !*** ./node_modules/core-js/library/fn/global.js ***!
452
- \***************************************************/
453
- /*! no static exports found */
454
- /***/ (function(module, exports, __webpack_require__) {
455
-
456
- __webpack_require__(/*! ../modules/es7.global */ "./node_modules/core-js/library/modules/es7.global.js");
457
- module.exports = __webpack_require__(/*! ../modules/_core */ "./node_modules/core-js/library/modules/_core.js").global;
458
-
459
-
460
- /***/ }),
461
-
462
- /***/ "./node_modules/core-js/library/modules/_a-function.js":
463
- /*!*************************************************************!*\
464
- !*** ./node_modules/core-js/library/modules/_a-function.js ***!
465
- \*************************************************************/
466
- /*! no static exports found */
467
- /***/ (function(module, exports) {
468
-
469
- module.exports = function (it) {
470
- if (typeof it != 'function') throw TypeError(it + ' is not a function!');
471
- return it;
472
- };
473
-
474
-
475
- /***/ }),
476
-
477
- /***/ "./node_modules/core-js/library/modules/_an-object.js":
478
- /*!************************************************************!*\
479
- !*** ./node_modules/core-js/library/modules/_an-object.js ***!
480
- \************************************************************/
481
- /*! no static exports found */
482
- /***/ (function(module, exports, __webpack_require__) {
483
-
484
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/library/modules/_is-object.js");
485
- module.exports = function (it) {
486
- if (!isObject(it)) throw TypeError(it + ' is not an object!');
487
- return it;
488
- };
489
-
490
-
491
- /***/ }),
492
-
493
- /***/ "./node_modules/core-js/library/modules/_core.js":
494
- /*!*******************************************************!*\
495
- !*** ./node_modules/core-js/library/modules/_core.js ***!
496
- \*******************************************************/
497
- /*! no static exports found */
498
- /***/ (function(module, exports) {
499
-
500
- var core = module.exports = { version: '2.6.12' };
501
- if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
502
-
503
-
504
- /***/ }),
505
-
506
- /***/ "./node_modules/core-js/library/modules/_ctx.js":
507
- /*!******************************************************!*\
508
- !*** ./node_modules/core-js/library/modules/_ctx.js ***!
509
- \******************************************************/
510
- /*! no static exports found */
511
- /***/ (function(module, exports, __webpack_require__) {
512
-
513
- // optional / simple context binding
514
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/library/modules/_a-function.js");
515
- module.exports = function (fn, that, length) {
516
- aFunction(fn);
517
- if (that === undefined) return fn;
518
- switch (length) {
519
- case 1: return function (a) {
520
- return fn.call(that, a);
521
- };
522
- case 2: return function (a, b) {
523
- return fn.call(that, a, b);
524
- };
525
- case 3: return function (a, b, c) {
526
- return fn.call(that, a, b, c);
527
- };
528
- }
529
- return function (/* ...args */) {
530
- return fn.apply(that, arguments);
531
- };
532
- };
533
-
534
-
535
- /***/ }),
536
-
537
- /***/ "./node_modules/core-js/library/modules/_descriptors.js":
538
- /*!**************************************************************!*\
539
- !*** ./node_modules/core-js/library/modules/_descriptors.js ***!
540
- \**************************************************************/
541
- /*! no static exports found */
542
- /***/ (function(module, exports, __webpack_require__) {
543
-
544
- // Thank's IE8 for his funny defineProperty
545
- module.exports = !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/library/modules/_fails.js")(function () {
546
- return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
547
- });
548
-
549
-
550
- /***/ }),
551
-
552
- /***/ "./node_modules/core-js/library/modules/_dom-create.js":
553
- /*!*************************************************************!*\
554
- !*** ./node_modules/core-js/library/modules/_dom-create.js ***!
555
- \*************************************************************/
556
- /*! no static exports found */
557
- /***/ (function(module, exports, __webpack_require__) {
558
-
559
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/library/modules/_is-object.js");
560
- var document = __webpack_require__(/*! ./_global */ "./node_modules/core-js/library/modules/_global.js").document;
561
- // typeof document.createElement is 'object' in old IE
562
- var is = isObject(document) && isObject(document.createElement);
563
- module.exports = function (it) {
564
- return is ? document.createElement(it) : {};
565
- };
566
-
567
-
568
- /***/ }),
569
-
570
- /***/ "./node_modules/core-js/library/modules/_export.js":
571
- /*!*********************************************************!*\
572
- !*** ./node_modules/core-js/library/modules/_export.js ***!
573
- \*********************************************************/
574
- /*! no static exports found */
575
- /***/ (function(module, exports, __webpack_require__) {
576
-
577
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/library/modules/_global.js");
578
- var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/library/modules/_core.js");
579
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/library/modules/_ctx.js");
580
- var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/library/modules/_hide.js");
581
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/library/modules/_has.js");
582
- var PROTOTYPE = 'prototype';
583
-
584
- var $export = function (type, name, source) {
585
- var IS_FORCED = type & $export.F;
586
- var IS_GLOBAL = type & $export.G;
587
- var IS_STATIC = type & $export.S;
588
- var IS_PROTO = type & $export.P;
589
- var IS_BIND = type & $export.B;
590
- var IS_WRAP = type & $export.W;
591
- var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
592
- var expProto = exports[PROTOTYPE];
593
- var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
594
- var key, own, out;
595
- if (IS_GLOBAL) source = name;
596
- for (key in source) {
597
- // contains in native
598
- own = !IS_FORCED && target && target[key] !== undefined;
599
- if (own && has(exports, key)) continue;
600
- // export native or passed
601
- out = own ? target[key] : source[key];
602
- // prevent global pollution for namespaces
603
- exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
604
- // bind timers to global for call from export context
605
- : IS_BIND && own ? ctx(out, global)
606
- // wrap global constructors for prevent change them in library
607
- : IS_WRAP && target[key] == out ? (function (C) {
608
- var F = function (a, b, c) {
609
- if (this instanceof C) {
610
- switch (arguments.length) {
611
- case 0: return new C();
612
- case 1: return new C(a);
613
- case 2: return new C(a, b);
614
- } return new C(a, b, c);
615
- } return C.apply(this, arguments);
616
- };
617
- F[PROTOTYPE] = C[PROTOTYPE];
618
- return F;
619
- // make static versions for prototype methods
620
- })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
621
- // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
622
- if (IS_PROTO) {
623
- (exports.virtual || (exports.virtual = {}))[key] = out;
624
- // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
625
- if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
626
- }
627
- }
628
- };
629
- // type bitmap
630
- $export.F = 1; // forced
631
- $export.G = 2; // global
632
- $export.S = 4; // static
633
- $export.P = 8; // proto
634
- $export.B = 16; // bind
635
- $export.W = 32; // wrap
636
- $export.U = 64; // safe
637
- $export.R = 128; // real proto method for `library`
638
- module.exports = $export;
639
-
640
-
641
- /***/ }),
642
-
643
- /***/ "./node_modules/core-js/library/modules/_fails.js":
644
- /*!********************************************************!*\
645
- !*** ./node_modules/core-js/library/modules/_fails.js ***!
646
- \********************************************************/
647
- /*! no static exports found */
648
- /***/ (function(module, exports) {
649
-
650
- module.exports = function (exec) {
651
- try {
652
- return !!exec();
653
- } catch (e) {
654
- return true;
655
- }
656
- };
657
-
658
-
659
- /***/ }),
660
-
661
- /***/ "./node_modules/core-js/library/modules/_global.js":
662
- /*!*********************************************************!*\
663
- !*** ./node_modules/core-js/library/modules/_global.js ***!
664
- \*********************************************************/
665
- /*! no static exports found */
666
- /***/ (function(module, exports) {
667
-
668
- // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
669
- var global = module.exports = typeof window != 'undefined' && window.Math == Math
670
- ? window : typeof self != 'undefined' && self.Math == Math ? self
671
- // eslint-disable-next-line no-new-func
672
- : Function('return this')();
673
- if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
674
-
675
-
676
- /***/ }),
677
-
678
- /***/ "./node_modules/core-js/library/modules/_has.js":
679
- /*!******************************************************!*\
680
- !*** ./node_modules/core-js/library/modules/_has.js ***!
681
- \******************************************************/
682
- /*! no static exports found */
683
- /***/ (function(module, exports) {
684
-
685
- var hasOwnProperty = {}.hasOwnProperty;
686
- module.exports = function (it, key) {
687
- return hasOwnProperty.call(it, key);
688
- };
689
-
690
-
691
- /***/ }),
692
-
693
- /***/ "./node_modules/core-js/library/modules/_hide.js":
694
- /*!*******************************************************!*\
695
- !*** ./node_modules/core-js/library/modules/_hide.js ***!
696
- \*******************************************************/
697
- /*! no static exports found */
698
- /***/ (function(module, exports, __webpack_require__) {
699
-
700
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/library/modules/_object-dp.js");
701
- var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/library/modules/_property-desc.js");
702
- module.exports = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/library/modules/_descriptors.js") ? function (object, key, value) {
703
- return dP.f(object, key, createDesc(1, value));
704
- } : function (object, key, value) {
705
- object[key] = value;
706
- return object;
707
- };
708
-
709
-
710
- /***/ }),
711
-
712
- /***/ "./node_modules/core-js/library/modules/_ie8-dom-define.js":
713
- /*!*****************************************************************!*\
714
- !*** ./node_modules/core-js/library/modules/_ie8-dom-define.js ***!
715
- \*****************************************************************/
716
- /*! no static exports found */
717
- /***/ (function(module, exports, __webpack_require__) {
718
-
719
- module.exports = !__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/library/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/library/modules/_fails.js")(function () {
720
- return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/library/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
721
- });
722
-
723
-
724
- /***/ }),
725
-
726
- /***/ "./node_modules/core-js/library/modules/_is-object.js":
727
- /*!************************************************************!*\
728
- !*** ./node_modules/core-js/library/modules/_is-object.js ***!
729
- \************************************************************/
730
- /*! no static exports found */
731
- /***/ (function(module, exports) {
732
-
733
- module.exports = function (it) {
734
- return typeof it === 'object' ? it !== null : typeof it === 'function';
735
- };
736
-
737
-
738
- /***/ }),
739
-
740
- /***/ "./node_modules/core-js/library/modules/_object-dp.js":
741
- /*!************************************************************!*\
742
- !*** ./node_modules/core-js/library/modules/_object-dp.js ***!
743
- \************************************************************/
744
- /*! no static exports found */
745
- /***/ (function(module, exports, __webpack_require__) {
746
-
747
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/library/modules/_an-object.js");
748
- var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "./node_modules/core-js/library/modules/_ie8-dom-define.js");
749
- var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/library/modules/_to-primitive.js");
750
- var dP = Object.defineProperty;
751
-
752
- exports.f = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
753
- anObject(O);
754
- P = toPrimitive(P, true);
755
- anObject(Attributes);
756
- if (IE8_DOM_DEFINE) try {
757
- return dP(O, P, Attributes);
758
- } catch (e) { /* empty */ }
759
- if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
760
- if ('value' in Attributes) O[P] = Attributes.value;
761
- return O;
762
- };
763
-
764
-
765
- /***/ }),
766
-
767
- /***/ "./node_modules/core-js/library/modules/_property-desc.js":
768
- /*!****************************************************************!*\
769
- !*** ./node_modules/core-js/library/modules/_property-desc.js ***!
770
- \****************************************************************/
771
- /*! no static exports found */
772
- /***/ (function(module, exports) {
773
-
774
- module.exports = function (bitmap, value) {
775
- return {
776
- enumerable: !(bitmap & 1),
777
- configurable: !(bitmap & 2),
778
- writable: !(bitmap & 4),
779
- value: value
780
- };
781
- };
782
-
783
-
784
- /***/ }),
785
-
786
- /***/ "./node_modules/core-js/library/modules/_to-primitive.js":
787
- /*!***************************************************************!*\
788
- !*** ./node_modules/core-js/library/modules/_to-primitive.js ***!
789
- \***************************************************************/
790
- /*! no static exports found */
791
- /***/ (function(module, exports, __webpack_require__) {
792
-
793
- // 7.1.1 ToPrimitive(input [, PreferredType])
794
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/library/modules/_is-object.js");
795
- // instead of the ES6 spec version, we didn't implement @@toPrimitive case
796
- // and the second argument - flag - preferred type is a string
797
- module.exports = function (it, S) {
798
- if (!isObject(it)) return it;
799
- var fn, val;
800
- if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
801
- if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
802
- if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
803
- throw TypeError("Can't convert object to primitive value");
804
- };
805
-
806
-
807
- /***/ }),
808
-
809
- /***/ "./node_modules/core-js/library/modules/es7.global.js":
810
- /*!************************************************************!*\
811
- !*** ./node_modules/core-js/library/modules/es7.global.js ***!
812
- \************************************************************/
813
- /*! no static exports found */
814
- /***/ (function(module, exports, __webpack_require__) {
815
-
816
- // https://github.com/tc39/proposal-global
817
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/library/modules/_export.js");
818
-
819
- $export($export.G, { global: __webpack_require__(/*! ./_global */ "./node_modules/core-js/library/modules/_global.js") });
820
-
821
-
822
- /***/ }),
823
-
824
- /***/ "./node_modules/core-js/modules/_a-function.js":
825
- /*!*****************************************************!*\
826
- !*** ./node_modules/core-js/modules/_a-function.js ***!
827
- \*****************************************************/
828
- /*! no static exports found */
829
- /***/ (function(module, exports) {
830
-
831
- module.exports = function (it) {
832
- if (typeof it != 'function') throw TypeError(it + ' is not a function!');
833
- return it;
834
- };
835
-
836
-
837
- /***/ }),
838
-
839
- /***/ "./node_modules/core-js/modules/_a-number-value.js":
840
- /*!*********************************************************!*\
841
- !*** ./node_modules/core-js/modules/_a-number-value.js ***!
842
- \*********************************************************/
843
- /*! no static exports found */
844
- /***/ (function(module, exports, __webpack_require__) {
845
-
846
- var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
847
- module.exports = function (it, msg) {
848
- if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);
849
- return +it;
850
- };
851
-
852
-
853
- /***/ }),
854
-
855
- /***/ "./node_modules/core-js/modules/_add-to-unscopables.js":
856
- /*!*************************************************************!*\
857
- !*** ./node_modules/core-js/modules/_add-to-unscopables.js ***!
858
- \*************************************************************/
859
- /*! no static exports found */
860
- /***/ (function(module, exports, __webpack_require__) {
861
-
862
- // 22.1.3.31 Array.prototype[@@unscopables]
863
- var UNSCOPABLES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('unscopables');
864
- var ArrayProto = Array.prototype;
865
- if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")(ArrayProto, UNSCOPABLES, {});
866
- module.exports = function (key) {
867
- ArrayProto[UNSCOPABLES][key] = true;
868
- };
869
-
870
-
871
- /***/ }),
872
-
873
- /***/ "./node_modules/core-js/modules/_advance-string-index.js":
874
- /*!***************************************************************!*\
875
- !*** ./node_modules/core-js/modules/_advance-string-index.js ***!
876
- \***************************************************************/
877
- /*! no static exports found */
878
- /***/ (function(module, exports, __webpack_require__) {
879
-
880
- "use strict";
881
-
882
- var at = __webpack_require__(/*! ./_string-at */ "./node_modules/core-js/modules/_string-at.js")(true);
883
-
884
- // `AdvanceStringIndex` abstract operation
885
- // https://tc39.github.io/ecma262/#sec-advancestringindex
886
- module.exports = function (S, index, unicode) {
887
- return index + (unicode ? at(S, index).length : 1);
888
- };
889
-
890
-
891
- /***/ }),
892
-
893
- /***/ "./node_modules/core-js/modules/_an-instance.js":
894
- /*!******************************************************!*\
895
- !*** ./node_modules/core-js/modules/_an-instance.js ***!
896
- \******************************************************/
897
- /*! no static exports found */
898
- /***/ (function(module, exports) {
899
-
900
- module.exports = function (it, Constructor, name, forbiddenField) {
901
- if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
902
- throw TypeError(name + ': incorrect invocation!');
903
- } return it;
904
- };
905
-
906
-
907
- /***/ }),
908
-
909
- /***/ "./node_modules/core-js/modules/_an-object.js":
910
- /*!****************************************************!*\
911
- !*** ./node_modules/core-js/modules/_an-object.js ***!
912
- \****************************************************/
913
- /*! no static exports found */
914
- /***/ (function(module, exports, __webpack_require__) {
915
-
916
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
917
- module.exports = function (it) {
918
- if (!isObject(it)) throw TypeError(it + ' is not an object!');
919
- return it;
920
- };
921
-
922
-
923
- /***/ }),
924
-
925
- /***/ "./node_modules/core-js/modules/_array-copy-within.js":
926
- /*!************************************************************!*\
927
- !*** ./node_modules/core-js/modules/_array-copy-within.js ***!
928
- \************************************************************/
929
- /*! no static exports found */
930
- /***/ (function(module, exports, __webpack_require__) {
931
-
932
- "use strict";
933
- // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
934
-
935
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
936
- var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
937
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
938
-
939
- module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
940
- var O = toObject(this);
941
- var len = toLength(O.length);
942
- var to = toAbsoluteIndex(target, len);
943
- var from = toAbsoluteIndex(start, len);
944
- var end = arguments.length > 2 ? arguments[2] : undefined;
945
- var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
946
- var inc = 1;
947
- if (from < to && to < from + count) {
948
- inc = -1;
949
- from += count - 1;
950
- to += count - 1;
951
- }
952
- while (count-- > 0) {
953
- if (from in O) O[to] = O[from];
954
- else delete O[to];
955
- to += inc;
956
- from += inc;
957
- } return O;
958
- };
959
-
960
-
961
- /***/ }),
962
-
963
- /***/ "./node_modules/core-js/modules/_array-fill.js":
964
- /*!*****************************************************!*\
965
- !*** ./node_modules/core-js/modules/_array-fill.js ***!
966
- \*****************************************************/
967
- /*! no static exports found */
968
- /***/ (function(module, exports, __webpack_require__) {
969
-
970
- "use strict";
971
- // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
972
-
973
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
974
- var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
975
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
976
- module.exports = function fill(value /* , start = 0, end = @length */) {
977
- var O = toObject(this);
978
- var length = toLength(O.length);
979
- var aLen = arguments.length;
980
- var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);
981
- var end = aLen > 2 ? arguments[2] : undefined;
982
- var endPos = end === undefined ? length : toAbsoluteIndex(end, length);
983
- while (endPos > index) O[index++] = value;
984
- return O;
985
- };
986
-
987
-
988
- /***/ }),
989
-
990
- /***/ "./node_modules/core-js/modules/_array-includes.js":
991
- /*!*********************************************************!*\
992
- !*** ./node_modules/core-js/modules/_array-includes.js ***!
993
- \*********************************************************/
994
- /*! no static exports found */
995
- /***/ (function(module, exports, __webpack_require__) {
996
-
997
- // false -> Array#indexOf
998
- // true -> Array#includes
999
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
1000
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
1001
- var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
1002
- module.exports = function (IS_INCLUDES) {
1003
- return function ($this, el, fromIndex) {
1004
- var O = toIObject($this);
1005
- var length = toLength(O.length);
1006
- var index = toAbsoluteIndex(fromIndex, length);
1007
- var value;
1008
- // Array#includes uses SameValueZero equality algorithm
1009
- // eslint-disable-next-line no-self-compare
1010
- if (IS_INCLUDES && el != el) while (length > index) {
1011
- value = O[index++];
1012
- // eslint-disable-next-line no-self-compare
1013
- if (value != value) return true;
1014
- // Array#indexOf ignores holes, Array#includes - not
1015
- } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
1016
- if (O[index] === el) return IS_INCLUDES || index || 0;
1017
- } return !IS_INCLUDES && -1;
1018
- };
1019
- };
1020
-
1021
-
1022
- /***/ }),
1023
-
1024
- /***/ "./node_modules/core-js/modules/_array-methods.js":
1025
- /*!********************************************************!*\
1026
- !*** ./node_modules/core-js/modules/_array-methods.js ***!
1027
- \********************************************************/
1028
- /*! no static exports found */
1029
- /***/ (function(module, exports, __webpack_require__) {
1030
-
1031
- // 0 -> Array#forEach
1032
- // 1 -> Array#map
1033
- // 2 -> Array#filter
1034
- // 3 -> Array#some
1035
- // 4 -> Array#every
1036
- // 5 -> Array#find
1037
- // 6 -> Array#findIndex
1038
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
1039
- var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
1040
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
1041
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
1042
- var asc = __webpack_require__(/*! ./_array-species-create */ "./node_modules/core-js/modules/_array-species-create.js");
1043
- module.exports = function (TYPE, $create) {
1044
- var IS_MAP = TYPE == 1;
1045
- var IS_FILTER = TYPE == 2;
1046
- var IS_SOME = TYPE == 3;
1047
- var IS_EVERY = TYPE == 4;
1048
- var IS_FIND_INDEX = TYPE == 6;
1049
- var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
1050
- var create = $create || asc;
1051
- return function ($this, callbackfn, that) {
1052
- var O = toObject($this);
1053
- var self = IObject(O);
1054
- var f = ctx(callbackfn, that, 3);
1055
- var length = toLength(self.length);
1056
- var index = 0;
1057
- var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
1058
- var val, res;
1059
- for (;length > index; index++) if (NO_HOLES || index in self) {
1060
- val = self[index];
1061
- res = f(val, index, O);
1062
- if (TYPE) {
1063
- if (IS_MAP) result[index] = res; // map
1064
- else if (res) switch (TYPE) {
1065
- case 3: return true; // some
1066
- case 5: return val; // find
1067
- case 6: return index; // findIndex
1068
- case 2: result.push(val); // filter
1069
- } else if (IS_EVERY) return false; // every
1070
- }
1071
- }
1072
- return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
1073
- };
1074
- };
1075
-
1076
-
1077
- /***/ }),
1078
-
1079
- /***/ "./node_modules/core-js/modules/_array-reduce.js":
1080
- /*!*******************************************************!*\
1081
- !*** ./node_modules/core-js/modules/_array-reduce.js ***!
1082
- \*******************************************************/
1083
- /*! no static exports found */
1084
- /***/ (function(module, exports, __webpack_require__) {
1085
-
1086
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
1087
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
1088
- var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
1089
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
1090
-
1091
- module.exports = function (that, callbackfn, aLen, memo, isRight) {
1092
- aFunction(callbackfn);
1093
- var O = toObject(that);
1094
- var self = IObject(O);
1095
- var length = toLength(O.length);
1096
- var index = isRight ? length - 1 : 0;
1097
- var i = isRight ? -1 : 1;
1098
- if (aLen < 2) for (;;) {
1099
- if (index in self) {
1100
- memo = self[index];
1101
- index += i;
1102
- break;
1103
- }
1104
- index += i;
1105
- if (isRight ? index < 0 : length <= index) {
1106
- throw TypeError('Reduce of empty array with no initial value');
1107
- }
1108
- }
1109
- for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {
1110
- memo = callbackfn(memo, self[index], index, O);
1111
- }
1112
- return memo;
1113
- };
1114
-
1115
-
1116
- /***/ }),
1117
-
1118
- /***/ "./node_modules/core-js/modules/_array-species-constructor.js":
1119
- /*!********************************************************************!*\
1120
- !*** ./node_modules/core-js/modules/_array-species-constructor.js ***!
1121
- \********************************************************************/
1122
- /*! no static exports found */
1123
- /***/ (function(module, exports, __webpack_require__) {
1124
-
1125
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1126
- var isArray = __webpack_require__(/*! ./_is-array */ "./node_modules/core-js/modules/_is-array.js");
1127
- var SPECIES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species');
1128
-
1129
- module.exports = function (original) {
1130
- var C;
1131
- if (isArray(original)) {
1132
- C = original.constructor;
1133
- // cross-realm fallback
1134
- if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
1135
- if (isObject(C)) {
1136
- C = C[SPECIES];
1137
- if (C === null) C = undefined;
1138
- }
1139
- } return C === undefined ? Array : C;
1140
- };
1141
-
1142
-
1143
- /***/ }),
1144
-
1145
- /***/ "./node_modules/core-js/modules/_array-species-create.js":
1146
- /*!***************************************************************!*\
1147
- !*** ./node_modules/core-js/modules/_array-species-create.js ***!
1148
- \***************************************************************/
1149
- /*! no static exports found */
1150
- /***/ (function(module, exports, __webpack_require__) {
1151
-
1152
- // 9.4.2.3 ArraySpeciesCreate(originalArray, length)
1153
- var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "./node_modules/core-js/modules/_array-species-constructor.js");
1154
-
1155
- module.exports = function (original, length) {
1156
- return new (speciesConstructor(original))(length);
1157
- };
1158
-
1159
-
1160
- /***/ }),
1161
-
1162
- /***/ "./node_modules/core-js/modules/_bind.js":
1163
- /*!***********************************************!*\
1164
- !*** ./node_modules/core-js/modules/_bind.js ***!
1165
- \***********************************************/
1166
- /*! no static exports found */
1167
- /***/ (function(module, exports, __webpack_require__) {
1168
-
1169
- "use strict";
1170
-
1171
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
1172
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1173
- var invoke = __webpack_require__(/*! ./_invoke */ "./node_modules/core-js/modules/_invoke.js");
1174
- var arraySlice = [].slice;
1175
- var factories = {};
1176
-
1177
- var construct = function (F, len, args) {
1178
- if (!(len in factories)) {
1179
- for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
1180
- // eslint-disable-next-line no-new-func
1181
- factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
1182
- } return factories[len](F, args);
1183
- };
1184
-
1185
- module.exports = Function.bind || function bind(that /* , ...args */) {
1186
- var fn = aFunction(this);
1187
- var partArgs = arraySlice.call(arguments, 1);
1188
- var bound = function (/* args... */) {
1189
- var args = partArgs.concat(arraySlice.call(arguments));
1190
- return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
1191
- };
1192
- if (isObject(fn.prototype)) bound.prototype = fn.prototype;
1193
- return bound;
1194
- };
1195
-
1196
-
1197
- /***/ }),
1198
-
1199
- /***/ "./node_modules/core-js/modules/_classof.js":
1200
- /*!**************************************************!*\
1201
- !*** ./node_modules/core-js/modules/_classof.js ***!
1202
- \**************************************************/
1203
- /*! no static exports found */
1204
- /***/ (function(module, exports, __webpack_require__) {
1205
-
1206
- // getting tag from 19.1.3.6 Object.prototype.toString()
1207
- var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
1208
- var TAG = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toStringTag');
1209
- // ES3 wrong here
1210
- var ARG = cof(function () { return arguments; }()) == 'Arguments';
1211
-
1212
- // fallback for IE11 Script Access Denied error
1213
- var tryGet = function (it, key) {
1214
- try {
1215
- return it[key];
1216
- } catch (e) { /* empty */ }
1217
- };
1218
-
1219
- module.exports = function (it) {
1220
- var O, T, B;
1221
- return it === undefined ? 'Undefined' : it === null ? 'Null'
1222
- // @@toStringTag case
1223
- : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
1224
- // builtinTag case
1225
- : ARG ? cof(O)
1226
- // ES3 arguments fallback
1227
- : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
1228
- };
1229
-
1230
-
1231
- /***/ }),
1232
-
1233
- /***/ "./node_modules/core-js/modules/_cof.js":
1234
- /*!**********************************************!*\
1235
- !*** ./node_modules/core-js/modules/_cof.js ***!
1236
- \**********************************************/
1237
- /*! no static exports found */
1238
- /***/ (function(module, exports) {
1239
-
1240
- var toString = {}.toString;
1241
-
1242
- module.exports = function (it) {
1243
- return toString.call(it).slice(8, -1);
1244
- };
1245
-
1246
-
1247
- /***/ }),
1248
-
1249
- /***/ "./node_modules/core-js/modules/_collection-strong.js":
1250
- /*!************************************************************!*\
1251
- !*** ./node_modules/core-js/modules/_collection-strong.js ***!
1252
- \************************************************************/
1253
- /*! no static exports found */
1254
- /***/ (function(module, exports, __webpack_require__) {
1255
-
1256
- "use strict";
1257
-
1258
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
1259
- var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
1260
- var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
1261
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
1262
- var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
1263
- var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
1264
- var $iterDefine = __webpack_require__(/*! ./_iter-define */ "./node_modules/core-js/modules/_iter-define.js");
1265
- var step = __webpack_require__(/*! ./_iter-step */ "./node_modules/core-js/modules/_iter-step.js");
1266
- var setSpecies = __webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js");
1267
- var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
1268
- var fastKey = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").fastKey;
1269
- var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
1270
- var SIZE = DESCRIPTORS ? '_s' : 'size';
1271
-
1272
- var getEntry = function (that, key) {
1273
- // fast case
1274
- var index = fastKey(key);
1275
- var entry;
1276
- if (index !== 'F') return that._i[index];
1277
- // frozen object case
1278
- for (entry = that._f; entry; entry = entry.n) {
1279
- if (entry.k == key) return entry;
1280
- }
1281
- };
1282
-
1283
- module.exports = {
1284
- getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
1285
- var C = wrapper(function (that, iterable) {
1286
- anInstance(that, C, NAME, '_i');
1287
- that._t = NAME; // collection type
1288
- that._i = create(null); // index
1289
- that._f = undefined; // first entry
1290
- that._l = undefined; // last entry
1291
- that[SIZE] = 0; // size
1292
- if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
1293
- });
1294
- redefineAll(C.prototype, {
1295
- // 23.1.3.1 Map.prototype.clear()
1296
- // 23.2.3.2 Set.prototype.clear()
1297
- clear: function clear() {
1298
- for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
1299
- entry.r = true;
1300
- if (entry.p) entry.p = entry.p.n = undefined;
1301
- delete data[entry.i];
1302
- }
1303
- that._f = that._l = undefined;
1304
- that[SIZE] = 0;
1305
- },
1306
- // 23.1.3.3 Map.prototype.delete(key)
1307
- // 23.2.3.4 Set.prototype.delete(value)
1308
- 'delete': function (key) {
1309
- var that = validate(this, NAME);
1310
- var entry = getEntry(that, key);
1311
- if (entry) {
1312
- var next = entry.n;
1313
- var prev = entry.p;
1314
- delete that._i[entry.i];
1315
- entry.r = true;
1316
- if (prev) prev.n = next;
1317
- if (next) next.p = prev;
1318
- if (that._f == entry) that._f = next;
1319
- if (that._l == entry) that._l = prev;
1320
- that[SIZE]--;
1321
- } return !!entry;
1322
- },
1323
- // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
1324
- // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
1325
- forEach: function forEach(callbackfn /* , that = undefined */) {
1326
- validate(this, NAME);
1327
- var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
1328
- var entry;
1329
- while (entry = entry ? entry.n : this._f) {
1330
- f(entry.v, entry.k, this);
1331
- // revert to the last existing entry
1332
- while (entry && entry.r) entry = entry.p;
1333
- }
1334
- },
1335
- // 23.1.3.7 Map.prototype.has(key)
1336
- // 23.2.3.7 Set.prototype.has(value)
1337
- has: function has(key) {
1338
- return !!getEntry(validate(this, NAME), key);
1339
- }
1340
- });
1341
- if (DESCRIPTORS) dP(C.prototype, 'size', {
1342
- get: function () {
1343
- return validate(this, NAME)[SIZE];
1344
- }
1345
- });
1346
- return C;
1347
- },
1348
- def: function (that, key, value) {
1349
- var entry = getEntry(that, key);
1350
- var prev, index;
1351
- // change existing entry
1352
- if (entry) {
1353
- entry.v = value;
1354
- // create new entry
1355
- } else {
1356
- that._l = entry = {
1357
- i: index = fastKey(key, true), // <- index
1358
- k: key, // <- key
1359
- v: value, // <- value
1360
- p: prev = that._l, // <- previous entry
1361
- n: undefined, // <- next entry
1362
- r: false // <- removed
1363
- };
1364
- if (!that._f) that._f = entry;
1365
- if (prev) prev.n = entry;
1366
- that[SIZE]++;
1367
- // add to index
1368
- if (index !== 'F') that._i[index] = entry;
1369
- } return that;
1370
- },
1371
- getEntry: getEntry,
1372
- setStrong: function (C, NAME, IS_MAP) {
1373
- // add .keys, .values, .entries, [@@iterator]
1374
- // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
1375
- $iterDefine(C, NAME, function (iterated, kind) {
1376
- this._t = validate(iterated, NAME); // target
1377
- this._k = kind; // kind
1378
- this._l = undefined; // previous
1379
- }, function () {
1380
- var that = this;
1381
- var kind = that._k;
1382
- var entry = that._l;
1383
- // revert to the last existing entry
1384
- while (entry && entry.r) entry = entry.p;
1385
- // get next entry
1386
- if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
1387
- // or finish the iteration
1388
- that._t = undefined;
1389
- return step(1);
1390
- }
1391
- // return step by kind
1392
- if (kind == 'keys') return step(0, entry.k);
1393
- if (kind == 'values') return step(0, entry.v);
1394
- return step(0, [entry.k, entry.v]);
1395
- }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
1396
-
1397
- // add [@@species], 23.1.2.2, 23.2.2.2
1398
- setSpecies(NAME);
1399
- }
1400
- };
1401
-
1402
-
1403
- /***/ }),
1404
-
1405
- /***/ "./node_modules/core-js/modules/_collection-weak.js":
1406
- /*!**********************************************************!*\
1407
- !*** ./node_modules/core-js/modules/_collection-weak.js ***!
1408
- \**********************************************************/
1409
- /*! no static exports found */
1410
- /***/ (function(module, exports, __webpack_require__) {
1411
-
1412
- "use strict";
1413
-
1414
- var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
1415
- var getWeak = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").getWeak;
1416
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
1417
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1418
- var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
1419
- var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
1420
- var createArrayMethod = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js");
1421
- var $has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
1422
- var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
1423
- var arrayFind = createArrayMethod(5);
1424
- var arrayFindIndex = createArrayMethod(6);
1425
- var id = 0;
1426
-
1427
- // fallback for uncaught frozen keys
1428
- var uncaughtFrozenStore = function (that) {
1429
- return that._l || (that._l = new UncaughtFrozenStore());
1430
- };
1431
- var UncaughtFrozenStore = function () {
1432
- this.a = [];
1433
- };
1434
- var findUncaughtFrozen = function (store, key) {
1435
- return arrayFind(store.a, function (it) {
1436
- return it[0] === key;
1437
- });
1438
- };
1439
- UncaughtFrozenStore.prototype = {
1440
- get: function (key) {
1441
- var entry = findUncaughtFrozen(this, key);
1442
- if (entry) return entry[1];
1443
- },
1444
- has: function (key) {
1445
- return !!findUncaughtFrozen(this, key);
1446
- },
1447
- set: function (key, value) {
1448
- var entry = findUncaughtFrozen(this, key);
1449
- if (entry) entry[1] = value;
1450
- else this.a.push([key, value]);
1451
- },
1452
- 'delete': function (key) {
1453
- var index = arrayFindIndex(this.a, function (it) {
1454
- return it[0] === key;
1455
- });
1456
- if (~index) this.a.splice(index, 1);
1457
- return !!~index;
1458
- }
1459
- };
1460
-
1461
- module.exports = {
1462
- getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
1463
- var C = wrapper(function (that, iterable) {
1464
- anInstance(that, C, NAME, '_i');
1465
- that._t = NAME; // collection type
1466
- that._i = id++; // collection id
1467
- that._l = undefined; // leak store for uncaught frozen objects
1468
- if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
1469
- });
1470
- redefineAll(C.prototype, {
1471
- // 23.3.3.2 WeakMap.prototype.delete(key)
1472
- // 23.4.3.3 WeakSet.prototype.delete(value)
1473
- 'delete': function (key) {
1474
- if (!isObject(key)) return false;
1475
- var data = getWeak(key);
1476
- if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
1477
- return data && $has(data, this._i) && delete data[this._i];
1478
- },
1479
- // 23.3.3.4 WeakMap.prototype.has(key)
1480
- // 23.4.3.4 WeakSet.prototype.has(value)
1481
- has: function has(key) {
1482
- if (!isObject(key)) return false;
1483
- var data = getWeak(key);
1484
- if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
1485
- return data && $has(data, this._i);
1486
- }
1487
- });
1488
- return C;
1489
- },
1490
- def: function (that, key, value) {
1491
- var data = getWeak(anObject(key), true);
1492
- if (data === true) uncaughtFrozenStore(that).set(key, value);
1493
- else data[that._i] = value;
1494
- return that;
1495
- },
1496
- ufstore: uncaughtFrozenStore
1497
- };
1498
-
1499
-
1500
- /***/ }),
1501
-
1502
- /***/ "./node_modules/core-js/modules/_collection.js":
1503
- /*!*****************************************************!*\
1504
- !*** ./node_modules/core-js/modules/_collection.js ***!
1505
- \*****************************************************/
1506
- /*! no static exports found */
1507
- /***/ (function(module, exports, __webpack_require__) {
1508
-
1509
- "use strict";
1510
-
1511
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
1512
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
1513
- var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
1514
- var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
1515
- var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js");
1516
- var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
1517
- var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
1518
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1519
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
1520
- var $iterDetect = __webpack_require__(/*! ./_iter-detect */ "./node_modules/core-js/modules/_iter-detect.js");
1521
- var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
1522
- var inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ "./node_modules/core-js/modules/_inherit-if-required.js");
1523
-
1524
- module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
1525
- var Base = global[NAME];
1526
- var C = Base;
1527
- var ADDER = IS_MAP ? 'set' : 'add';
1528
- var proto = C && C.prototype;
1529
- var O = {};
1530
- var fixMethod = function (KEY) {
1531
- var fn = proto[KEY];
1532
- redefine(proto, KEY,
1533
- KEY == 'delete' ? function (a) {
1534
- return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
1535
- } : KEY == 'has' ? function has(a) {
1536
- return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
1537
- } : KEY == 'get' ? function get(a) {
1538
- return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
1539
- } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }
1540
- : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }
1541
- );
1542
- };
1543
- if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
1544
- new C().entries().next();
1545
- }))) {
1546
- // create collection constructor
1547
- C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
1548
- redefineAll(C.prototype, methods);
1549
- meta.NEED = true;
1550
- } else {
1551
- var instance = new C();
1552
- // early implementations not supports chaining
1553
- var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
1554
- // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
1555
- var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
1556
- // most early implementations doesn't supports iterables, most modern - not close it correctly
1557
- var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new
1558
- // for early implementations -0 and +0 not the same
1559
- var BUGGY_ZERO = !IS_WEAK && fails(function () {
1560
- // V8 ~ Chromium 42- fails only with 5+ elements
1561
- var $instance = new C();
1562
- var index = 5;
1563
- while (index--) $instance[ADDER](index, index);
1564
- return !$instance.has(-0);
1565
- });
1566
- if (!ACCEPT_ITERABLES) {
1567
- C = wrapper(function (target, iterable) {
1568
- anInstance(target, C, NAME);
1569
- var that = inheritIfRequired(new Base(), target, C);
1570
- if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
1571
- return that;
1572
- });
1573
- C.prototype = proto;
1574
- proto.constructor = C;
1575
- }
1576
- if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
1577
- fixMethod('delete');
1578
- fixMethod('has');
1579
- IS_MAP && fixMethod('get');
1580
- }
1581
- if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
1582
- // weak collections should not contains .clear method
1583
- if (IS_WEAK && proto.clear) delete proto.clear;
1584
- }
1585
-
1586
- setToStringTag(C, NAME);
1587
-
1588
- O[NAME] = C;
1589
- $export($export.G + $export.W + $export.F * (C != Base), O);
1590
-
1591
- if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
1592
-
1593
- return C;
1594
- };
1595
-
1596
-
1597
- /***/ }),
1598
-
1599
- /***/ "./node_modules/core-js/modules/_core.js":
1600
- /*!***********************************************!*\
1601
- !*** ./node_modules/core-js/modules/_core.js ***!
1602
- \***********************************************/
1603
- /*! no static exports found */
1604
- /***/ (function(module, exports) {
1605
-
1606
- var core = module.exports = { version: '2.6.12' };
1607
- if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
1608
-
1609
-
1610
- /***/ }),
1611
-
1612
- /***/ "./node_modules/core-js/modules/_create-property.js":
1613
- /*!**********************************************************!*\
1614
- !*** ./node_modules/core-js/modules/_create-property.js ***!
1615
- \**********************************************************/
1616
- /*! no static exports found */
1617
- /***/ (function(module, exports, __webpack_require__) {
1618
-
1619
- "use strict";
1620
-
1621
- var $defineProperty = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
1622
- var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
1623
-
1624
- module.exports = function (object, index, value) {
1625
- if (index in object) $defineProperty.f(object, index, createDesc(0, value));
1626
- else object[index] = value;
1627
- };
1628
-
1629
-
1630
- /***/ }),
1631
-
1632
- /***/ "./node_modules/core-js/modules/_ctx.js":
1633
- /*!**********************************************!*\
1634
- !*** ./node_modules/core-js/modules/_ctx.js ***!
1635
- \**********************************************/
1636
- /*! no static exports found */
1637
- /***/ (function(module, exports, __webpack_require__) {
1638
-
1639
- // optional / simple context binding
1640
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
1641
- module.exports = function (fn, that, length) {
1642
- aFunction(fn);
1643
- if (that === undefined) return fn;
1644
- switch (length) {
1645
- case 1: return function (a) {
1646
- return fn.call(that, a);
1647
- };
1648
- case 2: return function (a, b) {
1649
- return fn.call(that, a, b);
1650
- };
1651
- case 3: return function (a, b, c) {
1652
- return fn.call(that, a, b, c);
1653
- };
1654
- }
1655
- return function (/* ...args */) {
1656
- return fn.apply(that, arguments);
1657
- };
1658
- };
1659
-
1660
-
1661
- /***/ }),
1662
-
1663
- /***/ "./node_modules/core-js/modules/_date-to-iso-string.js":
1664
- /*!*************************************************************!*\
1665
- !*** ./node_modules/core-js/modules/_date-to-iso-string.js ***!
1666
- \*************************************************************/
1667
- /*! no static exports found */
1668
- /***/ (function(module, exports, __webpack_require__) {
1669
-
1670
- "use strict";
1671
-
1672
- // 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
1673
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
1674
- var getTime = Date.prototype.getTime;
1675
- var $toISOString = Date.prototype.toISOString;
1676
-
1677
- var lz = function (num) {
1678
- return num > 9 ? num : '0' + num;
1679
- };
1680
-
1681
- // PhantomJS / old WebKit has a broken implementations
1682
- module.exports = (fails(function () {
1683
- return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
1684
- }) || !fails(function () {
1685
- $toISOString.call(new Date(NaN));
1686
- })) ? function toISOString() {
1687
- if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');
1688
- var d = this;
1689
- var y = d.getUTCFullYear();
1690
- var m = d.getUTCMilliseconds();
1691
- var s = y < 0 ? '-' : y > 9999 ? '+' : '';
1692
- return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
1693
- '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
1694
- 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
1695
- ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
1696
- } : $toISOString;
1697
-
1698
-
1699
- /***/ }),
1700
-
1701
- /***/ "./node_modules/core-js/modules/_date-to-primitive.js":
1702
- /*!************************************************************!*\
1703
- !*** ./node_modules/core-js/modules/_date-to-primitive.js ***!
1704
- \************************************************************/
1705
- /*! no static exports found */
1706
- /***/ (function(module, exports, __webpack_require__) {
1707
-
1708
- "use strict";
1709
-
1710
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
1711
- var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
1712
- var NUMBER = 'number';
1713
-
1714
- module.exports = function (hint) {
1715
- if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');
1716
- return toPrimitive(anObject(this), hint != NUMBER);
1717
- };
1718
-
1719
-
1720
- /***/ }),
1721
-
1722
- /***/ "./node_modules/core-js/modules/_defined.js":
1723
- /*!**************************************************!*\
1724
- !*** ./node_modules/core-js/modules/_defined.js ***!
1725
- \**************************************************/
1726
- /*! no static exports found */
1727
- /***/ (function(module, exports) {
1728
-
1729
- // 7.2.1 RequireObjectCoercible(argument)
1730
- module.exports = function (it) {
1731
- if (it == undefined) throw TypeError("Can't call method on " + it);
1732
- return it;
1733
- };
1734
-
1735
-
1736
- /***/ }),
1737
-
1738
- /***/ "./node_modules/core-js/modules/_descriptors.js":
1739
- /*!******************************************************!*\
1740
- !*** ./node_modules/core-js/modules/_descriptors.js ***!
1741
- \******************************************************/
1742
- /*! no static exports found */
1743
- /***/ (function(module, exports, __webpack_require__) {
1744
-
1745
- // Thank's IE8 for his funny defineProperty
1746
- module.exports = !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
1747
- return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
1748
- });
1749
-
1750
-
1751
- /***/ }),
1752
-
1753
- /***/ "./node_modules/core-js/modules/_dom-create.js":
1754
- /*!*****************************************************!*\
1755
- !*** ./node_modules/core-js/modules/_dom-create.js ***!
1756
- \*****************************************************/
1757
- /*! no static exports found */
1758
- /***/ (function(module, exports, __webpack_require__) {
1759
-
1760
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
1761
- var document = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").document;
1762
- // typeof document.createElement is 'object' in old IE
1763
- var is = isObject(document) && isObject(document.createElement);
1764
- module.exports = function (it) {
1765
- return is ? document.createElement(it) : {};
1766
- };
1767
-
1768
-
1769
- /***/ }),
1770
-
1771
- /***/ "./node_modules/core-js/modules/_enum-bug-keys.js":
1772
- /*!********************************************************!*\
1773
- !*** ./node_modules/core-js/modules/_enum-bug-keys.js ***!
1774
- \********************************************************/
1775
- /*! no static exports found */
1776
- /***/ (function(module, exports) {
1777
-
1778
- // IE 8- don't enum bug keys
1779
- module.exports = (
1780
- 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
1781
- ).split(',');
1782
-
1783
-
1784
- /***/ }),
1785
-
1786
- /***/ "./node_modules/core-js/modules/_enum-keys.js":
1787
- /*!****************************************************!*\
1788
- !*** ./node_modules/core-js/modules/_enum-keys.js ***!
1789
- \****************************************************/
1790
- /*! no static exports found */
1791
- /***/ (function(module, exports, __webpack_require__) {
1792
-
1793
- // all enumerable object keys, includes symbols
1794
- var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
1795
- var gOPS = __webpack_require__(/*! ./_object-gops */ "./node_modules/core-js/modules/_object-gops.js");
1796
- var pIE = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js");
1797
- module.exports = function (it) {
1798
- var result = getKeys(it);
1799
- var getSymbols = gOPS.f;
1800
- if (getSymbols) {
1801
- var symbols = getSymbols(it);
1802
- var isEnum = pIE.f;
1803
- var i = 0;
1804
- var key;
1805
- while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
1806
- } return result;
1807
- };
1808
-
1809
-
1810
- /***/ }),
1811
-
1812
- /***/ "./node_modules/core-js/modules/_export.js":
1813
- /*!*************************************************!*\
1814
- !*** ./node_modules/core-js/modules/_export.js ***!
1815
- \*************************************************/
1816
- /*! no static exports found */
1817
- /***/ (function(module, exports, __webpack_require__) {
1818
-
1819
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
1820
- var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
1821
- var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
1822
- var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
1823
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
1824
- var PROTOTYPE = 'prototype';
1825
-
1826
- var $export = function (type, name, source) {
1827
- var IS_FORCED = type & $export.F;
1828
- var IS_GLOBAL = type & $export.G;
1829
- var IS_STATIC = type & $export.S;
1830
- var IS_PROTO = type & $export.P;
1831
- var IS_BIND = type & $export.B;
1832
- var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
1833
- var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
1834
- var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
1835
- var key, own, out, exp;
1836
- if (IS_GLOBAL) source = name;
1837
- for (key in source) {
1838
- // contains in native
1839
- own = !IS_FORCED && target && target[key] !== undefined;
1840
- // export native or passed
1841
- out = (own ? target : source)[key];
1842
- // bind timers to global for call from export context
1843
- exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
1844
- // extend global
1845
- if (target) redefine(target, key, out, type & $export.U);
1846
- // export
1847
- if (exports[key] != out) hide(exports, key, exp);
1848
- if (IS_PROTO && expProto[key] != out) expProto[key] = out;
1849
- }
1850
- };
1851
- global.core = core;
1852
- // type bitmap
1853
- $export.F = 1; // forced
1854
- $export.G = 2; // global
1855
- $export.S = 4; // static
1856
- $export.P = 8; // proto
1857
- $export.B = 16; // bind
1858
- $export.W = 32; // wrap
1859
- $export.U = 64; // safe
1860
- $export.R = 128; // real proto method for `library`
1861
- module.exports = $export;
1862
-
1863
-
1864
- /***/ }),
1865
-
1866
- /***/ "./node_modules/core-js/modules/_fails-is-regexp.js":
1867
- /*!**********************************************************!*\
1868
- !*** ./node_modules/core-js/modules/_fails-is-regexp.js ***!
1869
- \**********************************************************/
1870
- /*! no static exports found */
1871
- /***/ (function(module, exports, __webpack_require__) {
1872
-
1873
- var MATCH = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('match');
1874
- module.exports = function (KEY) {
1875
- var re = /./;
1876
- try {
1877
- '/./'[KEY](re);
1878
- } catch (e) {
1879
- try {
1880
- re[MATCH] = false;
1881
- return !'/./'[KEY](re);
1882
- } catch (f) { /* empty */ }
1883
- } return true;
1884
- };
1885
-
1886
-
1887
- /***/ }),
1888
-
1889
- /***/ "./node_modules/core-js/modules/_fails.js":
1890
- /*!************************************************!*\
1891
- !*** ./node_modules/core-js/modules/_fails.js ***!
1892
- \************************************************/
1893
- /*! no static exports found */
1894
- /***/ (function(module, exports) {
1895
-
1896
- module.exports = function (exec) {
1897
- try {
1898
- return !!exec();
1899
- } catch (e) {
1900
- return true;
1901
- }
1902
- };
1903
-
1904
-
1905
- /***/ }),
1906
-
1907
- /***/ "./node_modules/core-js/modules/_fix-re-wks.js":
1908
- /*!*****************************************************!*\
1909
- !*** ./node_modules/core-js/modules/_fix-re-wks.js ***!
1910
- \*****************************************************/
1911
- /*! no static exports found */
1912
- /***/ (function(module, exports, __webpack_require__) {
1913
-
1914
- "use strict";
1915
-
1916
- __webpack_require__(/*! ./es6.regexp.exec */ "./node_modules/core-js/modules/es6.regexp.exec.js");
1917
- var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
1918
- var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
1919
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
1920
- var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
1921
- var wks = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
1922
- var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "./node_modules/core-js/modules/_regexp-exec.js");
1923
-
1924
- var SPECIES = wks('species');
1925
-
1926
- var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
1927
- // #replace needs built-in support for named groups.
1928
- // #match works fine because it just return the exec results, even if it has
1929
- // a "grops" property.
1930
- var re = /./;
1931
- re.exec = function () {
1932
- var result = [];
1933
- result.groups = { a: '7' };
1934
- return result;
1935
- };
1936
- return ''.replace(re, '$<a>') !== '7';
1937
- });
1938
-
1939
- var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
1940
- // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
1941
- var re = /(?:)/;
1942
- var originalExec = re.exec;
1943
- re.exec = function () { return originalExec.apply(this, arguments); };
1944
- var result = 'ab'.split(re);
1945
- return result.length === 2 && result[0] === 'a' && result[1] === 'b';
1946
- })();
1947
-
1948
- module.exports = function (KEY, length, exec) {
1949
- var SYMBOL = wks(KEY);
1950
-
1951
- var DELEGATES_TO_SYMBOL = !fails(function () {
1952
- // String methods call symbol-named RegEp methods
1953
- var O = {};
1954
- O[SYMBOL] = function () { return 7; };
1955
- return ''[KEY](O) != 7;
1956
- });
1957
-
1958
- var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
1959
- // Symbol-named RegExp methods call .exec
1960
- var execCalled = false;
1961
- var re = /a/;
1962
- re.exec = function () { execCalled = true; return null; };
1963
- if (KEY === 'split') {
1964
- // RegExp[@@split] doesn't call the regex's exec method, but first creates
1965
- // a new one. We need to return the patched regex when creating the new one.
1966
- re.constructor = {};
1967
- re.constructor[SPECIES] = function () { return re; };
1968
- }
1969
- re[SYMBOL]('');
1970
- return !execCalled;
1971
- }) : undefined;
1972
-
1973
- if (
1974
- !DELEGATES_TO_SYMBOL ||
1975
- !DELEGATES_TO_EXEC ||
1976
- (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
1977
- (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
1978
- ) {
1979
- var nativeRegExpMethod = /./[SYMBOL];
1980
- var fns = exec(
1981
- defined,
1982
- SYMBOL,
1983
- ''[KEY],
1984
- function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
1985
- if (regexp.exec === regexpExec) {
1986
- if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
1987
- // The native String method already delegates to @@method (this
1988
- // polyfilled function), leasing to infinite recursion.
1989
- // We avoid it by directly calling the native @@method method.
1990
- return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
1991
- }
1992
- return { done: true, value: nativeMethod.call(str, regexp, arg2) };
1993
- }
1994
- return { done: false };
1995
- }
1996
- );
1997
- var strfn = fns[0];
1998
- var rxfn = fns[1];
1999
-
2000
- redefine(String.prototype, KEY, strfn);
2001
- hide(RegExp.prototype, SYMBOL, length == 2
2002
- // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
2003
- // 21.2.5.11 RegExp.prototype[@@split](string, limit)
2004
- ? function (string, arg) { return rxfn.call(string, this, arg); }
2005
- // 21.2.5.6 RegExp.prototype[@@match](string)
2006
- // 21.2.5.9 RegExp.prototype[@@search](string)
2007
- : function (string) { return rxfn.call(string, this); }
2008
- );
2009
- }
2010
- };
2011
-
2012
-
2013
- /***/ }),
2014
-
2015
- /***/ "./node_modules/core-js/modules/_flags.js":
2016
- /*!************************************************!*\
2017
- !*** ./node_modules/core-js/modules/_flags.js ***!
2018
- \************************************************/
2019
- /*! no static exports found */
2020
- /***/ (function(module, exports, __webpack_require__) {
2021
-
2022
- "use strict";
2023
-
2024
- // 21.2.5.3 get RegExp.prototype.flags
2025
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2026
- module.exports = function () {
2027
- var that = anObject(this);
2028
- var result = '';
2029
- if (that.global) result += 'g';
2030
- if (that.ignoreCase) result += 'i';
2031
- if (that.multiline) result += 'm';
2032
- if (that.unicode) result += 'u';
2033
- if (that.sticky) result += 'y';
2034
- return result;
2035
- };
2036
-
2037
-
2038
- /***/ }),
2039
-
2040
- /***/ "./node_modules/core-js/modules/_flatten-into-array.js":
2041
- /*!*************************************************************!*\
2042
- !*** ./node_modules/core-js/modules/_flatten-into-array.js ***!
2043
- \*************************************************************/
2044
- /*! no static exports found */
2045
- /***/ (function(module, exports, __webpack_require__) {
2046
-
2047
- "use strict";
2048
-
2049
- // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
2050
- var isArray = __webpack_require__(/*! ./_is-array */ "./node_modules/core-js/modules/_is-array.js");
2051
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
2052
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
2053
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
2054
- var IS_CONCAT_SPREADABLE = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('isConcatSpreadable');
2055
-
2056
- function flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {
2057
- var targetIndex = start;
2058
- var sourceIndex = 0;
2059
- var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;
2060
- var element, spreadable;
2061
-
2062
- while (sourceIndex < sourceLen) {
2063
- if (sourceIndex in source) {
2064
- element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
2065
-
2066
- spreadable = false;
2067
- if (isObject(element)) {
2068
- spreadable = element[IS_CONCAT_SPREADABLE];
2069
- spreadable = spreadable !== undefined ? !!spreadable : isArray(element);
2070
- }
2071
-
2072
- if (spreadable && depth > 0) {
2073
- targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;
2074
- } else {
2075
- if (targetIndex >= 0x1fffffffffffff) throw TypeError();
2076
- target[targetIndex] = element;
2077
- }
2078
-
2079
- targetIndex++;
2080
- }
2081
- sourceIndex++;
2082
- }
2083
- return targetIndex;
2084
- }
2085
-
2086
- module.exports = flattenIntoArray;
2087
-
2088
-
2089
- /***/ }),
2090
-
2091
- /***/ "./node_modules/core-js/modules/_for-of.js":
2092
- /*!*************************************************!*\
2093
- !*** ./node_modules/core-js/modules/_for-of.js ***!
2094
- \*************************************************/
2095
- /*! no static exports found */
2096
- /***/ (function(module, exports, __webpack_require__) {
2097
-
2098
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
2099
- var call = __webpack_require__(/*! ./_iter-call */ "./node_modules/core-js/modules/_iter-call.js");
2100
- var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "./node_modules/core-js/modules/_is-array-iter.js");
2101
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2102
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
2103
- var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "./node_modules/core-js/modules/core.get-iterator-method.js");
2104
- var BREAK = {};
2105
- var RETURN = {};
2106
- var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
2107
- var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
2108
- var f = ctx(fn, that, entries ? 2 : 1);
2109
- var index = 0;
2110
- var length, step, iterator, result;
2111
- if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
2112
- // fast case for arrays with default iterator
2113
- if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
2114
- result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
2115
- if (result === BREAK || result === RETURN) return result;
2116
- } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
2117
- result = call(iterator, f, step.value, entries);
2118
- if (result === BREAK || result === RETURN) return result;
2119
- }
2120
- };
2121
- exports.BREAK = BREAK;
2122
- exports.RETURN = RETURN;
2123
-
2124
-
2125
- /***/ }),
2126
-
2127
- /***/ "./node_modules/core-js/modules/_function-to-string.js":
2128
- /*!*************************************************************!*\
2129
- !*** ./node_modules/core-js/modules/_function-to-string.js ***!
2130
- \*************************************************************/
2131
- /*! no static exports found */
2132
- /***/ (function(module, exports, __webpack_require__) {
2133
-
2134
- module.exports = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('native-function-to-string', Function.toString);
2135
-
2136
-
2137
- /***/ }),
2138
-
2139
- /***/ "./node_modules/core-js/modules/_global.js":
2140
- /*!*************************************************!*\
2141
- !*** ./node_modules/core-js/modules/_global.js ***!
2142
- \*************************************************/
2143
- /*! no static exports found */
2144
- /***/ (function(module, exports) {
2145
-
2146
- // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
2147
- var global = module.exports = typeof window != 'undefined' && window.Math == Math
2148
- ? window : typeof self != 'undefined' && self.Math == Math ? self
2149
- // eslint-disable-next-line no-new-func
2150
- : Function('return this')();
2151
- if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
2152
-
2153
-
2154
- /***/ }),
2155
-
2156
- /***/ "./node_modules/core-js/modules/_has.js":
2157
- /*!**********************************************!*\
2158
- !*** ./node_modules/core-js/modules/_has.js ***!
2159
- \**********************************************/
2160
- /*! no static exports found */
2161
- /***/ (function(module, exports) {
2162
-
2163
- var hasOwnProperty = {}.hasOwnProperty;
2164
- module.exports = function (it, key) {
2165
- return hasOwnProperty.call(it, key);
2166
- };
2167
-
2168
-
2169
- /***/ }),
2170
-
2171
- /***/ "./node_modules/core-js/modules/_hide.js":
2172
- /*!***********************************************!*\
2173
- !*** ./node_modules/core-js/modules/_hide.js ***!
2174
- \***********************************************/
2175
- /*! no static exports found */
2176
- /***/ (function(module, exports, __webpack_require__) {
2177
-
2178
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
2179
- var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
2180
- module.exports = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
2181
- return dP.f(object, key, createDesc(1, value));
2182
- } : function (object, key, value) {
2183
- object[key] = value;
2184
- return object;
2185
- };
2186
-
2187
-
2188
- /***/ }),
2189
-
2190
- /***/ "./node_modules/core-js/modules/_html.js":
2191
- /*!***********************************************!*\
2192
- !*** ./node_modules/core-js/modules/_html.js ***!
2193
- \***********************************************/
2194
- /*! no static exports found */
2195
- /***/ (function(module, exports, __webpack_require__) {
2196
-
2197
- var document = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").document;
2198
- module.exports = document && document.documentElement;
2199
-
2200
-
2201
- /***/ }),
2202
-
2203
- /***/ "./node_modules/core-js/modules/_ie8-dom-define.js":
2204
- /*!*********************************************************!*\
2205
- !*** ./node_modules/core-js/modules/_ie8-dom-define.js ***!
2206
- \*********************************************************/
2207
- /*! no static exports found */
2208
- /***/ (function(module, exports, __webpack_require__) {
2209
-
2210
- module.exports = !__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
2211
- return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
2212
- });
2213
-
2214
-
2215
- /***/ }),
2216
-
2217
- /***/ "./node_modules/core-js/modules/_inherit-if-required.js":
2218
- /*!**************************************************************!*\
2219
- !*** ./node_modules/core-js/modules/_inherit-if-required.js ***!
2220
- \**************************************************************/
2221
- /*! no static exports found */
2222
- /***/ (function(module, exports, __webpack_require__) {
2223
-
2224
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
2225
- var setPrototypeOf = __webpack_require__(/*! ./_set-proto */ "./node_modules/core-js/modules/_set-proto.js").set;
2226
- module.exports = function (that, target, C) {
2227
- var S = target.constructor;
2228
- var P;
2229
- if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
2230
- setPrototypeOf(that, P);
2231
- } return that;
2232
- };
2233
-
2234
-
2235
- /***/ }),
2236
-
2237
- /***/ "./node_modules/core-js/modules/_invoke.js":
2238
- /*!*************************************************!*\
2239
- !*** ./node_modules/core-js/modules/_invoke.js ***!
2240
- \*************************************************/
2241
- /*! no static exports found */
2242
- /***/ (function(module, exports) {
2243
-
2244
- // fast apply, http://jsperf.lnkit.com/fast-apply/5
2245
- module.exports = function (fn, args, that) {
2246
- var un = that === undefined;
2247
- switch (args.length) {
2248
- case 0: return un ? fn()
2249
- : fn.call(that);
2250
- case 1: return un ? fn(args[0])
2251
- : fn.call(that, args[0]);
2252
- case 2: return un ? fn(args[0], args[1])
2253
- : fn.call(that, args[0], args[1]);
2254
- case 3: return un ? fn(args[0], args[1], args[2])
2255
- : fn.call(that, args[0], args[1], args[2]);
2256
- case 4: return un ? fn(args[0], args[1], args[2], args[3])
2257
- : fn.call(that, args[0], args[1], args[2], args[3]);
2258
- } return fn.apply(that, args);
2259
- };
2260
-
2261
-
2262
- /***/ }),
2263
-
2264
- /***/ "./node_modules/core-js/modules/_iobject.js":
2265
- /*!**************************************************!*\
2266
- !*** ./node_modules/core-js/modules/_iobject.js ***!
2267
- \**************************************************/
2268
- /*! no static exports found */
2269
- /***/ (function(module, exports, __webpack_require__) {
2270
-
2271
- // fallback for non-array-like ES3 and non-enumerable old V8 strings
2272
- var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
2273
- // eslint-disable-next-line no-prototype-builtins
2274
- module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
2275
- return cof(it) == 'String' ? it.split('') : Object(it);
2276
- };
2277
-
2278
-
2279
- /***/ }),
2280
-
2281
- /***/ "./node_modules/core-js/modules/_is-array-iter.js":
2282
- /*!********************************************************!*\
2283
- !*** ./node_modules/core-js/modules/_is-array-iter.js ***!
2284
- \********************************************************/
2285
- /*! no static exports found */
2286
- /***/ (function(module, exports, __webpack_require__) {
2287
-
2288
- // check on default Array iterator
2289
- var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
2290
- var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
2291
- var ArrayProto = Array.prototype;
2292
-
2293
- module.exports = function (it) {
2294
- return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
2295
- };
2296
-
2297
-
2298
- /***/ }),
2299
-
2300
- /***/ "./node_modules/core-js/modules/_is-array.js":
2301
- /*!***************************************************!*\
2302
- !*** ./node_modules/core-js/modules/_is-array.js ***!
2303
- \***************************************************/
2304
- /*! no static exports found */
2305
- /***/ (function(module, exports, __webpack_require__) {
2306
-
2307
- // 7.2.2 IsArray(argument)
2308
- var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
2309
- module.exports = Array.isArray || function isArray(arg) {
2310
- return cof(arg) == 'Array';
2311
- };
2312
-
2313
-
2314
- /***/ }),
2315
-
2316
- /***/ "./node_modules/core-js/modules/_is-integer.js":
2317
- /*!*****************************************************!*\
2318
- !*** ./node_modules/core-js/modules/_is-integer.js ***!
2319
- \*****************************************************/
2320
- /*! no static exports found */
2321
- /***/ (function(module, exports, __webpack_require__) {
2322
-
2323
- // 20.1.2.3 Number.isInteger(number)
2324
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
2325
- var floor = Math.floor;
2326
- module.exports = function isInteger(it) {
2327
- return !isObject(it) && isFinite(it) && floor(it) === it;
2328
- };
2329
-
2330
-
2331
- /***/ }),
2332
-
2333
- /***/ "./node_modules/core-js/modules/_is-object.js":
2334
- /*!****************************************************!*\
2335
- !*** ./node_modules/core-js/modules/_is-object.js ***!
2336
- \****************************************************/
2337
- /*! no static exports found */
2338
- /***/ (function(module, exports) {
2339
-
2340
- module.exports = function (it) {
2341
- return typeof it === 'object' ? it !== null : typeof it === 'function';
2342
- };
2343
-
2344
-
2345
- /***/ }),
2346
-
2347
- /***/ "./node_modules/core-js/modules/_is-regexp.js":
2348
- /*!****************************************************!*\
2349
- !*** ./node_modules/core-js/modules/_is-regexp.js ***!
2350
- \****************************************************/
2351
- /*! no static exports found */
2352
- /***/ (function(module, exports, __webpack_require__) {
2353
-
2354
- // 7.2.8 IsRegExp(argument)
2355
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
2356
- var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
2357
- var MATCH = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('match');
2358
- module.exports = function (it) {
2359
- var isRegExp;
2360
- return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
2361
- };
2362
-
2363
-
2364
- /***/ }),
2365
-
2366
- /***/ "./node_modules/core-js/modules/_iter-call.js":
2367
- /*!****************************************************!*\
2368
- !*** ./node_modules/core-js/modules/_iter-call.js ***!
2369
- \****************************************************/
2370
- /*! no static exports found */
2371
- /***/ (function(module, exports, __webpack_require__) {
2372
-
2373
- // call something on iterator step with safe closing on error
2374
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2375
- module.exports = function (iterator, fn, value, entries) {
2376
- try {
2377
- return entries ? fn(anObject(value)[0], value[1]) : fn(value);
2378
- // 7.4.6 IteratorClose(iterator, completion)
2379
- } catch (e) {
2380
- var ret = iterator['return'];
2381
- if (ret !== undefined) anObject(ret.call(iterator));
2382
- throw e;
2383
- }
2384
- };
2385
-
2386
-
2387
- /***/ }),
2388
-
2389
- /***/ "./node_modules/core-js/modules/_iter-create.js":
2390
- /*!******************************************************!*\
2391
- !*** ./node_modules/core-js/modules/_iter-create.js ***!
2392
- \******************************************************/
2393
- /*! no static exports found */
2394
- /***/ (function(module, exports, __webpack_require__) {
2395
-
2396
- "use strict";
2397
-
2398
- var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
2399
- var descriptor = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
2400
- var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
2401
- var IteratorPrototype = {};
2402
-
2403
- // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
2404
- __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator'), function () { return this; });
2405
-
2406
- module.exports = function (Constructor, NAME, next) {
2407
- Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
2408
- setToStringTag(Constructor, NAME + ' Iterator');
2409
- };
2410
-
2411
-
2412
- /***/ }),
2413
-
2414
- /***/ "./node_modules/core-js/modules/_iter-define.js":
2415
- /*!******************************************************!*\
2416
- !*** ./node_modules/core-js/modules/_iter-define.js ***!
2417
- \******************************************************/
2418
- /*! no static exports found */
2419
- /***/ (function(module, exports, __webpack_require__) {
2420
-
2421
- "use strict";
2422
-
2423
- var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
2424
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
2425
- var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
2426
- var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
2427
- var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
2428
- var $iterCreate = __webpack_require__(/*! ./_iter-create */ "./node_modules/core-js/modules/_iter-create.js");
2429
- var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
2430
- var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
2431
- var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
2432
- var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
2433
- var FF_ITERATOR = '@@iterator';
2434
- var KEYS = 'keys';
2435
- var VALUES = 'values';
2436
-
2437
- var returnThis = function () { return this; };
2438
-
2439
- module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
2440
- $iterCreate(Constructor, NAME, next);
2441
- var getMethod = function (kind) {
2442
- if (!BUGGY && kind in proto) return proto[kind];
2443
- switch (kind) {
2444
- case KEYS: return function keys() { return new Constructor(this, kind); };
2445
- case VALUES: return function values() { return new Constructor(this, kind); };
2446
- } return function entries() { return new Constructor(this, kind); };
2447
- };
2448
- var TAG = NAME + ' Iterator';
2449
- var DEF_VALUES = DEFAULT == VALUES;
2450
- var VALUES_BUG = false;
2451
- var proto = Base.prototype;
2452
- var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
2453
- var $default = $native || getMethod(DEFAULT);
2454
- var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
2455
- var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
2456
- var methods, key, IteratorPrototype;
2457
- // Fix native
2458
- if ($anyNative) {
2459
- IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
2460
- if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
2461
- // Set @@toStringTag to native iterators
2462
- setToStringTag(IteratorPrototype, TAG, true);
2463
- // fix for some old engines
2464
- if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
2465
- }
2466
- }
2467
- // fix Array#{values, @@iterator}.name in V8 / FF
2468
- if (DEF_VALUES && $native && $native.name !== VALUES) {
2469
- VALUES_BUG = true;
2470
- $default = function values() { return $native.call(this); };
2471
- }
2472
- // Define iterator
2473
- if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
2474
- hide(proto, ITERATOR, $default);
2475
- }
2476
- // Plug for library
2477
- Iterators[NAME] = $default;
2478
- Iterators[TAG] = returnThis;
2479
- if (DEFAULT) {
2480
- methods = {
2481
- values: DEF_VALUES ? $default : getMethod(VALUES),
2482
- keys: IS_SET ? $default : getMethod(KEYS),
2483
- entries: $entries
2484
- };
2485
- if (FORCED) for (key in methods) {
2486
- if (!(key in proto)) redefine(proto, key, methods[key]);
2487
- } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
2488
- }
2489
- return methods;
2490
- };
2491
-
2492
-
2493
- /***/ }),
2494
-
2495
- /***/ "./node_modules/core-js/modules/_iter-detect.js":
2496
- /*!******************************************************!*\
2497
- !*** ./node_modules/core-js/modules/_iter-detect.js ***!
2498
- \******************************************************/
2499
- /*! no static exports found */
2500
- /***/ (function(module, exports, __webpack_require__) {
2501
-
2502
- var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
2503
- var SAFE_CLOSING = false;
2504
-
2505
- try {
2506
- var riter = [7][ITERATOR]();
2507
- riter['return'] = function () { SAFE_CLOSING = true; };
2508
- // eslint-disable-next-line no-throw-literal
2509
- Array.from(riter, function () { throw 2; });
2510
- } catch (e) { /* empty */ }
2511
-
2512
- module.exports = function (exec, skipClosing) {
2513
- if (!skipClosing && !SAFE_CLOSING) return false;
2514
- var safe = false;
2515
- try {
2516
- var arr = [7];
2517
- var iter = arr[ITERATOR]();
2518
- iter.next = function () { return { done: safe = true }; };
2519
- arr[ITERATOR] = function () { return iter; };
2520
- exec(arr);
2521
- } catch (e) { /* empty */ }
2522
- return safe;
2523
- };
2524
-
2525
-
2526
- /***/ }),
2527
-
2528
- /***/ "./node_modules/core-js/modules/_iter-step.js":
2529
- /*!****************************************************!*\
2530
- !*** ./node_modules/core-js/modules/_iter-step.js ***!
2531
- \****************************************************/
2532
- /*! no static exports found */
2533
- /***/ (function(module, exports) {
2534
-
2535
- module.exports = function (done, value) {
2536
- return { value: value, done: !!done };
2537
- };
2538
-
2539
-
2540
- /***/ }),
2541
-
2542
- /***/ "./node_modules/core-js/modules/_iterators.js":
2543
- /*!****************************************************!*\
2544
- !*** ./node_modules/core-js/modules/_iterators.js ***!
2545
- \****************************************************/
2546
- /*! no static exports found */
2547
- /***/ (function(module, exports) {
2548
-
2549
- module.exports = {};
2550
-
2551
-
2552
- /***/ }),
2553
-
2554
- /***/ "./node_modules/core-js/modules/_library.js":
2555
- /*!**************************************************!*\
2556
- !*** ./node_modules/core-js/modules/_library.js ***!
2557
- \**************************************************/
2558
- /*! no static exports found */
2559
- /***/ (function(module, exports) {
2560
-
2561
- module.exports = false;
2562
-
2563
-
2564
- /***/ }),
2565
-
2566
- /***/ "./node_modules/core-js/modules/_math-expm1.js":
2567
- /*!*****************************************************!*\
2568
- !*** ./node_modules/core-js/modules/_math-expm1.js ***!
2569
- \*****************************************************/
2570
- /*! no static exports found */
2571
- /***/ (function(module, exports) {
2572
-
2573
- // 20.2.2.14 Math.expm1(x)
2574
- var $expm1 = Math.expm1;
2575
- module.exports = (!$expm1
2576
- // Old FF bug
2577
- || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168
2578
- // Tor Browser bug
2579
- || $expm1(-2e-17) != -2e-17
2580
- ) ? function expm1(x) {
2581
- return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
2582
- } : $expm1;
2583
-
2584
-
2585
- /***/ }),
2586
-
2587
- /***/ "./node_modules/core-js/modules/_math-fround.js":
2588
- /*!******************************************************!*\
2589
- !*** ./node_modules/core-js/modules/_math-fround.js ***!
2590
- \******************************************************/
2591
- /*! no static exports found */
2592
- /***/ (function(module, exports, __webpack_require__) {
2593
-
2594
- // 20.2.2.16 Math.fround(x)
2595
- var sign = __webpack_require__(/*! ./_math-sign */ "./node_modules/core-js/modules/_math-sign.js");
2596
- var pow = Math.pow;
2597
- var EPSILON = pow(2, -52);
2598
- var EPSILON32 = pow(2, -23);
2599
- var MAX32 = pow(2, 127) * (2 - EPSILON32);
2600
- var MIN32 = pow(2, -126);
2601
-
2602
- var roundTiesToEven = function (n) {
2603
- return n + 1 / EPSILON - 1 / EPSILON;
2604
- };
2605
-
2606
- module.exports = Math.fround || function fround(x) {
2607
- var $abs = Math.abs(x);
2608
- var $sign = sign(x);
2609
- var a, result;
2610
- if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
2611
- a = (1 + EPSILON32 / EPSILON) * $abs;
2612
- result = a - (a - $abs);
2613
- // eslint-disable-next-line no-self-compare
2614
- if (result > MAX32 || result != result) return $sign * Infinity;
2615
- return $sign * result;
2616
- };
2617
-
2618
-
2619
- /***/ }),
2620
-
2621
- /***/ "./node_modules/core-js/modules/_math-log1p.js":
2622
- /*!*****************************************************!*\
2623
- !*** ./node_modules/core-js/modules/_math-log1p.js ***!
2624
- \*****************************************************/
2625
- /*! no static exports found */
2626
- /***/ (function(module, exports) {
2627
-
2628
- // 20.2.2.20 Math.log1p(x)
2629
- module.exports = Math.log1p || function log1p(x) {
2630
- return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
2631
- };
2632
-
2633
-
2634
- /***/ }),
2635
-
2636
- /***/ "./node_modules/core-js/modules/_math-sign.js":
2637
- /*!****************************************************!*\
2638
- !*** ./node_modules/core-js/modules/_math-sign.js ***!
2639
- \****************************************************/
2640
- /*! no static exports found */
2641
- /***/ (function(module, exports) {
2642
-
2643
- // 20.2.2.28 Math.sign(x)
2644
- module.exports = Math.sign || function sign(x) {
2645
- // eslint-disable-next-line no-self-compare
2646
- return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
2647
- };
2648
-
2649
-
2650
- /***/ }),
2651
-
2652
- /***/ "./node_modules/core-js/modules/_meta.js":
2653
- /*!***********************************************!*\
2654
- !*** ./node_modules/core-js/modules/_meta.js ***!
2655
- \***********************************************/
2656
- /*! no static exports found */
2657
- /***/ (function(module, exports, __webpack_require__) {
2658
-
2659
- var META = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js")('meta');
2660
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
2661
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
2662
- var setDesc = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
2663
- var id = 0;
2664
- var isExtensible = Object.isExtensible || function () {
2665
- return true;
2666
- };
2667
- var FREEZE = !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
2668
- return isExtensible(Object.preventExtensions({}));
2669
- });
2670
- var setMeta = function (it) {
2671
- setDesc(it, META, { value: {
2672
- i: 'O' + ++id, // object ID
2673
- w: {} // weak collections IDs
2674
- } });
2675
- };
2676
- var fastKey = function (it, create) {
2677
- // return primitive with prefix
2678
- if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
2679
- if (!has(it, META)) {
2680
- // can't set metadata to uncaught frozen object
2681
- if (!isExtensible(it)) return 'F';
2682
- // not necessary to add metadata
2683
- if (!create) return 'E';
2684
- // add missing metadata
2685
- setMeta(it);
2686
- // return object ID
2687
- } return it[META].i;
2688
- };
2689
- var getWeak = function (it, create) {
2690
- if (!has(it, META)) {
2691
- // can't set metadata to uncaught frozen object
2692
- if (!isExtensible(it)) return true;
2693
- // not necessary to add metadata
2694
- if (!create) return false;
2695
- // add missing metadata
2696
- setMeta(it);
2697
- // return hash weak collections IDs
2698
- } return it[META].w;
2699
- };
2700
- // add metadata on freeze-family methods calling
2701
- var onFreeze = function (it) {
2702
- if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
2703
- return it;
2704
- };
2705
- var meta = module.exports = {
2706
- KEY: META,
2707
- NEED: false,
2708
- fastKey: fastKey,
2709
- getWeak: getWeak,
2710
- onFreeze: onFreeze
2711
- };
2712
-
2713
-
2714
- /***/ }),
2715
-
2716
- /***/ "./node_modules/core-js/modules/_microtask.js":
2717
- /*!****************************************************!*\
2718
- !*** ./node_modules/core-js/modules/_microtask.js ***!
2719
- \****************************************************/
2720
- /*! no static exports found */
2721
- /***/ (function(module, exports, __webpack_require__) {
2722
-
2723
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
2724
- var macrotask = __webpack_require__(/*! ./_task */ "./node_modules/core-js/modules/_task.js").set;
2725
- var Observer = global.MutationObserver || global.WebKitMutationObserver;
2726
- var process = global.process;
2727
- var Promise = global.Promise;
2728
- var isNode = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js")(process) == 'process';
2729
-
2730
- module.exports = function () {
2731
- var head, last, notify;
2732
-
2733
- var flush = function () {
2734
- var parent, fn;
2735
- if (isNode && (parent = process.domain)) parent.exit();
2736
- while (head) {
2737
- fn = head.fn;
2738
- head = head.next;
2739
- try {
2740
- fn();
2741
- } catch (e) {
2742
- if (head) notify();
2743
- else last = undefined;
2744
- throw e;
2745
- }
2746
- } last = undefined;
2747
- if (parent) parent.enter();
2748
- };
2749
-
2750
- // Node.js
2751
- if (isNode) {
2752
- notify = function () {
2753
- process.nextTick(flush);
2754
- };
2755
- // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
2756
- } else if (Observer && !(global.navigator && global.navigator.standalone)) {
2757
- var toggle = true;
2758
- var node = document.createTextNode('');
2759
- new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
2760
- notify = function () {
2761
- node.data = toggle = !toggle;
2762
- };
2763
- // environments with maybe non-completely correct, but existent Promise
2764
- } else if (Promise && Promise.resolve) {
2765
- // Promise.resolve without an argument throws an error in LG WebOS 2
2766
- var promise = Promise.resolve(undefined);
2767
- notify = function () {
2768
- promise.then(flush);
2769
- };
2770
- // for other environments - macrotask based on:
2771
- // - setImmediate
2772
- // - MessageChannel
2773
- // - window.postMessag
2774
- // - onreadystatechange
2775
- // - setTimeout
2776
- } else {
2777
- notify = function () {
2778
- // strange IE + webpack dev server bug - use .call(global)
2779
- macrotask.call(global, flush);
2780
- };
2781
- }
2782
-
2783
- return function (fn) {
2784
- var task = { fn: fn, next: undefined };
2785
- if (last) last.next = task;
2786
- if (!head) {
2787
- head = task;
2788
- notify();
2789
- } last = task;
2790
- };
2791
- };
2792
-
2793
-
2794
- /***/ }),
2795
-
2796
- /***/ "./node_modules/core-js/modules/_new-promise-capability.js":
2797
- /*!*****************************************************************!*\
2798
- !*** ./node_modules/core-js/modules/_new-promise-capability.js ***!
2799
- \*****************************************************************/
2800
- /*! no static exports found */
2801
- /***/ (function(module, exports, __webpack_require__) {
2802
-
2803
- "use strict";
2804
-
2805
- // 25.4.1.5 NewPromiseCapability(C)
2806
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
2807
-
2808
- function PromiseCapability(C) {
2809
- var resolve, reject;
2810
- this.promise = new C(function ($$resolve, $$reject) {
2811
- if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
2812
- resolve = $$resolve;
2813
- reject = $$reject;
2814
- });
2815
- this.resolve = aFunction(resolve);
2816
- this.reject = aFunction(reject);
2817
- }
2818
-
2819
- module.exports.f = function (C) {
2820
- return new PromiseCapability(C);
2821
- };
2822
-
2823
-
2824
- /***/ }),
2825
-
2826
- /***/ "./node_modules/core-js/modules/_object-assign.js":
2827
- /*!********************************************************!*\
2828
- !*** ./node_modules/core-js/modules/_object-assign.js ***!
2829
- \********************************************************/
2830
- /*! no static exports found */
2831
- /***/ (function(module, exports, __webpack_require__) {
2832
-
2833
- "use strict";
2834
-
2835
- // 19.1.2.1 Object.assign(target, source, ...)
2836
- var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
2837
- var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
2838
- var gOPS = __webpack_require__(/*! ./_object-gops */ "./node_modules/core-js/modules/_object-gops.js");
2839
- var pIE = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js");
2840
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
2841
- var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
2842
- var $assign = Object.assign;
2843
-
2844
- // should work with symbols and should have deterministic property order (V8 bug)
2845
- module.exports = !$assign || __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
2846
- var A = {};
2847
- var B = {};
2848
- // eslint-disable-next-line no-undef
2849
- var S = Symbol();
2850
- var K = 'abcdefghijklmnopqrst';
2851
- A[S] = 7;
2852
- K.split('').forEach(function (k) { B[k] = k; });
2853
- return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
2854
- }) ? function assign(target, source) { // eslint-disable-line no-unused-vars
2855
- var T = toObject(target);
2856
- var aLen = arguments.length;
2857
- var index = 1;
2858
- var getSymbols = gOPS.f;
2859
- var isEnum = pIE.f;
2860
- while (aLen > index) {
2861
- var S = IObject(arguments[index++]);
2862
- var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
2863
- var length = keys.length;
2864
- var j = 0;
2865
- var key;
2866
- while (length > j) {
2867
- key = keys[j++];
2868
- if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
2869
- }
2870
- } return T;
2871
- } : $assign;
2872
-
2873
-
2874
- /***/ }),
2875
-
2876
- /***/ "./node_modules/core-js/modules/_object-create.js":
2877
- /*!********************************************************!*\
2878
- !*** ./node_modules/core-js/modules/_object-create.js ***!
2879
- \********************************************************/
2880
- /*! no static exports found */
2881
- /***/ (function(module, exports, __webpack_require__) {
2882
-
2883
- // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
2884
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2885
- var dPs = __webpack_require__(/*! ./_object-dps */ "./node_modules/core-js/modules/_object-dps.js");
2886
- var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "./node_modules/core-js/modules/_enum-bug-keys.js");
2887
- var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "./node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
2888
- var Empty = function () { /* empty */ };
2889
- var PROTOTYPE = 'prototype';
2890
-
2891
- // Create object with fake `null` prototype: use iframe Object with cleared prototype
2892
- var createDict = function () {
2893
- // Thrash, waste and sodomy: IE GC bug
2894
- var iframe = __webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/modules/_dom-create.js")('iframe');
2895
- var i = enumBugKeys.length;
2896
- var lt = '<';
2897
- var gt = '>';
2898
- var iframeDocument;
2899
- iframe.style.display = 'none';
2900
- __webpack_require__(/*! ./_html */ "./node_modules/core-js/modules/_html.js").appendChild(iframe);
2901
- iframe.src = 'javascript:'; // eslint-disable-line no-script-url
2902
- // createDict = iframe.contentWindow.Object;
2903
- // html.removeChild(iframe);
2904
- iframeDocument = iframe.contentWindow.document;
2905
- iframeDocument.open();
2906
- iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
2907
- iframeDocument.close();
2908
- createDict = iframeDocument.F;
2909
- while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
2910
- return createDict();
2911
- };
2912
-
2913
- module.exports = Object.create || function create(O, Properties) {
2914
- var result;
2915
- if (O !== null) {
2916
- Empty[PROTOTYPE] = anObject(O);
2917
- result = new Empty();
2918
- Empty[PROTOTYPE] = null;
2919
- // add "__proto__" for Object.getPrototypeOf polyfill
2920
- result[IE_PROTO] = O;
2921
- } else result = createDict();
2922
- return Properties === undefined ? result : dPs(result, Properties);
2923
- };
2924
-
2925
-
2926
- /***/ }),
2927
-
2928
- /***/ "./node_modules/core-js/modules/_object-dp.js":
2929
- /*!****************************************************!*\
2930
- !*** ./node_modules/core-js/modules/_object-dp.js ***!
2931
- \****************************************************/
2932
- /*! no static exports found */
2933
- /***/ (function(module, exports, __webpack_require__) {
2934
-
2935
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2936
- var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "./node_modules/core-js/modules/_ie8-dom-define.js");
2937
- var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
2938
- var dP = Object.defineProperty;
2939
-
2940
- exports.f = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
2941
- anObject(O);
2942
- P = toPrimitive(P, true);
2943
- anObject(Attributes);
2944
- if (IE8_DOM_DEFINE) try {
2945
- return dP(O, P, Attributes);
2946
- } catch (e) { /* empty */ }
2947
- if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
2948
- if ('value' in Attributes) O[P] = Attributes.value;
2949
- return O;
2950
- };
2951
-
2952
-
2953
- /***/ }),
2954
-
2955
- /***/ "./node_modules/core-js/modules/_object-dps.js":
2956
- /*!*****************************************************!*\
2957
- !*** ./node_modules/core-js/modules/_object-dps.js ***!
2958
- \*****************************************************/
2959
- /*! no static exports found */
2960
- /***/ (function(module, exports, __webpack_require__) {
2961
-
2962
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
2963
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
2964
- var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
2965
-
2966
- module.exports = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
2967
- anObject(O);
2968
- var keys = getKeys(Properties);
2969
- var length = keys.length;
2970
- var i = 0;
2971
- var P;
2972
- while (length > i) dP.f(O, P = keys[i++], Properties[P]);
2973
- return O;
2974
- };
2975
-
2976
-
2977
- /***/ }),
2978
-
2979
- /***/ "./node_modules/core-js/modules/_object-gopd.js":
2980
- /*!******************************************************!*\
2981
- !*** ./node_modules/core-js/modules/_object-gopd.js ***!
2982
- \******************************************************/
2983
- /*! no static exports found */
2984
- /***/ (function(module, exports, __webpack_require__) {
2985
-
2986
- var pIE = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js");
2987
- var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
2988
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
2989
- var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
2990
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
2991
- var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "./node_modules/core-js/modules/_ie8-dom-define.js");
2992
- var gOPD = Object.getOwnPropertyDescriptor;
2993
-
2994
- exports.f = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
2995
- O = toIObject(O);
2996
- P = toPrimitive(P, true);
2997
- if (IE8_DOM_DEFINE) try {
2998
- return gOPD(O, P);
2999
- } catch (e) { /* empty */ }
3000
- if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
3001
- };
3002
-
3003
-
3004
- /***/ }),
3005
-
3006
- /***/ "./node_modules/core-js/modules/_object-gopn-ext.js":
3007
- /*!**********************************************************!*\
3008
- !*** ./node_modules/core-js/modules/_object-gopn-ext.js ***!
3009
- \**********************************************************/
3010
- /*! no static exports found */
3011
- /***/ (function(module, exports, __webpack_require__) {
3012
-
3013
- // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
3014
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
3015
- var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
3016
- var toString = {}.toString;
3017
-
3018
- var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
3019
- ? Object.getOwnPropertyNames(window) : [];
3020
-
3021
- var getWindowNames = function (it) {
3022
- try {
3023
- return gOPN(it);
3024
- } catch (e) {
3025
- return windowNames.slice();
3026
- }
3027
- };
3028
-
3029
- module.exports.f = function getOwnPropertyNames(it) {
3030
- return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
3031
- };
3032
-
3033
-
3034
- /***/ }),
3035
-
3036
- /***/ "./node_modules/core-js/modules/_object-gopn.js":
3037
- /*!******************************************************!*\
3038
- !*** ./node_modules/core-js/modules/_object-gopn.js ***!
3039
- \******************************************************/
3040
- /*! no static exports found */
3041
- /***/ (function(module, exports, __webpack_require__) {
3042
-
3043
- // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
3044
- var $keys = __webpack_require__(/*! ./_object-keys-internal */ "./node_modules/core-js/modules/_object-keys-internal.js");
3045
- var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "./node_modules/core-js/modules/_enum-bug-keys.js").concat('length', 'prototype');
3046
-
3047
- exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
3048
- return $keys(O, hiddenKeys);
3049
- };
3050
-
3051
-
3052
- /***/ }),
3053
-
3054
- /***/ "./node_modules/core-js/modules/_object-gops.js":
3055
- /*!******************************************************!*\
3056
- !*** ./node_modules/core-js/modules/_object-gops.js ***!
3057
- \******************************************************/
3058
- /*! no static exports found */
3059
- /***/ (function(module, exports) {
3060
-
3061
- exports.f = Object.getOwnPropertySymbols;
3062
-
3063
-
3064
- /***/ }),
3065
-
3066
- /***/ "./node_modules/core-js/modules/_object-gpo.js":
3067
- /*!*****************************************************!*\
3068
- !*** ./node_modules/core-js/modules/_object-gpo.js ***!
3069
- \*****************************************************/
3070
- /*! no static exports found */
3071
- /***/ (function(module, exports, __webpack_require__) {
3072
-
3073
- // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
3074
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
3075
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
3076
- var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "./node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
3077
- var ObjectProto = Object.prototype;
3078
-
3079
- module.exports = Object.getPrototypeOf || function (O) {
3080
- O = toObject(O);
3081
- if (has(O, IE_PROTO)) return O[IE_PROTO];
3082
- if (typeof O.constructor == 'function' && O instanceof O.constructor) {
3083
- return O.constructor.prototype;
3084
- } return O instanceof Object ? ObjectProto : null;
3085
- };
3086
-
3087
-
3088
- /***/ }),
3089
-
3090
- /***/ "./node_modules/core-js/modules/_object-keys-internal.js":
3091
- /*!***************************************************************!*\
3092
- !*** ./node_modules/core-js/modules/_object-keys-internal.js ***!
3093
- \***************************************************************/
3094
- /*! no static exports found */
3095
- /***/ (function(module, exports, __webpack_require__) {
3096
-
3097
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
3098
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
3099
- var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js")(false);
3100
- var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "./node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
3101
-
3102
- module.exports = function (object, names) {
3103
- var O = toIObject(object);
3104
- var i = 0;
3105
- var result = [];
3106
- var key;
3107
- for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
3108
- // Don't enum bug & hidden keys
3109
- while (names.length > i) if (has(O, key = names[i++])) {
3110
- ~arrayIndexOf(result, key) || result.push(key);
3111
- }
3112
- return result;
3113
- };
3114
-
3115
-
3116
- /***/ }),
3117
-
3118
- /***/ "./node_modules/core-js/modules/_object-keys.js":
3119
- /*!******************************************************!*\
3120
- !*** ./node_modules/core-js/modules/_object-keys.js ***!
3121
- \******************************************************/
3122
- /*! no static exports found */
3123
- /***/ (function(module, exports, __webpack_require__) {
3124
-
3125
- // 19.1.2.14 / 15.2.3.14 Object.keys(O)
3126
- var $keys = __webpack_require__(/*! ./_object-keys-internal */ "./node_modules/core-js/modules/_object-keys-internal.js");
3127
- var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "./node_modules/core-js/modules/_enum-bug-keys.js");
3128
-
3129
- module.exports = Object.keys || function keys(O) {
3130
- return $keys(O, enumBugKeys);
3131
- };
3132
-
3133
-
3134
- /***/ }),
3135
-
3136
- /***/ "./node_modules/core-js/modules/_object-pie.js":
3137
- /*!*****************************************************!*\
3138
- !*** ./node_modules/core-js/modules/_object-pie.js ***!
3139
- \*****************************************************/
3140
- /*! no static exports found */
3141
- /***/ (function(module, exports) {
3142
-
3143
- exports.f = {}.propertyIsEnumerable;
3144
-
3145
-
3146
- /***/ }),
3147
-
3148
- /***/ "./node_modules/core-js/modules/_object-sap.js":
3149
- /*!*****************************************************!*\
3150
- !*** ./node_modules/core-js/modules/_object-sap.js ***!
3151
- \*****************************************************/
3152
- /*! no static exports found */
3153
- /***/ (function(module, exports, __webpack_require__) {
3154
-
3155
- // most Object methods by ES6 should accept primitives
3156
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
3157
- var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
3158
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
3159
- module.exports = function (KEY, exec) {
3160
- var fn = (core.Object || {})[KEY] || Object[KEY];
3161
- var exp = {};
3162
- exp[KEY] = exec(fn);
3163
- $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
3164
- };
3165
-
3166
-
3167
- /***/ }),
3168
-
3169
- /***/ "./node_modules/core-js/modules/_object-to-array.js":
3170
- /*!**********************************************************!*\
3171
- !*** ./node_modules/core-js/modules/_object-to-array.js ***!
3172
- \**********************************************************/
3173
- /*! no static exports found */
3174
- /***/ (function(module, exports, __webpack_require__) {
3175
-
3176
- var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
3177
- var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
3178
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
3179
- var isEnum = __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js").f;
3180
- module.exports = function (isEntries) {
3181
- return function (it) {
3182
- var O = toIObject(it);
3183
- var keys = getKeys(O);
3184
- var length = keys.length;
3185
- var i = 0;
3186
- var result = [];
3187
- var key;
3188
- while (length > i) {
3189
- key = keys[i++];
3190
- if (!DESCRIPTORS || isEnum.call(O, key)) {
3191
- result.push(isEntries ? [key, O[key]] : O[key]);
3192
- }
3193
- }
3194
- return result;
3195
- };
3196
- };
3197
-
3198
-
3199
- /***/ }),
3200
-
3201
- /***/ "./node_modules/core-js/modules/_own-keys.js":
3202
- /*!***************************************************!*\
3203
- !*** ./node_modules/core-js/modules/_own-keys.js ***!
3204
- \***************************************************/
3205
- /*! no static exports found */
3206
- /***/ (function(module, exports, __webpack_require__) {
3207
-
3208
- // all object keys, includes non-enumerable and symbols
3209
- var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js");
3210
- var gOPS = __webpack_require__(/*! ./_object-gops */ "./node_modules/core-js/modules/_object-gops.js");
3211
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
3212
- var Reflect = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Reflect;
3213
- module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
3214
- var keys = gOPN.f(anObject(it));
3215
- var getSymbols = gOPS.f;
3216
- return getSymbols ? keys.concat(getSymbols(it)) : keys;
3217
- };
3218
-
3219
-
3220
- /***/ }),
3221
-
3222
- /***/ "./node_modules/core-js/modules/_parse-float.js":
3223
- /*!******************************************************!*\
3224
- !*** ./node_modules/core-js/modules/_parse-float.js ***!
3225
- \******************************************************/
3226
- /*! no static exports found */
3227
- /***/ (function(module, exports, __webpack_require__) {
3228
-
3229
- var $parseFloat = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").parseFloat;
3230
- var $trim = __webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js").trim;
3231
-
3232
- module.exports = 1 / $parseFloat(__webpack_require__(/*! ./_string-ws */ "./node_modules/core-js/modules/_string-ws.js") + '-0') !== -Infinity ? function parseFloat(str) {
3233
- var string = $trim(String(str), 3);
3234
- var result = $parseFloat(string);
3235
- return result === 0 && string.charAt(0) == '-' ? -0 : result;
3236
- } : $parseFloat;
3237
-
3238
-
3239
- /***/ }),
3240
-
3241
- /***/ "./node_modules/core-js/modules/_parse-int.js":
3242
- /*!****************************************************!*\
3243
- !*** ./node_modules/core-js/modules/_parse-int.js ***!
3244
- \****************************************************/
3245
- /*! no static exports found */
3246
- /***/ (function(module, exports, __webpack_require__) {
3247
-
3248
- var $parseInt = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").parseInt;
3249
- var $trim = __webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js").trim;
3250
- var ws = __webpack_require__(/*! ./_string-ws */ "./node_modules/core-js/modules/_string-ws.js");
3251
- var hex = /^[-+]?0[xX]/;
3252
-
3253
- module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
3254
- var string = $trim(String(str), 3);
3255
- return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
3256
- } : $parseInt;
3257
-
3258
-
3259
- /***/ }),
3260
-
3261
- /***/ "./node_modules/core-js/modules/_perform.js":
3262
- /*!**************************************************!*\
3263
- !*** ./node_modules/core-js/modules/_perform.js ***!
3264
- \**************************************************/
3265
- /*! no static exports found */
3266
- /***/ (function(module, exports) {
3267
-
3268
- module.exports = function (exec) {
3269
- try {
3270
- return { e: false, v: exec() };
3271
- } catch (e) {
3272
- return { e: true, v: e };
3273
- }
3274
- };
3275
-
3276
-
3277
- /***/ }),
3278
-
3279
- /***/ "./node_modules/core-js/modules/_promise-resolve.js":
3280
- /*!**********************************************************!*\
3281
- !*** ./node_modules/core-js/modules/_promise-resolve.js ***!
3282
- \**********************************************************/
3283
- /*! no static exports found */
3284
- /***/ (function(module, exports, __webpack_require__) {
3285
-
3286
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
3287
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
3288
- var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "./node_modules/core-js/modules/_new-promise-capability.js");
3289
-
3290
- module.exports = function (C, x) {
3291
- anObject(C);
3292
- if (isObject(x) && x.constructor === C) return x;
3293
- var promiseCapability = newPromiseCapability.f(C);
3294
- var resolve = promiseCapability.resolve;
3295
- resolve(x);
3296
- return promiseCapability.promise;
3297
- };
3298
-
3299
-
3300
- /***/ }),
3301
-
3302
- /***/ "./node_modules/core-js/modules/_property-desc.js":
3303
- /*!********************************************************!*\
3304
- !*** ./node_modules/core-js/modules/_property-desc.js ***!
3305
- \********************************************************/
3306
- /*! no static exports found */
3307
- /***/ (function(module, exports) {
3308
-
3309
- module.exports = function (bitmap, value) {
3310
- return {
3311
- enumerable: !(bitmap & 1),
3312
- configurable: !(bitmap & 2),
3313
- writable: !(bitmap & 4),
3314
- value: value
3315
- };
3316
- };
3317
-
3318
-
3319
- /***/ }),
3320
-
3321
- /***/ "./node_modules/core-js/modules/_redefine-all.js":
3322
- /*!*******************************************************!*\
3323
- !*** ./node_modules/core-js/modules/_redefine-all.js ***!
3324
- \*******************************************************/
3325
- /*! no static exports found */
3326
- /***/ (function(module, exports, __webpack_require__) {
3327
-
3328
- var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
3329
- module.exports = function (target, src, safe) {
3330
- for (var key in src) redefine(target, key, src[key], safe);
3331
- return target;
3332
- };
3333
-
3334
-
3335
- /***/ }),
3336
-
3337
- /***/ "./node_modules/core-js/modules/_redefine.js":
3338
- /*!***************************************************!*\
3339
- !*** ./node_modules/core-js/modules/_redefine.js ***!
3340
- \***************************************************/
3341
- /*! no static exports found */
3342
- /***/ (function(module, exports, __webpack_require__) {
3343
-
3344
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
3345
- var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
3346
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
3347
- var SRC = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js")('src');
3348
- var $toString = __webpack_require__(/*! ./_function-to-string */ "./node_modules/core-js/modules/_function-to-string.js");
3349
- var TO_STRING = 'toString';
3350
- var TPL = ('' + $toString).split(TO_STRING);
3351
-
3352
- __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js").inspectSource = function (it) {
3353
- return $toString.call(it);
3354
- };
3355
-
3356
- (module.exports = function (O, key, val, safe) {
3357
- var isFunction = typeof val == 'function';
3358
- if (isFunction) has(val, 'name') || hide(val, 'name', key);
3359
- if (O[key] === val) return;
3360
- if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
3361
- if (O === global) {
3362
- O[key] = val;
3363
- } else if (!safe) {
3364
- delete O[key];
3365
- hide(O, key, val);
3366
- } else if (O[key]) {
3367
- O[key] = val;
3368
- } else {
3369
- hide(O, key, val);
3370
- }
3371
- // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
3372
- })(Function.prototype, TO_STRING, function toString() {
3373
- return typeof this == 'function' && this[SRC] || $toString.call(this);
3374
- });
3375
-
3376
-
3377
- /***/ }),
3378
-
3379
- /***/ "./node_modules/core-js/modules/_regexp-exec-abstract.js":
3380
- /*!***************************************************************!*\
3381
- !*** ./node_modules/core-js/modules/_regexp-exec-abstract.js ***!
3382
- \***************************************************************/
3383
- /*! no static exports found */
3384
- /***/ (function(module, exports, __webpack_require__) {
3385
-
3386
- "use strict";
3387
-
3388
-
3389
- var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
3390
- var builtinExec = RegExp.prototype.exec;
3391
-
3392
- // `RegExpExec` abstract operation
3393
- // https://tc39.github.io/ecma262/#sec-regexpexec
3394
- module.exports = function (R, S) {
3395
- var exec = R.exec;
3396
- if (typeof exec === 'function') {
3397
- var result = exec.call(R, S);
3398
- if (typeof result !== 'object') {
3399
- throw new TypeError('RegExp exec method returned something other than an Object or null');
3400
- }
3401
- return result;
3402
- }
3403
- if (classof(R) !== 'RegExp') {
3404
- throw new TypeError('RegExp#exec called on incompatible receiver');
3405
- }
3406
- return builtinExec.call(R, S);
3407
- };
3408
-
3409
-
3410
- /***/ }),
3411
-
3412
- /***/ "./node_modules/core-js/modules/_regexp-exec.js":
3413
- /*!******************************************************!*\
3414
- !*** ./node_modules/core-js/modules/_regexp-exec.js ***!
3415
- \******************************************************/
3416
- /*! no static exports found */
3417
- /***/ (function(module, exports, __webpack_require__) {
3418
-
3419
- "use strict";
3420
-
3421
-
3422
- var regexpFlags = __webpack_require__(/*! ./_flags */ "./node_modules/core-js/modules/_flags.js");
3423
-
3424
- var nativeExec = RegExp.prototype.exec;
3425
- // This always refers to the native implementation, because the
3426
- // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
3427
- // which loads this file before patching the method.
3428
- var nativeReplace = String.prototype.replace;
3429
-
3430
- var patchedExec = nativeExec;
3431
-
3432
- var LAST_INDEX = 'lastIndex';
3433
-
3434
- var UPDATES_LAST_INDEX_WRONG = (function () {
3435
- var re1 = /a/,
3436
- re2 = /b*/g;
3437
- nativeExec.call(re1, 'a');
3438
- nativeExec.call(re2, 'a');
3439
- return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
3440
- })();
3441
-
3442
- // nonparticipating capturing group, copied from es5-shim's String#split patch.
3443
- var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
3444
-
3445
- var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;
3446
-
3447
- if (PATCH) {
3448
- patchedExec = function exec(str) {
3449
- var re = this;
3450
- var lastIndex, reCopy, match, i;
3451
-
3452
- if (NPCG_INCLUDED) {
3453
- reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
3454
- }
3455
- if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];
3456
-
3457
- match = nativeExec.call(re, str);
3458
-
3459
- if (UPDATES_LAST_INDEX_WRONG && match) {
3460
- re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;
3461
- }
3462
- if (NPCG_INCLUDED && match && match.length > 1) {
3463
- // Fix browsers whose `exec` methods don't consistently return `undefined`
3464
- // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
3465
- // eslint-disable-next-line no-loop-func
3466
- nativeReplace.call(match[0], reCopy, function () {
3467
- for (i = 1; i < arguments.length - 2; i++) {
3468
- if (arguments[i] === undefined) match[i] = undefined;
3469
- }
3470
- });
3471
- }
3472
-
3473
- return match;
3474
- };
3475
- }
3476
-
3477
- module.exports = patchedExec;
3478
-
3479
-
3480
- /***/ }),
3481
-
3482
- /***/ "./node_modules/core-js/modules/_same-value.js":
3483
- /*!*****************************************************!*\
3484
- !*** ./node_modules/core-js/modules/_same-value.js ***!
3485
- \*****************************************************/
3486
- /*! no static exports found */
3487
- /***/ (function(module, exports) {
3488
-
3489
- // 7.2.9 SameValue(x, y)
3490
- module.exports = Object.is || function is(x, y) {
3491
- // eslint-disable-next-line no-self-compare
3492
- return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
3493
- };
3494
-
3495
-
3496
- /***/ }),
3497
-
3498
- /***/ "./node_modules/core-js/modules/_set-proto.js":
3499
- /*!****************************************************!*\
3500
- !*** ./node_modules/core-js/modules/_set-proto.js ***!
3501
- \****************************************************/
3502
- /*! no static exports found */
3503
- /***/ (function(module, exports, __webpack_require__) {
3504
-
3505
- // Works with __proto__ only. Old v8 can't work with null proto objects.
3506
- /* eslint-disable no-proto */
3507
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
3508
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
3509
- var check = function (O, proto) {
3510
- anObject(O);
3511
- if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
3512
- };
3513
- module.exports = {
3514
- set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
3515
- function (test, buggy, set) {
3516
- try {
3517
- set = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
3518
- set(test, []);
3519
- buggy = !(test instanceof Array);
3520
- } catch (e) { buggy = true; }
3521
- return function setPrototypeOf(O, proto) {
3522
- check(O, proto);
3523
- if (buggy) O.__proto__ = proto;
3524
- else set(O, proto);
3525
- return O;
3526
- };
3527
- }({}, false) : undefined),
3528
- check: check
3529
- };
3530
-
3531
-
3532
- /***/ }),
3533
-
3534
- /***/ "./node_modules/core-js/modules/_set-species.js":
3535
- /*!******************************************************!*\
3536
- !*** ./node_modules/core-js/modules/_set-species.js ***!
3537
- \******************************************************/
3538
- /*! no static exports found */
3539
- /***/ (function(module, exports, __webpack_require__) {
3540
-
3541
- "use strict";
3542
-
3543
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
3544
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
3545
- var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
3546
- var SPECIES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species');
3547
-
3548
- module.exports = function (KEY) {
3549
- var C = global[KEY];
3550
- if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
3551
- configurable: true,
3552
- get: function () { return this; }
3553
- });
3554
- };
3555
-
3556
-
3557
- /***/ }),
3558
-
3559
- /***/ "./node_modules/core-js/modules/_set-to-string-tag.js":
3560
- /*!************************************************************!*\
3561
- !*** ./node_modules/core-js/modules/_set-to-string-tag.js ***!
3562
- \************************************************************/
3563
- /*! no static exports found */
3564
- /***/ (function(module, exports, __webpack_require__) {
3565
-
3566
- var def = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
3567
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
3568
- var TAG = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toStringTag');
3569
-
3570
- module.exports = function (it, tag, stat) {
3571
- if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
3572
- };
3573
-
3574
-
3575
- /***/ }),
3576
-
3577
- /***/ "./node_modules/core-js/modules/_shared-key.js":
3578
- /*!*****************************************************!*\
3579
- !*** ./node_modules/core-js/modules/_shared-key.js ***!
3580
- \*****************************************************/
3581
- /*! no static exports found */
3582
- /***/ (function(module, exports, __webpack_require__) {
3583
-
3584
- var shared = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('keys');
3585
- var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
3586
- module.exports = function (key) {
3587
- return shared[key] || (shared[key] = uid(key));
3588
- };
3589
-
3590
-
3591
- /***/ }),
3592
-
3593
- /***/ "./node_modules/core-js/modules/_shared.js":
3594
- /*!*************************************************!*\
3595
- !*** ./node_modules/core-js/modules/_shared.js ***!
3596
- \*************************************************/
3597
- /*! no static exports found */
3598
- /***/ (function(module, exports, __webpack_require__) {
3599
-
3600
- var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
3601
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
3602
- var SHARED = '__core-js_shared__';
3603
- var store = global[SHARED] || (global[SHARED] = {});
3604
-
3605
- (module.exports = function (key, value) {
3606
- return store[key] || (store[key] = value !== undefined ? value : {});
3607
- })('versions', []).push({
3608
- version: core.version,
3609
- mode: __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
3610
- copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
3611
- });
3612
-
3613
-
3614
- /***/ }),
3615
-
3616
- /***/ "./node_modules/core-js/modules/_species-constructor.js":
3617
- /*!**************************************************************!*\
3618
- !*** ./node_modules/core-js/modules/_species-constructor.js ***!
3619
- \**************************************************************/
3620
- /*! no static exports found */
3621
- /***/ (function(module, exports, __webpack_require__) {
3622
-
3623
- // 7.3.20 SpeciesConstructor(O, defaultConstructor)
3624
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
3625
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
3626
- var SPECIES = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species');
3627
- module.exports = function (O, D) {
3628
- var C = anObject(O).constructor;
3629
- var S;
3630
- return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
3631
- };
3632
-
3633
-
3634
- /***/ }),
3635
-
3636
- /***/ "./node_modules/core-js/modules/_strict-method.js":
3637
- /*!********************************************************!*\
3638
- !*** ./node_modules/core-js/modules/_strict-method.js ***!
3639
- \********************************************************/
3640
- /*! no static exports found */
3641
- /***/ (function(module, exports, __webpack_require__) {
3642
-
3643
- "use strict";
3644
-
3645
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
3646
-
3647
- module.exports = function (method, arg) {
3648
- return !!method && fails(function () {
3649
- // eslint-disable-next-line no-useless-call
3650
- arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
3651
- });
3652
- };
3653
-
3654
-
3655
- /***/ }),
3656
-
3657
- /***/ "./node_modules/core-js/modules/_string-at.js":
3658
- /*!****************************************************!*\
3659
- !*** ./node_modules/core-js/modules/_string-at.js ***!
3660
- \****************************************************/
3661
- /*! no static exports found */
3662
- /***/ (function(module, exports, __webpack_require__) {
3663
-
3664
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
3665
- var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
3666
- // true -> String#at
3667
- // false -> String#codePointAt
3668
- module.exports = function (TO_STRING) {
3669
- return function (that, pos) {
3670
- var s = String(defined(that));
3671
- var i = toInteger(pos);
3672
- var l = s.length;
3673
- var a, b;
3674
- if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
3675
- a = s.charCodeAt(i);
3676
- return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
3677
- ? TO_STRING ? s.charAt(i) : a
3678
- : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
3679
- };
3680
- };
3681
-
3682
-
3683
- /***/ }),
3684
-
3685
- /***/ "./node_modules/core-js/modules/_string-context.js":
3686
- /*!*********************************************************!*\
3687
- !*** ./node_modules/core-js/modules/_string-context.js ***!
3688
- \*********************************************************/
3689
- /*! no static exports found */
3690
- /***/ (function(module, exports, __webpack_require__) {
3691
-
3692
- // helper for String#{startsWith, endsWith, includes}
3693
- var isRegExp = __webpack_require__(/*! ./_is-regexp */ "./node_modules/core-js/modules/_is-regexp.js");
3694
- var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
3695
-
3696
- module.exports = function (that, searchString, NAME) {
3697
- if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
3698
- return String(defined(that));
3699
- };
3700
-
3701
-
3702
- /***/ }),
3703
-
3704
- /***/ "./node_modules/core-js/modules/_string-html.js":
3705
- /*!******************************************************!*\
3706
- !*** ./node_modules/core-js/modules/_string-html.js ***!
3707
- \******************************************************/
3708
- /*! no static exports found */
3709
- /***/ (function(module, exports, __webpack_require__) {
3710
-
3711
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
3712
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
3713
- var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
3714
- var quot = /"/g;
3715
- // B.2.3.2.1 CreateHTML(string, tag, attribute, value)
3716
- var createHTML = function (string, tag, attribute, value) {
3717
- var S = String(defined(string));
3718
- var p1 = '<' + tag;
3719
- if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
3720
- return p1 + '>' + S + '</' + tag + '>';
3721
- };
3722
- module.exports = function (NAME, exec) {
3723
- var O = {};
3724
- O[NAME] = exec(createHTML);
3725
- $export($export.P + $export.F * fails(function () {
3726
- var test = ''[NAME]('"');
3727
- return test !== test.toLowerCase() || test.split('"').length > 3;
3728
- }), 'String', O);
3729
- };
3730
-
3731
-
3732
- /***/ }),
3733
-
3734
- /***/ "./node_modules/core-js/modules/_string-pad.js":
3735
- /*!*****************************************************!*\
3736
- !*** ./node_modules/core-js/modules/_string-pad.js ***!
3737
- \*****************************************************/
3738
- /*! no static exports found */
3739
- /***/ (function(module, exports, __webpack_require__) {
3740
-
3741
- // https://github.com/tc39/proposal-string-pad-start-end
3742
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
3743
- var repeat = __webpack_require__(/*! ./_string-repeat */ "./node_modules/core-js/modules/_string-repeat.js");
3744
- var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
3745
-
3746
- module.exports = function (that, maxLength, fillString, left) {
3747
- var S = String(defined(that));
3748
- var stringLength = S.length;
3749
- var fillStr = fillString === undefined ? ' ' : String(fillString);
3750
- var intMaxLength = toLength(maxLength);
3751
- if (intMaxLength <= stringLength || fillStr == '') return S;
3752
- var fillLen = intMaxLength - stringLength;
3753
- var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
3754
- if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
3755
- return left ? stringFiller + S : S + stringFiller;
3756
- };
3757
-
3758
-
3759
- /***/ }),
3760
-
3761
- /***/ "./node_modules/core-js/modules/_string-repeat.js":
3762
- /*!********************************************************!*\
3763
- !*** ./node_modules/core-js/modules/_string-repeat.js ***!
3764
- \********************************************************/
3765
- /*! no static exports found */
3766
- /***/ (function(module, exports, __webpack_require__) {
3767
-
3768
- "use strict";
3769
-
3770
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
3771
- var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
3772
-
3773
- module.exports = function repeat(count) {
3774
- var str = String(defined(this));
3775
- var res = '';
3776
- var n = toInteger(count);
3777
- if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
3778
- for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;
3779
- return res;
3780
- };
3781
-
3782
-
3783
- /***/ }),
3784
-
3785
- /***/ "./node_modules/core-js/modules/_string-trim.js":
3786
- /*!******************************************************!*\
3787
- !*** ./node_modules/core-js/modules/_string-trim.js ***!
3788
- \******************************************************/
3789
- /*! no static exports found */
3790
- /***/ (function(module, exports, __webpack_require__) {
3791
-
3792
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
3793
- var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
3794
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
3795
- var spaces = __webpack_require__(/*! ./_string-ws */ "./node_modules/core-js/modules/_string-ws.js");
3796
- var space = '[' + spaces + ']';
3797
- var non = '\u200b\u0085';
3798
- var ltrim = RegExp('^' + space + space + '*');
3799
- var rtrim = RegExp(space + space + '*$');
3800
-
3801
- var exporter = function (KEY, exec, ALIAS) {
3802
- var exp = {};
3803
- var FORCE = fails(function () {
3804
- return !!spaces[KEY]() || non[KEY]() != non;
3805
- });
3806
- var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
3807
- if (ALIAS) exp[ALIAS] = fn;
3808
- $export($export.P + $export.F * FORCE, 'String', exp);
3809
- };
3810
-
3811
- // 1 -> String#trimLeft
3812
- // 2 -> String#trimRight
3813
- // 3 -> String#trim
3814
- var trim = exporter.trim = function (string, TYPE) {
3815
- string = String(defined(string));
3816
- if (TYPE & 1) string = string.replace(ltrim, '');
3817
- if (TYPE & 2) string = string.replace(rtrim, '');
3818
- return string;
3819
- };
3820
-
3821
- module.exports = exporter;
3822
-
3823
-
3824
- /***/ }),
3825
-
3826
- /***/ "./node_modules/core-js/modules/_string-ws.js":
3827
- /*!****************************************************!*\
3828
- !*** ./node_modules/core-js/modules/_string-ws.js ***!
3829
- \****************************************************/
3830
- /*! no static exports found */
3831
- /***/ (function(module, exports) {
3832
-
3833
- module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
3834
- '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
3835
-
3836
-
3837
- /***/ }),
3838
-
3839
- /***/ "./node_modules/core-js/modules/_task.js":
3840
- /*!***********************************************!*\
3841
- !*** ./node_modules/core-js/modules/_task.js ***!
3842
- \***********************************************/
3843
- /*! no static exports found */
3844
- /***/ (function(module, exports, __webpack_require__) {
3845
-
3846
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
3847
- var invoke = __webpack_require__(/*! ./_invoke */ "./node_modules/core-js/modules/_invoke.js");
3848
- var html = __webpack_require__(/*! ./_html */ "./node_modules/core-js/modules/_html.js");
3849
- var cel = __webpack_require__(/*! ./_dom-create */ "./node_modules/core-js/modules/_dom-create.js");
3850
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
3851
- var process = global.process;
3852
- var setTask = global.setImmediate;
3853
- var clearTask = global.clearImmediate;
3854
- var MessageChannel = global.MessageChannel;
3855
- var Dispatch = global.Dispatch;
3856
- var counter = 0;
3857
- var queue = {};
3858
- var ONREADYSTATECHANGE = 'onreadystatechange';
3859
- var defer, channel, port;
3860
- var run = function () {
3861
- var id = +this;
3862
- // eslint-disable-next-line no-prototype-builtins
3863
- if (queue.hasOwnProperty(id)) {
3864
- var fn = queue[id];
3865
- delete queue[id];
3866
- fn();
3867
- }
3868
- };
3869
- var listener = function (event) {
3870
- run.call(event.data);
3871
- };
3872
- // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
3873
- if (!setTask || !clearTask) {
3874
- setTask = function setImmediate(fn) {
3875
- var args = [];
3876
- var i = 1;
3877
- while (arguments.length > i) args.push(arguments[i++]);
3878
- queue[++counter] = function () {
3879
- // eslint-disable-next-line no-new-func
3880
- invoke(typeof fn == 'function' ? fn : Function(fn), args);
3881
- };
3882
- defer(counter);
3883
- return counter;
3884
- };
3885
- clearTask = function clearImmediate(id) {
3886
- delete queue[id];
3887
- };
3888
- // Node.js 0.8-
3889
- if (__webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js")(process) == 'process') {
3890
- defer = function (id) {
3891
- process.nextTick(ctx(run, id, 1));
3892
- };
3893
- // Sphere (JS game engine) Dispatch API
3894
- } else if (Dispatch && Dispatch.now) {
3895
- defer = function (id) {
3896
- Dispatch.now(ctx(run, id, 1));
3897
- };
3898
- // Browsers with MessageChannel, includes WebWorkers
3899
- } else if (MessageChannel) {
3900
- channel = new MessageChannel();
3901
- port = channel.port2;
3902
- channel.port1.onmessage = listener;
3903
- defer = ctx(port.postMessage, port, 1);
3904
- // Browsers with postMessage, skip WebWorkers
3905
- // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
3906
- } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
3907
- defer = function (id) {
3908
- global.postMessage(id + '', '*');
3909
- };
3910
- global.addEventListener('message', listener, false);
3911
- // IE8-
3912
- } else if (ONREADYSTATECHANGE in cel('script')) {
3913
- defer = function (id) {
3914
- html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
3915
- html.removeChild(this);
3916
- run.call(id);
3917
- };
3918
- };
3919
- // Rest old browsers
3920
- } else {
3921
- defer = function (id) {
3922
- setTimeout(ctx(run, id, 1), 0);
3923
- };
3924
- }
3925
- }
3926
- module.exports = {
3927
- set: setTask,
3928
- clear: clearTask
3929
- };
3930
-
3931
-
3932
- /***/ }),
3933
-
3934
- /***/ "./node_modules/core-js/modules/_to-absolute-index.js":
3935
- /*!************************************************************!*\
3936
- !*** ./node_modules/core-js/modules/_to-absolute-index.js ***!
3937
- \************************************************************/
3938
- /*! no static exports found */
3939
- /***/ (function(module, exports, __webpack_require__) {
3940
-
3941
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
3942
- var max = Math.max;
3943
- var min = Math.min;
3944
- module.exports = function (index, length) {
3945
- index = toInteger(index);
3946
- return index < 0 ? max(index + length, 0) : min(index, length);
3947
- };
3948
-
3949
-
3950
- /***/ }),
3951
-
3952
- /***/ "./node_modules/core-js/modules/_to-index.js":
3953
- /*!***************************************************!*\
3954
- !*** ./node_modules/core-js/modules/_to-index.js ***!
3955
- \***************************************************/
3956
- /*! no static exports found */
3957
- /***/ (function(module, exports, __webpack_require__) {
3958
-
3959
- // https://tc39.github.io/ecma262/#sec-toindex
3960
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
3961
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
3962
- module.exports = function (it) {
3963
- if (it === undefined) return 0;
3964
- var number = toInteger(it);
3965
- var length = toLength(number);
3966
- if (number !== length) throw RangeError('Wrong length!');
3967
- return length;
3968
- };
3969
-
3970
-
3971
- /***/ }),
3972
-
3973
- /***/ "./node_modules/core-js/modules/_to-integer.js":
3974
- /*!*****************************************************!*\
3975
- !*** ./node_modules/core-js/modules/_to-integer.js ***!
3976
- \*****************************************************/
3977
- /*! no static exports found */
3978
- /***/ (function(module, exports) {
3979
-
3980
- // 7.1.4 ToInteger
3981
- var ceil = Math.ceil;
3982
- var floor = Math.floor;
3983
- module.exports = function (it) {
3984
- return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
3985
- };
3986
-
3987
-
3988
- /***/ }),
3989
-
3990
- /***/ "./node_modules/core-js/modules/_to-iobject.js":
3991
- /*!*****************************************************!*\
3992
- !*** ./node_modules/core-js/modules/_to-iobject.js ***!
3993
- \*****************************************************/
3994
- /*! no static exports found */
3995
- /***/ (function(module, exports, __webpack_require__) {
3996
-
3997
- // to indexed object, toObject with fallback for non-array-like ES3 strings
3998
- var IObject = __webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js");
3999
- var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
4000
- module.exports = function (it) {
4001
- return IObject(defined(it));
4002
- };
4003
-
4004
-
4005
- /***/ }),
4006
-
4007
- /***/ "./node_modules/core-js/modules/_to-length.js":
4008
- /*!****************************************************!*\
4009
- !*** ./node_modules/core-js/modules/_to-length.js ***!
4010
- \****************************************************/
4011
- /*! no static exports found */
4012
- /***/ (function(module, exports, __webpack_require__) {
4013
-
4014
- // 7.1.15 ToLength
4015
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
4016
- var min = Math.min;
4017
- module.exports = function (it) {
4018
- return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
4019
- };
4020
-
4021
-
4022
- /***/ }),
4023
-
4024
- /***/ "./node_modules/core-js/modules/_to-object.js":
4025
- /*!****************************************************!*\
4026
- !*** ./node_modules/core-js/modules/_to-object.js ***!
4027
- \****************************************************/
4028
- /*! no static exports found */
4029
- /***/ (function(module, exports, __webpack_require__) {
4030
-
4031
- // 7.1.13 ToObject(argument)
4032
- var defined = __webpack_require__(/*! ./_defined */ "./node_modules/core-js/modules/_defined.js");
4033
- module.exports = function (it) {
4034
- return Object(defined(it));
4035
- };
4036
-
4037
-
4038
- /***/ }),
4039
-
4040
- /***/ "./node_modules/core-js/modules/_to-primitive.js":
4041
- /*!*******************************************************!*\
4042
- !*** ./node_modules/core-js/modules/_to-primitive.js ***!
4043
- \*******************************************************/
4044
- /*! no static exports found */
4045
- /***/ (function(module, exports, __webpack_require__) {
4046
-
4047
- // 7.1.1 ToPrimitive(input [, PreferredType])
4048
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
4049
- // instead of the ES6 spec version, we didn't implement @@toPrimitive case
4050
- // and the second argument - flag - preferred type is a string
4051
- module.exports = function (it, S) {
4052
- if (!isObject(it)) return it;
4053
- var fn, val;
4054
- if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
4055
- if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
4056
- if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
4057
- throw TypeError("Can't convert object to primitive value");
4058
- };
4059
-
4060
-
4061
- /***/ }),
4062
-
4063
- /***/ "./node_modules/core-js/modules/_typed-array.js":
4064
- /*!******************************************************!*\
4065
- !*** ./node_modules/core-js/modules/_typed-array.js ***!
4066
- \******************************************************/
4067
- /*! no static exports found */
4068
- /***/ (function(module, exports, __webpack_require__) {
4069
-
4070
- "use strict";
4071
-
4072
- if (__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js")) {
4073
- var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
4074
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
4075
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
4076
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
4077
- var $typed = __webpack_require__(/*! ./_typed */ "./node_modules/core-js/modules/_typed.js");
4078
- var $buffer = __webpack_require__(/*! ./_typed-buffer */ "./node_modules/core-js/modules/_typed-buffer.js");
4079
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
4080
- var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
4081
- var propertyDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
4082
- var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
4083
- var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
4084
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
4085
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
4086
- var toIndex = __webpack_require__(/*! ./_to-index */ "./node_modules/core-js/modules/_to-index.js");
4087
- var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
4088
- var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
4089
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
4090
- var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
4091
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
4092
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
4093
- var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "./node_modules/core-js/modules/_is-array-iter.js");
4094
- var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
4095
- var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
4096
- var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
4097
- var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "./node_modules/core-js/modules/core.get-iterator-method.js");
4098
- var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
4099
- var wks = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
4100
- var createArrayMethod = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js");
4101
- var createArrayIncludes = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js");
4102
- var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "./node_modules/core-js/modules/_species-constructor.js");
4103
- var ArrayIterators = __webpack_require__(/*! ./es6.array.iterator */ "./node_modules/core-js/modules/es6.array.iterator.js");
4104
- var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
4105
- var $iterDetect = __webpack_require__(/*! ./_iter-detect */ "./node_modules/core-js/modules/_iter-detect.js");
4106
- var setSpecies = __webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js");
4107
- var arrayFill = __webpack_require__(/*! ./_array-fill */ "./node_modules/core-js/modules/_array-fill.js");
4108
- var arrayCopyWithin = __webpack_require__(/*! ./_array-copy-within */ "./node_modules/core-js/modules/_array-copy-within.js");
4109
- var $DP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
4110
- var $GOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
4111
- var dP = $DP.f;
4112
- var gOPD = $GOPD.f;
4113
- var RangeError = global.RangeError;
4114
- var TypeError = global.TypeError;
4115
- var Uint8Array = global.Uint8Array;
4116
- var ARRAY_BUFFER = 'ArrayBuffer';
4117
- var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;
4118
- var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
4119
- var PROTOTYPE = 'prototype';
4120
- var ArrayProto = Array[PROTOTYPE];
4121
- var $ArrayBuffer = $buffer.ArrayBuffer;
4122
- var $DataView = $buffer.DataView;
4123
- var arrayForEach = createArrayMethod(0);
4124
- var arrayFilter = createArrayMethod(2);
4125
- var arraySome = createArrayMethod(3);
4126
- var arrayEvery = createArrayMethod(4);
4127
- var arrayFind = createArrayMethod(5);
4128
- var arrayFindIndex = createArrayMethod(6);
4129
- var arrayIncludes = createArrayIncludes(true);
4130
- var arrayIndexOf = createArrayIncludes(false);
4131
- var arrayValues = ArrayIterators.values;
4132
- var arrayKeys = ArrayIterators.keys;
4133
- var arrayEntries = ArrayIterators.entries;
4134
- var arrayLastIndexOf = ArrayProto.lastIndexOf;
4135
- var arrayReduce = ArrayProto.reduce;
4136
- var arrayReduceRight = ArrayProto.reduceRight;
4137
- var arrayJoin = ArrayProto.join;
4138
- var arraySort = ArrayProto.sort;
4139
- var arraySlice = ArrayProto.slice;
4140
- var arrayToString = ArrayProto.toString;
4141
- var arrayToLocaleString = ArrayProto.toLocaleString;
4142
- var ITERATOR = wks('iterator');
4143
- var TAG = wks('toStringTag');
4144
- var TYPED_CONSTRUCTOR = uid('typed_constructor');
4145
- var DEF_CONSTRUCTOR = uid('def_constructor');
4146
- var ALL_CONSTRUCTORS = $typed.CONSTR;
4147
- var TYPED_ARRAY = $typed.TYPED;
4148
- var VIEW = $typed.VIEW;
4149
- var WRONG_LENGTH = 'Wrong length!';
4150
-
4151
- var $map = createArrayMethod(1, function (O, length) {
4152
- return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
4153
- });
4154
-
4155
- var LITTLE_ENDIAN = fails(function () {
4156
- // eslint-disable-next-line no-undef
4157
- return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
4158
- });
4159
-
4160
- var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {
4161
- new Uint8Array(1).set({});
4162
- });
4163
-
4164
- var toOffset = function (it, BYTES) {
4165
- var offset = toInteger(it);
4166
- if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');
4167
- return offset;
4168
- };
4169
-
4170
- var validate = function (it) {
4171
- if (isObject(it) && TYPED_ARRAY in it) return it;
4172
- throw TypeError(it + ' is not a typed array!');
4173
- };
4174
-
4175
- var allocate = function (C, length) {
4176
- if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {
4177
- throw TypeError('It is not a typed array constructor!');
4178
- } return new C(length);
4179
- };
4180
-
4181
- var speciesFromList = function (O, list) {
4182
- return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
4183
- };
4184
-
4185
- var fromList = function (C, list) {
4186
- var index = 0;
4187
- var length = list.length;
4188
- var result = allocate(C, length);
4189
- while (length > index) result[index] = list[index++];
4190
- return result;
4191
- };
4192
-
4193
- var addGetter = function (it, key, internal) {
4194
- dP(it, key, { get: function () { return this._d[internal]; } });
4195
- };
4196
-
4197
- var $from = function from(source /* , mapfn, thisArg */) {
4198
- var O = toObject(source);
4199
- var aLen = arguments.length;
4200
- var mapfn = aLen > 1 ? arguments[1] : undefined;
4201
- var mapping = mapfn !== undefined;
4202
- var iterFn = getIterFn(O);
4203
- var i, length, values, result, step, iterator;
4204
- if (iterFn != undefined && !isArrayIter(iterFn)) {
4205
- for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {
4206
- values.push(step.value);
4207
- } O = values;
4208
- }
4209
- if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);
4210
- for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {
4211
- result[i] = mapping ? mapfn(O[i], i) : O[i];
4212
- }
4213
- return result;
4214
- };
4215
-
4216
- var $of = function of(/* ...items */) {
4217
- var index = 0;
4218
- var length = arguments.length;
4219
- var result = allocate(this, length);
4220
- while (length > index) result[index] = arguments[index++];
4221
- return result;
4222
- };
4223
-
4224
- // iOS Safari 6.x fails here
4225
- var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });
4226
-
4227
- var $toLocaleString = function toLocaleString() {
4228
- return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
4229
- };
4230
-
4231
- var proto = {
4232
- copyWithin: function copyWithin(target, start /* , end */) {
4233
- return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
4234
- },
4235
- every: function every(callbackfn /* , thisArg */) {
4236
- return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
4237
- },
4238
- fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars
4239
- return arrayFill.apply(validate(this), arguments);
4240
- },
4241
- filter: function filter(callbackfn /* , thisArg */) {
4242
- return speciesFromList(this, arrayFilter(validate(this), callbackfn,
4243
- arguments.length > 1 ? arguments[1] : undefined));
4244
- },
4245
- find: function find(predicate /* , thisArg */) {
4246
- return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
4247
- },
4248
- findIndex: function findIndex(predicate /* , thisArg */) {
4249
- return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
4250
- },
4251
- forEach: function forEach(callbackfn /* , thisArg */) {
4252
- arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
4253
- },
4254
- indexOf: function indexOf(searchElement /* , fromIndex */) {
4255
- return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
4256
- },
4257
- includes: function includes(searchElement /* , fromIndex */) {
4258
- return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
4259
- },
4260
- join: function join(separator) { // eslint-disable-line no-unused-vars
4261
- return arrayJoin.apply(validate(this), arguments);
4262
- },
4263
- lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars
4264
- return arrayLastIndexOf.apply(validate(this), arguments);
4265
- },
4266
- map: function map(mapfn /* , thisArg */) {
4267
- return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
4268
- },
4269
- reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
4270
- return arrayReduce.apply(validate(this), arguments);
4271
- },
4272
- reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
4273
- return arrayReduceRight.apply(validate(this), arguments);
4274
- },
4275
- reverse: function reverse() {
4276
- var that = this;
4277
- var length = validate(that).length;
4278
- var middle = Math.floor(length / 2);
4279
- var index = 0;
4280
- var value;
4281
- while (index < middle) {
4282
- value = that[index];
4283
- that[index++] = that[--length];
4284
- that[length] = value;
4285
- } return that;
4286
- },
4287
- some: function some(callbackfn /* , thisArg */) {
4288
- return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
4289
- },
4290
- sort: function sort(comparefn) {
4291
- return arraySort.call(validate(this), comparefn);
4292
- },
4293
- subarray: function subarray(begin, end) {
4294
- var O = validate(this);
4295
- var length = O.length;
4296
- var $begin = toAbsoluteIndex(begin, length);
4297
- return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
4298
- O.buffer,
4299
- O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
4300
- toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)
4301
- );
4302
- }
4303
- };
4304
-
4305
- var $slice = function slice(start, end) {
4306
- return speciesFromList(this, arraySlice.call(validate(this), start, end));
4307
- };
4308
-
4309
- var $set = function set(arrayLike /* , offset */) {
4310
- validate(this);
4311
- var offset = toOffset(arguments[1], 1);
4312
- var length = this.length;
4313
- var src = toObject(arrayLike);
4314
- var len = toLength(src.length);
4315
- var index = 0;
4316
- if (len + offset > length) throw RangeError(WRONG_LENGTH);
4317
- while (index < len) this[offset + index] = src[index++];
4318
- };
4319
-
4320
- var $iterators = {
4321
- entries: function entries() {
4322
- return arrayEntries.call(validate(this));
4323
- },
4324
- keys: function keys() {
4325
- return arrayKeys.call(validate(this));
4326
- },
4327
- values: function values() {
4328
- return arrayValues.call(validate(this));
4329
- }
4330
- };
4331
-
4332
- var isTAIndex = function (target, key) {
4333
- return isObject(target)
4334
- && target[TYPED_ARRAY]
4335
- && typeof key != 'symbol'
4336
- && key in target
4337
- && String(+key) == String(key);
4338
- };
4339
- var $getDesc = function getOwnPropertyDescriptor(target, key) {
4340
- return isTAIndex(target, key = toPrimitive(key, true))
4341
- ? propertyDesc(2, target[key])
4342
- : gOPD(target, key);
4343
- };
4344
- var $setDesc = function defineProperty(target, key, desc) {
4345
- if (isTAIndex(target, key = toPrimitive(key, true))
4346
- && isObject(desc)
4347
- && has(desc, 'value')
4348
- && !has(desc, 'get')
4349
- && !has(desc, 'set')
4350
- // TODO: add validation descriptor w/o calling accessors
4351
- && !desc.configurable
4352
- && (!has(desc, 'writable') || desc.writable)
4353
- && (!has(desc, 'enumerable') || desc.enumerable)
4354
- ) {
4355
- target[key] = desc.value;
4356
- return target;
4357
- } return dP(target, key, desc);
4358
- };
4359
-
4360
- if (!ALL_CONSTRUCTORS) {
4361
- $GOPD.f = $getDesc;
4362
- $DP.f = $setDesc;
4363
- }
4364
-
4365
- $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
4366
- getOwnPropertyDescriptor: $getDesc,
4367
- defineProperty: $setDesc
4368
- });
4369
-
4370
- if (fails(function () { arrayToString.call({}); })) {
4371
- arrayToString = arrayToLocaleString = function toString() {
4372
- return arrayJoin.call(this);
4373
- };
4374
- }
4375
-
4376
- var $TypedArrayPrototype$ = redefineAll({}, proto);
4377
- redefineAll($TypedArrayPrototype$, $iterators);
4378
- hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
4379
- redefineAll($TypedArrayPrototype$, {
4380
- slice: $slice,
4381
- set: $set,
4382
- constructor: function () { /* noop */ },
4383
- toString: arrayToString,
4384
- toLocaleString: $toLocaleString
4385
- });
4386
- addGetter($TypedArrayPrototype$, 'buffer', 'b');
4387
- addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
4388
- addGetter($TypedArrayPrototype$, 'byteLength', 'l');
4389
- addGetter($TypedArrayPrototype$, 'length', 'e');
4390
- dP($TypedArrayPrototype$, TAG, {
4391
- get: function () { return this[TYPED_ARRAY]; }
4392
- });
4393
-
4394
- // eslint-disable-next-line max-statements
4395
- module.exports = function (KEY, BYTES, wrapper, CLAMPED) {
4396
- CLAMPED = !!CLAMPED;
4397
- var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';
4398
- var GETTER = 'get' + KEY;
4399
- var SETTER = 'set' + KEY;
4400
- var TypedArray = global[NAME];
4401
- var Base = TypedArray || {};
4402
- var TAC = TypedArray && getPrototypeOf(TypedArray);
4403
- var FORCED = !TypedArray || !$typed.ABV;
4404
- var O = {};
4405
- var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
4406
- var getter = function (that, index) {
4407
- var data = that._d;
4408
- return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
4409
- };
4410
- var setter = function (that, index, value) {
4411
- var data = that._d;
4412
- if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
4413
- data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
4414
- };
4415
- var addElement = function (that, index) {
4416
- dP(that, index, {
4417
- get: function () {
4418
- return getter(this, index);
4419
- },
4420
- set: function (value) {
4421
- return setter(this, index, value);
4422
- },
4423
- enumerable: true
4424
- });
4425
- };
4426
- if (FORCED) {
4427
- TypedArray = wrapper(function (that, data, $offset, $length) {
4428
- anInstance(that, TypedArray, NAME, '_d');
4429
- var index = 0;
4430
- var offset = 0;
4431
- var buffer, byteLength, length, klass;
4432
- if (!isObject(data)) {
4433
- length = toIndex(data);
4434
- byteLength = length * BYTES;
4435
- buffer = new $ArrayBuffer(byteLength);
4436
- } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
4437
- buffer = data;
4438
- offset = toOffset($offset, BYTES);
4439
- var $len = data.byteLength;
4440
- if ($length === undefined) {
4441
- if ($len % BYTES) throw RangeError(WRONG_LENGTH);
4442
- byteLength = $len - offset;
4443
- if (byteLength < 0) throw RangeError(WRONG_LENGTH);
4444
- } else {
4445
- byteLength = toLength($length) * BYTES;
4446
- if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);
4447
- }
4448
- length = byteLength / BYTES;
4449
- } else if (TYPED_ARRAY in data) {
4450
- return fromList(TypedArray, data);
4451
- } else {
4452
- return $from.call(TypedArray, data);
4453
- }
4454
- hide(that, '_d', {
4455
- b: buffer,
4456
- o: offset,
4457
- l: byteLength,
4458
- e: length,
4459
- v: new $DataView(buffer)
4460
- });
4461
- while (index < length) addElement(that, index++);
4462
- });
4463
- TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
4464
- hide(TypedArrayPrototype, 'constructor', TypedArray);
4465
- } else if (!fails(function () {
4466
- TypedArray(1);
4467
- }) || !fails(function () {
4468
- new TypedArray(-1); // eslint-disable-line no-new
4469
- }) || !$iterDetect(function (iter) {
4470
- new TypedArray(); // eslint-disable-line no-new
4471
- new TypedArray(null); // eslint-disable-line no-new
4472
- new TypedArray(1.5); // eslint-disable-line no-new
4473
- new TypedArray(iter); // eslint-disable-line no-new
4474
- }, true)) {
4475
- TypedArray = wrapper(function (that, data, $offset, $length) {
4476
- anInstance(that, TypedArray, NAME);
4477
- var klass;
4478
- // `ws` module bug, temporarily remove validation length for Uint8Array
4479
- // https://github.com/websockets/ws/pull/645
4480
- if (!isObject(data)) return new Base(toIndex(data));
4481
- if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
4482
- return $length !== undefined
4483
- ? new Base(data, toOffset($offset, BYTES), $length)
4484
- : $offset !== undefined
4485
- ? new Base(data, toOffset($offset, BYTES))
4486
- : new Base(data);
4487
- }
4488
- if (TYPED_ARRAY in data) return fromList(TypedArray, data);
4489
- return $from.call(TypedArray, data);
4490
- });
4491
- arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {
4492
- if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);
4493
- });
4494
- TypedArray[PROTOTYPE] = TypedArrayPrototype;
4495
- if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;
4496
- }
4497
- var $nativeIterator = TypedArrayPrototype[ITERATOR];
4498
- var CORRECT_ITER_NAME = !!$nativeIterator
4499
- && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);
4500
- var $iterator = $iterators.values;
4501
- hide(TypedArray, TYPED_CONSTRUCTOR, true);
4502
- hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
4503
- hide(TypedArrayPrototype, VIEW, true);
4504
- hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
4505
-
4506
- if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {
4507
- dP(TypedArrayPrototype, TAG, {
4508
- get: function () { return NAME; }
4509
- });
4510
- }
4511
-
4512
- O[NAME] = TypedArray;
4513
-
4514
- $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
4515
-
4516
- $export($export.S, NAME, {
4517
- BYTES_PER_ELEMENT: BYTES
4518
- });
4519
-
4520
- $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {
4521
- from: $from,
4522
- of: $of
4523
- });
4524
-
4525
- if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
4526
-
4527
- $export($export.P, NAME, proto);
4528
-
4529
- setSpecies(NAME);
4530
-
4531
- $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });
4532
-
4533
- $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
4534
-
4535
- if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;
4536
-
4537
- $export($export.P + $export.F * fails(function () {
4538
- new TypedArray(1).slice();
4539
- }), NAME, { slice: $slice });
4540
-
4541
- $export($export.P + $export.F * (fails(function () {
4542
- return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();
4543
- }) || !fails(function () {
4544
- TypedArrayPrototype.toLocaleString.call([1, 2]);
4545
- })), NAME, { toLocaleString: $toLocaleString });
4546
-
4547
- Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
4548
- if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);
4549
- };
4550
- } else module.exports = function () { /* empty */ };
4551
-
4552
-
4553
- /***/ }),
4554
-
4555
- /***/ "./node_modules/core-js/modules/_typed-buffer.js":
4556
- /*!*******************************************************!*\
4557
- !*** ./node_modules/core-js/modules/_typed-buffer.js ***!
4558
- \*******************************************************/
4559
- /*! no static exports found */
4560
- /***/ (function(module, exports, __webpack_require__) {
4561
-
4562
- "use strict";
4563
-
4564
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
4565
- var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
4566
- var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
4567
- var $typed = __webpack_require__(/*! ./_typed */ "./node_modules/core-js/modules/_typed.js");
4568
- var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
4569
- var redefineAll = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js");
4570
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
4571
- var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
4572
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
4573
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
4574
- var toIndex = __webpack_require__(/*! ./_to-index */ "./node_modules/core-js/modules/_to-index.js");
4575
- var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
4576
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
4577
- var arrayFill = __webpack_require__(/*! ./_array-fill */ "./node_modules/core-js/modules/_array-fill.js");
4578
- var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
4579
- var ARRAY_BUFFER = 'ArrayBuffer';
4580
- var DATA_VIEW = 'DataView';
4581
- var PROTOTYPE = 'prototype';
4582
- var WRONG_LENGTH = 'Wrong length!';
4583
- var WRONG_INDEX = 'Wrong index!';
4584
- var $ArrayBuffer = global[ARRAY_BUFFER];
4585
- var $DataView = global[DATA_VIEW];
4586
- var Math = global.Math;
4587
- var RangeError = global.RangeError;
4588
- // eslint-disable-next-line no-shadow-restricted-names
4589
- var Infinity = global.Infinity;
4590
- var BaseBuffer = $ArrayBuffer;
4591
- var abs = Math.abs;
4592
- var pow = Math.pow;
4593
- var floor = Math.floor;
4594
- var log = Math.log;
4595
- var LN2 = Math.LN2;
4596
- var BUFFER = 'buffer';
4597
- var BYTE_LENGTH = 'byteLength';
4598
- var BYTE_OFFSET = 'byteOffset';
4599
- var $BUFFER = DESCRIPTORS ? '_b' : BUFFER;
4600
- var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;
4601
- var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
4602
-
4603
- // IEEE754 conversions based on https://github.com/feross/ieee754
4604
- function packIEEE754(value, mLen, nBytes) {
4605
- var buffer = new Array(nBytes);
4606
- var eLen = nBytes * 8 - mLen - 1;
4607
- var eMax = (1 << eLen) - 1;
4608
- var eBias = eMax >> 1;
4609
- var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;
4610
- var i = 0;
4611
- var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
4612
- var e, m, c;
4613
- value = abs(value);
4614
- // eslint-disable-next-line no-self-compare
4615
- if (value != value || value === Infinity) {
4616
- // eslint-disable-next-line no-self-compare
4617
- m = value != value ? 1 : 0;
4618
- e = eMax;
4619
- } else {
4620
- e = floor(log(value) / LN2);
4621
- if (value * (c = pow(2, -e)) < 1) {
4622
- e--;
4623
- c *= 2;
4624
- }
4625
- if (e + eBias >= 1) {
4626
- value += rt / c;
4627
- } else {
4628
- value += rt * pow(2, 1 - eBias);
4629
- }
4630
- if (value * c >= 2) {
4631
- e++;
4632
- c /= 2;
4633
- }
4634
- if (e + eBias >= eMax) {
4635
- m = 0;
4636
- e = eMax;
4637
- } else if (e + eBias >= 1) {
4638
- m = (value * c - 1) * pow(2, mLen);
4639
- e = e + eBias;
4640
- } else {
4641
- m = value * pow(2, eBias - 1) * pow(2, mLen);
4642
- e = 0;
4643
- }
4644
- }
4645
- for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
4646
- e = e << mLen | m;
4647
- eLen += mLen;
4648
- for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
4649
- buffer[--i] |= s * 128;
4650
- return buffer;
4651
- }
4652
- function unpackIEEE754(buffer, mLen, nBytes) {
4653
- var eLen = nBytes * 8 - mLen - 1;
4654
- var eMax = (1 << eLen) - 1;
4655
- var eBias = eMax >> 1;
4656
- var nBits = eLen - 7;
4657
- var i = nBytes - 1;
4658
- var s = buffer[i--];
4659
- var e = s & 127;
4660
- var m;
4661
- s >>= 7;
4662
- for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
4663
- m = e & (1 << -nBits) - 1;
4664
- e >>= -nBits;
4665
- nBits += mLen;
4666
- for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
4667
- if (e === 0) {
4668
- e = 1 - eBias;
4669
- } else if (e === eMax) {
4670
- return m ? NaN : s ? -Infinity : Infinity;
4671
- } else {
4672
- m = m + pow(2, mLen);
4673
- e = e - eBias;
4674
- } return (s ? -1 : 1) * m * pow(2, e - mLen);
4675
- }
4676
-
4677
- function unpackI32(bytes) {
4678
- return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
4679
- }
4680
- function packI8(it) {
4681
- return [it & 0xff];
4682
- }
4683
- function packI16(it) {
4684
- return [it & 0xff, it >> 8 & 0xff];
4685
- }
4686
- function packI32(it) {
4687
- return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
4688
- }
4689
- function packF64(it) {
4690
- return packIEEE754(it, 52, 8);
4691
- }
4692
- function packF32(it) {
4693
- return packIEEE754(it, 23, 4);
4694
- }
4695
-
4696
- function addGetter(C, key, internal) {
4697
- dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });
4698
- }
4699
-
4700
- function get(view, bytes, index, isLittleEndian) {
4701
- var numIndex = +index;
4702
- var intIndex = toIndex(numIndex);
4703
- if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
4704
- var store = view[$BUFFER]._b;
4705
- var start = intIndex + view[$OFFSET];
4706
- var pack = store.slice(start, start + bytes);
4707
- return isLittleEndian ? pack : pack.reverse();
4708
- }
4709
- function set(view, bytes, index, conversion, value, isLittleEndian) {
4710
- var numIndex = +index;
4711
- var intIndex = toIndex(numIndex);
4712
- if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
4713
- var store = view[$BUFFER]._b;
4714
- var start = intIndex + view[$OFFSET];
4715
- var pack = conversion(+value);
4716
- for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
4717
- }
4718
-
4719
- if (!$typed.ABV) {
4720
- $ArrayBuffer = function ArrayBuffer(length) {
4721
- anInstance(this, $ArrayBuffer, ARRAY_BUFFER);
4722
- var byteLength = toIndex(length);
4723
- this._b = arrayFill.call(new Array(byteLength), 0);
4724
- this[$LENGTH] = byteLength;
4725
- };
4726
-
4727
- $DataView = function DataView(buffer, byteOffset, byteLength) {
4728
- anInstance(this, $DataView, DATA_VIEW);
4729
- anInstance(buffer, $ArrayBuffer, DATA_VIEW);
4730
- var bufferLength = buffer[$LENGTH];
4731
- var offset = toInteger(byteOffset);
4732
- if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');
4733
- byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
4734
- if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);
4735
- this[$BUFFER] = buffer;
4736
- this[$OFFSET] = offset;
4737
- this[$LENGTH] = byteLength;
4738
- };
4739
-
4740
- if (DESCRIPTORS) {
4741
- addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
4742
- addGetter($DataView, BUFFER, '_b');
4743
- addGetter($DataView, BYTE_LENGTH, '_l');
4744
- addGetter($DataView, BYTE_OFFSET, '_o');
4745
- }
4746
-
4747
- redefineAll($DataView[PROTOTYPE], {
4748
- getInt8: function getInt8(byteOffset) {
4749
- return get(this, 1, byteOffset)[0] << 24 >> 24;
4750
- },
4751
- getUint8: function getUint8(byteOffset) {
4752
- return get(this, 1, byteOffset)[0];
4753
- },
4754
- getInt16: function getInt16(byteOffset /* , littleEndian */) {
4755
- var bytes = get(this, 2, byteOffset, arguments[1]);
4756
- return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
4757
- },
4758
- getUint16: function getUint16(byteOffset /* , littleEndian */) {
4759
- var bytes = get(this, 2, byteOffset, arguments[1]);
4760
- return bytes[1] << 8 | bytes[0];
4761
- },
4762
- getInt32: function getInt32(byteOffset /* , littleEndian */) {
4763
- return unpackI32(get(this, 4, byteOffset, arguments[1]));
4764
- },
4765
- getUint32: function getUint32(byteOffset /* , littleEndian */) {
4766
- return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
4767
- },
4768
- getFloat32: function getFloat32(byteOffset /* , littleEndian */) {
4769
- return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
4770
- },
4771
- getFloat64: function getFloat64(byteOffset /* , littleEndian */) {
4772
- return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
4773
- },
4774
- setInt8: function setInt8(byteOffset, value) {
4775
- set(this, 1, byteOffset, packI8, value);
4776
- },
4777
- setUint8: function setUint8(byteOffset, value) {
4778
- set(this, 1, byteOffset, packI8, value);
4779
- },
4780
- setInt16: function setInt16(byteOffset, value /* , littleEndian */) {
4781
- set(this, 2, byteOffset, packI16, value, arguments[2]);
4782
- },
4783
- setUint16: function setUint16(byteOffset, value /* , littleEndian */) {
4784
- set(this, 2, byteOffset, packI16, value, arguments[2]);
4785
- },
4786
- setInt32: function setInt32(byteOffset, value /* , littleEndian */) {
4787
- set(this, 4, byteOffset, packI32, value, arguments[2]);
4788
- },
4789
- setUint32: function setUint32(byteOffset, value /* , littleEndian */) {
4790
- set(this, 4, byteOffset, packI32, value, arguments[2]);
4791
- },
4792
- setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {
4793
- set(this, 4, byteOffset, packF32, value, arguments[2]);
4794
- },
4795
- setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {
4796
- set(this, 8, byteOffset, packF64, value, arguments[2]);
4797
- }
4798
- });
4799
- } else {
4800
- if (!fails(function () {
4801
- $ArrayBuffer(1);
4802
- }) || !fails(function () {
4803
- new $ArrayBuffer(-1); // eslint-disable-line no-new
4804
- }) || fails(function () {
4805
- new $ArrayBuffer(); // eslint-disable-line no-new
4806
- new $ArrayBuffer(1.5); // eslint-disable-line no-new
4807
- new $ArrayBuffer(NaN); // eslint-disable-line no-new
4808
- return $ArrayBuffer.name != ARRAY_BUFFER;
4809
- })) {
4810
- $ArrayBuffer = function ArrayBuffer(length) {
4811
- anInstance(this, $ArrayBuffer);
4812
- return new BaseBuffer(toIndex(length));
4813
- };
4814
- var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
4815
- for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {
4816
- if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);
4817
- }
4818
- if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;
4819
- }
4820
- // iOS Safari 7.x bug
4821
- var view = new $DataView(new $ArrayBuffer(2));
4822
- var $setInt8 = $DataView[PROTOTYPE].setInt8;
4823
- view.setInt8(0, 2147483648);
4824
- view.setInt8(1, 2147483649);
4825
- if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {
4826
- setInt8: function setInt8(byteOffset, value) {
4827
- $setInt8.call(this, byteOffset, value << 24 >> 24);
4828
- },
4829
- setUint8: function setUint8(byteOffset, value) {
4830
- $setInt8.call(this, byteOffset, value << 24 >> 24);
4831
- }
4832
- }, true);
4833
- }
4834
- setToStringTag($ArrayBuffer, ARRAY_BUFFER);
4835
- setToStringTag($DataView, DATA_VIEW);
4836
- hide($DataView[PROTOTYPE], $typed.VIEW, true);
4837
- exports[ARRAY_BUFFER] = $ArrayBuffer;
4838
- exports[DATA_VIEW] = $DataView;
4839
-
4840
-
4841
- /***/ }),
4842
-
4843
- /***/ "./node_modules/core-js/modules/_typed.js":
4844
- /*!************************************************!*\
4845
- !*** ./node_modules/core-js/modules/_typed.js ***!
4846
- \************************************************/
4847
- /*! no static exports found */
4848
- /***/ (function(module, exports, __webpack_require__) {
4849
-
4850
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
4851
- var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
4852
- var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
4853
- var TYPED = uid('typed_array');
4854
- var VIEW = uid('view');
4855
- var ABV = !!(global.ArrayBuffer && global.DataView);
4856
- var CONSTR = ABV;
4857
- var i = 0;
4858
- var l = 9;
4859
- var Typed;
4860
-
4861
- var TypedArrayConstructors = (
4862
- 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
4863
- ).split(',');
4864
-
4865
- while (i < l) {
4866
- if (Typed = global[TypedArrayConstructors[i++]]) {
4867
- hide(Typed.prototype, TYPED, true);
4868
- hide(Typed.prototype, VIEW, true);
4869
- } else CONSTR = false;
4870
- }
4871
-
4872
- module.exports = {
4873
- ABV: ABV,
4874
- CONSTR: CONSTR,
4875
- TYPED: TYPED,
4876
- VIEW: VIEW
4877
- };
4878
-
4879
-
4880
- /***/ }),
4881
-
4882
- /***/ "./node_modules/core-js/modules/_uid.js":
4883
- /*!**********************************************!*\
4884
- !*** ./node_modules/core-js/modules/_uid.js ***!
4885
- \**********************************************/
4886
- /*! no static exports found */
4887
- /***/ (function(module, exports) {
4888
-
4889
- var id = 0;
4890
- var px = Math.random();
4891
- module.exports = function (key) {
4892
- return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
4893
- };
4894
-
4895
-
4896
- /***/ }),
4897
-
4898
- /***/ "./node_modules/core-js/modules/_user-agent.js":
4899
- /*!*****************************************************!*\
4900
- !*** ./node_modules/core-js/modules/_user-agent.js ***!
4901
- \*****************************************************/
4902
- /*! no static exports found */
4903
- /***/ (function(module, exports, __webpack_require__) {
4904
-
4905
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
4906
- var navigator = global.navigator;
4907
-
4908
- module.exports = navigator && navigator.userAgent || '';
4909
-
4910
-
4911
- /***/ }),
4912
-
4913
- /***/ "./node_modules/core-js/modules/_validate-collection.js":
4914
- /*!**************************************************************!*\
4915
- !*** ./node_modules/core-js/modules/_validate-collection.js ***!
4916
- \**************************************************************/
4917
- /*! no static exports found */
4918
- /***/ (function(module, exports, __webpack_require__) {
4919
-
4920
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
4921
- module.exports = function (it, TYPE) {
4922
- if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
4923
- return it;
4924
- };
4925
-
4926
-
4927
- /***/ }),
4928
-
4929
- /***/ "./node_modules/core-js/modules/_wks-define.js":
4930
- /*!*****************************************************!*\
4931
- !*** ./node_modules/core-js/modules/_wks-define.js ***!
4932
- \*****************************************************/
4933
- /*! no static exports found */
4934
- /***/ (function(module, exports, __webpack_require__) {
4935
-
4936
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
4937
- var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
4938
- var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
4939
- var wksExt = __webpack_require__(/*! ./_wks-ext */ "./node_modules/core-js/modules/_wks-ext.js");
4940
- var defineProperty = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
4941
- module.exports = function (name) {
4942
- var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
4943
- if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
4944
- };
4945
-
4946
-
4947
- /***/ }),
4948
-
4949
- /***/ "./node_modules/core-js/modules/_wks-ext.js":
4950
- /*!**************************************************!*\
4951
- !*** ./node_modules/core-js/modules/_wks-ext.js ***!
4952
- \**************************************************/
4953
- /*! no static exports found */
4954
- /***/ (function(module, exports, __webpack_require__) {
4955
-
4956
- exports.f = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
4957
-
4958
-
4959
- /***/ }),
4960
-
4961
- /***/ "./node_modules/core-js/modules/_wks.js":
4962
- /*!**********************************************!*\
4963
- !*** ./node_modules/core-js/modules/_wks.js ***!
4964
- \**********************************************/
4965
- /*! no static exports found */
4966
- /***/ (function(module, exports, __webpack_require__) {
4967
-
4968
- var store = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js")('wks');
4969
- var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
4970
- var Symbol = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Symbol;
4971
- var USE_SYMBOL = typeof Symbol == 'function';
4972
-
4973
- var $exports = module.exports = function (name) {
4974
- return store[name] || (store[name] =
4975
- USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
4976
- };
4977
-
4978
- $exports.store = store;
4979
-
4980
-
4981
- /***/ }),
4982
-
4983
- /***/ "./node_modules/core-js/modules/core.get-iterator-method.js":
4984
- /*!******************************************************************!*\
4985
- !*** ./node_modules/core-js/modules/core.get-iterator-method.js ***!
4986
- \******************************************************************/
4987
- /*! no static exports found */
4988
- /***/ (function(module, exports, __webpack_require__) {
4989
-
4990
- var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
4991
- var ITERATOR = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('iterator');
4992
- var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
4993
- module.exports = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js").getIteratorMethod = function (it) {
4994
- if (it != undefined) return it[ITERATOR]
4995
- || it['@@iterator']
4996
- || Iterators[classof(it)];
4997
- };
4998
-
4999
-
5000
- /***/ }),
5001
-
5002
- /***/ "./node_modules/core-js/modules/es6.array.copy-within.js":
5003
- /*!***************************************************************!*\
5004
- !*** ./node_modules/core-js/modules/es6.array.copy-within.js ***!
5005
- \***************************************************************/
5006
- /*! no static exports found */
5007
- /***/ (function(module, exports, __webpack_require__) {
5008
-
5009
- // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
5010
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5011
-
5012
- $export($export.P, 'Array', { copyWithin: __webpack_require__(/*! ./_array-copy-within */ "./node_modules/core-js/modules/_array-copy-within.js") });
5013
-
5014
- __webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")('copyWithin');
5015
-
5016
-
5017
- /***/ }),
5018
-
5019
- /***/ "./node_modules/core-js/modules/es6.array.every.js":
5020
- /*!*********************************************************!*\
5021
- !*** ./node_modules/core-js/modules/es6.array.every.js ***!
5022
- \*********************************************************/
5023
- /*! no static exports found */
5024
- /***/ (function(module, exports, __webpack_require__) {
5025
-
5026
- "use strict";
5027
-
5028
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5029
- var $every = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(4);
5030
-
5031
- $export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].every, true), 'Array', {
5032
- // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
5033
- every: function every(callbackfn /* , thisArg */) {
5034
- return $every(this, callbackfn, arguments[1]);
5035
- }
5036
- });
5037
-
5038
-
5039
- /***/ }),
5040
-
5041
- /***/ "./node_modules/core-js/modules/es6.array.fill.js":
5042
- /*!********************************************************!*\
5043
- !*** ./node_modules/core-js/modules/es6.array.fill.js ***!
5044
- \********************************************************/
5045
- /*! no static exports found */
5046
- /***/ (function(module, exports, __webpack_require__) {
5047
-
5048
- // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
5049
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5050
-
5051
- $export($export.P, 'Array', { fill: __webpack_require__(/*! ./_array-fill */ "./node_modules/core-js/modules/_array-fill.js") });
5052
-
5053
- __webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")('fill');
5054
-
5055
-
5056
- /***/ }),
5057
-
5058
- /***/ "./node_modules/core-js/modules/es6.array.filter.js":
5059
- /*!**********************************************************!*\
5060
- !*** ./node_modules/core-js/modules/es6.array.filter.js ***!
5061
- \**********************************************************/
5062
- /*! no static exports found */
5063
- /***/ (function(module, exports, __webpack_require__) {
5064
-
5065
- "use strict";
5066
-
5067
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5068
- var $filter = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(2);
5069
-
5070
- $export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].filter, true), 'Array', {
5071
- // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
5072
- filter: function filter(callbackfn /* , thisArg */) {
5073
- return $filter(this, callbackfn, arguments[1]);
5074
- }
5075
- });
5076
-
5077
-
5078
- /***/ }),
5079
-
5080
- /***/ "./node_modules/core-js/modules/es6.array.find-index.js":
5081
- /*!**************************************************************!*\
5082
- !*** ./node_modules/core-js/modules/es6.array.find-index.js ***!
5083
- \**************************************************************/
5084
- /*! no static exports found */
5085
- /***/ (function(module, exports, __webpack_require__) {
5086
-
5087
- "use strict";
5088
-
5089
- // 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
5090
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5091
- var $find = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(6);
5092
- var KEY = 'findIndex';
5093
- var forced = true;
5094
- // Shouldn't skip holes
5095
- if (KEY in []) Array(1)[KEY](function () { forced = false; });
5096
- $export($export.P + $export.F * forced, 'Array', {
5097
- findIndex: function findIndex(callbackfn /* , that = undefined */) {
5098
- return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
5099
- }
5100
- });
5101
- __webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")(KEY);
5102
-
5103
-
5104
- /***/ }),
5105
-
5106
- /***/ "./node_modules/core-js/modules/es6.array.find.js":
5107
- /*!********************************************************!*\
5108
- !*** ./node_modules/core-js/modules/es6.array.find.js ***!
5109
- \********************************************************/
5110
- /*! no static exports found */
5111
- /***/ (function(module, exports, __webpack_require__) {
5112
-
5113
- "use strict";
5114
-
5115
- // 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
5116
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5117
- var $find = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(5);
5118
- var KEY = 'find';
5119
- var forced = true;
5120
- // Shouldn't skip holes
5121
- if (KEY in []) Array(1)[KEY](function () { forced = false; });
5122
- $export($export.P + $export.F * forced, 'Array', {
5123
- find: function find(callbackfn /* , that = undefined */) {
5124
- return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
5125
- }
5126
- });
5127
- __webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")(KEY);
5128
-
5129
-
5130
- /***/ }),
5131
-
5132
- /***/ "./node_modules/core-js/modules/es6.array.for-each.js":
5133
- /*!************************************************************!*\
5134
- !*** ./node_modules/core-js/modules/es6.array.for-each.js ***!
5135
- \************************************************************/
5136
- /*! no static exports found */
5137
- /***/ (function(module, exports, __webpack_require__) {
5138
-
5139
- "use strict";
5140
-
5141
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5142
- var $forEach = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(0);
5143
- var STRICT = __webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].forEach, true);
5144
-
5145
- $export($export.P + $export.F * !STRICT, 'Array', {
5146
- // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
5147
- forEach: function forEach(callbackfn /* , thisArg */) {
5148
- return $forEach(this, callbackfn, arguments[1]);
5149
- }
5150
- });
5151
-
5152
-
5153
- /***/ }),
5154
-
5155
- /***/ "./node_modules/core-js/modules/es6.array.from.js":
5156
- /*!********************************************************!*\
5157
- !*** ./node_modules/core-js/modules/es6.array.from.js ***!
5158
- \********************************************************/
5159
- /*! no static exports found */
5160
- /***/ (function(module, exports, __webpack_require__) {
5161
-
5162
- "use strict";
5163
-
5164
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
5165
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5166
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
5167
- var call = __webpack_require__(/*! ./_iter-call */ "./node_modules/core-js/modules/_iter-call.js");
5168
- var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "./node_modules/core-js/modules/_is-array-iter.js");
5169
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
5170
- var createProperty = __webpack_require__(/*! ./_create-property */ "./node_modules/core-js/modules/_create-property.js");
5171
- var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "./node_modules/core-js/modules/core.get-iterator-method.js");
5172
-
5173
- $export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ "./node_modules/core-js/modules/_iter-detect.js")(function (iter) { Array.from(iter); }), 'Array', {
5174
- // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
5175
- from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
5176
- var O = toObject(arrayLike);
5177
- var C = typeof this == 'function' ? this : Array;
5178
- var aLen = arguments.length;
5179
- var mapfn = aLen > 1 ? arguments[1] : undefined;
5180
- var mapping = mapfn !== undefined;
5181
- var index = 0;
5182
- var iterFn = getIterFn(O);
5183
- var length, result, step, iterator;
5184
- if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
5185
- // if object isn't iterable or it's array with default iterator - use simple case
5186
- if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
5187
- for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
5188
- createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
5189
- }
5190
- } else {
5191
- length = toLength(O.length);
5192
- for (result = new C(length); length > index; index++) {
5193
- createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
5194
- }
5195
- }
5196
- result.length = index;
5197
- return result;
5198
- }
5199
- });
5200
-
5201
-
5202
- /***/ }),
5203
-
5204
- /***/ "./node_modules/core-js/modules/es6.array.index-of.js":
5205
- /*!************************************************************!*\
5206
- !*** ./node_modules/core-js/modules/es6.array.index-of.js ***!
5207
- \************************************************************/
5208
- /*! no static exports found */
5209
- /***/ (function(module, exports, __webpack_require__) {
5210
-
5211
- "use strict";
5212
-
5213
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5214
- var $indexOf = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js")(false);
5215
- var $native = [].indexOf;
5216
- var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;
5217
-
5218
- $export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")($native)), 'Array', {
5219
- // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
5220
- indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
5221
- return NEGATIVE_ZERO
5222
- // convert -0 to +0
5223
- ? $native.apply(this, arguments) || 0
5224
- : $indexOf(this, searchElement, arguments[1]);
5225
- }
5226
- });
5227
-
5228
-
5229
- /***/ }),
5230
-
5231
- /***/ "./node_modules/core-js/modules/es6.array.is-array.js":
5232
- /*!************************************************************!*\
5233
- !*** ./node_modules/core-js/modules/es6.array.is-array.js ***!
5234
- \************************************************************/
5235
- /*! no static exports found */
5236
- /***/ (function(module, exports, __webpack_require__) {
5237
-
5238
- // 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
5239
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5240
-
5241
- $export($export.S, 'Array', { isArray: __webpack_require__(/*! ./_is-array */ "./node_modules/core-js/modules/_is-array.js") });
5242
-
5243
-
5244
- /***/ }),
5245
-
5246
- /***/ "./node_modules/core-js/modules/es6.array.iterator.js":
5247
- /*!************************************************************!*\
5248
- !*** ./node_modules/core-js/modules/es6.array.iterator.js ***!
5249
- \************************************************************/
5250
- /*! no static exports found */
5251
- /***/ (function(module, exports, __webpack_require__) {
5252
-
5253
- "use strict";
5254
-
5255
- var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js");
5256
- var step = __webpack_require__(/*! ./_iter-step */ "./node_modules/core-js/modules/_iter-step.js");
5257
- var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
5258
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
5259
-
5260
- // 22.1.3.4 Array.prototype.entries()
5261
- // 22.1.3.13 Array.prototype.keys()
5262
- // 22.1.3.29 Array.prototype.values()
5263
- // 22.1.3.30 Array.prototype[@@iterator]()
5264
- module.exports = __webpack_require__(/*! ./_iter-define */ "./node_modules/core-js/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
5265
- this._t = toIObject(iterated); // target
5266
- this._i = 0; // next index
5267
- this._k = kind; // kind
5268
- // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
5269
- }, function () {
5270
- var O = this._t;
5271
- var kind = this._k;
5272
- var index = this._i++;
5273
- if (!O || index >= O.length) {
5274
- this._t = undefined;
5275
- return step(1);
5276
- }
5277
- if (kind == 'keys') return step(0, index);
5278
- if (kind == 'values') return step(0, O[index]);
5279
- return step(0, [index, O[index]]);
5280
- }, 'values');
5281
-
5282
- // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
5283
- Iterators.Arguments = Iterators.Array;
5284
-
5285
- addToUnscopables('keys');
5286
- addToUnscopables('values');
5287
- addToUnscopables('entries');
5288
-
5289
-
5290
- /***/ }),
5291
-
5292
- /***/ "./node_modules/core-js/modules/es6.array.join.js":
5293
- /*!********************************************************!*\
5294
- !*** ./node_modules/core-js/modules/es6.array.join.js ***!
5295
- \********************************************************/
5296
- /*! no static exports found */
5297
- /***/ (function(module, exports, __webpack_require__) {
5298
-
5299
- "use strict";
5300
-
5301
- // 22.1.3.13 Array.prototype.join(separator)
5302
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5303
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
5304
- var arrayJoin = [].join;
5305
-
5306
- // fallback for not array-like strings
5307
- $export($export.P + $export.F * (__webpack_require__(/*! ./_iobject */ "./node_modules/core-js/modules/_iobject.js") != Object || !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")(arrayJoin)), 'Array', {
5308
- join: function join(separator) {
5309
- return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
5310
- }
5311
- });
5312
-
5313
-
5314
- /***/ }),
5315
-
5316
- /***/ "./node_modules/core-js/modules/es6.array.last-index-of.js":
5317
- /*!*****************************************************************!*\
5318
- !*** ./node_modules/core-js/modules/es6.array.last-index-of.js ***!
5319
- \*****************************************************************/
5320
- /*! no static exports found */
5321
- /***/ (function(module, exports, __webpack_require__) {
5322
-
5323
- "use strict";
5324
-
5325
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5326
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
5327
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
5328
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
5329
- var $native = [].lastIndexOf;
5330
- var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;
5331
-
5332
- $export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")($native)), 'Array', {
5333
- // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
5334
- lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
5335
- // convert -0 to +0
5336
- if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;
5337
- var O = toIObject(this);
5338
- var length = toLength(O.length);
5339
- var index = length - 1;
5340
- if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));
5341
- if (index < 0) index = length + index;
5342
- for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;
5343
- return -1;
5344
- }
5345
- });
5346
-
5347
-
5348
- /***/ }),
5349
-
5350
- /***/ "./node_modules/core-js/modules/es6.array.map.js":
5351
- /*!*******************************************************!*\
5352
- !*** ./node_modules/core-js/modules/es6.array.map.js ***!
5353
- \*******************************************************/
5354
- /*! no static exports found */
5355
- /***/ (function(module, exports, __webpack_require__) {
5356
-
5357
- "use strict";
5358
-
5359
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5360
- var $map = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(1);
5361
-
5362
- $export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].map, true), 'Array', {
5363
- // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
5364
- map: function map(callbackfn /* , thisArg */) {
5365
- return $map(this, callbackfn, arguments[1]);
5366
- }
5367
- });
5368
-
5369
-
5370
- /***/ }),
5371
-
5372
- /***/ "./node_modules/core-js/modules/es6.array.of.js":
5373
- /*!******************************************************!*\
5374
- !*** ./node_modules/core-js/modules/es6.array.of.js ***!
5375
- \******************************************************/
5376
- /*! no static exports found */
5377
- /***/ (function(module, exports, __webpack_require__) {
5378
-
5379
- "use strict";
5380
-
5381
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5382
- var createProperty = __webpack_require__(/*! ./_create-property */ "./node_modules/core-js/modules/_create-property.js");
5383
-
5384
- // WebKit Array.of isn't generic
5385
- $export($export.S + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
5386
- function F() { /* empty */ }
5387
- return !(Array.of.call(F) instanceof F);
5388
- }), 'Array', {
5389
- // 22.1.2.3 Array.of( ...items)
5390
- of: function of(/* ...args */) {
5391
- var index = 0;
5392
- var aLen = arguments.length;
5393
- var result = new (typeof this == 'function' ? this : Array)(aLen);
5394
- while (aLen > index) createProperty(result, index, arguments[index++]);
5395
- result.length = aLen;
5396
- return result;
5397
- }
5398
- });
5399
-
5400
-
5401
- /***/ }),
5402
-
5403
- /***/ "./node_modules/core-js/modules/es6.array.reduce-right.js":
5404
- /*!****************************************************************!*\
5405
- !*** ./node_modules/core-js/modules/es6.array.reduce-right.js ***!
5406
- \****************************************************************/
5407
- /*! no static exports found */
5408
- /***/ (function(module, exports, __webpack_require__) {
5409
-
5410
- "use strict";
5411
-
5412
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5413
- var $reduce = __webpack_require__(/*! ./_array-reduce */ "./node_modules/core-js/modules/_array-reduce.js");
5414
-
5415
- $export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].reduceRight, true), 'Array', {
5416
- // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
5417
- reduceRight: function reduceRight(callbackfn /* , initialValue */) {
5418
- return $reduce(this, callbackfn, arguments.length, arguments[1], true);
5419
- }
5420
- });
5421
-
5422
-
5423
- /***/ }),
5424
-
5425
- /***/ "./node_modules/core-js/modules/es6.array.reduce.js":
5426
- /*!**********************************************************!*\
5427
- !*** ./node_modules/core-js/modules/es6.array.reduce.js ***!
5428
- \**********************************************************/
5429
- /*! no static exports found */
5430
- /***/ (function(module, exports, __webpack_require__) {
5431
-
5432
- "use strict";
5433
-
5434
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5435
- var $reduce = __webpack_require__(/*! ./_array-reduce */ "./node_modules/core-js/modules/_array-reduce.js");
5436
-
5437
- $export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].reduce, true), 'Array', {
5438
- // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
5439
- reduce: function reduce(callbackfn /* , initialValue */) {
5440
- return $reduce(this, callbackfn, arguments.length, arguments[1], false);
5441
- }
5442
- });
5443
-
5444
-
5445
- /***/ }),
5446
-
5447
- /***/ "./node_modules/core-js/modules/es6.array.slice.js":
5448
- /*!*********************************************************!*\
5449
- !*** ./node_modules/core-js/modules/es6.array.slice.js ***!
5450
- \*********************************************************/
5451
- /*! no static exports found */
5452
- /***/ (function(module, exports, __webpack_require__) {
5453
-
5454
- "use strict";
5455
-
5456
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5457
- var html = __webpack_require__(/*! ./_html */ "./node_modules/core-js/modules/_html.js");
5458
- var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
5459
- var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
5460
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
5461
- var arraySlice = [].slice;
5462
-
5463
- // fallback for not array-like ES3 strings and DOM objects
5464
- $export($export.P + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
5465
- if (html) arraySlice.call(html);
5466
- }), 'Array', {
5467
- slice: function slice(begin, end) {
5468
- var len = toLength(this.length);
5469
- var klass = cof(this);
5470
- end = end === undefined ? len : end;
5471
- if (klass == 'Array') return arraySlice.call(this, begin, end);
5472
- var start = toAbsoluteIndex(begin, len);
5473
- var upTo = toAbsoluteIndex(end, len);
5474
- var size = toLength(upTo - start);
5475
- var cloned = new Array(size);
5476
- var i = 0;
5477
- for (; i < size; i++) cloned[i] = klass == 'String'
5478
- ? this.charAt(start + i)
5479
- : this[start + i];
5480
- return cloned;
5481
- }
5482
- });
5483
-
5484
-
5485
- /***/ }),
5486
-
5487
- /***/ "./node_modules/core-js/modules/es6.array.some.js":
5488
- /*!********************************************************!*\
5489
- !*** ./node_modules/core-js/modules/es6.array.some.js ***!
5490
- \********************************************************/
5491
- /*! no static exports found */
5492
- /***/ (function(module, exports, __webpack_require__) {
5493
-
5494
- "use strict";
5495
-
5496
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5497
- var $some = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(3);
5498
-
5499
- $export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")([].some, true), 'Array', {
5500
- // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
5501
- some: function some(callbackfn /* , thisArg */) {
5502
- return $some(this, callbackfn, arguments[1]);
5503
- }
5504
- });
5505
-
5506
-
5507
- /***/ }),
5508
-
5509
- /***/ "./node_modules/core-js/modules/es6.array.sort.js":
5510
- /*!********************************************************!*\
5511
- !*** ./node_modules/core-js/modules/es6.array.sort.js ***!
5512
- \********************************************************/
5513
- /*! no static exports found */
5514
- /***/ (function(module, exports, __webpack_require__) {
5515
-
5516
- "use strict";
5517
-
5518
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5519
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
5520
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
5521
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
5522
- var $sort = [].sort;
5523
- var test = [1, 2, 3];
5524
-
5525
- $export($export.P + $export.F * (fails(function () {
5526
- // IE8-
5527
- test.sort(undefined);
5528
- }) || !fails(function () {
5529
- // V8 bug
5530
- test.sort(null);
5531
- // Old WebKit
5532
- }) || !__webpack_require__(/*! ./_strict-method */ "./node_modules/core-js/modules/_strict-method.js")($sort)), 'Array', {
5533
- // 22.1.3.25 Array.prototype.sort(comparefn)
5534
- sort: function sort(comparefn) {
5535
- return comparefn === undefined
5536
- ? $sort.call(toObject(this))
5537
- : $sort.call(toObject(this), aFunction(comparefn));
5538
- }
5539
- });
5540
-
5541
-
5542
- /***/ }),
5543
-
5544
- /***/ "./node_modules/core-js/modules/es6.array.species.js":
5545
- /*!***********************************************************!*\
5546
- !*** ./node_modules/core-js/modules/es6.array.species.js ***!
5547
- \***********************************************************/
5548
- /*! no static exports found */
5549
- /***/ (function(module, exports, __webpack_require__) {
5550
-
5551
- __webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js")('Array');
5552
-
5553
-
5554
- /***/ }),
5555
-
5556
- /***/ "./node_modules/core-js/modules/es6.date.now.js":
5557
- /*!******************************************************!*\
5558
- !*** ./node_modules/core-js/modules/es6.date.now.js ***!
5559
- \******************************************************/
5560
- /*! no static exports found */
5561
- /***/ (function(module, exports, __webpack_require__) {
5562
-
5563
- // 20.3.3.1 / 15.9.4.4 Date.now()
5564
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5565
-
5566
- $export($export.S, 'Date', { now: function () { return new Date().getTime(); } });
5567
-
5568
-
5569
- /***/ }),
5570
-
5571
- /***/ "./node_modules/core-js/modules/es6.date.to-iso-string.js":
5572
- /*!****************************************************************!*\
5573
- !*** ./node_modules/core-js/modules/es6.date.to-iso-string.js ***!
5574
- \****************************************************************/
5575
- /*! no static exports found */
5576
- /***/ (function(module, exports, __webpack_require__) {
5577
-
5578
- // 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
5579
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5580
- var toISOString = __webpack_require__(/*! ./_date-to-iso-string */ "./node_modules/core-js/modules/_date-to-iso-string.js");
5581
-
5582
- // PhantomJS / old WebKit has a broken implementations
5583
- $export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {
5584
- toISOString: toISOString
5585
- });
5586
-
5587
-
5588
- /***/ }),
5589
-
5590
- /***/ "./node_modules/core-js/modules/es6.date.to-json.js":
5591
- /*!**********************************************************!*\
5592
- !*** ./node_modules/core-js/modules/es6.date.to-json.js ***!
5593
- \**********************************************************/
5594
- /*! no static exports found */
5595
- /***/ (function(module, exports, __webpack_require__) {
5596
-
5597
- "use strict";
5598
-
5599
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5600
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
5601
- var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
5602
-
5603
- $export($export.P + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
5604
- return new Date(NaN).toJSON() !== null
5605
- || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;
5606
- }), 'Date', {
5607
- // eslint-disable-next-line no-unused-vars
5608
- toJSON: function toJSON(key) {
5609
- var O = toObject(this);
5610
- var pv = toPrimitive(O);
5611
- return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
5612
- }
5613
- });
5614
-
5615
-
5616
- /***/ }),
5617
-
5618
- /***/ "./node_modules/core-js/modules/es6.date.to-primitive.js":
5619
- /*!***************************************************************!*\
5620
- !*** ./node_modules/core-js/modules/es6.date.to-primitive.js ***!
5621
- \***************************************************************/
5622
- /*! no static exports found */
5623
- /***/ (function(module, exports, __webpack_require__) {
5624
-
5625
- var TO_PRIMITIVE = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toPrimitive');
5626
- var proto = Date.prototype;
5627
-
5628
- if (!(TO_PRIMITIVE in proto)) __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")(proto, TO_PRIMITIVE, __webpack_require__(/*! ./_date-to-primitive */ "./node_modules/core-js/modules/_date-to-primitive.js"));
5629
-
5630
-
5631
- /***/ }),
5632
-
5633
- /***/ "./node_modules/core-js/modules/es6.date.to-string.js":
5634
- /*!************************************************************!*\
5635
- !*** ./node_modules/core-js/modules/es6.date.to-string.js ***!
5636
- \************************************************************/
5637
- /*! no static exports found */
5638
- /***/ (function(module, exports, __webpack_require__) {
5639
-
5640
- var DateProto = Date.prototype;
5641
- var INVALID_DATE = 'Invalid Date';
5642
- var TO_STRING = 'toString';
5643
- var $toString = DateProto[TO_STRING];
5644
- var getTime = DateProto.getTime;
5645
- if (new Date(NaN) + '' != INVALID_DATE) {
5646
- __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(DateProto, TO_STRING, function toString() {
5647
- var value = getTime.call(this);
5648
- // eslint-disable-next-line no-self-compare
5649
- return value === value ? $toString.call(this) : INVALID_DATE;
5650
- });
5651
- }
5652
-
5653
-
5654
- /***/ }),
5655
-
5656
- /***/ "./node_modules/core-js/modules/es6.function.bind.js":
5657
- /*!***********************************************************!*\
5658
- !*** ./node_modules/core-js/modules/es6.function.bind.js ***!
5659
- \***********************************************************/
5660
- /*! no static exports found */
5661
- /***/ (function(module, exports, __webpack_require__) {
5662
-
5663
- // 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
5664
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5665
-
5666
- $export($export.P, 'Function', { bind: __webpack_require__(/*! ./_bind */ "./node_modules/core-js/modules/_bind.js") });
5667
-
5668
-
5669
- /***/ }),
5670
-
5671
- /***/ "./node_modules/core-js/modules/es6.function.has-instance.js":
5672
- /*!*******************************************************************!*\
5673
- !*** ./node_modules/core-js/modules/es6.function.has-instance.js ***!
5674
- \*******************************************************************/
5675
- /*! no static exports found */
5676
- /***/ (function(module, exports, __webpack_require__) {
5677
-
5678
- "use strict";
5679
-
5680
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
5681
- var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
5682
- var HAS_INSTANCE = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('hasInstance');
5683
- var FunctionProto = Function.prototype;
5684
- // 19.2.3.6 Function.prototype[@@hasInstance](V)
5685
- if (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f(FunctionProto, HAS_INSTANCE, { value: function (O) {
5686
- if (typeof this != 'function' || !isObject(O)) return false;
5687
- if (!isObject(this.prototype)) return O instanceof this;
5688
- // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
5689
- while (O = getPrototypeOf(O)) if (this.prototype === O) return true;
5690
- return false;
5691
- } });
5692
-
5693
-
5694
- /***/ }),
5695
-
5696
- /***/ "./node_modules/core-js/modules/es6.function.name.js":
5697
- /*!***********************************************************!*\
5698
- !*** ./node_modules/core-js/modules/es6.function.name.js ***!
5699
- \***********************************************************/
5700
- /*! no static exports found */
5701
- /***/ (function(module, exports, __webpack_require__) {
5702
-
5703
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
5704
- var FProto = Function.prototype;
5705
- var nameRE = /^\s*function ([^ (]*)/;
5706
- var NAME = 'name';
5707
-
5708
- // 19.2.4.2 name
5709
- NAME in FProto || __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && dP(FProto, NAME, {
5710
- configurable: true,
5711
- get: function () {
5712
- try {
5713
- return ('' + this).match(nameRE)[1];
5714
- } catch (e) {
5715
- return '';
5716
- }
5717
- }
5718
- });
5719
-
5720
-
5721
- /***/ }),
5722
-
5723
- /***/ "./node_modules/core-js/modules/es6.map.js":
5724
- /*!*************************************************!*\
5725
- !*** ./node_modules/core-js/modules/es6.map.js ***!
5726
- \*************************************************/
5727
- /*! no static exports found */
5728
- /***/ (function(module, exports, __webpack_require__) {
5729
-
5730
- "use strict";
5731
-
5732
- var strong = __webpack_require__(/*! ./_collection-strong */ "./node_modules/core-js/modules/_collection-strong.js");
5733
- var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
5734
- var MAP = 'Map';
5735
-
5736
- // 23.1 Map Objects
5737
- module.exports = __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(MAP, function (get) {
5738
- return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
5739
- }, {
5740
- // 23.1.3.6 Map.prototype.get(key)
5741
- get: function get(key) {
5742
- var entry = strong.getEntry(validate(this, MAP), key);
5743
- return entry && entry.v;
5744
- },
5745
- // 23.1.3.9 Map.prototype.set(key, value)
5746
- set: function set(key, value) {
5747
- return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
5748
- }
5749
- }, strong, true);
5750
-
5751
-
5752
- /***/ }),
5753
-
5754
- /***/ "./node_modules/core-js/modules/es6.math.acosh.js":
5755
- /*!********************************************************!*\
5756
- !*** ./node_modules/core-js/modules/es6.math.acosh.js ***!
5757
- \********************************************************/
5758
- /*! no static exports found */
5759
- /***/ (function(module, exports, __webpack_require__) {
5760
-
5761
- // 20.2.2.3 Math.acosh(x)
5762
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5763
- var log1p = __webpack_require__(/*! ./_math-log1p */ "./node_modules/core-js/modules/_math-log1p.js");
5764
- var sqrt = Math.sqrt;
5765
- var $acosh = Math.acosh;
5766
-
5767
- $export($export.S + $export.F * !($acosh
5768
- // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
5769
- && Math.floor($acosh(Number.MAX_VALUE)) == 710
5770
- // Tor Browser bug: Math.acosh(Infinity) -> NaN
5771
- && $acosh(Infinity) == Infinity
5772
- ), 'Math', {
5773
- acosh: function acosh(x) {
5774
- return (x = +x) < 1 ? NaN : x > 94906265.62425156
5775
- ? Math.log(x) + Math.LN2
5776
- : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
5777
- }
5778
- });
5779
-
5780
-
5781
- /***/ }),
5782
-
5783
- /***/ "./node_modules/core-js/modules/es6.math.asinh.js":
5784
- /*!********************************************************!*\
5785
- !*** ./node_modules/core-js/modules/es6.math.asinh.js ***!
5786
- \********************************************************/
5787
- /*! no static exports found */
5788
- /***/ (function(module, exports, __webpack_require__) {
5789
-
5790
- // 20.2.2.5 Math.asinh(x)
5791
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5792
- var $asinh = Math.asinh;
5793
-
5794
- function asinh(x) {
5795
- return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
5796
- }
5797
-
5798
- // Tor Browser bug: Math.asinh(0) -> -0
5799
- $export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });
5800
-
5801
-
5802
- /***/ }),
5803
-
5804
- /***/ "./node_modules/core-js/modules/es6.math.atanh.js":
5805
- /*!********************************************************!*\
5806
- !*** ./node_modules/core-js/modules/es6.math.atanh.js ***!
5807
- \********************************************************/
5808
- /*! no static exports found */
5809
- /***/ (function(module, exports, __webpack_require__) {
5810
-
5811
- // 20.2.2.7 Math.atanh(x)
5812
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5813
- var $atanh = Math.atanh;
5814
-
5815
- // Tor Browser bug: Math.atanh(-0) -> 0
5816
- $export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {
5817
- atanh: function atanh(x) {
5818
- return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
5819
- }
5820
- });
5821
-
5822
-
5823
- /***/ }),
5824
-
5825
- /***/ "./node_modules/core-js/modules/es6.math.cbrt.js":
5826
- /*!*******************************************************!*\
5827
- !*** ./node_modules/core-js/modules/es6.math.cbrt.js ***!
5828
- \*******************************************************/
5829
- /*! no static exports found */
5830
- /***/ (function(module, exports, __webpack_require__) {
5831
-
5832
- // 20.2.2.9 Math.cbrt(x)
5833
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5834
- var sign = __webpack_require__(/*! ./_math-sign */ "./node_modules/core-js/modules/_math-sign.js");
5835
-
5836
- $export($export.S, 'Math', {
5837
- cbrt: function cbrt(x) {
5838
- return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
5839
- }
5840
- });
5841
-
5842
-
5843
- /***/ }),
5844
-
5845
- /***/ "./node_modules/core-js/modules/es6.math.clz32.js":
5846
- /*!********************************************************!*\
5847
- !*** ./node_modules/core-js/modules/es6.math.clz32.js ***!
5848
- \********************************************************/
5849
- /*! no static exports found */
5850
- /***/ (function(module, exports, __webpack_require__) {
5851
-
5852
- // 20.2.2.11 Math.clz32(x)
5853
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5854
-
5855
- $export($export.S, 'Math', {
5856
- clz32: function clz32(x) {
5857
- return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
5858
- }
5859
- });
5860
-
5861
-
5862
- /***/ }),
5863
-
5864
- /***/ "./node_modules/core-js/modules/es6.math.cosh.js":
5865
- /*!*******************************************************!*\
5866
- !*** ./node_modules/core-js/modules/es6.math.cosh.js ***!
5867
- \*******************************************************/
5868
- /*! no static exports found */
5869
- /***/ (function(module, exports, __webpack_require__) {
5870
-
5871
- // 20.2.2.12 Math.cosh(x)
5872
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5873
- var exp = Math.exp;
5874
-
5875
- $export($export.S, 'Math', {
5876
- cosh: function cosh(x) {
5877
- return (exp(x = +x) + exp(-x)) / 2;
5878
- }
5879
- });
5880
-
5881
-
5882
- /***/ }),
5883
-
5884
- /***/ "./node_modules/core-js/modules/es6.math.expm1.js":
5885
- /*!********************************************************!*\
5886
- !*** ./node_modules/core-js/modules/es6.math.expm1.js ***!
5887
- \********************************************************/
5888
- /*! no static exports found */
5889
- /***/ (function(module, exports, __webpack_require__) {
5890
-
5891
- // 20.2.2.14 Math.expm1(x)
5892
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5893
- var $expm1 = __webpack_require__(/*! ./_math-expm1 */ "./node_modules/core-js/modules/_math-expm1.js");
5894
-
5895
- $export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });
5896
-
5897
-
5898
- /***/ }),
5899
-
5900
- /***/ "./node_modules/core-js/modules/es6.math.fround.js":
5901
- /*!*********************************************************!*\
5902
- !*** ./node_modules/core-js/modules/es6.math.fround.js ***!
5903
- \*********************************************************/
5904
- /*! no static exports found */
5905
- /***/ (function(module, exports, __webpack_require__) {
5906
-
5907
- // 20.2.2.16 Math.fround(x)
5908
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5909
-
5910
- $export($export.S, 'Math', { fround: __webpack_require__(/*! ./_math-fround */ "./node_modules/core-js/modules/_math-fround.js") });
5911
-
5912
-
5913
- /***/ }),
5914
-
5915
- /***/ "./node_modules/core-js/modules/es6.math.hypot.js":
5916
- /*!********************************************************!*\
5917
- !*** ./node_modules/core-js/modules/es6.math.hypot.js ***!
5918
- \********************************************************/
5919
- /*! no static exports found */
5920
- /***/ (function(module, exports, __webpack_require__) {
5921
-
5922
- // 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
5923
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5924
- var abs = Math.abs;
5925
-
5926
- $export($export.S, 'Math', {
5927
- hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars
5928
- var sum = 0;
5929
- var i = 0;
5930
- var aLen = arguments.length;
5931
- var larg = 0;
5932
- var arg, div;
5933
- while (i < aLen) {
5934
- arg = abs(arguments[i++]);
5935
- if (larg < arg) {
5936
- div = larg / arg;
5937
- sum = sum * div * div + 1;
5938
- larg = arg;
5939
- } else if (arg > 0) {
5940
- div = arg / larg;
5941
- sum += div * div;
5942
- } else sum += arg;
5943
- }
5944
- return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
5945
- }
5946
- });
5947
-
5948
-
5949
- /***/ }),
5950
-
5951
- /***/ "./node_modules/core-js/modules/es6.math.imul.js":
5952
- /*!*******************************************************!*\
5953
- !*** ./node_modules/core-js/modules/es6.math.imul.js ***!
5954
- \*******************************************************/
5955
- /*! no static exports found */
5956
- /***/ (function(module, exports, __webpack_require__) {
5957
-
5958
- // 20.2.2.18 Math.imul(x, y)
5959
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5960
- var $imul = Math.imul;
5961
-
5962
- // some WebKit versions fails with big numbers, some has wrong arity
5963
- $export($export.S + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
5964
- return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
5965
- }), 'Math', {
5966
- imul: function imul(x, y) {
5967
- var UINT16 = 0xffff;
5968
- var xn = +x;
5969
- var yn = +y;
5970
- var xl = UINT16 & xn;
5971
- var yl = UINT16 & yn;
5972
- return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
5973
- }
5974
- });
5975
-
5976
-
5977
- /***/ }),
5978
-
5979
- /***/ "./node_modules/core-js/modules/es6.math.log10.js":
5980
- /*!********************************************************!*\
5981
- !*** ./node_modules/core-js/modules/es6.math.log10.js ***!
5982
- \********************************************************/
5983
- /*! no static exports found */
5984
- /***/ (function(module, exports, __webpack_require__) {
5985
-
5986
- // 20.2.2.21 Math.log10(x)
5987
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
5988
-
5989
- $export($export.S, 'Math', {
5990
- log10: function log10(x) {
5991
- return Math.log(x) * Math.LOG10E;
5992
- }
5993
- });
5994
-
5995
-
5996
- /***/ }),
5997
-
5998
- /***/ "./node_modules/core-js/modules/es6.math.log1p.js":
5999
- /*!********************************************************!*\
6000
- !*** ./node_modules/core-js/modules/es6.math.log1p.js ***!
6001
- \********************************************************/
6002
- /*! no static exports found */
6003
- /***/ (function(module, exports, __webpack_require__) {
6004
-
6005
- // 20.2.2.20 Math.log1p(x)
6006
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6007
-
6008
- $export($export.S, 'Math', { log1p: __webpack_require__(/*! ./_math-log1p */ "./node_modules/core-js/modules/_math-log1p.js") });
6009
-
6010
-
6011
- /***/ }),
6012
-
6013
- /***/ "./node_modules/core-js/modules/es6.math.log2.js":
6014
- /*!*******************************************************!*\
6015
- !*** ./node_modules/core-js/modules/es6.math.log2.js ***!
6016
- \*******************************************************/
6017
- /*! no static exports found */
6018
- /***/ (function(module, exports, __webpack_require__) {
6019
-
6020
- // 20.2.2.22 Math.log2(x)
6021
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6022
-
6023
- $export($export.S, 'Math', {
6024
- log2: function log2(x) {
6025
- return Math.log(x) / Math.LN2;
6026
- }
6027
- });
6028
-
6029
-
6030
- /***/ }),
6031
-
6032
- /***/ "./node_modules/core-js/modules/es6.math.sign.js":
6033
- /*!*******************************************************!*\
6034
- !*** ./node_modules/core-js/modules/es6.math.sign.js ***!
6035
- \*******************************************************/
6036
- /*! no static exports found */
6037
- /***/ (function(module, exports, __webpack_require__) {
6038
-
6039
- // 20.2.2.28 Math.sign(x)
6040
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6041
-
6042
- $export($export.S, 'Math', { sign: __webpack_require__(/*! ./_math-sign */ "./node_modules/core-js/modules/_math-sign.js") });
6043
-
6044
-
6045
- /***/ }),
6046
-
6047
- /***/ "./node_modules/core-js/modules/es6.math.sinh.js":
6048
- /*!*******************************************************!*\
6049
- !*** ./node_modules/core-js/modules/es6.math.sinh.js ***!
6050
- \*******************************************************/
6051
- /*! no static exports found */
6052
- /***/ (function(module, exports, __webpack_require__) {
6053
-
6054
- // 20.2.2.30 Math.sinh(x)
6055
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6056
- var expm1 = __webpack_require__(/*! ./_math-expm1 */ "./node_modules/core-js/modules/_math-expm1.js");
6057
- var exp = Math.exp;
6058
-
6059
- // V8 near Chromium 38 has a problem with very small numbers
6060
- $export($export.S + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
6061
- return !Math.sinh(-2e-17) != -2e-17;
6062
- }), 'Math', {
6063
- sinh: function sinh(x) {
6064
- return Math.abs(x = +x) < 1
6065
- ? (expm1(x) - expm1(-x)) / 2
6066
- : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
6067
- }
6068
- });
6069
-
6070
-
6071
- /***/ }),
6072
-
6073
- /***/ "./node_modules/core-js/modules/es6.math.tanh.js":
6074
- /*!*******************************************************!*\
6075
- !*** ./node_modules/core-js/modules/es6.math.tanh.js ***!
6076
- \*******************************************************/
6077
- /*! no static exports found */
6078
- /***/ (function(module, exports, __webpack_require__) {
6079
-
6080
- // 20.2.2.33 Math.tanh(x)
6081
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6082
- var expm1 = __webpack_require__(/*! ./_math-expm1 */ "./node_modules/core-js/modules/_math-expm1.js");
6083
- var exp = Math.exp;
6084
-
6085
- $export($export.S, 'Math', {
6086
- tanh: function tanh(x) {
6087
- var a = expm1(x = +x);
6088
- var b = expm1(-x);
6089
- return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
6090
- }
6091
- });
6092
-
6093
-
6094
- /***/ }),
6095
-
6096
- /***/ "./node_modules/core-js/modules/es6.math.trunc.js":
6097
- /*!********************************************************!*\
6098
- !*** ./node_modules/core-js/modules/es6.math.trunc.js ***!
6099
- \********************************************************/
6100
- /*! no static exports found */
6101
- /***/ (function(module, exports, __webpack_require__) {
6102
-
6103
- // 20.2.2.34 Math.trunc(x)
6104
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6105
-
6106
- $export($export.S, 'Math', {
6107
- trunc: function trunc(it) {
6108
- return (it > 0 ? Math.floor : Math.ceil)(it);
6109
- }
6110
- });
6111
-
6112
-
6113
- /***/ }),
6114
-
6115
- /***/ "./node_modules/core-js/modules/es6.number.constructor.js":
6116
- /*!****************************************************************!*\
6117
- !*** ./node_modules/core-js/modules/es6.number.constructor.js ***!
6118
- \****************************************************************/
6119
- /*! no static exports found */
6120
- /***/ (function(module, exports, __webpack_require__) {
6121
-
6122
- "use strict";
6123
-
6124
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
6125
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
6126
- var cof = __webpack_require__(/*! ./_cof */ "./node_modules/core-js/modules/_cof.js");
6127
- var inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ "./node_modules/core-js/modules/_inherit-if-required.js");
6128
- var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
6129
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
6130
- var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
6131
- var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js").f;
6132
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
6133
- var $trim = __webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js").trim;
6134
- var NUMBER = 'Number';
6135
- var $Number = global[NUMBER];
6136
- var Base = $Number;
6137
- var proto = $Number.prototype;
6138
- // Opera ~12 has broken Object#toString
6139
- var BROKEN_COF = cof(__webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js")(proto)) == NUMBER;
6140
- var TRIM = 'trim' in String.prototype;
6141
-
6142
- // 7.1.3 ToNumber(argument)
6143
- var toNumber = function (argument) {
6144
- var it = toPrimitive(argument, false);
6145
- if (typeof it == 'string' && it.length > 2) {
6146
- it = TRIM ? it.trim() : $trim(it, 3);
6147
- var first = it.charCodeAt(0);
6148
- var third, radix, maxCode;
6149
- if (first === 43 || first === 45) {
6150
- third = it.charCodeAt(2);
6151
- if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
6152
- } else if (first === 48) {
6153
- switch (it.charCodeAt(1)) {
6154
- case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
6155
- case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
6156
- default: return +it;
6157
- }
6158
- for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {
6159
- code = digits.charCodeAt(i);
6160
- // parseInt parses a string to a first unavailable symbol
6161
- // but ToNumber should return NaN if a string contains unavailable symbols
6162
- if (code < 48 || code > maxCode) return NaN;
6163
- } return parseInt(digits, radix);
6164
- }
6165
- } return +it;
6166
- };
6167
-
6168
- if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {
6169
- $Number = function Number(value) {
6170
- var it = arguments.length < 1 ? 0 : value;
6171
- var that = this;
6172
- return that instanceof $Number
6173
- // check on 1..constructor(foo) case
6174
- && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)
6175
- ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
6176
- };
6177
- for (var keys = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") ? gOPN(Base) : (
6178
- // ES3:
6179
- 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
6180
- // ES6 (in case, if modules with ES6 Number statics required before):
6181
- 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
6182
- 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
6183
- ).split(','), j = 0, key; keys.length > j; j++) {
6184
- if (has(Base, key = keys[j]) && !has($Number, key)) {
6185
- dP($Number, key, gOPD(Base, key));
6186
- }
6187
- }
6188
- $Number.prototype = proto;
6189
- proto.constructor = $Number;
6190
- __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(global, NUMBER, $Number);
6191
- }
6192
-
6193
-
6194
- /***/ }),
6195
-
6196
- /***/ "./node_modules/core-js/modules/es6.number.epsilon.js":
6197
- /*!************************************************************!*\
6198
- !*** ./node_modules/core-js/modules/es6.number.epsilon.js ***!
6199
- \************************************************************/
6200
- /*! no static exports found */
6201
- /***/ (function(module, exports, __webpack_require__) {
6202
-
6203
- // 20.1.2.1 Number.EPSILON
6204
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6205
-
6206
- $export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });
6207
-
6208
-
6209
- /***/ }),
6210
-
6211
- /***/ "./node_modules/core-js/modules/es6.number.is-finite.js":
6212
- /*!**************************************************************!*\
6213
- !*** ./node_modules/core-js/modules/es6.number.is-finite.js ***!
6214
- \**************************************************************/
6215
- /*! no static exports found */
6216
- /***/ (function(module, exports, __webpack_require__) {
6217
-
6218
- // 20.1.2.2 Number.isFinite(number)
6219
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6220
- var _isFinite = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").isFinite;
6221
-
6222
- $export($export.S, 'Number', {
6223
- isFinite: function isFinite(it) {
6224
- return typeof it == 'number' && _isFinite(it);
6225
- }
6226
- });
6227
-
6228
-
6229
- /***/ }),
6230
-
6231
- /***/ "./node_modules/core-js/modules/es6.number.is-integer.js":
6232
- /*!***************************************************************!*\
6233
- !*** ./node_modules/core-js/modules/es6.number.is-integer.js ***!
6234
- \***************************************************************/
6235
- /*! no static exports found */
6236
- /***/ (function(module, exports, __webpack_require__) {
6237
-
6238
- // 20.1.2.3 Number.isInteger(number)
6239
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6240
-
6241
- $export($export.S, 'Number', { isInteger: __webpack_require__(/*! ./_is-integer */ "./node_modules/core-js/modules/_is-integer.js") });
6242
-
6243
-
6244
- /***/ }),
6245
-
6246
- /***/ "./node_modules/core-js/modules/es6.number.is-nan.js":
6247
- /*!***********************************************************!*\
6248
- !*** ./node_modules/core-js/modules/es6.number.is-nan.js ***!
6249
- \***********************************************************/
6250
- /*! no static exports found */
6251
- /***/ (function(module, exports, __webpack_require__) {
6252
-
6253
- // 20.1.2.4 Number.isNaN(number)
6254
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6255
-
6256
- $export($export.S, 'Number', {
6257
- isNaN: function isNaN(number) {
6258
- // eslint-disable-next-line no-self-compare
6259
- return number != number;
6260
- }
6261
- });
6262
-
6263
-
6264
- /***/ }),
6265
-
6266
- /***/ "./node_modules/core-js/modules/es6.number.is-safe-integer.js":
6267
- /*!********************************************************************!*\
6268
- !*** ./node_modules/core-js/modules/es6.number.is-safe-integer.js ***!
6269
- \********************************************************************/
6270
- /*! no static exports found */
6271
- /***/ (function(module, exports, __webpack_require__) {
6272
-
6273
- // 20.1.2.5 Number.isSafeInteger(number)
6274
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6275
- var isInteger = __webpack_require__(/*! ./_is-integer */ "./node_modules/core-js/modules/_is-integer.js");
6276
- var abs = Math.abs;
6277
-
6278
- $export($export.S, 'Number', {
6279
- isSafeInteger: function isSafeInteger(number) {
6280
- return isInteger(number) && abs(number) <= 0x1fffffffffffff;
6281
- }
6282
- });
6283
-
6284
-
6285
- /***/ }),
6286
-
6287
- /***/ "./node_modules/core-js/modules/es6.number.max-safe-integer.js":
6288
- /*!*********************************************************************!*\
6289
- !*** ./node_modules/core-js/modules/es6.number.max-safe-integer.js ***!
6290
- \*********************************************************************/
6291
- /*! no static exports found */
6292
- /***/ (function(module, exports, __webpack_require__) {
6293
-
6294
- // 20.1.2.6 Number.MAX_SAFE_INTEGER
6295
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6296
-
6297
- $export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });
6298
-
6299
-
6300
- /***/ }),
6301
-
6302
- /***/ "./node_modules/core-js/modules/es6.number.min-safe-integer.js":
6303
- /*!*********************************************************************!*\
6304
- !*** ./node_modules/core-js/modules/es6.number.min-safe-integer.js ***!
6305
- \*********************************************************************/
6306
- /*! no static exports found */
6307
- /***/ (function(module, exports, __webpack_require__) {
6308
-
6309
- // 20.1.2.10 Number.MIN_SAFE_INTEGER
6310
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6311
-
6312
- $export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });
6313
-
6314
-
6315
- /***/ }),
6316
-
6317
- /***/ "./node_modules/core-js/modules/es6.number.parse-float.js":
6318
- /*!****************************************************************!*\
6319
- !*** ./node_modules/core-js/modules/es6.number.parse-float.js ***!
6320
- \****************************************************************/
6321
- /*! no static exports found */
6322
- /***/ (function(module, exports, __webpack_require__) {
6323
-
6324
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6325
- var $parseFloat = __webpack_require__(/*! ./_parse-float */ "./node_modules/core-js/modules/_parse-float.js");
6326
- // 20.1.2.12 Number.parseFloat(string)
6327
- $export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });
6328
-
6329
-
6330
- /***/ }),
6331
-
6332
- /***/ "./node_modules/core-js/modules/es6.number.parse-int.js":
6333
- /*!**************************************************************!*\
6334
- !*** ./node_modules/core-js/modules/es6.number.parse-int.js ***!
6335
- \**************************************************************/
6336
- /*! no static exports found */
6337
- /***/ (function(module, exports, __webpack_require__) {
6338
-
6339
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6340
- var $parseInt = __webpack_require__(/*! ./_parse-int */ "./node_modules/core-js/modules/_parse-int.js");
6341
- // 20.1.2.13 Number.parseInt(string, radix)
6342
- $export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });
6343
-
6344
-
6345
- /***/ }),
6346
-
6347
- /***/ "./node_modules/core-js/modules/es6.number.to-fixed.js":
6348
- /*!*************************************************************!*\
6349
- !*** ./node_modules/core-js/modules/es6.number.to-fixed.js ***!
6350
- \*************************************************************/
6351
- /*! no static exports found */
6352
- /***/ (function(module, exports, __webpack_require__) {
6353
-
6354
- "use strict";
6355
-
6356
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6357
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
6358
- var aNumberValue = __webpack_require__(/*! ./_a-number-value */ "./node_modules/core-js/modules/_a-number-value.js");
6359
- var repeat = __webpack_require__(/*! ./_string-repeat */ "./node_modules/core-js/modules/_string-repeat.js");
6360
- var $toFixed = 1.0.toFixed;
6361
- var floor = Math.floor;
6362
- var data = [0, 0, 0, 0, 0, 0];
6363
- var ERROR = 'Number.toFixed: incorrect invocation!';
6364
- var ZERO = '0';
6365
-
6366
- var multiply = function (n, c) {
6367
- var i = -1;
6368
- var c2 = c;
6369
- while (++i < 6) {
6370
- c2 += n * data[i];
6371
- data[i] = c2 % 1e7;
6372
- c2 = floor(c2 / 1e7);
6373
- }
6374
- };
6375
- var divide = function (n) {
6376
- var i = 6;
6377
- var c = 0;
6378
- while (--i >= 0) {
6379
- c += data[i];
6380
- data[i] = floor(c / n);
6381
- c = (c % n) * 1e7;
6382
- }
6383
- };
6384
- var numToString = function () {
6385
- var i = 6;
6386
- var s = '';
6387
- while (--i >= 0) {
6388
- if (s !== '' || i === 0 || data[i] !== 0) {
6389
- var t = String(data[i]);
6390
- s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
6391
- }
6392
- } return s;
6393
- };
6394
- var pow = function (x, n, acc) {
6395
- return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
6396
- };
6397
- var log = function (x) {
6398
- var n = 0;
6399
- var x2 = x;
6400
- while (x2 >= 4096) {
6401
- n += 12;
6402
- x2 /= 4096;
6403
- }
6404
- while (x2 >= 2) {
6405
- n += 1;
6406
- x2 /= 2;
6407
- } return n;
6408
- };
6409
-
6410
- $export($export.P + $export.F * (!!$toFixed && (
6411
- 0.00008.toFixed(3) !== '0.000' ||
6412
- 0.9.toFixed(0) !== '1' ||
6413
- 1.255.toFixed(2) !== '1.25' ||
6414
- 1000000000000000128.0.toFixed(0) !== '1000000000000000128'
6415
- ) || !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
6416
- // V8 ~ Android 4.3-
6417
- $toFixed.call({});
6418
- })), 'Number', {
6419
- toFixed: function toFixed(fractionDigits) {
6420
- var x = aNumberValue(this, ERROR);
6421
- var f = toInteger(fractionDigits);
6422
- var s = '';
6423
- var m = ZERO;
6424
- var e, z, j, k;
6425
- if (f < 0 || f > 20) throw RangeError(ERROR);
6426
- // eslint-disable-next-line no-self-compare
6427
- if (x != x) return 'NaN';
6428
- if (x <= -1e21 || x >= 1e21) return String(x);
6429
- if (x < 0) {
6430
- s = '-';
6431
- x = -x;
6432
- }
6433
- if (x > 1e-21) {
6434
- e = log(x * pow(2, 69, 1)) - 69;
6435
- z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
6436
- z *= 0x10000000000000;
6437
- e = 52 - e;
6438
- if (e > 0) {
6439
- multiply(0, z);
6440
- j = f;
6441
- while (j >= 7) {
6442
- multiply(1e7, 0);
6443
- j -= 7;
6444
- }
6445
- multiply(pow(10, j, 1), 0);
6446
- j = e - 1;
6447
- while (j >= 23) {
6448
- divide(1 << 23);
6449
- j -= 23;
6450
- }
6451
- divide(1 << j);
6452
- multiply(1, 1);
6453
- divide(2);
6454
- m = numToString();
6455
- } else {
6456
- multiply(0, z);
6457
- multiply(1 << -e, 0);
6458
- m = numToString() + repeat.call(ZERO, f);
6459
- }
6460
- }
6461
- if (f > 0) {
6462
- k = m.length;
6463
- m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
6464
- } else {
6465
- m = s + m;
6466
- } return m;
6467
- }
6468
- });
6469
-
6470
-
6471
- /***/ }),
6472
-
6473
- /***/ "./node_modules/core-js/modules/es6.number.to-precision.js":
6474
- /*!*****************************************************************!*\
6475
- !*** ./node_modules/core-js/modules/es6.number.to-precision.js ***!
6476
- \*****************************************************************/
6477
- /*! no static exports found */
6478
- /***/ (function(module, exports, __webpack_require__) {
6479
-
6480
- "use strict";
6481
-
6482
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6483
- var $fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
6484
- var aNumberValue = __webpack_require__(/*! ./_a-number-value */ "./node_modules/core-js/modules/_a-number-value.js");
6485
- var $toPrecision = 1.0.toPrecision;
6486
-
6487
- $export($export.P + $export.F * ($fails(function () {
6488
- // IE7-
6489
- return $toPrecision.call(1, undefined) !== '1';
6490
- }) || !$fails(function () {
6491
- // V8 ~ Android 4.3-
6492
- $toPrecision.call({});
6493
- })), 'Number', {
6494
- toPrecision: function toPrecision(precision) {
6495
- var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
6496
- return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
6497
- }
6498
- });
6499
-
6500
-
6501
- /***/ }),
6502
-
6503
- /***/ "./node_modules/core-js/modules/es6.object.assign.js":
6504
- /*!***********************************************************!*\
6505
- !*** ./node_modules/core-js/modules/es6.object.assign.js ***!
6506
- \***********************************************************/
6507
- /*! no static exports found */
6508
- /***/ (function(module, exports, __webpack_require__) {
6509
-
6510
- // 19.1.3.1 Object.assign(target, source)
6511
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6512
-
6513
- $export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ "./node_modules/core-js/modules/_object-assign.js") });
6514
-
6515
-
6516
- /***/ }),
6517
-
6518
- /***/ "./node_modules/core-js/modules/es6.object.create.js":
6519
- /*!***********************************************************!*\
6520
- !*** ./node_modules/core-js/modules/es6.object.create.js ***!
6521
- \***********************************************************/
6522
- /*! no static exports found */
6523
- /***/ (function(module, exports, __webpack_require__) {
6524
-
6525
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6526
- // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
6527
- $export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js") });
6528
-
6529
-
6530
- /***/ }),
6531
-
6532
- /***/ "./node_modules/core-js/modules/es6.object.define-properties.js":
6533
- /*!**********************************************************************!*\
6534
- !*** ./node_modules/core-js/modules/es6.object.define-properties.js ***!
6535
- \**********************************************************************/
6536
- /*! no static exports found */
6537
- /***/ (function(module, exports, __webpack_require__) {
6538
-
6539
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6540
- // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
6541
- $export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js"), 'Object', { defineProperties: __webpack_require__(/*! ./_object-dps */ "./node_modules/core-js/modules/_object-dps.js") });
6542
-
6543
-
6544
- /***/ }),
6545
-
6546
- /***/ "./node_modules/core-js/modules/es6.object.define-property.js":
6547
- /*!********************************************************************!*\
6548
- !*** ./node_modules/core-js/modules/es6.object.define-property.js ***!
6549
- \********************************************************************/
6550
- /*! no static exports found */
6551
- /***/ (function(module, exports, __webpack_require__) {
6552
-
6553
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6554
- // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
6555
- $export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f });
6556
-
6557
-
6558
- /***/ }),
6559
-
6560
- /***/ "./node_modules/core-js/modules/es6.object.freeze.js":
6561
- /*!***********************************************************!*\
6562
- !*** ./node_modules/core-js/modules/es6.object.freeze.js ***!
6563
- \***********************************************************/
6564
- /*! no static exports found */
6565
- /***/ (function(module, exports, __webpack_require__) {
6566
-
6567
- // 19.1.2.5 Object.freeze(O)
6568
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6569
- var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").onFreeze;
6570
-
6571
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('freeze', function ($freeze) {
6572
- return function freeze(it) {
6573
- return $freeze && isObject(it) ? $freeze(meta(it)) : it;
6574
- };
6575
- });
6576
-
6577
-
6578
- /***/ }),
6579
-
6580
- /***/ "./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js":
6581
- /*!********************************************************************************!*\
6582
- !*** ./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js ***!
6583
- \********************************************************************************/
6584
- /*! no static exports found */
6585
- /***/ (function(module, exports, __webpack_require__) {
6586
-
6587
- // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
6588
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
6589
- var $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js").f;
6590
-
6591
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('getOwnPropertyDescriptor', function () {
6592
- return function getOwnPropertyDescriptor(it, key) {
6593
- return $getOwnPropertyDescriptor(toIObject(it), key);
6594
- };
6595
- });
6596
-
6597
-
6598
- /***/ }),
6599
-
6600
- /***/ "./node_modules/core-js/modules/es6.object.get-own-property-names.js":
6601
- /*!***************************************************************************!*\
6602
- !*** ./node_modules/core-js/modules/es6.object.get-own-property-names.js ***!
6603
- \***************************************************************************/
6604
- /*! no static exports found */
6605
- /***/ (function(module, exports, __webpack_require__) {
6606
-
6607
- // 19.1.2.7 Object.getOwnPropertyNames(O)
6608
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('getOwnPropertyNames', function () {
6609
- return __webpack_require__(/*! ./_object-gopn-ext */ "./node_modules/core-js/modules/_object-gopn-ext.js").f;
6610
- });
6611
-
6612
-
6613
- /***/ }),
6614
-
6615
- /***/ "./node_modules/core-js/modules/es6.object.get-prototype-of.js":
6616
- /*!*********************************************************************!*\
6617
- !*** ./node_modules/core-js/modules/es6.object.get-prototype-of.js ***!
6618
- \*********************************************************************/
6619
- /*! no static exports found */
6620
- /***/ (function(module, exports, __webpack_require__) {
6621
-
6622
- // 19.1.2.9 Object.getPrototypeOf(O)
6623
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
6624
- var $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
6625
-
6626
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('getPrototypeOf', function () {
6627
- return function getPrototypeOf(it) {
6628
- return $getPrototypeOf(toObject(it));
6629
- };
6630
- });
6631
-
6632
-
6633
- /***/ }),
6634
-
6635
- /***/ "./node_modules/core-js/modules/es6.object.is-extensible.js":
6636
- /*!******************************************************************!*\
6637
- !*** ./node_modules/core-js/modules/es6.object.is-extensible.js ***!
6638
- \******************************************************************/
6639
- /*! no static exports found */
6640
- /***/ (function(module, exports, __webpack_require__) {
6641
-
6642
- // 19.1.2.11 Object.isExtensible(O)
6643
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6644
-
6645
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('isExtensible', function ($isExtensible) {
6646
- return function isExtensible(it) {
6647
- return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
6648
- };
6649
- });
6650
-
6651
-
6652
- /***/ }),
6653
-
6654
- /***/ "./node_modules/core-js/modules/es6.object.is-frozen.js":
6655
- /*!**************************************************************!*\
6656
- !*** ./node_modules/core-js/modules/es6.object.is-frozen.js ***!
6657
- \**************************************************************/
6658
- /*! no static exports found */
6659
- /***/ (function(module, exports, __webpack_require__) {
6660
-
6661
- // 19.1.2.12 Object.isFrozen(O)
6662
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6663
-
6664
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('isFrozen', function ($isFrozen) {
6665
- return function isFrozen(it) {
6666
- return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
6667
- };
6668
- });
6669
-
6670
-
6671
- /***/ }),
6672
-
6673
- /***/ "./node_modules/core-js/modules/es6.object.is-sealed.js":
6674
- /*!**************************************************************!*\
6675
- !*** ./node_modules/core-js/modules/es6.object.is-sealed.js ***!
6676
- \**************************************************************/
6677
- /*! no static exports found */
6678
- /***/ (function(module, exports, __webpack_require__) {
6679
-
6680
- // 19.1.2.13 Object.isSealed(O)
6681
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6682
-
6683
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('isSealed', function ($isSealed) {
6684
- return function isSealed(it) {
6685
- return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
6686
- };
6687
- });
6688
-
6689
-
6690
- /***/ }),
6691
-
6692
- /***/ "./node_modules/core-js/modules/es6.object.is.js":
6693
- /*!*******************************************************!*\
6694
- !*** ./node_modules/core-js/modules/es6.object.is.js ***!
6695
- \*******************************************************/
6696
- /*! no static exports found */
6697
- /***/ (function(module, exports, __webpack_require__) {
6698
-
6699
- // 19.1.3.10 Object.is(value1, value2)
6700
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6701
- $export($export.S, 'Object', { is: __webpack_require__(/*! ./_same-value */ "./node_modules/core-js/modules/_same-value.js") });
6702
-
6703
-
6704
- /***/ }),
6705
-
6706
- /***/ "./node_modules/core-js/modules/es6.object.keys.js":
6707
- /*!*********************************************************!*\
6708
- !*** ./node_modules/core-js/modules/es6.object.keys.js ***!
6709
- \*********************************************************/
6710
- /*! no static exports found */
6711
- /***/ (function(module, exports, __webpack_require__) {
6712
-
6713
- // 19.1.2.14 Object.keys(O)
6714
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
6715
- var $keys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
6716
-
6717
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('keys', function () {
6718
- return function keys(it) {
6719
- return $keys(toObject(it));
6720
- };
6721
- });
6722
-
6723
-
6724
- /***/ }),
6725
-
6726
- /***/ "./node_modules/core-js/modules/es6.object.prevent-extensions.js":
6727
- /*!***********************************************************************!*\
6728
- !*** ./node_modules/core-js/modules/es6.object.prevent-extensions.js ***!
6729
- \***********************************************************************/
6730
- /*! no static exports found */
6731
- /***/ (function(module, exports, __webpack_require__) {
6732
-
6733
- // 19.1.2.15 Object.preventExtensions(O)
6734
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6735
- var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").onFreeze;
6736
-
6737
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('preventExtensions', function ($preventExtensions) {
6738
- return function preventExtensions(it) {
6739
- return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
6740
- };
6741
- });
6742
-
6743
-
6744
- /***/ }),
6745
-
6746
- /***/ "./node_modules/core-js/modules/es6.object.seal.js":
6747
- /*!*********************************************************!*\
6748
- !*** ./node_modules/core-js/modules/es6.object.seal.js ***!
6749
- \*********************************************************/
6750
- /*! no static exports found */
6751
- /***/ (function(module, exports, __webpack_require__) {
6752
-
6753
- // 19.1.2.17 Object.seal(O)
6754
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6755
- var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").onFreeze;
6756
-
6757
- __webpack_require__(/*! ./_object-sap */ "./node_modules/core-js/modules/_object-sap.js")('seal', function ($seal) {
6758
- return function seal(it) {
6759
- return $seal && isObject(it) ? $seal(meta(it)) : it;
6760
- };
6761
- });
6762
-
6763
-
6764
- /***/ }),
6765
-
6766
- /***/ "./node_modules/core-js/modules/es6.object.set-prototype-of.js":
6767
- /*!*********************************************************************!*\
6768
- !*** ./node_modules/core-js/modules/es6.object.set-prototype-of.js ***!
6769
- \*********************************************************************/
6770
- /*! no static exports found */
6771
- /***/ (function(module, exports, __webpack_require__) {
6772
-
6773
- // 19.1.3.19 Object.setPrototypeOf(O, proto)
6774
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6775
- $export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ "./node_modules/core-js/modules/_set-proto.js").set });
6776
-
6777
-
6778
- /***/ }),
6779
-
6780
- /***/ "./node_modules/core-js/modules/es6.object.to-string.js":
6781
- /*!**************************************************************!*\
6782
- !*** ./node_modules/core-js/modules/es6.object.to-string.js ***!
6783
- \**************************************************************/
6784
- /*! no static exports found */
6785
- /***/ (function(module, exports, __webpack_require__) {
6786
-
6787
- "use strict";
6788
-
6789
- // 19.1.3.6 Object.prototype.toString()
6790
- var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
6791
- var test = {};
6792
- test[__webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('toStringTag')] = 'z';
6793
- if (test + '' != '[object z]') {
6794
- __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(Object.prototype, 'toString', function toString() {
6795
- return '[object ' + classof(this) + ']';
6796
- }, true);
6797
- }
6798
-
6799
-
6800
- /***/ }),
6801
-
6802
- /***/ "./node_modules/core-js/modules/es6.parse-float.js":
6803
- /*!*********************************************************!*\
6804
- !*** ./node_modules/core-js/modules/es6.parse-float.js ***!
6805
- \*********************************************************/
6806
- /*! no static exports found */
6807
- /***/ (function(module, exports, __webpack_require__) {
6808
-
6809
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6810
- var $parseFloat = __webpack_require__(/*! ./_parse-float */ "./node_modules/core-js/modules/_parse-float.js");
6811
- // 18.2.4 parseFloat(string)
6812
- $export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });
6813
-
6814
-
6815
- /***/ }),
6816
-
6817
- /***/ "./node_modules/core-js/modules/es6.parse-int.js":
6818
- /*!*******************************************************!*\
6819
- !*** ./node_modules/core-js/modules/es6.parse-int.js ***!
6820
- \*******************************************************/
6821
- /*! no static exports found */
6822
- /***/ (function(module, exports, __webpack_require__) {
6823
-
6824
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6825
- var $parseInt = __webpack_require__(/*! ./_parse-int */ "./node_modules/core-js/modules/_parse-int.js");
6826
- // 18.2.5 parseInt(string, radix)
6827
- $export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });
6828
-
6829
-
6830
- /***/ }),
6831
-
6832
- /***/ "./node_modules/core-js/modules/es6.promise.js":
6833
- /*!*****************************************************!*\
6834
- !*** ./node_modules/core-js/modules/es6.promise.js ***!
6835
- \*****************************************************/
6836
- /*! no static exports found */
6837
- /***/ (function(module, exports, __webpack_require__) {
6838
-
6839
- "use strict";
6840
-
6841
- var LIBRARY = __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js");
6842
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
6843
- var ctx = __webpack_require__(/*! ./_ctx */ "./node_modules/core-js/modules/_ctx.js");
6844
- var classof = __webpack_require__(/*! ./_classof */ "./node_modules/core-js/modules/_classof.js");
6845
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
6846
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
6847
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
6848
- var anInstance = __webpack_require__(/*! ./_an-instance */ "./node_modules/core-js/modules/_an-instance.js");
6849
- var forOf = __webpack_require__(/*! ./_for-of */ "./node_modules/core-js/modules/_for-of.js");
6850
- var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "./node_modules/core-js/modules/_species-constructor.js");
6851
- var task = __webpack_require__(/*! ./_task */ "./node_modules/core-js/modules/_task.js").set;
6852
- var microtask = __webpack_require__(/*! ./_microtask */ "./node_modules/core-js/modules/_microtask.js")();
6853
- var newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ "./node_modules/core-js/modules/_new-promise-capability.js");
6854
- var perform = __webpack_require__(/*! ./_perform */ "./node_modules/core-js/modules/_perform.js");
6855
- var userAgent = __webpack_require__(/*! ./_user-agent */ "./node_modules/core-js/modules/_user-agent.js");
6856
- var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "./node_modules/core-js/modules/_promise-resolve.js");
6857
- var PROMISE = 'Promise';
6858
- var TypeError = global.TypeError;
6859
- var process = global.process;
6860
- var versions = process && process.versions;
6861
- var v8 = versions && versions.v8 || '';
6862
- var $Promise = global[PROMISE];
6863
- var isNode = classof(process) == 'process';
6864
- var empty = function () { /* empty */ };
6865
- var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
6866
- var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
6867
-
6868
- var USE_NATIVE = !!function () {
6869
- try {
6870
- // correct subclassing with @@species support
6871
- var promise = $Promise.resolve(1);
6872
- var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('species')] = function (exec) {
6873
- exec(empty, empty);
6874
- };
6875
- // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
6876
- return (isNode || typeof PromiseRejectionEvent == 'function')
6877
- && promise.then(empty) instanceof FakePromise
6878
- // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
6879
- // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
6880
- // we can't detect it synchronously, so just check versions
6881
- && v8.indexOf('6.6') !== 0
6882
- && userAgent.indexOf('Chrome/66') === -1;
6883
- } catch (e) { /* empty */ }
6884
- }();
6885
-
6886
- // helpers
6887
- var isThenable = function (it) {
6888
- var then;
6889
- return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
6890
- };
6891
- var notify = function (promise, isReject) {
6892
- if (promise._n) return;
6893
- promise._n = true;
6894
- var chain = promise._c;
6895
- microtask(function () {
6896
- var value = promise._v;
6897
- var ok = promise._s == 1;
6898
- var i = 0;
6899
- var run = function (reaction) {
6900
- var handler = ok ? reaction.ok : reaction.fail;
6901
- var resolve = reaction.resolve;
6902
- var reject = reaction.reject;
6903
- var domain = reaction.domain;
6904
- var result, then, exited;
6905
- try {
6906
- if (handler) {
6907
- if (!ok) {
6908
- if (promise._h == 2) onHandleUnhandled(promise);
6909
- promise._h = 1;
6910
- }
6911
- if (handler === true) result = value;
6912
- else {
6913
- if (domain) domain.enter();
6914
- result = handler(value); // may throw
6915
- if (domain) {
6916
- domain.exit();
6917
- exited = true;
6918
- }
6919
- }
6920
- if (result === reaction.promise) {
6921
- reject(TypeError('Promise-chain cycle'));
6922
- } else if (then = isThenable(result)) {
6923
- then.call(result, resolve, reject);
6924
- } else resolve(result);
6925
- } else reject(value);
6926
- } catch (e) {
6927
- if (domain && !exited) domain.exit();
6928
- reject(e);
6929
- }
6930
- };
6931
- while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
6932
- promise._c = [];
6933
- promise._n = false;
6934
- if (isReject && !promise._h) onUnhandled(promise);
6935
- });
6936
- };
6937
- var onUnhandled = function (promise) {
6938
- task.call(global, function () {
6939
- var value = promise._v;
6940
- var unhandled = isUnhandled(promise);
6941
- var result, handler, console;
6942
- if (unhandled) {
6943
- result = perform(function () {
6944
- if (isNode) {
6945
- process.emit('unhandledRejection', value, promise);
6946
- } else if (handler = global.onunhandledrejection) {
6947
- handler({ promise: promise, reason: value });
6948
- } else if ((console = global.console) && console.error) {
6949
- console.error('Unhandled promise rejection', value);
6950
- }
6951
- });
6952
- // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
6953
- promise._h = isNode || isUnhandled(promise) ? 2 : 1;
6954
- } promise._a = undefined;
6955
- if (unhandled && result.e) throw result.v;
6956
- });
6957
- };
6958
- var isUnhandled = function (promise) {
6959
- return promise._h !== 1 && (promise._a || promise._c).length === 0;
6960
- };
6961
- var onHandleUnhandled = function (promise) {
6962
- task.call(global, function () {
6963
- var handler;
6964
- if (isNode) {
6965
- process.emit('rejectionHandled', promise);
6966
- } else if (handler = global.onrejectionhandled) {
6967
- handler({ promise: promise, reason: promise._v });
6968
- }
6969
- });
6970
- };
6971
- var $reject = function (value) {
6972
- var promise = this;
6973
- if (promise._d) return;
6974
- promise._d = true;
6975
- promise = promise._w || promise; // unwrap
6976
- promise._v = value;
6977
- promise._s = 2;
6978
- if (!promise._a) promise._a = promise._c.slice();
6979
- notify(promise, true);
6980
- };
6981
- var $resolve = function (value) {
6982
- var promise = this;
6983
- var then;
6984
- if (promise._d) return;
6985
- promise._d = true;
6986
- promise = promise._w || promise; // unwrap
6987
- try {
6988
- if (promise === value) throw TypeError("Promise can't be resolved itself");
6989
- if (then = isThenable(value)) {
6990
- microtask(function () {
6991
- var wrapper = { _w: promise, _d: false }; // wrap
6992
- try {
6993
- then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
6994
- } catch (e) {
6995
- $reject.call(wrapper, e);
6996
- }
6997
- });
6998
- } else {
6999
- promise._v = value;
7000
- promise._s = 1;
7001
- notify(promise, false);
7002
- }
7003
- } catch (e) {
7004
- $reject.call({ _w: promise, _d: false }, e); // wrap
7005
- }
7006
- };
7007
-
7008
- // constructor polyfill
7009
- if (!USE_NATIVE) {
7010
- // 25.4.3.1 Promise(executor)
7011
- $Promise = function Promise(executor) {
7012
- anInstance(this, $Promise, PROMISE, '_h');
7013
- aFunction(executor);
7014
- Internal.call(this);
7015
- try {
7016
- executor(ctx($resolve, this, 1), ctx($reject, this, 1));
7017
- } catch (err) {
7018
- $reject.call(this, err);
7019
- }
7020
- };
7021
- // eslint-disable-next-line no-unused-vars
7022
- Internal = function Promise(executor) {
7023
- this._c = []; // <- awaiting reactions
7024
- this._a = undefined; // <- checked in isUnhandled reactions
7025
- this._s = 0; // <- state
7026
- this._d = false; // <- done
7027
- this._v = undefined; // <- value
7028
- this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
7029
- this._n = false; // <- notify
7030
- };
7031
- Internal.prototype = __webpack_require__(/*! ./_redefine-all */ "./node_modules/core-js/modules/_redefine-all.js")($Promise.prototype, {
7032
- // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
7033
- then: function then(onFulfilled, onRejected) {
7034
- var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
7035
- reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
7036
- reaction.fail = typeof onRejected == 'function' && onRejected;
7037
- reaction.domain = isNode ? process.domain : undefined;
7038
- this._c.push(reaction);
7039
- if (this._a) this._a.push(reaction);
7040
- if (this._s) notify(this, false);
7041
- return reaction.promise;
7042
- },
7043
- // 25.4.5.1 Promise.prototype.catch(onRejected)
7044
- 'catch': function (onRejected) {
7045
- return this.then(undefined, onRejected);
7046
- }
7047
- });
7048
- OwnPromiseCapability = function () {
7049
- var promise = new Internal();
7050
- this.promise = promise;
7051
- this.resolve = ctx($resolve, promise, 1);
7052
- this.reject = ctx($reject, promise, 1);
7053
- };
7054
- newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
7055
- return C === $Promise || C === Wrapper
7056
- ? new OwnPromiseCapability(C)
7057
- : newGenericPromiseCapability(C);
7058
- };
7059
- }
7060
-
7061
- $export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
7062
- __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js")($Promise, PROMISE);
7063
- __webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js")(PROMISE);
7064
- Wrapper = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js")[PROMISE];
7065
-
7066
- // statics
7067
- $export($export.S + $export.F * !USE_NATIVE, PROMISE, {
7068
- // 25.4.4.5 Promise.reject(r)
7069
- reject: function reject(r) {
7070
- var capability = newPromiseCapability(this);
7071
- var $$reject = capability.reject;
7072
- $$reject(r);
7073
- return capability.promise;
7074
- }
7075
- });
7076
- $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
7077
- // 25.4.4.6 Promise.resolve(x)
7078
- resolve: function resolve(x) {
7079
- return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
7080
- }
7081
- });
7082
- $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ "./node_modules/core-js/modules/_iter-detect.js")(function (iter) {
7083
- $Promise.all(iter)['catch'](empty);
7084
- })), PROMISE, {
7085
- // 25.4.4.1 Promise.all(iterable)
7086
- all: function all(iterable) {
7087
- var C = this;
7088
- var capability = newPromiseCapability(C);
7089
- var resolve = capability.resolve;
7090
- var reject = capability.reject;
7091
- var result = perform(function () {
7092
- var values = [];
7093
- var index = 0;
7094
- var remaining = 1;
7095
- forOf(iterable, false, function (promise) {
7096
- var $index = index++;
7097
- var alreadyCalled = false;
7098
- values.push(undefined);
7099
- remaining++;
7100
- C.resolve(promise).then(function (value) {
7101
- if (alreadyCalled) return;
7102
- alreadyCalled = true;
7103
- values[$index] = value;
7104
- --remaining || resolve(values);
7105
- }, reject);
7106
- });
7107
- --remaining || resolve(values);
7108
- });
7109
- if (result.e) reject(result.v);
7110
- return capability.promise;
7111
- },
7112
- // 25.4.4.4 Promise.race(iterable)
7113
- race: function race(iterable) {
7114
- var C = this;
7115
- var capability = newPromiseCapability(C);
7116
- var reject = capability.reject;
7117
- var result = perform(function () {
7118
- forOf(iterable, false, function (promise) {
7119
- C.resolve(promise).then(capability.resolve, reject);
7120
- });
7121
- });
7122
- if (result.e) reject(result.v);
7123
- return capability.promise;
7124
- }
7125
- });
7126
-
7127
-
7128
- /***/ }),
7129
-
7130
- /***/ "./node_modules/core-js/modules/es6.reflect.apply.js":
7131
- /*!***********************************************************!*\
7132
- !*** ./node_modules/core-js/modules/es6.reflect.apply.js ***!
7133
- \***********************************************************/
7134
- /*! no static exports found */
7135
- /***/ (function(module, exports, __webpack_require__) {
7136
-
7137
- // 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
7138
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7139
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
7140
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7141
- var rApply = (__webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Reflect || {}).apply;
7142
- var fApply = Function.apply;
7143
- // MS Edge argumentsList argument is optional
7144
- $export($export.S + $export.F * !__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
7145
- rApply(function () { /* empty */ });
7146
- }), 'Reflect', {
7147
- apply: function apply(target, thisArgument, argumentsList) {
7148
- var T = aFunction(target);
7149
- var L = anObject(argumentsList);
7150
- return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);
7151
- }
7152
- });
7153
-
7154
-
7155
- /***/ }),
7156
-
7157
- /***/ "./node_modules/core-js/modules/es6.reflect.construct.js":
7158
- /*!***************************************************************!*\
7159
- !*** ./node_modules/core-js/modules/es6.reflect.construct.js ***!
7160
- \***************************************************************/
7161
- /*! no static exports found */
7162
- /***/ (function(module, exports, __webpack_require__) {
7163
-
7164
- // 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
7165
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7166
- var create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
7167
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
7168
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7169
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
7170
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
7171
- var bind = __webpack_require__(/*! ./_bind */ "./node_modules/core-js/modules/_bind.js");
7172
- var rConstruct = (__webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").Reflect || {}).construct;
7173
-
7174
- // MS Edge supports only 2 arguments and argumentsList argument is optional
7175
- // FF Nightly sets third argument as `new.target`, but does not create `this` from it
7176
- var NEW_TARGET_BUG = fails(function () {
7177
- function F() { /* empty */ }
7178
- return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
7179
- });
7180
- var ARGS_BUG = !fails(function () {
7181
- rConstruct(function () { /* empty */ });
7182
- });
7183
-
7184
- $export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
7185
- construct: function construct(Target, args /* , newTarget */) {
7186
- aFunction(Target);
7187
- anObject(args);
7188
- var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
7189
- if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
7190
- if (Target == newTarget) {
7191
- // w/o altered newTarget, optimization for 0-4 arguments
7192
- switch (args.length) {
7193
- case 0: return new Target();
7194
- case 1: return new Target(args[0]);
7195
- case 2: return new Target(args[0], args[1]);
7196
- case 3: return new Target(args[0], args[1], args[2]);
7197
- case 4: return new Target(args[0], args[1], args[2], args[3]);
7198
- }
7199
- // w/o altered newTarget, lot of arguments case
7200
- var $args = [null];
7201
- $args.push.apply($args, args);
7202
- return new (bind.apply(Target, $args))();
7203
- }
7204
- // with altered newTarget, not support built-in constructors
7205
- var proto = newTarget.prototype;
7206
- var instance = create(isObject(proto) ? proto : Object.prototype);
7207
- var result = Function.apply.call(Target, instance, args);
7208
- return isObject(result) ? result : instance;
7209
- }
7210
- });
7211
-
7212
-
7213
- /***/ }),
7214
-
7215
- /***/ "./node_modules/core-js/modules/es6.reflect.define-property.js":
7216
- /*!*********************************************************************!*\
7217
- !*** ./node_modules/core-js/modules/es6.reflect.define-property.js ***!
7218
- \*********************************************************************/
7219
- /*! no static exports found */
7220
- /***/ (function(module, exports, __webpack_require__) {
7221
-
7222
- // 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
7223
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
7224
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7225
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7226
- var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
7227
-
7228
- // MS Edge has broken Reflect.defineProperty - throwing instead of returning false
7229
- $export($export.S + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
7230
- // eslint-disable-next-line no-undef
7231
- Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });
7232
- }), 'Reflect', {
7233
- defineProperty: function defineProperty(target, propertyKey, attributes) {
7234
- anObject(target);
7235
- propertyKey = toPrimitive(propertyKey, true);
7236
- anObject(attributes);
7237
- try {
7238
- dP.f(target, propertyKey, attributes);
7239
- return true;
7240
- } catch (e) {
7241
- return false;
7242
- }
7243
- }
7244
- });
7245
-
7246
-
7247
- /***/ }),
7248
-
7249
- /***/ "./node_modules/core-js/modules/es6.reflect.delete-property.js":
7250
- /*!*********************************************************************!*\
7251
- !*** ./node_modules/core-js/modules/es6.reflect.delete-property.js ***!
7252
- \*********************************************************************/
7253
- /*! no static exports found */
7254
- /***/ (function(module, exports, __webpack_require__) {
7255
-
7256
- // 26.1.4 Reflect.deleteProperty(target, propertyKey)
7257
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7258
- var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js").f;
7259
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7260
-
7261
- $export($export.S, 'Reflect', {
7262
- deleteProperty: function deleteProperty(target, propertyKey) {
7263
- var desc = gOPD(anObject(target), propertyKey);
7264
- return desc && !desc.configurable ? false : delete target[propertyKey];
7265
- }
7266
- });
7267
-
7268
-
7269
- /***/ }),
7270
-
7271
- /***/ "./node_modules/core-js/modules/es6.reflect.enumerate.js":
7272
- /*!***************************************************************!*\
7273
- !*** ./node_modules/core-js/modules/es6.reflect.enumerate.js ***!
7274
- \***************************************************************/
7275
- /*! no static exports found */
7276
- /***/ (function(module, exports, __webpack_require__) {
7277
-
7278
- "use strict";
7279
-
7280
- // 26.1.5 Reflect.enumerate(target)
7281
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7282
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7283
- var Enumerate = function (iterated) {
7284
- this._t = anObject(iterated); // target
7285
- this._i = 0; // next index
7286
- var keys = this._k = []; // keys
7287
- var key;
7288
- for (key in iterated) keys.push(key);
7289
- };
7290
- __webpack_require__(/*! ./_iter-create */ "./node_modules/core-js/modules/_iter-create.js")(Enumerate, 'Object', function () {
7291
- var that = this;
7292
- var keys = that._k;
7293
- var key;
7294
- do {
7295
- if (that._i >= keys.length) return { value: undefined, done: true };
7296
- } while (!((key = keys[that._i++]) in that._t));
7297
- return { value: key, done: false };
7298
- });
7299
-
7300
- $export($export.S, 'Reflect', {
7301
- enumerate: function enumerate(target) {
7302
- return new Enumerate(target);
7303
- }
7304
- });
7305
-
7306
-
7307
- /***/ }),
7308
-
7309
- /***/ "./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js":
7310
- /*!*********************************************************************************!*\
7311
- !*** ./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js ***!
7312
- \*********************************************************************************/
7313
- /*! no static exports found */
7314
- /***/ (function(module, exports, __webpack_require__) {
7315
-
7316
- // 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
7317
- var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
7318
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7319
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7320
-
7321
- $export($export.S, 'Reflect', {
7322
- getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
7323
- return gOPD.f(anObject(target), propertyKey);
7324
- }
7325
- });
7326
-
7327
-
7328
- /***/ }),
7329
-
7330
- /***/ "./node_modules/core-js/modules/es6.reflect.get-prototype-of.js":
7331
- /*!**********************************************************************!*\
7332
- !*** ./node_modules/core-js/modules/es6.reflect.get-prototype-of.js ***!
7333
- \**********************************************************************/
7334
- /*! no static exports found */
7335
- /***/ (function(module, exports, __webpack_require__) {
7336
-
7337
- // 26.1.8 Reflect.getPrototypeOf(target)
7338
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7339
- var getProto = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
7340
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7341
-
7342
- $export($export.S, 'Reflect', {
7343
- getPrototypeOf: function getPrototypeOf(target) {
7344
- return getProto(anObject(target));
7345
- }
7346
- });
7347
-
7348
-
7349
- /***/ }),
7350
-
7351
- /***/ "./node_modules/core-js/modules/es6.reflect.get.js":
7352
- /*!*********************************************************!*\
7353
- !*** ./node_modules/core-js/modules/es6.reflect.get.js ***!
7354
- \*********************************************************/
7355
- /*! no static exports found */
7356
- /***/ (function(module, exports, __webpack_require__) {
7357
-
7358
- // 26.1.6 Reflect.get(target, propertyKey [, receiver])
7359
- var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
7360
- var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
7361
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
7362
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7363
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
7364
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7365
-
7366
- function get(target, propertyKey /* , receiver */) {
7367
- var receiver = arguments.length < 3 ? target : arguments[2];
7368
- var desc, proto;
7369
- if (anObject(target) === receiver) return target[propertyKey];
7370
- if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
7371
- ? desc.value
7372
- : desc.get !== undefined
7373
- ? desc.get.call(receiver)
7374
- : undefined;
7375
- if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
7376
- }
7377
-
7378
- $export($export.S, 'Reflect', { get: get });
7379
-
7380
-
7381
- /***/ }),
7382
-
7383
- /***/ "./node_modules/core-js/modules/es6.reflect.has.js":
7384
- /*!*********************************************************!*\
7385
- !*** ./node_modules/core-js/modules/es6.reflect.has.js ***!
7386
- \*********************************************************/
7387
- /*! no static exports found */
7388
- /***/ (function(module, exports, __webpack_require__) {
7389
-
7390
- // 26.1.9 Reflect.has(target, propertyKey)
7391
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7392
-
7393
- $export($export.S, 'Reflect', {
7394
- has: function has(target, propertyKey) {
7395
- return propertyKey in target;
7396
- }
7397
- });
7398
-
7399
-
7400
- /***/ }),
7401
-
7402
- /***/ "./node_modules/core-js/modules/es6.reflect.is-extensible.js":
7403
- /*!*******************************************************************!*\
7404
- !*** ./node_modules/core-js/modules/es6.reflect.is-extensible.js ***!
7405
- \*******************************************************************/
7406
- /*! no static exports found */
7407
- /***/ (function(module, exports, __webpack_require__) {
7408
-
7409
- // 26.1.10 Reflect.isExtensible(target)
7410
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7411
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7412
- var $isExtensible = Object.isExtensible;
7413
-
7414
- $export($export.S, 'Reflect', {
7415
- isExtensible: function isExtensible(target) {
7416
- anObject(target);
7417
- return $isExtensible ? $isExtensible(target) : true;
7418
- }
7419
- });
7420
-
7421
-
7422
- /***/ }),
7423
-
7424
- /***/ "./node_modules/core-js/modules/es6.reflect.own-keys.js":
7425
- /*!**************************************************************!*\
7426
- !*** ./node_modules/core-js/modules/es6.reflect.own-keys.js ***!
7427
- \**************************************************************/
7428
- /*! no static exports found */
7429
- /***/ (function(module, exports, __webpack_require__) {
7430
-
7431
- // 26.1.11 Reflect.ownKeys(target)
7432
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7433
-
7434
- $export($export.S, 'Reflect', { ownKeys: __webpack_require__(/*! ./_own-keys */ "./node_modules/core-js/modules/_own-keys.js") });
7435
-
7436
-
7437
- /***/ }),
7438
-
7439
- /***/ "./node_modules/core-js/modules/es6.reflect.prevent-extensions.js":
7440
- /*!************************************************************************!*\
7441
- !*** ./node_modules/core-js/modules/es6.reflect.prevent-extensions.js ***!
7442
- \************************************************************************/
7443
- /*! no static exports found */
7444
- /***/ (function(module, exports, __webpack_require__) {
7445
-
7446
- // 26.1.12 Reflect.preventExtensions(target)
7447
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7448
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7449
- var $preventExtensions = Object.preventExtensions;
7450
-
7451
- $export($export.S, 'Reflect', {
7452
- preventExtensions: function preventExtensions(target) {
7453
- anObject(target);
7454
- try {
7455
- if ($preventExtensions) $preventExtensions(target);
7456
- return true;
7457
- } catch (e) {
7458
- return false;
7459
- }
7460
- }
7461
- });
7462
-
7463
-
7464
- /***/ }),
7465
-
7466
- /***/ "./node_modules/core-js/modules/es6.reflect.set-prototype-of.js":
7467
- /*!**********************************************************************!*\
7468
- !*** ./node_modules/core-js/modules/es6.reflect.set-prototype-of.js ***!
7469
- \**********************************************************************/
7470
- /*! no static exports found */
7471
- /***/ (function(module, exports, __webpack_require__) {
7472
-
7473
- // 26.1.14 Reflect.setPrototypeOf(target, proto)
7474
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7475
- var setProto = __webpack_require__(/*! ./_set-proto */ "./node_modules/core-js/modules/_set-proto.js");
7476
-
7477
- if (setProto) $export($export.S, 'Reflect', {
7478
- setPrototypeOf: function setPrototypeOf(target, proto) {
7479
- setProto.check(target, proto);
7480
- try {
7481
- setProto.set(target, proto);
7482
- return true;
7483
- } catch (e) {
7484
- return false;
7485
- }
7486
- }
7487
- });
7488
-
7489
-
7490
- /***/ }),
7491
-
7492
- /***/ "./node_modules/core-js/modules/es6.reflect.set.js":
7493
- /*!*********************************************************!*\
7494
- !*** ./node_modules/core-js/modules/es6.reflect.set.js ***!
7495
- \*********************************************************/
7496
- /*! no static exports found */
7497
- /***/ (function(module, exports, __webpack_require__) {
7498
-
7499
- // 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
7500
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
7501
- var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
7502
- var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "./node_modules/core-js/modules/_object-gpo.js");
7503
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
7504
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
7505
- var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
7506
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7507
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
7508
-
7509
- function set(target, propertyKey, V /* , receiver */) {
7510
- var receiver = arguments.length < 4 ? target : arguments[3];
7511
- var ownDesc = gOPD.f(anObject(target), propertyKey);
7512
- var existingDescriptor, proto;
7513
- if (!ownDesc) {
7514
- if (isObject(proto = getPrototypeOf(target))) {
7515
- return set(proto, propertyKey, V, receiver);
7516
- }
7517
- ownDesc = createDesc(0);
7518
- }
7519
- if (has(ownDesc, 'value')) {
7520
- if (ownDesc.writable === false || !isObject(receiver)) return false;
7521
- if (existingDescriptor = gOPD.f(receiver, propertyKey)) {
7522
- if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
7523
- existingDescriptor.value = V;
7524
- dP.f(receiver, propertyKey, existingDescriptor);
7525
- } else dP.f(receiver, propertyKey, createDesc(0, V));
7526
- return true;
7527
- }
7528
- return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
7529
- }
7530
-
7531
- $export($export.S, 'Reflect', { set: set });
7532
-
7533
-
7534
- /***/ }),
7535
-
7536
- /***/ "./node_modules/core-js/modules/es6.regexp.constructor.js":
7537
- /*!****************************************************************!*\
7538
- !*** ./node_modules/core-js/modules/es6.regexp.constructor.js ***!
7539
- \****************************************************************/
7540
- /*! no static exports found */
7541
- /***/ (function(module, exports, __webpack_require__) {
7542
-
7543
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
7544
- var inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ "./node_modules/core-js/modules/_inherit-if-required.js");
7545
- var dP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f;
7546
- var gOPN = __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f;
7547
- var isRegExp = __webpack_require__(/*! ./_is-regexp */ "./node_modules/core-js/modules/_is-regexp.js");
7548
- var $flags = __webpack_require__(/*! ./_flags */ "./node_modules/core-js/modules/_flags.js");
7549
- var $RegExp = global.RegExp;
7550
- var Base = $RegExp;
7551
- var proto = $RegExp.prototype;
7552
- var re1 = /a/g;
7553
- var re2 = /a/g;
7554
- // "new" creates a new object, old webkit buggy here
7555
- var CORRECT_NEW = new $RegExp(re1) !== re1;
7556
-
7557
- if (__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && (!CORRECT_NEW || __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
7558
- re2[__webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js")('match')] = false;
7559
- // RegExp constructor can alter flags and IsRegExp works correct with @@match
7560
- return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
7561
- }))) {
7562
- $RegExp = function RegExp(p, f) {
7563
- var tiRE = this instanceof $RegExp;
7564
- var piRE = isRegExp(p);
7565
- var fiU = f === undefined;
7566
- return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
7567
- : inheritIfRequired(CORRECT_NEW
7568
- ? new Base(piRE && !fiU ? p.source : p, f)
7569
- : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
7570
- , tiRE ? this : proto, $RegExp);
7571
- };
7572
- var proxy = function (key) {
7573
- key in $RegExp || dP($RegExp, key, {
7574
- configurable: true,
7575
- get: function () { return Base[key]; },
7576
- set: function (it) { Base[key] = it; }
7577
- });
7578
- };
7579
- for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
7580
- proto.constructor = $RegExp;
7581
- $RegExp.prototype = proto;
7582
- __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(global, 'RegExp', $RegExp);
7583
- }
7584
-
7585
- __webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js")('RegExp');
7586
-
7587
-
7588
- /***/ }),
7589
-
7590
- /***/ "./node_modules/core-js/modules/es6.regexp.exec.js":
7591
- /*!*********************************************************!*\
7592
- !*** ./node_modules/core-js/modules/es6.regexp.exec.js ***!
7593
- \*********************************************************/
7594
- /*! no static exports found */
7595
- /***/ (function(module, exports, __webpack_require__) {
7596
-
7597
- "use strict";
7598
-
7599
- var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "./node_modules/core-js/modules/_regexp-exec.js");
7600
- __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js")({
7601
- target: 'RegExp',
7602
- proto: true,
7603
- forced: regexpExec !== /./.exec
7604
- }, {
7605
- exec: regexpExec
7606
- });
7607
-
7608
-
7609
- /***/ }),
7610
-
7611
- /***/ "./node_modules/core-js/modules/es6.regexp.flags.js":
7612
- /*!**********************************************************!*\
7613
- !*** ./node_modules/core-js/modules/es6.regexp.flags.js ***!
7614
- \**********************************************************/
7615
- /*! no static exports found */
7616
- /***/ (function(module, exports, __webpack_require__) {
7617
-
7618
- // 21.2.5.3 get RegExp.prototype.flags()
7619
- if (__webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js") && /./g.flags != 'g') __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js").f(RegExp.prototype, 'flags', {
7620
- configurable: true,
7621
- get: __webpack_require__(/*! ./_flags */ "./node_modules/core-js/modules/_flags.js")
7622
- });
7623
-
7624
-
7625
- /***/ }),
7626
-
7627
- /***/ "./node_modules/core-js/modules/es6.regexp.match.js":
7628
- /*!**********************************************************!*\
7629
- !*** ./node_modules/core-js/modules/es6.regexp.match.js ***!
7630
- \**********************************************************/
7631
- /*! no static exports found */
7632
- /***/ (function(module, exports, __webpack_require__) {
7633
-
7634
- "use strict";
7635
-
7636
-
7637
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7638
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
7639
- var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "./node_modules/core-js/modules/_advance-string-index.js");
7640
- var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "./node_modules/core-js/modules/_regexp-exec-abstract.js");
7641
-
7642
- // @@match logic
7643
- __webpack_require__(/*! ./_fix-re-wks */ "./node_modules/core-js/modules/_fix-re-wks.js")('match', 1, function (defined, MATCH, $match, maybeCallNative) {
7644
- return [
7645
- // `String.prototype.match` method
7646
- // https://tc39.github.io/ecma262/#sec-string.prototype.match
7647
- function match(regexp) {
7648
- var O = defined(this);
7649
- var fn = regexp == undefined ? undefined : regexp[MATCH];
7650
- return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
7651
- },
7652
- // `RegExp.prototype[@@match]` method
7653
- // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match
7654
- function (regexp) {
7655
- var res = maybeCallNative($match, regexp, this);
7656
- if (res.done) return res.value;
7657
- var rx = anObject(regexp);
7658
- var S = String(this);
7659
- if (!rx.global) return regExpExec(rx, S);
7660
- var fullUnicode = rx.unicode;
7661
- rx.lastIndex = 0;
7662
- var A = [];
7663
- var n = 0;
7664
- var result;
7665
- while ((result = regExpExec(rx, S)) !== null) {
7666
- var matchStr = String(result[0]);
7667
- A[n] = matchStr;
7668
- if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
7669
- n++;
7670
- }
7671
- return n === 0 ? null : A;
7672
- }
7673
- ];
7674
- });
7675
-
7676
-
7677
- /***/ }),
7678
-
7679
- /***/ "./node_modules/core-js/modules/es6.regexp.replace.js":
7680
- /*!************************************************************!*\
7681
- !*** ./node_modules/core-js/modules/es6.regexp.replace.js ***!
7682
- \************************************************************/
7683
- /*! no static exports found */
7684
- /***/ (function(module, exports, __webpack_require__) {
7685
-
7686
- "use strict";
7687
-
7688
-
7689
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7690
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
7691
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
7692
- var toInteger = __webpack_require__(/*! ./_to-integer */ "./node_modules/core-js/modules/_to-integer.js");
7693
- var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "./node_modules/core-js/modules/_advance-string-index.js");
7694
- var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "./node_modules/core-js/modules/_regexp-exec-abstract.js");
7695
- var max = Math.max;
7696
- var min = Math.min;
7697
- var floor = Math.floor;
7698
- var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
7699
- var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;
7700
-
7701
- var maybeToString = function (it) {
7702
- return it === undefined ? it : String(it);
7703
- };
7704
-
7705
- // @@replace logic
7706
- __webpack_require__(/*! ./_fix-re-wks */ "./node_modules/core-js/modules/_fix-re-wks.js")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
7707
- return [
7708
- // `String.prototype.replace` method
7709
- // https://tc39.github.io/ecma262/#sec-string.prototype.replace
7710
- function replace(searchValue, replaceValue) {
7711
- var O = defined(this);
7712
- var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
7713
- return fn !== undefined
7714
- ? fn.call(searchValue, O, replaceValue)
7715
- : $replace.call(String(O), searchValue, replaceValue);
7716
- },
7717
- // `RegExp.prototype[@@replace]` method
7718
- // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
7719
- function (regexp, replaceValue) {
7720
- var res = maybeCallNative($replace, regexp, this, replaceValue);
7721
- if (res.done) return res.value;
7722
-
7723
- var rx = anObject(regexp);
7724
- var S = String(this);
7725
- var functionalReplace = typeof replaceValue === 'function';
7726
- if (!functionalReplace) replaceValue = String(replaceValue);
7727
- var global = rx.global;
7728
- if (global) {
7729
- var fullUnicode = rx.unicode;
7730
- rx.lastIndex = 0;
7731
- }
7732
- var results = [];
7733
- while (true) {
7734
- var result = regExpExec(rx, S);
7735
- if (result === null) break;
7736
- results.push(result);
7737
- if (!global) break;
7738
- var matchStr = String(result[0]);
7739
- if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
7740
- }
7741
- var accumulatedResult = '';
7742
- var nextSourcePosition = 0;
7743
- for (var i = 0; i < results.length; i++) {
7744
- result = results[i];
7745
- var matched = String(result[0]);
7746
- var position = max(min(toInteger(result.index), S.length), 0);
7747
- var captures = [];
7748
- // NOTE: This is equivalent to
7749
- // captures = result.slice(1).map(maybeToString)
7750
- // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
7751
- // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
7752
- // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
7753
- for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
7754
- var namedCaptures = result.groups;
7755
- if (functionalReplace) {
7756
- var replacerArgs = [matched].concat(captures, position, S);
7757
- if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
7758
- var replacement = String(replaceValue.apply(undefined, replacerArgs));
7759
- } else {
7760
- replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
7761
- }
7762
- if (position >= nextSourcePosition) {
7763
- accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
7764
- nextSourcePosition = position + matched.length;
7765
- }
7766
- }
7767
- return accumulatedResult + S.slice(nextSourcePosition);
7768
- }
7769
- ];
7770
-
7771
- // https://tc39.github.io/ecma262/#sec-getsubstitution
7772
- function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
7773
- var tailPos = position + matched.length;
7774
- var m = captures.length;
7775
- var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
7776
- if (namedCaptures !== undefined) {
7777
- namedCaptures = toObject(namedCaptures);
7778
- symbols = SUBSTITUTION_SYMBOLS;
7779
- }
7780
- return $replace.call(replacement, symbols, function (match, ch) {
7781
- var capture;
7782
- switch (ch.charAt(0)) {
7783
- case '$': return '$';
7784
- case '&': return matched;
7785
- case '`': return str.slice(0, position);
7786
- case "'": return str.slice(tailPos);
7787
- case '<':
7788
- capture = namedCaptures[ch.slice(1, -1)];
7789
- break;
7790
- default: // \d\d?
7791
- var n = +ch;
7792
- if (n === 0) return match;
7793
- if (n > m) {
7794
- var f = floor(n / 10);
7795
- if (f === 0) return match;
7796
- if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
7797
- return match;
7798
- }
7799
- capture = captures[n - 1];
7800
- }
7801
- return capture === undefined ? '' : capture;
7802
- });
7803
- }
7804
- });
7805
-
7806
-
7807
- /***/ }),
7808
-
7809
- /***/ "./node_modules/core-js/modules/es6.regexp.search.js":
7810
- /*!***********************************************************!*\
7811
- !*** ./node_modules/core-js/modules/es6.regexp.search.js ***!
7812
- \***********************************************************/
7813
- /*! no static exports found */
7814
- /***/ (function(module, exports, __webpack_require__) {
7815
-
7816
- "use strict";
7817
-
7818
-
7819
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7820
- var sameValue = __webpack_require__(/*! ./_same-value */ "./node_modules/core-js/modules/_same-value.js");
7821
- var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "./node_modules/core-js/modules/_regexp-exec-abstract.js");
7822
-
7823
- // @@search logic
7824
- __webpack_require__(/*! ./_fix-re-wks */ "./node_modules/core-js/modules/_fix-re-wks.js")('search', 1, function (defined, SEARCH, $search, maybeCallNative) {
7825
- return [
7826
- // `String.prototype.search` method
7827
- // https://tc39.github.io/ecma262/#sec-string.prototype.search
7828
- function search(regexp) {
7829
- var O = defined(this);
7830
- var fn = regexp == undefined ? undefined : regexp[SEARCH];
7831
- return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
7832
- },
7833
- // `RegExp.prototype[@@search]` method
7834
- // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search
7835
- function (regexp) {
7836
- var res = maybeCallNative($search, regexp, this);
7837
- if (res.done) return res.value;
7838
- var rx = anObject(regexp);
7839
- var S = String(this);
7840
- var previousLastIndex = rx.lastIndex;
7841
- if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
7842
- var result = regExpExec(rx, S);
7843
- if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
7844
- return result === null ? -1 : result.index;
7845
- }
7846
- ];
7847
- });
7848
-
7849
-
7850
- /***/ }),
7851
-
7852
- /***/ "./node_modules/core-js/modules/es6.regexp.split.js":
7853
- /*!**********************************************************!*\
7854
- !*** ./node_modules/core-js/modules/es6.regexp.split.js ***!
7855
- \**********************************************************/
7856
- /*! no static exports found */
7857
- /***/ (function(module, exports, __webpack_require__) {
7858
-
7859
- "use strict";
7860
-
7861
-
7862
- var isRegExp = __webpack_require__(/*! ./_is-regexp */ "./node_modules/core-js/modules/_is-regexp.js");
7863
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
7864
- var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "./node_modules/core-js/modules/_species-constructor.js");
7865
- var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "./node_modules/core-js/modules/_advance-string-index.js");
7866
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
7867
- var callRegExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "./node_modules/core-js/modules/_regexp-exec-abstract.js");
7868
- var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "./node_modules/core-js/modules/_regexp-exec.js");
7869
- var fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
7870
- var $min = Math.min;
7871
- var $push = [].push;
7872
- var $SPLIT = 'split';
7873
- var LENGTH = 'length';
7874
- var LAST_INDEX = 'lastIndex';
7875
- var MAX_UINT32 = 0xffffffff;
7876
-
7877
- // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
7878
- var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });
7879
-
7880
- // @@split logic
7881
- __webpack_require__(/*! ./_fix-re-wks */ "./node_modules/core-js/modules/_fix-re-wks.js")('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
7882
- var internalSplit;
7883
- if (
7884
- 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
7885
- 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
7886
- 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
7887
- '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
7888
- '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
7889
- ''[$SPLIT](/.?/)[LENGTH]
7890
- ) {
7891
- // based on es5-shim implementation, need to rework it
7892
- internalSplit = function (separator, limit) {
7893
- var string = String(this);
7894
- if (separator === undefined && limit === 0) return [];
7895
- // If `separator` is not a regex, use native split
7896
- if (!isRegExp(separator)) return $split.call(string, separator, limit);
7897
- var output = [];
7898
- var flags = (separator.ignoreCase ? 'i' : '') +
7899
- (separator.multiline ? 'm' : '') +
7900
- (separator.unicode ? 'u' : '') +
7901
- (separator.sticky ? 'y' : '');
7902
- var lastLastIndex = 0;
7903
- var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;
7904
- // Make `global` and avoid `lastIndex` issues by working with a copy
7905
- var separatorCopy = new RegExp(separator.source, flags + 'g');
7906
- var match, lastIndex, lastLength;
7907
- while (match = regexpExec.call(separatorCopy, string)) {
7908
- lastIndex = separatorCopy[LAST_INDEX];
7909
- if (lastIndex > lastLastIndex) {
7910
- output.push(string.slice(lastLastIndex, match.index));
7911
- if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
7912
- lastLength = match[0][LENGTH];
7913
- lastLastIndex = lastIndex;
7914
- if (output[LENGTH] >= splitLimit) break;
7915
- }
7916
- if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
7917
- }
7918
- if (lastLastIndex === string[LENGTH]) {
7919
- if (lastLength || !separatorCopy.test('')) output.push('');
7920
- } else output.push(string.slice(lastLastIndex));
7921
- return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
7922
- };
7923
- // Chakra, V8
7924
- } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
7925
- internalSplit = function (separator, limit) {
7926
- return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
7927
- };
7928
- } else {
7929
- internalSplit = $split;
7930
- }
7931
-
7932
- return [
7933
- // `String.prototype.split` method
7934
- // https://tc39.github.io/ecma262/#sec-string.prototype.split
7935
- function split(separator, limit) {
7936
- var O = defined(this);
7937
- var splitter = separator == undefined ? undefined : separator[SPLIT];
7938
- return splitter !== undefined
7939
- ? splitter.call(separator, O, limit)
7940
- : internalSplit.call(String(O), separator, limit);
7941
- },
7942
- // `RegExp.prototype[@@split]` method
7943
- // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
7944
- //
7945
- // NOTE: This cannot be properly polyfilled in engines that don't support
7946
- // the 'y' flag.
7947
- function (regexp, limit) {
7948
- var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
7949
- if (res.done) return res.value;
7950
-
7951
- var rx = anObject(regexp);
7952
- var S = String(this);
7953
- var C = speciesConstructor(rx, RegExp);
7954
-
7955
- var unicodeMatching = rx.unicode;
7956
- var flags = (rx.ignoreCase ? 'i' : '') +
7957
- (rx.multiline ? 'm' : '') +
7958
- (rx.unicode ? 'u' : '') +
7959
- (SUPPORTS_Y ? 'y' : 'g');
7960
-
7961
- // ^(? + rx + ) is needed, in combination with some S slicing, to
7962
- // simulate the 'y' flag.
7963
- var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
7964
- var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
7965
- if (lim === 0) return [];
7966
- if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
7967
- var p = 0;
7968
- var q = 0;
7969
- var A = [];
7970
- while (q < S.length) {
7971
- splitter.lastIndex = SUPPORTS_Y ? q : 0;
7972
- var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
7973
- var e;
7974
- if (
7975
- z === null ||
7976
- (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
7977
- ) {
7978
- q = advanceStringIndex(S, q, unicodeMatching);
7979
- } else {
7980
- A.push(S.slice(p, q));
7981
- if (A.length === lim) return A;
7982
- for (var i = 1; i <= z.length - 1; i++) {
7983
- A.push(z[i]);
7984
- if (A.length === lim) return A;
7985
- }
7986
- q = p = e;
7987
- }
7988
- }
7989
- A.push(S.slice(p));
7990
- return A;
7991
- }
7992
- ];
7993
- });
7994
-
7995
-
7996
- /***/ }),
7997
-
7998
- /***/ "./node_modules/core-js/modules/es6.regexp.to-string.js":
7999
- /*!**************************************************************!*\
8000
- !*** ./node_modules/core-js/modules/es6.regexp.to-string.js ***!
8001
- \**************************************************************/
8002
- /*! no static exports found */
8003
- /***/ (function(module, exports, __webpack_require__) {
8004
-
8005
- "use strict";
8006
-
8007
- __webpack_require__(/*! ./es6.regexp.flags */ "./node_modules/core-js/modules/es6.regexp.flags.js");
8008
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
8009
- var $flags = __webpack_require__(/*! ./_flags */ "./node_modules/core-js/modules/_flags.js");
8010
- var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
8011
- var TO_STRING = 'toString';
8012
- var $toString = /./[TO_STRING];
8013
-
8014
- var define = function (fn) {
8015
- __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js")(RegExp.prototype, TO_STRING, fn, true);
8016
- };
8017
-
8018
- // 21.2.5.14 RegExp.prototype.toString()
8019
- if (__webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
8020
- define(function toString() {
8021
- var R = anObject(this);
8022
- return '/'.concat(R.source, '/',
8023
- 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
8024
- });
8025
- // FF44- RegExp#toString has a wrong name
8026
- } else if ($toString.name != TO_STRING) {
8027
- define(function toString() {
8028
- return $toString.call(this);
8029
- });
8030
- }
8031
-
8032
-
8033
- /***/ }),
8034
-
8035
- /***/ "./node_modules/core-js/modules/es6.set.js":
8036
- /*!*************************************************!*\
8037
- !*** ./node_modules/core-js/modules/es6.set.js ***!
8038
- \*************************************************/
8039
- /*! no static exports found */
8040
- /***/ (function(module, exports, __webpack_require__) {
8041
-
8042
- "use strict";
8043
-
8044
- var strong = __webpack_require__(/*! ./_collection-strong */ "./node_modules/core-js/modules/_collection-strong.js");
8045
- var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
8046
- var SET = 'Set';
8047
-
8048
- // 23.2 Set Objects
8049
- module.exports = __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(SET, function (get) {
8050
- return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
8051
- }, {
8052
- // 23.2.3.1 Set.prototype.add(value)
8053
- add: function add(value) {
8054
- return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
8055
- }
8056
- }, strong);
8057
-
8058
-
8059
- /***/ }),
8060
-
8061
- /***/ "./node_modules/core-js/modules/es6.string.anchor.js":
8062
- /*!***********************************************************!*\
8063
- !*** ./node_modules/core-js/modules/es6.string.anchor.js ***!
8064
- \***********************************************************/
8065
- /*! no static exports found */
8066
- /***/ (function(module, exports, __webpack_require__) {
8067
-
8068
- "use strict";
8069
-
8070
- // B.2.3.2 String.prototype.anchor(name)
8071
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('anchor', function (createHTML) {
8072
- return function anchor(name) {
8073
- return createHTML(this, 'a', 'name', name);
8074
- };
8075
- });
8076
-
8077
-
8078
- /***/ }),
8079
-
8080
- /***/ "./node_modules/core-js/modules/es6.string.big.js":
8081
- /*!********************************************************!*\
8082
- !*** ./node_modules/core-js/modules/es6.string.big.js ***!
8083
- \********************************************************/
8084
- /*! no static exports found */
8085
- /***/ (function(module, exports, __webpack_require__) {
8086
-
8087
- "use strict";
8088
-
8089
- // B.2.3.3 String.prototype.big()
8090
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('big', function (createHTML) {
8091
- return function big() {
8092
- return createHTML(this, 'big', '', '');
8093
- };
8094
- });
8095
-
8096
-
8097
- /***/ }),
8098
-
8099
- /***/ "./node_modules/core-js/modules/es6.string.blink.js":
8100
- /*!**********************************************************!*\
8101
- !*** ./node_modules/core-js/modules/es6.string.blink.js ***!
8102
- \**********************************************************/
8103
- /*! no static exports found */
8104
- /***/ (function(module, exports, __webpack_require__) {
8105
-
8106
- "use strict";
8107
-
8108
- // B.2.3.4 String.prototype.blink()
8109
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('blink', function (createHTML) {
8110
- return function blink() {
8111
- return createHTML(this, 'blink', '', '');
8112
- };
8113
- });
8114
-
8115
-
8116
- /***/ }),
8117
-
8118
- /***/ "./node_modules/core-js/modules/es6.string.bold.js":
8119
- /*!*********************************************************!*\
8120
- !*** ./node_modules/core-js/modules/es6.string.bold.js ***!
8121
- \*********************************************************/
8122
- /*! no static exports found */
8123
- /***/ (function(module, exports, __webpack_require__) {
8124
-
8125
- "use strict";
8126
-
8127
- // B.2.3.5 String.prototype.bold()
8128
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('bold', function (createHTML) {
8129
- return function bold() {
8130
- return createHTML(this, 'b', '', '');
8131
- };
8132
- });
8133
-
8134
-
8135
- /***/ }),
8136
-
8137
- /***/ "./node_modules/core-js/modules/es6.string.code-point-at.js":
8138
- /*!******************************************************************!*\
8139
- !*** ./node_modules/core-js/modules/es6.string.code-point-at.js ***!
8140
- \******************************************************************/
8141
- /*! no static exports found */
8142
- /***/ (function(module, exports, __webpack_require__) {
8143
-
8144
- "use strict";
8145
-
8146
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8147
- var $at = __webpack_require__(/*! ./_string-at */ "./node_modules/core-js/modules/_string-at.js")(false);
8148
- $export($export.P, 'String', {
8149
- // 21.1.3.3 String.prototype.codePointAt(pos)
8150
- codePointAt: function codePointAt(pos) {
8151
- return $at(this, pos);
8152
- }
8153
- });
8154
-
8155
-
8156
- /***/ }),
8157
-
8158
- /***/ "./node_modules/core-js/modules/es6.string.ends-with.js":
8159
- /*!**************************************************************!*\
8160
- !*** ./node_modules/core-js/modules/es6.string.ends-with.js ***!
8161
- \**************************************************************/
8162
- /*! no static exports found */
8163
- /***/ (function(module, exports, __webpack_require__) {
8164
-
8165
- "use strict";
8166
- // 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
8167
-
8168
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8169
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
8170
- var context = __webpack_require__(/*! ./_string-context */ "./node_modules/core-js/modules/_string-context.js");
8171
- var ENDS_WITH = 'endsWith';
8172
- var $endsWith = ''[ENDS_WITH];
8173
-
8174
- $export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "./node_modules/core-js/modules/_fails-is-regexp.js")(ENDS_WITH), 'String', {
8175
- endsWith: function endsWith(searchString /* , endPosition = @length */) {
8176
- var that = context(this, searchString, ENDS_WITH);
8177
- var endPosition = arguments.length > 1 ? arguments[1] : undefined;
8178
- var len = toLength(that.length);
8179
- var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
8180
- var search = String(searchString);
8181
- return $endsWith
8182
- ? $endsWith.call(that, search, end)
8183
- : that.slice(end - search.length, end) === search;
8184
- }
8185
- });
8186
-
8187
-
8188
- /***/ }),
8189
-
8190
- /***/ "./node_modules/core-js/modules/es6.string.fixed.js":
8191
- /*!**********************************************************!*\
8192
- !*** ./node_modules/core-js/modules/es6.string.fixed.js ***!
8193
- \**********************************************************/
8194
- /*! no static exports found */
8195
- /***/ (function(module, exports, __webpack_require__) {
8196
-
8197
- "use strict";
8198
-
8199
- // B.2.3.6 String.prototype.fixed()
8200
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('fixed', function (createHTML) {
8201
- return function fixed() {
8202
- return createHTML(this, 'tt', '', '');
8203
- };
8204
- });
8205
-
8206
-
8207
- /***/ }),
8208
-
8209
- /***/ "./node_modules/core-js/modules/es6.string.fontcolor.js":
8210
- /*!**************************************************************!*\
8211
- !*** ./node_modules/core-js/modules/es6.string.fontcolor.js ***!
8212
- \**************************************************************/
8213
- /*! no static exports found */
8214
- /***/ (function(module, exports, __webpack_require__) {
8215
-
8216
- "use strict";
8217
-
8218
- // B.2.3.7 String.prototype.fontcolor(color)
8219
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('fontcolor', function (createHTML) {
8220
- return function fontcolor(color) {
8221
- return createHTML(this, 'font', 'color', color);
8222
- };
8223
- });
8224
-
8225
-
8226
- /***/ }),
8227
-
8228
- /***/ "./node_modules/core-js/modules/es6.string.fontsize.js":
8229
- /*!*************************************************************!*\
8230
- !*** ./node_modules/core-js/modules/es6.string.fontsize.js ***!
8231
- \*************************************************************/
8232
- /*! no static exports found */
8233
- /***/ (function(module, exports, __webpack_require__) {
8234
-
8235
- "use strict";
8236
-
8237
- // B.2.3.8 String.prototype.fontsize(size)
8238
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('fontsize', function (createHTML) {
8239
- return function fontsize(size) {
8240
- return createHTML(this, 'font', 'size', size);
8241
- };
8242
- });
8243
-
8244
-
8245
- /***/ }),
8246
-
8247
- /***/ "./node_modules/core-js/modules/es6.string.from-code-point.js":
8248
- /*!********************************************************************!*\
8249
- !*** ./node_modules/core-js/modules/es6.string.from-code-point.js ***!
8250
- \********************************************************************/
8251
- /*! no static exports found */
8252
- /***/ (function(module, exports, __webpack_require__) {
8253
-
8254
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8255
- var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
8256
- var fromCharCode = String.fromCharCode;
8257
- var $fromCodePoint = String.fromCodePoint;
8258
-
8259
- // length should be 1, old FF problem
8260
- $export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
8261
- // 21.1.2.2 String.fromCodePoint(...codePoints)
8262
- fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars
8263
- var res = [];
8264
- var aLen = arguments.length;
8265
- var i = 0;
8266
- var code;
8267
- while (aLen > i) {
8268
- code = +arguments[i++];
8269
- if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
8270
- res.push(code < 0x10000
8271
- ? fromCharCode(code)
8272
- : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
8273
- );
8274
- } return res.join('');
8275
- }
8276
- });
8277
-
8278
-
8279
- /***/ }),
8280
-
8281
- /***/ "./node_modules/core-js/modules/es6.string.includes.js":
8282
- /*!*************************************************************!*\
8283
- !*** ./node_modules/core-js/modules/es6.string.includes.js ***!
8284
- \*************************************************************/
8285
- /*! no static exports found */
8286
- /***/ (function(module, exports, __webpack_require__) {
8287
-
8288
- "use strict";
8289
- // 21.1.3.7 String.prototype.includes(searchString, position = 0)
8290
-
8291
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8292
- var context = __webpack_require__(/*! ./_string-context */ "./node_modules/core-js/modules/_string-context.js");
8293
- var INCLUDES = 'includes';
8294
-
8295
- $export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "./node_modules/core-js/modules/_fails-is-regexp.js")(INCLUDES), 'String', {
8296
- includes: function includes(searchString /* , position = 0 */) {
8297
- return !!~context(this, searchString, INCLUDES)
8298
- .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
8299
- }
8300
- });
8301
-
8302
-
8303
- /***/ }),
8304
-
8305
- /***/ "./node_modules/core-js/modules/es6.string.italics.js":
8306
- /*!************************************************************!*\
8307
- !*** ./node_modules/core-js/modules/es6.string.italics.js ***!
8308
- \************************************************************/
8309
- /*! no static exports found */
8310
- /***/ (function(module, exports, __webpack_require__) {
8311
-
8312
- "use strict";
8313
-
8314
- // B.2.3.9 String.prototype.italics()
8315
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('italics', function (createHTML) {
8316
- return function italics() {
8317
- return createHTML(this, 'i', '', '');
8318
- };
8319
- });
8320
-
8321
-
8322
- /***/ }),
8323
-
8324
- /***/ "./node_modules/core-js/modules/es6.string.iterator.js":
8325
- /*!*************************************************************!*\
8326
- !*** ./node_modules/core-js/modules/es6.string.iterator.js ***!
8327
- \*************************************************************/
8328
- /*! no static exports found */
8329
- /***/ (function(module, exports, __webpack_require__) {
8330
-
8331
- "use strict";
8332
-
8333
- var $at = __webpack_require__(/*! ./_string-at */ "./node_modules/core-js/modules/_string-at.js")(true);
8334
-
8335
- // 21.1.3.27 String.prototype[@@iterator]()
8336
- __webpack_require__(/*! ./_iter-define */ "./node_modules/core-js/modules/_iter-define.js")(String, 'String', function (iterated) {
8337
- this._t = String(iterated); // target
8338
- this._i = 0; // next index
8339
- // 21.1.5.2.1 %StringIteratorPrototype%.next()
8340
- }, function () {
8341
- var O = this._t;
8342
- var index = this._i;
8343
- var point;
8344
- if (index >= O.length) return { value: undefined, done: true };
8345
- point = $at(O, index);
8346
- this._i += point.length;
8347
- return { value: point, done: false };
8348
- });
8349
-
8350
-
8351
- /***/ }),
8352
-
8353
- /***/ "./node_modules/core-js/modules/es6.string.link.js":
8354
- /*!*********************************************************!*\
8355
- !*** ./node_modules/core-js/modules/es6.string.link.js ***!
8356
- \*********************************************************/
8357
- /*! no static exports found */
8358
- /***/ (function(module, exports, __webpack_require__) {
8359
-
8360
- "use strict";
8361
-
8362
- // B.2.3.10 String.prototype.link(url)
8363
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('link', function (createHTML) {
8364
- return function link(url) {
8365
- return createHTML(this, 'a', 'href', url);
8366
- };
8367
- });
8368
-
8369
-
8370
- /***/ }),
8371
-
8372
- /***/ "./node_modules/core-js/modules/es6.string.raw.js":
8373
- /*!********************************************************!*\
8374
- !*** ./node_modules/core-js/modules/es6.string.raw.js ***!
8375
- \********************************************************/
8376
- /*! no static exports found */
8377
- /***/ (function(module, exports, __webpack_require__) {
8378
-
8379
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8380
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
8381
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
8382
-
8383
- $export($export.S, 'String', {
8384
- // 21.1.2.4 String.raw(callSite, ...substitutions)
8385
- raw: function raw(callSite) {
8386
- var tpl = toIObject(callSite.raw);
8387
- var len = toLength(tpl.length);
8388
- var aLen = arguments.length;
8389
- var res = [];
8390
- var i = 0;
8391
- while (len > i) {
8392
- res.push(String(tpl[i++]));
8393
- if (i < aLen) res.push(String(arguments[i]));
8394
- } return res.join('');
8395
- }
8396
- });
8397
-
8398
-
8399
- /***/ }),
8400
-
8401
- /***/ "./node_modules/core-js/modules/es6.string.repeat.js":
8402
- /*!***********************************************************!*\
8403
- !*** ./node_modules/core-js/modules/es6.string.repeat.js ***!
8404
- \***********************************************************/
8405
- /*! no static exports found */
8406
- /***/ (function(module, exports, __webpack_require__) {
8407
-
8408
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8409
-
8410
- $export($export.P, 'String', {
8411
- // 21.1.3.13 String.prototype.repeat(count)
8412
- repeat: __webpack_require__(/*! ./_string-repeat */ "./node_modules/core-js/modules/_string-repeat.js")
8413
- });
8414
-
8415
-
8416
- /***/ }),
8417
-
8418
- /***/ "./node_modules/core-js/modules/es6.string.small.js":
8419
- /*!**********************************************************!*\
8420
- !*** ./node_modules/core-js/modules/es6.string.small.js ***!
8421
- \**********************************************************/
8422
- /*! no static exports found */
8423
- /***/ (function(module, exports, __webpack_require__) {
8424
-
8425
- "use strict";
8426
-
8427
- // B.2.3.11 String.prototype.small()
8428
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('small', function (createHTML) {
8429
- return function small() {
8430
- return createHTML(this, 'small', '', '');
8431
- };
8432
- });
8433
-
8434
-
8435
- /***/ }),
8436
-
8437
- /***/ "./node_modules/core-js/modules/es6.string.starts-with.js":
8438
- /*!****************************************************************!*\
8439
- !*** ./node_modules/core-js/modules/es6.string.starts-with.js ***!
8440
- \****************************************************************/
8441
- /*! no static exports found */
8442
- /***/ (function(module, exports, __webpack_require__) {
8443
-
8444
- "use strict";
8445
- // 21.1.3.18 String.prototype.startsWith(searchString [, position ])
8446
-
8447
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8448
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
8449
- var context = __webpack_require__(/*! ./_string-context */ "./node_modules/core-js/modules/_string-context.js");
8450
- var STARTS_WITH = 'startsWith';
8451
- var $startsWith = ''[STARTS_WITH];
8452
-
8453
- $export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "./node_modules/core-js/modules/_fails-is-regexp.js")(STARTS_WITH), 'String', {
8454
- startsWith: function startsWith(searchString /* , position = 0 */) {
8455
- var that = context(this, searchString, STARTS_WITH);
8456
- var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
8457
- var search = String(searchString);
8458
- return $startsWith
8459
- ? $startsWith.call(that, search, index)
8460
- : that.slice(index, index + search.length) === search;
8461
- }
8462
- });
8463
-
8464
-
8465
- /***/ }),
8466
-
8467
- /***/ "./node_modules/core-js/modules/es6.string.strike.js":
8468
- /*!***********************************************************!*\
8469
- !*** ./node_modules/core-js/modules/es6.string.strike.js ***!
8470
- \***********************************************************/
8471
- /*! no static exports found */
8472
- /***/ (function(module, exports, __webpack_require__) {
8473
-
8474
- "use strict";
8475
-
8476
- // B.2.3.12 String.prototype.strike()
8477
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('strike', function (createHTML) {
8478
- return function strike() {
8479
- return createHTML(this, 'strike', '', '');
8480
- };
8481
- });
8482
-
8483
-
8484
- /***/ }),
8485
-
8486
- /***/ "./node_modules/core-js/modules/es6.string.sub.js":
8487
- /*!********************************************************!*\
8488
- !*** ./node_modules/core-js/modules/es6.string.sub.js ***!
8489
- \********************************************************/
8490
- /*! no static exports found */
8491
- /***/ (function(module, exports, __webpack_require__) {
8492
-
8493
- "use strict";
8494
-
8495
- // B.2.3.13 String.prototype.sub()
8496
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('sub', function (createHTML) {
8497
- return function sub() {
8498
- return createHTML(this, 'sub', '', '');
8499
- };
8500
- });
8501
-
8502
-
8503
- /***/ }),
8504
-
8505
- /***/ "./node_modules/core-js/modules/es6.string.sup.js":
8506
- /*!********************************************************!*\
8507
- !*** ./node_modules/core-js/modules/es6.string.sup.js ***!
8508
- \********************************************************/
8509
- /*! no static exports found */
8510
- /***/ (function(module, exports, __webpack_require__) {
8511
-
8512
- "use strict";
8513
-
8514
- // B.2.3.14 String.prototype.sup()
8515
- __webpack_require__(/*! ./_string-html */ "./node_modules/core-js/modules/_string-html.js")('sup', function (createHTML) {
8516
- return function sup() {
8517
- return createHTML(this, 'sup', '', '');
8518
- };
8519
- });
8520
-
8521
-
8522
- /***/ }),
8523
-
8524
- /***/ "./node_modules/core-js/modules/es6.string.trim.js":
8525
- /*!*********************************************************!*\
8526
- !*** ./node_modules/core-js/modules/es6.string.trim.js ***!
8527
- \*********************************************************/
8528
- /*! no static exports found */
8529
- /***/ (function(module, exports, __webpack_require__) {
8530
-
8531
- "use strict";
8532
-
8533
- // 21.1.3.25 String.prototype.trim()
8534
- __webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js")('trim', function ($trim) {
8535
- return function trim() {
8536
- return $trim(this, 3);
8537
- };
8538
- });
8539
-
8540
-
8541
- /***/ }),
8542
-
8543
- /***/ "./node_modules/core-js/modules/es6.symbol.js":
8544
- /*!****************************************************!*\
8545
- !*** ./node_modules/core-js/modules/es6.symbol.js ***!
8546
- \****************************************************/
8547
- /*! no static exports found */
8548
- /***/ (function(module, exports, __webpack_require__) {
8549
-
8550
- "use strict";
8551
-
8552
- // ECMAScript 6 symbols shim
8553
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
8554
- var has = __webpack_require__(/*! ./_has */ "./node_modules/core-js/modules/_has.js");
8555
- var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "./node_modules/core-js/modules/_descriptors.js");
8556
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8557
- var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
8558
- var META = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js").KEY;
8559
- var $fails = __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js");
8560
- var shared = __webpack_require__(/*! ./_shared */ "./node_modules/core-js/modules/_shared.js");
8561
- var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "./node_modules/core-js/modules/_set-to-string-tag.js");
8562
- var uid = __webpack_require__(/*! ./_uid */ "./node_modules/core-js/modules/_uid.js");
8563
- var wks = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
8564
- var wksExt = __webpack_require__(/*! ./_wks-ext */ "./node_modules/core-js/modules/_wks-ext.js");
8565
- var wksDefine = __webpack_require__(/*! ./_wks-define */ "./node_modules/core-js/modules/_wks-define.js");
8566
- var enumKeys = __webpack_require__(/*! ./_enum-keys */ "./node_modules/core-js/modules/_enum-keys.js");
8567
- var isArray = __webpack_require__(/*! ./_is-array */ "./node_modules/core-js/modules/_is-array.js");
8568
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
8569
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
8570
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
8571
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
8572
- var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "./node_modules/core-js/modules/_to-primitive.js");
8573
- var createDesc = __webpack_require__(/*! ./_property-desc */ "./node_modules/core-js/modules/_property-desc.js");
8574
- var _create = __webpack_require__(/*! ./_object-create */ "./node_modules/core-js/modules/_object-create.js");
8575
- var gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ "./node_modules/core-js/modules/_object-gopn-ext.js");
8576
- var $GOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
8577
- var $GOPS = __webpack_require__(/*! ./_object-gops */ "./node_modules/core-js/modules/_object-gops.js");
8578
- var $DP = __webpack_require__(/*! ./_object-dp */ "./node_modules/core-js/modules/_object-dp.js");
8579
- var $keys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
8580
- var gOPD = $GOPD.f;
8581
- var dP = $DP.f;
8582
- var gOPN = gOPNExt.f;
8583
- var $Symbol = global.Symbol;
8584
- var $JSON = global.JSON;
8585
- var _stringify = $JSON && $JSON.stringify;
8586
- var PROTOTYPE = 'prototype';
8587
- var HIDDEN = wks('_hidden');
8588
- var TO_PRIMITIVE = wks('toPrimitive');
8589
- var isEnum = {}.propertyIsEnumerable;
8590
- var SymbolRegistry = shared('symbol-registry');
8591
- var AllSymbols = shared('symbols');
8592
- var OPSymbols = shared('op-symbols');
8593
- var ObjectProto = Object[PROTOTYPE];
8594
- var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
8595
- var QObject = global.QObject;
8596
- // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
8597
- var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
8598
-
8599
- // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
8600
- var setSymbolDesc = DESCRIPTORS && $fails(function () {
8601
- return _create(dP({}, 'a', {
8602
- get: function () { return dP(this, 'a', { value: 7 }).a; }
8603
- })).a != 7;
8604
- }) ? function (it, key, D) {
8605
- var protoDesc = gOPD(ObjectProto, key);
8606
- if (protoDesc) delete ObjectProto[key];
8607
- dP(it, key, D);
8608
- if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
8609
- } : dP;
8610
-
8611
- var wrap = function (tag) {
8612
- var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
8613
- sym._k = tag;
8614
- return sym;
8615
- };
8616
-
8617
- var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
8618
- return typeof it == 'symbol';
8619
- } : function (it) {
8620
- return it instanceof $Symbol;
8621
- };
8622
-
8623
- var $defineProperty = function defineProperty(it, key, D) {
8624
- if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
8625
- anObject(it);
8626
- key = toPrimitive(key, true);
8627
- anObject(D);
8628
- if (has(AllSymbols, key)) {
8629
- if (!D.enumerable) {
8630
- if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
8631
- it[HIDDEN][key] = true;
8632
- } else {
8633
- if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
8634
- D = _create(D, { enumerable: createDesc(0, false) });
8635
- } return setSymbolDesc(it, key, D);
8636
- } return dP(it, key, D);
8637
- };
8638
- var $defineProperties = function defineProperties(it, P) {
8639
- anObject(it);
8640
- var keys = enumKeys(P = toIObject(P));
8641
- var i = 0;
8642
- var l = keys.length;
8643
- var key;
8644
- while (l > i) $defineProperty(it, key = keys[i++], P[key]);
8645
- return it;
8646
- };
8647
- var $create = function create(it, P) {
8648
- return P === undefined ? _create(it) : $defineProperties(_create(it), P);
8649
- };
8650
- var $propertyIsEnumerable = function propertyIsEnumerable(key) {
8651
- var E = isEnum.call(this, key = toPrimitive(key, true));
8652
- if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
8653
- return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
8654
- };
8655
- var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
8656
- it = toIObject(it);
8657
- key = toPrimitive(key, true);
8658
- if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
8659
- var D = gOPD(it, key);
8660
- if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
8661
- return D;
8662
- };
8663
- var $getOwnPropertyNames = function getOwnPropertyNames(it) {
8664
- var names = gOPN(toIObject(it));
8665
- var result = [];
8666
- var i = 0;
8667
- var key;
8668
- while (names.length > i) {
8669
- if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
8670
- } return result;
8671
- };
8672
- var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
8673
- var IS_OP = it === ObjectProto;
8674
- var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
8675
- var result = [];
8676
- var i = 0;
8677
- var key;
8678
- while (names.length > i) {
8679
- if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
8680
- } return result;
8681
- };
8682
-
8683
- // 19.4.1.1 Symbol([description])
8684
- if (!USE_NATIVE) {
8685
- $Symbol = function Symbol() {
8686
- if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
8687
- var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
8688
- var $set = function (value) {
8689
- if (this === ObjectProto) $set.call(OPSymbols, value);
8690
- if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
8691
- setSymbolDesc(this, tag, createDesc(1, value));
8692
- };
8693
- if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
8694
- return wrap(tag);
8695
- };
8696
- redefine($Symbol[PROTOTYPE], 'toString', function toString() {
8697
- return this._k;
8698
- });
8699
-
8700
- $GOPD.f = $getOwnPropertyDescriptor;
8701
- $DP.f = $defineProperty;
8702
- __webpack_require__(/*! ./_object-gopn */ "./node_modules/core-js/modules/_object-gopn.js").f = gOPNExt.f = $getOwnPropertyNames;
8703
- __webpack_require__(/*! ./_object-pie */ "./node_modules/core-js/modules/_object-pie.js").f = $propertyIsEnumerable;
8704
- $GOPS.f = $getOwnPropertySymbols;
8705
-
8706
- if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js")) {
8707
- redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
8708
- }
8709
-
8710
- wksExt.f = function (name) {
8711
- return wrap(wks(name));
8712
- };
8713
- }
8714
-
8715
- $export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
8716
-
8717
- for (var es6Symbols = (
8718
- // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
8719
- 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
8720
- ).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);
8721
-
8722
- for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
8723
-
8724
- $export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
8725
- // 19.4.2.1 Symbol.for(key)
8726
- 'for': function (key) {
8727
- return has(SymbolRegistry, key += '')
8728
- ? SymbolRegistry[key]
8729
- : SymbolRegistry[key] = $Symbol(key);
8730
- },
8731
- // 19.4.2.5 Symbol.keyFor(sym)
8732
- keyFor: function keyFor(sym) {
8733
- if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
8734
- for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
8735
- },
8736
- useSetter: function () { setter = true; },
8737
- useSimple: function () { setter = false; }
8738
- });
8739
-
8740
- $export($export.S + $export.F * !USE_NATIVE, 'Object', {
8741
- // 19.1.2.2 Object.create(O [, Properties])
8742
- create: $create,
8743
- // 19.1.2.4 Object.defineProperty(O, P, Attributes)
8744
- defineProperty: $defineProperty,
8745
- // 19.1.2.3 Object.defineProperties(O, Properties)
8746
- defineProperties: $defineProperties,
8747
- // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
8748
- getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
8749
- // 19.1.2.7 Object.getOwnPropertyNames(O)
8750
- getOwnPropertyNames: $getOwnPropertyNames,
8751
- // 19.1.2.8 Object.getOwnPropertySymbols(O)
8752
- getOwnPropertySymbols: $getOwnPropertySymbols
8753
- });
8754
-
8755
- // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
8756
- // https://bugs.chromium.org/p/v8/issues/detail?id=3443
8757
- var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });
8758
-
8759
- $export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
8760
- getOwnPropertySymbols: function getOwnPropertySymbols(it) {
8761
- return $GOPS.f(toObject(it));
8762
- }
8763
- });
8764
-
8765
- // 24.3.2 JSON.stringify(value [, replacer [, space]])
8766
- $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
8767
- var S = $Symbol();
8768
- // MS Edge converts symbol values to JSON as {}
8769
- // WebKit converts symbol values to JSON as null
8770
- // V8 throws on boxed symbols
8771
- return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
8772
- })), 'JSON', {
8773
- stringify: function stringify(it) {
8774
- var args = [it];
8775
- var i = 1;
8776
- var replacer, $replacer;
8777
- while (arguments.length > i) args.push(arguments[i++]);
8778
- $replacer = replacer = args[1];
8779
- if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
8780
- if (!isArray(replacer)) replacer = function (key, value) {
8781
- if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
8782
- if (!isSymbol(value)) return value;
8783
- };
8784
- args[1] = replacer;
8785
- return _stringify.apply($JSON, args);
8786
- }
8787
- });
8788
-
8789
- // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
8790
- $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
8791
- // 19.4.3.5 Symbol.prototype[@@toStringTag]
8792
- setToStringTag($Symbol, 'Symbol');
8793
- // 20.2.1.9 Math[@@toStringTag]
8794
- setToStringTag(Math, 'Math', true);
8795
- // 24.3.3 JSON[@@toStringTag]
8796
- setToStringTag(global.JSON, 'JSON', true);
8797
-
8798
-
8799
- /***/ }),
8800
-
8801
- /***/ "./node_modules/core-js/modules/es6.typed.array-buffer.js":
8802
- /*!****************************************************************!*\
8803
- !*** ./node_modules/core-js/modules/es6.typed.array-buffer.js ***!
8804
- \****************************************************************/
8805
- /*! no static exports found */
8806
- /***/ (function(module, exports, __webpack_require__) {
8807
-
8808
- "use strict";
8809
-
8810
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8811
- var $typed = __webpack_require__(/*! ./_typed */ "./node_modules/core-js/modules/_typed.js");
8812
- var buffer = __webpack_require__(/*! ./_typed-buffer */ "./node_modules/core-js/modules/_typed-buffer.js");
8813
- var anObject = __webpack_require__(/*! ./_an-object */ "./node_modules/core-js/modules/_an-object.js");
8814
- var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "./node_modules/core-js/modules/_to-absolute-index.js");
8815
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
8816
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
8817
- var ArrayBuffer = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js").ArrayBuffer;
8818
- var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "./node_modules/core-js/modules/_species-constructor.js");
8819
- var $ArrayBuffer = buffer.ArrayBuffer;
8820
- var $DataView = buffer.DataView;
8821
- var $isView = $typed.ABV && ArrayBuffer.isView;
8822
- var $slice = $ArrayBuffer.prototype.slice;
8823
- var VIEW = $typed.VIEW;
8824
- var ARRAY_BUFFER = 'ArrayBuffer';
8825
-
8826
- $export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });
8827
-
8828
- $export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
8829
- // 24.1.3.1 ArrayBuffer.isView(arg)
8830
- isView: function isView(it) {
8831
- return $isView && $isView(it) || isObject(it) && VIEW in it;
8832
- }
8833
- });
8834
-
8835
- $export($export.P + $export.U + $export.F * __webpack_require__(/*! ./_fails */ "./node_modules/core-js/modules/_fails.js")(function () {
8836
- return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
8837
- }), ARRAY_BUFFER, {
8838
- // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
8839
- slice: function slice(start, end) {
8840
- if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix
8841
- var len = anObject(this).byteLength;
8842
- var first = toAbsoluteIndex(start, len);
8843
- var fin = toAbsoluteIndex(end === undefined ? len : end, len);
8844
- var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));
8845
- var viewS = new $DataView(this);
8846
- var viewT = new $DataView(result);
8847
- var index = 0;
8848
- while (first < fin) {
8849
- viewT.setUint8(index++, viewS.getUint8(first++));
8850
- } return result;
8851
- }
8852
- });
8853
-
8854
- __webpack_require__(/*! ./_set-species */ "./node_modules/core-js/modules/_set-species.js")(ARRAY_BUFFER);
8855
-
8856
-
8857
- /***/ }),
8858
-
8859
- /***/ "./node_modules/core-js/modules/es6.typed.data-view.js":
8860
- /*!*************************************************************!*\
8861
- !*** ./node_modules/core-js/modules/es6.typed.data-view.js ***!
8862
- \*************************************************************/
8863
- /*! no static exports found */
8864
- /***/ (function(module, exports, __webpack_require__) {
8865
-
8866
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
8867
- $export($export.G + $export.W + $export.F * !__webpack_require__(/*! ./_typed */ "./node_modules/core-js/modules/_typed.js").ABV, {
8868
- DataView: __webpack_require__(/*! ./_typed-buffer */ "./node_modules/core-js/modules/_typed-buffer.js").DataView
8869
- });
8870
-
8871
-
8872
- /***/ }),
8873
-
8874
- /***/ "./node_modules/core-js/modules/es6.typed.float32-array.js":
8875
- /*!*****************************************************************!*\
8876
- !*** ./node_modules/core-js/modules/es6.typed.float32-array.js ***!
8877
- \*****************************************************************/
8878
- /*! no static exports found */
8879
- /***/ (function(module, exports, __webpack_require__) {
8880
-
8881
- __webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Float32', 4, function (init) {
8882
- return function Float32Array(data, byteOffset, length) {
8883
- return init(this, data, byteOffset, length);
8884
- };
8885
- });
8886
-
8887
-
8888
- /***/ }),
8889
-
8890
- /***/ "./node_modules/core-js/modules/es6.typed.float64-array.js":
8891
- /*!*****************************************************************!*\
8892
- !*** ./node_modules/core-js/modules/es6.typed.float64-array.js ***!
8893
- \*****************************************************************/
8894
- /*! no static exports found */
8895
- /***/ (function(module, exports, __webpack_require__) {
8896
-
8897
- __webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Float64', 8, function (init) {
8898
- return function Float64Array(data, byteOffset, length) {
8899
- return init(this, data, byteOffset, length);
8900
- };
8901
- });
8902
-
8903
-
8904
- /***/ }),
8905
-
8906
- /***/ "./node_modules/core-js/modules/es6.typed.int16-array.js":
8907
- /*!***************************************************************!*\
8908
- !*** ./node_modules/core-js/modules/es6.typed.int16-array.js ***!
8909
- \***************************************************************/
8910
- /*! no static exports found */
8911
- /***/ (function(module, exports, __webpack_require__) {
8912
-
8913
- __webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Int16', 2, function (init) {
8914
- return function Int16Array(data, byteOffset, length) {
8915
- return init(this, data, byteOffset, length);
8916
- };
8917
- });
8918
-
8919
-
8920
- /***/ }),
8921
-
8922
- /***/ "./node_modules/core-js/modules/es6.typed.int32-array.js":
8923
- /*!***************************************************************!*\
8924
- !*** ./node_modules/core-js/modules/es6.typed.int32-array.js ***!
8925
- \***************************************************************/
8926
- /*! no static exports found */
8927
- /***/ (function(module, exports, __webpack_require__) {
8928
-
8929
- __webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Int32', 4, function (init) {
8930
- return function Int32Array(data, byteOffset, length) {
8931
- return init(this, data, byteOffset, length);
8932
- };
8933
- });
8934
-
8935
-
8936
- /***/ }),
8937
-
8938
- /***/ "./node_modules/core-js/modules/es6.typed.int8-array.js":
8939
- /*!**************************************************************!*\
8940
- !*** ./node_modules/core-js/modules/es6.typed.int8-array.js ***!
8941
- \**************************************************************/
8942
- /*! no static exports found */
8943
- /***/ (function(module, exports, __webpack_require__) {
8944
-
8945
- __webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Int8', 1, function (init) {
8946
- return function Int8Array(data, byteOffset, length) {
8947
- return init(this, data, byteOffset, length);
8948
- };
8949
- });
8950
-
8951
-
8952
- /***/ }),
8953
-
8954
- /***/ "./node_modules/core-js/modules/es6.typed.uint16-array.js":
8955
- /*!****************************************************************!*\
8956
- !*** ./node_modules/core-js/modules/es6.typed.uint16-array.js ***!
8957
- \****************************************************************/
8958
- /*! no static exports found */
8959
- /***/ (function(module, exports, __webpack_require__) {
8960
-
8961
- __webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Uint16', 2, function (init) {
8962
- return function Uint16Array(data, byteOffset, length) {
8963
- return init(this, data, byteOffset, length);
8964
- };
8965
- });
8966
-
8967
-
8968
- /***/ }),
8969
-
8970
- /***/ "./node_modules/core-js/modules/es6.typed.uint32-array.js":
8971
- /*!****************************************************************!*\
8972
- !*** ./node_modules/core-js/modules/es6.typed.uint32-array.js ***!
8973
- \****************************************************************/
8974
- /*! no static exports found */
8975
- /***/ (function(module, exports, __webpack_require__) {
8976
-
8977
- __webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Uint32', 4, function (init) {
8978
- return function Uint32Array(data, byteOffset, length) {
8979
- return init(this, data, byteOffset, length);
8980
- };
8981
- });
8982
-
8983
-
8984
- /***/ }),
8985
-
8986
- /***/ "./node_modules/core-js/modules/es6.typed.uint8-array.js":
8987
- /*!***************************************************************!*\
8988
- !*** ./node_modules/core-js/modules/es6.typed.uint8-array.js ***!
8989
- \***************************************************************/
8990
- /*! no static exports found */
8991
- /***/ (function(module, exports, __webpack_require__) {
8992
-
8993
- __webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Uint8', 1, function (init) {
8994
- return function Uint8Array(data, byteOffset, length) {
8995
- return init(this, data, byteOffset, length);
8996
- };
8997
- });
8998
-
8999
-
9000
- /***/ }),
9001
-
9002
- /***/ "./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js":
9003
- /*!***********************************************************************!*\
9004
- !*** ./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js ***!
9005
- \***********************************************************************/
9006
- /*! no static exports found */
9007
- /***/ (function(module, exports, __webpack_require__) {
9008
-
9009
- __webpack_require__(/*! ./_typed-array */ "./node_modules/core-js/modules/_typed-array.js")('Uint8', 1, function (init) {
9010
- return function Uint8ClampedArray(data, byteOffset, length) {
9011
- return init(this, data, byteOffset, length);
9012
- };
9013
- }, true);
9014
-
9015
-
9016
- /***/ }),
9017
-
9018
- /***/ "./node_modules/core-js/modules/es6.weak-map.js":
9019
- /*!******************************************************!*\
9020
- !*** ./node_modules/core-js/modules/es6.weak-map.js ***!
9021
- \******************************************************/
9022
- /*! no static exports found */
9023
- /***/ (function(module, exports, __webpack_require__) {
9024
-
9025
- "use strict";
9026
-
9027
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
9028
- var each = __webpack_require__(/*! ./_array-methods */ "./node_modules/core-js/modules/_array-methods.js")(0);
9029
- var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
9030
- var meta = __webpack_require__(/*! ./_meta */ "./node_modules/core-js/modules/_meta.js");
9031
- var assign = __webpack_require__(/*! ./_object-assign */ "./node_modules/core-js/modules/_object-assign.js");
9032
- var weak = __webpack_require__(/*! ./_collection-weak */ "./node_modules/core-js/modules/_collection-weak.js");
9033
- var isObject = __webpack_require__(/*! ./_is-object */ "./node_modules/core-js/modules/_is-object.js");
9034
- var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
9035
- var NATIVE_WEAK_MAP = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
9036
- var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
9037
- var WEAK_MAP = 'WeakMap';
9038
- var getWeak = meta.getWeak;
9039
- var isExtensible = Object.isExtensible;
9040
- var uncaughtFrozenStore = weak.ufstore;
9041
- var InternalMap;
9042
-
9043
- var wrapper = function (get) {
9044
- return function WeakMap() {
9045
- return get(this, arguments.length > 0 ? arguments[0] : undefined);
9046
- };
9047
- };
9048
-
9049
- var methods = {
9050
- // 23.3.3.3 WeakMap.prototype.get(key)
9051
- get: function get(key) {
9052
- if (isObject(key)) {
9053
- var data = getWeak(key);
9054
- if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
9055
- return data ? data[this._i] : undefined;
9056
- }
9057
- },
9058
- // 23.3.3.5 WeakMap.prototype.set(key, value)
9059
- set: function set(key, value) {
9060
- return weak.def(validate(this, WEAK_MAP), key, value);
9061
- }
9062
- };
9063
-
9064
- // 23.3 WeakMap Objects
9065
- var $WeakMap = module.exports = __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(WEAK_MAP, wrapper, methods, weak, true, true);
9066
-
9067
- // IE11 WeakMap frozen keys fix
9068
- if (NATIVE_WEAK_MAP && IS_IE11) {
9069
- InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
9070
- assign(InternalMap.prototype, methods);
9071
- meta.NEED = true;
9072
- each(['delete', 'has', 'get', 'set'], function (key) {
9073
- var proto = $WeakMap.prototype;
9074
- var method = proto[key];
9075
- redefine(proto, key, function (a, b) {
9076
- // store frozen objects on internal weakmap shim
9077
- if (isObject(a) && !isExtensible(a)) {
9078
- if (!this._f) this._f = new InternalMap();
9079
- var result = this._f[key](a, b);
9080
- return key == 'set' ? this : result;
9081
- // store all the rest on native weakmap
9082
- } return method.call(this, a, b);
9083
- });
9084
- });
9085
- }
9086
-
9087
-
9088
- /***/ }),
9089
-
9090
- /***/ "./node_modules/core-js/modules/es6.weak-set.js":
9091
- /*!******************************************************!*\
9092
- !*** ./node_modules/core-js/modules/es6.weak-set.js ***!
9093
- \******************************************************/
9094
- /*! no static exports found */
9095
- /***/ (function(module, exports, __webpack_require__) {
9096
-
9097
- "use strict";
9098
-
9099
- var weak = __webpack_require__(/*! ./_collection-weak */ "./node_modules/core-js/modules/_collection-weak.js");
9100
- var validate = __webpack_require__(/*! ./_validate-collection */ "./node_modules/core-js/modules/_validate-collection.js");
9101
- var WEAK_SET = 'WeakSet';
9102
-
9103
- // 23.4 WeakSet Objects
9104
- __webpack_require__(/*! ./_collection */ "./node_modules/core-js/modules/_collection.js")(WEAK_SET, function (get) {
9105
- return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
9106
- }, {
9107
- // 23.4.3.1 WeakSet.prototype.add(value)
9108
- add: function add(value) {
9109
- return weak.def(validate(this, WEAK_SET), value, true);
9110
- }
9111
- }, weak, false, true);
9112
-
9113
-
9114
- /***/ }),
9115
-
9116
- /***/ "./node_modules/core-js/modules/es7.array.flat-map.js":
9117
- /*!************************************************************!*\
9118
- !*** ./node_modules/core-js/modules/es7.array.flat-map.js ***!
9119
- \************************************************************/
9120
- /*! no static exports found */
9121
- /***/ (function(module, exports, __webpack_require__) {
9122
-
9123
- "use strict";
9124
-
9125
- // https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap
9126
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9127
- var flattenIntoArray = __webpack_require__(/*! ./_flatten-into-array */ "./node_modules/core-js/modules/_flatten-into-array.js");
9128
- var toObject = __webpack_require__(/*! ./_to-object */ "./node_modules/core-js/modules/_to-object.js");
9129
- var toLength = __webpack_require__(/*! ./_to-length */ "./node_modules/core-js/modules/_to-length.js");
9130
- var aFunction = __webpack_require__(/*! ./_a-function */ "./node_modules/core-js/modules/_a-function.js");
9131
- var arraySpeciesCreate = __webpack_require__(/*! ./_array-species-create */ "./node_modules/core-js/modules/_array-species-create.js");
9132
-
9133
- $export($export.P, 'Array', {
9134
- flatMap: function flatMap(callbackfn /* , thisArg */) {
9135
- var O = toObject(this);
9136
- var sourceLen, A;
9137
- aFunction(callbackfn);
9138
- sourceLen = toLength(O.length);
9139
- A = arraySpeciesCreate(O, 0);
9140
- flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);
9141
- return A;
9142
- }
9143
- });
9144
-
9145
- __webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")('flatMap');
9146
-
9147
-
9148
- /***/ }),
9149
-
9150
- /***/ "./node_modules/core-js/modules/es7.array.includes.js":
9151
- /*!************************************************************!*\
9152
- !*** ./node_modules/core-js/modules/es7.array.includes.js ***!
9153
- \************************************************************/
9154
- /*! no static exports found */
9155
- /***/ (function(module, exports, __webpack_require__) {
9156
-
9157
- "use strict";
9158
-
9159
- // https://github.com/tc39/Array.prototype.includes
9160
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9161
- var $includes = __webpack_require__(/*! ./_array-includes */ "./node_modules/core-js/modules/_array-includes.js")(true);
9162
-
9163
- $export($export.P, 'Array', {
9164
- includes: function includes(el /* , fromIndex = 0 */) {
9165
- return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
9166
- }
9167
- });
9168
-
9169
- __webpack_require__(/*! ./_add-to-unscopables */ "./node_modules/core-js/modules/_add-to-unscopables.js")('includes');
9170
-
9171
-
9172
- /***/ }),
9173
-
9174
- /***/ "./node_modules/core-js/modules/es7.object.entries.js":
9175
- /*!************************************************************!*\
9176
- !*** ./node_modules/core-js/modules/es7.object.entries.js ***!
9177
- \************************************************************/
9178
- /*! no static exports found */
9179
- /***/ (function(module, exports, __webpack_require__) {
9180
-
9181
- // https://github.com/tc39/proposal-object-values-entries
9182
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9183
- var $entries = __webpack_require__(/*! ./_object-to-array */ "./node_modules/core-js/modules/_object-to-array.js")(true);
9184
-
9185
- $export($export.S, 'Object', {
9186
- entries: function entries(it) {
9187
- return $entries(it);
9188
- }
9189
- });
9190
-
9191
-
9192
- /***/ }),
9193
-
9194
- /***/ "./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js":
9195
- /*!*********************************************************************************!*\
9196
- !*** ./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js ***!
9197
- \*********************************************************************************/
9198
- /*! no static exports found */
9199
- /***/ (function(module, exports, __webpack_require__) {
9200
-
9201
- // https://github.com/tc39/proposal-object-getownpropertydescriptors
9202
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9203
- var ownKeys = __webpack_require__(/*! ./_own-keys */ "./node_modules/core-js/modules/_own-keys.js");
9204
- var toIObject = __webpack_require__(/*! ./_to-iobject */ "./node_modules/core-js/modules/_to-iobject.js");
9205
- var gOPD = __webpack_require__(/*! ./_object-gopd */ "./node_modules/core-js/modules/_object-gopd.js");
9206
- var createProperty = __webpack_require__(/*! ./_create-property */ "./node_modules/core-js/modules/_create-property.js");
9207
-
9208
- $export($export.S, 'Object', {
9209
- getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
9210
- var O = toIObject(object);
9211
- var getDesc = gOPD.f;
9212
- var keys = ownKeys(O);
9213
- var result = {};
9214
- var i = 0;
9215
- var key, desc;
9216
- while (keys.length > i) {
9217
- desc = getDesc(O, key = keys[i++]);
9218
- if (desc !== undefined) createProperty(result, key, desc);
9219
- }
9220
- return result;
9221
- }
9222
- });
9223
-
9224
-
9225
- /***/ }),
9226
-
9227
- /***/ "./node_modules/core-js/modules/es7.object.values.js":
9228
- /*!***********************************************************!*\
9229
- !*** ./node_modules/core-js/modules/es7.object.values.js ***!
9230
- \***********************************************************/
9231
- /*! no static exports found */
9232
- /***/ (function(module, exports, __webpack_require__) {
9233
-
9234
- // https://github.com/tc39/proposal-object-values-entries
9235
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9236
- var $values = __webpack_require__(/*! ./_object-to-array */ "./node_modules/core-js/modules/_object-to-array.js")(false);
9237
-
9238
- $export($export.S, 'Object', {
9239
- values: function values(it) {
9240
- return $values(it);
9241
- }
9242
- });
9243
-
9244
-
9245
- /***/ }),
9246
-
9247
- /***/ "./node_modules/core-js/modules/es7.promise.finally.js":
9248
- /*!*************************************************************!*\
9249
- !*** ./node_modules/core-js/modules/es7.promise.finally.js ***!
9250
- \*************************************************************/
9251
- /*! no static exports found */
9252
- /***/ (function(module, exports, __webpack_require__) {
9253
-
9254
- "use strict";
9255
- // https://github.com/tc39/proposal-promise-finally
9256
-
9257
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9258
- var core = __webpack_require__(/*! ./_core */ "./node_modules/core-js/modules/_core.js");
9259
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
9260
- var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "./node_modules/core-js/modules/_species-constructor.js");
9261
- var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "./node_modules/core-js/modules/_promise-resolve.js");
9262
-
9263
- $export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
9264
- var C = speciesConstructor(this, core.Promise || global.Promise);
9265
- var isFunction = typeof onFinally == 'function';
9266
- return this.then(
9267
- isFunction ? function (x) {
9268
- return promiseResolve(C, onFinally()).then(function () { return x; });
9269
- } : onFinally,
9270
- isFunction ? function (e) {
9271
- return promiseResolve(C, onFinally()).then(function () { throw e; });
9272
- } : onFinally
9273
- );
9274
- } });
9275
-
9276
-
9277
- /***/ }),
9278
-
9279
- /***/ "./node_modules/core-js/modules/es7.string.pad-end.js":
9280
- /*!************************************************************!*\
9281
- !*** ./node_modules/core-js/modules/es7.string.pad-end.js ***!
9282
- \************************************************************/
9283
- /*! no static exports found */
9284
- /***/ (function(module, exports, __webpack_require__) {
9285
-
9286
- "use strict";
9287
-
9288
- // https://github.com/tc39/proposal-string-pad-start-end
9289
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9290
- var $pad = __webpack_require__(/*! ./_string-pad */ "./node_modules/core-js/modules/_string-pad.js");
9291
- var userAgent = __webpack_require__(/*! ./_user-agent */ "./node_modules/core-js/modules/_user-agent.js");
9292
-
9293
- // https://github.com/zloirock/core-js/issues/280
9294
- var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
9295
-
9296
- $export($export.P + $export.F * WEBKIT_BUG, 'String', {
9297
- padEnd: function padEnd(maxLength /* , fillString = ' ' */) {
9298
- return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
9299
- }
9300
- });
9301
-
9302
-
9303
- /***/ }),
9304
-
9305
- /***/ "./node_modules/core-js/modules/es7.string.pad-start.js":
9306
- /*!**************************************************************!*\
9307
- !*** ./node_modules/core-js/modules/es7.string.pad-start.js ***!
9308
- \**************************************************************/
9309
- /*! no static exports found */
9310
- /***/ (function(module, exports, __webpack_require__) {
9311
-
9312
- "use strict";
9313
-
9314
- // https://github.com/tc39/proposal-string-pad-start-end
9315
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9316
- var $pad = __webpack_require__(/*! ./_string-pad */ "./node_modules/core-js/modules/_string-pad.js");
9317
- var userAgent = __webpack_require__(/*! ./_user-agent */ "./node_modules/core-js/modules/_user-agent.js");
9318
-
9319
- // https://github.com/zloirock/core-js/issues/280
9320
- var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
9321
-
9322
- $export($export.P + $export.F * WEBKIT_BUG, 'String', {
9323
- padStart: function padStart(maxLength /* , fillString = ' ' */) {
9324
- return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
9325
- }
9326
- });
9327
-
9328
-
9329
- /***/ }),
9330
-
9331
- /***/ "./node_modules/core-js/modules/es7.string.trim-left.js":
9332
- /*!**************************************************************!*\
9333
- !*** ./node_modules/core-js/modules/es7.string.trim-left.js ***!
9334
- \**************************************************************/
9335
- /*! no static exports found */
9336
- /***/ (function(module, exports, __webpack_require__) {
9337
-
9338
- "use strict";
9339
-
9340
- // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
9341
- __webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js")('trimLeft', function ($trim) {
9342
- return function trimLeft() {
9343
- return $trim(this, 1);
9344
- };
9345
- }, 'trimStart');
9346
-
9347
-
9348
- /***/ }),
9349
-
9350
- /***/ "./node_modules/core-js/modules/es7.string.trim-right.js":
9351
- /*!***************************************************************!*\
9352
- !*** ./node_modules/core-js/modules/es7.string.trim-right.js ***!
9353
- \***************************************************************/
9354
- /*! no static exports found */
9355
- /***/ (function(module, exports, __webpack_require__) {
9356
-
9357
- "use strict";
9358
-
9359
- // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
9360
- __webpack_require__(/*! ./_string-trim */ "./node_modules/core-js/modules/_string-trim.js")('trimRight', function ($trim) {
9361
- return function trimRight() {
9362
- return $trim(this, 2);
9363
- };
9364
- }, 'trimEnd');
9365
-
9366
-
9367
- /***/ }),
9368
-
9369
- /***/ "./node_modules/core-js/modules/es7.symbol.async-iterator.js":
9370
- /*!*******************************************************************!*\
9371
- !*** ./node_modules/core-js/modules/es7.symbol.async-iterator.js ***!
9372
- \*******************************************************************/
9373
- /*! no static exports found */
9374
- /***/ (function(module, exports, __webpack_require__) {
9375
-
9376
- __webpack_require__(/*! ./_wks-define */ "./node_modules/core-js/modules/_wks-define.js")('asyncIterator');
9377
-
9378
-
9379
- /***/ }),
9380
-
9381
- /***/ "./node_modules/core-js/modules/web.dom.iterable.js":
9382
- /*!**********************************************************!*\
9383
- !*** ./node_modules/core-js/modules/web.dom.iterable.js ***!
9384
- \**********************************************************/
9385
- /*! no static exports found */
9386
- /***/ (function(module, exports, __webpack_require__) {
9387
-
9388
- var $iterators = __webpack_require__(/*! ./es6.array.iterator */ "./node_modules/core-js/modules/es6.array.iterator.js");
9389
- var getKeys = __webpack_require__(/*! ./_object-keys */ "./node_modules/core-js/modules/_object-keys.js");
9390
- var redefine = __webpack_require__(/*! ./_redefine */ "./node_modules/core-js/modules/_redefine.js");
9391
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
9392
- var hide = __webpack_require__(/*! ./_hide */ "./node_modules/core-js/modules/_hide.js");
9393
- var Iterators = __webpack_require__(/*! ./_iterators */ "./node_modules/core-js/modules/_iterators.js");
9394
- var wks = __webpack_require__(/*! ./_wks */ "./node_modules/core-js/modules/_wks.js");
9395
- var ITERATOR = wks('iterator');
9396
- var TO_STRING_TAG = wks('toStringTag');
9397
- var ArrayValues = Iterators.Array;
9398
-
9399
- var DOMIterables = {
9400
- CSSRuleList: true, // TODO: Not spec compliant, should be false.
9401
- CSSStyleDeclaration: false,
9402
- CSSValueList: false,
9403
- ClientRectList: false,
9404
- DOMRectList: false,
9405
- DOMStringList: false,
9406
- DOMTokenList: true,
9407
- DataTransferItemList: false,
9408
- FileList: false,
9409
- HTMLAllCollection: false,
9410
- HTMLCollection: false,
9411
- HTMLFormElement: false,
9412
- HTMLSelectElement: false,
9413
- MediaList: true, // TODO: Not spec compliant, should be false.
9414
- MimeTypeArray: false,
9415
- NamedNodeMap: false,
9416
- NodeList: true,
9417
- PaintRequestList: false,
9418
- Plugin: false,
9419
- PluginArray: false,
9420
- SVGLengthList: false,
9421
- SVGNumberList: false,
9422
- SVGPathSegList: false,
9423
- SVGPointList: false,
9424
- SVGStringList: false,
9425
- SVGTransformList: false,
9426
- SourceBufferList: false,
9427
- StyleSheetList: true, // TODO: Not spec compliant, should be false.
9428
- TextTrackCueList: false,
9429
- TextTrackList: false,
9430
- TouchList: false
9431
- };
9432
-
9433
- for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
9434
- var NAME = collections[i];
9435
- var explicit = DOMIterables[NAME];
9436
- var Collection = global[NAME];
9437
- var proto = Collection && Collection.prototype;
9438
- var key;
9439
- if (proto) {
9440
- if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
9441
- if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
9442
- Iterators[NAME] = ArrayValues;
9443
- if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
9444
- }
9445
- }
9446
-
9447
-
9448
- /***/ }),
9449
-
9450
- /***/ "./node_modules/core-js/modules/web.immediate.js":
9451
- /*!*******************************************************!*\
9452
- !*** ./node_modules/core-js/modules/web.immediate.js ***!
9453
- \*******************************************************/
9454
- /*! no static exports found */
9455
- /***/ (function(module, exports, __webpack_require__) {
9456
-
9457
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9458
- var $task = __webpack_require__(/*! ./_task */ "./node_modules/core-js/modules/_task.js");
9459
- $export($export.G + $export.B, {
9460
- setImmediate: $task.set,
9461
- clearImmediate: $task.clear
9462
- });
9463
-
9464
-
9465
- /***/ }),
9466
-
9467
- /***/ "./node_modules/core-js/modules/web.timers.js":
9468
- /*!****************************************************!*\
9469
- !*** ./node_modules/core-js/modules/web.timers.js ***!
9470
- \****************************************************/
9471
- /*! no static exports found */
9472
- /***/ (function(module, exports, __webpack_require__) {
9473
-
9474
- // ie9- setTimeout & setInterval additional parameters fix
9475
- var global = __webpack_require__(/*! ./_global */ "./node_modules/core-js/modules/_global.js");
9476
- var $export = __webpack_require__(/*! ./_export */ "./node_modules/core-js/modules/_export.js");
9477
- var userAgent = __webpack_require__(/*! ./_user-agent */ "./node_modules/core-js/modules/_user-agent.js");
9478
- var slice = [].slice;
9479
- var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
9480
- var wrap = function (set) {
9481
- return function (fn, time /* , ...args */) {
9482
- var boundArgs = arguments.length > 2;
9483
- var args = boundArgs ? slice.call(arguments, 2) : false;
9484
- return set(boundArgs ? function () {
9485
- // eslint-disable-next-line no-new-func
9486
- (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);
9487
- } : fn, time);
9488
- };
9489
- };
9490
- $export($export.G + $export.B + $export.F * MSIE, {
9491
- setTimeout: wrap(global.setTimeout),
9492
- setInterval: wrap(global.setInterval)
9493
- });
9494
-
9495
-
9496
- /***/ }),
9497
-
9498
- /***/ "./node_modules/core-js/web/index.js":
9499
- /*!*******************************************!*\
9500
- !*** ./node_modules/core-js/web/index.js ***!
9501
- \*******************************************/
9502
- /*! no static exports found */
9503
- /***/ (function(module, exports, __webpack_require__) {
9504
-
9505
- __webpack_require__(/*! ../modules/web.timers */ "./node_modules/core-js/modules/web.timers.js");
9506
- __webpack_require__(/*! ../modules/web.immediate */ "./node_modules/core-js/modules/web.immediate.js");
9507
- __webpack_require__(/*! ../modules/web.dom.iterable */ "./node_modules/core-js/modules/web.dom.iterable.js");
9508
- module.exports = __webpack_require__(/*! ../modules/_core */ "./node_modules/core-js/modules/_core.js");
9509
-
9510
-
9511
- /***/ }),
9512
-
9513
- /***/ "./node_modules/regenerator-runtime/runtime.js":
9514
- /*!*****************************************************!*\
9515
- !*** ./node_modules/regenerator-runtime/runtime.js ***!
9516
- \*****************************************************/
9517
- /*! no static exports found */
9518
- /***/ (function(module, exports, __webpack_require__) {
9519
-
9520
- /**
9521
- * Copyright (c) 2014-present, Facebook, Inc.
9522
- *
9523
- * This source code is licensed under the MIT license found in the
9524
- * LICENSE file in the root directory of this source tree.
9525
- */
9526
-
9527
- var runtime = (function (exports) {
9528
- "use strict";
9529
-
9530
- var Op = Object.prototype;
9531
- var hasOwn = Op.hasOwnProperty;
9532
- var undefined; // More compressible than void 0.
9533
- var $Symbol = typeof Symbol === "function" ? Symbol : {};
9534
- var iteratorSymbol = $Symbol.iterator || "@@iterator";
9535
- var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
9536
- var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
9537
-
9538
- function define(obj, key, value) {
9539
- Object.defineProperty(obj, key, {
9540
- value: value,
9541
- enumerable: true,
9542
- configurable: true,
9543
- writable: true
9544
- });
9545
- return obj[key];
9546
- }
9547
- try {
9548
- // IE 8 has a broken Object.defineProperty that only works on DOM objects.
9549
- define({}, "");
9550
- } catch (err) {
9551
- define = function(obj, key, value) {
9552
- return obj[key] = value;
9553
- };
9554
- }
9555
-
9556
- function wrap(innerFn, outerFn, self, tryLocsList) {
9557
- // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
9558
- var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
9559
- var generator = Object.create(protoGenerator.prototype);
9560
- var context = new Context(tryLocsList || []);
9561
-
9562
- // The ._invoke method unifies the implementations of the .next,
9563
- // .throw, and .return methods.
9564
- generator._invoke = makeInvokeMethod(innerFn, self, context);
9565
-
9566
- return generator;
9567
- }
9568
- exports.wrap = wrap;
9569
-
9570
- // Try/catch helper to minimize deoptimizations. Returns a completion
9571
- // record like context.tryEntries[i].completion. This interface could
9572
- // have been (and was previously) designed to take a closure to be
9573
- // invoked without arguments, but in all the cases we care about we
9574
- // already have an existing method we want to call, so there's no need
9575
- // to create a new function object. We can even get away with assuming
9576
- // the method takes exactly one argument, since that happens to be true
9577
- // in every case, so we don't have to touch the arguments object. The
9578
- // only additional allocation required is the completion record, which
9579
- // has a stable shape and so hopefully should be cheap to allocate.
9580
- function tryCatch(fn, obj, arg) {
9581
- try {
9582
- return { type: "normal", arg: fn.call(obj, arg) };
9583
- } catch (err) {
9584
- return { type: "throw", arg: err };
9585
- }
9586
- }
9587
-
9588
- var GenStateSuspendedStart = "suspendedStart";
9589
- var GenStateSuspendedYield = "suspendedYield";
9590
- var GenStateExecuting = "executing";
9591
- var GenStateCompleted = "completed";
9592
-
9593
- // Returning this object from the innerFn has the same effect as
9594
- // breaking out of the dispatch switch statement.
9595
- var ContinueSentinel = {};
9596
-
9597
- // Dummy constructor functions that we use as the .constructor and
9598
- // .constructor.prototype properties for functions that return Generator
9599
- // objects. For full spec compliance, you may wish to configure your
9600
- // minifier not to mangle the names of these two functions.
9601
- function Generator() {}
9602
- function GeneratorFunction() {}
9603
- function GeneratorFunctionPrototype() {}
9604
-
9605
- // This is a polyfill for %IteratorPrototype% for environments that
9606
- // don't natively support it.
9607
- var IteratorPrototype = {};
9608
- define(IteratorPrototype, iteratorSymbol, function () {
9609
- return this;
9610
- });
9611
-
9612
- var getProto = Object.getPrototypeOf;
9613
- var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
9614
- if (NativeIteratorPrototype &&
9615
- NativeIteratorPrototype !== Op &&
9616
- hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
9617
- // This environment has a native %IteratorPrototype%; use it instead
9618
- // of the polyfill.
9619
- IteratorPrototype = NativeIteratorPrototype;
9620
- }
9621
-
9622
- var Gp = GeneratorFunctionPrototype.prototype =
9623
- Generator.prototype = Object.create(IteratorPrototype);
9624
- GeneratorFunction.prototype = GeneratorFunctionPrototype;
9625
- define(Gp, "constructor", GeneratorFunctionPrototype);
9626
- define(GeneratorFunctionPrototype, "constructor", GeneratorFunction);
9627
- GeneratorFunction.displayName = define(
9628
- GeneratorFunctionPrototype,
9629
- toStringTagSymbol,
9630
- "GeneratorFunction"
9631
- );
9632
-
9633
- // Helper for defining the .next, .throw, and .return methods of the
9634
- // Iterator interface in terms of a single ._invoke method.
9635
- function defineIteratorMethods(prototype) {
9636
- ["next", "throw", "return"].forEach(function(method) {
9637
- define(prototype, method, function(arg) {
9638
- return this._invoke(method, arg);
9639
- });
9640
- });
9641
- }
9642
-
9643
- exports.isGeneratorFunction = function(genFun) {
9644
- var ctor = typeof genFun === "function" && genFun.constructor;
9645
- return ctor
9646
- ? ctor === GeneratorFunction ||
9647
- // For the native GeneratorFunction constructor, the best we can
9648
- // do is to check its .name property.
9649
- (ctor.displayName || ctor.name) === "GeneratorFunction"
9650
- : false;
9651
- };
9652
-
9653
- exports.mark = function(genFun) {
9654
- if (Object.setPrototypeOf) {
9655
- Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
9656
- } else {
9657
- genFun.__proto__ = GeneratorFunctionPrototype;
9658
- define(genFun, toStringTagSymbol, "GeneratorFunction");
9659
- }
9660
- genFun.prototype = Object.create(Gp);
9661
- return genFun;
9662
- };
9663
-
9664
- // Within the body of any async function, `await x` is transformed to
9665
- // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
9666
- // `hasOwn.call(value, "__await")` to determine if the yielded value is
9667
- // meant to be awaited.
9668
- exports.awrap = function(arg) {
9669
- return { __await: arg };
9670
- };
9671
-
9672
- function AsyncIterator(generator, PromiseImpl) {
9673
- function invoke(method, arg, resolve, reject) {
9674
- var record = tryCatch(generator[method], generator, arg);
9675
- if (record.type === "throw") {
9676
- reject(record.arg);
9677
- } else {
9678
- var result = record.arg;
9679
- var value = result.value;
9680
- if (value &&
9681
- typeof value === "object" &&
9682
- hasOwn.call(value, "__await")) {
9683
- return PromiseImpl.resolve(value.__await).then(function(value) {
9684
- invoke("next", value, resolve, reject);
9685
- }, function(err) {
9686
- invoke("throw", err, resolve, reject);
9687
- });
9688
- }
9689
-
9690
- return PromiseImpl.resolve(value).then(function(unwrapped) {
9691
- // When a yielded Promise is resolved, its final value becomes
9692
- // the .value of the Promise<{value,done}> result for the
9693
- // current iteration.
9694
- result.value = unwrapped;
9695
- resolve(result);
9696
- }, function(error) {
9697
- // If a rejected Promise was yielded, throw the rejection back
9698
- // into the async generator function so it can be handled there.
9699
- return invoke("throw", error, resolve, reject);
9700
- });
9701
- }
9702
- }
9703
-
9704
- var previousPromise;
9705
-
9706
- function enqueue(method, arg) {
9707
- function callInvokeWithMethodAndArg() {
9708
- return new PromiseImpl(function(resolve, reject) {
9709
- invoke(method, arg, resolve, reject);
9710
- });
9711
- }
9712
-
9713
- return previousPromise =
9714
- // If enqueue has been called before, then we want to wait until
9715
- // all previous Promises have been resolved before calling invoke,
9716
- // so that results are always delivered in the correct order. If
9717
- // enqueue has not been called before, then it is important to
9718
- // call invoke immediately, without waiting on a callback to fire,
9719
- // so that the async generator function has the opportunity to do
9720
- // any necessary setup in a predictable way. This predictability
9721
- // is why the Promise constructor synchronously invokes its
9722
- // executor callback, and why async functions synchronously
9723
- // execute code before the first await. Since we implement simple
9724
- // async functions in terms of async generators, it is especially
9725
- // important to get this right, even though it requires care.
9726
- previousPromise ? previousPromise.then(
9727
- callInvokeWithMethodAndArg,
9728
- // Avoid propagating failures to Promises returned by later
9729
- // invocations of the iterator.
9730
- callInvokeWithMethodAndArg
9731
- ) : callInvokeWithMethodAndArg();
9732
- }
9733
-
9734
- // Define the unified helper method that is used to implement .next,
9735
- // .throw, and .return (see defineIteratorMethods).
9736
- this._invoke = enqueue;
9737
- }
9738
-
9739
- defineIteratorMethods(AsyncIterator.prototype);
9740
- define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
9741
- return this;
9742
- });
9743
- exports.AsyncIterator = AsyncIterator;
9744
-
9745
- // Note that simple async functions are implemented on top of
9746
- // AsyncIterator objects; they just return a Promise for the value of
9747
- // the final result produced by the iterator.
9748
- exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
9749
- if (PromiseImpl === void 0) PromiseImpl = Promise;
9750
-
9751
- var iter = new AsyncIterator(
9752
- wrap(innerFn, outerFn, self, tryLocsList),
9753
- PromiseImpl
9754
- );
9755
-
9756
- return exports.isGeneratorFunction(outerFn)
9757
- ? iter // If outerFn is a generator, return the full iterator.
9758
- : iter.next().then(function(result) {
9759
- return result.done ? result.value : iter.next();
9760
- });
9761
- };
9762
-
9763
- function makeInvokeMethod(innerFn, self, context) {
9764
- var state = GenStateSuspendedStart;
9765
-
9766
- return function invoke(method, arg) {
9767
- if (state === GenStateExecuting) {
9768
- throw new Error("Generator is already running");
9769
- }
9770
-
9771
- if (state === GenStateCompleted) {
9772
- if (method === "throw") {
9773
- throw arg;
9774
- }
9775
-
9776
- // Be forgiving, per 25.3.3.3.3 of the spec:
9777
- // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
9778
- return doneResult();
9779
- }
9780
-
9781
- context.method = method;
9782
- context.arg = arg;
9783
-
9784
- while (true) {
9785
- var delegate = context.delegate;
9786
- if (delegate) {
9787
- var delegateResult = maybeInvokeDelegate(delegate, context);
9788
- if (delegateResult) {
9789
- if (delegateResult === ContinueSentinel) continue;
9790
- return delegateResult;
9791
- }
9792
- }
9793
-
9794
- if (context.method === "next") {
9795
- // Setting context._sent for legacy support of Babel's
9796
- // function.sent implementation.
9797
- context.sent = context._sent = context.arg;
9798
-
9799
- } else if (context.method === "throw") {
9800
- if (state === GenStateSuspendedStart) {
9801
- state = GenStateCompleted;
9802
- throw context.arg;
9803
- }
9804
-
9805
- context.dispatchException(context.arg);
9806
-
9807
- } else if (context.method === "return") {
9808
- context.abrupt("return", context.arg);
9809
- }
9810
-
9811
- state = GenStateExecuting;
9812
-
9813
- var record = tryCatch(innerFn, self, context);
9814
- if (record.type === "normal") {
9815
- // If an exception is thrown from innerFn, we leave state ===
9816
- // GenStateExecuting and loop back for another invocation.
9817
- state = context.done
9818
- ? GenStateCompleted
9819
- : GenStateSuspendedYield;
9820
-
9821
- if (record.arg === ContinueSentinel) {
9822
- continue;
9823
- }
9824
-
9825
- return {
9826
- value: record.arg,
9827
- done: context.done
9828
- };
9829
-
9830
- } else if (record.type === "throw") {
9831
- state = GenStateCompleted;
9832
- // Dispatch the exception by looping back around to the
9833
- // context.dispatchException(context.arg) call above.
9834
- context.method = "throw";
9835
- context.arg = record.arg;
9836
- }
9837
- }
9838
- };
9839
- }
9840
-
9841
- // Call delegate.iterator[context.method](context.arg) and handle the
9842
- // result, either by returning a { value, done } result from the
9843
- // delegate iterator, or by modifying context.method and context.arg,
9844
- // setting context.delegate to null, and returning the ContinueSentinel.
9845
- function maybeInvokeDelegate(delegate, context) {
9846
- var method = delegate.iterator[context.method];
9847
- if (method === undefined) {
9848
- // A .throw or .return when the delegate iterator has no .throw
9849
- // method always terminates the yield* loop.
9850
- context.delegate = null;
9851
-
9852
- if (context.method === "throw") {
9853
- // Note: ["return"] must be used for ES3 parsing compatibility.
9854
- if (delegate.iterator["return"]) {
9855
- // If the delegate iterator has a return method, give it a
9856
- // chance to clean up.
9857
- context.method = "return";
9858
- context.arg = undefined;
9859
- maybeInvokeDelegate(delegate, context);
9860
-
9861
- if (context.method === "throw") {
9862
- // If maybeInvokeDelegate(context) changed context.method from
9863
- // "return" to "throw", let that override the TypeError below.
9864
- return ContinueSentinel;
9865
- }
9866
- }
9867
-
9868
- context.method = "throw";
9869
- context.arg = new TypeError(
9870
- "The iterator does not provide a 'throw' method");
9871
- }
9872
-
9873
- return ContinueSentinel;
9874
- }
9875
-
9876
- var record = tryCatch(method, delegate.iterator, context.arg);
9877
-
9878
- if (record.type === "throw") {
9879
- context.method = "throw";
9880
- context.arg = record.arg;
9881
- context.delegate = null;
9882
- return ContinueSentinel;
9883
- }
9884
-
9885
- var info = record.arg;
9886
-
9887
- if (! info) {
9888
- context.method = "throw";
9889
- context.arg = new TypeError("iterator result is not an object");
9890
- context.delegate = null;
9891
- return ContinueSentinel;
9892
- }
9893
-
9894
- if (info.done) {
9895
- // Assign the result of the finished delegate to the temporary
9896
- // variable specified by delegate.resultName (see delegateYield).
9897
- context[delegate.resultName] = info.value;
9898
-
9899
- // Resume execution at the desired location (see delegateYield).
9900
- context.next = delegate.nextLoc;
9901
-
9902
- // If context.method was "throw" but the delegate handled the
9903
- // exception, let the outer generator proceed normally. If
9904
- // context.method was "next", forget context.arg since it has been
9905
- // "consumed" by the delegate iterator. If context.method was
9906
- // "return", allow the original .return call to continue in the
9907
- // outer generator.
9908
- if (context.method !== "return") {
9909
- context.method = "next";
9910
- context.arg = undefined;
9911
- }
9912
-
9913
- } else {
9914
- // Re-yield the result returned by the delegate method.
9915
- return info;
9916
- }
9917
-
9918
- // The delegate iterator is finished, so forget it and continue with
9919
- // the outer generator.
9920
- context.delegate = null;
9921
- return ContinueSentinel;
9922
- }
9923
-
9924
- // Define Generator.prototype.{next,throw,return} in terms of the
9925
- // unified ._invoke helper method.
9926
- defineIteratorMethods(Gp);
9927
-
9928
- define(Gp, toStringTagSymbol, "Generator");
9929
-
9930
- // A Generator should always return itself as the iterator object when the
9931
- // @@iterator function is called on it. Some browsers' implementations of the
9932
- // iterator prototype chain incorrectly implement this, causing the Generator
9933
- // object to not be returned from this call. This ensures that doesn't happen.
9934
- // See https://github.com/facebook/regenerator/issues/274 for more details.
9935
- define(Gp, iteratorSymbol, function() {
9936
- return this;
9937
- });
9938
-
9939
- define(Gp, "toString", function() {
9940
- return "[object Generator]";
9941
- });
9942
-
9943
- function pushTryEntry(locs) {
9944
- var entry = { tryLoc: locs[0] };
9945
-
9946
- if (1 in locs) {
9947
- entry.catchLoc = locs[1];
9948
- }
9949
-
9950
- if (2 in locs) {
9951
- entry.finallyLoc = locs[2];
9952
- entry.afterLoc = locs[3];
9953
- }
9954
-
9955
- this.tryEntries.push(entry);
9956
- }
9957
-
9958
- function resetTryEntry(entry) {
9959
- var record = entry.completion || {};
9960
- record.type = "normal";
9961
- delete record.arg;
9962
- entry.completion = record;
9963
- }
9964
-
9965
- function Context(tryLocsList) {
9966
- // The root entry object (effectively a try statement without a catch
9967
- // or a finally block) gives us a place to store values thrown from
9968
- // locations where there is no enclosing try statement.
9969
- this.tryEntries = [{ tryLoc: "root" }];
9970
- tryLocsList.forEach(pushTryEntry, this);
9971
- this.reset(true);
9972
- }
9973
-
9974
- exports.keys = function(object) {
9975
- var keys = [];
9976
- for (var key in object) {
9977
- keys.push(key);
9978
- }
9979
- keys.reverse();
9980
-
9981
- // Rather than returning an object with a next method, we keep
9982
- // things simple and return the next function itself.
9983
- return function next() {
9984
- while (keys.length) {
9985
- var key = keys.pop();
9986
- if (key in object) {
9987
- next.value = key;
9988
- next.done = false;
9989
- return next;
9990
- }
9991
- }
9992
-
9993
- // To avoid creating an additional object, we just hang the .value
9994
- // and .done properties off the next function object itself. This
9995
- // also ensures that the minifier will not anonymize the function.
9996
- next.done = true;
9997
- return next;
9998
- };
9999
- };
10000
-
10001
- function values(iterable) {
10002
- if (iterable) {
10003
- var iteratorMethod = iterable[iteratorSymbol];
10004
- if (iteratorMethod) {
10005
- return iteratorMethod.call(iterable);
10006
- }
10007
-
10008
- if (typeof iterable.next === "function") {
10009
- return iterable;
10010
- }
10011
-
10012
- if (!isNaN(iterable.length)) {
10013
- var i = -1, next = function next() {
10014
- while (++i < iterable.length) {
10015
- if (hasOwn.call(iterable, i)) {
10016
- next.value = iterable[i];
10017
- next.done = false;
10018
- return next;
10019
- }
10020
- }
10021
-
10022
- next.value = undefined;
10023
- next.done = true;
10024
-
10025
- return next;
10026
- };
10027
-
10028
- return next.next = next;
10029
- }
10030
- }
10031
-
10032
- // Return an iterator with no values.
10033
- return { next: doneResult };
10034
- }
10035
- exports.values = values;
10036
-
10037
- function doneResult() {
10038
- return { value: undefined, done: true };
10039
- }
10040
-
10041
- Context.prototype = {
10042
- constructor: Context,
10043
-
10044
- reset: function(skipTempReset) {
10045
- this.prev = 0;
10046
- this.next = 0;
10047
- // Resetting context._sent for legacy support of Babel's
10048
- // function.sent implementation.
10049
- this.sent = this._sent = undefined;
10050
- this.done = false;
10051
- this.delegate = null;
10052
-
10053
- this.method = "next";
10054
- this.arg = undefined;
10055
-
10056
- this.tryEntries.forEach(resetTryEntry);
10057
-
10058
- if (!skipTempReset) {
10059
- for (var name in this) {
10060
- // Not sure about the optimal order of these conditions:
10061
- if (name.charAt(0) === "t" &&
10062
- hasOwn.call(this, name) &&
10063
- !isNaN(+name.slice(1))) {
10064
- this[name] = undefined;
10065
- }
10066
- }
10067
- }
10068
- },
10069
-
10070
- stop: function() {
10071
- this.done = true;
10072
-
10073
- var rootEntry = this.tryEntries[0];
10074
- var rootRecord = rootEntry.completion;
10075
- if (rootRecord.type === "throw") {
10076
- throw rootRecord.arg;
10077
- }
10078
-
10079
- return this.rval;
10080
- },
10081
-
10082
- dispatchException: function(exception) {
10083
- if (this.done) {
10084
- throw exception;
10085
- }
10086
-
10087
- var context = this;
10088
- function handle(loc, caught) {
10089
- record.type = "throw";
10090
- record.arg = exception;
10091
- context.next = loc;
10092
-
10093
- if (caught) {
10094
- // If the dispatched exception was caught by a catch block,
10095
- // then let that catch block handle the exception normally.
10096
- context.method = "next";
10097
- context.arg = undefined;
10098
- }
10099
-
10100
- return !! caught;
10101
- }
10102
-
10103
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
10104
- var entry = this.tryEntries[i];
10105
- var record = entry.completion;
10106
-
10107
- if (entry.tryLoc === "root") {
10108
- // Exception thrown outside of any try block that could handle
10109
- // it, so set the completion value of the entire function to
10110
- // throw the exception.
10111
- return handle("end");
10112
- }
10113
-
10114
- if (entry.tryLoc <= this.prev) {
10115
- var hasCatch = hasOwn.call(entry, "catchLoc");
10116
- var hasFinally = hasOwn.call(entry, "finallyLoc");
10117
-
10118
- if (hasCatch && hasFinally) {
10119
- if (this.prev < entry.catchLoc) {
10120
- return handle(entry.catchLoc, true);
10121
- } else if (this.prev < entry.finallyLoc) {
10122
- return handle(entry.finallyLoc);
10123
- }
10124
-
10125
- } else if (hasCatch) {
10126
- if (this.prev < entry.catchLoc) {
10127
- return handle(entry.catchLoc, true);
10128
- }
10129
-
10130
- } else if (hasFinally) {
10131
- if (this.prev < entry.finallyLoc) {
10132
- return handle(entry.finallyLoc);
10133
- }
10134
-
10135
- } else {
10136
- throw new Error("try statement without catch or finally");
10137
- }
10138
- }
10139
- }
10140
- },
10141
-
10142
- abrupt: function(type, arg) {
10143
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
10144
- var entry = this.tryEntries[i];
10145
- if (entry.tryLoc <= this.prev &&
10146
- hasOwn.call(entry, "finallyLoc") &&
10147
- this.prev < entry.finallyLoc) {
10148
- var finallyEntry = entry;
10149
- break;
10150
- }
10151
- }
10152
-
10153
- if (finallyEntry &&
10154
- (type === "break" ||
10155
- type === "continue") &&
10156
- finallyEntry.tryLoc <= arg &&
10157
- arg <= finallyEntry.finallyLoc) {
10158
- // Ignore the finally entry if control is not jumping to a
10159
- // location outside the try/catch block.
10160
- finallyEntry = null;
10161
- }
10162
-
10163
- var record = finallyEntry ? finallyEntry.completion : {};
10164
- record.type = type;
10165
- record.arg = arg;
10166
-
10167
- if (finallyEntry) {
10168
- this.method = "next";
10169
- this.next = finallyEntry.finallyLoc;
10170
- return ContinueSentinel;
10171
- }
10172
-
10173
- return this.complete(record);
10174
- },
10175
-
10176
- complete: function(record, afterLoc) {
10177
- if (record.type === "throw") {
10178
- throw record.arg;
10179
- }
10180
-
10181
- if (record.type === "break" ||
10182
- record.type === "continue") {
10183
- this.next = record.arg;
10184
- } else if (record.type === "return") {
10185
- this.rval = this.arg = record.arg;
10186
- this.method = "return";
10187
- this.next = "end";
10188
- } else if (record.type === "normal" && afterLoc) {
10189
- this.next = afterLoc;
10190
- }
10191
-
10192
- return ContinueSentinel;
10193
- },
10194
-
10195
- finish: function(finallyLoc) {
10196
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
10197
- var entry = this.tryEntries[i];
10198
- if (entry.finallyLoc === finallyLoc) {
10199
- this.complete(entry.completion, entry.afterLoc);
10200
- resetTryEntry(entry);
10201
- return ContinueSentinel;
10202
- }
10203
- }
10204
- },
10205
-
10206
- "catch": function(tryLoc) {
10207
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
10208
- var entry = this.tryEntries[i];
10209
- if (entry.tryLoc === tryLoc) {
10210
- var record = entry.completion;
10211
- if (record.type === "throw") {
10212
- var thrown = record.arg;
10213
- resetTryEntry(entry);
10214
- }
10215
- return thrown;
10216
- }
10217
- }
10218
-
10219
- // The context.catch method must only be called with a location
10220
- // argument that corresponds to a known catch block.
10221
- throw new Error("illegal catch attempt");
10222
- },
10223
-
10224
- delegateYield: function(iterable, resultName, nextLoc) {
10225
- this.delegate = {
10226
- iterator: values(iterable),
10227
- resultName: resultName,
10228
- nextLoc: nextLoc
10229
- };
10230
-
10231
- if (this.method === "next") {
10232
- // Deliberately forget the last sent value so that we don't
10233
- // accidentally pass it on to the delegate.
10234
- this.arg = undefined;
10235
- }
10236
-
10237
- return ContinueSentinel;
10238
- }
10239
- };
10240
-
10241
- // Regardless of whether this script is executing as a CommonJS module
10242
- // or not, return the runtime object so that we can declare the variable
10243
- // regeneratorRuntime in the outer scope, which allows this module to be
10244
- // injected easily by `bin/regenerator --include-runtime script.js`.
10245
- return exports;
10246
-
10247
- }(
10248
- // If this script is executing as a CommonJS module, use module.exports
10249
- // as the regeneratorRuntime namespace. Otherwise create a new empty
10250
- // object. Either way, the resulting object will be used to initialize
10251
- // the regeneratorRuntime variable at the top of this file.
10252
- true ? module.exports : undefined
10253
- ));
10254
-
10255
- try {
10256
- regeneratorRuntime = runtime;
10257
- } catch (accidentalStrictMode) {
10258
- // This module should not be running in strict mode, so the above
10259
- // assignment should always work unless something is misconfigured. Just
10260
- // in case runtime.js accidentally runs in strict mode, in modern engines
10261
- // we can explicitly access globalThis. In older engines we can escape
10262
- // strict mode using a global Function call. This could conceivably fail
10263
- // if a Content Security Policy forbids using Function, but in that case
10264
- // the proper solution is to fix the accidental strict mode problem. If
10265
- // you've misconfigured your bundler to force strict mode and applied a
10266
- // CSP to forbid Function, and you're not willing to fix either of those
10267
- // problems, please detail your unique predicament in a GitHub issue.
10268
- if (typeof globalThis === "object") {
10269
- globalThis.regeneratorRuntime = runtime;
10270
- } else {
10271
- Function("r", "regeneratorRuntime = r")(runtime);
10272
- }
10273
- }
10274
-
10275
-
10276
- /***/ })
10277
-
10278
- /******/ });
10279
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9wb2x5ZmlsbC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9wb2x5ZmlsbC9saWIvbm9Db25mbGljdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vYXJyYXkvZmxhdC1tYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vYXJyYXkvaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vb2JqZWN0L2VudHJpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vb2JqZWN0L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vb2JqZWN0L3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mbi9wcm9taXNlL2ZpbmFsbHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vc3RyaW5nL3BhZC1lbmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vc3RyaW5nL3BhZC1zdGFydC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mbi9zdHJpbmcvdHJpbS1lbmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vc3RyaW5nL3RyaW0tc3RhcnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZm4vc3ltYm9sL2FzeW5jLWl0ZXJhdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vZ2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19leHBvcnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hLW51bWJlci12YWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYWR2YW5jZS1zdHJpbmctaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYW4taW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYW4tb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWNvcHktd2l0aGluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZpbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktbWV0aG9kcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19iaW5kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NsYXNzb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY29mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24tc3Ryb25nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24td2Vhay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kYXRlLXRvLWlzby1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2V4cG9ydC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mYWlscy1pcy1yZWdleHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZmFpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZml4LXJlLXdrcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGFncy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19mbGF0dGVuLWludG8tYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZm9yLW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2Z1bmN0aW9uLXRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faHRtbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pbmhlcml0LWlmLXJlcXVpcmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ludm9rZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtaW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtcmVnZXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY2FsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRldGVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLXN0ZXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlcmF0b3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2xpYnJhcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1leHBtMS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWZyb3VuZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWxvZzFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21hdGgtc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tZXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21pY3JvdGFzay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWRwcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wbi1leHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcG4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdwby5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtcGllLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1zYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX293bi1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BhcnNlLWZsb2F0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BhcnNlLWludC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wZXJmb3JtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWdleHAtZXhlYy1hYnN0cmFjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19yZWdleHAtZXhlYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zYW1lLXZhbHVlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NldC1wcm90by5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtc3BlY2llcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQta2V5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmljdC1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWF0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1jb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1odG1sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1wYWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXJlcGVhdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctdHJpbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctd3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdGFzay5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdHlwZWQtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdHlwZWQtYnVmZmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3VpZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL191c2VyLWFnZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3ZhbGlkYXRlLWNvbGxlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MtZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5jb3B5LXdpdGhpbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5ldmVyeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maWxsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maW5kLWluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZnJvbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pbmRleC1vZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5qb2luLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5Lmxhc3QtaW5kZXgtb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkubWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5Lm9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnJlZHVjZS1yaWdodC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc2xpY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc29tZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS5ub3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUudG8tanNvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5mdW5jdGlvbi5iaW5kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmFjb3NoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguYXNpbmguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hdGFuaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmNicnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jbHozMi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmNvc2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5leHBtMS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmZyb3VuZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmh5cG90LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguaW11bC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmxvZzEwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgubG9nMXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLnNpbmguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC50YW5oLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgudHJ1bmMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1maW5pdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtc2FmZS1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5taW4tc2FmZS1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1mbG9hdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtaW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci50by1maXhlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIudG8tcHJlY2lzaW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZnJlZXplLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLWV4dGVuc2libGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5pcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QucHJldmVudC1leHRlbnNpb25zLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5zZWFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucGFyc2UtZmxvYXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucGFyc2UtaW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnByb21pc2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5hcHBseS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmNvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlbGV0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmVudW1lcmF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5oYXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5pcy1leHRlbnNpYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3Qub3duLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3Quc2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuZXhlYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuZmxhZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLm1hdGNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5zZWFyY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc2V0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5hbmNob3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJpZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYmxpbmsuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmJvbGQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmNvZGUtcG9pbnQtYXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmVuZHMtd2l0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZml4ZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRjb2xvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZm9udHNpemUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmZyb20tY29kZS1wb2ludC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLml0YWxpY3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5saW5rLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5yYXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnJlcGVhdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuc21hbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zdHJpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN1Yi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuc3VwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy50cmltLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5hcnJheS1idWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZGF0YS12aWV3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0MzItYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5pbnQxNi1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5pbnQzMi1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5pbnQ4LWFycmF5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQxNi1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC51aW50MzItYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi53ZWFrLW1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi53ZWFrLXNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5mbGF0LW1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5hcnJheS5pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZW50cmllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLXN0YXJ0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy50cmltLWxlZnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tcmlnaHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5pbW1lZGlhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudGltZXJzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNB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QjtBQUNuQyxtQkFBTyxDQUFDLGlGQUEwQjtBQUNsQyxtQkFBTyxDQUFDLG1GQUEyQjtBQUNuQyxtQkFBTyxDQUFDLG1GQUEyQjtBQUNuQyxtQkFBTyxDQUFDLGlGQUEwQjtBQUNsQyxtQkFBTyxDQUFDLGlGQUEwQjtBQUNsQyxtQkFBTyxDQUFDLGlGQUEwQjtBQUNsQyxtQkFBTyxDQUFDLGlGQUEwQjtBQUNsQyxtQkFBTyxDQUFDLG1GQUEyQjtBQUNuQyxtQkFBTyxDQUFDLDJHQUF1QztBQUMvQyxtQkFBTyxDQUFDLG1GQUEyQjtBQUNuQyxtQkFBTyxDQUFDLHFGQUE0QjtBQUNwQyxtQkFBTyxDQUFDLDZGQUFnQztBQUN4QyxtQkFBTyxDQUFDLHVHQUFxQztBQUM3QyxtQkFBTyxDQUFDLCtGQUFpQztBQUN6QyxtQkFBTyxDQUFDLDZGQUFnQztBQUN4QyxtQkFBTyxDQUFDLHlGQUE4QjtBQUN0QyxtQkFBTyxDQUFDLG1HQUFtQztBQUMzQyxtQkFBTyxDQUFDLHlGQUE4QjtBQUN0QyxtQkFBTyxDQUFDLG1GQUEyQjtBQUNuQyxtQkFBTyxDQUFDLHVGQUE2QjtBQUNyQyxtQkFBTyxDQUFDLHFGQUE0QjtBQUNwQyxtQkFBTyxDQUFDLHVGQUE2QjtBQUNyQyxtQkFBTyxDQUFDLCtGQUFpQztBQUN6QyxtQkFBTyxDQUFDLDZGQUFnQztBQUN4QyxtQkFBTyxDQUFDLDJGQUErQjtBQUN2QyxtQkFBTyxDQUFDLHFGQUE0QjtBQUNwQyxtQkFBTyxDQUFDLHVGQUE2QjtBQUNyQyxtQkFBTyxDQUFDLHlGQUE4QjtBQUN0QyxtQkFBTyxDQUFDLG1GQUEyQjtBQUNuQyxtQkFBTyxDQUFDLG1GQUEyQjtBQUNuQyxtQkFBTyxDQUFDLCtFQUF5QjtBQUNqQyxtQkFBTyxDQUFDLHVGQUE2QjtBQUNyQyxtQkFBTyxDQUFDLG1HQUFtQztBQUMzQyxtQkFBTyxDQUFDLDJGQUErQjtBQUN2QyxtQkFBTyxDQUFDLGlHQUFrQztBQUMxQyxtQkFBTyxDQUFDLDJGQUErQjtBQUN2QyxtQkFBTyxDQUFDLG1GQUEyQjtBQUNuQyxtQkFB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LHdDQUF3QyxXQUFXO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0MsY0FBYztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsa0JBQWtCO0FBQ25EO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUEsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxLQUEwQixvQkFBb0IsU0FBRTtBQUNsRDs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJmaWxlIjoiYmFiZWwtcG9seWZpbGwubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvcHVibGljL2pzL1wiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcG9seWZpbGwvbGliL2luZGV4LmpzXCIpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnJlcXVpcmUoXCIuL25vQ29uZmxpY3RcIik7XG5cbnZhciBfZ2xvYmFsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2dsb2JhbFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5pZiAoX2dsb2JhbFtcImRlZmF1bHRcIl0uX2JhYmVsUG9seWZpbGwgJiYgdHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29uc29sZS53YXJuKSB7XG4gIGNvbnNvbGUud2FybihcIkBiYWJlbC9wb2x5ZmlsbCBpcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2Ugb24gdGhpcyBwYWdlLiBUaGlzIGlzIHByb2JhYmx5IG5vdCBkZXNpcmFibGUvaW50ZW5kZWQgXCIgKyBcImFuZCBtYXkgaGF2ZSBjb25zZXF1ZW5jZXMgaWYgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBwb2x5ZmlsbHMgYXJlIGFwcGxpZWQgc2VxdWVudGlhbGx5LiBcIiArIFwiSWYgeW91IGRvIG5lZWQgdG8gbG9hZCB0aGUgcG9seWZpbGwgbW9yZSB0aGFuIG9uY2UsIHVzZSBAYmFiZWwvcG9seWZpbGwvbm9Db25mbGljdCBcIiArIFwiaW5zdGVhZCB0byBieXBhc3MgdGhlIHdhcm5pbmcuXCIpO1xufVxuXG5fZ2xvYmFsW1wiZGVmYXVsdFwiXS5fYmFiZWxQb2x5ZmlsbCA9IHRydWU7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnJlcXVpcmUoXCJjb3JlLWpzL2VzNlwiKTtcblxucmVxdWlyZShcImNvcmUtanMvZm4vYXJyYXkvaW5jbHVkZXNcIik7XG5cbnJlcXVpcmUoXCJjb3JlLWpzL2ZuL2FycmF5L2ZsYXQtbWFwXCIpO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9mbi9zdHJpbmcvcGFkLXN0YXJ0XCIpO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9mbi9zdHJpbmcvcGFkLWVuZFwiKTtcblxucmVxdWlyZShcImNvcmUtanMvZm4vc3RyaW5nL3RyaW0tc3RhcnRcIik7XG5cbnJlcXVpcmUoXCJjb3JlLWpzL2ZuL3N0cmluZy90cmltLWVuZFwiKTtcblxucmVxdWlyZShcImNvcmUtanMvZm4vc3ltYm9sL2FzeW5jLWl0ZXJhdG9yXCIpO1xuXG5yZXF1aXJlKFwiY29yZS1qcy9mbi9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yc1wiKTtcblxucmVxdWlyZShcImNvcmUtanMvZm4vb2JqZWN0L3ZhbHVlc1wiKTtcblxucmVxdWlyZShcImNvcmUtanMvZm4vb2JqZWN0L2VudHJpZXNcIik7XG5cbnJlcXVpcmUoXCJjb3JlLWpzL2ZuL3Byb21pc2UvZmluYWxseVwiKTtcblxucmVxdWlyZShcImNvcmUtanMvd2ViXCIpO1xuXG5yZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lXCIpOyIsInJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0aWVzJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LmtleXMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QuZnJlZXplJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3Quc2VhbCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LnByZXZlbnQtZXh0ZW5zaW9ucycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LmlzLXNlYWxlZCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWV4dGVuc2libGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24nKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm9iamVjdC5pcycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmJpbmQnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LmZ1bmN0aW9uLm5hbWUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucGFyc2UtaW50Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5wYXJzZS1mbG9hdCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5udW1iZXIudG8tZml4ZWQnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm51bWJlci50by1wcmVjaXNpb24nKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtZmluaXRlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtaW50ZWdlcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYubnVtYmVyLmlzLXNhZmUtaW50ZWdlcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYubnVtYmVyLm1heC1zYWZlLWludGVnZXInKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm51bWJlci5taW4tc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtZmxvYXQnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1pbnQnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm1hdGguYWNvc2gnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm1hdGguYXNpbmgnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm1hdGguYXRhbmgnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm1hdGguY2JydCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYubWF0aC5jbHozMicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYubWF0aC5jb3NoJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5tYXRoLmV4cG0xJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5tYXRoLmZyb3VuZCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYubWF0aC5oeXBvdCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYubWF0aC5pbXVsJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzEwJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzFwJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzInKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm1hdGguc2lnbicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYubWF0aC5zaW5oJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5tYXRoLnRhbmgnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm1hdGgudHJ1bmMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5mcm9tLWNvZGUtcG9pbnQnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5yYXcnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy50cmltJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5jb2RlLXBvaW50LWF0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuZW5kcy13aXRoJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaW5jbHVkZXMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5yZXBlYXQnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5zdGFydHMtd2l0aCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLmFuY2hvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLmJpZycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLmJsaW5rJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuYm9sZCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuZm9udGNvbG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuZm9udHNpemUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcubGluaycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLnNtYWxsJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3RyaWtlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3ViJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3VwJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5kYXRlLm5vdycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuZGF0ZS50by1qc29uJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5kYXRlLnRvLWlzby1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LmRhdGUudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5kYXRlLnRvLXByaW1pdGl2ZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkuaXMtYXJyYXknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LmFycmF5Lm9mJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5hcnJheS5qb2luJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5hcnJheS5zbGljZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkuc29ydCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkuZm9yLWVhY2gnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LmFycmF5Lm1hcCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkuZmlsdGVyJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5hcnJheS5zb21lJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5hcnJheS5ldmVyeScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UtcmlnaHQnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5hcnJheS5sYXN0LWluZGV4LW9mJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5hcnJheS5jb3B5LXdpdGhpbicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkuZmlsbCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkuZmluZCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkuZmluZC1pbmRleCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnJlZ2V4cC5jb25zdHJ1Y3RvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucmVnZXhwLmV4ZWMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnJlZ2V4cC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnJlZ2V4cC5mbGFncycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucmVnZXhwLm1hdGNoJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5yZWdleHAucmVwbGFjZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucmVnZXhwLnNlYXJjaCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5wcm9taXNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5tYXAnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnNldCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYud2Vhay1tYXAnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LndlYWstc2V0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi50eXBlZC5hcnJheS1idWZmZXInKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnR5cGVkLmRhdGEtdmlldycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYudHlwZWQuaW50OC1hcnJheScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnR5cGVkLnVpbnQ4LWNsYW1wZWQtYXJyYXknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnR5cGVkLmludDE2LWFycmF5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi50eXBlZC51aW50MTYtYXJyYXknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnR5cGVkLmludDMyLWFycmF5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi50eXBlZC51aW50MzItYXJyYXknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0MzItYXJyYXknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0NjQtYXJyYXknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnJlZmxlY3QuYXBwbHknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucmVmbGVjdC5kZWxldGUtcHJvcGVydHknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnJlZmxlY3QuZW51bWVyYXRlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucmVmbGVjdC5oYXMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnJlZmxlY3QuaXMtZXh0ZW5zaWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucmVmbGVjdC5wcmV2ZW50LWV4dGVuc2lvbnMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnJlZmxlY3Quc2V0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9fY29yZScpO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuYXJyYXkuZmxhdC1tYXAnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLkFycmF5LmZsYXRNYXA7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5hcnJheS5pbmNsdWRlcycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuQXJyYXkuaW5jbHVkZXM7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5vYmplY3QuZW50cmllcycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmVudHJpZXM7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3QudmFsdWVzO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5Qcm9taXNlWydmaW5hbGx5J107XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZCcpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3RyaW5nLnBhZEVuZDtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM3LnN0cmluZy5wYWQtc3RhcnQnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlN0cmluZy5wYWRTdGFydDtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM3LnN0cmluZy50cmltLXJpZ2h0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5TdHJpbmcudHJpbVJpZ2h0O1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tbGVmdCcpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3RyaW5nLnRyaW1MZWZ0O1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdhc3luY0l0ZXJhdG9yJyk7XG4iLCJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5nbG9iYWwnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9fY29yZScpLmdsb2JhbDtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuMTInIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtZ2xvYmFsXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuRywgeyBnbG9iYWw6IHJlcXVpcmUoJy4vX2dsb2JhbCcpIH0pO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIG1zZykge1xuICBpZiAodHlwZW9mIGl0ICE9ICdudW1iZXInICYmIGNvZihpdCkgIT0gJ051bWJlcicpIHRocm93IFR5cGVFcnJvcihtc2cpO1xuICByZXR1cm4gK2l0O1xufTtcbiIsIi8vIDIyLjEuMy4zMSBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbnZhciBVTlNDT1BBQkxFUyA9IHJlcXVpcmUoJy4vX3drcycpKCd1bnNjb3BhYmxlcycpO1xudmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5pZiAoQXJyYXlQcm90b1tVTlNDT1BBQkxFU10gPT0gdW5kZWZpbmVkKSByZXF1aXJlKCcuL19oaWRlJykoQXJyYXlQcm90bywgVU5TQ09QQUJMRVMsIHt9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICBBcnJheVByb3RvW1VOU0NPUEFCTEVTXVtrZXldID0gdHJ1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuIC8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYWR2YW5jZXN0cmluZ2luZGV4XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChTLCBpbmRleCwgdW5pY29kZSkge1xuICByZXR1cm4gaW5kZXggKyAodW5pY29kZSA/IGF0KFMsIGluZGV4KS5sZW5ndGggOiAxKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgQ29uc3RydWN0b3IsIG5hbWUsIGZvcmJpZGRlbkZpZWxkKSB7XG4gIGlmICghKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpIHx8IChmb3JiaWRkZW5GaWVsZCAhPT0gdW5kZWZpbmVkICYmIGZvcmJpZGRlbkZpZWxkIGluIGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihuYW1lICsgJzogaW5jb3JyZWN0IGludm9jYXRpb24hJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIDIyLjEuMy4zIEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluKHRhcmdldCwgc3RhcnQsIGVuZCA9IHRoaXMubGVuZ3RoKVxuJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFtdLmNvcHlXaXRoaW4gfHwgZnVuY3Rpb24gY29weVdpdGhpbih0YXJnZXQgLyogPSAwICovLCBzdGFydCAvKiA9IDAsIGVuZCA9IEBsZW5ndGggKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgdmFyIGxlbiA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgdmFyIHRvID0gdG9BYnNvbHV0ZUluZGV4KHRhcmdldCwgbGVuKTtcbiAgdmFyIGZyb20gPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbik7XG4gIHZhciBlbmQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGNvdW50ID0gTWF0aC5taW4oKGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuKSkgLSBmcm9tLCBsZW4gLSB0byk7XG4gIHZhciBpbmMgPSAxO1xuICBpZiAoZnJvbSA8IHRvICYmIHRvIDwgZnJvbSArIGNvdW50KSB7XG4gICAgaW5jID0gLTE7XG4gICAgZnJvbSArPSBjb3VudCAtIDE7XG4gICAgdG8gKz0gY291bnQgLSAxO1xuICB9XG4gIHdoaWxlIChjb3VudC0tID4gMCkge1xuICAgIGlmIChmcm9tIGluIE8pIE9bdG9dID0gT1tmcm9tXTtcbiAgICBlbHNlIGRlbGV0ZSBPW3RvXTtcbiAgICB0byArPSBpbmM7XG4gICAgZnJvbSArPSBpbmM7XG4gIH0gcmV0dXJuIE87XG59O1xuIiwiLy8gMjIuMS4zLjYgQXJyYXkucHJvdG90eXBlLmZpbGwodmFsdWUsIHN0YXJ0ID0gMCwgZW5kID0gdGhpcy5sZW5ndGgpXG4ndXNlIHN0cmljdCc7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZpbGwodmFsdWUgLyogLCBzdGFydCA9IDAsIGVuZCA9IEBsZW5ndGggKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIGxlbmd0aCk7XG4gIHZhciBlbmQgPSBhTGVuID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGVuZFBvcyA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogdG9BYnNvbHV0ZUluZGV4KGVuZCwgbGVuZ3RoKTtcbiAgd2hpbGUgKGVuZFBvcyA+IGluZGV4KSBPW2luZGV4KytdID0gdmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwiLy8gMCAtPiBBcnJheSNmb3JFYWNoXG4vLyAxIC0+IEFycmF5I21hcFxuLy8gMiAtPiBBcnJheSNmaWx0ZXJcbi8vIDMgLT4gQXJyYXkjc29tZVxuLy8gNCAtPiBBcnJheSNldmVyeVxuLy8gNSAtPiBBcnJheSNmaW5kXG4vLyA2IC0+IEFycmF5I2ZpbmRJbmRleFxudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFzYyA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgdmFyIGNyZWF0ZSA9ICRjcmVhdGUgfHwgYXNjO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsLCByZXM7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSByZXN1bHRbaW5kZXhdID0gcmVzOyAgIC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWw7ICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiByZXN1bHQucHVzaCh2YWwpOyAgICAgICAgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07XG4iLCJ2YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBjYWxsYmFja2ZuLCBhTGVuLCBtZW1vLCBpc1JpZ2h0KSB7XG4gIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGF0KTtcbiAgdmFyIHNlbGYgPSBJT2JqZWN0KE8pO1xuICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICB2YXIgaW5kZXggPSBpc1JpZ2h0ID8gbGVuZ3RoIC0gMSA6IDA7XG4gIHZhciBpID0gaXNSaWdodCA/IC0xIDogMTtcbiAgaWYgKGFMZW4gPCAyKSBmb3IgKDs7KSB7XG4gICAgaWYgKGluZGV4IGluIHNlbGYpIHtcbiAgICAgIG1lbW8gPSBzZWxmW2luZGV4XTtcbiAgICAgIGluZGV4ICs9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaW5kZXggKz0gaTtcbiAgICBpZiAoaXNSaWdodCA/IGluZGV4IDwgMCA6IGxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7XG4gICAgfVxuICB9XG4gIGZvciAoO2lzUmlnaHQgPyBpbmRleCA+PSAwIDogbGVuZ3RoID4gaW5kZXg7IGluZGV4ICs9IGkpIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgbWVtbyA9IGNhbGxiYWNrZm4obWVtbywgc2VsZltpbmRleF0sIGluZGV4LCBPKTtcbiAgfVxuICByZXR1cm4gbWVtbztcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsKSkge1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTtcbiIsIi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aClcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsKSkobGVuZ3RoKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgYXJyYXlTbGljZSA9IFtdLnNsaWNlO1xudmFyIGZhY3RvcmllcyA9IHt9O1xuXG52YXIgY29uc3RydWN0ID0gZnVuY3Rpb24gKEYsIGxlbiwgYXJncykge1xuICBpZiAoIShsZW4gaW4gZmFjdG9yaWVzKSkge1xuICAgIGZvciAodmFyIG4gPSBbXSwgaSA9IDA7IGkgPCBsZW47IGkrKykgbltpXSA9ICdhWycgKyBpICsgJ10nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgIGZhY3Rvcmllc1tsZW5dID0gRnVuY3Rpb24oJ0YsYScsICdyZXR1cm4gbmV3IEYoJyArIG4uam9pbignLCcpICsgJyknKTtcbiAgfSByZXR1cm4gZmFjdG9yaWVzW2xlbl0oRiwgYXJncyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLmJpbmQgfHwgZnVuY3Rpb24gYmluZCh0aGF0IC8qICwgLi4uYXJncyAqLykge1xuICB2YXIgZm4gPSBhRnVuY3Rpb24odGhpcyk7XG4gIHZhciBwYXJ0QXJncyA9IGFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICB2YXIgYm91bmQgPSBmdW5jdGlvbiAoLyogYXJncy4uLiAqLykge1xuICAgIHZhciBhcmdzID0gcGFydEFyZ3MuY29uY2F0KGFycmF5U2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGJvdW5kID8gY29uc3RydWN0KGZuLCBhcmdzLmxlbmd0aCwgYXJncykgOiBpbnZva2UoZm4sIGFyZ3MsIHRoYXQpO1xuICB9O1xuICBpZiAoaXNPYmplY3QoZm4ucHJvdG90eXBlKSkgYm91bmQucHJvdG90eXBlID0gZm4ucHJvdG90eXBlO1xuICByZXR1cm4gYm91bmQ7XG59O1xuIiwiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyICRpdGVyRGVmaW5lID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIGZhc3RLZXkgPSByZXF1aXJlKCcuL19tZXRhJykuZmFzdEtleTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBTSVpFID0gREVTQ1JJUFRPUlMgPyAnX3MnIDogJ3NpemUnO1xuXG52YXIgZ2V0RW50cnkgPSBmdW5jdGlvbiAodGhhdCwga2V5KSB7XG4gIC8vIGZhc3QgY2FzZVxuICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSk7XG4gIHZhciBlbnRyeTtcbiAgaWYgKGluZGV4ICE9PSAnRicpIHJldHVybiB0aGF0Ll9pW2luZGV4XTtcbiAgLy8gZnJvemVuIG9iamVjdCBjYXNlXG4gIGZvciAoZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgaWYgKGVudHJ5LmsgPT0ga2V5KSByZXR1cm4gZW50cnk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24gKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpIHtcbiAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGl0ZXJhYmxlKSB7XG4gICAgICBhbkluc3RhbmNlKHRoYXQsIEMsIE5BTUUsICdfaScpO1xuICAgICAgdGhhdC5fdCA9IE5BTUU7ICAgICAgICAgLy8gY29sbGVjdGlvbiB0eXBlXG4gICAgICB0aGF0Ll9pID0gY3JlYXRlKG51bGwpOyAvLyBpbmRleFxuICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgLy8gZmlyc3QgZW50cnlcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7ICAgIC8vIGxhc3QgZW50cnlcbiAgICAgIHRoYXRbU0laRV0gPSAwOyAgICAgICAgIC8vIHNpemVcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMS4zLjEgTWFwLnByb3RvdHlwZS5jbGVhcigpXG4gICAgICAvLyAyMy4yLjMuMiBTZXQucHJvdG90eXBlLmNsZWFyKClcbiAgICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgZm9yICh2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBkYXRhID0gdGhhdC5faSwgZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYgKGVudHJ5LnApIGVudHJ5LnAgPSBlbnRyeS5wLm4gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVsZXRlIGRhdGFbZW50cnkuaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhhdC5fZiA9IHRoYXQuX2wgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoYXRbU0laRV0gPSAwO1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy4zIE1hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjIuMy40IFNldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHRoYXQgPSB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5uO1xuICAgICAgICAgIHZhciBwcmV2ID0gZW50cnkucDtcbiAgICAgICAgICBkZWxldGUgdGhhdC5faVtlbnRyeS5pXTtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAocHJldikgcHJldi5uID0gbmV4dDtcbiAgICAgICAgICBpZiAobmV4dCkgbmV4dC5wID0gcHJldjtcbiAgICAgICAgICBpZiAodGhhdC5fZiA9PSBlbnRyeSkgdGhhdC5fZiA9IG5leHQ7XG4gICAgICAgICAgaWYgKHRoYXQuX2wgPT0gZW50cnkpIHRoYXQuX2wgPSBwcmV2O1xuICAgICAgICAgIHRoYXRbU0laRV0tLTtcbiAgICAgICAgfSByZXR1cm4gISFlbnRyeTtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4yLjMuNiBTZXQucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgICAgIC8vIDIzLjEuMy41IE1hcC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgICAgICB2YXIgZW50cnk7XG4gICAgICAgIHdoaWxlIChlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoaXMuX2YpIHtcbiAgICAgICAgICBmKGVudHJ5LnYsIGVudHJ5LmssIHRoaXMpO1xuICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgICAgIHdoaWxlIChlbnRyeSAmJiBlbnRyeS5yKSBlbnRyeSA9IGVudHJ5LnA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyAyMy4xLjMuNyBNYXAucHJvdG90eXBlLmhhcyhrZXkpXG4gICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcbiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh2YWxpZGF0ZSh0aGlzLCBOQU1FKSwga2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRQKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGUodGhpcywgTkFNRSlbU0laRV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIEM7XG4gIH0sXG4gIGRlZjogZnVuY3Rpb24gKHRoYXQsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuICAgIHZhciBwcmV2LCBpbmRleDtcbiAgICAvLyBjaGFuZ2UgZXhpc3RpbmcgZW50cnlcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcbiAgICAvLyBjcmVhdGUgbmV3IGVudHJ5XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcbiAgICAgICAgaTogaW5kZXggPSBmYXN0S2V5KGtleSwgdHJ1ZSksIC8vIDwtIGluZGV4XG4gICAgICAgIGs6IGtleSwgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBrZXlcbiAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG4gICAgICAgIHA6IHByZXYgPSB0aGF0Ll9sLCAgICAgICAgICAgICAvLyA8LSBwcmV2aW91cyBlbnRyeVxuICAgICAgICBuOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgLy8gPC0gbmV4dCBlbnRyeVxuICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuICAgICAgfTtcbiAgICAgIGlmICghdGhhdC5fZikgdGhhdC5fZiA9IGVudHJ5O1xuICAgICAgaWYgKHByZXYpIHByZXYubiA9IGVudHJ5O1xuICAgICAgdGhhdFtTSVpFXSsrO1xuICAgICAgLy8gYWRkIHRvIGluZGV4XG4gICAgICBpZiAoaW5kZXggIT09ICdGJykgdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcbiAgICB9IHJldHVybiB0aGF0O1xuICB9LFxuICBnZXRFbnRyeTogZ2V0RW50cnksXG4gIHNldFN0cm9uZzogZnVuY3Rpb24gKEMsIE5BTUUsIElTX01BUCkge1xuICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXVxuICAgIC8vIDIzLjEuMy40LCAyMy4xLjMuOCwgMjMuMS4zLjExLCAyMy4xLjMuMTIsIDIzLjIuMy41LCAyMy4yLjMuOCwgMjMuMi4zLjEwLCAyMy4yLjMuMTFcbiAgICAkaXRlckRlZmluZShDLCBOQU1FLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgICAgIHRoaXMuX3QgPSB2YWxpZGF0ZShpdGVyYXRlZCwgTkFNRSk7IC8vIHRhcmdldFxuICAgICAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgICAgICAgLy8ga2luZFxuICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgICAgICAgICAgICAgICAgLy8gcHJldmlvdXNcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICB2YXIga2luZCA9IHRoYXQuX2s7XG4gICAgICB2YXIgZW50cnkgPSB0aGF0Ll9sO1xuICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG4gICAgICB3aGlsZSAoZW50cnkgJiYgZW50cnkucikgZW50cnkgPSBlbnRyeS5wO1xuICAgICAgLy8gZ2V0IG5leHQgZW50cnlcbiAgICAgIGlmICghdGhhdC5fdCB8fCAhKHRoYXQuX2wgPSBlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoYXQuX3QuX2YpKSB7XG4gICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG4gICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBzdGVwKDEpO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZFxuICAgICAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS5rKTtcbiAgICAgIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS52KTtcbiAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG4gICAgfSwgSVNfTUFQID8gJ2VudHJpZXMnIDogJ3ZhbHVlcycsICFJU19NQVAsIHRydWUpO1xuXG4gICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjJcbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG52YXIgZ2V0V2VhayA9IHJlcXVpcmUoJy4vX21ldGEnKS5nZXRXZWFrO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIGNyZWF0ZUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpO1xudmFyICRoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBhcnJheUZpbmQgPSBjcmVhdGVBcnJheU1ldGhvZCg1KTtcbnZhciBhcnJheUZpbmRJbmRleCA9IGNyZWF0ZUFycmF5TWV0aG9kKDYpO1xudmFyIGlkID0gMDtcblxuLy8gZmFsbGJhY2sgZm9yIHVuY2F1Z2h0IGZyb3plbiBrZXlzXG52YXIgdW5jYXVnaHRGcm96ZW5TdG9yZSA9IGZ1bmN0aW9uICh0aGF0KSB7XG4gIHJldHVybiB0aGF0Ll9sIHx8ICh0aGF0Ll9sID0gbmV3IFVuY2F1Z2h0RnJvemVuU3RvcmUoKSk7XG59O1xudmFyIFVuY2F1Z2h0RnJvemVuU3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYSA9IFtdO1xufTtcbnZhciBmaW5kVW5jYXVnaHRGcm96ZW4gPSBmdW5jdGlvbiAoc3RvcmUsIGtleSkge1xuICByZXR1cm4gYXJyYXlGaW5kKHN0b3JlLmEsIGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBpdFswXSA9PT0ga2V5O1xuICB9KTtcbn07XG5VbmNhdWdodEZyb3plblN0b3JlLnByb3RvdHlwZSA9IHtcbiAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSByZXR1cm4gZW50cnlbMV07XG4gIH0sXG4gIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiAhIWZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYgKGVudHJ5KSBlbnRyeVsxXSA9IHZhbHVlO1xuICAgIGVsc2UgdGhpcy5hLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSxcbiAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgaW5kZXggPSBhcnJheUZpbmRJbmRleCh0aGlzLmEsIGZ1bmN0aW9uIChpdCkge1xuICAgICAgcmV0dXJuIGl0WzBdID09PSBrZXk7XG4gICAgfSk7XG4gICAgaWYgKH5pbmRleCkgdGhpcy5hLnNwbGljZShpbmRleCwgMSk7XG4gICAgcmV0dXJuICEhfmluZGV4O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uICh3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKSB7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBOQU1FLCAnX2knKTtcbiAgICAgIHRoYXQuX3QgPSBOQU1FOyAgICAgIC8vIGNvbGxlY3Rpb24gdHlwZVxuICAgICAgdGhhdC5faSA9IGlkKys7ICAgICAgLy8gY29sbGVjdGlvbiBpZFxuICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgLy8gbGVhayBzdG9yZSBmb3IgdW5jYXVnaHQgZnJvemVuIG9iamVjdHNcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMy4zLjIgV2Vha01hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjQuMy4zIFdlYWtTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIE5BTUUpKVsnZGVsZXRlJ10oa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgJGhhcyhkYXRhLCB0aGlzLl9pKSAmJiBkZWxldGUgZGF0YVt0aGlzLl9pXTtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4zLjMuNCBXZWFrTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuICAgICAgLy8gMjMuNC4zLjQgV2Vha1NldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICAgIGlmICghaXNPYmplY3Qoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIE5BTUUpKS5oYXMoa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgJGhhcyhkYXRhLCB0aGlzLl9pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQztcbiAgfSxcbiAgZGVmOiBmdW5jdGlvbiAodGhhdCwga2V5LCB2YWx1ZSkge1xuICAgIHZhciBkYXRhID0gZ2V0V2Vhayhhbk9iamVjdChrZXkpLCB0cnVlKTtcbiAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkgdW5jYXVnaHRGcm96ZW5TdG9yZSh0aGF0KS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgZWxzZSBkYXRhW3RoYXQuX2ldID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIHVmc3RvcmU6IHVuY2F1Z2h0RnJvemVuU3RvcmVcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciAkaXRlckRldGVjdCA9IHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0Jyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi9faW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChOQU1FLCB3cmFwcGVyLCBtZXRob2RzLCBjb21tb24sIElTX01BUCwgSVNfV0VBSykge1xuICB2YXIgQmFzZSA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIEMgPSBCYXNlO1xuICB2YXIgQURERVIgPSBJU19NQVAgPyAnc2V0JyA6ICdhZGQnO1xuICB2YXIgcHJvdG8gPSBDICYmIEMucHJvdG90eXBlO1xuICB2YXIgTyA9IHt9O1xuICB2YXIgZml4TWV0aG9kID0gZnVuY3Rpb24gKEtFWSkge1xuICAgIHZhciBmbiA9IHByb3RvW0tFWV07XG4gICAgcmVkZWZpbmUocHJvdG8sIEtFWSxcbiAgICAgIEtFWSA9PSAnZGVsZXRlJyA/IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHJldHVybiBJU19XRUFLICYmICFpc09iamVjdChhKSA/IGZhbHNlIDogZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEpO1xuICAgICAgfSA6IEtFWSA9PSAnaGFzJyA/IGZ1bmN0aW9uIGhhcyhhKSB7XG4gICAgICAgIHJldHVybiBJU19XRUFLICYmICFpc09iamVjdChhKSA/IGZhbHNlIDogZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEpO1xuICAgICAgfSA6IEtFWSA9PSAnZ2V0JyA/IGZ1bmN0aW9uIGdldChhKSB7XG4gICAgICAgIHJldHVybiBJU19XRUFLICYmICFpc09iamVjdChhKSA/IHVuZGVmaW5lZCA6IGZuLmNhbGwodGhpcywgYSA9PT0gMCA/IDAgOiBhKTtcbiAgICAgIH0gOiBLRVkgPT0gJ2FkZCcgPyBmdW5jdGlvbiBhZGQoYSkgeyBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7IHJldHVybiB0aGlzOyB9XG4gICAgICAgIDogZnVuY3Rpb24gc2V0KGEsIGIpIHsgZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEsIGIpOyByZXR1cm4gdGhpczsgfVxuICAgICk7XG4gIH07XG4gIGlmICh0eXBlb2YgQyAhPSAnZnVuY3Rpb24nIHx8ICEoSVNfV0VBSyB8fCBwcm90by5mb3JFYWNoICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgbmV3IEMoKS5lbnRyaWVzKCkubmV4dCgpO1xuICB9KSkpIHtcbiAgICAvLyBjcmVhdGUgY29sbGVjdGlvbiBjb25zdHJ1Y3RvclxuICAgIEMgPSBjb21tb24uZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUik7XG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIG1ldGhvZHMpO1xuICAgIG1ldGEuTkVFRCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGluc3RhbmNlID0gbmV3IEMoKTtcbiAgICAvLyBlYXJseSBpbXBsZW1lbnRhdGlvbnMgbm90IHN1cHBvcnRzIGNoYWluaW5nXG4gICAgdmFyIEhBU05UX0NIQUlOSU5HID0gaW5zdGFuY2VbQURERVJdKElTX1dFQUsgPyB7fSA6IC0wLCAxKSAhPSBpbnN0YW5jZTtcbiAgICAvLyBWOCB+ICBDaHJvbWl1bSA0MC0gd2Vhay1jb2xsZWN0aW9ucyB0aHJvd3Mgb24gcHJpbWl0aXZlcywgYnV0IHNob3VsZCByZXR1cm4gZmFsc2VcbiAgICB2YXIgVEhST1dTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IGluc3RhbmNlLmhhcygxKTsgfSk7XG4gICAgLy8gbW9zdCBlYXJseSBpbXBsZW1lbnRhdGlvbnMgZG9lc24ndCBzdXBwb3J0cyBpdGVyYWJsZXMsIG1vc3QgbW9kZXJuIC0gbm90IGNsb3NlIGl0IGNvcnJlY3RseVxuICAgIHZhciBBQ0NFUFRfSVRFUkFCTEVTID0gJGl0ZXJEZXRlY3QoZnVuY3Rpb24gKGl0ZXIpIHsgbmV3IEMoaXRlcik7IH0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIC8vIGZvciBlYXJseSBpbXBsZW1lbnRhdGlvbnMgLTAgYW5kICswIG5vdCB0aGUgc2FtZVxuICAgIHZhciBCVUdHWV9aRVJPID0gIUlTX1dFQUsgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVjggfiBDaHJvbWl1bSA0Mi0gZmFpbHMgb25seSB3aXRoIDUrIGVsZW1lbnRzXG4gICAgICB2YXIgJGluc3RhbmNlID0gbmV3IEMoKTtcbiAgICAgIHZhciBpbmRleCA9IDU7XG4gICAgICB3aGlsZSAoaW5kZXgtLSkgJGluc3RhbmNlW0FEREVSXShpbmRleCwgaW5kZXgpO1xuICAgICAgcmV0dXJuICEkaW5zdGFuY2UuaGFzKC0wKTtcbiAgICB9KTtcbiAgICBpZiAoIUFDQ0VQVF9JVEVSQUJMRVMpIHtcbiAgICAgIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0YXJnZXQsIGl0ZXJhYmxlKSB7XG4gICAgICAgIGFuSW5zdGFuY2UodGFyZ2V0LCBDLCBOQU1FKTtcbiAgICAgICAgdmFyIHRoYXQgPSBpbmhlcml0SWZSZXF1aXJlZChuZXcgQmFzZSgpLCB0YXJnZXQsIEMpO1xuICAgICAgICBpZiAoaXRlcmFibGUgIT0gdW5kZWZpbmVkKSBmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG4gICAgICAgIHJldHVybiB0aGF0O1xuICAgICAgfSk7XG4gICAgICBDLnByb3RvdHlwZSA9IHByb3RvO1xuICAgICAgcHJvdG8uY29uc3RydWN0b3IgPSBDO1xuICAgIH1cbiAgICBpZiAoVEhST1dTX09OX1BSSU1JVElWRVMgfHwgQlVHR1lfWkVSTykge1xuICAgICAgZml4TWV0aG9kKCdkZWxldGUnKTtcbiAgICAgIGZpeE1ldGhvZCgnaGFzJyk7XG4gICAgICBJU19NQVAgJiYgZml4TWV0aG9kKCdnZXQnKTtcbiAgICB9XG4gICAgaWYgKEJVR0dZX1pFUk8gfHwgSEFTTlRfQ0hBSU5JTkcpIGZpeE1ldGhvZChBRERFUik7XG4gICAgLy8gd2VhayBjb2xsZWN0aW9ucyBzaG91bGQgbm90IGNvbnRhaW5zIC5jbGVhciBtZXRob2RcbiAgICBpZiAoSVNfV0VBSyAmJiBwcm90by5jbGVhcikgZGVsZXRlIHByb3RvLmNsZWFyO1xuICB9XG5cbiAgc2V0VG9TdHJpbmdUYWcoQywgTkFNRSk7XG5cbiAgT1tOQU1FXSA9IEM7XG4gICRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogKEMgIT0gQmFzZSksIE8pO1xuXG4gIGlmICghSVNfV0VBSykgY29tbW9uLnNldFN0cm9uZyhDLCBOQU1FLCBJU19NQVApO1xuXG4gIHJldHVybiBDO1xufTtcbiIsInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuMTInIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCBpbiBvYmplY3QpICRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjAuMy40LjM2IC8gMTUuOS41LjQzIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKClcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZ2V0VGltZSA9IERhdGUucHJvdG90eXBlLmdldFRpbWU7XG52YXIgJHRvSVNPU3RyaW5nID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbnZhciBseiA9IGZ1bmN0aW9uIChudW0pIHtcbiAgcmV0dXJuIG51bSA+IDkgPyBudW0gOiAnMCcgKyBudW07XG59O1xuXG4vLyBQaGFudG9tSlMgLyBvbGQgV2ViS2l0IGhhcyBhIGJyb2tlbiBpbXBsZW1lbnRhdGlvbnNcbm1vZHVsZS5leHBvcnRzID0gKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICR0b0lTT1N0cmluZy5jYWxsKG5ldyBEYXRlKC01ZTEzIC0gMSkpICE9ICcwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVonO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgJHRvSVNPU3RyaW5nLmNhbGwobmV3IERhdGUoTmFOKSk7XG59KSkgPyBmdW5jdGlvbiB0b0lTT1N0cmluZygpIHtcbiAgaWYgKCFpc0Zpbml0ZShnZXRUaW1lLmNhbGwodGhpcykpKSB0aHJvdyBSYW5nZUVycm9yKCdJbnZhbGlkIHRpbWUgdmFsdWUnKTtcbiAgdmFyIGQgPSB0aGlzO1xuICB2YXIgeSA9IGQuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIG0gPSBkLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICB2YXIgcyA9IHkgPCAwID8gJy0nIDogeSA+IDk5OTkgPyAnKycgOiAnJztcbiAgcmV0dXJuIHMgKyAoJzAwMDAwJyArIE1hdGguYWJzKHkpKS5zbGljZShzID8gLTYgOiAtNCkgK1xuICAgICctJyArIGx6KGQuZ2V0VVRDTW9udGgoKSArIDEpICsgJy0nICsgbHooZC5nZXRVVENEYXRlKCkpICtcbiAgICAnVCcgKyBseihkLmdldFVUQ0hvdXJzKCkpICsgJzonICsgbHooZC5nZXRVVENNaW51dGVzKCkpICtcbiAgICAnOicgKyBseihkLmdldFVUQ1NlY29uZHMoKSkgKyAnLicgKyAobSA+IDk5ID8gbSA6ICcwJyArIGx6KG0pKSArICdaJztcbn0gOiAkdG9JU09TdHJpbmc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIE5VTUJFUiA9ICdudW1iZXInO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChoaW50KSB7XG4gIGlmIChoaW50ICE9PSAnc3RyaW5nJyAmJiBoaW50ICE9PSBOVU1CRVIgJiYgaGludCAhPT0gJ2RlZmF1bHQnKSB0aHJvdyBUeXBlRXJyb3IoJ0luY29ycmVjdCBoaW50Jyk7XG4gIHJldHVybiB0b1ByaW1pdGl2ZShhbk9iamVjdCh0aGlzKSwgaGludCAhPSBOVU1CRVIpO1xufTtcbiIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG4iLCIvLyBhbGwgZW51bWVyYWJsZSBvYmplY3Qga2V5cywgaW5jbHVkZXMgc3ltYm9sc1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUFMgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpO1xudmFyIHBJRSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciByZXN1bHQgPSBnZXRLZXlzKGl0KTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIGlmIChnZXRTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KTtcbiAgICB2YXIgaXNFbnVtID0gcElFLmY7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKHN5bWJvbHMubGVuZ3RoID4gaSkgaWYgKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gfHwgKGdsb2JhbFtuYW1lXSA9IHt9KSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV07XG4gIHZhciBleHBvcnRzID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSk7XG4gIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXSB8fCAoZXhwb3J0c1tQUk9UT1RZUEVdID0ge30pO1xuICB2YXIga2V5LCBvd24sIG91dCwgZXhwO1xuICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lO1xuICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gKG93biA/IHRhcmdldCA6IHNvdXJjZSlba2V5XTtcbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIGV4cCA9IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4dGVuZCBnbG9iYWxcbiAgICBpZiAodGFyZ2V0KSByZWRlZmluZSh0YXJnZXQsIGtleSwgb3V0LCB0eXBlICYgJGV4cG9ydC5VKTtcbiAgICAvLyBleHBvcnRcbiAgICBpZiAoZXhwb3J0c1trZXldICE9IG91dCkgaGlkZShleHBvcnRzLCBrZXksIGV4cCk7XG4gICAgaWYgKElTX1BST1RPICYmIGV4cFByb3RvW2tleV0gIT0gb3V0KSBleHBQcm90b1trZXldID0gb3V0O1xuICB9XG59O1xuZ2xvYmFsLmNvcmUgPSBjb3JlO1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwidmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIHJlID0gLy4vO1xuICB0cnkge1xuICAgICcvLi8nW0tFWV0ocmUpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlW01BVENIXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuICEnLy4vJ1tLRVldKHJlKTtcbiAgICB9IGNhdGNoIChmKSB7IC8qIGVtcHR5ICovIH1cbiAgfSByZXR1cm4gdHJ1ZTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuL2VzNi5yZWdleHAuZXhlYycpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYycpO1xuXG52YXIgU1BFQ0lFUyA9IHdrcygnc3BlY2llcycpO1xuXG52YXIgUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyAjcmVwbGFjZSBuZWVkcyBidWlsdC1pbiBzdXBwb3J0IGZvciBuYW1lZCBncm91cHMuXG4gIC8vICNtYXRjaCB3b3JrcyBmaW5lIGJlY2F1c2UgaXQganVzdCByZXR1cm4gdGhlIGV4ZWMgcmVzdWx0cywgZXZlbiBpZiBpdCBoYXNcbiAgLy8gYSBcImdyb3BzXCIgcHJvcGVydHkuXG4gIHZhciByZSA9IC8uLztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgcmVzdWx0Lmdyb3VwcyA9IHsgYTogJzcnIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgcmV0dXJuICcnLnJlcGxhY2UocmUsICckPGE+JykgIT09ICc3Jztcbn0pO1xuXG52YXIgU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ2hyb21lIDUxIGhhcyBhIGJ1Z2d5IFwic3BsaXRcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIFJlZ0V4cCNleGVjICE9PSBuYXRpdmVFeGVjXG4gIHZhciByZSA9IC8oPzopLztcbiAgdmFyIG9yaWdpbmFsRXhlYyA9IHJlLmV4ZWM7XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvcmlnaW5hbEV4ZWMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfTtcbiAgdmFyIHJlc3VsdCA9ICdhYicuc3BsaXQocmUpO1xuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA9PT0gMiAmJiByZXN1bHRbMF0gPT09ICdhJyAmJiByZXN1bHRbMV0gPT09ICdiJztcbn0pKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgbGVuZ3RoLCBleGVjKSB7XG4gIHZhciBTWU1CT0wgPSB3a3MoS0VZKTtcblxuICB2YXIgREVMRUdBVEVTX1RPX1NZTUJPTCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3RyaW5nIG1ldGhvZHMgY2FsbCBzeW1ib2wtbmFtZWQgUmVnRXAgbWV0aG9kc1xuICAgIHZhciBPID0ge307XG4gICAgT1tTWU1CT0xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfTtcbiAgICByZXR1cm4gJydbS0VZXShPKSAhPSA3O1xuICB9KTtcblxuICB2YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBERUxFR0FURVNfVE9fU1lNQk9MID8gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBTeW1ib2wtbmFtZWQgUmVnRXhwIG1ldGhvZHMgY2FsbCAuZXhlY1xuICAgIHZhciBleGVjQ2FsbGVkID0gZmFsc2U7XG4gICAgdmFyIHJlID0gL2EvO1xuICAgIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IGV4ZWNDYWxsZWQgPSB0cnVlOyByZXR1cm4gbnVsbDsgfTtcbiAgICBpZiAoS0VZID09PSAnc3BsaXQnKSB7XG4gICAgICAvLyBSZWdFeHBbQEBzcGxpdF0gZG9lc24ndCBjYWxsIHRoZSByZWdleCdzIGV4ZWMgbWV0aG9kLCBidXQgZmlyc3QgY3JlYXRlc1xuICAgICAgLy8gYSBuZXcgb25lLiBXZSBuZWVkIHRvIHJldHVybiB0aGUgcGF0Y2hlZCByZWdleCB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgb25lLlxuICAgICAgcmUuY29uc3RydWN0b3IgPSB7fTtcbiAgICAgIHJlLmNvbnN0cnVjdG9yW1NQRUNJRVNdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmU7IH07XG4gICAgfVxuICAgIHJlW1NZTUJPTF0oJycpO1xuICAgIHJldHVybiAhZXhlY0NhbGxlZDtcbiAgfSkgOiB1bmRlZmluZWQ7XG5cbiAgaWYgKFxuICAgICFERUxFR0FURVNfVE9fU1lNQk9MIHx8XG4gICAgIURFTEVHQVRFU19UT19FWEVDIHx8XG4gICAgKEtFWSA9PT0gJ3JlcGxhY2UnICYmICFSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUykgfHxcbiAgICAoS0VZID09PSAnc3BsaXQnICYmICFTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMpXG4gICkge1xuICAgIHZhciBuYXRpdmVSZWdFeHBNZXRob2QgPSAvLi9bU1lNQk9MXTtcbiAgICB2YXIgZm5zID0gZXhlYyhcbiAgICAgIGRlZmluZWQsXG4gICAgICBTWU1CT0wsXG4gICAgICAnJ1tLRVldLFxuICAgICAgZnVuY3Rpb24gbWF5YmVDYWxsTmF0aXZlKG5hdGl2ZU1ldGhvZCwgcmVnZXhwLCBzdHIsIGFyZzIsIGZvcmNlU3RyaW5nTWV0aG9kKSB7XG4gICAgICAgIGlmIChyZWdleHAuZXhlYyA9PT0gcmVnZXhwRXhlYykge1xuICAgICAgICAgIGlmIChERUxFR0FURVNfVE9fU1lNQk9MICYmICFmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgICAgICAgLy8gVGhlIG5hdGl2ZSBTdHJpbmcgbWV0aG9kIGFscmVhZHkgZGVsZWdhdGVzIHRvIEBAbWV0aG9kICh0aGlzXG4gICAgICAgICAgICAvLyBwb2x5ZmlsbGVkIGZ1bmN0aW9uKSwgbGVhc2luZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gICAgICAgICAgICAvLyBXZSBhdm9pZCBpdCBieSBkaXJlY3RseSBjYWxsaW5nIHRoZSBuYXRpdmUgQEBtZXRob2QgbWV0aG9kLlxuICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG5hdGl2ZVJlZ0V4cE1ldGhvZC5jYWxsKHJlZ2V4cCwgc3RyLCBhcmcyKSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlTWV0aG9kLmNhbGwoc3RyLCByZWdleHAsIGFyZzIpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UgfTtcbiAgICAgIH1cbiAgICApO1xuICAgIHZhciBzdHJmbiA9IGZuc1swXTtcbiAgICB2YXIgcnhmbiA9IGZuc1sxXTtcblxuICAgIHJlZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsIEtFWSwgc3RyZm4pO1xuICAgIGhpZGUoUmVnRXhwLnByb3RvdHlwZSwgU1lNQk9MLCBsZW5ndGggPT0gMlxuICAgICAgLy8gMjEuMi41LjggUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdKHN0cmluZywgcmVwbGFjZVZhbHVlKVxuICAgICAgLy8gMjEuMi41LjExIFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdClcbiAgICAgID8gZnVuY3Rpb24gKHN0cmluZywgYXJnKSB7IHJldHVybiByeGZuLmNhbGwoc3RyaW5nLCB0aGlzLCBhcmcpOyB9XG4gICAgICAvLyAyMS4yLjUuNiBSZWdFeHAucHJvdG90eXBlW0BAbWF0Y2hdKHN0cmluZylcbiAgICAgIC8vIDIxLjIuNS45IFJlZ0V4cC5wcm90b3R5cGVbQEBzZWFyY2hdKHN0cmluZylcbiAgICAgIDogZnVuY3Rpb24gKHN0cmluZykgeyByZXR1cm4gcnhmbi5jYWxsKHN0cmluZywgdGhpcyk7IH1cbiAgICApO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjEuMi41LjMgZ2V0IFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LnVuaWNvZGUpIHJlc3VsdCArPSAndSc7XG4gIGlmICh0aGF0LnN0aWNreSkgcmVzdWx0ICs9ICd5JztcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1GbGF0dGVuSW50b0FycmF5XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFID0gcmVxdWlyZSgnLi9fd2tzJykoJ2lzQ29uY2F0U3ByZWFkYWJsZScpO1xuXG5mdW5jdGlvbiBmbGF0dGVuSW50b0FycmF5KHRhcmdldCwgb3JpZ2luYWwsIHNvdXJjZSwgc291cmNlTGVuLCBzdGFydCwgZGVwdGgsIG1hcHBlciwgdGhpc0FyZykge1xuICB2YXIgdGFyZ2V0SW5kZXggPSBzdGFydDtcbiAgdmFyIHNvdXJjZUluZGV4ID0gMDtcbiAgdmFyIG1hcEZuID0gbWFwcGVyID8gY3R4KG1hcHBlciwgdGhpc0FyZywgMykgOiBmYWxzZTtcbiAgdmFyIGVsZW1lbnQsIHNwcmVhZGFibGU7XG5cbiAgd2hpbGUgKHNvdXJjZUluZGV4IDwgc291cmNlTGVuKSB7XG4gICAgaWYgKHNvdXJjZUluZGV4IGluIHNvdXJjZSkge1xuICAgICAgZWxlbWVudCA9IG1hcEZuID8gbWFwRm4oc291cmNlW3NvdXJjZUluZGV4XSwgc291cmNlSW5kZXgsIG9yaWdpbmFsKSA6IHNvdXJjZVtzb3VyY2VJbmRleF07XG5cbiAgICAgIHNwcmVhZGFibGUgPSBmYWxzZTtcbiAgICAgIGlmIChpc09iamVjdChlbGVtZW50KSkge1xuICAgICAgICBzcHJlYWRhYmxlID0gZWxlbWVudFtJU19DT05DQVRfU1BSRUFEQUJMRV07XG4gICAgICAgIHNwcmVhZGFibGUgPSBzcHJlYWRhYmxlICE9PSB1bmRlZmluZWQgPyAhIXNwcmVhZGFibGUgOiBpc0FycmF5KGVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3ByZWFkYWJsZSAmJiBkZXB0aCA+IDApIHtcbiAgICAgICAgdGFyZ2V0SW5kZXggPSBmbGF0dGVuSW50b0FycmF5KHRhcmdldCwgb3JpZ2luYWwsIGVsZW1lbnQsIHRvTGVuZ3RoKGVsZW1lbnQubGVuZ3RoKSwgdGFyZ2V0SW5kZXgsIGRlcHRoIC0gMSkgLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID49IDB4MWZmZmZmZmZmZmZmZmYpIHRocm93IFR5cGVFcnJvcigpO1xuICAgICAgICB0YXJnZXRbdGFyZ2V0SW5kZXhdID0gZWxlbWVudDtcbiAgICAgIH1cblxuICAgICAgdGFyZ2V0SW5kZXgrKztcbiAgICB9XG4gICAgc291cmNlSW5kZXgrKztcbiAgfVxuICByZXR1cm4gdGFyZ2V0SW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbkludG9BcnJheTtcbiIsInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCduYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nJywgRnVuY3Rpb24udG9TdHJpbmcpO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQ7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCB0YXJnZXQsIEMpIHtcbiAgdmFyIFMgPSB0YXJnZXQuY29uc3RydWN0b3I7XG4gIHZhciBQO1xuICBpZiAoUyAhPT0gQyAmJiB0eXBlb2YgUyA9PSAnZnVuY3Rpb24nICYmIChQID0gUy5wcm90b3R5cGUpICE9PSBDLnByb3RvdHlwZSAmJiBpc09iamVjdChQKSAmJiBzZXRQcm90b3R5cGVPZikge1xuICAgIHNldFByb3RvdHlwZU9mKHRoYXQsIFApO1xuICB9IHJldHVybiB0aGF0O1xufTtcbiIsIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcbiIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iLCIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiIsIi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuIiwiLy8gMjAuMS4yLjMgTnVtYmVyLmlzSW50ZWdlcihudW1iZXIpXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzSW50ZWdlcihpdCkge1xuICByZXR1cm4gIWlzT2JqZWN0KGl0KSAmJiBpc0Zpbml0ZShpdCkgJiYgZmxvb3IoaXQpID09PSBpdDtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcbiIsIi8vIDcuMi44IElzUmVnRXhwKGFyZ3VtZW50KVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgTUFUQ0ggPSByZXF1aXJlKCcuL193a3MnKSgnbWF0Y2gnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpc1JlZ0V4cDtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiAoKGlzUmVnRXhwID0gaXRbTUFUQ0hdKSAhPT0gdW5kZWZpbmVkID8gISFpc1JlZ0V4cCA6IGNvZihpdCkgPT0gJ1JlZ0V4cCcpO1xufTtcbiIsIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgJGl0ZXJDcmVhdGUgPSByZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpOyAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG52YXIgRkZfSVRFUkFUT1IgPSAnQEBpdGVyYXRvcic7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGtpbmQpIHtcbiAgICBpZiAoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pIHJldHVybiBwcm90b1traW5kXTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTO1xuICB2YXIgVkFMVUVTX0JVRyA9IGZhbHNlO1xuICB2YXIgcHJvdG8gPSBCYXNlLnByb3RvdHlwZTtcbiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07XG4gIHZhciAkZGVmYXVsdCA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpO1xuICB2YXIgJGVudHJpZXMgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkO1xuICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7XG4gIHZhciBtZXRob2RzLCBrZXksIEl0ZXJhdG9yUHJvdG90eXBlO1xuICAvLyBGaXggbmF0aXZlXG4gIGlmICgkYW55TmF0aXZlKSB7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYgKCFMSUJSQVJZICYmIHR5cGVvZiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcbiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7XG4gICAgaGlkZShwcm90bywgSVRFUkFUT1IsICRkZWZhdWx0KTtcbiAgfVxuICAvLyBQbHVnIGZvciBsaWJyYXJ5XG4gIEl0ZXJhdG9yc1tOQU1FXSA9ICRkZWZhdWx0O1xuICBJdGVyYXRvcnNbVEFHXSA9IHJldHVyblRoaXM7XG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoIShrZXkgaW4gcHJvdG8pKSByZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuIiwidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCIvLyAyMC4yLjIuMTQgTWF0aC5leHBtMSh4KVxudmFyICRleHBtMSA9IE1hdGguZXhwbTE7XG5tb2R1bGUuZXhwb3J0cyA9ICghJGV4cG0xXG4gIC8vIE9sZCBGRiBidWdcbiAgfHwgJGV4cG0xKDEwKSA+IDIyMDI1LjQ2NTc5NDgwNjcxOSB8fCAkZXhwbTEoMTApIDwgMjIwMjUuNDY1Nzk0ODA2NzE2NTE2OFxuICAvLyBUb3IgQnJvd3NlciBidWdcbiAgfHwgJGV4cG0xKC0yZS0xNykgIT0gLTJlLTE3XG4pID8gZnVuY3Rpb24gZXhwbTEoeCkge1xuICByZXR1cm4gKHggPSAreCkgPT0gMCA/IHggOiB4ID4gLTFlLTYgJiYgeCA8IDFlLTYgPyB4ICsgeCAqIHggLyAyIDogTWF0aC5leHAoeCkgLSAxO1xufSA6ICRleHBtMTtcbiIsIi8vIDIwLjIuMi4xNiBNYXRoLmZyb3VuZCh4KVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL19tYXRoLXNpZ24nKTtcbnZhciBwb3cgPSBNYXRoLnBvdztcbnZhciBFUFNJTE9OID0gcG93KDIsIC01Mik7XG52YXIgRVBTSUxPTjMyID0gcG93KDIsIC0yMyk7XG52YXIgTUFYMzIgPSBwb3coMiwgMTI3KSAqICgyIC0gRVBTSUxPTjMyKTtcbnZhciBNSU4zMiA9IHBvdygyLCAtMTI2KTtcblxudmFyIHJvdW5kVGllc1RvRXZlbiA9IGZ1bmN0aW9uIChuKSB7XG4gIHJldHVybiBuICsgMSAvIEVQU0lMT04gLSAxIC8gRVBTSUxPTjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTWF0aC5mcm91bmQgfHwgZnVuY3Rpb24gZnJvdW5kKHgpIHtcbiAgdmFyICRhYnMgPSBNYXRoLmFicyh4KTtcbiAgdmFyICRzaWduID0gc2lnbih4KTtcbiAgdmFyIGEsIHJlc3VsdDtcbiAgaWYgKCRhYnMgPCBNSU4zMikgcmV0dXJuICRzaWduICogcm91bmRUaWVzVG9FdmVuKCRhYnMgLyBNSU4zMiAvIEVQU0lMT04zMikgKiBNSU4zMiAqIEVQU0lMT04zMjtcbiAgYSA9ICgxICsgRVBTSUxPTjMyIC8gRVBTSUxPTikgKiAkYWJzO1xuICByZXN1bHQgPSBhIC0gKGEgLSAkYWJzKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICBpZiAocmVzdWx0ID4gTUFYMzIgfHwgcmVzdWx0ICE9IHJlc3VsdCkgcmV0dXJuICRzaWduICogSW5maW5pdHk7XG4gIHJldHVybiAkc2lnbiAqIHJlc3VsdDtcbn07XG4iLCIvLyAyMC4yLjIuMjAgTWF0aC5sb2cxcCh4KVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLmxvZzFwIHx8IGZ1bmN0aW9uIGxvZzFwKHgpIHtcbiAgcmV0dXJuICh4ID0gK3gpID4gLTFlLTggJiYgeCA8IDFlLTggPyB4IC0geCAqIHggLyAyIDogTWF0aC5sb2coMSArIHgpO1xufTtcbiIsIi8vIDIwLjIuMi4yOCBNYXRoLnNpZ24oeClcbm1vZHVsZS5leHBvcnRzID0gTWF0aC5zaWduIHx8IGZ1bmN0aW9uIHNpZ24oeCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIHJldHVybiAoeCA9ICt4KSA9PSAwIHx8IHggIT0geCA/IHggOiB4IDwgMCA/IC0xIDogMTtcbn07XG4iLCJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBPYnNlcnZlciA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBQcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XG52YXIgaXNOb2RlID0gcmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhlYWQsIGxhc3QsIG5vdGlmeTtcblxuICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYgKGlzTm9kZSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKSBwYXJlbnQuZXhpdCgpO1xuICAgIHdoaWxlIChoZWFkKSB7XG4gICAgICBmbiA9IGhlYWQuZm47XG4gICAgICBoZWFkID0gaGVhZC5uZXh0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGhlYWQpIG5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIE5vZGUuanNcbiAgaWYgKGlzTm9kZSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyBTYWZhcmkgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIH0gZWxzZSBpZiAoT2JzZXJ2ZXIgJiYgIShnbG9iYWwubmF2aWdhdG9yICYmIGdsb2JhbC5uYXZpZ2F0b3Iuc3RhbmRhbG9uZSkpIHtcbiAgICB2YXIgdG9nZ2xlID0gdHJ1ZTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmIChQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIC8vIFByb21pc2UucmVzb2x2ZSB3aXRob3V0IGFuIGFyZ3VtZW50IHRocm93cyBhbiBlcnJvciBpbiBMRyBXZWJPUyAyXG4gICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9taXNlLnRoZW4oZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ1xuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgIHZhciB0YXNrID0geyBmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCB9O1xuICAgIGlmIChsYXN0KSBsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmICghaGVhZCkge1xuICAgICAgaGVhZCA9IHRhc2s7XG4gICAgICBub3RpZnkoKTtcbiAgICB9IGxhc3QgPSB0YXNrO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDI1LjQuMS41IE5ld1Byb21pc2VDYXBhYmlsaXR5KEMpXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xuXG5mdW5jdGlvbiBQcm9taXNlQ2FwYWJpbGl0eShDKSB7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uICgkJHJlc29sdmUsICQkcmVqZWN0KSB7XG4gICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhRnVuY3Rpb24ocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUZ1bmN0aW9uKHJlamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiAoQykge1xuICByZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDE5LjEuMi4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UsIC4uLilcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxuLy8gc2hvdWxkIHdvcmsgd2l0aCBzeW1ib2xzIGFuZCBzaG91bGQgaGF2ZSBkZXRlcm1pbmlzdGljIHByb3BlcnR5IG9yZGVyIChWOCBidWcpXG5tb2R1bGUuZXhwb3J0cyA9ICEkYXNzaWduIHx8IHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgdmFyIFMgPSBTeW1ib2woKTtcbiAgdmFyIEsgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW1NdID0gNztcbiAgSy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoaykgeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgd2hpbGUgKGFMZW4gPiBpbmRleCkge1xuICAgIHZhciBTID0gSU9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0U3ltYm9scyA/IGdldEtleXMoUykuY29uY2F0KGdldFN5bWJvbHMoUykpIDogZ2V0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIHtcbiAgICAgIGtleSA9IGtleXNbaisrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgaXNFbnVtLmNhbGwoUywga2V5KSkgVFtrZXldID0gU1trZXldO1xuICAgIH1cbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuIiwiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BEIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSU9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGdPUEQoTywgUCk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlRGVzYyghcElFLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuIiwiLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzXG4gID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG52YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZ09QTihpdCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gd2luZG93TmFtZXMuc2xpY2UoKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nID8gZ2V0V2luZG93TmFtZXMoaXQpIDogZ09QTih0b0lPYmplY3QoaXQpKTtcbn07XG4iLCIvLyAxOS4xLjIuNyAvIDE1LjIuMy40IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJykuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gJGtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsIi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGlzRW51bSA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXNFbnRyaWVzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdChpdCk7XG4gICAgdmFyIGtleXMgPSBnZXRLZXlzKE8pO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGkpIHtcbiAgICAgIGtleSA9IGtleXNbaSsrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgaXNFbnVtLmNhbGwoTywga2V5KSkge1xuICAgICAgICByZXN1bHQucHVzaChpc0VudHJpZXMgPyBba2V5LCBPW2tleV1dIDogT1trZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG4iLCIvLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBSZWZsZWN0ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdDtcbm1vZHVsZS5leHBvcnRzID0gUmVmbGVjdCAmJiBSZWZsZWN0Lm93bktleXMgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdPUE4uZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgcmV0dXJuIGdldFN5bWJvbHMgPyBrZXlzLmNvbmNhdChnZXRTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsInZhciAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLnBhcnNlRmxvYXQ7XG52YXIgJHRyaW0gPSByZXF1aXJlKCcuL19zdHJpbmctdHJpbScpLnRyaW07XG5cbm1vZHVsZS5leHBvcnRzID0gMSAvICRwYXJzZUZsb2F0KHJlcXVpcmUoJy4vX3N0cmluZy13cycpICsgJy0wJykgIT09IC1JbmZpbml0eSA/IGZ1bmN0aW9uIHBhcnNlRmxvYXQoc3RyKSB7XG4gIHZhciBzdHJpbmcgPSAkdHJpbShTdHJpbmcoc3RyKSwgMyk7XG4gIHZhciByZXN1bHQgPSAkcGFyc2VGbG9hdChzdHJpbmcpO1xuICByZXR1cm4gcmVzdWx0ID09PSAwICYmIHN0cmluZy5jaGFyQXQoMCkgPT0gJy0nID8gLTAgOiByZXN1bHQ7XG59IDogJHBhcnNlRmxvYXQ7XG4iLCJ2YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykucGFyc2VJbnQ7XG52YXIgJHRyaW0gPSByZXF1aXJlKCcuL19zdHJpbmctdHJpbScpLnRyaW07XG52YXIgd3MgPSByZXF1aXJlKCcuL19zdHJpbmctd3MnKTtcbnZhciBoZXggPSAvXlstK10/MFt4WF0vO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRwYXJzZUludCh3cyArICcwOCcpICE9PSA4IHx8ICRwYXJzZUludCh3cyArICcweDE2JykgIT09IDIyID8gZnVuY3Rpb24gcGFyc2VJbnQoc3RyLCByYWRpeCkge1xuICB2YXIgc3RyaW5nID0gJHRyaW0oU3RyaW5nKHN0ciksIDMpO1xuICByZXR1cm4gJHBhcnNlSW50KHN0cmluZywgKHJhZGl4ID4+PiAwKSB8fCAoaGV4LnRlc3Qoc3RyaW5nKSA/IDE2IDogMTApKTtcbn0gOiAkcGFyc2VJbnQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZTogZmFsc2UsIHY6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHsgZTogdHJ1ZSwgdjogZSB9O1xuICB9XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNyY1trZXldLCBzYWZlKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBTUkMgPSByZXF1aXJlKCcuL191aWQnKSgnc3JjJyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi9fZnVuY3Rpb24tdG8tc3RyaW5nJyk7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciBUUEwgPSAoJycgKyAkdG9TdHJpbmcpLnNwbGl0KFRPX1NUUklORyk7XG5cbnJlcXVpcmUoJy4vX2NvcmUnKS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiAkdG9TdHJpbmcuY2FsbChpdCk7XG59O1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWwsIHNhZmUpIHtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgdmFsID09ICdmdW5jdGlvbic7XG4gIGlmIChpc0Z1bmN0aW9uKSBoYXModmFsLCAnbmFtZScpIHx8IGhpZGUodmFsLCAnbmFtZScsIGtleSk7XG4gIGlmIChPW2tleV0gPT09IHZhbCkgcmV0dXJuO1xuICBpZiAoaXNGdW5jdGlvbikgaGFzKHZhbCwgU1JDKSB8fCBoaWRlKHZhbCwgU1JDLCBPW2tleV0gPyAnJyArIE9ba2V5XSA6IFRQTC5qb2luKFN0cmluZyhrZXkpKSk7XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBPW2tleV0gPSB2YWw7XG4gIH0gZWxzZSBpZiAoIXNhZmUpIHtcbiAgICBkZWxldGUgT1trZXldO1xuICAgIGhpZGUoTywga2V5LCB2YWwpO1xuICB9IGVsc2UgaWYgKE9ba2V5XSkge1xuICAgIE9ba2V5XSA9IHZhbDtcbiAgfSBlbHNlIHtcbiAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgfVxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nICYmIHRoaXNbU1JDXSB8fCAkdG9TdHJpbmcuY2FsbCh0aGlzKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBidWlsdGluRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcblxuIC8vIGBSZWdFeHBFeGVjYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cGV4ZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFIsIFMpIHtcbiAgdmFyIGV4ZWMgPSBSLmV4ZWM7XG4gIGlmICh0eXBlb2YgZXhlYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBleGVjLmNhbGwoUiwgUyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZWdFeHAgZXhlYyBtZXRob2QgcmV0dXJuZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gT2JqZWN0IG9yIG51bGwnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoY2xhc3NvZihSKSAhPT0gJ1JlZ0V4cCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG4gIH1cbiAgcmV0dXJuIGJ1aWx0aW5FeGVjLmNhbGwoUiwgUyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVnZXhwRmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xuXG52YXIgbmF0aXZlRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcbi8vIFRoaXMgYWx3YXlzIHJlZmVycyB0byB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIHRoZVxuLy8gU3RyaW5nI3JlcGxhY2UgcG9seWZpbGwgdXNlcyAuL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMuanMsXG4vLyB3aGljaCBsb2FkcyB0aGlzIGZpbGUgYmVmb3JlIHBhdGNoaW5nIHRoZSBtZXRob2QuXG52YXIgbmF0aXZlUmVwbGFjZSA9IFN0cmluZy5wcm90b3R5cGUucmVwbGFjZTtcblxudmFyIHBhdGNoZWRFeGVjID0gbmF0aXZlRXhlYztcblxudmFyIExBU1RfSU5ERVggPSAnbGFzdEluZGV4JztcblxudmFyIFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciByZTEgPSAvYS8sXG4gICAgICByZTIgPSAvYiovZztcbiAgbmF0aXZlRXhlYy5jYWxsKHJlMSwgJ2EnKTtcbiAgbmF0aXZlRXhlYy5jYWxsKHJlMiwgJ2EnKTtcbiAgcmV0dXJuIHJlMVtMQVNUX0lOREVYXSAhPT0gMCB8fCByZTJbTEFTVF9JTkRFWF0gIT09IDA7XG59KSgpO1xuXG4vLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cCwgY29waWVkIGZyb20gZXM1LXNoaW0ncyBTdHJpbmcjc3BsaXQgcGF0Y2guXG52YXIgTlBDR19JTkNMVURFRCA9IC8oKT8/Ly5leGVjKCcnKVsxXSAhPT0gdW5kZWZpbmVkO1xuXG52YXIgUEFUQ0ggPSBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgfHwgTlBDR19JTkNMVURFRDtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyByZS5zb3VyY2UgKyAnJCg/IVxcXFxzKScsIHJlZ2V4cEZsYWdzLmNhbGwocmUpKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmVbTEFTVF9JTkRFWF07XG5cbiAgICBtYXRjaCA9IG5hdGl2ZUV4ZWMuY2FsbChyZSwgc3RyKTtcblxuICAgIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgJiYgbWF0Y2gpIHtcbiAgICAgIHJlW0xBU1RfSU5ERVhdID0gcmUuZ2xvYmFsID8gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggOiBsYXN0SW5kZXg7XG4gICAgfVxuICAgIGlmIChOUENHX0lOQ0xVREVEICYmIG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIEZpeCBicm93c2VycyB3aG9zZSBgZXhlY2AgbWV0aG9kcyBkb24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGB1bmRlZmluZWRgXG4gICAgICAvLyBmb3IgTlBDRywgbGlrZSBJRTguIE5PVEU6IFRoaXMgZG9lc24nIHdvcmsgZm9yIC8oLj8pPy9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb29wLWZ1bmNcbiAgICAgIG5hdGl2ZVJlcGxhY2UuY2FsbChtYXRjaFswXSwgcmVDb3B5LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKSBtYXRjaFtpXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoZWRFeGVjO1xuIiwiLy8gNy4yLjkgU2FtZVZhbHVlKHgsIHkpXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5pcyB8fCBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgcmV0dXJuIHggPT09IHkgPyB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geSA6IHggIT0geCAmJiB5ICE9IHk7XG59O1xuIiwiLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChPLCBwcm90bykge1xuICBhbk9iamVjdChPKTtcbiAgaWYgKCFpc09iamVjdChwcm90bykgJiYgcHJvdG8gIT09IG51bGwpIHRocm93IFR5cGVFcnJvcihwcm90byArIFwiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlIVwiKTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIGZ1bmN0aW9uICh0ZXN0LCBidWdneSwgc2V0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXQgPSByZXF1aXJlKCcuL19jdHgnKShGdW5jdGlvbi5jYWxsLCByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmYoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLnNldCwgMik7XG4gICAgICAgIHNldCh0ZXN0LCBbXSk7XG4gICAgICAgIGJ1Z2d5ID0gISh0ZXN0IGluc3RhbmNlb2YgQXJyYXkpO1xuICAgICAgfSBjYXRjaCAoZSkgeyBidWdneSA9IHRydWU7IH1cbiAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgICAgICBjaGVjayhPLCBwcm90byk7XG4gICAgICAgIGlmIChidWdneSkgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICAgICAgZWxzZSBzZXQoTywgcHJvdG8pO1xuICAgICAgICByZXR1cm4gTztcbiAgICAgIH07XG4gICAgfSh7fSwgZmFsc2UpIDogdW5kZWZpbmVkKSxcbiAgY2hlY2s6IGNoZWNrXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIEMgPSBnbG9iYWxbS0VZXTtcbiAgaWYgKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pIGRQLmYoQywgU1BFQ0lFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgfSk7XG59O1xuIiwidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcbiIsInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAyMCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuIiwiLy8gNy4zLjIwIFNwZWNpZXNDb25zdHJ1Y3RvcihPLCBkZWZhdWx0Q29uc3RydWN0b3IpXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBEKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IEQgOiBhRnVuY3Rpb24oUyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWV0aG9kLCBhcmcpIHtcbiAgcmV0dXJuICEhbWV0aG9kICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jYWxsXG4gICAgYXJnID8gbWV0aG9kLmNhbGwobnVsbCwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAxKSA6IG1ldGhvZC5jYWxsKG51bGwpO1xuICB9KTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIiwiLy8gaGVscGVyIGZvciBTdHJpbmcje3N0YXJ0c1dpdGgsIGVuZHNXaXRoLCBpbmNsdWRlc31cbnZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRoYXQsIHNlYXJjaFN0cmluZywgTkFNRSkge1xuICBpZiAoaXNSZWdFeHAoc2VhcmNoU3RyaW5nKSkgdGhyb3cgVHlwZUVycm9yKCdTdHJpbmcjJyArIE5BTUUgKyBcIiBkb2Vzbid0IGFjY2VwdCByZWdleCFcIik7XG4gIHJldHVybiBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG59O1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciBxdW90ID0gL1wiL2c7XG4vLyBCLjIuMy4yLjEgQ3JlYXRlSFRNTChzdHJpbmcsIHRhZywgYXR0cmlidXRlLCB2YWx1ZSlcbnZhciBjcmVhdGVIVE1MID0gZnVuY3Rpb24gKHN0cmluZywgdGFnLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gIHZhciBTID0gU3RyaW5nKGRlZmluZWQoc3RyaW5nKSk7XG4gIHZhciBwMSA9ICc8JyArIHRhZztcbiAgaWYgKGF0dHJpYnV0ZSAhPT0gJycpIHAxICs9ICcgJyArIGF0dHJpYnV0ZSArICc9XCInICsgU3RyaW5nKHZhbHVlKS5yZXBsYWNlKHF1b3QsICcmcXVvdDsnKSArICdcIic7XG4gIHJldHVybiBwMSArICc+JyArIFMgKyAnPC8nICsgdGFnICsgJz4nO1xufTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUsIGV4ZWMpIHtcbiAgdmFyIE8gPSB7fTtcbiAgT1tOQU1FXSA9IGV4ZWMoY3JlYXRlSFRNTCk7XG4gICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ZXN0ID0gJydbTkFNRV0oJ1wiJyk7XG4gICAgcmV0dXJuIHRlc3QgIT09IHRlc3QudG9Mb3dlckNhc2UoKSB8fCB0ZXN0LnNwbGl0KCdcIicpLmxlbmd0aCA+IDM7XG4gIH0pLCAnU3RyaW5nJywgTyk7XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc3RyaW5nLXBhZC1zdGFydC1lbmRcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHJlcGVhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1yZXBlYXQnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGF0LCBtYXhMZW5ndGgsIGZpbGxTdHJpbmcsIGxlZnQpIHtcbiAgdmFyIFMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gIHZhciBzdHJpbmdMZW5ndGggPSBTLmxlbmd0aDtcbiAgdmFyIGZpbGxTdHIgPSBmaWxsU3RyaW5nID09PSB1bmRlZmluZWQgPyAnICcgOiBTdHJpbmcoZmlsbFN0cmluZyk7XG4gIHZhciBpbnRNYXhMZW5ndGggPSB0b0xlbmd0aChtYXhMZW5ndGgpO1xuICBpZiAoaW50TWF4TGVuZ3RoIDw9IHN0cmluZ0xlbmd0aCB8fCBmaWxsU3RyID09ICcnKSByZXR1cm4gUztcbiAgdmFyIGZpbGxMZW4gPSBpbnRNYXhMZW5ndGggLSBzdHJpbmdMZW5ndGg7XG4gIHZhciBzdHJpbmdGaWxsZXIgPSByZXBlYXQuY2FsbChmaWxsU3RyLCBNYXRoLmNlaWwoZmlsbExlbiAvIGZpbGxTdHIubGVuZ3RoKSk7XG4gIGlmIChzdHJpbmdGaWxsZXIubGVuZ3RoID4gZmlsbExlbikgc3RyaW5nRmlsbGVyID0gc3RyaW5nRmlsbGVyLnNsaWNlKDAsIGZpbGxMZW4pO1xuICByZXR1cm4gbGVmdCA/IHN0cmluZ0ZpbGxlciArIFMgOiBTICsgc3RyaW5nRmlsbGVyO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXBlYXQoY291bnQpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyhkZWZpbmVkKHRoaXMpKTtcbiAgdmFyIHJlcyA9ICcnO1xuICB2YXIgbiA9IHRvSW50ZWdlcihjb3VudCk7XG4gIGlmIChuIDwgMCB8fCBuID09IEluZmluaXR5KSB0aHJvdyBSYW5nZUVycm9yKFwiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmVcIik7XG4gIGZvciAoO24gPiAwOyAobiA+Pj49IDEpICYmIChzdHIgKz0gc3RyKSkgaWYgKG4gJiAxKSByZXMgKz0gc3RyO1xuICByZXR1cm4gcmVzO1xufTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc3BhY2VzID0gcmVxdWlyZSgnLi9fc3RyaW5nLXdzJyk7XG52YXIgc3BhY2UgPSAnWycgKyBzcGFjZXMgKyAnXSc7XG52YXIgbm9uID0gJ1xcdTIwMGJcXHUwMDg1JztcbnZhciBsdHJpbSA9IFJlZ0V4cCgnXicgKyBzcGFjZSArIHNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cChzcGFjZSArIHNwYWNlICsgJyokJyk7XG5cbnZhciBleHBvcnRlciA9IGZ1bmN0aW9uIChLRVksIGV4ZWMsIEFMSUFTKSB7XG4gIHZhciBleHAgPSB7fTtcbiAgdmFyIEZPUkNFID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXNwYWNlc1tLRVldKCkgfHwgbm9uW0tFWV0oKSAhPSBub247XG4gIH0pO1xuICB2YXIgZm4gPSBleHBbS0VZXSA9IEZPUkNFID8gZXhlYyh0cmltKSA6IHNwYWNlc1tLRVldO1xuICBpZiAoQUxJQVMpIGV4cFtBTElBU10gPSBmbjtcbiAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRSwgJ1N0cmluZycsIGV4cCk7XG59O1xuXG4vLyAxIC0+IFN0cmluZyN0cmltTGVmdFxuLy8gMiAtPiBTdHJpbmcjdHJpbVJpZ2h0XG4vLyAzIC0+IFN0cmluZyN0cmltXG52YXIgdHJpbSA9IGV4cG9ydGVyLnRyaW0gPSBmdW5jdGlvbiAoc3RyaW5nLCBUWVBFKSB7XG4gIHN0cmluZyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGx0cmltLCAnJyk7XG4gIGlmIChUWVBFICYgMikgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocnRyaW0sICcnKTtcbiAgcmV0dXJuIHN0cmluZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0ZXI7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICdcXHgwOVxceDBBXFx4MEJcXHgwQ1xceDBEXFx4MjBcXHhBMFxcdTE2ODBcXHUxODBFXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwMycgK1xuICAnXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7XG4iLCJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcbiIsIi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW5kZXhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgdmFyIG51bWJlciA9IHRvSW50ZWdlcihpdCk7XG4gIHZhciBsZW5ndGggPSB0b0xlbmd0aChudW1iZXIpO1xuICBpZiAobnVtYmVyICE9PSBsZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIGxlbmd0aCEnKTtcbiAgcmV0dXJuIGxlbmd0aDtcbn07XG4iLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuaWYgKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykpIHtcbiAgdmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG4gIHZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbiAgdmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbiAgdmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiAgdmFyICR0eXBlZCA9IHJlcXVpcmUoJy4vX3R5cGVkJyk7XG4gIHZhciAkYnVmZmVyID0gcmVxdWlyZSgnLi9fdHlwZWQtYnVmZmVyJyk7XG4gIHZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbiAgdmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpO1xuICB2YXIgcHJvcGVydHlEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xuICB2YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbiAgdmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJyk7XG4gIHZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG4gIHZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuICB2YXIgdG9JbmRleCA9IHJlcXVpcmUoJy4vX3RvLWluZGV4Jyk7XG4gIHZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xuICB2YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbiAgdmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xuICB2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbiAgdmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4gIHZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xuICB2YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG4gIHZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG4gIHZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbiAgdmFyIGdPUE4gPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmY7XG4gIHZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuICB2YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG4gIHZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbiAgdmFyIGNyZWF0ZUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpO1xuICB2YXIgY3JlYXRlQXJyYXlJbmNsdWRlcyA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJyk7XG4gIHZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG4gIHZhciBBcnJheUl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG4gIHZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbiAgdmFyICRpdGVyRGV0ZWN0ID0gcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKTtcbiAgdmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuL19zZXQtc3BlY2llcycpO1xuICB2YXIgYXJyYXlGaWxsID0gcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpO1xuICB2YXIgYXJyYXlDb3B5V2l0aGluID0gcmVxdWlyZSgnLi9fYXJyYXktY29weS13aXRoaW4nKTtcbiAgdmFyICREUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xuICB2YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xuICB2YXIgZFAgPSAkRFAuZjtcbiAgdmFyIGdPUEQgPSAkR09QRC5mO1xuICB2YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xuICB2YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbiAgdmFyIFVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheTtcbiAgdmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG4gIHZhciBTSEFSRURfQlVGRkVSID0gJ1NoYXJlZCcgKyBBUlJBWV9CVUZGRVI7XG4gIHZhciBCWVRFU19QRVJfRUxFTUVOVCA9ICdCWVRFU19QRVJfRUxFTUVOVCc7XG4gIHZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbiAgdmFyIEFycmF5UHJvdG8gPSBBcnJheVtQUk9UT1RZUEVdO1xuICB2YXIgJEFycmF5QnVmZmVyID0gJGJ1ZmZlci5BcnJheUJ1ZmZlcjtcbiAgdmFyICREYXRhVmlldyA9ICRidWZmZXIuRGF0YVZpZXc7XG4gIHZhciBhcnJheUZvckVhY2ggPSBjcmVhdGVBcnJheU1ldGhvZCgwKTtcbiAgdmFyIGFycmF5RmlsdGVyID0gY3JlYXRlQXJyYXlNZXRob2QoMik7XG4gIHZhciBhcnJheVNvbWUgPSBjcmVhdGVBcnJheU1ldGhvZCgzKTtcbiAgdmFyIGFycmF5RXZlcnkgPSBjcmVhdGVBcnJheU1ldGhvZCg0KTtcbiAgdmFyIGFycmF5RmluZCA9IGNyZWF0ZUFycmF5TWV0aG9kKDUpO1xuICB2YXIgYXJyYXlGaW5kSW5kZXggPSBjcmVhdGVBcnJheU1ldGhvZCg2KTtcbiAgdmFyIGFycmF5SW5jbHVkZXMgPSBjcmVhdGVBcnJheUluY2x1ZGVzKHRydWUpO1xuICB2YXIgYXJyYXlJbmRleE9mID0gY3JlYXRlQXJyYXlJbmNsdWRlcyhmYWxzZSk7XG4gIHZhciBhcnJheVZhbHVlcyA9IEFycmF5SXRlcmF0b3JzLnZhbHVlcztcbiAgdmFyIGFycmF5S2V5cyA9IEFycmF5SXRlcmF0b3JzLmtleXM7XG4gIHZhciBhcnJheUVudHJpZXMgPSBBcnJheUl0ZXJhdG9ycy5lbnRyaWVzO1xuICB2YXIgYXJyYXlMYXN0SW5kZXhPZiA9IEFycmF5UHJvdG8ubGFzdEluZGV4T2Y7XG4gIHZhciBhcnJheVJlZHVjZSA9IEFycmF5UHJvdG8ucmVkdWNlO1xuICB2YXIgYXJyYXlSZWR1Y2VSaWdodCA9IEFycmF5UHJvdG8ucmVkdWNlUmlnaHQ7XG4gIHZhciBhcnJheUpvaW4gPSBBcnJheVByb3RvLmpvaW47XG4gIHZhciBhcnJheVNvcnQgPSBBcnJheVByb3RvLnNvcnQ7XG4gIHZhciBhcnJheVNsaWNlID0gQXJyYXlQcm90by5zbGljZTtcbiAgdmFyIGFycmF5VG9TdHJpbmcgPSBBcnJheVByb3RvLnRvU3RyaW5nO1xuICB2YXIgYXJyYXlUb0xvY2FsZVN0cmluZyA9IEFycmF5UHJvdG8udG9Mb2NhbGVTdHJpbmc7XG4gIHZhciBJVEVSQVRPUiA9IHdrcygnaXRlcmF0b3InKTtcbiAgdmFyIFRBRyA9IHdrcygndG9TdHJpbmdUYWcnKTtcbiAgdmFyIFRZUEVEX0NPTlNUUlVDVE9SID0gdWlkKCd0eXBlZF9jb25zdHJ1Y3RvcicpO1xuICB2YXIgREVGX0NPTlNUUlVDVE9SID0gdWlkKCdkZWZfY29uc3RydWN0b3InKTtcbiAgdmFyIEFMTF9DT05TVFJVQ1RPUlMgPSAkdHlwZWQuQ09OU1RSO1xuICB2YXIgVFlQRURfQVJSQVkgPSAkdHlwZWQuVFlQRUQ7XG4gIHZhciBWSUVXID0gJHR5cGVkLlZJRVc7XG4gIHZhciBXUk9OR19MRU5HVEggPSAnV3JvbmcgbGVuZ3RoISc7XG5cbiAgdmFyICRtYXAgPSBjcmVhdGVBcnJheU1ldGhvZCgxLCBmdW5jdGlvbiAoTywgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGFsbG9jYXRlKHNwZWNpZXNDb25zdHJ1Y3RvcihPLCBPW0RFRl9DT05TVFJVQ1RPUl0pLCBsZW5ndGgpO1xuICB9KTtcblxuICB2YXIgTElUVExFX0VORElBTiA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkobmV3IFVpbnQxNkFycmF5KFsxXSkuYnVmZmVyKVswXSA9PT0gMTtcbiAgfSk7XG5cbiAgdmFyIEZPUkNFRF9TRVQgPSAhIVVpbnQ4QXJyYXkgJiYgISFVaW50OEFycmF5W1BST1RPVFlQRV0uc2V0ICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgVWludDhBcnJheSgxKS5zZXQoe30pO1xuICB9KTtcblxuICB2YXIgdG9PZmZzZXQgPSBmdW5jdGlvbiAoaXQsIEJZVEVTKSB7XG4gICAgdmFyIG9mZnNldCA9IHRvSW50ZWdlcihpdCk7XG4gICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICUgQllURVMpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIG9mZnNldCEnKTtcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9O1xuXG4gIHZhciB2YWxpZGF0ZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIGlmIChpc09iamVjdChpdCkgJiYgVFlQRURfQVJSQVkgaW4gaXQpIHJldHVybiBpdDtcbiAgICB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIHR5cGVkIGFycmF5IScpO1xuICB9O1xuXG4gIHZhciBhbGxvY2F0ZSA9IGZ1bmN0aW9uIChDLCBsZW5ndGgpIHtcbiAgICBpZiAoIShpc09iamVjdChDKSAmJiBUWVBFRF9DT05TVFJVQ1RPUiBpbiBDKSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJdCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciEnKTtcbiAgICB9IHJldHVybiBuZXcgQyhsZW5ndGgpO1xuICB9O1xuXG4gIHZhciBzcGVjaWVzRnJvbUxpc3QgPSBmdW5jdGlvbiAoTywgbGlzdCkge1xuICAgIHJldHVybiBmcm9tTGlzdChzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSwgbGlzdCk7XG4gIH07XG5cbiAgdmFyIGZyb21MaXN0ID0gZnVuY3Rpb24gKEMsIGxpc3QpIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gYWxsb2NhdGUoQywgbGVuZ3RoKTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHJlc3VsdFtpbmRleF0gPSBsaXN0W2luZGV4KytdO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgdmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChpdCwga2V5LCBpbnRlcm5hbCkge1xuICAgIGRQKGl0LCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9kW2ludGVybmFsXTsgfSB9KTtcbiAgfTtcblxuICB2YXIgJGZyb20gPSBmdW5jdGlvbiBmcm9tKHNvdXJjZSAvKiAsIG1hcGZuLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChzb3VyY2UpO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbWFwZm4gPSBhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgaSwgbGVuZ3RoLCB2YWx1ZXMsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG4gICAgaWYgKGl0ZXJGbiAhPSB1bmRlZmluZWQgJiYgIWlzQXJyYXlJdGVyKGl0ZXJGbikpIHtcbiAgICAgIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgdmFsdWVzID0gW10sIGkgPSAwOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGkrKykge1xuICAgICAgICB2YWx1ZXMucHVzaChzdGVwLnZhbHVlKTtcbiAgICAgIH0gTyA9IHZhbHVlcztcbiAgICB9XG4gICAgaWYgKG1hcHBpbmcgJiYgYUxlbiA+IDIpIG1hcGZuID0gY3R4KG1hcGZuLCBhcmd1bWVudHNbMl0sIDIpO1xuICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKSwgcmVzdWx0ID0gYWxsb2NhdGUodGhpcywgbGVuZ3RoKTsgbGVuZ3RoID4gaTsgaSsrKSB7XG4gICAgICByZXN1bHRbaV0gPSBtYXBwaW5nID8gbWFwZm4oT1tpXSwgaSkgOiBPW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHZhciAkb2YgPSBmdW5jdGlvbiBvZigvKiAuLi5pdGVtcyAqLykge1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIHJlc3VsdCA9IGFsbG9jYXRlKHRoaXMsIGxlbmd0aCk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4KytdO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gaU9TIFNhZmFyaSA2LnggZmFpbHMgaGVyZVxuICB2YXIgVE9fTE9DQUxFX0JVRyA9ICEhVWludDhBcnJheSAmJiBmYWlscyhmdW5jdGlvbiAoKSB7IGFycmF5VG9Mb2NhbGVTdHJpbmcuY2FsbChuZXcgVWludDhBcnJheSgxKSk7IH0pO1xuXG4gIHZhciAkdG9Mb2NhbGVTdHJpbmcgPSBmdW5jdGlvbiB0b0xvY2FsZVN0cmluZygpIHtcbiAgICByZXR1cm4gYXJyYXlUb0xvY2FsZVN0cmluZy5hcHBseShUT19MT0NBTEVfQlVHID8gYXJyYXlTbGljZS5jYWxsKHZhbGlkYXRlKHRoaXMpKSA6IHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICB9O1xuXG4gIHZhciBwcm90byA9IHtcbiAgICBjb3B5V2l0aGluOiBmdW5jdGlvbiBjb3B5V2l0aGluKHRhcmdldCwgc3RhcnQgLyogLCBlbmQgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUNvcHlXaXRoaW4uY2FsbCh2YWxpZGF0ZSh0aGlzKSwgdGFyZ2V0LCBzdGFydCwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlFdmVyeSh2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZmlsbDogZnVuY3Rpb24gZmlsbCh2YWx1ZSAvKiAsIHN0YXJ0LCBlbmQgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5RmlsbC5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gc3BlY2llc0Zyb21MaXN0KHRoaXMsIGFycmF5RmlsdGVyKHZhbGlkYXRlKHRoaXMpLCBjYWxsYmFja2ZuLFxuICAgICAgICBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCkpO1xuICAgIH0sXG4gICAgZmluZDogZnVuY3Rpb24gZmluZChwcmVkaWNhdGUgLyogLCB0aGlzQXJnICovKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaW5kKHZhbGlkYXRlKHRoaXMpLCBwcmVkaWNhdGUsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGZpbmRJbmRleDogZnVuY3Rpb24gZmluZEluZGV4KHByZWRpY2F0ZSAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUZpbmRJbmRleCh2YWxpZGF0ZSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgICBhcnJheUZvckVhY2godmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGluZGV4T2Y6IGZ1bmN0aW9uIGluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCAqLykge1xuICAgICAgcmV0dXJuIGFycmF5SW5kZXhPZih2YWxpZGF0ZSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHtcbiAgICAgIHJldHVybiBhcnJheUluY2x1ZGVzKHZhbGlkYXRlKHRoaXMpLCBzZWFyY2hFbGVtZW50LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBqb2luOiBmdW5jdGlvbiBqb2luKHNlcGFyYXRvcikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlKb2luLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgbGFzdEluZGV4T2Y6IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyogLCBmcm9tSW5kZXggKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5TGFzdEluZGV4T2YuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBtYXA6IGZ1bmN0aW9uIG1hcChtYXBmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICAgIHJldHVybiAkbWFwKHZhbGlkYXRlKHRoaXMpLCBtYXBmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2UuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZWR1Y2VSaWdodDogZnVuY3Rpb24gcmVkdWNlUmlnaHQoY2FsbGJhY2tmbiAvKiAsIGluaXRpYWxWYWx1ZSAqLykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2VSaWdodC5hcHBseSh2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIHJldmVyc2U6IGZ1bmN0aW9uIHJldmVyc2UoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICB2YXIgbGVuZ3RoID0gdmFsaWRhdGUodGhhdCkubGVuZ3RoO1xuICAgICAgdmFyIG1pZGRsZSA9IE1hdGguZmxvb3IobGVuZ3RoIC8gMik7XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHZhbHVlO1xuICAgICAgd2hpbGUgKGluZGV4IDwgbWlkZGxlKSB7XG4gICAgICAgIHZhbHVlID0gdGhhdFtpbmRleF07XG4gICAgICAgIHRoYXRbaW5kZXgrK10gPSB0aGF0Wy0tbGVuZ3RoXTtcbiAgICAgICAgdGhhdFtsZW5ndGhdID0gdmFsdWU7XG4gICAgICB9IHJldHVybiB0aGF0O1xuICAgIH0sXG4gICAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgICAgcmV0dXJuIGFycmF5U29tZSh2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgICAgIHJldHVybiBhcnJheVNvcnQuY2FsbCh2YWxpZGF0ZSh0aGlzKSwgY29tcGFyZWZuKTtcbiAgICB9LFxuICAgIHN1YmFycmF5OiBmdW5jdGlvbiBzdWJhcnJheShiZWdpbiwgZW5kKSB7XG4gICAgICB2YXIgTyA9IHZhbGlkYXRlKHRoaXMpO1xuICAgICAgdmFyIGxlbmd0aCA9IE8ubGVuZ3RoO1xuICAgICAgdmFyICRiZWdpbiA9IHRvQWJzb2x1dGVJbmRleChiZWdpbiwgbGVuZ3RoKTtcbiAgICAgIHJldHVybiBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihPLCBPW0RFRl9DT05TVFJVQ1RPUl0pKShcbiAgICAgICAgTy5idWZmZXIsXG4gICAgICAgIE8uYnl0ZU9mZnNldCArICRiZWdpbiAqIE8uQllURVNfUEVSX0VMRU1FTlQsXG4gICAgICAgIHRvTGVuZ3RoKChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbmd0aCkpIC0gJGJlZ2luKVxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyICRzbGljZSA9IGZ1bmN0aW9uIHNsaWNlKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gc3BlY2llc0Zyb21MaXN0KHRoaXMsIGFycmF5U2xpY2UuY2FsbCh2YWxpZGF0ZSh0aGlzKSwgc3RhcnQsIGVuZCkpO1xuICB9O1xuXG4gIHZhciAkc2V0ID0gZnVuY3Rpb24gc2V0KGFycmF5TGlrZSAvKiAsIG9mZnNldCAqLykge1xuICAgIHZhbGlkYXRlKHRoaXMpO1xuICAgIHZhciBvZmZzZXQgPSB0b09mZnNldChhcmd1bWVudHNbMV0sIDEpO1xuICAgIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICB2YXIgc3JjID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgoc3JjLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBpZiAobGVuICsgb2Zmc2V0ID4gbGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgd2hpbGUgKGluZGV4IDwgbGVuKSB0aGlzW29mZnNldCArIGluZGV4XSA9IHNyY1tpbmRleCsrXTtcbiAgfTtcblxuICB2YXIgJGl0ZXJhdG9ycyA9IHtcbiAgICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKCkge1xuICAgICAgcmV0dXJuIGFycmF5RW50cmllcy5jYWxsKHZhbGlkYXRlKHRoaXMpKTtcbiAgICB9LFxuICAgIGtleXM6IGZ1bmN0aW9uIGtleXMoKSB7XG4gICAgICByZXR1cm4gYXJyYXlLZXlzLmNhbGwodmFsaWRhdGUodGhpcykpO1xuICAgIH0sXG4gICAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoKSB7XG4gICAgICByZXR1cm4gYXJyYXlWYWx1ZXMuY2FsbCh2YWxpZGF0ZSh0aGlzKSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpc1RBSW5kZXggPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICByZXR1cm4gaXNPYmplY3QodGFyZ2V0KVxuICAgICAgJiYgdGFyZ2V0W1RZUEVEX0FSUkFZXVxuICAgICAgJiYgdHlwZW9mIGtleSAhPSAnc3ltYm9sJ1xuICAgICAgJiYga2V5IGluIHRhcmdldFxuICAgICAgJiYgU3RyaW5nKCtrZXkpID09IFN0cmluZyhrZXkpO1xuICB9O1xuICB2YXIgJGdldERlc2MgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIHtcbiAgICByZXR1cm4gaXNUQUluZGV4KHRhcmdldCwga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSlcbiAgICAgID8gcHJvcGVydHlEZXNjKDIsIHRhcmdldFtrZXldKVxuICAgICAgOiBnT1BEKHRhcmdldCwga2V5KTtcbiAgfTtcbiAgdmFyICRzZXREZXNjID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICBpZiAoaXNUQUluZGV4KHRhcmdldCwga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSlcbiAgICAgICYmIGlzT2JqZWN0KGRlc2MpXG4gICAgICAmJiBoYXMoZGVzYywgJ3ZhbHVlJylcbiAgICAgICYmICFoYXMoZGVzYywgJ2dldCcpXG4gICAgICAmJiAhaGFzKGRlc2MsICdzZXQnKVxuICAgICAgLy8gVE9ETzogYWRkIHZhbGlkYXRpb24gZGVzY3JpcHRvciB3L28gY2FsbGluZyBhY2Nlc3NvcnNcbiAgICAgICYmICFkZXNjLmNvbmZpZ3VyYWJsZVxuICAgICAgJiYgKCFoYXMoZGVzYywgJ3dyaXRhYmxlJykgfHwgZGVzYy53cml0YWJsZSlcbiAgICAgICYmICghaGFzKGRlc2MsICdlbnVtZXJhYmxlJykgfHwgZGVzYy5lbnVtZXJhYmxlKVxuICAgICkge1xuICAgICAgdGFyZ2V0W2tleV0gPSBkZXNjLnZhbHVlO1xuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9IHJldHVybiBkUCh0YXJnZXQsIGtleSwgZGVzYyk7XG4gIH07XG5cbiAgaWYgKCFBTExfQ09OU1RSVUNUT1JTKSB7XG4gICAgJEdPUEQuZiA9ICRnZXREZXNjO1xuICAgICREUC5mID0gJHNldERlc2M7XG4gIH1cblxuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFBTExfQ09OU1RSVUNUT1JTLCAnT2JqZWN0Jywge1xuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldERlc2MsXG4gICAgZGVmaW5lUHJvcGVydHk6ICRzZXREZXNjXG4gIH0pO1xuXG4gIGlmIChmYWlscyhmdW5jdGlvbiAoKSB7IGFycmF5VG9TdHJpbmcuY2FsbCh7fSk7IH0pKSB7XG4gICAgYXJyYXlUb1N0cmluZyA9IGFycmF5VG9Mb2NhbGVTdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBhcnJheUpvaW4uY2FsbCh0aGlzKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyICRUeXBlZEFycmF5UHJvdG90eXBlJCA9IHJlZGVmaW5lQWxsKHt9LCBwcm90byk7XG4gIHJlZGVmaW5lQWxsKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJGl0ZXJhdG9ycyk7XG4gIGhpZGUoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCBJVEVSQVRPUiwgJGl0ZXJhdG9ycy52YWx1ZXMpO1xuICByZWRlZmluZUFsbCgkVHlwZWRBcnJheVByb3RvdHlwZSQsIHtcbiAgICBzbGljZTogJHNsaWNlLFxuICAgIHNldDogJHNldCxcbiAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24gKCkgeyAvKiBub29wICovIH0sXG4gICAgdG9TdHJpbmc6IGFycmF5VG9TdHJpbmcsXG4gICAgdG9Mb2NhbGVTdHJpbmc6ICR0b0xvY2FsZVN0cmluZ1xuICB9KTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2J1ZmZlcicsICdiJyk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdieXRlT2Zmc2V0JywgJ28nKTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2J5dGVMZW5ndGgnLCAnbCcpO1xuICBhZGRHZXR0ZXIoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAnbGVuZ3RoJywgJ2UnKTtcbiAgZFAoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCBUQUcsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXNbVFlQRURfQVJSQVldOyB9XG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50c1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIEJZVEVTLCB3cmFwcGVyLCBDTEFNUEVEKSB7XG4gICAgQ0xBTVBFRCA9ICEhQ0xBTVBFRDtcbiAgICB2YXIgTkFNRSA9IEtFWSArIChDTEFNUEVEID8gJ0NsYW1wZWQnIDogJycpICsgJ0FycmF5JztcbiAgICB2YXIgR0VUVEVSID0gJ2dldCcgKyBLRVk7XG4gICAgdmFyIFNFVFRFUiA9ICdzZXQnICsgS0VZO1xuICAgIHZhciBUeXBlZEFycmF5ID0gZ2xvYmFsW05BTUVdO1xuICAgIHZhciBCYXNlID0gVHlwZWRBcnJheSB8fCB7fTtcbiAgICB2YXIgVEFDID0gVHlwZWRBcnJheSAmJiBnZXRQcm90b3R5cGVPZihUeXBlZEFycmF5KTtcbiAgICB2YXIgRk9SQ0VEID0gIVR5cGVkQXJyYXkgfHwgISR0eXBlZC5BQlY7XG4gICAgdmFyIE8gPSB7fTtcbiAgICB2YXIgVHlwZWRBcnJheVByb3RvdHlwZSA9IFR5cGVkQXJyYXkgJiYgVHlwZWRBcnJheVtQUk9UT1RZUEVdO1xuICAgIHZhciBnZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgpIHtcbiAgICAgIHZhciBkYXRhID0gdGhhdC5fZDtcbiAgICAgIHJldHVybiBkYXRhLnZbR0VUVEVSXShpbmRleCAqIEJZVEVTICsgZGF0YS5vLCBMSVRUTEVfRU5ESUFOKTtcbiAgICB9O1xuICAgIHZhciBzZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgsIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoYXQuX2Q7XG4gICAgICBpZiAoQ0xBTVBFRCkgdmFsdWUgPSAodmFsdWUgPSBNYXRoLnJvdW5kKHZhbHVlKSkgPCAwID8gMCA6IHZhbHVlID4gMHhmZiA/IDB4ZmYgOiB2YWx1ZSAmIDB4ZmY7XG4gICAgICBkYXRhLnZbU0VUVEVSXShpbmRleCAqIEJZVEVTICsgZGF0YS5vLCB2YWx1ZSwgTElUVExFX0VORElBTik7XG4gICAgfTtcbiAgICB2YXIgYWRkRWxlbWVudCA9IGZ1bmN0aW9uICh0aGF0LCBpbmRleCkge1xuICAgICAgZFAodGhhdCwgaW5kZXgsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGdldHRlcih0aGlzLCBpbmRleCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHNldHRlcih0aGlzLCBpbmRleCwgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIHtcbiAgICAgIFR5cGVkQXJyYXkgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBkYXRhLCAkb2Zmc2V0LCAkbGVuZ3RoKSB7XG4gICAgICAgIGFuSW5zdGFuY2UodGhhdCwgVHlwZWRBcnJheSwgTkFNRSwgJ19kJyk7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHZhciBvZmZzZXQgPSAwO1xuICAgICAgICB2YXIgYnVmZmVyLCBieXRlTGVuZ3RoLCBsZW5ndGgsIGtsYXNzO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgICAgbGVuZ3RoID0gdG9JbmRleChkYXRhKTtcbiAgICAgICAgICBieXRlTGVuZ3RoID0gbGVuZ3RoICogQllURVM7XG4gICAgICAgICAgYnVmZmVyID0gbmV3ICRBcnJheUJ1ZmZlcihieXRlTGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgJEFycmF5QnVmZmVyIHx8IChrbGFzcyA9IGNsYXNzb2YoZGF0YSkpID09IEFSUkFZX0JVRkZFUiB8fCBrbGFzcyA9PSBTSEFSRURfQlVGRkVSKSB7XG4gICAgICAgICAgYnVmZmVyID0gZGF0YTtcbiAgICAgICAgICBvZmZzZXQgPSB0b09mZnNldCgkb2Zmc2V0LCBCWVRFUyk7XG4gICAgICAgICAgdmFyICRsZW4gPSBkYXRhLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgaWYgKCRsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCRsZW4gJSBCWVRFUykgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9ICRsZW4gLSBvZmZzZXQ7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCA8IDApIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9IHRvTGVuZ3RoKCRsZW5ndGgpICogQllURVM7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCArIG9mZnNldCA+ICRsZW4pIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGVuZ3RoID0gYnl0ZUxlbmd0aCAvIEJZVEVTO1xuICAgICAgICB9IGVsc2UgaWYgKFRZUEVEX0FSUkFZIGluIGRhdGEpIHtcbiAgICAgICAgICByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICRmcm9tLmNhbGwoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaGlkZSh0aGF0LCAnX2QnLCB7XG4gICAgICAgICAgYjogYnVmZmVyLFxuICAgICAgICAgIG86IG9mZnNldCxcbiAgICAgICAgICBsOiBieXRlTGVuZ3RoLFxuICAgICAgICAgIGU6IGxlbmd0aCxcbiAgICAgICAgICB2OiBuZXcgJERhdGFWaWV3KGJ1ZmZlcilcbiAgICAgICAgfSk7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgYWRkRWxlbWVudCh0aGF0LCBpbmRleCsrKTtcbiAgICAgIH0pO1xuICAgICAgVHlwZWRBcnJheVByb3RvdHlwZSA9IFR5cGVkQXJyYXlbUFJPVE9UWVBFXSA9IGNyZWF0ZSgkVHlwZWRBcnJheVByb3RvdHlwZSQpO1xuICAgICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCAnY29uc3RydWN0b3InLCBUeXBlZEFycmF5KTtcbiAgICB9IGVsc2UgaWYgKCFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBUeXBlZEFycmF5KDEpO1xuICAgIH0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgICBuZXcgVHlwZWRBcnJheSgtMSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgfSkgfHwgISRpdGVyRGV0ZWN0KGZ1bmN0aW9uIChpdGVyKSB7XG4gICAgICBuZXcgVHlwZWRBcnJheSgpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgICAgbmV3IFR5cGVkQXJyYXkobnVsbCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgICBuZXcgVHlwZWRBcnJheSgxLjUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgICAgbmV3IFR5cGVkQXJyYXkoaXRlcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgfSwgdHJ1ZSkpIHtcbiAgICAgIFR5cGVkQXJyYXkgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBkYXRhLCAkb2Zmc2V0LCAkbGVuZ3RoKSB7XG4gICAgICAgIGFuSW5zdGFuY2UodGhhdCwgVHlwZWRBcnJheSwgTkFNRSk7XG4gICAgICAgIHZhciBrbGFzcztcbiAgICAgICAgLy8gYHdzYCBtb2R1bGUgYnVnLCB0ZW1wb3JhcmlseSByZW1vdmUgdmFsaWRhdGlvbiBsZW5ndGggZm9yIFVpbnQ4QXJyYXlcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvcHVsbC82NDVcbiAgICAgICAgaWYgKCFpc09iamVjdChkYXRhKSkgcmV0dXJuIG5ldyBCYXNlKHRvSW5kZXgoZGF0YSkpO1xuICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mICRBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGRhdGEpKSA9PSBBUlJBWV9CVUZGRVIgfHwga2xhc3MgPT0gU0hBUkVEX0JVRkZFUikge1xuICAgICAgICAgIHJldHVybiAkbGVuZ3RoICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gbmV3IEJhc2UoZGF0YSwgdG9PZmZzZXQoJG9mZnNldCwgQllURVMpLCAkbGVuZ3RoKVxuICAgICAgICAgICAgOiAkb2Zmc2V0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyBuZXcgQmFzZShkYXRhLCB0b09mZnNldCgkb2Zmc2V0LCBCWVRFUykpXG4gICAgICAgICAgICAgIDogbmV3IEJhc2UoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFRZUEVEX0FSUkFZIGluIGRhdGEpIHJldHVybiBmcm9tTGlzdChUeXBlZEFycmF5LCBkYXRhKTtcbiAgICAgICAgcmV0dXJuICRmcm9tLmNhbGwoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIGFycmF5Rm9yRWFjaChUQUMgIT09IEZ1bmN0aW9uLnByb3RvdHlwZSA/IGdPUE4oQmFzZSkuY29uY2F0KGdPUE4oVEFDKSkgOiBnT1BOKEJhc2UpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmICghKGtleSBpbiBUeXBlZEFycmF5KSkgaGlkZShUeXBlZEFycmF5LCBrZXksIEJhc2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICAgIFR5cGVkQXJyYXlbUFJPVE9UWVBFXSA9IFR5cGVkQXJyYXlQcm90b3R5cGU7XG4gICAgICBpZiAoIUxJQlJBUlkpIFR5cGVkQXJyYXlQcm90b3R5cGUuY29uc3RydWN0b3IgPSBUeXBlZEFycmF5O1xuICAgIH1cbiAgICB2YXIgJG5hdGl2ZUl0ZXJhdG9yID0gVHlwZWRBcnJheVByb3RvdHlwZVtJVEVSQVRPUl07XG4gICAgdmFyIENPUlJFQ1RfSVRFUl9OQU1FID0gISEkbmF0aXZlSXRlcmF0b3JcbiAgICAgICYmICgkbmF0aXZlSXRlcmF0b3IubmFtZSA9PSAndmFsdWVzJyB8fCAkbmF0aXZlSXRlcmF0b3IubmFtZSA9PSB1bmRlZmluZWQpO1xuICAgIHZhciAkaXRlcmF0b3IgPSAkaXRlcmF0b3JzLnZhbHVlcztcbiAgICBoaWRlKFR5cGVkQXJyYXksIFRZUEVEX0NPTlNUUlVDVE9SLCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIFRZUEVEX0FSUkFZLCBOQU1FKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIFZJRVcsIHRydWUpO1xuICAgIGhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgREVGX0NPTlNUUlVDVE9SLCBUeXBlZEFycmF5KTtcblxuICAgIGlmIChDTEFNUEVEID8gbmV3IFR5cGVkQXJyYXkoMSlbVEFHXSAhPSBOQU1FIDogIShUQUcgaW4gVHlwZWRBcnJheVByb3RvdHlwZSkpIHtcbiAgICAgIGRQKFR5cGVkQXJyYXlQcm90b3R5cGUsIFRBRywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIE5BTUU7IH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIE9bTkFNRV0gPSBUeXBlZEFycmF5O1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoVHlwZWRBcnJheSAhPSBCYXNlKSwgTyk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUywgTkFNRSwge1xuICAgICAgQllURVNfUEVSX0VMRU1FTlQ6IEJZVEVTXG4gICAgfSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgQmFzZS5vZi5jYWxsKFR5cGVkQXJyYXksIDEpOyB9KSwgTkFNRSwge1xuICAgICAgZnJvbTogJGZyb20sXG4gICAgICBvZjogJG9mXG4gICAgfSk7XG5cbiAgICBpZiAoIShCWVRFU19QRVJfRUxFTUVOVCBpbiBUeXBlZEFycmF5UHJvdG90eXBlKSkgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBCWVRFU19QRVJfRUxFTUVOVCwgQllURVMpO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAsIE5BTUUsIHByb3RvKTtcblxuICAgIHNldFNwZWNpZXMoTkFNRSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIEZPUkNFRF9TRVQsIE5BTUUsIHsgc2V0OiAkc2V0IH0pO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhQ09SUkVDVF9JVEVSX05BTUUsIE5BTUUsICRpdGVyYXRvcnMpO1xuXG4gICAgaWYgKCFMSUJSQVJZICYmIFR5cGVkQXJyYXlQcm90b3R5cGUudG9TdHJpbmcgIT0gYXJyYXlUb1N0cmluZykgVHlwZWRBcnJheVByb3RvdHlwZS50b1N0cmluZyA9IGFycmF5VG9TdHJpbmc7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIG5ldyBUeXBlZEFycmF5KDEpLnNsaWNlKCk7XG4gICAgfSksIE5BTUUsIHsgc2xpY2U6ICRzbGljZSB9KTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBbMSwgMl0udG9Mb2NhbGVTdHJpbmcoKSAhPSBuZXcgVHlwZWRBcnJheShbMSwgMl0pLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgfSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIFR5cGVkQXJyYXlQcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcuY2FsbChbMSwgMl0pO1xuICAgIH0pKSwgTkFNRSwgeyB0b0xvY2FsZVN0cmluZzogJHRvTG9jYWxlU3RyaW5nIH0pO1xuXG4gICAgSXRlcmF0b3JzW05BTUVdID0gQ09SUkVDVF9JVEVSX05BTUUgPyAkbmF0aXZlSXRlcmF0b3IgOiAkaXRlcmF0b3I7XG4gICAgaWYgKCFMSUJSQVJZICYmICFDT1JSRUNUX0lURVJfTkFNRSkgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBJVEVSQVRPUiwgJGl0ZXJhdG9yKTtcbiAgfTtcbn0gZWxzZSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkdHlwZWQgPSByZXF1aXJlKCcuL190eXBlZCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9JbmRleCA9IHJlcXVpcmUoJy4vX3RvLWluZGV4Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgYXJyYXlGaWxsID0gcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xudmFyIERBVEFfVklFVyA9ICdEYXRhVmlldyc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgV1JPTkdfTEVOR1RIID0gJ1dyb25nIGxlbmd0aCEnO1xudmFyIFdST05HX0lOREVYID0gJ1dyb25nIGluZGV4ISc7XG52YXIgJEFycmF5QnVmZmVyID0gZ2xvYmFsW0FSUkFZX0JVRkZFUl07XG52YXIgJERhdGFWaWV3ID0gZ2xvYmFsW0RBVEFfVklFV107XG52YXIgTWF0aCA9IGdsb2JhbC5NYXRoO1xudmFyIFJhbmdlRXJyb3IgPSBnbG9iYWwuUmFuZ2VFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3ctcmVzdHJpY3RlZC1uYW1lc1xudmFyIEluZmluaXR5ID0gZ2xvYmFsLkluZmluaXR5O1xudmFyIEJhc2VCdWZmZXIgPSAkQXJyYXlCdWZmZXI7XG52YXIgYWJzID0gTWF0aC5hYnM7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGxvZyA9IE1hdGgubG9nO1xudmFyIExOMiA9IE1hdGguTE4yO1xudmFyIEJVRkZFUiA9ICdidWZmZXInO1xudmFyIEJZVEVfTEVOR1RIID0gJ2J5dGVMZW5ndGgnO1xudmFyIEJZVEVfT0ZGU0VUID0gJ2J5dGVPZmZzZXQnO1xudmFyICRCVUZGRVIgPSBERVNDUklQVE9SUyA/ICdfYicgOiBCVUZGRVI7XG52YXIgJExFTkdUSCA9IERFU0NSSVBUT1JTID8gJ19sJyA6IEJZVEVfTEVOR1RIO1xudmFyICRPRkZTRVQgPSBERVNDUklQVE9SUyA/ICdfbycgOiBCWVRFX09GRlNFVDtcblxuLy8gSUVFRTc1NCBjb252ZXJzaW9ucyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2llZWU3NTRcbmZ1bmN0aW9uIHBhY2tJRUVFNzU0KHZhbHVlLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShuQnl0ZXMpO1xuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDE7XG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMTtcbiAgdmFyIHJ0ID0gbUxlbiA9PT0gMjMgPyBwb3coMiwgLTI0KSAtIHBvdygyLCAtNzcpIDogMDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCB2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwID8gMSA6IDA7XG4gIHZhciBlLCBtLCBjO1xuICB2YWx1ZSA9IGFicyh2YWx1ZSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgaWYgKHZhbHVlICE9IHZhbHVlIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBtID0gdmFsdWUgIT0gdmFsdWUgPyAxIDogMDtcbiAgICBlID0gZU1heDtcbiAgfSBlbHNlIHtcbiAgICBlID0gZmxvb3IobG9nKHZhbHVlKSAvIExOMik7XG4gICAgaWYgKHZhbHVlICogKGMgPSBwb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLTtcbiAgICAgIGMgKj0gMjtcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogcG93KDIsIDEgLSBlQmlhcyk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrO1xuICAgICAgYyAvPSAyO1xuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwO1xuICAgICAgZSA9IGVNYXg7XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIHBvdygyLCBtTGVuKTtcbiAgICAgIGUgPSBlICsgZUJpYXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIHBvdygyLCBlQmlhcyAtIDEpICogcG93KDIsIG1MZW4pO1xuICAgICAgZSA9IDA7XG4gICAgfVxuICB9XG4gIGZvciAoOyBtTGVuID49IDg7IGJ1ZmZlcltpKytdID0gbSAmIDI1NSwgbSAvPSAyNTYsIG1MZW4gLT0gOCk7XG4gIGUgPSBlIDw8IG1MZW4gfCBtO1xuICBlTGVuICs9IG1MZW47XG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW2krK10gPSBlICYgMjU1LCBlIC89IDI1NiwgZUxlbiAtPSA4KTtcbiAgYnVmZmVyWy0taV0gfD0gcyAqIDEyODtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cbmZ1bmN0aW9uIHVucGFja0lFRUU3NTQoYnVmZmVyLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDE7XG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBuQml0cyA9IGVMZW4gLSA3O1xuICB2YXIgaSA9IG5CeXRlcyAtIDE7XG4gIHZhciBzID0gYnVmZmVyW2ktLV07XG4gIHZhciBlID0gcyAmIDEyNztcbiAgdmFyIG07XG4gIHMgPj49IDc7XG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW2ldLCBpLS0sIG5CaXRzIC09IDgpO1xuICBtID0gZSAmICgxIDw8IC1uQml0cykgLSAxO1xuICBlID4+PSAtbkJpdHM7XG4gIG5CaXRzICs9IG1MZW47XG4gIGZvciAoOyBuQml0cyA+IDA7IG0gPSBtICogMjU2ICsgYnVmZmVyW2ldLCBpLS0sIG5CaXRzIC09IDgpO1xuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXM7XG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogcyA/IC1JbmZpbml0eSA6IEluZmluaXR5O1xuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgcG93KDIsIG1MZW4pO1xuICAgIGUgPSBlIC0gZUJpYXM7XG4gIH0gcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBwb3coMiwgZSAtIG1MZW4pO1xufVxuXG5mdW5jdGlvbiB1bnBhY2tJMzIoYnl0ZXMpIHtcbiAgcmV0dXJuIGJ5dGVzWzNdIDw8IDI0IHwgYnl0ZXNbMl0gPDwgMTYgfCBieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF07XG59XG5mdW5jdGlvbiBwYWNrSTgoaXQpIHtcbiAgcmV0dXJuIFtpdCAmIDB4ZmZdO1xufVxuZnVuY3Rpb24gcGFja0kxNihpdCkge1xuICByZXR1cm4gW2l0ICYgMHhmZiwgaXQgPj4gOCAmIDB4ZmZdO1xufVxuZnVuY3Rpb24gcGFja0kzMihpdCkge1xuICByZXR1cm4gW2l0ICYgMHhmZiwgaXQgPj4gOCAmIDB4ZmYsIGl0ID4+IDE2ICYgMHhmZiwgaXQgPj4gMjQgJiAweGZmXTtcbn1cbmZ1bmN0aW9uIHBhY2tGNjQoaXQpIHtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KGl0LCA1MiwgOCk7XG59XG5mdW5jdGlvbiBwYWNrRjMyKGl0KSB7XG4gIHJldHVybiBwYWNrSUVFRTc1NChpdCwgMjMsIDQpO1xufVxuXG5mdW5jdGlvbiBhZGRHZXR0ZXIoQywga2V5LCBpbnRlcm5hbCkge1xuICBkUChDW1BST1RPVFlQRV0sIGtleSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXNbaW50ZXJuYWxdOyB9IH0pO1xufVxuXG5mdW5jdGlvbiBnZXQodmlldywgYnl0ZXMsIGluZGV4LCBpc0xpdHRsZUVuZGlhbikge1xuICB2YXIgbnVtSW5kZXggPSAraW5kZXg7XG4gIHZhciBpbnRJbmRleCA9IHRvSW5kZXgobnVtSW5kZXgpO1xuICBpZiAoaW50SW5kZXggKyBieXRlcyA+IHZpZXdbJExFTkdUSF0pIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfSU5ERVgpO1xuICB2YXIgc3RvcmUgPSB2aWV3WyRCVUZGRVJdLl9iO1xuICB2YXIgc3RhcnQgPSBpbnRJbmRleCArIHZpZXdbJE9GRlNFVF07XG4gIHZhciBwYWNrID0gc3RvcmUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgYnl0ZXMpO1xuICByZXR1cm4gaXNMaXR0bGVFbmRpYW4gPyBwYWNrIDogcGFjay5yZXZlcnNlKCk7XG59XG5mdW5jdGlvbiBzZXQodmlldywgYnl0ZXMsIGluZGV4LCBjb252ZXJzaW9uLCB2YWx1ZSwgaXNMaXR0bGVFbmRpYW4pIHtcbiAgdmFyIG51bUluZGV4ID0gK2luZGV4O1xuICB2YXIgaW50SW5kZXggPSB0b0luZGV4KG51bUluZGV4KTtcbiAgaWYgKGludEluZGV4ICsgYnl0ZXMgPiB2aWV3WyRMRU5HVEhdKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0lOREVYKTtcbiAgdmFyIHN0b3JlID0gdmlld1skQlVGRkVSXS5fYjtcbiAgdmFyIHN0YXJ0ID0gaW50SW5kZXggKyB2aWV3WyRPRkZTRVRdO1xuICB2YXIgcGFjayA9IGNvbnZlcnNpb24oK3ZhbHVlKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlczsgaSsrKSBzdG9yZVtzdGFydCArIGldID0gcGFja1tpc0xpdHRsZUVuZGlhbiA/IGkgOiBieXRlcyAtIGkgLSAxXTtcbn1cblxuaWYgKCEkdHlwZWQuQUJWKSB7XG4gICRBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIEFycmF5QnVmZmVyKGxlbmd0aCkge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJEFycmF5QnVmZmVyLCBBUlJBWV9CVUZGRVIpO1xuICAgIHZhciBieXRlTGVuZ3RoID0gdG9JbmRleChsZW5ndGgpO1xuICAgIHRoaXMuX2IgPSBhcnJheUZpbGwuY2FsbChuZXcgQXJyYXkoYnl0ZUxlbmd0aCksIDApO1xuICAgIHRoaXNbJExFTkdUSF0gPSBieXRlTGVuZ3RoO1xuICB9O1xuXG4gICREYXRhVmlldyA9IGZ1bmN0aW9uIERhdGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJERhdGFWaWV3LCBEQVRBX1ZJRVcpO1xuICAgIGFuSW5zdGFuY2UoYnVmZmVyLCAkQXJyYXlCdWZmZXIsIERBVEFfVklFVyk7XG4gICAgdmFyIGJ1ZmZlckxlbmd0aCA9IGJ1ZmZlclskTEVOR1RIXTtcbiAgICB2YXIgb2Zmc2V0ID0gdG9JbnRlZ2VyKGJ5dGVPZmZzZXQpO1xuICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+IGJ1ZmZlckxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcignV3Jvbmcgb2Zmc2V0IScpO1xuICAgIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID09PSB1bmRlZmluZWQgPyBidWZmZXJMZW5ndGggLSBvZmZzZXQgOiB0b0xlbmd0aChieXRlTGVuZ3RoKTtcbiAgICBpZiAob2Zmc2V0ICsgYnl0ZUxlbmd0aCA+IGJ1ZmZlckxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgIHRoaXNbJEJVRkZFUl0gPSBidWZmZXI7XG4gICAgdGhpc1skT0ZGU0VUXSA9IG9mZnNldDtcbiAgICB0aGlzWyRMRU5HVEhdID0gYnl0ZUxlbmd0aDtcbiAgfTtcblxuICBpZiAoREVTQ1JJUFRPUlMpIHtcbiAgICBhZGRHZXR0ZXIoJEFycmF5QnVmZmVyLCBCWVRFX0xFTkdUSCwgJ19sJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQlVGRkVSLCAnX2InKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCBCWVRFX0xFTkdUSCwgJ19sJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQllURV9PRkZTRVQsICdfbycpO1xuICB9XG5cbiAgcmVkZWZpbmVBbGwoJERhdGFWaWV3W1BST1RPVFlQRV0sIHtcbiAgICBnZXRJbnQ4OiBmdW5jdGlvbiBnZXRJbnQ4KGJ5dGVPZmZzZXQpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcywgMSwgYnl0ZU9mZnNldClbMF0gPDwgMjQgPj4gMjQ7XG4gICAgfSxcbiAgICBnZXRVaW50ODogZnVuY3Rpb24gZ2V0VWludDgoYnl0ZU9mZnNldCkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCAxLCBieXRlT2Zmc2V0KVswXTtcbiAgICB9LFxuICAgIGdldEludDE2OiBmdW5jdGlvbiBnZXRJbnQxNihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBnZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKTtcbiAgICAgIHJldHVybiAoYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdKSA8PCAxNiA+PiAxNjtcbiAgICB9LFxuICAgIGdldFVpbnQxNjogZnVuY3Rpb24gZ2V0VWludDE2KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pO1xuICAgICAgcmV0dXJuIGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXTtcbiAgICB9LFxuICAgIGdldEludDMyOiBmdW5jdGlvbiBnZXRJbnQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSTMyKGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pKTtcbiAgICB9LFxuICAgIGdldFVpbnQzMjogZnVuY3Rpb24gZ2V0VWludDMyKGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJMzIoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSkpID4+PiAwO1xuICAgIH0sXG4gICAgZ2V0RmxvYXQzMjogZnVuY3Rpb24gZ2V0RmxvYXQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSwgMjMsIDQpO1xuICAgIH0sXG4gICAgZ2V0RmxvYXQ2NDogZnVuY3Rpb24gZ2V0RmxvYXQ2NChieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcywgOCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSwgNTIsIDgpO1xuICAgIH0sXG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgc2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQsIHBhY2tJOCwgdmFsdWUpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICBzZXQodGhpcywgMSwgYnl0ZU9mZnNldCwgcGFja0k4LCB2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXRJbnQxNjogZnVuY3Rpb24gc2V0SW50MTYoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBwYWNrSTE2LCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldFVpbnQxNjogZnVuY3Rpb24gc2V0VWludDE2KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgcGFja0kxNiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRJbnQzMjogZnVuY3Rpb24gc2V0SW50MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHNldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBwYWNrSTMyLCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldFVpbnQzMjogZnVuY3Rpb24gc2V0VWludDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0kzMiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDMyOiBmdW5jdGlvbiBzZXRGbG9hdDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0YzMiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDY0OiBmdW5jdGlvbiBzZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgOCwgYnl0ZU9mZnNldCwgcGFja0Y2NCwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfVxuICB9KTtcbn0gZWxzZSB7XG4gIGlmICghZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgICRBcnJheUJ1ZmZlcigxKTtcbiAgfSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgJEFycmF5QnVmZmVyKC0xKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgfSkgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBuZXcgJEFycmF5QnVmZmVyKDEuNSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbmV3ICRBcnJheUJ1ZmZlcihOYU4pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIHJldHVybiAkQXJyYXlCdWZmZXIubmFtZSAhPSBBUlJBWV9CVUZGRVI7XG4gIH0pKSB7XG4gICAgJEFycmF5QnVmZmVyID0gZnVuY3Rpb24gQXJyYXlCdWZmZXIobGVuZ3RoKSB7XG4gICAgICBhbkluc3RhbmNlKHRoaXMsICRBcnJheUJ1ZmZlcik7XG4gICAgICByZXR1cm4gbmV3IEJhc2VCdWZmZXIodG9JbmRleChsZW5ndGgpKTtcbiAgICB9O1xuICAgIHZhciBBcnJheUJ1ZmZlclByb3RvID0gJEFycmF5QnVmZmVyW1BST1RPVFlQRV0gPSBCYXNlQnVmZmVyW1BST1RPVFlQRV07XG4gICAgZm9yICh2YXIga2V5cyA9IGdPUE4oQmFzZUJ1ZmZlciksIGogPSAwLCBrZXk7IGtleXMubGVuZ3RoID4gajspIHtcbiAgICAgIGlmICghKChrZXkgPSBrZXlzW2orK10pIGluICRBcnJheUJ1ZmZlcikpIGhpZGUoJEFycmF5QnVmZmVyLCBrZXksIEJhc2VCdWZmZXJba2V5XSk7XG4gICAgfVxuICAgIGlmICghTElCUkFSWSkgQXJyYXlCdWZmZXJQcm90by5jb25zdHJ1Y3RvciA9ICRBcnJheUJ1ZmZlcjtcbiAgfVxuICAvLyBpT1MgU2FmYXJpIDcueCBidWdcbiAgdmFyIHZpZXcgPSBuZXcgJERhdGFWaWV3KG5ldyAkQXJyYXlCdWZmZXIoMikpO1xuICB2YXIgJHNldEludDggPSAkRGF0YVZpZXdbUFJPVE9UWVBFXS5zZXRJbnQ4O1xuICB2aWV3LnNldEludDgoMCwgMjE0NzQ4MzY0OCk7XG4gIHZpZXcuc2V0SW50OCgxLCAyMTQ3NDgzNjQ5KTtcbiAgaWYgKHZpZXcuZ2V0SW50OCgwKSB8fCAhdmlldy5nZXRJbnQ4KDEpKSByZWRlZmluZUFsbCgkRGF0YVZpZXdbUFJPVE9UWVBFXSwge1xuICAgIHNldEludDg6IGZ1bmN0aW9uIHNldEludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgICRzZXRJbnQ4LmNhbGwodGhpcywgYnl0ZU9mZnNldCwgdmFsdWUgPDwgMjQgPj4gMjQpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICAkc2V0SW50OC5jYWxsKHRoaXMsIGJ5dGVPZmZzZXQsIHZhbHVlIDw8IDI0ID4+IDI0KTtcbiAgICB9XG4gIH0sIHRydWUpO1xufVxuc2V0VG9TdHJpbmdUYWcoJEFycmF5QnVmZmVyLCBBUlJBWV9CVUZGRVIpO1xuc2V0VG9TdHJpbmdUYWcoJERhdGFWaWV3LCBEQVRBX1ZJRVcpO1xuaGlkZSgkRGF0YVZpZXdbUFJPVE9UWVBFXSwgJHR5cGVkLlZJRVcsIHRydWUpO1xuZXhwb3J0c1tBUlJBWV9CVUZGRVJdID0gJEFycmF5QnVmZmVyO1xuZXhwb3J0c1tEQVRBX1ZJRVddID0gJERhdGFWaWV3O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgVFlQRUQgPSB1aWQoJ3R5cGVkX2FycmF5Jyk7XG52YXIgVklFVyA9IHVpZCgndmlldycpO1xudmFyIEFCViA9ICEhKGdsb2JhbC5BcnJheUJ1ZmZlciAmJiBnbG9iYWwuRGF0YVZpZXcpO1xudmFyIENPTlNUUiA9IEFCVjtcbnZhciBpID0gMDtcbnZhciBsID0gOTtcbnZhciBUeXBlZDtcblxudmFyIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnMgPSAoXG4gICdJbnQ4QXJyYXksVWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5LFVpbnQxNkFycmF5LEludDMyQXJyYXksVWludDMyQXJyYXksRmxvYXQzMkFycmF5LEZsb2F0NjRBcnJheSdcbikuc3BsaXQoJywnKTtcblxud2hpbGUgKGkgPCBsKSB7XG4gIGlmIChUeXBlZCA9IGdsb2JhbFtUeXBlZEFycmF5Q29uc3RydWN0b3JzW2krK11dKSB7XG4gICAgaGlkZShUeXBlZC5wcm90b3R5cGUsIFRZUEVELCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkLnByb3RvdHlwZSwgVklFVywgdHJ1ZSk7XG4gIH0gZWxzZSBDT05TVFIgPSBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEFCVjogQUJWLFxuICBDT05TVFI6IENPTlNUUixcbiAgVFlQRUQ6IFRZUEVELFxuICBWSUVXOiBWSUVXXG59O1xuIiwidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRZUEUpIHtcbiAgaWYgKCFpc09iamVjdChpdCkgfHwgaXQuX3QgIT09IFRZUEUpIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG4iLCJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcbiIsInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuIiwiLy8gMjIuMS4zLjMgQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4odGFyZ2V0LCBzdGFydCwgZW5kID0gdGhpcy5sZW5ndGgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5JywgeyBjb3B5V2l0aGluOiByZXF1aXJlKCcuL19hcnJheS1jb3B5LXdpdGhpbicpIH0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnY29weVdpdGhpbicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZXZlcnkgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoNCk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5ldmVyeSwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjUgLyAxNS40LjQuMTYgQXJyYXkucHJvdG90eXBlLmV2ZXJ5KGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZXZlcnkodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIvLyAyMi4xLjMuNiBBcnJheS5wcm90b3R5cGUuZmlsbCh2YWx1ZSwgc3RhcnQgPSAwLCBlbmQgPSB0aGlzLmxlbmd0aClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7IGZpbGw6IHJlcXVpcmUoJy4vX2FycmF5LWZpbGwnKSB9KTtcblxucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoJ2ZpbGwnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgyKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLmZpbHRlciwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjcgLyAxNS40LjQuMjAgQXJyYXkucHJvdG90eXBlLmZpbHRlcihjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZmlsdGVyKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjIuMS4zLjkgQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleChwcmVkaWNhdGUsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRmaW5kID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDYpO1xudmFyIEtFWSA9ICdmaW5kSW5kZXgnO1xudmFyIGZvcmNlZCA9IHRydWU7XG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYgKEtFWSBpbiBbXSkgQXJyYXkoMSlbS0VZXShmdW5jdGlvbiAoKSB7IGZvcmNlZCA9IGZhbHNlOyB9KTtcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZm9yY2VkLCAnQXJyYXknLCB7XG4gIGZpbmRJbmRleDogZnVuY3Rpb24gZmluZEluZGV4KGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKShLRVkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjIuMS4zLjggQXJyYXkucHJvdG90eXBlLmZpbmQocHJlZGljYXRlLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSg1KTtcbnZhciBLRVkgPSAnZmluZCc7XG52YXIgZm9yY2VkID0gdHJ1ZTtcbi8vIFNob3VsZG4ndCBza2lwIGhvbGVzXG5pZiAoS0VZIGluIFtdKSBBcnJheSgxKVtLRVldKGZ1bmN0aW9uICgpIHsgZm9yY2VkID0gZmFsc2U7IH0pO1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmb3JjZWQsICdBcnJheScsIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoS0VZKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGZvckVhY2ggPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMCk7XG52YXIgU1RSSUNUID0gcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLmZvckVhY2gsIHRydWUpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFTVFJJQ1QsICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjEwIC8gMTUuNC40LjE4IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJGZvckVhY2godGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7IEFycmF5LmZyb20oaXRlcik7IH0pLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMi4xIEFycmF5LmZyb20oYXJyYXlMaWtlLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgZnJvbTogZnVuY3Rpb24gZnJvbShhcnJheUxpa2UgLyogLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgICB2YXIgQyA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBtYXBmbiA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICAgIHZhciBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oTyk7XG4gICAgdmFyIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvcjtcbiAgICBpZiAobWFwcGluZykgbWFwZm4gPSBjdHgobWFwZm4sIGFMZW4gPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2VcbiAgICBpZiAoaXRlckZuICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXIoaXRlckZuKSkpIHtcbiAgICAgIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEMoKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgICAgZm9yIChyZXN1bHQgPSBuZXcgQyhsZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gbWFwZm4oT1tpbmRleF0sIGluZGV4KSA6IE9baW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpO1xudmFyICRuYXRpdmUgPSBbXS5pbmRleE9mO1xudmFyIE5FR0FUSVZFX1pFUk8gPSAhISRuYXRpdmUgJiYgMSAvIFsxXS5pbmRleE9mKDEsIC0wKSA8IDA7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKE5FR0FUSVZFX1pFUk8gfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKSgkbmF0aXZlKSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjExIC8gMTUuNC40LjE0IEFycmF5LnByb3RvdHlwZS5pbmRleE9mKHNlYXJjaEVsZW1lbnQgWywgZnJvbUluZGV4XSlcbiAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiBORUdBVElWRV9aRVJPXG4gICAgICAvLyBjb252ZXJ0IC0wIHRvICswXG4gICAgICA/ICRuYXRpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCAwXG4gICAgICA6ICRpbmRleE9mKHRoaXMsIHNlYXJjaEVsZW1lbnQsIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pO1xuIiwiLy8gMjIuMS4yLjIgLyAxNS40LjMuMiBBcnJheS5pc0FycmF5KGFyZylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnQXJyYXknLCB7IGlzQXJyYXk6IHJlcXVpcmUoJy4vX2lzLWFycmF5JykgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBraW5kID0gdGhpcy5faztcbiAgdmFyIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZiAoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpIHtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5qb2luKHNlcGFyYXRvcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIGFycmF5Sm9pbiA9IFtdLmpvaW47XG5cbi8vIGZhbGxiYWNrIGZvciBub3QgYXJyYXktbGlrZSBzdHJpbmdzXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChyZXF1aXJlKCcuL19pb2JqZWN0JykgIT0gT2JqZWN0IHx8ICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoYXJyYXlKb2luKSksICdBcnJheScsIHtcbiAgam9pbjogZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHtcbiAgICByZXR1cm4gYXJyYXlKb2luLmNhbGwodG9JT2JqZWN0KHRoaXMpLCBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCA/ICcsJyA6IHNlcGFyYXRvcik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgJG5hdGl2ZSA9IFtdLmxhc3RJbmRleE9mO1xudmFyIE5FR0FUSVZFX1pFUk8gPSAhISRuYXRpdmUgJiYgMSAvIFsxXS5sYXN0SW5kZXhPZigxLCAtMCkgPCAwO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChORUdBVElWRV9aRVJPIHx8ICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoJG5hdGl2ZSkpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xNCAvIDE1LjQuNC4xNSBBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudCBbLCBmcm9tSW5kZXhdKVxuICBsYXN0SW5kZXhPZjogZnVuY3Rpb24gbGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudCAvKiAsIGZyb21JbmRleCA9IEBbKi0xXSAqLykge1xuICAgIC8vIGNvbnZlcnQgLTAgdG8gKzBcbiAgICBpZiAoTkVHQVRJVkVfWkVSTykgcmV0dXJuICRuYXRpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCAwO1xuICAgIHZhciBPID0gdG9JT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIGluZGV4ID0gTWF0aC5taW4oaW5kZXgsIHRvSW50ZWdlcihhcmd1bWVudHNbMV0pKTtcbiAgICBpZiAoaW5kZXggPCAwKSBpbmRleCA9IGxlbmd0aCArIGluZGV4O1xuICAgIGZvciAoO2luZGV4ID49IDA7IGluZGV4LS0pIGlmIChpbmRleCBpbiBPKSBpZiAoT1tpbmRleF0gPT09IHNlYXJjaEVsZW1lbnQpIHJldHVybiBpbmRleCB8fCAwO1xuICAgIHJldHVybiAtMTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRtYXAgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5tYXAsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xNSAvIDE1LjQuNC4xOSBBcnJheS5wcm90b3R5cGUubWFwKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRtYXAodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG5cbi8vIFdlYktpdCBBcnJheS5vZiBpc24ndCBnZW5lcmljXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiAhKEFycmF5Lm9mLmNhbGwoRikgaW5zdGFuY2VvZiBGKTtcbn0pLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMi4zIEFycmF5Lm9mKCAuLi5pdGVtcylcbiAgb2Y6IGZ1bmN0aW9uIG9mKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgcmVzdWx0ID0gbmV3ICh0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5KShhTGVuKTtcbiAgICB3aGlsZSAoYUxlbiA+IGluZGV4KSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHJlc3VsdC5sZW5ndGggPSBhTGVuO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXktcmVkdWNlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5yZWR1Y2VSaWdodCwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE5IC8gMTUuNC40LjIyIEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodChjYWxsYmFja2ZuIFssIGluaXRpYWxWYWx1ZV0pXG4gIHJlZHVjZVJpZ2h0OiBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzWzFdLCB0cnVlKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRyZWR1Y2UgPSByZXF1aXJlKCcuL19hcnJheS1yZWR1Y2UnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLnJlZHVjZSwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE4IC8gMTUuNC40LjIxIEFycmF5LnByb3RvdHlwZS5yZWR1Y2UoY2FsbGJhY2tmbiBbLCBpbml0aWFsVmFsdWVdKVxuICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzWzFdLCBmYWxzZSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi9faHRtbCcpO1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBhcnJheVNsaWNlID0gW10uc2xpY2U7XG5cbi8vIGZhbGxiYWNrIGZvciBub3QgYXJyYXktbGlrZSBFUzMgc3RyaW5ncyBhbmQgRE9NIG9iamVjdHNcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIGlmIChodG1sKSBhcnJheVNsaWNlLmNhbGwoaHRtbCk7XG59KSwgJ0FycmF5Jywge1xuICBzbGljZTogZnVuY3Rpb24gc2xpY2UoYmVnaW4sIGVuZCkge1xuICAgIHZhciBsZW4gPSB0b0xlbmd0aCh0aGlzLmxlbmd0aCk7XG4gICAgdmFyIGtsYXNzID0gY29mKHRoaXMpO1xuICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogZW5kO1xuICAgIGlmIChrbGFzcyA9PSAnQXJyYXknKSByZXR1cm4gYXJyYXlTbGljZS5jYWxsKHRoaXMsIGJlZ2luLCBlbmQpO1xuICAgIHZhciBzdGFydCA9IHRvQWJzb2x1dGVJbmRleChiZWdpbiwgbGVuKTtcbiAgICB2YXIgdXBUbyA9IHRvQWJzb2x1dGVJbmRleChlbmQsIGxlbik7XG4gICAgdmFyIHNpemUgPSB0b0xlbmd0aCh1cFRvIC0gc3RhcnQpO1xuICAgIHZhciBjbG9uZWQgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSBjbG9uZWRbaV0gPSBrbGFzcyA9PSAnU3RyaW5nJ1xuICAgICAgPyB0aGlzLmNoYXJBdChzdGFydCArIGkpXG4gICAgICA6IHRoaXNbc3RhcnQgKyBpXTtcbiAgICByZXR1cm4gY2xvbmVkO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHNvbWUgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5zb21lLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMjMgLyAxNS40LjQuMTcgQXJyYXkucHJvdG90eXBlLnNvbWUoY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkc29tZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyICRzb3J0ID0gW10uc29ydDtcbnZhciB0ZXN0ID0gWzEsIDIsIDNdO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIElFOC1cbiAgdGVzdC5zb3J0KHVuZGVmaW5lZCk7XG59KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBWOCBidWdcbiAgdGVzdC5zb3J0KG51bGwpO1xuICAvLyBPbGQgV2ViS2l0XG59KSB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRzb3J0KSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjI1IEFycmF5LnByb3RvdHlwZS5zb3J0KGNvbXBhcmVmbilcbiAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pIHtcbiAgICByZXR1cm4gY29tcGFyZWZuID09PSB1bmRlZmluZWRcbiAgICAgID8gJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSlcbiAgICAgIDogJHNvcnQuY2FsbCh0b09iamVjdCh0aGlzKSwgYUZ1bmN0aW9uKGNvbXBhcmVmbikpO1xuICB9XG59KTtcbiIsInJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ0FycmF5Jyk7XG4iLCIvLyAyMC4zLjMuMSAvIDE1LjkuNC40IERhdGUubm93KClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnRGF0ZScsIHsgbm93OiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgfSB9KTtcbiIsIi8vIDIwLjMuNC4zNiAvIDE1LjkuNS40MyBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZygpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSVNPU3RyaW5nID0gcmVxdWlyZSgnLi9fZGF0ZS10by1pc28tc3RyaW5nJyk7XG5cbi8vIFBoYW50b21KUyAvIG9sZCBXZWJLaXQgaGFzIGEgYnJva2VuIGltcGxlbWVudGF0aW9uc1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcgIT09IHRvSVNPU3RyaW5nKSwgJ0RhdGUnLCB7XG4gIHRvSVNPU3RyaW5nOiB0b0lTT1N0cmluZ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKE5hTikudG9KU09OKCkgIT09IG51bGxcbiAgICB8fCBEYXRlLnByb3RvdHlwZS50b0pTT04uY2FsbCh7IHRvSVNPU3RyaW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9IH0pICE9PSAxO1xufSksICdEYXRlJywge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oa2V5KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgcHYgPSB0b1ByaW1pdGl2ZShPKTtcbiAgICByZXR1cm4gdHlwZW9mIHB2ID09ICdudW1iZXInICYmICFpc0Zpbml0ZShwdikgPyBudWxsIDogTy50b0lTT1N0cmluZygpO1xuICB9XG59KTtcbiIsInZhciBUT19QUklNSVRJVkUgPSByZXF1aXJlKCcuL193a3MnKSgndG9QcmltaXRpdmUnKTtcbnZhciBwcm90byA9IERhdGUucHJvdG90eXBlO1xuXG5pZiAoIShUT19QUklNSVRJVkUgaW4gcHJvdG8pKSByZXF1aXJlKCcuL19oaWRlJykocHJvdG8sIFRPX1BSSU1JVElWRSwgcmVxdWlyZSgnLi9fZGF0ZS10by1wcmltaXRpdmUnKSk7XG4iLCJ2YXIgRGF0ZVByb3RvID0gRGF0ZS5wcm90b3R5cGU7XG52YXIgSU5WQUxJRF9EQVRFID0gJ0ludmFsaWQgRGF0ZSc7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciAkdG9TdHJpbmcgPSBEYXRlUHJvdG9bVE9fU1RSSU5HXTtcbnZhciBnZXRUaW1lID0gRGF0ZVByb3RvLmdldFRpbWU7XG5pZiAobmV3IERhdGUoTmFOKSArICcnICE9IElOVkFMSURfREFURSkge1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKERhdGVQcm90bywgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgdmFsdWUgPSBnZXRUaW1lLmNhbGwodGhpcyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyAkdG9TdHJpbmcuY2FsbCh0aGlzKSA6IElOVkFMSURfREFURTtcbiAgfSk7XG59XG4iLCIvLyAxOS4yLjMuMiAvIDE1LjMuNC41IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kKHRoaXNBcmcsIGFyZ3MuLi4pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0Z1bmN0aW9uJywgeyBiaW5kOiByZXF1aXJlKCcuL19iaW5kJykgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBIQVNfSU5TVEFOQ0UgPSByZXF1aXJlKCcuL193a3MnKSgnaGFzSW5zdGFuY2UnKTtcbnZhciBGdW5jdGlvblByb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gMTkuMi4zLjYgRnVuY3Rpb24ucHJvdG90eXBlW0BAaGFzSW5zdGFuY2VdKFYpXG5pZiAoIShIQVNfSU5TVEFOQ0UgaW4gRnVuY3Rpb25Qcm90bykpIHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYoRnVuY3Rpb25Qcm90bywgSEFTX0lOU1RBTkNFLCB7IHZhbHVlOiBmdW5jdGlvbiAoTykge1xuICBpZiAodHlwZW9mIHRoaXMgIT0gJ2Z1bmN0aW9uJyB8fCAhaXNPYmplY3QoTykpIHJldHVybiBmYWxzZTtcbiAgaWYgKCFpc09iamVjdCh0aGlzLnByb3RvdHlwZSkpIHJldHVybiBPIGluc3RhbmNlb2YgdGhpcztcbiAgLy8gZm9yIGVudmlyb25tZW50IHcvbyBuYXRpdmUgYEBAaGFzSW5zdGFuY2VgIGxvZ2ljIGVub3VnaCBgaW5zdGFuY2VvZmAsIGJ1dCBhZGQgdGhpczpcbiAgd2hpbGUgKE8gPSBnZXRQcm90b3R5cGVPZihPKSkgaWYgKHRoaXMucHJvdG90eXBlID09PSBPKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufSB9KTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgRlByb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIG5hbWVSRSA9IC9eXFxzKmZ1bmN0aW9uIChbXiAoXSopLztcbnZhciBOQU1FID0gJ25hbWUnO1xuXG4vLyAxOS4yLjQuMiBuYW1lXG5OQU1FIGluIEZQcm90byB8fCByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmIGRQKEZQcm90bywgTkFNRSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKCcnICsgdGhpcykubWF0Y2gobmFtZVJFKVsxXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzdHJvbmcgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXN0cm9uZycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIE1BUCA9ICdNYXAnO1xuXG4vLyAyMy4xIE1hcCBPYmplY3RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKShNQVAsIGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIE1hcCgpIHsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07XG59LCB7XG4gIC8vIDIzLjEuMy42IE1hcC5wcm90b3R5cGUuZ2V0KGtleSlcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgdmFyIGVudHJ5ID0gc3Ryb25nLmdldEVudHJ5KHZhbGlkYXRlKHRoaXMsIE1BUCksIGtleSk7XG4gICAgcmV0dXJuIGVudHJ5ICYmIGVudHJ5LnY7XG4gIH0sXG4gIC8vIDIzLjEuMy45IE1hcC5wcm90b3R5cGUuc2V0KGtleSwgdmFsdWUpXG4gIHNldDogZnVuY3Rpb24gc2V0KGtleSwgdmFsdWUpIHtcbiAgICByZXR1cm4gc3Ryb25nLmRlZih2YWxpZGF0ZSh0aGlzLCBNQVApLCBrZXkgPT09IDAgPyAwIDoga2V5LCB2YWx1ZSk7XG4gIH1cbn0sIHN0cm9uZywgdHJ1ZSk7XG4iLCIvLyAyMC4yLjIuMyBNYXRoLmFjb3NoKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGxvZzFwID0gcmVxdWlyZSgnLi9fbWF0aC1sb2cxcCcpO1xudmFyIHNxcnQgPSBNYXRoLnNxcnQ7XG52YXIgJGFjb3NoID0gTWF0aC5hY29zaDtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKCRhY29zaFxuICAvLyBWOCBidWc6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zNTA5XG4gICYmIE1hdGguZmxvb3IoJGFjb3NoKE51bWJlci5NQVhfVkFMVUUpKSA9PSA3MTBcbiAgLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmFjb3NoKEluZmluaXR5KSAtPiBOYU5cbiAgJiYgJGFjb3NoKEluZmluaXR5KSA9PSBJbmZpbml0eVxuKSwgJ01hdGgnLCB7XG4gIGFjb3NoOiBmdW5jdGlvbiBhY29zaCh4KSB7XG4gICAgcmV0dXJuICh4ID0gK3gpIDwgMSA/IE5hTiA6IHggPiA5NDkwNjI2NS42MjQyNTE1NlxuICAgICAgPyBNYXRoLmxvZyh4KSArIE1hdGguTE4yXG4gICAgICA6IGxvZzFwKHggLSAxICsgc3FydCh4IC0gMSkgKiBzcXJ0KHggKyAxKSk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjUgTWF0aC5hc2luaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkYXNpbmggPSBNYXRoLmFzaW5oO1xuXG5mdW5jdGlvbiBhc2luaCh4KSB7XG4gIHJldHVybiAhaXNGaW5pdGUoeCA9ICt4KSB8fCB4ID09IDAgPyB4IDogeCA8IDAgPyAtYXNpbmgoLXgpIDogTWF0aC5sb2coeCArIE1hdGguc3FydCh4ICogeCArIDEpKTtcbn1cblxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmFzaW5oKDApIC0+IC0wXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGFzaW5oICYmIDEgLyAkYXNpbmgoMCkgPiAwKSwgJ01hdGgnLCB7IGFzaW5oOiBhc2luaCB9KTtcbiIsIi8vIDIwLjIuMi43IE1hdGguYXRhbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0YW5oID0gTWF0aC5hdGFuaDtcblxuLy8gVG9yIEJyb3dzZXIgYnVnOiBNYXRoLmF0YW5oKC0wKSAtPiAwXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoJGF0YW5oICYmIDEgLyAkYXRhbmgoLTApIDwgMCksICdNYXRoJywge1xuICBhdGFuaDogZnVuY3Rpb24gYXRhbmgoeCkge1xuICAgIHJldHVybiAoeCA9ICt4KSA9PSAwID8geCA6IE1hdGgubG9nKCgxICsgeCkgLyAoMSAtIHgpKSAvIDI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjkgTWF0aC5jYnJ0KHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHNpZ24gPSByZXF1aXJlKCcuL19tYXRoLXNpZ24nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjYnJ0OiBmdW5jdGlvbiBjYnJ0KHgpIHtcbiAgICByZXR1cm4gc2lnbih4ID0gK3gpICogTWF0aC5wb3coTWF0aC5hYnMoeCksIDEgLyAzKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMTEgTWF0aC5jbHozMih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjbHozMjogZnVuY3Rpb24gY2x6MzIoeCkge1xuICAgIHJldHVybiAoeCA+Pj49IDApID8gMzEgLSBNYXRoLmZsb29yKE1hdGgubG9nKHggKyAwLjUpICogTWF0aC5MT0cyRSkgOiAzMjtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMTIgTWF0aC5jb3NoKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGV4cCA9IE1hdGguZXhwO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGNvc2g6IGZ1bmN0aW9uIGNvc2goeCkge1xuICAgIHJldHVybiAoZXhwKHggPSAreCkgKyBleHAoLXgpKSAvIDI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjE0IE1hdGguZXhwbTEoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGV4cG0xID0gcmVxdWlyZSgnLi9fbWF0aC1leHBtMScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICgkZXhwbTEgIT0gTWF0aC5leHBtMSksICdNYXRoJywgeyBleHBtMTogJGV4cG0xIH0pO1xuIiwiLy8gMjAuMi4yLjE2IE1hdGguZnJvdW5kKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7IGZyb3VuZDogcmVxdWlyZSgnLi9fbWF0aC1mcm91bmQnKSB9KTtcbiIsIi8vIDIwLjIuMi4xNyBNYXRoLmh5cG90KFt2YWx1ZTFbLCB2YWx1ZTJbLCDigKYgXV1dKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhYnMgPSBNYXRoLmFicztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBoeXBvdDogZnVuY3Rpb24gaHlwb3QodmFsdWUxLCB2YWx1ZTIpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciBzdW0gPSAwO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGxhcmcgPSAwO1xuICAgIHZhciBhcmcsIGRpdjtcbiAgICB3aGlsZSAoaSA8IGFMZW4pIHtcbiAgICAgIGFyZyA9IGFicyhhcmd1bWVudHNbaSsrXSk7XG4gICAgICBpZiAobGFyZyA8IGFyZykge1xuICAgICAgICBkaXYgPSBsYXJnIC8gYXJnO1xuICAgICAgICBzdW0gPSBzdW0gKiBkaXYgKiBkaXYgKyAxO1xuICAgICAgICBsYXJnID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChhcmcgPiAwKSB7XG4gICAgICAgIGRpdiA9IGFyZyAvIGxhcmc7XG4gICAgICAgIHN1bSArPSBkaXYgKiBkaXY7XG4gICAgICB9IGVsc2Ugc3VtICs9IGFyZztcbiAgICB9XG4gICAgcmV0dXJuIGxhcmcgPT09IEluZmluaXR5ID8gSW5maW5pdHkgOiBsYXJnICogTWF0aC5zcXJ0KHN1bSk7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjE4IE1hdGguaW11bCh4LCB5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkaW11bCA9IE1hdGguaW11bDtcblxuLy8gc29tZSBXZWJLaXQgdmVyc2lvbnMgZmFpbHMgd2l0aCBiaWcgbnVtYmVycywgc29tZSBoYXMgd3JvbmcgYXJpdHlcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAkaW11bCgweGZmZmZmZmZmLCA1KSAhPSAtNSB8fCAkaW11bC5sZW5ndGggIT0gMjtcbn0pLCAnTWF0aCcsIHtcbiAgaW11bDogZnVuY3Rpb24gaW11bCh4LCB5KSB7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZjtcbiAgICB2YXIgeG4gPSAreDtcbiAgICB2YXIgeW4gPSAreTtcbiAgICB2YXIgeGwgPSBVSU5UMTYgJiB4bjtcbiAgICB2YXIgeWwgPSBVSU5UMTYgJiB5bjtcbiAgICByZXR1cm4gMCB8IHhsICogeWwgKyAoKFVJTlQxNiAmIHhuID4+PiAxNikgKiB5bCArIHhsICogKFVJTlQxNiAmIHluID4+PiAxNikgPDwgMTYgPj4+IDApO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4yMSBNYXRoLmxvZzEwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGxvZzEwOiBmdW5jdGlvbiBsb2cxMCh4KSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKHgpICogTWF0aC5MT0cxMEU7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjIwIE1hdGgubG9nMXAoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHsgbG9nMXA6IHJlcXVpcmUoJy4vX21hdGgtbG9nMXAnKSB9KTtcbiIsIi8vIDIwLjIuMi4yMiBNYXRoLmxvZzIoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgbG9nMjogZnVuY3Rpb24gbG9nMih4KSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKHgpIC8gTWF0aC5MTjI7XG4gIH1cbn0pO1xuIiwiLy8gMjAuMi4yLjI4IE1hdGguc2lnbih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywgeyBzaWduOiByZXF1aXJlKCcuL19tYXRoLXNpZ24nKSB9KTtcbiIsIi8vIDIwLjIuMi4zMCBNYXRoLnNpbmgoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZXhwbTEgPSByZXF1aXJlKCcuL19tYXRoLWV4cG0xJyk7XG52YXIgZXhwID0gTWF0aC5leHA7XG5cbi8vIFY4IG5lYXIgQ2hyb21pdW0gMzggaGFzIGEgcHJvYmxlbSB3aXRoIHZlcnkgc21hbGwgbnVtYmVyc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICFNYXRoLnNpbmgoLTJlLTE3KSAhPSAtMmUtMTc7XG59KSwgJ01hdGgnLCB7XG4gIHNpbmg6IGZ1bmN0aW9uIHNpbmgoeCkge1xuICAgIHJldHVybiBNYXRoLmFicyh4ID0gK3gpIDwgMVxuICAgICAgPyAoZXhwbTEoeCkgLSBleHBtMSgteCkpIC8gMlxuICAgICAgOiAoZXhwKHggLSAxKSAtIGV4cCgteCAtIDEpKSAqIChNYXRoLkUgLyAyKTtcbiAgfVxufSk7XG4iLCIvLyAyMC4yLjIuMzMgTWF0aC50YW5oKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGV4cG0xID0gcmVxdWlyZSgnLi9fbWF0aC1leHBtMScpO1xudmFyIGV4cCA9IE1hdGguZXhwO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHRhbmg6IGZ1bmN0aW9uIHRhbmgoeCkge1xuICAgIHZhciBhID0gZXhwbTEoeCA9ICt4KTtcbiAgICB2YXIgYiA9IGV4cG0xKC14KTtcbiAgICByZXR1cm4gYSA9PSBJbmZpbml0eSA/IDEgOiBiID09IEluZmluaXR5ID8gLTEgOiAoYSAtIGIpIC8gKGV4cCh4KSArIGV4cCgteCkpO1xuICB9XG59KTtcbiIsIi8vIDIwLjIuMi4zNCBNYXRoLnRydW5jKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIHRydW5jOiBmdW5jdGlvbiB0cnVuYyhpdCkge1xuICAgIHJldHVybiAoaXQgPiAwID8gTWF0aC5mbG9vciA6IE1hdGguY2VpbCkoaXQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpLmY7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyICR0cmltID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltO1xudmFyIE5VTUJFUiA9ICdOdW1iZXInO1xudmFyICROdW1iZXIgPSBnbG9iYWxbTlVNQkVSXTtcbnZhciBCYXNlID0gJE51bWJlcjtcbnZhciBwcm90byA9ICROdW1iZXIucHJvdG90eXBlO1xuLy8gT3BlcmEgfjEyIGhhcyBicm9rZW4gT2JqZWN0I3RvU3RyaW5nXG52YXIgQlJPS0VOX0NPRiA9IGNvZihyZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJykocHJvdG8pKSA9PSBOVU1CRVI7XG52YXIgVFJJTSA9ICd0cmltJyBpbiBTdHJpbmcucHJvdG90eXBlO1xuXG4vLyA3LjEuMyBUb051bWJlcihhcmd1bWVudClcbnZhciB0b051bWJlciA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgaXQgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgZmFsc2UpO1xuICBpZiAodHlwZW9mIGl0ID09ICdzdHJpbmcnICYmIGl0Lmxlbmd0aCA+IDIpIHtcbiAgICBpdCA9IFRSSU0gPyBpdC50cmltKCkgOiAkdHJpbShpdCwgMyk7XG4gICAgdmFyIGZpcnN0ID0gaXQuY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgdGhpcmQsIHJhZGl4LCBtYXhDb2RlO1xuICAgIGlmIChmaXJzdCA9PT0gNDMgfHwgZmlyc3QgPT09IDQ1KSB7XG4gICAgICB0aGlyZCA9IGl0LmNoYXJDb2RlQXQoMik7XG4gICAgICBpZiAodGhpcmQgPT09IDg4IHx8IHRoaXJkID09PSAxMjApIHJldHVybiBOYU47IC8vIE51bWJlcignKzB4MScpIHNob3VsZCBiZSBOYU4sIG9sZCBWOCBmaXhcbiAgICB9IGVsc2UgaWYgKGZpcnN0ID09PSA0OCkge1xuICAgICAgc3dpdGNoIChpdC5jaGFyQ29kZUF0KDEpKSB7XG4gICAgICAgIGNhc2UgNjY6IGNhc2UgOTg6IHJhZGl4ID0gMjsgbWF4Q29kZSA9IDQ5OyBicmVhazsgLy8gZmFzdCBlcXVhbCAvXjBiWzAxXSskL2lcbiAgICAgICAgY2FzZSA3OTogY2FzZSAxMTE6IHJhZGl4ID0gODsgbWF4Q29kZSA9IDU1OyBicmVhazsgLy8gZmFzdCBlcXVhbCAvXjBvWzAtN10rJC9pXG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAraXQ7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBkaWdpdHMgPSBpdC5zbGljZSgyKSwgaSA9IDAsIGwgPSBkaWdpdHMubGVuZ3RoLCBjb2RlOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvZGUgPSBkaWdpdHMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgLy8gcGFyc2VJbnQgcGFyc2VzIGEgc3RyaW5nIHRvIGEgZmlyc3QgdW5hdmFpbGFibGUgc3ltYm9sXG4gICAgICAgIC8vIGJ1dCBUb051bWJlciBzaG91bGQgcmV0dXJuIE5hTiBpZiBhIHN0cmluZyBjb250YWlucyB1bmF2YWlsYWJsZSBzeW1ib2xzXG4gICAgICAgIGlmIChjb2RlIDwgNDggfHwgY29kZSA+IG1heENvZGUpIHJldHVybiBOYU47XG4gICAgICB9IHJldHVybiBwYXJzZUludChkaWdpdHMsIHJhZGl4KTtcbiAgICB9XG4gIH0gcmV0dXJuICtpdDtcbn07XG5cbmlmICghJE51bWJlcignIDBvMScpIHx8ICEkTnVtYmVyKCcwYjEnKSB8fCAkTnVtYmVyKCcrMHgxJykpIHtcbiAgJE51bWJlciA9IGZ1bmN0aW9uIE51bWJlcih2YWx1ZSkge1xuICAgIHZhciBpdCA9IGFyZ3VtZW50cy5sZW5ndGggPCAxID8gMCA6IHZhbHVlO1xuICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICByZXR1cm4gdGhhdCBpbnN0YW5jZW9mICROdW1iZXJcbiAgICAgIC8vIGNoZWNrIG9uIDEuLmNvbnN0cnVjdG9yKGZvbykgY2FzZVxuICAgICAgJiYgKEJST0tFTl9DT0YgPyBmYWlscyhmdW5jdGlvbiAoKSB7IHByb3RvLnZhbHVlT2YuY2FsbCh0aGF0KTsgfSkgOiBjb2YodGhhdCkgIT0gTlVNQkVSKVxuICAgICAgICA/IGluaGVyaXRJZlJlcXVpcmVkKG5ldyBCYXNlKHRvTnVtYmVyKGl0KSksIHRoYXQsICROdW1iZXIpIDogdG9OdW1iZXIoaXQpO1xuICB9O1xuICBmb3IgKHZhciBrZXlzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGdPUE4oQmFzZSkgOiAoXG4gICAgLy8gRVMzOlxuICAgICdNQVhfVkFMVUUsTUlOX1ZBTFVFLE5hTixORUdBVElWRV9JTkZJTklUWSxQT1NJVElWRV9JTkZJTklUWSwnICtcbiAgICAvLyBFUzYgKGluIGNhc2UsIGlmIG1vZHVsZXMgd2l0aCBFUzYgTnVtYmVyIHN0YXRpY3MgcmVxdWlyZWQgYmVmb3JlKTpcbiAgICAnRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLCcgK1xuICAgICdNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyJ1xuICApLnNwbGl0KCcsJyksIGogPSAwLCBrZXk7IGtleXMubGVuZ3RoID4gajsgaisrKSB7XG4gICAgaWYgKGhhcyhCYXNlLCBrZXkgPSBrZXlzW2pdKSAmJiAhaGFzKCROdW1iZXIsIGtleSkpIHtcbiAgICAgIGRQKCROdW1iZXIsIGtleSwgZ09QRChCYXNlLCBrZXkpKTtcbiAgICB9XG4gIH1cbiAgJE51bWJlci5wcm90b3R5cGUgPSBwcm90bztcbiAgcHJvdG8uY29uc3RydWN0b3IgPSAkTnVtYmVyO1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKGdsb2JhbCwgTlVNQkVSLCAkTnVtYmVyKTtcbn1cbiIsIi8vIDIwLjEuMi4xIE51bWJlci5FUFNJTE9OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHsgRVBTSUxPTjogTWF0aC5wb3coMiwgLTUyKSB9KTtcbiIsIi8vIDIwLjEuMi4yIE51bWJlci5pc0Zpbml0ZShudW1iZXIpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIF9pc0Zpbml0ZSA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmlzRmluaXRlO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNGaW5pdGU6IGZ1bmN0aW9uIGlzRmluaXRlKGl0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnbnVtYmVyJyAmJiBfaXNGaW5pdGUoaXQpO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IGlzSW50ZWdlcjogcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpIH0pO1xuIiwiLy8gMjAuMS4yLjQgTnVtYmVyLmlzTmFOKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywge1xuICBpc05hTjogZnVuY3Rpb24gaXNOYU4obnVtYmVyKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHJldHVybiBudW1iZXIgIT0gbnVtYmVyO1xuICB9XG59KTtcbiIsIi8vIDIwLjEuMi41IE51bWJlci5pc1NhZmVJbnRlZ2VyKG51bWJlcilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNJbnRlZ2VyID0gcmVxdWlyZSgnLi9faXMtaW50ZWdlcicpO1xudmFyIGFicyA9IE1hdGguYWJzO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNTYWZlSW50ZWdlcjogZnVuY3Rpb24gaXNTYWZlSW50ZWdlcihudW1iZXIpIHtcbiAgICByZXR1cm4gaXNJbnRlZ2VyKG51bWJlcikgJiYgYWJzKG51bWJlcikgPD0gMHgxZmZmZmZmZmZmZmZmZjtcbiAgfVxufSk7XG4iLCIvLyAyMC4xLjIuNiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IE1BWF9TQUZFX0lOVEVHRVI6IDB4MWZmZmZmZmZmZmZmZmYgfSk7XG4iLCIvLyAyMC4xLjIuMTAgTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywgeyBNSU5fU0FGRV9JTlRFR0VSOiAtMHgxZmZmZmZmZmZmZmZmZiB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlRmxvYXQgPSByZXF1aXJlKCcuL19wYXJzZS1mbG9hdCcpO1xuLy8gMjAuMS4yLjEyIE51bWJlci5wYXJzZUZsb2F0KHN0cmluZylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKE51bWJlci5wYXJzZUZsb2F0ICE9ICRwYXJzZUZsb2F0KSwgJ051bWJlcicsIHsgcGFyc2VGbG9hdDogJHBhcnNlRmxvYXQgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYXJzZUludCA9IHJlcXVpcmUoJy4vX3BhcnNlLWludCcpO1xuLy8gMjAuMS4yLjEzIE51bWJlci5wYXJzZUludChzdHJpbmcsIHJhZGl4KVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTnVtYmVyLnBhcnNlSW50ICE9ICRwYXJzZUludCksICdOdW1iZXInLCB7IHBhcnNlSW50OiAkcGFyc2VJbnQgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBhTnVtYmVyVmFsdWUgPSByZXF1aXJlKCcuL19hLW51bWJlci12YWx1ZScpO1xudmFyIHJlcGVhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1yZXBlYXQnKTtcbnZhciAkdG9GaXhlZCA9IDEuMC50b0ZpeGVkO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBkYXRhID0gWzAsIDAsIDAsIDAsIDAsIDBdO1xudmFyIEVSUk9SID0gJ051bWJlci50b0ZpeGVkOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnO1xudmFyIFpFUk8gPSAnMCc7XG5cbnZhciBtdWx0aXBseSA9IGZ1bmN0aW9uIChuLCBjKSB7XG4gIHZhciBpID0gLTE7XG4gIHZhciBjMiA9IGM7XG4gIHdoaWxlICgrK2kgPCA2KSB7XG4gICAgYzIgKz0gbiAqIGRhdGFbaV07XG4gICAgZGF0YVtpXSA9IGMyICUgMWU3O1xuICAgIGMyID0gZmxvb3IoYzIgLyAxZTcpO1xuICB9XG59O1xudmFyIGRpdmlkZSA9IGZ1bmN0aW9uIChuKSB7XG4gIHZhciBpID0gNjtcbiAgdmFyIGMgPSAwO1xuICB3aGlsZSAoLS1pID49IDApIHtcbiAgICBjICs9IGRhdGFbaV07XG4gICAgZGF0YVtpXSA9IGZsb29yKGMgLyBuKTtcbiAgICBjID0gKGMgJSBuKSAqIDFlNztcbiAgfVxufTtcbnZhciBudW1Ub1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGkgPSA2O1xuICB2YXIgcyA9ICcnO1xuICB3aGlsZSAoLS1pID49IDApIHtcbiAgICBpZiAocyAhPT0gJycgfHwgaSA9PT0gMCB8fCBkYXRhW2ldICE9PSAwKSB7XG4gICAgICB2YXIgdCA9IFN0cmluZyhkYXRhW2ldKTtcbiAgICAgIHMgPSBzID09PSAnJyA/IHQgOiBzICsgcmVwZWF0LmNhbGwoWkVSTywgNyAtIHQubGVuZ3RoKSArIHQ7XG4gICAgfVxuICB9IHJldHVybiBzO1xufTtcbnZhciBwb3cgPSBmdW5jdGlvbiAoeCwgbiwgYWNjKSB7XG4gIHJldHVybiBuID09PSAwID8gYWNjIDogbiAlIDIgPT09IDEgPyBwb3coeCwgbiAtIDEsIGFjYyAqIHgpIDogcG93KHggKiB4LCBuIC8gMiwgYWNjKTtcbn07XG52YXIgbG9nID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG4gPSAwO1xuICB2YXIgeDIgPSB4O1xuICB3aGlsZSAoeDIgPj0gNDA5Nikge1xuICAgIG4gKz0gMTI7XG4gICAgeDIgLz0gNDA5NjtcbiAgfVxuICB3aGlsZSAoeDIgPj0gMikge1xuICAgIG4gKz0gMTtcbiAgICB4MiAvPSAyO1xuICB9IHJldHVybiBuO1xufTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoISEkdG9GaXhlZCAmJiAoXG4gIDAuMDAwMDgudG9GaXhlZCgzKSAhPT0gJzAuMDAwJyB8fFxuICAwLjkudG9GaXhlZCgwKSAhPT0gJzEnIHx8XG4gIDEuMjU1LnRvRml4ZWQoMikgIT09ICcxLjI1JyB8fFxuICAxMDAwMDAwMDAwMDAwMDAwMTI4LjAudG9GaXhlZCgwKSAhPT0gJzEwMDAwMDAwMDAwMDAwMDAxMjgnXG4pIHx8ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgLy8gVjggfiBBbmRyb2lkIDQuMy1cbiAgJHRvRml4ZWQuY2FsbCh7fSk7XG59KSksICdOdW1iZXInLCB7XG4gIHRvRml4ZWQ6IGZ1bmN0aW9uIHRvRml4ZWQoZnJhY3Rpb25EaWdpdHMpIHtcbiAgICB2YXIgeCA9IGFOdW1iZXJWYWx1ZSh0aGlzLCBFUlJPUik7XG4gICAgdmFyIGYgPSB0b0ludGVnZXIoZnJhY3Rpb25EaWdpdHMpO1xuICAgIHZhciBzID0gJyc7XG4gICAgdmFyIG0gPSBaRVJPO1xuICAgIHZhciBlLCB6LCBqLCBrO1xuICAgIGlmIChmIDwgMCB8fCBmID4gMjApIHRocm93IFJhbmdlRXJyb3IoRVJST1IpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoeCAhPSB4KSByZXR1cm4gJ05hTic7XG4gICAgaWYgKHggPD0gLTFlMjEgfHwgeCA+PSAxZTIxKSByZXR1cm4gU3RyaW5nKHgpO1xuICAgIGlmICh4IDwgMCkge1xuICAgICAgcyA9ICctJztcbiAgICAgIHggPSAteDtcbiAgICB9XG4gICAgaWYgKHggPiAxZS0yMSkge1xuICAgICAgZSA9IGxvZyh4ICogcG93KDIsIDY5LCAxKSkgLSA2OTtcbiAgICAgIHogPSBlIDwgMCA/IHggKiBwb3coMiwgLWUsIDEpIDogeCAvIHBvdygyLCBlLCAxKTtcbiAgICAgIHogKj0gMHgxMDAwMDAwMDAwMDAwMDtcbiAgICAgIGUgPSA1MiAtIGU7XG4gICAgICBpZiAoZSA+IDApIHtcbiAgICAgICAgbXVsdGlwbHkoMCwgeik7XG4gICAgICAgIGogPSBmO1xuICAgICAgICB3aGlsZSAoaiA+PSA3KSB7XG4gICAgICAgICAgbXVsdGlwbHkoMWU3LCAwKTtcbiAgICAgICAgICBqIC09IDc7XG4gICAgICAgIH1cbiAgICAgICAgbXVsdGlwbHkocG93KDEwLCBqLCAxKSwgMCk7XG4gICAgICAgIGogPSBlIC0gMTtcbiAgICAgICAgd2hpbGUgKGogPj0gMjMpIHtcbiAgICAgICAgICBkaXZpZGUoMSA8PCAyMyk7XG4gICAgICAgICAgaiAtPSAyMztcbiAgICAgICAgfVxuICAgICAgICBkaXZpZGUoMSA8PCBqKTtcbiAgICAgICAgbXVsdGlwbHkoMSwgMSk7XG4gICAgICAgIGRpdmlkZSgyKTtcbiAgICAgICAgbSA9IG51bVRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtdWx0aXBseSgwLCB6KTtcbiAgICAgICAgbXVsdGlwbHkoMSA8PCAtZSwgMCk7XG4gICAgICAgIG0gPSBudW1Ub1N0cmluZygpICsgcmVwZWF0LmNhbGwoWkVSTywgZik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmID4gMCkge1xuICAgICAgayA9IG0ubGVuZ3RoO1xuICAgICAgbSA9IHMgKyAoayA8PSBmID8gJzAuJyArIHJlcGVhdC5jYWxsKFpFUk8sIGYgLSBrKSArIG0gOiBtLnNsaWNlKDAsIGsgLSBmKSArICcuJyArIG0uc2xpY2UoayAtIGYpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHMgKyBtO1xuICAgIH0gcmV0dXJuIG07XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xudmFyIGFOdW1iZXJWYWx1ZSA9IHJlcXVpcmUoJy4vX2EtbnVtYmVyLXZhbHVlJyk7XG52YXIgJHRvUHJlY2lzaW9uID0gMS4wLnRvUHJlY2lzaW9uO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICgkZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBJRTctXG4gIHJldHVybiAkdG9QcmVjaXNpb24uY2FsbCgxLCB1bmRlZmluZWQpICE9PSAnMSc7XG59KSB8fCAhJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gVjggfiBBbmRyb2lkIDQuMy1cbiAgJHRvUHJlY2lzaW9uLmNhbGwoe30pO1xufSkpLCAnTnVtYmVyJywge1xuICB0b1ByZWNpc2lvbjogZnVuY3Rpb24gdG9QcmVjaXNpb24ocHJlY2lzaW9uKSB7XG4gICAgdmFyIHRoYXQgPSBhTnVtYmVyVmFsdWUodGhpcywgJ051bWJlciN0b1ByZWNpc2lvbjogaW5jb3JyZWN0IGludm9jYXRpb24hJyk7XG4gICAgcmV0dXJuIHByZWNpc2lvbiA9PT0gdW5kZWZpbmVkID8gJHRvUHJlY2lzaW9uLmNhbGwodGhhdCkgOiAkdG9QcmVjaXNpb24uY2FsbCh0aGF0LCBwcmVjaXNpb24pO1xuICB9XG59KTtcbiIsIi8vIDE5LjEuMy4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiwgJ09iamVjdCcsIHsgYXNzaWduOiByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJykgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHsgY3JlYXRlOiByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJykgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjMgLyAxNS4yLjMuNyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydGllczogcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpIH0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcbiIsIi8vIDE5LjEuMi41IE9iamVjdC5mcmVlemUoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnZnJlZXplJywgZnVuY3Rpb24gKCRmcmVlemUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZShpdCkge1xuICAgIHJldHVybiAkZnJlZXplICYmIGlzT2JqZWN0KGl0KSA/ICRmcmVlemUobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRvSU9iamVjdChpdCksIGtleSk7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldE93blByb3BlcnR5TmFtZXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKS5mO1xufSk7XG4iLCIvLyAxOS4xLjIuOSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRQcm90b3R5cGVPZicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKGl0KSB7XG4gICAgcmV0dXJuICRnZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjIuMTEgT2JqZWN0LmlzRXh0ZW5zaWJsZShPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNFeHRlbnNpYmxlJywgZnVuY3Rpb24gKCRpc0V4dGVuc2libGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZShpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNFeHRlbnNpYmxlID8gJGlzRXh0ZW5zaWJsZShpdCkgOiB0cnVlIDogZmFsc2U7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi4xMiBPYmplY3QuaXNGcm96ZW4oTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzRnJvemVuJywgZnVuY3Rpb24gKCRpc0Zyb3plbikge1xuICByZXR1cm4gZnVuY3Rpb24gaXNGcm96ZW4oaXQpIHtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzRnJvemVuID8gJGlzRnJvemVuKGl0KSA6IGZhbHNlIDogdHJ1ZTtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjEzIE9iamVjdC5pc1NlYWxlZChPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNTZWFsZWQnLCBmdW5jdGlvbiAoJGlzU2VhbGVkKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpc1NlYWxlZChpdCkge1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNTZWFsZWQgPyAkaXNTZWFsZWQoaXQpIDogZmFsc2UgOiB0cnVlO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjMuMTAgT2JqZWN0LmlzKHZhbHVlMSwgdmFsdWUyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBpczogcmVxdWlyZSgnLi9fc2FtZS12YWx1ZScpIH0pO1xuIiwiLy8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgna2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gJGtleXModG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuIiwiLy8gMTkuMS4yLjE1IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKS5vbkZyZWV6ZTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdwcmV2ZW50RXh0ZW5zaW9ucycsIGZ1bmN0aW9uICgkcHJldmVudEV4dGVuc2lvbnMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHByZXZlbnRFeHRlbnNpb25zKGl0KSB7XG4gICAgcmV0dXJuICRwcmV2ZW50RXh0ZW5zaW9ucyAmJiBpc09iamVjdChpdCkgPyAkcHJldmVudEV4dGVuc2lvbnMobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi4xNyBPYmplY3Quc2VhbChPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKS5vbkZyZWV6ZTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdzZWFsJywgZnVuY3Rpb24gKCRzZWFsKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzZWFsKGl0KSB7XG4gICAgcmV0dXJuICRzZWFsICYmIGlzT2JqZWN0KGl0KSA/ICRzZWFsKG1ldGEoaXQpKSA6IGl0O1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjMuMTkgT2JqZWN0LnNldFByb3RvdHlwZU9mKE8sIHByb3RvKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBzZXRQcm90b3R5cGVPZjogcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0IH0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciB0ZXN0ID0ge307XG50ZXN0W3JlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpXSA9ICd6JztcbmlmICh0ZXN0ICsgJycgIT0gJ1tvYmplY3Qgel0nKSB7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoT2JqZWN0LnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdbb2JqZWN0ICcgKyBjbGFzc29mKHRoaXMpICsgJ10nO1xuICB9LCB0cnVlKTtcbn1cbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJHBhcnNlRmxvYXQgPSByZXF1aXJlKCcuL19wYXJzZS1mbG9hdCcpO1xuLy8gMTguMi40IHBhcnNlRmxvYXQoc3RyaW5nKVxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkYgKiAocGFyc2VGbG9hdCAhPSAkcGFyc2VGbG9hdCksIHsgcGFyc2VGbG9hdDogJHBhcnNlRmxvYXQgfSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYXJzZUludCA9IHJlcXVpcmUoJy4vX3BhcnNlLWludCcpO1xuLy8gMTguMi41IHBhcnNlSW50KHN0cmluZywgcmFkaXgpXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuRiAqIChwYXJzZUludCAhPSAkcGFyc2VJbnQpLCB7IHBhcnNlSW50OiAkcGFyc2VJbnQgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4IHx8ICcnO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICYmIHByb21pc2UudGhlbihlbXB0eSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZVxuICAgICAgLy8gdjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gICAgICAvLyB3ZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICAgICAgJiYgdjguaW5kZXhPZignNi42JykgIT09IDBcbiAgICAgICYmIHVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUvNjYnKSA9PT0gLTE7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gbWF5IHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIi8vIDI2LjEuMSBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciByQXBwbHkgPSAocmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdCB8fCB7fSkuYXBwbHk7XG52YXIgZkFwcGx5ID0gRnVuY3Rpb24uYXBwbHk7XG4vLyBNUyBFZGdlIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByQXBwbHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pLCAnUmVmbGVjdCcsIHtcbiAgYXBwbHk6IGZ1bmN0aW9uIGFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KSB7XG4gICAgdmFyIFQgPSBhRnVuY3Rpb24odGFyZ2V0KTtcbiAgICB2YXIgTCA9IGFuT2JqZWN0KGFyZ3VtZW50c0xpc3QpO1xuICAgIHJldHVybiByQXBwbHkgPyByQXBwbHkoVCwgdGhpc0FyZ3VtZW50LCBMKSA6IGZBcHBseS5jYWxsKFQsIHRoaXNBcmd1bWVudCwgTCk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4yIFJlZmxlY3QuY29uc3RydWN0KHRhcmdldCwgYXJndW1lbnRzTGlzdCBbLCBuZXdUYXJnZXRdKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vX2JpbmQnKTtcbnZhciByQ29uc3RydWN0ID0gKHJlcXVpcmUoJy4vX2dsb2JhbCcpLlJlZmxlY3QgfHwge30pLmNvbnN0cnVjdDtcblxuLy8gTVMgRWRnZSBzdXBwb3J0cyBvbmx5IDIgYXJndW1lbnRzIGFuZCBhcmd1bWVudHNMaXN0IGFyZ3VtZW50IGlzIG9wdGlvbmFsXG4vLyBGRiBOaWdodGx5IHNldHMgdGhpcmQgYXJndW1lbnQgYXMgYG5ldy50YXJnZXRgLCBidXQgZG9lcyBub3QgY3JlYXRlIGB0aGlzYCBmcm9tIGl0XG52YXIgTkVXX1RBUkdFVF9CVUcgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuICEockNvbnN0cnVjdChmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIFtdLCBGKSBpbnN0YW5jZW9mIEYpO1xufSk7XG52YXIgQVJHU19CVUcgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByQ29uc3RydWN0KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTkVXX1RBUkdFVF9CVUcgfHwgQVJHU19CVUcpLCAnUmVmbGVjdCcsIHtcbiAgY29uc3RydWN0OiBmdW5jdGlvbiBjb25zdHJ1Y3QoVGFyZ2V0LCBhcmdzIC8qICwgbmV3VGFyZ2V0ICovKSB7XG4gICAgYUZ1bmN0aW9uKFRhcmdldCk7XG4gICAgYW5PYmplY3QoYXJncyk7XG4gICAgdmFyIG5ld1RhcmdldCA9IGFyZ3VtZW50cy5sZW5ndGggPCAzID8gVGFyZ2V0IDogYUZ1bmN0aW9uKGFyZ3VtZW50c1syXSk7XG4gICAgaWYgKEFSR1NfQlVHICYmICFORVdfVEFSR0VUX0JVRykgcmV0dXJuIHJDb25zdHJ1Y3QoVGFyZ2V0LCBhcmdzLCBuZXdUYXJnZXQpO1xuICAgIGlmIChUYXJnZXQgPT0gbmV3VGFyZ2V0KSB7XG4gICAgICAvLyB3L28gYWx0ZXJlZCBuZXdUYXJnZXQsIG9wdGltaXphdGlvbiBmb3IgMC00IGFyZ3VtZW50c1xuICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgVGFyZ2V0KCk7XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSk7XG4gICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgIGNhc2UgMzogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBUYXJnZXQoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICB9XG4gICAgICAvLyB3L28gYWx0ZXJlZCBuZXdUYXJnZXQsIGxvdCBvZiBhcmd1bWVudHMgY2FzZVxuICAgICAgdmFyICRhcmdzID0gW251bGxdO1xuICAgICAgJGFyZ3MucHVzaC5hcHBseSgkYXJncywgYXJncyk7XG4gICAgICByZXR1cm4gbmV3IChiaW5kLmFwcGx5KFRhcmdldCwgJGFyZ3MpKSgpO1xuICAgIH1cbiAgICAvLyB3aXRoIGFsdGVyZWQgbmV3VGFyZ2V0LCBub3Qgc3VwcG9ydCBidWlsdC1pbiBjb25zdHJ1Y3RvcnNcbiAgICB2YXIgcHJvdG8gPSBuZXdUYXJnZXQucHJvdG90eXBlO1xuICAgIHZhciBpbnN0YW5jZSA9IGNyZWF0ZShpc09iamVjdChwcm90bykgPyBwcm90byA6IE9iamVjdC5wcm90b3R5cGUpO1xuICAgIHZhciByZXN1bHQgPSBGdW5jdGlvbi5hcHBseS5jYWxsKFRhcmdldCwgaW5zdGFuY2UsIGFyZ3MpO1xuICAgIHJldHVybiBpc09iamVjdChyZXN1bHQpID8gcmVzdWx0IDogaW5zdGFuY2U7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS4zIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcylcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG5cbi8vIE1TIEVkZ2UgaGFzIGJyb2tlbiBSZWZsZWN0LmRlZmluZVByb3BlcnR5IC0gdGhyb3dpbmcgaW5zdGVhZCBvZiByZXR1cm5pbmcgZmFsc2VcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBSZWZsZWN0LmRlZmluZVByb3BlcnR5KGRQLmYoe30sIDEsIHsgdmFsdWU6IDEgfSksIDEsIHsgdmFsdWU6IDIgfSk7XG59KSwgJ1JlZmxlY3QnLCB7XG4gIGRlZmluZVByb3BlcnR5OiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICBwcm9wZXJ0eUtleSA9IHRvUHJpbWl0aXZlKHByb3BlcnR5S2V5LCB0cnVlKTtcbiAgICBhbk9iamVjdChhdHRyaWJ1dGVzKTtcbiAgICB0cnkge1xuICAgICAgZFAuZih0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS40IFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGRlbGV0ZVByb3BlcnR5OiBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgdmFyIGRlc2MgPSBnT1BEKGFuT2JqZWN0KHRhcmdldCksIHByb3BlcnR5S2V5KTtcbiAgICByZXR1cm4gZGVzYyAmJiAhZGVzYy5jb25maWd1cmFibGUgPyBmYWxzZSA6IGRlbGV0ZSB0YXJnZXRbcHJvcGVydHlLZXldO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDI2LjEuNSBSZWZsZWN0LmVudW1lcmF0ZSh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgRW51bWVyYXRlID0gZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBhbk9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHZhciBrZXlzID0gdGhpcy5fayA9IFtdOyAgICAgIC8vIGtleXNcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gaXRlcmF0ZWQpIGtleXMucHVzaChrZXkpO1xufTtcbnJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJykoRW51bWVyYXRlLCAnT2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHZhciBrZXlzID0gdGhhdC5faztcbiAgdmFyIGtleTtcbiAgZG8ge1xuICAgIGlmICh0aGF0Ll9pID49IGtleXMubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH0gd2hpbGUgKCEoKGtleSA9IGtleXNbdGhhdC5faSsrXSkgaW4gdGhhdC5fdCkpO1xuICByZXR1cm4geyB2YWx1ZToga2V5LCBkb25lOiBmYWxzZSB9O1xufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgZW51bWVyYXRlOiBmdW5jdGlvbiBlbnVtZXJhdGUodGFyZ2V0KSB7XG4gICAgcmV0dXJuIG5ldyBFbnVtZXJhdGUodGFyZ2V0KTtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjcgUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSlcbnZhciBnT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgcmV0dXJuIGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS44IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBnZXRQcm90byA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGdldFByb3RvdHlwZU9mOiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0YXJnZXQpIHtcbiAgICByZXR1cm4gZ2V0UHJvdG8oYW5PYmplY3QodGFyZ2V0KSk7XG4gIH1cbn0pO1xuIiwiLy8gMjYuMS42IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcGVydHlLZXkgWywgcmVjZWl2ZXJdKVxudmFyIGdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbmZ1bmN0aW9uIGdldCh0YXJnZXQsIHByb3BlcnR5S2V5IC8qICwgcmVjZWl2ZXIgKi8pIHtcbiAgdmFyIHJlY2VpdmVyID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB0YXJnZXQgOiBhcmd1bWVudHNbMl07XG4gIHZhciBkZXNjLCBwcm90bztcbiAgaWYgKGFuT2JqZWN0KHRhcmdldCkgPT09IHJlY2VpdmVyKSByZXR1cm4gdGFyZ2V0W3Byb3BlcnR5S2V5XTtcbiAgaWYgKGRlc2MgPSBnT1BELmYodGFyZ2V0LCBwcm9wZXJ0eUtleSkpIHJldHVybiBoYXMoZGVzYywgJ3ZhbHVlJylcbiAgICA/IGRlc2MudmFsdWVcbiAgICA6IGRlc2MuZ2V0ICE9PSB1bmRlZmluZWRcbiAgICAgID8gZGVzYy5nZXQuY2FsbChyZWNlaXZlcilcbiAgICAgIDogdW5kZWZpbmVkO1xuICBpZiAoaXNPYmplY3QocHJvdG8gPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkgcmV0dXJuIGdldChwcm90bywgcHJvcGVydHlLZXksIHJlY2VpdmVyKTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0JywgeyBnZXQ6IGdldCB9KTtcbiIsIi8vIDI2LjEuOSBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3BlcnR5S2V5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBoYXM6IGZ1bmN0aW9uIGhhcyh0YXJnZXQsIHByb3BlcnR5S2V5KSB7XG4gICAgcmV0dXJuIHByb3BlcnR5S2V5IGluIHRhcmdldDtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjEwIFJlZmxlY3QuaXNFeHRlbnNpYmxlKHRhcmdldClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciAkaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBpc0V4dGVuc2libGU6IGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZSh0YXJnZXQpIHtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHJldHVybiAkaXNFeHRlbnNpYmxlID8gJGlzRXh0ZW5zaWJsZSh0YXJnZXQpIDogdHJ1ZTtcbiAgfVxufSk7XG4iLCIvLyAyNi4xLjExIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7IG93bktleXM6IHJlcXVpcmUoJy4vX293bi1rZXlzJykgfSk7XG4iLCIvLyAyNi4xLjEyIFJlZmxlY3QucHJldmVudEV4dGVuc2lvbnModGFyZ2V0KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyICRwcmV2ZW50RXh0ZW5zaW9ucyA9IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBwcmV2ZW50RXh0ZW5zaW9uczogZnVuY3Rpb24gcHJldmVudEV4dGVuc2lvbnModGFyZ2V0KSB7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICB0cnkge1xuICAgICAgaWYgKCRwcmV2ZW50RXh0ZW5zaW9ucykgJHByZXZlbnRFeHRlbnNpb25zKHRhcmdldCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbiIsIi8vIDI2LjEuMTQgUmVmbGVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBzZXRQcm90byA9IHJlcXVpcmUoJy4vX3NldC1wcm90bycpO1xuXG5pZiAoc2V0UHJvdG8pICRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgc2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pIHtcbiAgICBzZXRQcm90by5jaGVjayh0YXJnZXQsIHByb3RvKTtcbiAgICB0cnkge1xuICAgICAgc2V0UHJvdG8uc2V0KHRhcmdldCwgcHJvdG8pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG4iLCIvLyAyNi4xLjEzIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcGVydHlLZXksIFYgWywgcmVjZWl2ZXJdKVxudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5mdW5jdGlvbiBzZXQodGFyZ2V0LCBwcm9wZXJ0eUtleSwgViAvKiAsIHJlY2VpdmVyICovKSB7XG4gIHZhciByZWNlaXZlciA9IGFyZ3VtZW50cy5sZW5ndGggPCA0ID8gdGFyZ2V0IDogYXJndW1lbnRzWzNdO1xuICB2YXIgb3duRGVzYyA9IGdPUEQuZihhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gIHZhciBleGlzdGluZ0Rlc2NyaXB0b3IsIHByb3RvO1xuICBpZiAoIW93bkRlc2MpIHtcbiAgICBpZiAoaXNPYmplY3QocHJvdG8gPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSkge1xuICAgICAgcmV0dXJuIHNldChwcm90bywgcHJvcGVydHlLZXksIFYsIHJlY2VpdmVyKTtcbiAgICB9XG4gICAgb3duRGVzYyA9IGNyZWF0ZURlc2MoMCk7XG4gIH1cbiAgaWYgKGhhcyhvd25EZXNjLCAndmFsdWUnKSkge1xuICAgIGlmIChvd25EZXNjLndyaXRhYmxlID09PSBmYWxzZSB8fCAhaXNPYmplY3QocmVjZWl2ZXIpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGV4aXN0aW5nRGVzY3JpcHRvciA9IGdPUEQuZihyZWNlaXZlciwgcHJvcGVydHlLZXkpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdEZXNjcmlwdG9yLmdldCB8fCBleGlzdGluZ0Rlc2NyaXB0b3Iuc2V0IHx8IGV4aXN0aW5nRGVzY3JpcHRvci53cml0YWJsZSA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGV4aXN0aW5nRGVzY3JpcHRvci52YWx1ZSA9IFY7XG4gICAgICBkUC5mKHJlY2VpdmVyLCBwcm9wZXJ0eUtleSwgZXhpc3RpbmdEZXNjcmlwdG9yKTtcbiAgICB9IGVsc2UgZFAuZihyZWNlaXZlciwgcHJvcGVydHlLZXksIGNyZWF0ZURlc2MoMCwgVikpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBvd25EZXNjLnNldCA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiAob3duRGVzYy5zZXQuY2FsbChyZWNlaXZlciwgViksIHRydWUpO1xufVxuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7IHNldDogc2V0IH0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi9faW5oZXJpdC1pZi1yZXF1aXJlZCcpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJyk7XG52YXIgJGZsYWdzID0gcmVxdWlyZSgnLi9fZmxhZ3MnKTtcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcbnZhciBCYXNlID0gJFJlZ0V4cDtcbnZhciBwcm90byA9ICRSZWdFeHAucHJvdG90eXBlO1xudmFyIHJlMSA9IC9hL2c7XG52YXIgcmUyID0gL2EvZztcbi8vIFwibmV3XCIgY3JlYXRlcyBhIG5ldyBvYmplY3QsIG9sZCB3ZWJraXQgYnVnZ3kgaGVyZVxudmFyIENPUlJFQ1RfTkVXID0gbmV3ICRSZWdFeHAocmUxKSAhPT0gcmUxO1xuXG5pZiAocmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAoIUNPUlJFQ1RfTkVXIHx8IHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZTJbcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyldID0gZmFsc2U7XG4gIC8vIFJlZ0V4cCBjb25zdHJ1Y3RvciBjYW4gYWx0ZXIgZmxhZ3MgYW5kIElzUmVnRXhwIHdvcmtzIGNvcnJlY3Qgd2l0aCBAQG1hdGNoXG4gIHJldHVybiAkUmVnRXhwKHJlMSkgIT0gcmUxIHx8ICRSZWdFeHAocmUyKSA9PSByZTIgfHwgJFJlZ0V4cChyZTEsICdpJykgIT0gJy9hL2knO1xufSkpKSB7XG4gICRSZWdFeHAgPSBmdW5jdGlvbiBSZWdFeHAocCwgZikge1xuICAgIHZhciB0aVJFID0gdGhpcyBpbnN0YW5jZW9mICRSZWdFeHA7XG4gICAgdmFyIHBpUkUgPSBpc1JlZ0V4cChwKTtcbiAgICB2YXIgZmlVID0gZiA9PT0gdW5kZWZpbmVkO1xuICAgIHJldHVybiAhdGlSRSAmJiBwaVJFICYmIHAuY29uc3RydWN0b3IgPT09ICRSZWdFeHAgJiYgZmlVID8gcFxuICAgICAgOiBpbmhlcml0SWZSZXF1aXJlZChDT1JSRUNUX05FV1xuICAgICAgICA/IG5ldyBCYXNlKHBpUkUgJiYgIWZpVSA/IHAuc291cmNlIDogcCwgZilcbiAgICAgICAgOiBCYXNlKChwaVJFID0gcCBpbnN0YW5jZW9mICRSZWdFeHApID8gcC5zb3VyY2UgOiBwLCBwaVJFICYmIGZpVSA/ICRmbGFncy5jYWxsKHApIDogZilcbiAgICAgICwgdGlSRSA/IHRoaXMgOiBwcm90bywgJFJlZ0V4cCk7XG4gIH07XG4gIHZhciBwcm94eSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBrZXkgaW4gJFJlZ0V4cCB8fCBkUCgkUmVnRXhwLCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQmFzZVtrZXldOyB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiAoaXQpIHsgQmFzZVtrZXldID0gaXQ7IH1cbiAgICB9KTtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IGdPUE4oQmFzZSksIGkgPSAwOyBrZXlzLmxlbmd0aCA+IGk7KSBwcm94eShrZXlzW2krK10pO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICRSZWdFeHA7XG4gICRSZWdFeHAucHJvdG90eXBlID0gcHJvdG87XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoZ2xvYmFsLCAnUmVnRXhwJywgJFJlZ0V4cCk7XG59XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ1JlZ0V4cCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYycpO1xucmVxdWlyZSgnLi9fZXhwb3J0Jykoe1xuICB0YXJnZXQ6ICdSZWdFeHAnLFxuICBwcm90bzogdHJ1ZSxcbiAgZm9yY2VkOiByZWdleHBFeGVjICE9PSAvLi8uZXhlY1xufSwge1xuICBleGVjOiByZWdleHBFeGVjXG59KTtcbiIsIi8vIDIxLjIuNS4zIGdldCBSZWdFeHAucHJvdG90eXBlLmZsYWdzKClcbmlmIChyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmIC8uL2cuZmxhZ3MgIT0gJ2cnKSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mKFJlZ0V4cC5wcm90b3R5cGUsICdmbGFncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IHJlcXVpcmUoJy4vX2ZsYWdzJylcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4vX2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4vX3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG5cbi8vIEBAbWF0Y2ggbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgnbWF0Y2gnLCAxLCBmdW5jdGlvbiAoZGVmaW5lZCwgTUFUQ0gsICRtYXRjaCwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUubWF0Y2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUubWF0Y2hcbiAgICBmdW5jdGlvbiBtYXRjaChyZWdleHApIHtcbiAgICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICAgIHZhciBmbiA9IHJlZ2V4cCA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByZWdleHBbTUFUQ0hdO1xuICAgICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbTUFUQ0hdKFN0cmluZyhPKSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQG1hdGNoXG4gICAgZnVuY3Rpb24gKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZSgkbWF0Y2gsIHJlZ2V4cCwgdGhpcyk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG4gICAgICBpZiAoIXJ4Lmdsb2JhbCkgcmV0dXJuIHJlZ0V4cEV4ZWMocngsIFMpO1xuICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgQSA9IFtdO1xuICAgICAgdmFyIG4gPSAwO1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIHdoaWxlICgocmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUykpICE9PSBudWxsKSB7XG4gICAgICAgIHZhciBtYXRjaFN0ciA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICBBW25dID0gbWF0Y2hTdHI7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICAgIG4rKztcbiAgICAgIH1cbiAgICAgIHJldHVybiBuID09PSAwID8gbnVsbCA6IEE7XG4gICAgfVxuICBdO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi9fYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciByZWdFeHBFeGVjID0gcmVxdWlyZSgnLi9fcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFMgPSAvXFwkKFskJmAnXXxcXGRcXGQ/fDxbXj5dKj4pL2c7XG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQgPSAvXFwkKFskJmAnXXxcXGRcXGQ/KS9nO1xuXG52YXIgbWF5YmVUb1N0cmluZyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/IGl0IDogU3RyaW5nKGl0KTtcbn07XG5cbi8vIEBAcmVwbGFjZSBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdyZXBsYWNlJywgMiwgZnVuY3Rpb24gKGRlZmluZWQsIFJFUExBQ0UsICRyZXBsYWNlLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnJlcGxhY2VcbiAgICBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciBPID0gZGVmaW5lZCh0aGlzKTtcbiAgICAgIHZhciBmbiA9IHNlYXJjaFZhbHVlID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNlYXJjaFZhbHVlW1JFUExBQ0VdO1xuICAgICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBmbi5jYWxsKHNlYXJjaFZhbHVlLCBPLCByZXBsYWNlVmFsdWUpXG4gICAgICAgIDogJHJlcGxhY2UuY2FsbChTdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHJlcGxhY2VcbiAgICBmdW5jdGlvbiAocmVnZXhwLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUoJHJlcGxhY2UsIHJlZ2V4cCwgdGhpcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIGlmICghZnVuY3Rpb25hbFJlcGxhY2UpIHJlcGxhY2VWYWx1ZSA9IFN0cmluZyhyZXBsYWNlVmFsdWUpO1xuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgaWYgKCFnbG9iYWwpIGJyZWFrO1xuICAgICAgICB2YXIgbWF0Y2hTdHIgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgIH1cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcbiAgICAgICAgdmFyIG1hdGNoZWQgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gbWF4KG1pbih0b0ludGVnZXIocmVzdWx0LmluZGV4KSwgUy5sZW5ndGgpLCAwKTtcbiAgICAgICAgdmFyIGNhcHR1cmVzID0gW107XG4gICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICAvLyAgIGNhcHR1cmVzID0gcmVzdWx0LnNsaWNlKDEpLm1hcChtYXliZVRvU3RyaW5nKVxuICAgICAgICAvLyBidXQgZm9yIHNvbWUgcmVhc29uIGBuYXRpdmVTbGljZS5jYWxsKHJlc3VsdCwgMSwgcmVzdWx0Lmxlbmd0aClgIChjYWxsZWQgaW5cbiAgICAgICAgLy8gdGhlIHNsaWNlIHBvbHlmaWxsIHdoZW4gc2xpY2luZyBuYXRpdmUgYXJyYXlzKSBcImRvZXNuJ3Qgd29ya1wiIGluIHNhZmFyaSA5IGFuZFxuICAgICAgICAvLyBjYXVzZXMgYSBjcmFzaCAoaHR0cHM6Ly9wYXN0ZWJpbi5jb20vTjIxUXplUUEpIHdoZW4gdHJ5aW5nIHRvIGRlYnVnIGl0LlxuICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHJlc3VsdC5sZW5ndGg7IGorKykgY2FwdHVyZXMucHVzaChtYXliZVRvU3RyaW5nKHJlc3VsdFtqXSkpO1xuICAgICAgICB2YXIgbmFtZWRDYXB0dXJlcyA9IHJlc3VsdC5ncm91cHM7XG4gICAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkge1xuICAgICAgICAgIHZhciByZXBsYWNlckFyZ3MgPSBbbWF0Y2hlZF0uY29uY2F0KGNhcHR1cmVzLCBwb3NpdGlvbiwgUyk7XG4gICAgICAgICAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IHVuZGVmaW5lZCkgcmVwbGFjZXJBcmdzLnB1c2gobmFtZWRDYXB0dXJlcyk7XG4gICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gU3RyaW5nKHJlcGxhY2VWYWx1ZS5hcHBseSh1bmRlZmluZWQsIHJlcGxhY2VyQXJncykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcGxhY2VtZW50ID0gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIFMsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zaXRpb24gPj0gbmV4dFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgICAgICAgYWNjdW11bGF0ZWRSZXN1bHQgKz0gUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24sIHBvc2l0aW9uKSArIHJlcGxhY2VtZW50O1xuICAgICAgICAgIG5leHRTb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZFJlc3VsdCArIFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uKTtcbiAgICB9XG4gIF07XG5cbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nZXRzdWJzdGl0dXRpb25cbiAgZnVuY3Rpb24gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlbWVudCkge1xuICAgIHZhciB0YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgICB2YXIgbSA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgICB2YXIgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEO1xuICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG5hbWVkQ2FwdHVyZXMgPSB0b09iamVjdChuYW1lZENhcHR1cmVzKTtcbiAgICAgIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MUztcbiAgICB9XG4gICAgcmV0dXJuICRyZXBsYWNlLmNhbGwocmVwbGFjZW1lbnQsIHN5bWJvbHMsIGZ1bmN0aW9uIChtYXRjaCwgY2gpIHtcbiAgICAgIHZhciBjYXB0dXJlO1xuICAgICAgc3dpdGNoIChjaC5jaGFyQXQoMCkpIHtcbiAgICAgICAgY2FzZSAnJCc6IHJldHVybiAnJCc7XG4gICAgICAgIGNhc2UgJyYnOiByZXR1cm4gbWF0Y2hlZDtcbiAgICAgICAgY2FzZSAnYCc6IHJldHVybiBzdHIuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgICBjYXNlIFwiJ1wiOiByZXR1cm4gc3RyLnNsaWNlKHRhaWxQb3MpO1xuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICBjYXB0dXJlID0gbmFtZWRDYXB0dXJlc1tjaC5zbGljZSgxLCAtMSldO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiAvLyBcXGRcXGQ/XG4gICAgICAgICAgdmFyIG4gPSArY2g7XG4gICAgICAgICAgaWYgKG4gPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICBpZiAobiA+IG0pIHtcbiAgICAgICAgICAgIHZhciBmID0gZmxvb3IobiAvIDEwKTtcbiAgICAgICAgICAgIGlmIChmID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICBpZiAoZiA8PSBtKSByZXR1cm4gY2FwdHVyZXNbZiAtIDFdID09PSB1bmRlZmluZWQgPyBjaC5jaGFyQXQoMSkgOiBjYXB0dXJlc1tmIC0gMV0gKyBjaC5jaGFyQXQoMSk7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tuIC0gMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FwdHVyZSA9PT0gdW5kZWZpbmVkID8gJycgOiBjYXB0dXJlO1xuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgc2FtZVZhbHVlID0gcmVxdWlyZSgnLi9fc2FtZS12YWx1ZScpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xuXG4vLyBAQHNlYXJjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdzZWFyY2gnLCAxLCBmdW5jdGlvbiAoZGVmaW5lZCwgU0VBUkNILCAkc2VhcmNoLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zZWFyY2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc2VhcmNoXG4gICAgZnVuY3Rpb24gc2VhcmNoKHJlZ2V4cCkge1xuICAgICAgdmFyIE8gPSBkZWZpbmVkKHRoaXMpO1xuICAgICAgdmFyIGZuID0gcmVnZXhwID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHJlZ2V4cFtTRUFSQ0hdO1xuICAgICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbU0VBUkNIXShTdHJpbmcoTykpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEBzZWFyY2hdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAc2VhcmNoXG4gICAgZnVuY3Rpb24gKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZSgkc2VhcmNoLCByZWdleHAsIHRoaXMpO1xuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuICAgICAgdmFyIHByZXZpb3VzTGFzdEluZGV4ID0gcngubGFzdEluZGV4O1xuICAgICAgaWYgKCFzYW1lVmFsdWUocHJldmlvdXNMYXN0SW5kZXgsIDApKSByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIHJlc3VsdCA9IHJlZ0V4cEV4ZWMocngsIFMpO1xuICAgICAgaWYgKCFzYW1lVmFsdWUocngubGFzdEluZGV4LCBwcmV2aW91c0xhc3RJbmRleCkpIHJ4Lmxhc3RJbmRleCA9IHByZXZpb3VzTGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gbnVsbCA/IC0xIDogcmVzdWx0LmluZGV4O1xuICAgIH1cbiAgXTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuL19hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgY2FsbFJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuL19yZWdleHAtZXhlYycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciAkbWluID0gTWF0aC5taW47XG52YXIgJHB1c2ggPSBbXS5wdXNoO1xudmFyICRTUExJVCA9ICdzcGxpdCc7XG52YXIgTEVOR1RIID0gJ2xlbmd0aCc7XG52YXIgTEFTVF9JTkRFWCA9ICdsYXN0SW5kZXgnO1xudmFyIE1BWF9VSU5UMzIgPSAweGZmZmZmZmZmO1xuXG4vLyBiYWJlbC1taW5pZnkgdHJhbnNwaWxlcyBSZWdFeHAoJ3gnLCAneScpIC0+IC94L3kgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvclxudmFyIFNVUFBPUlRTX1kgPSAhZmFpbHMoZnVuY3Rpb24gKCkgeyBSZWdFeHAoTUFYX1VJTlQzMiwgJ3knKTsgfSk7XG5cbi8vIEBAc3BsaXQgbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgnc3BsaXQnLCAyLCBmdW5jdGlvbiAoZGVmaW5lZCwgU1BMSVQsICRzcGxpdCwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHZhciBpbnRlcm5hbFNwbGl0O1xuICBpZiAoXG4gICAgJ2FiYmMnWyRTUExJVF0oLyhiKSovKVsxXSA9PSAnYycgfHxcbiAgICAndGVzdCdbJFNQTElUXSgvKD86KS8sIC0xKVtMRU5HVEhdICE9IDQgfHxcbiAgICAnYWInWyRTUExJVF0oLyg/OmFiKSovKVtMRU5HVEhdICE9IDIgfHxcbiAgICAnLidbJFNQTElUXSgvKC4/KSguPykvKVtMRU5HVEhdICE9IDQgfHxcbiAgICAnLidbJFNQTElUXSgvKCkoKS8pW0xFTkdUSF0gPiAxIHx8XG4gICAgJydbJFNQTElUXSgvLj8vKVtMRU5HVEhdXG4gICkge1xuICAgIC8vIGJhc2VkIG9uIGVzNS1zaGltIGltcGxlbWVudGF0aW9uLCBuZWVkIHRvIHJld29yayBpdFxuICAgIGludGVybmFsU3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgdmFyIHN0cmluZyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCAmJiBsaW1pdCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBuYXRpdmUgc3BsaXRcbiAgICAgIGlmICghaXNSZWdFeHAoc2VwYXJhdG9yKSkgcmV0dXJuICRzcGxpdC5jYWxsKHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIHNwbGl0TGltaXQgPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gTUFYX1VJTlQzMiA6IGxpbWl0ID4+PiAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICAgIHdoaWxlIChtYXRjaCA9IHJlZ2V4cEV4ZWMuY2FsbChzZXBhcmF0b3JDb3B5LCBzdHJpbmcpKSB7XG4gICAgICAgIGxhc3RJbmRleCA9IHNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF07XG4gICAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgICAgb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgICAgaWYgKG1hdGNoW0xFTkdUSF0gPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyaW5nW0xFTkdUSF0pICRwdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXVtMRU5HVEhdO1xuICAgICAgICAgIGxhc3RMYXN0SW5kZXggPSBsYXN0SW5kZXg7XG4gICAgICAgICAgaWYgKG91dHB1dFtMRU5HVEhdID49IHNwbGl0TGltaXQpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXBhcmF0b3JDb3B5W0xBU1RfSU5ERVhdID09PSBtYXRjaC5pbmRleCkgc2VwYXJhdG9yQ29weVtMQVNUX0lOREVYXSsrOyAvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wXG4gICAgICB9XG4gICAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyaW5nW0xFTkdUSF0pIHtcbiAgICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvckNvcHkudGVzdCgnJykpIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIH0gZWxzZSBvdXRwdXQucHVzaChzdHJpbmcuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgICAgcmV0dXJuIG91dHB1dFtMRU5HVEhdID4gc3BsaXRMaW1pdCA/IG91dHB1dC5zbGljZSgwLCBzcGxpdExpbWl0KSA6IG91dHB1dDtcbiAgICB9O1xuICAvLyBDaGFrcmEsIFY4XG4gIH0gZWxzZSBpZiAoJzAnWyRTUExJVF0odW5kZWZpbmVkLCAwKVtMRU5HVEhdKSB7XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICByZXR1cm4gc2VwYXJhdG9yID09PSB1bmRlZmluZWQgJiYgbGltaXQgPT09IDAgPyBbXSA6ICRzcGxpdC5jYWxsKHRoaXMsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgaW50ZXJuYWxTcGxpdCA9ICRzcGxpdDtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUuc3BsaXRgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc3BsaXRcbiAgICBmdW5jdGlvbiBzcGxpdChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgTyA9IGRlZmluZWQodGhpcyk7XG4gICAgICB2YXIgc3BsaXR0ZXIgPSBzZXBhcmF0b3IgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VwYXJhdG9yW1NQTElUXTtcbiAgICAgIHJldHVybiBzcGxpdHRlciAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gc3BsaXR0ZXIuY2FsbChzZXBhcmF0b3IsIE8sIGxpbWl0KVxuICAgICAgICA6IGludGVybmFsU3BsaXQuY2FsbChTdHJpbmcoTyksIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEBzcGxpdFxuICAgIC8vXG4gICAgLy8gTk9URTogVGhpcyBjYW5ub3QgYmUgcHJvcGVybHkgcG9seWZpbGxlZCBpbiBlbmdpbmVzIHRoYXQgZG9uJ3Qgc3VwcG9ydFxuICAgIC8vIHRoZSAneScgZmxhZy5cbiAgICBmdW5jdGlvbiAocmVnZXhwLCBsaW1pdCkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZShpbnRlcm5hbFNwbGl0LCByZWdleHAsIHRoaXMsIGxpbWl0LCBpbnRlcm5hbFNwbGl0ICE9PSAkc3BsaXQpO1xuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG4gICAgICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgUmVnRXhwKTtcblxuICAgICAgdmFyIHVuaWNvZGVNYXRjaGluZyA9IHJ4LnVuaWNvZGU7XG4gICAgICB2YXIgZmxhZ3MgPSAocnguaWdub3JlQ2FzZSA/ICdpJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAocngubXVsdGlsaW5lID8gJ20nIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChyeC51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChTVVBQT1JUU19ZID8gJ3knIDogJ2cnKTtcblxuICAgICAgLy8gXig/ICsgcnggKyApIGlzIG5lZWRlZCwgaW4gY29tYmluYXRpb24gd2l0aCBzb21lIFMgc2xpY2luZywgdG9cbiAgICAgIC8vIHNpbXVsYXRlIHRoZSAneScgZmxhZy5cbiAgICAgIHZhciBzcGxpdHRlciA9IG5ldyBDKFNVUFBPUlRTX1kgPyByeCA6ICdeKD86JyArIHJ4LnNvdXJjZSArICcpJywgZmxhZ3MpO1xuICAgICAgdmFyIGxpbSA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfVUlOVDMyIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAobGltID09PSAwKSByZXR1cm4gW107XG4gICAgICBpZiAoUy5sZW5ndGggPT09IDApIHJldHVybiBjYWxsUmVnRXhwRXhlYyhzcGxpdHRlciwgUykgPT09IG51bGwgPyBbU10gOiBbXTtcbiAgICAgIHZhciBwID0gMDtcbiAgICAgIHZhciBxID0gMDtcbiAgICAgIHZhciBBID0gW107XG4gICAgICB3aGlsZSAocSA8IFMubGVuZ3RoKSB7XG4gICAgICAgIHNwbGl0dGVyLmxhc3RJbmRleCA9IFNVUFBPUlRTX1kgPyBxIDogMDtcbiAgICAgICAgdmFyIHogPSBjYWxsUmVnRXhwRXhlYyhzcGxpdHRlciwgU1VQUE9SVFNfWSA/IFMgOiBTLnNsaWNlKHEpKTtcbiAgICAgICAgdmFyIGU7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB6ID09PSBudWxsIHx8XG4gICAgICAgICAgKGUgPSAkbWluKHRvTGVuZ3RoKHNwbGl0dGVyLmxhc3RJbmRleCArIChTVVBQT1JUU19ZID8gMCA6IHEpKSwgUy5sZW5ndGgpKSA9PT0gcFxuICAgICAgICApIHtcbiAgICAgICAgICBxID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVuaWNvZGVNYXRjaGluZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQS5wdXNoKFMuc2xpY2UocCwgcSkpO1xuICAgICAgICAgIGlmIChBLmxlbmd0aCA9PT0gbGltKSByZXR1cm4gQTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSB6Lmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgQS5wdXNoKHpbaV0pO1xuICAgICAgICAgICAgaWYgKEEubGVuZ3RoID09PSBsaW0pIHJldHVybiBBO1xuICAgICAgICAgIH1cbiAgICAgICAgICBxID0gcCA9IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEEucHVzaChTLnNsaWNlKHApKTtcbiAgICAgIHJldHVybiBBO1xuICAgIH1cbiAgXTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi9lczYucmVnZXhwLmZsYWdzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciAkZmxhZ3MgPSByZXF1aXJlKCcuL19mbGFncycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyICR0b1N0cmluZyA9IC8uL1tUT19TVFJJTkddO1xuXG52YXIgZGVmaW5lID0gZnVuY3Rpb24gKGZuKSB7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoUmVnRXhwLnByb3RvdHlwZSwgVE9fU1RSSU5HLCBmbiwgdHJ1ZSk7XG59O1xuXG4vLyAyMS4yLjUuMTQgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZygpXG5pZiAocmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7IHJldHVybiAkdG9TdHJpbmcuY2FsbCh7IHNvdXJjZTogJ2EnLCBmbGFnczogJ2InIH0pICE9ICcvYS9iJzsgfSkpIHtcbiAgZGVmaW5lKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgcmV0dXJuICcvJy5jb25jYXQoUi5zb3VyY2UsICcvJyxcbiAgICAgICdmbGFncycgaW4gUiA/IFIuZmxhZ3MgOiAhREVTQ1JJUFRPUlMgJiYgUiBpbnN0YW5jZW9mIFJlZ0V4cCA/ICRmbGFncy5jYWxsKFIpIDogdW5kZWZpbmVkKTtcbiAgfSk7XG4vLyBGRjQ0LSBSZWdFeHAjdG9TdHJpbmcgaGFzIGEgd3JvbmcgbmFtZVxufSBlbHNlIGlmICgkdG9TdHJpbmcubmFtZSAhPSBUT19TVFJJTkcpIHtcbiAgZGVmaW5lKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAkdG9TdHJpbmcuY2FsbCh0aGlzKTtcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgc3Ryb25nID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi1zdHJvbmcnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBTRVQgPSAnU2V0JztcblxuLy8gMjMuMiBTZXQgT2JqZWN0c1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoU0VULCBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBTZXQoKSB7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9O1xufSwge1xuICAvLyAyMy4yLjMuMSBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSlcbiAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICByZXR1cm4gc3Ryb25nLmRlZih2YWxpZGF0ZSh0aGlzLCBTRVQpLCB2YWx1ZSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlLCB2YWx1ZSk7XG4gIH1cbn0sIHN0cm9uZyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4yIFN0cmluZy5wcm90b3R5cGUuYW5jaG9yKG5hbWUpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdhbmNob3InLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYW5jaG9yKG5hbWUpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYScsICduYW1lJywgbmFtZSk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjMgU3RyaW5nLnByb3RvdHlwZS5iaWcoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYmlnJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJpZygpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYmlnJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNCBTdHJpbmcucHJvdG90eXBlLmJsaW5rKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2JsaW5rJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJsaW5rKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdibGluaycsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjUgU3RyaW5nLnByb3RvdHlwZS5ib2xkKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2JvbGQnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gYm9sZCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYicsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykoZmFsc2UpO1xuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIC8vIDIxLjEuMy4zIFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXQocG9zKVxuICBjb2RlUG9pbnRBdDogZnVuY3Rpb24gY29kZVBvaW50QXQocG9zKSB7XG4gICAgcmV0dXJuICRhdCh0aGlzLCBwb3MpO1xuICB9XG59KTtcbiIsIi8vIDIxLjEuMy42IFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGgoc2VhcmNoU3RyaW5nIFssIGVuZFBvc2l0aW9uXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBFTkRTX1dJVEggPSAnZW5kc1dpdGgnO1xudmFyICRlbmRzV2l0aCA9ICcnW0VORFNfV0lUSF07XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMtaXMtcmVnZXhwJykoRU5EU19XSVRIKSwgJ1N0cmluZycsIHtcbiAgZW5kc1dpdGg6IGZ1bmN0aW9uIGVuZHNXaXRoKHNlYXJjaFN0cmluZyAvKiAsIGVuZFBvc2l0aW9uID0gQGxlbmd0aCAqLykge1xuICAgIHZhciB0aGF0ID0gY29udGV4dCh0aGlzLCBzZWFyY2hTdHJpbmcsIEVORFNfV0lUSCk7XG4gICAgdmFyIGVuZFBvc2l0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIGxlbiA9IHRvTGVuZ3RoKHRoYXQubGVuZ3RoKTtcbiAgICB2YXIgZW5kID0gZW5kUG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IGxlbiA6IE1hdGgubWluKHRvTGVuZ3RoKGVuZFBvc2l0aW9uKSwgbGVuKTtcbiAgICB2YXIgc2VhcmNoID0gU3RyaW5nKHNlYXJjaFN0cmluZyk7XG4gICAgcmV0dXJuICRlbmRzV2l0aFxuICAgICAgPyAkZW5kc1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGVuZClcbiAgICAgIDogdGhhdC5zbGljZShlbmQgLSBzZWFyY2gubGVuZ3RoLCBlbmQpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNiBTdHJpbmcucHJvdG90eXBlLmZpeGVkKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2ZpeGVkJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZpeGVkKCkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICd0dCcsICcnLCAnJyk7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjcgU3RyaW5nLnByb3RvdHlwZS5mb250Y29sb3IoY29sb3IpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmb250Y29sb3InLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gZm9udGNvbG9yKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnY29sb3InLCBjb2xvcik7XG4gIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjggU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShzaXplKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnZm9udHNpemUnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gZm9udHNpemUoc2l6ZSkge1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdmb250JywgJ3NpemUnLCBzaXplKTtcbiAgfTtcbn0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG52YXIgJGZyb21Db2RlUG9pbnQgPSBTdHJpbmcuZnJvbUNvZGVQb2ludDtcblxuLy8gbGVuZ3RoIHNob3VsZCBiZSAxLCBvbGQgRkYgcHJvYmxlbVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoISEkZnJvbUNvZGVQb2ludCAmJiAkZnJvbUNvZGVQb2ludC5sZW5ndGggIT0gMSksICdTdHJpbmcnLCB7XG4gIC8vIDIxLjEuMi4yIFN0cmluZy5mcm9tQ29kZVBvaW50KC4uLmNvZGVQb2ludHMpXG4gIGZyb21Db2RlUG9pbnQ6IGZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoeCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGNvZGU7XG4gICAgd2hpbGUgKGFMZW4gPiBpKSB7XG4gICAgICBjb2RlID0gK2FyZ3VtZW50c1tpKytdO1xuICAgICAgaWYgKHRvQWJzb2x1dGVJbmRleChjb2RlLCAweDEwZmZmZikgIT09IGNvZGUpIHRocm93IFJhbmdlRXJyb3IoY29kZSArICcgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCcpO1xuICAgICAgcmVzLnB1c2goY29kZSA8IDB4MTAwMDBcbiAgICAgICAgPyBmcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgICAgOiBmcm9tQ2hhckNvZGUoKChjb2RlIC09IDB4MTAwMDApID4+IDEwKSArIDB4ZDgwMCwgY29kZSAlIDB4NDAwICsgMHhkYzAwKVxuICAgICAgKTtcbiAgICB9IHJldHVybiByZXMuam9pbignJyk7XG4gIH1cbn0pO1xuIiwiLy8gMjEuMS4zLjcgU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyhzZWFyY2hTdHJpbmcsIHBvc2l0aW9uID0gMClcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29udGV4dCA9IHJlcXVpcmUoJy4vX3N0cmluZy1jb250ZXh0Jyk7XG52YXIgSU5DTFVERVMgPSAnaW5jbHVkZXMnO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzLWlzLXJlZ2V4cCcpKElOQ0xVREVTKSwgJ1N0cmluZycsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHJldHVybiAhIX5jb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgSU5DTFVERVMpXG4gICAgICAuaW5kZXhPZihzZWFyY2hTdHJpbmcsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy45IFN0cmluZy5wcm90b3R5cGUuaXRhbGljcygpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdpdGFsaWNzJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGl0YWxpY3MoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2knLCAnJywgJycpO1xuICB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjEwIFN0cmluZy5wcm90b3R5cGUubGluayh1cmwpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdsaW5rJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGxpbmsodXJsKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2EnLCAnaHJlZicsIHVybCk7XG4gIH07XG59KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjIuNCBTdHJpbmcucmF3KGNhbGxTaXRlLCAuLi5zdWJzdGl0dXRpb25zKVxuICByYXc6IGZ1bmN0aW9uIHJhdyhjYWxsU2l0ZSkge1xuICAgIHZhciB0cGwgPSB0b0lPYmplY3QoY2FsbFNpdGUucmF3KTtcbiAgICB2YXIgbGVuID0gdG9MZW5ndGgodHBsLmxlbmd0aCk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKGxlbiA+IGkpIHtcbiAgICAgIHJlcy5wdXNoKFN0cmluZyh0cGxbaSsrXSkpO1xuICAgICAgaWYgKGkgPCBhTGVuKSByZXMucHVzaChTdHJpbmcoYXJndW1lbnRzW2ldKSk7XG4gICAgfSByZXR1cm4gcmVzLmpvaW4oJycpO1xuICB9XG59KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjMuMTMgU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQoY291bnQpXG4gIHJlcGVhdDogcmVxdWlyZSgnLi9fc3RyaW5nLXJlcGVhdCcpXG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjExIFN0cmluZy5wcm90b3R5cGUuc21hbGwoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc21hbGwnLCBmdW5jdGlvbiAoY3JlYXRlSFRNTCkge1xuICByZXR1cm4gZnVuY3Rpb24gc21hbGwoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ3NtYWxsJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiLy8gMjEuMS4zLjE4IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcgWywgcG9zaXRpb24gXSlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjb250ZXh0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWNvbnRleHQnKTtcbnZhciBTVEFSVFNfV0lUSCA9ICdzdGFydHNXaXRoJztcbnZhciAkc3RhcnRzV2l0aCA9ICcnW1NUQVJUU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShTVEFSVFNfV0lUSCksICdTdHJpbmcnLCB7XG4gIHN0YXJ0c1dpdGg6IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgdmFyIHRoYXQgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgU1RBUlRTX1dJVEgpO1xuICAgIHZhciBpbmRleCA9IHRvTGVuZ3RoKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0aGF0Lmxlbmd0aCkpO1xuICAgIHZhciBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJHN0YXJ0c1dpdGhcbiAgICAgID8gJHN0YXJ0c1dpdGguY2FsbCh0aGF0LCBzZWFyY2gsIGluZGV4KVxuICAgICAgOiB0aGF0LnNsaWNlKGluZGV4LCBpbmRleCArIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTIgU3RyaW5nLnByb3RvdHlwZS5zdHJpa2UoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3RyaWtlJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHN0cmlrZSgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3RyaWtlJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTMgU3RyaW5nLnByb3RvdHlwZS5zdWIoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3ViJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHN1YigpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3ViJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTQgU3RyaW5nLnByb3RvdHlwZS5zdXAoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3VwJywgZnVuY3Rpb24gKGNyZWF0ZUhUTUwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHN1cCgpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3VwJywgJycsICcnKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjEuMS4zLjI1IFN0cmluZy5wcm90b3R5cGUudHJpbSgpXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltJywgZnVuY3Rpb24gKCR0cmltKSB7XG4gIHJldHVybiBmdW5jdGlvbiB0cmltKCkge1xuICAgIHJldHVybiAkdHJpbSh0aGlzLCAzKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gRUNNQVNjcmlwdCA2IHN5bWJvbHMgc2hpbVxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIE1FVEEgPSByZXF1aXJlKCcuL19tZXRhJykuS0VZO1xudmFyICRmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciB3a3NEZWZpbmUgPSByZXF1aXJlKCcuL193a3MtZGVmaW5lJyk7XG52YXIgZW51bUtleXMgPSByZXF1aXJlKCcuL19lbnVtLWtleXMnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIF9jcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZ09QTkV4dCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuLWV4dCcpO1xudmFyICRHT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkR09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgJERQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUEQgPSAkR09QRC5mO1xudmFyIGRQID0gJERQLmY7XG52YXIgZ09QTiA9IGdPUE5FeHQuZjtcbnZhciAkU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciAkSlNPTiA9IGdsb2JhbC5KU09OO1xudmFyIF9zdHJpbmdpZnkgPSAkSlNPTiAmJiAkSlNPTi5zdHJpbmdpZnk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgSElEREVOID0gd2tzKCdfaGlkZGVuJyk7XG52YXIgVE9fUFJJTUlUSVZFID0gd2tzKCd0b1ByaW1pdGl2ZScpO1xudmFyIGlzRW51bSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKTtcbnZhciBBbGxTeW1ib2xzID0gc2hhcmVkKCdzeW1ib2xzJyk7XG52YXIgT1BTeW1ib2xzID0gc2hhcmVkKCdvcC1zeW1ib2xzJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3RbUFJPVE9UWVBFXTtcbnZhciBVU0VfTkFUSVZFID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJyAmJiAhISRHT1BTLmY7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gICRHT1BTLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiAhcmVxdWlyZSgnLi9fbGlicmFyeScpKSB7XG4gICAgcmVkZWZpbmUoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG4gIH1cblxuICB3a3NFeHQuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2tzKG5hbWUpKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBTeW1ib2w6ICRTeW1ib2wgfSk7XG5cbmZvciAodmFyIGVzNlN5bWJvbHMgPSAoXG4gIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0XG4gICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgaiA9IDA7IGVzNlN5bWJvbHMubGVuZ3RoID4gajspd2tzKGVzNlN5bWJvbHNbaisrXSk7XG5cbmZvciAodmFyIHdlbGxLbm93blN5bWJvbHMgPSAka2V5cyh3a3Muc3RvcmUpLCBrID0gMDsgd2VsbEtub3duU3ltYm9scy5sZW5ndGggPiBrOykgd2tzRGVmaW5lKHdlbGxLbm93blN5bWJvbHNbaysrXSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7XG4gIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuICAnZm9yJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcbiAgICAgID8gU3ltYm9sUmVnaXN0cnlba2V5XVxuICAgICAgOiBTeW1ib2xSZWdpc3RyeVtrZXldID0gJFN5bWJvbChrZXkpO1xuICB9LFxuICAvLyAxOS40LjIuNSBTeW1ib2wua2V5Rm9yKHN5bSlcbiAga2V5Rm9yOiBmdW5jdGlvbiBrZXlGb3Ioc3ltKSB7XG4gICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBUeXBlRXJyb3Ioc3ltICsgJyBpcyBub3QgYSBzeW1ib2whJyk7XG4gICAgZm9yICh2YXIga2V5IGluIFN5bWJvbFJlZ2lzdHJ5KSBpZiAoU3ltYm9sUmVnaXN0cnlba2V5XSA9PT0gc3ltKSByZXR1cm4ga2V5O1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gdHJ1ZTsgfSxcbiAgdXNlU2ltcGxlOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IGZhbHNlOyB9XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ09iamVjdCcsIHtcbiAgLy8gMTkuMS4yLjIgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuICBjcmVhdGU6ICRjcmVhdGUsXG4gIC8vIDE5LjEuMi40IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuICBkZWZpbmVQcm9wZXJ0eTogJGRlZmluZVByb3BlcnR5LFxuICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcbiAgLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gIC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG4gIGdldE93blByb3BlcnR5TmFtZXM6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzLFxuICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pXG4gIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xufSk7XG5cbi8vIENocm9tZSAzOCBhbmQgMzkgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgIGZhaWxzIG9uIHByaW1pdGl2ZXNcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTM0NDNcbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gJGZhaWxzKGZ1bmN0aW9uICgpIHsgJEdPUFMuZigxKTsgfSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogRkFJTFNfT05fUFJJTUlUSVZFUywgJ09iamVjdCcsIHtcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgICByZXR1cm4gJEdPUFMuZih0b09iamVjdChpdCkpO1xuICB9XG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICR0eXBlZCA9IHJlcXVpcmUoJy4vX3R5cGVkJyk7XG52YXIgYnVmZmVyID0gcmVxdWlyZSgnLi9fdHlwZWQtYnVmZmVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLkFycmF5QnVmZmVyO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciAkQXJyYXlCdWZmZXIgPSBidWZmZXIuQXJyYXlCdWZmZXI7XG52YXIgJERhdGFWaWV3ID0gYnVmZmVyLkRhdGFWaWV3O1xudmFyICRpc1ZpZXcgPSAkdHlwZWQuQUJWICYmIEFycmF5QnVmZmVyLmlzVmlldztcbnZhciAkc2xpY2UgPSAkQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlO1xudmFyIFZJRVcgPSAkdHlwZWQuVklFVztcbnZhciBBUlJBWV9CVUZGRVIgPSAnQXJyYXlCdWZmZXInO1xuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqIChBcnJheUJ1ZmZlciAhPT0gJEFycmF5QnVmZmVyKSwgeyBBcnJheUJ1ZmZlcjogJEFycmF5QnVmZmVyIH0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEkdHlwZWQuQ09OU1RSLCBBUlJBWV9CVUZGRVIsIHtcbiAgLy8gMjQuMS4zLjEgQXJyYXlCdWZmZXIuaXNWaWV3KGFyZylcbiAgaXNWaWV3OiBmdW5jdGlvbiBpc1ZpZXcoaXQpIHtcbiAgICByZXR1cm4gJGlzVmlldyAmJiAkaXNWaWV3KGl0KSB8fCBpc09iamVjdChpdCkgJiYgVklFVyBpbiBpdDtcbiAgfVxufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5VICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhbmV3ICRBcnJheUJ1ZmZlcigyKS5zbGljZSgxLCB1bmRlZmluZWQpLmJ5dGVMZW5ndGg7XG59KSwgQVJSQVlfQlVGRkVSLCB7XG4gIC8vIDI0LjEuNC4zIEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZShzdGFydCwgZW5kKVxuICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIGlmICgkc2xpY2UgIT09IHVuZGVmaW5lZCAmJiBlbmQgPT09IHVuZGVmaW5lZCkgcmV0dXJuICRzbGljZS5jYWxsKGFuT2JqZWN0KHRoaXMpLCBzdGFydCk7IC8vIEZGIGZpeFxuICAgIHZhciBsZW4gPSBhbk9iamVjdCh0aGlzKS5ieXRlTGVuZ3RoO1xuICAgIHZhciBmaXJzdCA9IHRvQWJzb2x1dGVJbmRleChzdGFydCwgbGVuKTtcbiAgICB2YXIgZmluID0gdG9BYnNvbHV0ZUluZGV4KGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogZW5kLCBsZW4pO1xuICAgIHZhciByZXN1bHQgPSBuZXcgKHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkQXJyYXlCdWZmZXIpKSh0b0xlbmd0aChmaW4gLSBmaXJzdCkpO1xuICAgIHZhciB2aWV3UyA9IG5ldyAkRGF0YVZpZXcodGhpcyk7XG4gICAgdmFyIHZpZXdUID0gbmV3ICREYXRhVmlldyhyZXN1bHQpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGZpcnN0IDwgZmluKSB7XG4gICAgICB2aWV3VC5zZXRVaW50OChpbmRleCsrLCB2aWV3Uy5nZXRVaW50OChmaXJzdCsrKSk7XG4gICAgfSByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcblxucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShBUlJBWV9CVUZGRVIpO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3R5cGVkJykuQUJWLCB7XG4gIERhdGFWaWV3OiByZXF1aXJlKCcuL190eXBlZC1idWZmZXInKS5EYXRhVmlld1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdGbG9hdDMyJywgNCwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEZsb2F0MzJBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdGbG9hdDY0JywgOCwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEZsb2F0NjRBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdJbnQxNicsIDIsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0ludDMyJywgNCwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEludDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnSW50OCcsIDEsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQ4QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pO1xuIiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDE2JywgMiwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQzMicsIDQsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50MzJBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG4iLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50OCcsIDEsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcbiIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQ4JywgMSwgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4Q2xhbXBlZEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59LCB0cnVlKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBlYWNoID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDApO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi9fbWV0YScpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4vX29iamVjdC1hc3NpZ24nKTtcbnZhciB3ZWFrID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi13ZWFrJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgSVNfSUUxMSA9ICFnbG9iYWwuQWN0aXZlWE9iamVjdCAmJiAnQWN0aXZlWE9iamVjdCcgaW4gZ2xvYmFsO1xudmFyIFdFQUtfTUFQID0gJ1dlYWtNYXAnO1xudmFyIGdldFdlYWsgPSBtZXRhLmdldFdlYWs7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcbnZhciB1bmNhdWdodEZyb3plblN0b3JlID0gd2Vhay51ZnN0b3JlO1xudmFyIEludGVybmFsTWFwO1xuXG52YXIgd3JhcHBlciA9IGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFdlYWtNYXAoKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7XG4gIH07XG59O1xuXG52YXIgbWV0aG9kcyA9IHtcbiAgLy8gMjMuMy4zLjMgV2Vha01hcC5wcm90b3R5cGUuZ2V0KGtleSlcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgaWYgKGlzT2JqZWN0KGtleSkpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0V2VhayhrZXkpO1xuICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHZhbGlkYXRlKHRoaXMsIFdFQUtfTUFQKSkuZ2V0KGtleSk7XG4gICAgICByZXR1cm4gZGF0YSA/IGRhdGFbdGhpcy5faV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9LFxuICAvLyAyMy4zLjMuNSBXZWFrTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiB3ZWFrLmRlZih2YWxpZGF0ZSh0aGlzLCBXRUFLX01BUCksIGtleSwgdmFsdWUpO1xuICB9XG59O1xuXG4vLyAyMy4zIFdlYWtNYXAgT2JqZWN0c1xudmFyICRXZWFrTWFwID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoV0VBS19NQVAsIHdyYXBwZXIsIG1ldGhvZHMsIHdlYWssIHRydWUsIHRydWUpO1xuXG4vLyBJRTExIFdlYWtNYXAgZnJvemVuIGtleXMgZml4XG5pZiAoTkFUSVZFX1dFQUtfTUFQICYmIElTX0lFMTEpIHtcbiAgSW50ZXJuYWxNYXAgPSB3ZWFrLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIFdFQUtfTUFQKTtcbiAgYXNzaWduKEludGVybmFsTWFwLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gIG1ldGEuTkVFRCA9IHRydWU7XG4gIGVhY2goWydkZWxldGUnLCAnaGFzJywgJ2dldCcsICdzZXQnXSwgZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBwcm90byA9ICRXZWFrTWFwLnByb3RvdHlwZTtcbiAgICB2YXIgbWV0aG9kID0gcHJvdG9ba2V5XTtcbiAgICByZWRlZmluZShwcm90bywga2V5LCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgLy8gc3RvcmUgZnJvemVuIG9iamVjdHMgb24gaW50ZXJuYWwgd2Vha21hcCBzaGltXG4gICAgICBpZiAoaXNPYmplY3QoYSkgJiYgIWlzRXh0ZW5zaWJsZShhKSkge1xuICAgICAgICBpZiAoIXRoaXMuX2YpIHRoaXMuX2YgPSBuZXcgSW50ZXJuYWxNYXAoKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2Zba2V5XShhLCBiKTtcbiAgICAgICAgcmV0dXJuIGtleSA9PSAnc2V0JyA/IHRoaXMgOiByZXN1bHQ7XG4gICAgICAvLyBzdG9yZSBhbGwgdGhlIHJlc3Qgb24gbmF0aXZlIHdlYWttYXBcbiAgICAgIH0gcmV0dXJuIG1ldGhvZC5jYWxsKHRoaXMsIGEsIGIpO1xuICAgIH0pO1xuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWFrID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi13ZWFrJyk7XG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL192YWxpZGF0ZS1jb2xsZWN0aW9uJyk7XG52YXIgV0VBS19TRVQgPSAnV2Vha1NldCc7XG5cbi8vIDIzLjQgV2Vha1NldCBPYmplY3RzXG5yZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoV0VBS19TRVQsIGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFdlYWtTZXQoKSB7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9O1xufSwge1xuICAvLyAyMy40LjMuMSBXZWFrU2V0LnByb3RvdHlwZS5hZGQodmFsdWUpXG4gIGFkZDogZnVuY3Rpb24gYWRkKHZhbHVlKSB7XG4gICAgcmV0dXJuIHdlYWsuZGVmKHZhbGlkYXRlKHRoaXMsIFdFQUtfU0VUKSwgdmFsdWUsIHRydWUpO1xuICB9XG59LCB3ZWFrLCBmYWxzZSwgdHJ1ZSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLWZsYXRNYXAvI3NlYy1BcnJheS5wcm90b3R5cGUuZmxhdE1hcFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gcmVxdWlyZSgnLi9fZmxhdHRlbi1pbnRvLWFycmF5Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge1xuICBmbGF0TWFwOiBmdW5jdGlvbiBmbGF0TWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgc291cmNlTGVuLCBBO1xuICAgIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgICBzb3VyY2VMZW4gPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICBmbGF0dGVuSW50b0FycmF5KEEsIE8sIE8sIHNvdXJjZUxlbiwgMCwgMSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdmbGF0TWFwJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9BcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiAkaW5jbHVkZXModGhpcywgZWwsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKCdpbmNsdWRlcycpO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LXZhbHVlcy1lbnRyaWVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRlbnRyaWVzID0gcmVxdWlyZSgnLi9fb2JqZWN0LXRvLWFycmF5JykodHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKGl0KSB7XG4gICAgcmV0dXJuICRlbnRyaWVzKGl0KTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi9fb3duLWtleXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QRCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgICB2YXIgZ2V0RGVzYyA9IGdPUEQuZjtcbiAgICB2YXIga2V5cyA9IG93bktleXMoTyk7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5LCBkZXNjO1xuICAgIHdoaWxlIChrZXlzLmxlbmd0aCA+IGkpIHtcbiAgICAgIGRlc2MgPSBnZXREZXNjKE8sIGtleSA9IGtleXNbaSsrXSk7XG4gICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkKSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGtleSwgZGVzYyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JqZWN0LXZhbHVlcy1lbnRyaWVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICR2YWx1ZXMgPSByZXF1aXJlKCcuL19vYmplY3QtdG8tYXJyYXknKShmYWxzZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcyhpdCkge1xuICAgIHJldHVybiAkdmFsdWVzKGl0KTtcbiAgfVxufSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLWZpbmFsbHlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdQcm9taXNlJywgeyAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKTtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Ygb25GaW5hbGx5ID09ICdmdW5jdGlvbic7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgfSA6IG9uRmluYWxseSxcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHlcbiAgKTtcbn0gfSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1zdHJpbmctcGFkLXN0YXJ0LWVuZFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkcGFkID0gcmVxdWlyZSgnLi9fc3RyaW5nLXBhZCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzI4MFxudmFyIFdFQktJVF9CVUcgPSAvVmVyc2lvblxcLzEwXFwuXFxkKyhcXC5cXGQrKT8oIE1vYmlsZVxcL1xcdyspPyBTYWZhcmlcXC8vLnRlc3QodXNlckFnZW50KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBXRUJLSVRfQlVHLCAnU3RyaW5nJywge1xuICBwYWRFbmQ6IGZ1bmN0aW9uIHBhZEVuZChtYXhMZW5ndGggLyogLCBmaWxsU3RyaW5nID0gJyAnICovKSB7XG4gICAgcmV0dXJuICRwYWQodGhpcywgbWF4TGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgZmFsc2UpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyICRwYWQgPSByZXF1aXJlKCcuL19zdHJpbmctcGFkJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMjgwXG52YXIgV0VCS0lUX0JVRyA9IC9WZXJzaW9uXFwvMTBcXC5cXGQrKFxcLlxcZCspPyggTW9iaWxlXFwvXFx3Kyk/IFNhZmFyaVxcLy8udGVzdCh1c2VyQWdlbnQpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIFdFQktJVF9CVUcsICdTdHJpbmcnLCB7XG4gIHBhZFN0YXJ0OiBmdW5jdGlvbiBwYWRTdGFydChtYXhMZW5ndGggLyogLCBmaWxsU3RyaW5nID0gJyAnICovKSB7XG4gICAgcmV0dXJuICRwYWQodGhpcywgbWF4TGVuZ3RoLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3NlYm1hcmtiYWdlL2VjbWFzY3JpcHQtc3RyaW5nLWxlZnQtcmlnaHQtdHJpbVxucmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKSgndHJpbUxlZnQnLCBmdW5jdGlvbiAoJHRyaW0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW1MZWZ0KCkge1xuICAgIHJldHVybiAkdHJpbSh0aGlzLCAxKTtcbiAgfTtcbn0sICd0cmltU3RhcnQnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWJtYXJrYmFnZS9lY21hc2NyaXB0LXN0cmluZy1sZWZ0LXJpZ2h0LXRyaW1cbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW1SaWdodCcsIGZ1bmN0aW9uICgkdHJpbSkge1xuICByZXR1cm4gZnVuY3Rpb24gdHJpbVJpZ2h0KCkge1xuICAgIHJldHVybiAkdHJpbSh0aGlzLCAyKTtcbiAgfTtcbn0sICd0cmltRW5kJyk7XG4iLCJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ2FzeW5jSXRlcmF0b3InKTtcbiIsInZhciAkaXRlcmF0b3JzID0gcmVxdWlyZSgnLi9lczYuYXJyYXkuaXRlcmF0b3InKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB3a3MgPSByZXF1aXJlKCcuL193a3MnKTtcbnZhciBJVEVSQVRPUiA9IHdrcygnaXRlcmF0b3InKTtcbnZhciBUT19TVFJJTkdfVEFHID0gd2tzKCd0b1N0cmluZ1RhZycpO1xudmFyIEFycmF5VmFsdWVzID0gSXRlcmF0b3JzLkFycmF5O1xuXG52YXIgRE9NSXRlcmFibGVzID0ge1xuICBDU1NSdWxlTGlzdDogdHJ1ZSwgLy8gVE9ETzogTm90IHNwZWMgY29tcGxpYW50LCBzaG91bGQgYmUgZmFsc2UuXG4gIENTU1N0eWxlRGVjbGFyYXRpb246IGZhbHNlLFxuICBDU1NWYWx1ZUxpc3Q6IGZhbHNlLFxuICBDbGllbnRSZWN0TGlzdDogZmFsc2UsXG4gIERPTVJlY3RMaXN0OiBmYWxzZSxcbiAgRE9NU3RyaW5nTGlzdDogZmFsc2UsXG4gIERPTVRva2VuTGlzdDogdHJ1ZSxcbiAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IGZhbHNlLFxuICBGaWxlTGlzdDogZmFsc2UsXG4gIEhUTUxBbGxDb2xsZWN0aW9uOiBmYWxzZSxcbiAgSFRNTENvbGxlY3Rpb246IGZhbHNlLFxuICBIVE1MRm9ybUVsZW1lbnQ6IGZhbHNlLFxuICBIVE1MU2VsZWN0RWxlbWVudDogZmFsc2UsXG4gIE1lZGlhTGlzdDogdHJ1ZSwgLy8gVE9ETzogTm90IHNwZWMgY29tcGxpYW50LCBzaG91bGQgYmUgZmFsc2UuXG4gIE1pbWVUeXBlQXJyYXk6IGZhbHNlLFxuICBOYW1lZE5vZGVNYXA6IGZhbHNlLFxuICBOb2RlTGlzdDogdHJ1ZSxcbiAgUGFpbnRSZXF1ZXN0TGlzdDogZmFsc2UsXG4gIFBsdWdpbjogZmFsc2UsXG4gIFBsdWdpbkFycmF5OiBmYWxzZSxcbiAgU1ZHTGVuZ3RoTGlzdDogZmFsc2UsXG4gIFNWR051bWJlckxpc3Q6IGZhbHNlLFxuICBTVkdQYXRoU2VnTGlzdDogZmFsc2UsXG4gIFNWR1BvaW50TGlzdDogZmFsc2UsXG4gIFNWR1N0cmluZ0xpc3Q6IGZhbHNlLFxuICBTVkdUcmFuc2Zvcm1MaXN0OiBmYWxzZSxcbiAgU291cmNlQnVmZmVyTGlzdDogZmFsc2UsXG4gIFN0eWxlU2hlZXRMaXN0OiB0cnVlLCAvLyBUT0RPOiBOb3Qgc3BlYyBjb21wbGlhbnQsIHNob3VsZCBiZSBmYWxzZS5cbiAgVGV4dFRyYWNrQ3VlTGlzdDogZmFsc2UsXG4gIFRleHRUcmFja0xpc3Q6IGZhbHNlLFxuICBUb3VjaExpc3Q6IGZhbHNlXG59O1xuXG5mb3IgKHZhciBjb2xsZWN0aW9ucyA9IGdldEtleXMoRE9NSXRlcmFibGVzKSwgaSA9IDA7IGkgPCBjb2xsZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IGNvbGxlY3Rpb25zW2ldO1xuICB2YXIgZXhwbGljaXQgPSBET01JdGVyYWJsZXNbTkFNRV07XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgcHJvdG8gPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICB2YXIga2V5O1xuICBpZiAocHJvdG8pIHtcbiAgICBpZiAoIXByb3RvW0lURVJBVE9SXSkgaGlkZShwcm90bywgSVRFUkFUT1IsIEFycmF5VmFsdWVzKTtcbiAgICBpZiAoIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcbiAgICBJdGVyYXRvcnNbTkFNRV0gPSBBcnJheVZhbHVlcztcbiAgICBpZiAoZXhwbGljaXQpIGZvciAoa2V5IGluICRpdGVyYXRvcnMpIGlmICghcHJvdG9ba2V5XSkgcmVkZWZpbmUocHJvdG8sIGtleSwgJGl0ZXJhdG9yc1trZXldLCB0cnVlKTtcbiAgfVxufVxuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciAkdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5CLCB7XG4gIHNldEltbWVkaWF0ZTogJHRhc2suc2V0LFxuICBjbGVhckltbWVkaWF0ZTogJHRhc2suY2xlYXJcbn0pO1xuIiwiLy8gaWU5LSBzZXRUaW1lb3V0ICYgc2V0SW50ZXJ2YWwgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZpeFxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuL191c2VyLWFnZW50Jyk7XG52YXIgc2xpY2UgPSBbXS5zbGljZTtcbnZhciBNU0lFID0gL01TSUUgLlxcLi8udGVzdCh1c2VyQWdlbnQpOyAvLyA8LSBkaXJ0eSBpZTktIGNoZWNrXG52YXIgd3JhcCA9IGZ1bmN0aW9uIChzZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChmbiwgdGltZSAvKiAsIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgYm91bmRBcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XG4gICAgdmFyIGFyZ3MgPSBib3VuZEFyZ3MgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBmYWxzZTtcbiAgICByZXR1cm4gc2V0KGJvdW5kQXJncyA/IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbikpLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gOiBmbiwgdGltZSk7XG4gIH07XG59O1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkIgKyAkZXhwb3J0LkYgKiBNU0lFLCB7XG4gIHNldFRpbWVvdXQ6IHdyYXAoZ2xvYmFsLnNldFRpbWVvdXQpLFxuICBzZXRJbnRlcnZhbDogd3JhcChnbG9iYWwuc2V0SW50ZXJ2YWwpXG59KTtcbiIsInJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnRpbWVycycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIuaW1tZWRpYXRlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9fY29yZScpO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG52YXIgcnVudGltZSA9IChmdW5jdGlvbiAoZXhwb3J0cykge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIGZ1bmN0aW9uIGRlZmluZShvYmosIGtleSwgdmFsdWUpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfVxuICB0cnkge1xuICAgIC8vIElFIDggaGFzIGEgYnJva2VuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0aGF0IG9ubHkgd29ya3Mgb24gRE9NIG9iamVjdHMuXG4gICAgZGVmaW5lKHt9LCBcIlwiKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZGVmaW5lID0gZnVuY3Rpb24ob2JqLCBrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqW2tleV0gPSB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgZXhwb3J0cy53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgZGVmaW5lKEl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBkZWZpbmUoR3AsIFwiY29uc3RydWN0b3JcIiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICBkZWZpbmUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFwiY29uc3RydWN0b3JcIiwgR2VuZXJhdG9yRnVuY3Rpb24pO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCxcbiAgICBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgKTtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKTtcbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIGRlZmluZShBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSwgYXN5bmNJdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbiAgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKSBQcm9taXNlSW1wbCA9IFByb21pc2U7XG5cbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCksXG4gICAgICBQcm9taXNlSW1wbFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgLy8gTm90ZTogW1wicmV0dXJuXCJdIG11c3QgYmUgdXNlZCBmb3IgRVMzIHBhcnNpbmcgY29tcGF0aWJpbGl0eS5cbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yW1wicmV0dXJuXCJdKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgZGVmaW5lKEdwLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JcIik7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBkZWZpbmUoR3AsIGl0ZXJhdG9yU3ltYm9sLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG5cbiAgZGVmaW5lKEdwLCBcInRvU3RyaW5nXCIsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9KTtcblxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgIHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07XG5cbiAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgfVxuXG4gICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgfVxuXG4gICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIjtcbiAgICBkZWxldGUgcmVjb3JkLmFyZztcbiAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG5cbiAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cbiAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG4gICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG4gICAgdGhpcy5yZXNldCh0cnVlKTtcbiAgfVxuXG4gIGV4cG9ydHMua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBleHBvcnRzLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xuXG4gIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGVcbiAgLy8gb3Igbm90LCByZXR1cm4gdGhlIHJ1bnRpbWUgb2JqZWN0IHNvIHRoYXQgd2UgY2FuIGRlY2xhcmUgdGhlIHZhcmlhYmxlXG4gIC8vIHJlZ2VuZXJhdG9yUnVudGltZSBpbiB0aGUgb3V0ZXIgc2NvcGUsIHdoaWNoIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZVxuICAvLyBpbmplY3RlZCBlYXNpbHkgYnkgYGJpbi9yZWdlbmVyYXRvciAtLWluY2x1ZGUtcnVudGltZSBzY3JpcHQuanNgLlxuICByZXR1cm4gZXhwb3J0cztcblxufShcbiAgLy8gSWYgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlLCB1c2UgbW9kdWxlLmV4cG9ydHNcbiAgLy8gYXMgdGhlIHJlZ2VuZXJhdG9yUnVudGltZSBuYW1lc3BhY2UuIE90aGVyd2lzZSBjcmVhdGUgYSBuZXcgZW1wdHlcbiAgLy8gb2JqZWN0LiBFaXRoZXIgd2F5LCB0aGUgcmVzdWx0aW5nIG9iamVjdCB3aWxsIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZVxuICAvLyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIHZhcmlhYmxlIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLlxuICB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiID8gbW9kdWxlLmV4cG9ydHMgOiB7fVxuKSk7XG5cbnRyeSB7XG4gIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59IGNhdGNoIChhY2NpZGVudGFsU3RyaWN0TW9kZSkge1xuICAvLyBUaGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHJ1bm5pbmcgaW4gc3RyaWN0IG1vZGUsIHNvIHRoZSBhYm92ZVxuICAvLyBhc3NpZ25tZW50IHNob3VsZCBhbHdheXMgd29yayB1bmxlc3Mgc29tZXRoaW5nIGlzIG1pc2NvbmZpZ3VyZWQuIEp1c3RcbiAgLy8gaW4gY2FzZSBydW50aW1lLmpzIGFjY2lkZW50YWxseSBydW5zIGluIHN0cmljdCBtb2RlLCBpbiBtb2Rlcm4gZW5naW5lc1xuICAvLyB3ZSBjYW4gZXhwbGljaXRseSBhY2Nlc3MgZ2xvYmFsVGhpcy4gSW4gb2xkZXIgZW5naW5lcyB3ZSBjYW4gZXNjYXBlXG4gIC8vIHN0cmljdCBtb2RlIHVzaW5nIGEgZ2xvYmFsIEZ1bmN0aW9uIGNhbGwuIFRoaXMgY291bGQgY29uY2VpdmFibHkgZmFpbFxuICAvLyBpZiBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGZvcmJpZHMgdXNpbmcgRnVuY3Rpb24sIGJ1dCBpbiB0aGF0IGNhc2VcbiAgLy8gdGhlIHByb3BlciBzb2x1dGlvbiBpcyB0byBmaXggdGhlIGFjY2lkZW50YWwgc3RyaWN0IG1vZGUgcHJvYmxlbS4gSWZcbiAgLy8geW91J3ZlIG1pc2NvbmZpZ3VyZWQgeW91ciBidW5kbGVyIHRvIGZvcmNlIHN0cmljdCBtb2RlIGFuZCBhcHBsaWVkIGFcbiAgLy8gQ1NQIHRvIGZvcmJpZCBGdW5jdGlvbiwgYW5kIHlvdSdyZSBub3Qgd2lsbGluZyB0byBmaXggZWl0aGVyIG9mIHRob3NlXG4gIC8vIHByb2JsZW1zLCBwbGVhc2UgZGV0YWlsIHlvdXIgdW5pcXVlIHByZWRpY2FtZW50IGluIGEgR2l0SHViIGlzc3VlLlxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICBnbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG4gIH0gZWxzZSB7XG4gICAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
1
+ !function(t){var n={};function r(e){if(n[e])return n[e].exports;var i=n[e]={i:e,l:!1,exports:{}};return t[e].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var i in t)r.d(e,i,function(n){return t[n]}.bind(null,i));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="/public/js/",r(r.s="55Il")}({"+Xmh":function(t,n,r){r("jm62"),t.exports=r("g3g5").Object.getOwnPropertyDescriptors},"+auO":function(t,n,r){var e=r("XKFU"),i=r("lvtm");e(e.S,"Math",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},"+lvF":function(t,n,r){t.exports=r("VTer")("native-function-to-string",Function.toString)},"+oPb":function(t,n,r){"use strict";r("OGtf")("blink",(function(t){return function(){return t(this,"blink","","")}}))},"+rLv":function(t,n,r){var e=r("dyZX").document;t.exports=e&&e.documentElement},"/8Fb":function(t,n,r){var e=r("XKFU"),i=r("UExd")(!0);e(e.S,"Object",{entries:function(t){return i(t)}})},"/KAi":function(t,n,r){var e=r("XKFU"),i=r("dyZX").isFinite;e(e.S,"Number",{isFinite:function(t){return"number"==typeof t&&i(t)}})},"/SS/":function(t,n,r){var e=r("XKFU");e(e.S,"Object",{setPrototypeOf:r("i5dc").set})},"/e88":function(t,n){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},"0/R4":function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"0E+W":function(t,n,r){r("elZq")("Array")},"0LDn":function(t,n,r){"use strict";r("OGtf")("italics",(function(t){return function(){return t(this,"i","","")}}))},"0YWM":function(t,n,r){var e=r("EemH"),i=r("OP3Y"),o=r("aagx"),u=r("XKFU"),c=r("0/R4"),a=r("y3w9");u(u.S,"Reflect",{get:function t(n,r){var u,f,s=arguments.length<3?n:arguments[2];return a(n)===s?n[r]:(u=e.f(n,r))?o(u,"value")?u.value:void 0!==u.get?u.get.call(s):void 0:c(f=i(n))?t(f,r,s):void 0}})},"0l/t":function(t,n,r){"use strict";var e=r("XKFU"),i=r("CkkT")(2);e(e.P+e.F*!r("LyE8")([].filter,!0),"Array",{filter:function(t){return i(this,t,arguments[1])}})},"0mN4":function(t,n,r){"use strict";r("OGtf")("fixed",(function(t){return function(){return t(this,"tt","","")}}))},"0sh+":function(t,n,r){var e=r("quPj"),i=r("vhPU");t.exports=function(t,n,r){if(e(n))throw TypeError("String#"+r+" doesn't accept regex!");return String(i(t))}},"11IZ":function(t,n,r){var e=r("dyZX").parseFloat,i=r("qncB").trim;t.exports=1/e(r("/e88")+"-0")!=-1/0?function(t){var n=i(String(t),3),r=e(n);return 0===r&&"-"==n.charAt(0)?-0:r}:e},"1MBn":function(t,n,r){var e=r("DVgA"),i=r("JiEa"),o=r("UqcF");t.exports=function(t){var n=e(t),r=i.f;if(r)for(var u,c=r(t),a=o.f,f=0;c.length>f;)a.call(t,u=c[f++])&&n.push(u);return n}},"1TsA":function(t,n){t.exports=function(t,n){return{value:n,done:!!t}}},"1sa7":function(t,n){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},"25dN":function(t,n,r){var e=r("XKFU");e(e.S,"Object",{is:r("g6HL")})},"2GTP":function(t,n,r){var e=r("eaoh");t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,i){return t.call(n,r,e,i)}}return function(){return t.apply(n,arguments)}}},"2OiF":function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"2Spj":function(t,n,r){var e=r("XKFU");e(e.P,"Function",{bind:r("8MEG")})},"2atp":function(t,n,r){var e=r("XKFU"),i=Math.atanh;e(e.S+e.F*!(i&&1/i(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},"2faE":function(t,n,r){var e=r("5K7Z"),i=r("eUtF"),o=r("G8Mo"),u=Object.defineProperty;n.f=r("jmDH")?Object.defineProperty:function(t,n,r){if(e(t),n=o(n,!0),e(r),i)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[n]=r.value),t}},"3Lyj":function(t,n,r){var e=r("KroJ");t.exports=function(t,n,r){for(var i in n)e(t,i,n[i],r);return t}},"3xty":function(t,n,r){var e=r("XKFU"),i=r("2OiF"),o=r("y3w9"),u=(r("dyZX").Reflect||{}).apply,c=Function.apply;e(e.S+e.F*!r("eeVq")((function(){u((function(){}))})),"Reflect",{apply:function(t,n,r){var e=i(t),a=o(r);return u?u(e,n,a):c.call(e,n,a)}})},"4LiD":function(t,n,r){"use strict";var e=r("dyZX"),i=r("XKFU"),o=r("KroJ"),u=r("3Lyj"),c=r("Z6vF"),a=r("SlkY"),f=r("9gX7"),s=r("0/R4"),l=r("eeVq"),h=r("XMVh"),v=r("fyDq"),p=r("Xbzi");t.exports=function(t,n,r,y,g,d){var x=e[t],m=x,b=g?"set":"add",w=m&&m.prototype,F={},S=function(t){var n=w[t];o(w,t,"delete"==t||"has"==t?function(t){return!(d&&!s(t))&&n.call(this,0===t?0:t)}:"get"==t?function(t){return d&&!s(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function(t){return n.call(this,0===t?0:t),this}:function(t,r){return n.call(this,0===t?0:t,r),this})};if("function"==typeof m&&(d||w.forEach&&!l((function(){(new m).entries().next()})))){var E=new m,O=E[b](d?{}:-0,1)!=E,U=l((function(){E.has(1)})),_=h((function(t){new m(t)})),P=!d&&l((function(){for(var t=new m,n=5;n--;)t[b](n,n);return!t.has(-0)}));_||((m=n((function(n,r){f(n,m,t);var e=p(new x,n,m);return null!=r&&a(r,g,e[b],e),e}))).prototype=w,w.constructor=m),(U||P)&&(S("delete"),S("has"),g&&S("get")),(P||O)&&S(b),d&&w.clear&&delete w.clear}else m=y.getConstructor(n,t,g,b),u(m.prototype,r),c.NEED=!0;return v(m,t),F[t]=m,i(i.G+i.W+i.F*(m!=x),F),d||y.setStrong(m,t,g),m}},"4R4u":function(t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"55Il":function(t,n,r){"use strict";r("g2aq");var e,i=(e=r("VsWn"))&&e.__esModule?e:{default:e};i.default._babelPolyfill&&"undefined"!=typeof console&&console.warn&&console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning."),i.default._babelPolyfill=!0},"5K7Z":function(t,n,r){var e=r("93I4");t.exports=function(t){if(!e(t))throw TypeError(t+" is not an object!");return t}},"5Pf0":function(t,n,r){var e=r("S/j/"),i=r("OP3Y");r("Xtr8")("getPrototypeOf",(function(){return function(t){return i(e(t))}}))},"5T2Y":function(t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},"694e":function(t,n,r){var e=r("EemH"),i=r("XKFU"),o=r("y3w9");i(i.S,"Reflect",{getOwnPropertyDescriptor:function(t,n){return e.f(o(t),n)}})},"69bn":function(t,n,r){var e=r("y3w9"),i=r("2OiF"),o=r("K0xU")("species");t.exports=function(t,n){var r,u=e(t).constructor;return void 0===u||null==(r=e(u)[o])?n:i(r)}},"6AQ9":function(t,n,r){"use strict";var e=r("XKFU"),i=r("8a7r");e(e.S+e.F*r("eeVq")((function(){function t(){}return!(Array.of.call(t)instanceof t)})),"Array",{of:function(){for(var t=0,n=arguments.length,r=new("function"==typeof this?this:Array)(n);n>t;)i(r,t,arguments[t++]);return r.length=n,r}})},"6FMO":function(t,n,r){var e=r("0/R4"),i=r("EWmC"),o=r("K0xU")("species");t.exports=function(t){var n;return i(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!i(n.prototype)||(n=void 0),e(n)&&null===(n=n[o])&&(n=void 0)),void 0===n?Array:n}},"6VaU":function(t,n,r){"use strict";var e=r("XKFU"),i=r("xF/b"),o=r("S/j/"),u=r("ne8i"),c=r("2OiF"),a=r("zRwo");e(e.P,"Array",{flatMap:function(t){var n,r,e=o(this);return c(t),n=u(e.length),r=a(e,0),i(r,e,e,n,0,1,t,arguments[1]),r}}),r("nGyu")("flatMap")},"7DDg":function(t,n,r){"use strict";if(r("nh4g")){var e=r("LQAc"),i=r("dyZX"),o=r("eeVq"),u=r("XKFU"),c=r("D4iV"),a=r("7Qtz"),f=r("m0Pp"),s=r("9gX7"),l=r("RjD/"),h=r("Mukb"),v=r("3Lyj"),p=r("RYi7"),y=r("ne8i"),g=r("Cfrj"),d=r("d/Gc"),x=r("apmT"),m=r("aagx"),b=r("I8a+"),w=r("0/R4"),F=r("S/j/"),S=r("M6Qj"),E=r("Kuth"),O=r("OP3Y"),U=r("kJMx").f,_=r("J+6e"),P=r("ylqs"),M=r("K0xU"),K=r("CkkT"),j=r("w2a5"),X=r("69bn"),A=r("yt8O"),I=r("hPIQ"),T=r("XMVh"),L=r("elZq"),R=r("Nr18"),N=r("upKx"),k=r("hswa"),D=r("EemH"),V=k.f,C=D.f,q=i.RangeError,Z=i.TypeError,W=i.Uint8Array,G=Array.prototype,Y=a.ArrayBuffer,B=a.DataView,z=K(0),J=K(2),H=K(3),Q=K(4),$=K(5),tt=K(6),nt=j(!0),rt=j(!1),et=A.values,it=A.keys,ot=A.entries,ut=G.lastIndexOf,ct=G.reduce,at=G.reduceRight,ft=G.join,st=G.sort,lt=G.slice,ht=G.toString,vt=G.toLocaleString,pt=M("iterator"),yt=M("toStringTag"),gt=P("typed_constructor"),dt=P("def_constructor"),xt=c.CONSTR,mt=c.TYPED,bt=c.VIEW,wt=K(1,(function(t,n){return Ut(X(t,t[dt]),n)})),Ft=o((function(){return 1===new W(new Uint16Array([1]).buffer)[0]})),St=!!W&&!!W.prototype.set&&o((function(){new W(1).set({})})),Et=function(t,n){var r=p(t);if(r<0||r%n)throw q("Wrong offset!");return r},Ot=function(t){if(w(t)&&mt in t)return t;throw Z(t+" is not a typed array!")},Ut=function(t,n){if(!w(t)||!(gt in t))throw Z("It is not a typed array constructor!");return new t(n)},_t=function(t,n){return Pt(X(t,t[dt]),n)},Pt=function(t,n){for(var r=0,e=n.length,i=Ut(t,e);e>r;)i[r]=n[r++];return i},Mt=function(t,n,r){V(t,n,{get:function(){return this._d[r]}})},Kt=function(t){var n,r,e,i,o,u,c=F(t),a=arguments.length,s=a>1?arguments[1]:void 0,l=void 0!==s,h=_(c);if(null!=h&&!S(h)){for(u=h.call(c),e=[],n=0;!(o=u.next()).done;n++)e.push(o.value);c=e}for(l&&a>2&&(s=f(s,arguments[2],2)),n=0,r=y(c.length),i=Ut(this,r);r>n;n++)i[n]=l?s(c[n],n):c[n];return i},jt=function(){for(var t=0,n=arguments.length,r=Ut(this,n);n>t;)r[t]=arguments[t++];return r},Xt=!!W&&o((function(){vt.call(new W(1))})),At=function(){return vt.apply(Xt?lt.call(Ot(this)):Ot(this),arguments)},It={copyWithin:function(t,n){return N.call(Ot(this),t,n,arguments.length>2?arguments[2]:void 0)},every:function(t){return Q(Ot(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return R.apply(Ot(this),arguments)},filter:function(t){return _t(this,J(Ot(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return $(Ot(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){z(Ot(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return rt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return nt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return ft.apply(Ot(this),arguments)},lastIndexOf:function(t){return ut.apply(Ot(this),arguments)},map:function(t){return wt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(Ot(this),arguments)},reduceRight:function(t){return at.apply(Ot(this),arguments)},reverse:function(){for(var t,n=Ot(this).length,r=Math.floor(n/2),e=0;e<r;)t=this[e],this[e++]=this[--n],this[n]=t;return this},some:function(t){return H(Ot(this),t,arguments.length>1?arguments[1]:void 0)},sort:function(t){return st.call(Ot(this),t)},subarray:function(t,n){var r=Ot(this),e=r.length,i=d(t,e);return new(X(r,r[dt]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,y((void 0===n?e:d(n,e))-i))}},Tt=function(t,n){return _t(this,lt.call(Ot(this),t,n))},Lt=function(t){Ot(this);var n=Et(arguments[1],1),r=this.length,e=F(t),i=y(e.length),o=0;if(i+n>r)throw q("Wrong length!");for(;o<i;)this[n+o]=e[o++]},Rt={entries:function(){return ot.call(Ot(this))},keys:function(){return it.call(Ot(this))},values:function(){return et.call(Ot(this))}},Nt=function(t,n){return w(t)&&t[mt]&&"symbol"!=typeof n&&n in t&&String(+n)==String(n)},kt=function(t,n){return Nt(t,n=x(n,!0))?l(2,t[n]):C(t,n)},Dt=function(t,n,r){return!(Nt(t,n=x(n,!0))&&w(r)&&m(r,"value"))||m(r,"get")||m(r,"set")||r.configurable||m(r,"writable")&&!r.writable||m(r,"enumerable")&&!r.enumerable?V(t,n,r):(t[n]=r.value,t)};xt||(D.f=kt,k.f=Dt),u(u.S+u.F*!xt,"Object",{getOwnPropertyDescriptor:kt,defineProperty:Dt}),o((function(){ht.call({})}))&&(ht=vt=function(){return ft.call(this)});var Vt=v({},It);v(Vt,Rt),h(Vt,pt,Rt.values),v(Vt,{slice:Tt,set:Lt,constructor:function(){},toString:ht,toLocaleString:At}),Mt(Vt,"buffer","b"),Mt(Vt,"byteOffset","o"),Mt(Vt,"byteLength","l"),Mt(Vt,"length","e"),V(Vt,yt,{get:function(){return this[mt]}}),t.exports=function(t,n,r,a){var f=t+((a=!!a)?"Clamped":"")+"Array",l="get"+t,v="set"+t,p=i[f],d=p||{},x=p&&O(p),m=!p||!c.ABV,F={},S=p&&p.prototype,_=function(t,r){V(t,r,{get:function(){return function(t,r){var e=t._d;return e.v[l](r*n+e.o,Ft)}(this,r)},set:function(t){return function(t,r,e){var i=t._d;a&&(e=(e=Math.round(e))<0?0:e>255?255:255&e),i.v[v](r*n+i.o,e,Ft)}(this,r,t)},enumerable:!0})};m?(p=r((function(t,r,e,i){s(t,p,f,"_d");var o,u,c,a,l=0,v=0;if(w(r)){if(!(r instanceof Y||"ArrayBuffer"==(a=b(r))||"SharedArrayBuffer"==a))return mt in r?Pt(p,r):Kt.call(p,r);o=r,v=Et(e,n);var d=r.byteLength;if(void 0===i){if(d%n)throw q("Wrong length!");if((u=d-v)<0)throw q("Wrong length!")}else if((u=y(i)*n)+v>d)throw q("Wrong length!");c=u/n}else c=g(r),o=new Y(u=c*n);for(h(t,"_d",{b:o,o:v,l:u,e:c,v:new B(o)});l<c;)_(t,l++)})),S=p.prototype=E(Vt),h(S,"constructor",p)):o((function(){p(1)}))&&o((function(){new p(-1)}))&&T((function(t){new p,new p(null),new p(1.5),new p(t)}),!0)||(p=r((function(t,r,e,i){var o;return s(t,p,f),w(r)?r instanceof Y||"ArrayBuffer"==(o=b(r))||"SharedArrayBuffer"==o?void 0!==i?new d(r,Et(e,n),i):void 0!==e?new d(r,Et(e,n)):new d(r):mt in r?Pt(p,r):Kt.call(p,r):new d(g(r))})),z(x!==Function.prototype?U(d).concat(U(x)):U(d),(function(t){t in p||h(p,t,d[t])})),p.prototype=S,e||(S.constructor=p));var P=S[pt],M=!!P&&("values"==P.name||null==P.name),K=Rt.values;h(p,gt,!0),h(S,mt,f),h(S,bt,!0),h(S,dt,p),(a?new p(1)[yt]==f:yt in S)||V(S,yt,{get:function(){return f}}),F[f]=p,u(u.G+u.W+u.F*(p!=d),F),u(u.S,f,{BYTES_PER_ELEMENT:n}),u(u.S+u.F*o((function(){d.of.call(p,1)})),f,{from:Kt,of:jt}),"BYTES_PER_ELEMENT"in S||h(S,"BYTES_PER_ELEMENT",n),u(u.P,f,It),L(f),u(u.P+u.F*St,f,{set:Lt}),u(u.P+u.F*!M,f,Rt),e||S.toString==ht||(S.toString=ht),u(u.P+u.F*o((function(){new p(1).slice()})),f,{slice:Tt}),u(u.P+u.F*(o((function(){return[1,2].toLocaleString()!=new p([1,2]).toLocaleString()}))||!o((function(){S.toLocaleString.call([1,2])}))),f,{toLocaleString:At}),I[f]=M?P:K,e||M||h(S,pt,K)}}else t.exports=function(){}},"7PI8":function(t,n,r){var e=r("Y7ZC");e(e.G,{global:r("5T2Y")})},"7Qtz":function(t,n,r){"use strict";var e=r("dyZX"),i=r("nh4g"),o=r("LQAc"),u=r("D4iV"),c=r("Mukb"),a=r("3Lyj"),f=r("eeVq"),s=r("9gX7"),l=r("RYi7"),h=r("ne8i"),v=r("Cfrj"),p=r("kJMx").f,y=r("hswa").f,g=r("Nr18"),d=r("fyDq"),x=e.ArrayBuffer,m=e.DataView,b=e.Math,w=e.RangeError,F=e.Infinity,S=x,E=b.abs,O=b.pow,U=b.floor,_=b.log,P=b.LN2,M=i?"_b":"buffer",K=i?"_l":"byteLength",j=i?"_o":"byteOffset";function X(t,n,r){var e,i,o,u=new Array(r),c=8*r-n-1,a=(1<<c)-1,f=a>>1,s=23===n?O(2,-24)-O(2,-77):0,l=0,h=t<0||0===t&&1/t<0?1:0;for((t=E(t))!=t||t===F?(i=t!=t?1:0,e=a):(e=U(_(t)/P),t*(o=O(2,-e))<1&&(e--,o*=2),(t+=e+f>=1?s/o:s*O(2,1-f))*o>=2&&(e++,o/=2),e+f>=a?(i=0,e=a):e+f>=1?(i=(t*o-1)*O(2,n),e+=f):(i=t*O(2,f-1)*O(2,n),e=0));n>=8;u[l++]=255&i,i/=256,n-=8);for(e=e<<n|i,c+=n;c>0;u[l++]=255&e,e/=256,c-=8);return u[--l]|=128*h,u}function A(t,n,r){var e,i=8*r-n-1,o=(1<<i)-1,u=o>>1,c=i-7,a=r-1,f=t[a--],s=127&f;for(f>>=7;c>0;s=256*s+t[a],a--,c-=8);for(e=s&(1<<-c)-1,s>>=-c,c+=n;c>0;e=256*e+t[a],a--,c-=8);if(0===s)s=1-u;else{if(s===o)return e?NaN:f?-F:F;e+=O(2,n),s-=u}return(f?-1:1)*e*O(2,s-n)}function I(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function T(t){return[255&t]}function L(t){return[255&t,t>>8&255]}function R(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function N(t){return X(t,52,8)}function k(t){return X(t,23,4)}function D(t,n,r){y(t.prototype,n,{get:function(){return this[r]}})}function V(t,n,r,e){var i=v(+r);if(i+n>t[K])throw w("Wrong index!");var o=t[M]._b,u=i+t[j],c=o.slice(u,u+n);return e?c:c.reverse()}function C(t,n,r,e,i,o){var u=v(+r);if(u+n>t[K])throw w("Wrong index!");for(var c=t[M]._b,a=u+t[j],f=e(+i),s=0;s<n;s++)c[a+s]=f[o?s:n-s-1]}if(u.ABV){if(!f((function(){x(1)}))||!f((function(){new x(-1)}))||f((function(){return new x,new x(1.5),new x(NaN),"ArrayBuffer"!=x.name}))){for(var q,Z=(x=function(t){return s(this,x),new S(v(t))}).prototype=S.prototype,W=p(S),G=0;W.length>G;)(q=W[G++])in x||c(x,q,S[q]);o||(Z.constructor=x)}var Y=new m(new x(2)),B=m.prototype.setInt8;Y.setInt8(0,2147483648),Y.setInt8(1,2147483649),!Y.getInt8(0)&&Y.getInt8(1)||a(m.prototype,{setInt8:function(t,n){B.call(this,t,n<<24>>24)},setUint8:function(t,n){B.call(this,t,n<<24>>24)}},!0)}else x=function(t){s(this,x,"ArrayBuffer");var n=v(t);this._b=g.call(new Array(n),0),this[K]=n},m=function(t,n,r){s(this,m,"DataView"),s(t,x,"DataView");var e=t[K],i=l(n);if(i<0||i>e)throw w("Wrong offset!");if(i+(r=void 0===r?e-i:h(r))>e)throw w("Wrong length!");this[M]=t,this[j]=i,this[K]=r},i&&(D(x,"byteLength","_l"),D(m,"buffer","_b"),D(m,"byteLength","_l"),D(m,"byteOffset","_o")),a(m.prototype,{getInt8:function(t){return V(this,1,t)[0]<<24>>24},getUint8:function(t){return V(this,1,t)[0]},getInt16:function(t){var n=V(this,2,t,arguments[1]);return(n[1]<<8|n[0])<<16>>16},getUint16:function(t){var n=V(this,2,t,arguments[1]);return n[1]<<8|n[0]},getInt32:function(t){return I(V(this,4,t,arguments[1]))},getUint32:function(t){return I(V(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return A(V(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return A(V(this,8,t,arguments[1]),52,8)},setInt8:function(t,n){C(this,1,t,T,n)},setUint8:function(t,n){C(this,1,t,T,n)},setInt16:function(t,n){C(this,2,t,L,n,arguments[2])},setUint16:function(t,n){C(this,2,t,L,n,arguments[2])},setInt32:function(t,n){C(this,4,t,R,n,arguments[2])},setUint32:function(t,n){C(this,4,t,R,n,arguments[2])},setFloat32:function(t,n){C(this,4,t,k,n,arguments[2])},setFloat64:function(t,n){C(this,8,t,N,n,arguments[2])}});d(x,"ArrayBuffer"),d(m,"DataView"),c(m.prototype,u.VIEW,!0),n.ArrayBuffer=x,n.DataView=m},"7VC1":function(t,n,r){"use strict";var e=r("XKFU"),i=r("Lgjv"),o=r("ol8x"),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);e(e.P+e.F*u,"String",{padEnd:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},"7h0T":function(t,n,r){var e=r("XKFU");e(e.S,"Number",{isNaN:function(t){return t!=t}})},"8+KV":function(t,n,r){"use strict";var e=r("XKFU"),i=r("CkkT")(0),o=r("LyE8")([].forEach,!0);e(e.P+e.F*!o,"Array",{forEach:function(t){return i(this,t,arguments[1])}})},"84bF":function(t,n,r){"use strict";r("OGtf")("small",(function(t){return function(){return t(this,"small","","")}}))},"8MEG":function(t,n,r){"use strict";var e=r("2OiF"),i=r("0/R4"),o=r("MfQN"),u=[].slice,c={},a=function(t,n,r){if(!(n in c)){for(var e=[],i=0;i<n;i++)e[i]="a["+i+"]";c[n]=Function("F,a","return new F("+e.join(",")+")")}return c[n](t,r)};t.exports=Function.bind||function(t){var n=e(this),r=u.call(arguments,1),c=function(){var e=r.concat(u.call(arguments));return this instanceof c?a(n,e.length,e):o(n,e,t)};return i(n.prototype)&&(c.prototype=n.prototype),c}},"8a7r":function(t,n,r){"use strict";var e=r("hswa"),i=r("RjD/");t.exports=function(t,n,r){n in t?e.f(t,n,i(0,r)):t[n]=r}},"91GP":function(t,n,r){var e=r("XKFU");e(e.S+e.F,"Object",{assign:r("czNK")})},"93I4":function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"9AAn":function(t,n,r){"use strict";var e=r("wmvG"),i=r("s5qY");t.exports=r("4LiD")("Map",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{get:function(t){var n=e.getEntry(i(this,"Map"),t);return n&&n.v},set:function(t,n){return e.def(i(this,"Map"),0===t?0:t,n)}},e,!0)},"9P93":function(t,n,r){var e=r("XKFU"),i=Math.imul;e(e.S+e.F*r("eeVq")((function(){return-5!=i(4294967295,5)||2!=i.length})),"Math",{imul:function(t,n){var r=+t,e=+n,i=65535&