WooCommerce Multilingual – run WooCommerce with WPML - Version 4.3.1

Version Description

  • Error in WCML_Currency_Switcher_Templates while activating
  • Fix an issue where New order admin email subject and heading were overwrites with wrong data
  • Fixed the missing duplicated images when translating a product.
Download this release

Release Info

Developer sergey.r
Plugin Icon 128x128 WooCommerce Multilingual – run WooCommerce with WPML
Version 4.3.1
Comparing to
See all releases

Code changes from version 4.3.0 to 4.3.1

changelog/4.3.1.md ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ # Fixes
2
+ * [wcml-2434] Error in WCML_Currency_Switcher_Templates while activating
3
+ * [wcml-2433] Fix an issue where New order admin email subject and heading were overwrites with wrong data
4
+ * [wcml-2432] Fixed the missing duplicated images when translating a product.
inc/class-wcml-emails.php CHANGED
@@ -298,13 +298,19 @@ class WCML_Emails{
298
  }
299
 
300
  public function new_order_email_heading( $heading ){
301
- $heading = $this->woocommerce->mailer()->emails['WC_Email_New_Order']->heading;
 
 
 
302
 
303
  return $heading;
304
  }
305
 
306
  public function new_order_email_subject( $subject ){
307
- $subject = $this->woocommerce->mailer()->emails['WC_Email_New_Order']->subject;
 
 
 
308
 
309
  return $subject;
310
  }
298
  }
299
 
300
  public function new_order_email_heading( $heading ){
301
+ $translated_heading = $this->woocommerce->mailer()->emails['WC_Email_New_Order']->heading;
302
+ if( !is_null( $translated_heading ) ){
303
+ $heading = $this->woocommerce->mailer()->emails['WC_Email_New_Order']->format_string( $translated_heading );
304
+ }
305
 
306
  return $heading;
307
  }
308
 
309
  public function new_order_email_subject( $subject ){
310
+ $translated_subject = $this->woocommerce->mailer()->emails['WC_Email_New_Order']->subject;
311
+ if( !is_null( $translated_subject ) ){
312
+ $subject = $this->woocommerce->mailer()->emails['WC_Email_New_Order']->format_string( $translated_subject );
313
+ }
314
 
315
  return $subject;
316
  }
inc/currencies/currency-switcher/class-wcml-currency-switcher-templates.php CHANGED
@@ -236,7 +236,10 @@ class WCML_Currency_Switcher_Templates {
236
  private function are_template_paths_valid( $templates ) {
237
  $paths_are_valid = true;
238
  foreach ( $templates as $template ) {
239
- if ( ! $template->is_path_valid() ) {
 
 
 
240
  $paths_are_valid = false;
241
  break;
242
  }
236
  private function are_template_paths_valid( $templates ) {
237
  $paths_are_valid = true;
238
  foreach ( $templates as $template ) {
239
+ if (
240
+ $template instanceof WCML_Currency_Switcher_Template &&
241
+ ! $template->is_path_valid()
242
+ ) {
243
  $paths_are_valid = false;
244
  break;
245
  }
inc/translation-editor/class-wcml-editor-ui-product-job.php CHANGED
@@ -721,16 +721,22 @@ class WCML_Editor_UI_Product_Job extends WPML_Editor_UI_Job {
721
  if ( $product_images ) {
722
  foreach ( $product_images as $image_id ) {
723
  $trnsl_prod_image = apply_filters( 'translate_object_id', $image_id, 'attachment', false, $this->get_target_language() );
724
- //update image texts
725
- $this->wpdb->update(
726
- $this->wpdb->posts,
727
- array(
728
- 'post_title' => $translations[ md5( 'image-id-' . $image_id . '-title' ) ],
729
- 'post_content' => $translations[ md5( 'image-id-' . $image_id . '-description' ) ],
730
- 'post_excerpt' => $translations[ md5( 'image-id-' . $image_id . '-caption' ) ]
731
- ),
732
- array( 'id' => $trnsl_prod_image )
733
- );
 
 
 
 
 
 
734
  if ( isset( $translations[ md5( 'image-id-' . $image_id . '-alt-text' ) ] ) ) {
735
  update_post_meta( $trnsl_prod_image, '_wp_attachment_image_alt', $translations[ md5( 'image-id-' . $image_id . '-alt-text' ) ] );
736
  }
@@ -893,7 +899,16 @@ class WCML_Editor_UI_Product_Job extends WPML_Editor_UI_Job {
893
  }
894
  }
895
 
 
 
 
 
 
 
 
896
 
 
 
897
 
898
  public function requires_translation_complete_for_each_field() {
899
  return false;
721
  if ( $product_images ) {
722
  foreach ( $product_images as $image_id ) {
723
  $trnsl_prod_image = apply_filters( 'translate_object_id', $image_id, 'attachment', false, $this->get_target_language() );
724
+
725
+ if ( ! $trnsl_prod_image ) {
726
+ $trnsl_prod_image = $this->create_base_media_translation( $image_id, $this->get_target_language() );
727
+ }
728
+
729
+ //update image texts
730
+ $this->wpdb->update(
731
+ $this->wpdb->posts,
732
+ array(
733
+ 'post_title' => $translations[ md5( 'image-id-' . $image_id . '-title' ) ],
734
+ 'post_content' => $translations[ md5( 'image-id-' . $image_id . '-description' ) ],
735
+ 'post_excerpt' => $translations[ md5( 'image-id-' . $image_id . '-caption' ) ]
736
+ ),
737
+ array( 'id' => $trnsl_prod_image )
738
+ );
739
+
740
  if ( isset( $translations[ md5( 'image-id-' . $image_id . '-alt-text' ) ] ) ) {
741
  update_post_meta( $trnsl_prod_image, '_wp_attachment_image_alt', $translations[ md5( 'image-id-' . $image_id . '-alt-text' ) ] );
742
  }
899
  }
900
  }
901
 
902
+ private function create_base_media_translation( $attachment_id, $target_lang ) {
903
+ $duplicate_id = $this->sitepress->make_duplicate( $attachment_id, $target_lang );
904
+ delete_post_meta( $duplicate_id, '_icl_lang_duplicate_of' );
905
+
906
+ foreach ( array( '_wp_attachment_metadata', '_wp_attached_file' ) as $attachment_meta_key ) {
907
+ update_post_meta( $duplicate_id, $attachment_meta_key, get_post_meta( $attachment_id, $attachment_meta_key, true ) );
908
+ }
909
 
910
+ return $duplicate_id;
911
+ }
912
 
913
  public function requires_translation_complete_for_each_field() {
914
  return false;
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
  === WooCommerce Multilingual - run WooCommerce with WPML ===
2
- Contributors: AmirHelzer, sergey.r, mihaimihai, EduardMaghakyan
3
  Donate link: http://wpml.org/documentation/related-projects/woocommerce-multilingual/
4
  Tags: CMS, woocommerce, commerce, ecommerce, e-commerce, products, WPML, multilingual, e-shop, shop
5
  License: GPLv2
6
  Requires at least: 3.9
7
  Tested up to: 4.9.6
8
- Stable tag: 4.3.0
9
 
10
  Allows running fully multilingual e-commerce sites using WooCommerce and WPML.
11
 
@@ -140,6 +140,11 @@ WooCommerce Multilingual is compatible with all major WooCommerce extensions. We
140
 
141
  == Changelog ==
142
 
 
 
 
 
 
143
  = 4.3.0 =
144
  * Added ability to filtering comments by language
145
  * Use display-as-translated for product images and product galleries
1
  === WooCommerce Multilingual - run WooCommerce with WPML ===
2
+ Contributors: AmirHelzer, sergey.r, mihaimihai, EduardMaghakyan, andrewp-2
3
  Donate link: http://wpml.org/documentation/related-projects/woocommerce-multilingual/
4
  Tags: CMS, woocommerce, commerce, ecommerce, e-commerce, products, WPML, multilingual, e-shop, shop
5
  License: GPLv2
6
  Requires at least: 3.9
7
  Tested up to: 4.9.6
8
+ Stable tag: 4.3.1
9
 
10
  Allows running fully multilingual e-commerce sites using WooCommerce and WPML.
11
 
140
 
141
  == Changelog ==
142
 
143
+ = 4.3.1 =
144
+ * Error in WCML_Currency_Switcher_Templates while activating
145
+ * Fix an issue where New order admin email subject and heading were overwrites with wrong data
146
+ * Fixed the missing duplicated images when translating a product.
147
+
148
  = 4.3.0 =
149
  * Added ability to filtering comments by language
150
  * Use display-as-translated for product images and product galleries
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit6b00f9aa8fa8723de2f88d08bfbab936::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit3f1d8b16640b4a043111685fe8a5c948::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit9ffe1e3bcbdfb302260adaa0129ec91b::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInitb17d424ee73e0a81816859dad3c7a3e6::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit6b00f9aa8fa8723de2f88d08bfbab936
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit6b00f9aa8fa8723de2f88d08bfbab936
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit6b00f9aa8fa8723de2f88d08bfbab936', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit6b00f9aa8fa8723de2f88d08bfbab936', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit6b00f9aa8fa8723de2f88d08bfbab936::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit3f1d8b16640b4a043111685fe8a5c948
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit3f1d8b16640b4a043111685fe8a5c948', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit3f1d8b16640b4a043111685fe8a5c948', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit3f1d8b16640b4a043111685fe8a5c948::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit9ffe1e3bcbdfb302260adaa0129ec91b {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit9ffe1e3bcbdfb302260adaa0129ec91b {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit9ffe1e3bcbdfb302260adaa0129ec91b', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit9ffe1e3bcbdfb302260adaa0129ec91b', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInitb17d424ee73e0a81816859dad3c7a3e6 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitb17d424ee73e0a81816859dad3c7a3e6', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitb17d424ee73e0a81816859dad3c7a3e6', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit6b00f9aa8fa8723de2f88d08bfbab936
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'C' =>
@@ -515,10 +515,10 @@ class ComposerStaticInit6b00f9aa8fa8723de2f88d08bfbab936
515
  public static function getInitializer(ClassLoader $loader)
516
  {
517
  return \Closure::bind(function () use ($loader) {
518
- $loader->prefixLengthsPsr4 = ComposerStaticInit6b00f9aa8fa8723de2f88d08bfbab936::$prefixLengthsPsr4;
519
- $loader->prefixDirsPsr4 = ComposerStaticInit6b00f9aa8fa8723de2f88d08bfbab936::$prefixDirsPsr4;
520
- $loader->prefixesPsr0 = ComposerStaticInit6b00f9aa8fa8723de2f88d08bfbab936::$prefixesPsr0;
521
- $loader->classMap = ComposerStaticInit6b00f9aa8fa8723de2f88d08bfbab936::$classMap;
522
 
523
  }, null, ClassLoader::class);
524
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit3f1d8b16640b4a043111685fe8a5c948
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'C' =>
515
  public static function getInitializer(ClassLoader $loader)
516
  {
517
  return \Closure::bind(function () use ($loader) {
518
+ $loader->prefixLengthsPsr4 = ComposerStaticInit3f1d8b16640b4a043111685fe8a5c948::$prefixLengthsPsr4;
519
+ $loader->prefixDirsPsr4 = ComposerStaticInit3f1d8b16640b4a043111685fe8a5c948::$prefixDirsPsr4;
520
+ $loader->prefixesPsr0 = ComposerStaticInit3f1d8b16640b4a043111685fe8a5c948::$prefixesPsr0;
521
+ $loader->classMap = ComposerStaticInit3f1d8b16640b4a043111685fe8a5c948::$classMap;
522
 
523
  }, null, ClassLoader::class);
524
  }
vendor/otgs/installer/dist/css/ui/styles.css CHANGED
@@ -1,104 +1 @@
1
- .otgs-installer-component-setting {
2
- margin: 1em 0; }
3
- .otgs-installer-component-setting h4 {
4
- margin: 0; }
5
- .otgs-settings-container .otgs-installer-component-setting .spinner {
6
- position: absolute;
7
- margin: 5px 0 0; }
8
-
9
- .otgs-on-off-switch + .otgs-switch__onoff,
10
- .otgs-switch__onoff + .otgs-on-off-switch {
11
- -webkit-margin-start: 7px;
12
- -moz-margin-start: 7px;
13
- margin-inline-start: 7px; }
14
-
15
- /* ON/OFF Switch */
16
- .otgs-switch__onoff {
17
- position: relative;
18
- width: 55px;
19
- display: inline-block;
20
- vertical-align: middle;
21
- -webkit-box-flex: 0;
22
- -ms-flex: 0 0 55px;
23
- flex: 0 0 55px; }
24
- .otgs-switch__onoff.otgs-pull-right {
25
- right: 0; }
26
- .otgs-switch__onoff .otgs-switch__onoff-label {
27
- display: block;
28
- overflow: hidden;
29
- cursor: pointer;
30
- border: 1px solid #e6e6e6;
31
- border-radius: 16px;
32
- margin: 0; }
33
- .otgs-switch__onoff .otgs-switch__onoff-inner {
34
- width: 200%;
35
- margin-left: -100%;
36
- -webkit-transition: margin 0.15s ease-in-out;
37
- transition: margin 0.15s ease-in-out; }
38
- .otgs-switch__onoff .otgs-switch__onoff-inner:before, .otgs-switch__onoff .otgs-switch__onoff-inner:after {
39
- float: left;
40
- width: 50%;
41
- height: 22px;
42
- padding: 0;
43
- line-height: 22px;
44
- font-size: 11px;
45
- -webkit-box-sizing: border-box;
46
- box-sizing: border-box; }
47
- .otgs-switch__onoff .otgs-switch__onoff-inner:before {
48
- content: "ON";
49
- padding-left: 10px;
50
- background-color: #21759b;
51
- color: #fff; }
52
- .otgs-switch__onoff .otgs-switch__onoff-inner:after {
53
- content: "OFF";
54
- padding-right: 8px;
55
- background-color: #fafafa;
56
- color: #3D3D3D;
57
- text-align: right; }
58
- .otgs-switch__onoff .otgs-switch__onoff-switch {
59
- width: 18px;
60
- height: 18px;
61
- margin: 0;
62
- background: #fff;
63
- -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
64
- box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
65
- border-radius: 50%;
66
- position: absolute;
67
- top: 3px;
68
- bottom: 0;
69
- right: 34px;
70
- -webkit-transition: right 0.15s ease-in-out;
71
- transition: right 0.15s ease-in-out; }
72
-
73
- .otgs-toggle-group {
74
- position: relative;
75
- display: -webkit-box;
76
- display: -ms-flexbox;
77
- display: flex;
78
- -webkit-box-align: center;
79
- -ms-flex-align: center;
80
- align-items: center; }
81
- .otgs-toggle-group .otgs-switch__onoff-inner {
82
- display: block; }
83
- .otgs-toggle-group input[type=checkbox] {
84
- display: none; }
85
- .otgs-toggle-group input[type=checkbox]:checked ~ .otgs-switch__onoff .otgs-switch__onoff-label .otgs-switch__onoff-inner {
86
- margin-left: 0; }
87
- .otgs-toggle-group input[type=checkbox]:checked ~ .otgs-switch__onoff .otgs-switch__onoff-label .otgs-switch__onoff-switch {
88
- right: 3px;
89
- -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
90
- box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); }
91
- .otgs-toggle-group input[type=checkbox]:focus ~ .otgs-switch__onoff {
92
- outline: thin dotted #333; }
93
- .otgs-toggle-group .otgs-on-off-switch {
94
- cursor: pointer;
95
- display: inline-block; }
96
-
97
- .otgs-external-link:after {
98
- font-family: dashicons !important;
99
- content: "\A0\F504";
100
- vertical-align: baseline;
101
- line-height: 1;
102
- display: inline-block; }
103
-
104
- /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zY3NzL3VpL3Njc3MvdWkvc3R5bGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBO0VBQ0MsY0FBYSxFQVViO0VBWEQ7SUFHRSxVQUFTLEVBQ1Q7RUFDRDtJQUVFLG1CQUFrQjtJQUNsQixnQkFBaUIsRUFDakI7O0FBSUg7O0VBRUMsMEJBQXlCO0VBQ3RCLHVCQUFzQjtFQUNqQix5QkFBd0IsRUFDaEM7O0FBRUQsbUJBQW1CO0FBQ25CO0VBQ0MsbUJBQXdCO0VBQ3hCLFlBM0JrQjtFQTRCbEIsc0JBQTRCO0VBQzVCLHVCQUFzQjtFQUN0QixvQkFBNkI7RUFDekIsbUJBL0JjO0VBZ0NWLGVBaENVLEVBZ0dsQjtFQXZFRDtJQVVFLFNBQVEsRUFDUjtFQVhGO0lBY0UsZUFBb0I7SUFDcEIsaUJBQXFCO0lBQ3JCLGdCQUFzQjtJQUN0QiwwQkFBNEM7SUFDNUMsb0JBQWlDO0lBQ2pDLFVBQWdCLEVBQ2hCO0VBcEJGO0lBdUJFLFlBQWlCO0lBQ2pCLG1CQUFrQjtJQUNsQiw2Q0FBd0Q7SUFDeEQscUNBQWdELEVBNEJoRDtJQXRERjtNQThCRyxZQUFpQjtNQUNqQixXQUFnQjtNQUNoQixhQXhEcUM7TUF5RHJDLFdBQWM7TUFDZCxrQkExRHFDO01BMkRyQyxnQkFBaUI7TUFDakIsK0JBQStCO01BQ3ZCLHVCQUF1QixFQUMvQjtJQXRDSDtNQXlDRyxjQUFzQjtNQUN0QixtQkFBc0I7TUFDdEIsMEJBM0VnQjtNQTRFaEIsWUFoRlMsRUFpRlQ7SUE3Q0g7TUFnREcsZUFBdUI7TUFDdkIsbUJBQXFCO01BQ3JCLDBCQUFvQztNQUNwQyxlQXRGZTtNQXVGZixrQkFBdUIsRUFDdkI7RUFyREg7SUF5REUsWUFuRmtCO0lBb0ZsQixhQXBGa0I7SUFxRmxCLFVBQWdCO0lBQ2hCLGlCQWhHVTtJQWlHViwrQ0FBZ0Q7SUFDeEMsdUNBQXdDO0lBQ2hELG1CQUFrQjtJQUNsQixtQkFBdUI7SUFDdkIsU0FBa0I7SUFDbEIsVUFBZ0I7SUFDaEIsWUFBa0M7SUFDbEMsNENBQXlEO0lBQ3pELG9DQUFpRCxFQUNqRDs7QUFHRjtFQUNDLG1CQUFxQjtFQUNyQixxQkFBd0I7RUFDeEIscUJBQXdCO0VBQ3hCLGNBQWlCO0VBQ2pCLDBCQUF5QjtFQUNyQix1QkFBc0I7RUFDbEIsb0JBQW1CLEVBNEIzQjtFQW5DRDtJQVVFLGVBQWMsRUFDZDtFQVhGO0lBY0UsY0FBYSxFQWViO0lBN0JGO01BaUJHLGVBQWMsRUFDZDtJQWxCSDtNQXFCRyxXQUFlO01BQ2YsK0NBQTZDO01BQ3JDLHVDQUFxQyxFQUM3QztJQXhCSDtNQTJCRywwQkFBeUIsRUFDekI7RUE1Qkg7SUFnQ0UsZ0JBQWdCO0lBQ2hCLHNCQUFxQixFQUNyQjs7QUFHRjtFQUNDLGtDQUFvQztFQUNwQyxvQkFBNEI7RUFDNUIseUJBQXdCO0VBQ3hCLGVBQWlCO0VBQ2pCLHNCQUE0QixFQUM1QiIsImZpbGUiOiJjc3MvdWkvc3R5bGVzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENPTE9SU1xuJHdoaXRlOiAjZmZmO1xuJGRhcmtncmF5OiAjM0QzRDNEO1xuJGJhc2UtZ3JheTogIzQ1NTU1RjtcbiRncmF5LXNhdHVyYXRlLTg1OiBzYXR1cmF0ZSgkYmFzZS1ncmF5LCA4NSUpO1xuJG90Z3MtYmx1ZTogIzIxNzU5YjtcblxuLy8gVFJBTlNJVElPTiBTUEVFRFNcbiR0cmFuc2l0aW9uLWZhc3Q6IDAuMTVzO1xuXG4vLyBPTiBPRkYgU1dJVENIXG4kc3dpdGNoLWhlaWdodDogMThweDtcbiRzd2l0Y2gtd2lkdGg6IDU1cHg7XG4kc3dpdGNoLWdyb3VwLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgKyA0O1xuJHRvZ2dsZS1ncm91cC1oZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0ICsgNTtcblxuLm90Z3MtaW5zdGFsbGVyLWNvbXBvbmVudC1zZXR0aW5nIHtcblx0bWFyZ2luOiAxZW0gMDtcblx0aDQge1xuXHRcdG1hcmdpbjogMDtcblx0fVxuXHQub3Rncy1zZXR0aW5ncy1jb250YWluZXIgJiB7XG5cdFx0LnNwaW5uZXIge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bWFyZ2luOiAgIDVweCAwIDA7XG5cdFx0fVxuXHR9XG59XG5cbi5vdGdzLW9uLW9mZi1zd2l0Y2ggKyAub3Rncy1zd2l0Y2hfX29ub2ZmLFxuLm90Z3Mtc3dpdGNoX19vbm9mZiArIC5vdGdzLW9uLW9mZi1zd2l0Y2gge1xuXHQtd2Via2l0LW1hcmdpbi1zdGFydDogN3B4O1xuXHQgICAtbW96LW1hcmdpbi1zdGFydDogN3B4O1xuXHQgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDdweDtcbn1cblxuLyogT04vT0ZGIFN3aXRjaCAqL1xuLm90Z3Mtc3dpdGNoX19vbm9mZiB7XG5cdHBvc2l0aW9uOiAgICAgICByZWxhdGl2ZTtcblx0d2lkdGg6ICAgICAgICAgICRzd2l0Y2gtd2lkdGg7XG5cdGRpc3BsYXk6ICAgICAgICBpbmxpbmUtYmxvY2s7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdC13ZWJraXQtYm94LWZsZXg6ICAgICAgICAgICAwO1xuXHQgICAgLW1zLWZsZXg6ICAgICAgICAgICAwIDAgJHN3aXRjaC13aWR0aDtcblx0ICAgICAgICBmbGV4OiAgICAgICAgICAgMCAwICRzd2l0Y2gtd2lkdGg7XG5cblx0Ji5vdGdzLXB1bGwtcmlnaHQge1xuXHRcdHJpZ2h0OiAwO1xuXHR9XG5cblx0Lm90Z3Mtc3dpdGNoX19vbm9mZi1sYWJlbCB7XG5cdFx0ZGlzcGxheTogICAgICAgYmxvY2s7XG5cdFx0b3ZlcmZsb3c6ICAgICAgaGlkZGVuO1xuXHRcdGN1cnNvcjogICAgICAgIHBvaW50ZXI7XG5cdFx0Ym9yZGVyOiAgICAgICAgMXB4IHNvbGlkIGRhcmtlbigkd2hpdGUsIDEwJSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogJHN3aXRjaC1oZWlnaHQgLSAyO1xuXHRcdG1hcmdpbjogICAgICAgIDA7XG5cdH1cblxuXHQub3Rncy1zd2l0Y2hfX29ub2ZmLWlubmVyIHtcblx0XHR3aWR0aDogICAgICAgMjAwJTtcblx0XHRtYXJnaW4tbGVmdDogLTEwMCU7XG5cdFx0LXdlYmtpdC10cmFuc2l0aW9uOiAgbWFyZ2luICR0cmFuc2l0aW9uLWZhc3QgZWFzZS1pbi1vdXQ7XG5cdFx0dHJhbnNpdGlvbjogIG1hcmdpbiAkdHJhbnNpdGlvbi1mYXN0IGVhc2UtaW4tb3V0O1xuXG5cdFx0JjpiZWZvcmUsXG5cdFx0JjphZnRlciB7XG5cdFx0XHRmbG9hdDogICAgICAgbGVmdDtcblx0XHRcdHdpZHRoOiAgICAgICA1MCU7XG5cdFx0XHRoZWlnaHQ6ICAgICAgJHN3aXRjaC1ncm91cC1oZWlnaHQ7XG5cdFx0XHRwYWRkaW5nOiAgICAgMDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAkc3dpdGNoLWdyb3VwLWhlaWdodDtcblx0XHRcdGZvbnQtc2l6ZTogICAxMXB4O1xuXHRcdFx0LXdlYmtpdC1ib3gtc2l6aW5nOiAgYm9yZGVyLWJveDtcblx0XHRcdCAgICAgICAgYm94LXNpemluZzogIGJvcmRlci1ib3g7XG5cdFx0fVxuXG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0Y29udGVudDogICAgICAgICAgXCJPTlwiO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAgICAgMTBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRvdGdzLWJsdWU7XG5cdFx0XHRjb2xvcjogICAgICAgICAgICAkd2hpdGU7XG5cdFx0fVxuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRjb250ZW50OiAgICAgICAgICBcIk9GRlwiO1xuXHRcdFx0cGFkZGluZy1yaWdodDogICAgOHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCR3aGl0ZSwgMiUpO1xuXHRcdFx0Y29sb3I6ICAgICAgICAgICAgJGRhcmtncmF5O1xuXHRcdFx0dGV4dC1hbGlnbjogICAgICAgcmlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0Lm90Z3Mtc3dpdGNoX19vbm9mZi1zd2l0Y2gge1xuXHRcdHdpZHRoOiAgICAgICAgICRzd2l0Y2gtaGVpZ2h0O1xuXHRcdGhlaWdodDogICAgICAgICRzd2l0Y2gtaGVpZ2h0O1xuXHRcdG1hcmdpbjogICAgICAgIDA7XG5cdFx0YmFja2dyb3VuZDogICAgJHdoaXRlO1xuXHRcdC13ZWJraXQtYm94LXNoYWRvdzogICAgMCAwIDNweCByZ2JhKDAsIDAsIDAsIC4zKTtcblx0XHQgICAgICAgIGJveC1zaGFkb3c6ICAgIDAgMCAzcHggcmdiYSgwLCAwLCAwLCAuMyk7XG5cdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdHBvc2l0aW9uOiAgICAgIGFic29sdXRlO1xuXHRcdHRvcDogICAgICAgICAgIDNweDtcblx0XHRib3R0b206ICAgICAgICAwO1xuXHRcdHJpZ2h0OiAgICAgICAgICRzd2l0Y2gtaGVpZ2h0ICsgMTY7XG5cdFx0LXdlYmtpdC10cmFuc2l0aW9uOiAgICByaWdodCAkdHJhbnNpdGlvbi1mYXN0IGVhc2UtaW4tb3V0O1xuXHRcdHRyYW5zaXRpb246ICAgIHJpZ2h0ICR0cmFuc2l0aW9uLWZhc3QgZWFzZS1pbi1vdXQ7XG5cdH1cbn1cblxuLm90Z3MtdG9nZ2xlLWdyb3VwIHtcblx0cG9zaXRpb246ICAgIHJlbGF0aXZlO1xuXHRkaXNwbGF5OiAgICAgLXdlYmtpdC1ib3g7XG5cdGRpc3BsYXk6ICAgICAtbXMtZmxleGJveDtcblx0ZGlzcGxheTogICAgIGZsZXg7XG5cdC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XG5cdCAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuXHQgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0Lm90Z3Mtc3dpdGNoX19vbm9mZi1pbm5lciB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHRpbnB1dFt0eXBlPWNoZWNrYm94XSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdCY6Y2hlY2tlZCB+IC5vdGdzLXN3aXRjaF9fb25vZmYgLm90Z3Mtc3dpdGNoX19vbm9mZi1sYWJlbCAub3Rncy1zd2l0Y2hfX29ub2ZmLWlubmVyIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdH1cblxuXHRcdCY6Y2hlY2tlZCB+IC5vdGdzLXN3aXRjaF9fb25vZmYgLm90Z3Mtc3dpdGNoX19vbm9mZi1sYWJlbCAub3Rncy1zd2l0Y2hfX29ub2ZmLXN3aXRjaCB7XG5cdFx0XHRyaWdodDogICAgICAzcHg7XG5cdFx0XHQtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAzcHggcmdiYSgwLCAwLCAwLCAuNSk7XG5cdFx0XHQgICAgICAgIGJveC1zaGFkb3c6IDAgMCAzcHggcmdiYSgwLCAwLCAwLCAuNSk7XG5cdFx0fVxuXG5cdFx0Jjpmb2N1cyB+IC5vdGdzLXN3aXRjaF9fb25vZmYge1xuXHRcdFx0b3V0bGluZTogdGhpbiBkb3R0ZWQgIzMzMztcblx0XHR9XG5cdH1cblxuXHQub3Rncy1vbi1vZmYtc3dpdGNoIHtcblx0XHRjdXJzb3I6ICBwb2ludGVyO1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0fVxufVxuXG4ub3Rncy1leHRlcm5hbC1saW5rOmFmdGVyIHtcblx0Zm9udC1mYW1pbHk6ICAgIGRhc2hpY29ucyAhaW1wb3J0YW50O1xuXHRjb250ZW50OiAgICAgICAgXCJcXDAwYTBcXGY1MDRcIjtcblx0dmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuXHRsaW5lLWhlaWdodDogICAgMTtcblx0ZGlzcGxheTogICAgICAgIGlubGluZS1ibG9jaztcbn0iXSwic291cmNlUm9vdCI6IiJ9*/
1
+ .otgs-installer-component-setting{margin:1em 0}.otgs-installer-component-setting h4{margin:0}.otgs-settings-container .otgs-installer-component-setting .spinner{position:absolute;margin:5px 0 0}.otgs-on-off-switch+.otgs-switch__onoff,.otgs-switch__onoff+.otgs-on-off-switch{-webkit-margin-start:7px;margin-inline-start:7px}.otgs-switch__onoff{position:relative;width:55px;display:inline-block;vertical-align:middle;-webkit-box-flex:0;-ms-flex:0 0 55px;flex:0 0 55px}.otgs-switch__onoff.otgs-pull-right{right:0}.otgs-switch__onoff .otgs-switch__onoff-label{display:block;overflow:hidden;cursor:pointer;border:1px solid #e6e6e6;border-radius:16px;margin:0}.otgs-switch__onoff .otgs-switch__onoff-inner{width:200%;margin-left:-100%;-webkit-transition:margin .15s ease-in-out;transition:margin .15s ease-in-out}.otgs-switch__onoff .otgs-switch__onoff-inner:after,.otgs-switch__onoff .otgs-switch__onoff-inner:before{float:left;width:50%;height:22px;padding:0;line-height:22px;font-size:11px;-webkit-box-sizing:border-box;box-sizing:border-box}.otgs-switch__onoff .otgs-switch__onoff-inner:before{content:"ON";padding-left:10px;background-color:#21759b;color:#fff}.otgs-switch__onoff .otgs-switch__onoff-inner:after{content:"OFF";padding-right:8px;background-color:#fafafa;color:#3d3d3d;text-align:right}.otgs-switch__onoff .otgs-switch__onoff-switch{width:18px;height:18px;margin:0;background:#fff;-webkit-box-shadow:0 0 3px rgba(0,0,0,.3);box-shadow:0 0 3px rgba(0,0,0,.3);border-radius:50%;position:absolute;top:3px;bottom:0;right:34px;-webkit-transition:right .15s ease-in-out;transition:right .15s ease-in-out}.otgs-toggle-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.otgs-toggle-group .otgs-switch__onoff-inner{display:block}.otgs-toggle-group input[type=checkbox]{display:none}.otgs-toggle-group input[type=checkbox]:checked~.otgs-switch__onoff .otgs-switch__onoff-label .otgs-switch__onoff-inner{margin-left:0}.otgs-toggle-group input[type=checkbox]:checked~.otgs-switch__onoff .otgs-switch__onoff-label .otgs-switch__onoff-switch{right:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.5);box-shadow:0 0 3px rgba(0,0,0,.5)}.otgs-toggle-group input[type=checkbox]:focus~.otgs-switch__onoff{outline:thin dotted #333}.otgs-toggle-group .otgs-on-off-switch{cursor:pointer;display:inline-block}.otgs-external-link:after{font-family:dashicons!important;content:"\A0\F504";vertical-align:baseline;line-height:1;display:inline-block}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/dist/js/ui/app.js CHANGED
@@ -1,701 +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, {
40
- /******/ configurable: false,
41
- /******/ enumerable: true,
42
- /******/ get: getter
43
- /******/ });
44
- /******/ }
45
- /******/ };
46
- /******/
47
- /******/ // define __esModule on exports
48
- /******/ __webpack_require__.r = function(exports) {
49
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
50
- /******/ };
51
- /******/
52
- /******/ // getDefaultExport function for compatibility with non-harmony modules
53
- /******/ __webpack_require__.n = function(module) {
54
- /******/ var getter = module && module.__esModule ?
55
- /******/ function getDefault() { return module['default']; } :
56
- /******/ function getModuleExports() { return module; };
57
- /******/ __webpack_require__.d(getter, 'a', getter);
58
- /******/ return getter;
59
- /******/ };
60
- /******/
61
- /******/ // Object.prototype.hasOwnProperty.call
62
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
63
- /******/
64
- /******/ // __webpack_public_path__
65
- /******/ __webpack_require__.p = "";
66
- /******/
67
- /******/
68
- /******/ // Load entry module and return exports
69
- /******/ return __webpack_require__(__webpack_require__.s = 0);
70
- /******/ })
71
- /************************************************************************/
72
- /******/ ({
73
-
74
- /***/ "./js/ui/Switcher.js":
75
- /*!***************************!*\
76
- !*** ./js/ui/Switcher.js ***!
77
- \***************************/
78
- /*! no static exports found */
79
- /***/ (function(module, exports, __webpack_require__) {
80
-
81
- "use strict";
82
-
83
-
84
- Object.defineProperty(exports, "__esModule", {
85
- value: true
86
- });
87
-
88
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
89
-
90
- var Switcher = function Switcher(element) {
91
- _classCallCheck(this, Switcher);
92
-
93
- var checkBoxContainer = element.parentElement;
94
- var heading = checkBoxContainer.getElementsByClassName('heading');
95
- var label = checkBoxContainer.getElementsByTagName('label').item(0);
96
-
97
- if (label) {
98
- label.classList.add('otgs-on-off-switch');
99
- }
100
-
101
- var toggleGroup = document.createElement('label');
102
- toggleGroup.classList.add('otgs-toggle-group');
103
- toggleGroup.appendChild(element);
104
- toggleGroup.appendChild(label);
105
-
106
- var switcherContainer = document.createElement('span');
107
- switcherContainer.classList.add('otgs-switch__onoff');
108
- var switcherBorder = document.createElement('span');
109
- switcherBorder.classList.add('otgs-switch__onoff-label');
110
- var switcherInner = document.createElement('span');
111
- switcherInner.classList.add('otgs-switch__onoff-inner');
112
- var switcherSwitch = document.createElement('span');
113
- switcherSwitch.classList.add('otgs-switch__onoff-switch');
114
-
115
- switcherBorder.appendChild(switcherInner);
116
- switcherBorder.appendChild(switcherSwitch);
117
-
118
- switcherContainer.appendChild(switcherBorder);
119
-
120
- toggleGroup.appendChild(switcherContainer);
121
-
122
- checkBoxContainer.appendChild(toggleGroup);
123
-
124
- if (heading.length) {
125
- heading.item(heading.length - 1).parentNode.insertBefore(toggleGroup, heading.item(heading.length - 1).nextSibling);
126
- } else {
127
- checkBoxContainer.insertBefore(toggleGroup, checkBoxContainer.firstChild);
128
- }
129
- };
130
-
131
- exports.default = Switcher;
132
-
133
- /***/ }),
134
-
135
- /***/ "./js/ui/UI.js":
136
- /*!*********************!*\
137
- !*** ./js/ui/UI.js ***!
138
- \*********************/
139
- /*! no static exports found */
140
- /***/ (function(module, exports, __webpack_require__) {
141
-
142
- "use strict";
143
-
144
-
145
- Object.defineProperty(exports, "__esModule", {
146
- value: true
147
- });
148
-
149
- __webpack_require__(/*! ../../scss/ui/styles.scss */ "./scss/ui/styles.scss");
150
-
151
- var _Switcher = __webpack_require__(/*! ./Switcher */ "./js/ui/Switcher.js");
152
-
153
- var _Switcher2 = _interopRequireDefault(_Switcher);
154
-
155
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
156
-
157
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
158
-
159
- var UI = function UI(element) {
160
- _classCallCheck(this, UI);
161
-
162
- var checkBoxes = element.querySelectorAll('input[type="checkbox"]');
163
-
164
- if (checkBoxes) {
165
- Array.from(checkBoxes).map(function (checkBox) {
166
- return new _Switcher2.default(checkBox);
167
- });
168
- }
169
- };
170
-
171
- exports.default = UI;
172
-
173
- /***/ }),
174
-
175
- /***/ "./js/ui/app.js":
176
- /*!**********************!*\
177
- !*** ./js/ui/app.js ***!
178
- \**********************/
179
- /*! no static exports found */
180
- /***/ (function(module, exports, __webpack_require__) {
181
-
182
- "use strict";
183
-
184
-
185
- var _UI = __webpack_require__(/*! ./UI */ "./js/ui/UI.js");
186
-
187
- var _UI2 = _interopRequireDefault(_UI);
188
-
189
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
190
-
191
- window.addEventListener('DOMContentLoaded', function () {
192
-
193
- var otgsUIElements = document.querySelectorAll('.otgs-ui');
194
-
195
- if (otgsUIElements) {
196
- Array.from(otgsUIElements).map(function (otgsUI) {
197
- return new _UI2.default(otgsUI);
198
- });
199
- }
200
- });
201
-
202
- /***/ }),
203
-
204
- /***/ "./node_modules/whatwg-fetch/fetch.js":
205
- /*!********************************************!*\
206
- !*** ./node_modules/whatwg-fetch/fetch.js ***!
207
- \********************************************/
208
- /*! no static exports found */
209
- /***/ (function(module, exports) {
210
-
211
- (function(self) {
212
- 'use strict';
213
-
214
- if (self.fetch) {
215
- return
216
- }
217
-
218
- var support = {
219
- searchParams: 'URLSearchParams' in self,
220
- iterable: 'Symbol' in self && 'iterator' in Symbol,
221
- blob: 'FileReader' in self && 'Blob' in self && (function() {
222
- try {
223
- new Blob()
224
- return true
225
- } catch(e) {
226
- return false
227
- }
228
- })(),
229
- formData: 'FormData' in self,
230
- arrayBuffer: 'ArrayBuffer' in self
231
- }
232
-
233
- if (support.arrayBuffer) {
234
- var viewClasses = [
235
- '[object Int8Array]',
236
- '[object Uint8Array]',
237
- '[object Uint8ClampedArray]',
238
- '[object Int16Array]',
239
- '[object Uint16Array]',
240
- '[object Int32Array]',
241
- '[object Uint32Array]',
242
- '[object Float32Array]',
243
- '[object Float64Array]'
244
- ]
245
-
246
- var isDataView = function(obj) {
247
- return obj && DataView.prototype.isPrototypeOf(obj)
248
- }
249
-
250
- var isArrayBufferView = ArrayBuffer.isView || function(obj) {
251
- return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
252
- }
253
- }
254
-
255
- function normalizeName(name) {
256
- if (typeof name !== 'string') {
257
- name = String(name)
258
- }
259
- if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) {
260
- throw new TypeError('Invalid character in header field name')
261
- }
262
- return name.toLowerCase()
263
- }
264
-
265
- function normalizeValue(value) {
266
- if (typeof value !== 'string') {
267
- value = String(value)
268
- }
269
- return value
270
- }
271
-
272
- // Build a destructive iterator for the value list
273
- function iteratorFor(items) {
274
- var iterator = {
275
- next: function() {
276
- var value = items.shift()
277
- return {done: value === undefined, value: value}
278
- }
279
- }
280
-
281
- if (support.iterable) {
282
- iterator[Symbol.iterator] = function() {
283
- return iterator
284
- }
285
- }
286
-
287
- return iterator
288
- }
289
-
290
- function Headers(headers) {
291
- this.map = {}
292
-
293
- if (headers instanceof Headers) {
294
- headers.forEach(function(value, name) {
295
- this.append(name, value)
296
- }, this)
297
- } else if (Array.isArray(headers)) {
298
- headers.forEach(function(header) {
299
- this.append(header[0], header[1])
300
- }, this)
301
- } else if (headers) {
302
- Object.getOwnPropertyNames(headers).forEach(function(name) {
303
- this.append(name, headers[name])
304
- }, this)
305
- }
306
- }
307
-
308
- Headers.prototype.append = function(name, value) {
309
- name = normalizeName(name)
310
- value = normalizeValue(value)
311
- var oldValue = this.map[name]
312
- this.map[name] = oldValue ? oldValue+','+value : value
313
- }
314
-
315
- Headers.prototype['delete'] = function(name) {
316
- delete this.map[normalizeName(name)]
317
- }
318
-
319
- Headers.prototype.get = function(name) {
320
- name = normalizeName(name)
321
- return this.has(name) ? this.map[name] : null
322
- }
323
-
324
- Headers.prototype.has = function(name) {
325
- return this.map.hasOwnProperty(normalizeName(name))
326
- }
327
-
328
- Headers.prototype.set = function(name, value) {
329
- this.map[normalizeName(name)] = normalizeValue(value)
330
- }
331
-
332
- Headers.prototype.forEach = function(callback, thisArg) {
333
- for (var name in this.map) {
334
- if (this.map.hasOwnProperty(name)) {
335
- callback.call(thisArg, this.map[name], name, this)
336
- }
337
- }
338
- }
339
-
340
- Headers.prototype.keys = function() {
341
- var items = []
342
- this.forEach(function(value, name) { items.push(name) })
343
- return iteratorFor(items)
344
- }
345
-
346
- Headers.prototype.values = function() {
347
- var items = []
348
- this.forEach(function(value) { items.push(value) })
349
- return iteratorFor(items)
350
- }
351
-
352
- Headers.prototype.entries = function() {
353
- var items = []
354
- this.forEach(function(value, name) { items.push([name, value]) })
355
- return iteratorFor(items)
356
- }
357
-
358
- if (support.iterable) {
359
- Headers.prototype[Symbol.iterator] = Headers.prototype.entries
360
- }
361
-
362
- function consumed(body) {
363
- if (body.bodyUsed) {
364
- return Promise.reject(new TypeError('Already read'))
365
- }
366
- body.bodyUsed = true
367
- }
368
-
369
- function fileReaderReady(reader) {
370
- return new Promise(function(resolve, reject) {
371
- reader.onload = function() {
372
- resolve(reader.result)
373
- }
374
- reader.onerror = function() {
375
- reject(reader.error)
376
- }
377
- })
378
- }
379
-
380
- function readBlobAsArrayBuffer(blob) {
381
- var reader = new FileReader()
382
- var promise = fileReaderReady(reader)
383
- reader.readAsArrayBuffer(blob)
384
- return promise
385
- }
386
-
387
- function readBlobAsText(blob) {
388
- var reader = new FileReader()
389
- var promise = fileReaderReady(reader)
390
- reader.readAsText(blob)
391
- return promise
392
- }
393
-
394
- function readArrayBufferAsText(buf) {
395
- var view = new Uint8Array(buf)
396
- var chars = new Array(view.length)
397
-
398
- for (var i = 0; i < view.length; i++) {
399
- chars[i] = String.fromCharCode(view[i])
400
- }
401
- return chars.join('')
402
- }
403
-
404
- function bufferClone(buf) {
405
- if (buf.slice) {
406
- return buf.slice(0)
407
- } else {
408
- var view = new Uint8Array(buf.byteLength)
409
- view.set(new Uint8Array(buf))
410
- return view.buffer
411
- }
412
- }
413
-
414
- function Body() {
415
- this.bodyUsed = false
416
-
417
- this._initBody = function(body) {
418
- this._bodyInit = body
419
- if (!body) {
420
- this._bodyText = ''
421
- } else if (typeof body === 'string') {
422
- this._bodyText = body
423
- } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
424
- this._bodyBlob = body
425
- } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
426
- this._bodyFormData = body
427
- } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
428
- this._bodyText = body.toString()
429
- } else if (support.arrayBuffer && support.blob && isDataView(body)) {
430
- this._bodyArrayBuffer = bufferClone(body.buffer)
431
- // IE 10-11 can't handle a DataView body.
432
- this._bodyInit = new Blob([this._bodyArrayBuffer])
433
- } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
434
- this._bodyArrayBuffer = bufferClone(body)
435
- } else {
436
- throw new Error('unsupported BodyInit type')
437
- }
438
-
439
- if (!this.headers.get('content-type')) {
440
- if (typeof body === 'string') {
441
- this.headers.set('content-type', 'text/plain;charset=UTF-8')
442
- } else if (this._bodyBlob && this._bodyBlob.type) {
443
- this.headers.set('content-type', this._bodyBlob.type)
444
- } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
445
- this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')
446
- }
447
- }
448
- }
449
-
450
- if (support.blob) {
451
- this.blob = function() {
452
- var rejected = consumed(this)
453
- if (rejected) {
454
- return rejected
455
- }
456
-
457
- if (this._bodyBlob) {
458
- return Promise.resolve(this._bodyBlob)
459
- } else if (this._bodyArrayBuffer) {
460
- return Promise.resolve(new Blob([this._bodyArrayBuffer]))
461
- } else if (this._bodyFormData) {
462
- throw new Error('could not read FormData body as blob')
463
- } else {
464
- return Promise.resolve(new Blob([this._bodyText]))
465
- }
466
- }
467
-
468
- this.arrayBuffer = function() {
469
- if (this._bodyArrayBuffer) {
470
- return consumed(this) || Promise.resolve(this._bodyArrayBuffer)
471
- } else {
472
- return this.blob().then(readBlobAsArrayBuffer)
473
- }
474
- }
475
- }
476
-
477
- this.text = function() {
478
- var rejected = consumed(this)
479
- if (rejected) {
480
- return rejected
481
- }
482
-
483
- if (this._bodyBlob) {
484
- return readBlobAsText(this._bodyBlob)
485
- } else if (this._bodyArrayBuffer) {
486
- return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
487
- } else if (this._bodyFormData) {
488
- throw new Error('could not read FormData body as text')
489
- } else {
490
- return Promise.resolve(this._bodyText)
491
- }
492
- }
493
-
494
- if (support.formData) {
495
- this.formData = function() {
496
- return this.text().then(decode)
497
- }
498
- }
499
-
500
- this.json = function() {
501
- return this.text().then(JSON.parse)
502
- }
503
-
504
- return this
505
- }
506
-
507
- // HTTP methods whose capitalization should be normalized
508
- var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']
509
-
510
- function normalizeMethod(method) {
511
- var upcased = method.toUpperCase()
512
- return (methods.indexOf(upcased) > -1) ? upcased : method
513
- }
514
-
515
- function Request(input, options) {
516
- options = options || {}
517
- var body = options.body
518
-
519
- if (input instanceof Request) {
520
- if (input.bodyUsed) {
521
- throw new TypeError('Already read')
522
- }
523
- this.url = input.url
524
- this.credentials = input.credentials
525
- if (!options.headers) {
526
- this.headers = new Headers(input.headers)
527
- }
528
- this.method = input.method
529
- this.mode = input.mode
530
- if (!body && input._bodyInit != null) {
531
- body = input._bodyInit
532
- input.bodyUsed = true
533
- }
534
- } else {
535
- this.url = String(input)
536
- }
537
-
538
- this.credentials = options.credentials || this.credentials || 'omit'
539
- if (options.headers || !this.headers) {
540
- this.headers = new Headers(options.headers)
541
- }
542
- this.method = normalizeMethod(options.method || this.method || 'GET')
543
- this.mode = options.mode || this.mode || null
544
- this.referrer = null
545
-
546
- if ((this.method === 'GET' || this.method === 'HEAD') && body) {
547
- throw new TypeError('Body not allowed for GET or HEAD requests')
548
- }
549
- this._initBody(body)
550
- }
551
-
552
- Request.prototype.clone = function() {
553
- return new Request(this, { body: this._bodyInit })
554
- }
555
-
556
- function decode(body) {
557
- var form = new FormData()
558
- body.trim().split('&').forEach(function(bytes) {
559
- if (bytes) {
560
- var split = bytes.split('=')
561
- var name = split.shift().replace(/\+/g, ' ')
562
- var value = split.join('=').replace(/\+/g, ' ')
563
- form.append(decodeURIComponent(name), decodeURIComponent(value))
564
- }
565
- })
566
- return form
567
- }
568
-
569
- function parseHeaders(rawHeaders) {
570
- var headers = new Headers()
571
- rawHeaders.split(/\r?\n/).forEach(function(line) {
572
- var parts = line.split(':')
573
- var key = parts.shift().trim()
574
- if (key) {
575
- var value = parts.join(':').trim()
576
- headers.append(key, value)
577
- }
578
- })
579
- return headers
580
- }
581
-
582
- Body.call(Request.prototype)
583
-
584
- function Response(bodyInit, options) {
585
- if (!options) {
586
- options = {}
587
- }
588
-
589
- this.type = 'default'
590
- this.status = 'status' in options ? options.status : 200
591
- this.ok = this.status >= 200 && this.status < 300
592
- this.statusText = 'statusText' in options ? options.statusText : 'OK'
593
- this.headers = new Headers(options.headers)
594
- this.url = options.url || ''
595
- this._initBody(bodyInit)
596
- }
597
-
598
- Body.call(Response.prototype)
599
-
600
- Response.prototype.clone = function() {
601
- return new Response(this._bodyInit, {
602
- status: this.status,
603
- statusText: this.statusText,
604
- headers: new Headers(this.headers),
605
- url: this.url
606
- })
607
- }
608
-
609
- Response.error = function() {
610
- var response = new Response(null, {status: 0, statusText: ''})
611
- response.type = 'error'
612
- return response
613
- }
614
-
615
- var redirectStatuses = [301, 302, 303, 307, 308]
616
-
617
- Response.redirect = function(url, status) {
618
- if (redirectStatuses.indexOf(status) === -1) {
619
- throw new RangeError('Invalid status code')
620
- }
621
-
622
- return new Response(null, {status: status, headers: {location: url}})
623
- }
624
-
625
- self.Headers = Headers
626
- self.Request = Request
627
- self.Response = Response
628
-
629
- self.fetch = function(input, init) {
630
- return new Promise(function(resolve, reject) {
631
- var request = new Request(input, init)
632
- var xhr = new XMLHttpRequest()
633
-
634
- xhr.onload = function() {
635
- var options = {
636
- status: xhr.status,
637
- statusText: xhr.statusText,
638
- headers: parseHeaders(xhr.getAllResponseHeaders() || '')
639
- }
640
- options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')
641
- var body = 'response' in xhr ? xhr.response : xhr.responseText
642
- resolve(new Response(body, options))
643
- }
644
-
645
- xhr.onerror = function() {
646
- reject(new TypeError('Network request failed'))
647
- }
648
-
649
- xhr.ontimeout = function() {
650
- reject(new TypeError('Network request failed'))
651
- }
652
-
653
- xhr.open(request.method, request.url, true)
654
-
655
- if (request.credentials === 'include') {
656
- xhr.withCredentials = true
657
- }
658
-
659
- if ('responseType' in xhr && support.blob) {
660
- xhr.responseType = 'blob'
661
- }
662
-
663
- request.headers.forEach(function(value, name) {
664
- xhr.setRequestHeader(name, value)
665
- })
666
-
667
- xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)
668
- })
669
- }
670
- self.fetch.polyfill = true
671
- })(typeof self !== 'undefined' ? self : this);
672
-
673
-
674
- /***/ }),
675
-
676
- /***/ "./scss/ui/styles.scss":
677
- /*!*****************************!*\
678
- !*** ./scss/ui/styles.scss ***!
679
- \*****************************/
680
- /*! no static exports found */
681
- /***/ (function(module, exports) {
682
-
683
- // removed by extract-text-webpack-plugin
684
-
685
- /***/ }),
686
-
687
- /***/ 0:
688
- /*!*****************************************!*\
689
- !*** multi whatwg-fetch ./js/ui/app.js ***!
690
- \*****************************************/
691
- /*! no static exports found */
692
- /***/ (function(module, exports, __webpack_require__) {
693
-
694
- __webpack_require__(/*! whatwg-fetch */"./node_modules/whatwg-fetch/fetch.js");
695
- module.exports = __webpack_require__(/*! ./js/ui/app.js */"./js/ui/app.js");
696
-
697
-
698
- /***/ })
699
-
700
- /******/ });
701
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vanMvdWkvU3dpdGNoZXIuanMiLCJ3ZWJwYWNrOi8vLy4vanMvdWkvVUkuanMiLCJ3ZWJwYWNrOi8vLy4vanMvdWkvYXBwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vLy4vc2Nzcy91aS9zdHlsZXMuc2NzcyJdLCJuYW1lcyI6WyJTd2l0Y2hlciIsImVsZW1lbnQiLCJjaGVja0JveENvbnRhaW5lciIsInBhcmVudEVsZW1lbnQiLCJoZWFkaW5nIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImxhYmVsIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpdGVtIiwiY2xhc3NMaXN0IiwiYWRkIiwidG9nZ2xlR3JvdXAiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJhcHBlbmRDaGlsZCIsInN3aXRjaGVyQ29udGFpbmVyIiwic3dpdGNoZXJCb3JkZXIiLCJzd2l0Y2hlcklubmVyIiwic3dpdGNoZXJTd2l0Y2giLCJsZW5ndGgiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJmaXJzdENoaWxkIiwiVUkiLCJjaGVja0JveGVzIiwicXVlcnlTZWxlY3RvckFsbCIsIkFycmF5IiwiZnJvbSIsIm1hcCIsImNoZWNrQm94Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsIm90Z3NVSUVsZW1lbnRzIiwib3Rnc1VJIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5REFBaUQsY0FBYztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7O0FBR0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDbkVNQSxRLEdBQ0wsa0JBQWFDLE9BQWIsRUFBc0I7QUFBQTs7QUFDckIsS0FBTUMsb0JBQW9CRCxRQUFRRSxhQUFsQztBQUNBLEtBQU1DLFVBQVVGLGtCQUFrQkcsc0JBQWxCLENBQXlDLFNBQXpDLENBQWhCO0FBQ0EsS0FBTUMsUUFBUUosa0JBQWtCSyxvQkFBbEIsQ0FBdUMsT0FBdkMsRUFBZ0RDLElBQWhELENBQXFELENBQXJELENBQWQ7O0FBRUEsS0FBSUYsS0FBSixFQUFXO0FBQ1ZBLFFBQU1HLFNBQU4sQ0FBZ0JDLEdBQWhCLENBQW9CLG9CQUFwQjtBQUNBOztBQUVELEtBQU1DLGNBQWNDLFNBQVNDLGFBQVQsQ0FBdUIsT0FBdkIsQ0FBcEI7QUFDQUYsYUFBWUYsU0FBWixDQUFzQkMsR0FBdEIsQ0FBMEIsbUJBQTFCO0FBQ0FDLGFBQVlHLFdBQVosQ0FBd0JiLE9BQXhCO0FBQ0FVLGFBQVlHLFdBQVosQ0FBd0JSLEtBQXhCOztBQUVBLEtBQU1TLG9CQUFvQkgsU0FBU0MsYUFBVCxDQUF1QixNQUF2QixDQUExQjtBQUNBRSxtQkFBa0JOLFNBQWxCLENBQTRCQyxHQUE1QixDQUFnQyxvQkFBaEM7QUFDQSxLQUFNTSxpQkFBaUJKLFNBQVNDLGFBQVQsQ0FBdUIsTUFBdkIsQ0FBdkI7QUFDQUcsZ0JBQWVQLFNBQWYsQ0FBeUJDLEdBQXpCLENBQTZCLDBCQUE3QjtBQUNBLEtBQU1PLGdCQUFnQkwsU0FBU0MsYUFBVCxDQUF1QixNQUF2QixDQUF0QjtBQUNBSSxlQUFjUixTQUFkLENBQXdCQyxHQUF4QixDQUE0QiwwQkFBNUI7QUFDQSxLQUFNUSxpQkFBaUJOLFNBQVNDLGFBQVQsQ0FBdUIsTUFBdkIsQ0FBdkI7QUFDQUssZ0JBQWVULFNBQWYsQ0FBeUJDLEdBQXpCLENBQTZCLDJCQUE3Qjs7QUFFQU0sZ0JBQWVGLFdBQWYsQ0FBMkJHLGFBQTNCO0FBQ0FELGdCQUFlRixXQUFmLENBQTJCSSxjQUEzQjs7QUFFQUgsbUJBQWtCRCxXQUFsQixDQUE4QkUsY0FBOUI7O0FBRUFMLGFBQVlHLFdBQVosQ0FBd0JDLGlCQUF4Qjs7QUFFQWIsbUJBQWtCWSxXQUFsQixDQUE4QkgsV0FBOUI7O0FBRUEsS0FBSVAsUUFBUWUsTUFBWixFQUFvQjtBQUNuQmYsVUFBUUksSUFBUixDQUFhSixRQUFRZSxNQUFSLEdBQWlCLENBQTlCLEVBQWlDQyxVQUFqQyxDQUNFQyxZQURGLENBQ2VWLFdBRGYsRUFDNEJQLFFBQVFJLElBQVIsQ0FBYUosUUFBUWUsTUFBUixHQUFpQixDQUE5QixFQUFpQ0csV0FEN0Q7QUFFQSxFQUhELE1BR087QUFDTnBCLG9CQUFrQm1CLFlBQWxCLENBQStCVixXQUEvQixFQUE0Q1Qsa0JBQWtCcUIsVUFBOUQ7QUFDQTtBQUNELEM7O2tCQUlhdkIsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0NmOztBQUNBOzs7Ozs7OztJQUVNd0IsRSxHQUNMLFlBQWF2QixPQUFiLEVBQXNCO0FBQUE7O0FBQ3JCLEtBQU13QixhQUFheEIsUUFBUXlCLGdCQUFSLENBQXlCLHdCQUF6QixDQUFuQjs7QUFFQSxLQUFHRCxVQUFILEVBQWU7QUFDZEUsUUFBTUMsSUFBTixDQUFXSCxVQUFYLEVBQXVCSSxHQUF2QixDQUEyQjtBQUFBLFVBQVksSUFBSTdCLGtCQUFKLENBQWE4QixRQUFiLENBQVo7QUFBQSxHQUEzQjtBQUNBO0FBQ0QsQzs7a0JBR2FOLEU7Ozs7Ozs7Ozs7Ozs7O0FDYmY7Ozs7OztBQUVBTyxPQUFPQyxnQkFBUCxDQUF3QixrQkFBeEIsRUFBNEMsWUFBTTs7QUFFakQsS0FBTUMsaUJBQWlCckIsU0FBU2MsZ0JBQVQsQ0FBMEIsVUFBMUIsQ0FBdkI7O0FBRUEsS0FBSU8sY0FBSixFQUFvQjtBQUNuQk4sUUFBTUMsSUFBTixDQUFXSyxjQUFYLEVBQTJCSixHQUEzQixDQUErQjtBQUFBLFVBQVUsSUFBSUwsWUFBSixDQUFPVSxNQUFQLENBQVY7QUFBQSxHQUEvQjtBQUNBO0FBQ0QsQ0FQRCxFOzs7Ozs7Ozs7OztBQ0ZBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3Q0FBd0MsbUJBQW1CO0FBQzNEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQyxvQkFBb0I7QUFDdEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDLDRCQUE0QjtBQUNwRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RCxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1QsOEVBQThFO0FBQzlFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOEJBQThCLHVCQUF1QjtBQUNyRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLHVDQUF1QywwQkFBMEI7QUFDakU7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQiwwQkFBMEIsZUFBZTtBQUN4RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7QUM1Y0QseUMiLCJmaWxlIjoianMvdWkvYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTtcbiIsImNsYXNzIFN3aXRjaGVyIHtcblx0Y29uc3RydWN0b3IgKGVsZW1lbnQpIHtcblx0XHRjb25zdCBjaGVja0JveENvbnRhaW5lciA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcblx0XHRjb25zdCBoZWFkaW5nID0gY2hlY2tCb3hDb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGVhZGluZycpO1xuXHRcdGNvbnN0IGxhYmVsID0gY2hlY2tCb3hDb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xhYmVsJykuaXRlbSgwKTtcblxuXHRcdGlmIChsYWJlbCkge1xuXHRcdFx0bGFiZWwuY2xhc3NMaXN0LmFkZCgnb3Rncy1vbi1vZmYtc3dpdGNoJyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdG9nZ2xlR3JvdXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xuXHRcdHRvZ2dsZUdyb3VwLmNsYXNzTGlzdC5hZGQoJ290Z3MtdG9nZ2xlLWdyb3VwJyk7XG5cdFx0dG9nZ2xlR3JvdXAuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG5cdFx0dG9nZ2xlR3JvdXAuYXBwZW5kQ2hpbGQobGFiZWwpO1xuXG5cdFx0Y29uc3Qgc3dpdGNoZXJDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0c3dpdGNoZXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgnb3Rncy1zd2l0Y2hfX29ub2ZmJyk7XG5cdFx0Y29uc3Qgc3dpdGNoZXJCb3JkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0c3dpdGNoZXJCb3JkZXIuY2xhc3NMaXN0LmFkZCgnb3Rncy1zd2l0Y2hfX29ub2ZmLWxhYmVsJyk7XG5cdFx0Y29uc3Qgc3dpdGNoZXJJbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRzd2l0Y2hlcklubmVyLmNsYXNzTGlzdC5hZGQoJ290Z3Mtc3dpdGNoX19vbm9mZi1pbm5lcicpO1xuXHRcdGNvbnN0IHN3aXRjaGVyU3dpdGNoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXHRcdHN3aXRjaGVyU3dpdGNoLmNsYXNzTGlzdC5hZGQoJ290Z3Mtc3dpdGNoX19vbm9mZi1zd2l0Y2gnKTtcblxuXHRcdHN3aXRjaGVyQm9yZGVyLmFwcGVuZENoaWxkKHN3aXRjaGVySW5uZXIpO1xuXHRcdHN3aXRjaGVyQm9yZGVyLmFwcGVuZENoaWxkKHN3aXRjaGVyU3dpdGNoKTtcblxuXHRcdHN3aXRjaGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKHN3aXRjaGVyQm9yZGVyKTtcblxuXHRcdHRvZ2dsZUdyb3VwLmFwcGVuZENoaWxkKHN3aXRjaGVyQ29udGFpbmVyKTtcblxuXHRcdGNoZWNrQm94Q29udGFpbmVyLmFwcGVuZENoaWxkKHRvZ2dsZUdyb3VwKTtcblxuXHRcdGlmIChoZWFkaW5nLmxlbmd0aCkge1xuXHRcdFx0aGVhZGluZy5pdGVtKGhlYWRpbmcubGVuZ3RoIC0gMSkucGFyZW50Tm9kZVxuXHRcdFx0XHQuaW5zZXJ0QmVmb3JlKHRvZ2dsZUdyb3VwLCBoZWFkaW5nLml0ZW0oaGVhZGluZy5sZW5ndGggLSAxKS5uZXh0U2libGluZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoZWNrQm94Q29udGFpbmVyLmluc2VydEJlZm9yZSh0b2dnbGVHcm91cCwgY2hlY2tCb3hDb250YWluZXIuZmlyc3RDaGlsZCk7XG5cdFx0fVxuXHR9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3dpdGNoZXI7IiwiaW1wb3J0ICcuLi8uLi9zY3NzL3VpL3N0eWxlcy5zY3NzJztcbmltcG9ydCBTd2l0Y2hlciBmcm9tICcuL1N3aXRjaGVyJztcblxuY2xhc3MgVUkge1xuXHRjb25zdHJ1Y3RvciAoZWxlbWVudCkge1xuXHRcdGNvbnN0IGNoZWNrQm94ZXMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScpO1xuXG5cdFx0aWYoY2hlY2tCb3hlcykge1xuXHRcdFx0QXJyYXkuZnJvbShjaGVja0JveGVzKS5tYXAoY2hlY2tCb3ggPT4gbmV3IFN3aXRjaGVyKGNoZWNrQm94KSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFVJOyIsImltcG9ydCBVSSBmcm9tICcuL1VJJztcblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG5cblx0Y29uc3Qgb3Rnc1VJRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcub3Rncy11aScpO1xuXG5cdGlmIChvdGdzVUlFbGVtZW50cykge1xuXHRcdEFycmF5LmZyb20ob3Rnc1VJRWxlbWVudHMpLm1hcChvdGdzVUkgPT4gbmV3IFVJKG90Z3NVSSkpO1xuXHR9XG59KTsiLCIoZnVuY3Rpb24oc2VsZikge1xuICAndXNlIHN0cmljdCc7XG5cbiAgaWYgKHNlbGYuZmV0Y2gpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBzdXBwb3J0ID0ge1xuICAgIHNlYXJjaFBhcmFtczogJ1VSTFNlYXJjaFBhcmFtcycgaW4gc2VsZixcbiAgICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gc2VsZiAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgICBibG9iOiAnRmlsZVJlYWRlcicgaW4gc2VsZiAmJiAnQmxvYicgaW4gc2VsZiAmJiAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgQmxvYigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBzZWxmLFxuICAgIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIHNlbGZcbiAgfVxuXG4gIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gICAgdmFyIHZpZXdDbGFzc2VzID0gW1xuICAgICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgICAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAgICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAgICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nXG4gICAgXVxuXG4gICAgdmFyIGlzRGF0YVZpZXcgPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxuICAgIH1cblxuICAgIHZhciBpc0FycmF5QnVmZmVyVmlldyA9IEFycmF5QnVmZmVyLmlzVmlldyB8fCBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgICB9XG4gICAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXFxeX2B8fl0vaS50ZXN0KG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZScpXG4gICAgfVxuICAgIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG4gIGZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gICAgdmFyIGl0ZXJhdG9yID0ge1xuICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcbiAgICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZXJhdG9yXG4gIH1cblxuICBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgICB0aGlzLm1hcCA9IHt9XG5cbiAgICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICAgIH0sIHRoaXMpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKGhlYWRlclswXSwgaGVhZGVyWzFdKVxuICAgICAgfSwgdGhpcylcbiAgICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAgICAgfSwgdGhpcylcbiAgICB9XG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gICAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICAgIHRoaXMubWFwW25hbWVdID0gb2xkVmFsdWUgPyBvbGRWYWx1ZSsnLCcrdmFsdWUgOiB2YWx1ZVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICAgIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gICAgcmV0dXJuIHRoaXMuaGFzKG5hbWUpID8gdGhpcy5tYXBbbmFtZV0gOiBudWxsXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMubWFwKSB7XG4gICAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0gW11cbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHsgaXRlbXMucHVzaChuYW1lKSB9KVxuICAgIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBpdGVtcyA9IFtdXG4gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7IGl0ZW1zLnB1c2godmFsdWUpIH0pXG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBpdGVtcyA9IFtdXG4gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7IGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSkgfSlcbiAgICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG4gIH1cblxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIEhlYWRlcnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG4gIH1cblxuICBmdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gICAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgICB9XG4gICAgYm9keS5ib2R5VXNlZCA9IHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICAgIH1cbiAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4gICAgcmV0dXJuIHByb21pc2VcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICAgIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgICByZWFkZXIucmVhZEFzVGV4dChibG9iKVxuICAgIHJldHVybiBwcm9taXNlXG4gIH1cblxuICBmdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQoYnVmKSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gICAgdmFyIGNoYXJzID0gbmV3IEFycmF5KHZpZXcubGVuZ3RoKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgICB9XG4gICAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG4gIH1cblxuICBmdW5jdGlvbiBidWZmZXJDbG9uZShidWYpIHtcbiAgICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgICAgcmV0dXJuIHZpZXcuYnVmZmVyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gQm9keSgpIHtcbiAgICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICAgIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgICAgdGhpcy5fYm9keUluaXQgPSBib2R5XG4gICAgICBpZiAoIWJvZHkpIHtcbiAgICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keS5idWZmZXIpXG4gICAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgKEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpIHx8IGlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpKSkge1xuICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCBCb2R5SW5pdCB0eXBlJylcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnN1bWVkKHRoaXMpIHx8IFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG4gIHZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQT1NUJywgJ1BVVCddXG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICAgIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICByZXR1cm4gKG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xKSA/IHVwY2FzZWQgOiBtZXRob2RcbiAgfVxuXG4gIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICAgIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG5cbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICAgIH1cbiAgICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgICB9XG4gICAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAgICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICAgIH1cblxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ29taXQnXG4gICAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICAgIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUgfHwgbnVsbFxuICAgIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cbiAgICBpZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gICAgfVxuICAgIHRoaXMuX2luaXRCb2R5KGJvZHkpXG4gIH1cblxuICBSZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7IGJvZHk6IHRoaXMuX2JvZHlJbml0IH0pXG4gIH1cblxuICBmdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICAgIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgICBib2R5LnRyaW0oKS5zcGxpdCgnJicpLmZvckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgIGlmIChieXRlcykge1xuICAgICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG4gICAgICAgIHZhciBuYW1lID0gc3BsaXQuc2hpZnQoKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICB2YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc9JykucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgZm9ybS5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIGZvcm1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKSB7XG4gICAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gICAgcmF3SGVhZGVycy5zcGxpdCgvXFxyP1xcbi8pLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIGhlYWRlcnNcbiAgfVxuXG4gIEJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuICBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgfVxuXG4gICAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gICAgdGhpcy5zdGF0dXMgPSAnc3RhdHVzJyBpbiBvcHRpb25zID8gb3B0aW9ucy5zdGF0dXMgOiAyMDBcbiAgICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gJ3N0YXR1c1RleHQnIGluIG9wdGlvbnMgPyBvcHRpb25zLnN0YXR1c1RleHQgOiAnT0snXG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICAgIHRoaXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcbiAgfVxuXG4gIEJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cbiAgUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgICB1cmw6IHRoaXMudXJsXG4gICAgfSlcbiAgfVxuXG4gIFJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAsIHN0YXR1c1RleHQ6ICcnfSlcbiAgICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgdmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cbiAgUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykge1xuICAgIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbiAgfVxuXG4gIHNlbGYuSGVhZGVycyA9IEhlYWRlcnNcbiAgc2VsZi5SZXF1ZXN0ID0gUmVxdWVzdFxuICBzZWxmLlJlc3BvbnNlID0gUmVzcG9uc2VcblxuICBzZWxmLmZldGNoID0gZnVuY3Rpb24oaW5wdXQsIGluaXQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuICAgICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfVxuXG4gICAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgcmVxdWVzdC51cmwsIHRydWUpXG5cbiAgICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhociAmJiBzdXBwb3J0LmJsb2IpIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG5cbiAgICAgIHhoci5zZW5kKHR5cGVvZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9keUluaXQpXG4gICAgfSlcbiAgfVxuICBzZWxmLmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpO1xuIiwiLy8gcmVtb3ZlZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW4iXSwic291cmNlUm9vdCI6IiJ9
1
+ !function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=4)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var r=e.parentElement,n=r.getElementsByClassName("heading"),o=r.getElementsByTagName("label").item(0);o&&o.classList.add("otgs-on-off-switch");var i=document.createElement("label");i.classList.add("otgs-toggle-group"),i.appendChild(e),i.appendChild(o);var s=document.createElement("span");s.classList.add("otgs-switch__onoff");var a=document.createElement("span");a.classList.add("otgs-switch__onoff-label");var u=document.createElement("span");u.classList.add("otgs-switch__onoff-inner");var f=document.createElement("span");f.classList.add("otgs-switch__onoff-switch"),a.appendChild(u),a.appendChild(f),s.appendChild(a),i.appendChild(s),r.appendChild(i),n.length?n.item(n.length-1).parentNode.insertBefore(i,n.item(n.length-1).nextSibling):r.insertBefore(i,r.firstChild)}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),r(9);var n,o=r(0),i=(n=o)&&n.__esModule?n:{default:n};e.default=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var r=e.querySelectorAll('input[type="checkbox"]');r&&Array.from(r).map(function(t){return new i.default(t)})}},function(t,e,r){"use strict";var n,o=r(1),i=(n=o)&&n.__esModule?n:{default:n};window.addEventListener("DOMContentLoaded",function(){var t=document.querySelectorAll(".otgs-ui");t&&Array.from(t).map(function(t){return new i.default(t)})})},function(t,e){!function(t){"use strict";if(!t.fetch){var e={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(e.arrayBuffer)var r=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],n=function(t){return t&&DataView.prototype.isPrototypeOf(t)},o=ArrayBuffer.isView||function(t){return t&&r.indexOf(Object.prototype.toString.call(t))>-1};d.prototype.append=function(t,e){t=a(t),e=u(e);var r=this.map[t];this.map[t]=r?r+","+e:e},d.prototype.delete=function(t){delete this.map[a(t)]},d.prototype.get=function(t){return t=a(t),this.has(t)?this.map[t]:null},d.prototype.has=function(t){return this.map.hasOwnProperty(a(t))},d.prototype.set=function(t,e){this.map[a(t)]=u(e)},d.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},d.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),f(t)},d.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),f(t)},d.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),f(t)},e.iterable&&(d.prototype[Symbol.iterator]=d.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},y.call(b.prototype),y.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new d(this.headers),url:this.url})},w.error=function(){var t=new w(null,{status:0,statusText:""});return t.type="error",t};var s=[301,302,303,307,308];w.redirect=function(t,e){if(-1===s.indexOf(e))throw new RangeError("Invalid status code");return new w(null,{status:e,headers:{location:t}})},t.Headers=d,t.Request=b,t.Response=w,t.fetch=function(t,r){return new Promise(function(n,o){var i=new b(t,r),s=new XMLHttpRequest;s.onload=function(){var t,e,r={status:s.status,statusText:s.statusText,headers:(t=s.getAllResponseHeaders()||"",e=new d,t.split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var o="response"in s?s.response:s.responseText;n(new w(o,r))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.open(i.method,i.url,!0),"include"===i.credentials&&(s.withCredentials=!0),"responseType"in s&&e.blob&&(s.responseType="blob"),i.headers.forEach(function(t,e){s.setRequestHeader(e,t)}),s.send(void 0===i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}function a(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function u(t){return"string"!=typeof t&&(t=String(t)),t}function f(t){var r={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e.iterable&&(r[Symbol.iterator]=function(){return r}),r}function d(t){this.map={},t instanceof d?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function h(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function l(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function c(t){var e=new FileReader,r=l(e);return e.readAsArrayBuffer(t),r}function p(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(t){if(this._bodyInit=t,t)if("string"==typeof t)this._bodyText=t;else if(e.blob&&Blob.prototype.isPrototypeOf(t))this._bodyBlob=t;else if(e.formData&&FormData.prototype.isPrototypeOf(t))this._bodyFormData=t;else if(e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t))this._bodyText=t.toString();else if(e.arrayBuffer&&e.blob&&n(t))this._bodyArrayBuffer=p(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!e.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(t)&&!o(t))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=p(t)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},e.blob&&(this.blob=function(){var t=h(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(c)}),this.text=function(){var t,e,r,n=h(this);if(n)return n;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=l(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n<e.length;n++)r[n]=String.fromCharCode(e[n]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},e.formData&&(this.formData=function(){return this.text().then(m)}),this.json=function(){return this.text().then(JSON.parse)},this}function b(t,e){var r,n,o=(e=e||{}).body;if(t instanceof b){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new d(t.headers)),this.method=t.method,this.mode=t.mode,o||null==t._bodyInit||(o=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new d(e.headers)),this.method=(r=e.method||this.method||"GET",n=r.toUpperCase(),i.indexOf(n)>-1?n:r),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&o)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(o)}function m(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function w(t,e){e||(e={}),this.type="default",this.status="status"in e?e.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new d(e.headers),this.url=e.url||"",this._initBody(t)}}("undefined"!=typeof self?self:this)},function(t,e,r){r(3),t.exports=r(2)},,,,,function(t,e){}]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/loader.php CHANGED
@@ -22,7 +22,7 @@ $wp_installer_instance = dirname( __FILE__ ) . '/installer.php';
22
  global $wp_installer_instances;
23
  $wp_installer_instances[ $wp_installer_instance ] = array(
24
  'bootfile' => $wp_installer_instance,
25
- 'version' => '1.8.20'
26
  );
27
 
28
 
22
  global $wp_installer_instances;
23
  $wp_installer_instances[ $wp_installer_instance ] = array(
24
  'bootfile' => $wp_installer_instance,
25
+ 'version' => '1.8.21'
26
  );
27
 
28
 
vendor/otgs/installer/src/webpack.config.js CHANGED
@@ -47,7 +47,7 @@ const ui = (env) => {
47
  plugins: [
48
  new ExtractTextPlugin(path.join('css', 'ui', 'styles.css')),
49
  ],
50
- devtool: isProduction ? 'source-map' : 'inline-source-map',
51
  };
52
  };
53
 
47
  plugins: [
48
  new ExtractTextPlugin(path.join('css', 'ui', 'styles.css')),
49
  ],
50
+ devtool: isProduction ? '' : 'inline-source-map',
51
  };
52
  };
53
 
wpml-woocommerce.php CHANGED
@@ -8,7 +8,7 @@
8
  Text Domain: woocommerce-multilingual
9
  Requires at least: 3.9
10
  Tested up to: 4.9.6
11
- Version: 4.3
12
  WC requires at least: 2.1.0
13
  WC tested up to: 3.4.2
14
  */
@@ -17,7 +17,7 @@ if ( defined( 'WCML_VERSION' ) ) {
17
  return;
18
  }
19
 
20
- define( 'WCML_VERSION', '4.3.0' );
21
  define( 'WCML_PLUGIN_PATH', dirname( __FILE__ ) );
22
  define( 'WCML_PLUGIN_FOLDER', basename( WCML_PLUGIN_PATH ) );
23
  define( 'WCML_LOCALE_PATH', WCML_PLUGIN_PATH . '/locale' );
8
  Text Domain: woocommerce-multilingual
9
  Requires at least: 3.9
10
  Tested up to: 4.9.6
11
+ Version: 4.3.1
12
  WC requires at least: 2.1.0
13
  WC tested up to: 3.4.2
14
  */
17
  return;
18
  }
19
 
20
+ define( 'WCML_VERSION', '4.3.1' );
21
  define( 'WCML_PLUGIN_PATH', dirname( __FILE__ ) );
22
  define( 'WCML_PLUGIN_FOLDER', basename( WCML_PLUGIN_PATH ) );
23
  define( 'WCML_LOCALE_PATH', WCML_PLUGIN_PATH . '/locale' );