FEEDZY RSS Feeds Lite - Version 3.3.18

Version Description

  • 2020-03-24
Download this release

Release Info

Developer codeinwp
Plugin Icon 128x128 FEEDZY RSS Feeds Lite
Version 3.3.18
Comparing to
See all releases

Code changes from version 3.3.17 to 3.3.18

CHANGELOG.md CHANGED
@@ -1,7 +1,13 @@
1
 
2
- ### v3.3.17 - 2020-01-30
3
  **Changes:**
4
-
 
 
 
 
 
 
5
  ### v3.3.17 - 2020-01-30
6
  **Changes:**
7
  * Allow user to dictate order of meta data in the editor as well
1
 
2
+ ### v3.3.18 - 2020-03-24
3
  **Changes:**
4
+ * [Feat] Add support for lazyloading feed items
5
+ * [Fix] multiple_meta and offset parameters in the Feedzy widget
6
+ * [Fix] Missing Feedzy button in the Classic editor in Gutenberg
7
+ * [Fix] Conflict with RSS Aggregator in the Gutenberg editor
8
+ * [Fix] Notices when using Avada theme
9
+ * [Fix] Warnings when using multiple feeds in the shortcode
10
+
11
  ### v3.3.17 - 2020-01-30
12
  **Changes:**
13
  * Allow user to dictate order of meta data in the editor as well
css/feedzy-rss-feeds.css CHANGED
@@ -2,7 +2,7 @@
2
  * feedzy-rss-feeds.css
3
  * Feedzy RSS Feed
4
  * Copyright: (c) 2016 Themeisle, themeisle.com
5
- * Version: 3.3.17
6
  * Plugin Name: FEEDZY RSS Feeds
7
  * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
8
  * Author: Themeisle
@@ -431,3 +431,10 @@ input:checked + .feedzy-track:before {
431
  font-size: 14px;
432
  font-weight: bold;
433
  }
 
 
 
 
 
 
 
2
  * feedzy-rss-feeds.css
3
  * Feedzy RSS Feed
4
  * Copyright: (c) 2016 Themeisle, themeisle.com
5
+ * Version: 3.3.18
6
  * Plugin Name: FEEDZY RSS Feeds
7
  * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
8
  * Author: Themeisle
431
  font-size: 14px;
432
  font-weight: bold;
433
  }
434
+
435
+ /* lazy loading feeds */
436
+ .feedzy-lazy.loading {
437
+ z-index: 1001;
438
+ background: url(/wp-includes/images/wpspin-2x.gif) no-repeat center center;
439
+
440
+ }
feedzy-rss-feed.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: Feedzy RSS Feeds Lite
16
  * Plugin URI: https://themeisle.com/plugins/feedzy-rss-feeds-lite/
17
  * Description: A small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
18
- * Version: 3.3.17
19
  * Author: Themeisle
20
  * Author URI: http://themeisle.com
21
  * License: GPL-2.0+
@@ -118,6 +118,7 @@ function run_feedzy_rss_feeds() {
118
  define( 'FEEDZY_NAME', 'Feedzy RSS Feeds' );
119
  define( 'FEEDZY_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' );
120
  define( 'FEEDZY_ALLOW_HTTPS', true );
 
121
  // to redirect all themeisle_log_event to error log.
122
  define( 'FEEDZY_LOCAL_DEBUG', false );
123
 
@@ -135,6 +136,8 @@ function run_feedzy_rss_feeds() {
135
  add_filter( 'themeisle_sdk_products', 'feedzy_register_sdk', 10, 1 );
136
  add_filter( 'pirate_parrot_log', 'feedzy_register_parrot', 10, 1 );
137
 
 
 
138
  }
139
 
140
  /**
15
  * Plugin Name: Feedzy RSS Feeds Lite
16
  * Plugin URI: https://themeisle.com/plugins/feedzy-rss-feeds-lite/
17
  * Description: A small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
18
+ * Version: 3.3.18
19
  * Author: Themeisle
20
  * Author URI: http://themeisle.com
21
  * License: GPL-2.0+
118
  define( 'FEEDZY_NAME', 'Feedzy RSS Feeds' );
119
  define( 'FEEDZY_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' );
120
  define( 'FEEDZY_ALLOW_HTTPS', true );
121
+ define( 'FEEDZY_REST_VERSION', '1' );
122
  // to redirect all themeisle_log_event to error log.
123
  define( 'FEEDZY_LOCAL_DEBUG', false );
124
 
136
  add_filter( 'themeisle_sdk_products', 'feedzy_register_sdk', 10, 1 );
137
  add_filter( 'pirate_parrot_log', 'feedzy_register_parrot', 10, 1 );
138
 
139
+ define( 'FEEDZY_SURVEY', feedzy_is_pro() ? 'https://forms.gle/FZXhL3D48KJUhb7q9' : 'https://forms.gle/yQUGSrKEa7XJTGLx8' );
140
+
141
  }
142
 
143
  /**
includes/abstract/feedzy-rss-feeds-admin-abstract.php CHANGED
@@ -347,6 +347,37 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
347
  return $content;
348
  }
349
  $cache = $sc['refresh'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  $feed = $this->fetch_feed( $feed_url, $cache, $sc );
351
  if ( is_string( $feed ) ) {
352
  return $feed;
@@ -357,6 +388,52 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
357
  return $content;
358
  }
359
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  /**
361
  * Returns the attributes of the shortcode
362
  *
@@ -417,6 +494,8 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
417
  'offset' => 0,
418
  // class name of this block
419
  'className' => '',
 
 
420
  ),
421
  $atts,
422
  'feedzy_default'
@@ -559,6 +638,11 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
559
  )
560
  );
561
  }
 
 
 
 
 
562
  $feed->set_file_class( 'WP_SimplePie_File' );
563
  $default_agent = $this->get_default_user_agent( $feed_url );
564
  $feed->set_useragent( apply_filters( 'http_headers_useragent', $default_agent ) );
@@ -787,7 +871,7 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
787
  }
788
 
789
  $feed_items = apply_filters( 'feedzy_get_feed_array', array(), $sc, $feed, $feed_url, $sizes );
790
- $class = array_filter( apply_filters( 'feedzy_add_classes_block', array( $sc['className'], 'feedzy-' . md5( $feed_url ) ), $sc, $feed, $feed_url ) );
791
  $content .= '<div class="feedzy-rss ' . implode( ' ', $class ) . '">';
792
  if ( $feed_title['use_title'] ) {
793
  $content .= '<div class="rss_header">';
@@ -1195,6 +1279,7 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
1195
  }
1196
  }
1197
 
 
1198
  $the_thumbnail = apply_filters( 'feedzy_retrieve_image', $the_thumbnail, $item );
1199
 
1200
  return $the_thumbnail;
347
  return $content;
348
  }
349
  $cache = $sc['refresh'];
350
+
351
+ // Disregard the pseudo-shortcode coming from Gutenberg as a lazy one.
352
+ // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
353
+ if ( $sc['lazy'] == 'yes' && ! isset( $sc['gutenberg'] ) ) {
354
+ $attributes = '';
355
+ foreach ( $sc as $key => $val ) {
356
+ // ignore the feedData, its not required.
357
+ if ( $key === 'feedData' ) {
358
+ continue;
359
+ }
360
+ if ( is_array( $val ) ) {
361
+ $val = implode( ',', $val );
362
+ }
363
+ $attributes .= 'data-' . $key . '="' . esc_attr( $val ) . '"';
364
+ }
365
+ $content = get_transient( sprintf( 'feedzy-lazy-%s', is_array( $feed_url ) ? implode( ',', $feed_url ) : $feed_url ) );
366
+
367
+ $class = array_filter( apply_filters( 'feedzy_add_classes_block', array( $sc['className'], 'feedzy-' . md5( is_array( $feed_url ) ? implode( ',', $feed_url ) : $feed_url ) ), $sc, null, $feed_url ) );
368
+ $html = "<div class='feedzy-lazy' $attributes>";
369
+ // the first time the shortcode is being called it will not have any content.
370
+ if ( empty( $content ) ) {
371
+ $content = apply_filters( 'feedzy_lazyload_loading_msg', __( 'Loading', 'feedzy-rss-feeds' ) . '...', $feed_url );
372
+ }
373
+ $html .= "$content</div>";
374
+
375
+ wp_register_script( $this->plugin_name . '-lazy', FEEDZY_ABSURL . 'js/feedzy-lazy.js', array( 'jquery' ), $this->version, 'all' );
376
+ wp_enqueue_script( $this->plugin_name . '-lazy' );
377
+ wp_localize_script( $this->plugin_name . '-lazy', 'feedzy', array( 'url' => get_rest_url( null, 'feedzy/v' . FEEDZY_REST_VERSION . '/lazy/' ), 'rest_nonce' => wp_create_nonce( 'wp_rest' ), 'nonce' => wp_create_nonce( 'feedzy' ) ) );
378
+ return $html;
379
+ }
380
+
381
  $feed = $this->fetch_feed( $feed_url, $cache, $sc );
382
  if ( is_string( $feed ) ) {
383
  return $feed;
388
  return $content;
389
  }
390
 
391
+
392
+ /**
393
+ * Register Rest Route for Feedzy lazy loader.
394
+ */
395
+ public function rest_route() {
396
+ register_rest_route(
397
+ 'feedzy/v' . FEEDZY_REST_VERSION, '/lazy/', array(
398
+ 'methods' => 'POST',
399
+ 'callback' => array( $this, 'feedzy_lazy_load' ),
400
+ 'args' => array(
401
+ 'nonce' => array(
402
+ 'validate_callback' => function( $value ) {
403
+ return wp_verify_nonce( $value, 'feedzy' );
404
+ },
405
+ 'required' => true,
406
+ ),
407
+ ),
408
+ )
409
+ );
410
+ }
411
+
412
+ /**
413
+ * Parse the feed and send it to the front-end to display.
414
+ *
415
+ * @since ?
416
+ * @access public
417
+ *
418
+ * @param array $data The attributes passed by the ajax call.
419
+ */
420
+ public function feedzy_lazy_load( $data ) {
421
+ $atts = $data['args'];
422
+ $sc = $this->get_short_code_attributes( $atts );
423
+ $feed_url = $this->normalize_urls( $sc['feeds'] );
424
+ $feed = $this->fetch_feed( $feed_url, $sc['refresh'], $sc );
425
+ if ( is_string( $feed ) ) {
426
+ return $feed;
427
+ }
428
+ $sc = $this->sanitize_attr( $sc, $feed_url );
429
+ $content = $this->render_content( $sc, $feed, '', $feed_url );
430
+
431
+ // save the content as a transient so that whenever the feed is refreshed next, this stale content is displayed first.
432
+ set_transient( sprintf( 'feedzy-lazy-%s', ( is_array( $feed_url ) ? implode( ',', $feed_url ) : $feed_url ) ), $content, apply_filters( 'feedzy_lazyload_cache_time', DAY_IN_SECONDS, $feed_url ) );
433
+
434
+ wp_send_json_success( array( 'content' => $content ) );
435
+ }
436
+
437
  /**
438
  * Returns the attributes of the shortcode
439
  *
494
  'offset' => 0,
495
  // class name of this block
496
  'className' => '',
497
+ // lazy loading of feeds?
498
+ 'lazy' => 'no',
499
  ),
500
  $atts,
501
  'feedzy_default'
638
  )
639
  );
640
  }
641
+
642
+ require_once( ABSPATH . WPINC . '/class-wp-feed-cache.php' );
643
+ require_once( ABSPATH . WPINC . '/class-wp-feed-cache-transient.php' );
644
+ require_once( ABSPATH . WPINC . '/class-wp-simplepie-file.php' );
645
+
646
  $feed->set_file_class( 'WP_SimplePie_File' );
647
  $default_agent = $this->get_default_user_agent( $feed_url );
648
  $feed->set_useragent( apply_filters( 'http_headers_useragent', $default_agent ) );
871
  }
872
 
873
  $feed_items = apply_filters( 'feedzy_get_feed_array', array(), $sc, $feed, $feed_url, $sizes );
874
+ $class = array_filter( apply_filters( 'feedzy_add_classes_block', array( $sc['className'], 'feedzy-' . md5( is_array( $feed_url ) ? implode( ',', $feed_url ) : $feed_url ) ), $sc, $feed, $feed_url ) );
875
  $content .= '<div class="feedzy-rss ' . implode( ' ', $class ) . '">';
876
  if ( $feed_title['use_title'] ) {
877
  $content .= '<div class="rss_header">';
1279
  }
1280
  }
1281
 
1282
+ $the_thumbnail = html_entity_decode( $the_thumbnail, ENT_QUOTES, 'UTF-8' );
1283
  $the_thumbnail = apply_filters( 'feedzy_retrieve_image', $the_thumbnail, $item );
1284
 
1285
  return $the_thumbnail;
includes/admin/feedzy-rss-feeds-ui-lang.php CHANGED
@@ -197,6 +197,21 @@ class Feedzy_Rss_Feeds_Ui_Lang {
197
  'type' => 'text',
198
  'value' => '',
199
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  ),
201
  ),
202
  'section_item' => array(
@@ -447,6 +462,18 @@ class Feedzy_Rss_Feeds_Ui_Lang {
447
  return $translated;
448
  }
449
 
 
 
 
 
 
 
 
 
 
 
 
 
450
  }
451
 
452
  $feedzy_lang_class = new Feedzy_Rss_Feeds_Ui_Lang();
197
  'type' => 'text',
198
  'value' => '',
199
  ),
200
+ 'lazy' => array(
201
+ 'label' => __( 'Lazy load the feed (without slowing down the page)', 'feedzy-rss-feeds' ),
202
+ 'type' => 'select',
203
+ 'value' => 'no',
204
+ 'opts' => array(
205
+ 'yes' => array(
206
+ 'label' => __( 'Yes', 'feedzy-rss-feeds' ),
207
+ 'value' => 'yes',
208
+ ),
209
+ 'no' => array(
210
+ 'label' => __( 'No', 'feedzy-rss-feeds' ),
211
+ 'value' => 'no',
212
+ ),
213
+ ),
214
+ ),
215
  ),
216
  ),
217
  'section_item' => array(
462
  return $translated;
463
  }
464
 
465
+ /**
466
+ *
467
+ * The method that returns the strings array
468
+ *
469
+ * @since ?
470
+ * @access public
471
+ * @return array
472
+ */
473
+ public function get_strings() {
474
+ return $this->strings;
475
+ }
476
+
477
  }
478
 
479
  $feedzy_lang_class = new Feedzy_Rss_Feeds_Ui_Lang();
includes/admin/feedzy-rss-feeds-ui.php CHANGED
@@ -83,16 +83,30 @@ class Feedzy_Rss_Feeds_Ui {
83
  */
84
  public function register_init() {
85
  // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
86
- if ( ! $this->is_block_editor() && current_user_can( 'edit_posts' ) && current_user_can( 'edit_pages' ) && 'true' == get_user_option( 'rich_editing' ) ) {
87
  $this->loader->add_filter( 'mce_external_plugins', $this, 'feedzy_tinymce_plugin', 10, 1 );
88
  $this->loader->add_filter( 'mce_buttons', $this, 'feedzy_register_mce_button', 10, 1 );
89
-
90
  $this->loader->add_action( 'admin_enqueue_scripts', $this, 'enqueue_scripts', 10 );
 
91
 
92
  $this->loader->run();
93
  }
94
  }
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  /**
97
  * Register the JavaScript for the admin area.
98
  *
@@ -123,6 +137,8 @@ class Feedzy_Rss_Feeds_Ui {
123
  * @return array
124
  */
125
  public function feedzy_add_tinymce_lang( $arr ) {
 
 
126
  $feedzy_rss_feeds_ui_lang = FEEDZY_ABSPATH . '/includes/admin/feedzy-rss-feeds-ui-lang.php';
127
  $feedzy_rss_feeds_ui_lang = apply_filters( 'feedzy_rss_feeds_ui_lang_filter', $feedzy_rss_feeds_ui_lang );
128
  $arr[] = $feedzy_rss_feeds_ui_lang;
83
  */
84
  public function register_init() {
85
  // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
86
+ if ( current_user_can( 'edit_posts' ) && current_user_can( 'edit_pages' ) && 'true' == get_user_option( 'rich_editing' ) ) {
87
  $this->loader->add_filter( 'mce_external_plugins', $this, 'feedzy_tinymce_plugin', 10, 1 );
88
  $this->loader->add_filter( 'mce_buttons', $this, 'feedzy_register_mce_button', 10, 1 );
89
+ $this->loader->add_filter( 'mce_external_languages', $this, 'feedzy_add_tinymce_lang', 10, 1 );
90
  $this->loader->add_action( 'admin_enqueue_scripts', $this, 'enqueue_scripts', 10 );
91
+ $this->loader->add_filter( 'tiny_mce_before_init', $this, 'get_strings_for_block', 10, 1 );
92
 
93
  $this->loader->run();
94
  }
95
  }
96
 
97
+ /**
98
+ * Add the strings required for the TinyMCE buttons for the classic block (not the classic editor).
99
+ *
100
+ * @since ?
101
+ * @access friendly
102
+ */
103
+ function get_strings_for_block( $settings ) {
104
+ $feedzy_lang_class = new Feedzy_Rss_Feeds_Ui_Lang();
105
+ $strings = $feedzy_lang_class->get_strings();
106
+ $array = array( 'feedzy_tinymce_plugin' => json_encode( $strings ) );
107
+ return array_merge( $settings, $array );
108
+ }
109
+
110
  /**
111
  * Register the JavaScript for the admin area.
112
  *
137
  * @return array
138
  */
139
  public function feedzy_add_tinymce_lang( $arr ) {
140
+ error_log( 'called mce_external_languages' );
141
+
142
  $feedzy_rss_feeds_ui_lang = FEEDZY_ABSPATH . '/includes/admin/feedzy-rss-feeds-ui-lang.php';
143
  $feedzy_rss_feeds_ui_lang = apply_filters( 'feedzy_rss_feeds_ui_lang_filter', $feedzy_rss_feeds_ui_lang );
144
  $arr[] = $feedzy_rss_feeds_ui_lang;
includes/admin/feedzy-wp-widget.php CHANGED
@@ -239,13 +239,16 @@ class feedzy_wp_widget extends WP_Widget {
239
  'thumb' => self::bool_to_enum( $instance['thumb'] ),
240
  'default' => $instance['default'],
241
  'size' => $instance['size'],
242
- 'keywords_title' => $instance['keywords_title'],
243
- 'keywords_ban' => $instance['keywords_ban'],
244
  'error_empty' => $instance['error_empty'],
245
  'sort' => $instance['sort'],
246
  'refresh' => $instance['refresh'],
247
  'follow' => $instance['follow'],
248
  'http' => $instance['http'],
 
 
 
249
  );
250
  $feedzy_widget_shortcode_attributes = apply_filters( 'feedzy_widget_shortcode_attributes_filter', $feedzy_widget_shortcode_attributes, $args, $instance );
251
 
239
  'thumb' => self::bool_to_enum( $instance['thumb'] ),
240
  'default' => $instance['default'],
241
  'size' => $instance['size'],
242
+ 'keywords_title' => ! empty( $instance['keywords_title'] ) ? $instance['keywords_title'] : '',
243
+ 'keywords_ban' => ! empty( $instance['keywords_ban'] ) ? $instance['keywords_ban'] : '',
244
  'error_empty' => $instance['error_empty'],
245
  'sort' => $instance['sort'],
246
  'refresh' => $instance['refresh'],
247
  'follow' => $instance['follow'],
248
  'http' => $instance['http'],
249
+ 'lazy' => ! empty( $instance['lazy'] ) ? self::bool_to_enum( $instance['lazy'] ) : false,
250
+ 'offset' => $instance['offset'],
251
+ 'multiple_meta' => $instance['multiple_meta'],
252
  );
253
  $feedzy_widget_shortcode_attributes = apply_filters( 'feedzy_widget_shortcode_attributes_filter', $feedzy_widget_shortcode_attributes, $args, $instance );
254
 
includes/feedzy-rss-feeds.php CHANGED
@@ -104,7 +104,7 @@ class Feedzy_Rss_Feeds {
104
  */
105
  public function init() {
106
  self::$plugin_name = 'feedzy-rss-feeds';
107
- self::$version = '3.3.17';
108
  self::$instance->load_dependencies();
109
  self::$instance->set_locale();
110
  self::$instance->define_admin_hooks();
@@ -187,7 +187,7 @@ class Feedzy_Rss_Feeds {
187
  */
188
  private function define_admin_hooks() {
189
  $plugin_ui = new Feedzy_Rss_Feeds_Ui( self::$instance->get_plugin_name(), self::$instance->get_version(), self::$instance->loader );
190
- self::$instance->loader->add_action( 'admin_enqueue_scripts', $plugin_ui, 'register_init' );
191
  self::$instance->loader->add_action( 'init', self::$instance->admin, 'register_post_type' );
192
  self::$instance->loader->add_action( 'save_post', self::$instance->admin, 'save_feedzy_post_type_meta', 1, 2 );
193
  self::$instance->loader->add_action( 'feedzy_pre_http_setup', self::$instance->admin, 'pre_http_setup', 10, 1 );
@@ -198,7 +198,6 @@ class Feedzy_Rss_Feeds {
198
  self::$instance->loader->add_filter( 'manage_feedzy_categories_posts_columns', self::$instance->admin, 'feedzy_category_columns' );
199
 
200
  self::$instance->loader->add_action( 'admin_menu', self::$instance->admin, 'feedzy_menu_pages' );
201
- self::$instance->loader->add_filter( 'mce_external_languages', $plugin_ui, 'feedzy_add_tinymce_lang', 10, 1 );
202
  self::$instance->loader->add_filter( 'plugin_row_meta', self::$instance->admin, 'feedzy_filter_plugin_row_meta', 10, 2 );
203
  self::$instance->loader->add_filter( 'feedzy_default_image', self::$instance->admin, 'feedzy_define_default_image' );
204
  self::$instance->loader->add_filter( 'feedzy_default_error', self::$instance->admin, 'feedzy_default_error_notice', 9, 3 );
@@ -217,6 +216,7 @@ class Feedzy_Rss_Feeds {
217
  self::$instance->loader->add_action( 'admin_enqueue_scripts', self::$instance->admin, 'enqueue_styles_admin' );
218
  $plugin_widget = new feedzy_wp_widget();
219
  self::$instance->loader->add_action( 'widgets_init', $plugin_widget, 'registerWidget', 10 );
 
220
 
221
  self::$instance->loader->add_filter( 'feedzy_rss_feeds_logger_data', self::$instance->admin, 'get_usage_data', 10 );
222
 
104
  */
105
  public function init() {
106
  self::$plugin_name = 'feedzy-rss-feeds';
107
+ self::$version = '3.3.18';
108
  self::$instance->load_dependencies();
109
  self::$instance->set_locale();
110
  self::$instance->define_admin_hooks();
187
  */
188
  private function define_admin_hooks() {
189
  $plugin_ui = new Feedzy_Rss_Feeds_Ui( self::$instance->get_plugin_name(), self::$instance->get_version(), self::$instance->loader );
190
+ self::$instance->loader->add_action( 'admin_init', $plugin_ui, 'register_init' );
191
  self::$instance->loader->add_action( 'init', self::$instance->admin, 'register_post_type' );
192
  self::$instance->loader->add_action( 'save_post', self::$instance->admin, 'save_feedzy_post_type_meta', 1, 2 );
193
  self::$instance->loader->add_action( 'feedzy_pre_http_setup', self::$instance->admin, 'pre_http_setup', 10, 1 );
198
  self::$instance->loader->add_filter( 'manage_feedzy_categories_posts_columns', self::$instance->admin, 'feedzy_category_columns' );
199
 
200
  self::$instance->loader->add_action( 'admin_menu', self::$instance->admin, 'feedzy_menu_pages' );
 
201
  self::$instance->loader->add_filter( 'plugin_row_meta', self::$instance->admin, 'feedzy_filter_plugin_row_meta', 10, 2 );
202
  self::$instance->loader->add_filter( 'feedzy_default_image', self::$instance->admin, 'feedzy_define_default_image' );
203
  self::$instance->loader->add_filter( 'feedzy_default_error', self::$instance->admin, 'feedzy_default_error_notice', 9, 3 );
216
  self::$instance->loader->add_action( 'admin_enqueue_scripts', self::$instance->admin, 'enqueue_styles_admin' );
217
  $plugin_widget = new feedzy_wp_widget();
218
  self::$instance->loader->add_action( 'widgets_init', $plugin_widget, 'registerWidget', 10 );
219
+ self::$instance->loader->add_action( 'rest_api_init', self::$instance->admin, 'rest_route', 10 );
220
 
221
  self::$instance->loader->add_filter( 'feedzy_rss_feeds_logger_data', self::$instance->admin, 'get_usage_data', 10 );
222
 
includes/gutenberg/build/block.js CHANGED
@@ -242,7 +242,7 @@ eval("var def = __webpack_require__(5).f;\nvar has = __webpack_require__(7);\nva
242
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
243
 
244
  "use strict";
245
- eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__style_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_query_string__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_query_string___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_query_string__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__attributes__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__inspector__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils__ = __webpack_require__(52);\n\n\nvar _this = this;\n\n// jshint ignore: start\n\n/**\r\n * Block dependencies\r\n */\n\n\n\n\n\n\n/**\r\n * Internal block libraries\r\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$components = wp.components,\n ExternalLink = _wp$components.ExternalLink,\n Placeholder = _wp$components.Placeholder,\n TextControl = _wp$components.TextControl,\n Button = _wp$components.Button,\n Spinner = _wp$components.Spinner;\nvar date = wp.date.date;\n\n/**\r\n * Register block\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (registerBlockType('feedzy-rss-feeds/feedzy-block', {\n\ttitle: __('Feedzy RSS Feeds'),\n\tcategory: 'common',\n\ticon: 'rss',\n\tkeywords: [__('Feedzy RSS Feeds'), __('RSS'), __('Feeds')],\n\tsupports: {\n\t\thtml: false\n\t},\n\tattributes: __WEBPACK_IMPORTED_MODULE_3__attributes__[\"a\" /* default */],\n\tedit: function edit(props) {\n\t\tvar onChangeFeeds = function onChangeFeeds(value) {\n\t\t\tprops.setAttributes({ feeds: value });\n\t\t};\n\t\tvar onChangeMax = function onChangeMax(value) {\n\t\t\tprops.setAttributes({ max: !value ? 5 : Number(value) });\n\t\t};\n\t\tvar onChangeOffset = function onChangeOffset(value) {\n\t\t\tprops.setAttributes({ offset: Number(value) });\n\t\t};\n\t\tvar toggleFeedTitle = function toggleFeedTitle(value) {\n\t\t\tprops.setAttributes({ feed_title: !props.attributes.feed_title });\n\t\t};\n\t\tvar onRefresh = function onRefresh(value) {\n\t\t\tprops.setAttributes({ refresh: value });\n\t\t};\n\t\tvar onSort = function onSort(value) {\n\t\t\tprops.setAttributes({ sort: value });\n\t\t};\n\t\tvar onTarget = function onTarget(value) {\n\t\t\tprops.setAttributes({ target: value });\n\t\t};\n\t\tvar onTitle = function onTitle(value) {\n\t\t\tprops.setAttributes({ title: Number(value) });\n\t\t};\n\t\tvar changeMeta = function changeMeta(value) {\n\t\t\tprops.setAttributes({ metafields: value });\n\t\t};\n\t\tvar changeMultipleMeta = function changeMultipleMeta(value) {\n\t\t\tprops.setAttributes({ multiple_meta: value });\n\t\t};\n\t\tvar toggleSummary = function toggleSummary(value) {\n\t\t\tprops.setAttributes({ summary: !props.attributes.summary });\n\t\t};\n\t\tvar onSummaryLength = function onSummaryLength(value) {\n\t\t\tprops.setAttributes({ summarylength: Number(value) });\n\t\t};\n\t\tvar onKeywordsTitle = function onKeywordsTitle(value) {\n\t\t\tprops.setAttributes({ keywords_title: value });\n\t\t};\n\t\tvar onKeywordsBan = function onKeywordsBan(value) {\n\t\t\tprops.setAttributes({ keywords_ban: value });\n\t\t};\n\t\tvar onThumb = function onThumb(value) {\n\t\t\tprops.setAttributes({ thumb: value });\n\t\t};\n\t\tvar onDefault = function onDefault(value) {\n\t\t\tprops.setAttributes({ default: value });\n\t\t};\n\t\tvar onSize = function onSize(value) {\n\t\t\tprops.setAttributes({ size: !value ? 150 : Number(value) });\n\t\t};\n\t\tvar onReferralURL = function onReferralURL(value) {\n\t\t\tprops.setAttributes({ referral_url: value });\n\t\t};\n\t\tvar onColumns = function onColumns(value) {\n\t\t\tprops.setAttributes({ columns: value });\n\t\t};\n\t\tvar onTemplate = function onTemplate(value) {\n\t\t\tprops.setAttributes({ template: value });\n\t\t};\n\t\tvar togglePrice = function togglePrice(value) {\n\t\t\tprops.setAttributes({ price: !props.attributes.price });\n\t\t};\n\t\tvar loadFeed = function loadFeed() {\n\t\t\tprops.setAttributes({ status: 1 });\n\n\t\t\tvar url = props.attributes.feeds;\n\n\t\t\tif (url === undefined) {\n\t\t\t\treturn props.setAttributes({ status: 3 });\n\t\t\t}\n\n\t\t\tif (Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"c\" /* inArray */])(url, props.attributes.categories)) {\n\t\t\t\tvar category = url;\n\t\t\t\turl = __WEBPACK_IMPORTED_MODULE_2_query_string___default.a.stringify({ category: category }, { arrayFormat: 'bracket' });\n\t\t\t} else {\n\t\t\t\turl = url.replace(/\\s/g, '').split(',').filter(function (item) {\n\t\t\t\t\treturn item !== '';\n\t\t\t\t});\n\t\t\t\turl = __WEBPACK_IMPORTED_MODULE_2_query_string___default.a.stringify({ url: url }, { arrayFormat: 'bracket' });\n\t\t\t}\n\n\t\t\twp.apiRequest({ path: '/feedzy/v1/feed?' + url }).then(function (data) {\n\t\t\t\tif (_this.unmounting) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\tif (!data['error']) {\n\t\t\t\t\tprops.setAttributes({ feedData: data });\n\t\t\t\t\tprops.setAttributes({ status: 2 });\n\t\t\t\t\treturn data;\n\t\t\t\t} else {\n\t\t\t\t\tprops.setAttributes({ status: 3 });\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}).fail(function (err) {\n\t\t\t\tprops.setAttributes({ status: 3 });\n\t\t\t\treturn err;\n\t\t\t});\n\t\t};\n\t\tvar loadCategories = function loadCategories() {\n\t\t\twp.apiRequest({ path: '/wp/v2/feedzy_categories' }).then(function (data) {\n\t\t\t\tif (_this.unmounting) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\tvar i = 0;\n\t\t\t\tvar categories = [];\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tcategories[i] = item.slug;\n\t\t\t\t\ti = i + 1;\n\t\t\t\t});\n\t\t\t\tprops.setAttributes({ categories: categories });\n\t\t\t\tjQuery('.feedzy-source input').autocomplete({\n\t\t\t\t\tsource: categories,\n\t\t\t\t\tselect: function select(event, ui) {\n\t\t\t\t\t\tprops.setAttributes({ feeds: ui.item.label });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).fail(function (err) {\n\t\t\t\treturn err;\n\t\t\t});\n\t\t};\n\t\tvar metaExists = function metaExists(value) {\n\t\t\treturn 0 <= props.attributes.metafields.replace(/\\s/g, '').split(',').indexOf(value) || '' === props.attributes.metafields;\n\t\t};\n\t\tvar multipleMetaExists = function multipleMetaExists(value) {\n\t\t\treturn 0 <= props.attributes.multiple_meta.replace(/\\s/g, '').split(',').indexOf(value) || '' === props.attributes.multiple_meta;\n\t\t};\n\t\tif (props.attributes.categories === undefined) {\n\t\t\tif (!props.attributes.meta) {\n\t\t\t\tprops.setAttributes({\n\t\t\t\t\tmeta: true,\n\t\t\t\t\tmetafields: 'no'\n\t\t\t\t});\n\t\t\t}\n\t\t\tloadCategories();\n\t\t}\n\t\treturn [\n\t\t// Inspector\n\t\t!!props.isSelected && wp.element.createElement(__WEBPACK_IMPORTED_MODULE_4__inspector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({ onChangeFeeds: onChangeFeeds, onChangeMax: onChangeMax, onChangeOffset: onChangeOffset, toggleFeedTitle: toggleFeedTitle, onRefresh: onRefresh, onSort: onSort, onTarget: onTarget, onTitle: onTitle, changeMeta: changeMeta, changeMultipleMeta: changeMultipleMeta, toggleSummary: toggleSummary, onSummaryLength: onSummaryLength, onKeywordsTitle: onKeywordsTitle, onKeywordsBan: onKeywordsBan, onThumb: onThumb, onDefault: onDefault, onSize: onSize, onReferralURL: onReferralURL, onColumns: onColumns, onTemplate: onTemplate, togglePrice: togglePrice, loadFeed: loadFeed }, props)), props.attributes.status !== 2 && wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: props.className },\n\t\t\twp.element.createElement(\n\t\t\t\tPlaceholder,\n\t\t\t\t{\n\t\t\t\t\tkey: 'placeholder',\n\t\t\t\t\ticon: 'rss',\n\t\t\t\t\tlabel: __('Feedzy RSS Feeds')\n\t\t\t\t},\n\t\t\t\tprops.attributes.status === 1 ? wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ key: 'loading', className: 'wp-block-embed is-loading' },\n\t\t\t\t\twp.element.createElement(Spinner, null),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t__('Fetching…')\n\t\t\t\t\t)\n\t\t\t\t) : [wp.element.createElement(TextControl, {\n\t\t\t\t\ttype: 'url',\n\t\t\t\t\tclassName: 'feedzy-source',\n\t\t\t\t\tplaceholder: __('Enter URL or category of your feed here…'),\n\t\t\t\t\tonChange: onChangeFeeds,\n\t\t\t\t\tvalue: props.attributes.feeds\n\t\t\t\t}), wp.element.createElement(\n\t\t\t\t\tButton,\n\t\t\t\t\t{\n\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\ttype: 'submit',\n\t\t\t\t\t\tonClick: loadFeed\n\t\t\t\t\t},\n\t\t\t\t\t__('Load Feed')\n\t\t\t\t), props.attributes.status === 3 && wp.element.createElement(\n\t\t\t\t\t'span',\n\t\t\t\t\tnull,\n\t\t\t\t\t__('Feed URL Invalid')\n\t\t\t\t), wp.element.createElement(\n\t\t\t\t\t'span',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tExternalLink,\n\t\t\t\t\t\t{ href: 'https://validator.w3.org/feed/' },\n\t\t\t\t\t\t__('Click here to check if feed is valid. ')\n\t\t\t\t\t),\n\t\t\t\t\t__('Invalid feeds will NOT display items.')\n\t\t\t\t)]\n\t\t\t)\n\t\t), !!(props.attributes.status === 2 && props.attributes.feedData !== undefined) && wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: 'feedzy-rss' },\n\t\t\tprops.attributes.feed_title && props.attributes.feedData['channel'] !== null && wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'rss_header' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'h2',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t{ className: 'rss_title' },\n\t\t\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(props.attributes.feedData['channel']['title'])\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'span',\n\t\t\t\t\t\t{ className: 'rss_description' },\n\t\t\t\t\t\t' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(props.attributes.feedData['channel']['description'])\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'ul',\n\t\t\t\t{ className: 'feedzy-' + props.attributes.template },\n\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"b\" /* filterData */])(props.attributes.feedData['items'], props.attributes.sort, props.attributes.keywords_title, props.attributes.keywords_ban, props.attributes.max, props.attributes.offset).map(function (item, i) {\n\t\t\t\t\tvar itemDateTime = (item['date'] || '') + ' ' + (item['time'] || '') + ' UTC +0000';\n\t\t\t\t\tvar itemDate = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['date']) || '';\n\t\t\t\t\tvar itemTime = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['time']) || '';\n\t\t\t\t\tvar categories = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['categories']) || '';\n\t\t\t\t\tif (metaExists('tz=local')) {\n\t\t\t\t\t\titemDate = date('F jS, \\o', itemDateTime);\n\t\t\t\t\t\titemTime = date('h:i A', itemDateTime);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar author = item['creator'] && metaExists('author') ? item['creator'] : '';\n\t\t\t\t\tif (props.attributes.multiple_meta !== '' && props.attributes.multiple_meta !== 'no') {\n\t\t\t\t\t\tif ((multipleMetaExists('source') || multipleMetaExists('yes')) && author !== '' && item['source'] !== '') {\n\t\t\t\t\t\t\tauthor = author + ' (' + item['source'] + ')';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta_values = new Object();\n\t\t\t\t\tmeta_values['author'] = __('by') + ' ' + author;\n\t\t\t\t\tmeta_values['date'] = __('on') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(itemDate);\n\t\t\t\t\tmeta_values['time'] = __('at') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(itemTime);\n\t\t\t\t\tmeta_values['categories'] = __('in') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(categories);\n\n\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t{ key: i, style: { padding: '15px 0 25px' }, className: 'rss_item feedzy-rss-col-' + props.attributes.columns },\n\t\t\t\t\t\t(item['thumbnail'] && props.attributes.thumb === 'auto' || props.attributes.thumb === 'yes') && wp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'rss_image', style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px' } },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t{ title: Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']), style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px' } },\n\t\t\t\t\t\t\t\twp.element.createElement('span', { className: 'fetched', style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px', backgroundImage: 'url(' + (item['thumbnail'] ? item['thumbnail'] : props.attributes.default ? props.attributes.default.url : feedzyjs.imagepath + 'feedzy-default.jpg') + ')' }, title: Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']) })\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'rss_content_wrap' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t{ className: 'title' },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\tprops.attributes.title && Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']).length > props.attributes.title ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']).substring(0, props.attributes.title) + '...' : Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title'])\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'rss_content' },\n\t\t\t\t\t\t\t\tprops.attributes.metafields !== 'no' && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'small',\n\t\t\t\t\t\t\t\t\t{ className: 'meta' },\n\t\t\t\t\t\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"a\" /* arrangeMeta */])(meta_values, props.attributes.metafields)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tprops.attributes.summary && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\t\t\t{ className: 'description' },\n\t\t\t\t\t\t\t\t\tprops.attributes.summarylength && Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description']).length > props.attributes.summarylength ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description']).substring(0, props.attributes.summarylength) + ' […]' : Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description'])\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfeedzyjs.isPro && item['media'] && item['media']['src'] && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'audio',\n\t\t\t\t\t\t\t\t\t{ controls: true, controlsList: 'nodownload' },\n\t\t\t\t\t\t\t\t\twp.element.createElement('source', { src: item['media']['src'], type: item['media']['type'] }),\n\t\t\t\t\t\t\t\t\t__('Your browser does not support the audio element. But you can check this for the original link: '),\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t\t{ href: item['media']['src'] },\n\t\t\t\t\t\t\t\t\t\titem['media']['src']\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfeedzyjs.isPro && props.attributes.price && item['price'] && props.attributes.template !== 'default' && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'price-wrap' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t\t{ className: 'price' },\n\t\t\t\t\t\t\t\t\t\t\titem['price']\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t)\n\t\t)];\n\t},\n\tsave: function save() {\n\t\t// Rendering in PHP\n\t\treturn null;\n\t}\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2Jsb2NrLmpzPzUxZTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9leHRlbmRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzJztcblxudmFyIF90aGlzID0gdGhpcztcblxuLy8ganNoaW50IGlnbm9yZTogc3RhcnRcblxuLyoqXHJcbiAqIEJsb2NrIGRlcGVuZGVuY2llc1xyXG4gKi9cbmltcG9ydCAnLi9zdHlsZS5zY3NzJztcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxdWVyeS1zdHJpbmcnO1xuaW1wb3J0IGJsb2NrQXR0cmlidXRlcyBmcm9tICcuL2F0dHJpYnV0ZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5pbXBvcnQgeyB1bmVzY2FwZUhUTUwsIGZpbHRlckRhdGEsIGluQXJyYXksIGFycmFuZ2VNZXRhIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxyXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcclxuICovXG52YXIgX18gPSB3cC5pMThuLl9fO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBFeHRlcm5hbExpbmsgPSBfd3AkY29tcG9uZW50cy5FeHRlcm5hbExpbmssXG4gICAgUGxhY2Vob2xkZXIgPSBfd3AkY29tcG9uZW50cy5QbGFjZWhvbGRlcixcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sLFxuICAgIEJ1dHRvbiA9IF93cCRjb21wb25lbnRzLkJ1dHRvbixcbiAgICBTcGlubmVyID0gX3dwJGNvbXBvbmVudHMuU3Bpbm5lcjtcbnZhciBkYXRlID0gd3AuZGF0ZS5kYXRlO1xuXG4vKipcclxuICogUmVnaXN0ZXIgYmxvY2tcclxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyQmxvY2tUeXBlKCdmZWVkenktcnNzLWZlZWRzL2ZlZWR6eS1ibG9jaycsIHtcblx0dGl0bGU6IF9fKCdGZWVkenkgUlNTIEZlZWRzJyksXG5cdGNhdGVnb3J5OiAnY29tbW9uJyxcblx0aWNvbjogJ3JzcycsXG5cdGtleXdvcmRzOiBbX18oJ0ZlZWR6eSBSU1MgRmVlZHMnKSwgX18oJ1JTUycpLCBfXygnRmVlZHMnKV0sXG5cdHN1cHBvcnRzOiB7XG5cdFx0aHRtbDogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczogYmxvY2tBdHRyaWJ1dGVzLFxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIG9uQ2hhbmdlRmVlZHMgPSBmdW5jdGlvbiBvbkNoYW5nZUZlZWRzKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZHM6IHZhbHVlIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uQ2hhbmdlTWF4ID0gZnVuY3Rpb24gb25DaGFuZ2VNYXgodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBtYXg6ICF2YWx1ZSA/IDUgOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uQ2hhbmdlT2Zmc2V0ID0gZnVuY3Rpb24gb25DaGFuZ2VPZmZzZXQodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBvZmZzZXQ6IE51bWJlcih2YWx1ZSkgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlRmVlZFRpdGxlID0gZnVuY3Rpb24gdG9nZ2xlRmVlZFRpdGxlKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZF90aXRsZTogIXByb3BzLmF0dHJpYnV0ZXMuZmVlZF90aXRsZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblJlZnJlc2ggPSBmdW5jdGlvbiBvblJlZnJlc2godmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyByZWZyZXNoOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblNvcnQgPSBmdW5jdGlvbiBvblNvcnQodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzb3J0OiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRhcmdldCA9IGZ1bmN0aW9uIG9uVGFyZ2V0KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgdGFyZ2V0OiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRpdGxlID0gZnVuY3Rpb24gb25UaXRsZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHRpdGxlOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIGNoYW5nZU1ldGEgPSBmdW5jdGlvbiBjaGFuZ2VNZXRhKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbWV0YWZpZWxkczogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgY2hhbmdlTXVsdGlwbGVNZXRhID0gZnVuY3Rpb24gY2hhbmdlTXVsdGlwbGVNZXRhKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbXVsdGlwbGVfbWV0YTogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlU3VtbWFyeSA9IGZ1bmN0aW9uIHRvZ2dsZVN1bW1hcnkodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzdW1tYXJ5OiAhcHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5IH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uU3VtbWFyeUxlbmd0aCA9IGZ1bmN0aW9uIG9uU3VtbWFyeUxlbmd0aCh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN1bW1hcnlsZW5ndGg6IE51bWJlcih2YWx1ZSkgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25LZXl3b3Jkc1RpdGxlID0gZnVuY3Rpb24gb25LZXl3b3Jkc1RpdGxlKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsga2V5d29yZHNfdGl0bGU6IHZhbHVlIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uS2V5d29yZHNCYW4gPSBmdW5jdGlvbiBvbktleXdvcmRzQmFuKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsga2V5d29yZHNfYmFuOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRodW1iID0gZnVuY3Rpb24gb25UaHVtYih2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHRodW1iOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvbkRlZmF1bHQgPSBmdW5jdGlvbiBvbkRlZmF1bHQodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBkZWZhdWx0OiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblNpemUgPSBmdW5jdGlvbiBvblNpemUodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzaXplOiAhdmFsdWUgPyAxNTAgOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uUmVmZXJyYWxVUkwgPSBmdW5jdGlvbiBvblJlZmVycmFsVVJMKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgcmVmZXJyYWxfdXJsOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvbkNvbHVtbnMgPSBmdW5jdGlvbiBvbkNvbHVtbnModmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBjb2x1bW5zOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRlbXBsYXRlID0gZnVuY3Rpb24gb25UZW1wbGF0ZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHRlbXBsYXRlOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciB0b2dnbGVQcmljZSA9IGZ1bmN0aW9uIHRvZ2dsZVByaWNlKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgcHJpY2U6ICFwcm9wcy5hdHRyaWJ1dGVzLnByaWNlIH0pO1xuXHRcdH07XG5cdFx0dmFyIGxvYWRGZWVkID0gZnVuY3Rpb24gbG9hZEZlZWQoKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc3RhdHVzOiAxIH0pO1xuXG5cdFx0XHR2YXIgdXJsID0gcHJvcHMuYXR0cmlidXRlcy5mZWVkcztcblxuXHRcdFx0aWYgKHVybCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHJldHVybiBwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc3RhdHVzOiAzIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaW5BcnJheSh1cmwsIHByb3BzLmF0dHJpYnV0ZXMuY2F0ZWdvcmllcykpIHtcblx0XHRcdFx0dmFyIGNhdGVnb3J5ID0gdXJsO1xuXHRcdFx0XHR1cmwgPSBxdWVyeVN0cmluZy5zdHJpbmdpZnkoeyBjYXRlZ29yeTogY2F0ZWdvcnkgfSwgeyBhcnJheUZvcm1hdDogJ2JyYWNrZXQnIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dXJsID0gdXJsLnJlcGxhY2UoL1xccy9nLCAnJykuc3BsaXQoJywnKS5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcblx0XHRcdFx0XHRyZXR1cm4gaXRlbSAhPT0gJyc7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR1cmwgPSBxdWVyeVN0cmluZy5zdHJpbmdpZnkoeyB1cmw6IHVybCB9LCB7IGFycmF5Rm9ybWF0OiAnYnJhY2tldCcgfSk7XG5cdFx0XHR9XG5cblx0XHRcdHdwLmFwaVJlcXVlc3QoeyBwYXRoOiAnL2ZlZWR6eS92MS9mZWVkPycgKyB1cmwgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuXHRcdFx0XHRpZiAoX3RoaXMudW5tb3VudGluZykge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghZGF0YVsnZXJyb3InXSkge1xuXHRcdFx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBmZWVkRGF0YTogZGF0YSB9KTtcblx0XHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc3RhdHVzOiAyIH0pO1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzdGF0dXM6IDMgfSk7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmZhaWwoZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc3RhdHVzOiAzIH0pO1xuXHRcdFx0XHRyZXR1cm4gZXJyO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHR2YXIgbG9hZENhdGVnb3JpZXMgPSBmdW5jdGlvbiBsb2FkQ2F0ZWdvcmllcygpIHtcblx0XHRcdHdwLmFwaVJlcXVlc3QoeyBwYXRoOiAnL3dwL3YyL2ZlZWR6eV9jYXRlZ29yaWVzJyB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG5cdFx0XHRcdGlmIChfdGhpcy51bm1vdW50aW5nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGkgPSAwO1xuXHRcdFx0XHR2YXIgY2F0ZWdvcmllcyA9IFtdO1xuXHRcdFx0XHRkYXRhLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcblx0XHRcdFx0XHRjYXRlZ29yaWVzW2ldID0gaXRlbS5zbHVnO1xuXHRcdFx0XHRcdGkgPSBpICsgMTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBjYXRlZ29yaWVzOiBjYXRlZ29yaWVzIH0pO1xuXHRcdFx0XHRqUXVlcnkoJy5mZWVkenktc291cmNlIGlucHV0JykuYXV0b2NvbXBsZXRlKHtcblx0XHRcdFx0XHRzb3VyY2U6IGNhdGVnb3JpZXMsXG5cdFx0XHRcdFx0c2VsZWN0OiBmdW5jdGlvbiBzZWxlY3QoZXZlbnQsIHVpKSB7XG5cdFx0XHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZHM6IHVpLml0ZW0ubGFiZWwgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pLmZhaWwoZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRyZXR1cm4gZXJyO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHR2YXIgbWV0YUV4aXN0cyA9IGZ1bmN0aW9uIG1ldGFFeGlzdHModmFsdWUpIHtcblx0XHRcdHJldHVybiAwIDw9IHByb3BzLmF0dHJpYnV0ZXMubWV0YWZpZWxkcy5yZXBsYWNlKC9cXHMvZywgJycpLnNwbGl0KCcsJykuaW5kZXhPZih2YWx1ZSkgfHwgJycgPT09IHByb3BzLmF0dHJpYnV0ZXMubWV0YWZpZWxkcztcblx0XHR9O1xuXHRcdHZhciBtdWx0aXBsZU1ldGFFeGlzdHMgPSBmdW5jdGlvbiBtdWx0aXBsZU1ldGFFeGlzdHModmFsdWUpIHtcblx0XHRcdHJldHVybiAwIDw9IHByb3BzLmF0dHJpYnV0ZXMubXVsdGlwbGVfbWV0YS5yZXBsYWNlKC9cXHMvZywgJycpLnNwbGl0KCcsJykuaW5kZXhPZih2YWx1ZSkgfHwgJycgPT09IHByb3BzLmF0dHJpYnV0ZXMubXVsdGlwbGVfbWV0YTtcblx0XHR9O1xuXHRcdGlmIChwcm9wcy5hdHRyaWJ1dGVzLmNhdGVnb3JpZXMgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKCFwcm9wcy5hdHRyaWJ1dGVzLm1ldGEpIHtcblx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7XG5cdFx0XHRcdFx0bWV0YTogdHJ1ZSxcblx0XHRcdFx0XHRtZXRhZmllbGRzOiAnbm8nXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0bG9hZENhdGVnb3JpZXMoKTtcblx0XHR9XG5cdFx0cmV0dXJuIFtcblx0XHQvLyBJbnNwZWN0b3Jcblx0XHQhIXByb3BzLmlzU2VsZWN0ZWQgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KEluc3BlY3RvciwgX2V4dGVuZHMoeyBvbkNoYW5nZUZlZWRzOiBvbkNoYW5nZUZlZWRzLCBvbkNoYW5nZU1heDogb25DaGFuZ2VNYXgsIG9uQ2hhbmdlT2Zmc2V0OiBvbkNoYW5nZU9mZnNldCwgdG9nZ2xlRmVlZFRpdGxlOiB0b2dnbGVGZWVkVGl0bGUsIG9uUmVmcmVzaDogb25SZWZyZXNoLCBvblNvcnQ6IG9uU29ydCwgb25UYXJnZXQ6IG9uVGFyZ2V0LCBvblRpdGxlOiBvblRpdGxlLCBjaGFuZ2VNZXRhOiBjaGFuZ2VNZXRhLCBjaGFuZ2VNdWx0aXBsZU1ldGE6IGNoYW5nZU11bHRpcGxlTWV0YSwgdG9nZ2xlU3VtbWFyeTogdG9nZ2xlU3VtbWFyeSwgb25TdW1tYXJ5TGVuZ3RoOiBvblN1bW1hcnlMZW5ndGgsIG9uS2V5d29yZHNUaXRsZTogb25LZXl3b3Jkc1RpdGxlLCBvbktleXdvcmRzQmFuOiBvbktleXdvcmRzQmFuLCBvblRodW1iOiBvblRodW1iLCBvbkRlZmF1bHQ6IG9uRGVmYXVsdCwgb25TaXplOiBvblNpemUsIG9uUmVmZXJyYWxVUkw6IG9uUmVmZXJyYWxVUkwsIG9uQ29sdW1uczogb25Db2x1bW5zLCBvblRlbXBsYXRlOiBvblRlbXBsYXRlLCB0b2dnbGVQcmljZTogdG9nZ2xlUHJpY2UsIGxvYWRGZWVkOiBsb2FkRmVlZCB9LCBwcm9wcykpLCBwcm9wcy5hdHRyaWJ1dGVzLnN0YXR1cyAhPT0gMiAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHQnZGl2Jyxcblx0XHRcdHsgY2xhc3NOYW1lOiBwcm9wcy5jbGFzc05hbWUgfSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGxhY2Vob2xkZXIsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRrZXk6ICdwbGFjZWhvbGRlcicsXG5cdFx0XHRcdFx0aWNvbjogJ3JzcycsXG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdGZWVkenkgUlNTIEZlZWRzJylcblx0XHRcdFx0fSxcblx0XHRcdFx0cHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgPT09IDEgPyB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0eyBrZXk6ICdsb2FkaW5nJywgY2xhc3NOYW1lOiAnd3AtYmxvY2stZW1iZWQgaXMtbG9hZGluZycgfSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU3Bpbm5lciwgbnVsbCksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J3AnLFxuXHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdF9fKCdGZXRjaGluZ+KApicpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIDogW3dwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdHR5cGU6ICd1cmwnLFxuXHRcdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1zb3VyY2UnLFxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyOiBfXygnRW50ZXIgVVJMIG9yIGNhdGVnb3J5IG9mIHlvdXIgZmVlZCBoZXJl4oCmJyksXG5cdFx0XHRcdFx0b25DaGFuZ2U6IG9uQ2hhbmdlRmVlZHMsXG5cdFx0XHRcdFx0dmFsdWU6IHByb3BzLmF0dHJpYnV0ZXMuZmVlZHNcblx0XHRcdFx0fSksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aXNMYXJnZTogdHJ1ZSxcblx0XHRcdFx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdFx0XHRcdFx0b25DbGljazogbG9hZEZlZWRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdF9fKCdMb2FkIEZlZWQnKVxuXHRcdFx0XHQpLCBwcm9wcy5hdHRyaWJ1dGVzLnN0YXR1cyA9PT0gMyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J3NwYW4nLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0X18oJ0ZlZWQgVVJMIEludmFsaWQnKVxuXHRcdFx0XHQpLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J3NwYW4nLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0RXh0ZXJuYWxMaW5rLFxuXHRcdFx0XHRcdFx0eyBocmVmOiAnaHR0cHM6Ly92YWxpZGF0b3IudzMub3JnL2ZlZWQvJyB9LFxuXHRcdFx0XHRcdFx0X18oJ0NsaWNrIGhlcmUgdG8gY2hlY2sgaWYgZmVlZCBpcyB2YWxpZC4gJylcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdF9fKCdJbnZhbGlkIGZlZWRzIHdpbGwgTk9UIGRpc3BsYXkgaXRlbXMuJylcblx0XHRcdFx0KV1cblx0XHRcdClcblx0XHQpLCAhIShwcm9wcy5hdHRyaWJ1dGVzLnN0YXR1cyA9PT0gMiAmJiBwcm9wcy5hdHRyaWJ1dGVzLmZlZWREYXRhICE9PSB1bmRlZmluZWQpICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdCdkaXYnLFxuXHRcdFx0eyBjbGFzc05hbWU6ICdmZWVkenktcnNzJyB9LFxuXHRcdFx0cHJvcHMuYXR0cmlidXRlcy5mZWVkX3RpdGxlICYmIHByb3BzLmF0dHJpYnV0ZXMuZmVlZERhdGFbJ2NoYW5uZWwnXSAhPT0gbnVsbCAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Jzc19oZWFkZXInIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQnaDInLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J2EnLFxuXHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdyc3NfdGl0bGUnIH0sXG5cdFx0XHRcdFx0XHR1bmVzY2FwZUhUTUwocHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YVsnY2hhbm5lbCddWyd0aXRsZSddKVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J3NwYW4nLFxuXHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdyc3NfZGVzY3JpcHRpb24nIH0sXG5cdFx0XHRcdFx0XHQnICcgKyB1bmVzY2FwZUhUTUwocHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YVsnY2hhbm5lbCddWydkZXNjcmlwdGlvbiddKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0J3VsJyxcblx0XHRcdFx0eyBjbGFzc05hbWU6ICdmZWVkenktJyArIHByb3BzLmF0dHJpYnV0ZXMudGVtcGxhdGUgfSxcblx0XHRcdFx0ZmlsdGVyRGF0YShwcm9wcy5hdHRyaWJ1dGVzLmZlZWREYXRhWydpdGVtcyddLCBwcm9wcy5hdHRyaWJ1dGVzLnNvcnQsIHByb3BzLmF0dHJpYnV0ZXMua2V5d29yZHNfdGl0bGUsIHByb3BzLmF0dHJpYnV0ZXMua2V5d29yZHNfYmFuLCBwcm9wcy5hdHRyaWJ1dGVzLm1heCwgcHJvcHMuYXR0cmlidXRlcy5vZmZzZXQpLm1hcChmdW5jdGlvbiAoaXRlbSwgaSkge1xuXHRcdFx0XHRcdHZhciBpdGVtRGF0ZVRpbWUgPSAoaXRlbVsnZGF0ZSddIHx8ICcnKSArICcgJyArIChpdGVtWyd0aW1lJ10gfHwgJycpICsgJyBVVEMgKzAwMDAnO1xuXHRcdFx0XHRcdHZhciBpdGVtRGF0ZSA9IHVuZXNjYXBlSFRNTChpdGVtWydkYXRlJ10pIHx8ICcnO1xuXHRcdFx0XHRcdHZhciBpdGVtVGltZSA9IHVuZXNjYXBlSFRNTChpdGVtWyd0aW1lJ10pIHx8ICcnO1xuXHRcdFx0XHRcdHZhciBjYXRlZ29yaWVzID0gdW5lc2NhcGVIVE1MKGl0ZW1bJ2NhdGVnb3JpZXMnXSkgfHwgJyc7XG5cdFx0XHRcdFx0aWYgKG1ldGFFeGlzdHMoJ3R6PWxvY2FsJykpIHtcblx0XHRcdFx0XHRcdGl0ZW1EYXRlID0gZGF0ZSgnRiBqUywgXFxvJywgaXRlbURhdGVUaW1lKTtcblx0XHRcdFx0XHRcdGl0ZW1UaW1lID0gZGF0ZSgnaDppIEEnLCBpdGVtRGF0ZVRpbWUpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHZhciBhdXRob3IgPSBpdGVtWydjcmVhdG9yJ10gJiYgbWV0YUV4aXN0cygnYXV0aG9yJykgPyBpdGVtWydjcmVhdG9yJ10gOiAnJztcblx0XHRcdFx0XHRpZiAocHJvcHMuYXR0cmlidXRlcy5tdWx0aXBsZV9tZXRhICE9PSAnJyAmJiBwcm9wcy5hdHRyaWJ1dGVzLm11bHRpcGxlX21ldGEgIT09ICdubycpIHtcblx0XHRcdFx0XHRcdGlmICgobXVsdGlwbGVNZXRhRXhpc3RzKCdzb3VyY2UnKSB8fCBtdWx0aXBsZU1ldGFFeGlzdHMoJ3llcycpKSAmJiBhdXRob3IgIT09ICcnICYmIGl0ZW1bJ3NvdXJjZSddICE9PSAnJykge1xuXHRcdFx0XHRcdFx0XHRhdXRob3IgPSBhdXRob3IgKyAnICgnICsgaXRlbVsnc291cmNlJ10gKyAnKSc7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dmFyIG1ldGFfdmFsdWVzID0gbmV3IE9iamVjdCgpO1xuXHRcdFx0XHRcdG1ldGFfdmFsdWVzWydhdXRob3InXSA9IF9fKCdieScpICsgJyAnICsgYXV0aG9yO1xuXHRcdFx0XHRcdG1ldGFfdmFsdWVzWydkYXRlJ10gPSBfXygnb24nKSArICcgJyArIHVuZXNjYXBlSFRNTChpdGVtRGF0ZSk7XG5cdFx0XHRcdFx0bWV0YV92YWx1ZXNbJ3RpbWUnXSA9IF9fKCdhdCcpICsgJyAnICsgdW5lc2NhcGVIVE1MKGl0ZW1UaW1lKTtcblx0XHRcdFx0XHRtZXRhX3ZhbHVlc1snY2F0ZWdvcmllcyddID0gX18oJ2luJykgKyAnICcgKyB1bmVzY2FwZUhUTUwoY2F0ZWdvcmllcyk7XG5cblx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0J2xpJyxcblx0XHRcdFx0XHRcdHsga2V5OiBpLCBzdHlsZTogeyBwYWRkaW5nOiAnMTVweCAwIDI1cHgnIH0sIGNsYXNzTmFtZTogJ3Jzc19pdGVtIGZlZWR6eS1yc3MtY29sLScgKyBwcm9wcy5hdHRyaWJ1dGVzLmNvbHVtbnMgfSxcblx0XHRcdFx0XHRcdChpdGVtWyd0aHVtYm5haWwnXSAmJiBwcm9wcy5hdHRyaWJ1dGVzLnRodW1iID09PSAnYXV0bycgfHwgcHJvcHMuYXR0cmlidXRlcy50aHVtYiA9PT0gJ3llcycpICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAncnNzX2ltYWdlJywgc3R5bGU6IHsgd2lkdGg6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSArICdweCcsIGhlaWdodDogcHJvcHMuYXR0cmlidXRlcy5zaXplICsgJ3B4JyB9IH0sXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHQnYScsXG5cdFx0XHRcdFx0XHRcdFx0eyB0aXRsZTogdW5lc2NhcGVIVE1MKGl0ZW1bJ3RpdGxlJ10pLCBzdHlsZTogeyB3aWR0aDogcHJvcHMuYXR0cmlidXRlcy5zaXplICsgJ3B4JywgaGVpZ2h0OiBwcm9wcy5hdHRyaWJ1dGVzLnNpemUgKyAncHgnIH0gfSxcblx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IGNsYXNzTmFtZTogJ2ZldGNoZWQnLCBzdHlsZTogeyB3aWR0aDogcHJvcHMuYXR0cmlidXRlcy5zaXplICsgJ3B4JywgaGVpZ2h0OiBwcm9wcy5hdHRyaWJ1dGVzLnNpemUgKyAncHgnLCBiYWNrZ3JvdW5kSW1hZ2U6ICd1cmwoJyArIChpdGVtWyd0aHVtYm5haWwnXSA/IGl0ZW1bJ3RodW1ibmFpbCddIDogcHJvcHMuYXR0cmlidXRlcy5kZWZhdWx0ID8gcHJvcHMuYXR0cmlidXRlcy5kZWZhdWx0LnVybCA6IGZlZWR6eWpzLmltYWdlcGF0aCArICdmZWVkenktZGVmYXVsdC5qcGcnKSArICcpJyB9LCB0aXRsZTogdW5lc2NhcGVIVE1MKGl0ZW1bJ3RpdGxlJ10pIH0pXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Jzc19jb250ZW50X3dyYXAnIH0sXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHQnc3BhbicsXG5cdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICd0aXRsZScgfSxcblx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQnYScsXG5cdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcHMuYXR0cmlidXRlcy50aXRsZSAmJiB1bmVzY2FwZUhUTUwoaXRlbVsndGl0bGUnXSkubGVuZ3RoID4gcHJvcHMuYXR0cmlidXRlcy50aXRsZSA/IHVuZXNjYXBlSFRNTChpdGVtWyd0aXRsZSddKS5zdWJzdHJpbmcoMCwgcHJvcHMuYXR0cmlidXRlcy50aXRsZSkgKyAnLi4uJyA6IHVuZXNjYXBlSFRNTChpdGVtWyd0aXRsZSddKVxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAncnNzX2NvbnRlbnQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0cHJvcHMuYXR0cmlidXRlcy5tZXRhZmllbGRzICE9PSAnbm8nICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdzbWFsbCcsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ21ldGEnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRhcnJhbmdlTWV0YShtZXRhX3ZhbHVlcywgcHJvcHMuYXR0cmlidXRlcy5tZXRhZmllbGRzKVxuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0cHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5ICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdwJyxcblx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnZGVzY3JpcHRpb24nIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLnN1bW1hcnlsZW5ndGggJiYgdW5lc2NhcGVIVE1MKGl0ZW1bJ2Rlc2NyaXB0aW9uJ10pLmxlbmd0aCA+IHByb3BzLmF0dHJpYnV0ZXMuc3VtbWFyeWxlbmd0aCA/IHVuZXNjYXBlSFRNTChpdGVtWydkZXNjcmlwdGlvbiddKS5zdWJzdHJpbmcoMCwgcHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5bGVuZ3RoKSArICcgW+KApl0nIDogdW5lc2NhcGVIVE1MKGl0ZW1bJ2Rlc2NyaXB0aW9uJ10pXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRmZWVkenlqcy5pc1BybyAmJiBpdGVtWydtZWRpYSddICYmIGl0ZW1bJ21lZGlhJ11bJ3NyYyddICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdhdWRpbycsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IGNvbnRyb2xzOiB0cnVlLCBjb250cm9sc0xpc3Q6ICdub2Rvd25sb2FkJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdzb3VyY2UnLCB7IHNyYzogaXRlbVsnbWVkaWEnXVsnc3JjJ10sIHR5cGU6IGl0ZW1bJ21lZGlhJ11bJ3R5cGUnXSB9KSxcblx0XHRcdFx0XHRcdFx0XHRcdF9fKCdZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYXVkaW8gZWxlbWVudC4gQnV0IHlvdSBjYW4gY2hlY2sgdGhpcyBmb3IgdGhlIG9yaWdpbmFsIGxpbms6ICcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnYScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgaHJlZjogaXRlbVsnbWVkaWEnXVsnc3JjJ10gfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbVsnbWVkaWEnXVsnc3JjJ11cblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdGZlZWR6eWpzLmlzUHJvICYmIHByb3BzLmF0dHJpYnV0ZXMucHJpY2UgJiYgaXRlbVsncHJpY2UnXSAmJiBwcm9wcy5hdHRyaWJ1dGVzLnRlbXBsYXRlICE9PSAnZGVmYXVsdCcgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3ByaWNlLXdyYXAnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdhJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdidXR0b24nLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAncHJpY2UnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbVsncHJpY2UnXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSlcblx0XHRcdClcblx0XHQpXTtcblx0fSxcblx0c2F2ZTogZnVuY3Rpb24gc2F2ZSgpIHtcblx0XHQvLyBSZW5kZXJpbmcgaW4gUEhQXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vaW5jbHVkZXMvZ3V0ZW5iZXJnL3NyYy9ibG9jay5qc1xuLy8gbW9kdWxlIGlkID0gMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n");
246
 
247
  /***/ }),
248
  /* 30 */
@@ -363,14 +363,14 @@ eval("\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === '
363
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
364
 
365
  "use strict";
366
- eval("// jshint ignore: start\n\nvar attributes = {\n\tfeeds: {\n\t\ttype: 'string'\n\t},\n\tmax: {\n\t\ttype: 'number',\n\t\tdefault: 5\n\t},\n\toffset: {\n\t\ttype: 'number',\n\t\tdefault: 0\n\t},\n\tfeed_title: {\n\t\ttype: 'boolean',\n\t\tdefault: true\n\t},\n\trefresh: {\n\t\ttype: 'string',\n\t\tdefault: '12_hours'\n\t},\n\tsort: {\n\t\ttype: 'string',\n\t\tdefault: 'default'\n\t},\n\ttarget: {\n\t\ttype: 'string',\n\t\tdefault: '_blank'\n\t},\n\ttitle: {\n\t\ttype: 'number'\n\t},\n\tmeta: {\n\t\ttype: 'boolean',\n\t\tdefault: true\n\t},\n\tmetafields: {\n\t\ttype: 'string',\n\t\tdefault: ''\n\t},\n\tmultiple_meta: {\n\t\ttype: 'string',\n\t\tdefault: ''\n\t},\n\tsummary: {\n\t\ttype: 'boolean',\n\t\tdefault: true\n\t},\n\tsummarylength: {\n\t\ttype: 'number'\n\t},\n\tkeywords_title: {\n\t\ttype: 'string'\n\t},\n\tkeywords_ban: {\n\t\ttype: 'string'\n\t},\n\tthumb: {\n\t\ttype: 'string',\n\t\tdefault: 'auto'\n\t},\n\tdefault: {\n\t\ttype: 'object'\n\t},\n\tsize: {\n\t\ttype: 'number',\n\t\tdefault: 150\n\t},\n\treferral_url: {\n\t\ttype: 'string'\n\t},\n\tcolumns: {\n\t\ttype: 'number',\n\t\tdefault: 1\n\t},\n\ttemplate: {\n\t\ttype: 'string',\n\t\tdefault: 'default'\n\t},\n\tprice: {\n\t\ttype: 'boolean',\n\t\tdefault: true\n\t},\n\tstatus: {\n\t\t// 0 - Initial State\n\t\t// 1 - Feed Loading\n\t\t// 2 - Feed Loaded\n\t\t// 3 - Feed Invalid\n\t\ttype: 'number',\n\t\tdefault: 0\n\t},\n\tfeedData: {\n\t\ttype: 'object'\n\t},\n\tcategories: {\n\t\ttype: 'object'\n\t}\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (attributes);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2F0dHJpYnV0ZXMuanM/NmUxOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBqc2hpbnQgaWdub3JlOiBzdGFydFxuXG52YXIgYXR0cmlidXRlcyA9IHtcblx0ZmVlZHM6IHtcblx0XHR0eXBlOiAnc3RyaW5nJ1xuXHR9LFxuXHRtYXg6IHtcblx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRkZWZhdWx0OiA1XG5cdH0sXG5cdG9mZnNldDoge1xuXHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdGRlZmF1bHQ6IDBcblx0fSxcblx0ZmVlZF90aXRsZToge1xuXHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRkZWZhdWx0OiB0cnVlXG5cdH0sXG5cdHJlZnJlc2g6IHtcblx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRkZWZhdWx0OiAnMTJfaG91cnMnXG5cdH0sXG5cdHNvcnQ6IHtcblx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRkZWZhdWx0OiAnZGVmYXVsdCdcblx0fSxcblx0dGFyZ2V0OiB7XG5cdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0ZGVmYXVsdDogJ19ibGFuaydcblx0fSxcblx0dGl0bGU6IHtcblx0XHR0eXBlOiAnbnVtYmVyJ1xuXHR9LFxuXHRtZXRhOiB7XG5cdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdGRlZmF1bHQ6IHRydWVcblx0fSxcblx0bWV0YWZpZWxkczoge1xuXHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdGRlZmF1bHQ6ICcnXG5cdH0sXG5cdG11bHRpcGxlX21ldGE6IHtcblx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRkZWZhdWx0OiAnJ1xuXHR9LFxuXHRzdW1tYXJ5OiB7XG5cdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdGRlZmF1bHQ6IHRydWVcblx0fSxcblx0c3VtbWFyeWxlbmd0aDoge1xuXHRcdHR5cGU6ICdudW1iZXInXG5cdH0sXG5cdGtleXdvcmRzX3RpdGxlOiB7XG5cdFx0dHlwZTogJ3N0cmluZydcblx0fSxcblx0a2V5d29yZHNfYmFuOiB7XG5cdFx0dHlwZTogJ3N0cmluZydcblx0fSxcblx0dGh1bWI6IHtcblx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRkZWZhdWx0OiAnYXV0bydcblx0fSxcblx0ZGVmYXVsdDoge1xuXHRcdHR5cGU6ICdvYmplY3QnXG5cdH0sXG5cdHNpemU6IHtcblx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRkZWZhdWx0OiAxNTBcblx0fSxcblx0cmVmZXJyYWxfdXJsOiB7XG5cdFx0dHlwZTogJ3N0cmluZydcblx0fSxcblx0Y29sdW1uczoge1xuXHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdGRlZmF1bHQ6IDFcblx0fSxcblx0dGVtcGxhdGU6IHtcblx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRkZWZhdWx0OiAnZGVmYXVsdCdcblx0fSxcblx0cHJpY2U6IHtcblx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0ZGVmYXVsdDogdHJ1ZVxuXHR9LFxuXHRzdGF0dXM6IHtcblx0XHQvLyAwIC0gSW5pdGlhbCBTdGF0ZVxuXHRcdC8vIDEgLSBGZWVkIExvYWRpbmdcblx0XHQvLyAyIC0gRmVlZCBMb2FkZWRcblx0XHQvLyAzIC0gRmVlZCBJbnZhbGlkXG5cdFx0dHlwZTogJ251bWJlcicsXG5cdFx0ZGVmYXVsdDogMFxuXHR9LFxuXHRmZWVkRGF0YToge1xuXHRcdHR5cGU6ICdvYmplY3QnXG5cdH0sXG5cdGNhdGVnb3JpZXM6IHtcblx0XHR0eXBlOiAnb2JqZWN0J1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhdHRyaWJ1dGVzO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vaW5jbHVkZXMvZ3V0ZW5iZXJnL3NyYy9hdHRyaWJ1dGVzLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n");
367
 
368
  /***/ }),
369
  /* 49 */
370
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
371
 
372
  "use strict";
373
- eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__radio_image_control___ = __webpack_require__(50);\n// jshint ignore: start\n\n/**\r\n * Block dependencies\r\n */\n\n\n/**\r\n * Internal block libraries\r\n */\nvar __ = wp.i18n.__;\n\nvar _ref = wp.blockEditor || wp.editor,\n InspectorControls = _ref.InspectorControls,\n MediaUpload = _ref.MediaUpload;\n\nvar _wp$components = wp.components,\n BaseControl = _wp$components.BaseControl,\n ExternalLink = _wp$components.ExternalLink,\n PanelBody = _wp$components.PanelBody,\n RangeControl = _wp$components.RangeControl,\n TextControl = _wp$components.TextControl,\n Button = _wp$components.Button,\n ToggleControl = _wp$components.ToggleControl,\n SelectControl = _wp$components.SelectControl,\n ResponsiveWrapper = _wp$components.ResponsiveWrapper;\n\n/**\r\n* Create an Inspector Controls wrapper Component\r\n*/\n\nvar Inspector = function Inspector(props) {\n\treturn wp.element.createElement(\n\t\tInspectorControls,\n\t\t{ key: 'inspector' },\n\t\tprops.attributes.status !== 0 && wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\tnull,\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Feed Source'),\n\t\t\t\tclassName: 'feedzy-source',\n\t\t\t\tvalue: props.attributes.feeds,\n\t\t\t\tonChange: props.onChangeFeeds\n\t\t\t}),\n\t\t\twp.element.createElement(\n\t\t\t\tButton,\n\t\t\t\t{\n\t\t\t\t\tisLarge: true,\n\t\t\t\t\ttype: 'submit',\n\t\t\t\t\tonClick: props.loadFeed,\n\t\t\t\t\tclassName: 'loadFeed'\n\t\t\t\t},\n\t\t\t\t__('Load Feed')\n\t\t\t)\n\t\t),\n\t\tprops.attributes.status === 2 && [wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{\n\t\t\t\ttitle: __('Feed Settings'),\n\t\t\t\tinitialOpen: true,\n\t\t\t\tclassName: 'feedzy-options'\n\t\t\t},\n\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\tlabel: __('Number of Items'),\n\t\t\t\tvalue: Number(props.attributes.max) || 5,\n\t\t\t\tonChange: props.onChangeMax,\n\t\t\t\tmin: 1,\n\t\t\t\tmax: props.attributes.feedData['items'].length || 10,\n\t\t\t\tbeforeIcon: 'sort',\n\t\t\t\tclassName: 'feedzy-max'\n\t\t\t}),\n\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\tlabel: __('Ignore first N items'),\n\t\t\t\tvalue: Number(props.attributes.offset) || 0,\n\t\t\t\tonChange: props.onChangeOffset,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: props.attributes.feedData['items'].length,\n\t\t\t\tbeforeIcon: 'sort',\n\t\t\t\tclassName: 'feedzy-offset'\n\t\t\t}),\n\t\t\tprops.attributes.feedData['channel'] !== null && wp.element.createElement(ToggleControl, {\n\t\t\t\tlabel: __('Display feed title?'),\n\t\t\t\tchecked: !!props.attributes.feed_title,\n\t\t\t\tonChange: props.toggleFeedTitle,\n\t\t\t\tclassName: 'feedzy-title'\n\t\t\t}),\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tlabel: __('Feed Caching Time'),\n\t\t\t\tvalue: props.attributes.refresh,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('1 Hour'),\n\t\t\t\t\tvalue: '1_hours'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('2 Hours'),\n\t\t\t\t\tvalue: '3_hours'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('12 Hours'),\n\t\t\t\t\tvalue: '12_hours'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('1 Day'),\n\t\t\t\t\tvalue: '1_days'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('3 Days'),\n\t\t\t\t\tvalue: '3_days'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('15 Days'),\n\t\t\t\t\tvalue: '15_days'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onRefresh,\n\t\t\t\tclassName: 'feedzy-refresh'\n\t\t\t}),\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tlabel: __('Sorting Order'),\n\t\t\t\tvalue: props.attributes.sort,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Default'),\n\t\t\t\t\tvalue: 'default'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Date Descending'),\n\t\t\t\t\tvalue: 'date_desc'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Date Ascending'),\n\t\t\t\t\tvalue: 'date_asc'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Title Descending'),\n\t\t\t\t\tvalue: 'title_desc'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Title Ascending'),\n\t\t\t\t\tvalue: 'title_asc'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onSort,\n\t\t\t\tclassName: 'feedzy-sort'\n\t\t\t})\n\t\t), wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{ title: __('Item Options'), initialOpen: false, className: 'feedzy-item-options' },\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tlabel: __('Open Links In'),\n\t\t\t\tvalue: props.attributes.target,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('New Tab'),\n\t\t\t\t\tvalue: '_blank'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Same Tab'),\n\t\t\t\t\tvalue: '_self'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onTarget\n\t\t\t}),\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Title Character Limit'),\n\t\t\t\thelp: __('Leave empty to show full title.'),\n\t\t\t\ttype: 'number',\n\t\t\t\tvalue: props.attributes.title,\n\t\t\t\tonChange: props.onTitle,\n\t\t\t\tclassName: 'feedzy-title-length'\n\t\t\t}),\n\t\t\twp.element.createElement(\n\t\t\t\tBaseControl,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: feedzyjs.isPro ? __('Should we display additional meta fields out of author, date, time or categories? (comma-separated list, in order of display).') : __('Should we display additional meta fields out of author, date or time? (comma-separated list, in order of display).'),\n\t\t\t\t\thelp: __('Leave empty to display all and \"no\" to display nothing.'),\n\t\t\t\t\tplaceholder: feedzyjs.isPro ? __('(eg: author, date, time, tz=local, categories)') : __('(eg: author, date, time, tz=local)'),\n\t\t\t\t\tvalue: props.attributes.metafields,\n\t\t\t\t\tonChange: props.changeMeta,\n\t\t\t\t\tclassName: 'feedzy-meta'\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: __('When using multiple sources, should we display additional meta fields? - source (comma-separated list).'),\n\t\t\t\t\tplaceholder: __('(eg: source)'),\n\t\t\t\t\tvalue: props.attributes.multiple_meta,\n\t\t\t\t\tonChange: props.changeMultipleMeta,\n\t\t\t\t\tclassName: 'feedzy-multiple-meta'\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tExternalLink,\n\t\t\t\t\t{ href: 'https://docs.themeisle.com/article/1089-how-to-display-author-date-or-time-from-the-feed' },\n\t\t\t\t\t__('You can find more info about available meta field values here.')\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\tlabel: __('Display post description?'),\n\t\t\t\tchecked: !!props.attributes.summary,\n\t\t\t\tonChange: props.toggleSummary,\n\t\t\t\tclassName: 'feedzy-summary'\n\t\t\t}),\n\t\t\tprops.attributes.summary && wp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Description Character Limit'),\n\t\t\t\thelp: __('Leave empty to show full description.'),\n\t\t\t\ttype: 'number',\n\t\t\t\tvalue: props.attributes.summarylength,\n\t\t\t\tonChange: props.onSummaryLength,\n\t\t\t\tclassName: 'feedzy-summary-length'\n\t\t\t}),\n\t\t\tfeedzyjs.isPro && [wp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Only display if title contains:'),\n\t\t\t\thelp: __('Comma-separated list/case sensitive.'),\n\t\t\t\tvalue: props.attributes.keywords_title,\n\t\t\t\tonChange: props.onKeywordsTitle,\n\t\t\t\tclassName: 'feedzy-include'\n\t\t\t}), wp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Exclude if title contains:'),\n\t\t\t\thelp: __('Comma-separated list/case sensitive.'),\n\t\t\t\tvalue: props.attributes.keywords_ban,\n\t\t\t\tonChange: props.onKeywordsBan,\n\t\t\t\tclassName: 'feedzy-ban'\n\t\t\t})]\n\t\t), wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{ title: __('Item Image Options'), initialOpen: false, className: 'feedzy-image-options' },\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tlabel: __('Display first image if available?'),\n\t\t\t\tvalue: props.attributes.thumb,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Auto'),\n\t\t\t\t\tvalue: 'auto'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Yes'),\n\t\t\t\t\tvalue: 'yes'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('No'),\n\t\t\t\t\tvalue: 'no'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onThumb,\n\t\t\t\tclassName: 'feedzy-thumb'\n\t\t\t}),\n\t\t\tprops.attributes.thumb !== 'no' && [props.attributes.thumb !== 'auto' && wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'feedzy-blocks-base-control' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'label',\n\t\t\t\t\t{ className: 'blocks-base-control__label', 'for': 'inspector-media-upload' },\n\t\t\t\t\t__('Default thumbnail URL if no image is found.')\n\t\t\t\t),\n\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\ttype: 'image',\n\t\t\t\t\tid: 'inspector-media-upload',\n\t\t\t\t\tvalue: props.attributes.default,\n\t\t\t\t\tonSelect: props.onDefault,\n\t\t\t\t\trender: function render(_ref2) {\n\t\t\t\t\t\tvar open = _ref2.open;\n\t\t\t\t\t\treturn [props.attributes.default !== undefined && [wp.element.createElement(\n\t\t\t\t\t\t\tResponsiveWrapper,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnaturalWidth: props.attributes.default.width,\n\t\t\t\t\t\t\t\tnaturalHeight: props.attributes.default.height\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\twp.element.createElement('img', { src: props.attributes.default.url, alt: __('Featured image') })\n\t\t\t\t\t\t), wp.element.createElement(\n\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\treturn props.setAttributes({ default: undefined });\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tstyle: { marginTop: '10px' }\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t__('Remove Image')\n\t\t\t\t\t\t)], wp.element.createElement(\n\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\tonClick: open,\n\t\t\t\t\t\t\t\tstyle: { marginTop: '10px' },\n\t\t\t\t\t\t\t\tclassName: props.attributes.default === undefined && 'feedzy_image_upload'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t__('Upload Image')\n\t\t\t\t\t\t)];\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t), wp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Thumbnails dimension.'),\n\t\t\t\ttype: 'number',\n\t\t\t\tvalue: props.attributes.size,\n\t\t\t\tonChange: props.onSize\n\t\t\t})]\n\t\t), feedzyjs.isPro && wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{ title: __('Pro Features'), initialOpen: false, className: 'feedzy-pro-options' },\n\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\tlabel: __('Display price if available?'),\n\t\t\t\thelp: props.attributes.price && props.attributes.template === 'default' ? __('Choose a different template for this to work.') : null,\n\t\t\t\tchecked: !!props.attributes.price,\n\t\t\t\tonChange: props.togglePrice,\n\t\t\t\tclassName: 'feedzy-pro-price'\n\t\t\t}),\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Referral URL parameters.'),\n\t\t\t\thelp: __('Without (\"?\")'),\n\t\t\t\tplaceholder: _('(eg. promo_code=feedzy_is_awesome)'),\n\t\t\t\tvalue: props.attributes.referral_url,\n\t\t\t\tonChange: props.onReferralURL\n\t\t\t}),\n\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\tlabel: __('Columns'),\n\t\t\t\thelp: __('How many columns we should use to display the feed items?'),\n\t\t\t\tvalue: props.attributes.columns || 1,\n\t\t\t\tonChange: props.onColumns,\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 6,\n\t\t\t\tbeforeIcon: 'sort',\n\t\t\t\tallowReset: true\n\t\t\t}),\n\t\t\twp.element.createElement(__WEBPACK_IMPORTED_MODULE_0__radio_image_control___[\"a\" /* default */], {\n\t\t\t\tlabel: __('Feed Template'),\n\t\t\t\tselected: props.attributes.template,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Default'),\n\t\t\t\t\tsrc: feedzyjs.imagepath + 'feedzy-default-template.jpg',\n\t\t\t\t\tvalue: 'default'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Style 1'),\n\t\t\t\t\tsrc: feedzyjs.imagepath + 'feedzy-style1-template.jpg',\n\t\t\t\t\tvalue: 'style1'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Style 2'),\n\t\t\t\t\tsrc: feedzyjs.imagepath + 'feedzy-style2-template.jpg',\n\t\t\t\t\tvalue: 'style2'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onTemplate,\n\t\t\t\tclassName: 'feedzy-pro-template'\n\t\t\t})\n\t\t)]\n\t);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Inspector);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2luc3BlY3Rvci5qcz83YTVmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGpzaGludCBpZ25vcmU6IHN0YXJ0XG5cbi8qKlxyXG4gKiBCbG9jayBkZXBlbmRlbmNpZXNcclxuICovXG5pbXBvcnQgUmFkaW9JbWFnZUNvbnRyb2wgZnJvbSAnLi9yYWRpby1pbWFnZS1jb250cm9sLyc7XG5cbi8qKlxyXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcclxuICovXG52YXIgX18gPSB3cC5pMThuLl9fO1xuXG52YXIgX3JlZiA9IHdwLmJsb2NrRWRpdG9yIHx8IHdwLmVkaXRvcixcbiAgICBJbnNwZWN0b3JDb250cm9scyA9IF9yZWYuSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgTWVkaWFVcGxvYWQgPSBfcmVmLk1lZGlhVXBsb2FkO1xuXG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIEJhc2VDb250cm9sID0gX3dwJGNvbXBvbmVudHMuQmFzZUNvbnRyb2wsXG4gICAgRXh0ZXJuYWxMaW5rID0gX3dwJGNvbXBvbmVudHMuRXh0ZXJuYWxMaW5rLFxuICAgIFBhbmVsQm9keSA9IF93cCRjb21wb25lbnRzLlBhbmVsQm9keSxcbiAgICBSYW5nZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5SYW5nZUNvbnRyb2wsXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBCdXR0b24gPSBfd3AkY29tcG9uZW50cy5CdXR0b24sXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2wsXG4gICAgU2VsZWN0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlNlbGVjdENvbnRyb2wsXG4gICAgUmVzcG9uc2l2ZVdyYXBwZXIgPSBfd3AkY29tcG9uZW50cy5SZXNwb25zaXZlV3JhcHBlcjtcblxuLyoqXHJcbiogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxyXG4qL1xuXG52YXIgSW5zcGVjdG9yID0gZnVuY3Rpb24gSW5zcGVjdG9yKHByb3BzKSB7XG5cdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0eyBrZXk6ICdpbnNwZWN0b3InIH0sXG5cdFx0cHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgIT09IDAgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0bnVsbCxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0ZlZWQgU291cmNlJyksXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1zb3VyY2UnLFxuXHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5mZWVkcyxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlRmVlZHNcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdFx0XHRcdG9uQ2xpY2s6IHByb3BzLmxvYWRGZWVkLFxuXHRcdFx0XHRcdGNsYXNzTmFtZTogJ2xvYWRGZWVkJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRfXygnTG9hZCBGZWVkJylcblx0XHRcdClcblx0XHQpLFxuXHRcdHByb3BzLmF0dHJpYnV0ZXMuc3RhdHVzID09PSAyICYmIFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRQYW5lbEJvZHksXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBfXygnRmVlZCBTZXR0aW5ncycpLFxuXHRcdFx0XHRpbml0aWFsT3BlbjogdHJ1ZSxcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LW9wdGlvbnMnXG5cdFx0XHR9LFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJhbmdlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ051bWJlciBvZiBJdGVtcycpLFxuXHRcdFx0XHR2YWx1ZTogTnVtYmVyKHByb3BzLmF0dHJpYnV0ZXMubWF4KSB8fCA1LFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25DaGFuZ2VNYXgsXG5cdFx0XHRcdG1pbjogMSxcblx0XHRcdFx0bWF4OiBwcm9wcy5hdHRyaWJ1dGVzLmZlZWREYXRhWydpdGVtcyddLmxlbmd0aCB8fCAxMCxcblx0XHRcdFx0YmVmb3JlSWNvbjogJ3NvcnQnLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktbWF4J1xuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUmFuZ2VDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnSWdub3JlIGZpcnN0IE4gaXRlbXMnKSxcblx0XHRcdFx0dmFsdWU6IE51bWJlcihwcm9wcy5hdHRyaWJ1dGVzLm9mZnNldCkgfHwgMCxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlT2Zmc2V0LFxuXHRcdFx0XHRtaW46IDAsXG5cdFx0XHRcdG1heDogcHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YVsnaXRlbXMnXS5sZW5ndGgsXG5cdFx0XHRcdGJlZm9yZUljb246ICdzb3J0Jyxcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LW9mZnNldCdcblx0XHRcdH0pLFxuXHRcdFx0cHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YVsnY2hhbm5lbCddICE9PSBudWxsICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGlzcGxheSBmZWVkIHRpdGxlPycpLFxuXHRcdFx0XHRjaGVja2VkOiAhIXByb3BzLmF0dHJpYnV0ZXMuZmVlZF90aXRsZSxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLnRvZ2dsZUZlZWRUaXRsZSxcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LXRpdGxlJ1xuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0ZlZWQgQ2FjaGluZyBUaW1lJyksXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnJlZnJlc2gsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCcxIEhvdXInKSxcblx0XHRcdFx0XHR2YWx1ZTogJzFfaG91cnMnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJzIgSG91cnMnKSxcblx0XHRcdFx0XHR2YWx1ZTogJzNfaG91cnMnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJzEyIEhvdXJzJyksXG5cdFx0XHRcdFx0dmFsdWU6ICcxMl9ob3Vycydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnMSBEYXknKSxcblx0XHRcdFx0XHR2YWx1ZTogJzFfZGF5cydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnMyBEYXlzJyksXG5cdFx0XHRcdFx0dmFsdWU6ICczX2RheXMnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJzE1IERheXMnKSxcblx0XHRcdFx0XHR2YWx1ZTogJzE1X2RheXMnXG5cdFx0XHRcdH1dLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25SZWZyZXNoLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktcmVmcmVzaCdcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdTb3J0aW5nIE9yZGVyJyksXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnNvcnQsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdEZWZhdWx0JyksXG5cdFx0XHRcdFx0dmFsdWU6ICdkZWZhdWx0J1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdEYXRlIERlc2NlbmRpbmcnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2RhdGVfZGVzYydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnRGF0ZSBBc2NlbmRpbmcnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2RhdGVfYXNjJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSBEZXNjZW5kaW5nJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd0aXRsZV9kZXNjJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSBBc2NlbmRpbmcnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3RpdGxlX2FzYydcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vblNvcnQsXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1zb3J0J1xuXHRcdFx0fSlcblx0XHQpLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRQYW5lbEJvZHksXG5cdFx0XHR7IHRpdGxlOiBfXygnSXRlbSBPcHRpb25zJyksIGluaXRpYWxPcGVuOiBmYWxzZSwgY2xhc3NOYW1lOiAnZmVlZHp5LWl0ZW0tb3B0aW9ucycgfSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnT3BlbiBMaW5rcyBJbicpLFxuXHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy50YXJnZXQsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdOZXcgVGFiJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdfYmxhbmsnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1NhbWUgVGFiJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdfc2VsZidcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vblRhcmdldFxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSBDaGFyYWN0ZXIgTGltaXQnKSxcblx0XHRcdFx0aGVscDogX18oJ0xlYXZlIGVtcHR5IHRvIHNob3cgZnVsbCB0aXRsZS4nKSxcblx0XHRcdFx0dHlwZTogJ251bWJlcicsXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnRpdGxlLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25UaXRsZSxcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LXRpdGxlLWxlbmd0aCdcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRCYXNlQ29udHJvbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IGZlZWR6eWpzLmlzUHJvID8gX18oJ1Nob3VsZCB3ZSBkaXNwbGF5IGFkZGl0aW9uYWwgbWV0YSBmaWVsZHMgb3V0IG9mIGF1dGhvciwgZGF0ZSwgdGltZSBvciBjYXRlZ29yaWVzPyAoY29tbWEtc2VwYXJhdGVkIGxpc3QsIGluIG9yZGVyIG9mIGRpc3BsYXkpLicpIDogX18oJ1Nob3VsZCB3ZSBkaXNwbGF5IGFkZGl0aW9uYWwgbWV0YSBmaWVsZHMgb3V0IG9mIGF1dGhvciwgZGF0ZSBvciB0aW1lPyAoY29tbWEtc2VwYXJhdGVkIGxpc3QsIGluIG9yZGVyIG9mIGRpc3BsYXkpLicpLFxuXHRcdFx0XHRcdGhlbHA6IF9fKCdMZWF2ZSBlbXB0eSB0byBkaXNwbGF5IGFsbCBhbmQgXCJub1wiIHRvIGRpc3BsYXkgbm90aGluZy4nKSxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcjogZmVlZHp5anMuaXNQcm8gPyBfXygnKGVnOiBhdXRob3IsIGRhdGUsIHRpbWUsIHR6PWxvY2FsLCBjYXRlZ29yaWVzKScpIDogX18oJyhlZzogYXV0aG9yLCBkYXRlLCB0aW1lLCB0ej1sb2NhbCknKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5tZXRhZmllbGRzLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5jaGFuZ2VNZXRhLFxuXHRcdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1tZXRhJ1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdXaGVuIHVzaW5nIG11bHRpcGxlIHNvdXJjZXMsIHNob3VsZCB3ZSBkaXNwbGF5IGFkZGl0aW9uYWwgbWV0YSBmaWVsZHM/IC0gc291cmNlIChjb21tYS1zZXBhcmF0ZWQgbGlzdCkuJyksXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCcoZWc6IHNvdXJjZSknKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5tdWx0aXBsZV9tZXRhLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5jaGFuZ2VNdWx0aXBsZU1ldGEsXG5cdFx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LW11bHRpcGxlLW1ldGEnXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0RXh0ZXJuYWxMaW5rLFxuXHRcdFx0XHRcdHsgaHJlZjogJ2h0dHBzOi8vZG9jcy50aGVtZWlzbGUuY29tL2FydGljbGUvMTA4OS1ob3ctdG8tZGlzcGxheS1hdXRob3ItZGF0ZS1vci10aW1lLWZyb20tdGhlLWZlZWQnIH0sXG5cdFx0XHRcdFx0X18oJ1lvdSBjYW4gZmluZCBtb3JlIGluZm8gYWJvdXQgYXZhaWxhYmxlIG1ldGEgZmllbGQgdmFsdWVzIGhlcmUuJylcblx0XHRcdFx0KVxuXHRcdFx0KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGlzcGxheSBwb3N0IGRlc2NyaXB0aW9uPycpLFxuXHRcdFx0XHRjaGVja2VkOiAhIXByb3BzLmF0dHJpYnV0ZXMuc3VtbWFyeSxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLnRvZ2dsZVN1bW1hcnksXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1zdW1tYXJ5J1xuXHRcdFx0fSksXG5cdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLnN1bW1hcnkgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGVzY3JpcHRpb24gQ2hhcmFjdGVyIExpbWl0JyksXG5cdFx0XHRcdGhlbHA6IF9fKCdMZWF2ZSBlbXB0eSB0byBzaG93IGZ1bGwgZGVzY3JpcHRpb24uJyksXG5cdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5bGVuZ3RoLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25TdW1tYXJ5TGVuZ3RoLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktc3VtbWFyeS1sZW5ndGgnXG5cdFx0XHR9KSxcblx0XHRcdGZlZWR6eWpzLmlzUHJvICYmIFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdPbmx5IGRpc3BsYXkgaWYgdGl0bGUgY29udGFpbnM6JyksXG5cdFx0XHRcdGhlbHA6IF9fKCdDb21tYS1zZXBhcmF0ZWQgbGlzdC9jYXNlIHNlbnNpdGl2ZS4nKSxcblx0XHRcdFx0dmFsdWU6IHByb3BzLmF0dHJpYnV0ZXMua2V5d29yZHNfdGl0bGUsXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vbktleXdvcmRzVGl0bGUsXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1pbmNsdWRlJ1xuXHRcdFx0fSksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0V4Y2x1ZGUgaWYgdGl0bGUgY29udGFpbnM6JyksXG5cdFx0XHRcdGhlbHA6IF9fKCdDb21tYS1zZXBhcmF0ZWQgbGlzdC9jYXNlIHNlbnNpdGl2ZS4nKSxcblx0XHRcdFx0dmFsdWU6IHByb3BzLmF0dHJpYnV0ZXMua2V5d29yZHNfYmFuLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25LZXl3b3Jkc0Jhbixcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LWJhbidcblx0XHRcdH0pXVxuXHRcdCksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFBhbmVsQm9keSxcblx0XHRcdHsgdGl0bGU6IF9fKCdJdGVtIEltYWdlIE9wdGlvbnMnKSwgaW5pdGlhbE9wZW46IGZhbHNlLCBjbGFzc05hbWU6ICdmZWVkenktaW1hZ2Utb3B0aW9ucycgfSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGlzcGxheSBmaXJzdCBpbWFnZSBpZiBhdmFpbGFibGU/JyksXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnRodW1iLFxuXHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnQXV0bycpLFxuXHRcdFx0XHRcdHZhbHVlOiAnYXV0bydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnWWVzJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd5ZXMnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ05vJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubydcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vblRodW1iLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktdGh1bWInXG5cdFx0XHR9KSxcblx0XHRcdHByb3BzLmF0dHJpYnV0ZXMudGh1bWIgIT09ICdubycgJiYgW3Byb3BzLmF0dHJpYnV0ZXMudGh1bWIgIT09ICdhdXRvJyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHR7IGNsYXNzTmFtZTogJ2ZlZWR6eS1ibG9ja3MtYmFzZS1jb250cm9sJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J2xhYmVsJyxcblx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2Jsb2Nrcy1iYXNlLWNvbnRyb2xfX2xhYmVsJywgJ2Zvcic6ICdpbnNwZWN0b3ItbWVkaWEtdXBsb2FkJyB9LFxuXHRcdFx0XHRcdF9fKCdEZWZhdWx0IHRodW1ibmFpbCBVUkwgaWYgbm8gaW1hZ2UgaXMgZm91bmQuJylcblx0XHRcdFx0KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KE1lZGlhVXBsb2FkLCB7XG5cdFx0XHRcdFx0dHlwZTogJ2ltYWdlJyxcblx0XHRcdFx0XHRpZDogJ2luc3BlY3Rvci1tZWRpYS11cGxvYWQnLFxuXHRcdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLmRlZmF1bHQsXG5cdFx0XHRcdFx0b25TZWxlY3Q6IHByb3BzLm9uRGVmYXVsdCxcblx0XHRcdFx0XHRyZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihfcmVmMikge1xuXHRcdFx0XHRcdFx0dmFyIG9wZW4gPSBfcmVmMi5vcGVuO1xuXHRcdFx0XHRcdFx0cmV0dXJuIFtwcm9wcy5hdHRyaWJ1dGVzLmRlZmF1bHQgIT09IHVuZGVmaW5lZCAmJiBbd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRSZXNwb25zaXZlV3JhcHBlcixcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hdHVyYWxXaWR0aDogcHJvcHMuYXR0cmlidXRlcy5kZWZhdWx0LndpZHRoLFxuXHRcdFx0XHRcdFx0XHRcdG5hdHVyYWxIZWlnaHQ6IHByb3BzLmF0dHJpYnV0ZXMuZGVmYXVsdC5oZWlnaHRcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdpbWcnLCB7IHNyYzogcHJvcHMuYXR0cmlidXRlcy5kZWZhdWx0LnVybCwgYWx0OiBfXygnRmVhdHVyZWQgaW1hZ2UnKSB9KVxuXHRcdFx0XHRcdFx0KSwgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcHJvcHMuc2V0QXR0cmlidXRlcyh7IGRlZmF1bHQ6IHVuZGVmaW5lZCB9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHN0eWxlOiB7IG1hcmdpblRvcDogJzEwcHgnIH1cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0X18oJ1JlbW92ZSBJbWFnZScpXG5cdFx0XHRcdFx0XHQpXSwgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IG9wZW4sXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU6IHsgbWFyZ2luVG9wOiAnMTBweCcgfSxcblx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6IHByb3BzLmF0dHJpYnV0ZXMuZGVmYXVsdCA9PT0gdW5kZWZpbmVkICYmICdmZWVkenlfaW1hZ2VfdXBsb2FkJ1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRfXygnVXBsb2FkIEltYWdlJylcblx0XHRcdFx0XHRcdCldO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1RodW1ibmFpbHMgZGltZW5zaW9uLicpLFxuXHRcdFx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRcdFx0dmFsdWU6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLm9uU2l6ZVxuXHRcdFx0fSldXG5cdFx0KSwgZmVlZHp5anMuaXNQcm8gJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0eyB0aXRsZTogX18oJ1BybyBGZWF0dXJlcycpLCBpbml0aWFsT3BlbjogZmFsc2UsIGNsYXNzTmFtZTogJ2ZlZWR6eS1wcm8tb3B0aW9ucycgfSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGlzcGxheSBwcmljZSBpZiBhdmFpbGFibGU/JyksXG5cdFx0XHRcdGhlbHA6IHByb3BzLmF0dHJpYnV0ZXMucHJpY2UgJiYgcHJvcHMuYXR0cmlidXRlcy50ZW1wbGF0ZSA9PT0gJ2RlZmF1bHQnID8gX18oJ0Nob29zZSBhIGRpZmZlcmVudCB0ZW1wbGF0ZSBmb3IgdGhpcyB0byB3b3JrLicpIDogbnVsbCxcblx0XHRcdFx0Y2hlY2tlZDogISFwcm9wcy5hdHRyaWJ1dGVzLnByaWNlLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMudG9nZ2xlUHJpY2UsXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1wcm8tcHJpY2UnXG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1JlZmVycmFsIFVSTCBwYXJhbWV0ZXJzLicpLFxuXHRcdFx0XHRoZWxwOiBfXygnV2l0aG91dCAoXCI/XCIpJyksXG5cdFx0XHRcdHBsYWNlaG9sZGVyOiBfKCcoZWcuIHByb21vX2NvZGU9ZmVlZHp5X2lzX2F3ZXNvbWUpJyksXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnJlZmVycmFsX3VybCxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLm9uUmVmZXJyYWxVUkxcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJhbmdlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0NvbHVtbnMnKSxcblx0XHRcdFx0aGVscDogX18oJ0hvdyBtYW55IGNvbHVtbnMgd2Ugc2hvdWxkIHVzZSB0byBkaXNwbGF5IHRoZSBmZWVkIGl0ZW1zPycpLFxuXHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5jb2x1bW5zIHx8IDEsXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vbkNvbHVtbnMsXG5cdFx0XHRcdG1pbjogMSxcblx0XHRcdFx0bWF4OiA2LFxuXHRcdFx0XHRiZWZvcmVJY29uOiAnc29ydCcsXG5cdFx0XHRcdGFsbG93UmVzZXQ6IHRydWVcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJhZGlvSW1hZ2VDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRmVlZCBUZW1wbGF0ZScpLFxuXHRcdFx0XHRzZWxlY3RlZDogcHJvcHMuYXR0cmlidXRlcy50ZW1wbGF0ZSxcblx0XHRcdFx0b3B0aW9uczogW3tcblx0XHRcdFx0XHRsYWJlbDogX18oJ0RlZmF1bHQnKSxcblx0XHRcdFx0XHRzcmM6IGZlZWR6eWpzLmltYWdlcGF0aCArICdmZWVkenktZGVmYXVsdC10ZW1wbGF0ZS5qcGcnLFxuXHRcdFx0XHRcdHZhbHVlOiAnZGVmYXVsdCdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU3R5bGUgMScpLFxuXHRcdFx0XHRcdHNyYzogZmVlZHp5anMuaW1hZ2VwYXRoICsgJ2ZlZWR6eS1zdHlsZTEtdGVtcGxhdGUuanBnJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3N0eWxlMSdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU3R5bGUgMicpLFxuXHRcdFx0XHRcdHNyYzogZmVlZHp5anMuaW1hZ2VwYXRoICsgJ2ZlZWR6eS1zdHlsZTItdGVtcGxhdGUuanBnJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3N0eWxlMidcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vblRlbXBsYXRlLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktcHJvLXRlbXBsYXRlJ1xuXHRcdFx0fSlcblx0XHQpXVxuXHQpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5zcGVjdG9yO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vaW5jbHVkZXMvZ3V0ZW5iZXJnL3NyYy9pbnNwZWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n");
374
 
375
  /***/ }),
376
  /* 50 */
242
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
243
 
244
  "use strict";
245
+ eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__style_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_query_string__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_query_string___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_query_string__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__attributes__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__inspector__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils__ = __webpack_require__(52);\n\n\nvar _this = this;\n\n// jshint ignore: start\n\n/**\r\n * Block dependencies\r\n */\n\n\n\n\n\n\n/**\r\n * Internal block libraries\r\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$components = wp.components,\n ExternalLink = _wp$components.ExternalLink,\n Placeholder = _wp$components.Placeholder,\n TextControl = _wp$components.TextControl,\n Button = _wp$components.Button,\n Spinner = _wp$components.Spinner;\nvar date = wp.date.date;\n\n/**\r\n * Register block\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (registerBlockType('feedzy-rss-feeds/feedzy-block', {\n\ttitle: __('Feedzy RSS Feeds'),\n\tcategory: 'common',\n\ticon: 'rss',\n\tkeywords: [__('Feedzy RSS Feeds'), __('RSS'), __('Feeds')],\n\tsupports: {\n\t\thtml: false\n\t},\n\tattributes: __WEBPACK_IMPORTED_MODULE_3__attributes__[\"a\" /* default */],\n\tedit: function edit(props) {\n\t\tvar onChangeFeeds = function onChangeFeeds(value) {\n\t\t\tprops.setAttributes({ feeds: value });\n\t\t};\n\t\tvar onChangeMax = function onChangeMax(value) {\n\t\t\tprops.setAttributes({ max: !value ? 5 : Number(value) });\n\t\t};\n\t\tvar onChangeOffset = function onChangeOffset(value) {\n\t\t\tprops.setAttributes({ offset: Number(value) });\n\t\t};\n\t\tvar toggleFeedTitle = function toggleFeedTitle(value) {\n\t\t\tprops.setAttributes({ feed_title: !props.attributes.feed_title });\n\t\t};\n\t\tvar onRefresh = function onRefresh(value) {\n\t\t\tprops.setAttributes({ refresh: value });\n\t\t};\n\t\tvar onSort = function onSort(value) {\n\t\t\tprops.setAttributes({ sort: value });\n\t\t};\n\t\tvar onTarget = function onTarget(value) {\n\t\t\tprops.setAttributes({ target: value });\n\t\t};\n\t\tvar onTitle = function onTitle(value) {\n\t\t\tprops.setAttributes({ title: Number(value) });\n\t\t};\n\t\tvar changeMeta = function changeMeta(value) {\n\t\t\tprops.setAttributes({ metafields: value });\n\t\t};\n\t\tvar changeMultipleMeta = function changeMultipleMeta(value) {\n\t\t\tprops.setAttributes({ multiple_meta: value });\n\t\t};\n\t\tvar toggleSummary = function toggleSummary(value) {\n\t\t\tprops.setAttributes({ summary: !props.attributes.summary });\n\t\t};\n\t\tvar toggleLazy = function toggleLazy(value) {\n\t\t\tprops.setAttributes({ lazy: !props.attributes.lazy });\n\t\t};\n\t\tvar onSummaryLength = function onSummaryLength(value) {\n\t\t\tprops.setAttributes({ summarylength: Number(value) });\n\t\t};\n\t\tvar onKeywordsTitle = function onKeywordsTitle(value) {\n\t\t\tprops.setAttributes({ keywords_title: value });\n\t\t};\n\t\tvar onKeywordsBan = function onKeywordsBan(value) {\n\t\t\tprops.setAttributes({ keywords_ban: value });\n\t\t};\n\t\tvar onThumb = function onThumb(value) {\n\t\t\tprops.setAttributes({ thumb: value });\n\t\t};\n\t\tvar onDefault = function onDefault(value) {\n\t\t\tprops.setAttributes({ default: value });\n\t\t};\n\t\tvar onSize = function onSize(value) {\n\t\t\tprops.setAttributes({ size: !value ? 150 : Number(value) });\n\t\t};\n\t\tvar onReferralURL = function onReferralURL(value) {\n\t\t\tprops.setAttributes({ referral_url: value });\n\t\t};\n\t\tvar onColumns = function onColumns(value) {\n\t\t\tprops.setAttributes({ columns: value });\n\t\t};\n\t\tvar onTemplate = function onTemplate(value) {\n\t\t\tprops.setAttributes({ template: value });\n\t\t};\n\t\tvar togglePrice = function togglePrice(value) {\n\t\t\tprops.setAttributes({ price: !props.attributes.price });\n\t\t};\n\t\tvar loadFeed = function loadFeed() {\n\t\t\tprops.setAttributes({ status: 1 });\n\n\t\t\tvar url = props.attributes.feeds;\n\n\t\t\tif (url === undefined) {\n\t\t\t\treturn props.setAttributes({ status: 3 });\n\t\t\t}\n\n\t\t\tif (Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"c\" /* inArray */])(url, props.attributes.categories)) {\n\t\t\t\tvar category = url;\n\t\t\t\turl = __WEBPACK_IMPORTED_MODULE_2_query_string___default.a.stringify({ category: category }, { arrayFormat: 'bracket' });\n\t\t\t} else {\n\t\t\t\turl = url.replace(/\\s/g, '').split(',').filter(function (item) {\n\t\t\t\t\treturn item !== '';\n\t\t\t\t});\n\t\t\t\turl = __WEBPACK_IMPORTED_MODULE_2_query_string___default.a.stringify({ url: url }, { arrayFormat: 'bracket' });\n\t\t\t}\n\n\t\t\twp.apiRequest({ path: '/feedzy/v1/feed?' + url }).then(function (data) {\n\t\t\t\tif (_this.unmounting) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\tif (!data['error']) {\n\t\t\t\t\tprops.setAttributes({ feedData: data });\n\t\t\t\t\tprops.setAttributes({ status: 2 });\n\t\t\t\t\treturn data;\n\t\t\t\t} else {\n\t\t\t\t\tprops.setAttributes({ status: 3 });\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}).fail(function (err) {\n\t\t\t\tprops.setAttributes({ status: 3 });\n\t\t\t\treturn err;\n\t\t\t});\n\t\t};\n\t\tvar loadCategories = function loadCategories() {\n\t\t\twp.apiRequest({ path: '/wp/v2/feedzy_categories' }).then(function (data) {\n\t\t\t\tif (_this.unmounting) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\tvar i = 0;\n\t\t\t\tvar categories = [];\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tcategories[i] = item.slug;\n\t\t\t\t\ti = i + 1;\n\t\t\t\t});\n\t\t\t\tprops.setAttributes({ categories: categories });\n\t\t\t\tjQuery('.feedzy-source input').autocomplete({\n\t\t\t\t\tsource: categories,\n\t\t\t\t\tselect: function select(event, ui) {\n\t\t\t\t\t\tprops.setAttributes({ feeds: ui.item.label });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).fail(function (err) {\n\t\t\t\treturn err;\n\t\t\t});\n\t\t};\n\t\tvar metaExists = function metaExists(value) {\n\t\t\treturn 0 <= props.attributes.metafields.replace(/\\s/g, '').split(',').indexOf(value) || '' === props.attributes.metafields;\n\t\t};\n\t\tvar multipleMetaExists = function multipleMetaExists(value) {\n\t\t\treturn 0 <= props.attributes.multiple_meta.replace(/\\s/g, '').split(',').indexOf(value) || '' === props.attributes.multiple_meta;\n\t\t};\n\t\tif (props.attributes.categories === undefined) {\n\t\t\tif (!props.attributes.meta) {\n\t\t\t\tprops.setAttributes({\n\t\t\t\t\tmeta: true,\n\t\t\t\t\tmetafields: 'no'\n\t\t\t\t});\n\t\t\t}\n\t\t\tloadCategories();\n\t\t}\n\t\treturn [\n\t\t// Inspector\n\t\t!!props.isSelected && wp.element.createElement(__WEBPACK_IMPORTED_MODULE_4__inspector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({ onChangeFeeds: onChangeFeeds, onChangeMax: onChangeMax, onChangeOffset: onChangeOffset, toggleFeedTitle: toggleFeedTitle, onRefresh: onRefresh, onSort: onSort, onTarget: onTarget, onTitle: onTitle, changeMeta: changeMeta, changeMultipleMeta: changeMultipleMeta, toggleSummary: toggleSummary, toggleLazy: toggleLazy, onSummaryLength: onSummaryLength, onKeywordsTitle: onKeywordsTitle, onKeywordsBan: onKeywordsBan, onThumb: onThumb, onDefault: onDefault, onSize: onSize, onReferralURL: onReferralURL, onColumns: onColumns, onTemplate: onTemplate, togglePrice: togglePrice, loadFeed: loadFeed }, props)), props.attributes.status !== 2 && wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: props.className },\n\t\t\twp.element.createElement(\n\t\t\t\tPlaceholder,\n\t\t\t\t{\n\t\t\t\t\tkey: 'placeholder',\n\t\t\t\t\ticon: 'rss',\n\t\t\t\t\tlabel: __('Feedzy RSS Feeds')\n\t\t\t\t},\n\t\t\t\tprops.attributes.status === 1 ? wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ key: 'loading', className: 'wp-block-embed is-loading' },\n\t\t\t\t\twp.element.createElement(Spinner, null),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t__('Fetching…')\n\t\t\t\t\t)\n\t\t\t\t) : [wp.element.createElement(TextControl, {\n\t\t\t\t\ttype: 'url',\n\t\t\t\t\tclassName: 'feedzy-source',\n\t\t\t\t\tplaceholder: __('Enter URL or category of your feed here…'),\n\t\t\t\t\tonChange: onChangeFeeds,\n\t\t\t\t\tvalue: props.attributes.feeds\n\t\t\t\t}), wp.element.createElement(\n\t\t\t\t\tButton,\n\t\t\t\t\t{\n\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\ttype: 'submit',\n\t\t\t\t\t\tonClick: loadFeed\n\t\t\t\t\t},\n\t\t\t\t\t__('Load Feed')\n\t\t\t\t), props.attributes.status === 3 && wp.element.createElement(\n\t\t\t\t\t'span',\n\t\t\t\t\tnull,\n\t\t\t\t\t__('Feed URL Invalid')\n\t\t\t\t), wp.element.createElement(\n\t\t\t\t\t'span',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tExternalLink,\n\t\t\t\t\t\t{ href: 'https://validator.w3.org/feed/' },\n\t\t\t\t\t\t__('Click here to check if feed is valid. ')\n\t\t\t\t\t),\n\t\t\t\t\t__('Invalid feeds will NOT display items.')\n\t\t\t\t)]\n\t\t\t)\n\t\t), !!(props.attributes.status === 2 && props.attributes.feedData !== undefined) && wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: 'feedzy-rss' },\n\t\t\tprops.attributes.feed_title && props.attributes.feedData['channel'] !== null && wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'rss_header' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'h2',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t{ className: 'rss_title' },\n\t\t\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(props.attributes.feedData['channel']['title'])\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'span',\n\t\t\t\t\t\t{ className: 'rss_description' },\n\t\t\t\t\t\t' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(props.attributes.feedData['channel']['description'])\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'ul',\n\t\t\t\t{ className: 'feedzy-' + props.attributes.template },\n\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"b\" /* filterData */])(props.attributes.feedData['items'], props.attributes.sort, props.attributes.keywords_title, props.attributes.keywords_ban, props.attributes.max, props.attributes.offset).map(function (item, i) {\n\t\t\t\t\tvar itemDateTime = (item['date'] || '') + ' ' + (item['time'] || '') + ' UTC +0000';\n\t\t\t\t\tvar itemDate = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['date']) || '';\n\t\t\t\t\tvar itemTime = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['time']) || '';\n\t\t\t\t\tvar categories = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['categories']) || '';\n\t\t\t\t\tif (metaExists('tz=local')) {\n\t\t\t\t\t\titemDate = date('F jS, \\o', itemDateTime);\n\t\t\t\t\t\titemTime = date('h:i A', itemDateTime);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar author = item['creator'] && metaExists('author') ? item['creator'] : '';\n\t\t\t\t\tif (props.attributes.multiple_meta !== '' && props.attributes.multiple_meta !== 'no') {\n\t\t\t\t\t\tif ((multipleMetaExists('source') || multipleMetaExists('yes')) && author !== '' && item['source'] !== '') {\n\t\t\t\t\t\t\tauthor = author + ' (' + item['source'] + ')';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta_values = new Object();\n\t\t\t\t\tmeta_values['author'] = __('by') + ' ' + author;\n\t\t\t\t\tmeta_values['date'] = __('on') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(itemDate);\n\t\t\t\t\tmeta_values['time'] = __('at') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(itemTime);\n\t\t\t\t\tmeta_values['categories'] = __('in') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(categories);\n\n\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t{ key: i, style: { padding: '15px 0 25px' }, className: 'rss_item feedzy-rss-col-' + props.attributes.columns },\n\t\t\t\t\t\t(item['thumbnail'] && props.attributes.thumb === 'auto' || props.attributes.thumb === 'yes') && wp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'rss_image', style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px' } },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t{ title: Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']), style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px' } },\n\t\t\t\t\t\t\t\twp.element.createElement('span', { className: 'fetched', style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px', backgroundImage: 'url(' + (item['thumbnail'] ? item['thumbnail'] : props.attributes.default ? props.attributes.default.url : feedzyjs.imagepath + 'feedzy-default.jpg') + ')' }, title: Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']) })\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'rss_content_wrap' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t{ className: 'title' },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\tprops.attributes.title && Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']).length > props.attributes.title ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']).substring(0, props.attributes.title) + '...' : Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title'])\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'rss_content' },\n\t\t\t\t\t\t\t\tprops.attributes.metafields !== 'no' && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'small',\n\t\t\t\t\t\t\t\t\t{ className: 'meta' },\n\t\t\t\t\t\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"a\" /* arrangeMeta */])(meta_values, props.attributes.metafields)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tprops.attributes.summary && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\t\t\t{ className: 'description' },\n\t\t\t\t\t\t\t\t\tprops.attributes.summarylength && Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description']).length > props.attributes.summarylength ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description']).substring(0, props.attributes.summarylength) + ' […]' : Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description'])\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfeedzyjs.isPro && item['media'] && item['media']['src'] && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'audio',\n\t\t\t\t\t\t\t\t\t{ controls: true, controlsList: 'nodownload' },\n\t\t\t\t\t\t\t\t\twp.element.createElement('source', { src: item['media']['src'], type: item['media']['type'] }),\n\t\t\t\t\t\t\t\t\t__('Your browser does not support the audio element. But you can check this for the original link: '),\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t\t{ href: item['media']['src'] },\n\t\t\t\t\t\t\t\t\t\titem['media']['src']\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfeedzyjs.isPro && props.attributes.price && item['price'] && props.attributes.template !== 'default' && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'price-wrap' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t\t{ className: 'price' },\n\t\t\t\t\t\t\t\t\t\t\titem['price']\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t)\n\t\t)];\n\t},\n\tsave: function save() {\n\t\t// Rendering in PHP\n\t\treturn null;\n\t}\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2Jsb2NrLmpzPzUxZTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9leHRlbmRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzJztcblxudmFyIF90aGlzID0gdGhpcztcblxuLy8ganNoaW50IGlnbm9yZTogc3RhcnRcblxuLyoqXHJcbiAqIEJsb2NrIGRlcGVuZGVuY2llc1xyXG4gKi9cbmltcG9ydCAnLi9zdHlsZS5zY3NzJztcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxdWVyeS1zdHJpbmcnO1xuaW1wb3J0IGJsb2NrQXR0cmlidXRlcyBmcm9tICcuL2F0dHJpYnV0ZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5pbXBvcnQgeyB1bmVzY2FwZUhUTUwsIGZpbHRlckRhdGEsIGluQXJyYXksIGFycmFuZ2VNZXRhIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxyXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcclxuICovXG52YXIgX18gPSB3cC5pMThuLl9fO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBFeHRlcm5hbExpbmsgPSBfd3AkY29tcG9uZW50cy5FeHRlcm5hbExpbmssXG4gICAgUGxhY2Vob2xkZXIgPSBfd3AkY29tcG9uZW50cy5QbGFjZWhvbGRlcixcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sLFxuICAgIEJ1dHRvbiA9IF93cCRjb21wb25lbnRzLkJ1dHRvbixcbiAgICBTcGlubmVyID0gX3dwJGNvbXBvbmVudHMuU3Bpbm5lcjtcbnZhciBkYXRlID0gd3AuZGF0ZS5kYXRlO1xuXG4vKipcclxuICogUmVnaXN0ZXIgYmxvY2tcclxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyQmxvY2tUeXBlKCdmZWVkenktcnNzLWZlZWRzL2ZlZWR6eS1ibG9jaycsIHtcblx0dGl0bGU6IF9fKCdGZWVkenkgUlNTIEZlZWRzJyksXG5cdGNhdGVnb3J5OiAnY29tbW9uJyxcblx0aWNvbjogJ3JzcycsXG5cdGtleXdvcmRzOiBbX18oJ0ZlZWR6eSBSU1MgRmVlZHMnKSwgX18oJ1JTUycpLCBfXygnRmVlZHMnKV0sXG5cdHN1cHBvcnRzOiB7XG5cdFx0aHRtbDogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczogYmxvY2tBdHRyaWJ1dGVzLFxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIG9uQ2hhbmdlRmVlZHMgPSBmdW5jdGlvbiBvbkNoYW5nZUZlZWRzKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZHM6IHZhbHVlIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uQ2hhbmdlTWF4ID0gZnVuY3Rpb24gb25DaGFuZ2VNYXgodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBtYXg6ICF2YWx1ZSA/IDUgOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uQ2hhbmdlT2Zmc2V0ID0gZnVuY3Rpb24gb25DaGFuZ2VPZmZzZXQodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBvZmZzZXQ6IE51bWJlcih2YWx1ZSkgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlRmVlZFRpdGxlID0gZnVuY3Rpb24gdG9nZ2xlRmVlZFRpdGxlKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZF90aXRsZTogIXByb3BzLmF0dHJpYnV0ZXMuZmVlZF90aXRsZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblJlZnJlc2ggPSBmdW5jdGlvbiBvblJlZnJlc2godmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyByZWZyZXNoOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblNvcnQgPSBmdW5jdGlvbiBvblNvcnQodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzb3J0OiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRhcmdldCA9IGZ1bmN0aW9uIG9uVGFyZ2V0KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgdGFyZ2V0OiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRpdGxlID0gZnVuY3Rpb24gb25UaXRsZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHRpdGxlOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIGNoYW5nZU1ldGEgPSBmdW5jdGlvbiBjaGFuZ2VNZXRhKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbWV0YWZpZWxkczogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgY2hhbmdlTXVsdGlwbGVNZXRhID0gZnVuY3Rpb24gY2hhbmdlTXVsdGlwbGVNZXRhKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbXVsdGlwbGVfbWV0YTogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlU3VtbWFyeSA9IGZ1bmN0aW9uIHRvZ2dsZVN1bW1hcnkodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzdW1tYXJ5OiAhcHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5IH0pO1xuXHRcdH07XG5cdFx0dmFyIHRvZ2dsZUxhenkgPSBmdW5jdGlvbiB0b2dnbGVMYXp5KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbGF6eTogIXByb3BzLmF0dHJpYnV0ZXMubGF6eSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblN1bW1hcnlMZW5ndGggPSBmdW5jdGlvbiBvblN1bW1hcnlMZW5ndGgodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzdW1tYXJ5bGVuZ3RoOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uS2V5d29yZHNUaXRsZSA9IGZ1bmN0aW9uIG9uS2V5d29yZHNUaXRsZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGtleXdvcmRzX3RpdGxlOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvbktleXdvcmRzQmFuID0gZnVuY3Rpb24gb25LZXl3b3Jkc0Jhbih2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGtleXdvcmRzX2JhbjogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25UaHVtYiA9IGZ1bmN0aW9uIG9uVGh1bWIodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyB0aHVtYjogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25EZWZhdWx0ID0gZnVuY3Rpb24gb25EZWZhdWx0KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZGVmYXVsdDogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25TaXplID0gZnVuY3Rpb24gb25TaXplKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc2l6ZTogIXZhbHVlID8gMTUwIDogTnVtYmVyKHZhbHVlKSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblJlZmVycmFsVVJMID0gZnVuY3Rpb24gb25SZWZlcnJhbFVSTCh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHJlZmVycmFsX3VybDogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25Db2x1bW5zID0gZnVuY3Rpb24gb25Db2x1bW5zKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY29sdW1uczogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25UZW1wbGF0ZSA9IGZ1bmN0aW9uIG9uVGVtcGxhdGUodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyB0ZW1wbGF0ZTogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlUHJpY2UgPSBmdW5jdGlvbiB0b2dnbGVQcmljZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHByaWNlOiAhcHJvcHMuYXR0cmlidXRlcy5wcmljZSB9KTtcblx0XHR9O1xuXHRcdHZhciBsb2FkRmVlZCA9IGZ1bmN0aW9uIGxvYWRGZWVkKCkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMSB9KTtcblxuXHRcdFx0dmFyIHVybCA9IHByb3BzLmF0dHJpYnV0ZXMuZmVlZHM7XG5cblx0XHRcdGlmICh1cmwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRyZXR1cm4gcHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMyB9KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGluQXJyYXkodXJsLCBwcm9wcy5hdHRyaWJ1dGVzLmNhdGVnb3JpZXMpKSB7XG5cdFx0XHRcdHZhciBjYXRlZ29yeSA9IHVybDtcblx0XHRcdFx0dXJsID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KHsgY2F0ZWdvcnk6IGNhdGVnb3J5IH0sIHsgYXJyYXlGb3JtYXQ6ICdicmFja2V0JyB9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHVybCA9IHVybC5yZXBsYWNlKC9cXHMvZywgJycpLnNwbGl0KCcsJykuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGl0ZW0gIT09ICcnO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dXJsID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KHsgdXJsOiB1cmwgfSwgeyBhcnJheUZvcm1hdDogJ2JyYWNrZXQnIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHR3cC5hcGlSZXF1ZXN0KHsgcGF0aDogJy9mZWVkenkvdjEvZmVlZD8nICsgdXJsIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcblx0XHRcdFx0aWYgKF90aGlzLnVubW91bnRpbmcpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWRhdGFbJ2Vycm9yJ10pIHtcblx0XHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZERhdGE6IGRhdGEgfSk7XG5cdFx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMiB9KTtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc3RhdHVzOiAzIH0pO1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5mYWlsKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMyB9KTtcblx0XHRcdFx0cmV0dXJuIGVycjtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0dmFyIGxvYWRDYXRlZ29yaWVzID0gZnVuY3Rpb24gbG9hZENhdGVnb3JpZXMoKSB7XG5cdFx0XHR3cC5hcGlSZXF1ZXN0KHsgcGF0aDogJy93cC92Mi9mZWVkenlfY2F0ZWdvcmllcycgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuXHRcdFx0XHRpZiAoX3RoaXMudW5tb3VudGluZykge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBpID0gMDtcblx0XHRcdFx0dmFyIGNhdGVnb3JpZXMgPSBbXTtcblx0XHRcdFx0ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG5cdFx0XHRcdFx0Y2F0ZWdvcmllc1tpXSA9IGl0ZW0uc2x1Zztcblx0XHRcdFx0XHRpID0gaSArIDE7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY2F0ZWdvcmllczogY2F0ZWdvcmllcyB9KTtcblx0XHRcdFx0alF1ZXJ5KCcuZmVlZHp5LXNvdXJjZSBpbnB1dCcpLmF1dG9jb21wbGV0ZSh7XG5cdFx0XHRcdFx0c291cmNlOiBjYXRlZ29yaWVzLFxuXHRcdFx0XHRcdHNlbGVjdDogZnVuY3Rpb24gc2VsZWN0KGV2ZW50LCB1aSkge1xuXHRcdFx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGZlZWRzOiB1aS5pdGVtLmxhYmVsIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KS5mYWlsKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0cmV0dXJuIGVycjtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0dmFyIG1ldGFFeGlzdHMgPSBmdW5jdGlvbiBtZXRhRXhpc3RzKHZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gMCA8PSBwcm9wcy5hdHRyaWJ1dGVzLm1ldGFmaWVsZHMucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpLmluZGV4T2YodmFsdWUpIHx8ICcnID09PSBwcm9wcy5hdHRyaWJ1dGVzLm1ldGFmaWVsZHM7XG5cdFx0fTtcblx0XHR2YXIgbXVsdGlwbGVNZXRhRXhpc3RzID0gZnVuY3Rpb24gbXVsdGlwbGVNZXRhRXhpc3RzKHZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gMCA8PSBwcm9wcy5hdHRyaWJ1dGVzLm11bHRpcGxlX21ldGEucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpLmluZGV4T2YodmFsdWUpIHx8ICcnID09PSBwcm9wcy5hdHRyaWJ1dGVzLm11bHRpcGxlX21ldGE7XG5cdFx0fTtcblx0XHRpZiAocHJvcHMuYXR0cmlidXRlcy5jYXRlZ29yaWVzID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICghcHJvcHMuYXR0cmlidXRlcy5tZXRhKSB7XG5cdFx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoe1xuXHRcdFx0XHRcdG1ldGE6IHRydWUsXG5cdFx0XHRcdFx0bWV0YWZpZWxkczogJ25vJ1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGxvYWRDYXRlZ29yaWVzKCk7XG5cdFx0fVxuXHRcdHJldHVybiBbXG5cdFx0Ly8gSW5zcGVjdG9yXG5cdFx0ISFwcm9wcy5pc1NlbGVjdGVkICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChJbnNwZWN0b3IsIF9leHRlbmRzKHsgb25DaGFuZ2VGZWVkczogb25DaGFuZ2VGZWVkcywgb25DaGFuZ2VNYXg6IG9uQ2hhbmdlTWF4LCBvbkNoYW5nZU9mZnNldDogb25DaGFuZ2VPZmZzZXQsIHRvZ2dsZUZlZWRUaXRsZTogdG9nZ2xlRmVlZFRpdGxlLCBvblJlZnJlc2g6IG9uUmVmcmVzaCwgb25Tb3J0OiBvblNvcnQsIG9uVGFyZ2V0OiBvblRhcmdldCwgb25UaXRsZTogb25UaXRsZSwgY2hhbmdlTWV0YTogY2hhbmdlTWV0YSwgY2hhbmdlTXVsdGlwbGVNZXRhOiBjaGFuZ2VNdWx0aXBsZU1ldGEsIHRvZ2dsZVN1bW1hcnk6IHRvZ2dsZVN1bW1hcnksIHRvZ2dsZUxhenk6IHRvZ2dsZUxhenksIG9uU3VtbWFyeUxlbmd0aDogb25TdW1tYXJ5TGVuZ3RoLCBvbktleXdvcmRzVGl0bGU6IG9uS2V5d29yZHNUaXRsZSwgb25LZXl3b3Jkc0Jhbjogb25LZXl3b3Jkc0Jhbiwgb25UaHVtYjogb25UaHVtYiwgb25EZWZhdWx0OiBvbkRlZmF1bHQsIG9uU2l6ZTogb25TaXplLCBvblJlZmVycmFsVVJMOiBvblJlZmVycmFsVVJMLCBvbkNvbHVtbnM6IG9uQ29sdW1ucywgb25UZW1wbGF0ZTogb25UZW1wbGF0ZSwgdG9nZ2xlUHJpY2U6IHRvZ2dsZVByaWNlLCBsb2FkRmVlZDogbG9hZEZlZWQgfSwgcHJvcHMpKSwgcHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgIT09IDIgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0J2RpdicsXG5cdFx0XHR7IGNsYXNzTmFtZTogcHJvcHMuY2xhc3NOYW1lIH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBsYWNlaG9sZGVyLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiAncGxhY2Vob2xkZXInLFxuXHRcdFx0XHRcdGljb246ICdyc3MnLFxuXHRcdFx0XHRcdGxhYmVsOiBfXygnRmVlZHp5IFJTUyBGZWVkcycpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuc3RhdHVzID09PSAxID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdHsga2V5OiAnbG9hZGluZycsIGNsYXNzTmFtZTogJ3dwLWJsb2NrLWVtYmVkIGlzLWxvYWRpbmcnIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNwaW5uZXIsIG51bGwpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdwJyxcblx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRfXygnRmV0Y2hpbmfigKYnKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSA6IFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHR0eXBlOiAndXJsJyxcblx0XHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktc291cmNlJyxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcjogX18oJ0VudGVyIFVSTCBvciBjYXRlZ29yeSBvZiB5b3VyIGZlZWQgaGVyZeKApicpLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBvbkNoYW5nZUZlZWRzLFxuXHRcdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLmZlZWRzXG5cdFx0XHRcdH0pLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0QnV0dG9uLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0XHRcdG9uQ2xpY2s6IGxvYWRGZWVkXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRfXygnTG9hZCBGZWVkJylcblx0XHRcdFx0KSwgcHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgPT09IDMgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdzcGFuJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdF9fKCdGZWVkIFVSTCBJbnZhbGlkJylcblx0XHRcdFx0KSwgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdzcGFuJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdEV4dGVybmFsTGluayxcblx0XHRcdFx0XHRcdHsgaHJlZjogJ2h0dHBzOi8vdmFsaWRhdG9yLnczLm9yZy9mZWVkLycgfSxcblx0XHRcdFx0XHRcdF9fKCdDbGljayBoZXJlIHRvIGNoZWNrIGlmIGZlZWQgaXMgdmFsaWQuICcpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRfXygnSW52YWxpZCBmZWVkcyB3aWxsIE5PVCBkaXNwbGF5IGl0ZW1zLicpXG5cdFx0XHRcdCldXG5cdFx0XHQpXG5cdFx0KSwgISEocHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgPT09IDIgJiYgcHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YSAhPT0gdW5kZWZpbmVkKSAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHQnZGl2Jyxcblx0XHRcdHsgY2xhc3NOYW1lOiAnZmVlZHp5LXJzcycgfSxcblx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuZmVlZF90aXRsZSAmJiBwcm9wcy5hdHRyaWJ1dGVzLmZlZWREYXRhWydjaGFubmVsJ10gIT09IG51bGwgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0eyBjbGFzc05hbWU6ICdyc3NfaGVhZGVyJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J2gyJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdhJyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAncnNzX3RpdGxlJyB9LFxuXHRcdFx0XHRcdFx0dW5lc2NhcGVIVE1MKHByb3BzLmF0dHJpYnV0ZXMuZmVlZERhdGFbJ2NoYW5uZWwnXVsndGl0bGUnXSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdzcGFuJyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAncnNzX2Rlc2NyaXB0aW9uJyB9LFxuXHRcdFx0XHRcdFx0JyAnICsgdW5lc2NhcGVIVE1MKHByb3BzLmF0dHJpYnV0ZXMuZmVlZERhdGFbJ2NoYW5uZWwnXVsnZGVzY3JpcHRpb24nXSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdCd1bCcsXG5cdFx0XHRcdHsgY2xhc3NOYW1lOiAnZmVlZHp5LScgKyBwcm9wcy5hdHRyaWJ1dGVzLnRlbXBsYXRlIH0sXG5cdFx0XHRcdGZpbHRlckRhdGEocHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YVsnaXRlbXMnXSwgcHJvcHMuYXR0cmlidXRlcy5zb3J0LCBwcm9wcy5hdHRyaWJ1dGVzLmtleXdvcmRzX3RpdGxlLCBwcm9wcy5hdHRyaWJ1dGVzLmtleXdvcmRzX2JhbiwgcHJvcHMuYXR0cmlidXRlcy5tYXgsIHByb3BzLmF0dHJpYnV0ZXMub2Zmc2V0KS5tYXAoZnVuY3Rpb24gKGl0ZW0sIGkpIHtcblx0XHRcdFx0XHR2YXIgaXRlbURhdGVUaW1lID0gKGl0ZW1bJ2RhdGUnXSB8fCAnJykgKyAnICcgKyAoaXRlbVsndGltZSddIHx8ICcnKSArICcgVVRDICswMDAwJztcblx0XHRcdFx0XHR2YXIgaXRlbURhdGUgPSB1bmVzY2FwZUhUTUwoaXRlbVsnZGF0ZSddKSB8fCAnJztcblx0XHRcdFx0XHR2YXIgaXRlbVRpbWUgPSB1bmVzY2FwZUhUTUwoaXRlbVsndGltZSddKSB8fCAnJztcblx0XHRcdFx0XHR2YXIgY2F0ZWdvcmllcyA9IHVuZXNjYXBlSFRNTChpdGVtWydjYXRlZ29yaWVzJ10pIHx8ICcnO1xuXHRcdFx0XHRcdGlmIChtZXRhRXhpc3RzKCd0ej1sb2NhbCcpKSB7XG5cdFx0XHRcdFx0XHRpdGVtRGF0ZSA9IGRhdGUoJ0YgalMsIFxcbycsIGl0ZW1EYXRlVGltZSk7XG5cdFx0XHRcdFx0XHRpdGVtVGltZSA9IGRhdGUoJ2g6aSBBJywgaXRlbURhdGVUaW1lKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR2YXIgYXV0aG9yID0gaXRlbVsnY3JlYXRvciddICYmIG1ldGFFeGlzdHMoJ2F1dGhvcicpID8gaXRlbVsnY3JlYXRvciddIDogJyc7XG5cdFx0XHRcdFx0aWYgKHByb3BzLmF0dHJpYnV0ZXMubXVsdGlwbGVfbWV0YSAhPT0gJycgJiYgcHJvcHMuYXR0cmlidXRlcy5tdWx0aXBsZV9tZXRhICE9PSAnbm8nKSB7XG5cdFx0XHRcdFx0XHRpZiAoKG11bHRpcGxlTWV0YUV4aXN0cygnc291cmNlJykgfHwgbXVsdGlwbGVNZXRhRXhpc3RzKCd5ZXMnKSkgJiYgYXV0aG9yICE9PSAnJyAmJiBpdGVtWydzb3VyY2UnXSAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0YXV0aG9yID0gYXV0aG9yICsgJyAoJyArIGl0ZW1bJ3NvdXJjZSddICsgJyknO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHZhciBtZXRhX3ZhbHVlcyA9IG5ldyBPYmplY3QoKTtcblx0XHRcdFx0XHRtZXRhX3ZhbHVlc1snYXV0aG9yJ10gPSBfXygnYnknKSArICcgJyArIGF1dGhvcjtcblx0XHRcdFx0XHRtZXRhX3ZhbHVlc1snZGF0ZSddID0gX18oJ29uJykgKyAnICcgKyB1bmVzY2FwZUhUTUwoaXRlbURhdGUpO1xuXHRcdFx0XHRcdG1ldGFfdmFsdWVzWyd0aW1lJ10gPSBfXygnYXQnKSArICcgJyArIHVuZXNjYXBlSFRNTChpdGVtVGltZSk7XG5cdFx0XHRcdFx0bWV0YV92YWx1ZXNbJ2NhdGVnb3JpZXMnXSA9IF9fKCdpbicpICsgJyAnICsgdW5lc2NhcGVIVE1MKGNhdGVnb3JpZXMpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdsaScsXG5cdFx0XHRcdFx0XHR7IGtleTogaSwgc3R5bGU6IHsgcGFkZGluZzogJzE1cHggMCAyNXB4JyB9LCBjbGFzc05hbWU6ICdyc3NfaXRlbSBmZWVkenktcnNzLWNvbC0nICsgcHJvcHMuYXR0cmlidXRlcy5jb2x1bW5zIH0sXG5cdFx0XHRcdFx0XHQoaXRlbVsndGh1bWJuYWlsJ10gJiYgcHJvcHMuYXR0cmlidXRlcy50aHVtYiA9PT0gJ2F1dG8nIHx8IHByb3BzLmF0dHJpYnV0ZXMudGh1bWIgPT09ICd5ZXMnKSAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Jzc19pbWFnZScsIHN0eWxlOiB7IHdpZHRoOiBwcm9wcy5hdHRyaWJ1dGVzLnNpemUgKyAncHgnLCBoZWlnaHQ6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSArICdweCcgfSB9LFxuXHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0J2EnLFxuXHRcdFx0XHRcdFx0XHRcdHsgdGl0bGU6IHVuZXNjYXBlSFRNTChpdGVtWyd0aXRsZSddKSwgc3R5bGU6IHsgd2lkdGg6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSArICdweCcsIGhlaWdodDogcHJvcHMuYXR0cmlidXRlcy5zaXplICsgJ3B4JyB9IH0sXG5cdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJywgeyBjbGFzc05hbWU6ICdmZXRjaGVkJywgc3R5bGU6IHsgd2lkdGg6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSArICdweCcsIGhlaWdodDogcHJvcHMuYXR0cmlidXRlcy5zaXplICsgJ3B4JywgYmFja2dyb3VuZEltYWdlOiAndXJsKCcgKyAoaXRlbVsndGh1bWJuYWlsJ10gPyBpdGVtWyd0aHVtYm5haWwnXSA6IHByb3BzLmF0dHJpYnV0ZXMuZGVmYXVsdCA/IHByb3BzLmF0dHJpYnV0ZXMuZGVmYXVsdC51cmwgOiBmZWVkenlqcy5pbWFnZXBhdGggKyAnZmVlZHp5LWRlZmF1bHQuanBnJykgKyAnKScgfSwgdGl0bGU6IHVuZXNjYXBlSFRNTChpdGVtWyd0aXRsZSddKSB9KVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdyc3NfY29udGVudF93cmFwJyB9LFxuXHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0J3NwYW4nLFxuXHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAndGl0bGUnIH0sXG5cdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J2EnLFxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMudGl0bGUgJiYgdW5lc2NhcGVIVE1MKGl0ZW1bJ3RpdGxlJ10pLmxlbmd0aCA+IHByb3BzLmF0dHJpYnV0ZXMudGl0bGUgPyB1bmVzY2FwZUhUTUwoaXRlbVsndGl0bGUnXSkuc3Vic3RyaW5nKDAsIHByb3BzLmF0dHJpYnV0ZXMudGl0bGUpICsgJy4uLicgOiB1bmVzY2FwZUhUTUwoaXRlbVsndGl0bGUnXSlcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Jzc19jb250ZW50JyB9LFxuXHRcdFx0XHRcdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMubWV0YWZpZWxkcyAhPT0gJ25vJyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQnc21hbGwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdtZXRhJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0YXJyYW5nZU1ldGEobWV0YV92YWx1ZXMsIHByb3BzLmF0dHJpYnV0ZXMubWV0YWZpZWxkcylcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuc3VtbWFyeSAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQncCcsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2Rlc2NyaXB0aW9uJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5bGVuZ3RoICYmIHVuZXNjYXBlSFRNTChpdGVtWydkZXNjcmlwdGlvbiddKS5sZW5ndGggPiBwcm9wcy5hdHRyaWJ1dGVzLnN1bW1hcnlsZW5ndGggPyB1bmVzY2FwZUhUTUwoaXRlbVsnZGVzY3JpcHRpb24nXSkuc3Vic3RyaW5nKDAsIHByb3BzLmF0dHJpYnV0ZXMuc3VtbWFyeWxlbmd0aCkgKyAnIFvigKZdJyA6IHVuZXNjYXBlSFRNTChpdGVtWydkZXNjcmlwdGlvbiddKVxuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0ZmVlZHp5anMuaXNQcm8gJiYgaXRlbVsnbWVkaWEnXSAmJiBpdGVtWydtZWRpYSddWydzcmMnXSAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQnYXVkaW8nLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjb250cm9sczogdHJ1ZSwgY29udHJvbHNMaXN0OiAnbm9kb3dubG9hZCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnc291cmNlJywgeyBzcmM6IGl0ZW1bJ21lZGlhJ11bJ3NyYyddLCB0eXBlOiBpdGVtWydtZWRpYSddWyd0eXBlJ10gfSksXG5cdFx0XHRcdFx0XHRcdFx0XHRfXygnWW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGF1ZGlvIGVsZW1lbnQuIEJ1dCB5b3UgY2FuIGNoZWNrIHRoaXMgZm9yIHRoZSBvcmlnaW5hbCBsaW5rOiAnKSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2EnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGhyZWY6IGl0ZW1bJ21lZGlhJ11bJ3NyYyddIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1bJ21lZGlhJ11bJ3NyYyddXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRmZWVkenlqcy5pc1BybyAmJiBwcm9wcy5hdHRyaWJ1dGVzLnByaWNlICYmIGl0ZW1bJ3ByaWNlJ10gJiYgcHJvcHMuYXR0cmlidXRlcy50ZW1wbGF0ZSAhPT0gJ2RlZmF1bHQnICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdwcmljZS13cmFwJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnYScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnYnV0dG9uJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3ByaWNlJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1bJ3ByaWNlJ11cblx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pXG5cdFx0XHQpXG5cdFx0KV07XG5cdH0sXG5cdHNhdmU6IGZ1bmN0aW9uIHNhdmUoKSB7XG5cdFx0Ly8gUmVuZGVyaW5nIGluIFBIUFxuXHRcdHJldHVybiBudWxsO1xuXHR9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2luY2x1ZGVzL2d1dGVuYmVyZy9zcmMvYmxvY2suanNcbi8vIG1vZHVsZSBpZCA9IDI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///29\n");
246
 
247
  /***/ }),
248
  /* 30 */
363
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
364
 
365
  "use strict";
366
+ eval("// jshint ignore: start\n\nvar attributes = {\n\tfeeds: {\n\t\ttype: 'string'\n\t},\n\tmax: {\n\t\ttype: 'number',\n\t\tdefault: 5\n\t},\n\toffset: {\n\t\ttype: 'number',\n\t\tdefault: 0\n\t},\n\tfeed_title: {\n\t\ttype: 'boolean',\n\t\tdefault: true\n\t},\n\trefresh: {\n\t\ttype: 'string',\n\t\tdefault: '12_hours'\n\t},\n\tsort: {\n\t\ttype: 'string',\n\t\tdefault: 'default'\n\t},\n\ttarget: {\n\t\ttype: 'string',\n\t\tdefault: '_blank'\n\t},\n\ttitle: {\n\t\ttype: 'number'\n\t},\n\tmeta: {\n\t\ttype: 'boolean',\n\t\tdefault: true\n\t},\n\tlazy: {\n\t\ttype: 'boolean',\n\t\tdefault: false\n\t},\n\tmetafields: {\n\t\ttype: 'string',\n\t\tdefault: ''\n\t},\n\tmultiple_meta: {\n\t\ttype: 'string',\n\t\tdefault: ''\n\t},\n\tsummary: {\n\t\ttype: 'boolean',\n\t\tdefault: true\n\t},\n\tsummarylength: {\n\t\ttype: 'number'\n\t},\n\tkeywords_title: {\n\t\ttype: 'string'\n\t},\n\tkeywords_ban: {\n\t\ttype: 'string'\n\t},\n\tthumb: {\n\t\ttype: 'string',\n\t\tdefault: 'auto'\n\t},\n\tdefault: {\n\t\ttype: 'object'\n\t},\n\tsize: {\n\t\ttype: 'number',\n\t\tdefault: 150\n\t},\n\treferral_url: {\n\t\ttype: 'string'\n\t},\n\tcolumns: {\n\t\ttype: 'number',\n\t\tdefault: 1\n\t},\n\ttemplate: {\n\t\ttype: 'string',\n\t\tdefault: 'default'\n\t},\n\tprice: {\n\t\ttype: 'boolean',\n\t\tdefault: true\n\t},\n\tstatus: {\n\t\t// 0 - Initial State\n\t\t// 1 - Feed Loading\n\t\t// 2 - Feed Loaded\n\t\t// 3 - Feed Invalid\n\t\ttype: 'number',\n\t\tdefault: 0\n\t},\n\tfeedData: {\n\t\ttype: 'object'\n\t},\n\tcategories: {\n\t\ttype: 'object'\n\t}\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (attributes);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2F0dHJpYnV0ZXMuanM/NmUxOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBqc2hpbnQgaWdub3JlOiBzdGFydFxuXG52YXIgYXR0cmlidXRlcyA9IHtcblx0ZmVlZHM6IHtcblx0XHR0eXBlOiAnc3RyaW5nJ1xuXHR9LFxuXHRtYXg6IHtcblx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRkZWZhdWx0OiA1XG5cdH0sXG5cdG9mZnNldDoge1xuXHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdGRlZmF1bHQ6IDBcblx0fSxcblx0ZmVlZF90aXRsZToge1xuXHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRkZWZhdWx0OiB0cnVlXG5cdH0sXG5cdHJlZnJlc2g6IHtcblx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRkZWZhdWx0OiAnMTJfaG91cnMnXG5cdH0sXG5cdHNvcnQ6IHtcblx0XHR0eXBlOiAnc3RyaW5nJyxcblx0XHRkZWZhdWx0OiAnZGVmYXVsdCdcblx0fSxcblx0dGFyZ2V0OiB7XG5cdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0ZGVmYXVsdDogJ19ibGFuaydcblx0fSxcblx0dGl0bGU6IHtcblx0XHR0eXBlOiAnbnVtYmVyJ1xuXHR9LFxuXHRtZXRhOiB7XG5cdFx0dHlwZTogJ2Jvb2xlYW4nLFxuXHRcdGRlZmF1bHQ6IHRydWVcblx0fSxcblx0bGF6eToge1xuXHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRkZWZhdWx0OiBmYWxzZVxuXHR9LFxuXHRtZXRhZmllbGRzOiB7XG5cdFx0dHlwZTogJ3N0cmluZycsXG5cdFx0ZGVmYXVsdDogJydcblx0fSxcblx0bXVsdGlwbGVfbWV0YToge1xuXHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdGRlZmF1bHQ6ICcnXG5cdH0sXG5cdHN1bW1hcnk6IHtcblx0XHR0eXBlOiAnYm9vbGVhbicsXG5cdFx0ZGVmYXVsdDogdHJ1ZVxuXHR9LFxuXHRzdW1tYXJ5bGVuZ3RoOiB7XG5cdFx0dHlwZTogJ251bWJlcidcblx0fSxcblx0a2V5d29yZHNfdGl0bGU6IHtcblx0XHR0eXBlOiAnc3RyaW5nJ1xuXHR9LFxuXHRrZXl3b3Jkc19iYW46IHtcblx0XHR0eXBlOiAnc3RyaW5nJ1xuXHR9LFxuXHR0aHVtYjoge1xuXHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdGRlZmF1bHQ6ICdhdXRvJ1xuXHR9LFxuXHRkZWZhdWx0OiB7XG5cdFx0dHlwZTogJ29iamVjdCdcblx0fSxcblx0c2l6ZToge1xuXHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdGRlZmF1bHQ6IDE1MFxuXHR9LFxuXHRyZWZlcnJhbF91cmw6IHtcblx0XHR0eXBlOiAnc3RyaW5nJ1xuXHR9LFxuXHRjb2x1bW5zOiB7XG5cdFx0dHlwZTogJ251bWJlcicsXG5cdFx0ZGVmYXVsdDogMVxuXHR9LFxuXHR0ZW1wbGF0ZToge1xuXHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdGRlZmF1bHQ6ICdkZWZhdWx0J1xuXHR9LFxuXHRwcmljZToge1xuXHRcdHR5cGU6ICdib29sZWFuJyxcblx0XHRkZWZhdWx0OiB0cnVlXG5cdH0sXG5cdHN0YXR1czoge1xuXHRcdC8vIDAgLSBJbml0aWFsIFN0YXRlXG5cdFx0Ly8gMSAtIEZlZWQgTG9hZGluZ1xuXHRcdC8vIDIgLSBGZWVkIExvYWRlZFxuXHRcdC8vIDMgLSBGZWVkIEludmFsaWRcblx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRkZWZhdWx0OiAwXG5cdH0sXG5cdGZlZWREYXRhOiB7XG5cdFx0dHlwZTogJ29iamVjdCdcblx0fSxcblx0Y2F0ZWdvcmllczoge1xuXHRcdHR5cGU6ICdvYmplY3QnXG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGF0dHJpYnV0ZXM7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2F0dHJpYnV0ZXMuanNcbi8vIG1vZHVsZSBpZCA9IDQ4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///48\n");
367
 
368
  /***/ }),
369
  /* 49 */
370
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
371
 
372
  "use strict";
373
+ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__radio_image_control___ = __webpack_require__(50);\n// jshint ignore: start\n\n/**\r\n * Block dependencies\r\n */\n\n\n/**\r\n * Internal block libraries\r\n */\nvar __ = wp.i18n.__;\n\nvar _ref = wp.blockEditor || wp.editor,\n InspectorControls = _ref.InspectorControls,\n MediaUpload = _ref.MediaUpload;\n\nvar _wp$components = wp.components,\n BaseControl = _wp$components.BaseControl,\n ExternalLink = _wp$components.ExternalLink,\n PanelBody = _wp$components.PanelBody,\n RangeControl = _wp$components.RangeControl,\n TextControl = _wp$components.TextControl,\n Button = _wp$components.Button,\n ToggleControl = _wp$components.ToggleControl,\n SelectControl = _wp$components.SelectControl,\n ResponsiveWrapper = _wp$components.ResponsiveWrapper;\n\n/**\r\n* Create an Inspector Controls wrapper Component\r\n*/\n\nvar Inspector = function Inspector(props) {\n\treturn wp.element.createElement(\n\t\tInspectorControls,\n\t\t{ key: 'inspector' },\n\t\tprops.attributes.status !== 0 && wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\tnull,\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Feed Source'),\n\t\t\t\tclassName: 'feedzy-source',\n\t\t\t\tvalue: props.attributes.feeds,\n\t\t\t\tonChange: props.onChangeFeeds\n\t\t\t}),\n\t\t\twp.element.createElement(\n\t\t\t\tButton,\n\t\t\t\t{\n\t\t\t\t\tisLarge: true,\n\t\t\t\t\ttype: 'submit',\n\t\t\t\t\tonClick: props.loadFeed,\n\t\t\t\t\tclassName: 'loadFeed'\n\t\t\t\t},\n\t\t\t\t__('Load Feed')\n\t\t\t)\n\t\t),\n\t\tprops.attributes.status === 2 && [wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{\n\t\t\t\ttitle: __('Feed Settings'),\n\t\t\t\tinitialOpen: true,\n\t\t\t\tclassName: 'feedzy-options'\n\t\t\t},\n\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\tlabel: __('Number of Items'),\n\t\t\t\tvalue: Number(props.attributes.max) || 5,\n\t\t\t\tonChange: props.onChangeMax,\n\t\t\t\tmin: 1,\n\t\t\t\tmax: props.attributes.feedData['items'].length || 10,\n\t\t\t\tbeforeIcon: 'sort',\n\t\t\t\tclassName: 'feedzy-max'\n\t\t\t}),\n\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\tlabel: __('Ignore first N items'),\n\t\t\t\tvalue: Number(props.attributes.offset) || 0,\n\t\t\t\tonChange: props.onChangeOffset,\n\t\t\t\tmin: 0,\n\t\t\t\tmax: props.attributes.feedData['items'].length,\n\t\t\t\tbeforeIcon: 'sort',\n\t\t\t\tclassName: 'feedzy-offset'\n\t\t\t}),\n\t\t\tprops.attributes.feedData['channel'] !== null && wp.element.createElement(ToggleControl, {\n\t\t\t\tlabel: __('Display feed title?'),\n\t\t\t\tchecked: !!props.attributes.feed_title,\n\t\t\t\tonChange: props.toggleFeedTitle,\n\t\t\t\tclassName: 'feedzy-title'\n\t\t\t}),\n\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\tlabel: __('Lazy load feed?'),\n\t\t\t\tchecked: !!props.attributes.lazy,\n\t\t\t\tonChange: props.toggleLazy,\n\t\t\t\tclassName: 'feedzy-lazy',\n\t\t\t\thelp: __('Only on the front end.')\n\t\t\t}),\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tlabel: __('Feed Caching Time'),\n\t\t\t\tvalue: props.attributes.refresh,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('1 Hour'),\n\t\t\t\t\tvalue: '1_hours'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('2 Hours'),\n\t\t\t\t\tvalue: '3_hours'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('12 Hours'),\n\t\t\t\t\tvalue: '12_hours'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('1 Day'),\n\t\t\t\t\tvalue: '1_days'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('3 Days'),\n\t\t\t\t\tvalue: '3_days'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('15 Days'),\n\t\t\t\t\tvalue: '15_days'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onRefresh,\n\t\t\t\tclassName: 'feedzy-refresh'\n\t\t\t}),\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tlabel: __('Sorting Order'),\n\t\t\t\tvalue: props.attributes.sort,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Default'),\n\t\t\t\t\tvalue: 'default'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Date Descending'),\n\t\t\t\t\tvalue: 'date_desc'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Date Ascending'),\n\t\t\t\t\tvalue: 'date_asc'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Title Descending'),\n\t\t\t\t\tvalue: 'title_desc'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Title Ascending'),\n\t\t\t\t\tvalue: 'title_asc'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onSort,\n\t\t\t\tclassName: 'feedzy-sort'\n\t\t\t})\n\t\t), wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{ title: __('Item Options'), initialOpen: false, className: 'feedzy-item-options' },\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tlabel: __('Open Links In'),\n\t\t\t\tvalue: props.attributes.target,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('New Tab'),\n\t\t\t\t\tvalue: '_blank'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Same Tab'),\n\t\t\t\t\tvalue: '_self'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onTarget\n\t\t\t}),\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Title Character Limit'),\n\t\t\t\thelp: __('Leave empty to show full title.'),\n\t\t\t\ttype: 'number',\n\t\t\t\tvalue: props.attributes.title,\n\t\t\t\tonChange: props.onTitle,\n\t\t\t\tclassName: 'feedzy-title-length'\n\t\t\t}),\n\t\t\twp.element.createElement(\n\t\t\t\tBaseControl,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: feedzyjs.isPro ? __('Should we display additional meta fields out of author, date, time or categories? (comma-separated list, in order of display).') : __('Should we display additional meta fields out of author, date or time? (comma-separated list, in order of display).'),\n\t\t\t\t\thelp: __('Leave empty to display all and \"no\" to display nothing.'),\n\t\t\t\t\tplaceholder: feedzyjs.isPro ? __('(eg: author, date, time, tz=local, categories)') : __('(eg: author, date, time, tz=local)'),\n\t\t\t\t\tvalue: props.attributes.metafields,\n\t\t\t\t\tonChange: props.changeMeta,\n\t\t\t\t\tclassName: 'feedzy-meta'\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: __('When using multiple sources, should we display additional meta fields? - source (comma-separated list).'),\n\t\t\t\t\tplaceholder: __('(eg: source)'),\n\t\t\t\t\tvalue: props.attributes.multiple_meta,\n\t\t\t\t\tonChange: props.changeMultipleMeta,\n\t\t\t\t\tclassName: 'feedzy-multiple-meta'\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tExternalLink,\n\t\t\t\t\t{ href: 'https://docs.themeisle.com/article/1089-how-to-display-author-date-or-time-from-the-feed' },\n\t\t\t\t\t__('You can find more info about available meta field values here.')\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\tlabel: __('Display post description?'),\n\t\t\t\tchecked: !!props.attributes.summary,\n\t\t\t\tonChange: props.toggleSummary,\n\t\t\t\tclassName: 'feedzy-summary'\n\t\t\t}),\n\t\t\tprops.attributes.summary && wp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Description Character Limit'),\n\t\t\t\thelp: __('Leave empty to show full description.'),\n\t\t\t\ttype: 'number',\n\t\t\t\tvalue: props.attributes.summarylength,\n\t\t\t\tonChange: props.onSummaryLength,\n\t\t\t\tclassName: 'feedzy-summary-length'\n\t\t\t}),\n\t\t\tfeedzyjs.isPro && [wp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Only display if title contains:'),\n\t\t\t\thelp: __('Comma-separated list/case sensitive.'),\n\t\t\t\tvalue: props.attributes.keywords_title,\n\t\t\t\tonChange: props.onKeywordsTitle,\n\t\t\t\tclassName: 'feedzy-include'\n\t\t\t}), wp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Exclude if title contains:'),\n\t\t\t\thelp: __('Comma-separated list/case sensitive.'),\n\t\t\t\tvalue: props.attributes.keywords_ban,\n\t\t\t\tonChange: props.onKeywordsBan,\n\t\t\t\tclassName: 'feedzy-ban'\n\t\t\t})]\n\t\t), wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{ title: __('Item Image Options'), initialOpen: false, className: 'feedzy-image-options' },\n\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\tlabel: __('Display first image if available?'),\n\t\t\t\tvalue: props.attributes.thumb,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Auto'),\n\t\t\t\t\tvalue: 'auto'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Yes'),\n\t\t\t\t\tvalue: 'yes'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('No'),\n\t\t\t\t\tvalue: 'no'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onThumb,\n\t\t\t\tclassName: 'feedzy-thumb'\n\t\t\t}),\n\t\t\tprops.attributes.thumb !== 'no' && [props.attributes.thumb !== 'auto' && wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'feedzy-blocks-base-control' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'label',\n\t\t\t\t\t{ className: 'blocks-base-control__label', 'for': 'inspector-media-upload' },\n\t\t\t\t\t__('Default thumbnail URL if no image is found.')\n\t\t\t\t),\n\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\ttype: 'image',\n\t\t\t\t\tid: 'inspector-media-upload',\n\t\t\t\t\tvalue: props.attributes.default,\n\t\t\t\t\tonSelect: props.onDefault,\n\t\t\t\t\trender: function render(_ref2) {\n\t\t\t\t\t\tvar open = _ref2.open;\n\t\t\t\t\t\treturn [props.attributes.default !== undefined && [wp.element.createElement(\n\t\t\t\t\t\t\tResponsiveWrapper,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tnaturalWidth: props.attributes.default.width,\n\t\t\t\t\t\t\t\tnaturalHeight: props.attributes.default.height\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\twp.element.createElement('img', { src: props.attributes.default.url, alt: __('Featured image') })\n\t\t\t\t\t\t), wp.element.createElement(\n\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\treturn props.setAttributes({ default: undefined });\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tstyle: { marginTop: '10px' }\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t__('Remove Image')\n\t\t\t\t\t\t)], wp.element.createElement(\n\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\tonClick: open,\n\t\t\t\t\t\t\t\tstyle: { marginTop: '10px' },\n\t\t\t\t\t\t\t\tclassName: props.attributes.default === undefined && 'feedzy_image_upload'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t__('Upload Image')\n\t\t\t\t\t\t)];\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t), wp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Thumbnails dimension.'),\n\t\t\t\ttype: 'number',\n\t\t\t\tvalue: props.attributes.size,\n\t\t\t\tonChange: props.onSize\n\t\t\t})]\n\t\t), feedzyjs.isPro && wp.element.createElement(\n\t\t\tPanelBody,\n\t\t\t{ title: __('Pro Features'), initialOpen: false, className: 'feedzy-pro-options' },\n\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\tlabel: __('Display price if available?'),\n\t\t\t\thelp: props.attributes.price && props.attributes.template === 'default' ? __('Choose a different template for this to work.') : null,\n\t\t\t\tchecked: !!props.attributes.price,\n\t\t\t\tonChange: props.togglePrice,\n\t\t\t\tclassName: 'feedzy-pro-price'\n\t\t\t}),\n\t\t\twp.element.createElement(TextControl, {\n\t\t\t\tlabel: __('Referral URL parameters.'),\n\t\t\t\thelp: __('Without (\"?\")'),\n\t\t\t\tplaceholder: _('(eg. promo_code=feedzy_is_awesome)'),\n\t\t\t\tvalue: props.attributes.referral_url,\n\t\t\t\tonChange: props.onReferralURL\n\t\t\t}),\n\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\tlabel: __('Columns'),\n\t\t\t\thelp: __('How many columns we should use to display the feed items?'),\n\t\t\t\tvalue: props.attributes.columns || 1,\n\t\t\t\tonChange: props.onColumns,\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 6,\n\t\t\t\tbeforeIcon: 'sort',\n\t\t\t\tallowReset: true\n\t\t\t}),\n\t\t\twp.element.createElement(__WEBPACK_IMPORTED_MODULE_0__radio_image_control___[\"a\" /* default */], {\n\t\t\t\tlabel: __('Feed Template'),\n\t\t\t\tselected: props.attributes.template,\n\t\t\t\toptions: [{\n\t\t\t\t\tlabel: __('Default'),\n\t\t\t\t\tsrc: feedzyjs.imagepath + 'feedzy-default-template.jpg',\n\t\t\t\t\tvalue: 'default'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Style 1'),\n\t\t\t\t\tsrc: feedzyjs.imagepath + 'feedzy-style1-template.jpg',\n\t\t\t\t\tvalue: 'style1'\n\t\t\t\t}, {\n\t\t\t\t\tlabel: __('Style 2'),\n\t\t\t\t\tsrc: feedzyjs.imagepath + 'feedzy-style2-template.jpg',\n\t\t\t\t\tvalue: 'style2'\n\t\t\t\t}],\n\t\t\t\tonChange: props.onTemplate,\n\t\t\t\tclassName: 'feedzy-pro-template'\n\t\t\t})\n\t\t)]\n\t);\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Inspector);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2luc3BlY3Rvci5qcz83YTVmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGpzaGludCBpZ25vcmU6IHN0YXJ0XG5cbi8qKlxyXG4gKiBCbG9jayBkZXBlbmRlbmNpZXNcclxuICovXG5pbXBvcnQgUmFkaW9JbWFnZUNvbnRyb2wgZnJvbSAnLi9yYWRpby1pbWFnZS1jb250cm9sLyc7XG5cbi8qKlxyXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcclxuICovXG52YXIgX18gPSB3cC5pMThuLl9fO1xuXG52YXIgX3JlZiA9IHdwLmJsb2NrRWRpdG9yIHx8IHdwLmVkaXRvcixcbiAgICBJbnNwZWN0b3JDb250cm9scyA9IF9yZWYuSW5zcGVjdG9yQ29udHJvbHMsXG4gICAgTWVkaWFVcGxvYWQgPSBfcmVmLk1lZGlhVXBsb2FkO1xuXG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIEJhc2VDb250cm9sID0gX3dwJGNvbXBvbmVudHMuQmFzZUNvbnRyb2wsXG4gICAgRXh0ZXJuYWxMaW5rID0gX3dwJGNvbXBvbmVudHMuRXh0ZXJuYWxMaW5rLFxuICAgIFBhbmVsQm9keSA9IF93cCRjb21wb25lbnRzLlBhbmVsQm9keSxcbiAgICBSYW5nZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5SYW5nZUNvbnRyb2wsXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBCdXR0b24gPSBfd3AkY29tcG9uZW50cy5CdXR0b24sXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2wsXG4gICAgU2VsZWN0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlNlbGVjdENvbnRyb2wsXG4gICAgUmVzcG9uc2l2ZVdyYXBwZXIgPSBfd3AkY29tcG9uZW50cy5SZXNwb25zaXZlV3JhcHBlcjtcblxuLyoqXHJcbiogQ3JlYXRlIGFuIEluc3BlY3RvciBDb250cm9scyB3cmFwcGVyIENvbXBvbmVudFxyXG4qL1xuXG52YXIgSW5zcGVjdG9yID0gZnVuY3Rpb24gSW5zcGVjdG9yKHByb3BzKSB7XG5cdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0eyBrZXk6ICdpbnNwZWN0b3InIH0sXG5cdFx0cHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgIT09IDAgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0bnVsbCxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0ZlZWQgU291cmNlJyksXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1zb3VyY2UnLFxuXHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5mZWVkcyxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlRmVlZHNcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdHR5cGU6ICdzdWJtaXQnLFxuXHRcdFx0XHRcdG9uQ2xpY2s6IHByb3BzLmxvYWRGZWVkLFxuXHRcdFx0XHRcdGNsYXNzTmFtZTogJ2xvYWRGZWVkJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRfXygnTG9hZCBGZWVkJylcblx0XHRcdClcblx0XHQpLFxuXHRcdHByb3BzLmF0dHJpYnV0ZXMuc3RhdHVzID09PSAyICYmIFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRQYW5lbEJvZHksXG5cdFx0XHR7XG5cdFx0XHRcdHRpdGxlOiBfXygnRmVlZCBTZXR0aW5ncycpLFxuXHRcdFx0XHRpbml0aWFsT3BlbjogdHJ1ZSxcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LW9wdGlvbnMnXG5cdFx0XHR9LFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJhbmdlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ051bWJlciBvZiBJdGVtcycpLFxuXHRcdFx0XHR2YWx1ZTogTnVtYmVyKHByb3BzLmF0dHJpYnV0ZXMubWF4KSB8fCA1LFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25DaGFuZ2VNYXgsXG5cdFx0XHRcdG1pbjogMSxcblx0XHRcdFx0bWF4OiBwcm9wcy5hdHRyaWJ1dGVzLmZlZWREYXRhWydpdGVtcyddLmxlbmd0aCB8fCAxMCxcblx0XHRcdFx0YmVmb3JlSWNvbjogJ3NvcnQnLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktbWF4J1xuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUmFuZ2VDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnSWdub3JlIGZpcnN0IE4gaXRlbXMnKSxcblx0XHRcdFx0dmFsdWU6IE51bWJlcihwcm9wcy5hdHRyaWJ1dGVzLm9mZnNldCkgfHwgMCxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlT2Zmc2V0LFxuXHRcdFx0XHRtaW46IDAsXG5cdFx0XHRcdG1heDogcHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YVsnaXRlbXMnXS5sZW5ndGgsXG5cdFx0XHRcdGJlZm9yZUljb246ICdzb3J0Jyxcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LW9mZnNldCdcblx0XHRcdH0pLFxuXHRcdFx0cHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YVsnY2hhbm5lbCddICE9PSBudWxsICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGlzcGxheSBmZWVkIHRpdGxlPycpLFxuXHRcdFx0XHRjaGVja2VkOiAhIXByb3BzLmF0dHJpYnV0ZXMuZmVlZF90aXRsZSxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLnRvZ2dsZUZlZWRUaXRsZSxcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LXRpdGxlJ1xuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0xhenkgbG9hZCBmZWVkPycpLFxuXHRcdFx0XHRjaGVja2VkOiAhIXByb3BzLmF0dHJpYnV0ZXMubGF6eSxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLnRvZ2dsZUxhenksXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1sYXp5Jyxcblx0XHRcdFx0aGVscDogX18oJ09ubHkgb24gdGhlIGZyb250IGVuZC4nKVxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoU2VsZWN0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0ZlZWQgQ2FjaGluZyBUaW1lJyksXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnJlZnJlc2gsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCcxIEhvdXInKSxcblx0XHRcdFx0XHR2YWx1ZTogJzFfaG91cnMnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJzIgSG91cnMnKSxcblx0XHRcdFx0XHR2YWx1ZTogJzNfaG91cnMnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJzEyIEhvdXJzJyksXG5cdFx0XHRcdFx0dmFsdWU6ICcxMl9ob3Vycydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnMSBEYXknKSxcblx0XHRcdFx0XHR2YWx1ZTogJzFfZGF5cydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnMyBEYXlzJyksXG5cdFx0XHRcdFx0dmFsdWU6ICczX2RheXMnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJzE1IERheXMnKSxcblx0XHRcdFx0XHR2YWx1ZTogJzE1X2RheXMnXG5cdFx0XHRcdH1dLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25SZWZyZXNoLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktcmVmcmVzaCdcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdTb3J0aW5nIE9yZGVyJyksXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnNvcnQsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdEZWZhdWx0JyksXG5cdFx0XHRcdFx0dmFsdWU6ICdkZWZhdWx0J1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdEYXRlIERlc2NlbmRpbmcnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2RhdGVfZGVzYydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnRGF0ZSBBc2NlbmRpbmcnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ2RhdGVfYXNjJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSBEZXNjZW5kaW5nJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd0aXRsZV9kZXNjJ1xuXHRcdFx0XHR9LCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSBBc2NlbmRpbmcnKSxcblx0XHRcdFx0XHR2YWx1ZTogJ3RpdGxlX2FzYydcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vblNvcnQsXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1zb3J0J1xuXHRcdFx0fSlcblx0XHQpLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRQYW5lbEJvZHksXG5cdFx0XHR7IHRpdGxlOiBfXygnSXRlbSBPcHRpb25zJyksIGluaXRpYWxPcGVuOiBmYWxzZSwgY2xhc3NOYW1lOiAnZmVlZHp5LWl0ZW0tb3B0aW9ucycgfSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnT3BlbiBMaW5rcyBJbicpLFxuXHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy50YXJnZXQsXG5cdFx0XHRcdG9wdGlvbnM6IFt7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdOZXcgVGFiJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdfYmxhbmsnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ1NhbWUgVGFiJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdfc2VsZidcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vblRhcmdldFxuXHRcdFx0fSksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdUaXRsZSBDaGFyYWN0ZXIgTGltaXQnKSxcblx0XHRcdFx0aGVscDogX18oJ0xlYXZlIGVtcHR5IHRvIHNob3cgZnVsbCB0aXRsZS4nKSxcblx0XHRcdFx0dHlwZTogJ251bWJlcicsXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnRpdGxlLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25UaXRsZSxcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LXRpdGxlLWxlbmd0aCdcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRCYXNlQ29udHJvbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IGZlZWR6eWpzLmlzUHJvID8gX18oJ1Nob3VsZCB3ZSBkaXNwbGF5IGFkZGl0aW9uYWwgbWV0YSBmaWVsZHMgb3V0IG9mIGF1dGhvciwgZGF0ZSwgdGltZSBvciBjYXRlZ29yaWVzPyAoY29tbWEtc2VwYXJhdGVkIGxpc3QsIGluIG9yZGVyIG9mIGRpc3BsYXkpLicpIDogX18oJ1Nob3VsZCB3ZSBkaXNwbGF5IGFkZGl0aW9uYWwgbWV0YSBmaWVsZHMgb3V0IG9mIGF1dGhvciwgZGF0ZSBvciB0aW1lPyAoY29tbWEtc2VwYXJhdGVkIGxpc3QsIGluIG9yZGVyIG9mIGRpc3BsYXkpLicpLFxuXHRcdFx0XHRcdGhlbHA6IF9fKCdMZWF2ZSBlbXB0eSB0byBkaXNwbGF5IGFsbCBhbmQgXCJub1wiIHRvIGRpc3BsYXkgbm90aGluZy4nKSxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcjogZmVlZHp5anMuaXNQcm8gPyBfXygnKGVnOiBhdXRob3IsIGRhdGUsIHRpbWUsIHR6PWxvY2FsLCBjYXRlZ29yaWVzKScpIDogX18oJyhlZzogYXV0aG9yLCBkYXRlLCB0aW1lLCB0ej1sb2NhbCknKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5tZXRhZmllbGRzLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5jaGFuZ2VNZXRhLFxuXHRcdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1tZXRhJ1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0bGFiZWw6IF9fKCdXaGVuIHVzaW5nIG11bHRpcGxlIHNvdXJjZXMsIHNob3VsZCB3ZSBkaXNwbGF5IGFkZGl0aW9uYWwgbWV0YSBmaWVsZHM/IC0gc291cmNlIChjb21tYS1zZXBhcmF0ZWQgbGlzdCkuJyksXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCcoZWc6IHNvdXJjZSknKSxcblx0XHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5tdWx0aXBsZV9tZXRhLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5jaGFuZ2VNdWx0aXBsZU1ldGEsXG5cdFx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LW11bHRpcGxlLW1ldGEnXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0RXh0ZXJuYWxMaW5rLFxuXHRcdFx0XHRcdHsgaHJlZjogJ2h0dHBzOi8vZG9jcy50aGVtZWlzbGUuY29tL2FydGljbGUvMTA4OS1ob3ctdG8tZGlzcGxheS1hdXRob3ItZGF0ZS1vci10aW1lLWZyb20tdGhlLWZlZWQnIH0sXG5cdFx0XHRcdFx0X18oJ1lvdSBjYW4gZmluZCBtb3JlIGluZm8gYWJvdXQgYXZhaWxhYmxlIG1ldGEgZmllbGQgdmFsdWVzIGhlcmUuJylcblx0XHRcdFx0KVxuXHRcdFx0KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGlzcGxheSBwb3N0IGRlc2NyaXB0aW9uPycpLFxuXHRcdFx0XHRjaGVja2VkOiAhIXByb3BzLmF0dHJpYnV0ZXMuc3VtbWFyeSxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLnRvZ2dsZVN1bW1hcnksXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1zdW1tYXJ5J1xuXHRcdFx0fSksXG5cdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLnN1bW1hcnkgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGVzY3JpcHRpb24gQ2hhcmFjdGVyIExpbWl0JyksXG5cdFx0XHRcdGhlbHA6IF9fKCdMZWF2ZSBlbXB0eSB0byBzaG93IGZ1bGwgZGVzY3JpcHRpb24uJyksXG5cdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5bGVuZ3RoLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25TdW1tYXJ5TGVuZ3RoLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktc3VtbWFyeS1sZW5ndGgnXG5cdFx0XHR9KSxcblx0XHRcdGZlZWR6eWpzLmlzUHJvICYmIFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0bGFiZWw6IF9fKCdPbmx5IGRpc3BsYXkgaWYgdGl0bGUgY29udGFpbnM6JyksXG5cdFx0XHRcdGhlbHA6IF9fKCdDb21tYS1zZXBhcmF0ZWQgbGlzdC9jYXNlIHNlbnNpdGl2ZS4nKSxcblx0XHRcdFx0dmFsdWU6IHByb3BzLmF0dHJpYnV0ZXMua2V5d29yZHNfdGl0bGUsXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vbktleXdvcmRzVGl0bGUsXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1pbmNsdWRlJ1xuXHRcdFx0fSksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0V4Y2x1ZGUgaWYgdGl0bGUgY29udGFpbnM6JyksXG5cdFx0XHRcdGhlbHA6IF9fKCdDb21tYS1zZXBhcmF0ZWQgbGlzdC9jYXNlIHNlbnNpdGl2ZS4nKSxcblx0XHRcdFx0dmFsdWU6IHByb3BzLmF0dHJpYnV0ZXMua2V5d29yZHNfYmFuLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMub25LZXl3b3Jkc0Jhbixcblx0XHRcdFx0Y2xhc3NOYW1lOiAnZmVlZHp5LWJhbidcblx0XHRcdH0pXVxuXHRcdCksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFBhbmVsQm9keSxcblx0XHRcdHsgdGl0bGU6IF9fKCdJdGVtIEltYWdlIE9wdGlvbnMnKSwgaW5pdGlhbE9wZW46IGZhbHNlLCBjbGFzc05hbWU6ICdmZWVkenktaW1hZ2Utb3B0aW9ucycgfSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChTZWxlY3RDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGlzcGxheSBmaXJzdCBpbWFnZSBpZiBhdmFpbGFibGU/JyksXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnRodW1iLFxuXHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnQXV0bycpLFxuXHRcdFx0XHRcdHZhbHVlOiAnYXV0bydcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnWWVzJyksXG5cdFx0XHRcdFx0dmFsdWU6ICd5ZXMnXG5cdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRsYWJlbDogX18oJ05vJyksXG5cdFx0XHRcdFx0dmFsdWU6ICdubydcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vblRodW1iLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktdGh1bWInXG5cdFx0XHR9KSxcblx0XHRcdHByb3BzLmF0dHJpYnV0ZXMudGh1bWIgIT09ICdubycgJiYgW3Byb3BzLmF0dHJpYnV0ZXMudGh1bWIgIT09ICdhdXRvJyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHR7IGNsYXNzTmFtZTogJ2ZlZWR6eS1ibG9ja3MtYmFzZS1jb250cm9sJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J2xhYmVsJyxcblx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2Jsb2Nrcy1iYXNlLWNvbnRyb2xfX2xhYmVsJywgJ2Zvcic6ICdpbnNwZWN0b3ItbWVkaWEtdXBsb2FkJyB9LFxuXHRcdFx0XHRcdF9fKCdEZWZhdWx0IHRodW1ibmFpbCBVUkwgaWYgbm8gaW1hZ2UgaXMgZm91bmQuJylcblx0XHRcdFx0KSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KE1lZGlhVXBsb2FkLCB7XG5cdFx0XHRcdFx0dHlwZTogJ2ltYWdlJyxcblx0XHRcdFx0XHRpZDogJ2luc3BlY3Rvci1tZWRpYS11cGxvYWQnLFxuXHRcdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLmRlZmF1bHQsXG5cdFx0XHRcdFx0b25TZWxlY3Q6IHByb3BzLm9uRGVmYXVsdCxcblx0XHRcdFx0XHRyZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihfcmVmMikge1xuXHRcdFx0XHRcdFx0dmFyIG9wZW4gPSBfcmVmMi5vcGVuO1xuXHRcdFx0XHRcdFx0cmV0dXJuIFtwcm9wcy5hdHRyaWJ1dGVzLmRlZmF1bHQgIT09IHVuZGVmaW5lZCAmJiBbd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRSZXNwb25zaXZlV3JhcHBlcixcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdG5hdHVyYWxXaWR0aDogcHJvcHMuYXR0cmlidXRlcy5kZWZhdWx0LndpZHRoLFxuXHRcdFx0XHRcdFx0XHRcdG5hdHVyYWxIZWlnaHQ6IHByb3BzLmF0dHJpYnV0ZXMuZGVmYXVsdC5oZWlnaHRcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdpbWcnLCB7IHNyYzogcHJvcHMuYXR0cmlidXRlcy5kZWZhdWx0LnVybCwgYWx0OiBfXygnRmVhdHVyZWQgaW1hZ2UnKSB9KVxuXHRcdFx0XHRcdFx0KSwgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcHJvcHMuc2V0QXR0cmlidXRlcyh7IGRlZmF1bHQ6IHVuZGVmaW5lZCB9KTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHN0eWxlOiB7IG1hcmdpblRvcDogJzEwcHgnIH1cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0X18oJ1JlbW92ZSBJbWFnZScpXG5cdFx0XHRcdFx0XHQpXSwgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IG9wZW4sXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU6IHsgbWFyZ2luVG9wOiAnMTBweCcgfSxcblx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6IHByb3BzLmF0dHJpYnV0ZXMuZGVmYXVsdCA9PT0gdW5kZWZpbmVkICYmICdmZWVkenlfaW1hZ2VfdXBsb2FkJ1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRfXygnVXBsb2FkIEltYWdlJylcblx0XHRcdFx0XHRcdCldO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdCksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1RodW1ibmFpbHMgZGltZW5zaW9uLicpLFxuXHRcdFx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRcdFx0dmFsdWU6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLm9uU2l6ZVxuXHRcdFx0fSldXG5cdFx0KSwgZmVlZHp5anMuaXNQcm8gJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0eyB0aXRsZTogX18oJ1BybyBGZWF0dXJlcycpLCBpbml0aWFsT3BlbjogZmFsc2UsIGNsYXNzTmFtZTogJ2ZlZWR6eS1wcm8tb3B0aW9ucycgfSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRGlzcGxheSBwcmljZSBpZiBhdmFpbGFibGU/JyksXG5cdFx0XHRcdGhlbHA6IHByb3BzLmF0dHJpYnV0ZXMucHJpY2UgJiYgcHJvcHMuYXR0cmlidXRlcy50ZW1wbGF0ZSA9PT0gJ2RlZmF1bHQnID8gX18oJ0Nob29zZSBhIGRpZmZlcmVudCB0ZW1wbGF0ZSBmb3IgdGhpcyB0byB3b3JrLicpIDogbnVsbCxcblx0XHRcdFx0Y2hlY2tlZDogISFwcm9wcy5hdHRyaWJ1dGVzLnByaWNlLFxuXHRcdFx0XHRvbkNoYW5nZTogcHJvcHMudG9nZ2xlUHJpY2UsXG5cdFx0XHRcdGNsYXNzTmFtZTogJ2ZlZWR6eS1wcm8tcHJpY2UnXG5cdFx0XHR9KSxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ1JlZmVycmFsIFVSTCBwYXJhbWV0ZXJzLicpLFxuXHRcdFx0XHRoZWxwOiBfXygnV2l0aG91dCAoXCI/XCIpJyksXG5cdFx0XHRcdHBsYWNlaG9sZGVyOiBfKCcoZWcuIHByb21vX2NvZGU9ZmVlZHp5X2lzX2F3ZXNvbWUpJyksXG5cdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLnJlZmVycmFsX3VybCxcblx0XHRcdFx0b25DaGFuZ2U6IHByb3BzLm9uUmVmZXJyYWxVUkxcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJhbmdlQ29udHJvbCwge1xuXHRcdFx0XHRsYWJlbDogX18oJ0NvbHVtbnMnKSxcblx0XHRcdFx0aGVscDogX18oJ0hvdyBtYW55IGNvbHVtbnMgd2Ugc2hvdWxkIHVzZSB0byBkaXNwbGF5IHRoZSBmZWVkIGl0ZW1zPycpLFxuXHRcdFx0XHR2YWx1ZTogcHJvcHMuYXR0cmlidXRlcy5jb2x1bW5zIHx8IDEsXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vbkNvbHVtbnMsXG5cdFx0XHRcdG1pbjogMSxcblx0XHRcdFx0bWF4OiA2LFxuXHRcdFx0XHRiZWZvcmVJY29uOiAnc29ydCcsXG5cdFx0XHRcdGFsbG93UmVzZXQ6IHRydWVcblx0XHRcdH0pLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFJhZGlvSW1hZ2VDb250cm9sLCB7XG5cdFx0XHRcdGxhYmVsOiBfXygnRmVlZCBUZW1wbGF0ZScpLFxuXHRcdFx0XHRzZWxlY3RlZDogcHJvcHMuYXR0cmlidXRlcy50ZW1wbGF0ZSxcblx0XHRcdFx0b3B0aW9uczogW3tcblx0XHRcdFx0XHRsYWJlbDogX18oJ0RlZmF1bHQnKSxcblx0XHRcdFx0XHRzcmM6IGZlZWR6eWpzLmltYWdlcGF0aCArICdmZWVkenktZGVmYXVsdC10ZW1wbGF0ZS5qcGcnLFxuXHRcdFx0XHRcdHZhbHVlOiAnZGVmYXVsdCdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU3R5bGUgMScpLFxuXHRcdFx0XHRcdHNyYzogZmVlZHp5anMuaW1hZ2VwYXRoICsgJ2ZlZWR6eS1zdHlsZTEtdGVtcGxhdGUuanBnJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3N0eWxlMSdcblx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdGxhYmVsOiBfXygnU3R5bGUgMicpLFxuXHRcdFx0XHRcdHNyYzogZmVlZHp5anMuaW1hZ2VwYXRoICsgJ2ZlZWR6eS1zdHlsZTItdGVtcGxhdGUuanBnJyxcblx0XHRcdFx0XHR2YWx1ZTogJ3N0eWxlMidcblx0XHRcdFx0fV0sXG5cdFx0XHRcdG9uQ2hhbmdlOiBwcm9wcy5vblRlbXBsYXRlLFxuXHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktcHJvLXRlbXBsYXRlJ1xuXHRcdFx0fSlcblx0XHQpXVxuXHQpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5zcGVjdG9yO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vaW5jbHVkZXMvZ3V0ZW5iZXJnL3NyYy9pbnNwZWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///49\n");
374
 
375
  /***/ }),
376
  /* 50 */
includes/gutenberg/feedzy-rss-feeds-gutenberg-block.php CHANGED
@@ -114,6 +114,10 @@ class Feedzy_Rss_Feeds_Gutenberg_Block {
114
  'meta' => array(
115
  'type' => 'boolean',
116
  ),
 
 
 
 
117
  'metafields' => array(
118
  'type' => 'string',
119
  ),
@@ -168,6 +172,9 @@ class Feedzy_Rss_Feeds_Gutenberg_Block {
168
  * Feedzy Gutenberg Block Callback Function
169
  */
170
  public function feedzy_gutenberg_block_callback( $attr ) {
 
 
 
171
  $attr['default'] = ( ! empty( $attr['default'] ) ? $attr['default']['url'] : '' );
172
  if ( ! empty( $attr['feed_title'] ) ) {
173
  $attr['feed_title'] = 'yes';
114
  'meta' => array(
115
  'type' => 'boolean',
116
  ),
117
+ 'lazy' => array(
118
+ 'type' => 'boolean',
119
+ 'default' => false,
120
+ ),
121
  'metafields' => array(
122
  'type' => 'string',
123
  ),
172
  * Feedzy Gutenberg Block Callback Function
173
  */
174
  public function feedzy_gutenberg_block_callback( $attr ) {
175
+ if ( is_admin() ) {
176
+ $attr['gutenberg'] = true;
177
+ }
178
  $attr['default'] = ( ! empty( $attr['default'] ) ? $attr['default']['url'] : '' );
179
  if ( ! empty( $attr['feed_title'] ) ) {
180
  $attr['feed_title'] = 'yes';
includes/layouts/feedzy-improve.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <div class="fz-feature">
2
+ <div class="fz-feature-features">
3
+ <h2>Answer a few questions for us to help us improve the product</h2>
4
+ <p>We're always looking for suggestions to further improve Feedzy RSS Feeds. If you'd like to help us, please fill out this <a href="<?php echo FEEDZY_SURVEY; ?>" target="_blank">survey</a>.</p>
5
+ <?php if ( ! feedzy_is_pro() ) { ?>
6
+ <p>If your feedback is especially helpful and we choose to do an interview with you to discuss your suggestions, you will even gain a yearly membership for free for your trouble.</p>
7
+ <?php } ?>
8
+ </div>
9
+ </div>
includes/layouts/feedzy-support.php CHANGED
@@ -18,6 +18,9 @@
18
  <?php
19
  }
20
  ?>
 
 
 
21
  <?php echo apply_filters( 'feedzy_support_tab_heading', '', $active_tab ); ?>
22
  </h2>
23
 
@@ -34,6 +37,9 @@
34
  load_template( FEEDZY_ABSPATH . '/includes/layouts/feedzy-upsell.php' );
35
  }
36
  break;
 
 
 
37
  default:
38
  $template = apply_filters( 'feedzy_support_tab_content', '', $active_tab );
39
  if ( ! empty( $template ) ) {
18
  <?php
19
  }
20
  ?>
21
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=feedzy-support&tab=improve' ) ); ?>"
22
+ class="nav-tab <?php echo $active_tab === 'improve' ? 'nav-tab-active' : ''; ?>"><?php _e( 'Help us improve!', 'feedzy-rss-feeds' ); ?></a>
23
+
24
  <?php echo apply_filters( 'feedzy_support_tab_heading', '', $active_tab ); ?>
25
  </h2>
26
 
37
  load_template( FEEDZY_ABSPATH . '/includes/layouts/feedzy-upsell.php' );
38
  }
39
  break;
40
+ case 'improve':
41
+ load_template( FEEDZY_ABSPATH . '/includes/layouts/feedzy-improve.php' );
42
+ break;
43
  default:
44
  $template = apply_filters( 'feedzy_support_tab_content', '', $active_tab );
45
  if ( ! empty( $template ) ) {
js/feedzy-lazy.js ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Plugin Name: FEEDZY RSS Feeds
3
+ * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
4
+ * Author: Themeisle
5
+ *
6
+ * @package feedzy-rss-feeds
7
+ */
8
+ /* global feedzy */
9
+ /* jshint unused:false */
10
+ (function($) {
11
+
12
+ // load all attributes into the ajax call.
13
+ $('.feedzy-lazy:not(.loading)').each(function() {
14
+ var $feedzy_block = $(this);
15
+ var $attributes = {};
16
+ $.each(this.attributes, function() {
17
+ if(this.specified && this.name.includes('data-')) {
18
+ $attributes[this.name.replace('data-', '')] = this.value;
19
+ }
20
+ });
21
+ setTimeout( function(){
22
+ $feedzy_block.addClass('loading');
23
+ $.ajax({
24
+ url: feedzy.url,
25
+ method: 'POST',
26
+ data: {
27
+ action: 'feedzy',
28
+ _action: 'lazy',
29
+ args: $attributes,
30
+ nonce: feedzy.nonce
31
+ },
32
+ beforeSend: function (xhr) {
33
+ xhr.setRequestHeader('X-WP-Nonce', feedzy.rest_nonce);
34
+ },
35
+ success: function(data){
36
+ if(data.success){
37
+ $feedzy_block.empty().append(data.data.content);
38
+ }
39
+ },
40
+ complete: function(){
41
+ $feedzy_block.removeClass('loading');
42
+ }
43
+ });
44
+ }, 1000 );
45
+ });
46
+ })(jQuery, feedzy);
js/feedzy-rss-feeds-ui-mce.js CHANGED
@@ -10,31 +10,31 @@
10
  (function($) {
11
  tinymce.PluginManager.add('feedzy_mce_button', function( editor, url ) {
12
  editor.addButton( 'feedzy_mce_button', {
13
- title: editor.getLang( 'feedzy_tinymce_plugin.plugin_label' ),
14
- label: editor.getLang( 'feedzy_tinymce_plugin.plugin_label' ),
15
  icon: 'feedzy-icon',
16
  onclick: function() {
17
  editor.windowManager.open( {
18
- title: editor.getLang( 'feedzy_tinymce_plugin.plugin_title' ),
19
- url: editor.getLang( 'feedzy_tinymce_plugin.popup_url' ) + '&amp;action=get_tinymce_form',
20
  width: $( window ).width() * 0.7,
21
  height: ($( window ).height() - 36 - 50) * 0.7,
22
  inline: 1,
23
  id: 'feedzy-rss-insert-dialog',
24
  buttons: [{
25
- text: editor.getLang( 'feedzy_tinymce_plugin.pro_button' ),
26
  id: 'feedzy-rss-button-pro',
27
  onclick: function( e ) {
28
  openProLink( e, editor );
29
  },
30
  },
31
  {
32
- text: editor.getLang( 'feedzy_tinymce_plugin.cancel_button' ),
33
  id: 'feedzy-rss-button-cancel',
34
  onclick: 'close'
35
  },
36
  {
37
- text: editor.getLang( 'feedzy_tinymce_plugin.insert_button' ),
38
  id: 'feedzy-rss-button-insert',
39
  class: 'insert',
40
  onclick: function( e ) {
@@ -51,6 +51,20 @@
51
  });
52
  });
53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  function insertShortcode( e, editor ) {
55
  var frame = $( e.currentTarget ).find( 'iframe' ).get( 0 );
56
  var content = frame.contentDocument;
@@ -91,6 +105,6 @@
91
  }
92
 
93
  function openProLink( e , editor ) {
94
- window.open( editor.getLang( 'feedzy_tinymce_plugin.pro_url' ), '_blank' );
95
  }
96
  })(jQuery);
10
  (function($) {
11
  tinymce.PluginManager.add('feedzy_mce_button', function( editor, url ) {
12
  editor.addButton( 'feedzy_mce_button', {
13
+ title: getTranslation( editor, 'plugin_label' ),
14
+ label: getTranslation( editor, 'plugin_label' ),
15
  icon: 'feedzy-icon',
16
  onclick: function() {
17
  editor.windowManager.open( {
18
+ title: getTranslation( editor, 'plugin_title' ),
19
+ url: getTranslation( editor, 'popup_url' ) + '&amp;action=get_tinymce_form',
20
  width: $( window ).width() * 0.7,
21
  height: ($( window ).height() - 36 - 50) * 0.7,
22
  inline: 1,
23
  id: 'feedzy-rss-insert-dialog',
24
  buttons: [{
25
+ text: getTranslation( editor, 'pro_button' ),
26
  id: 'feedzy-rss-button-pro',
27
  onclick: function( e ) {
28
  openProLink( e, editor );
29
  },
30
  },
31
  {
32
+ text: getTranslation( editor, 'cancel_button' ),
33
  id: 'feedzy-rss-button-cancel',
34
  onclick: 'close'
35
  },
36
  {
37
+ text: getTranslation( editor, 'insert_button' ),
38
  id: 'feedzy-rss-button-insert',
39
  class: 'insert',
40
  onclick: function( e ) {
51
  });
52
  });
53
 
54
+ /**
55
+ * Gets the translation from the editor (when classic editor is enabled)
56
+ * OR
57
+ * from the settings array inside the editor (when classic block inside gutenberg)
58
+ */
59
+ function getTranslation(editor, slug){
60
+ var string = editor.getLang('feedzy_tinymce_plugin.' + slug);
61
+ // if the string is the same as the slug being requested for, look in the settings.
62
+ if(string === '{#feedzy_tinymce_plugin.' + slug + '}'){
63
+ string = editor.settings.feedzy_tinymce_plugin[slug];
64
+ }
65
+ return string;
66
+ }
67
+
68
  function insertShortcode( e, editor ) {
69
  var frame = $( e.currentTarget ).find( 'iframe' ).get( 0 );
70
  var content = frame.contentDocument;
105
  }
106
 
107
  function openProLink( e , editor ) {
108
+ window.open( getTranslation( editor, 'pro_url' ), '_blank' );
109
  }
110
  })(jQuery);
languages/feedzy-rss-feeds.pot CHANGED
@@ -1,147 +1,163 @@
1
- # Copyright (C) 2018 Themeisle
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Feedzy RSS Feeds Lite 3.2.8\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/feedzy-rss-feeds/issues\n"
7
- "POT-Creation-Date: 2018-03-07 09:46:44+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: Themeisle Translate Team <friends@themeisle.com>\n"
13
  "Language-Team: Themeisle Translate <friends@themeisle.com>\n"
14
- "X-Generator: grunt-wp-i18n 0.5.4\n"
15
- "X-Poedit-KeywordsList: "
16
- "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
17
- "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
18
  "Language: en\n"
19
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
  "X-Poedit-Country: United States\n"
21
  "X-Poedit-SourceCharset: UTF-8\n"
 
 
 
22
  "X-Poedit-Basepath: ../\n"
23
  "X-Poedit-SearchPath-0: .\n"
24
  "X-Poedit-Bookmarks: \n"
25
  "X-Textdomain-Support: yes\n"
 
26
 
27
- #: form/form.php:44
28
  msgid "Premium"
29
  msgstr ""
30
 
31
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:57
32
- msgid "Sorry, this feed is currently unavailable or does not exists anymore."
 
 
 
 
 
 
 
 
33
  msgstr ""
34
 
35
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:485
36
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:492
37
  msgid "Feed URL: %s not valid and removed from fetch."
38
  msgstr ""
39
 
40
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:784
41
  msgid "by"
42
  msgstr ""
43
 
44
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:790
45
  msgid "on"
46
  msgstr ""
47
 
48
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:792
49
  msgid "at"
50
  msgstr ""
51
 
52
- #: includes/admin/feedzy-rss-feeds-admin.php:142
 
 
 
 
53
  msgid "Feed Categories"
54
  msgstr ""
55
 
56
- #: includes/admin/feedzy-rss-feeds-admin.php:143
57
  msgid "Feed Category"
58
  msgstr ""
59
 
60
- #: includes/admin/feedzy-rss-feeds-admin.php:144
61
- #: includes/admin/feedzy-rss-feeds-admin.php:145
62
  msgid "Add Category"
63
  msgstr ""
64
 
65
- #: includes/admin/feedzy-rss-feeds-admin.php:146
66
  msgid "Edit Category"
67
  msgstr ""
68
 
69
- #: includes/admin/feedzy-rss-feeds-admin.php:147
70
  msgid "New Feed Category"
71
  msgstr ""
72
 
73
- #: includes/admin/feedzy-rss-feeds-admin.php:148
74
  msgid "View Category"
75
  msgstr ""
76
 
77
- #: includes/admin/feedzy-rss-feeds-admin.php:149
78
  msgid "Search Category"
79
  msgstr ""
80
 
81
- #: includes/admin/feedzy-rss-feeds-admin.php:150
82
  msgid "No categories found"
83
  msgstr ""
84
 
85
- #: includes/admin/feedzy-rss-feeds-admin.php:151
86
  msgid "No categories in the trash"
87
  msgstr ""
88
 
89
- #: includes/admin/feedzy-rss-feeds-admin.php:181
90
  msgid "Category Feeds"
91
  msgstr ""
92
 
93
- #: includes/admin/feedzy-rss-feeds-admin.php:187
94
  msgid "Increase your social media presence"
95
  msgstr ""
96
 
97
- #: includes/admin/feedzy-rss-feeds-admin.php:217
 
 
 
 
 
 
98
  msgid "Place your URL's here followed by a comma."
99
  msgstr ""
100
 
101
- #: includes/admin/feedzy-rss-feeds-admin.php:278
102
  msgid "Category Title"
103
  msgstr ""
104
 
105
- #: includes/admin/feedzy-rss-feeds-admin.php:279
106
- #: includes/admin/feedzy-rss-feeds-admin.php:282
107
  msgid "Slug"
108
  msgstr ""
109
 
110
- #: includes/admin/feedzy-rss-feeds-admin.php:306
111
  msgid "Undefined"
112
  msgstr ""
113
 
114
- #: includes/admin/feedzy-rss-feeds-admin.php:331
115
  msgid "Documentation and examples"
116
  msgstr ""
117
 
118
- #: includes/admin/feedzy-rss-feeds-admin.php:332
119
  msgid "More Plugins"
120
  msgstr ""
121
 
122
- #: includes/admin/feedzy-rss-feeds-admin.php:332
123
- #: includes/admin/feedzy-rss-feeds-admin.php:351
124
  msgid "More Features"
125
  msgstr ""
126
 
127
- #: includes/admin/feedzy-rss-feeds-admin.php:348
128
- #: includes/admin/feedzy-wp-widget.php:40
129
- msgid "Feedzy RSS Feeds"
130
- msgstr ""
131
-
132
- #: includes/admin/feedzy-rss-feeds-admin.php:348
133
- msgid "Feedzy RSS"
134
  msgstr ""
135
 
136
- #: includes/admin/feedzy-rss-feeds-admin.php:361
137
- msgid "Import Posts"
 
138
  msgstr ""
139
 
140
- #: includes/admin/feedzy-rss-feeds-admin.php:365
141
- msgid "Settings"
 
 
142
  msgstr ""
143
 
144
- #: includes/admin/feedzy-rss-feeds-admin.php:380
145
  msgid "Your settings were saved."
146
  msgstr ""
147
 
@@ -169,228 +185,329 @@ msgstr ""
169
  msgid "Get Feedzy RSS Feeds Premium"
170
  msgstr ""
171
 
 
 
 
 
 
 
 
172
  #: includes/admin/feedzy-rss-feeds-ui-lang.php:93
173
- msgid "Feed Source"
 
 
 
174
  msgstr ""
175
 
176
  #: includes/admin/feedzy-rss-feeds-ui-lang.php:96
 
 
 
 
 
 
 
 
 
 
177
  msgid "The feed(s) URL (comma-separated list)."
178
  msgstr ""
179
 
180
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:96
181
- msgid "Check feed before insert."
 
 
 
 
182
  msgstr ""
183
 
184
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:97
185
  msgid "Feed URL"
186
  msgstr ""
187
 
188
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:102
189
  msgid "Number of items to display."
190
  msgstr ""
191
 
192
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:103
193
  msgid "(eg: 5)"
194
  msgstr ""
195
 
196
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:108
 
 
 
 
 
 
 
 
197
  msgid "Should we display the RSS title?"
198
  msgstr ""
199
 
200
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:113
201
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:202
202
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:217
203
  #: includes/admin/feedzy-rss-feeds-ui-lang.php:261
204
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:298
 
 
205
  msgid "Yes"
206
  msgstr ""
207
 
208
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:117
209
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:206
210
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:221
211
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:265
212
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:302
 
213
  msgid "No"
214
  msgstr ""
215
 
216
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:123
217
  msgid "For how long we will cache the feed results."
218
  msgstr ""
219
 
220
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:124
221
  msgid "(eg: 1_days, defaults: 12_hours)"
222
  msgstr ""
223
 
224
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:129
225
  msgid "Hour"
226
  msgstr ""
227
 
228
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:133
229
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:137
230
  msgid "Hours"
231
  msgstr ""
232
 
233
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:141
234
  msgid "Day"
235
  msgstr ""
236
 
237
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:145
238
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:149
239
  msgid "Days"
240
  msgstr ""
241
 
242
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
  msgid "Item Options"
244
  msgstr ""
245
 
246
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:160
247
  msgid "Links may be opened in the same window or a new tab."
248
  msgstr ""
249
 
250
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:165
251
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:257
252
  msgid "Auto"
253
  msgstr ""
254
 
255
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:169
256
  msgid "_blank"
257
  msgstr ""
258
 
259
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:173
260
  msgid "_self"
261
  msgstr ""
262
 
263
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:177
264
  msgid "_parent"
265
  msgstr ""
266
 
267
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:181
268
  msgid "_top"
269
  msgstr ""
270
 
271
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:185
272
  msgid "framename"
273
  msgstr ""
274
 
275
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:191
276
- msgid "Trim the title of the item after X characters."
277
  msgstr ""
278
 
279
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:192
280
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:229
 
 
 
 
 
 
281
  msgid "(eg: 160)"
282
  msgstr ""
283
 
284
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:197
285
- msgid "Should we display the date of publication and the author name?"
286
  msgstr ""
287
 
288
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:212
 
 
 
 
289
  msgid "Should we display a description (abstract) of the retrieved item?"
290
  msgstr ""
291
 
292
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:227
293
  msgid "Crop description (summary) of the element after X characters."
294
  msgstr ""
295
 
296
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:233
297
  msgid ""
298
  "Only display item if title contains specific keyword(s) (comma-separated "
299
  "list/case sensitive)."
300
  msgstr ""
301
 
302
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:234
303
  msgid "(eg: news, sports etc.)"
304
  msgstr ""
305
 
306
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:240
307
  msgid ""
308
- "Exclude items if title or content contains specific keyword(s) "
309
- "(comma-separated list/case sensitive). "
310
  msgstr ""
311
 
312
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:241
313
  msgid "(eg: politics, gossip etc.)"
314
  msgstr ""
315
 
316
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:249
317
  msgid "Item Image Options"
318
  msgstr ""
319
 
320
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:252
321
  msgid "Should we display the first image of the content if it is available?"
322
  msgstr ""
323
 
324
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:271
325
  msgid "Default thumbnail URL if no image is found."
326
  msgstr ""
327
 
328
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:272
329
  msgid "Image URL"
330
  msgstr ""
331
 
332
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:276
333
  msgid "Select from Gallery"
334
  msgstr ""
335
 
336
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:280
337
  msgid "Thumbnails dimension. Do not include \"px\". Eg: 150"
338
  msgstr ""
339
 
340
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:281
341
  msgid "(eg: 150)"
342
  msgstr ""
343
 
344
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:288
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
345
  msgid "PRO Options"
346
  msgstr ""
347
 
348
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:289
349
  msgid ""
350
  "Get access to more options and customizations with full version of Feedzy "
351
  "RSS Feeds . Use existing templates or extend them and make them your own."
352
  msgstr ""
353
 
354
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:289
355
  msgid "See more features of Feedzy RSS Feeds "
356
  msgstr ""
357
 
358
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:292
359
- msgid "Should we display the price from the feed if it is available?"
360
- msgstr ""
361
-
362
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:308
363
- msgid "Referral URL parameters (w/o \"?\")."
364
  msgstr ""
365
 
366
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:309
367
- msgid "(eg. promo_code=feedzy_is_awesome)"
368
  msgstr ""
369
 
370
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:315
371
  msgid "How many columns we should use to display the feed items"
372
  msgstr ""
373
 
374
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:316
375
  msgid "(eg. 1, 2, ..., 6)"
376
  msgstr ""
377
 
378
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:322
379
- msgid "Template to use when displaying the feed."
 
 
380
  msgstr ""
381
 
382
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:328
383
- msgid "Default"
384
  msgstr ""
385
 
386
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:332
387
  msgid "Style 1"
388
  msgstr ""
389
 
390
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:336
391
  msgid "Style 2"
392
  msgstr ""
393
 
 
 
 
 
394
  #: includes/admin/feedzy-wp-widget.php:88
395
  msgid "Widget Title"
396
  msgstr ""
@@ -399,39 +516,51 @@ msgstr ""
399
  msgid "Intro text"
400
  msgstr ""
401
 
402
- #: includes/layouts/settings.php:12 includes/layouts/settings.php:45
 
 
 
 
 
 
 
 
403
  msgid "Headers"
404
  msgstr ""
405
 
406
- #: includes/layouts/settings.php:14
407
  msgid "Proxy"
408
  msgstr ""
409
 
410
- #: includes/layouts/settings.php:47
 
 
 
 
411
  msgid "User Agent to use when accessing the feed"
412
  msgstr ""
413
 
414
- #: includes/layouts/settings.php:58
415
  msgid "Proxy Settings"
416
  msgstr ""
417
 
418
- #: includes/layouts/settings.php:60
419
  msgid "Host"
420
  msgstr ""
421
 
422
- #: includes/layouts/settings.php:68
423
  msgid "Port"
424
  msgstr ""
425
 
426
- #: includes/layouts/settings.php:76
427
  msgid "Username"
428
  msgstr ""
429
 
430
- #: includes/layouts/settings.php:84
431
  msgid "Password"
432
  msgstr ""
433
 
434
- #: includes/layouts/settings.php:113
435
  msgid "Save"
436
  msgstr ""
437
 
1
+ # Copyright (C) 2020 Themeisle
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Feedzy RSS Feeds Lite 3.3.17\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/feedzy-rss-feeds/issues\n"
7
+ "POT-Creation-Date: 2020-02-06 10:28:48+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: Themeisle Translate Team <friends@themeisle.com>\n"
13
  "Language-Team: Themeisle Translate <friends@themeisle.com>\n"
 
 
 
 
14
  "Language: en\n"
15
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
  "X-Poedit-Country: United States\n"
17
  "X-Poedit-SourceCharset: UTF-8\n"
18
+ "X-Poedit-KeywordsList: "
19
+ "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
20
+ "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
21
  "X-Poedit-Basepath: ../\n"
22
  "X-Poedit-SearchPath-0: .\n"
23
  "X-Poedit-Bookmarks: \n"
24
  "X-Textdomain-Support: yes\n"
25
+ "X-Generator: grunt-wp-i18n 1.0.3\n"
26
 
27
+ #: form/form.php:49
28
  msgid "Premium"
29
  msgstr ""
30
 
31
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:153
32
+ msgid ""
33
+ "Sorry, some part of this feed is currently unavailable or does not exist "
34
+ "anymore. The detailed error is %1$s %2$s(Only you are seeing this detailed "
35
+ "error because you are the creator of this post. Other users will see the "
36
+ "error message as below.)%3$s"
37
+ msgstr ""
38
+
39
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:367
40
+ msgid "Loading"
41
  msgstr ""
42
 
43
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:755
44
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:762
45
  msgid "Feed URL: %s not valid and removed from fetch."
46
  msgstr ""
47
 
48
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:1115
49
  msgid "by"
50
  msgstr ""
51
 
52
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:1137
53
  msgid "on"
54
  msgstr ""
55
 
56
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:1141
57
  msgid "at"
58
  msgstr ""
59
 
60
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:1148
61
+ msgid "in"
62
+ msgstr ""
63
+
64
+ #: includes/admin/feedzy-rss-feeds-admin.php:162
65
  msgid "Feed Categories"
66
  msgstr ""
67
 
68
+ #: includes/admin/feedzy-rss-feeds-admin.php:163
69
  msgid "Feed Category"
70
  msgstr ""
71
 
72
+ #: includes/admin/feedzy-rss-feeds-admin.php:164
73
+ #: includes/admin/feedzy-rss-feeds-admin.php:165
74
  msgid "Add Category"
75
  msgstr ""
76
 
77
+ #: includes/admin/feedzy-rss-feeds-admin.php:166
78
  msgid "Edit Category"
79
  msgstr ""
80
 
81
+ #: includes/admin/feedzy-rss-feeds-admin.php:167
82
  msgid "New Feed Category"
83
  msgstr ""
84
 
85
+ #: includes/admin/feedzy-rss-feeds-admin.php:168
86
  msgid "View Category"
87
  msgstr ""
88
 
89
+ #: includes/admin/feedzy-rss-feeds-admin.php:169
90
  msgid "Search Category"
91
  msgstr ""
92
 
93
+ #: includes/admin/feedzy-rss-feeds-admin.php:170
94
  msgid "No categories found"
95
  msgstr ""
96
 
97
+ #: includes/admin/feedzy-rss-feeds-admin.php:171
98
  msgid "No categories in the trash"
99
  msgstr ""
100
 
101
+ #: includes/admin/feedzy-rss-feeds-admin.php:205
102
  msgid "Category Feeds"
103
  msgstr ""
104
 
105
+ #: includes/admin/feedzy-rss-feeds-admin.php:216
106
  msgid "Increase your social media presence"
107
  msgstr ""
108
 
109
+ #: includes/admin/feedzy-rss-feeds-admin.php:250
110
+ msgid ""
111
+ "Please be aware that multiple feeds, when mashed together, may sometimes "
112
+ "not work as expected as explained %1$shere%2$s."
113
+ msgstr ""
114
+
115
+ #: includes/admin/feedzy-rss-feeds-admin.php:251
116
  msgid "Place your URL's here followed by a comma."
117
  msgstr ""
118
 
119
+ #: includes/admin/feedzy-rss-feeds-admin.php:312
120
  msgid "Category Title"
121
  msgstr ""
122
 
123
+ #: includes/admin/feedzy-rss-feeds-admin.php:313
124
+ #: includes/admin/feedzy-rss-feeds-admin.php:316
125
  msgid "Slug"
126
  msgstr ""
127
 
128
+ #: includes/admin/feedzy-rss-feeds-admin.php:340
129
  msgid "Undefined"
130
  msgstr ""
131
 
132
+ #: includes/admin/feedzy-rss-feeds-admin.php:365
133
  msgid "Documentation and examples"
134
  msgstr ""
135
 
136
+ #: includes/admin/feedzy-rss-feeds-admin.php:366
137
  msgid "More Plugins"
138
  msgstr ""
139
 
140
+ #: includes/admin/feedzy-rss-feeds-admin.php:366
141
+ #: includes/layouts/feedzy-support.php:17
142
  msgid "More Features"
143
  msgstr ""
144
 
145
+ #: includes/admin/feedzy-rss-feeds-admin.php:382
146
+ msgid "Feedzy"
 
 
 
 
 
147
  msgstr ""
148
 
149
+ #: includes/admin/feedzy-rss-feeds-admin.php:386
150
+ #: includes/admin/feedzy-rss-feeds-admin.php:387
151
+ msgid "Settings"
152
  msgstr ""
153
 
154
+ #: includes/admin/feedzy-rss-feeds-admin.php:397
155
+ #: includes/admin/feedzy-rss-feeds-admin.php:398
156
+ #: includes/layouts/feedzy-support.php:12
157
+ msgid "Support"
158
  msgstr ""
159
 
160
+ #: includes/admin/feedzy-rss-feeds-admin.php:416
161
  msgid "Your settings were saved."
162
  msgstr ""
163
 
185
  msgid "Get Feedzy RSS Feeds Premium"
186
  msgstr ""
187
 
188
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:91
189
+ msgid ""
190
+ "Should we display additional meta fields out of %1$sauthor%2$s, "
191
+ "%3$sdate%4$s and %5$stime%6$s? (comma-separated list, in order of display). "
192
+ "View documentation %7$shere%8$s."
193
+ msgstr ""
194
+
195
  #: includes/admin/feedzy-rss-feeds-ui-lang.php:93
196
+ msgid ""
197
+ "Should we display additional meta fields out of %1$sauthor%2$s, "
198
+ "%3$sdate%4$s, %5$stime%6$s and %7$scategories%8$s? (comma-separated list). "
199
+ "View documentation %9$shere%10$s."
200
  msgstr ""
201
 
202
  #: includes/admin/feedzy-rss-feeds-ui-lang.php:96
203
+ msgid ""
204
+ "When using multiple sources, should we display additional meta fields? "
205
+ "%1$ssource%2$s (feed title)."
206
+ msgstr ""
207
+
208
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:100
209
+ msgid "Feed Source"
210
+ msgstr ""
211
+
212
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:103
213
  msgid "The feed(s) URL (comma-separated list)."
214
  msgstr ""
215
 
216
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:103
217
+ msgid "Click %1$shere%2$s to check if feed is valid."
218
+ msgstr ""
219
+
220
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:103
221
+ msgid "Invalid feeds will NOT display items."
222
  msgstr ""
223
 
224
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:104
225
  msgid "Feed URL"
226
  msgstr ""
227
 
228
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:109
229
  msgid "Number of items to display."
230
  msgstr ""
231
 
232
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:110
233
  msgid "(eg: 5)"
234
  msgstr ""
235
 
236
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:115
237
+ msgid "Ignore the first N items of the feed."
238
+ msgstr ""
239
+
240
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:116
241
+ msgid "(eg: 5, if you want to start from the 6th item.)"
242
+ msgstr ""
243
+
244
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:121
245
  msgid "Should we display the RSS title?"
246
  msgstr ""
247
 
248
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:126
249
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:206
 
250
  #: includes/admin/feedzy-rss-feeds-ui-lang.php:261
251
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:290
252
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:334
253
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:390
254
  msgid "Yes"
255
  msgstr ""
256
 
257
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:130
258
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:210
259
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:257
260
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:294
261
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:338
262
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:394
263
  msgid "No"
264
  msgstr ""
265
 
266
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:136
267
  msgid "For how long we will cache the feed results."
268
  msgstr ""
269
 
270
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:137
271
  msgid "(eg: 1_days, defaults: 12_hours)"
272
  msgstr ""
273
 
274
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:142
275
  msgid "Hour"
276
  msgstr ""
277
 
278
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:146
279
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:150
280
  msgid "Hours"
281
  msgstr ""
282
 
283
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:154
284
  msgid "Day"
285
  msgstr ""
286
 
287
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:158
288
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:162
289
  msgid "Days"
290
  msgstr ""
291
 
292
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:168
293
+ msgid "Sorting order."
294
+ msgstr ""
295
+
296
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:173
297
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:427
298
+ msgid "Default"
299
+ msgstr ""
300
+
301
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:177
302
+ msgid "Date Descending"
303
+ msgstr ""
304
+
305
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:181
306
+ msgid "Date Ascending"
307
+ msgstr ""
308
+
309
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:185
310
+ msgid "Title Descending"
311
+ msgstr ""
312
+
313
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:189
314
+ msgid "Title Ascending"
315
+ msgstr ""
316
+
317
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:195
318
+ msgid "Message to show when feed is empty"
319
+ msgstr ""
320
+
321
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:196
322
+ msgid "Feed has no items."
323
+ msgstr ""
324
+
325
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:201
326
+ msgid "Lazy load the feed (without slowing down the page)"
327
+ msgstr ""
328
+
329
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:218
330
  msgid "Item Options"
331
  msgstr ""
332
 
333
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:221
334
  msgid "Links may be opened in the same window or a new tab."
335
  msgstr ""
336
 
337
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:226
338
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:330
339
  msgid "Auto"
340
  msgstr ""
341
 
342
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:230
343
  msgid "_blank"
344
  msgstr ""
345
 
346
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:234
347
  msgid "_self"
348
  msgstr ""
349
 
350
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:238
351
  msgid "_parent"
352
  msgstr ""
353
 
354
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:242
355
  msgid "_top"
356
  msgstr ""
357
 
358
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:246
359
  msgid "framename"
360
  msgstr ""
361
 
362
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:252
363
+ msgid "Make this link a \"nofollow\" link?"
364
  msgstr ""
365
 
366
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:267
367
+ msgid ""
368
+ "Trim the title of the item after X characters. A value of 0 will remove the "
369
+ "title."
370
+ msgstr ""
371
+
372
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:268
373
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:302
374
  msgid "(eg: 160)"
375
  msgstr ""
376
 
377
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:274
378
+ msgid "(eg: author, date, time, tz=local)"
379
  msgstr ""
380
 
381
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:280
382
+ msgid "(eg: source)"
383
+ msgstr ""
384
+
385
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:285
386
  msgid "Should we display a description (abstract) of the retrieved item?"
387
  msgstr ""
388
 
389
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:300
390
  msgid "Crop description (summary) of the element after X characters."
391
  msgstr ""
392
 
393
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:306
394
  msgid ""
395
  "Only display item if title contains specific keyword(s) (comma-separated "
396
  "list/case sensitive)."
397
  msgstr ""
398
 
399
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:307
400
  msgid "(eg: news, sports etc.)"
401
  msgstr ""
402
 
403
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:313
404
  msgid ""
405
+ "Exclude items if title contains specific keyword(s) (comma-separated "
406
+ "list/case sensitive). "
407
  msgstr ""
408
 
409
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:314
410
  msgid "(eg: politics, gossip etc.)"
411
  msgstr ""
412
 
413
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:322
414
  msgid "Item Image Options"
415
  msgstr ""
416
 
417
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:325
418
  msgid "Should we display the first image of the content if it is available?"
419
  msgstr ""
420
 
421
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:344
422
  msgid "Default thumbnail URL if no image is found."
423
  msgstr ""
424
 
425
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:345
426
  msgid "Image URL"
427
  msgstr ""
428
 
429
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:349
430
  msgid "Select from Gallery"
431
  msgstr ""
432
 
433
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:353
434
  msgid "Thumbnails dimension. Do not include \"px\". Eg: 150"
435
  msgstr ""
436
 
437
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:354
438
  msgid "(eg: 150)"
439
  msgstr ""
440
 
441
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:359
442
+ msgid "How should we treat HTTP images?"
443
+ msgstr ""
444
+
445
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:364
446
+ msgid "Show with HTTP link"
447
+ msgstr ""
448
+
449
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:368
450
+ msgid "Force HTTPS (please verify that the images exist on HTTPS)"
451
+ msgstr ""
452
+
453
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:372
454
+ msgid "Ignore and show the default image instead"
455
+ msgstr ""
456
+
457
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:380
458
  msgid "PRO Options"
459
  msgstr ""
460
 
461
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:381
462
  msgid ""
463
  "Get access to more options and customizations with full version of Feedzy "
464
  "RSS Feeds . Use existing templates or extend them and make them your own."
465
  msgstr ""
466
 
467
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:381
468
  msgid "See more features of Feedzy RSS Feeds "
469
  msgstr ""
470
 
471
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:384
472
+ msgid ""
473
+ "Should we display the price from the feed if it is available? <br/> You can "
474
+ "read about how to extract price from a custom tag %1$shere%2$s"
 
 
475
  msgstr ""
476
 
477
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:400
478
+ msgid "Referral URL parameters as per %1$sthis document here%2$s"
479
  msgstr ""
480
 
481
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:407
482
  msgid "How many columns we should use to display the feed items"
483
  msgstr ""
484
 
485
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:408
486
  msgid "(eg. 1, 2, ..., 6)"
487
  msgstr ""
488
 
489
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:414
490
+ msgid ""
491
+ "Provide mapping for custom feed elements as per %1$sthis document here%2$s. "
492
+ "This will only work for single feeds, not comma-separated feeds."
493
  msgstr ""
494
 
495
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:421
496
+ msgid "Template to use when displaying the feed."
497
  msgstr ""
498
 
499
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:431
500
  msgid "Style 1"
501
  msgstr ""
502
 
503
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:435
504
  msgid "Style 2"
505
  msgstr ""
506
 
507
+ #: includes/admin/feedzy-wp-widget.php:40
508
+ msgid "Feedzy RSS Feeds"
509
+ msgstr ""
510
+
511
  #: includes/admin/feedzy-wp-widget.php:88
512
  msgid "Widget Title"
513
  msgstr ""
516
  msgid "Intro text"
517
  msgstr ""
518
 
519
+ #: includes/gutenberg/feedzy-rss-feeds-gutenberg-block.php:245
520
+ msgid "Invalid Feed URL"
521
+ msgstr ""
522
+
523
+ #: includes/layouts/settings.php:12 includes/layouts/settings.php:52
524
+ msgid "General"
525
+ msgstr ""
526
+
527
+ #: includes/layouts/settings.php:14 includes/layouts/settings.php:63
528
  msgid "Headers"
529
  msgstr ""
530
 
531
+ #: includes/layouts/settings.php:16
532
  msgid "Proxy"
533
  msgstr ""
534
 
535
+ #: includes/layouts/settings.php:56
536
+ msgid "Do NOT add the featured image to the website's RSS feed."
537
+ msgstr ""
538
+
539
+ #: includes/layouts/settings.php:65
540
  msgid "User Agent to use when accessing the feed"
541
  msgstr ""
542
 
543
+ #: includes/layouts/settings.php:76
544
  msgid "Proxy Settings"
545
  msgstr ""
546
 
547
+ #: includes/layouts/settings.php:78
548
  msgid "Host"
549
  msgstr ""
550
 
551
+ #: includes/layouts/settings.php:86
552
  msgid "Port"
553
  msgstr ""
554
 
555
+ #: includes/layouts/settings.php:94
556
  msgid "Username"
557
  msgstr ""
558
 
559
+ #: includes/layouts/settings.php:102
560
  msgid "Password"
561
  msgstr ""
562
 
563
+ #: includes/layouts/settings.php:131
564
  msgid "Save"
565
  msgstr ""
566
 
readme.md CHANGED
@@ -453,6 +453,16 @@ You have to check first if your feed is valid. Please test it here: https://vali
453
 
454
 
455
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
456
  ### 3.3.17 - 2020-01-30 ###
457
 
458
  * Release
453
 
454
 
455
  == Changelog ==
456
+ ### 3.3.18 - 2020-03-24 ###
457
+
458
+ * [Feat] Add support for lazyloading feed items
459
+ * [Fix] multiple_meta and offset parameters in the Feedzy widget
460
+ * [Fix] Missing Feedzy button in the Classic editor in Gutenberg
461
+ * [Fix] Conflict with RSS Aggregator in the Gutenberg editor
462
+ * [Fix] Notices when using Avada theme
463
+ * [Fix] Warnings when using multiple feeds in the shortcode
464
+
465
+
466
  ### 3.3.17 - 2020-01-30 ###
467
 
468
  * Release
readme.txt CHANGED
@@ -453,6 +453,16 @@ You have to check first if your feed is valid. Please test it here: https://vali
453
 
454
 
455
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
456
  = 3.3.17 - 2020-01-30 =
457
 
458
  * Release
453
 
454
 
455
  == Changelog ==
456
+ = 3.3.18 - 2020-03-24 =
457
+
458
+ * [Feat] Add support for lazyloading feed items
459
+ * [Fix] multiple_meta and offset parameters in the Feedzy widget
460
+ * [Fix] Missing Feedzy button in the Classic editor in Gutenberg
461
+ * [Fix] Conflict with RSS Aggregator in the Gutenberg editor
462
+ * [Fix] Notices when using Avada theme
463
+ * [Fix] Warnings when using multiple feeds in the shortcode
464
+
465
+
466
  = 3.3.17 - 2020-01-30 =
467
 
468
  * Release
themeisle-hash.json CHANGED
@@ -1 +1 @@
1
- {"feedzy-rss-feed.php":"e3853b67bedeabe30fd22d84bc065d4b","index.php":"71c0755260138a4b7b2182c3c61179f6","uninstall.php":"cdb21f8648e005cbb9c73481d1750186"}
1
+ {"feedzy-rss-feed.php":"a80c8584b68885fc0af345ef62feccb6","index.php":"71c0755260138a4b7b2182c3c61179f6","uninstall.php":"cdb21f8648e005cbb9c73481d1750186"}
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit5e62e90d38a9b3a40be26eb2fd78e490::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitb0e151ea025729319dce62f4dd9ff529::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInitc9b3fb6a93249727eed2aed87662e128::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit97176c48620cd01973110b667d33a4ed::getLoader();
vendor/codeinwp/themeisle-sdk/CHANGELOG.md CHANGED
@@ -1,3 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ## [3.1.8](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.7...v3.1.8) (2019-11-18)
2
 
3
 
1
+ ##### [Version 3.2.6](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.5...v3.2.6) (2020-03-23)
2
+
3
+ * Fix notice on license deactivation
4
+
5
+ ##### [Version 3.2.5](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.4...v3.2.5) (2020-03-23)
6
+
7
+ * always load notification manager last
8
+
9
+ ##### [Version 3.2.4](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.3...v3.2.4) (2020-03-21)
10
+
11
+ * Cast version response to array for icons
12
+
13
+ ##### [Version 3.2.3](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.2...v3.2.3) (2020-03-21)
14
+
15
+ * use product slug instead of the one from api
16
+
17
+ ##### [Version 3.2.2](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.1...v3.2.2) (2020-03-13)
18
+
19
+ * improve notice dismiss mechanism
20
+
21
+ ##### [Version 3.2.1](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.0...v3.2.1) (2020-03-05)
22
+
23
+ Fix rollback call for private products
24
+
25
+ #### [Version 3.2.0](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.9...v3.2.0) (2020-03-04)
26
+
27
+ * adds license activation/deactivation handlers for wp cli
28
+ * adds compatibility with the newest license API
29
+
30
+ ##### [Version 3.1.9](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.8...v3.1.9) (2020-02-24)
31
+
32
+ * Add integration with GitHub actions
33
+
34
  ## [3.1.8](https://github.com/Codeinwp/themeisle-sdk/compare/v3.1.7...v3.1.8) (2019-11-18)
35
 
36
 
vendor/codeinwp/themeisle-sdk/load.php CHANGED
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  return;
15
  }
16
  // Current SDK version and path.
17
- $themeisle_sdk_version = '3.1.8';
18
  $themeisle_sdk_path = dirname( __FILE__ );
19
 
20
  global $themeisle_sdk_max_version;
14
  return;
15
  }
16
  // Current SDK version and path.
17
+ $themeisle_sdk_version = '3.2.6';
18
  $themeisle_sdk_path = dirname( __FILE__ );
19
 
20
  global $themeisle_sdk_max_version;
vendor/codeinwp/themeisle-sdk/src/Loader.php CHANGED
@@ -51,11 +51,11 @@ final class Loader {
51
  'uninstall_feedback',
52
  'licenser',
53
  'endpoint',
54
- 'notification',
55
  'logger',
56
  'translate',
57
  'review',
58
  'recommendation',
 
59
 
60
  ];
61
 
@@ -75,6 +75,28 @@ final class Loader {
75
  }
76
  }
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  /**
79
  * Register product into SDK.
80
  *
51
  'uninstall_feedback',
52
  'licenser',
53
  'endpoint',
 
54
  'logger',
55
  'translate',
56
  'review',
57
  'recommendation',
58
+ 'notification',
59
 
60
  ];
61
 
75
  }
76
  }
77
 
78
+ /**
79
+ * Get cache token used in API requests.
80
+ *
81
+ * @return string Cache token.
82
+ */
83
+ public static function get_cache_token() {
84
+ $cache_token = get_transient( 'themeisle_sdk_cache_token' );
85
+ if ( false === $cache_token ) {
86
+ $cache_token = wp_generate_password( 6, false );
87
+ set_transient( $cache_token, WEEK_IN_SECONDS );
88
+ }
89
+
90
+ return $cache_token;
91
+ }
92
+
93
+ /**
94
+ * Clear cache token.
95
+ */
96
+ public static function clear_cache_token() {
97
+ delete_transient( 'themeisle_sdk_cache_token' );
98
+ }
99
+
100
  /**
101
  * Register product into SDK.
102
  *
vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php CHANGED
@@ -13,6 +13,7 @@ namespace ThemeisleSDK\Modules;
13
 
14
  // Exit if accessed directly.
15
  use ThemeisleSDK\Common\Abstract_Module;
 
16
  use ThemeisleSDK\Product;
17
 
18
  if ( ! defined( 'ABSPATH' ) ) {
@@ -55,6 +56,13 @@ class Licenser extends Abstract_Module {
55
  */
56
  private $product_key;
57
 
 
 
 
 
 
 
 
58
  /**
59
  * Disable wporg updates for premium products.
60
  *
@@ -233,10 +241,11 @@ class Licenser extends Abstract_Module {
233
  }
234
 
235
  if ( apply_filters( $this->product->get_key() . '_hide_license_notices', false ) ) {
236
- return;
237
  }
 
238
  $status = $this->get_license_status();
239
- $no_activations_string = apply_filters( $this->product->get_key() . '_lc_no_activations_string', 'No activations left for %s !!!. You need to upgrade your plan in order to use %s on more websites. Please ask the %s Staff for more details.' );
240
  $no_valid_string = apply_filters( $this->product->get_key() . '_lc_no_valid_string', 'In order to benefit from updates and support for %s, please add your license code from your <a href="%s" target="_blank">purchase history</a> and validate it <a href="%s">here</a>. ' );
241
 
242
  // No activations left for this license.
@@ -285,7 +294,7 @@ class Licenser extends Abstract_Module {
285
  return false;
286
  }
287
 
288
- return isset( $license_data->error ) ? ( 'no_activations_left' == $license_data->error ) : false;
289
 
290
  }
291
 
@@ -345,40 +354,26 @@ class Licenser extends Abstract_Module {
345
  */
346
  public function check_license() {
347
  $status = $this->get_license_status();
348
- if ( 'not_active' == $status ) {
349
  $license_data = new \stdClass();
350
  $license_data->license = 'not_active';
351
 
352
  return $license_data;
353
  }
354
- $license = trim( $this->license_key );
355
- $api_params = array(
356
- 'edd_action' => 'check_license',
357
- 'license' => $license,
358
- 'item_name' => rawurlencode( $this->product->get_name() ),
359
- 'url' => rawurlencode( home_url() ),
360
- );
361
- // Call the custom API.
362
- $response = wp_remote_get(
363
- add_query_arg( $api_params, $this->get_api_url() ),
364
- array(
365
- 'timeout' => 15,
366
- 'sslverify' => false,
367
- )
368
- );
369
  if ( is_wp_error( $response ) ) {
370
  $license_data = new \stdClass();
371
  $license_data->license = 'valid';
372
-
373
  } else {
374
- $license_data = json_decode( wp_remote_retrieve_body( $response ) );
375
- if ( ! is_object( $license_data ) ) {
376
- $license_data = new \stdClass();
377
- $license_data->license = 'valid';
378
- }
379
  }
 
380
  $license_old = get_option( $this->product->get_key() . '_license_data', '' );
381
- if ( 'valid' == $license_old->license && ( $license_data->license != $license_old->license ) ) {
 
382
  $this->increment_failed_checks();
383
  } else {
384
  $this->reset_failed_checks();
@@ -388,22 +383,10 @@ class Licenser extends Abstract_Module {
388
  return $license_old;
389
  }
390
 
391
- if ( isset( $license_old->hide_valid ) ) {
392
- $license_data->hide_valid = true;
393
- }
394
-
395
  if ( ! isset( $license_data->key ) ) {
396
  $license_data->key = isset( $license_old->key ) ? $license_old->key : '';
397
  }
398
 
399
- if ( isset( $license_old->hide_expiration ) ) {
400
- $license_data->hide_expiration = true;
401
- }
402
-
403
- if ( isset( $license_old->hide_activation ) ) {
404
- $license_data->hide_activation = true;
405
- }
406
-
407
  return $license_data;
408
 
409
  }
@@ -445,43 +428,65 @@ class Licenser extends Abstract_Module {
445
  }
446
 
447
  /**
448
- * Activate the license remotely.
 
 
 
 
 
449
  */
450
- function activate_license() {
451
- // listen for our activate button to be clicked.
452
- if ( ! isset( $_POST[ $this->product->get_key() . '_btn_trigger' ] ) ) {
453
- return;
454
  }
455
  $status = $this->get_license_status();
456
- // retrieve the license from the database.
457
- $license = $_POST[ $this->product->get_key() . '_license' ];
458
- $api_params = array(
459
- 'license' => $license,
460
- 'item_name' => rawurlencode( $this->product->get_name() ),
461
- 'url' => rawurlencode( home_url() ),
462
- );
463
- if ( 'valid' != $status ) {
464
- // data to send in our API request.
465
- $api_params['edd_action'] = 'activate_license';
466
- } else {
467
- $api_params['edd_action'] = 'deactivate_license';
468
  }
 
 
 
 
 
 
 
 
469
  // Call the custom API.
470
- $response = wp_remote_get( add_query_arg( $api_params, $this->get_api_url() ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
471
  // make sure the response came back okay.
472
  if ( is_wp_error( $response ) ) {
473
- $this->set_error( sprintf( 'ERROR: Failed to connect to the license service. Please try again later. Reason: %s', $response->get_error_message() ) );
474
-
475
- return;
476
  }
477
 
478
  $license_data = json_decode( wp_remote_retrieve_body( $response ) );
479
 
480
  if ( ! is_object( $license_data ) ) {
481
- $this->set_error( 'ERROR: Failed to validate license. Please try again in one minute.' );
482
-
483
- return;
484
  }
 
 
 
 
 
 
485
  if ( ! isset( $license_data->license ) ) {
486
  $license_data->license = 'invalid';
487
  }
@@ -489,26 +494,50 @@ class Licenser extends Abstract_Module {
489
  if ( ! isset( $license_data->key ) ) {
490
  $license_data->key = $license;
491
  }
492
- if ( 'valid' == $license_data->license ) {
493
  $this->reset_failed_checks();
494
  }
495
 
496
- $this->set_error( '' );
497
-
498
- if ( 'deactivate_license' === $api_params['edd_action'] ) {
499
 
500
  delete_option( $this->product->get_key() . '_license_data' );
501
  delete_option( $this->product->get_key() . '_license_plan' );
502
  delete_transient( $this->product->get_key() . '_license_data' );
503
 
504
- return;
505
  }
506
  if ( isset( $license_data->plan ) ) {
507
  update_option( $this->product->get_key() . '_license_plan', $license_data->plan );
508
  }
509
  update_option( $this->product->get_key() . '_license_data', $license_data );
510
  set_transient( $this->product->get_key() . '_license_data', $license_data, 12 * HOUR_IN_SECONDS );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511
 
 
 
 
 
 
 
 
512
  }
513
 
514
  /**
@@ -607,17 +636,16 @@ class Licenser extends Abstract_Module {
607
  * @return bool|mixed Update api response.
608
  */
609
  private function get_version_data() {
610
- $api_params = array(
611
- 'edd_action' => 'get_version',
612
- 'version' => $this->product->get_version(),
613
- 'license' => empty( $this->license_key ) ? 'free' : $this->license_key,
614
- 'name' => rawurlencode( $this->product->get_name() ),
615
- 'slug' => $this->product->get_slug(),
616
- 'author' => rawurlencode( $this->get_distributor_name() ),
617
- 'url' => rawurlencode( home_url() ),
618
- );
619
- $response = wp_remote_get(
620
- add_query_arg( $api_params, $this->get_api_url() ),
621
  array(
622
  'timeout' => 15,
623
  'sslverify' => false,
@@ -630,7 +658,15 @@ class Licenser extends Abstract_Module {
630
  if ( ! is_object( $update_data ) ) {
631
  return false;
632
  }
633
-
 
 
 
 
 
 
 
 
634
  return $update_data;
635
  }
636
 
@@ -660,7 +696,6 @@ class Licenser extends Abstract_Module {
660
  $_transient_data->response[ $this->product->get_slug() . '/' . $this->product->get_file() ] = $api_response;
661
  }
662
  }
663
-
664
  return $_transient_data;
665
  }
666
 
@@ -694,7 +729,7 @@ class Licenser extends Abstract_Module {
694
  * @return object $_data
695
  */
696
  public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
697
- if ( ( 'plugin_information' != $_action ) || ! isset( $_args->slug ) || ( $_args->slug != $this->product->get_slug() ) ) {
698
  return $_data;
699
  }
700
  $api_response = $this->api_request();
@@ -757,6 +792,18 @@ class Licenser extends Abstract_Module {
757
  $this->register_license_hooks();
758
  }
759
 
 
 
 
 
 
 
 
 
 
 
 
 
760
  if ( $this->product->is_plugin() ) {
761
  add_filter(
762
  'pre_set_site_transient_update_plugins',
@@ -785,12 +832,133 @@ class Licenser extends Abstract_Module {
785
  return $this;
786
  }
787
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
788
  /**
789
  * Register license fields for the products.
790
  */
791
  public function register_license_hooks() {
792
  add_action( 'admin_init', array( $this, 'register_settings' ) );
793
- add_action( 'admin_init', array( $this, 'activate_license' ) );
794
  add_action( 'admin_init', array( $this, 'product_valid' ), 99999999 );
795
  add_action( 'admin_notices', array( $this, 'show_notice' ) );
796
  add_filter( $this->product->get_key() . '_license_status', array( $this, 'get_license_status' ) );
13
 
14
  // Exit if accessed directly.
15
  use ThemeisleSDK\Common\Abstract_Module;
16
+ use ThemeisleSDK\Loader;
17
  use ThemeisleSDK\Product;
18
 
19
  if ( ! defined( 'ABSPATH' ) ) {
56
  */
57
  private $product_key;
58
 
59
+ /**
60
+ * Holds local license object.
61
+ *
62
+ * @var null Local license object.
63
+ */
64
+ private $license_local = null;
65
+
66
  /**
67
  * Disable wporg updates for premium products.
68
  *
241
  }
242
 
243
  if ( apply_filters( $this->product->get_key() . '_hide_license_notices', false ) ) {
244
+ return false;
245
  }
246
+
247
  $status = $this->get_license_status();
248
+ $no_activations_string = apply_filters( $this->product->get_key() . '_lc_no_activations_string', 'No more activations left for %s. You need to upgrade your plan in order to use %s on more websites. If you need assistance, please get in touch with %s staff.' );
249
  $no_valid_string = apply_filters( $this->product->get_key() . '_lc_no_valid_string', 'In order to benefit from updates and support for %s, please add your license code from your <a href="%s" target="_blank">purchase history</a> and validate it <a href="%s">here</a>. ' );
250
 
251
  // No activations left for this license.
294
  return false;
295
  }
296
 
297
+ return isset( $license_data->license ) ? ( 'no_activations_left' == $license_data->license ) : false;
298
 
299
  }
300
 
354
  */
355
  public function check_license() {
356
  $status = $this->get_license_status();
357
+ if ( 'not_active' === $status ) {
358
  $license_data = new \stdClass();
359
  $license_data->license = 'not_active';
360
 
361
  return $license_data;
362
  }
363
+ $license = trim( $this->license_key );
364
+
365
+ $response = $this->do_license_process( $license, 'check' );
366
+
 
 
 
 
 
 
 
 
 
 
 
367
  if ( is_wp_error( $response ) ) {
368
  $license_data = new \stdClass();
369
  $license_data->license = 'valid';
 
370
  } else {
371
+ $license_data = $response;
 
 
 
 
372
  }
373
+
374
  $license_old = get_option( $this->product->get_key() . '_license_data', '' );
375
+
376
+ if ( 'valid' === $license_old->license && ( $license_data->license !== $license_old->license ) ) {
377
  $this->increment_failed_checks();
378
  } else {
379
  $this->reset_failed_checks();
383
  return $license_old;
384
  }
385
 
 
 
 
 
386
  if ( ! isset( $license_data->key ) ) {
387
  $license_data->key = isset( $license_old->key ) ? $license_old->key : '';
388
  }
389
 
 
 
 
 
 
 
 
 
390
  return $license_data;
391
 
392
  }
428
  }
429
 
430
  /**
431
+ * Do license activation/deactivation.
432
+ *
433
+ * @param string $license License key.
434
+ * @param string $action What do to.
435
+ *
436
+ * @return bool|\WP_Error
437
  */
438
+ private function do_license_process( $license, $action = 'toggle' ) {
439
+ if ( strlen( $license ) < 10 ) {
440
+ return new \WP_Error( 'themeisle-license-invalid-format', 'Invalid license.' );
 
441
  }
442
  $status = $this->get_license_status();
443
+
444
+ if ( 'valid' === $status && 'activate' === $action ) {
445
+ return new \WP_Error( 'themeisle-license-already-active', 'License is already active.' );
 
 
 
 
 
 
 
 
 
446
  }
447
+ if ( 'valid' !== $status && 'deactivate' === $action ) {
448
+ return new \WP_Error( 'themeisle-license-already-deactivate', 'License not active.' );
449
+ }
450
+
451
+ if ( 'toggle' === $action ) {
452
+ $action = ( 'valid' !== $status ? ( 'activate' ) : ( 'deactivate' ) );
453
+ }
454
+
455
  // Call the custom API.
456
+ if ( 'check' === $action ) {
457
+ $response = wp_remote_get( sprintf( '%slicense/check/%s/%s/%s/%s', Product::API_URL, rawurlencode( $this->product->get_name() ), $license, rawurlencode( home_url() ), Loader::get_cache_token() ) );
458
+ } else {
459
+ $response = wp_remote_post(
460
+ sprintf( '%slicense/%s/%s/%s', Product::API_URL, $action, rawurlencode( $this->product->get_name() ), $license ),
461
+ array(
462
+ 'body' => wp_json_encode(
463
+ array(
464
+ 'url' => rawurlencode( home_url() ),
465
+ )
466
+ ),
467
+ 'headers' => array(
468
+ 'Content-Type' => 'application/json',
469
+ ),
470
+ )
471
+ );
472
+ }
473
+
474
  // make sure the response came back okay.
475
  if ( is_wp_error( $response ) ) {
476
+ return new \WP_Error( 'themeisle-license-500', sprintf( 'ERROR: Failed to connect to the license service. Please try again later. Reason: %s', $response->get_error_message() ) );
 
 
477
  }
478
 
479
  $license_data = json_decode( wp_remote_retrieve_body( $response ) );
480
 
481
  if ( ! is_object( $license_data ) ) {
482
+ return new \WP_Error( 'themeisle-license-404', 'ERROR: Failed to validate license. Please try again in one minute.' );
 
 
483
  }
484
+ if ( 'check' === $action ) {
485
+ return $license_data;
486
+ }
487
+
488
+ Loader::clear_cache_token();
489
+
490
  if ( ! isset( $license_data->license ) ) {
491
  $license_data->license = 'invalid';
492
  }
494
  if ( ! isset( $license_data->key ) ) {
495
  $license_data->key = $license;
496
  }
497
+ if ( 'valid' === $license_data->license ) {
498
  $this->reset_failed_checks();
499
  }
500
 
501
+ if ( 'deactivate' === $action ) {
 
 
502
 
503
  delete_option( $this->product->get_key() . '_license_data' );
504
  delete_option( $this->product->get_key() . '_license_plan' );
505
  delete_transient( $this->product->get_key() . '_license_data' );
506
 
507
+ return true;
508
  }
509
  if ( isset( $license_data->plan ) ) {
510
  update_option( $this->product->get_key() . '_license_plan', $license_data->plan );
511
  }
512
  update_option( $this->product->get_key() . '_license_data', $license_data );
513
  set_transient( $this->product->get_key() . '_license_data', $license_data, 12 * HOUR_IN_SECONDS );
514
+ if ( 'activate' === $action && 'valid' !== $license_data->license ) {
515
+ return new \WP_Error( 'themeisle-license-invalid', 'ERROR: Invalid license provided.' );
516
+ }
517
+
518
+ return true;
519
+ }
520
+
521
+ /**
522
+ * Activate the license remotely.
523
+ */
524
+ function process_license() {
525
+ // listen for our activate button to be clicked.
526
+ if ( ! isset( $_POST[ $this->product->get_key() . '_btn_trigger' ] ) ) {
527
+ return;
528
+ }
529
+ $license = $_POST[ $this->product->get_key() . '_license' ];
530
+ $response = $this->do_license_process( $license, 'toggle' );
531
+ if ( is_wp_error( $response ) ) {
532
+ $this->set_error( $response->get_error_message() );
533
 
534
+ return;
535
+ }
536
+ if ( true === $response ) {
537
+ $this->set_error( '' );
538
+ }
539
+
540
+ return;
541
  }
542
 
543
  /**
636
  * @return bool|mixed Update api response.
637
  */
638
  private function get_version_data() {
639
+
640
+ $response = wp_remote_get(
641
+ sprintf(
642
+ '%slicense/version/%s/%s/%s/%s',
643
+ Product::API_URL,
644
+ rawurlencode( $this->product->get_name() ),
645
+ ( empty( $this->license_key ) ? 'free' : $this->license_key ),
646
+ $this->product->get_version(),
647
+ rawurlencode( home_url() )
648
+ ),
 
649
  array(
650
  'timeout' => 15,
651
  'sslverify' => false,
658
  if ( ! is_object( $update_data ) ) {
659
  return false;
660
  }
661
+ if ( isset( $update_data->slug ) ) {
662
+ $update_data->slug = $this->product->get_slug();
663
+ }
664
+ if ( isset( $update_data->icons ) ) {
665
+ $update_data->icons = (array) $update_data->icons;
666
+ }
667
+ if ( isset( $update_data->banners ) ) {
668
+ $update_data->banners = (array) $update_data->banners;
669
+ }
670
  return $update_data;
671
  }
672
 
696
  $_transient_data->response[ $this->product->get_slug() . '/' . $this->product->get_file() ] = $api_response;
697
  }
698
  }
 
699
  return $_transient_data;
700
  }
701
 
729
  * @return object $_data
730
  */
731
  public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
732
+ if ( ( 'plugin_information' !== $_action ) || ! isset( $_args->slug ) || ( $_args->slug !== $this->product->get_slug() ) ) {
733
  return $_data;
734
  }
735
  $api_response = $this->api_request();
792
  $this->register_license_hooks();
793
  }
794
 
795
+ $namespace = apply_filters( 'themesle_sdk_namespace_' . md5( $product->get_basefile() ), false );
796
+
797
+ if ( false !== $namespace ) {
798
+ add_filter( 'themeisle_sdk_license_process_' . $namespace, [ $this, 'process_license' ], 10, 2 );
799
+ if ( defined( 'WP_CLI' ) && WP_CLI ) {
800
+ \WP_CLI::add_command( $namespace . ' activate', [ $this, 'cli_activate' ] );
801
+ \WP_CLI::add_command( $namespace . ' deactivate', [ $this, 'cli_deactivate' ] );
802
+ \WP_CLI::add_command( $namespace . ' is-active', [ $this, 'cli_is_active' ] );
803
+ }
804
+ }
805
+
806
+ add_action( 'admin_head', [ $this, 'auto_activate' ] );
807
  if ( $this->product->is_plugin() ) {
808
  add_filter(
809
  'pre_set_site_transient_update_plugins',
832
  return $this;
833
  }
834
 
835
+ /**
836
+ * Run license activation on plugin activate.
837
+ */
838
+ public function auto_activate() {
839
+ if ( ! current_user_can( 'switch_themes' ) ) {
840
+ return;
841
+ }
842
+ $status = $this->get_license_status();
843
+ if ( 'not_active' !== $status ) {
844
+ return;
845
+ }
846
+
847
+ $license_file = dirname( $this->product->get_basefile() ) . '/license.json';
848
+
849
+ global $wp_filesystem;
850
+ if ( ! is_file( $license_file ) ) {
851
+ return;
852
+ }
853
+
854
+ require_once( ABSPATH . '/wp-admin/includes/file.php' );
855
+ \WP_Filesystem();
856
+ $content = json_decode( $wp_filesystem->get_contents( $license_file ) );
857
+ if ( ! is_object( $content ) ) {
858
+ return;
859
+ }
860
+ if ( ! isset( $content->key ) ) {
861
+ return;
862
+ }
863
+ $this->license_local = $content;
864
+ $lock_key = $this->product->get_key() . '_autoactivated';
865
+
866
+ if ( 'yes' === get_option( $lock_key, '' ) ) {
867
+ return;
868
+ }
869
+ $response = $this->do_license_process( $content->key, 'activate' );
870
+
871
+ update_option( $lock_key, 'yes' );
872
+
873
+ if ( apply_filters( $this->product->get_key() . '_hide_license_notices', false ) ) {
874
+ return;
875
+ }
876
+
877
+ if ( true === $response ) {
878
+ add_action( 'admin_notices', [ $this, 'autoactivate_notice' ] );
879
+ }
880
+ }
881
+
882
+ /**
883
+ * Show auto-activate notice.
884
+ */
885
+ public function autoactivate_notice() {
886
+ ?>
887
+ <div class="notice notice-success is-dismissible">
888
+ <p><?php echo sprintf( '<strong>%s</strong> has been successfully activated using <strong>%s</strong> license !', $this->product->get_name(), str_repeat( '*', 20 ) . substr( $this->license_local->key, - 10 ) ); ?></p>
889
+ </div>
890
+ <?php
891
+ }
892
+
893
+ /**
894
+ * Activate product license on this site.
895
+ *
896
+ * ## OPTIONS
897
+ *
898
+ * @param array $args Command args.
899
+ *
900
+ * [<license-key>]
901
+ * : Product license key.
902
+ */
903
+ public function cli_activate( $args ) {
904
+ $license_key = isset( $args[0] ) ? trim( $args[0] ) : '';
905
+ $response = $this->do_license_process( $license_key, 'activate' );
906
+ if ( true !== $response ) {
907
+ \WP_CLI::error( $response->get_error_message() );
908
+
909
+ return;
910
+ }
911
+
912
+ \WP_CLI::success( 'Product successfully activated.' );
913
+ }
914
+
915
+ /**
916
+ * Deactivate product license on this site.
917
+ *
918
+ * @param array $args Command args.
919
+ *
920
+ * ## OPTIONS
921
+ *
922
+ * [<license-key>]
923
+ * : Product license key.
924
+ */
925
+ public function cli_deactivate( $args ) {
926
+ $license_key = isset( $args[0] ) ? trim( $args[0] ) : '';
927
+ $response = $this->do_license_process( $license_key, 'deactivate' );
928
+ if ( true !== $response ) {
929
+ \WP_CLI::error( $response->get_error_message() );
930
+
931
+ return;
932
+ }
933
+
934
+ \WP_CLI::success( 'Product successfully deactivated.' );
935
+ }
936
+
937
+ /**
938
+ * Checks if product has license activated.
939
+ *
940
+ * @param array $args Command args.
941
+ *
942
+ * @subcommand is-active
943
+ */
944
+ public function cli_is_active( $args ) {
945
+
946
+ $status = $this->get_license_status();
947
+ if ( 'valid' === $status ) {
948
+ \WP_CLI::halt( 0 );
949
+
950
+ return;
951
+ }
952
+
953
+ \WP_CLI::halt( 1 );
954
+ }
955
+
956
  /**
957
  * Register license fields for the products.
958
  */
959
  public function register_license_hooks() {
960
  add_action( 'admin_init', array( $this, 'register_settings' ) );
961
+ add_action( 'admin_init', array( $this, 'process_license' ) );
962
  add_action( 'admin_init', array( $this, 'product_valid' ), 99999999 );
963
  add_action( 'admin_notices', array( $this, 'show_notice' ) );
964
  add_filter( $this->product->get_key() . '_license_status', array( $this, 'get_license_status' ) );
vendor/codeinwp/themeisle-sdk/src/Modules/Notification.php CHANGED
@@ -226,7 +226,7 @@ class Notification extends Abstract_Module {
226
  /**
227
  * Get last notification details.
228
  *
229
- * @return array Last notification details.
230
  */
231
  private static function get_last_active_notification_timestamp() {
232
  $notification = self::get_notifications_metadata();
@@ -374,6 +374,10 @@ class Notification extends Abstract_Module {
374
  if ( empty( $id ) ) {
375
  wp_send_json( [] );
376
  }
 
 
 
 
377
  self::set_last_active_notification_timestamp();
378
  update_option( $id, $confirm );
379
  do_action( $id . '_process_confirm', $confirm );
226
  /**
227
  * Get last notification details.
228
  *
229
+ * @return int Last notification details.
230
  */
231
  private static function get_last_active_notification_timestamp() {
232
  $notification = self::get_notifications_metadata();
374
  if ( empty( $id ) ) {
375
  wp_send_json( [] );
376
  }
377
+ $ids = wp_list_pluck( self::$notifications, 'id' );
378
+ if ( ! in_array( $id, $ids, true ) ) {
379
+ wp_send_json( [] );
380
+ }
381
  self::set_last_active_notification_timestamp();
382
  update_option( $id, $confirm );
383
  do_action( $id . '_process_confirm', $confirm );
vendor/codeinwp/themeisle-sdk/src/Modules/Rollback.php CHANGED
@@ -167,7 +167,7 @@ class Rollback extends Abstract_Module {
167
  return '';
168
  }
169
 
170
- return sprintf( '%s?edd_action=get_versions&name=%s&url=%s&license=%s', $this->product->get_store_url(), urlencode( $this->product->get_name() ), urlencode( get_site_url() ), $license );
171
  }
172
 
173
  /**
167
  return '';
168
  }
169
 
170
+ return sprintf( '%slicense/versions/%s/%s/%s/%s', Product::API_URL, rawurlencode( $this->product->get_name() ), $license, urlencode( get_site_url() ), $this->product->get_version() );
171
  }
172
 
173
  /**
vendor/codeinwp/themeisle-sdk/src/Product.php CHANGED
@@ -106,7 +106,10 @@ class Product {
106
  * @var string $version The product version.
107
  */
108
  private $version;
109
-
 
 
 
110
  /**
111
  * ThemeIsle_SDK_Product constructor.
112
  *
106
  * @var string $version The product version.
107
  */
108
  private $version;
109
+ /**
110
+ * Root api endpoint.
111
+ */
112
+ const API_URL = 'https://api.themeisle.com/';
113
  /**
114
  * ThemeIsle_SDK_Product constructor.
115
  *
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit5e62e90d38a9b3a40be26eb2fd78e490
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit5e62e90d38a9b3a40be26eb2fd78e490
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit5e62e90d38a9b3a40be26eb2fd78e490', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit5e62e90d38a9b3a40be26eb2fd78e490', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@ class ComposerAutoloaderInit5e62e90d38a9b3a40be26eb2fd78e490
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
- composerRequire5e62e90d38a9b3a40be26eb2fd78e490($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
- function composerRequire5e62e90d38a9b3a40be26eb2fd78e490($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitb0e151ea025729319dce62f4dd9ff529
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitb0e151ea025729319dce62f4dd9ff529', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitb0e151ea025729319dce62f4dd9ff529', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
+ composerRequireb0e151ea025729319dce62f4dd9ff529($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
+ function composerRequireb0e151ea025729319dce62f4dd9ff529($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
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 ComposerAutoloaderInitc9b3fb6a93249727eed2aed87662e128 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitc9b3fb6a93249727eed2aed87662e128 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitc9b3fb6a93249727eed2aed87662e128', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitc9b3fb6a93249727eed2aed87662e128', '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 ComposerAutoloaderInit97176c48620cd01973110b667d33a4ed {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit97176c48620cd01973110b667d33a4ed', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit97176c48620cd01973110b667d33a4ed', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/installed.json CHANGED
@@ -6,12 +6,12 @@
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
9
- "reference": "d036ec8dd9ad318a05af3f21222025ec6a389a42"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/d036ec8dd9ad318a05af3f21222025ec6a389a42",
14
- "reference": "d036ec8dd9ad318a05af3f21222025ec6a389a42",
15
  "shasum": ""
16
  },
17
  "require-dev": {
@@ -19,7 +19,7 @@
19
  "squizlabs/php_codesniffer": "^3.1",
20
  "wp-coding-standards/wpcs": "^1.0.0"
21
  },
22
- "time": "2019-11-18 12:33:19",
23
  "type": "library",
24
  "installation-source": "source",
25
  "notification-url": "https://packagist.org/downloads/",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
9
+ "reference": "41046ea36eb4336152517e0f81994fd1497d7de4"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/41046ea36eb4336152517e0f81994fd1497d7de4",
14
+ "reference": "41046ea36eb4336152517e0f81994fd1497d7de4",
15
  "shasum": ""
16
  },
17
  "require-dev": {
19
  "squizlabs/php_codesniffer": "^3.1",
20
  "wp-coding-standards/wpcs": "^1.0.0"
21
  },
22
+ "time": "2020-03-23 21:32:23",
23
  "type": "library",
24
  "installation-source": "source",
25
  "notification-url": "https://packagist.org/downloads/",