Version Description
06.12.2022
- Tweak: Added various type validations for REST routes.
- Tweak: Increase Gutenberg compatibility for all-products block, cart block and checkout block.
- Tweak: Streamlined code for backend product retrieval and excluded saving product transients on cart and checkout pages.
- Tweak: Made sure that the action scheduler hooks always get registered (even when an Ajax request is happening).
Download this release
Release Info
Developer | alekv |
Plugin | Pixel Manager for WooCommerce – Track Google Analytics, Google Ads, Facebook and more |
Version | 1.27.8 |
Comparing to | |
See all releases |
Code changes from version 1.27.7 to 1.27.8
- classes/admin/class-admin.php +16 -16
- classes/admin/class-debug-info.php +1 -1
- classes/admin/class-environment-check.php +8 -1
- classes/class-database.php +3 -3
- classes/class-helpers.php +11 -1
- classes/class-options.php +27 -6
- classes/class-shop.php +25 -2
- classes/pixels/class-pixel-manager.php +62 -54
- classes/pixels/facebook/class-facebook-pixel-manager.php +1 -1
- classes/pixels/google/class-google-pixel-manager.php +1 -1
- js/public/wpm-public.p1.min.js +1 -1
- js/public/wpm-public.p1.min.js.br +0 -0
- js/public/wpm-public.p1.min.js.gz +0 -0
- js/public/wpm-public.p1.min.js.map +1 -1
- languages/woocommerce-google-adwords-conversion-tracking-tag.pot +7 -7
- readme.txt +11 -1
- vendor/composer/installed.json +14 -14
- vendor/composer/installed.php +9 -9
- vendor/freemius/wordpress-sdk/assets/css/admin/add-ons.css +1 -1
- vendor/freemius/wordpress-sdk/includes/class-freemius.php +6 -6
- vendor/freemius/wordpress-sdk/includes/class-fs-plugin-updater.php +32 -11
- vendor/freemius/wordpress-sdk/includes/entities/class-fs-plugin-tag.php +4 -0
- vendor/freemius/wordpress-sdk/includes/fs-plugin-info-dialog.php +54 -3
- vendor/freemius/wordpress-sdk/languages/freemius-cs_CZ.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-da_DK.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-de_DE.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-en.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-es_ES.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-fr_FR.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-he_IL.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-hu_HU.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-it_IT.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-ja.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-nl_NL.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-ru_RU.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-ta.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius-zh_CN.mo +0 -0
- vendor/freemius/wordpress-sdk/languages/freemius.pot +116 -104
- vendor/freemius/wordpress-sdk/start.php +1 -1
- vendor/freemius/wordpress-sdk/templates/connect.php +2 -2
- vendor/freemius/wordpress-sdk/templates/plugin-info/description.php +1 -1
- vendor/giggsey/libphonenumber-for-php/METADATA-VERSION.txt +1 -1
- vendor/giggsey/libphonenumber-for-php/src/ShortNumberInfo.php +4 -0
- vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/350.php +6 -1
- vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/420.php +1 -0
- vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/51.php +2 -0
- vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/996.php +1 -0
- vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberAlternateFormats_7.php +4 -4
- vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberMetadata_GI.php +2 -2
- vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberMetadata_KG.php +1 -1
- vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberMetadata_KZ.php +1 -1
- vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberMetadata_RU.php +4 -4
- vendor/giggsey/libphonenumber-for-php/src/geocoding/data/en/64.php +237 -513
- vendor/giggsey/libphonenumber-for-php/src/geocoding/data/en/7.php +5 -1
- vendor/giggsey/libphonenumber-for-php/src/geocoding/data/ru/7.php +5 -1
- vendor/giggsey/libphonenumber-for-php/src/timezone/data/map_data.php +2 -2
- wgact.php +2 -5
classes/admin/class-admin.php
CHANGED
@@ -47,7 +47,7 @@ class Admin
|
|
47 |
wpm_fs()->add_filter( 'templates/checkout.php', [ $this, 'fs_inject_additional_scripts' ] );
|
48 |
wpm_fs()->add_filter( 'checkout/purchaseCompleted', [ $this, 'fs_after_purchase_js' ] );
|
49 |
// end __construct
|
50 |
-
if ( wpm_fs()->
|
51 |
// https://stackoverflow.com/a/45617265/4688612
|
52 |
// https://stackoverflow.com/a/37780501/4688612
|
53 |
add_action( 'add_meta_boxes', function () {
|
@@ -338,7 +338,7 @@ class Admin
|
|
338 |
$section_ids['settings_name']
|
339 |
);
|
340 |
|
341 |
-
if ( wpm_fs()->
|
342 |
// add the field for the Bing Ads UET tag ID
|
343 |
add_settings_field(
|
344 |
'wpm_plugin_bing_uet_tag_id',
|
@@ -416,7 +416,7 @@ class Admin
|
|
416 |
$this->add_section_advanced_subsection_shop( $section_ids );
|
417 |
$this->add_section_advanced_subsection_google( $section_ids );
|
418 |
|
419 |
-
if ( wpm_fs()->
|
420 |
$this->add_section_advanced_subsection_facebook( $section_ids );
|
421 |
$this->add_section_advanced_subsection_tiktok( $section_ids );
|
422 |
$this->add_section_advanced_subsection_cookie_consent_mgmt( $section_ids );
|
@@ -464,7 +464,7 @@ class Admin
|
|
464 |
$section_ids['settings_name']
|
465 |
);
|
466 |
|
467 |
-
if ( wpm_fs()->
|
468 |
// add checkbox for disabling tracking for user roles
|
469 |
add_settings_field(
|
470 |
'wpm_setting_disable_tracking_for_user_roles',
|
@@ -491,7 +491,7 @@ class Admin
|
|
491 |
'wpm_plugin_options_page',
|
492 |
$section_ids['settings_name']
|
493 |
);
|
494 |
-
if ( wpm_fs()->
|
495 |
// Add checkbox for the scroll tracker
|
496 |
add_settings_field(
|
497 |
'pmw_setting_scroll_tracker_thresholds',
|
@@ -527,7 +527,7 @@ class Admin
|
|
527 |
$section_ids['settings_name']
|
528 |
);
|
529 |
|
530 |
-
if ( wpm_fs()->
|
531 |
// add fields for the Google enhanced e-commerce
|
532 |
add_settings_field(
|
533 |
'wpm_setting_google_analytics_eec',
|
@@ -571,7 +571,7 @@ class Admin
|
|
571 |
$section_ids['settings_name']
|
572 |
);
|
573 |
|
574 |
-
if ( wpm_fs()->
|
575 |
// add user_id for the Google
|
576 |
add_settings_field(
|
577 |
'wpm_setting_google_user_id',
|
@@ -591,7 +591,7 @@ class Admin
|
|
591 |
}
|
592 |
|
593 |
|
594 |
-
if ( wpm_fs()->
|
595 |
// add fields for the Google Ads phone conversion number
|
596 |
add_settings_field(
|
597 |
'wpm_plugin_google_ads_phone_conversion_number',
|
@@ -888,7 +888,7 @@ class Admin
|
|
888 |
'wpm_plugin_options_page',
|
889 |
'wpm_plugin_beta_section'
|
890 |
);
|
891 |
-
if ( wpm_fs()->
|
892 |
// google_business_vertical
|
893 |
add_settings_field(
|
894 |
'wpm_plugin_google_business_vertical',
|
@@ -1946,7 +1946,7 @@ class Admin
|
|
1946 |
</label>
|
1947 |
<?php
|
1948 |
|
1949 |
-
if ( wpm_fs()->
|
1950 |
?>
|
1951 |
<br>
|
1952 |
<label>
|
@@ -1956,7 +1956,7 @@ class Admin
|
|
1956 |
echo checked( 2, $this->options['shop']['order_total_logic'], false ) ;
|
1957 |
?>
|
1958 |
<?php
|
1959 |
-
if ( !Environment_Check::get_instance()->is_a_cog_plugin_active() || !wpm_fs()->
|
1960 |
?>
|
1961 |
disabled
|
1962 |
<?php
|
@@ -1987,7 +1987,7 @@ class Admin
|
|
1987 |
?>
|
1988 |
<?php
|
1989 |
|
1990 |
-
if ( wpm_fs()->
|
1991 |
?>
|
1992 |
</div>
|
1993 |
<div style="margin-top: 10px">
|
@@ -2127,7 +2127,7 @@ class Admin
|
|
2127 |
public function wpm_info_html_google_analytics_eec()
|
2128 |
{
|
2129 |
esc_html_e( 'Google Analytics Enhanced E-Commerce is ', 'woocommerce-google-adwords-conversion-tracking-tag' );
|
2130 |
-
$this->get_status_icon( wpm_fs()->
|
2131 |
$this->html_pro_feature();
|
2132 |
// $this->get_documentation_html_by_key('eec');
|
2133 |
}
|
@@ -3108,7 +3108,7 @@ class Admin
|
|
3108 |
public function wpm_info_html_acr()
|
3109 |
{
|
3110 |
esc_html_e( 'Automatic Conversion Recovery (ACR) is ', 'woocommerce-google-adwords-conversion-tracking-tag' );
|
3111 |
-
$this->get_status_icon( wpm_fs()->
|
3112 |
$this->html_pro_feature();
|
3113 |
$this->get_documentation_html_by_key( 'acr' );
|
3114 |
}
|
@@ -3522,7 +3522,7 @@ class Admin
|
|
3522 |
private function html_pro_feature()
|
3523 |
{
|
3524 |
|
3525 |
-
if ( !wpm_fs()->
|
3526 |
// if (1===1) {
|
3527 |
// return '<div class="pmw-pro-feature">' . esc_html__('Pro Feature', 'woocommerce-google-adwords-conversion-tracking-tag') . '</div>';
|
3528 |
?>
|
@@ -3552,7 +3552,7 @@ class Admin
|
|
3552 |
private function disable_if_demo()
|
3553 |
{
|
3554 |
|
3555 |
-
if ( !wpm_fs()->
|
3556 |
return 'disabled';
|
3557 |
} else {
|
3558 |
return '';
|
47 |
wpm_fs()->add_filter( 'templates/checkout.php', [ $this, 'fs_inject_additional_scripts' ] );
|
48 |
wpm_fs()->add_filter( 'checkout/purchaseCompleted', [ $this, 'fs_after_purchase_js' ] );
|
49 |
// end __construct
|
50 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() && $this->google->is_ga4_data_api_active() ) {
|
51 |
// https://stackoverflow.com/a/45617265/4688612
|
52 |
// https://stackoverflow.com/a/37780501/4688612
|
53 |
add_action( 'add_meta_boxes', function () {
|
338 |
$section_ids['settings_name']
|
339 |
);
|
340 |
|
341 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() || $this->options['general']['pro_version_demo'] ) {
|
342 |
// add the field for the Bing Ads UET tag ID
|
343 |
add_settings_field(
|
344 |
'wpm_plugin_bing_uet_tag_id',
|
416 |
$this->add_section_advanced_subsection_shop( $section_ids );
|
417 |
$this->add_section_advanced_subsection_google( $section_ids );
|
418 |
|
419 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() || $this->pro_version_demo_active() ) {
|
420 |
$this->add_section_advanced_subsection_facebook( $section_ids );
|
421 |
$this->add_section_advanced_subsection_tiktok( $section_ids );
|
422 |
$this->add_section_advanced_subsection_cookie_consent_mgmt( $section_ids );
|
464 |
$section_ids['settings_name']
|
465 |
);
|
466 |
|
467 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() || $this->options['general']['pro_version_demo'] ) {
|
468 |
// add checkbox for disabling tracking for user roles
|
469 |
add_settings_field(
|
470 |
'wpm_setting_disable_tracking_for_user_roles',
|
491 |
'wpm_plugin_options_page',
|
492 |
$section_ids['settings_name']
|
493 |
);
|
494 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() || $this->options['general']['pro_version_demo'] ) {
|
495 |
// Add checkbox for the scroll tracker
|
496 |
add_settings_field(
|
497 |
'pmw_setting_scroll_tracker_thresholds',
|
527 |
$section_ids['settings_name']
|
528 |
);
|
529 |
|
530 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() || $this->pro_version_demo_active() ) {
|
531 |
// add fields for the Google enhanced e-commerce
|
532 |
add_settings_field(
|
533 |
'wpm_setting_google_analytics_eec',
|
571 |
$section_ids['settings_name']
|
572 |
);
|
573 |
|
574 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() || $this->pro_version_demo_active() ) {
|
575 |
// add user_id for the Google
|
576 |
add_settings_field(
|
577 |
'wpm_setting_google_user_id',
|
591 |
}
|
592 |
|
593 |
|
594 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() || $this->pro_version_demo_active() ) {
|
595 |
// add fields for the Google Ads phone conversion number
|
596 |
add_settings_field(
|
597 |
'wpm_plugin_google_ads_phone_conversion_number',
|
888 |
'wpm_plugin_options_page',
|
889 |
'wpm_plugin_beta_section'
|
890 |
);
|
891 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() || $this->pro_version_demo_active() ) {
|
892 |
// google_business_vertical
|
893 |
add_settings_field(
|
894 |
'wpm_plugin_google_business_vertical',
|
1946 |
</label>
|
1947 |
<?php
|
1948 |
|
1949 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() || '2' === $this->options['shop']['order_total_logic'] || $this->options['general']['pro_version_demo'] ) {
|
1950 |
?>
|
1951 |
<br>
|
1952 |
<label>
|
1956 |
echo checked( 2, $this->options['shop']['order_total_logic'], false ) ;
|
1957 |
?>
|
1958 |
<?php
|
1959 |
+
if ( !Environment_Check::get_instance()->is_a_cog_plugin_active() || !wpm_fs()->can_use_premium_code__premium_only() ) {
|
1960 |
?>
|
1961 |
disabled
|
1962 |
<?php
|
1987 |
?>
|
1988 |
<?php
|
1989 |
|
1990 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() && !Environment_Check::get_instance()->is_a_cog_plugin_active() ) {
|
1991 |
?>
|
1992 |
</div>
|
1993 |
<div style="margin-top: 10px">
|
2127 |
public function wpm_info_html_google_analytics_eec()
|
2128 |
{
|
2129 |
esc_html_e( 'Google Analytics Enhanced E-Commerce is ', 'woocommerce-google-adwords-conversion-tracking-tag' );
|
2130 |
+
$this->get_status_icon( wpm_fs()->can_use_premium_code__premium_only() && $this->google->is_google_analytics_active() );
|
2131 |
$this->html_pro_feature();
|
2132 |
// $this->get_documentation_html_by_key('eec');
|
2133 |
}
|
3108 |
public function wpm_info_html_acr()
|
3109 |
{
|
3110 |
esc_html_e( 'Automatic Conversion Recovery (ACR) is ', 'woocommerce-google-adwords-conversion-tracking-tag' );
|
3111 |
+
$this->get_status_icon( wpm_fs()->can_use_premium_code__premium_only() );
|
3112 |
$this->html_pro_feature();
|
3113 |
$this->get_documentation_html_by_key( 'acr' );
|
3114 |
}
|
3522 |
private function html_pro_feature()
|
3523 |
{
|
3524 |
|
3525 |
+
if ( !wpm_fs()->can_use_premium_code__premium_only() && $this->options['general']['pro_version_demo'] ) {
|
3526 |
// if (1===1) {
|
3527 |
// return '<div class="pmw-pro-feature">' . esc_html__('Pro Feature', 'woocommerce-google-adwords-conversion-tracking-tag') . '</div>';
|
3528 |
?>
|
3552 |
private function disable_if_demo()
|
3553 |
{
|
3554 |
|
3555 |
+
if ( !wpm_fs()->can_use_premium_code__premium_only() && $this->options['general']['pro_version_demo'] ) {
|
3556 |
return 'disabled';
|
3557 |
} else {
|
3558 |
return '';
|
classes/admin/class-debug-info.php
CHANGED
@@ -40,7 +40,7 @@ class Debug_Info
|
|
40 |
$html = '### Debug Information ###' . PHP_EOL . PHP_EOL;
|
41 |
$html .= '## Pixel Manager Info ##' . PHP_EOL . PHP_EOL;
|
42 |
$html .= 'Version: ' . WPM_CURRENT_VERSION . PHP_EOL;
|
43 |
-
$tier = ( wpm_fs()->
|
44 |
$html .= 'Tier: ' . $tier . PHP_EOL;
|
45 |
$html .= PHP_EOL . '## System Environment ##' . PHP_EOL . PHP_EOL;
|
46 |
$html .= 'WordPress version: ' . $wp_version . PHP_EOL;
|
40 |
$html = '### Debug Information ###' . PHP_EOL . PHP_EOL;
|
41 |
$html .= '## Pixel Manager Info ##' . PHP_EOL . PHP_EOL;
|
42 |
$html .= 'Version: ' . WPM_CURRENT_VERSION . PHP_EOL;
|
43 |
+
$tier = ( wpm_fs()->can_use_premium_code__premium_only() ? 'pro' : 'free' );
|
44 |
$html .= 'Tier: ' . $tier . PHP_EOL;
|
45 |
$html .= PHP_EOL . '## System Environment ##' . PHP_EOL . PHP_EOL;
|
46 |
$html .= 'WordPress version: ' . $wp_version . PHP_EOL;
|
classes/admin/class-environment-check.php
CHANGED
@@ -13,7 +13,6 @@ class Environment_Check {
|
|
13 |
|
14 |
private $order_redirect = null;
|
15 |
private $options;
|
16 |
-
private $wpm_ist_order_received_page;
|
17 |
|
18 |
private static $instance;
|
19 |
|
@@ -1051,6 +1050,14 @@ class Environment_Check {
|
|
1051 |
add_filter('facebook_for_woocommerce_integration_pixel_enabled', '__return_false');
|
1052 |
}
|
1053 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1054 |
/**
|
1055 |
* WooCommerce Gutenberg Blocks Google Analytics Tracking
|
1056 |
*
|
13 |
|
14 |
private $order_redirect = null;
|
15 |
private $options;
|
|
|
16 |
|
17 |
private static $instance;
|
18 |
|
1050 |
add_filter('facebook_for_woocommerce_integration_pixel_enabled', '__return_false');
|
1051 |
}
|
1052 |
|
1053 |
+
/**
|
1054 |
+
* Pinterest for WooCommerce
|
1055 |
+
*/
|
1056 |
+
|
1057 |
+
if ($this->is_pmw_pinterest_active()) {
|
1058 |
+
add_filter('woocommerce_pinterest_disable_tracking', '__return_true');
|
1059 |
+
}
|
1060 |
+
|
1061 |
/**
|
1062 |
* WooCommerce Gutenberg Blocks Google Analytics Tracking
|
1063 |
*
|
classes/class-database.php
CHANGED
@@ -114,7 +114,7 @@ class Database {
|
|
114 |
delete_option($option_name_old_2);
|
115 |
}
|
116 |
|
117 |
-
private function up_from_1_to_2() {
|
118 |
|
119 |
self::save_options_backup('1');
|
120 |
|
@@ -138,7 +138,7 @@ class Database {
|
|
138 |
update_option(WPM_DB_OPTIONS_NAME, $options_new);
|
139 |
}
|
140 |
|
141 |
-
private function up_from_2_to_3() {
|
142 |
|
143 |
self::save_options_backup('2');
|
144 |
|
@@ -164,7 +164,7 @@ class Database {
|
|
164 |
update_option(WPM_DB_OPTIONS_NAME, $options_new);
|
165 |
}
|
166 |
|
167 |
-
private function up_from_3_to_4() {
|
168 |
|
169 |
error_log('db up_from_3_to_4');
|
170 |
|
114 |
delete_option($option_name_old_2);
|
115 |
}
|
116 |
|
117 |
+
private static function up_from_1_to_2() {
|
118 |
|
119 |
self::save_options_backup('1');
|
120 |
|
138 |
update_option(WPM_DB_OPTIONS_NAME, $options_new);
|
139 |
}
|
140 |
|
141 |
+
private static function up_from_2_to_3() {
|
142 |
|
143 |
self::save_options_backup('2');
|
144 |
|
164 |
update_option(WPM_DB_OPTIONS_NAME, $options_new);
|
165 |
}
|
166 |
|
167 |
+
private static function up_from_3_to_4() {
|
168 |
|
169 |
error_log('db up_from_3_to_4');
|
170 |
|
classes/class-helpers.php
CHANGED
@@ -94,7 +94,7 @@ class Helpers {
|
|
94 |
|
95 |
public static function get_options_object( $options ) {
|
96 |
|
97 |
-
// TODO find out why I did this weird transformation and simplify it
|
98 |
$options_obj = json_decode(wp_json_encode($options));
|
99 |
|
100 |
if (function_exists('get_woocommerce_currency')) {
|
@@ -123,6 +123,11 @@ class Helpers {
|
|
123 |
}
|
124 |
}
|
125 |
|
|
|
|
|
|
|
|
|
|
|
126 |
public static function is_localhost() {
|
127 |
|
128 |
// If the IP is local, return true, else false
|
@@ -135,6 +140,11 @@ class Helpers {
|
|
135 |
);
|
136 |
}
|
137 |
|
|
|
|
|
|
|
|
|
|
|
138 |
public static function get_user_ip() {
|
139 |
|
140 |
if (self::is_localhost()) {
|
94 |
|
95 |
public static function get_options_object( $options ) {
|
96 |
|
97 |
+
// TODO find out why I did this weird transformation and simplify it (I think it had something to do with correctly representing objects)
|
98 |
$options_obj = json_decode(wp_json_encode($options));
|
99 |
|
100 |
if (function_exists('get_woocommerce_currency')) {
|
123 |
}
|
124 |
}
|
125 |
|
126 |
+
/**
|
127 |
+
* Check if the current visitor is on localhost.
|
128 |
+
*
|
129 |
+
* @return bool
|
130 |
+
*/
|
131 |
public static function is_localhost() {
|
132 |
|
133 |
// If the IP is local, return true, else false
|
140 |
);
|
141 |
}
|
142 |
|
143 |
+
/**
|
144 |
+
* Get the (external) IP address of the current visitor.
|
145 |
+
*
|
146 |
+
* @return array|string|string[]
|
147 |
+
*/
|
148 |
public static function get_user_ip() {
|
149 |
|
150 |
if (self::is_localhost()) {
|
classes/class-options.php
CHANGED
@@ -42,12 +42,6 @@ class Options {
|
|
42 |
return self::$options_obj;
|
43 |
}
|
44 |
|
45 |
-
public static function get_db_version() {
|
46 |
-
self::init();
|
47 |
-
|
48 |
-
return self::$options_obj->db_version;
|
49 |
-
}
|
50 |
-
|
51 |
// get the default options
|
52 |
public static function get_default_options() {
|
53 |
|
@@ -193,4 +187,31 @@ class Options {
|
|
193 |
return false;
|
194 |
}
|
195 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
}
|
42 |
return self::$options_obj;
|
43 |
}
|
44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
// get the default options
|
46 |
public static function get_default_options() {
|
47 |
|
187 |
return false;
|
188 |
}
|
189 |
}
|
190 |
+
|
191 |
+
public static function get_db_version() {
|
192 |
+
return self::get_options_obj()->db_version;
|
193 |
+
}
|
194 |
+
|
195 |
+
public static function server_2_server_enabled() {
|
196 |
+
|
197 |
+
return
|
198 |
+
self::is_facebook_capi_enabled()
|
199 |
+
|| self::is_tiktok_eapi_enabled();
|
200 |
+
}
|
201 |
+
|
202 |
+
public static function is_facebook_pixel_enabled() {
|
203 |
+
return (bool) self::get_options_obj()->facebook->pixel_id;
|
204 |
+
}
|
205 |
+
|
206 |
+
public static function is_facebook_capi_enabled() {
|
207 |
+
return self::is_facebook_pixel_enabled() && self::get_options_obj()->facebook->capi->token;
|
208 |
+
}
|
209 |
+
|
210 |
+
public static function is_tiktok_pixel_enabled() {
|
211 |
+
return (bool) self::get_options_obj()->tiktok->pixel_id;
|
212 |
+
}
|
213 |
+
|
214 |
+
public static function is_tiktok_eapi_enabled() {
|
215 |
+
return self::is_tiktok_pixel_enabled() && self::get_options_obj()->tiktok->eapi->token;
|
216 |
+
}
|
217 |
}
|
classes/class-shop.php
CHANGED
@@ -610,23 +610,46 @@ class Shop
|
|
610 |
// https://stackoverflow.com/a/49616130/4688612
|
611 |
private static function get_order_from_order_received_page()
|
612 |
{
|
|
|
|
|
|
|
|
|
|
|
613 |
$order = self::get_order_from_query_vars();
|
|
|
|
|
|
|
|
|
614 |
if ( !$order ) {
|
615 |
$order = self::get_order_with_url_order_key();
|
616 |
}
|
617 |
return $order;
|
618 |
}
|
619 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
620 |
public static function pmw_is_order_received_page()
|
621 |
{
|
622 |
-
|
|
|
|
|
|
|
|
|
|
|
623 |
if ( is_bool( self::$pmw_ist_order_received_page ) ) {
|
624 |
return self::$pmw_ist_order_received_page;
|
625 |
}
|
626 |
/**
|
627 |
* If a purchase order was created by a shop manager
|
628 |
* and the customer is viewing the PO page
|
629 |
-
* don't fire the conversion pixels
|
|
|
|
|
630 |
**/
|
631 |
|
632 |
if ( is_checkout_pay_page() ) {
|
610 |
// https://stackoverflow.com/a/49616130/4688612
|
611 |
private static function get_order_from_order_received_page()
|
612 |
{
|
613 |
+
/**
|
614 |
+
* Try to get the order from the query vars.
|
615 |
+
* This is to work around some side cases where
|
616 |
+
* the order key is not available in the URL.
|
617 |
+
*/
|
618 |
$order = self::get_order_from_query_vars();
|
619 |
+
/**
|
620 |
+
* If the order is not found, try to get it from the URL
|
621 |
+
* with the order key.
|
622 |
+
*/
|
623 |
if ( !$order ) {
|
624 |
$order = self::get_order_with_url_order_key();
|
625 |
}
|
626 |
return $order;
|
627 |
}
|
628 |
|
629 |
+
/**
|
630 |
+
* PMW uses its own function to check if a visitor is on the order received page.
|
631 |
+
* There are various plugins which modify the checkout workflow and/or the
|
632 |
+
* order received page, which is why we can't only rely on the WooCommerce function.
|
633 |
+
*
|
634 |
+
* @return bool
|
635 |
+
*/
|
636 |
public static function pmw_is_order_received_page()
|
637 |
{
|
638 |
+
/**
|
639 |
+
* Get cached value if available.
|
640 |
+
*
|
641 |
+
* There are several places in the code where we check if we are on the order received page.
|
642 |
+
* And the function is quite expensive when checking the database, so we cache the result.
|
643 |
+
*/
|
644 |
if ( is_bool( self::$pmw_ist_order_received_page ) ) {
|
645 |
return self::$pmw_ist_order_received_page;
|
646 |
}
|
647 |
/**
|
648 |
* If a purchase order was created by a shop manager
|
649 |
* and the customer is viewing the PO page
|
650 |
+
* don't fire the conversion pixels.
|
651 |
+
* (order key is available in the URL, but
|
652 |
+
* it's not a completed order yet)
|
653 |
**/
|
654 |
|
655 |
if ( is_checkout_pay_page() ) {
|
classes/pixels/class-pixel-manager.php
CHANGED
@@ -6,6 +6,7 @@ use WCPM\Classes\Admin\Environment_Check ;
|
|
6 |
use WCPM\Classes\Admin\Validations ;
|
7 |
use WCPM\Classes\Data\GA4_Data_API ;
|
8 |
use WCPM\Classes\Helpers ;
|
|
|
9 |
use WCPM\Classes\Shop ;
|
10 |
use WCPM\Classes\Product ;
|
11 |
use WCPM\Classes\Http\Facebook_CAPI ;
|
@@ -68,7 +69,7 @@ class Pixel_Manager
|
|
68 |
*/
|
69 |
add_action( 'wp_head', function () {
|
70 |
$this->inject_wpm_opening();
|
71 |
-
if ( wpm_fs()->
|
72 |
if ( $this->options_obj->facebook->microdata ) {
|
73 |
$this->microdata_product_id = ( new Facebook_Microdata( $this->options ) )->inject_schema( wc_get_product( get_the_ID() ) );
|
74 |
}
|
@@ -91,7 +92,7 @@ class Pixel_Manager
|
|
91 |
if ( $this->facebook_active ) {
|
92 |
new Facebook_Pixel_Manager( $this->options );
|
93 |
}
|
94 |
-
if ( wpm_fs()->
|
95 |
TikTok_EAPI::get_instance();
|
96 |
}
|
97 |
add_action( 'wp_head', function () {
|
@@ -275,28 +276,7 @@ class Pixel_Manager
|
|
275 |
'methods' => 'POST',
|
276 |
'callback' => function ( $request ) {
|
277 |
$request_decoded = $request->get_json_params();
|
278 |
-
$
|
279 |
-
// Prevent server overload if too many products are requested
|
280 |
-
$product_ids = ( count( $product_ids ) > 50 ? array_slice( $product_ids, 0, 50 ) : $product_ids );
|
281 |
-
|
282 |
-
if ( !$product_ids ) {
|
283 |
-
wp_send_json_error( 'No product ids provided' );
|
284 |
-
} else {
|
285 |
-
$products = $this->get_products_for_datalayer( $product_ids );
|
286 |
-
// Check if a data layer products transient for this page exists
|
287 |
-
// If it does, add the products from the transient to $products
|
288 |
-
|
289 |
-
if ( get_transient( 'pmw_products_for_datalayer_' . $request_decoded['pageId'] ) ) {
|
290 |
-
$products_in_transient = get_transient( 'pmw_products_for_datalayer_' . $request_decoded['pageId'] );
|
291 |
-
// Merge the associative arrays with nested arrays $products and $products_in_transient preserving the keys
|
292 |
-
$products = array_replace_recursive( $products, $products_in_transient );
|
293 |
-
}
|
294 |
-
|
295 |
-
// Set transient with products for $request_decoded['pageId']
|
296 |
-
set_transient( 'pmw_products_for_datalayer_' . $request_decoded['pageId'], $products, MONTH_IN_SECONDS );
|
297 |
-
wp_send_json_success( $products );
|
298 |
-
}
|
299 |
-
|
300 |
},
|
301 |
'permission_callback' => function () {
|
302 |
return true;
|
@@ -326,6 +306,34 @@ class Pixel_Manager
|
|
326 |
] );
|
327 |
}
|
328 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
329 |
private function get_order_value_after_refunds( $order )
|
330 |
{
|
331 |
$refunds = $order->get_refunds();
|
@@ -406,26 +414,27 @@ class Pixel_Manager
|
|
406 |
$options = $request->get_params();
|
407 |
// Sanitize nested array $options
|
408 |
$options = Helpers::generic_sanitization( $options );
|
|
|
|
|
|
|
409 |
// Validate imported options
|
410 |
-
|
411 |
-
|
412 |
-
update_option( WPM_DB_OPTIONS_NAME, $options );
|
413 |
-
wp_send_json_success( [
|
414 |
-
'message' => 'Options saved',
|
415 |
-
] );
|
416 |
-
} else {
|
417 |
-
// wc_get_logger()->debug('Invalid Options. Options not saved', ['source' => 'wpm']);
|
418 |
wp_send_json_error( [
|
419 |
-
'message' => 'Invalid options',
|
420 |
] );
|
421 |
}
|
422 |
-
|
|
|
|
|
|
|
|
|
423 |
}
|
424 |
|
425 |
public function run_background_processes()
|
426 |
{
|
427 |
|
428 |
-
if ( wpm_fs()->
|
429 |
|
430 |
if ( is_cart() || is_checkout() ) {
|
431 |
if ( $this->options_obj->facebook->pixel_id && $this->options_obj->facebook->capi->token ) {
|
@@ -607,8 +616,10 @@ class Pixel_Manager
|
|
607 |
'position' => 1,
|
608 |
'viewItemListTrigger' => $this->view_item_list_trigger_settings(),
|
609 |
'version' => [
|
610 |
-
'number'
|
611 |
-
'pro'
|
|
|
|
|
612 |
],
|
613 |
];
|
614 |
/**
|
@@ -692,16 +703,16 @@ class Pixel_Manager
|
|
692 |
'universal' => [
|
693 |
'property_id' => $this->options_obj->google->analytics->universal->property_id,
|
694 |
'parameters' => (object) $this->google->get_ga_ua_parameters( $this->options_obj->google->analytics->universal->property_id ),
|
695 |
-
'mp_active' => wpm_fs()->
|
696 |
],
|
697 |
'ga4' => [
|
698 |
'measurement_id' => $this->options_obj->google->analytics->ga4->measurement_id,
|
699 |
'parameters' => (object) $this->google->get_ga4_parameters( $this->options_obj->google->analytics->ga4->measurement_id ),
|
700 |
-
'mp_active' => $this->options_obj->google->analytics->ga4->api_secret && wpm_fs()->
|
701 |
'debug_mode' => $this->google->is_ga4_debug_mode_active(),
|
702 |
],
|
703 |
'id_type' => $this->google->get_ga_id_type(),
|
704 |
-
'eec' => wpm_fs()->
|
705 |
];
|
706 |
}
|
707 |
if ( $this->google->is_google_optimize_active() ) {
|
@@ -733,7 +744,7 @@ class Pixel_Manager
|
|
733 |
'advanced_matching' => (bool) $this->options_obj->facebook->capi->user_transparency->send_additional_client_identifiers,
|
734 |
'exclusion_patterns' => apply_filters( 'pmw_facebook_tracking_exclusion_patterns', [] ),
|
735 |
];
|
736 |
-
if ( wpm_fs()->
|
737 |
$data['microdata_product_id'] = $this->microdata_product_id;
|
738 |
}
|
739 |
return $data;
|
@@ -1194,20 +1205,13 @@ class Pixel_Manager
|
|
1194 |
|
1195 |
public function ajax_pmw_get_product_ids()
|
1196 |
{
|
1197 |
-
$
|
1198 |
-
|
1199 |
-
|
1200 |
-
$
|
1201 |
-
|
1202 |
-
if ( !$product_ids ) {
|
1203 |
-
wp_send_json_error();
|
1204 |
-
return;
|
1205 |
-
}
|
1206 |
-
|
1207 |
-
wp_send_json_success( $this->get_products_for_datalayer( $product_ids ) );
|
1208 |
}
|
1209 |
|
1210 |
-
public function
|
1211 |
{
|
1212 |
$products = [];
|
1213 |
foreach ( $product_ids as $key => $product_id ) {
|
@@ -1264,7 +1268,7 @@ class Pixel_Manager
|
|
1264 |
$pmw_dependencies = [ 'jquery', 'wp-hooks' ];
|
1265 |
// enable polyfill.io with filter
|
1266 |
|
1267 |
-
if ( wpm_fs()->
|
1268 |
wp_enqueue_script(
|
1269 |
'polyfill-io',
|
1270 |
'https://cdn.polyfill.io/v2/polyfill.min.js',
|
@@ -1413,6 +1417,10 @@ class Pixel_Manager
|
|
1413 |
'scrollTrackingThresholds' => $this->options_obj->general->scroll_tracker_thresholds,
|
1414 |
'pageId' => get_the_ID(),
|
1415 |
'excludeDomains' => apply_filters( 'pmw_exclude_domains_from_tracking', [] ),
|
|
|
|
|
|
|
|
|
1416 |
];
|
1417 |
}
|
1418 |
|
6 |
use WCPM\Classes\Admin\Validations ;
|
7 |
use WCPM\Classes\Data\GA4_Data_API ;
|
8 |
use WCPM\Classes\Helpers ;
|
9 |
+
use WCPM\Classes\Options ;
|
10 |
use WCPM\Classes\Shop ;
|
11 |
use WCPM\Classes\Product ;
|
12 |
use WCPM\Classes\Http\Facebook_CAPI ;
|
69 |
*/
|
70 |
add_action( 'wp_head', function () {
|
71 |
$this->inject_wpm_opening();
|
72 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() && Environment_Check::get_instance()->is_woocommerce_active() && is_product() ) {
|
73 |
if ( $this->options_obj->facebook->microdata ) {
|
74 |
$this->microdata_product_id = ( new Facebook_Microdata( $this->options ) )->inject_schema( wc_get_product( get_the_ID() ) );
|
75 |
}
|
92 |
if ( $this->facebook_active ) {
|
93 |
new Facebook_Pixel_Manager( $this->options );
|
94 |
}
|
95 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() && $this->is_tiktok_eapi_active__premium_only() ) {
|
96 |
TikTok_EAPI::get_instance();
|
97 |
}
|
98 |
add_action( 'wp_head', function () {
|
276 |
'methods' => 'POST',
|
277 |
'callback' => function ( $request ) {
|
278 |
$request_decoded = $request->get_json_params();
|
279 |
+
$this->get_products_for_datalayer( $request_decoded );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
280 |
},
|
281 |
'permission_callback' => function () {
|
282 |
return true;
|
306 |
] );
|
307 |
}
|
308 |
|
309 |
+
private function get_products_for_datalayer( $data )
|
310 |
+
{
|
311 |
+
$product_ids = Helpers::generic_sanitization( $data['productIds'] );
|
312 |
+
if ( !$product_ids ) {
|
313 |
+
wp_send_json_error( 'No product IDs provided.' );
|
314 |
+
}
|
315 |
+
if ( !is_array( $product_ids ) ) {
|
316 |
+
wp_send_json_error( 'Product IDs must be an array.' );
|
317 |
+
}
|
318 |
+
// Prevent server overload if too many products are requested
|
319 |
+
$product_ids = ( count( $product_ids ) > 50 ? array_slice( $product_ids, 0, 50 ) : $product_ids );
|
320 |
+
$products = $this->get_products_for_datalayer_by_product_ids( $product_ids );
|
321 |
+
// Check if a data layer products transient for this page exists
|
322 |
+
// If it does, add the products from the transient to $products
|
323 |
+
|
324 |
+
if ( get_transient( 'pmw_products_for_datalayer_' . $data['pageId'] ) ) {
|
325 |
+
$products_in_transient = get_transient( 'pmw_products_for_datalayer_' . $data['pageId'] );
|
326 |
+
// Merge the associative arrays with nested arrays $products and $products_in_transient preserving the keys
|
327 |
+
$products = array_replace_recursive( $products, $products_in_transient );
|
328 |
+
}
|
329 |
+
|
330 |
+
// Set transient with products for $data['pageId']
|
331 |
+
if ( 'cart' !== $data['pageType'] && 'checkout' !== $data['pageType'] && 'order_received_page' !== $data['pageType'] ) {
|
332 |
+
set_transient( 'pmw_products_for_datalayer_' . $data['pageId'], $products, MONTH_IN_SECONDS );
|
333 |
+
}
|
334 |
+
wp_send_json_success( $products );
|
335 |
+
}
|
336 |
+
|
337 |
private function get_order_value_after_refunds( $order )
|
338 |
{
|
339 |
$refunds = $order->get_refunds();
|
414 |
$options = $request->get_params();
|
415 |
// Sanitize nested array $options
|
416 |
$options = Helpers::generic_sanitization( $options );
|
417 |
+
if ( !is_array( $options ) ) {
|
418 |
+
wp_send_json_error( 'Invalid options. Not an array.' );
|
419 |
+
}
|
420 |
// Validate imported options
|
421 |
+
if ( !Validations::validate_imported_options( $options ) ) {
|
422 |
+
// wc_get_logger()->error('Invalid Options. Options not saved', ['source' => 'wpm']);
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
wp_send_json_error( [
|
424 |
+
'message' => 'Invalid options. Didn\'t pass validation.',
|
425 |
] );
|
426 |
}
|
427 |
+
// All good, save options
|
428 |
+
update_option( WPM_DB_OPTIONS_NAME, $options );
|
429 |
+
wp_send_json_success( [
|
430 |
+
'message' => 'Options saved',
|
431 |
+
] );
|
432 |
}
|
433 |
|
434 |
public function run_background_processes()
|
435 |
{
|
436 |
|
437 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() && Environment_Check::get_instance()->is_woocommerce_active() ) {
|
438 |
|
439 |
if ( is_cart() || is_checkout() ) {
|
440 |
if ( $this->options_obj->facebook->pixel_id && $this->options_obj->facebook->capi->token ) {
|
616 |
'position' => 1,
|
617 |
'viewItemListTrigger' => $this->view_item_list_trigger_settings(),
|
618 |
'version' => [
|
619 |
+
'number' => WPM_CURRENT_VERSION,
|
620 |
+
'pro' => wpm_fs()->is__premium_only(),
|
621 |
+
'eligibleForUpdates' => wpm_fs()->can_use_premium_code__premium_only(),
|
622 |
+
'distro' => 'fms',
|
623 |
],
|
624 |
];
|
625 |
/**
|
703 |
'universal' => [
|
704 |
'property_id' => $this->options_obj->google->analytics->universal->property_id,
|
705 |
'parameters' => (object) $this->google->get_ga_ua_parameters( $this->options_obj->google->analytics->universal->property_id ),
|
706 |
+
'mp_active' => wpm_fs()->can_use_premium_code__premium_only(),
|
707 |
],
|
708 |
'ga4' => [
|
709 |
'measurement_id' => $this->options_obj->google->analytics->ga4->measurement_id,
|
710 |
'parameters' => (object) $this->google->get_ga4_parameters( $this->options_obj->google->analytics->ga4->measurement_id ),
|
711 |
+
'mp_active' => $this->options_obj->google->analytics->ga4->api_secret && wpm_fs()->can_use_premium_code__premium_only(),
|
712 |
'debug_mode' => $this->google->is_ga4_debug_mode_active(),
|
713 |
],
|
714 |
'id_type' => $this->google->get_ga_id_type(),
|
715 |
+
'eec' => wpm_fs()->can_use_premium_code__premium_only() && $this->google->is_google_analytics_active(),
|
716 |
];
|
717 |
}
|
718 |
if ( $this->google->is_google_optimize_active() ) {
|
744 |
'advanced_matching' => (bool) $this->options_obj->facebook->capi->user_transparency->send_additional_client_identifiers,
|
745 |
'exclusion_patterns' => apply_filters( 'pmw_facebook_tracking_exclusion_patterns', [] ),
|
746 |
];
|
747 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() && Environment_Check::get_instance()->is_woocommerce_active() && is_product() && $this->options_obj->facebook->microdata ) {
|
748 |
$data['microdata_product_id'] = $this->microdata_product_id;
|
749 |
}
|
750 |
return $data;
|
1205 |
|
1206 |
public function ajax_pmw_get_product_ids()
|
1207 |
{
|
1208 |
+
$data = Helpers::get_input_vars( INPUT_POST );
|
1209 |
+
// Change productIds back into an array
|
1210 |
+
$data['productIds'] = explode( ',', $data['productIds'] );
|
1211 |
+
$this->get_products_for_datalayer( $data );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1212 |
}
|
1213 |
|
1214 |
+
public function get_products_for_datalayer_by_product_ids( $product_ids )
|
1215 |
{
|
1216 |
$products = [];
|
1217 |
foreach ( $product_ids as $key => $product_id ) {
|
1268 |
$pmw_dependencies = [ 'jquery', 'wp-hooks' ];
|
1269 |
// enable polyfill.io with filter
|
1270 |
|
1271 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() && apply_filters( 'wpm_experimental_inject_polyfill_io', false ) ) {
|
1272 |
wp_enqueue_script(
|
1273 |
'polyfill-io',
|
1274 |
'https://cdn.polyfill.io/v2/polyfill.min.js',
|
1417 |
'scrollTrackingThresholds' => $this->options_obj->general->scroll_tracker_thresholds,
|
1418 |
'pageId' => get_the_ID(),
|
1419 |
'excludeDomains' => apply_filters( 'pmw_exclude_domains_from_tracking', [] ),
|
1420 |
+
'server2server' => [
|
1421 |
+
'active' => Options::server_2_server_enabled(),
|
1422 |
+
'ipExcludeList' => apply_filters( 'pmw_exclude_ips_from_server2server_events', [] ),
|
1423 |
+
],
|
1424 |
];
|
1425 |
}
|
1426 |
|
classes/pixels/facebook/class-facebook-pixel-manager.php
CHANGED
@@ -15,7 +15,7 @@ class Facebook_Pixel_Manager
|
|
15 |
public function __construct( $options )
|
16 |
{
|
17 |
|
18 |
-
if ( wpm_fs()->
|
19 |
$this->facebook_capi = new Facebook_CAPI( $options );
|
20 |
// Save the Facebook session identifiers on the order so that we can use them later when the order gets paid or completed
|
21 |
// https://woocommerce.github.io/code-reference/files/woocommerce-includes-class-wc-checkout.html#source-view.403
|
15 |
public function __construct( $options )
|
16 |
{
|
17 |
|
18 |
+
if ( wpm_fs()->can_use_premium_code__premium_only() && $options['facebook']['capi']['token'] ) {
|
19 |
$this->facebook_capi = new Facebook_CAPI( $options );
|
20 |
// Save the Facebook session identifiers on the order so that we can use them later when the order gets paid or completed
|
21 |
// https://woocommerce.github.io/code-reference/files/woocommerce-includes-class-wc-checkout.html#source-view.403
|
classes/pixels/google/class-google-pixel-manager.php
CHANGED
@@ -58,7 +58,7 @@ class Google_Pixel_Manager
|
|
58 |
|
59 |
public function inject_order_received_page_dedupe( $order, $order_total, $is_new_customer )
|
60 |
{
|
61 |
-
if ( $this->google_pixel->is_google_ads_active() && wpm_fs()->
|
62 |
$this->save_gclid_in_order__premium_only( $order );
|
63 |
}
|
64 |
}
|
58 |
|
59 |
public function inject_order_received_page_dedupe( $order, $order_total, $is_new_customer )
|
60 |
{
|
61 |
+
if ( $this->google_pixel->is_google_ads_active() && wpm_fs()->can_use_premium_code__premium_only() ) {
|
62 |
$this->save_gclid_in_order__premium_only( $order );
|
63 |
}
|
64 |
}
|
js/public/wpm-public.p1.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
(()=>{var e={164:()=>{jQuery(document).on("wpmLoadPixels",(()=>{var e,t,a,o,r,n,i,l,d;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.pixel_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(n=r.facebook)&&void 0!==n&&n.loaded||wpm.doesUrlContainPatterns(null===(i=wpmDataLayer)||void 0===i||null===(l=i.pixels)||void 0===l||null===(d=l.facebook)||void 0===d?void 0:d.exclusion_patterns)||wpm.canIFire("ads","facebook-ads")&&wpm.loadFacebookPixel()})),jQuery(document).on("wpmClientSideAddToCart",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","AddToCart",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideBeginCheckout",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","InitiateCheckout",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideAddToWishlist",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","AddToWishlist",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideViewItem",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","ViewContent",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideSearch",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","Search",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmLoadAlways",(()=>{try{var e,t,a;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.loaded)return;wpm.setFbUserData()}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideOrderReceivedPage",((e,t)=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;fbq("track","Purchase",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}}))},1:()=>{!function(e,t,a){let o;e.loadFacebookPixel=()=>{try{wpmDataLayer.pixels.facebook.loaded=!0,t=window,a=document,o="script",t.fbq||(r=t.fbq=function(){r.callMethod?r.callMethod.apply(r,arguments):r.queue.push(arguments)},t._fbq||(t._fbq=r),r.push=r,r.loaded=!0,r.version="2.0",r.queue=[],(n=a.createElement(o)).async=!0,n.src="https://connect.facebook.net/en_US/fbevents.js",(i=a.getElementsByTagName(o)[0]).parentNode.insertBefore(n,i));let l={};e.isFbpSet()&&e.isFbAdvancedMatchingEnabled()&&(l={...e.getUserIdentifiersForFb()}),fbq("init",wpmDataLayer.pixels.facebook.pixel_id,l),fbq("track","PageView")}catch(o){console.error(o)}var t,a,o,r,n,i},e.getUserIdentifiersForFb=()=>{var e,t,a,o,r,n,i,l,d,s,c,u,p,m,g,y,w,v,_,f,h,L,D,k,b,C,x,j,S,I,P,Q,E,O,T,A,F,V,U,R,G,q,M,N,W;let B={};return null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.user)&&void 0!==t&&null!==(a=t.id)&&void 0!==a&&a.raw&&(B.external_id=wpmDataLayer.user.id.raw),null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.order)&&void 0!==r&&r.user_id&&(B.external_id=wpmDataLayer.order.user_id),null!==(n=wpmDataLayer)&&void 0!==n&&null!==(i=n.user)&&void 0!==i&&null!==(l=i.email)&&void 0!==l&&l.facebook&&(B.em=wpmDataLayer.user.email.facebook),null!==(d=wpmDataLayer)&&void 0!==d&&null!==(s=d.order)&&void 0!==s&&s.billing_email_hashed&&(B.em=wpmDataLayer.order.billing_email_hashed),null!==(c=wpmDataLayer)&&void 0!==c&&null!==(u=c.user)&&void 0!==u&&null!==(p=u.first_name)&&void 0!==p&&p.facebook&&(B.fn=wpmDataLayer.user.first_name.facebook),null!==(m=wpmDataLayer)&&void 0!==m&&null!==(g=m.order)&&void 0!==g&&g.billing_first_name&&(B.fn=wpmDataLayer.order.billing_first_name.toLowerCase()),null!==(y=wpmDataLayer)&&void 0!==y&&null!==(w=y.user)&&void 0!==w&&null!==(v=w.last_name)&&void 0!==v&&v.facebook&&(B.ln=wpmDataLayer.user.last_name.facebook),null!==(_=wpmDataLayer)&&void 0!==_&&null!==(f=_.order)&&void 0!==f&&f.billing_last_name&&(B.ln=wpmDataLayer.order.billing_last_name.toLowerCase()),null!==(h=wpmDataLayer)&&void 0!==h&&null!==(L=h.user)&&void 0!==L&&null!==(D=L.phone)&&void 0!==D&&D.facebook&&(B.ph=wpmDataLayer.user.phone.facebook),null!==(k=wpmDataLayer)&&void 0!==k&&null!==(b=k.order)&&void 0!==b&&b.billing_phone&&(B.ph=wpmDataLayer.order.billing_phone.replace("+","")),null!==(C=wpmDataLayer)&&void 0!==C&&null!==(x=C.user)&&void 0!==x&&null!==(j=x.city)&&void 0!==j&&j.facebook&&(B.ct=wpmDataLayer.user.city.facebook),null!==(S=wpmDataLayer)&&void 0!==S&&null!==(I=S.order)&&void 0!==I&&I.billing_city&&(B.ct=wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g,"")),null!==(P=wpmDataLayer)&&void 0!==P&&null!==(Q=P.user)&&void 0!==Q&&null!==(E=Q.state)&&void 0!==E&&E.facebook&&(B.st=wpmDataLayer.user.state.facebook),null!==(O=wpmDataLayer)&&void 0!==O&&null!==(T=O.order)&&void 0!==T&&T.billing_state&&(B.st=wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/,"")),null!==(A=wpmDataLayer)&&void 0!==A&&null!==(F=A.user)&&void 0!==F&&null!==(V=F.postcode)&&void 0!==V&&V.facebook&&(B.zp=wpmDataLayer.user.postcode.facebook),null!==(U=wpmDataLayer)&&void 0!==U&&null!==(R=U.order)&&void 0!==R&&R.billing_postcode&&(B.zp=wpmDataLayer.order.billing_postcode),null!==(G=wpmDataLayer)&&void 0!==G&&null!==(q=G.user)&&void 0!==q&&null!==(M=q.country)&&void 0!==M&&M.facebook&&(B.country=wpmDataLayer.user.country.facebook),null!==(N=wpmDataLayer)&&void 0!==N&&null!==(W=N.order)&&void 0!==W&&W.billing_country&&(B.country=wpmDataLayer.order.billing_country.toLowerCase()),B},e.getFbRandomEventId=()=>(Math.random()+1).toString(36).substring(2),e.getFbUserData=()=>(o={...o,...e.getFbUserDataFromBrowser()},o),e.isFbAdvancedMatchingEnabled=()=>{var e,t,a;return!(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.advanced_matching)},e.setFbUserData=()=>{o=e.getFbUserDataFromBrowser()},e.getFbUserDataFromBrowser=()=>{let t={};var a,o,r;return e.getCookie("_fbp")&&e.isValidFbp(e.getCookie("_fbp"))&&(t.fbp=e.getCookie("_fbp")),e.getCookie("_fbc")&&e.isValidFbc(e.getCookie("_fbc"))&&(t.fbc=e.getCookie("_fbc")),e.isFbAdvancedMatchingEnabled()&&null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.user)&&void 0!==o&&null!==(r=o.id)&&void 0!==r&&r.raw&&(t.external_id=wpmDataLayer.user.id.raw),navigator.userAgent&&(t.client_user_agent=navigator.userAgent),t},e.isFbpSet=()=>!!e.getCookie("_fbp"),e.isValidFbp=e=>new RegExp(/^fb\.[0-2]\.\d{13}\.\d{8,20}$/).test(e),e.isValidFbc=e=>new RegExp(/^fb\.[0-2]\.\d{13}\.[\da-zA-Z_-]{8,}/).test(e),e.fbGetProductDataForCapiEvent=e=>({content_type:"product",content_name:e.name,content_ids:[e.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]],value:parseFloat(e.quantity*e.price),currency:e.currency}),e.facebookContentIds=()=>{let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?e.push(String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])):e.push(String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))}return e},e.trackCustomFacebookEvent=function(t){let o=arguments.length>1&&arguments[1]!==a?arguments[1]:{};try{var r,n,i;if(null===(r=wpmDataLayer)||void 0===r||null===(n=r.pixels)||void 0===n||null===(i=n.facebook)||void 0===i||!i.loaded)return;let a=e.getFbRandomEventId();fbq("trackCustom",t,o,{eventID:a}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:t,event_id:a,user_data:e.getFbUserData(),event_source_url:window.location.href,custom_data:o})}catch(e){console.error(e)}},e.fbGetContentIdsFromCart=()=>{let e=[];for(const t in wpmDataLayer.cart)e.push(wpmDataLayer.products[t].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]);return e}}(window.wpm=window.wpm||{},jQuery)},12:(e,t,a)=>{a(1),a(164)},165:()=>{jQuery(document).on("wpmViewItemList",(function(e,t){try{var a,o,r,n,i,l,d,s,c,u,p,m,g,y;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(n=r.ads)||void 0===n?void 0:n.conversionIds))return;if(null===(i=wpmDataLayer)||void 0===i||null===(l=i.pixels)||void 0===l||null===(d=l.google)||void 0===d||null===(s=d.ads)||void 0===s||null===(c=s.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;if(null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.general)&&void 0!==p&&p.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;if(!t)return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers(),items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]};null!==(m=wpmDataLayer)&&void 0!==m&&null!==(g=m.user)&&void 0!==g&&null!==(y=g.id)&&void 0!==y&&y.raw&&(e.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","view_item_list",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmAddToCart",(function(e,t){try{var a,o,r,n,i,l,d,s,c,u,p,m;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(n=r.ads)||void 0===n?void 0:n.conversionIds))return;if(null===(i=wpmDataLayer)||void 0===i||null===(l=i.pixels)||void 0===l||null===(d=l.google)||void 0===d||null===(s=d.ads)||void 0===s||null===(c=s.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers(),value:t.quantity*t.price,items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]};null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.user)&&void 0!==p&&null!==(m=p.id)&&void 0!==m&&m.raw&&(e.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","add_to_cart",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmViewItem",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;try{var a,o,r,n,i,l,d,s,c,u,p,m;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(n=r.ads)||void 0===n?void 0:n.conversionIds))return;if(null===(i=wpmDataLayer)||void 0===i||null===(l=i.pixels)||void 0===l||null===(d=l.google)||void 0===d||null===(s=d.ads)||void 0===s||null===(c=s.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers()};t&&(e.value=(t.quantity?t.quantity:1)*t.price,e.items=[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity?t.quantity:1,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]),null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.user)&&void 0!==p&&null!==(m=p.id)&&void 0!==m&&m.raw&&(e.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","view_item",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmSearch",(function(){try{var e,t,a,o,r,n,i,l,d,s,c,u;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(n=r.pixels)||void 0===n||null===(i=n.google)||void 0===i||null===(l=i.ads)||void 0===l||null===(d=l.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let g=[];for(const[e,t]of Object.entries(wpmDataLayer.products)){var p,m;if(null!==(p=wpmDataLayer)&&void 0!==p&&null!==(m=p.general)&&void 0!==m&&m.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;g.push({id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical})}let y={send_to:wpm.getGoogleAdsConversionIdentifiers(),items:g};null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&null!==(u=c.id)&&void 0!==u&&u.raw&&(y.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","view_search_results",y)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,n,i,l,d,s,c,u;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(n=r.pixels)||void 0===n||null===(i=n.google)||void 0===i||null===(l=i.ads)||void 0===l||null===(d=l.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let p={send_to:wpm.getGoogleAdsConversionIdentifiers(),value:wpmDataLayer.order.value_filtered,items:wpm.getGoogleAdsDynamicRemarketingOrderItems()};null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&null!==(u=c.id)&&void 0!==u&&u.raw&&(p.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","purchase",p)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmLogin",(function(){try{var e,t,a,o,r,n,i,l,d,s,c,u;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(n=r.pixels)||void 0===n||null===(i=n.google)||void 0===i||null===(l=i.ads)||void 0===l||null===(d=l.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let p={send_to:wpm.getGoogleAdsConversionIdentifiers()};null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.user)&&void 0!==c&&null!==(u=c.id)&&void 0!==u&&u.raw&&(p.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","login",p)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,n,i;if(jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel()))return;if(!wpm.googleConfigConditionsMet("ads"))return;let l={},d={};l={send_to:wpm.getGoogleAdsConversionIdentifiersWithLabel(),transaction_id:wpmDataLayer.order.number,value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,new_customer:wpmDataLayer.order.new_customer},null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.order)&&void 0!==t&&t.clv_order_value_filtered&&(l.customer_lifetime_value=wpmDataLayer.order.clv_order_value_filtered),null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.user)&&void 0!==o&&null!==(r=o.id)&&void 0!==r&&r.raw&&(l.user_id=wpmDataLayer.user.id.raw),null!==(n=wpmDataLayer)&&void 0!==n&&null!==(i=n.order)&&void 0!==i&&i.aw_merchant_id&&(d={discount:wpmDataLayer.order.discount,aw_merchant_id:wpmDataLayer.order.aw_merchant_id,aw_feed_country:wpmDataLayer.order.aw_feed_country,aw_feed_language:wpmDataLayer.order.aw_feed_language,items:wpm.getGoogleAdsRegularOrderItems()}),wpm.gtagLoaded().then((function(){gtag("event","conversion",{...l,...d})}))}catch(e){console.error(e)}}))},42:()=>{!function(e,t,a){e.getGoogleAdsConversionIdentifiersWithLabel=function(){var e,t,a,o;let r=[];if(null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.ads)&&void 0!==o&&o.conversionIds)for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))t&&r.push(e+"/"+t);return r},e.getGoogleAdsConversionIdentifiers=function(){let e=[];for(const[t,a]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))e.push(t);return e},e.getGoogleAdsRegularOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e},e.getGoogleAdsDynamicRemarketingOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e}}(window.wpm=window.wpm||{},jQuery)},190:(e,t,a)=>{a(42),a(165)},625:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,n,i,l,d,s;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.universal)||void 0===r||!r.property_id)return;if(null!==(n=wpmDataLayer)&&void 0!==n&&null!==(i=n.pixels)&&void 0!==i&&null!==(l=i.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.universal)&&void 0!==s&&s.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.universal.property_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGAUAOrderItems()})}))}catch(e){console.error(e)}}))},19:()=>{!function(e,t,a){e.getGAUAOrderItems=function(){let t=[];for(const[r,n]of Object.entries(wpmDataLayer.order.items)){var a,o;let r;r={quantity:n.quantity,price:n.price,name:n.name,currency:wpmDataLayer.order.currency,category:wpmDataLayer.products[n.id].category.join("/")},null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.general)&&void 0!==o&&o.variationsOutput&&0!==n.variation_id?(r.id=String(wpmDataLayer.products[n.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.variant=wpmDataLayer.products[n.variation_id].variant_name,r.brand=wpmDataLayer.products[n.variation_id].brand):(r.id=String(wpmDataLayer.products[n.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.brand=wpmDataLayer.products[n.id].brand),r=e.ga3AddListNameToProduct(r),t.push(r)}return t},e.ga3AddListNameToProduct=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null;return e.list_name=wpmDataLayer.shop.list_name,t&&(e.list_position=t),e}}(window.wpm=window.wpm||{},jQuery)},562:(e,t,a)=>{a(19),a(625)},572:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,n,i,l,d,s;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.ga4)||void 0===r||!r.measurement_id)return;if(null!==(n=wpmDataLayer)&&void 0!==n&&null!==(i=n.pixels)&&void 0!==i&&null!==(l=i.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.ga4)&&void 0!==s&&s.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.ga4.measurement_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGA4OrderItems()})}))}catch(e){console.error(e)}}))},228:()=>{!function(e,t,a){e.getGA4OrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,item_name:r.name,currency:wpmDataLayer.order.currency,item_category:wpmDataLayer.products[r.id].category.join("/")},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.item_id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_variant=wpmDataLayer.products[r.variation_id].variant_name,o.item_brand=wpmDataLayer.products[r.variation_id].brand):(o.item_id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_brand=wpmDataLayer.products[r.id].brand),e.push(o)}return e}}(window.wpm=window.wpm||{},jQuery)},522:(e,t,a)=>{a(228),a(572)},774:(e,t,a)=>{a(562),a(522)},294:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a;void 0===(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a?void 0:a.state)&&(wpm.canGoogleLoad()?wpm.loadGoogle():wpm.logPreventedPixelLoading("google","analytics / ads"))}))},860:()=>{!function(e,t,a){e.googleConfigConditionsMet=function(t){var a,o,r,n;return!(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(n=r.consent_mode)||void 0===n||!n.active)||("category"===e.getConsentValues().mode?!0===e.getConsentValues().categories[t]:"pixel"===e.getConsentValues().mode&&e.getConsentValues().pixels.includes("google-"+t))},e.getVisitorConsentStatusAndUpdateGoogleConsentSettings=function(t){return"category"===e.getConsentValues().mode?(e.getConsentValues().categories.analytics&&(t.analytics_storage="granted"),e.getConsentValues().categories.ads&&(t.ad_storage="granted")):"pixel"===e.getConsentValues().mode&&(t.analytics_storage=e.getConsentValues().pixels.includes("google-analytics")?"granted":"denied",t.ad_storage=e.getConsentValues().pixels.includes("google-ads")?"granted":"denied"),t},e.updateGoogleConsentMode=function(){let e=!(arguments.length>0&&arguments[0]!==a)||arguments[0],t=!(arguments.length>1&&arguments[1]!==a)||arguments[1];try{if(!window.gtag||!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent)return;gtag("consent","update",{analytics_storage:e?"granted":"denied",ad_storage:t?"granted":"denied"})}catch(e){console.error(e)}},e.fireGtagGoogleAds=function(){try{var e,t,a,o,r,n,i,l,d,s,c,u,p,m,g,y,w,v,_,f,h,L,D;if(wpmDataLayer.pixels.google.ads.state="loading",null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.ads)&&void 0!==o&&null!==(r=o.enhanced_conversions)&&void 0!==r&&r.active)for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e,{allow_enhanced_conversions:!0});else for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e);null!==(n=wpmDataLayer)&&void 0!==n&&null!==(i=n.pixels)&&void 0!==i&&null!==(l=i.google)&&void 0!==l&&null!==(d=l.ads)&&void 0!==d&&d.conversionIds&&null!==(s=wpmDataLayer)&&void 0!==s&&null!==(c=s.pixels)&&void 0!==c&&null!==(u=c.google)&&void 0!==u&&null!==(p=u.ads)&&void 0!==p&&p.phone_conversion_label&&null!==(m=wpmDataLayer)&&void 0!==m&&null!==(g=m.pixels)&&void 0!==g&&null!==(y=g.google)&&void 0!==y&&null!==(w=y.ads)&&void 0!==w&&w.phone_conversion_number&>ag("config",Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]+"/"+wpmDataLayer.pixels.google.ads.phone_conversion_label,{phone_conversion_number:wpmDataLayer.pixels.google.ads.phone_conversion_number}),null!==(v=wpmDataLayer)&&void 0!==v&&null!==(_=v.shop)&&void 0!==_&&_.page_type&&"order_received_page"===wpmDataLayer.shop.page_type&&null!==(f=wpmDataLayer)&&void 0!==f&&null!==(h=f.order)&&void 0!==h&&null!==(L=h.google)&&void 0!==L&&null!==(D=L.ads)&&void 0!==D&&D.enhanced_conversion_data&>ag("set","user_data",wpmDataLayer.order.google.ads.enhanced_conversion_data),wpmDataLayer.pixels.google.ads.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsUA=function(){try{wpmDataLayer.pixels.google.analytics.universal.state="loading",gtag("config",wpmDataLayer.pixels.google.analytics.universal.property_id,wpmDataLayer.pixels.google.analytics.universal.parameters),wpmDataLayer.pixels.google.analytics.universal.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsGA4=function(){try{var e,t,a,o,r;wpmDataLayer.pixels.google.analytics.ga4.state="loading";let n=wpmDataLayer.pixels.google.analytics.ga4.parameters;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.ga4)&&void 0!==r&&r.debug_mode&&(n.debug_mode=!0),gtag("config",wpmDataLayer.pixels.google.analytics.ga4.measurement_id,n),wpmDataLayer.pixels.google.analytics.ga4.state="ready"}catch(e){console.error(e)}},e.isGoogleActive=function(){var e,t,a,o,r,n,i,l,d,s,c,u,p,m;return!(!(null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id||null!==(n=wpmDataLayer)&&void 0!==n&&null!==(i=n.pixels)&&void 0!==i&&null!==(l=i.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.ga4)&&void 0!==s&&s.measurement_id)&&jQuery.isEmptyObject(null===(c=wpmDataLayer)||void 0===c||null===(u=c.pixels)||void 0===u||null===(p=u.google)||void 0===p||null===(m=p.ads)||void 0===m?void 0:m.conversionIds))},e.getGoogleGtagId=function(){var e,t,a,o,r,n,i,l,d,s;return null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id?wpmDataLayer.pixels.google.analytics.universal.property_id:null!==(n=wpmDataLayer)&&void 0!==n&&null!==(i=n.pixels)&&void 0!==i&&null!==(l=i.google)&&void 0!==l&&null!==(d=l.analytics)&&void 0!==d&&null!==(s=d.ga4)&&void 0!==s&&s.measurement_id?wpmDataLayer.pixels.google.analytics.ga4.measurement_id:Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]},e.loadGoogle=function(){e.isGoogleActive()&&(wpmDataLayer.pixels.google.state="loading",e.loadScriptAndCacheIt("https://www.googletagmanager.com/gtag/js?id="+e.getGoogleGtagId()).then((function(t,a){try{var o,r,n,i,l,d,s,c,u,p,m,g,y,w,v,_,f,h,L,D,k,b;if(window.dataLayer=window.dataLayer||[],window.gtag=function(){dataLayer.push(arguments)},null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(n=r.google)&&void 0!==n&&null!==(i=n.consent_mode)&&void 0!==i&&i.active){var C,x,j,S;let t={ad_storage:wpmDataLayer.pixels.google.consent_mode.ad_storage,analytics_storage:wpmDataLayer.pixels.google.consent_mode.analytics_storage,wait_for_update:wpmDataLayer.pixels.google.consent_mode.wait_for_update};null!==(C=wpmDataLayer)&&void 0!==C&&null!==(x=C.pixels)&&void 0!==x&&null!==(j=x.google)&&void 0!==j&&null!==(S=j.consent_mode)&&void 0!==S&&S.region&&(t.region=wpmDataLayer.pixels.google.consent_mode.region),t=e.getVisitorConsentStatusAndUpdateGoogleConsentSettings(t),gtag("consent","default",t),gtag("set","ads_data_redaction",wpmDataLayer.pixels.google.consent_mode.ads_data_redaction),gtag("set","url_passthrough",wpmDataLayer.pixels.google.consent_mode.url_passthrough)}null!==(l=wpmDataLayer)&&void 0!==l&&null!==(d=l.pixels)&&void 0!==d&&null!==(s=d.google)&&void 0!==s&&null!==(c=s.linker)&&void 0!==c&&c.settings&>ag("set","linker",wpmDataLayer.pixels.google.linker.settings),gtag("js",new Date),jQuery.isEmptyObject(null===(u=wpmDataLayer)||void 0===u||null===(p=u.pixels)||void 0===p||null===(m=p.google)||void 0===m||null===(g=m.ads)||void 0===g?void 0:g.conversionIds)||(e.googleConfigConditionsMet("ads")?e.fireGtagGoogleAds():e.logPreventedPixelLoading("google-ads","ads")),null!==(y=wpmDataLayer)&&void 0!==y&&null!==(w=y.pixels)&&void 0!==w&&null!==(v=w.google)&&void 0!==v&&null!==(_=v.analytics)&&void 0!==_&&null!==(f=_.universal)&&void 0!==f&&f.property_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsUA():e.logPreventedPixelLoading("google-universal-analytics","analytics")),null!==(h=wpmDataLayer)&&void 0!==h&&null!==(L=h.pixels)&&void 0!==L&&null!==(D=L.google)&&void 0!==D&&null!==(k=D.analytics)&&void 0!==k&&null!==(b=k.ga4)&&void 0!==b&&b.measurement_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsGA4():e.logPreventedPixelLoading("ga4","analytics")),wpmDataLayer.pixels.google.state="ready"}catch(e){console.error(e)}})))},e.canGoogleLoad=function(){var t,a,o,r;return!(null===(t=wpmDataLayer)||void 0===t||null===(a=t.pixels)||void 0===a||null===(o=a.google)||void 0===o||null===(r=o.consent_mode)||void 0===r||!r.active)||("category"===e.getConsentValues().mode?!(!e.getConsentValues().categories.ads&&!e.getConsentValues().categories.analytics):"pixel"===e.getConsentValues().mode?e.getConsentValues().pixels.includes("google-ads")||e.getConsentValues().pixels.includes("google-analytics"):(console.error("Couldn't find a valid load condition for Google mode in wpmConsentValues"),!1))},e.gtagLoaded=function(){return new Promise((function(e,t){var a,o,r;void 0===(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r?void 0:r.state)&&t();let n=0;!function a(){var o,r,i;return"ready"===(null===(o=wpmDataLayer)||void 0===o||null===(r=o.pixels)||void 0===r||null===(i=r.google)||void 0===i?void 0:i.state)?e():n>=5e3?t():(n+=200,void setTimeout(a,200))}()}))}}(window.wpm=window.wpm||{},jQuery)},580:(e,t,a)=>{a(860),a(294)},69:(e,t,a)=>{a(580),a(190),a(774),a(463)},945:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,n,i,l;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.optimize)||void 0===o||!o.container_id||null!==(r=wpmDataLayer)&&void 0!==r&&null!==(n=r.pixels)&&void 0!==n&&null!==(i=n.google)&&void 0!==i&&null!==(l=i.optimize)&&void 0!==l&&l.loaded||wpm.canIFire("analytics","google-optimize")&&wpm.load_google_optimize_pixel()}))},962:()=>{!function(e,t,a){e.load_google_optimize_pixel=function(){try{wpmDataLayer.pixels.google.optimize.loaded=!0,e.loadScriptAndCacheIt("https://www.googleoptimize.com/optimize.js?id="+wpmDataLayer.pixels.google.optimize.container_id)}catch(e){console.error(e)}}}(window.wpm=window.wpm||{},jQuery)},463:(e,t,a)=>{a(962),a(945)},300:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,n,i,l,d;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.hotjar)||void 0===a||!a.site_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(n=r.hotjar)&&void 0!==n&&n.loaded||!wpm.canIFire("analytics","hotjar")||null!==(i=wpmDataLayer)&&void 0!==i&&null!==(l=i.pixels)&&void 0!==l&&null!==(d=l.hotjar)&&void 0!==d&&d.loaded||wpm.load_hotjar_pixel()}))},376:()=>{!function(e,t,a){e.load_hotjar_pixel=function(){try{wpmDataLayer.pixels.hotjar.loaded=!0,e=window,t=document,e.hj=e.hj||function(){(e.hj.q=e.hj.q||[]).push(arguments)},e._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6},a=t.getElementsByTagName("head")[0],(o=t.createElement("script")).async=1,o.src="https://static.hotjar.com/c/hotjar-"+e._hjSettings.hjid+".js?sv="+e._hjSettings.hjsv,a.appendChild(o)}catch(e){console.error(e)}var e,t,a,o}}(window.wpm=window.wpm||{},jQuery)},787:(e,t,a)=>{a(376),a(300)},473:()=>{!function(e,t,a){let o=()=>{let t=e.getCookie("cmplz_statistics"),a=e.getCookie("cmplz_marketing");return!(!e.getCookie("cmplz_consent_status")&&!e.getCookie("cmplz_banner-status"))&&{analytics:"allow"===t,ads:"allow"===a,visitorHasChosen:!0}},r=()=>{let t=e.getCookie("cookielawinfo-checkbox-analytics")||e.getCookie("cookielawinfo-checkbox-analytiques"),a=e.getCookie("cookielawinfo-checkbox-advertisement")||e.getCookie("cookielawinfo-checkbox-performance")||e.getCookie("cookielawinfo-checkbox-publicite"),o=e.getCookie("CookieLawInfoConsent");return!(!t&&!a)&&{analytics:"yes"===t,ads:"yes"===a,visitorHasChosen:!!o}},n={categories:{},pixels:[],mode:"category",visitorHasChosen:!1};e.getConsentValues=()=>n,e.setConsentValueCategories=function(){let e=arguments.length>0&&arguments[0]!==a&&arguments[0],t=arguments.length>1&&arguments[1]!==a&&arguments[1];n.categories.analytics=e,n.categories.ads=t},e.updateConsentCookieValues=function(){let t,i=arguments.length>0&&arguments[0]!==a?arguments[0]:null,l=arguments.length>1&&arguments[1]!==a?arguments[1]:null,d=arguments.length>2&&arguments[2]!==a&&arguments[2];if(n.categories.analytics=!d,n.categories.ads=!d,i||l)return i&&(n.categories.analytics=!!i),void(l&&(n.categories.ads=!!l));if(t=e.getCookie("pmw_cookie_consent"))return t=JSON.parse(t),n.categories.analytics=!0===t.analytics,n.categories.ads=!0===t.ads,void(n.visitorHasChosen=!0);if(t=e.getCookie("CookieConsent"))return t=decodeURI(t),n.categories.analytics=t.indexOf("statistics:true")>=0,n.categories.ads=t.indexOf("marketing:true")>=0,void(n.visitorHasChosen=!0);if(t=e.getCookie("CookieScriptConsent"))return t=JSON.parse(t),"reject"===t.action?(n.categories.analytics=!1,n.categories.ads=!1):2===t.categories.length?(n.categories.analytics=!0,n.categories.ads=!0):(n.categories.analytics=t.categories.indexOf("performance")>=0,n.categories.ads=t.categories.indexOf("targeting")>=0),void(n.visitorHasChosen=!0);var s,c,u,p,m,g,y,w;if(t=e.getCookie("borlabs-cookie"))return t=decodeURI(t),t=JSON.parse(t),n.categories.analytics=!(null===(s=t)||void 0===s||null===(c=s.consents)||void 0===c||!c.statistics),n.categories.ads=!(null===(u=t)||void 0===u||null===(p=u.consents)||void 0===p||!p.marketing),n.visitorHasChosen=!0,n.pixels=[...(null===(m=t)||void 0===m||null===(g=m.consents)||void 0===g?void 0:g.statistics)||[],...(null===(y=t)||void 0===y||null===(w=y.consents)||void 0===w?void 0:w.marketing)||[]],void(n.mode="pixel");if(t=o())return n.categories.analytics=!0===t.analytics,n.categories.ads=!0===t.ads,void(n.visitorHasChosen=t.visitorHasChosen);if(t=e.getCookie("cookie_notice_accepted"))return n.categories.analytics=!0,n.categories.ads=!0,void(n.visitorHasChosen=!0);if(t=e.getCookie("hu-consent"))return t=JSON.parse(t),n.categories.analytics=!!t.categories[3],n.categories.ads=!!t.categories[4],void(n.visitorHasChosen=!0);if(t=r())return n.categories.analytics=!0===t.analytics,n.categories.ads=!0===t.ads,void(n.visitorHasChosen=!0===t.visitorHasChosen);if(t=e.getCookie("moove_gdpr_popup"))return t=JSON.parse(t),n.categories.analytics="1"===t.thirdparty,n.categories.ads="1"===t.advanced,void(n.visitorHasChosen=!0);if(t=e.getCookie("wpautoterms-cookies-notice")){if("1"!==t)return;return n.categories.analytics=!0,n.categories.ads=!0,void(n.visitorHasChosen=!0)}if(window.localStorage&&window.localStorage.getItem("uc_settings")){if(console.log("Usercentrics settings detected"),"undefined"==typeof UC_UI)return void window.addEventListener("UC_UI_INITIALIZED",(function(t){e.ucUiProcessConsent()}));if(UC_UI.areAllConsentsAccepted())return n.categories.analytics=!0,n.categories.ads=!0,void(n.visitorHasChosen=!0);e.ucUiProcessConsent()}if(t=e.getCookie("OptanonConsent")){let e=new URLSearchParams(t).get("groups").split(","),a={};return e.forEach((e=>{let t=e.split(":");a[t[0]]=t[1]})),n.categories.analytics="1"===groubsObject[2],n.categories.ads="1"===a[4],void(n.visitorHasChosen=!0)}},e.ucUiProcessConsent=function(){if("undefined"==typeof UC_UI)return;UC_UI.areAllConsentsAccepted()&&pmw.consentAcceptAll();const e=UC_UI.getSettingsLabels().categories.filter((e=>"Statistics"===e.label))[0].slug;pmw.consentAdjustSelectively({analytics:!UC_UI.getServicesBaseInfo().filter((t=>t.categorySlug===e&&!1===t.consent.status)).length>0,ads:!UC_UI.getServicesBaseInfo().filter((e=>"marketing"===e.categorySlug&&!1===e.consent.status)).length>0})},e.updateConsentCookieValues(),e.setConsentDefaultValuesToExplicit=()=>{n.categories={analytics:!1,ads:!1}},e.canIFire=(t,a)=>{let o;return"category"===n.mode?o=!!n.categories[t]:"pixel"===n.mode?(o=n.pixels.includes(a),!1===o&&"microsoft-ads"===a&&(o=n.pixels.includes("bing-ads"))):(console.error("Couldn't find a valid consent mode in wpmConsentValues"),o=!1),!!o||(e.logPreventedPixelLoading(a,t),!1)},e.logPreventedPixelLoading=(e,t)=>{var a,o,r;null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.shop)&&void 0!==o&&null!==(r=o.cookie_consent_mgmt)&&void 0!==r&&r.explicit_consent?console.log('Pixel Manager for WooCommerce: The "'+e+" (category: "+t+')" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)'):console.log('Pixel Manager for WooCommerce: The "'+e+" (category: "+t+')" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)')},e.scriptTagObserver=new MutationObserver((a=>{a.forEach((a=>{let{addedNodes:o}=a;[...o].forEach((a=>{t(a).data("wpm-cookie-category")&&(e.shouldScriptBeActive(a)?e.unblockScript(a):e.blockScript(a))}))}))})),e.scriptTagObserver.observe(document.head,{childList:!0,subtree:!0}),document.addEventListener("DOMContentLoaded",(()=>e.scriptTagObserver.disconnect())),e.shouldScriptBeActive=e=>{var a,o,r,i;return!((wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent||n.visitorHasChosen)&&("category"!==n.mode||!t(e).data("wpm-cookie-category").split(",").some((e=>n.categories[e])))&&("pixel"!==n.mode||!n.pixels.includes(t(e).data("wpm-pixel-name")))&&("pixel"!==n.mode||"google"!==t(e).data("wpm-pixel-name")||!["google-analytics","google-ads"].some((e=>n.pixels.includes(e))))&&(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.consent_mode)||void 0===i||!i.active||"google"!==t(e).data("wpm-pixel-name")))},e.unblockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove();let r=t(e).data("wpm-src");r&&t(e).attr("src",r),e.type="text/javascript",o&&t(e).appendTo("head"),document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.blockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove(),t(e).attr("src")&&t(e).removeAttr("src"),e.type="blocked/javascript",o&&t(e).appendTo("head")},e.unblockAllScripts=function(){let t=!(arguments.length>0&&arguments[0]!==a)||arguments[0],o=!(arguments.length>1&&arguments[1]!==a)||arguments[1];e.setConsentValueCategories(t,o),document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.unblockSelectedPixels=()=>{document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.explicitConsentStateAlreadySet=()=>{if(n.explicitConsentStateAlreadySet)return!0;n.explicitConsentStateAlreadySet=!0},document.addEventListener("borlabs-cookie-consent-saved",(()=>{e.updateConsentCookieValues(),"pixel"===n.mode?(e.unblockSelectedPixels(),e.updateGoogleConsentMode(n.pixels.includes("google-analytics"),n.pixels.includes("google-ads"))):(e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads))})),document.addEventListener("CookiebotOnAccept",(()=>{Cookiebot.consent.statistics&&(n.categories.analytics=!0),Cookiebot.consent.marketing&&(n.categories.ads=!0),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)}),!1),document.addEventListener("CookieScriptAccept",(t=>{t.detail.categories.includes("performance")&&(n.categories.analytics=!0),t.detail.categories.includes("targeting")&&(n.categories.ads=!0),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)})),document.addEventListener("CookieScriptAcceptAll",(()=>{e.setConsentValueCategories(!0,!0),e.unblockAllScripts(!0,!0),e.updateGoogleConsentMode(!0,!0)})),e.cmplzStatusChange=t=>{t.detail.categories.includes("statistics")&&e.updateConsentCookieValues(!0,null),t.detail.categories.includes("marketing")&&e.updateConsentCookieValues(null,!0),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)},document.addEventListener("cmplzStatusChange",e.cmplzStatusChange),document.addEventListener("cmplz_status_change",e.cmplzStatusChange),document.addEventListener("setCookieNotice",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)})),e.huObserver=new MutationObserver((t=>{t.forEach((t=>{let{addedNodes:a}=t;[...a].forEach((t=>{"hu"===t.id&&document.querySelector(".hu-cookies-save").addEventListener("click",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)}))}))}))})),window.hu&&e.huObserver.observe(document.documentElement||document.body,{childList:!0,subtree:!0}),window.addEventListener("ucEvent",(function(e){e.detail&&"consent_status"==e.detail.event&&(!0===e.detail["Google Ads Remarketing"]?console.log("Google Ads Remarketing has consent"):console.log("Google Ads Remarketing has no consent"))})),window.addEventListener("UC_UI_CMP_EVENT",(function(e){"ACCEPT_ALL"===e.detail.type&&pmw.consentAcceptAll(),"DENY_ALL"===e.detail.type&&pmw.consentRevokeAll(),"SAVE"===e.detail.type&&console.log("event.detail",e.detail)})),jQuery("#accept-recommended-btn-handler, #onetrust-accept-btn-handler").on("click",(function(){void 0!==window.OneTrust&&pmw.consentAcceptAll()})),jQuery(".ot-pc-refuse-all-handler, #onetrust-reject-all-handler").on("click",(function(){pmw.consentRevokeAll()})),jQuery(".save-preference-btn-handler.onetrust-close-btn-handler").on("click",(function(){location.reload()}))}(window.wpm=window.wpm||{},jQuery),function(e,t,a){e.consentAcceptAll=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:{};t.duration=t.duration||365,e.consentSetCookie(!0,!0,t.duration),wpm.unblockAllScripts(!0,!0),wpm.updateGoogleConsentMode(!0,!0)},e.consentAdjustSelectively=t=>{t.analytics=t.analytics!==a?t.analytics:wpm.getConsentValues().categories.analytics,t.ads=t.ads!==a?t.ads:wpm.getConsentValues().categories.ads,t.duration=t.duration||365,e.consentSetCookie(t.analytics,t.ads,t.duration),wpm.unblockAllScripts(t.analytics,t.ads),wpm.updateGoogleConsentMode(t.analytics,t.ads)},e.consentRevokeAll=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:{};t.duration=t.duration||365,wpm.setConsentValueCategories(!1,!1),e.consentSetCookie(!1,!1,t.duration),wpm.updateGoogleConsentMode(!1,!1)},e.consentSetCookie=function(e,t){let o=arguments.length>2&&arguments[2]!==a?arguments[2]:365;wpm.setCookie("pmw_cookie_consent",JSON.stringify({analytics:e,ads:t}),o)},jQuery(document).trigger("pmw_cookie_consent_management_loaded")}(window.pmw=window.pmw||{},jQuery)},299:()=>{jQuery(document).on("click",".remove_from_cart_button, .remove",(e=>{try{let t=new URL(jQuery(e.currentTarget).attr("href")),a=wpm.getProductIdByCartItemKeyUrl(t);wpm.removeProductFromCart(a)}catch(e){console.error(e)}}));let e=[".checkout-button",".cart-checkout-button",".button.checkout",".xoo-wsc-ft-btn-checkout",".elementor-button--checkout"].join(",");jQuery(document).on("click init_checkout",e,(()=>{jQuery(document).trigger("wpmBeginCheckout")})),jQuery(document).on("updated_cart_totals",(()=>{jQuery(document).trigger("wpmViewCart")})),jQuery(document).on("wpmLoad",(e=>{jQuery(document).on("payment_method_selected",(()=>{!1===wpm.paymentMethodSelected&&wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val()),wpm.paymentMethodSelected=!0}))})),jQuery(document).on("wpmLoad",(()=>{try{wpm.doesWooCommerceCartExist()&&wpm.getCartItems()}catch(e){console.error(e)}})),jQuery(document).on("wpmLoad",(()=>{wpmDataLayer.products=wpmDataLayer.products||{};let e=wpm.getAddToCartLinkProductIds();wpm.getProductsFromBackend(e)})),jQuery(document).on("wpmLoad",(()=>{if(!wpm.getCookie("wpmReferrer")&&document.referrer){let e=new URL(document.referrer).hostname;e!==window.location.host&&wpm.setCookie("wpmReferrer",e)}})),jQuery(document).on("wpmLoad",(()=>{try{var e;if("undefined"!=typeof wpmDataLayer&&(null===(e=wpmDataLayer)||void 0===e||!e.wpmLoadFired)){var t,a,o;if(jQuery(document).trigger("wpmLoadAlways"),null!==(t=wpmDataLayer)&&void 0!==t&&t.shop)if("product"===wpmDataLayer.shop.page_type&&"variable"!==wpmDataLayer.shop.product_type&&wpm.getMainProductIdFromProductPage()){let e=wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage());jQuery(document).trigger("wpmViewItem",e)}else"product_category"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmCategory"):"search"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmSearch"):"cart"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmViewCart"):"order_received_page"===wpmDataLayer.shop.page_type&&wpmDataLayer.order?wpm.isOrderIdStored(wpmDataLayer.order.id)||(jQuery(document).trigger("wpmOrderReceivedPage"),wpm.writeOrderIdToStorage(wpmDataLayer.order.id,wpmDataLayer.order.key),"function"==typeof wpm.acrRemoveCookie&&wpm.acrRemoveCookie()):jQuery(document).trigger("wpmEverywhereElse");else jQuery(document).trigger("wpmEverywhereElse");null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.user)&&void 0!==o&&o.id&&!wpm.hasLoginEventFired()&&(jQuery(document).trigger("wpmLogin"),wpm.setLoginEventFired()),wpmDataLayer.wpmLoadFired=!0}}catch(e){console.error(e)}})),jQuery(document).on("wpmLoad",(async()=>{window.sessionStorage&&window.sessionStorage.getItem("_pmw_endpoint_available")&&!JSON.parse(window.sessionStorage.getItem("_pmw_endpoint_available"))&&console.error("Pixel Manager for WooCommerce: REST endpoint is not available. Using admin-ajax.php instead.")})),jQuery(document).on("wpmPreLoadPixels",(()=>{var e,t,a;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.shop)&&void 0!==t&&null!==(a=t.cookie_consent_mgmt)&&void 0!==a&&a.explicit_consent&&!wpm.explicitConsentStateAlreadySet()&&wpm.updateConsentCookieValues(null,null,!0),jQuery(document).trigger("wpmLoadPixels",{})})),jQuery(document).on("wpmAddToCart",((e,t)=>{var a,o,r,n,i,l;let d={event:"addToCart",product:t};null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.pixels)&&void 0!==o&&null!==(r=o.facebook)&&void 0!==r&&r.loaded&&(d.facebook={event_name:"AddToCart",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:wpm.fbGetProductDataForCapiEvent(t)}),null!==(n=wpmDataLayer)&&void 0!==n&&null!==(i=n.pixels)&&void 0!==i&&null!==(l=i.tiktok)&&void 0!==l&&l.loaded&&(d.tiktok={event:"AddToCart",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser(),properties:{value:t.price*t.quantity,currency:t.currency,contents:[{content_id:t.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],content_type:"product",content_name:t.name,quantity:t.quantity,price:t.price}]}}),jQuery(document).trigger("wpmClientSideAddToCart",d),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(d)})),jQuery(document).on("wpmBeginCheckout",(()=>{var e,t,a,o,r,n;let i={event:"beginCheckout"};var l;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.facebook)&&void 0!==a&&a.loaded&&(i.facebook={event_name:"InitiateCheckout",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{}},null!==(l=wpmDataLayer)&&void 0!==l&&l.cart&&!jQuery.isEmptyObject(wpmDataLayer.cart)&&(i.facebook.custom_data={content_type:"product",content_ids:wpm.fbGetContentIdsFromCart(),value:wpm.getCartValue(),currency:wpmDataLayer.shop.currency})),null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(n=r.tiktok)&&void 0!==n&&n.loaded&&(i.tiktok={event:"InitiateCheckout",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser()}),jQuery(document).trigger("wpmClientSideBeginCheckout",i),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(i)})),jQuery(document).on("wpmAddToWishlist",((e,t)=>{var a,o,r,n,i,l;let d={event:"addToWishlist",product:t};null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.pixels)&&void 0!==o&&null!==(r=o.facebook)&&void 0!==r&&r.loaded&&(d.facebook={event_name:"AddToWishlist",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:wpm.fbGetProductDataForCapiEvent(t)}),null!==(n=wpmDataLayer)&&void 0!==n&&null!==(i=n.pixels)&&void 0!==i&&null!==(l=i.tiktok)&&void 0!==l&&l.loaded&&(d.tiktok={event:"AddToWishlist",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser(),properties:{value:t.price*t.quantity,currency:t.currency,contents:[{content_id:t.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],content_type:"product",content_name:t.name,quantity:t.quantity,price:t.price}]}}),jQuery(document).trigger("wpmClientSideAddToWishlist",d),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(d)})),jQuery(document).on("wpmViewItem",(function(e){var t,a,o,r,n,i;let l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,d={event:"viewItem",product:l};null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.pixels)&&void 0!==a&&null!==(o=a.facebook)&&void 0!==o&&o.loaded&&(d.facebook={event_name:"ViewContent",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{}},l&&(d.facebook.custom_data=wpm.fbGetProductDataForCapiEvent(l))),null!==(r=wpmDataLayer)&&void 0!==r&&null!==(n=r.pixels)&&void 0!==n&&null!==(i=n.tiktok)&&void 0!==i&&i.loaded&&(d.tiktok={event:"ViewContent",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser()},l&&(d.tiktok.properties={value:l.price*l.quantity,currency:l.currency,contents:[{content_id:l.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],content_type:"product",content_name:l.name,quantity:l.quantity,price:l.price}]})),jQuery(document).trigger("wpmClientSideViewItem",d),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(d)})),jQuery(document).on("wpmSearch",(()=>{var e,t,a,o,r,n;let i={event:"search"};null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.facebook)&&void 0!==a&&a.loaded&&(i.facebook={event_name:"Search",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{search_string:wpm.getSearchTermFromUrl()}}),null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(n=r.tiktok)&&void 0!==n&&n.loaded&&(i.tiktok={event:"Search",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser(),properties:{query:wpm.getSearchTermFromUrl()}}),jQuery(document).trigger("wpmClientSideSearch",i),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(i)})),jQuery(document).on("wpmPlaceOrder",(()=>{var e,t,a;let o={event:"placeOrder"};null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.tiktok)&&void 0!==a&&a.loaded&&(o.tiktok={event:"PlaceAnOrder",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser()}),jQuery(document).trigger("wpmClientPlaceOrder",o),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(o)})),jQuery(document).on("wpmOrderReceivedPage",(()=>{var e,t,a,o,r,n;let i={event:"orderReceived"};null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.facebook)&&void 0!==a&&a.loaded&&(i.facebook={event_name:"Purchase",event_id:wpmDataLayer.order.id.toString(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{content_type:"product",value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,content_ids:wpm.facebookContentIds()}}),null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(n=r.tiktok)&&void 0!==n&&n.loaded&&(i.tiktok={event:"CompletePayment",event_id:wpmDataLayer.order.id.toString(),context:wpm.getTikTokUserDataFromBrowser(),properties:{value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,contents:wpm.getTikTokOrderItemIds()}}),jQuery(document).trigger("wpmClientSideOrderReceivedPage",i)}))},459:()=>{const e=[".add_to_cart_button:not(.product_type_variable)",".ajax_add_to_cart",".single_add_to_cart_button"].join(",");jQuery(e).on("click adding_to_cart",(e=>{try{let t,a=1;"product"===wpmDataLayer.shop.page_type?(void 0!==jQuery(e.currentTarget).attr("href")&&jQuery(e.currentTarget).attr("href").includes("add-to-cart")&&(t=jQuery(e.currentTarget).data("product_id"),wpm.addProductToCart(t,a)),"simple"===wpmDataLayer.shop.product_type&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery(e.currentTarget).val(),wpm.addProductToCart(t,a)),["variable","variable-subscription"].indexOf(wpmDataLayer.shop.product_type)>=0&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery("[name='variation_id']").val(),wpm.addProductToCart(t,a)),"grouped"===wpmDataLayer.shop.product_type&&jQuery(".woocommerce-grouped-product-list-item").each(((e,o)=>{a=Number(jQuery(o).find(".input-text.qty").val()),a||0===a||(a=1);let r=jQuery(o).attr("class");t=wpm.getPostIdFromString(r),wpm.addProductToCart(t,a)})),"bundle"===wpmDataLayer.shop.product_type&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery("input[name=add-to-cart]").val(),wpm.addProductToCart(t,a))):(t=jQuery(e.currentTarget).data("product_id"),wpm.addProductToCart(t,a))}catch(e){console.error(e)}})),jQuery("a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)").one("click",(e=>{try{if(jQuery(e.target).closest("a").attr("href")){let t=new URL(jQuery(e.currentTarget).attr("href"),window.location.origin);if(t.searchParams.has("add-to-cart")){let e=t.searchParams.get("add-to-cart");wpm.addProductToCart(e,1)}}}catch(e){console.error(e)}})),jQuery(".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product").on("click",(e=>{try{let t=jQuery(e.currentTarget).nextAll(".wpmProductId:first").data("id");if(t){if(t=wpm.getIdBasedOndVariationsOutputSetting(t),!t)throw Error("Wasn't able to retrieve a productId");if(wpmDataLayer.products&&wpmDataLayer.products[t]){let e=wpm.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmSelectContentGaUa",e),jQuery(document).trigger("wpmSelectItem",e)}}}catch(e){console.error(e)}})),jQuery("#billing_email").on("input",(e=>{wpm.isEmail(jQuery(e.currentTarget).val())&&(wpm.fireCheckoutProgress(2),wpm.emailSelected=!0)})),jQuery("form.checkout").on("checkout_place_order_success",(()=>{!1===wpm.emailSelected&&wpm.fireCheckoutProgress(2),!1===wpm.paymentMethodSelected&&(wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val())),wpm.fireCheckoutProgress(4),jQuery(document).trigger("wpmPlaceOrder",{})})),jQuery("[name='update_cart']").on("click",(()=>{try{jQuery(".cart_item").each(((e,t)=>{let a=new URL(jQuery(t).find(".product-remove").find("a").attr("href")),o=wpm.getProductIdByCartItemKeyUrl(a),r=jQuery(t).find(".qty").val();0===r?wpm.removeProductFromCart(o):r<wpmDataLayer.cart[o].quantity?wpm.removeProductFromCart(o,wpmDataLayer.cart[o].quantity-r):r>wpmDataLayer.cart[o].quantity&&wpm.addProductToCart(o,r-wpmDataLayer.cart[o].quantity)}))}catch(e){console.error(e),wpm.getCartItemsFromBackend()}})),jQuery(".add_to_wishlist,.wl-add-to").on("click",(e=>{try{let t;if(jQuery(e.currentTarget).data("productid")?t=jQuery(e.currentTarget).data("productid"):jQuery(e.currentTarget).data("product-id")&&(t=jQuery(e.currentTarget).data("product-id")),!t)throw Error("Wasn't able to retrieve a productId");let a=wpm.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmAddToWishlist",a)}catch(e){console.error(e)}})),jQuery(".single_variation_wrap").on("show_variation",((e,t)=>{try{let e=wpm.getIdBasedOndVariationsOutputSetting(t.variation_id);if(!e)throw Error("Wasn't able to retrieve a productId");wpm.triggerViewItemEventPrep(e)}catch(e){console.error(e)}}))},584:()=>{!function(e,t,a){const o="_wpm_order_ids",r="_pmw_endpoint_available",n="pmw/v1/test/";function i(){return""!==e.getCookie(o)}e.emailSelected=!1,e.paymentMethodSelected=!1,e.useRestEndpoint=()=>e.isSessionStorageAvailable()&&e.isRestEndpointAvailable()&&e.isBelowRestErrorThreshold(),e.isBelowRestErrorThreshold=()=>window.sessionStorage.getItem(0)<=10,e.isRestEndpointAvailable=async()=>window.sessionStorage.getItem(r)?JSON.parse(window.sessionStorage.getItem(r)):await e.testEndpoint(),e.isSessionStorageAvailable=()=>!!window.sessionStorage,e.testEndpoint=async function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:e.root+n,o=arguments.length>1&&arguments[1]!==a?arguments[1]:r,i=await fetch(t,{method:"POST",mode:"cors",cache:"no-cache",keepalive:!0});return 200===i.status?(window.sessionStorage.setItem(o,JSON.stringify(!0)),!0):404===i.status||0===i.status?(window.sessionStorage.setItem(o,JSON.stringify(!1)),!1):void 0},e.isWpmRestEndpointAvailable=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:r;return!!e.getCookie(t)},e.writeOrderIdToStorage=function(t,r){let n=arguments.length>2&&arguments[2]!==a?arguments[2]:"thankyou_page";if(window.Storage)if(null===localStorage.getItem(o)){let e=[];e.push(t),window.localStorage.setItem(o,JSON.stringify(e))}else{let e=JSON.parse(localStorage.getItem(o));e.includes(t)||(e.push(t),window.localStorage.setItem(o,JSON.stringify(e)))}else{let a=new Date;a.setDate(a.getDate()+365);let r=[];i()&&(r=JSON.parse(e.getCookie(o))),r.includes(t)||(r.push(t),document.cookie="_wpm_order_ids="+JSON.stringify(r)+";expires="+a.toUTCString())}"function"==typeof e.storeOrderIdOnServer&&wpmDataLayer.orderDeduplication&&e.storeOrderIdOnServer(r,n)},e.isOrderIdStored=t=>wpmDataLayer.orderDeduplication?window.Storage?null!==localStorage.getItem(o)&&JSON.parse(localStorage.getItem(o)).includes(t):!!i()&&JSON.parse(e.getCookie(o)).includes(t):(console.log("order duplication prevention: off"),!1),e.isEmail=e=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),e.removeProductFromCart=function(t){let o=arguments.length>1&&arguments[1]!==a?arguments[1]:null;try{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");let a;if(a=null==o?wpmDataLayer.cart[t].quantity:o,wpmDataLayer.cart[t]){let r=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmRemoveFromCart",r),null==o||wpmDataLayer.cart[t].quantity===o?(delete wpmDataLayer.cart[t],sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))):(wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity-a,sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart)))}}catch(e){console.error(e)}},e.getIdBasedOndVariationsOutputSetting=e=>{try{var t,a;return null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput?e:wpmDataLayer.products[e].isVariation?wpmDataLayer.products[e].parentId:e}catch(e){console.error(e)}},e.addProductToCart=(t,a)=>{try{var o;if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");if(null!==(o=wpmDataLayer)&&void 0!==o&&o.products[t]){var r;let o=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmAddToCart",o),null!==(r=wpmDataLayer)&&void 0!==r&&r.cart[t]?wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity+a:("cart"in wpmDataLayer||(wpmDataLayer.cart={}),wpmDataLayer.cart[t]=e.getProductDetailsFormattedForEvent(t,a)),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))}}catch(t){console.error(t),e.getCartItemsFromBackend()}},e.getCartItems=()=>{sessionStorage?sessionStorage.getItem("wpmDataLayerCart")&&"order_received_page"!==wpmDataLayer.shop.page_type?e.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem("wpmDataLayerCart"))):sessionStorage.setItem("wpmDataLayerCart",JSON.stringify({})):e.getCartItemsFromBackend()},e.getCartItemsFromBackend=()=>{try{fetch(e.ajax_url,{method:"POST",cache:"no-cache",body:new URLSearchParams({action:"pmw_get_cart_items"}),keepalive:!0}).then((e=>{if(e.ok)return e.json();throw Error("Error getting cart items from backend")})).then((t=>{if(!t.success)throw Error("Error getting cart items from backend");t.data.cart||(t.data.cart={}),e.saveCartObjectToDataLayer(t.data.cart),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(t.data.cart))}))}catch(e){console.error(e)}},e.getProductsFromBackend=async t=>{var a;if(null!==(a=wpmDataLayer)&&void 0!==a&&a.products&&(t=t.filter((e=>!(e in wpmDataLayer.products)))),t&&0!==t.length){try{let a;if(a=await e.isRestEndpointAvailable()?await fetch(e.root+"pmw/v1/products/",{method:"POST",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify({pageId:wpmDataLayer.general.pageId,productIds:t})}):await fetch(e.ajax_url,{method:"POST",cache:"no-cache",body:new URLSearchParams({action:"pmw_get_product_ids",productIds:t})}),a.ok){let e=await a.json();e.success&&(wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e.data))}else console.error("Error getting products from backend")}catch(e){console.error(e)}return!0}},e.saveCartObjectToDataLayer=e=>{wpmDataLayer.cart=e,wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e)},e.triggerViewItemEventPrep=async t=>{wpmDataLayer.products&&wpmDataLayer.products[t]||await e.getProductsFromBackend([t]),e.triggerViewItemEvent(t)},e.triggerViewItemEvent=t=>{let a=e.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmViewItem",a)},e.triggerViewItemEventNoProduct=()=>{jQuery(document).trigger("wpmViewItem")},e.fireCheckoutOption=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null,o=arguments.length>2&&arguments[2]!==a?arguments[2]:null,r={step:e,checkout_option:t,value:o};jQuery(document).trigger("wpmFireCheckoutOption",r)},e.fireCheckoutProgress=e=>{let t={step:e};jQuery(document).trigger("wpmFireCheckoutProgress",t)},e.getPostIdFromString=e=>{try{return e.match(/(post-)(\d+)/)[2]}catch(e){console.error(e)}},e.triggerViewItemList=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");jQuery(document).trigger("wpmViewItemList",e.getProductDataForViewItemEvent(t))},e.getProductDataForViewItemEvent=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");try{if(wpmDataLayer.products[t])return e.getProductDetailsFormattedForEvent(t)}catch(e){console.error(e)}},e.getMainProductIdFromProductPage=()=>{try{return["simple","variable","grouped","composite","bundle"].indexOf(wpmDataLayer.shop.product_type)>=0&&jQuery(".wpmProductId:first").data("id")}catch(e){console.error(e)}},e.viewItemListTriggerTestMode=e=>{jQuery(e).css({position:"relative"}),jQuery(e).append('<div id="viewItemListTriggerOverlay"></div>'),jQuery(e).find("#viewItemListTriggerOverlay").css({"z-index":"10",display:"block",position:"absolute",height:"100%",top:"0",left:"0",right:"0",opacity:wpmDataLayer.viewItemListTrigger.opacity,"background-color":wpmDataLayer.viewItemListTrigger.backgroundColor})},e.getSearchTermFromUrl=()=>{try{return new URLSearchParams(window.location.search).get("s")}catch(e){console.error(e)}};let l,d={};e.observerCallback=(t,a)=>{t.forEach((t=>{try{let o,r=jQuery(t.target).data("ioid");if(o=jQuery(t.target).next(".wpmProductId").length?jQuery(t.target).next(".wpmProductId").data("id"):jQuery(t.target).find(".wpmProductId").data("id"),!o)throw Error("wpmProductId element not found");t.isIntersecting?d[r]=setTimeout((()=>{e.triggerViewItemList(o),wpmDataLayer.viewItemListTrigger.testMode&&e.viewItemListTriggerTestMode(t.target),!1===wpmDataLayer.viewItemListTrigger.repeat&&a.unobserve(t.target)}),wpmDataLayer.viewItemListTrigger.timeout):(clearTimeout(d[r]),wpmDataLayer.viewItemListTrigger.testMode&&jQuery(t.target).find("#viewItemListTriggerOverlay").remove())}catch(e){console.error(e)}}))};let s,c=0,u=()=>{s=jQuery(".wpmProductId").map((function(e,t){return jQuery(t).parent().hasClass("type-product")||jQuery(t).parent().hasClass("product")||jQuery(t).parent().hasClass("product-item-inner")?jQuery(t).parent():jQuery(t).prev().hasClass("wc-block-grid__product")||jQuery(t).prev().hasClass("product")||jQuery(t).prev().hasClass("product-small")||jQuery(t).prev().hasClass("woocommerce-LoopProduct-link")?jQuery(this).prev():jQuery(t).closest(".product").length?jQuery(t).closest(".product"):void 0}))};e.startIntersectionObserverToWatch=()=>{try{e.urlHasParameter("vildemomode")&&(wpmDataLayer.viewItemListTrigger.testMode=!0),l=new IntersectionObserver(e.observerCallback,{threshold:wpmDataLayer.viewItemListTrigger.threshold}),u(),s.each(((e,t)=>{jQuery(t[0]).data("ioid",c++),l.observe(t[0])}))}catch(e){console.error(e)}},e.startProductsMutationObserverToWatch=()=>{try{let e=jQuery(".wpmProductId:eq(0)").parents().has(jQuery(".wpmProductId:eq(1)").parents()).first();e.length&&p.observe(e[0],{attributes:!0,childList:!0,characterData:!0})}catch(e){console.error(e)}};let p=new MutationObserver((e=>{e.forEach((e=>{let t=e.addedNodes;null!==t&&jQuery(t).each((function(){(jQuery(this).hasClass("type-product")||jQuery(this).hasClass("product-small")||jQuery(this).hasClass("wc-block-grid__product"))&&m(this)&&(jQuery(this).data("ioid",c++),l.observe(this))}))}))})),m=e=>!(!jQuery(e).find(".wpmProductId").length&&!jQuery(e).siblings(".wpmProductId").length);e.setCookie=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:"",o=arguments.length>2&&arguments[2]!==a?arguments[2]:null;if(o){let a=new Date;a.setTime(a.getTime()+24*o*60*60*1e3);let r="expires="+a.toUTCString();document.cookie=e+"="+t+";"+r+";path=/"}else document.cookie=e+"="+t+";path=/"},e.getCookie=e=>{let t=e+"=",a=decodeURIComponent(document.cookie).split(";");for(let e=0;e<a.length;e++){let o=a[e];for(;" "==o.charAt(0);)o=o.substring(1);if(0==o.indexOf(t))return o.substring(t.length,o.length)}return""},e.deleteCookie=t=>{e.setCookie(t,"",-1)},e.getWpmSessionData=()=>{if(window.sessionStorage){let e=window.sessionStorage.getItem("_wpm");return null!==e?JSON.parse(e):{}}return{}},e.setWpmSessionData=e=>{window.sessionStorage&&window.sessionStorage.setItem("_wpm",JSON.stringify(e))},e.storeOrderIdOnServer=async(t,a)=>{try{let o;o=await e.isRestEndpointAvailable()?await fetch(e.root+"pmw/v1/pixels-fired/",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":e.nonce_wp_rest},body:JSON.stringify({order_key:t,source:a}),keepalive:!0,cache:"no-cache"}):await fetch(e.ajax_url,{method:"POST",body:new URLSearchParams({action:"pmw_purchase_pixels_fired",order_key:t,source:a,nonce_ajax:e.nonce_ajax}),keepalive:!0});const r=await o.json();r.success?console.log("wpm.storeOrderIdOnServer success"):console.error("wpm.storeOrderIdOnServer error",r)}catch(e){console.error(e)}},e.getProductIdByCartItemKeyUrl=e=>{let t,a=new URLSearchParams(e.search).get("remove_item");return t=0===wpmDataLayer.cartItemKeys[a].variation_id?wpmDataLayer.cartItemKeys[a].product_id:wpmDataLayer.cartItemKeys[a].variation_id,t},e.getAddToCartLinkProductIds=()=>jQuery("a").map((function(){let e=jQuery(this).attr("href");if(e&&e.includes("?add-to-cart=")){let t=e.match(/(add-to-cart=)(\d+)/);if(t)return t[2]}})).get(),e.getProductDetailsFormattedForEvent=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:1,o={id:e.toString(),dyn_r_ids:wpmDataLayer.products[e].dyn_r_ids,name:wpmDataLayer.products[e].name,list_name:wpmDataLayer.shop.list_name,brand:wpmDataLayer.products[e].brand,category:wpmDataLayer.products[e].category,variant:wpmDataLayer.products[e].variant,list_position:wpmDataLayer.products[e].position,quantity:t,price:wpmDataLayer.products[e].price,currency:wpmDataLayer.shop.currency,isVariable:wpmDataLayer.products[e].isVariable,isVariation:wpmDataLayer.products[e].isVariation,parentId:wpmDataLayer.products[e].parentId};return o.isVariation&&(o.parentId_dyn_r_ids=wpmDataLayer.products[e].parentId_dyn_r_ids),o},e.setReferrerToCookie=()=>{e.getCookie("wpmReferrer")||e.setCookie("wpmReferrer",document.referrer)},e.getReferrerFromCookie=()=>e.getCookie("wpmReferrer")?e.getCookie("wpmReferrer"):null,e.getClidFromBrowser=function(){let t,o=arguments.length>0&&arguments[0]!==a?arguments[0]:"gclid";return t={gclid:"_gcl_aw",dclid:"_gcl_dc"},e.getCookie(t[o])?e.getCookie(t[o]).match(/(GCL.[\d]*.)(.*)/)[2]:""},e.getUserAgent=()=>navigator.userAgent,e.getViewPort=()=>({width:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),height:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}),e.version=()=>{console.log(wpmDataLayer.version)},e.loadScriptAndCacheIt=e=>{let t={dataType:"script",cache:!0,url:e};return jQuery.ajax(t)},e.getOrderItemPrice=e=>(e.total+e.total_tax)/e.quantity,e.hasLoginEventFired=()=>{let t=e.getWpmSessionData();return null==t?void 0:t.loginEventFired},e.setLoginEventFired=()=>{let t=e.getWpmSessionData();t.loginEventFired=!0,e.setWpmSessionData(t)},e.wpmDataLayerExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof wpmDataLayer)return e();setTimeout(t,50)}()})),e.jQueryExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof jQuery)return e();setTimeout(t,100)}()})),e.pageLoaded=()=>new Promise((e=>{!function t(){if("complete"===document.readyState)return e();setTimeout(t,50)}()})),e.pageReady=()=>new Promise((e=>{!function t(){if("interactive"===document.readyState||"complete"===document.readyState)return e();setTimeout(t,50)}()})),e.isMiniCartActive=()=>{if(window.sessionStorage){for(const[e,t]of Object.entries(window.sessionStorage))if(e.includes("wc_fragments"))return!0;return!1}return!1},e.doesWooCommerceCartExist=()=>document.cookie.includes("woocommerce_items_in_cart"),e.urlHasParameter=e=>new URLSearchParams(window.location.search).has(e),e.hashAsync=(e,t)=>crypto.subtle.digest(e,new TextEncoder("utf-8").encode(t)).then((e=>Array.prototype.map.call(new Uint8Array(e),(e=>("00"+e.toString(16)).slice(-2))).join(""))),e.getCartValue=()=>{var e;let t=0;if(null!==(e=wpmDataLayer)&&void 0!==e&&e.cart)for(const e in wpmDataLayer.cart){let a=wpmDataLayer.cart[e];t+=a.quantity*a.price}return t},e.doesUrlContainPatterns=e=>{for(const t of e)if(new RegExp(t).test(window.location.href))return!0;return!1},e.excludeDomainFromTracking=()=>{var e,t;let a=["appspot.com","translate.google.com"];return null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.general)&&void 0!==t&&t.excludeDomains&&(a=[...a,...wpmDataLayer.general.excludeDomains]),!!a.some((e=>window.location.href.includes(e)))&&(console.debug("Pixel Manager for WooCommerce: Aborted due to excluded domain"),!0)},e.getRandomEventId=()=>(Math.random()+1).toString(36).substring(2);let g=!1;const y=()=>{!1===g&&jQuery(document).trigger("pmw:ready"),g=!0};jQuery(document).on("ready",(()=>{y()})),document.addEventListener("DOMContentLoaded",(()=>{y()}))}(window.wpm=window.wpm||{},jQuery)},534:(e,t,a)=>{a(584),a(473)},207:()=>{wpm.wpmDataLayerExists().then((()=>{console.log("Pixel Manager for WooCommerce: "+(wpmDataLayer.version.pro?"Pro":"Free")+" Version "+wpmDataLayer.version.number+" loaded"),wpm.excludeDomainFromTracking()||document.dispatchEvent(new Event("wpmPreLoadPixels"))})).then((()=>{wpm.pageLoaded().then((()=>{document.dispatchEvent(new Event("wpmLoad"))}))})),jQuery(document).on("pmw:ready",(()=>{wpm.wpmDataLayerExists().then((()=>{wpm.startIntersectionObserverToWatch(),wpm.startProductsMutationObserverToWatch()}))}))}},t={};function a(o){var r=t[o];if(void 0!==r)return r.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,a),n.exports}a(534),wpm.jQueryExists().then((function(){jQuery(document).on("pmw:ready",(()=>{a(459)})),a(299),a(69),a(12),a(787),a(207)}))})();
|
2 |
//# sourceMappingURL=wpm-public.p1.min.js.map
|
1 |
+
(()=>{var e={806:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.check=t.isSpecial=t.isReserved=t.isIPv4MappedAddress=t.isLocalhost=t.isPrivate=t.createChecker=t.isInSubnet=t.IPv6=t.IPv4=t.isIPv6=t.isIPv4=t.isIP=void 0;var r=a(403);t.IPv4=r;var o=a(653);t.IPv6=o;var n=a(375),i=a(375);function s(e,t){return d(t)(e)}function d(e){if(!Array.isArray(e))return d([e]);var t=e.reduce((function(e,t){var a=t.split("/")[0];return e[n.isIP(a)].push(t),e}),{0:[],4:[],6:[]});if(0!==t[0].length)throw new Error("some subnets are not valid IP addresses: "+t[0]);var a=r.createChecker(t[4]),i=o.createChecker(t[6]);return function(e){if(!n.isIP(e))throw new Error("not a valid IPv4 or IPv6 address: "+e);return n.isIPv6(e)&&o.isIPv4MappedAddress(e)?i(e)||a(o.extractMappedIpv4(e)):n.isIPv6(e)?i(e):a(e)}}Object.defineProperty(t,"isIP",{enumerable:!0,get:function(){return i.isIP}}),Object.defineProperty(t,"isIPv4",{enumerable:!0,get:function(){return i.isIPv4}}),Object.defineProperty(t,"isIPv6",{enumerable:!0,get:function(){return i.isIPv6}}),t.isInSubnet=s,t.createChecker=d,t.isPrivate=function(e){return n.isIPv6(e)?o.isIPv4MappedAddress(e)?r.isPrivate(o.extractMappedIpv4(e)):o.isPrivate(e):r.isPrivate(e)},t.isLocalhost=function(e){return n.isIPv6(e)?o.isIPv4MappedAddress(e)?r.isLocalhost(o.extractMappedIpv4(e)):o.isLocalhost(e):r.isLocalhost(e)},t.isIPv4MappedAddress=function(e){return!!n.isIPv6(e)&&o.isIPv4MappedAddress(e)},t.isReserved=function(e){return n.isIPv6(e)?o.isIPv4MappedAddress(e)?r.isReserved(o.extractMappedIpv4(e)):o.isReserved(e):r.isReserved(e)},t.isSpecial=function(e){return n.isIPv6(e)?o.isIPv4MappedAddress(e)?r.isSpecial(o.extractMappedIpv4(e)):o.isSpecial(e):r.isSpecial(e)},t.check=s},244:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={localhost:{ipv4:["127.0.0.0/8"],ipv6:["::1/128"]},private:{ipv4:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"],ipv6:["fe80::/10","fc00::/7"]},reserved:{ipv4:["0.0.0.0/8","100.64.0.0/10","169.254.0.0/16","192.0.0.0/24","192.0.2.0/24","192.88.99.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/4","240.0.0.0/4","255.255.255.255/32"],ipv6:["::/128","64:ff9b::/96","100::/64","2001::/32","2001:10::/28","2001:20::/28","2001:db8::/32","2002::/16","ff00::/8"]}}},403:function(e,t,a){"use strict";var r=this&&this.__spreadArrays||function(){for(var e=0,t=0,a=arguments.length;t<a;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<a;t++)for(var n=arguments[t],i=0,s=n.length;i<s;i++,o++)r[o]=n[i];return r};Object.defineProperty(t,"__esModule",{value:!0}),t.isSpecial=t.isReserved=t.isLocalhost=t.isPrivate=t.createChecker=t.isInSubnet=void 0;var o=a(375),n=a(244);function i(e){if(!o.isIPv4(e))throw new Error("not a valid IPv4 address: "+e);var t=e.split(".");return(parseInt(t[0],10)<<24)+(parseInt(t[1],10)<<16)+(parseInt(t[2],10)<<8)+parseInt(t[3],10)>>>0}function s(e){if(Array.isArray(e)){var t=e.map((function(e){return d(e)}));return function(e){var a=i(e);return t.some((function(e){return e(a)}))}}var a=d(e);return function(e){var t=i(e);return a(t)}}function d(e){var t=e.split("/"),a=t[0],r=t[1],o=parseInt(r,10);if(!a||!Number.isInteger(o))throw new Error("not a valid IPv4 subnet: "+e);if(o<0||o>32)throw new Error("not a valid IPv4 prefix length: "+o+" (from "+e+")");var n=i(a);return function(e){return 0===o||n>>32-o==e>>32-o}}t.isInSubnet=function(e,t){return s(t)(e)},t.createChecker=s;var c={};t.isPrivate=function(e){return"private"in c==0&&(c.private=s(n.default.private.ipv4)),c.private(e)},t.isLocalhost=function(e){return"localhost"in c==0&&(c.localhost=s(n.default.localhost.ipv4)),c.localhost(e)},t.isReserved=function(e){return"reserved"in c==0&&(c.reserved=s(n.default.reserved.ipv4)),c.reserved(e)},t.isSpecial=function(e){return"special"in c==0&&(c.special=s(r(n.default.private.ipv4,n.default.localhost.ipv4,n.default.reserved.ipv4))),c.special(e)}},653:function(e,t,a){"use strict";var r=this&&this.__spreadArrays||function(){for(var e=0,t=0,a=arguments.length;t<a;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<a;t++)for(var n=arguments[t],i=0,s=n.length;i<s;i++,o++)r[o]=n[i];return r};Object.defineProperty(t,"__esModule",{value:!0}),t.isSpecial=t.isReserved=t.isIPv4MappedAddress=t.isLocalhost=t.isPrivate=t.createChecker=t.isInSubnet=t.extractMappedIpv4=void 0;var o=a(375),n=a(244),i=/\./,s=/^(.+:ffff:)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?:%.+)?$/,d=/:/,c=/::/;function p(e){if(!o.isIPv6(e))throw new Error("not a valid IPv6 address: "+e);if(i.test(e))return p(function(e){var t=e.match(s);if(!t||!o.isIPv4(t[2]))throw new Error("not a mapped IPv4 address: "+e);var a=t[1],r=t[2].split(i).map((function(e){return parseInt(e,10)}));return""+a+((r[0]<<8)+r[1]).toString(16)+":"+((r[2]<<8)+r[3]).toString(16)}(e));var t=e.split(c),a=t[0],r=t[1],n=a&&a.split(d)||[],l=r&&r.split(d)||[],u=new Array(8-(n.length+l.length));return n.concat(u,l)}function l(e){if(Array.isArray(e)){var t=e.map((function(e){return u(e)}));return function(e){var a=p(e);return t.some((function(e){return e(a)}))}}var a=u(e);return function(e){var t=p(e);return a(t)}}function u(e){var t=e.split("/"),a=t[0],r=t[1],o=parseInt(r,10);if(!a||!Number.isInteger(o))throw new Error("not a valid IPv6 CIDR subnet: "+e);if(o<0||o>128)throw new Error("not a valid IPv6 prefix length: "+o+" (from "+e+")");var n=p(a);return function(e){for(var t=0;t<8;++t){var a=Math.min(o-16*t,16);if(a<=0)break;if((n[t]&&parseInt(n[t],16)||0)>>16-a!=(e[t]&&parseInt(e[t],16)||0)>>16-a)return!1}return!0}}t.extractMappedIpv4=function(e){var t=e.match(s);if(!t||!o.isIPv4(t[2]))throw new Error("not a mapped IPv4 address: "+e);return t[2]},t.isInSubnet=function(e,t){return l(t)(e)},t.createChecker=l;var m={};t.isPrivate=function(e){return"private"in m==0&&(m.private=l(n.default.private.ipv6)),m.private(e)},t.isLocalhost=function(e){return"localhost"in m==0&&(m.localhost=l(n.default.localhost.ipv6)),m.localhost(e)},t.isIPv4MappedAddress=function(e){if("mapped"in m==0&&(m.mapped=l("::ffff:0:0/96")),m.mapped(e)){var t=e.match(s);return Boolean(t&&o.isIPv4(t[2]))}return!1},t.isReserved=function(e){return"reserved"in m==0&&(m.reserved=l(n.default.reserved.ipv6)),m.reserved(e)},t.isSpecial=function(e){return"special"in m==0&&(m.special=l(r(n.default.private.ipv6,n.default.localhost.ipv6,n.default.reserved.ipv6))),m.special(e)}},375:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isIP=t.isIPv6=t.isIPv4=void 0;var a="(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",r="("+a+"[.]){3}"+a,o=new RegExp("^"+r+"$"),n="(?:[0-9a-fA-F]{1,4})",i=new RegExp("^((?:"+n+":){7}(?:"+n+"|:)|(?:"+n+":){6}(?:"+r+"|:"+n+"|:)|(?:"+n+":){5}(?::"+r+"|(:"+n+"){1,2}|:)|(?:"+n+":){4}(?:(:"+n+"){0,1}:"+r+"|(:"+n+"){1,3}|:)|(?:"+n+":){3}(?:(:"+n+"){0,2}:"+r+"|(:"+n+"){1,4}|:)|(?:"+n+":){2}(?:(:"+n+"){0,3}:"+r+"|(:"+n+"){1,5}|:)|(?:"+n+":){1}(?:(:"+n+"){0,4}:"+r+"|(:"+n+"){1,6}|:)|(?::((?::"+n+"){0,5}:"+r+"|(?::"+n+"){1,7}|:)))(%[0-9a-zA-Z]{1,})?$");function s(e){return o.test(e)}function d(e){return i.test(e)}t.isIPv4=s,t.isIPv6=d,t.isIP=function(e){return s(e)?4:d(e)?6:0}},703:(e,t,a)=>{"use strict";a.r(t),a.d(t,{displayIP:()=>g,inRange:()=>u,isIP:()=>s,isRange:()=>l,isV4:()=>c,isV6:()=>p,searchIP:()=>m,storeIP:()=>m,version:()=>d});var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==a.g?a.g:"undefined"!=typeof self?self:{};function o(e,t){return e(t={exports:{}},t.exports),t.exports}var n=o((function(e){(function(){var t,a,r,o,n,i,s,d;a={},null!==e&&e.exports?e.exports=a:this.ipaddr=a,s=function(e,t,a,r){var o,n;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(o=0;r>0;){if((n=a-r)<0&&(n=0),e[o]>>n!=t[o]>>n)return!1;r-=a,o+=1}return!0},a.subnetMatch=function(e,t,a){var r,o,n,i,s;for(n in null==a&&(a="unicast"),t)for(!(i=t[n])[0]||i[0]instanceof Array||(i=[i]),r=0,o=i.length;r<o;r++)if(s=i[r],e.kind()===s[0].kind()&&e.match.apply(e,s))return n;return a},a.IPv4=function(){function e(e){var t,a,r;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,a=e.length;t<a;t++)if(!(0<=(r=e[t])&&r<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var a;if(void 0===t&&(e=(a=e)[0],t=a[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return s(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return a.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return a.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,a,r,o,n,i;for(i={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,o=!1,t=a=3;a>=0;t=a+=-1){if(!((r=this.octets[t])in i))return null;if(n=i[r],o&&0!==n)return null;8!==n&&(o=!0),e+=n}return 32-e},e}(),r="(0?\\d+|0x[a-f0-9]+)",o={fourOctet:new RegExp("^"+r+"\\."+r+"\\."+r+"\\."+r+"$","i"),longValue:new RegExp("^"+r+"$","i")},a.IPv4.parser=function(e){var t,a,r,n,i;if(a=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(o.fourOctet))return function(){var e,o,n,i;for(i=[],e=0,o=(n=t.slice(1,6)).length;e<o;e++)r=n[e],i.push(a(r));return i}();if(t=e.match(o.longValue)){if((i=a(t[1]))>4294967295||i<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],n=e=0;e<=24;n=e+=8)t.push(i>>n&255);return t}().reverse()}return null},a.IPv6=function(){function e(e,t){var a,r,o,n,i,s;if(16===e.length)for(this.parts=[],a=r=0;r<=14;a=r+=2)this.parts.push(e[a]<<8|e[a+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(o=0,n=(s=this.parts).length;o<n;o++)if(!(0<=(i=s[o])&&i<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,a,r,o;for(r=/((^|:)(0(:|$)){2,})/g,o=this.toNormalizedString(),e=0,t=-1;a=r.exec(o);)a[0].length>t&&(e=a.index,t=a[0].length);return t<0?o:o.substring(0,e)+"::"+o.substring(e+t)},e.prototype.toByteArray=function(){var e,t,a,r,o;for(e=[],t=0,a=(o=this.parts).length;t<a;t++)r=o[t],e.push(r>>8),e.push(255&r);return e},e.prototype.toNormalizedString=function(){var e,t,a;return e=function(){var e,a,r,o;for(o=[],e=0,a=(r=this.parts).length;e<a;e++)t=r[e],o.push(t.toString(16));return o}.call(this).join(":"),a="",this.zoneId&&(a="%"+this.zoneId),e+a},e.prototype.toFixedLengthString=function(){var e,t,a;return e=function(){var e,a,r,o;for(o=[],e=0,a=(r=this.parts).length;e<a;e++)t=r[e],o.push(t.toString(16).padStart(4,"0"));return o}.call(this).join(":"),a="",this.zoneId&&(a="%"+this.zoneId),e+a},e.prototype.match=function(e,t){var a;if(void 0===t&&(e=(a=e)[0],t=a[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return s(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return a.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,r;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(r=this.parts.slice(-2))[0],t=r[1],new a.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,a,r,o,n,i;for(i={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,o=!1,t=a=7;a>=0;t=a+=-1){if(!((r=this.parts[t])in i))return null;if(n=i[r],o&&0!==n)return null;16!==n&&(o=!0),e+=n}return 128-e},e}(),n="(?:[0-9a-f]+::?)+",d="%[0-9a-z]{1,}",i={zoneIndex:new RegExp(d,"i"),native:new RegExp("^(::)?("+n+")?([0-9a-f]+)?(::)?("+d+")?$","i"),transitional:new RegExp("^((?:"+n+")|(?:::)(?:"+n+")?)"+r+"\\."+r+"\\."+r+"\\."+r+"(%[0-9a-z]{1,})?$","i")},t=function(e,t){var a,r,o,n,s,d;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((d=(e.match(i.zoneIndex)||[])[0])&&(d=d.substring(1),e=e.replace(/%.+$/,"")),a=0,r=-1;(r=e.indexOf(":",r+1))>=0;)a++;if("::"===e.substr(0,2)&&a--,"::"===e.substr(-2,2)&&a--,a>t)return null;for(s=t-a,n=":";s--;)n+="0:";return":"===(e=e.replace("::",n))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){var t,a,r,n;for(n=[],t=0,a=(r=e.split(":")).length;t<a;t++)o=r[t],n.push(parseInt(o,16));return n}(),zoneId:d}},a.IPv6.parser=function(e){var a,r,o,n,s,d,c;if(i.native.test(e))return t(e,8);if((n=e.match(i.transitional))&&(c=n[6]||"",(a=t(n[1].slice(0,-1)+c,6)).parts)){for(r=0,o=(d=[parseInt(n[2]),parseInt(n[3]),parseInt(n[4]),parseInt(n[5])]).length;r<o;r++)if(!(0<=(s=d[r])&&s<=255))return null;return a.parts.push(d[0]<<8|d[1]),a.parts.push(d[2]<<8|d[3]),{parts:a.parts,zoneId:a.zoneId}}return null},a.IPv4.isIPv4=a.IPv6.isIPv6=function(e){return null!==this.parser(e)},a.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},a.IPv4.isValidFourPartDecimal=function(e){return!(!a.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},a.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},a.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},a.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},a.IPv4.parseCIDR=function(e){var t,a,r;if((a=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(a[2]))>=0&&t<=32)return r=[this.parse(a[1]),t],Object.defineProperty(r,"toString",{value:function(){return this.join("/")}}),r;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},a.IPv4.subnetMaskFromPrefixLength=function(e){var t,a,r;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(r=[0,0,0,0],a=0,t=Math.floor(e/8);a<t;)r[a]=255,a++;return t<4&&(r[t]=Math.pow(2,e%8)-1<<8-e%8),new this(r)},a.IPv4.broadcastAddressFromCIDR=function(e){var t,a,r,o,n;try{for(r=(t=this.parseCIDR(e))[0].toByteArray(),n=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),o=[],a=0;a<4;)o.push(parseInt(r[a],10)|255^parseInt(n[a],10)),a++;return new this(o)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},a.IPv4.networkAddressFromCIDR=function(e){var t,a,r,o,n;try{for(r=(t=this.parseCIDR(e))[0].toByteArray(),n=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),o=[],a=0;a<4;)o.push(parseInt(r[a],10)&parseInt(n[a],10)),a++;return new this(o)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},a.IPv6.parseCIDR=function(e){var t,a,r;if((a=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(a[2]))>=0&&t<=128)return r=[this.parse(a[1]),t],Object.defineProperty(r,"toString",{value:function(){return this.join("/")}}),r;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},a.isValid=function(e){return a.IPv6.isValid(e)||a.IPv4.isValid(e)},a.parse=function(e){if(a.IPv6.isValid(e))return a.IPv6.parse(e);if(a.IPv4.isValid(e))return a.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},a.parseCIDR=function(e){try{return a.IPv6.parseCIDR(e)}catch(t){try{return a.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},a.fromByteArray=function(e){var t;if(4===(t=e.length))return new a.IPv4(e);if(16===t)return new a.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},a.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(r)})),i=o((function(e,t){const a=function(e){if(!o(e))throw new Error("Invalid address: "+e);const t=(e=e.toLowerCase()).split(/\:\:/g);if(t.length>2)throw new Error("Invalid address: "+e);let a=[];if(1==t.length){if(a=e.split(/\:/g),8!==a.length)throw new Error("Invalid address: "+e)}else if(2==t.length){const e=t[0],r=t[1],o=e.split(/\:/g),n=r.split(/\:/g);for(let e in o)a[e]=o[e];for(let e=n.length;e>0;--e)a[7-(n.length-e)]=n[e-1]}for(let e=0;e<8;++e)void 0===a[e]&&(a[e]="0000"),a[e]=n(a[e],"0",4);return a.join(":")},r=function(e){if(!o(e))throw new Error("Invalid address: "+e);const t=(e=(e=(e=(e=(e=(e=a(e)).replace(/0000/g,"g")).replace(/\:000/g,":")).replace(/\:00/g,":")).replace(/\:0/g,":")).replace(/g/g,"0")).split(/\:/g);let r=!1,n=-1,i=0,s=-1,d=0;for(let e=0;e<8;++e){const a=t[e];let o="0"===a;o&&!r&&(s=e),!o&&r&&(d=e-s),d>1&&d>i&&(n=s,i=d),r="0"===a}return r&&(d=8-s),d>1&&d>i&&(n=s,i=d),n>=0&&i>1&&t.splice(n,i,"g"),(e=(e=(e=(e=t.join(":")).replace(/\:g\:/g,"::")).replace(/\:g/g,"::")).replace(/g\:/g,"::")).replace(/g/g,"::")},o=function(e){return/^[a-f0-9\\:]+$/gi.test(e)},n=function(e,t,a){const r=t.repeat(a);return e.length<r.length&&(e=r.substring(0,r.length-e.length)+e),e},i=function(e){return parseInt(e,2).toString(16)},s=function(e){const t=a(e).split(":");let r="";for(const e of t)r+=n(parseInt(e,16).toString(2),"0",16);return r},d=function(e){const t=[];for(let a=0;a<8;++a){const r=e.substr(16*a,16),o=n(i(r),"0",4);t.push(o)}return t.join(":")};t.normalize=a,t.abbreviate=r,t.divideSubnet=function(e,t,a,i,c){if(!o(e))throw new Error("Invalid address: "+e);if(i*=1,a=(a*=1)||128,(t*=1)<1||a<1||t>128||a>128||t>a)throw new Error("Invalid masks.");const p=[],l=s(e).substr(0,t),u="0".repeat(128-a),m=Math.pow(2,a-t);for(let e=0;e<m&&!(i&&e>=i);++e){const o=n(e.toString(2),"0",a-t),i=d(l+o+u);c?p.push(r(i)):p.push(i)}return p},t.range=function(e,t,a,n){if(!o(e))throw new Error("Invalid address: "+e);if(a=(a*=1)||128,(t*=1)<1||a<1||t>128||a>128||t>a)throw new Error("Invalid masks.");const i=s(e).substr(0,t),c="0".repeat(128-a),p=i+"0".repeat(a-t)+c,l=i+"1".repeat(a-t)+c;return n?{start:r(d(p)),end:r(d(l)),size:Math.pow(2,a-t)}:{start:d(p),end:d(l),size:Math.pow(2,a-t)}},t.randomSubnet=function(e,t,a,n,i){if(!o(e))throw new Error("Invalid address: "+e);if(a=(a*=1)||128,n=(n*=1)||1,(t*=1)<1||a<1||t>128||a>128||t>a)throw new Error("Invalid masks.");const c=[],p=s(e).substr(0,t),l="0".repeat(128-a),u=Math.pow(2,a-t);for(let e=0;e<u&&e<n;++e){let e="";for(let r=0;r<a-t;++r)e+=Math.floor(2*Math.random());const o=d(p+e+l);i?c.push(r(o)):c.push(o)}return c},t.ptr=function(e,t){if(!o(e))throw new Error("Invalid address: "+e);if((t*=1)<1||t>128||Math.floor(t/4)!=t/4)throw new Error("Invalid masks.");return a(e).replace(/:/g,"").split("").reverse().slice(0,(128-t)/4).join(".")}}));function s(e){return n.isValid(e)}function d(e){try{var t=n.parse(e).kind();return"ipv4"===t?4:"ipv6"===t?6:0}catch(e){return 0}}function c(e){return 4===d(e)}function p(e){return 6===d(e)}function l(e){try{return n.parseCIDR(e),!0}catch(e){return!1}}function u(e,t){if("string"!=typeof t){if(t&&"object"==typeof t){for(var a in t)if(!0===u(e,t[a]))return!0;return!1}return!1}if(-1===t.indexOf("/"))return e=p(e)?i.normalize(e):e,s(t=p(t)?i.normalize(t):t)&&e===t;try{var r=t.split("/"),o=n.parse(e),d=n.parse(r[0]);return o.match(d,r[1])}catch(e){return!1}}function m(e){try{var t=n.parse(e),a=t.kind();return"ipv4"===a?e:"ipv6"===a?t.isIPv4MappedAddress()?t.toIPv4Address().toString():i.abbreviate(e):null}catch(e){return null}}function g(e){try{var t=n.parse(e),a=t.kind();return"ipv4"===a?e:"ipv6"===a?t.isIPv4MappedAddress()?t.toIPv4Address().toString():i.normalize(e):""}catch(e){return""}}i.normalize,i.abbreviate,i.divideSubnet,i.range,i.randomSubnet,i.ptr},164:()=>{jQuery(document).on("wpmLoadPixels",(()=>{!wpmDataLayer?.pixels?.facebook?.pixel_id||wpmDataLayer?.pixels?.facebook?.loaded||wpm.doesUrlContainPatterns(wpmDataLayer?.pixels?.facebook?.exclusion_patterns)||wpm.canIFire("ads","facebook-ads")&&wpm.loadFacebookPixel()})),jQuery(document).on("wpmClientSideAddToCart",((e,t)=>{try{if(!wpmDataLayer?.pixels?.facebook?.loaded)return;fbq("track","AddToCart",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideBeginCheckout",((e,t)=>{try{if(!wpmDataLayer?.pixels?.facebook?.loaded)return;fbq("track","InitiateCheckout",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideAddToWishlist",((e,t)=>{try{if(!wpmDataLayer?.pixels?.facebook?.loaded)return;fbq("track","AddToWishlist",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideViewItem",((e,t)=>{try{if(!wpmDataLayer?.pixels?.facebook?.loaded)return;fbq("track","ViewContent",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideSearch",((e,t)=>{try{if(!wpmDataLayer?.pixels?.facebook?.loaded)return;fbq("track","Search",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}})),jQuery(document).on("wpmLoadAlways",(()=>{try{if(!wpmDataLayer?.pixels?.facebook?.loaded)return;wpm.setFbUserData()}catch(e){console.error(e)}})),jQuery(document).on("wpmClientSideOrderReceivedPage",((e,t)=>{try{if(!wpmDataLayer?.pixels?.facebook?.loaded)return;fbq("track","Purchase",t.facebook.custom_data,{eventID:t.facebook.event_id})}catch(e){console.error(e)}}))},1:()=>{!function(e,t,a){let r;e.loadFacebookPixel=()=>{try{wpmDataLayer.pixels.facebook.loaded=!0,t=window,a=document,r="script",t.fbq||(o=t.fbq=function(){o.callMethod?o.callMethod.apply(o,arguments):o.queue.push(arguments)},t._fbq||(t._fbq=o),o.push=o,o.loaded=!0,o.version="2.0",o.queue=[],(n=a.createElement(r)).async=!0,n.src="https://connect.facebook.net/en_US/fbevents.js",(i=a.getElementsByTagName(r)[0]).parentNode.insertBefore(n,i));let s={};e.isFbpSet()&&e.isFbAdvancedMatchingEnabled()&&(s={...e.getUserIdentifiersForFb()}),fbq("init",wpmDataLayer.pixels.facebook.pixel_id,s),fbq("track","PageView")}catch(r){console.error(r)}var t,a,r,o,n,i},e.getUserIdentifiersForFb=()=>{let e={};return wpmDataLayer?.user?.id?.raw&&(e.external_id=wpmDataLayer.user.id.raw),wpmDataLayer?.order?.user_id&&(e.external_id=wpmDataLayer.order.user_id),wpmDataLayer?.user?.email?.facebook&&(e.em=wpmDataLayer.user.email.facebook),wpmDataLayer?.order?.billing_email_hashed&&(e.em=wpmDataLayer.order.billing_email_hashed),wpmDataLayer?.user?.first_name?.facebook&&(e.fn=wpmDataLayer.user.first_name.facebook),wpmDataLayer?.order?.billing_first_name&&(e.fn=wpmDataLayer.order.billing_first_name.toLowerCase()),wpmDataLayer?.user?.last_name?.facebook&&(e.ln=wpmDataLayer.user.last_name.facebook),wpmDataLayer?.order?.billing_last_name&&(e.ln=wpmDataLayer.order.billing_last_name.toLowerCase()),wpmDataLayer?.user?.phone?.facebook&&(e.ph=wpmDataLayer.user.phone.facebook),wpmDataLayer?.order?.billing_phone&&(e.ph=wpmDataLayer.order.billing_phone.replace("+","")),wpmDataLayer?.user?.city?.facebook&&(e.ct=wpmDataLayer.user.city.facebook),wpmDataLayer?.order?.billing_city&&(e.ct=wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g,"")),wpmDataLayer?.user?.state?.facebook&&(e.st=wpmDataLayer.user.state.facebook),wpmDataLayer?.order?.billing_state&&(e.st=wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/,"")),wpmDataLayer?.user?.postcode?.facebook&&(e.zp=wpmDataLayer.user.postcode.facebook),wpmDataLayer?.order?.billing_postcode&&(e.zp=wpmDataLayer.order.billing_postcode),wpmDataLayer?.user?.country?.facebook&&(e.country=wpmDataLayer.user.country.facebook),wpmDataLayer?.order?.billing_country&&(e.country=wpmDataLayer.order.billing_country.toLowerCase()),e},e.getFbRandomEventId=()=>(Math.random()+1).toString(36).substring(2),e.getFbUserData=()=>(r={...r,...e.getFbUserDataFromBrowser()},r),e.isFbAdvancedMatchingEnabled=()=>!!wpmDataLayer?.pixels?.facebook?.advanced_matching,e.setFbUserData=()=>{r=e.getFbUserDataFromBrowser()},e.getFbUserDataFromBrowser=()=>{let t={};return e.getCookie("_fbp")&&e.isValidFbp(e.getCookie("_fbp"))&&(t.fbp=e.getCookie("_fbp")),e.getCookie("_fbc")&&e.isValidFbc(e.getCookie("_fbc"))&&(t.fbc=e.getCookie("_fbc")),e.isFbAdvancedMatchingEnabled()&&wpmDataLayer?.user?.id?.raw&&(t.external_id=wpmDataLayer.user.id.raw),navigator.userAgent&&(t.client_user_agent=navigator.userAgent),t},e.isFbpSet=()=>!!e.getCookie("_fbp"),e.isValidFbp=e=>new RegExp(/^fb\.[0-2]\.\d{13}\.\d{8,20}$/).test(e),e.isValidFbc=e=>new RegExp(/^fb\.[0-2]\.\d{13}\.[\da-zA-Z_-]{8,}/).test(e),e.fbGetProductDataForCapiEvent=e=>({content_type:"product",content_name:e.name,content_ids:[e.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]],value:parseFloat(e.quantity*e.price),currency:e.currency}),e.facebookContentIds=()=>{let e=[];for(const[t,a]of Object.entries(wpmDataLayer.order.items))wpmDataLayer?.general?.variationsOutput&&0!==a.variation_id?e.push(String(wpmDataLayer.products[a.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])):e.push(String(wpmDataLayer.products[a.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]));return e},e.trackCustomFacebookEvent=function(t){let r=arguments.length>1&&arguments[1]!==a?arguments[1]:{};try{if(!wpmDataLayer?.pixels?.facebook?.loaded)return;let a=e.getFbRandomEventId();fbq("trackCustom",t,r,{eventID:a}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:t,event_id:a,user_data:e.getFbUserData(),event_source_url:window.location.href,custom_data:r})}catch(e){console.error(e)}},e.fbGetContentIdsFromCart=()=>{let e=[];for(const t in wpmDataLayer.cart)e.push(wpmDataLayer.products[t].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]);return e}}(window.wpm=window.wpm||{},jQuery)},12:(e,t,a)=>{a(1),a(164)},165:()=>{jQuery(document).on("wpmViewItemList",(function(e,t){try{if(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds))return;if(!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;if(wpmDataLayer?.general?.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;if(!t)return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers(),items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]};wpmDataLayer?.user?.id?.raw&&(e.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","view_item_list",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmAddToCart",(function(e,t){try{if(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds))return;if(!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers(),value:t.quantity*t.price,items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]};wpmDataLayer?.user?.id?.raw&&(e.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","add_to_cart",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmViewItem",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;try{if(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds))return;if(!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers()};t&&(e.value=(t.quantity?t.quantity:1)*t.price,e.items=[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity?t.quantity:1,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]),wpmDataLayer?.user?.id?.raw&&(e.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","view_item",e)}))}catch(e){console.error(e)}})),jQuery(document).on("pmwEvent:Search",(function(){try{if(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds))return;if(!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e=[];for(const[t,a]of Object.entries(wpmDataLayer.products)){if(wpmDataLayer?.general?.variationsOutput&&a.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;e.push({id:a.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical})}let t={send_to:wpm.getGoogleAdsConversionIdentifiers(),items:e};wpmDataLayer?.user?.id?.raw&&(t.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","view_search_results",t)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{if(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds))return;if(!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers(),value:wpmDataLayer.order.value_filtered,items:wpm.getGoogleAdsDynamicRemarketingOrderItems()};wpmDataLayer?.user?.id?.raw&&(e.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","purchase",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmLogin",(function(){try{if(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds))return;if(!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={send_to:wpm.getGoogleAdsConversionIdentifiers()};wpmDataLayer?.user?.id?.raw&&(e.user_id=wpmDataLayer.user.id.raw),wpm.gtagLoaded().then((function(){gtag("event","login",e)}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{if(jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel()))return;if(!wpm.googleConfigConditionsMet("ads"))return;let e={},t={};e={send_to:wpm.getGoogleAdsConversionIdentifiersWithLabel(),transaction_id:wpmDataLayer.order.number,value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,new_customer:wpmDataLayer.order.new_customer},wpmDataLayer?.order?.clv_order_value_filtered&&(e.customer_lifetime_value=wpmDataLayer.order.clv_order_value_filtered),wpmDataLayer?.user?.id?.raw&&(e.user_id=wpmDataLayer.user.id.raw),wpmDataLayer?.order?.aw_merchant_id&&(t={discount:wpmDataLayer.order.discount,aw_merchant_id:wpmDataLayer.order.aw_merchant_id,aw_feed_country:wpmDataLayer.order.aw_feed_country,aw_feed_language:wpmDataLayer.order.aw_feed_language,items:wpm.getGoogleAdsRegularOrderItems()}),wpm.gtagLoaded().then((function(){gtag("event","conversion",{...e,...t})}))}catch(e){console.error(e)}}))},42:()=>{!function(e,t,a){e.getGoogleAdsConversionIdentifiersWithLabel=function(){let e=[];if(wpmDataLayer?.pixels?.google?.ads?.conversionIds)for(const[t,a]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))a&&e.push(t+"/"+a);return e},e.getGoogleAdsConversionIdentifiers=function(){let e=[];for(const[t,a]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))e.push(t);return e},e.getGoogleAdsRegularOrderItems=function(){let e=[];for(const[t,a]of Object.entries(wpmDataLayer.order.items)){let t;t={quantity:a.quantity,price:a.price},wpmDataLayer?.general?.variationsOutput&&0!==a.variation_id?(t.id=String(wpmDataLayer.products[a.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(t)):(t.id=String(wpmDataLayer.products[a.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(t))}return e},e.getGoogleAdsDynamicRemarketingOrderItems=function(){let e=[];for(const[t,a]of Object.entries(wpmDataLayer.order.items)){let t;t={quantity:a.quantity,price:a.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical},wpmDataLayer?.general?.variationsOutput&&0!==a.variation_id?(t.id=String(wpmDataLayer.products[a.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(t)):(t.id=String(wpmDataLayer.products[a.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(t))}return e}}(window.wpm=window.wpm||{},jQuery)},190:(e,t,a)=>{a(42),a(165)},625:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{if(!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id)return;if(wpmDataLayer?.pixels?.google?.analytics?.universal?.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.universal.property_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGAUAOrderItems()})}))}catch(e){console.error(e)}}))},19:()=>{!function(e,t,a){e.getGAUAOrderItems=function(){let t=[];for(const[a,r]of Object.entries(wpmDataLayer.order.items)){let a;a={quantity:r.quantity,price:r.price,name:r.name,currency:wpmDataLayer.order.currency,category:wpmDataLayer.products[r.id].category.join("/")},wpmDataLayer?.general?.variationsOutput&&0!==r.variation_id?(a.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),a.variant=wpmDataLayer.products[r.variation_id].variant_name,a.brand=wpmDataLayer.products[r.variation_id].brand):(a.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),a.brand=wpmDataLayer.products[r.id].brand),a=e.ga3AddListNameToProduct(a),t.push(a)}return t},e.ga3AddListNameToProduct=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null;return e.list_name=wpmDataLayer.shop.list_name,t&&(e.list_position=t),e}}(window.wpm=window.wpm||{},jQuery)},562:(e,t,a)=>{a(19),a(625)},572:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{if(!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id)return;if(wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.ga4.measurement_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGA4OrderItems()})}))}catch(e){console.error(e)}}))},228:()=>{!function(e,t,a){e.getGA4OrderItems=function(){let e=[];for(const[t,a]of Object.entries(wpmDataLayer.order.items)){let t;t={quantity:a.quantity,price:a.price,item_name:a.name,currency:wpmDataLayer.order.currency,item_category:wpmDataLayer.products[a.id].category.join("/")},wpmDataLayer?.general?.variationsOutput&&0!==a.variation_id?(t.item_id=String(wpmDataLayer.products[a.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),t.item_variant=wpmDataLayer.products[a.variation_id].variant_name,t.item_brand=wpmDataLayer.products[a.variation_id].brand):(t.item_id=String(wpmDataLayer.products[a.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),t.item_brand=wpmDataLayer.products[a.id].brand),e.push(t)}return e}}(window.wpm=window.wpm||{},jQuery)},522:(e,t,a)=>{a(228),a(572)},774:(e,t,a)=>{a(562),a(522)},294:()=>{jQuery(document).on("wpmLoadPixels",(function(){void 0===wpmDataLayer?.pixels?.google?.state&&(wpm.canGoogleLoad()?wpm.loadGoogle():wpm.logPreventedPixelLoading("google","analytics / ads"))}))},860:()=>{!function(e,t,a){e.googleConfigConditionsMet=t=>!!wpmDataLayer?.pixels?.google?.consent_mode?.active||("category"===e.getConsentValues().mode?!0===e.getConsentValues().categories[t]:"pixel"===e.getConsentValues().mode&&e.getConsentValues().pixels.includes("google-"+t)),e.getVisitorConsentStatusAndUpdateGoogleConsentSettings=t=>("category"===e.getConsentValues().mode?(e.getConsentValues().categories.analytics&&(t.analytics_storage="granted"),e.getConsentValues().categories.ads&&(t.ad_storage="granted")):"pixel"===e.getConsentValues().mode&&(t.analytics_storage=e.getConsentValues().pixels.includes("google-analytics")?"granted":"denied",t.ad_storage=e.getConsentValues().pixels.includes("google-ads")?"granted":"denied"),t),e.updateGoogleConsentMode=function(){let e=!(arguments.length>0&&arguments[0]!==a)||arguments[0],t=!(arguments.length>1&&arguments[1]!==a)||arguments[1];try{if(!window.gtag||!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent)return;gtag("consent","update",{analytics_storage:e?"granted":"denied",ad_storage:t?"granted":"denied"})}catch(e){console.error(e)}},e.fireGtagGoogleAds=()=>{try{if(wpmDataLayer.pixels.google.ads.state="loading",wpmDataLayer?.pixels?.google?.ads?.enhanced_conversions?.active)for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e,{allow_enhanced_conversions:!0});else for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e);wpmDataLayer?.pixels?.google?.ads?.conversionIds&&wpmDataLayer?.pixels?.google?.ads?.phone_conversion_label&&wpmDataLayer?.pixels?.google?.ads?.phone_conversion_number&>ag("config",Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]+"/"+wpmDataLayer.pixels.google.ads.phone_conversion_label,{phone_conversion_number:wpmDataLayer.pixels.google.ads.phone_conversion_number}),wpmDataLayer?.shop?.page_type&&"order_received_page"===wpmDataLayer.shop.page_type&&wpmDataLayer?.order?.google?.ads?.enhanced_conversion_data&>ag("set","user_data",wpmDataLayer.order.google.ads.enhanced_conversion_data),wpmDataLayer.pixels.google.ads.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsUA=()=>{try{wpmDataLayer.pixels.google.analytics.universal.state="loading",gtag("config",wpmDataLayer.pixels.google.analytics.universal.property_id,wpmDataLayer.pixels.google.analytics.universal.parameters),wpmDataLayer.pixels.google.analytics.universal.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsGA4=()=>{try{wpmDataLayer.pixels.google.analytics.ga4.state="loading";let e=wpmDataLayer.pixels.google.analytics.ga4.parameters;wpmDataLayer?.pixels?.google?.analytics?.ga4?.debug_mode&&(e.debug_mode=!0),gtag("config",wpmDataLayer.pixels.google.analytics.ga4.measurement_id,e),wpmDataLayer.pixels.google.analytics.ga4.state="ready"}catch(e){console.error(e)}},e.isGoogleActive=()=>!(!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id&&!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id&&jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)),e.getGoogleGtagId=()=>wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id?wpmDataLayer.pixels.google.analytics.universal.property_id:wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id?wpmDataLayer.pixels.google.analytics.ga4.measurement_id:Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0],e.loadGoogle=()=>{e.isGoogleActive()&&(wpmDataLayer.pixels.google.state="loading",e.loadScriptAndCacheIt("https://www.googletagmanager.com/gtag/js?id="+e.getGoogleGtagId()).then(((t,a)=>{try{if(window.dataLayer=window.dataLayer||[],window.gtag=function(){dataLayer.push(arguments)},wpmDataLayer?.pixels?.google?.consent_mode?.active){let t={ad_storage:wpmDataLayer.pixels.google.consent_mode.ad_storage,analytics_storage:wpmDataLayer.pixels.google.consent_mode.analytics_storage,wait_for_update:wpmDataLayer.pixels.google.consent_mode.wait_for_update};wpmDataLayer?.pixels?.google?.consent_mode?.region&&(t.region=wpmDataLayer.pixels.google.consent_mode.region),t=e.getVisitorConsentStatusAndUpdateGoogleConsentSettings(t),gtag("consent","default",t),gtag("set","ads_data_redaction",wpmDataLayer.pixels.google.consent_mode.ads_data_redaction),gtag("set","url_passthrough",wpmDataLayer.pixels.google.consent_mode.url_passthrough)}wpmDataLayer?.pixels?.google?.linker?.settings&>ag("set","linker",wpmDataLayer.pixels.google.linker.settings),gtag("js",new Date),jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)||(e.googleConfigConditionsMet("ads")?e.fireGtagGoogleAds():e.logPreventedPixelLoading("google-ads","ads")),wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsUA():e.logPreventedPixelLoading("google-universal-analytics","analytics")),wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsGA4():e.logPreventedPixelLoading("ga4","analytics")),wpmDataLayer.pixels.google.state="ready"}catch(e){console.error(e)}})))},e.canGoogleLoad=()=>!!wpmDataLayer?.pixels?.google?.consent_mode?.active||("category"===e.getConsentValues().mode?!(!e.getConsentValues().categories.ads&&!e.getConsentValues().categories.analytics):"pixel"===e.getConsentValues().mode?e.getConsentValues().pixels.includes("google-ads")||e.getConsentValues().pixels.includes("google-analytics"):(console.error("Couldn't find a valid load condition for Google mode in wpmConsentValues"),!1)),e.gtagLoaded=()=>new Promise(((e,t)=>{void 0===wpmDataLayer?.pixels?.google?.state&&t();let a=0;!function r(){return"ready"===wpmDataLayer?.pixels?.google?.state?e():a>=5e3?t():(a+=200,void setTimeout(r,200))}()}))}(window.wpm=window.wpm||{},jQuery)},580:(e,t,a)=>{a(860),a(294)},69:(e,t,a)=>{a(580),a(190),a(774),a(463)},945:()=>{jQuery(document).on("wpmLoadPixels",(function(){wpmDataLayer?.pixels?.google?.optimize?.container_id&&!wpmDataLayer?.pixels?.google?.optimize?.loaded&&wpm.canIFire("analytics","google-optimize")&&wpm.load_google_optimize_pixel()}))},962:()=>{!function(e,t,a){e.load_google_optimize_pixel=function(){try{wpmDataLayer.pixels.google.optimize.loaded=!0,e.loadScriptAndCacheIt("https://www.googleoptimize.com/optimize.js?id="+wpmDataLayer.pixels.google.optimize.container_id)}catch(e){console.error(e)}}}(window.wpm=window.wpm||{},jQuery)},463:(e,t,a)=>{a(962),a(945)},300:()=>{jQuery(document).on("wpmLoadPixels",(function(){wpmDataLayer?.pixels?.hotjar?.site_id&&!wpmDataLayer?.pixels?.hotjar?.loaded&&wpm.canIFire("analytics","hotjar")&&!wpmDataLayer?.pixels?.hotjar?.loaded&&wpm.load_hotjar_pixel()}))},376:()=>{!function(e,t,a){e.load_hotjar_pixel=function(){try{wpmDataLayer.pixels.hotjar.loaded=!0,e=window,t=document,e.hj=e.hj||function(){(e.hj.q=e.hj.q||[]).push(arguments)},e._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6},a=t.getElementsByTagName("head")[0],(r=t.createElement("script")).async=1,r.src="https://static.hotjar.com/c/hotjar-"+e._hjSettings.hjid+".js?sv="+e._hjSettings.hjsv,a.appendChild(r)}catch(e){console.error(e)}var e,t,a,r}}(window.wpm=window.wpm||{},jQuery)},787:(e,t,a)=>{a(376),a(300)},473:()=>{!function(e,t,a){let r=()=>{let t=e.getCookie("cmplz_statistics"),a=e.getCookie("cmplz_marketing");return!(!e.getCookie("cmplz_consent_status")&&!e.getCookie("cmplz_banner-status"))&&{analytics:"allow"===t,ads:"allow"===a,visitorHasChosen:!0}},o=()=>{let t=e.getCookie("cookielawinfo-checkbox-analytics")||e.getCookie("cookielawinfo-checkbox-analytiques"),a=e.getCookie("cookielawinfo-checkbox-advertisement")||e.getCookie("cookielawinfo-checkbox-performance")||e.getCookie("cookielawinfo-checkbox-publicite"),r=e.getCookie("CookieLawInfoConsent");return!(!t&&!a)&&{analytics:"yes"===t,ads:"yes"===a,visitorHasChosen:!!r}},n={categories:{},pixels:[],mode:"category",visitorHasChosen:!1};e.getConsentValues=()=>n,e.setConsentValueCategories=function(){let e=arguments.length>0&&arguments[0]!==a&&arguments[0],t=arguments.length>1&&arguments[1]!==a&&arguments[1];n.categories.analytics=e,n.categories.ads=t},e.updateConsentCookieValues=function(){let t,i=arguments.length>0&&arguments[0]!==a?arguments[0]:null,s=arguments.length>1&&arguments[1]!==a?arguments[1]:null,d=arguments.length>2&&arguments[2]!==a&&arguments[2];if(n.categories.analytics=!d,n.categories.ads=!d,i||s)return i&&(n.categories.analytics=!!i),void(s&&(n.categories.ads=!!s));if(t=e.getCookie("pmw_cookie_consent"))return t=JSON.parse(t),n.categories.analytics=!0===t.analytics,n.categories.ads=!0===t.ads,void(n.visitorHasChosen=!0);if(t=e.getCookie("CookieConsent"))return t=decodeURI(t),n.categories.analytics=t.indexOf("statistics:true")>=0,n.categories.ads=t.indexOf("marketing:true")>=0,void(n.visitorHasChosen=!0);if(t=e.getCookie("CookieScriptConsent"))return t=JSON.parse(t),"reject"===t.action?(n.categories.analytics=!1,n.categories.ads=!1):2===t.categories.length?(n.categories.analytics=!0,n.categories.ads=!0):(n.categories.analytics=t.categories.indexOf("performance")>=0,n.categories.ads=t.categories.indexOf("targeting")>=0),void(n.visitorHasChosen=!0);if(t=e.getCookie("borlabs-cookie"))return t=decodeURI(t),t=JSON.parse(t),n.categories.analytics=!!t?.consents?.statistics,n.categories.ads=!!t?.consents?.marketing,n.visitorHasChosen=!0,n.pixels=[...t?.consents?.statistics||[],...t?.consents?.marketing||[]],void(n.mode="pixel");if(t=r())return n.categories.analytics=!0===t.analytics,n.categories.ads=!0===t.ads,void(n.visitorHasChosen=t.visitorHasChosen);if(t=e.getCookie("cookie_notice_accepted"))return n.categories.analytics=!0,n.categories.ads=!0,void(n.visitorHasChosen=!0);if(t=e.getCookie("hu-consent"))return t=JSON.parse(t),n.categories.analytics=!!t.categories[3],n.categories.ads=!!t.categories[4],void(n.visitorHasChosen=!0);if(t=o())return n.categories.analytics=!0===t.analytics,n.categories.ads=!0===t.ads,void(n.visitorHasChosen=!0===t.visitorHasChosen);if(t=e.getCookie("moove_gdpr_popup"))return t=JSON.parse(t),n.categories.analytics="1"===t.thirdparty,n.categories.ads="1"===t.advanced,void(n.visitorHasChosen=!0);if(t=e.getCookie("wpautoterms-cookies-notice")){if("1"!==t)return;return n.categories.analytics=!0,n.categories.ads=!0,void(n.visitorHasChosen=!0)}if(window.localStorage&&window.localStorage.getItem("uc_settings")){if(console.log("Usercentrics settings detected"),"undefined"==typeof UC_UI)return void window.addEventListener("UC_UI_INITIALIZED",(function(t){e.ucUiProcessConsent()}));if(UC_UI.areAllConsentsAccepted())return n.categories.analytics=!0,n.categories.ads=!0,void(n.visitorHasChosen=!0);e.ucUiProcessConsent()}if(t=e.getCookie("OptanonConsent")){let e=new URLSearchParams(t).get("groups").split(","),a={};return e.forEach((e=>{let t=e.split(":");a[t[0]]=t[1]})),n.categories.analytics="1"===groubsObject[2],n.categories.ads="1"===a[4],void(n.visitorHasChosen=!0)}},e.ucUiProcessConsent=function(){if("undefined"==typeof UC_UI)return;UC_UI.areAllConsentsAccepted()&&pmw.consentAcceptAll();const e=UC_UI.getSettingsLabels().categories.filter((e=>"Statistics"===e.label))[0].slug;pmw.consentAdjustSelectively({analytics:!UC_UI.getServicesBaseInfo().filter((t=>t.categorySlug===e&&!1===t.consent.status)).length>0,ads:!UC_UI.getServicesBaseInfo().filter((e=>"marketing"===e.categorySlug&&!1===e.consent.status)).length>0})},e.updateConsentCookieValues(),e.setConsentDefaultValuesToExplicit=()=>{n.categories={analytics:!1,ads:!1}},e.canIFire=(t,a)=>{let r;return"category"===n.mode?r=!!n.categories[t]:"pixel"===n.mode?(r=n.pixels.includes(a),!1===r&&"microsoft-ads"===a&&(r=n.pixels.includes("bing-ads"))):(console.error("Couldn't find a valid consent mode in wpmConsentValues"),r=!1),!!r||(e.logPreventedPixelLoading(a,t),!1)},e.logPreventedPixelLoading=(e,t)=>{wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent?console.log('Pixel Manager for WooCommerce: The "'+e+" (category: "+t+')" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)'):console.log('Pixel Manager for WooCommerce: The "'+e+" (category: "+t+')" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)')},e.scriptTagObserver=new MutationObserver((a=>{a.forEach((a=>{let{addedNodes:r}=a;[...r].forEach((a=>{t(a).data("wpm-cookie-category")&&(e.shouldScriptBeActive(a)?e.unblockScript(a):e.blockScript(a))}))}))})),e.scriptTagObserver.observe(document.head,{childList:!0,subtree:!0}),document.addEventListener("DOMContentLoaded",(()=>e.scriptTagObserver.disconnect())),e.shouldScriptBeActive=e=>!((wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent||n.visitorHasChosen)&&("category"!==n.mode||!t(e).data("wpm-cookie-category").split(",").some((e=>n.categories[e])))&&("pixel"!==n.mode||!n.pixels.includes(t(e).data("wpm-pixel-name")))&&("pixel"!==n.mode||"google"!==t(e).data("wpm-pixel-name")||!["google-analytics","google-ads"].some((e=>n.pixels.includes(e))))&&(!wpmDataLayer?.pixels?.google?.consent_mode?.active||"google"!==t(e).data("wpm-pixel-name"))),e.unblockScript=function(e){let r=arguments.length>1&&arguments[1]!==a&&arguments[1];r&&t(e).remove();let o=t(e).data("wpm-src");o&&t(e).attr("src",o),e.type="text/javascript",r&&t(e).appendTo("head"),document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.blockScript=function(e){let r=arguments.length>1&&arguments[1]!==a&&arguments[1];r&&t(e).remove(),t(e).attr("src")&&t(e).removeAttr("src"),e.type="blocked/javascript",r&&t(e).appendTo("head")},e.unblockAllScripts=function(){let t=!(arguments.length>0&&arguments[0]!==a)||arguments[0],r=!(arguments.length>1&&arguments[1]!==a)||arguments[1];e.setConsentValueCategories(t,r),document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.unblockSelectedPixels=()=>{document.dispatchEvent(new Event("wpmPreLoadPixels"))},e.explicitConsentStateAlreadySet=()=>{if(n.explicitConsentStateAlreadySet)return!0;n.explicitConsentStateAlreadySet=!0},document.addEventListener("borlabs-cookie-consent-saved",(()=>{e.updateConsentCookieValues(),"pixel"===n.mode?(e.unblockSelectedPixels(),e.updateGoogleConsentMode(n.pixels.includes("google-analytics"),n.pixels.includes("google-ads"))):(e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads))})),document.addEventListener("CookiebotOnAccept",(()=>{Cookiebot.consent.statistics&&(n.categories.analytics=!0),Cookiebot.consent.marketing&&(n.categories.ads=!0),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)}),!1),document.addEventListener("CookieScriptAccept",(t=>{t.detail.categories.includes("performance")&&(n.categories.analytics=!0),t.detail.categories.includes("targeting")&&(n.categories.ads=!0),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)})),document.addEventListener("CookieScriptAcceptAll",(()=>{e.setConsentValueCategories(!0,!0),e.unblockAllScripts(!0,!0),e.updateGoogleConsentMode(!0,!0)})),e.cmplzStatusChange=t=>{t.detail.categories.includes("statistics")&&e.updateConsentCookieValues(!0,null),t.detail.categories.includes("marketing")&&e.updateConsentCookieValues(null,!0),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)},document.addEventListener("cmplzStatusChange",e.cmplzStatusChange),document.addEventListener("cmplz_status_change",e.cmplzStatusChange),document.addEventListener("setCookieNotice",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)})),e.huObserver=new MutationObserver((t=>{t.forEach((t=>{let{addedNodes:a}=t;[...a].forEach((t=>{"hu"===t.id&&document.querySelector(".hu-cookies-save").addEventListener("click",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(n.categories.analytics,n.categories.ads),e.updateGoogleConsentMode(n.categories.analytics,n.categories.ads)}))}))}))})),window.hu&&e.huObserver.observe(document.documentElement||document.body,{childList:!0,subtree:!0}),window.addEventListener("ucEvent",(function(e){e.detail&&"consent_status"==e.detail.event&&(!0===e.detail["Google Ads Remarketing"]?console.log("Google Ads Remarketing has consent"):console.log("Google Ads Remarketing has no consent"))})),window.addEventListener("UC_UI_CMP_EVENT",(function(e){"ACCEPT_ALL"===e.detail.type&&pmw.consentAcceptAll(),"DENY_ALL"===e.detail.type&&pmw.consentRevokeAll(),"SAVE"===e.detail.type&&console.log("event.detail",e.detail)})),jQuery("#accept-recommended-btn-handler, #onetrust-accept-btn-handler").on("click",(function(){void 0!==window.OneTrust&&pmw.consentAcceptAll()})),jQuery(".ot-pc-refuse-all-handler, #onetrust-reject-all-handler").on("click",(function(){pmw.consentRevokeAll()})),jQuery(".save-preference-btn-handler.onetrust-close-btn-handler").on("click",(function(){location.reload()}))}(window.wpm=window.wpm||{},jQuery),function(e,t,a){e.consentAcceptAll=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:{};t.duration=t.duration||365,e.consentSetCookie(!0,!0,t.duration),wpm.unblockAllScripts(!0,!0),wpm.updateGoogleConsentMode(!0,!0)},e.consentAdjustSelectively=t=>{t.analytics=t.analytics!==a?t.analytics:wpm.getConsentValues().categories.analytics,t.ads=t.ads!==a?t.ads:wpm.getConsentValues().categories.ads,t.duration=t.duration||365,e.consentSetCookie(t.analytics,t.ads,t.duration),wpm.unblockAllScripts(t.analytics,t.ads),wpm.updateGoogleConsentMode(t.analytics,t.ads)},e.consentRevokeAll=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:{};t.duration=t.duration||365,wpm.setConsentValueCategories(!1,!1),e.consentSetCookie(!1,!1,t.duration),wpm.updateGoogleConsentMode(!1,!1)},e.consentSetCookie=function(e,t){let r=arguments.length>2&&arguments[2]!==a?arguments[2]:365;wpm.setCookie("pmw_cookie_consent",JSON.stringify({analytics:e,ads:t}),r)},jQuery(document).trigger("pmw_cookie_consent_management_loaded")}(window.pmw=window.pmw||{},jQuery)},299:()=>{jQuery(document).on("click",".remove_from_cart_button, .remove",(e=>{try{let t=new URL(jQuery(e.currentTarget).attr("href")),a=wpm.getProductIdByCartItemKeyUrl(t);wpm.removeProductFromCart(a)}catch(e){console.error(e)}}));let e=[".checkout",".checkout-button",".cart-checkout-button",".button.checkout",".xoo-wsc-ft-btn-checkout",".elementor-button--checkout"].join(",");jQuery(document).on("click init_checkout",e,(()=>{jQuery(document).trigger("wpmBeginCheckout")})),jQuery(document).on("updated_cart_totals",(()=>{jQuery(document).trigger("wpmViewCart")})),jQuery(document).on("wpmLoad",(e=>{jQuery(document).on("payment_method_selected",(()=>{!1===wpm.paymentMethodSelected&&wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val()),wpm.paymentMethodSelected=!0}))})),jQuery(document).on("wpmLoad",(()=>{try{wpm.doesWooCommerceCartExist()&&wpm.getCartItems()}catch(e){console.error(e)}})),jQuery(document).on("wpmLoad",(()=>{wpmDataLayer.products=wpmDataLayer.products||{};let e=wpm.getAddToCartLinkProductIds();wpm.getProductsFromBackend(e)})),jQuery(document).on("wpmLoad",(()=>{if(!wpm.getCookie("wpmReferrer")&&document.referrer){let e=new URL(document.referrer).hostname;e!==window.location.host&&wpm.setCookie("wpmReferrer",e)}})),jQuery(document).on("wpmLoad",(()=>{try{if("undefined"!=typeof wpmDataLayer&&!wpmDataLayer?.wpmLoadFired){if(jQuery(document).trigger("wpmLoadAlways"),wpmDataLayer?.shop)if("product"===wpmDataLayer.shop.page_type&&"variable"!==wpmDataLayer.shop.product_type&&wpm.getMainProductIdFromProductPage()){let e=wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage());jQuery(document).trigger("wpmViewItem",e)}else"product_category"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmCategory"):"search"===wpmDataLayer.shop.page_type?jQuery(document).trigger("pmwEvent:Search"):"cart"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmViewCart"):"order_received_page"===wpmDataLayer.shop.page_type?wpmDataLayer?.order&&!wpm.isOrderIdStored(wpmDataLayer.order.id)&&(jQuery(document).trigger("wpmOrderReceivedPage"),wpm.writeOrderIdToStorage(wpmDataLayer.order.id,wpmDataLayer.order.key),"function"==typeof wpm.acrRemoveCookie&&wpm.acrRemoveCookie()):jQuery(document).trigger("wpmEverywhereElse");else jQuery(document).trigger("wpmEverywhereElse");wpmDataLayer?.user?.id&&!wpm.hasLoginEventFired()&&(jQuery(document).trigger("wpmLogin"),wpm.setLoginEventFired()),wpmDataLayer.wpmLoadFired=!0}}catch(e){console.error(e)}})),jQuery(document).on("wpmLoad",(async()=>{window.sessionStorage&&window.sessionStorage.getItem("_pmw_endpoint_available")&&!JSON.parse(window.sessionStorage.getItem("_pmw_endpoint_available"))&&console.error("Pixel Manager for WooCommerce: REST endpoint is not available. Using admin-ajax.php instead.")})),jQuery(document).on("wpmPreLoadPixels",(()=>{wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent&&!wpm.explicitConsentStateAlreadySet()&&wpm.updateConsentCookieValues(null,null,!0),jQuery(document).trigger("wpmLoadPixels",{})})),jQuery(document).on("wpmAddToCart",((e,t)=>{let a={event:"addToCart",product:t};wpmDataLayer?.pixels?.facebook?.loaded&&(a.facebook={event_name:"AddToCart",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:wpm.fbGetProductDataForCapiEvent(t)}),wpmDataLayer?.pixels?.tiktok?.loaded&&(a.tiktok={event:"AddToCart",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser(),properties:{value:t.price*t.quantity,currency:t.currency,contents:[{content_id:t.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],content_type:"product",content_name:t.name,quantity:t.quantity,price:t.price}]}}),jQuery(document).trigger("wpmClientSideAddToCart",a),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(a)})),jQuery(document).on("wpmBeginCheckout",(()=>{let e={event:"beginCheckout"};wpmDataLayer?.pixels?.facebook?.loaded&&(e.facebook={event_name:"InitiateCheckout",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{}},wpmDataLayer?.cart&&!jQuery.isEmptyObject(wpmDataLayer.cart)&&(e.facebook.custom_data={content_type:"product",content_ids:wpm.fbGetContentIdsFromCart(),value:wpm.getCartValue(),currency:wpmDataLayer.shop.currency})),wpmDataLayer?.pixels?.tiktok?.loaded&&(e.tiktok={event:"InitiateCheckout",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser()}),jQuery(document).trigger("wpmClientSideBeginCheckout",e),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(e)})),jQuery(document).on("wpmAddToWishlist",((e,t)=>{let a={event:"addToWishlist",product:t};wpmDataLayer?.pixels?.facebook?.loaded&&(a.facebook={event_name:"AddToWishlist",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:wpm.fbGetProductDataForCapiEvent(t)}),wpmDataLayer?.pixels?.tiktok?.loaded&&(a.tiktok={event:"AddToWishlist",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser(),properties:{value:t.price*t.quantity,currency:t.currency,contents:[{content_id:t.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],content_type:"product",content_name:t.name,quantity:t.quantity,price:t.price}]}}),jQuery(document).trigger("wpmClientSideAddToWishlist",a),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(a)})),jQuery(document).on("wpmViewItem",(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a={event:"viewItem",product:t};wpmDataLayer?.pixels?.facebook?.loaded&&(a.facebook={event_name:"ViewContent",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{}},t&&(a.facebook.custom_data=wpm.fbGetProductDataForCapiEvent(t))),wpmDataLayer?.pixels?.tiktok?.loaded&&(a.tiktok={event:"ViewContent",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser()},t&&(a.tiktok.properties={value:t.price*t.quantity,currency:t.currency,contents:[{content_id:t.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],content_type:"product",content_name:t.name,quantity:t.quantity,price:t.price}]})),jQuery(document).trigger("wpmClientSideViewItem",a),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(a)})),jQuery(document).on("pmwEvent:Search",(()=>{let e={event:"search"};wpmDataLayer?.pixels?.facebook?.loaded&&(e.facebook={event_name:"Search",event_id:wpm.getFbRandomEventId(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{search_string:wpm.getSearchTermFromUrl()}}),wpmDataLayer?.pixels?.tiktok?.loaded&&(e.tiktok={event:"Search",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser(),properties:{query:wpm.getSearchTermFromUrl()}}),jQuery(document).trigger("wpmClientSideSearch",e),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(e)})),jQuery(document).on("wpmPlaceOrder",(()=>{let e={event:"placeOrder"};wpmDataLayer?.pixels?.tiktok?.loaded&&(e.tiktok={event:"PlaceAnOrder",event_id:wpm.getRandomEventId(),context:wpm.getTikTokUserDataFromBrowser()}),jQuery(document).trigger("wpmClientPlaceOrder",e),"function"==typeof wpm.sendEventPayloadToServer&&wpm.sendEventPayloadToServer(e)})),jQuery(document).on("wpmOrderReceivedPage",(()=>{let e={event:"orderReceived"};wpmDataLayer?.pixels?.facebook?.loaded&&(e.facebook={event_name:"Purchase",event_id:wpmDataLayer.order.id.toString(),user_data:wpm.getFbUserData(),event_source_url:window.location.href,custom_data:{content_type:"product",value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,content_ids:wpm.facebookContentIds()}}),wpmDataLayer?.pixels?.tiktok?.loaded&&(e.tiktok={event:"CompletePayment",event_id:wpmDataLayer.order.id.toString(),context:wpm.getTikTokUserDataFromBrowser(),properties:{value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,contents:wpm.getTikTokOrderItemIds()}}),jQuery(document).trigger("wpmClientSideOrderReceivedPage",e)})),jQuery(document).on("pmw:ready",(async()=>{wpm.startIntersectionObserverToWatch(),wpm.startProductsMutationObserverToWatch()}))},459:()=>{const e=[".add_to_cart_button:not(.product_type_variable)",".ajax_add_to_cart",".single_add_to_cart_button"].join(",");jQuery(e).on("click adding_to_cart",(e=>{try{let t,a=1;"product"===wpmDataLayer.shop.page_type?(void 0!==jQuery(e.currentTarget).attr("href")&&jQuery(e.currentTarget).attr("href").includes("add-to-cart")&&(t=jQuery(e.currentTarget).data("product_id"),wpm.addProductToCart(t,a)),"simple"===wpmDataLayer.shop.product_type&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery(e.currentTarget).val(),wpm.addProductToCart(t,a)),["variable","variable-subscription"].indexOf(wpmDataLayer.shop.product_type)>=0&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery("[name='variation_id']").val(),wpm.addProductToCart(t,a)),"grouped"===wpmDataLayer.shop.product_type&&jQuery(".woocommerce-grouped-product-list-item").each(((e,r)=>{a=Number(jQuery(r).find(".input-text.qty").val()),a||0===a||(a=1);let o=jQuery(r).attr("class");t=wpm.getPostIdFromString(o),wpm.addProductToCart(t,a)})),"bundle"===wpmDataLayer.shop.product_type&&(a=Number(jQuery(".input-text.qty").val()),a||0===a||(a=1),t=jQuery("input[name=add-to-cart]").val(),wpm.addProductToCart(t,a))):(t=jQuery(e.currentTarget).data("product_id"),wpm.addProductToCart(t,a))}catch(e){console.error(e)}})),jQuery("a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)").one("click",(e=>{try{if(jQuery(e.target).closest("a").attr("href")){let t=new URL(jQuery(e.currentTarget).attr("href"),window.location.origin);if(t.searchParams.has("add-to-cart")){let e=t.searchParams.get("add-to-cart");wpm.addProductToCart(e,1)}}}catch(e){console.error(e)}})),jQuery(".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product").on("click",(e=>{try{let t=jQuery(e.currentTarget).nextAll(".wpmProductId:first").data("id");if(t){if(t=wpm.getIdBasedOndVariationsOutputSetting(t),!t)throw Error("Wasn't able to retrieve a productId");if(wpmDataLayer.products&&wpmDataLayer.products[t]){let e=wpm.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmSelectContentGaUa",e),jQuery(document).trigger("wpmSelectItem",e)}}}catch(e){console.error(e)}})),jQuery("#billing_email").on("input",(e=>{wpm.isEmail(jQuery(e.currentTarget).val())&&(wpm.fireCheckoutProgress(2),wpm.emailSelected=!0)})),jQuery("form.checkout").on("checkout_place_order_success",(()=>{!1===wpm.emailSelected&&wpm.fireCheckoutProgress(2),!1===wpm.paymentMethodSelected&&(wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val())),wpm.fireCheckoutProgress(4),jQuery(document).trigger("wpmPlaceOrder",{})})),jQuery("[name='update_cart']").on("click",(()=>{try{jQuery(".cart_item").each(((e,t)=>{let a=new URL(jQuery(t).find(".product-remove").find("a").attr("href")),r=wpm.getProductIdByCartItemKeyUrl(a),o=jQuery(t).find(".qty").val();0===o?wpm.removeProductFromCart(r):o<wpmDataLayer.cart[r].quantity?wpm.removeProductFromCart(r,wpmDataLayer.cart[r].quantity-o):o>wpmDataLayer.cart[r].quantity&&wpm.addProductToCart(r,o-wpmDataLayer.cart[r].quantity)}))}catch(e){console.error(e),wpm.getCartItemsFromBackend()}})),jQuery(".add_to_wishlist,.wl-add-to").on("click",(e=>{try{let t;if(jQuery(e.currentTarget).data("productid")?t=jQuery(e.currentTarget).data("productid"):jQuery(e.currentTarget).data("product-id")&&(t=jQuery(e.currentTarget).data("product-id")),!t)throw Error("Wasn't able to retrieve a productId");let a=wpm.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmAddToWishlist",a)}catch(e){console.error(e)}})),jQuery(".single_variation_wrap").on("show_variation",((e,t)=>{try{let e=wpm.getIdBasedOndVariationsOutputSetting(t.variation_id);if(!e)throw Error("Wasn't able to retrieve a productId");wpm.triggerViewItemEventPrep(e)}catch(e){console.error(e)}}))},584:()=>{!function(e,t,a){const r="_wpm_order_ids",o="_pmw_endpoint_available",n="pmw/v1/test/";function i(){return""!==e.getCookie(r)}e.emailSelected=!1,e.paymentMethodSelected=!1,e.useRestEndpoint=()=>e.isSessionStorageAvailable()&&e.isRestEndpointAvailable()&&e.isBelowRestErrorThreshold(),e.isBelowRestErrorThreshold=()=>window.sessionStorage.getItem(0)<=10,e.isRestEndpointAvailable=async()=>window.sessionStorage.getItem(o)?JSON.parse(window.sessionStorage.getItem(o)):await e.testEndpoint(),e.isSessionStorageAvailable=()=>!!window.sessionStorage,e.testEndpoint=async function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:e.root+n,r=arguments.length>1&&arguments[1]!==a?arguments[1]:o,i=await fetch(t,{method:"POST",mode:"cors",cache:"no-cache",keepalive:!0});return 200===i.status?(window.sessionStorage.setItem(r,JSON.stringify(!0)),!0):404===i.status||0===i.status?(window.sessionStorage.setItem(r,JSON.stringify(!1)),!1):void 0},e.isWpmRestEndpointAvailable=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:o;return!!e.getCookie(t)},e.writeOrderIdToStorage=function(t,o){let n=arguments.length>2&&arguments[2]!==a?arguments[2]:"thankyou_page";if(window.Storage)if(null===localStorage.getItem(r)){let e=[];e.push(t),window.localStorage.setItem(r,JSON.stringify(e))}else{let e=JSON.parse(localStorage.getItem(r));e.includes(t)||(e.push(t),window.localStorage.setItem(r,JSON.stringify(e)))}else{let a=new Date;a.setDate(a.getDate()+365);let o=[];i()&&(o=JSON.parse(e.getCookie(r))),o.includes(t)||(o.push(t),document.cookie="_wpm_order_ids="+JSON.stringify(o)+";expires="+a.toUTCString())}"function"==typeof e.storeOrderIdOnServer&&wpmDataLayer.orderDeduplication&&e.storeOrderIdOnServer(o,n)},e.isOrderIdStored=t=>wpmDataLayer.orderDeduplication?window.Storage?null!==localStorage.getItem(r)&&JSON.parse(localStorage.getItem(r)).includes(t):!!i()&&JSON.parse(e.getCookie(r)).includes(t):(console.log("order duplication prevention: off"),!1),e.isEmail=e=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),e.removeProductFromCart=async function(t){let r=arguments.length>1&&arguments[1]!==a?arguments[1]:null;try{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");let a;a=null==r?wpmDataLayer.cart[t].quantity:r,wpmDataLayer.cart[t]||await e.getProductsFromBackend([t]);let o=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmRemoveFromCart",o),null==r||wpmDataLayer.cart[t].quantity===r?(delete wpmDataLayer.cart[t],sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))):(wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity-a,sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart)))}catch(e){console.error(e)}},e.getIdBasedOndVariationsOutputSetting=e=>{try{return wpmDataLayer?.general?.variationsOutput?e:wpmDataLayer.products[e].isVariation?wpmDataLayer.products[e].parentId:e}catch(e){console.error(e)}},e.addProductToCart=async(t,a)=>{try{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");wpmDataLayer?.products[t]||await e.getProductsFromBackend([t]);let r=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmAddToCart",r),wpmDataLayer?.cart[t]?wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity+a:("cart"in wpmDataLayer||(wpmDataLayer.cart={}),wpmDataLayer.cart[t]=e.getProductDetailsFormattedForEvent(t,a)),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))}catch(t){console.error(t),e.getCartItemsFromBackend()}},e.getCartItems=()=>{sessionStorage?sessionStorage.getItem("wpmDataLayerCart")&&"order_received_page"!==wpmDataLayer.shop.page_type?e.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem("wpmDataLayerCart"))):sessionStorage.setItem("wpmDataLayerCart",JSON.stringify({})):e.getCartItemsFromBackend()},e.getCartItemsFromBackend=()=>{try{fetch(e.ajax_url,{method:"POST",cache:"no-cache",body:new URLSearchParams({action:"pmw_get_cart_items"}),keepalive:!0}).then((e=>{if(e.ok)return e.json();throw Error("Error getting cart items from backend")})).then((t=>{if(!t.success)throw Error("Error getting cart items from backend");t.data.cart||(t.data.cart={}),e.saveCartObjectToDataLayer(t.data.cart),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(t.data.cart))}))}catch(e){console.error(e)}},e.getProductsFromBackend=async t=>{if(wpmDataLayer?.products&&(t=t.filter((e=>!(e in wpmDataLayer.products)))),t&&0!==t.length){try{let a;if(a=await e.isRestEndpointAvailable()?await fetch(e.root+"pmw/v1/products/",{method:"POST",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify({pageId:wpmDataLayer.general.pageId,pageType:wpmDataLayer.shop.page_type,productIds:t})}):await fetch(e.ajax_url,{method:"POST",cache:"no-cache",body:new URLSearchParams({action:"pmw_get_product_ids",pageId:wpmDataLayer.general.pageId,pageType:wpmDataLayer.shop.page_type,productIds:t})}),a.ok){let e=await a.json();e.success&&(wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e.data))}else console.error("Error getting products from backend")}catch(e){console.error(e)}return!0}},e.saveCartObjectToDataLayer=e=>{wpmDataLayer.cart=e,wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e)},e.triggerViewItemEventPrep=async t=>{wpmDataLayer.products&&wpmDataLayer.products[t]||await e.getProductsFromBackend([t]),e.triggerViewItemEvent(t)},e.triggerViewItemEvent=t=>{let a=e.getProductDetailsFormattedForEvent(t);jQuery(document).trigger("wpmViewItem",a)},e.triggerViewItemEventNoProduct=()=>{jQuery(document).trigger("wpmViewItem")},e.fireCheckoutOption=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null,r=arguments.length>2&&arguments[2]!==a?arguments[2]:null,o={step:e,checkout_option:t,value:r};jQuery(document).trigger("wpmFireCheckoutOption",o)},e.fireCheckoutProgress=e=>{let t={step:e};jQuery(document).trigger("wpmFireCheckoutProgress",t)},e.getPostIdFromString=e=>{try{return e.match(/(post-)(\d+)/)[2]}catch(e){console.error(e)}},e.triggerViewItemList=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");jQuery(document).trigger("wpmViewItemList",e.getProductDataForViewItemEvent(t))},e.getProductDataForViewItemEvent=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");try{if(wpmDataLayer.products[t])return e.getProductDetailsFormattedForEvent(t)}catch(e){console.error(e)}},e.getMainProductIdFromProductPage=()=>{try{return["simple","variable","grouped","composite","bundle"].indexOf(wpmDataLayer.shop.product_type)>=0&&jQuery(".wpmProductId:first").data("id")}catch(e){console.error(e)}},e.viewItemListTriggerTestMode=e=>{jQuery(e).css({position:"relative"}),jQuery(e).append('<div id="viewItemListTriggerOverlay"></div>'),jQuery(e).find("#viewItemListTriggerOverlay").css({"z-index":"10",display:"block",position:"absolute",height:"100%",top:"0",left:"0",right:"0",opacity:wpmDataLayer.viewItemListTrigger.opacity,"background-color":wpmDataLayer.viewItemListTrigger.backgroundColor})},e.getSearchTermFromUrl=()=>{try{return new URLSearchParams(window.location.search).get("s")}catch(e){console.error(e)}};let s,d={};e.observerCallback=(t,a)=>{t.forEach((t=>{try{let r,o=jQuery(t.target).data("ioid");if(r=jQuery(t.target).next(".wpmProductId").length?jQuery(t.target).next(".wpmProductId").data("id"):jQuery(t.target).find(".wpmProductId").data("id"),!r)throw Error("wpmProductId element not found");t.isIntersecting?d[o]=setTimeout((()=>{e.triggerViewItemList(r),wpmDataLayer.viewItemListTrigger.testMode&&e.viewItemListTriggerTestMode(t.target),!1===wpmDataLayer.viewItemListTrigger.repeat&&a.unobserve(t.target)}),wpmDataLayer.viewItemListTrigger.timeout):(clearTimeout(d[o]),wpmDataLayer.viewItemListTrigger.testMode&&jQuery(t.target).find("#viewItemListTriggerOverlay").remove())}catch(e){console.error(e)}}))};let c,p=0,l=()=>{c=jQuery(".wpmProductId").map((function(e,t){return jQuery(t).parent().hasClass("type-product")||jQuery(t).parent().hasClass("product")||jQuery(t).parent().hasClass("product-item-inner")?jQuery(t).parent():jQuery(t).prev().hasClass("wc-block-grid__product")||jQuery(t).prev().hasClass("product")||jQuery(t).prev().hasClass("product-small")||jQuery(t).prev().hasClass("woocommerce-LoopProduct-link")?jQuery(this).prev():jQuery(t).closest(".product").length?jQuery(t).closest(".product"):void 0}))};e.startIntersectionObserverToWatch=()=>{try{e.urlHasParameter("vildemomode")&&(wpmDataLayer.viewItemListTrigger.testMode=!0),s=new IntersectionObserver(e.observerCallback,{threshold:wpmDataLayer.viewItemListTrigger.threshold}),l(),c.each(((e,t)=>{jQuery(t[0]).data("ioid",p++),s.observe(t[0])}))}catch(e){console.error(e)}},e.startProductsMutationObserverToWatch=()=>{try{let e=jQuery(".wpmProductId:eq(0)").parents().has(jQuery(".wpmProductId:eq(1)").parents()).first();e.length&&u.observe(e[0],{attributes:!0,childList:!0,characterData:!0})}catch(e){console.error(e)}};let u=new MutationObserver((e=>{e.forEach((e=>{let t=e.addedNodes;null!==t&&jQuery(t).each((function(){(jQuery(this).hasClass("type-product")||jQuery(this).hasClass("product-small")||jQuery(this).hasClass("wc-block-grid__product"))&&m(this)&&(jQuery(this).data("ioid",p++),s.observe(this))}))}))})),m=e=>!(!jQuery(e).find(".wpmProductId").length&&!jQuery(e).siblings(".wpmProductId").length);e.setCookie=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:"",r=arguments.length>2&&arguments[2]!==a?arguments[2]:null;if(r){let a=new Date;a.setTime(a.getTime()+24*r*60*60*1e3);let o="expires="+a.toUTCString();document.cookie=e+"="+t+";"+o+";path=/"}else document.cookie=e+"="+t+";path=/"},e.getCookie=e=>{let t=e+"=",a=decodeURIComponent(document.cookie).split(";");for(let e=0;e<a.length;e++){let r=a[e];for(;" "==r.charAt(0);)r=r.substring(1);if(0==r.indexOf(t))return r.substring(t.length,r.length)}return""},e.deleteCookie=t=>{e.setCookie(t,"",-1)},e.getWpmSessionData=()=>{if(window.sessionStorage){let e=window.sessionStorage.getItem("_wpm");return null!==e?JSON.parse(e):{}}return{}},e.setWpmSessionData=e=>{window.sessionStorage&&window.sessionStorage.setItem("_wpm",JSON.stringify(e))},e.storeOrderIdOnServer=async(t,a)=>{try{let r;r=await e.isRestEndpointAvailable()?await fetch(e.root+"pmw/v1/pixels-fired/",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":e.nonce_wp_rest},body:JSON.stringify({order_key:t,source:a}),keepalive:!0,cache:"no-cache"}):await fetch(e.ajax_url,{method:"POST",body:new URLSearchParams({action:"pmw_purchase_pixels_fired",order_key:t,source:a,nonce_ajax:e.nonce_ajax}),keepalive:!0});const o=await r.json();o.success?console.log("wpm.storeOrderIdOnServer success"):console.error("wpm.storeOrderIdOnServer error",o)}catch(e){console.error(e)}},e.getProductIdByCartItemKeyUrl=e=>{let t,a=new URLSearchParams(e.search).get("remove_item");return t=0===wpmDataLayer.cartItemKeys[a].variation_id?wpmDataLayer.cartItemKeys[a].product_id:wpmDataLayer.cartItemKeys[a].variation_id,t},e.getAddToCartLinkProductIds=()=>jQuery("a").map((function(){let e=jQuery(this).attr("href");if(e&&e.includes("?add-to-cart=")){let t=e.match(/(add-to-cart=)(\d+)/);if(t)return t[2]}})).get(),e.getProductDetailsFormattedForEvent=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:1,r={id:e.toString(),dyn_r_ids:wpmDataLayer.products[e].dyn_r_ids,name:wpmDataLayer.products[e].name,list_name:wpmDataLayer.shop.list_name,brand:wpmDataLayer.products[e].brand,category:wpmDataLayer.products[e].category,variant:wpmDataLayer.products[e].variant,list_position:wpmDataLayer.products[e].position,quantity:t,price:wpmDataLayer.products[e].price,currency:wpmDataLayer.shop.currency,isVariable:wpmDataLayer.products[e].isVariable,isVariation:wpmDataLayer.products[e].isVariation,parentId:wpmDataLayer.products[e].parentId};return r.isVariation&&(r.parentId_dyn_r_ids=wpmDataLayer.products[e].parentId_dyn_r_ids),r},e.setReferrerToCookie=()=>{e.getCookie("wpmReferrer")||e.setCookie("wpmReferrer",document.referrer)},e.getReferrerFromCookie=()=>e.getCookie("wpmReferrer")?e.getCookie("wpmReferrer"):null,e.getClidFromBrowser=function(){let t,r=arguments.length>0&&arguments[0]!==a?arguments[0]:"gclid";return t={gclid:"_gcl_aw",dclid:"_gcl_dc"},e.getCookie(t[r])?e.getCookie(t[r]).match(/(GCL.[\d]*.)(.*)/)[2]:""},e.getUserAgent=()=>navigator.userAgent,e.getViewPort=()=>({width:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),height:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}),e.version=()=>{console.log(wpmDataLayer.version)},e.loadScriptAndCacheIt=e=>{let t={dataType:"script",cache:!0,url:e};return jQuery.ajax(t)},e.getOrderItemPrice=e=>(e.total+e.total_tax)/e.quantity,e.hasLoginEventFired=()=>e.getWpmSessionData()?.loginEventFired,e.setLoginEventFired=()=>{let t=e.getWpmSessionData();t.loginEventFired=!0,e.setWpmSessionData(t)},e.pageLoaded=async()=>new Promise((e=>{!function t(){if("complete"===document.readyState)return e();setTimeout(t,50)}()})),e.pageReady=()=>new Promise((e=>{!function t(){if("interactive"===document.readyState||"complete"===document.readyState)return e();setTimeout(t,50)}()})),e.isMiniCartActive=()=>{if(window.sessionStorage){for(const[e,t]of Object.entries(window.sessionStorage))if(e.includes("wc_fragments"))return!0;return!1}return!1},e.doesWooCommerceCartExist=()=>document.cookie.includes("woocommerce_items_in_cart"),e.urlHasParameter=e=>new URLSearchParams(window.location.search).has(e),e.hashAsync=(e,t)=>crypto.subtle.digest(e,new TextEncoder("utf-8").encode(t)).then((e=>Array.prototype.map.call(new Uint8Array(e),(e=>("00"+e.toString(16)).slice(-2))).join(""))),e.getCartValue=()=>{let e=0;if(wpmDataLayer?.cart)for(const t in wpmDataLayer.cart){let a=wpmDataLayer.cart[t];e+=a.quantity*a.price}return e},e.doesUrlContainPatterns=e=>{for(const t of e)if(new RegExp(t).test(window.location.href))return!0;return!1},e.excludeDomainFromTracking=()=>{let e=["appspot.com","translate.google.com"];return wpmDataLayer?.general?.excludeDomains&&(e=[...e,...wpmDataLayer.general.excludeDomains]),!!e.some((e=>window.location.href.includes(e)))&&(console.debug("Pixel Manager for WooCommerce: Aborted due to excluded domain"),!0)},e.getRandomEventId=()=>(Math.random()+1).toString(36).substring(2),e.pmwConsoleMessage=()=>{let e="Pixel Manager for WooCommerce: ";e+=wpmDataLayer.version.pro?"pro":"free",e+=" | distro: "+wpmDataLayer.version.distro,"fms"===wpmDataLayer.version.distro&&wpmDataLayer.version.pro&&(e+=" | active license: "+(wpmDataLayer.version.eligibleForUpdates?"yes":"no")),e+=" | version: "+wpmDataLayer.version.number,console.log(e)},e.canLoadPremiumFeatures=()=>"fms"===wpmDataLayer.version.distro&&wpmDataLayer.version.pro&&wpmDataLayer.version.eligibleForUpdates||"wcm"===wpmDataLayer.version.distro;let g=!1;e.triggerDomReadyEvent=()=>{!1===g&&jQuery(document).trigger("pmw:ready"),g=!0},jQuery(document).on("ready",(()=>{e.triggerDomReadyEvent()})),document.addEventListener("DOMContentLoaded",(()=>{e.triggerDomReadyEvent()}))}(window.wpm=window.wpm||{},jQuery)},534:(e,t,a)=>{a(584),a(473),a(260)},424:()=>{!function(e,t,a){e.jQueryExists=async()=>new Promise((e=>{!function t(){if("undefined"!=typeof jQuery)return e();setTimeout(t,100)}()})),e.wpmDataLayerExists=async()=>new Promise((e=>{!function t(){if("undefined"!=typeof wpmDataLayer)return e();setTimeout(t,50)}()}))}(window.wpm=window.wpm||{},jQuery)},260:(e,t,a)=>{!function(e,t,r){e.ipCheck=async()=>{if(window.sessionStorage&&sessionStorage.getItem("pmw_ip_valid"))return!!JSON.parse(sessionStorage.getItem("pmw_ip_valid"));const e=await fetch("https://www.cloudflare.com/cdn-cgi/trace");let t=await e.text();return t=t.trim().split("\n").reduce(((e,t)=>(e[(t=t.split("="))[0]]=t[1],e)),{}),o(t.ip)?(window.sessionStorage&&window.sessionStorage.setItem("pmw_ip_valid",JSON.stringify(!1)),!1):(window.sessionStorage&&window.sessionStorage.setItem("pmw_ip_valid",JSON.stringify(!0)),!0)};const o=e=>{const{isInSubnet:t}=a(806);for(const a of i())if(n(a))try{if(t(e,a))return!0}catch(e){console.error(e)}else if(e===a)return!0;return!1},n=e=>{const{isRange:t}=a(703);return t(e)},i=()=>{let e=[];return Array.isArray(wpmDataLayer.general.server2server.ipExcludeList)&&(e=wpmDataLayer.general.server2server.ipExcludeList),[].concat(["2001:4860:4801:10::/64","2001:4860:4801:11::/64","2001:4860:4801:12::/64","2001:4860:4801:13::/64","2001:4860:4801:14::/64","2001:4860:4801:15::/64","2001:4860:4801:16::/64","2001:4860:4801:17::/64","2001:4860:4801:18::/64","2001:4860:4801:19::/64","2001:4860:4801:1a::/64","2001:4860:4801:1b::/64","2001:4860:4801:20::/64","2001:4860:4801:21::/64","2001:4860:4801:22::/64","2001:4860:4801:23::/64","2001:4860:4801:24::/64","2001:4860:4801:25::/64","2001:4860:4801:26::/64","2001:4860:4801:27::/64","2001:4860:4801:28::/64","2001:4860:4801:29::/64","2001:4860:4801:2::/64","2001:4860:4801:2a::/64","2001:4860:4801:2b::/64","2001:4860:4801:2c::/64","2001:4860:4801:2d::/64","2001:4860:4801:2e::/64","2001:4860:4801:2f::/64","2001:4860:4801:30::/64","2001:4860:4801:31::/64","2001:4860:4801:32::/64","2001:4860:4801:33::/64","2001:4860:4801:34::/64","2001:4860:4801:35::/64","2001:4860:4801:36::/64","2001:4860:4801:37::/64","2001:4860:4801:38::/64","2001:4860:4801:39::/64","2001:4860:4801:3::/64","2001:4860:4801:3a::/64","2001:4860:4801:3b::/64","2001:4860:4801:3c::/64","2001:4860:4801:3d::/64","2001:4860:4801:3e::/64","2001:4860:4801:40::/64","2001:4860:4801:41::/64","2001:4860:4801:42::/64","2001:4860:4801:43::/64","2001:4860:4801:44::/64","2001:4860:4801:45::/64","2001:4860:4801:46::/64","2001:4860:4801:47::/64","2001:4860:4801:48::/64","2001:4860:4801:49::/64","2001:4860:4801:4a::/64","2001:4860:4801:50::/64","2001:4860:4801:51::/64","2001:4860:4801:53::/64","2001:4860:4801:60::/64","2001:4860:4801:61::/64","2001:4860:4801:62::/64","2001:4860:4801:63::/64","2001:4860:4801:64::/64","2001:4860:4801:65::/64","2001:4860:4801:66::/64","2001:4860:4801:67::/64","2001:4860:4801:68::/64","2001:4860:4801:69::/64","2001:4860:4801:6a::/64","2001:4860:4801:6b::/64","2001:4860:4801:6c::/64","2001:4860:4801:6d::/64","2001:4860:4801:6e::/64","2001:4860:4801:6f::/64","2001:4860:4801:70::/64","2001:4860:4801:71::/64","2001:4860:4801:72::/64","2001:4860:4801:73::/64","2001:4860:4801:74::/64","2001:4860:4801:75::/64","2001:4860:4801:76::/64","2001:4860:4801:77::/64","2001:4860:4801:80::/64","2001:4860:4801:81::/64","2001:4860:4801:82::/64","2001:4860:4801:83::/64","2001:4860:4801:84::/64","2001:4860:4801:85::/64","2001:4860:4801:86::/64","2001:4860:4801:90::/64","2001:4860:4801:91::/64","2001:4860:4801:92::/64","2001:4860:4801::/64","2001:4860:4801:c::/64","2001:4860:4801:f::/64","34.100.182.96/28","34.101.50.144/28","34.118.254.0/28","34.118.66.0/28","34.126.178.96/28","34.146.150.144/28","34.147.110.144/28","34.151.74.144/28","34.152.50.64/28","34.154.114.144/28","34.155.98.32/28","34.165.18.176/28","34.175.160.64/28","34.176.130.16/28","34.64.82.64/28","34.65.242.112/28","34.80.50.80/28","34.88.194.0/28","34.89.10.80/28","34.89.198.80/28","34.96.162.48/28","35.247.243.240/28","66.249.64.0/27","66.249.64.128/27","66.249.64.160/27","66.249.64.192/27","66.249.64.224/27","66.249.64.32/27","66.249.64.64/27","66.249.64.96/27","66.249.65.0/27","66.249.65.128/27","66.249.65.160/27","66.249.65.192/27","66.249.65.224/27","66.249.65.32/27","66.249.65.64/27","66.249.65.96/27","66.249.66.0/27","66.249.66.128/27","66.249.66.192/27","66.249.66.32/27","66.249.66.64/27","66.249.68.0/27","66.249.68.32/27","66.249.68.64/27","66.249.69.0/27","66.249.69.128/27","66.249.69.160/27","66.249.69.192/27","66.249.69.224/27","66.249.69.32/27","66.249.69.64/27","66.249.69.96/27","66.249.70.0/27","66.249.70.128/27","66.249.70.160/27","66.249.70.192/27","66.249.70.224/27","66.249.70.32/27","66.249.70.64/27","66.249.70.96/27","66.249.71.0/27","66.249.71.128/27","66.249.71.160/27","66.249.71.192/27","66.249.71.32/27","66.249.71.64/27","66.249.71.96/27","66.249.72.0/27","66.249.72.128/27","66.249.72.160/27","66.249.72.192/27","66.249.72.224/27","66.249.72.32/27","66.249.72.64/27","66.249.72.96/27","66.249.73.0/27","66.249.73.128/27","66.249.73.160/27","66.249.73.192/27","66.249.73.224/27","66.249.73.32/27","66.249.73.64/27","66.249.73.96/27","66.249.74.0/27","66.249.74.32/27","66.249.74.64/27","66.249.74.96/27","66.249.75.0/27","66.249.75.128/27","66.249.75.160/27","66.249.75.192/27","66.249.75.224/27","66.249.75.32/27","66.249.75.64/27","66.249.75.96/27","66.249.76.0/27","66.249.76.128/27","66.249.76.160/27","66.249.76.192/27","66.249.76.224/27","66.249.76.32/27","66.249.76.64/27","66.249.76.96/27","66.249.77.0/27","66.249.77.128/27","66.249.77.32/27","66.249.77.64/27","66.249.77.96/27","66.249.79.0/27","66.249.79.128/27","66.249.79.160/27","66.249.79.192/27","66.249.79.224/27","66.249.79.32/27","66.249.79.64/27","66.249.79.96/27"],["69.63.176.0/20","66.220.144.0/20","66.220.144.0/21","69.63.184.0/21","69.63.176.0/21","74.119.76.0/22","69.171.255.0/24","173.252.64.0/18","69.171.224.0/19","69.171.224.0/20","103.4.96.0/22","173.252.64.0/19","31.13.64.0/18","31.13.24.0/21","66.220.152.0/21","69.171.239.0/24","69.171.240.0/20","31.13.64.0/19","31.13.64.0/24","31.13.65.0/24","31.13.67.0/24","31.13.68.0/24","31.13.69.0/24","31.13.70.0/24","31.13.71.0/24","31.13.72.0/24","31.13.73.0/24","31.13.74.0/24","31.13.75.0/24","31.13.76.0/24","31.13.77.0/24","31.13.96.0/19","31.13.66.0/24","173.252.96.0/19","69.63.178.0/24","31.13.78.0/24","31.13.79.0/24","31.13.80.0/24","31.13.82.0/24","31.13.83.0/24","31.13.84.0/24","31.13.85.0/24","31.13.86.0/24","31.13.87.0/24","31.13.88.0/24","31.13.89.0/24","31.13.91.0/24","31.13.92.0/24","31.13.93.0/24","31.13.94.0/24","31.13.95.0/24","31.13.81.0/24","179.60.192.0/22","179.60.192.0/24","179.60.193.0/24","179.60.194.0/24","179.60.195.0/24","185.60.216.0/22","45.64.40.0/22","185.60.216.0/24","185.60.217.0/24","185.60.218.0/24","185.60.219.0/24","129.134.0.0/16","157.240.0.0/16","157.240.8.0/24","157.240.0.0/24","157.240.1.0/24","157.240.2.0/24","157.240.3.0/24","157.240.5.0/24","157.240.6.0/24","157.240.7.0/24","157.240.9.0/24","157.240.10.0/24","157.240.16.0/24","157.240.19.0/24","157.240.11.0/24","157.240.12.0/24","157.240.13.0/24","157.240.14.0/24","157.240.15.0/24","157.240.17.0/24","157.240.18.0/24","157.240.20.0/24","157.240.21.0/24","157.240.22.0/24","157.240.23.0/24","157.240.0.0/17","69.171.250.0/24","204.15.20.0/22","157.240.192.0/24","157.240.198.0/24","102.132.96.0/20","102.132.96.0/24","102.132.97.0/24","157.240.26.0/24","157.240.27.0/24","157.240.28.0/24","157.240.29.0/24","157.240.30.0/24","129.134.28.0/24","129.134.29.0/24","157.240.208.0/24","157.240.193.0/24","157.240.194.0/24","157.240.195.0/24","157.240.197.0/24","157.240.196.0/24","157.240.200.0/24","157.240.201.0/24","157.240.203.0/24","157.240.204.0/24","157.240.205.0/24","157.240.206.0/24","157.240.207.0/24","157.240.209.0/24","157.240.210.0/24","157.240.211.0/24","157.240.212.0/24","157.240.213.0/24","157.240.214.0/24","157.240.215.0/24","157.240.216.0/24","157.240.222.0/24","129.134.30.0/24","129.134.31.0/24","129.134.30.0/23","129.134.25.0/24","129.134.26.0/24","129.134.27.0/24","102.132.99.0/24","102.132.101.0/24","129.134.64.0/24","129.134.65.0/24","129.134.66.0/24","129.134.67.0/24","157.240.219.0/24","157.240.217.0/24","157.240.218.0/24","157.240.199.0/24","129.134.127.0/24","157.240.223.0/24","157.240.192.0/18","157.240.221.0/24","157.240.220.0/24","173.252.88.0/21","129.134.68.0/24","129.134.69.0/24","129.134.70.0/24","157.240.24.0/24","157.240.25.0/24","102.132.100.0/24","157.240.31.0/24","157.240.224.0/24","129.134.71.0/24","157.240.225.0/24","157.240.226.0/24","157.240.227.0/24","129.134.0.0/17","129.134.72.0/24","129.134.73.0/24","129.134.74.0/24","185.89.218.0/24","185.89.219.0/24","185.89.218.0/23","157.240.228.0/24","157.240.229.0/24","129.134.76.0/24","129.134.75.0/24","157.240.239.0/24","157.240.240.0/24","157.240.241.0/24","157.240.231.0/24","157.240.232.0/24","157.240.233.0/24","157.240.234.0/24","157.240.235.0/24","157.240.236.0/24","129.134.77.0/24","129.134.78.0/24","129.134.79.0/24","157.240.237.0/24","157.240.238.0/24","157.240.242.0/24","157.240.243.0/24","129.134.112.0/24","157.240.100.0/24","157.240.98.0/24","157.240.96.0/24","157.240.99.0/24","157.240.101.0/24","129.134.113.0/24","129.134.114.0/24","157.240.97.0/24","129.134.115.0/24","157.240.244.0/24","157.240.245.0/24","157.240.246.0/24","157.240.247.0/24","157.240.248.0/24","157.240.249.0/24","157.240.250.0/24","163.70.128.0/17","163.77.128.0/17","157.240.251.0/24","157.240.252.0/24","157.240.253.0/24","147.75.208.0/20","157.240.254.0/24","185.89.219.0/24","185.89.218.0/24","185.89.218.0/23","185.89.216.0/22","147.75.208.0/20","204.15.20.0/22","69.63.176.0/20","69.63.176.0/21","69.63.184.0/21","66.220.144.0/20","69.63.176.0/20","2620:0:1c00::/40","2a03:2880::/32","2a03:2880:fffe::/48","2a03:2880:ffff::/48","2620:0:1cff::/48","2a03:2880:f001::/48","2a03:2880:f003::/48","2a03:2880:f004::/48","2a03:2880:f005::/48","2a03:2880:f006::/48","2a03:2880:f007::/48","2a03:2880:f008::/48","2a03:2880:f00a::/48","2a03:2880:f00c::/48","2a03:2880:f00d::/48","2a03:2880:f00e::/48","2a03:2880:f00f::/48","2a03:2880:f010::/48","2a03:2880:f011::/48","2a03:2880:f012::/48","2a03:2880:f013::/48","2a03:2880:f016::/48","2a03:2880:f017::/48","2a03:2880:f019::/48","2a03:2880:f01b::/48","2a03:2880:f01c::/48","2a03:2880:f01f::/48","2a03:2880:1000::/36","2a03:2880:2000::/36","2a03:2880:3000::/36","2a03:2880:4000::/36","2a03:2880:5000::/36","2a03:2880:6000::/36","2a03:2880:7000::/36","2a03:2880:f021::/48","2a03:2880:f023::/48","2a03:2880:f024::/48","2a03:2880:f027::/48","2a03:2880:f028::/48","2a03:2880:f029::/48","2a03:2880:f02b::/48","2a03:2880:f02c::/48","2a03:2880:f02d::/48","2a03:2880:f02e::/48","2a03:2880:f02f::/48","2a03:2880:f030::/48","2a03:2880:f031::/48","2a03:2880:f032::/48","2a03:2880:f033::/48","2a03:2880:f034::/48","2a03:2880:f035::/48","2a03:2880:f036::/48","2a03:2880:f037::/48","2a03:2880:f038::/48","2a03:2880:f03a::/48","2a03:2880:f03b::/48","2a03:2880:f03d::/48","2a03:2880:f03e::/48","2a03:2880:f03f::/48","2401:db00::/32","2a03:2880::/36","2a03:2880:f101::/48","2a03:2880:f201::/48","2a03:2880:f103::/48","2a03:2880:f203::/48","2a03:2880:f104::/48","2a03:2880:f204::/48","2a03:2880:f107::/48","2a03:2880:f207::/48","2a03:2880:f108::/48","2a03:2880:f208::/48","2a03:2880:f10a::/48","2a03:2880:f20a::/48","2a03:2880:f10d::/48","2a03:2880:f20d::/48","2a03:2880:f10e::/48","2a03:2880:f20e::/48","2a03:2880:f10f::/48","2a03:2880:f20f::/48","2a03:2880:f110::/48","2a03:2880:f210::/48","2a03:2880:f111::/48","2a03:2880:f211::/48","2a03:2880:f112::/48","2a03:2880:f212::/48","2a03:2880:f116::/48","2a03:2880:f216::/48","2a03:2880:f117::/48","2a03:2880:f217::/48","2a03:2880:f119::/48","2a03:2880:f219::/48","2a03:2880:f11f::/48","2a03:2880:f21f::/48","2a03:2880:f121::/48","2a03:2880:f221::/48","2a03:2880:f123::/48","2a03:2880:f223::/48","2a03:2880:f10c::/48","2a03:2880:f20c::/48","2a03:2880:f105::/48","2a03:2880:f205::/48","2a03:2880:f106::/48","2a03:2880:f206::/48","2a03:2880:f11b::/48","2a03:2880:f21b::/48","2a03:2880:f113::/48","2a03:2880:f213::/48","2a03:2880:f11c::/48","2a03:2880:f21c::/48","2a03:2880:f128::/48","2a03:2880:f228::/48","2a03:2880:f02a::/48","2a03:2880:f12a::/48","2a03:2880:f22a::/48","2a03:2880:f12f::/48","2a03:2880:f22f::/48","2a03:2880:f124::/48","2a03:2880:f127::/48","2a03:2880:f129::/48","2a03:2880:f12b::/48","2a03:2880:f12c::/48","2a03:2880:f12d::/48","2a03:2880:f12e::/48","2a03:2880:f130::/48","2a03:2880:f131::/48","2a03:2880:f132::/48","2a03:2880:f133::/48","2a03:2880:f134::/48","2a03:2880:f135::/48","2a03:2880:f136::/48","2a03:2880:f137::/48","2a03:2880:f138::/48","2a03:2880:f13a::/48","2a03:2880:f13b::/48","2a03:2880:f13d::/48","2a03:2880:f13e::/48","2a03:2880:f13f::/48","2a03:2880:f224::/48","2a03:2880:f227::/48","2a03:2880:f229::/48","2a03:2880:f22b::/48","2a03:2880:f22c::/48","2a03:2880:f22d::/48","2a03:2880:f22e::/48","2a03:2880:f230::/48","2a03:2880:f231::/48","2a03:2880:f232::/48","2a03:2880:f233::/48","2a03:2880:f234::/48","2a03:2880:f235::/48","2a03:2880:f236::/48","2a03:2880:f237::/48","2a03:2880:f238::/48","2a03:2880:f23a::/48","2a03:2880:f23b::/48","2a03:2880:f23d::/48","2a03:2880:f23e::/48","2a03:2880:f23f::/48","2a03:2880:f0ff::/48","2a03:2880:f1ff::/48","2a03:2880:f2ff::/48","2a03:2880:f044::/48","2a03:2880:f144::/48","2a03:2880:f244::/48","2a03:2880:f042::/48","2a03:2880:f043::/48","2a03:2880:f045::/48","2a03:2880:f046::/48","2a03:2880:f047::/48","2a03:2880:f048::/48","2a03:2880:f04a::/48","2a03:2880:f04c::/48","2a03:2880:f04b::/48","2a03:2880:f04d::/48","2a03:2880:f259::/48","2a03:2880:f258::/48","2a03:2880:f257::/48","2a03:2880:f256::/48","2a03:2880:f255::/48","2a03:2880:f254::/48","2a03:2880:f253::/48","2a03:2880:f252::/48","2a03:2880:f250::/48","2a03:2880:f24f::/48","2a03:2880:f24d::/48","2a03:2880:f24e::/48","2a03:2880:f24c::/48","2a03:2880:f24b::/48","2a03:2880:f24a::/48","2a03:2880:f248::/48","2a03:2880:f247::/48","2a03:2880:f246::/48","2a03:2880:f245::/48","2a03:2880:f243::/48","2a03:2880:f242::/48","2a03:2880:f241::/48","2a03:2880:f240::/48","2a03:2880:f159::/48","2a03:2880:f158::/48","2a03:2880:f157::/48","2a03:2880:f156::/48","2a03:2880:f155::/48","2a03:2880:f154::/48","2a03:2880:f153::/48","2a03:2880:f152::/48","2a03:2880:f150::/48","2a03:2880:f14f::/48","2a03:2880:f14e::/48","2a03:2880:f14d::/48","2a03:2880:f14c::/48","2a03:2880:f14b::/48","2a03:2880:f14a::/48","2a03:2880:f148::/48","2a03:2880:f147::/48","2a03:2880:f146::/48","2a03:2880:f145::/48","2a03:2880:f143::/48","2a03:2880:f142::/48","2a03:2880:f141::/48","2a03:2880:f140::/48","2a03:2880:f059::/48","2a03:2880:f058::/48","2a03:2880:f057::/48","2a03:2880:f056::/48","2a03:2880:f055::/48","2a03:2880:f054::/48","2a03:2880:f053::/48","2a03:2880:f052::/48","2a03:2880:f050::/48","2a03:2880:f04f::/48","2a03:2880:f04e::/48","2a03:2880:ff0b::/48","2a03:2880:ff0c::/48","2a03:2880:f040::/48","2a03:2880:f041::/48","2a03:2880:f0fc::/48","2a03:2880:f0fd::/48","2a03:2880:f0fc::/47","2a03:2880:f1fc::/48","2a03:2880:f1fd::/48","2a03:2880:f1fc::/47","2a03:2880:ff08::/48","2a03:2880:ff09::/48","2a03:2880:ff0a::/48","2a03:2880:f05e::/48","2a03:2880:f15e::/48","2a03:2880:f25e::/48","2620:0:1cfa::/48","2a03:2880:f05b::/48","2a03:2880:f05a::/48","2a03:2880:f25a::/48","2a03:2880:f15c::/48","2a03:2880:f000::/36","2a03:2880:f05d::/48","2a03:2880:f25c::/48","2a03:2880:f05c::/48","2a03:2880:f260::/48","2a03:2880:f060::/48","2a03:2880:f160::/48","2a03:2880:f15d::/48","2a03:2880:f25b::/48","2a03:2880:f25d::/48","2a03:2880:f15b::/48","2a03:2880:f15a::/48","2a03:2880:f161::/48","2a03:2880:f061::/48","2a03:2880:f261::/48","2a03:2881::/32","2a03:2881::/48","2a03:2881:1::/48","2a03:2881:2::/48","2a03:2881:3::/48","2a03:2880:f162::/48","2a03:2880:f262::/48","2a03:2881:4000::/48","2a03:2881:4003::/48","2a03:2881:4001::/48","2a03:2881:4002::/48","2a03:2880:f065::/48","2a03:2880:f163::/48","2a03:2880:f066::/48","2a03:2880:f263::/48","2a03:2880:f264::/48","2a03:2880:f164::/48","2a03:2880:f067::/48","2a03:2880:f165::/48","2a03:2880:f265::/48","2a03:2880:f068::/48","2a03:2881:4004::/48","2a03:2880:f06a::/48","2a03:2880:f266::/48","2a03:2880:f166::/48","2a03:2880:f267::/48","2a03:2880:f06b::/48","2a03:2880:f167::/48","2a03:2881:4006::/48","2a03:2881:7::/48","2a03:2881:9::/48","2a03:2881:8::/48","2a03:2881:4::/48","2a03:2881:6::/48","2a03:2881:5::/48","2a03:2881:a::/48","2a03:2880:f268::/48","2a03:2880:f06d::/48","2a03:2880:f168::/48","2a03:2881:b::/48","2a03:2881:c::/48","2a03:2881:4007::/48","2a03:2880:f269::/48","2a03:2880:f169::/48","2a03:2880:f06f::/48","2a03:2880:f26a::/48","2a03:2880:f16a::/48","2a03:2880:f070::/48","2a03:2881:d::/48","2a03:2881:e::/48","2a03:2880:f071::/48","2a03:2880:f16b::/48","2a03:2880:f26b::/48","2a03:2881:4008::/48","2a03:2881:10::/48","2a03:2881:f::/48","2a03:2881:11::/48","2a03:2880:f26c::/48","2a03:2880:f16c::/48","2a03:2880:f073::/48","2a03:2880:f16d::/48","2a03:2880:f074::/48","2a03:2880:f26d::/48","2a03:2881:4009::/48","2a03:2880:f26e::/48","2a03:2880:f16e::/48","2a03:2880:f076::/48","2a03:2880:f16f::/48","2a03:2880:f26f::/48","2a03:2880:f077::/48","2a03:2881:12::/48","2a03:2881:13::/48","2a03:2881:17::/48","2a03:2881:15::/48","2a03:2881:18::/48","2a03:2881:14::/48","2a03:2881:16::/48","2a03:2881:19::/48","2a03:2881:4005::/48","2a03:2880:f078::/48","2a03:2880:f170::/48","2a03:2880:f270::/48","2a03:2881:400a::/48","2a03:2881:400c::/48","2a03:2881:400b::/48","2a03:2881:400d::/48","2a03:2881:1a::/48","2a03:2881:1c::/48","2a03:2881:1b::/48","2a03:2880:f271::/48","2a03:2880:f07d::/48","2a03:2880:f171::/48","2a03:2880:f07e::/48","2a03:2880:f172::/48","2a03:2880:f272::/48","2a03:2880:f080::/48","2a03:2880:f173::/48","2a03:2880:f273::/48","2a03:2880:f081::/48","2a03:2880:f174::/48","2a03:2880:f274::/48","2a03:2880:f175::/48","2a03:2880:f275::/48","2a03:2880:f082::/48","2a03:2880:f176::/48","2a03:2880:f276::/48","2a03:2880:f083::/48","2a03:2880:f277::/48","2a03:2880:f084::/48","2a03:2880:f177::/48","2a03:2881:1e::/48","2a03:2880:f085::/48","2a03:2880:f178::/48","2a03:2880:f278::/48","2a03:2880:f179::/48","2a03:2880:f086::/48","2a03:2880:f279::/48","2a03:2880:f17a::/48","2a03:2880:f08a::/48","2a03:2880:f27a::/48","2a03:2881:48::/45","2a10:f781:10:cee0::/64","2a03:83e0::/32"],["199.16.156.0/22","199.59.148.0/22","192.133.76.0/22"],["157.55.39.0/24","207.46.13.0/24","40.77.167.0/24","13.66.139.0/24","13.66.144.0/24","52.167.144.0/24","13.67.10.16/28","13.69.66.240/28","13.71.172.224/28","139.217.52.0/28","191.233.204.224/28","20.36.108.32/28","20.43.120.16/28","40.79.131.208/28","40.79.186.176/28","52.231.148.0/28","20.79.107.240/28","51.105.67.0/28","20.125.163.80/28","40.77.188.0/22","65.55.210.0/24","199.30.24.0/23","40.77.202.0/24","40.77.139.0/25","20.74.197.0/28"],["54.236.1.1/32","54.236.1.2/31","54.236.1.4/30","54.236.1.8/29","54.236.1.16/28","54.236.1.32/27","54.236.1.64/26","54.236.1.128/25"],["18.203.61.76","18.203.176.135","52.17.197.221"],["204.236.235.245","75.101.186.145"],["18.207.141.103","52.1.113.12"],["180.76.15.0/24","119.63.196.0/24","115.239.212.0/24","119.63.199.0/24","122.81.208.0/22","123.125.71.0/24","180.76.4.0/24","180.76.5.0/24","180.76.6.0/24","185.10.104.0/24","220.181.108.0/24","220.181.51.0/24","111.13.102.0/24","123.125.67.144/29","123.125.67.152/31","61.135.169.0/24","123.125.68.68/30","123.125.68.72/29","123.125.68.80/28","123.125.68.96/30","202.46.48.0/20","220.181.38.0/24","123.125.68.80/30","123.125.68.84/31","123.125.68.0/24"],["20.191.45.212","40.88.21.235","40.76.173.151","40.76.163.7","20.185.79.47","52.142.26.175","20.185.79.15","52.142.24.149","40.76.162.208","40.76.163.23","40.76.162.191","40.76.162.247"],["5.255.250.0/24","37.9.87.0/24","67.195.37.0/24","67.195.50.0/24","67.195.110.0/24","67.195.111.0/24","67.195.112.0/23","67.195.114.0/24","67.195.115.0/24","68.180.224.0/21","72.30.132.0/24","72.30.142.0/24","72.30.161.0/24","72.30.196.0/24","72.30.198.0/24","74.6.254.0/24","74.6.8.0/24","74.6.13.0/24","74.6.17.0/24","74.6.18.0/24","74.6.22.0/24","74.6.27.0/24","74.6.168.0/24","77.88.5.0/24","77.88.47.0/24","93.158.161.0/24","98.137.72.0/24","98.137.206.0/24","98.137.207.0/24","98.139.168.0/24","114.111.95.0/24","124.83.159.0/24","124.83.179.0/24","124.83.223.0/24","141.8.144.0/24","183.79.63.0/24","183.79.92.0/24","203.216.255.0/24","211.14.11.0/24"],["100.43.90.0/24","37.9.115.0/24","37.140.165.0/24","77.88.22.0/25","77.88.29.0/24","77.88.31.0/24","77.88.59.0/24","84.201.146.0/24","84.201.148.0/24","84.201.149.0/24","87.250.243.0/24","87.250.253.0/24","93.158.147.0/24","93.158.148.0/24","93.158.151.0/24","93.158.153.0/32","95.108.128.0/24","95.108.138.0/24","95.108.150.0/23","95.108.158.0/24","95.108.156.0/24","95.108.188.128/25","95.108.234.0/24","95.108.248.0/24","100.43.80.0/24","130.193.62.0/24","141.8.153.0/24","178.154.165.0/24","178.154.166.128/25","178.154.173.29","178.154.200.158","178.154.202.0/24","178.154.205.0/24","178.154.239.0/24","178.154.243.0/24","37.9.84.253","199.21.99.99","178.154.162.29","178.154.203.251","178.154.211.250","178.154.171.0/24","178.154.200.0/24","178.154.244.0/24","178.154.246.0/24","95.108.181.0/24","95.108.246.252","5.45.254.0/24","5.255.253.0/24","37.140.141.0/24","37.140.188.0/24","100.43.81.0/24","100.43.85.0/24","100.43.91.0/24","199.21.99.0/24","2a02:6b8:b000::/32","2a02:6b8:b010::/32","2a02:6b8:b011::/32","2a02:6b8:c0e::/32"],["220.181.125.0/24","123.126.51.64/27","123.126.51.96/28","123.126.68.25","61.135.189.74","61.135.189.75"],["61.135.249.200/29","61.135.249.208/28"],e)}}(window.wpm=window.wpm||{},jQuery)},791:()=>{wp.hooks.addAction("experimental__woocommerce_blocks-cart-add-item","pixel-manager-for-woocommerce",(e=>{wpm.addProductToCart(e.product.id,1)})),wp.hooks.addAction("experimental__woocommerce_blocks-cart-set-item-quantity","pixel-manager-for-woocommerce",(e=>{e.quantity>e.product.quantity&&wpm.addProductToCart(e.product.id,e.quantity-e.product.quantity),e.quantity<e.product.quantity&&wpm.removeProductFromCart(e.product.id,e.product.quantity-e.quantity)})),wp.hooks.addAction("experimental__woocommerce_blocks-cart-remove-item","pixel-manager-for-woocommerce",(e=>{wpm.removeProductFromCart(e.product.id,e.quantity)})),wp.hooks.addAction("experimental__woocommerce_blocks-checkout-submit","pixel-manager-for-woocommerce",(()=>{jQuery(document).trigger("wpmPlaceOrder",{})}))}},t={};function a(r){var o=t[r];if(void 0!==o)return o.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,a),n.exports}a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(async()=>{a(424),await wpm.jQueryExists(),await wpm.wpmDataLayerExists(),a(534),jQuery(document).on("pmw:ready",(()=>{a(459)})),a(299),a(791),wpm.pmwConsoleMessage(),wpm.excludeDomainFromTracking()||(a(69),a(12),a(787),document.dispatchEvent(new Event("wpmPreLoadPixels")),document.dispatchEvent(new Event("wpmLoad")),await wpm.pageLoaded(),wpm.triggerDomReadyEvent())})()})();
|
2 |
//# sourceMappingURL=wpm-public.p1.min.js.map
|
js/public/wpm-public.p1.min.js.br
CHANGED
Binary file
|
js/public/wpm-public.p1.min.js.gz
CHANGED
Binary file
|
js/public/wpm-public.p1.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"file":"wpm-public.p1.min.js","mappings":"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","sources":["webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/cookie_consent.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/event_listeners_on_ready.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions_loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/init.js","webpack://Pixel-Manager-for-WooCommerce/webpack/bootstrap","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/main.js"],"sourcesContent":["/**\n * All event listeners\n *\n * https://developers.facebook.com/docs/meta-pixel/reference\n * */\n\n// Load pixel event\njQuery(document).on(\"wpmLoadPixels\", () => {\n\n\tif (\n\t\twpmDataLayer?.pixels?.facebook?.pixel_id\n\t\t&& !wpmDataLayer?.pixels?.facebook?.loaded\n\t\t&& !wpm.doesUrlContainPatterns(wpmDataLayer?.pixels?.facebook?.exclusion_patterns)\n\t) {\n\t\tif (wpm.canIFire(\"ads\", \"facebook-ads\")) wpm.loadFacebookPixel()\n\t}\n})\n\n// AddToCart event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToCart\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToCart\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// InitiateCheckout event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideBeginCheckout\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"InitiateCheckout\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// AddToWishlist event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToWishlist\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToWishlist\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// ViewContent event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideViewItem\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"ViewContent\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n\n// view search event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideSearch\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Search\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// load always event\njQuery(document).on(\"wpmLoadAlways\", () => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.setFbUserData()\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// view order received page event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideOrderReceivedPage\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Purchase\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n","/**\n * Add functions for Facebook\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet fbUserData\n\n\twpm.loadFacebookPixel = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.facebook.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(f,b,e,v,n,t,s)\n\t\t\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\t\t\t\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\t\t\t\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\t\t\t\tn.queue=[];t=b.createElement(e);t.async=!0;\n\t\t\t\tt.src=v;s=b.getElementsByTagName(e)[0];\n\t\t\t\ts.parentNode.insertBefore(t,s)}(window, document,'script',\n\t\t\t\t'https://connect.facebook.net/en_US/fbevents.js');\n\t\t\t// @formatter:on\n\n\t\t\tlet data = {}\n\n\t\t\t// Add user identifiers to data,\n\t\t\t// and only if fbp was set\n\t\t\tif (wpm.isFbpSet() && wpm.isFbAdvancedMatchingEnabled()) {\n\t\t\t\tdata = {...wpm.getUserIdentifiersForFb()}\n\t\t\t}\n\n\t\t\tfbq(\"init\", wpmDataLayer.pixels.facebook.pixel_id, data)\n\t\t\tfbq(\"track\", \"PageView\")\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// https://developers.facebook.com/docs/meta-pixel/advanced/advanced-matching\n\twpm.getUserIdentifiersForFb = () => {\n\n\t\tlet data = {}\n\n\t\t// external ID\n\t\tif (wpmDataLayer?.user?.id?.raw) data.external_id = wpmDataLayer.user.id.raw\n\t\tif (wpmDataLayer?.order?.user_id) data.external_id = wpmDataLayer.order.user_id\n\n\t\t// email\n\t\tif (wpmDataLayer?.user?.email?.facebook) data.em = wpmDataLayer.user.email.facebook\n\t\tif (wpmDataLayer?.order?.billing_email_hashed) data.em = wpmDataLayer.order.billing_email_hashed\n\n\t\t// first name\n\t\tif (wpmDataLayer?.user?.first_name?.facebook) data.fn = wpmDataLayer.user.first_name.facebook\n\t\tif (wpmDataLayer?.order?.billing_first_name) data.fn = wpmDataLayer.order.billing_first_name.toLowerCase()\n\n\t\t// last name\n\t\tif (wpmDataLayer?.user?.last_name?.facebook) data.ln = wpmDataLayer.user.last_name.facebook\n\t\tif (wpmDataLayer?.order?.billing_last_name) data.ln = wpmDataLayer.order.billing_last_name.toLowerCase()\n\n\t\t// phone\n\t\tif (wpmDataLayer?.user?.phone?.facebook) data.ph = wpmDataLayer.user.phone.facebook\n\t\tif (wpmDataLayer?.order?.billing_phone) data.ph = wpmDataLayer.order.billing_phone.replace(\"+\", \"\")\n\n\t\t// city\n\t\tif (wpmDataLayer?.user?.city?.facebook) data.ct = wpmDataLayer.user.city.facebook\n\t\tif (wpmDataLayer?.order?.billing_city) data.ct = wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g, \"\")\n\n\t\t// state\n\t\tif (wpmDataLayer?.user?.state?.facebook) data.st = wpmDataLayer.user.state.facebook\n\t\tif (wpmDataLayer?.order?.billing_state) data.st = wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/, \"\")\n\n\t\t// postcode\n\t\tif (wpmDataLayer?.user?.postcode?.facebook) data.zp = wpmDataLayer.user.postcode.facebook\n\t\tif (wpmDataLayer?.order?.billing_postcode) data.zp = wpmDataLayer.order.billing_postcode\n\n\t\t// country\n\t\tif (wpmDataLayer?.user?.country?.facebook) data.country = wpmDataLayer.user.country.facebook\n\t\tif (wpmDataLayer?.order?.billing_country) data.country = wpmDataLayer.order.billing_country.toLowerCase()\n\n\t\treturn data\n\t}\n\n\twpm.getFbRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\twpm.getFbUserData = () => {\n\n\t\t/**\n\t\t * We need to cache the FB user data for InitiateCheckout\n\t\t * where getting the user data from the browser is too slow\n\t\t * using wpm.getCookie().\n\t\t *\n\t\t * And we need the object merge because the ViewContent hit happens too fast\n\t\t * after adding a variation to the cart because the function to cache\n\t\t * the user data is too slow.\n\t\t *\n\t\t * But we can get the user_data using wpm.getCookie()\n\t\t * because we don't move away from the page and can wait for the browser\n\t\t * to get it.\n\t\t *\n\t\t * Also, the merge ensures that new data will be added to fbUserData if new\n\t\t * data is being added later, like user ID, or fbc.\n\t\t */\n\n\t\tfbUserData = {...fbUserData, ...wpm.getFbUserDataFromBrowser()}\n\n\t\treturn fbUserData\n\t}\n\n\twpm.isFbAdvancedMatchingEnabled = () => {\n\t\tif (wpmDataLayer?.pixels?.facebook?.advanced_matching) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\twpm.setFbUserData = () => {\n\t\tfbUserData = wpm.getFbUserDataFromBrowser()\n\t}\n\n\twpm.getFbUserDataFromBrowser = () => {\n\n\t\tlet\n\t\t\tdata = {}\n\n\t\tif (wpm.getCookie(\"_fbp\") && wpm.isValidFbp(wpm.getCookie(\"_fbp\"))) {\n\t\t\tdata.fbp = wpm.getCookie(\"_fbp\")\n\t\t}\n\n\t\tif (wpm.getCookie(\"_fbc\") && wpm.isValidFbc(wpm.getCookie(\"_fbc\"))) {\n\t\t\tdata.fbc = wpm.getCookie(\"_fbc\")\n\t\t}\n\n\t\tif (wpm.isFbAdvancedMatchingEnabled()) {\n\t\t\tif (wpmDataLayer?.user?.id?.raw) data.external_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\tif (navigator.userAgent) data.client_user_agent = navigator.userAgent\n\n\t\treturn data\n\t}\n\n\twpm.isFbpSet = () => {\n\t\treturn !!wpm.getCookie(\"_fbp\")\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbp = fbp => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.\\d{8,20}$/)\n\n\t\treturn re.test(fbp)\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbc = fbc => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.[\\da-zA-Z_-]{8,}/)\n\n\t\treturn re.test(fbc)\n\t}\n\n\t// wpm.fbViewContent = (product = null) => {\n\t//\n\t// \ttry {\n\t// \t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\t//\n\t// \t\tlet eventId = wpm.getFbRandomEventId()\n\t//\n\t// \t\tlet data = {}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tdata.content_type = \"product\"\n\t// \t\t\tdata.content_name = product.name\n\t// \t\t\t// data.content_category = product.category\n\t// \t\t\tdata.content_ids = product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]\n\t// \t\t\tdata.currency = wpmDataLayer.shop.currency\n\t// \t\t\tdata.value = product.price\n\t// \t\t}\n\t//\n\t// \t\tfbq(\"track\", \"ViewContent\", data, {\n\t// \t\t\teventID: eventId,\n\t// \t\t})\n\t//\n\t// \t\tlet capiData = {\n\t// \t\t\tevent_name : \"ViewContent\",\n\t// \t\t\tevent_id : eventId,\n\t// \t\t\tuser_data : wpm.getFbUserData(),\n\t// \t\t\tevent_source_url: window.location.href,\n\t// \t\t}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\t// \t\t\tcapiData.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t// \t\t}\n\t//\n\t// \t\tjQuery(document).trigger(\"wpmFbCapiEvent\", capiData)\n\t// \t} catch (e) {\n\t// \t\tconsole.error(e)\n\t// \t}\n\t// }\n\n\twpm.fbGetProductDataForCapiEvent = product => {\n\t\treturn {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : [\n\t\t\t\tproduct.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}\n\t}\n\n\twpm.facebookContentIds = () => {\n\t\tlet prodIds = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn prodIds\n\t}\n\n\twpm.trackCustomFacebookEvent = (eventName, customData = {}) => {\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getFbRandomEventId()\n\n\t\t\tfbq(\"trackCustom\", eventName, customData, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : eventName,\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t\tcustom_data : customData,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fbGetContentIdsFromCart = () => {\n\n\t\tlet content_ids = []\n\n\t\tfor (const key in wpmDataLayer.cart) {\n\t\t\tcontent_ids.push(wpmDataLayer.products[key].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])\n\t\t}\n\n\t\treturn content_ids\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Facebook loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n\n","/**\n * Load Google Ads event listeners\n * */\n\n// view_item_list event\njQuery(document).on(\"wpmViewItemList\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tif (\n\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\tproduct.isVariable &&\n\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t) return\n\n\t\t// try to prevent that WC sends cached hits to Google\n\t\tif (!product) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item_list\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : product.quantity * product.price,\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : product.quantity,\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_cart\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tdata.value = (product.quantity ? product.quantity : 1) * product.price\n\t\t\tdata.items = [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : (product.quantity ? product.quantity : 1),\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}]\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tlet products = []\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\n\t\t\tif (\n\t\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\t\tproduct.isVariable &&\n\t\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t\t) return\n\n\t\t\tproducts.push({\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t})\n\t\t}\n\n\t\t// console.log(products);\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t// value : 1 * product.price,\n\t\t\titems: products,\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_search_results\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\n// TODO distinguish with or without cart data active\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\titems : wpm.getGoogleAdsDynamicRemarketingOrderItems(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", data)\n\t\t})\n\n\t\t// console.log(wpm.getGoogleAdsDynamicRemarketingOrderItems())\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// user log in event\njQuery(document).on(\"wpmLogin\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"login\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// conversion event\n// new_customer parameter: https://support.google.com/google-ads/answer/9917012\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel())) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data_basic = {}\n\t\tlet data_with_cart = {}\n\n\t\tdata_basic = {\n\t\t\tsend_to : wpm.getGoogleAdsConversionIdentifiersWithLabel(),\n\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tnew_customer : wpmDataLayer.order.new_customer,\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.clv_order_value_filtered) {\n\t\t\tdata_basic.customer_lifetime_value = wpmDataLayer.order.clv_order_value_filtered\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata_basic.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.aw_merchant_id) {\n\t\t\tdata_with_cart = {\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\taw_merchant_id : wpmDataLayer.order.aw_merchant_id,\n\t\t\t\taw_feed_country : wpmDataLayer.order.aw_feed_country,\n\t\t\t\taw_feed_language: wpmDataLayer.order.aw_feed_language,\n\t\t\t\titems : wpm.getGoogleAdsRegularOrderItems(),\n\t\t\t}\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"conversion\", {...data_basic, ...data_with_cart})\n\t\t})\n\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load Google Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\n\twpm.getGoogleAdsConversionIdentifiersWithLabel = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds) {\n\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\tif (item) {\n\t\t\t\t\tconversionIdentifiers.push(key + \"/\" + item)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsConversionIdentifiers = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\tconversionIdentifiers.push(key)\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsRegularOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.getGoogleAdsDynamicRemarketingOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google Ads\n */\n\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Google Universal Analytics (GA3) event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.universal.property_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGAUAOrderItems(),\n\t\t\t})\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Add functions for Google Analytics Universal\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGAUAOrderItems = function () {\n\n\t\t// \"id\" : \"34\",\n\t\t// \"name\" : \"Hoodie\",\n\t\t// \"brand\" : \"\",\n\t\t// \"category\" : \"Hoodies\",\n\t\t// \"list_position\": 1,\n\t\t// \"price\" : 45,\n\t\t// \"quantity\" : 1,\n\t\t// \"variant\" : \"Color: blue | Logo: yes\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tname : item.name,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcategory: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItem = wpm.ga3AddListNameToProduct(orderItem)\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.ga3AddListNameToProduct = function (item_data, productPosition = null) {\n\n\t\t// if (wpm.ga3CanProductListBeSet(item_data.id)) {\n\t\t// \titem_data.listname = wpmDataLayer.shop.list_name\n\t\t//\n\t\t// \tif (productPosition) {\n\t\t// \t\titem_data.list_position = productPosition\n\t\t// \t}\n\t\t// }\n\n\t\titem_data.list_name = wpmDataLayer.shop.list_name\n\n\t\tif (productPosition) {\n\t\t\titem_data.list_position = productPosition\n\t\t}\n\n\t\treturn item_data\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Google Universal Analytics (GA3) loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load GA4 event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.ga4.measurement_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGA4OrderItems(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load GA4 functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGA4OrderItems = function () {\n\n\t\t// \"item_id\" : \"34\",\n\t\t// \"item_name\" : \"Hoodie\",\n\t\t// \"quantity\" : 1,\n\t\t// \"item_brand\" : \"\",\n\t\t// \"item_variant\" : \"Color: blue | Logo: yes\",\n\t\t// \"price\" : 45,\n\t\t// \"currency\" : \"CHF\",\n\t\t// \"item_category\": \"Hoodies\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\titem_name : item.name,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\titem_category: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * GA4 loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Google Analytics loader\n */\n\nrequire(\"./ga3/loader\")\nrequire(\"./ga4/loader\")\n","/**\n * Load Google base event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") {\n\t\tif (wpm.canGoogleLoad()) {\n\t\t\twpm.loadGoogle()\n\t\t} else {\n\t\t\twpm.logPreventedPixelLoading(\"google\", \"analytics / ads\")\n\t\t}\n\t}\n})\n","/**\n * Load Google base functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.googleConfigConditionsMet = function (type) {\n\n\t\t// always returns true if Google Consent Mode is active\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (wpm.getConsentValues().mode === \"category\") {\n\t\t\treturn wpm.getConsentValues().categories[type] === true\n\t\t} else if (wpm.getConsentValues().mode === \"pixel\") {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-\" + type)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings = function (google_consent_settings) {\n\n\t\tif (wpm.getConsentValues().mode === \"category\") {\n\n\t\t\tif (wpm.getConsentValues().categories.analytics) google_consent_settings.analytics_storage = \"granted\"\n\t\t\tif (wpm.getConsentValues().categories.ads) google_consent_settings.ad_storage = \"granted\"\n\t\t} else if ((wpm.getConsentValues().mode === \"pixel\")) {\n\n\t\t\tgoogle_consent_settings.analytics_storage = wpm.getConsentValues().pixels.includes(\"google-analytics\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_storage = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t}\n\n\t\treturn google_consent_settings\n\t}\n\n\twpm.updateGoogleConsentMode = function (analytics = true, ads = true) {\n\n\t\ttry {\n\t\t\tif (\n\t\t\t\t!window.gtag ||\n\t\t\t\t!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent\n\t\t\t) return\n\n\t\t\tgtag(\"consent\", \"update\", {\n\t\t\t\tanalytics_storage: analytics ? \"granted\" : \"denied\",\n\t\t\t\tad_storage : ads ? \"granted\" : \"denied\",\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAds = function () {\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.ads.state = \"loading\"\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.enhanced_conversions?.active) {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key, {\"allow_enhanced_conversions\": true})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_label && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_number) {\n\t\t\t\tgtag(\"config\", Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0] + \"/\" + wpmDataLayer.pixels.google.ads.phone_conversion_label, {\n\t\t\t\t\tphone_conversion_number: wpmDataLayer.pixels.google.ads.phone_conversion_number,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// ! enhanced_conversion_data needs to set on the window object\n\t\t\t// https://support.google.com/google-ads/answer/9888145#zippy=%2Cvalidate-your-implementation-using-chrome-developer-tools\n\t\t\tif (wpmDataLayer?.shop?.page_type && \"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer?.order?.google?.ads?.enhanced_conversion_data) {\n\t\t\t\t// window.enhanced_conversion_data = wpmDataLayer.order.google.ads.enhanced_conversion_data\n\n\t\t\t\tgtag(\"set\", \"user_data\", wpmDataLayer.order.google.ads.enhanced_conversion_data)\n\t\t\t}\n\n\t\t\twpmDataLayer.pixels.google.ads.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsUA = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"loading\"\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.universal.property_id, wpmDataLayer.pixels.google.analytics.universal.parameters)\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsGA4 = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"loading\"\n\n\t\t\tlet parameters = wpmDataLayer.pixels.google.analytics.ga4.parameters\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.debug_mode) {\n\t\t\t\tparameters.debug_mode = true\n\t\t\t}\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.ga4.measurement_id, parameters)\n\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.isGoogleActive = function () {\n\n\t\tif (\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.universal?.property_id ||\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id ||\n\t\t\t!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)\n\t\t) {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getGoogleGtagId = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.universal.property_id\n\t\t} else if (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.ga4.measurement_id\n\t\t} else {\n\t\t\treturn Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]\n\t\t}\n\t}\n\n\n\twpm.loadGoogle = function () {\n\n\t\tif (wpm.isGoogleActive()) {\n\n\t\t\twpmDataLayer.pixels.google.state = \"loading\"\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googletagmanager.com/gtag/js?id=\" + wpm.getGoogleGtagId())\n\t\t\t\t.then(function (script, textStatus) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\t// Initiate Google dataLayer and gtag\n\t\t\t\t\t\twindow.dataLayer = window.dataLayer || []\n\t\t\t\t\t\twindow.gtag = function gtag() {\n\t\t\t\t\t\t\tdataLayer.push(arguments)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Consent Mode\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\n\t\t\t\t\t\t\tlet google_consent_settings = {\n\t\t\t\t\t\t\t\t\"ad_storage\" : wpmDataLayer.pixels.google.consent_mode.ad_storage,\n\t\t\t\t\t\t\t\t\"analytics_storage\": wpmDataLayer.pixels.google.consent_mode.analytics_storage,\n\t\t\t\t\t\t\t\t\"wait_for_update\" : wpmDataLayer.pixels.google.consent_mode.wait_for_update,\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.region) {\n\t\t\t\t\t\t\t\tgoogle_consent_settings.region = wpmDataLayer.pixels.google.consent_mode.region\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgoogle_consent_settings = wpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings(google_consent_settings)\n\n\t\t\t\t\t\t\tgtag(\"consent\", \"default\", google_consent_settings)\n\t\t\t\t\t\t\tgtag(\"set\", \"ads_data_redaction\", wpmDataLayer.pixels.google.consent_mode.ads_data_redaction)\n\t\t\t\t\t\t\tgtag(\"set\", \"url_passthrough\", wpmDataLayer.pixels.google.consent_mode.url_passthrough)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Linker\n\t\t\t\t\t\t// https://developers.google.com/gtagjs/devguide/linker\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.linker?.settings) {\n\t\t\t\t\t\t\tgtag(\"set\", \"linker\", wpmDataLayer.pixels.google.linker.settings)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgtag(\"js\", new Date())\n\n\t\t\t\t\t\t// Google Ads loader\n\t\t\t\t\t\tif (!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) { // Only run if the pixel has set up\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"ads\")) { \t\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAds()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-ads\", \"ads\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Universal Analytics loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) { \t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsUA()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-universal-analytics\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// GA4 loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) { \t\t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsGA4()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"ga4\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twpmDataLayer.pixels.google.state = \"ready\"\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\twpm.canGoogleLoad = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (\"category\" === wpm.getConsentValues().mode) {\n\t\t\treturn !!(wpm.getConsentValues().categories[\"ads\"] || wpm.getConsentValues().categories[\"analytics\"])\n\t\t} else if (\"pixel\" === wpm.getConsentValues().mode) {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-ads\") || wpm.getConsentValues().pixels.includes(\"google-analytics\")\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid load condition for Google mode in wpmConsentValues\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.gtagLoaded = function () {\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") reject()\n\n\t\t\tlet startTime = 0\n\t\t\tlet timeout = 5000\n\t\t\tlet frequency = 200;\n\n\t\t\t(function wait() {\n\t\t\t\tif (wpmDataLayer?.pixels?.google?.state === \"ready\") return resolve()\n\t\t\t\tif (startTime >= timeout) return reject()\n\t\t\t\tstartTime += frequency\n\t\t\t\tsetTimeout(wait, frequency)\n\t\t\t})()\n\t\t})\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google base\n */\n\n// Load base\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load Google\n */\n\n// Load base\nrequire(\"./base/loader\")\n\n//Load additional Google libraries\nrequire(\"./ads/loader\")\nrequire(\"./analytics/loader\")\nrequire(\"./optimize/loader\")\n\n\n","/**\n * Load Google Optimize event listeners\n */\n\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.google?.optimize?.container_id && !wpmDataLayer?.pixels?.google?.optimize?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"google-optimize\")) wpm.load_google_optimize_pixel()\n\t}\n})\n","/**\n * Load Google Optimize functions\n */\n\n\n(function (wpm, $, undefined) {\n\n\twpm.load_google_optimize_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.optimize.loaded = true\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googleoptimize.com/optimize.js?id=\" + wpmDataLayer.pixels.google.optimize.container_id)\n\t\t\t// .then(function (script, textStatus) {\n\t\t\t// \t\tconsole.log('Google Optimize loaded')\n\t\t\t// });\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Load Google Optimize\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Hotjar event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.hotjar?.site_id && !wpmDataLayer?.pixels?.hotjar?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"hotjar\") && !wpmDataLayer?.pixels?.hotjar?.loaded) wpm.load_hotjar_pixel()\n\t}\n})\n","/**\n * Load Hotjar functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.load_hotjar_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.hotjar.loaded = true;\n\n\t\t\t// @formatter:off\n\t\t\t(function(h,o,t,j,a,r){\n\t\t\t\th.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n\t\t\t\th._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6};\n\t\t\t\ta=o.getElementsByTagName('head')[0];\n\t\t\t\tr=o.createElement('script');r.async=1;\n\t\t\t\tr.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n\t\t\t\ta.appendChild(r);\n\t\t\t})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\n\t\t\t// @formatter:on\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Hotjar loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Consent Mode functions\n */\n\n(function (wpm, $, undefined) {\n\n\t/**\n\t * Handle Cookie Management Platforms\n\t */\n\n\tlet getComplianzCookies = () => {\n\n\t\tlet cmplz_statistics = wpm.getCookie(\"cmplz_statistics\")\n\t\tlet cmplz_marketing = wpm.getCookie(\"cmplz_marketing\")\n\t\tlet cmplz_consent_status = wpm.getCookie(\"cmplz_consent_status\") || wpm.getCookie(\"cmplz_banner-status\")\n\n\t\tif (cmplz_consent_status) {\n\t\t\treturn {\n\t\t\t\tanalytics : cmplz_statistics === \"allow\",\n\t\t\t\tads : cmplz_marketing === \"allow\",\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tlet getCookieLawInfoCookies = () => {\n\n\t\tlet analyticsCookie = wpm.getCookie(\"cookielawinfo-checkbox-analytics\") || wpm.getCookie(\"cookielawinfo-checkbox-analytiques\")\n\t\tlet adsCookie = wpm.getCookie(\"cookielawinfo-checkbox-advertisement\") || wpm.getCookie(\"cookielawinfo-checkbox-performance\") || wpm.getCookie(\"cookielawinfo-checkbox-publicite\")\n\t\tlet visitorHasChosen = wpm.getCookie(\"CookieLawInfoConsent\")\n\n\t\tif (analyticsCookie || adsCookie) {\n\n\t\t\treturn {\n\t\t\t\tanalytics : analyticsCookie === \"yes\",\n\t\t\t\tads : adsCookie === \"yes\",\n\t\t\t\tvisitorHasChosen: !!visitorHasChosen,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Initialize and set default values\n\t */\n\n\tlet\n\t\twpmConsentValues = {}\n\twpmConsentValues.categories = {}\n\twpmConsentValues.pixels = []\n\twpmConsentValues.mode = \"category\"\n\twpmConsentValues.visitorHasChosen = false\n\n\t// Return current consent values\n\twpm.getConsentValues = () => wpmConsentValues\n\n\twpm.setConsentValueCategories = (analytics = false, ads = false) => {\n\t\twpmConsentValues.categories.analytics = analytics\n\t\twpmConsentValues.categories.ads = ads\n\t}\n\n\t// Update the PMW consent values with values coming from a CMP\n\twpm.updateConsentCookieValues = (analytics = null, ads = null, explicitConsent = false) => {\n\n\t\t// ad_storage\n\t\t// analytics_storage\n\t\t// functionality_storage\n\t\t// personalization_storage\n\t\t// security_storage\n\n\t\tlet cookie\n\n\t\t/**\n\t\t * Setup defaults\n\t\t */\n\n\t\t// consentValues.categories.analytics = true\n\t\t// consentValues.categories.ads = true\n\n\t\twpmConsentValues.categories.analytics = !explicitConsent\n\t\twpmConsentValues.categories.ads = !explicitConsent\n\n\n\t\tif (analytics || ads) {\n\n\t\t\tif (analytics) {\n\t\t\t\twpmConsentValues.categories.analytics = !!analytics\n\t\t\t}\n\n\t\t\tif (ads) {\n\t\t\t\twpmConsentValues.categories.ads = !!ads\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * PMW Cookie Consent\n\t\t *\n\t\t * Must be before every other CMP for the case that one of the included CMPs\n\t\t * decides to implement the PMW cookie consent API. In that case\n\t\t * the PMW consent cookie must take precedence.\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"pmw_cookie_consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookiebot\n\t\t * https://wordpress.org/plugins/cookiebot/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieConsent\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.indexOf(\"statistics:true\") >= 0\n\t\t\twpmConsentValues.categories.ads = cookie.indexOf(\"marketing:true\") >= 0\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Script\n\t\t * https://wordpress.org/plugins/cookie-script-com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieScriptConsent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\tif (cookie.action === \"reject\") {\n\t\t\t\twpmConsentValues.categories.analytics = false\n\t\t\t\twpmConsentValues.categories.ads = false\n\t\t\t} else if (cookie.categories.length === 2) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t} else {\n\t\t\t\twpmConsentValues.categories.analytics = cookie.categories.indexOf(\"performance\") >= 0\n\t\t\t\twpmConsentValues.categories.ads = cookie.categories.indexOf(\"targeting\") >= 0\n\t\t\t}\n\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Borlabs Cookie\n\t\t * https://borlabs.io/borlabs-cookie/\n\t\t */\n\t\tif (cookie = wpm.getCookie(\"borlabs-cookie\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie?.consents?.statistics\n\t\t\twpmConsentValues.categories.ads = !!cookie?.consents?.marketing\n\t\t\twpmConsentValues.visitorHasChosen = true\n\t\t\twpmConsentValues.pixels = [...cookie?.consents?.statistics || [], ...cookie?.consents?.marketing || []]\n\t\t\twpmConsentValues.mode = \"pixel\"\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Complianz Cookie\n\t\t * https://wordpress.org/plugins/complianz-gdpr/\n\t\t */\n\n\t\tif (cookie = getComplianzCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (free version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"cookie_notice_accepted\")) {\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (pro version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"hu-consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie.categories[\"3\"]\n\t\t\twpmConsentValues.categories.ads = !!cookie.categories[\"4\"]\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * CookieYes, GDPR Cookie Consent (Cookie Law Info)\n\t\t * https://wordpress.org/plugins/cookie-law-info/\n\t\t */\n\n\t\tif (cookie = getCookieLawInfoCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen === true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * GDPR Cookie Compliance Plugin by Moove Agency\n\t\t * https://wordpress.org/plugins/gdpr-cookie-compliance/\n\t\t *\n\t\t * TODO write documentation on how to set up the plugin in order for this to work properly\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"moove_gdpr_popup\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.thirdparty === \"1\"\n\t\t\twpmConsentValues.categories.ads = cookie.advanced === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * WP AutoTerms\n\t\t * https://wordpress.org/plugins/auto-terms-of-service-and-privacy-policy/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"wpautoterms-cookies-notice\")) {\n\n\t\t\tif (cookie !== \"1\") return\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Usercentrics\n\t\t *\n\t\t * https://usercentrics.com/\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api?id=getservicesbaseinfo\n\t\t */\n\n\t\tif (window.localStorage && window.localStorage.getItem(\"uc_settings\")) {\n\n\t\t\tconsole.log(\"Usercentrics settings detected\")\n\n\t\t\tif (typeof UC_UI === \"undefined\") {\n\n\t\t\t\t// register event to block unblock after UC_UI library is loaded\n\t\t\t\twindow.addEventListener(\"UC_UI_INITIALIZED\", function (event) {\n\t\t\t\t\twpm.ucUiProcessConsent()\n\t\t\t\t})\n\n\t\t\t\t// Don't continue because in here the UC_UI library is not loaded yet\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\twpm.ucUiProcessConsent()\n\t\t}\n\n\t\t/**\n\t\t * OneTrust\n\t\t *\n\t\t * https://www.onetrust.com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"OptanonConsent\")) {\n\n\t\t\t// console.log(\"OneTrust settings detected\")\n\n\t\t\tlet params = new URLSearchParams(cookie)\n\t\t\tlet groups = params.get(\"groups\").split(\",\")\n\n\t\t\t// Groups is an array like this ['1:1', '2:0', '3:1', '4:1']. Make it an object with key value pairs\n\t\t\tlet groupsObject = {}\n\t\t\tgroups.forEach((group) => {\n\n\t\t\t\tlet groupArray = group.split(\":\")\n\t\t\t\tgroupsObject[groupArray[0]] = groupArray[1]\n\t\t\t})\n\n\t\t\t// group mapping\n\t\t\t// 1 = necessary\n\t\t\t// 2 = analytics\n\t\t\t// 3 = functional\n\t\t\t// 4 = ads\n\n\t\t\twpmConsentValues.categories.analytics = groubsObject[\"2\"] === \"1\"\n\t\t\twpmConsentValues.categories.ads = groupsObject[\"4\"] === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Only run after having made sure that the UC_UI library is loaded\n\twpm.ucUiProcessConsent = function () {\n\n\t\tif (typeof UC_UI === \"undefined\") return\n\n\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tconst ucStatisticsSlug = UC_UI.getSettingsLabels().categories.filter(data => data.label === \"Statistics\")[0].slug\n\n\t\tpmw.consentAdjustSelectively(\n\t\t\t{\n\t\t\t\tanalytics: !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === ucStatisticsSlug && data.consent.status === false).length > 0,\n\t\t\t\tads : !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === \"marketing\" && data.consent.status === false).length > 0,\n\t\t\t},\n\t\t)\n\t}\n\n\twpm.updateConsentCookieValues()\n\n\twpm.setConsentDefaultValuesToExplicit = () => {\n\t\twpmConsentValues.categories = {\n\t\t\tanalytics: false,\n\t\t\tads : false,\n\t\t}\n\t}\n\n\twpm.canIFire = (category, pixelName) => {\n\n\t\tlet canIFireMode\n\n\t\tif (\"category\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = !!wpmConsentValues.categories[category]\n\t\t} else if (\"pixel\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(pixelName)\n\n\t\t\t// If a user sets \"bing-ads\" in Borlabs Cookie instead of\n\t\t\t// \"microsoft-ads\" in the Borlabs settings, we need to check\n\t\t\t// for that too.\n\t\t\tif (false === canIFireMode && \"microsoft-ads\" === pixelName) {\n\t\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(\"bing-ads\")\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid consent mode in wpmConsentValues\")\n\t\t\tcanIFireMode = false\n\t\t}\n\n\t\tif (canIFireMode) {\n\t\t\treturn true\n\t\t} else {\n\t\t\tif (true || wpm.urlHasParameter(\"debugConsentMode\")) {\n\t\t\t\twpm.logPreventedPixelLoading(pixelName, category)\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.logPreventedPixelLoading = (pixelName, category) => {\n\n\t\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent) {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)\")\n\t\t} else {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)\")\n\t\t}\n\t}\n\n\t/**\n\t * Runs through each script in <head> and blocks / unblocks it according to the plugin settings\n\t * and user consent.\n\t */\n\n\t// https://stackoverflow.com/q/65453565/4688612\n\twpm.scriptTagObserver = new MutationObserver((mutations) => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif ($(node).data(\"wpm-cookie-category\")) {\n\n\t\t\t\t\t\t// If the pixel category has been approved > unblock\n\t\t\t\t\t\t// If the pixel belongs to more than one category, then unblock if one of the categories has been approved\n\t\t\t\t\t\t// If no category has been approved, but the Google Consent Mode is active, then only unblock the Google scripts\n\n\t\t\t\t\t\tif (wpm.shouldScriptBeActive(node)) {\n\t\t\t\t\t\t\twpm.unblockScript(node)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.blockScript(node)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\twpm.scriptTagObserver.observe(document.head, {childList: true, subtree: true})\n\t// jQuery(document).on(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\tdocument.addEventListener(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\n\twpm.shouldScriptBeActive = node => {\n\n\t\tif (\n\t\t\twpmDataLayer.shop.cookie_consent_mgmt.explicit_consent ||\n\t\t\twpmConsentValues.visitorHasChosen\n\t\t) {\n\n\t\t\tif (wpmConsentValues.mode === \"category\" && $(node).data(\"wpm-cookie-category\").split(\",\").some(element => wpmConsentValues.categories[element])) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && wpmConsentValues.pixels.includes($(node).data(\"wpm-pixel-name\"))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && $(node).data(\"wpm-pixel-name\") === \"google\" && [\"google-analytics\", \"google-ads\"].some(element => wpmConsentValues.pixels.includes(element))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmDataLayer?.pixels?.google?.consent_mode?.active && $(node).data(\"wpm-pixel-name\") === \"google\") {\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\n\twpm.unblockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tlet wpmSrc = $(scriptNode).data(\"wpm-src\")\n\t\tif (wpmSrc) $(scriptNode).attr(\"src\", wpmSrc)\n\n\t\tscriptNode.type = \"text/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.blockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tif ($(scriptNode).attr(\"src\")) $(scriptNode).removeAttr(\"src\")\n\t\tscriptNode.type = \"blocked/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\t}\n\n\twpm.unblockAllScripts = (analytics = true, ads = true) => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\twpm.setConsentValueCategories(analytics, ads)\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.unblockSelectedPixels = () => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.explicitConsentStateAlreadySet = () => {\n\n\t\tif (wpmConsentValues.explicitConsentStateAlreadySet) {\n\t\t\treturn true\n\t\t} else {\n\t\t\twpmConsentValues.explicitConsentStateAlreadySet = true\n\t\t}\n\t}\n\n\n\t/**\n\t * Block or unblock scripts for each CMP immediately after cookie consent has been updated\n\t * by the visitor.\n\t */\n\n\t/**\n\t * Borlabs Cookie\n\t * If visitor accepts cookies in Borlabs Cookie unblock the scripts\n\t */\n\tdocument.addEventListener(\"borlabs-cookie-consent-saved\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\tif (wpmConsentValues.mode === \"pixel\") {\n\n\t\t\twpm.unblockSelectedPixels()\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.pixels.includes(\"google-analytics\"), wpmConsentValues.pixels.includes(\"google-ads\"))\n\t\t} else {\n\n\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t}\n\t})\n\n\t/**\n\t * Cookiebot\n\t * \tIf visitor accepts cookies in Cookiebot unblock the scripts\n\t * \thttps://www.cookiebot.com/en/developer/\n\t */\n\tdocument.addEventListener(\"CookiebotOnAccept\", () => {\n\t\tif (Cookiebot.consent.statistics) wpmConsentValues.categories.analytics = true\n\t\tif (Cookiebot.consent.marketing) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\n\t}, false)\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/article/20-custom-events\n\t */\n\t// jQuery(document).on(\"CookieScriptAccept\", e => {\n\tdocument.addEventListener(\"CookieScriptAccept\", e => {\n\n\t\tif (e.detail.categories.includes(\"performance\")) wpmConsentValues.categories.analytics = true\n\t\tif (e.detail.categories.includes(\"targeting\")) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/\n\t */\n\t// jQuery(document).on(\"CookieScriptAcceptAll\", () => {\n\tdocument.addEventListener(\"CookieScriptAcceptAll\", () => {\n\n\t\twpm.setConsentValueCategories(true, true)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t})\n\n\t/**\n\t * Complianz Cookie\n\t *\n\t * If visitor accepts cookies in Complianz unblock the scripts\n\t */\n\n\twpm.cmplzStatusChange = (cmplzConsentData) => {\n\n\t\tif (cmplzConsentData.detail.categories.includes(\"statistics\")) wpm.updateConsentCookieValues(true, null)\n\t\tif (cmplzConsentData.detail.categories.includes(\"marketing\")) wpm.updateConsentCookieValues(null, true)\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t}\n\n\t// jQuery(document).on(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\t// jQuery(document).on(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\n\t// Cookie Compliance by hu-manity.co (free and pro)\n\t// If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (free version)\n\t// https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t// jQuery(document).on(\"setCookieNotice\", () => {\n\tdocument.addEventListener(\"setCookieNotice\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Compliance by hu-manity.co (free and pro)\n\t * If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (pro version)\n\t * https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t * Because Cookie Notice has no documented API or event that is being triggered on consent save or update\n\t * we have to solve this by using a mutation observer.\n\t *\n\t * @type {MutationObserver}\n\t */\n\n\twpm.huObserver = new MutationObserver(mutations => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif (node.id === \"hu\") {\n\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\").on(\"click\", function () {\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\") in pure JavaScript\n\t\t\t\t\t\tdocument.querySelector(\".hu-cookies-save\").addEventListener(\"click\", () => {\n\t\t\t\t\t\t\twpm.updateConsentCookieValues()\n\t\t\t\t\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\tif (window.hu) {\n\t\twpm.huObserver.observe(document.documentElement || document.body, {childList: true, subtree: true})\n\t}\n\n\t/**\n\t * Usercentrics Event Listeners\n\t *\n\t * https://docs.usercentrics.com/#/v2-events?id=usage-as-window-event\n\t */\n\n\twindow.addEventListener(\"ucEvent\", function (e) {\n\t\tif (e.detail && e.detail.event == \"consent_status\") {\n\t\t\t// check for consent status of service \"Google Ads Remarketing\"\n\t\t\tif (e.detail[\"Google Ads Remarketing\"] === true) {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has consent\")\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has no consent\")\n\t\t\t}\n\t\t}\n\t})\n\n\t// https://docs.usercentrics.com/#/v2-events?id=uc_ui_cmp_event\n\twindow.addEventListener(\"UC_UI_CMP_EVENT\", function (event) {\n\n\t\tif (event.detail.type === \"ACCEPT_ALL\") {\n\t\t\t// console.log('accept all');\n\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tif (event.detail.type === \"DENY_ALL\") {\n\t\t\tpmw.consentRevokeAll()\n\t\t}\n\n\t\tif (event.detail.type === \"SAVE\") {\n\t\t\tconsole.log(\"event.detail\", event.detail)\n\t\t}\n\t})\n\n\n\t/**\n\t * OneTrust Event Listeners\n\t *\n\t * CookiePro by OneTrust doesn't emit any events when the user accepts or declines cookies.\n\t */\n\n\t// There are two accept all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\"#accept-recommended-btn-handler, #onetrust-accept-btn-handler\").on(\"click\", function () {\n\n\t\t// If OneTrust is not loaded, return\n\t\tif (typeof window.OneTrust === \"undefined\") return\n\n\t\tpmw.consentAcceptAll()\n\t})\n\n\t// There are two revoke all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\".ot-pc-refuse-all-handler, #onetrust-reject-all-handler\").on(\"click\", function () {\n\t\tpmw.consentRevokeAll()\n\t})\n\n\t// There is one save button that saves mixed consent. It is in the settings window. We reload the page after saving to reflect the changes.\n\tjQuery(\".save-preference-btn-handler.onetrust-close-btn-handler\").on(\"click\", function () {\n\t\tlocation.reload()\n\n\t\t// OneTrust.OnConsentChanged(function (e) {\n\t\t// \tpmw.consentAdjustSelectively({\n\t\t// \t\tanalytics: e.detail.includes(\"2\"),\n\t\t// \t\tads : e.detail.includes(\"4\"),\n\t\t// \t})\n\t\t// })\n\t})\n\n\n}(window.wpm = window.wpm || {}, jQuery));\n\n\n(function (pmw, $, undefined) {\n\n\t/**\n\t * Pixel Manager Cookie Consent API\n\t */\n\n\t// Accept consent for all cookies\n\tpmw.consentAcceptAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(true, true, settings.duration)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t}\n\n\t// Accept consent selectively\n\tpmw.consentAdjustSelectively = (settings) => {\n\n\t\t// If settings.analytics is set, keep it, otherwise set it to wpm.getConsentValues().categories.analytics\n\t\tsettings.analytics = settings.analytics !== undefined ? settings.analytics : wpm.getConsentValues().categories.analytics\n\t\tsettings.ads = settings.ads !== undefined ? settings.ads : wpm.getConsentValues().categories.ads\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(settings.analytics, settings.ads, settings.duration)\n\t\twpm.unblockAllScripts(settings.analytics, settings.ads)\n\t\twpm.updateGoogleConsentMode(settings.analytics, settings.ads)\n\t}\n\n\t// Remove consent for all cookies\n\tpmw.consentRevokeAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\twpm.setConsentValueCategories(false, false)\n\t\tpmw.consentSetCookie(false, false, settings.duration)\n\t\twpm.updateGoogleConsentMode(false, false)\n\t}\n\n\t// Set a cookie called pmw_cookie_consent with the value of pmw_cookie_consent\n\t// and set the default expiration date to 1 year from now\n\tpmw.consentSetCookie = (analytics, ads, duration = 365) => {\n\t\twpm.setCookie(\"pmw_cookie_consent\", JSON.stringify({analytics, ads}), duration)\n\t}\n\n\t// Trigger an event once the PMW consent management has been loaded\n\tjQuery(document).trigger(\"pmw_cookie_consent_management_loaded\")\n\n}(window.pmw = window.pmw || {}, jQuery))\n","/**\n * remove_from_cart event\n *\n * Cannot be attached directly because the mini cart doesn't necessarily contain the remove button on page load.\n */\njQuery(document).on(\"click\", \".remove_from_cart_button, .remove\", (event) => {\n\n\t// console.log(\"remove_from_cart event\" + new Date().getTime())\n\n\ttry {\n\n\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"))\n\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\twpm.removeProductFromCart(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * begin_checkout event\n *\n * Cannot be attached directly because the mini cart doesn't necessarily contain the remove button on page load.\n */\nlet checkoutButtonClasses = [\n\t// \".checkout\",\n\t\".checkout-button\",\n\t\".cart-checkout-button\",\n\t\".button.checkout\",\n\t\".xoo-wsc-ft-btn-checkout\", // https://xootix.com/side-cart-for-woocommerce/\n\t\".elementor-button--checkout\",\n].join(\",\")\n\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).on(\"click init_checkout\", checkoutButtonClasses, () => {\n\n\t// console.log(\"init_checkout at: \" + new Date().getTime())\n\n\tjQuery(document).trigger(\"wpmBeginCheckout\")\n})\n\njQuery(document).on(\"updated_cart_totals\", () => {\n\tjQuery(document).trigger(\"wpmViewCart\")\n})\n\n/**\n * Set up PWM events\n */\n\n// track checkout option event: purchase click\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).on(\"wpmLoad\", (event) => {\n\tjQuery(document).on(\"payment_method_selected\", () => {\n\n\t\tif (false === wpm.paymentMethodSelected) {\n\t\t\twpm.fireCheckoutProgress(3)\n\t\t}\n\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t\twpm.paymentMethodSelected = true\n\t})\n})\n\n// populate the wpmDataLayer with the cart items\njQuery(document).on(\"wpmLoad\", () => {\n\n\ttry {\n\t\t// When a new session is initiated there are no items in the cart,\n\t\t// so we can save the call to get the cart items\n\t\tif (wpm.doesWooCommerceCartExist()) wpm.getCartItems()\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// get all add-to-cart= products from backend\njQuery(document).on(\"wpmLoad\", () => {\n\n\twpmDataLayer.products = wpmDataLayer.products || {}\n\n\t// scan page for add-to-cart= links\n\tlet productIds = wpm.getAddToCartLinkProductIds()\n\n\twpm.getProductsFromBackend(productIds)\n})\n\n/**\n * Save the referrer into a cookie\n */\n\njQuery(document).on(\"wpmLoad\", () => {\n\n\t// can't use session storage as we can't read it from the server\n\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\n\t\tif (document.referrer) {\n\t\t\tlet referrerUrl = new URL(document.referrer)\n\t\t\tlet referrerHostname = referrerUrl.hostname\n\n\t\t\tif (referrerHostname !== window.location.host) {\n\t\t\t\twpm.setCookie(\"wpmReferrer\", referrerHostname)\n\t\t\t}\n\t\t}\n\t}\n})\n\n\n/**\n * Create our own load event in order to better handle script flow execution when JS \"optimizers\" shuffle the code.\n */\njQuery(document).on(\"wpmLoad\", () => {\n\t// document.addEventListener(\"wpmLoad\", function () {\n\ttry {\n\t\tif (typeof wpmDataLayer != \"undefined\" && !wpmDataLayer?.wpmLoadFired) {\n\n\t\t\tjQuery(document).trigger(\"wpmLoadAlways\")\n\n\t\t\tif (wpmDataLayer?.shop) {\n\t\t\t\tif (\n\t\t\t\t\t\"product\" === wpmDataLayer.shop.page_type &&\n\t\t\t\t\t\"variable\" !== wpmDataLayer.shop.product_type &&\n\t\t\t\t\twpm.getMainProductIdFromProductPage()\n\t\t\t\t) {\n\t\t\t\t\tlet product = wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage())\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t\t} else if (\"product_category\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmCategory\")\n\t\t\t\t} else if (\"search\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmSearch\")\n\t\t\t\t} else if (\"cart\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewCart\")\n\t\t\t\t} else if (\"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer.order) {\n\t\t\t\t\tif (!wpm.isOrderIdStored(wpmDataLayer.order.id)) {\n\t\t\t\t\t\tjQuery(document).trigger(\"wpmOrderReceivedPage\")\n\t\t\t\t\t\twpm.writeOrderIdToStorage(wpmDataLayer.order.id, wpmDataLayer.order.key)\n\t\t\t\t\t\tif (typeof wpm.acrRemoveCookie === \"function\") wpm.acrRemoveCookie()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.user?.id && !wpm.hasLoginEventFired()) {\n\t\t\t\tjQuery(document).trigger(\"wpmLogin\")\n\t\t\t\twpm.setLoginEventFired()\n\t\t\t}\n\n\t\t\t// /**\n\t\t\t// * Load mini cart fragments into a wpm session storage key,\n\t\t\t// * after the document load event.\n\t\t\t// */\n\t\t\t// jQuery(document).ajaxSend(function (event, jqxhr, settings) {\n\t\t\t// \t// console.log('settings.url: ' + settings.url);\n\t\t\t//\n\t\t\t// \tif (settings.url.includes(\"get_refreshed_fragments\") && sessionStorage) {\n\t\t\t// \t\tif (!sessionStorage.getItem(\"wpmMiniCartActive\")) {\n\t\t\t// \t\t\tsessionStorage.setItem(\"wpmMiniCartActive\", JSON.stringify(true))\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// })\n\n\t\t\twpmDataLayer.wpmLoadFired = true\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\njQuery(document).on(\"wpmLoad\", async () => {\n\n\tif (\n\t\twindow.sessionStorage &&\n\t\twindow.sessionStorage.getItem(\"_pmw_endpoint_available\") &&\n\t\t!JSON.parse(window.sessionStorage.getItem(\"_pmw_endpoint_available\"))\n\t) {\n\t\tconsole.error(\"Pixel Manager for WooCommerce: REST endpoint is not available. Using admin-ajax.php instead.\")\n\t}\n})\n\n\n/**\n * Load all pixels\n */\njQuery(document).on(\"wpmPreLoadPixels\", () => {\n\n\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent && !wpm.explicitConsentStateAlreadySet()) {\n\t\twpm.updateConsentCookieValues(null, null, true)\n\t}\n\n\tjQuery(document).trigger(\"wpmLoadPixels\", {})\n})\n\n\n/**\n * All ecommerce events\n */\n\njQuery(document).on(\"wpmAddToCart\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToCart\",\n\t\tproduct: product,\n\t}\n\n\t// Facebook\n\t// If Facebook pixel is loaded, add Facebook server to server event data to the payload\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToCart\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t// TikTok\n\t// https://ads.tiktok.com/gateway/docs/index?identify_key=c0138ffadd90a955c1f0670a56fe348d1d40680b3c89461e09f78ed26785164b&language=ENGLISH&doc_id=1739585702922241#item-link-Adding%20parameters%20to%20event%20code\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"AddToCart\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToCart\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmBeginCheckout\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"beginCheckout\",\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"InitiateCheckout\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (wpmDataLayer?.cart && !jQuery.isEmptyObject(wpmDataLayer.cart)) {\n\t\t\tpayload.facebook.custom_data = {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tcontent_ids : wpm.fbGetContentIdsFromCart(),\n\t\t\t\tvalue : wpm.getCartValue(),\n\t\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\t}\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"InitiateCheckout\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideBeginCheckout\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmAddToWishlist\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToWishlist\",\n\t\tproduct: product,\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToWishlist\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"viewItem\",\n\t\tproduct: product,\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"ViewContent\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.facebook.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"ViewContent\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.tiktok.properties = {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideViewItem\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmSearch\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"search\",\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Search\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tsearch_string: wpm.getSearchTermFromUrl(),\n\t\t\t},\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"Search\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tquery: wpm.getSearchTermFromUrl(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideSearch\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmPlaceOrder\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"placeOrder\",\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"PlaceAnOrder\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientPlaceOrder\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmOrderReceivedPage\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"orderReceived\",\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Purchase\",\n\t\t\tevent_id : wpmDataLayer.order.id.toString(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tcontent_ids : wpm.facebookContentIds(),\n\t\t\t},\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"CompletePayment\",\n\t\t\tevent_id : wpmDataLayer.order.id.toString(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcontents: wpm.getTikTokOrderItemIds(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideOrderReceivedPage\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// ! No server-to-server event is sent for this event because it is compiled and sent from the server directly\n})\n\n\n\n\n\n","/**\n * Register event listeners\n */\n\n\n/**\n * add_to_cart event\n *\n * WC is inconsistent with events that emit add-to-cart events.\n * adding_to_cart and added_to_are legacy events. Also, they only work\n * on Ajax buttons on shop pages.\n */\n\nconst addToCartSelectors = [\n\t\".add_to_cart_button:not(.product_type_variable)\",\n\t\".ajax_add_to_cart\",\n\t\".single_add_to_cart_button\",\n].join(\",\")\n\njQuery(addToCartSelectors).on(\"click adding_to_cart\", (event) => {\n\t// console log current time\n\t// console.log(\"add_to_cart event fired at: \" + new Date().getTime())\n\n\ttry {\n\n\t\t// console.log(\"add_to_cart event detected\")\n\n\t\tlet quantity = 1,\n\t\t\tproductId\n\n\t\t// Only process on product pages\n\t\tif (wpmDataLayer.shop.page_type === \"product\") {\n\n\t\t\t// First process related and upsell products\n\t\t\tif (typeof jQuery(event.currentTarget).attr(\"href\") !== \"undefined\" && jQuery(event.currentTarget).attr(\"href\").includes(\"add-to-cart\")) {\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\")\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t\t// If is simple product\n\t\t\tif (wpmDataLayer.shop.product_type === \"simple\") {\n\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\tproductId = jQuery(event.currentTarget).val()\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t\t// If is variable product or variable-subscription\n\t\t\tif ([\"variable\", \"variable-subscription\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\tproductId = jQuery(\"[name='variation_id']\").val()\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t\t// If is grouped product\n\t\t\tif (wpmDataLayer.shop.product_type === \"grouped\") {\n\n\t\t\t\tjQuery(\".woocommerce-grouped-product-list-item\").each((index, element) => {\n\n\t\t\t\t\tquantity = Number(jQuery(element).find(\".input-text.qty\").val())\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\t\tlet classes = jQuery(element).attr(\"class\")\n\t\t\t\t\tproductId = wpm.getPostIdFromString(classes)\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// If is bundle product\n\t\t\tif (wpmDataLayer.shop.product_type === \"bundle\") {\n\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\tproductId = jQuery(\"input[name=add-to-cart]\").val()\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\")\n\t\t\twpm.addProductToCart(productId, quantity)\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * If someone clicks anywhere on a custom /?add-to-cart=123 link\n * trigger the add to cart event\n */\n\n// jQuery(document).one(\"click\", \"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\", (event) => {\njQuery(\"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\").one(\"click\", (event) => {\n\n\ttry {\n\t\tif (jQuery(event.target).closest(\"a\").attr(\"href\")) {\n\n\t\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"), window.location.origin)\n\n\t\t\tif (url.searchParams.has(\"add-to-cart\")) {\n\n\t\t\t\tlet productId = url.searchParams.get(\"add-to-cart\")\n\t\t\t\twpm.addProductToCart(productId, 1)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select item event\n// jQuery(document).on(\"click\", \".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\", (event) => {\njQuery(\".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\").on(\"click\", (event) => {\n\n\ttry {\n\n\t\t/**\n\t\t * On some pages the event fires multiple times, and on product pages\n\t\t * even on page load. Using e.stopPropagation helps to prevent this,\n\t\t * but I don't know why. We don't even have to use this, since only a real\n\t\t * product click yields a valid productId. So we filter the invalid click\n\t\t * events out later down in the code. I'll keep it that way because this is\n\t\t * the most compatible way across shops.\n\t\t *\n\t\t * e.stopPropagation();\n\t\t * */\n\n\t\tlet productId = jQuery(event.currentTarget).nextAll(\".wpmProductId:first\").data(\"id\")\n\n\t\t/**\n\t\t * On product pages, for some reason, the click event is triggered on the main product on page load.\n\t\t * In that case no ID is found. But we can discard it, since we only want to trigger the event on\n\t\t * related products, which are found below.\n\t\t */\n\n\t\tif (productId) {\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmSelectContentGaUa\", product)\n\t\t\t\tjQuery(document).trigger(\"wpmSelectItem\", product)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// checkout_progress event\n// track checkout option event: entered valid billing email\n// jQuery(document).on(\"input\", \"#billing_email\", (event) => {\njQuery(\"#billing_email\").on(\"input\", (event) => {\n\n\tif (wpm.isEmail(jQuery(event.currentTarget).val())) {\n\t\t// wpm.fireCheckoutOption(2);\n\t\twpm.fireCheckoutProgress(2)\n\t\twpm.emailSelected = true\n\t}\n})\n\n\n/**\n * Place order button\n *\n * Track checkout option event: purchase click\n * https://stackoverflow.com/a/34112407/4688612\n * jQuery(document).one(\"click\", \"#place_order\", () => {\n *\n * Has to be hooked after document ready !\n */\njQuery(\"form.checkout\").on(\"checkout_place_order_success\", () => {\n\n\t// console log current time\n\t// console.log(\"checkout_place_order_success event fired at: \" + new Date().getTime())\n\n\tif (false === wpm.emailSelected) {\n\t\twpm.fireCheckoutProgress(2)\n\t}\n\n\tif (false === wpm.paymentMethodSelected) {\n\t\twpm.fireCheckoutProgress(3)\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t}\n\n\twpm.fireCheckoutProgress(4)\n\n\tjQuery(document).trigger(\"wpmPlaceOrder\", {})\n})\n\n/**\n * Update cart event\n *\n * Has to be hooked after document ready !\n */\njQuery(\"[name='update_cart']\").on(\"click\", () => {\n\n\ttry {\n\t\tjQuery(\".cart_item\").each((index, element) => {\n\n\t\t\tlet url = new URL(jQuery(element).find(\".product-remove\").find(\"a\").attr(\"href\"))\n\t\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\t\tlet quantity = jQuery(element).find(\".qty\").val()\n\n\t\t\tif (quantity === 0) {\n\t\t\t\twpm.removeProductFromCart(productId)\n\t\t\t} else if (quantity < wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.removeProductFromCart(productId, wpmDataLayer.cart[productId].quantity - quantity)\n\t\t\t} else if (quantity > wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.addProductToCart(productId, quantity - wpmDataLayer.cart[productId].quantity)\n\t\t\t}\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t\twpm.getCartItemsFromBackend()\n\t}\n})\n\n// add_to_wishlist\njQuery(\".add_to_wishlist,.wl-add-to\").on(\"click\", event => {\n\n\ttry {\n\n\t\tlet productId\n\n\t\tif (jQuery(event.currentTarget).data(\"productid\")) { // for the WooCommerce wishlist plugin\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"productid\")\n\t\t} else if (jQuery(event.currentTarget).data(\"product-id\")) { // for the YITH wishlist plugin\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"product-id\")\n\t\t}\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\n\t\tjQuery(document).trigger(\"wpmAddToWishlist\", product)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * Called when the user selects all the required dropdowns / attributes\n *\n * Has to be hooked after document ready !\n *\n * https://stackoverflow.com/a/27849208/4688612\n * https://stackoverflow.com/a/65065335/4688612\n */\n\njQuery(\".single_variation_wrap\").on(\"show_variation\", (event, variation) => {\n\n\ttry {\n\t\tlet productId = wpm.getIdBasedOndVariationsOutputSetting(variation.variation_id)\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\twpm.triggerViewItemEventPrep(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * Called on variable products when no selection has been done yet\n * or when the visitor deselects his choice.\n *\n * Has to be hooked after document ready !\n */\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n//\n// \t\ttry {\n// \t\t\tlet classes = jQuery(\"body\").attr(\"class\")\n// \t\t\tlet productId = classes.match(/(postid-)(\\d+)/)[2]\n//\n// \t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n//\n// \t\t\t/**\n// \t\t\t * If we have a variable product with no preset,\n// \t\t\t * and variations output is enabled,\n// \t\t\t * then we send a viewItem event with the first\n// \t\t\t * variation we find for the parent.\n// \t\t\t * If variations output is disabled,\n// \t\t\t * we just send the parent ID.\n// \t\t\t *\n// \t\t\t * And if Facebook microdata is active, use the\n// \t\t\t * microdata product ID.\n// \t\t\t */\n//\n// \t\t\tif (\n// \t\t\t\t\"variable\" === wpmDataLayer.shop.product_type &&\n// \t\t\t\twpmDataLayer?.general?.variationsOutput\n// \t\t\t) {\n// \t\t\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n// \t\t\t\t\tif (\"parentId\" in product) {\n//\n// \t\t\t\t\t\tproductId = product.id\n// \t\t\t\t\t\tbreak\n// \t\t\t\t\t}\n// \t\t\t\t}\n//\n// \t\t\t\tif (wpmDataLayer?.pixels?.facebook?.microdata_product_id) {\n// \t\t\t\t\tproductId = wpmDataLayer.pixels.facebook.microdata_product_id\n// \t\t\t\t}\n// \t\t\t}\n//\n// \t\t\t// console.log(\"hmm\")\n// \t\t\twpm.triggerViewItemEventPrep(productId)\n//\n// \t\t} catch (e) {\n// \t\t\tconsole.error(e)\n// \t\t}\n// \t})\n// })\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n// \t\tjQuery(document).trigger(\"wpmviewitem\")\n// \t})\n// })\n","/**\n * Create a wpm namespace under which all functions are declared\n */\n\n// https://stackoverflow.com/a/5947280/4688612\n\n(function (wpm, $, undefined) {\n\n\tconst wpmDeduper = {\n\t\tkeyName : \"_wpm_order_ids\",\n\t\tcookieExpiresDays: 365,\n\t}\n\n\tconst wpmRestSettings = {\n\t\t// cookiesAvailable : '_wpm_cookies_are_available',\n\t\tcookiePmwRestEndpointAvailable: \"_pmw_endpoint_available\",\n\t\trestEndpointPost : \"pmw/v1/test/\",\n\t\trestFails : 0,\n\t\trestFailsThreshold : 10,\n\t}\n\n\twpm.emailSelected = false\n\twpm.paymentMethodSelected = false\n\n\t// wpm.checkIfCookiesAvailable = function () {\n\t//\n\t// // read the cookie if previously set, if it is return true, otherwise continue\n\t// if (wpm.getCookie(wpmRestSettings.cookiesAvailable)) {\n\t// return true;\n\t// }\n\t//\n\t// // set the cookie for the session\n\t// Cookies.set(wpmRestSettings.cookiesAvailable, true);\n\t//\n\t// // read cookie, true if ok, false if not ok\n\t// return !!wpm.getCookie(wpmRestSettings.cookiesAvailable);\n\t// }\n\n\twpm.useRestEndpoint = () => {\n\n\t\t// only if sessionStorage is available\n\n\t\t// only if REST API endpoint is generally accessible\n\t\t// check in sessionStorage if we checked before and return answer\n\t\t// otherwise check if the endpoint is available, save answer in sessionStorage and return answer\n\n\t\t// only if not too many REST API errors happened\n\n\t\treturn wpm.isSessionStorageAvailable() &&\n\t\t\twpm.isRestEndpointAvailable() &&\n\t\t\twpm.isBelowRestErrorThreshold()\n\t}\n\n\twpm.isBelowRestErrorThreshold = () => window.sessionStorage.getItem(wpmRestSettings.restFails) <= wpmRestSettings.restFailsThreshold\n\n\twpm.isRestEndpointAvailable = async () => {\n\n\t\tif (window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable)) {\n\t\t\treturn JSON.parse(window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable))\n\t\t} else {\n\t\t\treturn await wpm.testEndpoint()\n\t\t}\n\t}\n\n\twpm.isSessionStorageAvailable = () => !!window.sessionStorage\n\n\t// Test the endpoint by sending a POST request\n\twpm.testEndpoint = async (\n\t\turl = wpm.root + wpmRestSettings.restEndpointPost,\n\t\tcookieName = wpmRestSettings.cookiePmwRestEndpointAvailable,\n\t) => {\n\n\t\tlet response = await fetch(url, {\n\t\t\tmethod : \"POST\",\n\t\t\tmode : \"cors\",\n\t\t\tcache : \"no-cache\",\n\t\t\tkeepalive: true,\n\t\t})\n\n\t\tif (response.status === 200) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(true))\n\t\t\treturn true\n\t\t} else if (response.status === 404) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t} else if (response.status === 0) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isWpmRestEndpointAvailable = (cookieName = wpmRestSettings.cookiePmwRestEndpointAvailable) => !!wpm.getCookie(cookieName)\n\n\twpm.writeOrderIdToStorage = (orderId, orderKey, source = \"thankyou_page\", expireDays = 365) => {\n\n\t\t// save the order ID in the browser storage\n\n\t\tif (!window.Storage) {\n\t\t\tlet expiresDate = new Date()\n\t\t\texpiresDate.setDate(expiresDate.getDate() + wpmDeduper.cookieExpiresDays)\n\n\t\t\tlet ids = []\n\t\t\tif (checkCookie()) {\n\t\t\t\tids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t}\n\n\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\tids.push(orderId)\n\t\t\t\tdocument.cookie = wpmDeduper.keyName + \"=\" + JSON.stringify(ids) + \";expires=\" + expiresDate.toUTCString()\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (localStorage.getItem(wpmDeduper.keyName) === null) {\n\t\t\t\tlet ids = []\n\t\t\t\tids.push(orderId)\n\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\n\t\t\t} else {\n\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\t\tids.push(orderId)\n\t\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof wpm.storeOrderIdOnServer === \"function\" && wpmDataLayer.orderDeduplication) {\n\t\t\twpm.storeOrderIdOnServer( orderKey, source)\n\t\t}\n\t}\n\n\tfunction checkCookie() {\n\t\tlet key = wpm.getCookie(wpmDeduper.keyName)\n\t\treturn key !== \"\"\n\t}\n\n\twpm.isOrderIdStored = orderId => {\n\n\t\tif (wpmDataLayer.orderDeduplication) {\n\n\t\t\tif (!window.Storage) {\n\n\t\t\t\tif (checkCookie()) {\n\t\t\t\t\tlet ids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (localStorage.getItem(wpmDeduper.keyName) !== null) {\n\t\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\"order duplication prevention: off\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isEmail = email => {\n\n\t\t// https://emailregex.com/\n\n\t\tlet regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n\t\treturn regex.test(email)\n\t}\n\n\twpm.removeProductFromCart = (productId, quantityToRemove = null) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet quantity\n\n\t\t\tif (quantityToRemove == null) {\n\t\t\t\tquantity = wpmDataLayer.cart[productId].quantity\n\t\t\t} else {\n\t\t\t\tquantity = quantityToRemove\n\t\t\t}\n\n\t\t\tif (wpmDataLayer.cart[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmRemoveFromCart\", product)\n\n\t\t\t\tif (quantityToRemove == null || wpmDataLayer.cart[productId].quantity === quantityToRemove) {\n\n\t\t\t\t\tdelete wpmDataLayer.cart[productId]\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t} else {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity - quantity\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\t// console.log('getting cart from back end');\n\t\t\t// wpm.getCartItemsFromBackend();\n\t\t\t// console.log('getting cart from back end done');\n\t\t}\n\t}\n\n\twpm.getIdBasedOndVariationsOutputSetting = productId => {\n\n\t\ttry {\n\t\t\tif (wpmDataLayer?.general?.variationsOutput) {\n\n\t\t\t\treturn productId\n\t\t\t} else {\n\t\t\t\tif (wpmDataLayer.products[productId].isVariation) {\n\n\t\t\t\t\treturn wpmDataLayer.products[productId].parentId\n\t\t\t\t} else {\n\n\t\t\t\t\treturn productId\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// add_to_cart\n\twpm.addProductToCart = (productId, quantity) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer?.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmAddToCart\", product)\n\n\t\t\t\t// add product to cart wpmDataLayer['cart']\n\n\t\t\t\t// if the product already exists in the object, only add the additional quantity\n\t\t\t\t// otherwise create that product object in the wpmDataLayer['cart']\n\t\t\t\tif (wpmDataLayer?.cart[productId]) {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity + quantity\n\t\t\t\t} else {\n\n\t\t\t\t\tif (!(\"cart\" in wpmDataLayer)) wpmDataLayer.cart = {}\n\n\t\t\t\t\twpmDataLayer.cart[productId] = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\t\t\t\t}\n\n\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\n\t\t\t// fallback if wpmDataLayer.cart and wpmDataLayer.products got out of sync in case cart caching has an issue\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\twpm.getCartItems = () => {\n\n\t\tif (sessionStorage) {\n\t\t\tif (!sessionStorage.getItem(\"wpmDataLayerCart\") || wpmDataLayer.shop.page_type === \"order_received_page\") {\n\t\t\t\tsessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify({}))\n\t\t\t} else {\n\t\t\t\twpm.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem(\"wpmDataLayerCart\")))\n\t\t\t}\n\t\t} else {\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\t// get all cart items from the backend\n\twpm.getCartItemsFromBackend = () => {\n\t\ttry {\n\n\t\t\t/**\n\t\t\t * Can't use a REST API endpoint, as the cart session will not be loaded if the\n\t\t\t * endpoint is called.\n\t\t\t *\n\t\t\t * https://wordpress.org/support/topic/wc-cart-is-null-in-custom-rest-api/#post-11442843\n\t\t\t */\n\n\t\t\t/**\n\t\t\t * Get the cart items from the backend the data object using fetch API\n\t\t\t * and log success or error messages\n\t\t\t * and url encoded data\n\t\t\t */\n\t\t\tfetch(wpm.ajax_url, {\n\t\t\t\tmethod : \"POST\",\n\t\t\t\tcache : \"no-cache\",\n\t\t\t\tbody : new URLSearchParams({action: \"pmw_get_cart_items\"}),\n\t\t\t\tkeepalive: true,\n\t\t\t})\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(data => {\n\n\t\t\t\t\tif (data.success) {\n\n\t\t\t\t\t\tif (!data.data[\"cart\"]) data.data[\"cart\"] = {}\n\n\t\t\t\t\t\twpm.saveCartObjectToDataLayer(data.data[\"cart\"])\n\n\t\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(data.data[\"cart\"]))\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// get productIds from the backend\n\twpm.getProductsFromBackend = async productIds => {\n\n\t\tif (wpmDataLayer?.products) {\n\t\t\t// If productIds already exists as key in wpmDataLayer.products, remove it from the array\n\t\t\tproductIds = productIds.filter(productId => !(productId in wpmDataLayer.products))\n\t\t}\n\n\t\t// if no products IDs are in the object, don't try to get anything from the server\n\t\tif (!productIds || productIds.length === 0) return\n\n\t\ttry {\n\n\t\t\tlet response\n\n\t\t\tif (await wpm.isRestEndpointAvailable()) {\n\t\t\t\tresponse = await fetch(wpm.root + \"pmw/v1/products/\", {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\tcache : \"no-cache\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t},\n\t\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\t\tpageId : wpmDataLayer.general.pageId,\n\t\t\t\t\t\tproductIds: productIds,\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t} else {\n\n\t\t\t\t// Get the product details from the backend the data object using fetch API\n\t\t\t\t// and log success or error messages\n\t\t\t\t// and url encoded data\n\t\t\t\tresponse = await fetch(wpm.ajax_url, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tcache : \"no-cache\",\n\t\t\t\t\tbody : new URLSearchParams({\n\t\t\t\t\t\taction : \"pmw_get_product_ids\",\n\t\t\t\t\t\tproductIds: productIds,\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (response.ok) {\n\t\t\t\tlet responseData = await response.json()\n\t\t\t\tif (responseData.success) {\n\t\t\t\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, responseData.data)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.error(\"Error getting products from backend\")\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\n\t\treturn true\n\t}\n\n\twpm.saveCartObjectToDataLayer = cartObject => {\n\n\t\twpmDataLayer.cart = cartObject\n\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, cartObject)\n\t}\n\n\twpm.triggerViewItemEventPrep = async productId => {\n\n\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\twpm.triggerViewItemEvent(productId)\n\t\t} else {\n\t\t\tawait wpm.getProductsFromBackend([productId])\n\t\t\twpm.triggerViewItemEvent(productId)\n\t\t}\n\t}\n\n\twpm.triggerViewItemEvent = productId => {\n\n\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t}\n\n\twpm.triggerViewItemEventNoProduct = () => {\n\t\tjQuery(document).trigger(\"wpmViewItem\")\n\t}\n\n\twpm.fireCheckoutOption = (step, checkout_option = null, value = null) => {\n\n\t\tlet data = {\n\t\t\tstep : step,\n\t\t\tcheckout_option: checkout_option,\n\t\t\tvalue : value,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutOption\", data)\n\t}\n\n\twpm.fireCheckoutProgress = step => {\n\n\t\tlet data = {\n\t\t\tstep: step,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutProgress\", data)\n\t}\n\n\twpm.getPostIdFromString = string => {\n\n\t\ttry {\n\t\t\treturn string.match(/(post-)(\\d+)/)[2]\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.triggerViewItemList = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tjQuery(document).trigger(\"wpmViewItemList\", wpm.getProductDataForViewItemEvent(productId))\n\t}\n\n\twpm.getProductDataForViewItemEvent = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\ttry {\n\t\t\tif (wpmDataLayer.products[productId]) {\n\n\t\t\t\treturn wpm.getProductDetailsFormattedForEvent(productId)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getMainProductIdFromProductPage = () => {\n\n\t\ttry {\n\t\t\tif ([\"simple\", \"variable\", \"grouped\", \"composite\", \"bundle\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\t\t\t\treturn jQuery(\".wpmProductId:first\").data(\"id\")\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.viewItemListTriggerTestMode = target => {\n\n\t\tjQuery(target).css({\"position\": \"relative\"})\n\t\tjQuery(target).append(\"<div id=\\\"viewItemListTriggerOverlay\\\"></div>\")\n\t\tjQuery(target).find(\"#viewItemListTriggerOverlay\").css({\n\t\t\t\"z-index\" : \"10\",\n\t\t\t\"display\" : \"block\",\n\t\t\t\"position\" : \"absolute\",\n\t\t\t\"height\" : \"100%\",\n\t\t\t\"top\" : \"0\",\n\t\t\t\"left\" : \"0\",\n\t\t\t\"right\" : \"0\",\n\t\t\t\"opacity\" : wpmDataLayer.viewItemListTrigger.opacity,\n\t\t\t\"background-color\": wpmDataLayer.viewItemListTrigger.backgroundColor,\n\t\t})\n\t}\n\n\twpm.getSearchTermFromUrl = () => {\n\n\t\ttry {\n\t\t\tlet urlParameters = new URLSearchParams(window.location.search)\n\t\t\treturn urlParameters.get(\"s\")\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// we need this to track timeouts for intersection observers\n\tlet ioTimeouts = {}\n\n\twpm.observerCallback = (entries, observer) => {\n\n\t\tentries.forEach((entry) => {\n\n\t\t\ttry {\n\t\t\t\tlet productId\n\n\t\t\t\tlet elementId = jQuery(entry.target).data(\"ioid\")\n\n\t\t\t\t// Get the productId from next element, if wpmProductId is a sibling, like in Gutenberg blocks\n\t\t\t\t// otherwise go search in children, like in regular WC loop items\n\t\t\t\tif (jQuery(entry.target).next(\".wpmProductId\").length) {\n\t\t\t\t\t// console.log('test 1');\n\t\t\t\t\tproductId = jQuery(entry.target).next(\".wpmProductId\").data(\"id\")\n\t\t\t\t} else {\n\t\t\t\t\tproductId = jQuery(entry.target).find(\".wpmProductId\").data(\"id\")\n\t\t\t\t}\n\n\n\t\t\t\tif (!productId) throw Error(\"wpmProductId element not found\")\n\n\t\t\t\tif (entry.isIntersecting) {\n\n\t\t\t\t\tioTimeouts[elementId] = setTimeout(() => {\n\n\t\t\t\t\t\twpm.triggerViewItemList(productId)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) wpm.viewItemListTriggerTestMode(entry.target)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.repeat === false) observer.unobserve(entry.target)\n\t\t\t\t\t}, wpmDataLayer.viewItemListTrigger.timeout)\n\n\t\t\t\t} else {\n\n\t\t\t\t\tclearTimeout(ioTimeouts[elementId])\n\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) jQuery(entry.target).find(\"#viewItemListTriggerOverlay\").remove()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t})\n\t}\n\n\t// fire view_item_list only on products that have become visible\n\tlet io\n\tlet ioid = 0\n\tlet allIoElementsToWatch\n\n\tlet getAllElementsToWatch = () => {\n\n\t\tallIoElementsToWatch = jQuery(\".wpmProductId\")\n\t\t\t.map(function (i, elem) {\n\n\t\t\t\tif (\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"type-product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product-item-inner\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(elem).parent()\n\t\t\t\t} else if (\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"wc-block-grid__product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product-small\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"woocommerce-LoopProduct-link\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(this).prev()\n\t\t\t\t} else if (jQuery(elem).closest(\".product\").length) {\n\t\t\t\t\treturn jQuery(elem).closest(\".product\")\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\twpm.startIntersectionObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// enable view_item_list test mode from browser\n\t\t\tif (wpm.urlHasParameter(\"vildemomode\")) wpmDataLayer.viewItemListTrigger.testMode = true\n\n\t\t\t// set up intersection observer\n\t\t\tio = new IntersectionObserver(wpm.observerCallback, {\n\t\t\t\tthreshold: wpmDataLayer.viewItemListTrigger.threshold,\n\t\t\t})\n\n\t\t\tgetAllElementsToWatch()\n\n\t\t\tallIoElementsToWatch.each((i, elem) => {\n\n\t\t\t\tjQuery(elem[0]).data(\"ioid\", ioid++)\n\n\t\t\t\tio.observe(elem[0])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// watch DOM for new lazy loaded products and add them to the intersection observer\n\twpm.startProductsMutationObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// Pass in the target node, as well as the observer options\n\n\t\t\t// selects the most common parent node\n\t\t\t// https://stackoverflow.com/a/7648323/4688612\n\t\t\tlet productsNode = jQuery(\".wpmProductId:eq(0)\").parents().has(jQuery(\".wpmProductId:eq(1)\").parents()).first()\n\n\t\t\tif (productsNode.length) {\n\t\t\t\tproductsMutationObserver.observe(productsNode[0], {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// Create an observer instance\n\tlet productsMutationObserver = new MutationObserver(mutations => {\n\n\t\tmutations.forEach(mutation => {\n\t\t\tlet newNodes = mutation.addedNodes // DOM NodeList\n\t\t\tif (newNodes !== null) { // If there are new nodes added\n\t\t\t\tlet nodes = jQuery(newNodes) // jQuery set\n\t\t\t\tnodes.each(function () {\n\t\t\t\t\tif (\n\t\t\t\t\t\tjQuery(this).hasClass(\"type-product\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"product-small\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"wc-block-grid__product\")\n\t\t\t\t\t) {\n\t\t\t\t\t\t// check if the node has a child or sibling wpmProductId\n\t\t\t\t\t\t// if yes add it to the intersectionObserver\n\t\t\t\t\t\tif (hasWpmProductIdElement(this)) {\n\t\t\t\t\t\t\tjQuery(this).data(\"ioid\", ioid++)\n\t\t\t\t\t\t\tio.observe(this)\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\n\tlet hasWpmProductIdElement = elem =>\n\t\t!!(jQuery(elem).find(\".wpmProductId\").length ||\n\t\t\tjQuery(elem).siblings(\".wpmProductId\").length)\n\n\twpm.setCookie = (cookieName, cookieValue = \"\", expiryDays = null) => {\n\n\t\tif (expiryDays) {\n\n\t\t\tlet d = new Date()\n\t\t\td.setTime(d.getTime() + (expiryDays * 24 * 60 * 60 * 1000))\n\t\t\tlet expires = \"expires=\" + d.toUTCString()\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";\" + expires + \";path=/\"\n\t\t} else {\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";path=/\"\n\t\t}\n\t}\n\n\twpm.getCookie = cookieName => {\n\n\t\tlet name = cookieName + \"=\"\n\t\tlet decodedCookie = decodeURIComponent(document.cookie)\n\t\tlet ca = decodedCookie.split(\";\")\n\n\t\tfor (let i = 0; i < ca.length; i++) {\n\n\t\t\tlet c = ca[i]\n\n\t\t\twhile (c.charAt(0) == \" \") {\n\t\t\t\tc = c.substring(1)\n\t\t\t}\n\n\t\t\tif (c.indexOf(name) == 0) {\n\t\t\t\treturn c.substring(name.length, c.length)\n\t\t\t}\n\t\t}\n\n\t\treturn \"\"\n\t}\n\n\twpm.deleteCookie = cookieName => {\n\t\twpm.setCookie(cookieName, \"\", -1)\n\t}\n\n\twpm.getWpmSessionData = () => {\n\n\t\tif (window.sessionStorage) {\n\n\t\t\tlet data = window.sessionStorage.getItem(\"_wpm\")\n\n\t\t\tif (data !== null) {\n\t\t\t\treturn JSON.parse(data)\n\t\t\t} else {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t} else {\n\t\t\treturn {}\n\t\t}\n\t}\n\n\twpm.setWpmSessionData = data => {\n\t\tif (window.sessionStorage) {\n\t\t\twindow.sessionStorage.setItem(\"_wpm\", JSON.stringify(data))\n\t\t}\n\t}\n\n\twpm.storeOrderIdOnServer = async ( orderKey, source) => {\n\n\t\ttry {\n\n\t\t\tlet response\n\n\t\t\tif (await wpm.isRestEndpointAvailable()) {\n\n\t\t\t\tresponse = await fetch(wpm.root + \"pmw/v1/pixels-fired/\", {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\theaders : {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t\t\"X-WP-Nonce\" : wpm.nonce_wp_rest,\n\t\t\t\t\t},\n\t\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\t\t// order_id: orderId,\n\t\t\t\t\t\torder_key: orderKey,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t\t// nonce : wpm.pmw_nonce,\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t\tcache : \"no-cache\",\n\t\t\t\t})\n\n\t\t\t} else {\n\t\t\t\t// save the state in the database\n\n\t\t\t\t// Send the data object with ajax request\n\t\t\t\t// and log success or error using fetch API and url encoded\n\t\t\t\tresponse = await fetch(wpm.ajax_url, {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\tbody : new URLSearchParams({\n\t\t\t\t\t\taction : \"pmw_purchase_pixels_fired\",\n\t\t\t\t\t\t// order_id: orderId,\n\t\t\t\t\t\torder_key: orderKey,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t\tnonce_ajax : wpm.nonce_ajax,\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst responseJson = await response.json()\n\n\t\t\tif (responseJson.success) {\n\t\t\t\tconsole.log(\"wpm.storeOrderIdOnServer success\")\n\t\t\t} else {\n\t\t\t\tconsole.error(\"wpm.storeOrderIdOnServer error\", responseJson)\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getProductIdByCartItemKeyUrl = url => {\n\n\t\tlet searchParams = new URLSearchParams(url.search)\n\t\tlet cartItemKey = searchParams.get(\"remove_item\")\n\n\t\tlet productId\n\n\t\tif (wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"] === 0) {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"product_id\"]\n\t\t} else {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"]\n\t\t}\n\n\t\treturn productId\n\t}\n\n\twpm.getAddToCartLinkProductIds = () =>\n\t\tjQuery(\"a\").map(function () {\n\t\t\tlet href = jQuery(this).attr(\"href\")\n\n\t\t\tif (href && href.includes(\"?add-to-cart=\")) {\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) return matches[2]\n\t\t\t}\n\t\t}).get()\n\n\twpm.getProductDetailsFormattedForEvent = (productId, quantity = 1) => {\n\n\t\tlet product = {\n\t\t\tid : productId.toString(),\n\t\t\tdyn_r_ids : wpmDataLayer.products[productId].dyn_r_ids,\n\t\t\tname : wpmDataLayer.products[productId].name,\n\t\t\tlist_name : wpmDataLayer.shop.list_name,\n\t\t\tbrand : wpmDataLayer.products[productId].brand,\n\t\t\tcategory : wpmDataLayer.products[productId].category,\n\t\t\tvariant : wpmDataLayer.products[productId].variant,\n\t\t\tlist_position: wpmDataLayer.products[productId].position,\n\t\t\tquantity : quantity,\n\t\t\tprice : wpmDataLayer.products[productId].price,\n\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\tisVariable : wpmDataLayer.products[productId].isVariable,\n\t\t\tisVariation : wpmDataLayer.products[productId].isVariation,\n\t\t\tparentId : wpmDataLayer.products[productId].parentId,\n\t\t}\n\n\t\tif (product.isVariation) product[\"parentId_dyn_r_ids\"] = wpmDataLayer.products[productId].parentId_dyn_r_ids\n\n\t\treturn product\n\t}\n\n\twpm.setReferrerToCookie = () => {\n\n\t\t// can't use session storage as we can't read it from the server\n\t\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\t\t\twpm.setCookie(\"wpmReferrer\", document.referrer)\n\t\t}\n\t}\n\n\twpm.getReferrerFromCookie = () => {\n\n\t\tif (wpm.getCookie(\"wpmReferrer\")) {\n\t\t\treturn wpm.getCookie(\"wpmReferrer\")\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t}\n\n\twpm.getClidFromBrowser = (clidId = \"gclid\") => {\n\n\t\tlet clidCookieId\n\n\t\tclidCookieId = {\n\t\t\tgclid: \"_gcl_aw\",\n\t\t\tdclid: \"_gcl_dc\",\n\t\t}\n\n\t\tif (wpm.getCookie(clidCookieId[clidId])) {\n\n\t\t\tlet clidCookie = wpm.getCookie(clidCookieId[clidId])\n\t\t\tlet matches = clidCookie.match(/(GCL.[\\d]*.)(.*)/)\n\t\t\treturn matches[2]\n\t\t} else {\n\t\t\treturn \"\"\n\t\t}\n\t}\n\n\twpm.getUserAgent = () => navigator.userAgent\n\n\twpm.getViewPort = () => ({\n\t\twidth : Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n\t\theight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0),\n\t})\n\n\n\twpm.version = () => {\n\t\tconsole.log(wpmDataLayer.version)\n\t}\n\n\t/**\n\t * https://api.jquery.com/jquery.getscript/\n\t *\n\t * Switched back to jQuery.ajax as the fetch method on some sites returned a type error\n\t * Possible reasons are:\n\t * * CORS mismatch\n\t * * The user is using an ad blocker\n\t */\n\n\twpm.loadScriptAndCacheIt = url => {\n\n\t\t// Get and load the script using fetch API, if possible from cache, and return it without using eval\n\t\t// return fetch(url, {\n\t\t// \tmethod : \"GET\",\n\t\t// \tcache : \"default\",\n\t\t// \tkeepalive: true,\n\t\t// })\n\t\t// \t.then(response => {\n\t\t// \t\tif (response.ok) {\n\t\t// \t\t\t// console.log(\"response\", response)\n\t\t// \t\t\treturn response.text()\n\t\t// \t\t\t// console.log(\"wpm.loadScriptAndCacheIt success: \" + url)\n\t\t// \t\t} else {\n\t\t// \t\t\tthrow new Error(\"Network response was not ok: \" + url)\n\t\t// \t\t}\n\t\t// \t})\n\t\t// \t.then(script => {\n\t\t// \t\t// Execute the script\n\t\t// \t\t// console.error(\"executing script: \" + script)\n\t\t// \t\teval(script)\n\t\t// \t\t// console.log(\"executed script: \" + script)\n\t\t// \t})\n\t\t// \t.catch(e => {\n\t\t// \t\tconsole.error(e)\n\t\t// \t})\n\n\t\tlet options = {\n\t\t\tdataType: \"script\",\n\t\t\tcache : true,\n\t\t\turl : url,\n\t\t}\n\n\t\treturn jQuery.ajax(options)\n\t}\n\n\twpm.getOrderItemPrice = orderItem => (orderItem.total + orderItem.total_tax) / orderItem.quantity\n\n\twpm.hasLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\treturn data?.loginEventFired\n\t}\n\n\twpm.setLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\tdata[\"loginEventFired\"] = true\n\t\twpm.setWpmSessionData(data)\n\t}\n\n\twpm.wpmDataLayerExists = () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (typeof wpmDataLayer !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\twpm.jQueryExists = () => new Promise(resolve => {\n\t\t(function waitForjQuery() {\n\t\t\tif (typeof jQuery !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForjQuery, 100)\n\t\t})()\n\t})\n\n\twpm.pageLoaded = () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (\"complete\" === document.readyState) return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\twpm.pageReady = () => {\n\t\treturn new Promise(resolve => {\n\t\t\t(function waitForVar() {\n\t\t\t\tif (\"interactive\" === document.readyState || \"complete\" === document.readyState) return resolve()\n\t\t\t\tsetTimeout(waitForVar, 50)\n\t\t\t})()\n\t\t})\n\t}\n\n\twpm.isMiniCartActive = () => {\n\t\tif (window.sessionStorage) {\n\t\t\tfor (const [key, value] of Object.entries(window.sessionStorage)) {\n\t\t\t\tif (key.includes(\"wc_fragments\")) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.doesWooCommerceCartExist = () => document.cookie.includes(\"woocommerce_items_in_cart\")\n\n\twpm.urlHasParameter = parameter => {\n\t\tlet urlParams = new URLSearchParams(window.location.search)\n\t\treturn urlParams.has(parameter)\n\t}\n\n\t// https://stackoverflow.com/a/60606893/4688612\n\twpm.hashAsync = (algo, str) => {\n\t\treturn crypto.subtle.digest(algo, new TextEncoder(\"utf-8\").encode(str)).then(buf => {\n\t\t\treturn Array.prototype.map.call(new Uint8Array(buf), x => ((\"00\" + x.toString(16)).slice(-2))).join(\"\")\n\t\t})\n\t}\n\n\twpm.getCartValue = () => {\n\n\t\tlet value = 0\n\n\t\tif (wpmDataLayer?.cart) {\n\n\t\t\tfor (const key in wpmDataLayer.cart) {\n\t\t\t\t// content_ids.push(wpmDataLayer.products[key].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])\n\n\t\t\t\tlet product = wpmDataLayer.cart[key]\n\n\t\t\t\tvalue += product.quantity * product.price\n\t\t\t}\n\t\t}\n\n\t\treturn value\n\t}\n\n\t/**\n\t * Detect if the current URL contains at least one pattern\n\t *\n\t * @param patterns\n\t * @returns {boolean}\n\t */\n\twpm.doesUrlContainPatterns = patterns => {\n\n\t\tfor (const pattern of patterns) {\n\t\t\tif (new RegExp(pattern).test(window.location.href)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\t/**\n\t * Detect if the current URL contains at least one pattern that is on the tracking exclusion list\n\t *\n\t * https://www.linkedin.com/pulse/how-remove-google-robot-problem-via-gtm-facebook-pixel-hjelpdahl/\n\t * https://www.youtube.com/watch?v=b4I1ePZt8Z0\n\t *\n\t * @returns {boolean}\n\t */\n\twpm.excludeDomainFromTracking = () => {\n\n\t\tlet excludeDomains = [\n\t\t\t\"appspot.com\",\n\t\t\t\"translate.google.com\",\n\t\t]\n\n\t\tif (wpmDataLayer?.general?.excludeDomains) {\n\t\t\texcludeDomains = [...excludeDomains, ...wpmDataLayer.general.excludeDomains]\n\t\t}\n\n\t\t// Abort if URL contains excluded domains\n\t\tif (excludeDomains.some(domain => window.location.href.includes(domain))) {\n\t\t\tconsole.debug(\"Pixel Manager for WooCommerce: Aborted due to excluded domain\")\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\twpm.getRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\tlet jQueryReadyFired = false\n\n\tconst triggerDomReadyEvent = () => {\n\t\tif (jQueryReadyFired === false) jQuery(document).trigger(\"pmw:ready\")\n\t\tjQueryReadyFired = true\n\t}\n\n\tjQuery(document).on(\"ready\", () => {\n\t\ttriggerDomReadyEvent()\n\t})\n\n\tdocument.addEventListener(\"DOMContentLoaded\", () => {\n\t\ttriggerDomReadyEvent()\n\t})\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load all WPM functions\n *\n * Ignore event listeners. They need to be loaded after\n * we made sure that jQuery has been loaded.\n */\n\nrequire(\"./functions\")\nrequire(\"./cookie_consent\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// #endif\n","/**\n * After WPM is loaded\n * we first check if wpmDataLayer is loaded,\n * and as soon as it is, we load the pixels,\n * and as soon as the page load is complete,\n * we fire the wpmLoad event.\n *\n * @param {{pro:bool}} wpmDataLayer.version\n *\n * https://stackoverflow.com/a/25868457/4688612\n * https://stackoverflow.com/a/44093516/4688612\n */\n\nwpm.wpmDataLayerExists()\n\t.then(() => {\n\t\tconsole.log(\"Pixel Manager for WooCommerce: \" + (wpmDataLayer.version.pro ? \"Pro\" : \"Free\") + \" Version \" + wpmDataLayer.version.number + \" loaded\")\n\n\t\tif (wpm.excludeDomainFromTracking()) return\n\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t})\n\t.then(() => {\n\t\twpm.pageLoaded().then(() => {\n\t\t\tdocument.dispatchEvent(new Event(\"wpmLoad\"))\n\t\t})\n\t})\n\n\n/**\n * Run when page is ready\n */\n\n// wpm.pageReady().then(() => {\njQuery(document).on(\"pmw:ready\", () => {\n\n\t/**\n\t * Run as soon as wpm namespace is loaded\n\t */\n\n\twpm.wpmDataLayerExists()\n\t\t.then(() => {\n\t\t\t// watch for products visible in viewport\n\t\t\twpm.startIntersectionObserverToWatch()\n\n\t\t\t// watch for lazy loaded products\n\t\t\twpm.startProductsMutationObserverToWatch()\n\t\t})\n})\n\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\n * Load all essential scripts first\n */\n\nrequire(\"./wpm/functions_loader\")\n\n// Only load the event listeners after jQuery has been loaded for sure\nwpm.jQueryExists().then(function () {\n\n\tjQuery(document).on(\"pmw:ready\", () => {\n\t\trequire(\"./wpm/event_listeners_on_ready\")\n\t})\n\n\trequire(\"./wpm/event_listeners\")\n\n\t// require(\"./wpm/wc_hooks\")\n\n\trequire(\"./google/loader\")\n\trequire(\"./facebook/loader\")\n\trequire(\"./hotjar/loader\")\n\n\t/**\n\t * Load all premium scripts\n\t */\n\n\t// #if process.env.TIER === 'premium'\n// \trequire(\"./wpm/event_listeners_premium\")\n// \trequire(\"./microsoft-ads/loader\")\n// \trequire(\"./pinterest/loader\")\n// \trequire(\"./snapchat/loader\")\n// \trequire(\"./tiktok/loader\")\n// \trequire(\"./twitter/loader\")\n\t// #endif\n\n\n\t/**\n\t * Initiate WPM.\n\t *\n\t * It makes sure that the script flow gets executed correctly,\n\t * no matter how JS \"optimizers\" shuffle the code.\n\t */\n\n\trequire(\"./wpm/init\")\n})\n\n"],"names":["jQuery","document","on","wpmDataLayer","pixels","facebook","pixel_id","loaded","wpm","doesUrlContainPatterns","exclusion_patterns","canIFire","loadFacebookPixel","event","payload","fbq","custom_data","eventID","event_id","error","console","setFbUserData","$","undefined","fbUserData","f","window","b","e","n","callMethod","apply","arguments","queue","push","_fbq","version","t","createElement","async","src","s","getElementsByTagName","parentNode","insertBefore","data","isFbpSet","isFbAdvancedMatchingEnabled","getUserIdentifiersForFb","user","id","raw","external_id","order","user_id","email","em","billing_email_hashed","first_name","fn","billing_first_name","toLowerCase","last_name","ln","billing_last_name","phone","ph","billing_phone","replace","city","ct","billing_city","state","st","billing_state","postcode","zp","billing_postcode","country","billing_country","getFbRandomEventId","Math","random","toString","substring","getFbUserData","getFbUserDataFromBrowser","advanced_matching","getCookie","isValidFbp","fbp","isValidFbc","fbc","navigator","userAgent","client_user_agent","RegExp","test","fbGetProductDataForCapiEvent","product","content_type","content_name","name","content_ids","dyn_r_ids","dynamic_remarketing","id_type","value","parseFloat","quantity","price","currency","facebookContentIds","prodIds","key","item","Object","entries","items","general","variationsOutput","variation_id","String","products","trackCustomFacebookEvent","eventName","customData","eventId","trigger","event_name","user_data","event_source_url","location","href","fbGetContentIdsFromCart","cart","require","isEmptyObject","google","ads","conversionIds","status","googleConfigConditionsMet","isVariable","send_events_with_parent_ids","send_to","getGoogleAdsConversionIdentifiers","google_business_vertical","gtagLoaded","then","gtag","value_filtered","getGoogleAdsDynamicRemarketingOrderItems","getGoogleAdsConversionIdentifiersWithLabel","data_basic","data_with_cart","transaction_id","number","new_customer","clv_order_value_filtered","customer_lifetime_value","aw_merchant_id","discount","aw_feed_country","aw_feed_language","getGoogleAdsRegularOrderItems","conversionIdentifiers","orderItems","orderItem","analytics","universal","property_id","mp_active","affiliation","value_regular","tax","shipping","coupon","getGAUAOrderItems","category","join","variant","variant_name","brand","ga3AddListNameToProduct","item_data","productPosition","list_name","shop","list_position","ga4","measurement_id","getGA4OrderItems","item_name","item_category","item_id","item_variant","item_brand","canGoogleLoad","loadGoogle","logPreventedPixelLoading","type","consent_mode","active","getConsentValues","mode","categories","includes","getVisitorConsentStatusAndUpdateGoogleConsentSettings","google_consent_settings","analytics_storage","ad_storage","updateGoogleConsentMode","cookie_consent_mgmt","explicit_consent","fireGtagGoogleAds","enhanced_conversions","phone_conversion_label","phone_conversion_number","keys","page_type","enhanced_conversion_data","fireGtagGoogleAnalyticsUA","parameters","fireGtagGoogleAnalyticsGA4","debug_mode","isGoogleActive","getGoogleGtagId","loadScriptAndCacheIt","script","textStatus","dataLayer","wait_for_update","region","ads_data_redaction","url_passthrough","linker","settings","Date","Promise","resolve","reject","startTime","wait","setTimeout","optimize","container_id","load_google_optimize_pixel","hotjar","site_id","load_hotjar_pixel","h","o","hj","q","_hjSettings","hjid","hjsv","a","r","appendChild","getComplianzCookies","cmplz_statistics","cmplz_marketing","visitorHasChosen","getCookieLawInfoCookies","analyticsCookie","adsCookie","wpmConsentValues","setConsentValueCategories","updateConsentCookieValues","cookie","explicitConsent","JSON","parse","decodeURI","indexOf","action","length","consents","statistics","marketing","thirdparty","advanced","localStorage","getItem","log","UC_UI","addEventListener","ucUiProcessConsent","areAllConsentsAccepted","groups","URLSearchParams","get","split","groupsObject","forEach","group","groupArray","groubsObject","pmw","consentAcceptAll","ucStatisticsSlug","getSettingsLabels","filter","label","slug","consentAdjustSelectively","getServicesBaseInfo","categorySlug","consent","setConsentDefaultValuesToExplicit","pixelName","canIFireMode","scriptTagObserver","MutationObserver","mutations","addedNodes","node","shouldScriptBeActive","unblockScript","blockScript","observe","head","childList","subtree","disconnect","some","element","scriptNode","removeAttach","remove","wpmSrc","attr","appendTo","dispatchEvent","Event","removeAttr","unblockAllScripts","unblockSelectedPixels","explicitConsentStateAlreadySet","Cookiebot","detail","cmplzStatusChange","cmplzConsentData","huObserver","querySelector","hu","documentElement","body","consentRevokeAll","OneTrust","reload","duration","consentSetCookie","setCookie","stringify","url","URL","currentTarget","productId","getProductIdByCartItemKeyUrl","removeProductFromCart","checkoutButtonClasses","paymentMethodSelected","fireCheckoutProgress","fireCheckoutOption","val","doesWooCommerceCartExist","getCartItems","productIds","getAddToCartLinkProductIds","getProductsFromBackend","referrer","referrerHostname","hostname","host","wpmLoadFired","product_type","getMainProductIdFromProductPage","getProductDataForViewItemEvent","isOrderIdStored","writeOrderIdToStorage","acrRemoveCookie","hasLoginEventFired","setLoginEventFired","sessionStorage","tiktok","getRandomEventId","context","getTikTokUserDataFromBrowser","properties","contents","content_id","sendEventPayloadToServer","getCartValue","search_string","getSearchTermFromUrl","query","getTikTokOrderItemIds","addToCartSelectors","addProductToCart","Number","each","index","find","classes","getPostIdFromString","one","target","closest","origin","searchParams","has","nextAll","getIdBasedOndVariationsOutputSetting","Error","getProductDetailsFormattedForEvent","isEmail","emailSelected","getCartItemsFromBackend","variation","triggerViewItemEventPrep","wpmDeduper","wpmRestSettings","checkCookie","useRestEndpoint","isSessionStorageAvailable","isRestEndpointAvailable","isBelowRestErrorThreshold","testEndpoint","root","cookieName","response","fetch","method","cache","keepalive","setItem","isWpmRestEndpointAvailable","orderId","orderKey","source","Storage","ids","expiresDate","setDate","getDate","toUTCString","storeOrderIdOnServer","orderDeduplication","quantityToRemove","isVariation","parentId","saveCartObjectToDataLayer","ajax_url","ok","json","success","headers","pageId","responseData","assign","cartObject","triggerViewItemEvent","triggerViewItemEventNoProduct","step","checkout_option","string","match","triggerViewItemList","viewItemListTriggerTestMode","css","append","viewItemListTrigger","opacity","backgroundColor","search","io","ioTimeouts","observerCallback","observer","entry","elementId","next","isIntersecting","testMode","repeat","unobserve","timeout","clearTimeout","allIoElementsToWatch","ioid","getAllElementsToWatch","map","i","elem","parent","hasClass","prev","this","startIntersectionObserverToWatch","urlHasParameter","IntersectionObserver","threshold","startProductsMutationObserverToWatch","productsNode","parents","first","productsMutationObserver","attributes","characterData","mutation","newNodes","hasWpmProductIdElement","siblings","cookieValue","expiryDays","d","setTime","getTime","expires","ca","decodeURIComponent","c","charAt","deleteCookie","getWpmSessionData","setWpmSessionData","nonce_wp_rest","order_key","nonce_ajax","responseJson","cartItemKey","cartItemKeys","matches","position","parentId_dyn_r_ids","setReferrerToCookie","getReferrerFromCookie","getClidFromBrowser","clidCookieId","clidId","gclid","dclid","getUserAgent","getViewPort","width","max","clientWidth","innerWidth","height","clientHeight","innerHeight","options","dataType","ajax","getOrderItemPrice","total","total_tax","loginEventFired","wpmDataLayerExists","waitForVar","jQueryExists","waitForjQuery","pageLoaded","readyState","pageReady","isMiniCartActive","parameter","hashAsync","algo","str","crypto","subtle","digest","TextEncoder","encode","buf","Array","prototype","call","Uint8Array","x","slice","patterns","pattern","excludeDomainFromTracking","excludeDomains","domain","debug","jQueryReadyFired","triggerDomReadyEvent","pro","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""}
|
1 |
+
{"version":3,"file":"wpm-public.p1.min.js","mappings":"qPAAA,aAKSA,EAAAA,KAAAA,EAJT,aAIeA,EAAAA,KAAAA,EAHf,aAEA,SAUA,SAAgBC,EAAWC,EAAiBC,GAC1C,OAAOC,EAAcD,EAAdC,CAA+BF,EACxC,CAOA,SAAgBE,EACdD,GAEA,IAAKE,MAAMC,QAAQH,GACjB,OAAOC,EAAc,CAACD,IAGxB,IAAMI,EAAmBJ,EAAgBK,QACvC,SAACC,EAAKC,GACJ,IAAMC,EAAKD,EAAOE,MAAM,KAAK,GAE7B,OADCH,EAAII,EAAKC,KAAKH,IAAkBI,KAAKL,GAC/BD,CACT,GACA,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,KAGrB,GAAmC,IAA/BF,EAAiB,GAAGS,OACtB,MAAM,IAAIC,MAAM,4CAA4CV,EAAiB,IAG/E,IAAMW,EAASC,EAAKf,cAAcG,EAAiB,IAC7Ca,EAASC,EAAKjB,cAAcG,EAAiB,IAEnD,OAAO,YACL,IAAKM,EAAKC,KAAKZ,GACb,MAAM,IAAIe,MAAM,qCAAqCf,GAIvD,OAAIW,EAAKS,OAAOpB,IAAYmB,EAAKE,oBAAoBrB,GAC5CkB,EAAOlB,IAAYgB,EAAOG,EAAKG,kBAAkBtB,IAGtDW,EAAKS,OAAOpB,GACPkB,EAAOlB,GAEPgB,EAAOhB,EAElB,CACF,CA1DSuB,OAAAA,eAAAA,EAAAA,OAAAA,CAAAC,YAAAA,EAAAC,IAAAA,WAAA,aAAI,IAAEF,OAAAA,eAAAA,EAAAA,SAAAA,CAAAC,YAAAA,EAAAC,IAAAA,WAAA,eAAM,IAAEF,OAAAA,eAAAA,EAAAA,SAAAA,CAAAC,YAAAA,EAAAC,IAAAA,WAAA,eAAM,IAU7B3B,EAAAA,WAAAA,EASAA,EAAAA,cAAAA,EA0CAA,EAAAA,UAAA,SAA0BE,GACxB,OAAIW,EAAKS,OAAOpB,GACVmB,EAAKE,oBAAoBrB,GACpBiB,EAAKS,UAAUP,EAAKG,kBAAkBtB,IAExCmB,EAAKO,UAAU1B,GAEfiB,EAAKS,UAAU1B,EAE1B,EAGAF,EAAAA,YAAA,SAA4BE,GAC1B,OAAIW,EAAKS,OAAOpB,GACVmB,EAAKE,oBAAoBrB,GACpBiB,EAAKU,YAAYR,EAAKG,kBAAkBtB,IAE1CmB,EAAKQ,YAAY3B,GAEjBiB,EAAKU,YAAY3B,EAE5B,EAGAF,EAAAA,oBAAA,SAAoCE,GAClC,QAAIW,EAAKS,OAAOpB,IACPmB,EAAKE,oBAAoBrB,EAIpC,EAGAF,EAAAA,WAAA,SAA2BE,GACzB,OAAIW,EAAKS,OAAOpB,GACVmB,EAAKE,oBAAoBrB,GACpBiB,EAAKW,WAAWT,EAAKG,kBAAkBtB,IAEzCmB,EAAKS,WAAW5B,GAEhBiB,EAAKW,WAAW5B,EAE3B,EAMAF,EAAAA,UAAA,SAA0BE,GACxB,OAAIW,EAAKS,OAAOpB,GACVmB,EAAKE,oBAAoBrB,GACpBiB,EAAKY,UAAUV,EAAKG,kBAAkBtB,IAExCmB,EAAKU,UAAU7B,GAEfiB,EAAKY,UAAU7B,EAE1B,EAEaF,EAAAA,MAAQC,C,4EC5HrBD,EAAAA,QAAe,CAEbgC,UAAW,CAETC,KAAM,CAAC,eAGPC,KAAM,CAAC,YAITC,QAAS,CAEPF,KAAM,CACJ,aACA,gBACA,kBAIFC,KAAM,CACJ,YACA,aAKJE,SAAU,CAERH,KAAM,CACJ,YACA,gBACA,iBACA,eACA,eACA,iBACA,gBACA,kBACA,iBACA,cACA,cACA,sBAIFC,KAAM,CACJ,SACA,eACA,WACA,YACA,eACA,eACA,gBACA,YACA,a,kYCtDN,aACA,SAOA,SAASG,EAAW1B,GAClB,IAAKE,EAAKyB,OAAO3B,GACf,MAAM,IAAIM,MAAM,6BAA6BN,GAE/C,IAAM4B,EAAS5B,EAAGC,MAAM,KACxB,OACI4B,SAASD,EAAO,GAAI,KAAO,KAC1BC,SAASD,EAAO,GAAI,KAAO,KAC3BC,SAASD,EAAO,GAAI,KAAO,GAC5BC,SAASD,EAAO,GAAI,MACtB,CAEJ,CAoBA,SAAgBnC,EACdD,GAEA,GAAIE,MAAMC,QAAQH,GAAkB,CAClC,IAAMsC,EAAStC,EAAgBuC,KAAI,YAAU,SAAkBhC,EAAlB,IAC7C,OAAO,YACL,IAAMiC,EAAcN,EAAWnC,GAC/B,OAAOuC,EAAOG,MAAK,YAAS,SAAMD,EAAN,GAC9B,C,CAEF,IAAME,EAAQC,EAAkB3C,GAChC,OAAO,YACL,IAAMwC,EAAcN,EAAWnC,GAC/B,OAAO2C,EAAMF,EACf,CACF,CAGA,SAASG,EAAkBpC,GACnB,MAAsCA,EAAOE,MAAM,KAAlDmC,EAAa,KAAEC,EAAkB,KAClCC,EAAeT,SAASQ,EAAoB,IAClD,IAAKD,IAAkBG,OAAOC,UAAUF,GACtC,MAAM,IAAIhC,MAAM,4BAA4BP,GAG9C,GAAIuC,EAAe,GAAKA,EAAe,GACrC,MAAM,IAAIhC,MAAM,mCAAmCgC,EAAY,UAAUvC,EAAM,KAGjF,IAAM0C,EAAaf,EAAWU,GAC9B,OAAO,YACL,OAAqB,IAAjBE,GAGiBG,GAAe,GAAKH,GACnBN,GAAgB,GAAKM,CAG7C,CACF,CAlDAjD,EAAAA,WAAA,SAA2BE,EAAiBC,GAC1C,OAAOC,EAAcD,EAAdC,CAA+BF,EACxC,EASAF,EAAAA,cAAAA,EA0CA,IAAMqD,EAAiE,GAGvErD,EAAAA,UAAA,SAA0BE,GAIxB,MAHI,YAAamD,GAAqB,IACpCA,EAA0B,QAAIjD,EAAckD,EAAAA,QAAQnB,QAAQF,OAEvDoB,EAA0B,QAAEnD,EACrC,EAGAF,EAAAA,YAAA,SAA4BE,GAI1B,MAHI,cAAemD,GAAqB,IACtCA,EAA4B,UAAIjD,EAAckD,EAAAA,QAAQtB,UAAUC,OAE3DoB,EAA4B,UAAEnD,EACvC,EAGAF,EAAAA,WAAA,SAA2BE,GAIzB,MAHI,aAAcmD,GAAqB,IACrCA,EAA2B,SAAIjD,EAAckD,EAAAA,QAAQlB,SAASH,OAEzDoB,EAA2B,SAAEnD,EACtC,EAMAF,EAAAA,UAAA,SAA0BE,GAQxB,MAPI,YAAamD,GAAqB,IACpCA,EAA0B,QAAIjD,EAAa,EACtCkD,EAAAA,QAAQnB,QAAQF,KAChBqB,EAAAA,QAAQtB,UAAUC,KAClBqB,EAAAA,QAAQlB,SAASH,QAGjBoB,EAA0B,QAAEnD,EACrC,C,4aCzHA,aACA,SAIMqD,EAAM,KACNC,EAAa,2DACbC,EAAQ,IACRC,EAAc,KA8CpB,SAASC,EAAgBhD,GACvB,IAAKE,EAAKS,OAAOX,GACf,MAAM,IAAIM,MAAM,6BAA6BN,GAG/C,GAAI4C,EAAIK,KAAKjD,GACX,OAAOgD,EA7CX,SAA0BhD,GACxB,IAAMkD,EAAUlD,EAAGmD,MAAMN,GAEzB,IAAKK,IAAYhD,EAAKyB,OAAOuB,EAAQ,IACnC,MAAM,IAAI5C,MAAM,8BAA8BN,GAIhD,IAAMoD,EAASF,EAAQ,GAGjBG,EAFOH,EAAQ,GAEFjD,MAAM2C,GAAKb,KAAI,YAAK,gBAASuB,EAAG,GAAZ,IAKvC,MAAO,GAAGF,IAHSC,EAAM,IAAM,GAAKA,EAAM,IAAIE,SAAS,IAG5B,MAFRF,EAAM,IAAM,GAAKA,EAAM,IAAIE,SAAS,GAGzD,CA4B2BC,CAAiBxD,IAIpC,MAA4BA,EAAGC,MAAM8C,GAApCU,EAAW,KAAEC,EAAU,KAExBC,EAAeF,GAAeA,EAAYxD,MAAM6C,IAAW,GAC3Dc,EAAcF,GAAcA,EAAWzD,MAAM6C,IAAW,GACxDe,EAAkB,IAAInE,MAAc,GAAKiE,EAAYtD,OAASuD,EAAWvD,SAE/E,OAAOsD,EAAYG,OAAOD,EAAiBD,EAC7C,CAmBA,SAAgBnE,EACdD,GAEA,GAAIE,MAAMC,QAAQH,GAAkB,CAClC,IAAMsC,EAAStC,EAAgBuC,KAAI,YAAU,SAAqBhC,EAArB,IAC7C,OAAO,YACL,IAAMgE,EAAWf,EAAgBzD,GACjC,OAAOuC,EAAOG,MAAK,YAAS,SAAM8B,EAAN,GAC9B,C,CAEF,IAAM7B,EAAQ8B,EAAqBxE,GACnC,OAAO,YACL,IAAMuE,EAAWf,EAAgBzD,GACjC,OAAO2C,EAAM6B,EACf,CACF,CAGA,SAASC,EAAqBjE,GACtB,MAAsCA,EAAOE,MAAM,KAAlDmC,EAAa,KAAEC,EAAkB,KAClCC,EAAeT,SAASQ,EAAoB,IAElD,IAAKD,IAAkBG,OAAOC,UAAUF,GACtC,MAAM,IAAIhC,MAAM,iCAAiCP,GAGnD,GAAIuC,EAAe,GAAKA,EAAe,IACrC,MAAM,IAAIhC,MAAM,mCAAmCgC,EAAY,UAAUvC,EAAM,KAIjF,IAAMkE,EAAiBjB,EAAgBZ,GAEvC,OAAO,YACL,IAAK,IAAI8B,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAC1B,IAAMC,EAAWC,KAAKC,IAAI/B,EAAmB,GAAJ4B,EAAQ,IAEjD,GAAIC,GAAY,EACd,MAUF,IANIF,EAAeC,IAAMrC,SAASoC,EAAeC,GAAI,KAAQ,IAAO,GAAKC,IAGrEG,EAAgBJ,IAAMrC,SAASyC,EAAgBJ,GAAI,KAAQ,IAC5D,GAAKC,EAGN,OAAO,C,CAIX,OAAO,CACT,CACF,CA5GA9E,EAAAA,kBAAA,SAAkCW,GAChC,IAAMkD,EAAUlD,EAAGmD,MAAMN,GAEzB,IAAKK,IAAYhD,EAAKyB,OAAOuB,EAAQ,IACnC,MAAM,IAAI5C,MAAM,8BAA8BN,GAGhD,OAAOkD,EAAQ,EACjB,EAmCA7D,EAAAA,WAAA,SAA2BE,EAAiBC,GAC1C,OAAOC,EAAcD,EAAdC,CAA+BF,EACxC,EAQAF,EAAAA,cAAAA,EA0DA,IAAMqD,EAAiE,GAGvErD,EAAAA,UAAA,SAA0BE,GAIxB,MAHI,YAAamD,GAAqB,IACpCA,EAA0B,QAAIjD,EAAckD,EAAAA,QAAQnB,QAAQD,OAEvDmB,EAA0B,QAAEnD,EACrC,EAGAF,EAAAA,YAAA,SAA4BE,GAI1B,MAHI,cAAemD,GAAqB,IACtCA,EAA4B,UAAIjD,EAAckD,EAAAA,QAAQtB,UAAUE,OAE3DmB,EAA4B,UAAEnD,EACvC,EAGAF,EAAAA,oBAAA,SAAoCE,GAIlC,GAHI,WAAYmD,GAAqB,IACnCA,EAAyB,OAAIjD,EAAc,kBAEzCiD,EAAyB,OAAEnD,GAAU,CACvC,IAAM2D,EAAU3D,EAAQ4D,MAAMN,GAC9B,OAAO0B,QAAQrB,GAAWhD,EAAKyB,OAAOuB,EAAQ,I,CAEhD,OAAO,CACT,EAGA7D,EAAAA,WAAA,SAA2BE,GAIzB,MAHI,aAAcmD,GAAqB,IACrCA,EAA2B,SAAIjD,EAAckD,EAAAA,QAAQlB,SAASF,OAEzDmB,EAA2B,SAAEnD,EACtC,EAMAF,EAAAA,UAAA,SAA0BE,GAQxB,MAPI,YAAamD,GAAqB,IACpCA,EAA0B,QAAIjD,EAAa,EACtCkD,EAAAA,QAAQnB,QAAQD,KAChBoB,EAAAA,QAAQtB,UAAUE,KAClBoB,EAAAA,QAAQlB,SAASF,QAGjBmB,EAA0B,QAAEnD,EACrC,C,4GCtMA,IAAMiF,EAAQ,uDACRC,EAAQ,IAAID,EAAK,UAAUA,EAC3BE,EAAU,IAAIC,OAAO,IAAIF,EAAK,KAG9BG,EAAQ,uBACRC,EAAU,IAAIF,OAClB,QACQC,EAAK,WAAWA,EADxB,UAEQA,EAAK,WAAWH,EAAK,KAAKG,EAFlC,UAGQA,EAAK,YAAYH,EAAK,MAAMG,EAHpC,gBAIQA,EAAK,aAAaA,EAAK,UAAUH,EAAK,MAAMG,EAJpD,gBAKQA,EAAK,aAAaA,EAAK,UAAUH,EAAK,MAAMG,EALpD,gBAMQA,EAAK,aAAaA,EAAK,UAAUH,EAAK,MAAMG,EANpD,gBAOQA,EAAK,aAAaA,EAAK,UAAUH,EAAK,MAAMG,EAPpD,sBAQcA,EAAK,UAAUH,EAAK,QAAQG,EAR1C,mCAgBF,SAAgBjD,EAAOmD,GACrB,OAAOJ,EAAQzB,KAAK6B,EACtB,CAMA,SAAgBnE,EAAOmE,GACrB,OAAOD,EAAQ5B,KAAK6B,EACtB,CAVAzF,EAAAA,OAAAA,EAQAA,EAAAA,OAAAA,EAIAA,EAAAA,KAAA,SAAqByF,GACnB,OAAInD,EAAOmD,GAAW,EAClBnE,EAAOmE,GAAW,EACf,CACT,C,4XCxCA,WACE,IAAIC,EAAYC,EAAQC,EAAUC,EAAaC,EAAUC,EAAaC,EAAiBC,EAEvFN,EAAS,CAAC,EAIuC,OAA5CO,GAAqDA,EAAOlG,QAC/DkG,EAAOlG,QAAU2F,EAHZQ,KAKQ,OAAIR,EAGnBK,EAAY,SAASI,EAAOC,EAAQC,EAAUC,GAC5C,IAAIC,EAAMC,EACV,GAAIL,EAAMpF,SAAWqF,EAAOrF,OAC1B,MAAM,IAAIC,MAAM,gEAGlB,IADAuF,EAAO,EACAD,EAAW,GAAG,CAKnB,IAJAE,EAAQH,EAAWC,GACP,IACVE,EAAQ,GAENL,EAAMI,IAASC,GAAUJ,EAAOG,IAASC,EAC3C,OAAO,EAETF,GAAYD,EACZE,GAAQ,C,CAEV,OAAO,C,EAGTb,EAAOe,YAAc,SAASxG,EAASyG,EAAWC,GAChD,IAAIC,EAAGC,EAAKC,EAAWC,EAActG,EAIrC,IAAKqG,KAHc,MAAfH,IACFA,EAAc,WAEED,EAKhB,MAJAK,EAAeL,EAAUI,IACR,IAAQC,EAAa,aAAc3G,QAClD2G,EAAe,CAACA,IAEbH,EAAI,EAAGC,EAAME,EAAahG,OAAQ6F,EAAIC,EAAKD,IAE9C,GADAnG,EAASsG,EAAaH,GAClB3G,EAAQ+G,SAAWvG,EAAO,GAAGuG,QAC3B/G,EAAQ4D,MAAMoD,MAAMhH,EAASQ,GAC/B,OAAOqG,EAKf,OAAOH,C,EAGTjB,EAAOxE,KAAQ,WACb,SAASA,EAAKoB,GACZ,IAAIsE,EAAGC,EAAKK,EACZ,GAAsB,IAAlB5E,EAAOvB,OACT,MAAM,IAAIC,MAAM,wCAElB,IAAK4F,EAAI,EAAGC,EAAMvE,EAAOvB,OAAQ6F,EAAIC,EAAKD,IAExC,KAAO,IADPM,EAAQ5E,EAAOsE,KACMM,GAAS,KAC5B,MAAM,IAAIlG,MAAM,2CAGpBkF,KAAK5D,OAASA,C,CAkFhB,OA/EApB,EAAKiG,UAAUH,KAAO,WACpB,MAAO,M,EAGT9F,EAAKiG,UAAUlD,SAAW,WACxB,OAAOiC,KAAK5D,OAAO8E,KAAK,I,EAG1BlG,EAAKiG,UAAUE,mBAAqB,WAClC,OAAOnB,KAAKjC,U,EAGd/C,EAAKiG,UAAUG,YAAc,WAC3B,OAAOpB,KAAK5D,OAAOiF,MAAM,E,EAG3BrG,EAAKiG,UAAUtD,MAAQ,SAAS2D,EAAOC,GACrC,IAAIC,EAIJ,QAHkB,IAAdD,IACWD,GAAbE,EAAMF,GAAmB,GAAIC,EAAYC,EAAI,IAE1B,SAAjBF,EAAMR,OACR,MAAM,IAAIhG,MAAM,uDAElB,OAAO+E,EAAUG,KAAK5D,OAAQkF,EAAMlF,OAAQ,EAAGmF,E,EAGjDvG,EAAKiG,UAAUQ,cAAgB,CAC7BC,YAAa,CAAC,CAAC,IAAI1G,EAAK,CAAC,EAAG,EAAG,EAAG,IAAK,IACvC2G,UAAW,CAAC,CAAC,IAAI3G,EAAK,CAAC,IAAK,IAAK,IAAK,MAAO,KAC7C4G,UAAW,CAAC,CAAC,IAAI5G,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,IACvC6G,UAAW,CAAC,CAAC,IAAI7G,EAAK,CAAC,IAAK,IAAK,EAAG,IAAK,KACzC8G,SAAU,CAAC,CAAC,IAAI9G,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,IACtC+G,gBAAiB,CAAC,CAAC,IAAI/G,EAAK,CAAC,IAAK,GAAI,EAAG,IAAK,KAC9C,QAAW,CAAC,CAAC,IAAIA,EAAK,CAAC,GAAI,EAAG,EAAG,IAAK,GAAI,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,EAAG,IAAK,IAAK,CAAC,IAAIA,EAAK,CAAC,IAAK,IAAK,EAAG,IAAK,KACxGiB,SAAU,CAAC,CAAC,IAAIjB,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,IAAK,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,IAAK,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,GAAI,IAAK,IAAK,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,EAAG,IAAK,KAG/MA,EAAKiG,UAAUe,MAAQ,WACrB,OAAOxC,EAAOe,YAAYP,KAAMA,KAAKyB,c,EAGvCzG,EAAKiG,UAAUgB,oBAAsB,WACnC,OAAOzC,EAAOtE,KAAKgH,MAAM,UAAalC,KAAKjC,W,EAG7C/C,EAAKiG,UAAUkB,2BAA6B,WAC1C,IAAIC,EAAM1D,EAAGgC,EAAGM,EAAOqB,EAAMC,EAAOC,EAcpC,IAbAA,EAAY,CACV,EAAG,EACH,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,GAEPH,EAAO,EACPC,GAAO,EACF3D,EAAIgC,EAAI,EAAGA,GAAK,EAAGhC,EAAIgC,IAAM,EAAG,CAEnC,MADAM,EAAQhB,KAAK5D,OAAOsC,MACP6D,GAUX,OAAO,KARP,GADAD,EAAQC,EAAUvB,GACdqB,GAAkB,IAAVC,EACV,OAAO,KAEK,IAAVA,IACFD,GAAO,GAETD,GAAQE,C,CAKZ,OAAO,GAAKF,C,EAGPpH,C,CA9FM,GAkGfyE,EAAW,uBAEXC,EAAc,CACZ8C,UAAW,IAAIrD,OAAO,IAAMM,EAAW,MAAQA,EAAW,MAAQA,EAAW,MAAQA,EAAW,IAAK,KACrGgD,UAAW,IAAItD,OAAO,IAAMM,EAAW,IAAK,MAG9CD,EAAOxE,KAAK0H,OAAS,SAASC,GAC5B,IAAIhF,EAAOiF,EAAcvC,EAAMC,EAAOuC,EAQtC,GAPAD,EAAe,SAASD,GACtB,MAAkB,MAAdA,EAAO,IAA4B,MAAdA,EAAO,GACvBtG,SAASsG,EAAQ,GAEjBtG,SAASsG,E,EAGhBhF,EAAQgF,EAAOhF,MAAM+B,EAAY8C,WACnC,OAAQ,WACN,IAAI9B,EAAGC,EAAKa,EAAKsB,EAGjB,IADAA,EAAU,GACLpC,EAAI,EAAGC,GAFZa,EAAM7D,EAAM0D,MAAM,EAAG,IAECxG,OAAQ6F,EAAIC,EAAKD,IACrCL,EAAOmB,EAAId,GACXoC,EAAQlI,KAAKgI,EAAavC,IAE5B,OAAOyC,C,CARD,GAUH,GAAInF,EAAQgF,EAAOhF,MAAM+B,EAAY+C,WAAY,CAEtD,IADAI,EAAQD,EAAajF,EAAM,KACf,YAAckF,EAAQ,EAChC,MAAM,IAAI/H,MAAM,yCAElB,OAAS,WACP,IAAI4F,EAAGoC,EAEP,IADAA,EAAU,GACLxC,EAAQI,EAAI,EAAGA,GAAK,GAAIJ,EAAQI,GAAK,EACxCoC,EAAQlI,KAAMiI,GAASvC,EAAS,KAElC,OAAOwC,C,CANA,GAOHC,S,CAEN,OAAO,I,EAIXvD,EAAOtE,KAAQ,WACb,SAASA,EAAK2C,EAAOmF,GACnB,IAAItE,EAAGgC,EAAGuC,EAAGtC,EAAKN,EAAMmB,EACxB,GAAqB,KAAjB3D,EAAMhD,OAER,IADAmF,KAAKnC,MAAQ,GACRa,EAAIgC,EAAI,EAAGA,GAAK,GAAIhC,EAAIgC,GAAK,EAChCV,KAAKnC,MAAMjD,KAAMiD,EAAMa,IAAM,EAAKb,EAAMa,EAAI,QAEzC,IAAqB,IAAjBb,EAAMhD,OAGf,MAAM,IAAIC,MAAM,6CAFhBkF,KAAKnC,MAAQA,C,CAKf,IAAKoF,EAAI,EAAGtC,GADZa,EAAMxB,KAAKnC,OACWhD,OAAQoI,EAAItC,EAAKsC,IAErC,KAAO,IADP5C,EAAOmB,EAAIyB,KACS5C,GAAQ,OAC1B,MAAM,IAAIvF,MAAM,2CAGhBkI,IACFhD,KAAKgD,OAASA,E,CAmKlB,OA/JA9H,EAAK+F,UAAUH,KAAO,WACpB,MAAO,M,EAGT5F,EAAK+F,UAAUlD,SAAW,WACxB,OAAOiC,KAAKmB,qBAAqB+B,QAAQ,mBAAoB,K,EAG/DhI,EAAK+F,UAAUkC,gBAAkB,WAC/B,IAAIC,EAAgBC,EAAiB1F,EAAO2F,EAAOX,EAKnD,IAJAW,EAAQ,uBACRX,EAAS3C,KAAKmB,qBACdiC,EAAiB,EACjBC,GAAmB,EACX1F,EAAQ2F,EAAMC,KAAKZ,IACrBhF,EAAM,GAAG9C,OAASwI,IACpBD,EAAiBzF,EAAM6F,MACvBH,EAAkB1F,EAAM,GAAG9C,QAG/B,OAAIwI,EAAkB,EACbV,EAEFA,EAAOc,UAAU,EAAGL,GAAkB,KAAOT,EAAOc,UAAUL,EAAiBC,E,EAGxFnI,EAAK+F,UAAUG,YAAc,WAC3B,IAAIsC,EAAOhD,EAAGC,EAAKN,EAAMmB,EAGzB,IAFAkC,EAAQ,GAEHhD,EAAI,EAAGC,GADZa,EAAMxB,KAAKnC,OACWhD,OAAQ6F,EAAIC,EAAKD,IACrCL,EAAOmB,EAAId,GACXgD,EAAM9I,KAAKyF,GAAQ,GACnBqD,EAAM9I,KAAY,IAAPyF,GAEb,OAAOqD,C,EAGTxI,EAAK+F,UAAUE,mBAAqB,WAClC,IAAIwC,EAAMtD,EAAMuD,EAehB,OAdAD,EAAS,WACP,IAAIjD,EAAGC,EAAKa,EAAKsB,EAGjB,IADAA,EAAU,GACLpC,EAAI,EAAGC,GAFZa,EAAMxB,KAAKnC,OAEWhD,OAAQ6F,EAAIC,EAAKD,IACrCL,EAAOmB,EAAId,GACXoC,EAAQlI,KAAKyF,EAAKtC,SAAS,KAE7B,OAAO+E,C,EACNe,KAAK7D,MAAOkB,KAAK,KACpB0C,EAAS,GACL5D,KAAKgD,SACPY,EAAS,IAAM5D,KAAKgD,QAEfW,EAAOC,C,EAGhB1I,EAAK+F,UAAU6C,oBAAsB,WACnC,IAAIH,EAAMtD,EAAMuD,EAehB,OAdAD,EAAS,WACP,IAAIjD,EAAGC,EAAKa,EAAKsB,EAGjB,IADAA,EAAU,GACLpC,EAAI,EAAGC,GAFZa,EAAMxB,KAAKnC,OAEWhD,OAAQ6F,EAAIC,EAAKD,IACrCL,EAAOmB,EAAId,GACXoC,EAAQlI,KAAKyF,EAAKtC,SAAS,IAAIgG,SAAS,EAAG,MAE7C,OAAOjB,C,EACNe,KAAK7D,MAAOkB,KAAK,KACpB0C,EAAS,GACL5D,KAAKgD,SACPY,EAAS,IAAM5D,KAAKgD,QAEfW,EAAOC,C,EAGhB1I,EAAK+F,UAAUtD,MAAQ,SAAS2D,EAAOC,GACrC,IAAIC,EAIJ,QAHkB,IAAdD,IACWD,GAAbE,EAAMF,GAAmB,GAAIC,EAAYC,EAAI,IAE1B,SAAjBF,EAAMR,OACR,MAAM,IAAIhG,MAAM,uDAElB,OAAO+E,EAAUG,KAAKnC,MAAOyD,EAAMzD,MAAO,GAAI0D,E,EAGhDrG,EAAK+F,UAAUQ,cAAgB,CAC7BC,YAAa,CAAC,IAAIxG,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,KAClD2G,UAAW,CAAC,IAAI3G,EAAK,CAAC,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IACrD0G,UAAW,CAAC,IAAI1G,EAAK,CAAC,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GACrD4G,SAAU,CAAC,IAAI5G,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,KAC/C8I,YAAa,CAAC,IAAI9I,EAAK,CAAC,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GACvD+I,WAAY,CAAC,IAAI/I,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,IAAK,IACtDgJ,QAAS,CAAC,IAAIhJ,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,EAAG,IAAK,IACnDiJ,QAAS,CAAC,IAAIjJ,EAAK,CAAC,IAAM,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IACtD,OAAQ,CAAC,IAAIA,EAAK,CAAC,KAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAClDkJ,OAAQ,CAAC,IAAIlJ,EAAK,CAAC,KAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAClDe,SAAU,CAAC,CAAC,IAAIf,EAAK,CAAC,KAAQ,KAAO,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,MAG3DA,EAAK+F,UAAUe,MAAQ,WACrB,OAAOxC,EAAOe,YAAYP,KAAMA,KAAKyB,c,EAGvCvG,EAAK+F,UAAU7F,oBAAsB,WACnC,MAAwB,eAAjB4E,KAAKgC,O,EAGd9G,EAAK+F,UAAUoD,cAAgB,WAC7B,IAAIC,EAAMC,EAAK/C,EACf,IAAKxB,KAAK5E,sBACR,MAAM,IAAIN,MAAM,4DAGlB,OAD4BwJ,GAA5B9C,EAAMxB,KAAKnC,MAAMwD,OAAO,IAAe,GAAIkD,EAAM/C,EAAI,GAC9C,IAAIhC,EAAOxE,KAAK,CAACsJ,GAAQ,EAAU,IAAPA,EAAaC,GAAO,EAAS,IAANA,G,EAG5DrJ,EAAK+F,UAAUkB,2BAA6B,WAC1C,IAAIC,EAAM1D,EAAGgC,EAAGL,EAAMgC,EAAMC,EAAOC,EAsBnC,IArBAA,EAAY,CACV,EAAG,GACH,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,GAETH,EAAO,EACPC,GAAO,EACF3D,EAAIgC,EAAI,EAAGA,GAAK,EAAGhC,EAAIgC,IAAM,EAAG,CAEnC,MADAL,EAAOL,KAAKnC,MAAMa,MACN6D,GAUV,OAAO,KARP,GADAD,EAAQC,EAAUlC,GACdgC,GAAkB,IAAVC,EACV,OAAO,KAEK,KAAVA,IACFD,GAAO,GAETD,GAAQE,C,CAKZ,OAAO,IAAMF,C,EAGRlH,C,CAxLM,GA4LfyE,EAAW,oBAEXG,EAAY,gBAEZF,EAAc,CACZE,UAAW,IAAIX,OAAOW,EAAW,KACjC,OAAU,IAAIX,OAAO,UAAYQ,EAAW,uBAAyBG,EAAY,MAAO,KACxF0E,aAAc,IAAIrF,OAAQ,QAAUQ,EAAW,cAAgBA,EAAW,MAAUF,EAAW,MAAQA,EAAW,MAAQA,EAAW,MAAQA,EAAY,oBAA2B,MAGtLF,EAAa,SAASoD,EAAQ9E,GAC5B,IAAI4G,EAAYC,EAAWrE,EAAMsE,EAAaC,EAAkB5B,EAChE,GAAIL,EAAOkC,QAAQ,QAAUlC,EAAOmC,YAAY,MAC9C,OAAO,KAST,KAPA9B,GAAUL,EAAOhF,MAAMiC,EAAuB,YAAM,IAAI,MAEtDoD,EAASA,EAAOS,UAAU,GAC1Bd,EAASA,EAAOO,QAAQ,OAAQ,KAElCuB,EAAa,EACbC,GAAa,GACLA,EAAY/B,EAAOkC,QAAQ,IAAKH,EAAY,KAAO,GACzDD,IAQF,GAN4B,OAAxB9B,EAAOoC,OAAO,EAAG,IACnBN,IAE2B,OAAzB9B,EAAOoC,QAAQ,EAAG,IACpBN,IAEEA,EAAa5G,EACf,OAAO,KAIT,IAFA+G,EAAmB/G,EAAQ4G,EAC3BE,EAAc,IACPC,KACLD,GAAe,KAmBjB,MAhBkB,OADlBhC,EAASA,EAAOO,QAAQ,KAAMyB,IACnB,KACThC,EAASA,EAAOtB,MAAM,IAEU,MAA9BsB,EAAOA,EAAO9H,OAAS,KACzB8H,EAASA,EAAOtB,MAAM,GAAI,IAYrB,CACLxD,MAXFA,EAAS,WACP,IAAI6C,EAAGC,EAAKa,EAAKsB,EAGjB,IADAA,EAAU,GACLpC,EAAI,EAAGC,GAFZa,EAAMmB,EAAOlI,MAAM,MAEGI,OAAQ6F,EAAIC,EAAKD,IACrCL,EAAOmB,EAAId,GACXoC,EAAQlI,KAAKyB,SAASgE,EAAM,KAE9B,OAAOyC,C,CARA,GAYPE,OAAQA,E,EAIZxD,EAAOtE,KAAKwH,OAAS,SAASC,GAC5B,IAAIgB,EAAMjD,EAAGC,EAAKhD,EAAOqD,EAAO5E,EAAQ4G,EACxC,GAAIpD,EAAoB,OAAEnC,KAAKkF,GAC7B,OAAOpD,EAAWoD,EAAQ,GACrB,IAAIhF,EAAQgF,EAAOhF,MAAMiC,EAA0B,iBACxDoD,EAASrF,EAAM,IAAM,IACrBgG,EAAOpE,EAAW5B,EAAM,GAAG0D,MAAM,GAAI,GAAK2B,EAAQ,IACzCnF,OAAO,CAEd,IAAK6C,EAAI,EAAGC,GADZvE,EAAS,CAACC,SAASsB,EAAM,IAAKtB,SAASsB,EAAM,IAAKtB,SAASsB,EAAM,IAAKtB,SAASsB,EAAM,MAC5D9C,OAAQ6F,EAAIC,EAAKD,IAExC,KAAO,IADPM,EAAQ5E,EAAOsE,KACMM,GAAS,KAC5B,OAAO,KAKX,OAFA2C,EAAK9F,MAAMjD,KAAKwB,EAAO,IAAM,EAAIA,EAAO,IACxCuH,EAAK9F,MAAMjD,KAAKwB,EAAO,IAAM,EAAIA,EAAO,IACjC,CACLyB,MAAO8F,EAAK9F,MACZmF,OAAQW,EAAKX,O,CAInB,OAAO,I,EAGTxD,EAAOxE,KAAKmB,OAASqD,EAAOtE,KAAKC,OAAS,SAASwH,GACjD,OAA+B,OAAxB3C,KAAK0C,OAAOC,E,EAGrBnD,EAAOxE,KAAKgK,QAAU,SAASrC,GAE7B,IAEE,OADA,IAAI3C,KAAKA,KAAK0C,OAAOC,KACd,C,CACP,MAAOsC,GAEP,OAAO,C,GAIXzF,EAAOxE,KAAKkK,uBAAyB,SAASvC,GAC5C,SAAInD,EAAOxE,KAAKgK,QAAQrC,KAAWA,EAAOhF,MAAM,qC,EAOlD6B,EAAOtE,KAAK8J,QAAU,SAASrC,GAC7B,IAAIgB,EACJ,GAAsB,iBAAXhB,IAAgD,IAAzBA,EAAOkC,QAAQ,KAC/C,OAAO,EAET,IAGE,OADA,IAAI7E,MADJ2D,EAAO3D,KAAK0C,OAAOC,IACL9E,MAAO8F,EAAKX,SACnB,C,CACP,MAAOiC,GAEP,OAAO,C,GAIXzF,EAAOxE,KAAKkH,MAAQ,SAASS,GAC3B,IAAI9E,EAEJ,GAAc,QADdA,EAAQmC,KAAK0C,OAAOC,IAElB,MAAM,IAAI7H,MAAM,mDAElB,OAAO,IAAIkF,KAAKnC,E,EAGlB2B,EAAOtE,KAAKgH,MAAQ,SAASS,GAC3B,IAAIgB,EAEJ,GAAmB,QADnBA,EAAO3D,KAAK0C,OAAOC,IACV9E,MACP,MAAM,IAAI/C,MAAM,mDAElB,OAAO,IAAIkF,KAAK2D,EAAK9F,MAAO8F,EAAKX,O,EAGnCxD,EAAOxE,KAAKmK,UAAY,SAASxC,GAC/B,IAAIyC,EAAYzH,EAAO0H,EACvB,IAAI1H,EAAQgF,EAAOhF,MAAM,oBACvByH,EAAa/I,SAASsB,EAAM,MACV,GAAKyH,GAAc,GAOnC,OANAC,EAAS,CAACrF,KAAKkC,MAAMvE,EAAM,IAAKyH,GAChC9J,OAAOgK,eAAeD,EAAQ,WAAY,CACxCxC,MAAO,WACL,OAAO7C,KAAKkB,KAAK,I,IAGdmE,EAGX,MAAM,IAAIvK,MAAM,0D,EAGlB0E,EAAOxE,KAAKuK,2BAA6B,SAAS3H,GAChD,IAAI4H,EAAkBC,EAAGrJ,EAEzB,IADAwB,EAASvB,SAASuB,IACL,GAAKA,EAAS,GACzB,MAAM,IAAI9C,MAAM,sCAKlB,IAHAsB,EAAS,CAAC,EAAG,EAAG,EAAG,GACnBqJ,EAAI,EACJD,EAAmB5G,KAAK8G,MAAM9H,EAAS,GAChC6H,EAAID,GACTpJ,EAAOqJ,GAAK,IACZA,IAKF,OAHID,EAAmB,IACrBpJ,EAAOoJ,GAAoB5G,KAAK+G,IAAI,EAAG/H,EAAS,GAAK,GAAK,EAAKA,EAAS,GAEnE,IAAIoC,KAAK5D,E,EAGlBoD,EAAOxE,KAAK4K,yBAA2B,SAASjD,GAC9C,IAAIP,EAAM1D,EAAUmH,EAAmBzJ,EAAQ0J,EAC/C,IAME,IAJAD,GADAzD,EAAOpC,KAAKmF,UAAUxC,IACG,GAAGvB,cAC5B0E,EAAmB9F,KAAKuF,2BAA2BnD,EAAK,IAAIhB,cAC5DhF,EAAS,GACTsC,EAAI,EACGA,EAAI,GACTtC,EAAOxB,KAAKyB,SAASwJ,EAAkBnH,GAAI,IAA0C,IAApCrC,SAASyJ,EAAiBpH,GAAI,KAC/EA,IAEF,OAAO,IAAIsB,KAAK5D,E,CAChB,MAAO6I,GAEP,MAAM,IAAInK,MAAM,qD,GAIpB0E,EAAOxE,KAAK+K,uBAAyB,SAASpD,GAC5C,IAAIP,EAAM1D,EAAUmH,EAAmBzJ,EAAQ0J,EAC/C,IAME,IAJAD,GADAzD,EAAOpC,KAAKmF,UAAUxC,IACG,GAAGvB,cAC5B0E,EAAmB9F,KAAKuF,2BAA2BnD,EAAK,IAAIhB,cAC5DhF,EAAS,GACTsC,EAAI,EACGA,EAAI,GACTtC,EAAOxB,KAAKyB,SAASwJ,EAAkBnH,GAAI,IAAMrC,SAASyJ,EAAiBpH,GAAI,KAC/EA,IAEF,OAAO,IAAIsB,KAAK5D,E,CAChB,MAAO6I,GAEP,MAAM,IAAInK,MAAM,qD,GAIpB0E,EAAOtE,KAAKiK,UAAY,SAASxC,GAC/B,IAAIyC,EAAYzH,EAAO0H,EACvB,IAAI1H,EAAQgF,EAAOhF,MAAM,oBACvByH,EAAa/I,SAASsB,EAAM,MACV,GAAKyH,GAAc,IAOnC,OANAC,EAAS,CAACrF,KAAKkC,MAAMvE,EAAM,IAAKyH,GAChC9J,OAAOgK,eAAeD,EAAQ,WAAY,CACxCxC,MAAO,WACL,OAAO7C,KAAKkB,KAAK,I,IAGdmE,EAGX,MAAM,IAAIvK,MAAM,0D,EAGlB0E,EAAOwF,QAAU,SAASrC,GACxB,OAAOnD,EAAOtE,KAAK8J,QAAQrC,IAAWnD,EAAOxE,KAAKgK,QAAQrC,E,EAG5DnD,EAAO0C,MAAQ,SAASS,GACtB,GAAInD,EAAOtE,KAAK8J,QAAQrC,GACtB,OAAOnD,EAAOtE,KAAKgH,MAAMS,GACpB,GAAInD,EAAOxE,KAAKgK,QAAQrC,GAC7B,OAAOnD,EAAOxE,KAAKkH,MAAMS,GAEzB,MAAM,IAAI7H,MAAM,uD,EAIpB0E,EAAO2F,UAAY,SAASxC,GAE1B,IACE,OAAOnD,EAAOtE,KAAKiK,UAAUxC,E,CAC7B,MAAOsC,GAEP,IACE,OAAOzF,EAAOxE,KAAKmK,UAAUxC,E,CAC7B,MAAOsC,GAEP,MAAM,IAAInK,MAAM,4D,IAKtB0E,EAAOwG,cAAgB,SAAStC,GAC9B,IAAI7I,EAEJ,GAAe,KADfA,EAAS6I,EAAM7I,QAEb,OAAO,IAAI2E,EAAOxE,KAAK0I,GAClB,GAAe,KAAX7I,EACT,OAAO,IAAI2E,EAAOtE,KAAKwI,GAEvB,MAAM,IAAI5I,MAAM,+D,EAIpB0E,EAAOyG,QAAU,SAAStD,GACxB,IAAIgB,EAEJ,MAAoB,UADpBA,EAAO3D,KAAKkC,MAAMS,IACT7B,QAAqB6C,EAAKvI,sBAC1BuI,EAAKU,gBAELV,C,CAIZ,GAAEE,KAAK7D,E,uBC7pBR,MAAMkG,EAAY,SAAUC,GACzB,IAAKC,EAAUD,GACZ,MAAM,IAAIrL,MAAM,oBAAsBqL,GAIzC,MAAME,GAFNF,EAAIA,EAAEG,eAEO7L,MAAM,SACnB,GAAI4L,EAAGxL,OAAS,EACb,MAAM,IAAIC,MAAM,oBAAsBqL,GAGzC,IAAII,EAAW,GACf,GAAiB,GAAbF,EAAGxL,QAGJ,GADA0L,EAAWJ,EAAE1L,MAAM,OACK,IAApB8L,EAAS1L,OACV,MAAM,IAAIC,MAAM,oBAAsBqL,QAErC,GAAiB,GAAbE,EAAGxL,OAAa,CAExB,MAAM2L,EAAIH,EAAG,GACPI,EAAIJ,EAAG,GACPK,EAAKF,EAAE/L,MAAM,OACbkM,EAAKF,EAAEhM,MAAM,OACnB,IAAK,IAAIiE,KAAKgI,EACXH,EAAS7H,GAAKgI,EAAGhI,GAEpB,IAAK,IAAIA,EAAIiI,EAAG9L,OAAQ6D,EAAI,IAAKA,EAC9B6H,EAAS,GAAKI,EAAG9L,OAAS6D,IAAMiI,EAAGjI,EAAI,E,CAG7C,IAAK,IAAIA,EAAI,EAAGA,EAAI,IAAKA,OACFkI,IAAhBL,EAAS7H,KACV6H,EAAS7H,GAAK,QAEjB6H,EAAS7H,GAAKmI,EAASN,EAAS7H,GAAI,IAAK,GAE5C,OAAO6H,EAASrF,KAAK,I,EAGlB4F,EAAa,SAAUX,GAC1B,IAAKC,EAAUD,GACZ,MAAM,IAAIrL,MAAM,oBAAsBqL,GAQzC,MAAMI,GADNJ,GADAA,GADAA,GADAA,GADAA,GADAA,EAAID,EAAUC,IACRjD,QAAQ,QAAS,MACjBA,QAAQ,SAAU,MAClBA,QAAQ,QAAS,MACjBA,QAAQ,OAAQ,MAChBA,QAAQ,KAAM,MACDzI,MAAM,OACzB,IAAIsM,GAAgB,EAChBC,GAAkB,EAClBC,EAAa,EACbC,GAAe,EACfC,EAAU,EACd,IAAK,IAAIzI,EAAI,EAAGA,EAAI,IAAKA,EAAG,CACzB,MAAM0I,EAAUb,EAAS7H,GACzB,IAAI2I,EAAqB,MAAZD,EACTC,IAAUN,IACXG,EAAcxI,IAEZ2I,GAASN,IACXI,EAAUzI,EAAIwI,GAEbC,EAAU,GAAKA,EAAUF,IAC1BD,EAAiBE,EACjBD,EAAaE,GAEhBJ,EAA6B,MAAZK,C,CAsBpB,OApBIL,IACDI,EAAU,EAAID,GAEbC,EAAU,GAAKA,EAAUF,IAC1BD,EAAiBE,EACjBD,EAAaE,GAIZH,GAAkB,GAAKC,EAAa,GACrCV,EAASe,OAAON,EAAgBC,EAAY,MAO/Cd,GADAA,GADAA,GAFAA,EAAII,EAASrF,KAAK,MAEZgC,QAAQ,SAAU,OAClBA,QAAQ,OAAQ,OAChBA,QAAQ,OAAQ,OAChBA,QAAQ,KAAM,K,EAMjBkD,EAAY,SAAUD,GACzB,MAAO,mBAAmB1I,KAAK0I,E,EAG5BU,EAAW,SAAUU,EAAGC,EAAGhB,GAC9B,MAAMiB,EAAUD,EAAEE,OAAOlB,GAIzB,OAHIe,EAAE1M,OAAS4M,EAAQ5M,SACpB0M,EAAIE,EAAQhE,UAAU,EAAGgE,EAAQ5M,OAAS0M,EAAE1M,QAAU0M,GAElDA,C,EAMJI,EAAW,SAAUC,GACxB,OAAOvL,SAASuL,EAAK,GAAG7J,SAAS,G,EAG9B8J,EAAY,SAAUlE,GACzB,MACM4C,EADQL,EAAUvC,GACDlJ,MAAM,KAC7B,IAAIqN,EAAU,GACd,IAAK,MAAMV,KAAWb,EACnBuB,GAAWjB,EAXPxK,SAWyB+K,EAXX,IAAIrJ,SAAS,GAWQ,IAAK,IAE/C,OAAO+J,C,EAGJC,EAAY,SAAUH,GACzB,MAAMjE,EAAO,GACb,IAAK,IAAIjF,EAAI,EAAGA,EAAI,IAAKA,EAAG,CACzB,MAAMsJ,EAAUJ,EAAI7C,OAAW,GAAJrG,EAAQ,IAC7BuJ,EAAapB,EAASc,EAASK,GAAU,IAAK,GACpDrE,EAAK/I,KAAKqN,E,CAEb,OAAOtE,EAAKzC,KAAK,I,EA0HjBrH,EAAQqM,UAAYA,EACpBrM,EAAQiN,WAAaA,EACrBjN,EAAQqO,aAzHU,SAAUvE,EAAMwE,EAAOC,EAAOC,EAAOC,GACvD,IAAKlC,EAAUzC,GACZ,MAAM,IAAI7I,MAAM,oBAAsB6I,GAMzC,GAFA0E,GAAS,EACTD,GAFAA,GAAS,IAEQ,KAHjBD,GAAS,GAIG,GAAKC,EAAQ,GAAKD,EAAQ,KAAOC,EAAQ,KAAOD,EAAQC,EACjE,MAAM,IAAItN,MAAM,kBAEnB,MAAMyN,EAAM,GAENC,EADUX,EAAUlE,GACCoB,OAAO,EAAGoD,GAC/BM,EAAc,IAAIf,OAAO,IAAMU,GAC/BM,EAAa9J,KAAK+G,IAAI,EAAGyC,EAAQD,GACvC,IAAK,IAAIzJ,EAAI,EAAGA,EAAIgK,KACXL,GAAS3J,GAAK2J,KADW3J,EAAG,CAIlC,MAAMiK,EAAY9B,EAASnI,EAAEX,SAAS,GAAI,IAAKqK,EAAQD,GAEjDS,EAAUb,EADGS,EAAaG,EAAYF,GAEtCH,EACHC,EAAI3N,KAAKkM,EAAW8B,IAEpBL,EAAI3N,KAAKgO,E,CAQf,OAAOL,C,EAwFP1O,EAAQmI,MArFG,SAAU2B,EAAMwE,EAAOC,EAAOE,GACzC,IAAKlC,EAAUzC,GACZ,MAAM,IAAI7I,MAAM,oBAAsB6I,GAKzC,GADAyE,GADAA,GAAS,IACQ,KAFjBD,GAAS,GAGG,GAAKC,EAAQ,GAAKD,EAAQ,KAAOC,EAAQ,KAAOD,EAAQC,EACjE,MAAM,IAAItN,MAAM,kBAEnB,MACM0N,EADUX,EAAUlE,GACCoB,OAAO,EAAGoD,GAC/BM,EAAc,IAAIf,OAAO,IAAMU,GAC/BS,EAAeL,EAAa,IAAId,OAAOU,EAAQD,GAASM,EACxDK,EAAaN,EAAa,IAAId,OAAOU,EAAQD,GAASM,EAC5D,OAAMH,EACI,CACJS,MAAOjC,EAAWiB,EAAUc,IAC5BG,IAAKlC,EAAWiB,EAAUe,IAC1BG,KAAMrK,KAAK+G,IAAI,EAAGyC,EAAQD,IAGtB,CACJY,MAAOhB,EAAUc,GACjBG,IAAKjB,EAAUe,GACfG,KAAMrK,KAAK+G,IAAI,EAAGyC,EAAQD,G,EA6DhCtO,EAAQqP,aAxDU,SAAUvF,EAAMwE,EAAOC,EAAOC,EAAOC,GACvD,IAAKlC,EAAUzC,GACZ,MAAM,IAAI7I,MAAM,oBAAsB6I,GAOzC,GAFAyE,GAFAA,GAAS,IAEQ,IACjBC,GAFAA,GAAS,IAEQ,GAJjBF,GAAS,GAKG,GAAKC,EAAQ,GAAKD,EAAQ,KAAOC,EAAQ,KAAOD,EAAQC,EACjE,MAAM,IAAItN,MAAM,kBAEnB,MAAMyN,EAAM,GAENC,EADUX,EAAUlE,GACCoB,OAAO,EAAGoD,GAC/BM,EAAc,IAAIf,OAAO,IAAMU,GAC/BM,EAAa9J,KAAK+G,IAAI,EAAGyC,EAAQD,GACvC,IAAK,IAAIzJ,EAAI,EAAGA,EAAIgK,GAAchK,EAAI2J,IAAS3J,EAAG,CAE/C,IAAIiK,EAAY,GAChB,IAAK,IAAIlD,EAAI,EAAGA,EAAI2C,EAAQD,IAAS1C,EAClCkD,GAAa/J,KAAK8G,MAAsB,EAAhB9G,KAAKuK,UAEhC,MACMP,EAAUb,EADGS,EAAaG,EAAYF,GAEtCH,EACHC,EAAI3N,KAAKkM,EAAW8B,IAEpBL,EAAI3N,KAAKgO,E,CAOf,OAAOL,C,EAsBP1O,EAAQuP,IAnBC,SAAUzF,EAAM0F,GACzB,IAAKjD,EAAUzC,GACZ,MAAM,IAAI7I,MAAM,oBAAsB6I,GAGzC,IADA0F,GAAQ,GACG,GAAKA,EAAO,KAAOzK,KAAK8G,MAAM2D,EAAO,IAAMA,EAAO,EAC1D,MAAM,IAAIvO,MAAM,kBAInB,OAFiBoL,EAAUvC,GACFT,QAAQ,KAAM,IAAIzI,MAAM,IAAIsI,UACtC1B,MAAM,GAAI,IAAMgI,GAAQ,GAAGnI,KAAK,I,cCxPlCvG,EAAKgJ,GACnB,OAAOnE,EAAOwF,QAAQrB,E,CAGxB,SAAgB2F,EAAQ3F,GACtB,IACE,IACM7C,EADatB,EAAO0C,MAAMyB,GACR7C,OAExB,MAAa,SAATA,EACK,EACW,SAATA,EACF,EAGA,C,CAET,MAAOyI,GACP,OAAO,C,EAIX,SAAgBC,EAAK7F,GACnB,OAAyB,IAAlB2F,EAAQ3F,E,CAGjB,SAAgB8F,EAAK9F,GACnB,OAAyB,IAAlB2F,EAAQ3F,E,CAGjB,SAAgB+F,EAAQ1H,GACtB,IAEE,OADaxC,EAAO2F,UAAUnD,IACvB,C,CACP,MAAOuH,GACP,OAAO,C,EAIX,SAAgBI,EAAQhG,EAAc3B,GACpC,GAAqB,iBAAVA,EAmBJ,IAAIA,GAA0B,iBAAVA,EAAoB,CAE7C,IAAK,IAAM4H,KAAe5H,EACxB,IAA0C,IAAtC2H,EAAQhG,EAAM3B,EAAM4H,IACtB,OAAO,EAGX,OAAO,C,CAEP,OAAO,C,CA3BP,IAA4B,IAAxB5H,EAAM6C,QAAQ,KAgBhB,OAHAlB,EAAO8F,EAAK9F,GAAQkG,EAAI3D,UAAUvC,GAAQA,EAGnChJ,EAFPqH,EAAQyH,EAAKzH,GAAS6H,EAAI3D,UAAUlE,GAASA,IAEb2B,IAAS3B,EAfzC,IACE,IAAM8H,EAAa9H,EAAMvH,MAAM,KAEzBsP,EAAavK,EAAO0C,MAAMyB,GAC1BqG,EAAcxK,EAAO0C,MAAM4H,EAAW,IAG5C,OAAOC,EAAWpM,MAAMqM,EAAaF,EAAW,G,CAChD,MAAOP,GACP,OAAO,C,EAqBf,SAAgBU,EAAQtG,GACtB,IACE,IAAIoG,EAAavK,EAAO0C,MAAMyB,GAC1B7C,EAAOiJ,EAAWjJ,OAEtB,MAAa,SAATA,EAEK6C,EACW,SAAT7C,EAELiJ,EAAW3O,sBAGN2O,EAAW1F,gBAAgBtG,WAG3B8L,EAAI/C,WAAWnD,GAGjB,I,CAET,MAAO4F,GACP,OAAO,I,EAIX,SAGgBW,EAAUvG,GACxB,IACE,IAAIoG,EAAavK,EAAO0C,MAAMyB,GAC1B7C,EAAOiJ,EAAWjJ,OAEtB,MAAa,SAATA,EAEK6C,EACW,SAAT7C,EAELiJ,EAAW3O,sBAGN2O,EAAW1F,gBAAgBtG,WAG3B8L,EAAI3D,UAAUvC,GAGhB,E,CAET,MAAO4F,GACP,MAAO,E,iFCxHXY,OAAOC,UAAUC,GAAG,iBAAiB,MAGnCC,cAAcC,QAAQC,UAAUC,UAC5BH,cAAcC,QAAQC,UAAUE,QAChCC,IAAIC,uBAAuBN,cAAcC,QAAQC,UAAUK,qBAE3DF,IAAIG,SAAS,MAAO,iBAAiBH,IAAII,mBAC9C,IAKDZ,OAAOC,UAAUC,GAAG,0BAA0B,CAACW,EAAOC,KAErD,IACC,IAAKX,cAAcC,QAAQC,UAAUE,OAAQ,OAE7CQ,IAAI,QAAS,YAAaD,EAAQT,SAASW,YAAa,CACvDC,QAASH,EAAQT,SAASa,UAI5B,CAFE,MAAOC,GACRC,QAAQD,MAAMA,EACf,KAKDnB,OAAOC,UAAUC,GAAG,8BAA8B,CAACW,EAAOC,KAEzD,IACC,IAAKX,cAAcC,QAAQC,UAAUE,OAAQ,OAE7CQ,IAAI,QAAS,mBAAoBD,EAAQT,SAASW,YAAa,CAC9DC,QAASH,EAAQT,SAASa,UAI5B,CAFE,MAAOC,GACRC,QAAQD,MAAMA,EACf,KAKDnB,OAAOC,UAAUC,GAAG,8BAA8B,CAACW,EAAOC,KAEzD,IACC,IAAKX,cAAcC,QAAQC,UAAUE,OAAQ,OAE7CQ,IAAI,QAAS,gBAAiBD,EAAQT,SAASW,YAAa,CAC3DC,QAASH,EAAQT,SAASa,UAI5B,CAFE,MAAOC,GACRC,QAAQD,MAAMA,EACf,KAKDnB,OAAOC,UAAUC,GAAG,yBAAyB,CAACW,EAAOC,KAEpD,IACC,IAAKX,cAAcC,QAAQC,UAAUE,OAAQ,OAE7CQ,IAAI,QAAS,cAAeD,EAAQT,SAASW,YAAa,CACzDC,QAASH,EAAQT,SAASa,UAI5B,CAFE,MAAOC,GACRC,QAAQD,MAAMA,EACf,KAMDnB,OAAOC,UAAUC,GAAG,uBAAuB,CAACW,EAAOC,KAElD,IACC,IAAKX,cAAcC,QAAQC,UAAUE,OAAQ,OAE7CQ,IAAI,QAAS,SAAUD,EAAQT,SAASW,YAAa,CACpDC,QAASH,EAAQT,SAASa,UAI5B,CAFE,MAAOC,GACRC,QAAQD,MAAMA,EACf,KAIDnB,OAAOC,UAAUC,GAAG,iBAAiB,KAEpC,IACC,IAAKC,cAAcC,QAAQC,UAAUE,OAAQ,OAE7CC,IAAIa,eAGL,CAFE,MAAOF,GACRC,QAAQD,MAAMA,EACf,KAKDnB,OAAOC,UAAUC,GAAG,kCAAkC,CAACW,EAAOC,KAE7D,IACC,IAAKX,cAAcC,QAAQC,UAAUE,OAAQ,OAE7CQ,IAAI,QAAS,WAAYD,EAAQT,SAASW,YAAa,CACtDC,QAASH,EAAQT,SAASa,UAI5B,CAFE,MAAOC,GACRC,QAAQD,MAAMA,EACf,I,UClHA,SAAUX,EAAKc,EAAG7E,GAElB,IAAI8E,EAEJf,EAAII,kBAAoB,KAEvB,IACCT,aAAaC,OAAOC,SAASE,QAAS,EAG5BiB,EAMuBC,OANrBC,EAM6BzB,SAN3B0B,EAMoC,SAL9CH,EAAET,MAAW1E,EAAEmF,EAAET,IAAI,WAAW1E,EAAEuF,WACrCvF,EAAEuF,WAAWhL,MAAMyF,EAAEwF,WAAWxF,EAAEyF,MAAMrR,KAAKoR,UAAU,EACnDL,EAAEO,OAAKP,EAAEO,KAAK1F,GAAEA,EAAE5L,KAAK4L,EAAEA,EAAEkE,QAAO,EAAGlE,EAAE8C,QAAQ,MACnD9C,EAAEyF,MAAM,IAAGE,EAAEN,EAAEO,cAAcN,IAAKO,OAAM,EACxCF,EAAEG,IAEF,kDAFQhN,EAAEuM,EAAEU,qBAAqBT,GAAG,IAClCU,WAAWC,aAAaN,EAAE7M,IAI7B,IAAIoN,EAAO,CAAC,EAIR/B,EAAIgC,YAAchC,EAAIiC,gCACzBF,EAAO,IAAI/B,EAAIkC,4BAGhB3B,IAAI,OAAQZ,aAAaC,OAAOC,SAASC,SAAUiC,GACnDxB,IAAI,QAAS,WAId,CAFE,MAAOY,GACRP,QAAQD,MAAMQ,EACf,CAvBE,IAASH,EAAEE,EAAEC,EAAItF,EAAE2F,EAAE7M,CAuBvB,EAIDqL,EAAIkC,wBAA0B,KAE7B,IAAIH,EAAO,CAAC,EAsCZ,OAnCIpC,cAAcwC,MAAMC,IAAIC,MAAKN,EAAKO,YAAc3C,aAAawC,KAAKC,GAAGC,KACrE1C,cAAc4C,OAAOC,UAAST,EAAKO,YAAc3C,aAAa4C,MAAMC,SAGpE7C,cAAcwC,MAAMM,OAAO5C,WAAUkC,EAAKW,GAAK/C,aAAawC,KAAKM,MAAM5C,UACvEF,cAAc4C,OAAOI,uBAAsBZ,EAAKW,GAAK/C,aAAa4C,MAAMI,sBAGxEhD,cAAcwC,MAAMS,YAAY/C,WAAUkC,EAAKc,GAAKlD,aAAawC,KAAKS,WAAW/C,UACjFF,cAAc4C,OAAOO,qBAAoBf,EAAKc,GAAKlD,aAAa4C,MAAMO,mBAAmBnH,eAGzFgE,cAAcwC,MAAMY,WAAWlD,WAAUkC,EAAKiB,GAAKrD,aAAawC,KAAKY,UAAUlD,UAC/EF,cAAc4C,OAAOU,oBAAmBlB,EAAKiB,GAAKrD,aAAa4C,MAAMU,kBAAkBtH,eAGvFgE,cAAcwC,MAAMe,OAAOrD,WAAUkC,EAAKoB,GAAKxD,aAAawC,KAAKe,MAAMrD,UACvEF,cAAc4C,OAAOa,gBAAerB,EAAKoB,GAAKxD,aAAa4C,MAAMa,cAAc7K,QAAQ,IAAK,KAG5FoH,cAAcwC,MAAMkB,MAAMxD,WAAUkC,EAAKuB,GAAK3D,aAAawC,KAAKkB,KAAKxD,UACrEF,cAAc4C,OAAOgB,eAAcxB,EAAKuB,GAAK3D,aAAa4C,MAAMgB,aAAa5H,cAAcpD,QAAQ,KAAM,KAGzGoH,cAAcwC,MAAMqB,OAAO3D,WAAUkC,EAAK0B,GAAK9D,aAAawC,KAAKqB,MAAM3D,UACvEF,cAAc4C,OAAOmB,gBAAe3B,EAAK0B,GAAK9D,aAAa4C,MAAMmB,cAAc/H,cAAcpD,QAAQ,eAAgB,KAGrHoH,cAAcwC,MAAMwB,UAAU9D,WAAUkC,EAAK6B,GAAKjE,aAAawC,KAAKwB,SAAS9D,UAC7EF,cAAc4C,OAAOsB,mBAAkB9B,EAAK6B,GAAKjE,aAAa4C,MAAMsB,kBAGpElE,cAAcwC,MAAM2B,SAASjE,WAAUkC,EAAK+B,QAAUnE,aAAawC,KAAK2B,QAAQjE,UAChFF,cAAc4C,OAAOwB,kBAAiBhC,EAAK+B,QAAUnE,aAAa4C,MAAMwB,gBAAgBpI,eAErFoG,CAAI,EAGZ/B,EAAIgE,mBAAqB,KAAO/P,KAAKuK,SAAW,GAAGpL,SAAS,IAAI0F,UAAU,GAE1EkH,EAAIiE,cAAgB,KAmBnBlD,EAAa,IAAIA,KAAef,EAAIkE,4BAE7BnD,GAGRf,EAAIiC,4BAA8B,MAC7BtC,cAAcC,QAAQC,UAAUsE,kBAOrCnE,EAAIa,cAAgB,KACnBE,EAAaf,EAAIkE,0BAA0B,EAG5ClE,EAAIkE,yBAA2B,KAE9B,IACCnC,EAAO,CAAC,EAgBT,OAdI/B,EAAIoE,UAAU,SAAWpE,EAAIqE,WAAWrE,EAAIoE,UAAU,WACzDrC,EAAKuC,IAAMtE,EAAIoE,UAAU,SAGtBpE,EAAIoE,UAAU,SAAWpE,EAAIuE,WAAWvE,EAAIoE,UAAU,WACzDrC,EAAKyC,IAAMxE,EAAIoE,UAAU,SAGtBpE,EAAIiC,+BACHtC,cAAcwC,MAAMC,IAAIC,MAAKN,EAAKO,YAAc3C,aAAawC,KAAKC,GAAGC,KAGtEoC,UAAUC,YAAW3C,EAAK4C,kBAAoBF,UAAUC,WAErD3C,CAAI,EAGZ/B,EAAIgC,SAAW,MACLhC,EAAIoE,UAAU,QAIxBpE,EAAIqE,WAAaC,GAEP,IAAI9P,OAAO,iCAEV1B,KAAKwR,GAIhBtE,EAAIuE,WAAaC,GAEP,IAAIhQ,OAAO,wCAEV1B,KAAK0R,GA2ChBxE,EAAI4E,6BAA+BC,IAC3B,CACNC,aAAc,UACdC,aAAcF,EAAQG,KACtBC,YAAc,CACbJ,EAAQK,UAAUvF,aAAaC,OAAOC,SAASsF,oBAAoBC,UAEpElN,MAAcmN,WAAWR,EAAQS,SAAWT,EAAQU,OACpDC,SAAcX,EAAQW,WAIxBxF,EAAIyF,mBAAqB,KACxB,IAAIC,EAAU,GAEd,IAAK,MAAOC,EAAKC,KAASjV,OAAOkV,QAAQlG,aAAa4C,MAAMuD,OAEvDnG,cAAcoG,SAASC,kBAAoB,IAAMJ,EAAKK,aACzDP,EAAQzV,KAAKiW,OAAOvG,aAAawG,SAASP,EAAKK,cAAcf,UAAUvF,aAAaC,OAAOC,SAASsF,oBAAoBC,WAExHM,EAAQzV,KAAKiW,OAAOvG,aAAawG,SAASP,EAAKxD,IAAI8C,UAAUvF,aAAaC,OAAOC,SAASsF,oBAAoBC,WAIhH,OAAOM,CAAO,EAGf1F,EAAIoG,yBAA2B,SAACC,GAA+B,IAApBC,EAAa,UAAH,wCAAG,CAAC,EACxD,IACC,IAAK3G,cAAcC,QAAQC,UAAUE,OAAQ,OAE7C,IAAIwG,EAAUvG,EAAIgE,qBAElBzD,IAAI,cAAe8F,EAAWC,EAAY,CACzC7F,QAAS8F,IAGV/G,OAAOC,UAAU+G,QAAQ,iBAAkB,CAC1CC,WAAkBJ,EAClB3F,SAAkB6F,EAClBG,UAAkB1G,EAAIiE,gBACtB0C,iBAAkB1F,OAAO2F,SAASC,KAClCrG,YAAkB8F,GAIpB,CAFE,MAAOnF,GACRP,QAAQD,MAAMQ,EACf,CACD,EAEAnB,EAAI8G,wBAA0B,KAE7B,IAAI7B,EAAc,GAElB,IAAK,MAAMU,KAAOhG,aAAaoH,KAC9B9B,EAAYhV,KAAK0P,aAAawG,SAASR,GAAKT,UAAUvF,aAAaC,OAAOC,SAASsF,oBAAoBC,UAGxG,OAAOH,CAAW,CAGnB,CApQA,CAoQChE,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,O,eCpQjCwH,EAAQ,GACRA,EAAQ,I,WCARxH,OAAOC,UAAUC,GAAG,mBAAmB,SAAUW,EAAOwE,GAEvD,IACC,GAAIrF,OAAOyH,cAActH,cAAcC,QAAQsH,QAAQC,KAAKC,eAAgB,OAC5E,IAAKzH,cAAcC,QAAQsH,QAAQC,KAAKhC,qBAAqBkC,OAAQ,OACrE,IAAKrH,IAAIsH,0BAA0B,OAAQ,OAG3C,GACC3H,cAAcoG,SAASC,kBACvBnB,EAAQ0C,aAC2E,IAAnF5H,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBqC,4BAClD,OAGF,IAAK3C,EAAS,OAEd,IAAI9C,EAAO,CACV0F,QAASzH,IAAI0H,oCACb5B,MAAS,CAAC,CACT1D,GAA0ByC,EAAQK,UAAUvF,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBC,SAC/FuC,yBAA0BhI,aAAaC,OAAOsH,OAAOC,IAAIQ,4BAIvDhI,cAAcwC,MAAMC,IAAIC,MAC3BN,EAAKS,QAAU7C,aAAawC,KAAKC,GAAGC,KAGrCrC,IAAI4H,aAAaC,MAAK,WACrBC,KAAK,QAAS,iBAAkB/F,EACjC,GAGD,CAFE,MAAOZ,GACRP,QAAQD,MAAMQ,EACf,CACD,IAGA3B,OAAOC,UAAUC,GAAG,gBAAgB,SAAUW,EAAOwE,GAEpD,IACC,GAAIrF,OAAOyH,cAActH,cAAcC,QAAQsH,QAAQC,KAAKC,eAAgB,OAC5E,IAAKzH,cAAcC,QAAQsH,QAAQC,KAAKhC,qBAAqBkC,OAAQ,OACrE,IAAKrH,IAAIsH,0BAA0B,OAAQ,OAE3C,IAAIvF,EAAO,CACV0F,QAASzH,IAAI0H,oCACbxP,MAAS2M,EAAQS,SAAWT,EAAQU,MACpCO,MAAS,CAAC,CACT1D,GAA0ByC,EAAQK,UAAUvF,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBC,SAC/FE,SAA0BT,EAAQS,SAClCC,MAA0BV,EAAQU,MAClCoC,yBAA0BhI,aAAaC,OAAOsH,OAAOC,IAAIQ,4BAIvDhI,cAAcwC,MAAMC,IAAIC,MAC3BN,EAAKS,QAAU7C,aAAawC,KAAKC,GAAGC,KAGrCrC,IAAI4H,aAAaC,MAAK,WACrBC,KAAK,QAAS,cAAe/F,EAC9B,GAGD,CAFE,MAAOZ,GACRP,QAAQD,MAAMQ,EACf,CACD,IAGA3B,OAAOC,UAAUC,GAAG,eAAe,SAACW,GAA0B,IAAnBwE,EAAU,UAAH,6CAAG,KAEpD,IACC,GAAIrF,OAAOyH,cAActH,cAAcC,QAAQsH,QAAQC,KAAKC,eAAgB,OAC5E,IAAKzH,cAAcC,QAAQsH,QAAQC,KAAKhC,qBAAqBkC,OAAQ,OACrE,IAAKrH,IAAIsH,0BAA0B,OAAQ,OAE3C,IAAIvF,EAAO,CACV0F,QAASzH,IAAI0H,qCAGV7C,IACH9C,EAAK7J,OAAS2M,EAAQS,SAAWT,EAAQS,SAAW,GAAKT,EAAQU,MACjExD,EAAK+D,MAAQ,CAAC,CACb1D,GAA0ByC,EAAQK,UAAUvF,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBC,SAC/FE,SAA2BT,EAAQS,SAAWT,EAAQS,SAAW,EACjEC,MAA0BV,EAAQU,MAClCoC,yBAA0BhI,aAAaC,OAAOsH,OAAOC,IAAIQ,4BAIvDhI,cAAcwC,MAAMC,IAAIC,MAC3BN,EAAKS,QAAU7C,aAAawC,KAAKC,GAAGC,KAGrCrC,IAAI4H,aAAaC,MAAK,WACrBC,KAAK,QAAS,YAAa/F,EAC5B,GAGD,CAFE,MAAOZ,GACRP,QAAQD,MAAMQ,EACf,CACD,IAIA3B,OAAOC,UAAUC,GAAG,mBAAmB,WAEtC,IACC,GAAIF,OAAOyH,cAActH,cAAcC,QAAQsH,QAAQC,KAAKC,eAAgB,OAC5E,IAAKzH,cAAcC,QAAQsH,QAAQC,KAAKhC,qBAAqBkC,OAAQ,OACrE,IAAKrH,IAAIsH,0BAA0B,OAAQ,OAG3C,IAAInB,EAAW,GAEf,IAAK,MAAOR,EAAKd,KAAYlU,OAAOkV,QAAQlG,aAAawG,UAAW,CAEnE,GACCxG,cAAcoG,SAASC,kBACvBnB,EAAQ0C,aAC2E,IAAnF5H,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBqC,4BAClD,OAEFrB,EAASlW,KAAK,CACbmS,GAA0ByC,EAAQK,UAAUvF,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBC,SAC/FuC,yBAA0BhI,aAAaC,OAAOsH,OAAOC,IAAIQ,0BAE3D,CAIA,IAAI5F,EAAO,CACV0F,QAASzH,IAAI0H,oCAEb5B,MAAOK,GAGJxG,cAAcwC,MAAMC,IAAIC,MAC3BN,EAAKS,QAAU7C,aAAawC,KAAKC,GAAGC,KAGrCrC,IAAI4H,aAAaC,MAAK,WACrBC,KAAK,QAAS,sBAAuB/F,EACtC,GAGD,CAFE,MAAOZ,GACRP,QAAQD,MAAMQ,EACf,CACD,IAKA3B,OAAOC,UAAUC,GAAG,wBAAwB,WAE3C,IACC,GAAIF,OAAOyH,cAActH,cAAcC,QAAQsH,QAAQC,KAAKC,eAAgB,OAC5E,IAAKzH,cAAcC,QAAQsH,QAAQC,KAAKhC,qBAAqBkC,OAAQ,OACrE,IAAKrH,IAAIsH,0BAA0B,OAAQ,OAE3C,IAAIvF,EAAO,CACV0F,QAASzH,IAAI0H,oCACbxP,MAASyH,aAAa4C,MAAMwF,eAC5BjC,MAAS9F,IAAIgI,4CAGVrI,cAAcwC,MAAMC,IAAIC,MAC3BN,EAAKS,QAAU7C,aAAawC,KAAKC,GAAGC,KAGrCrC,IAAI4H,aAAaC,MAAK,WACrBC,KAAK,QAAS,WAAY/F,EAC3B,GAKD,CAFE,MAAOZ,GACRP,QAAQD,MAAMQ,EACf,CACD,IAGA3B,OAAOC,UAAUC,GAAG,YAAY,WAE/B,IACC,GAAIF,OAAOyH,cAActH,cAAcC,QAAQsH,QAAQC,KAAKC,eAAgB,OAC5E,IAAKzH,cAAcC,QAAQsH,QAAQC,KAAKhC,qBAAqBkC,OAAQ,OACrE,IAAKrH,IAAIsH,0BAA0B,OAAQ,OAE3C,IAAIvF,EAAO,CACV0F,QAASzH,IAAI0H,qCAGV/H,cAAcwC,MAAMC,IAAIC,MAC3BN,EAAKS,QAAU7C,aAAawC,KAAKC,GAAGC,KAGrCrC,IAAI4H,aAAaC,MAAK,WACrBC,KAAK,QAAS,QAAS/F,EACxB,GAGD,CAFE,MAAOZ,GACRP,QAAQD,MAAMQ,EACf,CACD,IAIA3B,OAAOC,UAAUC,GAAG,wBAAwB,WAE3C,IACC,GAAIF,OAAOyH,cAAcjH,IAAIiI,8CAA+C,OAC5E,IAAKjI,IAAIsH,0BAA0B,OAAQ,OAE3C,IAAIY,EAAiB,CAAC,EAClBC,EAAiB,CAAC,EAEtBD,EAAa,CACZT,QAAgBzH,IAAIiI,6CACpBG,eAAgBzI,aAAa4C,MAAM8F,OACnCnQ,MAAgByH,aAAa4C,MAAMwF,eACnCvC,SAAgB7F,aAAa4C,MAAMiD,SACnC8C,aAAgB3I,aAAa4C,MAAM+F,cAGhC3I,cAAc4C,OAAOgG,2BACxBL,EAAWM,wBAA0B7I,aAAa4C,MAAMgG,0BAGrD5I,cAAcwC,MAAMC,IAAIC,MAC3B6F,EAAW1F,QAAU7C,aAAawC,KAAKC,GAAGC,KAGvC1C,cAAc4C,OAAOkG,iBACxBN,EAAiB,CAChBO,SAAkB/I,aAAa4C,MAAMmG,SACrCD,eAAkB9I,aAAa4C,MAAMkG,eACrCE,gBAAkBhJ,aAAa4C,MAAMoG,gBACrCC,iBAAkBjJ,aAAa4C,MAAMqG,iBACrC9C,MAAkB9F,IAAI6I,kCAIxB7I,IAAI4H,aAAaC,MAAK,WACrBC,KAAK,QAAS,aAAc,IAAII,KAAeC,GAChD,GAKD,CAFE,MAAOhH,GACRP,QAAQD,MAAMQ,EACf,CACD,G,WCxPC,SAAUnB,EAAKc,EAAG7E,GAGlB+D,EAAIiI,2CAA6C,WAEhD,IAAIa,EAAwB,GAE5B,GAAInJ,cAAcC,QAAQsH,QAAQC,KAAKC,cACtC,IAAK,MAAOzB,EAAKC,KAASjV,OAAOkV,QAAQlG,aAAaC,OAAOsH,OAAOC,IAAIC,eACnExB,GACHkD,EAAsB7Y,KAAK0V,EAAM,IAAMC,GAK1C,OAAOkD,CACR,EAEA9I,EAAI0H,kCAAoC,WAEvC,IAAIoB,EAAwB,GAE5B,IAAK,MAAOnD,EAAKC,KAASjV,OAAOkV,QAAQlG,aAAaC,OAAOsH,OAAOC,IAAIC,eACvE0B,EAAsB7Y,KAAK0V,GAG5B,OAAOmD,CACR,EAEA9I,EAAI6I,8BAAgC,WAEnC,IAAIE,EAAa,GAEjB,IAAK,MAAOpD,EAAKC,KAASjV,OAAOkV,QAAQlG,aAAa4C,MAAMuD,OAAQ,CAEnE,IAAIkD,EAEJA,EAAY,CACX1D,SAAUM,EAAKN,SACfC,MAAUK,EAAKL,OAGZ5F,cAAcoG,SAASC,kBAAoB,IAAMJ,EAAKK,cAEzD+C,EAAU5G,GAAK8D,OAAOvG,aAAawG,SAASP,EAAKK,cAAcf,UAAUvF,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBC,UAC5H2D,EAAW9Y,KAAK+Y,KAGhBA,EAAU5G,GAAK8D,OAAOvG,aAAawG,SAASP,EAAKxD,IAAI8C,UAAUvF,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBC,UAClH2D,EAAW9Y,KAAK+Y,GAElB,CAEA,OAAOD,CACR,EAEA/I,EAAIgI,yCAA2C,WAE9C,IAAIe,EAAa,GAEjB,IAAK,MAAOpD,EAAKC,KAASjV,OAAOkV,QAAQlG,aAAa4C,MAAMuD,OAAQ,CAEnE,IAAIkD,EAEJA,EAAY,CACX1D,SAA0BM,EAAKN,SAC/BC,MAA0BK,EAAKL,MAC/BoC,yBAA0BhI,aAAaC,OAAOsH,OAAOC,IAAIQ,0BAGtDhI,cAAcoG,SAASC,kBAAoB,IAAMJ,EAAKK,cAEzD+C,EAAU5G,GAAK8D,OAAOvG,aAAawG,SAASP,EAAKK,cAAcf,UAAUvF,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBC,UAC5H2D,EAAW9Y,KAAK+Y,KAGhBA,EAAU5G,GAAK8D,OAAOvG,aAAawG,SAASP,EAAKxD,IAAI8C,UAAUvF,aAAaC,OAAOsH,OAAOC,IAAIhC,oBAAoBC,UAClH2D,EAAW9Y,KAAK+Y,GAElB,CAEA,OAAOD,CACR,CAEA,CApFA,CAoFC9H,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,O,gBCpFjCwH,EAAQ,IACRA,EAAQ,I,WCCRxH,OAAOC,UAAUC,GAAG,wBAAwB,WAE3C,IACC,IAAKC,cAAcC,QAAQsH,QAAQ+B,WAAWC,WAAWC,YAAa,OACtE,GAAIxJ,cAAcC,QAAQsH,QAAQ+B,WAAWC,WAAWE,UAAW,OACnE,IAAKpJ,IAAIsH,0BAA0B,aAAc,OAEjDtH,IAAI4H,aAAaC,MAAK,WACrBC,KAAK,QAAS,WAAY,CACzBL,QAAgB,CAAC9H,aAAaC,OAAOsH,OAAO+B,UAAUC,UAAUC,aAChEf,eAAgBzI,aAAa4C,MAAM8F,OACnCgB,YAAgB1J,aAAa4C,MAAM8G,YACnC7D,SAAgB7F,aAAa4C,MAAMiD,SACnCtN,MAAgByH,aAAa4C,MAAM+G,cACnCZ,SAAgB/I,aAAa4C,MAAMmG,SACnCa,IAAgB5J,aAAa4C,MAAMgH,IACnCC,SAAgB7J,aAAa4C,MAAMiH,SACnCC,OAAgB9J,aAAa4C,MAAMkH,OACnC3D,MAAgB9F,IAAI0J,qBAEtB,GAID,CAFE,MAAOvI,GACRP,QAAQD,MAAMQ,EACf,CACD,G,WC3BC,SAAUnB,EAAKc,EAAG7E,GAElB+D,EAAI0J,kBAAoB,WAYvB,IAAIX,EAAa,GAEjB,IAAK,MAAOpD,EAAKC,KAASjV,OAAOkV,QAAQlG,aAAa4C,MAAMuD,OAAQ,CAEnE,IAAIkD,EAEJA,EAAY,CACX1D,SAAUM,EAAKN,SACfC,MAAUK,EAAKL,MACfP,KAAUY,EAAKZ,KACfQ,SAAU7F,aAAa4C,MAAMiD,SAC7BmE,SAAUhK,aAAawG,SAASP,EAAKxD,IAAIuH,SAASpT,KAAK,MAGpDoJ,cAAcoG,SAASC,kBAAoB,IAAMJ,EAAKK,cAEzD+C,EAAU5G,GAAU8D,OAAOvG,aAAawG,SAASP,EAAKK,cAAcf,UAAUvF,aAAaC,OAAOsH,OAAO+B,UAAU7D,UACnH4D,EAAUY,QAAUjK,aAAawG,SAASP,EAAKK,cAAc4D,aAC7Db,EAAUc,MAAUnK,aAAawG,SAASP,EAAKK,cAAc6D,QAG7Dd,EAAU5G,GAAQ8D,OAAOvG,aAAawG,SAASP,EAAKxD,IAAI8C,UAAUvF,aAAaC,OAAOsH,OAAO+B,UAAU7D,UACvG4D,EAAUc,MAAQnK,aAAawG,SAASP,EAAKxD,IAAI0H,OAGlDd,EAAYhJ,EAAI+J,wBAAwBf,GAExCD,EAAW9Y,KAAK+Y,EACjB,CAEA,OAAOD,CACR,EAEA/I,EAAI+J,wBAA0B,SAAUC,GAAmC,IAAxBC,EAAkB,UAAH,wCAAG,KAgBpE,OANAD,EAAUE,UAAYvK,aAAawK,KAAKD,UAEpCD,IACHD,EAAUI,cAAgBH,GAGpBD,CACR,CAEA,CAlEA,CAkEC/I,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,O,gBClEjCwH,EAAQ,IACRA,EAAQ,I,WCCRxH,OAAOC,UAAUC,GAAG,wBAAwB,WAE3C,IACC,IAAKC,cAAcC,QAAQsH,QAAQ+B,WAAWoB,KAAKC,eAAgB,OACnE,GAAI3K,cAAcC,QAAQsH,QAAQ+B,WAAWoB,KAAKjB,UAAW,OAC7D,IAAKpJ,IAAIsH,0BAA0B,aAAc,OAEjDtH,IAAI4H,aAAaC,MAAK,WACrBC,KAAK,QAAS,WAAY,CACzBL,QAAgB,CAAC9H,aAAaC,OAAOsH,OAAO+B,UAAUoB,IAAIC,gBAC1DlC,eAAgBzI,aAAa4C,MAAM8F,OACnCgB,YAAgB1J,aAAa4C,MAAM8G,YACnC7D,SAAgB7F,aAAa4C,MAAMiD,SACnCtN,MAAgByH,aAAa4C,MAAM+G,cACnCZ,SAAgB/I,aAAa4C,MAAMmG,SACnCa,IAAgB5J,aAAa4C,MAAMgH,IACnCC,SAAgB7J,aAAa4C,MAAMiH,SACnCC,OAAgB9J,aAAa4C,MAAMkH,OACnC3D,MAAgB9F,IAAIuK,oBAEtB,GAGD,CAFE,MAAOpJ,GACRP,QAAQD,MAAMQ,EACf,CACD,G,YC1BC,SAAUnB,EAAKc,EAAG7E,GAElB+D,EAAIuK,iBAAmB,WAYtB,IAAIxB,EAAa,GAEjB,IAAK,MAAOpD,EAAKC,KAASjV,OAAOkV,QAAQlG,aAAa4C,MAAMuD,OAAQ,CAEnE,IAAIkD,EAEJA,EAAY,CACX1D,SAAeM,EAAKN,SACpBC,MAAeK,EAAKL,MACpBiF,UAAe5E,EAAKZ,KACpBQ,SAAe7F,aAAa4C,MAAMiD,SAClCiF,cAAe9K,aAAawG,SAASP,EAAKxD,IAAIuH,SAASpT,KAAK,MAGzDoJ,cAAcoG,SAASC,kBAAoB,IAAMJ,EAAKK,cAEzD+C,EAAU0B,QAAexE,OAAOvG,aAAawG,SAASP,EAAKK,cAAcf,UAAUvF,aAAaC,OAAOsH,OAAO+B,UAAU7D,UACxH4D,EAAU2B,aAAehL,aAAawG,SAASP,EAAKK,cAAc4D,aAClEb,EAAU4B,WAAejL,aAAawG,SAASP,EAAKK,cAAc6D,QAGlEd,EAAU0B,QAAaxE,OAAOvG,aAAawG,SAASP,EAAKxD,IAAI8C,UAAUvF,aAAaC,OAAOsH,OAAO+B,UAAU7D,UAC5G4D,EAAU4B,WAAajL,aAAawG,SAASP,EAAKxD,IAAI0H,OAGvDf,EAAW9Y,KAAK+Y,EACjB,CAEA,OAAOD,CACR,CAEA,CA7CA,CA6CC9H,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,O,gBC7CjCwH,EAAQ,KACRA,EAAQ,I,gBCDRA,EAAQ,KACRA,EAAQ,I,WCARxH,OAAOC,UAAUC,GAAG,iBAAiB,gBAEe,IAAxCC,cAAcC,QAAQsH,QAAQ1D,QACpCxD,IAAI6K,gBACP7K,IAAI8K,aAEJ9K,IAAI+K,yBAAyB,SAAU,mBAG1C,G,YCVC,SAAU/K,EAAKc,EAAG7E,GAElB+D,EAAIsH,0BAA6B0D,KAG5BrL,cAAcC,QAAQsH,QAAQ+D,cAAcC,SAEL,aAAhClL,EAAImL,mBAAmBC,MACkB,IAA5CpL,EAAImL,mBAAmBE,WAAWL,GACC,UAAhChL,EAAImL,mBAAmBC,MAC1BpL,EAAImL,mBAAmBvL,OAAO0L,SAAS,UAAYN,IAM5DhL,EAAIuL,sDAAyDC,IAExB,aAAhCxL,EAAImL,mBAAmBC,MAEtBpL,EAAImL,mBAAmBE,WAAWpC,YAAWuC,EAAwBC,kBAAoB,WACzFzL,EAAImL,mBAAmBE,WAAWlE,MAAKqE,EAAwBE,WAAa,YACrC,UAAhC1L,EAAImL,mBAAmBC,OAElCI,EAAwBC,kBAAoBzL,EAAImL,mBAAmBvL,OAAO0L,SAAS,oBAAsB,UAAY,SACrHE,EAAwBE,WAAoB1L,EAAImL,mBAAmBvL,OAAO0L,SAAS,cAAgB,UAAY,UAGzGE,GAGRxL,EAAI2L,wBAA0B,WAAkC,IAAjC1C,IAAY,UAAH,0CAAS9B,IAAM,UAAH,0CAEnD,IACC,IACElG,OAAO6G,OACPnI,aAAawK,KAAKyB,oBAAoBC,iBACtC,OAEF/D,KAAK,UAAW,SAAU,CACzB2D,kBAAmBxC,EAAY,UAAY,SAC3CyC,WAAmBvE,EAAM,UAAY,UAIvC,CAFE,MAAOhG,GACRP,QAAQD,MAAMQ,EACf,CACD,EAEAnB,EAAI8L,kBAAoB,KACvB,IAGC,GAFAnM,aAAaC,OAAOsH,OAAOC,IAAI3D,MAAQ,UAEnC7D,cAAcC,QAAQsH,QAAQC,KAAK4E,sBAAsBb,OAC5D,IAAK,MAAOvF,EAAKC,KAASjV,OAAOkV,QAAQlG,aAAaC,OAAOsH,OAAOC,IAAIC,eACvEU,KAAK,SAAUnC,EAAK,CAAC,4BAA8B,SAGpD,IAAK,MAAOA,EAAKC,KAASjV,OAAOkV,QAAQlG,aAAaC,OAAOsH,OAAOC,IAAIC,eACvEU,KAAK,SAAUnC,GAIbhG,cAAcC,QAAQsH,QAAQC,KAAKC,eAAiBzH,cAAcC,QAAQsH,QAAQC,KAAK6E,wBAA0BrM,cAAcC,QAAQsH,QAAQC,KAAK8E,yBACvJnE,KAAK,SAAUnX,OAAOub,KAAKvM,aAAaC,OAAOsH,OAAOC,IAAIC,eAAe,GAAK,IAAMzH,aAAaC,OAAOsH,OAAOC,IAAI6E,uBAAwB,CAC1IC,wBAAyBtM,aAAaC,OAAOsH,OAAOC,IAAI8E,0BAMtDtM,cAAcwK,MAAMgC,WAAa,wBAA0BxM,aAAawK,KAAKgC,WAAaxM,cAAc4C,OAAO2E,QAAQC,KAAKiF,0BAG/HtE,KAAK,MAAO,YAAanI,aAAa4C,MAAM2E,OAAOC,IAAIiF,0BAGxDzM,aAAaC,OAAOsH,OAAOC,IAAI3D,MAAQ,OAGxC,CAFE,MAAOrC,GACRP,QAAQD,MAAMQ,EACf,GAGDnB,EAAIqM,0BAA4B,KAE/B,IACC1M,aAAaC,OAAOsH,OAAO+B,UAAUC,UAAU1F,MAAQ,UAEvDsE,KAAK,SAAUnI,aAAaC,OAAOsH,OAAO+B,UAAUC,UAAUC,YAAaxJ,aAAaC,OAAOsH,OAAO+B,UAAUC,UAAUoD,YAC1H3M,aAAaC,OAAOsH,OAAO+B,UAAUC,UAAU1F,MAAQ,OAGxD,CAFE,MAAOrC,GACRP,QAAQD,MAAMQ,EACf,GAGDnB,EAAIuM,2BAA6B,KAEhC,IACC5M,aAAaC,OAAOsH,OAAO+B,UAAUoB,IAAI7G,MAAQ,UAEjD,IAAI8I,EAAa3M,aAAaC,OAAOsH,OAAO+B,UAAUoB,IAAIiC,WAEtD3M,cAAcC,QAAQsH,QAAQ+B,WAAWoB,KAAKmC,aACjDF,EAAWE,YAAa,GAGzB1E,KAAK,SAAUnI,aAAaC,OAAOsH,OAAO+B,UAAUoB,IAAIC,eAAgBgC,GAExE3M,aAAaC,OAAOsH,OAAO+B,UAAUoB,IAAI7G,MAAQ,OAGlD,CAFE,MAAOrC,GACRP,QAAQD,MAAMQ,EACf,GAGDnB,EAAIyM,eAAiB,OAGnB9M,cAAcC,QAAQsH,QAAQ+B,WAAWC,WAAWC,cACpDxJ,cAAcC,QAAQsH,QAAQ+B,WAAWoB,KAAKC,gBAC7C9K,OAAOyH,cAActH,cAAcC,QAAQsH,QAAQC,KAAKC,gBAQ3DpH,EAAI0M,gBAAkB,IAEjB/M,cAAcC,QAAQsH,QAAQ+B,WAAWC,WAAWC,YAChDxJ,aAAaC,OAAOsH,OAAO+B,UAAUC,UAAUC,YAC5CxJ,cAAcC,QAAQsH,QAAQ+B,WAAWoB,KAAKC,eACjD3K,aAAaC,OAAOsH,OAAO+B,UAAUoB,IAAIC,eAEzC3Z,OAAOub,KAAKvM,aAAaC,OAAOsH,OAAOC,IAAIC,eAAe,GAKnEpH,EAAI8K,WAAa,KAEZ9K,EAAIyM,mBAEP9M,aAAaC,OAAOsH,OAAO1D,MAAQ,UAEnCxD,EAAI2M,qBAAqB,+CAAiD3M,EAAI0M,mBAC5E7E,MAAK,CAAC+E,EAAQC,KAEd,IASC,GANA5L,OAAO6L,UAAY7L,OAAO6L,WAAa,GACvC7L,OAAO6G,KAAY,WAClBgF,UAAU7c,KAAKoR,UAChB,EAGI1B,cAAcC,QAAQsH,QAAQ+D,cAAcC,OAAQ,CAEvD,IAAIM,EAA0B,CAC7B,WAAqB7L,aAAaC,OAAOsH,OAAO+D,aAAaS,WAC7D,kBAAqB/L,aAAaC,OAAOsH,OAAO+D,aAAaQ,kBAC7D,gBAAqB9L,aAAaC,OAAOsH,OAAO+D,aAAa8B,iBAG1DpN,cAAcC,QAAQsH,QAAQ+D,cAAc+B,SAC/CxB,EAAwBwB,OAASrN,aAAaC,OAAOsH,OAAO+D,aAAa+B,QAG1ExB,EAA0BxL,EAAIuL,sDAAsDC,GAEpF1D,KAAK,UAAW,UAAW0D,GAC3B1D,KAAK,MAAO,qBAAsBnI,aAAaC,OAAOsH,OAAO+D,aAAagC,oBAC1EnF,KAAK,MAAO,kBAAmBnI,aAAaC,OAAOsH,OAAO+D,aAAaiC,gBACxE,CAIIvN,cAAcC,QAAQsH,QAAQiG,QAAQC,UACzCtF,KAAK,MAAO,SAAUnI,aAAaC,OAAOsH,OAAOiG,OAAOC,UAGzDtF,KAAK,KAAM,IAAIuF,MAGV7N,OAAOyH,cAActH,cAAcC,QAAQsH,QAAQC,KAAKC,iBACxDpH,EAAIsH,0BAA0B,OACjCtH,EAAI8L,oBAEJ9L,EAAI+K,yBAAyB,aAAc,QAKzCpL,cAAcC,QAAQsH,QAAQ+B,WAAWC,WAAWC,cAEnDnJ,EAAIsH,0BAA0B,aACjCtH,EAAIqM,4BAEJrM,EAAI+K,yBAAyB,6BAA8B,cAKzDpL,cAAcC,QAAQsH,QAAQ+B,WAAWoB,KAAKC,iBAE7CtK,EAAIsH,0BAA0B,aACjCtH,EAAIuM,6BAEJvM,EAAI+K,yBAAyB,MAAO,cAItCpL,aAAaC,OAAOsH,OAAO1D,MAAQ,OAGpC,CAFE,MAAOrC,GACRP,QAAQD,MAAMQ,EACf,KAEH,EAGDnB,EAAI6K,cAAgB,MAEflL,cAAcC,QAAQsH,QAAQ+D,cAAcC,SAErC,aAAelL,EAAImL,mBAAmBC,QACtCpL,EAAImL,mBAAmBE,WAAgB,MAAKrL,EAAImL,mBAAmBE,WAAsB,WACzF,UAAYrL,EAAImL,mBAAmBC,KACtCpL,EAAImL,mBAAmBvL,OAAO0L,SAAS,eAAiBtL,EAAImL,mBAAmBvL,OAAO0L,SAAS,qBAEtG1K,QAAQD,MAAM,6EACP,IAITX,EAAI4H,WAAa,IACT,IAAI0F,SAAQ,CAACC,EAASC,UAEuB,IAAxC7N,cAAcC,QAAQsH,QAAQ1D,OAAuBgK,IAEhE,IAAIC,EAAY,GAIhB,SAAUC,IACT,MAA4C,UAAxC/N,cAAcC,QAAQsH,QAAQ1D,MAA0B+J,IACxDE,GALW,IAKkBD,KACjCC,GALe,SAMfE,WAAWD,EANI,KAOf,CALD,EAKI,GAKN,CA7PA,CA6PCzM,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,O,gBC5PjCwH,EAAQ,KACRA,EAAQ,I,eCDRA,EAAQ,KAGRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,I,WCNRxH,OAAOC,UAAUC,GAAG,iBAAiB,WAEhCC,cAAcC,QAAQsH,QAAQ0G,UAAUC,eAAiBlO,cAAcC,QAAQsH,QAAQ0G,UAAU7N,QAChGC,IAAIG,SAAS,YAAa,oBAAoBH,IAAI8N,4BAExD,G,YCJC,SAAU9N,EAAKc,EAAG7E,GAElB+D,EAAI8N,2BAA6B,WAEhC,IACCnO,aAAaC,OAAOsH,OAAO0G,SAAS7N,QAAS,EAE7CC,EAAI2M,qBAAqB,iDAAmDhN,aAAaC,OAAOsH,OAAO0G,SAASC,aAOjH,CAFE,MAAO1M,GACRP,QAAQD,MAAMQ,EACf,CACD,CAEA,CAjBA,CAiBCF,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,O,gBClBjCwH,EAAQ,KACRA,EAAQ,I,WCARxH,OAAOC,UAAUC,GAAG,iBAAiB,WAEhCC,cAAcC,QAAQmO,QAAQC,UAAYrO,cAAcC,QAAQmO,QAAQhO,QACvEC,IAAIG,SAAS,YAAa,YAAcR,cAAcC,QAAQmO,QAAQhO,QAAQC,IAAIiO,mBAExF,G,YCNC,SAAUjO,EAAKc,EAAG7E,GAElB+D,EAAIiO,kBAAoB,WAEvB,IACCtO,aAAaC,OAAOmO,OAAOhO,QAAS,EAG1BjE,EAOPmF,OAPSiN,EAOFzO,SANT3D,EAAEqS,GAAGrS,EAAEqS,IAAI,YAAYrS,EAAEqS,GAAGC,EAAEtS,EAAEqS,GAAGC,GAAG,IAAIne,KAAKoR,UAAU,EACzDvF,EAAEuS,YAAY,CAACC,KAAK3O,aAAaC,OAAOmO,OAAOC,QAAQO,KAAK,GAC5D/S,EAAE0S,EAAEtM,qBAAqB,QAAQ,IACjC4M,EAAEN,EAAEzM,cAAc,WAAYC,MAAM,EACpC8M,EAAE7M,IAEgB,sCAFV7F,EAAEuS,YAAYC,KAEkC,UAF3BxS,EAAEuS,YAAYE,KAC3C/S,EAAEiT,YAAYD,EAMhB,CAFE,MAAOrN,GACRP,QAAQD,MAAMQ,EACf,CAZC,IAAUrF,EAAEoS,EAAM1S,EAAEgT,CAatB,CAEA,CAvBA,CAuBCvN,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,O,gBCvBjCwH,EAAQ,KACRA,EAAQ,I,YCDP,SAAUhH,EAAKc,EAAG7E,GAMlB,IAAIyS,EAAsB,KAEzB,IAAIC,EAAuB3O,EAAIoE,UAAU,oBACrCwK,EAAuB5O,EAAIoE,UAAU,mBAGzC,SAF2BpE,EAAIoE,UAAU,0BAA2BpE,EAAIoE,UAAU,yBAG1E,CACN6E,UAAuC,UAArB0F,EAClBxH,IAAsC,UAApByH,EAClBC,kBAAkB,EAIpB,EAGGC,EAA0B,KAE7B,IAAIC,EAAmB/O,EAAIoE,UAAU,qCAAuCpE,EAAIoE,UAAU,sCACtF4K,EAAmBhP,EAAIoE,UAAU,yCAA2CpE,EAAIoE,UAAU,uCAAyCpE,EAAIoE,UAAU,oCACjJyK,EAAmB7O,EAAIoE,UAAU,wBAErC,SAAI2K,IAAmBC,IAEf,CACN/F,UAAsC,QAApB8F,EAClB5H,IAAgC,QAAd6H,EAClBH,mBAAoBA,EAItB,EAQAI,EAAgC,CACjCA,WAAoC,CAAC,EACrCA,OAAoC,GACpCA,KAAoC,WACpCA,kBAAoC,GAGpCjP,EAAImL,iBAAmB,IAAM8D,EAE7BjP,EAAIkP,0BAA4B,WAAoC,IAAnCjG,EAAY,UAAH,yCAAU9B,EAAM,UAAH,yCACtD8H,EAAiB5D,WAAWpC,UAAYA,EACxCgG,EAAiB5D,WAAWlE,IAAYA,CACzC,EAGAnH,EAAImP,0BAA4B,WAA2D,IAQtFC,EAR4BnG,EAAY,UAAH,wCAAG,KAAM9B,EAAM,UAAH,wCAAG,KAAMkI,EAAkB,UAAH,yCAqB7E,GAJAJ,EAAiB5D,WAAWpC,WAAaoG,EACzCJ,EAAiB5D,WAAWlE,KAAakI,EAGrCpG,GAAa9B,EAUhB,OARI8B,IACHgG,EAAiB5D,WAAWpC,YAAcA,QAGvC9B,IACH8H,EAAiB5D,WAAWlE,MAAQA,IActC,GAAIiI,EAASpP,EAAIoE,UAAU,sBAQ1B,OANAgL,EAASE,KAAK/X,MAAM6X,GAEpBH,EAAiB5D,WAAWpC,WAAiC,IAArBmG,EAAOnG,UAC/CgG,EAAiB5D,WAAWlE,KAA2B,IAAfiI,EAAOjI,SAC/C8H,EAAiBJ,kBAAuB,GAUzC,GAAIO,EAASpP,EAAIoE,UAAU,iBAQ1B,OANAgL,EAASG,UAAUH,GAEnBH,EAAiB5D,WAAWpC,UAAYmG,EAAOlV,QAAQ,oBAAsB,EAC7E+U,EAAiB5D,WAAWlE,IAAYiI,EAAOlV,QAAQ,mBAAqB,OAC5E+U,EAAiBJ,kBAAuB,GAUzC,GAAIO,EAASpP,EAAIoE,UAAU,uBAiB1B,OAfAgL,EAASE,KAAK/X,MAAM6X,GAEE,WAAlBA,EAAOI,QACVP,EAAiB5D,WAAWpC,WAAY,EACxCgG,EAAiB5D,WAAWlE,KAAY,GACD,IAA7BiI,EAAO/D,WAAWnb,QAC5B+e,EAAiB5D,WAAWpC,WAAY,EACxCgG,EAAiB5D,WAAWlE,KAAY,IAExC8H,EAAiB5D,WAAWpC,UAAYmG,EAAO/D,WAAWnR,QAAQ,gBAAkB,EACpF+U,EAAiB5D,WAAWlE,IAAYiI,EAAO/D,WAAWnR,QAAQ,cAAgB,QAGnF+U,EAAiBJ,kBAAmB,GASrC,GAAIO,EAASpP,EAAIoE,UAAU,kBAW1B,OATAgL,EAASG,UAAUH,GACnBA,EAASE,KAAK/X,MAAM6X,GAEpBH,EAAiB5D,WAAWpC,YAAcmG,GAAQK,UAAUC,WAC5DT,EAAiB5D,WAAWlE,MAAciI,GAAQK,UAAUE,UAC5DV,EAAiBJ,kBAAuB,EACxCI,EAAiBrP,OAAuB,IAAIwP,GAAQK,UAAUC,YAAc,MAAON,GAAQK,UAAUE,WAAa,SAClHV,EAAiB7D,KAAuB,SAUzC,GAAIgE,EAASV,IAMZ,OAJAO,EAAiB5D,WAAWpC,WAAiC,IAArBmG,EAAOnG,UAC/CgG,EAAiB5D,WAAWlE,KAA2B,IAAfiI,EAAOjI,SAC/C8H,EAAiBJ,iBAAuBO,EAAOP,kBAUhD,GAAIO,EAASpP,EAAIoE,UAAU,0BAM1B,OAJA6K,EAAiB5D,WAAWpC,WAAY,EACxCgG,EAAiB5D,WAAWlE,KAAY,OACxC8H,EAAiBJ,kBAAuB,GAUzC,GAAIO,EAASpP,EAAIoE,UAAU,cAQ1B,OANAgL,EAASE,KAAK/X,MAAM6X,GAEpBH,EAAiB5D,WAAWpC,YAAcmG,EAAO/D,WAAW,GAC5D4D,EAAiB5D,WAAWlE,MAAciI,EAAO/D,WAAW,QAC5D4D,EAAiBJ,kBAAuB,GAUzC,GAAIO,EAASN,IAMZ,OAJAG,EAAiB5D,WAAWpC,WAAiC,IAArBmG,EAAOnG,UAC/CgG,EAAiB5D,WAAWlE,KAA2B,IAAfiI,EAAOjI,SAC/C8H,EAAiBJ,kBAAmD,IAA5BO,EAAOP,kBAYhD,GAAIO,EAASpP,EAAIoE,UAAU,oBAQ1B,OANAgL,EAASE,KAAK/X,MAAM6X,GAEpBH,EAAiB5D,WAAWpC,UAAkC,MAAtBmG,EAAOQ,WAC/CX,EAAiB5D,WAAWlE,IAAgC,MAApBiI,EAAOS,cAC/CZ,EAAiBJ,kBAAuB,GAUzC,GAAIO,EAASpP,EAAIoE,UAAU,8BAA+B,CAEzD,GAAe,MAAXgL,EAAgB,OAMpB,OAJAH,EAAiB5D,WAAWpC,WAAY,EACxCgG,EAAiB5D,WAAWlE,KAAY,OACxC8H,EAAiBJ,kBAAuB,EAGzC,CAUA,GAAI5N,OAAO6O,cAAgB7O,OAAO6O,aAAaC,QAAQ,eAAgB,CAItE,GAFAnP,QAAQoP,IAAI,kCAES,oBAAVC,MAQV,YALAhP,OAAOiP,iBAAiB,qBAAqB,SAAU7P,GACtDL,EAAImQ,oBACL,IAMD,GAAIF,MAAMG,yBAKT,OAJAnB,EAAiB5D,WAAWpC,WAAY,EACxCgG,EAAiB5D,WAAWlE,KAAY,OACxC8H,EAAiBJ,kBAAuB,GAKzC7O,EAAImQ,oBACL,CAQA,GAAIf,EAASpP,EAAIoE,UAAU,kBAAmB,CAI7C,IACIiM,EADS,IAAIC,gBAAgBlB,GACbve,IAAI,UAAUf,MAAM,KAGpCygB,EAAe,CAAC,EAiBpB,OAhBAF,EAAOG,SAASC,IAEf,IAAIC,EAA0BD,EAAM3gB,MAAM,KAC1CygB,EAAaG,EAAW,IAAMA,EAAW,EAAE,IAS5CzB,EAAiB5D,WAAWpC,UAAkC,MAAtB0H,aAAa,GACrD1B,EAAiB5D,WAAWlE,IAAkC,MAAtBoJ,EAAa,QACrDtB,EAAiBJ,kBAAuB,EAGzC,CACD,EAGA7O,EAAImQ,mBAAqB,WAExB,GAAqB,oBAAVF,MAAuB,OAE9BA,MAAMG,0BACTQ,IAAIC,mBAGL,MAAMC,EAAmBb,MAAMc,oBAAoB1F,WAAW2F,QAAOjP,GAAuB,eAAfA,EAAKkP,QAAwB,GAAGC,KAE7GN,IAAIO,yBACH,CACClI,WAAYgH,MAAMmB,sBAAsBJ,QAAOjP,GAAQA,EAAKsP,eAAiBP,IAA4C,IAAxB/O,EAAKuP,QAAQjK,SAAkBnX,OAAS,EACzIiX,KAAY8I,MAAMmB,sBAAsBJ,QAAOjP,GAA8B,cAAtBA,EAAKsP,eAAwD,IAAxBtP,EAAKuP,QAAQjK,SAAkBnX,OAAS,GAGvI,EAEA8P,EAAImP,4BAEJnP,EAAIuR,kCAAoC,KACvCtC,EAAiB5D,WAAa,CAC7BpC,WAAW,EACX9B,KAAW,EACX,EAGFnH,EAAIG,SAAW,CAACwJ,EAAU6H,KAEzB,IAAIC,EAkBJ,MAhBI,aAAexC,EAAiB7D,KACnCqG,IAAiBxC,EAAiB5D,WAAW1B,GACnC,UAAYsF,EAAiB7D,MACvCqG,EAAexC,EAAiBrP,OAAO0L,SAASkG,IAK5C,IAAUC,GAAgB,kBAAoBD,IACjDC,EAAexC,EAAiBrP,OAAO0L,SAAS,eAGjD1K,QAAQD,MAAM,0DACd8Q,GAAe,KAGZA,IAIFzR,EAAI+K,yBAAyByG,EAAW7H,IAGlC,EACR,EAGD3J,EAAI+K,yBAA2B,CAACyG,EAAW7H,KAEtChK,cAAcwK,MAAMyB,qBAAqBC,iBAC5CjL,QAAQoP,IAAI,uCAA0CwB,EAAY,eAAiB7H,EAAW,4GAE9F/I,QAAQoP,IAAI,uCAA0CwB,EAAY,eAAiB7H,EAAW,6GAC/F,EASD3J,EAAI0R,kBAAoB,IAAIC,kBAAkBC,IAC7CA,EAAUpB,SAAQ,IAAkB,IAAjB,WAACqB,GAAW,EAC9B,IAAIA,GACFrB,SAAQsB,IAEJhR,EAAEgR,GAAM/P,KAAK,yBAMZ/B,EAAI+R,qBAAqBD,GAC5B9R,EAAIgS,cAAcF,GAElB9R,EAAIiS,YAAYH,GAElB,GACC,GACF,IAGH9R,EAAI0R,kBAAkBQ,QAAQzS,SAAS0S,KAAM,CAACC,WAAW,EAAMC,SAAS,IAExE5S,SAASyQ,iBAAiB,oBAAoB,IAAMlQ,EAAI0R,kBAAkBY,eAE1EtS,EAAI+R,qBAAuBD,MAGzBnS,aAAawK,KAAKyB,oBAAoBC,kBACtCoD,EAAiBJ,oBAGa,aAA1BI,EAAiB7D,OAAuBtK,EAAEgR,GAAM/P,KAAK,uBAAuBjS,MAAM,KAAKgC,MAAKygB,GAAWtD,EAAiB5D,WAAWkH,QAElG,UAA1BtD,EAAiB7D,OAAoB6D,EAAiBrP,OAAO0L,SAASxK,EAAEgR,GAAM/P,KAAK,sBAEzD,UAA1BkN,EAAiB7D,MAAuD,WAAnCtK,EAAEgR,GAAM/P,KAAK,oBAAkC,CAAC,mBAAoB,cAAcjQ,MAAKygB,GAAWtD,EAAiBrP,OAAO0L,SAASiH,SAExK5S,cAAcC,QAAQsH,QAAQ+D,cAAcC,QAA6C,WAAnCpK,EAAEgR,GAAM/P,KAAK,oBAWhF/B,EAAIgS,cAAgB,SAACQ,GAAqC,IAAzBC,EAAe,UAAH,yCAExCA,GAAc3R,EAAE0R,GAAYE,SAEhC,IAAIC,EAAS7R,EAAE0R,GAAYzQ,KAAK,WAC5B4Q,GAAQ7R,EAAE0R,GAAYI,KAAK,MAAOD,GAEtCH,EAAWxH,KAAO,kBAEdyH,GAAc3R,EAAE0R,GAAYK,SAAS,QAGzCpT,SAASqT,cAAc,IAAIC,MAAM,oBAClC,EAEA/S,EAAIiS,YAAc,SAACO,GAAqC,IAAzBC,EAAe,UAAH,yCAEtCA,GAAc3R,EAAE0R,GAAYE,SAE5B5R,EAAE0R,GAAYI,KAAK,QAAQ9R,EAAE0R,GAAYQ,WAAW,OACxDR,EAAWxH,KAAO,qBAEdyH,GAAc3R,EAAE0R,GAAYK,SAAS,OAC1C,EAEA7S,EAAIiT,kBAAoB,WAAkC,IAAjChK,IAAY,UAAH,0CAAS9B,IAAM,UAAH,0CAE7CnH,EAAIkP,0BAA0BjG,EAAW9B,GACzC1H,SAASqT,cAAc,IAAIC,MAAM,oBAClC,EAEA/S,EAAIkT,sBAAwB,KAE3BzT,SAASqT,cAAc,IAAIC,MAAM,oBAAoB,EAGtD/S,EAAImT,+BAAiC,KAEpC,GAAIlE,EAAiBkE,+BACpB,OAAO,EAEPlE,EAAiBkE,gCAAiC,CACnD,EAaD1T,SAASyQ,iBAAiB,gCAAgC,KACzDlQ,EAAImP,4BAE0B,UAA1BF,EAAiB7D,MAEpBpL,EAAIkT,wBACJlT,EAAI2L,wBAAwBsD,EAAiBrP,OAAO0L,SAAS,oBAAqB2D,EAAiBrP,OAAO0L,SAAS,iBAGnHtL,EAAIiT,kBAAkBhE,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,KACzFnH,EAAI2L,wBAAwBsD,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,KAChG,IAQD1H,SAASyQ,iBAAiB,qBAAqB,KAC1CkD,UAAU9B,QAAQ5B,aAAYT,EAAiB5D,WAAWpC,WAAY,GACtEmK,UAAU9B,QAAQ3B,YAAWV,EAAiB5D,WAAWlE,KAAM,GAEnEnH,EAAIiT,kBAAkBhE,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,KACzFnH,EAAI2L,wBAAwBsD,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,IAAI,IAEjG,GAQH1H,SAASyQ,iBAAiB,sBAAsB/O,IAE3CA,EAAEkS,OAAOhI,WAAWC,SAAS,iBAAgB2D,EAAiB5D,WAAWpC,WAAY,GACrF9H,EAAEkS,OAAOhI,WAAWC,SAAS,eAAc2D,EAAiB5D,WAAWlE,KAAM,GAEjFnH,EAAIiT,kBAAkBhE,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,KACzFnH,EAAI2L,wBAAwBsD,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,IAAI,IASpG1H,SAASyQ,iBAAiB,yBAAyB,KAElDlQ,EAAIkP,2BAA0B,GAAM,GACpClP,EAAIiT,mBAAkB,GAAM,GAC5BjT,EAAI2L,yBAAwB,GAAM,EAAK,IASxC3L,EAAIsT,kBAAqBC,IAEpBA,EAAiBF,OAAOhI,WAAWC,SAAS,eAAetL,EAAImP,2BAA0B,EAAM,MAC/FoE,EAAiBF,OAAOhI,WAAWC,SAAS,cAActL,EAAImP,0BAA0B,MAAM,GAElGnP,EAAIiT,kBAAkBhE,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,KACzFnH,EAAI2L,wBAAwBsD,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,IAAI,EAIpG1H,SAASyQ,iBAAiB,oBAAqBlQ,EAAIsT,mBAEnD7T,SAASyQ,iBAAiB,sBAAuBlQ,EAAIsT,mBAMrD7T,SAASyQ,iBAAiB,mBAAmB,KAC5ClQ,EAAImP,4BAEJnP,EAAIiT,kBAAkBhE,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,KACzFnH,EAAI2L,wBAAwBsD,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,IAAI,IAapGnH,EAAIwT,WAAa,IAAI7B,kBAAiBC,IACrCA,EAAUpB,SAAQ,IAAkB,IAAjB,WAACqB,GAAW,EAC9B,IAAIA,GACFrB,SAAQsB,IAEQ,OAAZA,EAAK1P,IAIR3C,SAASgU,cAAc,oBAAoBvD,iBAAiB,SAAS,KACpElQ,EAAImP,4BACJnP,EAAIiT,kBAAkBhE,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,KACzFnH,EAAI2L,wBAAwBsD,EAAiB5D,WAAWpC,UAAWgG,EAAiB5D,WAAWlE,IAAI,GAErG,GACC,GACF,IAGClG,OAAOyS,IACV1T,EAAIwT,WAAWtB,QAAQzS,SAASkU,iBAAmBlU,SAASmU,KAAM,CAACxB,WAAW,EAAMC,SAAS,IAS9FpR,OAAOiP,iBAAiB,WAAW,SAAU/O,GACxCA,EAAEkS,QAA4B,kBAAlBlS,EAAEkS,OAAOhT,SAEmB,IAAvCc,EAAEkS,OAAO,0BACZzS,QAAQoP,IAAI,sCAEZpP,QAAQoP,IAAI,yCAGf,IAGA/O,OAAOiP,iBAAiB,mBAAmB,SAAU7P,GAE1B,eAAtBA,EAAMgT,OAAOrI,MAGhB4F,IAAIC,mBAGqB,aAAtBxQ,EAAMgT,OAAOrI,MAChB4F,IAAIiD,mBAGqB,SAAtBxT,EAAMgT,OAAOrI,MAChBpK,QAAQoP,IAAI,eAAgB3P,EAAMgT,OAEpC,IAUA7T,OAAO,iEAAiEE,GAAG,SAAS,gBAGpD,IAApBuB,OAAO6S,UAElBlD,IAAIC,kBACL,IAGArR,OAAO,2DAA2DE,GAAG,SAAS,WAC7EkR,IAAIiD,kBACL,IAGArU,OAAO,2DAA2DE,GAAG,SAAS,WAC7EkH,SAASmN,QAQV,GAGA,CA7rBA,CA6rBC9S,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,QAGhC,SAAUoR,EAAK9P,EAAG7E,GAOlB2U,EAAIC,iBAAmB,WAAmB,IAAlBzD,EAAW,UAAH,wCAAG,CAAC,EAEnCA,EAAS4G,SAAW5G,EAAS4G,UAAY,IAEzCpD,EAAIqD,kBAAiB,GAAM,EAAM7G,EAAS4G,UAC1ChU,IAAIiT,mBAAkB,GAAM,GAC5BjT,IAAI2L,yBAAwB,GAAM,EACnC,EAGAiF,EAAIO,yBAA4B/D,IAG/BA,EAASnE,UAAYmE,EAASnE,YAAchN,EAAYmR,EAASnE,UAAYjJ,IAAImL,mBAAmBE,WAAWpC,UAC/GmE,EAASjG,IAAYiG,EAASjG,MAAQlL,EAAYmR,EAASjG,IAAMnH,IAAImL,mBAAmBE,WAAWlE,IACnGiG,EAAS4G,SAAY5G,EAAS4G,UAAY,IAE1CpD,EAAIqD,iBAAiB7G,EAASnE,UAAWmE,EAASjG,IAAKiG,EAAS4G,UAChEhU,IAAIiT,kBAAkB7F,EAASnE,UAAWmE,EAASjG,KACnDnH,IAAI2L,wBAAwByB,EAASnE,UAAWmE,EAASjG,IAAI,EAI9DyJ,EAAIiD,iBAAmB,WAAmB,IAAlBzG,EAAW,UAAH,wCAAG,CAAC,EAEnCA,EAAS4G,SAAW5G,EAAS4G,UAAY,IAEzChU,IAAIkP,2BAA0B,GAAO,GACrC0B,EAAIqD,kBAAiB,GAAO,EAAO7G,EAAS4G,UAC5ChU,IAAI2L,yBAAwB,GAAO,EACpC,EAIAiF,EAAIqD,iBAAmB,SAAChL,EAAW9B,GAAwB,IAAnB6M,EAAW,UAAH,wCAAG,IAClDhU,IAAIkU,UAAU,qBAAsB5E,KAAK6E,UAAU,CAAClL,YAAW9B,QAAO6M,EACvE,EAGAxU,OAAOC,UAAU+G,QAAQ,uCAEzB,CAhDA,CAgDCvF,OAAO2P,IAAM3P,OAAO2P,KAAO,CAAC,EAAGpR,O,WC/uBjCA,OAAOC,UAAUC,GAAG,QAAS,qCAAsCW,IAIlE,IAEC,IAAI+T,EAAY,IAAIC,IAAI7U,OAAOa,EAAMiU,eAAe1B,KAAK,SACrD2B,EAAYvU,IAAIwU,6BAA6BJ,GAEjDpU,IAAIyU,sBAAsBF,EAI3B,CAFE,MAAOpT,GACRP,QAAQD,MAAMQ,EACf,KASD,IAAIuT,EAAwB,CAC3B,YACA,mBACA,wBACA,mBACA,2BACA,+BACCne,KAAK,KAGPiJ,OAAOC,UAAUC,GAAG,sBAAuBgV,GAAuB,KAIjElV,OAAOC,UAAU+G,QAAQ,mBAAmB,IAG7ChH,OAAOC,UAAUC,GAAG,uBAAuB,KAC1CF,OAAOC,UAAU+G,QAAQ,cAAc,IASxChH,OAAOC,UAAUC,GAAG,WAAYW,IAC/Bb,OAAOC,UAAUC,GAAG,2BAA2B,MAE1C,IAAUM,IAAI2U,uBACjB3U,IAAI4U,qBAAqB,GAG1B5U,IAAI6U,mBAAmB,EAAGrV,OAAO,wCAAwCsV,OACzE9U,IAAI2U,uBAAwB,CAAI,GAC/B,IAIHnV,OAAOC,UAAUC,GAAG,WAAW,KAE9B,IAGKM,IAAI+U,4BAA4B/U,IAAIgV,cAIzC,CAFE,MAAO7T,GACRP,QAAQD,MAAMQ,EACf,KAID3B,OAAOC,UAAUC,GAAG,WAAW,KAE9BC,aAAawG,SAAWxG,aAAawG,UAAY,CAAC,EAGlD,IAAI8O,EAAajV,IAAIkV,6BAErBlV,IAAImV,uBAAuBF,EAAW,IAOvCzV,OAAOC,UAAUC,GAAG,WAAW,KAG9B,IAAKM,IAAIoE,UAAU,gBAEd3E,SAAS2V,SAAU,CACtB,IACIC,EADmB,IAAIhB,IAAI5U,SAAS2V,UACLE,SAE/BD,IAAqBpU,OAAO2F,SAAS2O,MACxCvV,IAAIkU,UAAU,cAAemB,EAE/B,CACD,IAOD7V,OAAOC,UAAUC,GAAG,WAAW,KAE9B,IACC,GAA2B,oBAAhBC,eAAgCA,cAAc6V,aAAc,CAItE,GAFAhW,OAAOC,UAAU+G,QAAQ,iBAErB7G,cAAcwK,KACjB,GACC,YAAcxK,aAAawK,KAAKgC,WAChC,aAAexM,aAAawK,KAAKsL,cACjCzV,IAAI0V,kCACH,CACD,IAAI7Q,EAAU7E,IAAI2V,+BAA+B3V,IAAI0V,mCACrDlW,OAAOC,UAAU+G,QAAQ,cAAe3B,EACzC,KAAW,qBAAuBlF,aAAawK,KAAKgC,UACnD3M,OAAOC,UAAU+G,QAAQ,eACf,WAAa7G,aAAawK,KAAKgC,UACzC3M,OAAOC,UAAU+G,QAAQ,mBACf,SAAW7G,aAAawK,KAAKgC,UACvC3M,OAAOC,UAAU+G,QAAQ,eACf,wBAA0B7G,aAAawK,KAAKgC,UAClDxM,cAAc4C,QAAUvC,IAAI4V,gBAAgBjW,aAAa4C,MAAMH,MAClE5C,OAAOC,UAAU+G,QAAQ,wBACzBxG,IAAI6V,sBAAsBlW,aAAa4C,MAAMH,GAAIzC,aAAa4C,MAAMoD,KACjC,mBAAxB3F,IAAI8V,iBAAgC9V,IAAI8V,mBAGpDtW,OAAOC,UAAU+G,QAAQ,0BAG1BhH,OAAOC,UAAU+G,QAAQ,qBAGtB7G,cAAcwC,MAAMC,KAAOpC,IAAI+V,uBAClCvW,OAAOC,UAAU+G,QAAQ,YACzBxG,IAAIgW,sBAiBLrW,aAAa6V,cAAe,CAC7B,CAID,CAFE,MAAOrU,GACRP,QAAQD,MAAMQ,EACf,KAGD3B,OAAOC,UAAUC,GAAG,WAAWgC,UAG7BT,OAAOgV,gBACPhV,OAAOgV,eAAelG,QAAQ,6BAC7BT,KAAK/X,MAAM0J,OAAOgV,eAAelG,QAAQ,6BAE1CnP,QAAQD,MAAM,+FACf,IAODnB,OAAOC,UAAUC,GAAG,oBAAoB,KAEnCC,cAAcwK,MAAMyB,qBAAqBC,mBAAqB7L,IAAImT,kCACrEnT,IAAImP,0BAA0B,KAAM,MAAM,GAG3C3P,OAAOC,UAAU+G,QAAQ,gBAAiB,CAAC,EAAE,IAQ9ChH,OAAOC,UAAUC,GAAG,gBAAgB,CAACW,EAAOwE,KAM3C,IAAIvE,EAAU,CACbD,MAAS,YACTwE,QAASA,GAKNlF,cAAcC,QAAQC,UAAUE,SACnCO,EAAQT,SAAW,CAClB4G,WAAkB,YAClB/F,SAAkBV,IAAIgE,qBACtB0C,UAAkB1G,IAAIiE,gBACtB0C,iBAAkB1F,OAAO2F,SAASC,KAClCrG,YAAkBR,IAAI4E,6BAA6BC,KAMjDlF,cAAcC,QAAQsW,QAAQnW,SACjCO,EAAQ4V,OAAS,CAChB7V,MAAY,YACZK,SAAYV,IAAImW,mBAChBC,QAAYpW,IAAIqW,+BAChBC,WAAY,CACXpe,MAAU2M,EAAQU,MAAQV,EAAQS,SAClCE,SAAUX,EAAQW,SAClB+Q,SAAU,CAAC,CACVC,WAAc3R,EAAQK,UAAUvF,aAAaC,OAAOsW,OAAO/Q,oBAAoBC,SAC/EN,aAAc,UACdC,aAAcF,EAAQG,KACtBM,SAAcT,EAAQS,SACtBC,MAAcV,EAAQU,WAU1B/F,OAAOC,UAAU+G,QAAQ,yBAA0BlG,GAOP,mBAAjCN,IAAIyW,0BACdzW,IAAIyW,yBAAyBnW,EAC9B,IAGDd,OAAOC,UAAUC,GAAG,oBAAoB,KAMvC,IAAIY,EAAU,CACbD,MAAO,iBAIJV,cAAcC,QAAQC,UAAUE,SACnCO,EAAQT,SAAW,CAClB4G,WAAkB,mBAClB/F,SAAkBV,IAAIgE,qBACtB0C,UAAkB1G,IAAIiE,gBACtB0C,iBAAkB1F,OAAO2F,SAASC,KAClCrG,YAAkB,CAAC,GAGhBb,cAAcoH,OAASvH,OAAOyH,cAActH,aAAaoH,QAC5DzG,EAAQT,SAASW,YAAc,CAC9BsE,aAAc,UACdG,YAAcjF,IAAI8G,0BAClB5O,MAAc8H,IAAI0W,eAClBlR,SAAc7F,aAAawK,KAAK3E,YAM/B7F,cAAcC,QAAQsW,QAAQnW,SACjCO,EAAQ4V,OAAS,CAChB7V,MAAU,mBACVK,SAAUV,IAAImW,mBACdC,QAAUpW,IAAIqW,iCAQhB7W,OAAOC,UAAU+G,QAAQ,6BAA8BlG,GAOX,mBAAjCN,IAAIyW,0BACdzW,IAAIyW,yBAAyBnW,EAC9B,IAGDd,OAAOC,UAAUC,GAAG,oBAAoB,CAACW,EAAOwE,KAM/C,IAAIvE,EAAU,CACbD,MAAS,gBACTwE,QAASA,GAINlF,cAAcC,QAAQC,UAAUE,SACnCO,EAAQT,SAAW,CAClB4G,WAAkB,gBAClB/F,SAAkBV,IAAIgE,qBACtB0C,UAAkB1G,IAAIiE,gBACtB0C,iBAAkB1F,OAAO2F,SAASC,KAClCrG,YAAkBR,IAAI4E,6BAA6BC,KAKjDlF,cAAcC,QAAQsW,QAAQnW,SACjCO,EAAQ4V,OAAS,CAChB7V,MAAY,gBACZK,SAAYV,IAAImW,mBAChBC,QAAYpW,IAAIqW,+BAChBC,WAAY,CACXpe,MAAU2M,EAAQU,MAAQV,EAAQS,SAClCE,SAAUX,EAAQW,SAClB+Q,SAAU,CAAC,CACVC,WAAc3R,EAAQK,UAAUvF,aAAaC,OAAOsW,OAAO/Q,oBAAoBC,SAC/EN,aAAc,UACdC,aAAcF,EAAQG,KACtBM,SAAcT,EAAQS,SACtBC,MAAcV,EAAQU,WAU1B/F,OAAOC,UAAU+G,QAAQ,6BAA8BlG,GAOX,mBAAjCN,IAAIyW,0BACdzW,IAAIyW,yBAAyBnW,EAC9B,IAGDd,OAAOC,UAAUC,GAAG,eAAe,SAACW,GAA0B,IAAnBwE,EAAU,UAAH,6CAAG,KAMhDvE,EAAU,CACbD,MAAS,WACTwE,QAASA,GAINlF,cAAcC,QAAQC,UAAUE,SACnCO,EAAQT,SAAW,CAClB4G,WAAkB,cAClB/F,SAAkBV,IAAIgE,qBACtB0C,UAAkB1G,IAAIiE,gBACtB0C,iBAAkB1F,OAAO2F,SAASC,KAClCrG,YAAkB,CAAC,GAGhBqE,IACHvE,EAAQT,SAASW,YAAcR,IAAI4E,6BAA6BC,KAK9DlF,cAAcC,QAAQsW,QAAQnW,SACjCO,EAAQ4V,OAAS,CAChB7V,MAAU,cACVK,SAAUV,IAAImW,mBACdC,QAAUpW,IAAIqW,gCAGXxR,IACHvE,EAAQ4V,OAAOI,WAAa,CAC3Bpe,MAAU2M,EAAQU,MAAQV,EAAQS,SAClCE,SAAUX,EAAQW,SAClB+Q,SAAU,CAAC,CACVC,WAAc3R,EAAQK,UAAUvF,aAAaC,OAAOsW,OAAO/Q,oBAAoBC,SAC/EN,aAAc,UACdC,aAAcF,EAAQG,KACtBM,SAAcT,EAAQS,SACtBC,MAAcV,EAAQU,WAU1B/F,OAAOC,UAAU+G,QAAQ,wBAAyBlG,GAON,mBAAjCN,IAAIyW,0BACdzW,IAAIyW,yBAAyBnW,EAE/B,IAEAd,OAAOC,UAAUC,GAAG,mBAAmB,KAMtC,IAAIY,EAAU,CACbD,MAAO,UAIJV,cAAcC,QAAQC,UAAUE,SACnCO,EAAQT,SAAW,CAClB4G,WAAkB,SAClB/F,SAAkBV,IAAIgE,qBACtB0C,UAAkB1G,IAAIiE,gBACtB0C,iBAAkB1F,OAAO2F,SAASC,KAClCrG,YAAkB,CACjBmW,cAAe3W,IAAI4W,0BAMlBjX,cAAcC,QAAQsW,QAAQnW,SACjCO,EAAQ4V,OAAS,CAChB7V,MAAY,SACZK,SAAYV,IAAImW,mBAChBC,QAAYpW,IAAIqW,+BAChBC,WAAY,CACXO,MAAO7W,IAAI4W,0BASdpX,OAAOC,UAAU+G,QAAQ,sBAAuBlG,GAOJ,mBAAjCN,IAAIyW,0BACdzW,IAAIyW,yBAAyBnW,EAC9B,IAGDd,OAAOC,UAAUC,GAAG,iBAAiB,KAMpC,IAAIY,EAAU,CACbD,MAAO,cAIJV,cAAcC,QAAQsW,QAAQnW,SACjCO,EAAQ4V,OAAS,CAChB7V,MAAU,eACVK,SAAUV,IAAImW,mBACdC,QAAUpW,IAAIqW,iCAQhB7W,OAAOC,UAAU+G,QAAQ,sBAAuBlG,GAOJ,mBAAjCN,IAAIyW,0BACdzW,IAAIyW,yBAAyBnW,EAC9B,IAGDd,OAAOC,UAAUC,GAAG,wBAAwB,KAM3C,IAAIY,EAAU,CACbD,MAAO,iBAIJV,cAAcC,QAAQC,UAAUE,SACnCO,EAAQT,SAAW,CAClB4G,WAAkB,WAClB/F,SAAkBf,aAAa4C,MAAMH,GAAGhP,WACxCsT,UAAkB1G,IAAIiE,gBACtB0C,iBAAkB1F,OAAO2F,SAASC,KAClCrG,YAAkB,CACjBsE,aAAc,UACd5M,MAAcyH,aAAa4C,MAAMwF,eACjCvC,SAAc7F,aAAa4C,MAAMiD,SACjCP,YAAcjF,IAAIyF,wBAMjB9F,cAAcC,QAAQsW,QAAQnW,SACjCO,EAAQ4V,OAAS,CAChB7V,MAAY,kBACZK,SAAYf,aAAa4C,MAAMH,GAAGhP,WAClCgjB,QAAYpW,IAAIqW,+BAChBC,WAAY,CACXpe,MAAUyH,aAAa4C,MAAMwF,eAC7BvC,SAAU7F,aAAa4C,MAAMiD,SAC7B+Q,SAAUvW,IAAI8W,2BASjBtX,OAAOC,UAAU+G,QAAQ,iCAAkClG,EAAQ,IASpEd,OAAOC,UAAUC,GAAG,aAAagC,UAShC1B,IAAI+W,mCAGJ/W,IAAIgX,sCAAsC,G,WCpkB3C,MAAMC,EAAqB,CAC1B,kDACA,oBACA,8BACC1gB,KAAK,KAEPiJ,OAAOyX,GAAoBvX,GAAG,wBAAyBW,IAItD,IAIC,IACCkU,EADGjP,EAAW,EAIqB,YAAhC3F,aAAawK,KAAKgC,gBAGmC,IAA7C3M,OAAOa,EAAMiU,eAAe1B,KAAK,SAA2BpT,OAAOa,EAAMiU,eAAe1B,KAAK,QAAQtH,SAAS,iBAExHiJ,EAAY/U,OAAOa,EAAMiU,eAAevS,KAAK,cAE7C/B,IAAIkX,iBAAiB3C,EAAWjP,IAIM,WAAnC3F,aAAawK,KAAKsL,eAErBnQ,EAAWlT,OAAOoN,OAAO,mBAAmBsV,OACvCxP,GAAyB,IAAbA,IAAgBA,EAAW,GAC5CiP,EAAY/U,OAAOa,EAAMiU,eAAeQ,MAExC9U,IAAIkX,iBAAiB3C,EAAWjP,IAI7B,CAAC,WAAY,yBAAyBpL,QAAQyF,aAAawK,KAAKsL,eAAiB,IAEpFnQ,EAAWlT,OAAOoN,OAAO,mBAAmBsV,OACvCxP,GAAyB,IAAbA,IAAgBA,EAAW,GAC5CiP,EAAY/U,OAAO,yBAAyBsV,MAE5C9U,IAAIkX,iBAAiB3C,EAAWjP,IAIM,YAAnC3F,aAAawK,KAAKsL,cAErBjW,OAAO,0CAA0C2X,MAAK,CAACte,EAAO0Z,KAE7DjN,EAAWlT,OAAOoN,OAAO+S,GAAS6E,KAAK,mBAAmBtC,OACrDxP,GAAyB,IAAbA,IAAgBA,EAAW,GAC5C,IAAI+R,EAAU7X,OAAO+S,GAASK,KAAK,SACnC2B,EAAcvU,IAAIsX,oBAAoBD,GAEtCrX,IAAIkX,iBAAiB3C,EAAWjP,EAAS,IAKJ,WAAnC3F,aAAawK,KAAKsL,eAErBnQ,EAAWlT,OAAOoN,OAAO,mBAAmBsV,OACvCxP,GAAyB,IAAbA,IAAgBA,EAAW,GAC5CiP,EAAY/U,OAAO,2BAA2BsV,MAE9C9U,IAAIkX,iBAAiB3C,EAAWjP,MAKjCiP,EAAY/U,OAAOa,EAAMiU,eAAevS,KAAK,cAC7C/B,IAAIkX,iBAAiB3C,EAAWjP,GAKlC,CAFE,MAAOnE,GACRP,QAAQD,MAAMQ,EACf,KAUD3B,OAAO,6EAA6E+X,IAAI,SAAUlX,IAEjG,IACC,GAAIb,OAAOa,EAAMmX,QAAQC,QAAQ,KAAK7E,KAAK,QAAS,CAEnD,IAAIwB,EAAM,IAAIC,IAAI7U,OAAOa,EAAMiU,eAAe1B,KAAK,QAAS3R,OAAO2F,SAAS8Q,QAE5E,GAAItD,EAAIuD,aAAaC,IAAI,eAAgB,CAExC,IAAIrD,EAAYH,EAAIuD,aAAa9mB,IAAI,eACrCmP,IAAIkX,iBAAiB3C,EAAW,EACjC,CACD,CAGD,CAFE,MAAOpT,GACRP,QAAQD,MAAMQ,EACf,KAKD3B,OAAO,mGAAmGE,GAAG,SAAUW,IAEtH,IAaC,IAAIkU,EAAY/U,OAAOa,EAAMiU,eAAeuD,QAAQ,uBAAuB9V,KAAK,MAQhF,GAAIwS,EAAW,CAId,GAFAA,EAAYvU,IAAI8X,qCAAqCvD,IAEhDA,EAAW,MAAMpkB,MAAM,uCAE5B,GAAIwP,aAAawG,UAAYxG,aAAawG,SAASoO,GAAY,CAE9D,IAAI1P,EAAU7E,IAAI+X,mCAAmCxD,GAErD/U,OAAOC,UAAU+G,QAAQ,uBAAwB3B,GACjDrF,OAAOC,UAAU+G,QAAQ,gBAAiB3B,EAC3C,CACD,CAGD,CAFE,MAAO1D,GACRP,QAAQD,MAAMQ,EACf,KAOD3B,OAAO,kBAAkBE,GAAG,SAAUW,IAEjCL,IAAIgY,QAAQxY,OAAOa,EAAMiU,eAAeQ,SAE3C9U,IAAI4U,qBAAqB,GACzB5U,IAAIiY,eAAgB,EACrB,IAaDzY,OAAO,iBAAiBE,GAAG,gCAAgC,MAKtD,IAAUM,IAAIiY,eACjBjY,IAAI4U,qBAAqB,IAGtB,IAAU5U,IAAI2U,wBACjB3U,IAAI4U,qBAAqB,GACzB5U,IAAI6U,mBAAmB,EAAGrV,OAAO,wCAAwCsV,QAG1E9U,IAAI4U,qBAAqB,GAEzBpV,OAAOC,UAAU+G,QAAQ,gBAAiB,CAAC,EAAE,IAQ9ChH,OAAO,wBAAwBE,GAAG,SAAS,KAE1C,IACCF,OAAO,cAAc2X,MAAK,CAACte,EAAO0Z,KAEjC,IAAI6B,EAAY,IAAIC,IAAI7U,OAAO+S,GAAS6E,KAAK,mBAAmBA,KAAK,KAAKxE,KAAK,SAC3E2B,EAAYvU,IAAIwU,6BAA6BJ,GAE7C9O,EAAW9F,OAAO+S,GAAS6E,KAAK,QAAQtC,MAE3B,IAAbxP,EACHtF,IAAIyU,sBAAsBF,GAChBjP,EAAW3F,aAAaoH,KAAKwN,GAAWjP,SAClDtF,IAAIyU,sBAAsBF,EAAW5U,aAAaoH,KAAKwN,GAAWjP,SAAWA,GACnEA,EAAW3F,aAAaoH,KAAKwN,GAAWjP,UAClDtF,IAAIkX,iBAAiB3C,EAAWjP,EAAW3F,aAAaoH,KAAKwN,GAAWjP,SACzE,GAKF,CAHE,MAAOnE,GACRP,QAAQD,MAAMQ,GACdnB,IAAIkY,yBACL,KAID1Y,OAAO,+BAA+BE,GAAG,SAASW,IAEjD,IAEC,IAAIkU,EAUJ,GARI/U,OAAOa,EAAMiU,eAAevS,KAAK,aAEpCwS,EAAY/U,OAAOa,EAAMiU,eAAevS,KAAK,aACnCvC,OAAOa,EAAMiU,eAAevS,KAAK,gBAE3CwS,EAAY/U,OAAOa,EAAMiU,eAAevS,KAAK,gBAGzCwS,EAAW,MAAMpkB,MAAM,uCAE5B,IAAI0U,EAAU7E,IAAI+X,mCAAmCxD,GAGrD/U,OAAOC,UAAU+G,QAAQ,mBAAoB3B,EAG9C,CAFE,MAAO1D,GACRP,QAAQD,MAAMQ,EACf,KAaD3B,OAAO,0BAA0BE,GAAG,kBAAkB,CAACW,EAAO8X,KAE7D,IACC,IAAI5D,EAAYvU,IAAI8X,qCAAqCK,EAAUlS,cAEnE,IAAKsO,EAAW,MAAMpkB,MAAM,uCAE5B6P,IAAIoY,yBAAyB7D,EAI9B,CAFE,MAAOpT,GACRP,QAAQD,MAAMQ,EACf,I,YCrRA,SAAUnB,EAAKc,EAAG7E,GAElB,MAAMoc,EACc,iBAIdC,EAE2B,0BAF3BA,EAG2B,eAmHjC,SAASC,IAER,MAAe,KADLvY,EAAIoE,UAAUiU,EAEzB,CAjHArY,EAAIiY,eAAwB,EAC5BjY,EAAI2U,uBAAwB,EAgB5B3U,EAAIwY,gBAAkB,IAUdxY,EAAIyY,6BACVzY,EAAI0Y,2BACJ1Y,EAAI2Y,4BAGN3Y,EAAI2Y,0BAA4B,IAAM1X,OAAOgV,eAAelG,QApC3B,IACA,GAqCjC/P,EAAI0Y,wBAA0BhX,SAEzBT,OAAOgV,eAAelG,QAAQuI,GAC1BhJ,KAAK/X,MAAM0J,OAAOgV,eAAelG,QAAQuI,UAEnCtY,EAAI4Y,eAInB5Y,EAAIyY,0BAA4B,MAAQxX,OAAOgV,eAG/CjW,EAAI4Y,aAAelX,iBAGd,IAFJ0S,EAAG,kDAAUpU,EAAI6Y,KAAOP,EACxBQ,EAAa,UAAH,wCAAGR,EAGTS,QAAiBC,MAAM5E,EAAK,CAC/B6E,OAAW,OACX7N,KAAW,OACX8N,MAAW,WACXC,WAAW,IAGZ,OAAwB,MAApBJ,EAAS1R,QACZpG,OAAOgV,eAAemD,QAAQN,EAAYxJ,KAAK6E,WAAU,KAClD,GACuB,MAApB4E,EAAS1R,QAGW,IAApB0R,EAAS1R,QAFnBpG,OAAOgV,eAAemD,QAAQN,EAAYxJ,KAAK6E,WAAU,KAClD,QACD,CAIR,EAEAnU,EAAIqZ,2BAA6B,eAACP,EAAa,UAAH,wCAAGR,EAA8C,QAAOtY,EAAIoE,UAAU0U,EAAW,EAE7H9Y,EAAI6V,sBAAwB,SAACyD,EAASC,GAAyD,IAA/CC,EAAS,UAAH,wCAAG,gBAIxD,GAAKvY,OAAOwY,QAeX,GAAiD,OAA7C3J,aAAaC,QAAQsI,GAA8B,CACtD,IAAIqB,EAAM,GACVA,EAAIzpB,KAAKqpB,GACTrY,OAAO6O,aAAasJ,QAAQf,EAAoB/I,KAAK6E,UAAUuF,GAEhE,KAAO,CACN,IAAIA,EAAMpK,KAAK/X,MAAMuY,aAAaC,QAAQsI,IACrCqB,EAAIpO,SAASgO,KACjBI,EAAIzpB,KAAKqpB,GACTrY,OAAO6O,aAAasJ,QAAQf,EAAoB/I,KAAK6E,UAAUuF,IAEjE,KA1BoB,CACpB,IAAIC,EAAc,IAAItM,KACtBsM,EAAYC,QAAQD,EAAYE,UAzFd,KA2FlB,IAAIH,EAAM,GACNnB,MACHmB,EAAMpK,KAAK/X,MAAMyI,EAAIoE,UAAUiU,KAG3BqB,EAAIpO,SAASgO,KACjBI,EAAIzpB,KAAKqpB,GACT7Z,SAAS2P,OAASiJ,kBAA2B/I,KAAK6E,UAAUuF,GAAO,YAAcC,EAAYG,cAG/F,CAewC,mBAA7B9Z,EAAI+Z,sBAAuCpa,aAAaqa,oBAClEha,EAAI+Z,qBAAqBR,EAAUC,EAErC,EAOAxZ,EAAI4V,gBAAkB0D,GAEjB3Z,aAAaqa,mBAEX/Y,OAAOwY,QASsC,OAA7C3J,aAAaC,QAAQsI,IACd/I,KAAK/X,MAAMuY,aAAaC,QAAQsI,IAC/B/M,SAASgO,KATjBf,KACOjJ,KAAK/X,MAAMyI,EAAIoE,UAAUiU,IACxB/M,SAASgO,IAatB1Y,QAAQoP,IAAI,sCACL,GAIThQ,EAAIgY,QAAUvV,GAID,yJAEC3P,KAAK2P,GAGnBzC,EAAIyU,sBAAwB/S,eAAO6S,GAAuC,IAA5B0F,EAAmB,UAAH,wCAAG,KAEhE,IAEC,IAAK1F,EAAW,MAAMpkB,MAAM,uCAI5B,KAFAokB,EAAYvU,EAAI8X,qCAAqCvD,IAErC,MAAMpkB,MAAM,uCAE5B,IAAImV,EAGHA,EADuB,MAApB2U,EACQta,aAAaoH,KAAKwN,GAAWjP,SAE7B2U,EAGPta,aAAaoH,KAAKwN,UAChBvU,EAAImV,uBAAuB,CAACZ,IAGnC,IAAI1P,EAAU7E,EAAI+X,mCAAmCxD,EAAWjP,GAEhE9F,OAAOC,UAAU+G,QAAQ,oBAAqB3B,GAEtB,MAApBoV,GAA4Bta,aAAaoH,KAAKwN,GAAWjP,WAAa2U,UAElEta,aAAaoH,KAAKwN,GAErB0B,gBAAgBA,eAAemD,QAAQ,mBAAoB9J,KAAK6E,UAAUxU,aAAaoH,SAG3FpH,aAAaoH,KAAKwN,GAAWjP,SAAW3F,aAAaoH,KAAKwN,GAAWjP,SAAWA,EAE5E2Q,gBAAgBA,eAAemD,QAAQ,mBAAoB9J,KAAK6E,UAAUxU,aAAaoH,OAO7F,CALE,MAAO5F,GACRP,QAAQD,MAAMQ,EAIf,CACD,EAEAnB,EAAI8X,qCAAuCvD,IAE1C,IACC,OAAI5U,cAAcoG,SAASC,iBAAyBuO,EAEhD5U,aAAawG,SAASoO,GAAW2F,YAAoBva,aAAawG,SAASoO,GAAW4F,SAEnF5F,CAIR,CAFE,MAAOpT,GACRP,QAAQD,MAAMQ,EACf,GAIDnB,EAAIkX,iBAAmBxV,MAAO6S,EAAWjP,KAExC,IAEC,IAAKiP,EAAW,MAAMpkB,MAAM,uCAI5B,KAFAokB,EAAYvU,EAAI8X,qCAAqCvD,IAErC,MAAMpkB,MAAM,uCAEvBwP,cAAcwG,SAASoO,UACrBvU,EAAImV,uBAAuB,CAACZ,IAGnC,IAAI1P,EAAU7E,EAAI+X,mCAAmCxD,EAAWjP,GAEhE9F,OAAOC,UAAU+G,QAAQ,eAAgB3B,GAMrClF,cAAcoH,KAAKwN,GAEtB5U,aAAaoH,KAAKwN,GAAWjP,SAAW3F,aAAaoH,KAAKwN,GAAWjP,SAAWA,GAG1E,SAAU3F,eAAeA,aAAaoH,KAAO,CAAC,GAEpDpH,aAAaoH,KAAKwN,GAAavU,EAAI+X,mCAAmCxD,EAAWjP,IAG9E2Q,gBAAgBA,eAAemD,QAAQ,mBAAoB9J,KAAK6E,UAAUxU,aAAaoH,MAO5F,CALE,MAAO5F,GACRP,QAAQD,MAAMQ,GAGdnB,EAAIkY,yBACL,GAGDlY,EAAIgV,aAAe,KAEdiB,eACEA,eAAelG,QAAQ,qBAAuD,wBAAhCpQ,aAAawK,KAAKgC,UAGpEnM,EAAIoa,0BAA0B9K,KAAK/X,MAAM0e,eAAelG,QAAQ,sBAFhEkG,eAAemD,QAAQ,mBAAoB9J,KAAK6E,UAAU,CAAC,IAK5DnU,EAAIkY,yBACL,EAIDlY,EAAIkY,wBAA0B,KAC7B,IAcCc,MAAMhZ,EAAIqa,SAAU,CACnBpB,OAAW,OACXC,MAAW,WACXtF,KAAW,IAAItD,gBAAgB,CAACd,OAAQ,uBACxC2J,WAAW,IAEVtR,MAAKkR,IACL,GAAIA,EAASuB,GACZ,OAAOvB,EAASwB,OAEhB,MAAMpqB,MAAM,wCACb,IAEA0X,MAAK9F,IAEL,IAAIA,EAAKyY,QASR,MAAMrqB,MAAM,yCAPP4R,EAAKA,KAAW,OAAGA,EAAKA,KAAW,KAAI,CAAC,GAE7C/B,EAAIoa,0BAA0BrY,EAAKA,KAAW,MAE1CkU,gBAAgBA,eAAemD,QAAQ,mBAAoB9J,KAAK6E,UAAUpS,EAAKA,KAAW,MAI/F,GAKH,CAFE,MAAOZ,GACRP,QAAQD,MAAMQ,EACf,GAIDnB,EAAImV,uBAAyBzT,UAQ5B,GANI/B,cAAcwG,WAEjB8O,EAAaA,EAAWjE,QAAOuD,KAAeA,KAAa5U,aAAawG,aAIpE8O,GAAoC,IAAtBA,EAAW/kB,OAA9B,CAEA,IAEC,IAAI6oB,EAgCJ,GA7BCA,QADS/Y,EAAI0Y,gCACIM,MAAMhZ,EAAI6Y,KAAO,mBAAoB,CACrDI,OAAS,OACTC,MAAS,WACTuB,QAAS,CACR,eAAgB,oBAEjB7G,KAAStE,KAAK6E,UAAU,CACvBuG,OAAY/a,aAAaoG,QAAQ2U,OACjCC,SAAYhb,aAAawK,KAAKgC,UAC9B8I,WAAYA,YAQG+D,MAAMhZ,EAAIqa,SAAU,CACpCpB,OAAQ,OACRC,MAAQ,WACRtF,KAAQ,IAAItD,gBAAgB,CAC3Bd,OAAY,sBACZkL,OAAY/a,aAAaoG,QAAQ2U,OACjCC,SAAYhb,aAAawK,KAAKgC,UAC9B8I,WAAYA,MAKX8D,EAASuB,GAAI,CAChB,IAAIM,QAAqB7B,EAASwB,OAC9BK,EAAaJ,UAChB7a,aAAawG,SAAWxV,OAAOkqB,OAAO,CAAC,EAAGlb,aAAawG,SAAUyU,EAAa7Y,MAEhF,MACCnB,QAAQD,MAAM,sCAIhB,CAFE,MAAOQ,GACRP,QAAQD,MAAMQ,EACf,CAEA,OAAO,CAhD2C,CAgDvC,EAGZnB,EAAIoa,0BAA4BU,IAE/Bnb,aAAaoH,KAAW+T,EACxBnb,aAAawG,SAAWxV,OAAOkqB,OAAO,CAAC,EAAGlb,aAAawG,SAAU2U,EAAW,EAG7E9a,EAAIoY,yBAA2B1W,UAE1B/B,aAAawG,UAAYxG,aAAawG,SAASoO,UAI5CvU,EAAImV,uBAAuB,CAACZ,IAFlCvU,EAAI+a,qBAAqBxG,EAI1B,EAGDvU,EAAI+a,qBAAuBxG,IAE1B,IAAI1P,EAAU7E,EAAI+X,mCAAmCxD,GAErD/U,OAAOC,UAAU+G,QAAQ,cAAe3B,EAAQ,EAGjD7E,EAAIgb,8BAAgC,KACnCxb,OAAOC,UAAU+G,QAAQ,cAAc,EAGxCxG,EAAI6U,mBAAqB,SAACoG,GAA+C,IAAzCC,EAAkB,UAAH,wCAAG,KAAMhjB,EAAQ,UAAH,wCAAG,KAE3D6J,EAAO,CACVkZ,KAAiBA,EACjBC,gBAAiBA,EACjBhjB,MAAiBA,GAGlBsH,OAAOC,UAAU+G,QAAQ,wBAAyBzE,EACnD,EAEA/B,EAAI4U,qBAAuBqG,IAE1B,IAAIlZ,EAAO,CACVkZ,KAAMA,GAGPzb,OAAOC,UAAU+G,QAAQ,0BAA2BzE,EAAK,EAG1D/B,EAAIsX,oBAAsBtf,IAEzB,IACC,OAAOA,EAAOhF,MAAM,gBAAgB,EAGrC,CAFE,MAAOmO,GACRP,QAAQD,MAAMQ,EACf,GAGDnB,EAAImb,oBAAsB5G,IAEzB,IAAKA,EAAW,MAAMpkB,MAAM,uCAI5B,KAFAokB,EAAYvU,EAAI8X,qCAAqCvD,IAErC,MAAMpkB,MAAM,uCAE5BqP,OAAOC,UAAU+G,QAAQ,kBAAmBxG,EAAI2V,+BAA+BpB,GAAW,EAG3FvU,EAAI2V,+BAAiCpB,IAEpC,IAAKA,EAAW,MAAMpkB,MAAM,uCAE5B,IACC,GAAIwP,aAAawG,SAASoO,GAEzB,OAAOvU,EAAI+X,mCAAmCxD,EAIhD,CAFE,MAAOpT,GACRP,QAAQD,MAAMQ,EACf,GAGDnB,EAAI0V,gCAAkC,KAErC,IACC,MAAI,CAAC,SAAU,WAAY,UAAW,YAAa,UAAUxb,QAAQyF,aAAawK,KAAKsL,eAAiB,GAChGjW,OAAO,uBAAuBuC,KAAK,KAM5C,CAFE,MAAOZ,GACRP,QAAQD,MAAMQ,EACf,GAGDnB,EAAIob,4BAA8B5D,IAEjChY,OAAOgY,GAAQ6D,IAAI,CAAC,SAAY,aAChC7b,OAAOgY,GAAQ8D,OAAO,+CACtB9b,OAAOgY,GAAQJ,KAAK,+BAA+BiE,IAAI,CACtD,UAAoB,KACpB,QAAoB,QACpB,SAAoB,WACpB,OAAoB,OACpB,IAAoB,IACpB,KAAoB,IACpB,MAAoB,IACpB,QAAoB1b,aAAa4b,oBAAoBC,QACrD,mBAAoB7b,aAAa4b,oBAAoBE,iBACpD,EAGHzb,EAAI4W,qBAAuB,KAE1B,IAEC,OADoB,IAAItG,gBAAgBrP,OAAO2F,SAAS8U,QACnC7qB,IAAI,IAG1B,CAFE,MAAOsQ,GACRP,QAAQD,MAAMQ,EACf,GAID,IA4CIwa,EA5CAC,EAAa,CAAC,EAElB5b,EAAI6b,iBAAmB,CAAChW,EAASiW,KAEhCjW,EAAQ2K,SAASuL,IAEhB,IACC,IAAIxH,EAEAyH,EAAYxc,OAAOuc,EAAMvE,QAAQzV,KAAK,QAY1C,GANCwS,EAFG/U,OAAOuc,EAAMvE,QAAQyE,KAAK,iBAAiB/rB,OAElCsP,OAAOuc,EAAMvE,QAAQyE,KAAK,iBAAiBla,KAAK,MAEhDvC,OAAOuc,EAAMvE,QAAQJ,KAAK,iBAAiBrV,KAAK,OAIxDwS,EAAW,MAAMpkB,MAAM,kCAExB4rB,EAAMG,eAETN,EAAWI,GAAarO,YAAW,KAElC3N,EAAImb,oBAAoB5G,GACpB5U,aAAa4b,oBAAoBY,UAAUnc,EAAIob,4BAA4BW,EAAMvE,SACrC,IAA5C7X,aAAa4b,oBAAoBxe,QAAkB+e,EAASM,UAAUL,EAAMvE,OAAO,GACrF7X,aAAa4b,oBAAoBc,UAIpCC,aAAaV,EAAWI,IACpBrc,aAAa4b,oBAAoBY,UAAU3c,OAAOuc,EAAMvE,QAAQJ,KAAK,+BAA+B1E,SAI1G,CAFE,MAAOvR,GACRP,QAAQD,MAAMQ,EACf,IACC,EAKH,IACIob,EADAC,EAAO,EAGPC,EAAwB,KAE3BF,EAAuB/c,OAAO,iBAC5B5N,KAAI,SAAUmC,EAAG2oB,GAEjB,OACCld,OAAOkd,GAAMC,SAASC,SAAS,iBAC/Bpd,OAAOkd,GAAMC,SAASC,SAAS,YAC/Bpd,OAAOkd,GAAMC,SAASC,SAAS,sBAExBpd,OAAOkd,GAAMC,SAEpBnd,OAAOkd,GAAMG,OAAOD,SAAS,2BAC7Bpd,OAAOkd,GAAMG,OAAOD,SAAS,YAC7Bpd,OAAOkd,GAAMG,OAAOD,SAAS,kBAC7Bpd,OAAOkd,GAAMG,OAAOD,SAAS,gCAEtBpd,OAAOnK,MAAMwnB,OACVrd,OAAOkd,GAAMjF,QAAQ,YAAYvnB,OACpCsP,OAAOkd,GAAMjF,QAAQ,iBADtB,CAGR,GAAE,EAGJzX,EAAI+W,iCAAmC,KAEtC,IAEK/W,EAAI8c,gBAAgB,iBAAgBnd,aAAa4b,oBAAoBY,UAAW,GAGpFR,EAAK,IAAIoB,qBAAqB/c,EAAI6b,iBAAkB,CACnDmB,UAAWrd,aAAa4b,oBAAoByB,YAG7CP,IAEAF,EAAqBpF,MAAK,CAACpjB,EAAG2oB,KAE7Bld,OAAOkd,EAAK,IAAI3a,KAAK,OAAQya,KAE7Bb,EAAGzJ,QAAQwK,EAAK,GAAG,GAIrB,CAFE,MAAOvb,GACRP,QAAQD,MAAMQ,EACf,GAIDnB,EAAIgX,qCAAuC,KAE1C,IAKC,IAAIiG,EAAezd,OAAO,uBAAuB0d,UAAUtF,IAAIpY,OAAO,uBAAuB0d,WAAW5nB,QAEpG2nB,EAAa/sB,QAChBitB,EAAyBjL,QAAQ+K,EAAa,GAAI,CACjDG,YAAe,EACfhL,WAAe,EACfiL,eAAe,GAKlB,CAFE,MAAOlc,GACRP,QAAQD,MAAMQ,EACf,GAID,IAAIgc,EAA2B,IAAIxL,kBAAiBC,IAEnDA,EAAUpB,SAAQ8M,IACjB,IAAIC,EAAWD,EAASzL,WACP,OAAb0L,GACS/d,OAAO+d,GACbpG,MAAK,YAET3X,OAAOnK,MAAMunB,SAAS,iBACtBpd,OAAOnK,MAAMunB,SAAS,kBACtBpd,OAAOnK,MAAMunB,SAAS,4BAIlBY,EAAuBnoB,QAC1BmK,OAAOnK,MAAM0M,KAAK,OAAQya,KAC1Bb,EAAGzJ,QAAQ7c,MAGd,GACD,GACC,IAGCmoB,EAAyBd,MACzBld,OAAOkd,GAAMtF,KAAK,iBAAiBlnB,SACrCsP,OAAOkd,GAAMe,SAAS,iBAAiBvtB,QAEzC8P,EAAIkU,UAAY,SAAC4E,GAAoD,IAAxC4E,EAAc,UAAH,wCAAG,GAAIC,EAAa,UAAH,wCAAG,KAE3D,GAAIA,EAAY,CAEf,IAAI/gB,EAAI,IAAIyQ,KACZzQ,EAAEghB,QAAQhhB,EAAEihB,UAA0B,GAAbF,EAAkB,GAAK,GAAK,KACrD,IAAIG,EAAc,WAAalhB,EAAEkd,cACjCra,SAAS2P,OAAS0J,EAAa,IAAM4E,EAAc,IAAMI,EAAU,SACpE,MACCre,SAAS2P,OAAS0J,EAAa,IAAM4E,EAAc,SAErD,EAEA1d,EAAIoE,UAAY0U,IAEf,IAAI9T,EAAgB8T,EAAa,IAE7BiF,EADgBC,mBAAmBve,SAAS2P,QACdtf,MAAM,KAExC,IAAK,IAAIiE,EAAI,EAAGA,EAAIgqB,EAAG7tB,OAAQ6D,IAAK,CAEnC,IAAIkqB,EAAIF,EAAGhqB,GAEX,KAAsB,KAAfkqB,EAAEC,OAAO,IACfD,EAAIA,EAAEnlB,UAAU,GAGjB,GAAuB,GAAnBmlB,EAAE/jB,QAAQ8K,GACb,OAAOiZ,EAAEnlB,UAAUkM,EAAK9U,OAAQ+tB,EAAE/tB,OAEpC,CAEA,MAAO,EAAE,EAGV8P,EAAIme,aAAerF,IAClB9Y,EAAIkU,UAAU4E,EAAY,IAAK,EAAE,EAGlC9Y,EAAIoe,kBAAoB,KAEvB,GAAInd,OAAOgV,eAAgB,CAE1B,IAAIlU,EAAOd,OAAOgV,eAAelG,QAAQ,QAEzC,OAAa,OAAThO,EACIuN,KAAK/X,MAAMwK,GAEX,CAAC,CAEV,CACC,MAAO,CAAC,CACT,EAGD/B,EAAIqe,kBAAoBtc,IACnBd,OAAOgV,gBACVhV,OAAOgV,eAAemD,QAAQ,OAAQ9J,KAAK6E,UAAUpS,GACtD,EAGD/B,EAAI+Z,qBAAuBrY,MAAO6X,EAAUC,KAE3C,IAEC,IAAIT,EAIHA,QAFS/Y,EAAI0Y,gCAEIM,MAAMhZ,EAAI6Y,KAAO,uBAAwB,CACzDI,OAAW,OACXwB,QAAW,CACV,eAAgB,mBAChB,aAAgBza,EAAIse,eAErB1K,KAAWtE,KAAK6E,UAAU,CAEzBoK,UAAWhF,EACXC,OAAWA,IAGZL,WAAW,EACXD,MAAW,mBAQKF,MAAMhZ,EAAIqa,SAAU,CACpCpB,OAAW,OACXrF,KAAW,IAAItD,gBAAgB,CAC9Bd,OAAQ,4BAER+O,UAAYhF,EACZC,OAAYA,EACZgF,WAAYxe,EAAIwe,aAEjBrF,WAAW,IAIb,MAAMsF,QAAqB1F,EAASwB,OAEhCkE,EAAajE,QAChB5Z,QAAQoP,IAAI,oCAEZpP,QAAQD,MAAM,iCAAkC8d,EAKlD,CAFE,MAAOtd,GACRP,QAAQD,MAAMQ,EACf,GAGDnB,EAAIwU,6BAA+BJ,IAElC,IAGIG,EAFAmK,EADe,IAAIpO,gBAAgB8D,EAAIsH,QACX7qB,IAAI,eAUpC,OALC0jB,EAD8D,IAA3D5U,aAAagf,aAAaD,GAA2B,aAC5C/e,aAAagf,aAAaD,GAAyB,WAEnD/e,aAAagf,aAAaD,GAA2B,aAG3DnK,CAAS,EAGjBvU,EAAIkV,2BAA6B,IAChC1V,OAAO,KAAK5N,KAAI,WACf,IAAIiV,EAAOrH,OAAOnK,MAAMud,KAAK,QAE7B,GAAI/L,GAAQA,EAAKyE,SAAS,iBAAkB,CAC3C,IAAIvY,EAAU8T,EAAK7T,MAAM,uBACzB,GAAID,EAAS,OAAOA,EAAQ,EAC7B,CACD,IAAGlC,MAEJmP,EAAI+X,mCAAqC,SAACxD,GAA4B,IAAjBjP,EAAW,UAAH,wCAAG,EAE3DT,EAAU,CACbzC,GAAemS,EAAUnhB,WACzB8R,UAAevF,aAAawG,SAASoO,GAAWrP,UAChDF,KAAerF,aAAawG,SAASoO,GAAWvP,KAChDkF,UAAevK,aAAawK,KAAKD,UACjCJ,MAAenK,aAAawG,SAASoO,GAAWzK,MAChDH,SAAehK,aAAawG,SAASoO,GAAW5K,SAChDC,QAAejK,aAAawG,SAASoO,GAAW3K,QAChDQ,cAAezK,aAAawG,SAASoO,GAAWqK,SAChDtZ,SAAeA,EACfC,MAAe5F,aAAawG,SAASoO,GAAWhP,MAChDC,SAAe7F,aAAawK,KAAK3E,SACjC+B,WAAe5H,aAAawG,SAASoO,GAAWhN,WAChD2S,YAAeva,aAAawG,SAASoO,GAAW2F,YAChDC,SAAexa,aAAawG,SAASoO,GAAW4F,UAKjD,OAFItV,EAAQqV,cAAarV,EAA4B,mBAAIlF,aAAawG,SAASoO,GAAWsK,oBAEnFha,CACR,EAEA7E,EAAI8e,oBAAsB,KAGpB9e,EAAIoE,UAAU,gBAClBpE,EAAIkU,UAAU,cAAezU,SAAS2V,SACvC,EAGDpV,EAAI+e,sBAAwB,IAEvB/e,EAAIoE,UAAU,eACVpE,EAAIoE,UAAU,eAEd,KAITpE,EAAIgf,mBAAqB,WAAsB,IAE1CC,EAFqBC,EAAS,UAAH,wCAAG,QASlC,OALAD,EAAe,CACdE,MAAO,UACPC,MAAO,WAGJpf,EAAIoE,UAAU6a,EAAaC,IAEblf,EAAIoE,UAAU6a,EAAaC,IAChBlsB,MAAM,oBACnB,GAER,EAET,EAEAgN,EAAIqf,aAAe,IAAM5a,UAAUC,UAEnC1E,EAAIsf,YAAc,KAAM,CACvBC,MAAQtrB,KAAKurB,IAAI/f,SAASkU,gBAAgB8L,aAAe,EAAGxe,OAAOye,YAAc,GACjFC,OAAQ1rB,KAAKurB,IAAI/f,SAASkU,gBAAgBiM,cAAgB,EAAG3e,OAAO4e,aAAe,KAIpF7f,EAAIrB,QAAU,KACbiC,QAAQoP,IAAIrQ,aAAahB,QAAQ,EAYlCqB,EAAI2M,qBAAuByH,IA2B1B,IAAI0L,EAAU,CACbC,SAAU,SACV7G,OAAU,EACV9E,IAAUA,GAGX,OAAO5U,OAAOwgB,KAAKF,EAAQ,EAG5B9f,EAAIigB,kBAAoBjX,IAAcA,EAAUkX,MAAQlX,EAAUmX,WAAanX,EAAU1D,SAEzFtF,EAAI+V,mBAAqB,IACb/V,EAAIoe,qBACFgC,gBAGdpgB,EAAIgW,mBAAqB,KACxB,IAAIjU,EAAsB/B,EAAIoe,oBAC9Brc,EAAsB,iBAAI,EAC1B/B,EAAIqe,kBAAkBtc,EAAK,EAG5B/B,EAAIqgB,WAAa3e,SAAY,IAAI4L,SAAQC,KACxC,SAAU+S,IACT,GAAI,aAAe7gB,SAAS8gB,WAAY,OAAOhT,IAC/CI,WAAW2S,EAAY,GACvB,CAHD,EAGI,IAGLtgB,EAAIwgB,UAAY,IACR,IAAIlT,SAAQC,KAClB,SAAU+S,IACT,GAAI,gBAAkB7gB,SAAS8gB,YAAc,aAAe9gB,SAAS8gB,WAAY,OAAOhT,IACxFI,WAAW2S,EAAY,GACvB,CAHD,EAGI,IAINtgB,EAAIygB,iBAAmB,KACtB,GAAIxf,OAAOgV,eAAgB,CAC1B,IAAK,MAAOtQ,EAAKzN,KAAUvH,OAAOkV,QAAQ5E,OAAOgV,gBAChD,GAAItQ,EAAI2F,SAAS,gBAChB,OAAO,EAGT,OAAO,CACR,CACC,OAAO,CACR,EAGDtL,EAAI+U,yBAA2B,IAAMtV,SAAS2P,OAAO9D,SAAS,6BAE9DtL,EAAI8c,gBAAkB4D,GACL,IAAIpQ,gBAAgBrP,OAAO2F,SAAS8U,QACnC9D,IAAI8I,GAItB1gB,EAAI2gB,UAAY,CAACC,EAAMC,IACfC,OAAOC,OAAOC,OAAOJ,EAAM,IAAIK,YAAY,SAASC,OAAOL,IAAMhZ,MAAKsZ,GACrE5xB,MAAM+G,UAAU1E,IAAIsH,KAAK,IAAIkoB,WAAWD,IAAMhuB,IAAO,KAAOA,EAAEC,SAAS,KAAKsD,OAAO,KAAKH,KAAK,MAItGyJ,EAAI0W,aAAe,KAElB,IAAIxe,EAAQ,EAEZ,GAAIyH,cAAcoH,KAEjB,IAAK,MAAMpB,KAAOhG,aAAaoH,KAAM,CAGpC,IAAIlC,EAAUlF,aAAaoH,KAAKpB,GAEhCzN,GAAS2M,EAAQS,SAAWT,EAAQU,KACrC,CAGD,OAAOrN,CAAK,EASb8H,EAAIC,uBAAyBohB,IAE5B,IAAK,MAAMC,KAAWD,EACrB,GAAI,IAAI7sB,OAAO8sB,GAASxuB,KAAKmO,OAAO2F,SAASC,MAC5C,OAAO,EAIT,OAAO,CAAK,EAWb7G,EAAIuhB,0BAA4B,KAE/B,IAAIC,EAAiB,CACpB,cACA,wBAQD,OALI7hB,cAAcoG,SAASyb,iBAC1BA,EAAiB,IAAIA,KAAmB7hB,aAAaoG,QAAQyb,mBAI1DA,EAAe1vB,MAAK2vB,GAAUxgB,OAAO2F,SAASC,KAAKyE,SAASmW,OAC/D7gB,QAAQ8gB,MAAM,kEACP,EAGI,EAGb1hB,EAAImW,iBAAmB,KAAOliB,KAAKuK,SAAW,GAAGpL,SAAS,IAAI0F,UAAU,GAGxEkH,EAAI2hB,kBAAoB,KACvB,IAAIA,EAAoB,kCACxBA,GAAqBhiB,aAAahB,QAAQijB,IAAM,MAAQ,OACxDD,GAAqB,cAAgBhiB,aAAahB,QAAQkjB,OACtB,QAAhCliB,aAAahB,QAAQkjB,QAAoBliB,aAAahB,QAAQijB,MACjED,GAAqB,uBAAyBhiB,aAAahB,QAAQmjB,mBAAqB,MAAQ,OAEjGH,GAAqB,eAAiBhiB,aAAahB,QAAQ0J,OAE3DzH,QAAQoP,IAAI2R,EAAkB,EAG/B3hB,EAAI+hB,uBAAyB,IACY,QAAhCpiB,aAAahB,QAAQkjB,QAAoBliB,aAAahB,QAAQijB,KAAOjiB,aAAahB,QAAQmjB,oBAAuD,QAAhCniB,aAAahB,QAAQkjB,OAG/I,IAAIG,GAAmB,EAEvBhiB,EAAIiiB,qBAAuB,MACD,IAArBD,GAA4BxiB,OAAOC,UAAU+G,QAAQ,aACzDwb,GAAmB,CAAI,EAGxBxiB,OAAOC,UAAUC,GAAG,SAAS,KAC5BM,EAAIiiB,sBAAsB,IAG3BxiB,SAASyQ,iBAAiB,oBAAoB,KAC7ClQ,EAAIiiB,sBAAsB,GAI3B,CAhjCA,CAgjCChhB,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,O,gBC/iCjCwH,EAAQ,KACRA,EAAQ,KACRA,EAAQ,I,YCTP,SAAUhH,EAAKc,EAAG7E,GAElB+D,EAAIkiB,aAAexgB,SAAY,IAAI4L,SAAQC,KAE1C,SAAU4U,IACT,GAAsB,oBAAX3iB,OAAwB,OAAO+N,IAC1CI,WAAWwU,EAAe,IAC1B,CAHD,EAGI,IAGLniB,EAAIoiB,mBAAqB1gB,SAAY,IAAI4L,SAAQC,KAChD,SAAU+S,IACT,GAA4B,oBAAjB3gB,aAA8B,OAAO4N,IAChDI,WAAW2S,EAAY,GACvB,CAHD,EAGI,GAIL,CAlBA,CAkBCrf,OAAOjB,IAAMiB,OAAOjB,KAAO,CAAC,EAAGR,O,iBCdhC,SAAUQ,EAAKc,EAAG7E,GAElB+D,EAAIqiB,QAAU3gB,UAEb,GAAIT,OAAOgV,gBAAkBA,eAAelG,QAAQ,gBACnD,QAAST,KAAK/X,MAAM0e,eAAelG,QAAQ,iBAI5C,MAAMgJ,QAAiBC,MAAM,4CAC7B,IAAIjX,QAAmBgX,EAASuJ,OAYhC,OARAvgB,EAAOA,EACLwgB,OACAzyB,MAAM,MACNJ,QAAO,CAAC8yB,EAAKC,KAEND,GADPC,EAAOA,EAAK3yB,MAAM,MACF,IAAM2yB,EAAK,GAAID,IAC7B,CAAC,GAEDE,EAAc3gB,EAAKlS,KAClBoR,OAAOgV,gBAAgBhV,OAAOgV,eAAemD,QAAQ,eAAgB9J,KAAK6E,WAAU,KACjF,IAGJlT,OAAOgV,gBAAgBhV,OAAOgV,eAAemD,QAAQ,eAAgB9J,KAAK6E,WAAU,KACjF,EAAI,EAGZ,MAAMuO,EAAgB7yB,IAErB,MAAM,WAACV,GAAc6X,EAAQ,KAE7B,IAAK,MAAM2b,KAAUC,IAEpB,GAAIC,EAAOF,GACV,IACC,GAAIxzB,EAAWU,EAAI8yB,GAAS,OAAO,CAGpC,CAFE,MAAOxhB,GACRP,QAAQD,MAAMQ,EACf,MAEA,GAAItR,IAAO8yB,EAAQ,OAAO,EAI5B,OAAO,CAAK,EAGPE,EAASF,IAEd,MAAM,QAAC5jB,GAAWiI,EAAQ,KAE1B,OAAOjI,EAAQ4jB,EAAO,EAGjBC,EAAe,KAmiCpB,IAAIE,EAAuB,GAO3B,OAJIvzB,MAAMC,QAAQmQ,aAAaoG,QAAQgd,cAAcC,iBACpDF,EAAsBnjB,aAAaoG,QAAQgd,cAAcC,eAriCxC,GAwiCDrvB,OAniCF,CACd,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,wBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,sBACA,wBACA,wBACA,mBACA,mBACA,kBACA,iBACA,mBACA,oBACA,oBACA,mBACA,kBACA,oBACA,kBACA,mBACA,mBACA,mBACA,iBACA,mBACA,iBACA,iBACA,iBACA,kBACA,kBACA,oBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,kBACA,kBACA,iBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,kBACA,kBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBAGgB,CAChB,iBACA,kBACA,kBACA,iBACA,iBACA,iBACA,kBACA,kBACA,kBACA,kBACA,gBACA,kBACA,gBACA,gBACA,kBACA,kBACA,kBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,kBACA,iBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,gBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,kBACA,iBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,mBACA,mBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,kBACA,iBACA,mBACA,iBACA,sBACA,sBACA,mBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,iBACA,iBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,iBACA,iBACA,mBACA,mBACA,mBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,sBACA,sBACA,sBACA,mBACA,mBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBACA,mBACA,sBACA,sBACA,sBACA,sBACA,oBACA,mBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,oBACA,oBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,oBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,oBACA,yBACA,kBAGe,CACf,kBACA,kBACA,mBAGY,CACZ,iBACA,iBACA,iBACA,iBACA,iBACA,kBACA,iBACA,kBACA,mBACA,kBACA,qBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBACA,iBACA,mBACA,iBACA,iBACA,iBACA,iBACA,iBACA,kBAGiB,CACjB,gBACA,gBACA,gBACA,gBACA,iBACA,iBACA,iBACA,mBAGc,CACd,eACA,iBACA,iBAGa,CACb,kBACA,kBAGc,CACd,iBACA,eAGa,CACb,iBACA,kBACA,mBACA,kBACA,kBACA,kBACA,gBACA,gBACA,gBACA,kBACA,mBACA,kBACA,kBACA,oBACA,oBACA,kBACA,mBACA,mBACA,mBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBAGkB,CAClB,gBACA,eACA,gBACA,cACA,eACA,gBACA,eACA,gBACA,gBACA,eACA,gBACA,iBAGa,CACb,iBACA,eACA,iBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,iBACA,iBACA,gBACA,cACA,eACA,eACA,eACA,eACA,eACA,gBACA,eACA,gBACA,kBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,iBACA,mBACA,kBAGc,CA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","sources":["webpack://Pixel-Manager-for-WooCommerce/../../src/index.ts","webpack://Pixel-Manager-for-WooCommerce/../../src/ipRange.ts","webpack://Pixel-Manager-for-WooCommerce/../../src/ipv4.ts","webpack://Pixel-Manager-for-WooCommerce/../../src/ipv6.ts","webpack://Pixel-Manager-for-WooCommerce/../../src/util.ts","webpack://Pixel-Manager-for-WooCommerce/../node_modules/ipaddr.js/lib/ipaddr.js","webpack://Pixel-Manager-for-WooCommerce/../node_modules/ip6/ip6.js","webpack://Pixel-Manager-for-WooCommerce/../src/range-check.ts","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/facebook/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/ads/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga3/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/ga4/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/analytics/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/base/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/google/optimize/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/hotjar/loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/cookie_consent.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/event_listeners.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/event_listeners_on_ready.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions_loader.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/functions_main.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/ip_check.js","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/wpm/wc_hooks.js","webpack://Pixel-Manager-for-WooCommerce/webpack/bootstrap","webpack://Pixel-Manager-for-WooCommerce/webpack/runtime/define property getters","webpack://Pixel-Manager-for-WooCommerce/webpack/runtime/global","webpack://Pixel-Manager-for-WooCommerce/webpack/runtime/hasOwnProperty shorthand","webpack://Pixel-Manager-for-WooCommerce/webpack/runtime/make namespace object","webpack://Pixel-Manager-for-WooCommerce/./src/js/public/main.js"],"sourcesContent":[null,null,null,null,null,"(function() {\n var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex;\n\n ipaddr = {};\n\n root = this;\n\n if ((typeof module !== \"undefined\" && module !== null) && module.exports) {\n module.exports = ipaddr;\n } else {\n root['ipaddr'] = ipaddr;\n }\n\n matchCIDR = function(first, second, partSize, cidrBits) {\n var part, shift;\n if (first.length !== second.length) {\n throw new Error(\"ipaddr: cannot match CIDR for objects with different lengths\");\n }\n part = 0;\n while (cidrBits > 0) {\n shift = partSize - cidrBits;\n if (shift < 0) {\n shift = 0;\n }\n if (first[part] >> shift !== second[part] >> shift) {\n return false;\n }\n cidrBits -= partSize;\n part += 1;\n }\n return true;\n };\n\n ipaddr.subnetMatch = function(address, rangeList, defaultName) {\n var k, len, rangeName, rangeSubnets, subnet;\n if (defaultName == null) {\n defaultName = 'unicast';\n }\n for (rangeName in rangeList) {\n rangeSubnets = rangeList[rangeName];\n if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {\n rangeSubnets = [rangeSubnets];\n }\n for (k = 0, len = rangeSubnets.length; k < len; k++) {\n subnet = rangeSubnets[k];\n if (address.kind() === subnet[0].kind()) {\n if (address.match.apply(address, subnet)) {\n return rangeName;\n }\n }\n }\n }\n return defaultName;\n };\n\n ipaddr.IPv4 = (function() {\n function IPv4(octets) {\n var k, len, octet;\n if (octets.length !== 4) {\n throw new Error(\"ipaddr: ipv4 octet count should be 4\");\n }\n for (k = 0, len = octets.length; k < len; k++) {\n octet = octets[k];\n if (!((0 <= octet && octet <= 255))) {\n throw new Error(\"ipaddr: ipv4 octet should fit in 8 bits\");\n }\n }\n this.octets = octets;\n }\n\n IPv4.prototype.kind = function() {\n return 'ipv4';\n };\n\n IPv4.prototype.toString = function() {\n return this.octets.join(\".\");\n };\n\n IPv4.prototype.toNormalizedString = function() {\n return this.toString();\n };\n\n IPv4.prototype.toByteArray = function() {\n return this.octets.slice(0);\n };\n\n IPv4.prototype.match = function(other, cidrRange) {\n var ref;\n if (cidrRange === void 0) {\n ref = other, other = ref[0], cidrRange = ref[1];\n }\n if (other.kind() !== 'ipv4') {\n throw new Error(\"ipaddr: cannot match ipv4 address with non-ipv4 one\");\n }\n return matchCIDR(this.octets, other.octets, 8, cidrRange);\n };\n\n IPv4.prototype.SpecialRanges = {\n unspecified: [[new IPv4([0, 0, 0, 0]), 8]],\n broadcast: [[new IPv4([255, 255, 255, 255]), 32]],\n multicast: [[new IPv4([224, 0, 0, 0]), 4]],\n linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],\n loopback: [[new IPv4([127, 0, 0, 0]), 8]],\n carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],\n \"private\": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]],\n reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]]\n };\n\n IPv4.prototype.range = function() {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n IPv4.prototype.toIPv4MappedAddress = function() {\n return ipaddr.IPv6.parse(\"::ffff:\" + (this.toString()));\n };\n\n IPv4.prototype.prefixLengthFromSubnetMask = function() {\n var cidr, i, k, octet, stop, zeros, zerotable;\n zerotable = {\n 0: 8,\n 128: 7,\n 192: 6,\n 224: 5,\n 240: 4,\n 248: 3,\n 252: 2,\n 254: 1,\n 255: 0\n };\n cidr = 0;\n stop = false;\n for (i = k = 3; k >= 0; i = k += -1) {\n octet = this.octets[i];\n if (octet in zerotable) {\n zeros = zerotable[octet];\n if (stop && zeros !== 0) {\n return null;\n }\n if (zeros !== 8) {\n stop = true;\n }\n cidr += zeros;\n } else {\n return null;\n }\n }\n return 32 - cidr;\n };\n\n return IPv4;\n\n })();\n\n ipv4Part = \"(0?\\\\d+|0x[a-f0-9]+)\";\n\n ipv4Regexes = {\n fourOctet: new RegExp(\"^\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"$\", 'i'),\n longValue: new RegExp(\"^\" + ipv4Part + \"$\", 'i')\n };\n\n ipaddr.IPv4.parser = function(string) {\n var match, parseIntAuto, part, shift, value;\n parseIntAuto = function(string) {\n if (string[0] === \"0\" && string[1] !== \"x\") {\n return parseInt(string, 8);\n } else {\n return parseInt(string);\n }\n };\n if (match = string.match(ipv4Regexes.fourOctet)) {\n return (function() {\n var k, len, ref, results;\n ref = match.slice(1, 6);\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(parseIntAuto(part));\n }\n return results;\n })();\n } else if (match = string.match(ipv4Regexes.longValue)) {\n value = parseIntAuto(match[1]);\n if (value > 0xffffffff || value < 0) {\n throw new Error(\"ipaddr: address outside defined range\");\n }\n return ((function() {\n var k, results;\n results = [];\n for (shift = k = 0; k <= 24; shift = k += 8) {\n results.push((value >> shift) & 0xff);\n }\n return results;\n })()).reverse();\n } else {\n return null;\n }\n };\n\n ipaddr.IPv6 = (function() {\n function IPv6(parts, zoneId) {\n var i, k, l, len, part, ref;\n if (parts.length === 16) {\n this.parts = [];\n for (i = k = 0; k <= 14; i = k += 2) {\n this.parts.push((parts[i] << 8) | parts[i + 1]);\n }\n } else if (parts.length === 8) {\n this.parts = parts;\n } else {\n throw new Error(\"ipaddr: ipv6 part count should be 8 or 16\");\n }\n ref = this.parts;\n for (l = 0, len = ref.length; l < len; l++) {\n part = ref[l];\n if (!((0 <= part && part <= 0xffff))) {\n throw new Error(\"ipaddr: ipv6 part should fit in 16 bits\");\n }\n }\n if (zoneId) {\n this.zoneId = zoneId;\n }\n }\n\n IPv6.prototype.kind = function() {\n return 'ipv6';\n };\n\n IPv6.prototype.toString = function() {\n return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, '::');\n };\n\n IPv6.prototype.toRFC5952String = function() {\n var bestMatchIndex, bestMatchLength, match, regex, string;\n regex = /((^|:)(0(:|$)){2,})/g;\n string = this.toNormalizedString();\n bestMatchIndex = 0;\n bestMatchLength = -1;\n while ((match = regex.exec(string))) {\n if (match[0].length > bestMatchLength) {\n bestMatchIndex = match.index;\n bestMatchLength = match[0].length;\n }\n }\n if (bestMatchLength < 0) {\n return string;\n }\n return string.substring(0, bestMatchIndex) + '::' + string.substring(bestMatchIndex + bestMatchLength);\n };\n\n IPv6.prototype.toByteArray = function() {\n var bytes, k, len, part, ref;\n bytes = [];\n ref = this.parts;\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n bytes.push(part >> 8);\n bytes.push(part & 0xff);\n }\n return bytes;\n };\n\n IPv6.prototype.toNormalizedString = function() {\n var addr, part, suffix;\n addr = ((function() {\n var k, len, ref, results;\n ref = this.parts;\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(part.toString(16));\n }\n return results;\n }).call(this)).join(\":\");\n suffix = '';\n if (this.zoneId) {\n suffix = '%' + this.zoneId;\n }\n return addr + suffix;\n };\n\n IPv6.prototype.toFixedLengthString = function() {\n var addr, part, suffix;\n addr = ((function() {\n var k, len, ref, results;\n ref = this.parts;\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(part.toString(16).padStart(4, '0'));\n }\n return results;\n }).call(this)).join(\":\");\n suffix = '';\n if (this.zoneId) {\n suffix = '%' + this.zoneId;\n }\n return addr + suffix;\n };\n\n IPv6.prototype.match = function(other, cidrRange) {\n var ref;\n if (cidrRange === void 0) {\n ref = other, other = ref[0], cidrRange = ref[1];\n }\n if (other.kind() !== 'ipv6') {\n throw new Error(\"ipaddr: cannot match ipv6 address with non-ipv6 one\");\n }\n return matchCIDR(this.parts, other.parts, 16, cidrRange);\n };\n\n IPv6.prototype.SpecialRanges = {\n unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],\n linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],\n multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],\n loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],\n uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],\n ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],\n rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],\n rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],\n '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],\n teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],\n reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]]\n };\n\n IPv6.prototype.range = function() {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n IPv6.prototype.isIPv4MappedAddress = function() {\n return this.range() === 'ipv4Mapped';\n };\n\n IPv6.prototype.toIPv4Address = function() {\n var high, low, ref;\n if (!this.isIPv4MappedAddress()) {\n throw new Error(\"ipaddr: trying to convert a generic ipv6 address to ipv4\");\n }\n ref = this.parts.slice(-2), high = ref[0], low = ref[1];\n return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);\n };\n\n IPv6.prototype.prefixLengthFromSubnetMask = function() {\n var cidr, i, k, part, stop, zeros, zerotable;\n zerotable = {\n 0: 16,\n 32768: 15,\n 49152: 14,\n 57344: 13,\n 61440: 12,\n 63488: 11,\n 64512: 10,\n 65024: 9,\n 65280: 8,\n 65408: 7,\n 65472: 6,\n 65504: 5,\n 65520: 4,\n 65528: 3,\n 65532: 2,\n 65534: 1,\n 65535: 0\n };\n cidr = 0;\n stop = false;\n for (i = k = 7; k >= 0; i = k += -1) {\n part = this.parts[i];\n if (part in zerotable) {\n zeros = zerotable[part];\n if (stop && zeros !== 0) {\n return null;\n }\n if (zeros !== 16) {\n stop = true;\n }\n cidr += zeros;\n } else {\n return null;\n }\n }\n return 128 - cidr;\n };\n\n return IPv6;\n\n })();\n\n ipv6Part = \"(?:[0-9a-f]+::?)+\";\n\n zoneIndex = \"%[0-9a-z]{1,}\";\n\n ipv6Regexes = {\n zoneIndex: new RegExp(zoneIndex, 'i'),\n \"native\": new RegExp(\"^(::)?(\" + ipv6Part + \")?([0-9a-f]+)?(::)?(\" + zoneIndex + \")?$\", 'i'),\n transitional: new RegExp((\"^((?:\" + ipv6Part + \")|(?:::)(?:\" + ipv6Part + \")?)\") + (ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part) + (\"(\" + zoneIndex + \")?$\"), 'i')\n };\n\n expandIPv6 = function(string, parts) {\n var colonCount, lastColon, part, replacement, replacementCount, zoneId;\n if (string.indexOf('::') !== string.lastIndexOf('::')) {\n return null;\n }\n zoneId = (string.match(ipv6Regexes['zoneIndex']) || [])[0];\n if (zoneId) {\n zoneId = zoneId.substring(1);\n string = string.replace(/%.+$/, '');\n }\n colonCount = 0;\n lastColon = -1;\n while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {\n colonCount++;\n }\n if (string.substr(0, 2) === '::') {\n colonCount--;\n }\n if (string.substr(-2, 2) === '::') {\n colonCount--;\n }\n if (colonCount > parts) {\n return null;\n }\n replacementCount = parts - colonCount;\n replacement = ':';\n while (replacementCount--) {\n replacement += '0:';\n }\n string = string.replace('::', replacement);\n if (string[0] === ':') {\n string = string.slice(1);\n }\n if (string[string.length - 1] === ':') {\n string = string.slice(0, -1);\n }\n parts = (function() {\n var k, len, ref, results;\n ref = string.split(\":\");\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(parseInt(part, 16));\n }\n return results;\n })();\n return {\n parts: parts,\n zoneId: zoneId\n };\n };\n\n ipaddr.IPv6.parser = function(string) {\n var addr, k, len, match, octet, octets, zoneId;\n if (ipv6Regexes['native'].test(string)) {\n return expandIPv6(string, 8);\n } else if (match = string.match(ipv6Regexes['transitional'])) {\n zoneId = match[6] || '';\n addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6);\n if (addr.parts) {\n octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])];\n for (k = 0, len = octets.length; k < len; k++) {\n octet = octets[k];\n if (!((0 <= octet && octet <= 255))) {\n return null;\n }\n }\n addr.parts.push(octets[0] << 8 | octets[1]);\n addr.parts.push(octets[2] << 8 | octets[3]);\n return {\n parts: addr.parts,\n zoneId: addr.zoneId\n };\n }\n }\n return null;\n };\n\n ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) {\n return this.parser(string) !== null;\n };\n\n ipaddr.IPv4.isValid = function(string) {\n var e;\n try {\n new this(this.parser(string));\n return true;\n } catch (error1) {\n e = error1;\n return false;\n }\n };\n\n ipaddr.IPv4.isValidFourPartDecimal = function(string) {\n if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$/)) {\n return true;\n } else {\n return false;\n }\n };\n\n ipaddr.IPv6.isValid = function(string) {\n var addr, e;\n if (typeof string === \"string\" && string.indexOf(\":\") === -1) {\n return false;\n }\n try {\n addr = this.parser(string);\n new this(addr.parts, addr.zoneId);\n return true;\n } catch (error1) {\n e = error1;\n return false;\n }\n };\n\n ipaddr.IPv4.parse = function(string) {\n var parts;\n parts = this.parser(string);\n if (parts === null) {\n throw new Error(\"ipaddr: string is not formatted like ip address\");\n }\n return new this(parts);\n };\n\n ipaddr.IPv6.parse = function(string) {\n var addr;\n addr = this.parser(string);\n if (addr.parts === null) {\n throw new Error(\"ipaddr: string is not formatted like ip address\");\n }\n return new this(addr.parts, addr.zoneId);\n };\n\n ipaddr.IPv4.parseCIDR = function(string) {\n var maskLength, match, parsed;\n if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 32) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function() {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n throw new Error(\"ipaddr: string is not formatted like an IPv4 CIDR range\");\n };\n\n ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) {\n var filledOctetCount, j, octets;\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 32) {\n throw new Error('ipaddr: invalid IPv4 prefix length');\n }\n octets = [0, 0, 0, 0];\n j = 0;\n filledOctetCount = Math.floor(prefix / 8);\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n if (filledOctetCount < 4) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n return new this(octets);\n };\n\n ipaddr.IPv4.broadcastAddressFromCIDR = function(string) {\n var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n return new this(octets);\n } catch (error1) {\n error = error1;\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n ipaddr.IPv4.networkAddressFromCIDR = function(string) {\n var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n return new this(octets);\n } catch (error1) {\n error = error1;\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n ipaddr.IPv6.parseCIDR = function(string) {\n var maskLength, match, parsed;\n if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 128) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function() {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n throw new Error(\"ipaddr: string is not formatted like an IPv6 CIDR range\");\n };\n\n ipaddr.isValid = function(string) {\n return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);\n };\n\n ipaddr.parse = function(string) {\n if (ipaddr.IPv6.isValid(string)) {\n return ipaddr.IPv6.parse(string);\n } else if (ipaddr.IPv4.isValid(string)) {\n return ipaddr.IPv4.parse(string);\n } else {\n throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 format\");\n }\n };\n\n ipaddr.parseCIDR = function(string) {\n var e;\n try {\n return ipaddr.IPv6.parseCIDR(string);\n } catch (error1) {\n e = error1;\n try {\n return ipaddr.IPv4.parseCIDR(string);\n } catch (error1) {\n e = error1;\n throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 CIDR format\");\n }\n }\n };\n\n ipaddr.fromByteArray = function(bytes) {\n var length;\n length = bytes.length;\n if (length === 4) {\n return new ipaddr.IPv4(bytes);\n } else if (length === 16) {\n return new ipaddr.IPv6(bytes);\n } else {\n throw new Error(\"ipaddr: the binary input is neither an IPv6 nor IPv4 address\");\n }\n };\n\n ipaddr.process = function(string) {\n var addr;\n addr = this.parse(string);\n if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {\n return addr.toIPv4Address();\n } else {\n return addr;\n }\n };\n\n}).call(this);\n","/**\n * Created by elgs on 3/5/16.\n */\nconst normalize = function (a) {\n if (!_validate(a)) {\n throw new Error('Invalid address: ' + a);\n }\n a = a.toLowerCase()\n\n const nh = a.split(/\\:\\:/g);\n if (nh.length > 2) {\n throw new Error('Invalid address: ' + a);\n }\n\n let sections = [];\n if (nh.length == 1) {\n // full mode\n sections = a.split(/\\:/g);\n if (sections.length !== 8) {\n throw new Error('Invalid address: ' + a);\n }\n } else if (nh.length == 2) {\n // compact mode\n const n = nh[0];\n const h = nh[1];\n const ns = n.split(/\\:/g);\n const hs = h.split(/\\:/g);\n for (let i in ns) {\n sections[i] = ns[i];\n }\n for (let i = hs.length; i > 0; --i) {\n sections[7 - (hs.length - i)] = hs[i - 1];\n }\n }\n for (let i = 0; i < 8; ++i) {\n if (sections[i] === undefined) {\n sections[i] = '0000';\n }\n sections[i] = _leftPad(sections[i], '0', 4);\n }\n return sections.join(':');\n};\n\nconst abbreviate = function (a) {\n if (!_validate(a)) {\n throw new Error('Invalid address: ' + a);\n }\n a = normalize(a);\n a = a.replace(/0000/g, 'g');\n a = a.replace(/\\:000/g, ':');\n a = a.replace(/\\:00/g, ':');\n a = a.replace(/\\:0/g, ':');\n a = a.replace(/g/g, '0');\n const sections = a.split(/\\:/g);\n let zPreviousFlag = false;\n let zeroStartIndex = -1;\n let zeroLength = 0;\n let zStartIndex = -1;\n let zLength = 0;\n for (let i = 0; i < 8; ++i) {\n const section = sections[i];\n let zFlag = (section === '0');\n if (zFlag && !zPreviousFlag) {\n zStartIndex = i;\n }\n if (!zFlag && zPreviousFlag) {\n zLength = i - zStartIndex;\n }\n if (zLength > 1 && zLength > zeroLength) {\n zeroStartIndex = zStartIndex;\n zeroLength = zLength;\n }\n zPreviousFlag = (section === '0');\n }\n if (zPreviousFlag) {\n zLength = 8 - zStartIndex;\n }\n if (zLength > 1 && zLength > zeroLength) {\n zeroStartIndex = zStartIndex;\n zeroLength = zLength;\n }\n //console.log(zeroStartIndex, zeroLength);\n //console.log(sections);\n if (zeroStartIndex >= 0 && zeroLength > 1) {\n sections.splice(zeroStartIndex, zeroLength, 'g');\n }\n //console.log(sections);\n a = sections.join(':');\n //console.log(a);\n a = a.replace(/\\:g\\:/g, '::');\n a = a.replace(/\\:g/g, '::');\n a = a.replace(/g\\:/g, '::');\n a = a.replace(/g/g, '::');\n //console.log(a);\n return a;\n};\n\n// Basic validation\nconst _validate = function (a) {\n return /^[a-f0-9\\\\:]+$/ig.test(a);\n};\n\nconst _leftPad = function (d, p, n) {\n const padding = p.repeat(n);\n if (d.length < padding.length) {\n d = padding.substring(0, padding.length - d.length) + d;\n }\n return d;\n};\n\nconst _hex2bin = function (hex) {\n return parseInt(hex, 16).toString(2)\n};\nconst _bin2hex = function (bin) {\n return parseInt(bin, 2).toString(16)\n};\n\nconst _addr2bin = function (addr) {\n const nAddr = normalize(addr);\n const sections = nAddr.split(\":\");\n let binAddr = '';\n for (const section of sections) {\n binAddr += _leftPad(_hex2bin(section), '0', 16);\n }\n return binAddr;\n};\n\nconst _bin2addr = function (bin) {\n const addr = [];\n for (let i = 0; i < 8; ++i) {\n const binPart = bin.substr(i * 16, 16);\n const hexSection = _leftPad(_bin2hex(binPart), '0', 4);\n addr.push(hexSection);\n }\n return addr.join(':');\n};\n\nconst divideSubnet = function (addr, mask0, mask1, limit, abbr) {\n if (!_validate(addr)) {\n throw new Error('Invalid address: ' + addr);\n }\n mask0 *= 1;\n mask1 *= 1;\n limit *= 1;\n mask1 = mask1 || 128;\n if (mask0 < 1 || mask1 < 1 || mask0 > 128 || mask1 > 128 || mask0 > mask1) {\n throw new Error('Invalid masks.');\n }\n const ret = [];\n const binAddr = _addr2bin(addr);\n const binNetPart = binAddr.substr(0, mask0);\n const binHostPart = '0'.repeat(128 - mask1);\n const numSubnets = Math.pow(2, mask1 - mask0);\n for (let i = 0; i < numSubnets; ++i) {\n if (!!limit && i >= limit) {\n break;\n }\n const binSubnet = _leftPad(i.toString(2), '0', mask1 - mask0);\n const binSubAddr = binNetPart + binSubnet + binHostPart;\n const hexAddr = _bin2addr(binSubAddr);\n if (!!abbr) {\n ret.push(abbreviate(hexAddr));\n } else {\n ret.push(hexAddr);\n }\n\n }\n // console.log(numSubnets);\n // console.log(binNetPart, binSubnetPart, binHostPart);\n // console.log(binNetPart.length, binSubnetPart.length, binHostPart.length);\n // console.log(ret.length);\n return ret;\n};\n\nconst range = function (addr, mask0, mask1, abbr) {\n if (!_validate(addr)) {\n throw new Error('Invalid address: ' + addr);\n }\n mask0 *= 1;\n mask1 *= 1;\n mask1 = mask1 || 128;\n if (mask0 < 1 || mask1 < 1 || mask0 > 128 || mask1 > 128 || mask0 > mask1) {\n throw new Error('Invalid masks.');\n }\n const binAddr = _addr2bin(addr);\n const binNetPart = binAddr.substr(0, mask0);\n const binHostPart = '0'.repeat(128 - mask1);\n const binStartAddr = binNetPart + '0'.repeat(mask1 - mask0) + binHostPart;\n const binEndAddr = binNetPart + '1'.repeat(mask1 - mask0) + binHostPart;\n if (!!abbr) {\n return {\n start: abbreviate(_bin2addr(binStartAddr)),\n end: abbreviate(_bin2addr(binEndAddr)),\n size: Math.pow(2, mask1 - mask0)\n };\n } else {\n return {\n start: _bin2addr(binStartAddr),\n end: _bin2addr(binEndAddr),\n size: Math.pow(2, mask1 - mask0)\n };\n }\n};\n\nconst randomSubnet = function (addr, mask0, mask1, limit, abbr) {\n if (!_validate(addr)) {\n throw new Error('Invalid address: ' + addr);\n }\n mask0 *= 1;\n mask1 *= 1;\n limit *= 1;\n mask1 = mask1 || 128;\n limit = limit || 1;\n if (mask0 < 1 || mask1 < 1 || mask0 > 128 || mask1 > 128 || mask0 > mask1) {\n throw new Error('Invalid masks.');\n }\n const ret = [];\n const binAddr = _addr2bin(addr);\n const binNetPart = binAddr.substr(0, mask0);\n const binHostPart = '0'.repeat(128 - mask1);\n const numSubnets = Math.pow(2, mask1 - mask0);\n for (let i = 0; i < numSubnets && i < limit; ++i) {\n // generate an binary string with length of mask1 - mask0\n let binSubnet = '';\n for (let j = 0; j < mask1 - mask0; ++j) {\n binSubnet += Math.floor(Math.random() * 2);\n }\n const binSubAddr = binNetPart + binSubnet + binHostPart;\n const hexAddr = _bin2addr(binSubAddr);\n if (!!abbr) {\n ret.push(abbreviate(hexAddr));\n } else {\n ret.push(hexAddr);\n }\n }\n // console.log(numSubnets);\n // console.log(binNetPart, binSubnetPart, binHostPart);\n // console.log(binNetPart.length, binSubnetPart.length, binHostPart.length);\n // console.log(ret.length);\n return ret;\n};\n\nconst ptr = function (addr, mask) {\n if (!_validate(addr)) {\n throw new Error('Invalid address: ' + addr);\n }\n mask *= 1;\n if (mask < 1 || mask > 128 || Math.floor(mask / 4) != mask / 4) {\n throw new Error('Invalid masks.');\n }\n const fullAddr = normalize(addr);\n const reverse = fullAddr.replace(/:/g, '').split('').reverse();\n return reverse.slice(0, (128 - mask) / 4).join('.');\n};\n\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n exports.normalize = normalize;\n exports.abbreviate = abbreviate;\n exports.divideSubnet = divideSubnet;\n exports.range = range;\n exports.randomSubnet = randomSubnet;\n exports.ptr = ptr;\n} else {\n window.normalize = normalize;\n window.abbreviate = abbreviate;\n window.divideSubnet = divideSubnet;\n window.range = range;\n window.randomSubnet = randomSubnet;\n window.ptr = ptr;\n}\n","import ipaddr from 'ipaddr.js';\n// @ts-ignore: Can't find a @types/ip6 package\nimport ip6 from 'ip6';\n\nexport function isIP(addr: string) {\n return ipaddr.isValid(addr);\n}\n\nexport function version(addr: string): number {\n try {\n const parse_addr = ipaddr.parse(addr);\n const kind = parse_addr.kind();\n\n if (kind === 'ipv4') {\n return 4; //IPv4\n } else if (kind === 'ipv6') {\n return 6; //IPv6\n } else {\n /* istanbul ignore next */\n return 0; //not 4 or 6\n }\n } catch (err) {\n return 0; //not 4 or 6\n }\n}\n\nexport function isV4(addr: string) {\n return version(addr) === 4;\n}\n\nexport function isV6(addr: string) {\n return version(addr) === 6;\n}\n\nexport function isRange(range: string) {\n try {\n const cidr = ipaddr.parseCIDR(range);\n return true;\n } catch (err) {\n return false;\n }\n}\n\nexport function inRange(addr: string, range: string | string[]) {\n if (typeof range === 'string') {\n if (range.indexOf('/') !== -1) {\n try {\n const range_data = range.split('/');\n\n const parse_addr = ipaddr.parse(addr);\n const parse_range = ipaddr.parse(range_data[0]);\n\n //@ts-ignore: It works.\n return parse_addr.match(parse_range, range_data[1]);\n } catch (err) {\n return false;\n }\n } else {\n addr = isV6(addr) ? ip6.normalize(addr) : addr; //v6 normalize addr\n range = isV6(range) ? ip6.normalize(range) : range; //v6 normalize range\n\n return isIP(range as string) && addr === range;\n }\n } else if (range && typeof range === 'object') {\n //list\n for (const check_range in range) {\n if (inRange(addr, range[check_range]) === true) {\n return true;\n }\n }\n return false;\n } else {\n return false;\n }\n}\n\nexport function storeIP(addr: string) {\n try {\n var parse_addr = ipaddr.parse(addr);\n var kind = parse_addr.kind();\n\n if (kind === 'ipv4') {\n //is a plain v4 address\n return addr;\n } else if (kind === 'ipv6') {\n //@ts-ignore: it exists!\n if (parse_addr.isIPv4MappedAddress()) {\n //convert v4 mapped to v6 addresses to a v4 in it's original format\n //@ts-ignore: it exists!\n return parse_addr.toIPv4Address().toString();\n } //is a v6, abbreviate it\n else {\n return ip6.abbreviate(addr);\n }\n } else {\n return null; //invalid IP address\n }\n } catch (err) {\n return null; //invalid IP address\n }\n}\n\n// searchIP is a aliases of storeIP\nexport { storeIP as searchIP };\n\nexport function displayIP(addr: string) {\n try {\n var parse_addr = ipaddr.parse(addr);\n var kind = parse_addr.kind();\n\n if (kind === 'ipv4') {\n //is a plain v4 address\n return addr;\n } else if (kind === 'ipv6') {\n //@ts-ignore: it exists!\n if (parse_addr.isIPv4MappedAddress()) {\n //convert v4 mapped to v6 addresses to a v4 in it's original format\n //@ts-ignore: it exists!\n return parse_addr.toIPv4Address().toString();\n } //is a v6, normalize it\n else {\n return ip6.normalize(addr);\n }\n } else {\n return ''; //invalid IP address\n }\n } catch (err) {\n return ''; //invalid IP address\n }\n}\n","/**\n * All event listeners\n *\n * https://developers.facebook.com/docs/meta-pixel/reference\n * */\n\n// Load pixel event\njQuery(document).on(\"wpmLoadPixels\", () => {\n\n\tif (\n\t\twpmDataLayer?.pixels?.facebook?.pixel_id\n\t\t&& !wpmDataLayer?.pixels?.facebook?.loaded\n\t\t&& !wpm.doesUrlContainPatterns(wpmDataLayer?.pixels?.facebook?.exclusion_patterns)\n\t) {\n\t\tif (wpm.canIFire(\"ads\", \"facebook-ads\")) wpm.loadFacebookPixel()\n\t}\n})\n\n// AddToCart event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToCart\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToCart\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// InitiateCheckout event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideBeginCheckout\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"InitiateCheckout\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// AddToWishlist event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideAddToWishlist\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"AddToWishlist\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// ViewContent event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideViewItem\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"ViewContent\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n\n// view search event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideSearch\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Search\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// load always event\njQuery(document).on(\"wpmLoadAlways\", () => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.setFbUserData()\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n\n// view order received page event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmClientSideOrderReceivedPage\", (event, payload) => {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Purchase\", payload.facebook.custom_data, {\n\t\t\teventID: payload.facebook.event_id,\n\t\t})\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n})\n","/**\n * Add functions for Facebook\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet fbUserData\n\n\twpm.loadFacebookPixel = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.facebook.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(f,b,e,v,n,t,s)\n\t\t\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\t\t\t\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\t\t\t\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\t\t\t\tn.queue=[];t=b.createElement(e);t.async=!0;\n\t\t\t\tt.src=v;s=b.getElementsByTagName(e)[0];\n\t\t\t\ts.parentNode.insertBefore(t,s)}(window, document,'script',\n\t\t\t\t'https://connect.facebook.net/en_US/fbevents.js');\n\t\t\t// @formatter:on\n\n\t\t\tlet data = {}\n\n\t\t\t// Add user identifiers to data,\n\t\t\t// and only if fbp was set\n\t\t\tif (wpm.isFbpSet() && wpm.isFbAdvancedMatchingEnabled()) {\n\t\t\t\tdata = {...wpm.getUserIdentifiersForFb()}\n\t\t\t}\n\n\t\t\tfbq(\"init\", wpmDataLayer.pixels.facebook.pixel_id, data)\n\t\t\tfbq(\"track\", \"PageView\")\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// https://developers.facebook.com/docs/meta-pixel/advanced/advanced-matching\n\twpm.getUserIdentifiersForFb = () => {\n\n\t\tlet data = {}\n\n\t\t// external ID\n\t\tif (wpmDataLayer?.user?.id?.raw) data.external_id = wpmDataLayer.user.id.raw\n\t\tif (wpmDataLayer?.order?.user_id) data.external_id = wpmDataLayer.order.user_id\n\n\t\t// email\n\t\tif (wpmDataLayer?.user?.email?.facebook) data.em = wpmDataLayer.user.email.facebook\n\t\tif (wpmDataLayer?.order?.billing_email_hashed) data.em = wpmDataLayer.order.billing_email_hashed\n\n\t\t// first name\n\t\tif (wpmDataLayer?.user?.first_name?.facebook) data.fn = wpmDataLayer.user.first_name.facebook\n\t\tif (wpmDataLayer?.order?.billing_first_name) data.fn = wpmDataLayer.order.billing_first_name.toLowerCase()\n\n\t\t// last name\n\t\tif (wpmDataLayer?.user?.last_name?.facebook) data.ln = wpmDataLayer.user.last_name.facebook\n\t\tif (wpmDataLayer?.order?.billing_last_name) data.ln = wpmDataLayer.order.billing_last_name.toLowerCase()\n\n\t\t// phone\n\t\tif (wpmDataLayer?.user?.phone?.facebook) data.ph = wpmDataLayer.user.phone.facebook\n\t\tif (wpmDataLayer?.order?.billing_phone) data.ph = wpmDataLayer.order.billing_phone.replace(\"+\", \"\")\n\n\t\t// city\n\t\tif (wpmDataLayer?.user?.city?.facebook) data.ct = wpmDataLayer.user.city.facebook\n\t\tif (wpmDataLayer?.order?.billing_city) data.ct = wpmDataLayer.order.billing_city.toLowerCase().replace(/ /g, \"\")\n\n\t\t// state\n\t\tif (wpmDataLayer?.user?.state?.facebook) data.st = wpmDataLayer.user.state.facebook\n\t\tif (wpmDataLayer?.order?.billing_state) data.st = wpmDataLayer.order.billing_state.toLowerCase().replace(/[a-zA-Z]{2}-/, \"\")\n\n\t\t// postcode\n\t\tif (wpmDataLayer?.user?.postcode?.facebook) data.zp = wpmDataLayer.user.postcode.facebook\n\t\tif (wpmDataLayer?.order?.billing_postcode) data.zp = wpmDataLayer.order.billing_postcode\n\n\t\t// country\n\t\tif (wpmDataLayer?.user?.country?.facebook) data.country = wpmDataLayer.user.country.facebook\n\t\tif (wpmDataLayer?.order?.billing_country) data.country = wpmDataLayer.order.billing_country.toLowerCase()\n\n\t\treturn data\n\t}\n\n\twpm.getFbRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\twpm.getFbUserData = () => {\n\n\t\t/**\n\t\t * We need to cache the FB user data for InitiateCheckout\n\t\t * where getting the user data from the browser is too slow\n\t\t * using wpm.getCookie().\n\t\t *\n\t\t * And we need the object merge because the ViewContent hit happens too fast\n\t\t * after adding a variation to the cart because the function to cache\n\t\t * the user data is too slow.\n\t\t *\n\t\t * But we can get the user_data using wpm.getCookie()\n\t\t * because we don't move away from the page and can wait for the browser\n\t\t * to get it.\n\t\t *\n\t\t * Also, the merge ensures that new data will be added to fbUserData if new\n\t\t * data is being added later, like user ID, or fbc.\n\t\t */\n\n\t\tfbUserData = {...fbUserData, ...wpm.getFbUserDataFromBrowser()}\n\n\t\treturn fbUserData\n\t}\n\n\twpm.isFbAdvancedMatchingEnabled = () => {\n\t\tif (wpmDataLayer?.pixels?.facebook?.advanced_matching) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\twpm.setFbUserData = () => {\n\t\tfbUserData = wpm.getFbUserDataFromBrowser()\n\t}\n\n\twpm.getFbUserDataFromBrowser = () => {\n\n\t\tlet\n\t\t\tdata = {}\n\n\t\tif (wpm.getCookie(\"_fbp\") && wpm.isValidFbp(wpm.getCookie(\"_fbp\"))) {\n\t\t\tdata.fbp = wpm.getCookie(\"_fbp\")\n\t\t}\n\n\t\tif (wpm.getCookie(\"_fbc\") && wpm.isValidFbc(wpm.getCookie(\"_fbc\"))) {\n\t\t\tdata.fbc = wpm.getCookie(\"_fbc\")\n\t\t}\n\n\t\tif (wpm.isFbAdvancedMatchingEnabled()) {\n\t\t\tif (wpmDataLayer?.user?.id?.raw) data.external_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\tif (navigator.userAgent) data.client_user_agent = navigator.userAgent\n\n\t\treturn data\n\t}\n\n\twpm.isFbpSet = () => {\n\t\treturn !!wpm.getCookie(\"_fbp\")\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbp = fbp => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.\\d{8,20}$/)\n\n\t\treturn re.test(fbp)\n\t}\n\n\t// https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc/\n\twpm.isValidFbc = fbc => {\n\n\t\tlet re = new RegExp(/^fb\\.[0-2]\\.\\d{13}\\.[\\da-zA-Z_-]{8,}/)\n\n\t\treturn re.test(fbc)\n\t}\n\n\t// wpm.fbViewContent = (product = null) => {\n\t//\n\t// \ttry {\n\t// \t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\t//\n\t// \t\tlet eventId = wpm.getFbRandomEventId()\n\t//\n\t// \t\tlet data = {}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tdata.content_type = \"product\"\n\t// \t\t\tdata.content_name = product.name\n\t// \t\t\t// data.content_category = product.category\n\t// \t\t\tdata.content_ids = product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]\n\t// \t\t\tdata.currency = wpmDataLayer.shop.currency\n\t// \t\t\tdata.value = product.price\n\t// \t\t}\n\t//\n\t// \t\tfbq(\"track\", \"ViewContent\", data, {\n\t// \t\t\teventID: eventId,\n\t// \t\t})\n\t//\n\t// \t\tlet capiData = {\n\t// \t\t\tevent_name : \"ViewContent\",\n\t// \t\t\tevent_id : eventId,\n\t// \t\t\tuser_data : wpm.getFbUserData(),\n\t// \t\t\tevent_source_url: window.location.href,\n\t// \t\t}\n\t//\n\t// \t\tif (product) {\n\t// \t\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\t// \t\t\tcapiData.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t// \t\t}\n\t//\n\t// \t\tjQuery(document).trigger(\"wpmFbCapiEvent\", capiData)\n\t// \t} catch (e) {\n\t// \t\tconsole.error(e)\n\t// \t}\n\t// }\n\n\twpm.fbGetProductDataForCapiEvent = product => {\n\t\treturn {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : [\n\t\t\t\tproduct.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}\n\t}\n\n\twpm.facebookContentIds = () => {\n\t\tlet prodIds = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn prodIds\n\t}\n\n\twpm.trackCustomFacebookEvent = (eventName, customData = {}) => {\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getFbRandomEventId()\n\n\t\t\tfbq(\"trackCustom\", eventName, customData, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : eventName,\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t\tcustom_data : customData,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fbGetContentIdsFromCart = () => {\n\n\t\tlet content_ids = []\n\n\t\tfor (const key in wpmDataLayer.cart) {\n\t\t\tcontent_ids.push(wpmDataLayer.products[key].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])\n\t\t}\n\n\t\treturn content_ids\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Facebook loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// if (wpm.canLoadPremiumFeatures()) {\n// \trequire(\"./functions_premium\")\n// \trequire(\"./event_listeners_premium\")\n// }\n// #endif\n\n","/**\n * Load Google Ads event listeners\n * */\n\n// view_item_list event\njQuery(document).on(\"wpmViewItemList\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tif (\n\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\tproduct.isVariable &&\n\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t) return\n\n\t\t// try to prevent that WC sends cached hits to Google\n\t\tif (!product) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item_list\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : product.quantity * product.price,\n\t\t\titems : [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : product.quantity,\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}],\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_cart\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tdata.value = (product.quantity ? product.quantity : 1) * product.price\n\t\t\tdata.items = [{\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tquantity : (product.quantity ? product.quantity : 1),\n\t\t\t\tprice : product.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}]\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view search event\njQuery(document).on(\"pmwEvent:Search\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tlet products = []\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\n\t\t\tif (\n\t\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\t\tproduct.isVariable &&\n\t\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t\t) return\n\n\t\t\tproducts.push({\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t})\n\t\t}\n\n\t\t// console.log(products);\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t// value : 1 * product.price,\n\t\t\titems: products,\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_search_results\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\n// TODO distinguish with or without cart data active\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\titems : wpm.getGoogleAdsDynamicRemarketingOrderItems(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", data)\n\t\t})\n\n\t\t// console.log(wpm.getGoogleAdsDynamicRemarketingOrderItems())\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// user log in event\njQuery(document).on(\"wpmLogin\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data = {\n\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"login\", data)\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// conversion event\n// new_customer parameter: https://support.google.com/google-ads/answer/9917012\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (jQuery.isEmptyObject(wpm.getGoogleAdsConversionIdentifiersWithLabel())) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data_basic = {}\n\t\tlet data_with_cart = {}\n\n\t\tdata_basic = {\n\t\t\tsend_to : wpm.getGoogleAdsConversionIdentifiersWithLabel(),\n\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tnew_customer : wpmDataLayer.order.new_customer,\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.clv_order_value_filtered) {\n\t\t\tdata_basic.customer_lifetime_value = wpmDataLayer.order.clv_order_value_filtered\n\t\t}\n\n\t\tif (wpmDataLayer?.user?.id?.raw) {\n\t\t\tdata_basic.user_id = wpmDataLayer.user.id.raw\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.aw_merchant_id) {\n\t\t\tdata_with_cart = {\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\taw_merchant_id : wpmDataLayer.order.aw_merchant_id,\n\t\t\t\taw_feed_country : wpmDataLayer.order.aw_feed_country,\n\t\t\t\taw_feed_language: wpmDataLayer.order.aw_feed_language,\n\t\t\t\titems : wpm.getGoogleAdsRegularOrderItems(),\n\t\t\t}\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"conversion\", {...data_basic, ...data_with_cart})\n\t\t})\n\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load Google Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\n\twpm.getGoogleAdsConversionIdentifiersWithLabel = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds) {\n\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\tif (item) {\n\t\t\t\t\tconversionIdentifiers.push(key + \"/\" + item)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsConversionIdentifiers = function () {\n\n\t\tlet conversionIdentifiers = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\tconversionIdentifiers.push(key)\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsRegularOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.getGoogleAdsDynamicRemarketingOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google Ads\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Google Universal Analytics (GA3) event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.universal.property_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGAUAOrderItems(),\n\t\t\t})\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Add functions for Google Analytics Universal\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGAUAOrderItems = function () {\n\n\t\t// \"id\" : \"34\",\n\t\t// \"name\" : \"Hoodie\",\n\t\t// \"brand\" : \"\",\n\t\t// \"category\" : \"Hoodies\",\n\t\t// \"list_position\": 1,\n\t\t// \"price\" : 45,\n\t\t// \"quantity\" : 1,\n\t\t// \"variant\" : \"Color: blue | Logo: yes\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tname : item.name,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcategory: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItem = wpm.ga3AddListNameToProduct(orderItem)\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.ga3AddListNameToProduct = function (item_data, productPosition = null) {\n\n\t\t// if (wpm.ga3CanProductListBeSet(item_data.id)) {\n\t\t// \titem_data.listname = wpmDataLayer.shop.list_name\n\t\t//\n\t\t// \tif (productPosition) {\n\t\t// \t\titem_data.list_position = productPosition\n\t\t// \t}\n\t\t// }\n\n\t\titem_data.list_name = wpmDataLayer.shop.list_name\n\n\t\tif (productPosition) {\n\t\t\titem_data.list_position = productPosition\n\t\t}\n\n\t\treturn item_data\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Google Universal Analytics (GA3) loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// if (wpm.canLoadPremiumFeatures()) {\n// \trequire(\"./functions_premium\")\n// \trequire(\"./event_listeners_premium\")\n// }\n// #endif\n","/**\n * Load GA4 event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.ga4.measurement_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGA4OrderItems(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load GA4 functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGA4OrderItems = function () {\n\n\t\t// \"item_id\" : \"34\",\n\t\t// \"item_name\" : \"Hoodie\",\n\t\t// \"quantity\" : 1,\n\t\t// \"item_brand\" : \"\",\n\t\t// \"item_variant\" : \"Color: blue | Logo: yes\",\n\t\t// \"price\" : 45,\n\t\t// \"currency\" : \"CHF\",\n\t\t// \"item_category\": \"Hoodies\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\titem_name : item.name,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\titem_category: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * GA4 loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// if (wpm.canLoadPremiumFeatures()) {\n// \trequire(\"./functions_premium\")\n// \trequire(\"./event_listeners_premium\")\n// }\n// #endif\n","/**\n * Google Analytics loader\n */\n\nrequire(\"./ga3/loader\")\nrequire(\"./ga4/loader\")\n","/**\n * Load Google base event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") {\n\t\tif (wpm.canGoogleLoad()) {\n\t\t\twpm.loadGoogle()\n\t\t} else {\n\t\t\twpm.logPreventedPixelLoading(\"google\", \"analytics / ads\")\n\t\t}\n\t}\n})\n","/**\n * Load Google base functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.googleConfigConditionsMet = (type) => {\n\n\t\t// always returns true if Google Consent Mode is active\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (wpm.getConsentValues().mode === \"category\") {\n\t\t\treturn wpm.getConsentValues().categories[type] === true\n\t\t} else if (wpm.getConsentValues().mode === \"pixel\") {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-\" + type)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings = (google_consent_settings) => {\n\n\t\tif (wpm.getConsentValues().mode === \"category\") {\n\n\t\t\tif (wpm.getConsentValues().categories.analytics) google_consent_settings.analytics_storage = \"granted\"\n\t\t\tif (wpm.getConsentValues().categories.ads) google_consent_settings.ad_storage = \"granted\"\n\t\t} else if ((wpm.getConsentValues().mode === \"pixel\")) {\n\n\t\t\tgoogle_consent_settings.analytics_storage = wpm.getConsentValues().pixels.includes(\"google-analytics\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_storage = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t}\n\n\t\treturn google_consent_settings\n\t}\n\n\twpm.updateGoogleConsentMode = (analytics = true, ads = true) => {\n\n\t\ttry {\n\t\t\tif (\n\t\t\t\t!window.gtag ||\n\t\t\t\t!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent\n\t\t\t) return\n\n\t\t\tgtag(\"consent\", \"update\", {\n\t\t\t\tanalytics_storage: analytics ? \"granted\" : \"denied\",\n\t\t\t\tad_storage : ads ? \"granted\" : \"denied\",\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAds = () => {\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.ads.state = \"loading\"\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.enhanced_conversions?.active) {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key, {\"allow_enhanced_conversions\": true})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_label && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_number) {\n\t\t\t\tgtag(\"config\", Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0] + \"/\" + wpmDataLayer.pixels.google.ads.phone_conversion_label, {\n\t\t\t\t\tphone_conversion_number: wpmDataLayer.pixels.google.ads.phone_conversion_number,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// ! enhanced_conversion_data needs to set on the window object\n\t\t\t// https://support.google.com/google-ads/answer/9888145#zippy=%2Cvalidate-your-implementation-using-chrome-developer-tools\n\t\t\tif (wpmDataLayer?.shop?.page_type && \"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer?.order?.google?.ads?.enhanced_conversion_data) {\n\t\t\t\t// window.enhanced_conversion_data = wpmDataLayer.order.google.ads.enhanced_conversion_data\n\n\t\t\t\tgtag(\"set\", \"user_data\", wpmDataLayer.order.google.ads.enhanced_conversion_data)\n\t\t\t}\n\n\t\t\twpmDataLayer.pixels.google.ads.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsUA = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"loading\"\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.universal.property_id, wpmDataLayer.pixels.google.analytics.universal.parameters)\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsGA4 = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"loading\"\n\n\t\t\tlet parameters = wpmDataLayer.pixels.google.analytics.ga4.parameters\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.debug_mode) {\n\t\t\t\tparameters.debug_mode = true\n\t\t\t}\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.ga4.measurement_id, parameters)\n\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.isGoogleActive = () => {\n\n\t\tif (\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.universal?.property_id ||\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id ||\n\t\t\t!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)\n\t\t) {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getGoogleGtagId = () => {\n\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.universal.property_id\n\t\t} else if (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.ga4.measurement_id\n\t\t} else {\n\t\t\treturn Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]\n\t\t}\n\t}\n\n\n\twpm.loadGoogle = () => {\n\n\t\tif (wpm.isGoogleActive()) {\n\n\t\t\twpmDataLayer.pixels.google.state = \"loading\"\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googletagmanager.com/gtag/js?id=\" + wpm.getGoogleGtagId())\n\t\t\t\t.then((script, textStatus) => {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\t// Initiate Google dataLayer and gtag\n\t\t\t\t\t\twindow.dataLayer = window.dataLayer || []\n\t\t\t\t\t\twindow.gtag = function gtag() {\n\t\t\t\t\t\t\tdataLayer.push(arguments)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Consent Mode\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\n\t\t\t\t\t\t\tlet google_consent_settings = {\n\t\t\t\t\t\t\t\t\"ad_storage\" : wpmDataLayer.pixels.google.consent_mode.ad_storage,\n\t\t\t\t\t\t\t\t\"analytics_storage\": wpmDataLayer.pixels.google.consent_mode.analytics_storage,\n\t\t\t\t\t\t\t\t\"wait_for_update\" : wpmDataLayer.pixels.google.consent_mode.wait_for_update,\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.region) {\n\t\t\t\t\t\t\t\tgoogle_consent_settings.region = wpmDataLayer.pixels.google.consent_mode.region\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tgoogle_consent_settings = wpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings(google_consent_settings)\n\n\t\t\t\t\t\t\tgtag(\"consent\", \"default\", google_consent_settings)\n\t\t\t\t\t\t\tgtag(\"set\", \"ads_data_redaction\", wpmDataLayer.pixels.google.consent_mode.ads_data_redaction)\n\t\t\t\t\t\t\tgtag(\"set\", \"url_passthrough\", wpmDataLayer.pixels.google.consent_mode.url_passthrough)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Linker\n\t\t\t\t\t\t// https://developers.google.com/gtagjs/devguide/linker\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.linker?.settings) {\n\t\t\t\t\t\t\tgtag(\"set\", \"linker\", wpmDataLayer.pixels.google.linker.settings)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgtag(\"js\", new Date())\n\n\t\t\t\t\t\t// Google Ads loader\n\t\t\t\t\t\tif (!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) { // Only run if the pixel has set up\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"ads\")) { \t\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAds()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-ads\", \"ads\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Universal Analytics loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) { \t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsUA()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-universal-analytics\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// GA4 loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) { \t\t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsGA4()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"ga4\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twpmDataLayer.pixels.google.state = \"ready\"\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\twpm.canGoogleLoad = () => {\n\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (\"category\" === wpm.getConsentValues().mode) {\n\t\t\treturn !!(wpm.getConsentValues().categories[\"ads\"] || wpm.getConsentValues().categories[\"analytics\"])\n\t\t} else if (\"pixel\" === wpm.getConsentValues().mode) {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-ads\") || wpm.getConsentValues().pixels.includes(\"google-analytics\")\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid load condition for Google mode in wpmConsentValues\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.gtagLoaded = () => {\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") reject()\n\n\t\t\tlet startTime = 0\n\t\t\tlet timeout = 5000\n\t\t\tlet frequency = 200;\n\n\t\t\t(function wait() {\n\t\t\t\tif (wpmDataLayer?.pixels?.google?.state === \"ready\") return resolve()\n\t\t\t\tif (startTime >= timeout) return reject()\n\t\t\t\tstartTime += frequency\n\t\t\t\tsetTimeout(wait, frequency)\n\t\t\t})()\n\t\t})\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google base\n */\n\n// Load base\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// if (wpm.canLoadPremiumFeatures()) {\n// \trequire(\"./functions_premium\")\n// \trequire(\"./event_listeners_premium\")\n// }\n// #endif\n","/**\n * Load Google\n */\n\n// Load base\nrequire(\"./base/loader\")\n\n//Load additional Google libraries\nrequire(\"./ads/loader\")\nrequire(\"./analytics/loader\")\nrequire(\"./optimize/loader\")\n\n\n","/**\n * Load Google Optimize event listeners\n */\n\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.google?.optimize?.container_id && !wpmDataLayer?.pixels?.google?.optimize?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"google-optimize\")) wpm.load_google_optimize_pixel()\n\t}\n})\n","/**\n * Load Google Optimize functions\n */\n\n\n(function (wpm, $, undefined) {\n\n\twpm.load_google_optimize_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.optimize.loaded = true\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googleoptimize.com/optimize.js?id=\" + wpmDataLayer.pixels.google.optimize.container_id)\n\t\t\t// .then(function (script, textStatus) {\n\t\t\t// \t\tconsole.log('Google Optimize loaded')\n\t\t\t// });\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Load Google Optimize\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Hotjar event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.hotjar?.site_id && !wpmDataLayer?.pixels?.hotjar?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"hotjar\") && !wpmDataLayer?.pixels?.hotjar?.loaded) wpm.load_hotjar_pixel()\n\t}\n})\n","/**\n * Load Hotjar functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.load_hotjar_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.hotjar.loaded = true;\n\n\t\t\t// @formatter:off\n\t\t\t(function(h,o,t,j,a,r){\n\t\t\t\th.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n\t\t\t\th._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6};\n\t\t\t\ta=o.getElementsByTagName('head')[0];\n\t\t\t\tr=o.createElement('script');r.async=1;\n\t\t\t\tr.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n\t\t\t\ta.appendChild(r);\n\t\t\t})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\n\t\t\t// @formatter:on\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Hotjar loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Consent Mode functions\n */\n\n(function (wpm, $, undefined) {\n\n\t/**\n\t * Handle Cookie Management Platforms\n\t */\n\n\tlet getComplianzCookies = () => {\n\n\t\tlet cmplz_statistics = wpm.getCookie(\"cmplz_statistics\")\n\t\tlet cmplz_marketing = wpm.getCookie(\"cmplz_marketing\")\n\t\tlet cmplz_consent_status = wpm.getCookie(\"cmplz_consent_status\") || wpm.getCookie(\"cmplz_banner-status\")\n\n\t\tif (cmplz_consent_status) {\n\t\t\treturn {\n\t\t\t\tanalytics : cmplz_statistics === \"allow\",\n\t\t\t\tads : cmplz_marketing === \"allow\",\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tlet getCookieLawInfoCookies = () => {\n\n\t\tlet analyticsCookie = wpm.getCookie(\"cookielawinfo-checkbox-analytics\") || wpm.getCookie(\"cookielawinfo-checkbox-analytiques\")\n\t\tlet adsCookie = wpm.getCookie(\"cookielawinfo-checkbox-advertisement\") || wpm.getCookie(\"cookielawinfo-checkbox-performance\") || wpm.getCookie(\"cookielawinfo-checkbox-publicite\")\n\t\tlet visitorHasChosen = wpm.getCookie(\"CookieLawInfoConsent\")\n\n\t\tif (analyticsCookie || adsCookie) {\n\n\t\t\treturn {\n\t\t\t\tanalytics : analyticsCookie === \"yes\",\n\t\t\t\tads : adsCookie === \"yes\",\n\t\t\t\tvisitorHasChosen: !!visitorHasChosen,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Initialize and set default values\n\t */\n\n\tlet\n\t\twpmConsentValues = {}\n\twpmConsentValues.categories = {}\n\twpmConsentValues.pixels = []\n\twpmConsentValues.mode = \"category\"\n\twpmConsentValues.visitorHasChosen = false\n\n\t// Return current consent values\n\twpm.getConsentValues = () => wpmConsentValues\n\n\twpm.setConsentValueCategories = (analytics = false, ads = false) => {\n\t\twpmConsentValues.categories.analytics = analytics\n\t\twpmConsentValues.categories.ads = ads\n\t}\n\n\t// Update the PMW consent values with values coming from a CMP\n\twpm.updateConsentCookieValues = (analytics = null, ads = null, explicitConsent = false) => {\n\n\t\t// ad_storage\n\t\t// analytics_storage\n\t\t// functionality_storage\n\t\t// personalization_storage\n\t\t// security_storage\n\n\t\tlet cookie\n\n\t\t/**\n\t\t * Setup defaults\n\t\t */\n\n\t\t// consentValues.categories.analytics = true\n\t\t// consentValues.categories.ads = true\n\n\t\twpmConsentValues.categories.analytics = !explicitConsent\n\t\twpmConsentValues.categories.ads = !explicitConsent\n\n\n\t\tif (analytics || ads) {\n\n\t\t\tif (analytics) {\n\t\t\t\twpmConsentValues.categories.analytics = !!analytics\n\t\t\t}\n\n\t\t\tif (ads) {\n\t\t\t\twpmConsentValues.categories.ads = !!ads\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * PMW Cookie Consent\n\t\t *\n\t\t * Must be before every other CMP for the case that one of the included CMPs\n\t\t * decides to implement the PMW cookie consent API. In that case\n\t\t * the PMW consent cookie must take precedence.\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"pmw_cookie_consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookiebot\n\t\t * https://wordpress.org/plugins/cookiebot/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieConsent\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.indexOf(\"statistics:true\") >= 0\n\t\t\twpmConsentValues.categories.ads = cookie.indexOf(\"marketing:true\") >= 0\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Script\n\t\t * https://wordpress.org/plugins/cookie-script-com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"CookieScriptConsent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\tif (cookie.action === \"reject\") {\n\t\t\t\twpmConsentValues.categories.analytics = false\n\t\t\t\twpmConsentValues.categories.ads = false\n\t\t\t} else if (cookie.categories.length === 2) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t} else {\n\t\t\t\twpmConsentValues.categories.analytics = cookie.categories.indexOf(\"performance\") >= 0\n\t\t\t\twpmConsentValues.categories.ads = cookie.categories.indexOf(\"targeting\") >= 0\n\t\t\t}\n\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Borlabs Cookie\n\t\t * https://borlabs.io/borlabs-cookie/\n\t\t */\n\t\tif (cookie = wpm.getCookie(\"borlabs-cookie\")) {\n\n\t\t\tcookie = decodeURI(cookie)\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie?.consents?.statistics\n\t\t\twpmConsentValues.categories.ads = !!cookie?.consents?.marketing\n\t\t\twpmConsentValues.visitorHasChosen = true\n\t\t\twpmConsentValues.pixels = [...cookie?.consents?.statistics || [], ...cookie?.consents?.marketing || []]\n\t\t\twpmConsentValues.mode = \"pixel\"\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Complianz Cookie\n\t\t * https://wordpress.org/plugins/complianz-gdpr/\n\t\t */\n\n\t\tif (cookie = getComplianzCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (free version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"cookie_notice_accepted\")) {\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Cookie Compliance (pro version)\n\t\t * https://wordpress.org/plugins/cookie-notice/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"hu-consent\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie.categories[\"3\"]\n\t\t\twpmConsentValues.categories.ads = !!cookie.categories[\"4\"]\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * CookieYes, GDPR Cookie Consent (Cookie Law Info)\n\t\t * https://wordpress.org/plugins/cookie-law-info/\n\t\t */\n\n\t\tif (cookie = getCookieLawInfoCookies()) {\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen === true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * GDPR Cookie Compliance Plugin by Moove Agency\n\t\t * https://wordpress.org/plugins/gdpr-cookie-compliance/\n\t\t *\n\t\t * TODO write documentation on how to set up the plugin in order for this to work properly\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"moove_gdpr_popup\")) {\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.thirdparty === \"1\"\n\t\t\twpmConsentValues.categories.ads = cookie.advanced === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * WP AutoTerms\n\t\t * https://wordpress.org/plugins/auto-terms-of-service-and-privacy-policy/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"wpautoterms-cookies-notice\")) {\n\n\t\t\tif (cookie !== \"1\") return\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Usercentrics\n\t\t *\n\t\t * https://usercentrics.com/\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api\n\t\t * https://docs.usercentrics.com/#/cmp-v2-ui-api?id=getservicesbaseinfo\n\t\t */\n\n\t\tif (window.localStorage && window.localStorage.getItem(\"uc_settings\")) {\n\n\t\t\tconsole.log(\"Usercentrics settings detected\")\n\n\t\t\tif (typeof UC_UI === \"undefined\") {\n\n\t\t\t\t// register event to block unblock after UC_UI library is loaded\n\t\t\t\twindow.addEventListener(\"UC_UI_INITIALIZED\", function (event) {\n\t\t\t\t\twpm.ucUiProcessConsent()\n\t\t\t\t})\n\n\t\t\t\t// Don't continue because in here the UC_UI library is not loaded yet\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\twpm.ucUiProcessConsent()\n\t\t}\n\n\t\t/**\n\t\t * OneTrust\n\t\t *\n\t\t * https://www.onetrust.com/\n\t\t */\n\n\t\tif (cookie = wpm.getCookie(\"OptanonConsent\")) {\n\n\t\t\t// console.log(\"OneTrust settings detected\")\n\n\t\t\tlet params = new URLSearchParams(cookie)\n\t\t\tlet groups = params.get(\"groups\").split(\",\")\n\n\t\t\t// Groups is an array like this ['1:1', '2:0', '3:1', '4:1']. Make it an object with key value pairs\n\t\t\tlet groupsObject = {}\n\t\t\tgroups.forEach((group) => {\n\n\t\t\t\tlet groupArray = group.split(\":\")\n\t\t\t\tgroupsObject[groupArray[0]] = groupArray[1]\n\t\t\t})\n\n\t\t\t// group mapping\n\t\t\t// 1 = necessary\n\t\t\t// 2 = analytics\n\t\t\t// 3 = functional\n\t\t\t// 4 = ads\n\n\t\t\twpmConsentValues.categories.analytics = groubsObject[\"2\"] === \"1\"\n\t\t\twpmConsentValues.categories.ads = groupsObject[\"4\"] === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Only run after having made sure that the UC_UI library is loaded\n\twpm.ucUiProcessConsent = function () {\n\n\t\tif (typeof UC_UI === \"undefined\") return\n\n\t\tif (UC_UI.areAllConsentsAccepted()) {\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tconst ucStatisticsSlug = UC_UI.getSettingsLabels().categories.filter(data => data.label === \"Statistics\")[0].slug\n\n\t\tpmw.consentAdjustSelectively(\n\t\t\t{\n\t\t\t\tanalytics: !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === ucStatisticsSlug && data.consent.status === false).length > 0,\n\t\t\t\tads : !UC_UI.getServicesBaseInfo().filter(data => data.categorySlug === \"marketing\" && data.consent.status === false).length > 0,\n\t\t\t},\n\t\t)\n\t}\n\n\twpm.updateConsentCookieValues()\n\n\twpm.setConsentDefaultValuesToExplicit = () => {\n\t\twpmConsentValues.categories = {\n\t\t\tanalytics: false,\n\t\t\tads : false,\n\t\t}\n\t}\n\n\twpm.canIFire = (category, pixelName) => {\n\n\t\tlet canIFireMode\n\n\t\tif (\"category\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = !!wpmConsentValues.categories[category]\n\t\t} else if (\"pixel\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(pixelName)\n\n\t\t\t// If a user sets \"bing-ads\" in Borlabs Cookie instead of\n\t\t\t// \"microsoft-ads\" in the Borlabs settings, we need to check\n\t\t\t// for that too.\n\t\t\tif (false === canIFireMode && \"microsoft-ads\" === pixelName) {\n\t\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(\"bing-ads\")\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid consent mode in wpmConsentValues\")\n\t\t\tcanIFireMode = false\n\t\t}\n\n\t\tif (canIFireMode) {\n\t\t\treturn true\n\t\t} else {\n\t\t\tif (true || wpm.urlHasParameter(\"debugConsentMode\")) {\n\t\t\t\twpm.logPreventedPixelLoading(pixelName, category)\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.logPreventedPixelLoading = (pixelName, category) => {\n\n\t\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent) {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have not given consent for it yet. (PMW is in explicit consent mode.)\")\n\t\t} else {\n\t\t\tconsole.log(\"Pixel Manager for WooCommerce: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have removed consent for this pixel. (PMW is in implicit consent mode.)\")\n\t\t}\n\t}\n\n\t/**\n\t * Runs through each script in <head> and blocks / unblocks it according to the plugin settings\n\t * and user consent.\n\t */\n\n\t// https://stackoverflow.com/q/65453565/4688612\n\twpm.scriptTagObserver = new MutationObserver((mutations) => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif ($(node).data(\"wpm-cookie-category\")) {\n\n\t\t\t\t\t\t// If the pixel category has been approved > unblock\n\t\t\t\t\t\t// If the pixel belongs to more than one category, then unblock if one of the categories has been approved\n\t\t\t\t\t\t// If no category has been approved, but the Google Consent Mode is active, then only unblock the Google scripts\n\n\t\t\t\t\t\tif (wpm.shouldScriptBeActive(node)) {\n\t\t\t\t\t\t\twpm.unblockScript(node)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.blockScript(node)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\twpm.scriptTagObserver.observe(document.head, {childList: true, subtree: true})\n\t// jQuery(document).on(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\tdocument.addEventListener(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\n\twpm.shouldScriptBeActive = node => {\n\n\t\tif (\n\t\t\twpmDataLayer.shop.cookie_consent_mgmt.explicit_consent ||\n\t\t\twpmConsentValues.visitorHasChosen\n\t\t) {\n\n\t\t\tif (wpmConsentValues.mode === \"category\" && $(node).data(\"wpm-cookie-category\").split(\",\").some(element => wpmConsentValues.categories[element])) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && wpmConsentValues.pixels.includes($(node).data(\"wpm-pixel-name\"))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && $(node).data(\"wpm-pixel-name\") === \"google\" && [\"google-analytics\", \"google-ads\"].some(element => wpmConsentValues.pixels.includes(element))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmDataLayer?.pixels?.google?.consent_mode?.active && $(node).data(\"wpm-pixel-name\") === \"google\") {\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\n\twpm.unblockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tlet wpmSrc = $(scriptNode).data(\"wpm-src\")\n\t\tif (wpmSrc) $(scriptNode).attr(\"src\", wpmSrc)\n\n\t\tscriptNode.type = \"text/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.blockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tif ($(scriptNode).attr(\"src\")) $(scriptNode).removeAttr(\"src\")\n\t\tscriptNode.type = \"blocked/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\t}\n\n\twpm.unblockAllScripts = (analytics = true, ads = true) => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\twpm.setConsentValueCategories(analytics, ads)\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.unblockSelectedPixels = () => {\n\t\t// jQuery(document).trigger(\"wpmPreLoadPixels\")\n\t\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\t}\n\n\twpm.explicitConsentStateAlreadySet = () => {\n\n\t\tif (wpmConsentValues.explicitConsentStateAlreadySet) {\n\t\t\treturn true\n\t\t} else {\n\t\t\twpmConsentValues.explicitConsentStateAlreadySet = true\n\t\t}\n\t}\n\n\n\t/**\n\t * Block or unblock scripts for each CMP immediately after cookie consent has been updated\n\t * by the visitor.\n\t */\n\n\t/**\n\t * Borlabs Cookie\n\t * If visitor accepts cookies in Borlabs Cookie unblock the scripts\n\t */\n\tdocument.addEventListener(\"borlabs-cookie-consent-saved\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\tif (wpmConsentValues.mode === \"pixel\") {\n\n\t\t\twpm.unblockSelectedPixels()\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.pixels.includes(\"google-analytics\"), wpmConsentValues.pixels.includes(\"google-ads\"))\n\t\t} else {\n\n\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t}\n\t})\n\n\t/**\n\t * Cookiebot\n\t * \tIf visitor accepts cookies in Cookiebot unblock the scripts\n\t * \thttps://www.cookiebot.com/en/developer/\n\t */\n\tdocument.addEventListener(\"CookiebotOnAccept\", () => {\n\t\tif (Cookiebot.consent.statistics) wpmConsentValues.categories.analytics = true\n\t\tif (Cookiebot.consent.marketing) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\n\t}, false)\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/article/20-custom-events\n\t */\n\t// jQuery(document).on(\"CookieScriptAccept\", e => {\n\tdocument.addEventListener(\"CookieScriptAccept\", e => {\n\n\t\tif (e.detail.categories.includes(\"performance\")) wpmConsentValues.categories.analytics = true\n\t\tif (e.detail.categories.includes(\"targeting\")) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/\n\t */\n\t// jQuery(document).on(\"CookieScriptAcceptAll\", () => {\n\tdocument.addEventListener(\"CookieScriptAcceptAll\", () => {\n\n\t\twpm.setConsentValueCategories(true, true)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t})\n\n\t/**\n\t * Complianz Cookie\n\t *\n\t * If visitor accepts cookies in Complianz unblock the scripts\n\t */\n\n\twpm.cmplzStatusChange = (cmplzConsentData) => {\n\n\t\tif (cmplzConsentData.detail.categories.includes(\"statistics\")) wpm.updateConsentCookieValues(true, null)\n\t\tif (cmplzConsentData.detail.categories.includes(\"marketing\")) wpm.updateConsentCookieValues(null, true)\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t}\n\n\t// jQuery(document).on(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\t// jQuery(document).on(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\tdocument.addEventListener(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\n\t// Cookie Compliance by hu-manity.co (free and pro)\n\t// If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (free version)\n\t// https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t// jQuery(document).on(\"setCookieNotice\", () => {\n\tdocument.addEventListener(\"setCookieNotice\", () => {\n\t\twpm.updateConsentCookieValues()\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Compliance by hu-manity.co (free and pro)\n\t * If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (pro version)\n\t * https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t * Because Cookie Notice has no documented API or event that is being triggered on consent save or update\n\t * we have to solve this by using a mutation observer.\n\t *\n\t * @type {MutationObserver}\n\t */\n\n\twpm.huObserver = new MutationObserver(mutations => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif (node.id === \"hu\") {\n\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\").on(\"click\", function () {\n\t\t\t\t\t\t// jQuery(\".hu-cookies-save\") in pure JavaScript\n\t\t\t\t\t\tdocument.querySelector(\".hu-cookies-save\").addEventListener(\"click\", () => {\n\t\t\t\t\t\t\twpm.updateConsentCookieValues()\n\t\t\t\t\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\tif (window.hu) {\n\t\twpm.huObserver.observe(document.documentElement || document.body, {childList: true, subtree: true})\n\t}\n\n\t/**\n\t * Usercentrics Event Listeners\n\t *\n\t * https://docs.usercentrics.com/#/v2-events?id=usage-as-window-event\n\t */\n\n\twindow.addEventListener(\"ucEvent\", function (e) {\n\t\tif (e.detail && e.detail.event == \"consent_status\") {\n\t\t\t// check for consent status of service \"Google Ads Remarketing\"\n\t\t\tif (e.detail[\"Google Ads Remarketing\"] === true) {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has consent\")\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Google Ads Remarketing has no consent\")\n\t\t\t}\n\t\t}\n\t})\n\n\t// https://docs.usercentrics.com/#/v2-events?id=uc_ui_cmp_event\n\twindow.addEventListener(\"UC_UI_CMP_EVENT\", function (event) {\n\n\t\tif (event.detail.type === \"ACCEPT_ALL\") {\n\t\t\t// console.log('accept all');\n\n\t\t\tpmw.consentAcceptAll()\n\t\t}\n\n\t\tif (event.detail.type === \"DENY_ALL\") {\n\t\t\tpmw.consentRevokeAll()\n\t\t}\n\n\t\tif (event.detail.type === \"SAVE\") {\n\t\t\tconsole.log(\"event.detail\", event.detail)\n\t\t}\n\t})\n\n\n\t/**\n\t * OneTrust Event Listeners\n\t *\n\t * CookiePro by OneTrust doesn't emit any events when the user accepts or declines cookies.\n\t */\n\n\t// There are two accept all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\"#accept-recommended-btn-handler, #onetrust-accept-btn-handler\").on(\"click\", function () {\n\n\t\t// If OneTrust is not loaded, return\n\t\tif (typeof window.OneTrust === \"undefined\") return\n\n\t\tpmw.consentAcceptAll()\n\t})\n\n\t// There are two revoke all buttons. One in the first banner and one in the settings window. Both have different identifiers.\n\tjQuery(\".ot-pc-refuse-all-handler, #onetrust-reject-all-handler\").on(\"click\", function () {\n\t\tpmw.consentRevokeAll()\n\t})\n\n\t// There is one save button that saves mixed consent. It is in the settings window. We reload the page after saving to reflect the changes.\n\tjQuery(\".save-preference-btn-handler.onetrust-close-btn-handler\").on(\"click\", function () {\n\t\tlocation.reload()\n\n\t\t// OneTrust.OnConsentChanged(function (e) {\n\t\t// \tpmw.consentAdjustSelectively({\n\t\t// \t\tanalytics: e.detail.includes(\"2\"),\n\t\t// \t\tads : e.detail.includes(\"4\"),\n\t\t// \t})\n\t\t// })\n\t})\n\n\n}(window.wpm = window.wpm || {}, jQuery));\n\n\n(function (pmw, $, undefined) {\n\n\t/**\n\t * Pixel Manager Cookie Consent API\n\t */\n\n\t// Accept consent for all cookies\n\tpmw.consentAcceptAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(true, true, settings.duration)\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t}\n\n\t// Accept consent selectively\n\tpmw.consentAdjustSelectively = (settings) => {\n\n\t\t// If settings.analytics is set, keep it, otherwise set it to wpm.getConsentValues().categories.analytics\n\t\tsettings.analytics = settings.analytics !== undefined ? settings.analytics : wpm.getConsentValues().categories.analytics\n\t\tsettings.ads = settings.ads !== undefined ? settings.ads : wpm.getConsentValues().categories.ads\n\t\tsettings.duration = settings.duration || 365\n\n\t\tpmw.consentSetCookie(settings.analytics, settings.ads, settings.duration)\n\t\twpm.unblockAllScripts(settings.analytics, settings.ads)\n\t\twpm.updateGoogleConsentMode(settings.analytics, settings.ads)\n\t}\n\n\t// Remove consent for all cookies\n\tpmw.consentRevokeAll = (settings = {}) => {\n\n\t\tsettings.duration = settings.duration || 365\n\n\t\twpm.setConsentValueCategories(false, false)\n\t\tpmw.consentSetCookie(false, false, settings.duration)\n\t\twpm.updateGoogleConsentMode(false, false)\n\t}\n\n\t// Set a cookie called pmw_cookie_consent with the value of pmw_cookie_consent\n\t// and set the default expiration date to 1 year from now\n\tpmw.consentSetCookie = (analytics, ads, duration = 365) => {\n\t\twpm.setCookie(\"pmw_cookie_consent\", JSON.stringify({analytics, ads}), duration)\n\t}\n\n\t// Trigger an event once the PMW consent management has been loaded\n\tjQuery(document).trigger(\"pmw_cookie_consent_management_loaded\")\n\n}(window.pmw = window.pmw || {}, jQuery))\n","/**\n * remove_from_cart event\n *\n * Cannot be attached directly because the mini cart doesn't necessarily contain the remove button on page load.\n */\njQuery(document).on(\"click\", \".remove_from_cart_button, .remove\", (event) => {\n\n\t// console.log(\"remove_from_cart event\" + new Date().getTime())\n\n\ttry {\n\n\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"))\n\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\twpm.removeProductFromCart(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * begin_checkout event\n *\n * Cannot be attached directly because the mini cart doesn't necessarily contain the remove button on page load.\n */\nlet checkoutButtonClasses = [\n\t\".checkout\",\n\t\".checkout-button\",\n\t\".cart-checkout-button\",\n\t\".button.checkout\",\n\t\".xoo-wsc-ft-btn-checkout\", // https://xootix.com/side-cart-for-woocommerce/\n\t\".elementor-button--checkout\",\n].join(\",\")\n\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).on(\"click init_checkout\", checkoutButtonClasses, () => {\n\n\t// console.log(\"init_checkout at: \" + new Date().getTime())\n\n\tjQuery(document).trigger(\"wpmBeginCheckout\")\n})\n\njQuery(document).on(\"updated_cart_totals\", () => {\n\tjQuery(document).trigger(\"wpmViewCart\")\n})\n\n/**\n * Set up PWM events\n */\n\n// track checkout option event: purchase click\n// https://wordpress.stackexchange.com/a/352171/68337\njQuery(document).on(\"wpmLoad\", (event) => {\n\tjQuery(document).on(\"payment_method_selected\", () => {\n\n\t\tif (false === wpm.paymentMethodSelected) {\n\t\t\twpm.fireCheckoutProgress(3)\n\t\t}\n\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t\twpm.paymentMethodSelected = true\n\t})\n})\n\n// populate the wpmDataLayer with the cart items\njQuery(document).on(\"wpmLoad\", () => {\n\n\ttry {\n\t\t// When a new session is initiated there are no items in the cart,\n\t\t// so we can save the call to get the cart items\n\t\tif (wpm.doesWooCommerceCartExist()) wpm.getCartItems()\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// get all add-to-cart= products from backend\njQuery(document).on(\"wpmLoad\", () => {\n\n\twpmDataLayer.products = wpmDataLayer.products || {}\n\n\t// scan page for add-to-cart= links\n\tlet productIds = wpm.getAddToCartLinkProductIds()\n\n\twpm.getProductsFromBackend(productIds)\n})\n\n/**\n * Save the referrer into a cookie\n */\n\njQuery(document).on(\"wpmLoad\", () => {\n\n\t// can't use session storage as we can't read it from the server\n\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\n\t\tif (document.referrer) {\n\t\t\tlet referrerUrl = new URL(document.referrer)\n\t\t\tlet referrerHostname = referrerUrl.hostname\n\n\t\t\tif (referrerHostname !== window.location.host) {\n\t\t\t\twpm.setCookie(\"wpmReferrer\", referrerHostname)\n\t\t\t}\n\t\t}\n\t}\n})\n\n\n/**\n * Create our own load event in order to better handle script flow execution when JS \"optimizers\" shuffle the code.\n */\njQuery(document).on(\"wpmLoad\", () => {\n\t// document.addEventListener(\"wpmLoad\", function () {\n\ttry {\n\t\tif (typeof wpmDataLayer != \"undefined\" && !wpmDataLayer?.wpmLoadFired) {\n\n\t\t\tjQuery(document).trigger(\"wpmLoadAlways\")\n\n\t\t\tif (wpmDataLayer?.shop) {\n\t\t\t\tif (\n\t\t\t\t\t\"product\" === wpmDataLayer.shop.page_type &&\n\t\t\t\t\t\"variable\" !== wpmDataLayer.shop.product_type &&\n\t\t\t\t\twpm.getMainProductIdFromProductPage()\n\t\t\t\t) {\n\t\t\t\t\tlet product = wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage())\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t\t} else if (\"product_category\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmCategory\")\n\t\t\t\t} else if (\"search\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"pmwEvent:Search\")\n\t\t\t\t} else if (\"cart\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tjQuery(document).trigger(\"wpmViewCart\")\n\t\t\t\t} else if (\"order_received_page\" === wpmDataLayer.shop.page_type) {\n\t\t\t\t\tif (wpmDataLayer?.order && !wpm.isOrderIdStored(wpmDataLayer.order.id)) {\n\t\t\t\t\t\tjQuery(document).trigger(\"wpmOrderReceivedPage\")\n\t\t\t\t\t\twpm.writeOrderIdToStorage(wpmDataLayer.order.id, wpmDataLayer.order.key)\n\t\t\t\t\t\tif (typeof wpm.acrRemoveCookie === \"function\") wpm.acrRemoveCookie()\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.user?.id && !wpm.hasLoginEventFired()) {\n\t\t\t\tjQuery(document).trigger(\"wpmLogin\")\n\t\t\t\twpm.setLoginEventFired()\n\t\t\t}\n\n\t\t\t// /**\n\t\t\t// * Load mini cart fragments into a wpm session storage key,\n\t\t\t// * after the document load event.\n\t\t\t// */\n\t\t\t// jQuery(document).ajaxSend(function (event, jqxhr, settings) {\n\t\t\t// \t// console.log('settings.url: ' + settings.url);\n\t\t\t//\n\t\t\t// \tif (settings.url.includes(\"get_refreshed_fragments\") && sessionStorage) {\n\t\t\t// \t\tif (!sessionStorage.getItem(\"wpmMiniCartActive\")) {\n\t\t\t// \t\t\tsessionStorage.setItem(\"wpmMiniCartActive\", JSON.stringify(true))\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// })\n\n\t\t\twpmDataLayer.wpmLoadFired = true\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\njQuery(document).on(\"wpmLoad\", async () => {\n\n\tif (\n\t\twindow.sessionStorage &&\n\t\twindow.sessionStorage.getItem(\"_pmw_endpoint_available\") &&\n\t\t!JSON.parse(window.sessionStorage.getItem(\"_pmw_endpoint_available\"))\n\t) {\n\t\tconsole.error(\"Pixel Manager for WooCommerce: REST endpoint is not available. Using admin-ajax.php instead.\")\n\t}\n})\n\n\n/**\n * Load all pixels\n */\njQuery(document).on(\"wpmPreLoadPixels\", () => {\n\n\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent && !wpm.explicitConsentStateAlreadySet()) {\n\t\twpm.updateConsentCookieValues(null, null, true)\n\t}\n\n\tjQuery(document).trigger(\"wpmLoadPixels\", {})\n})\n\n\n/**\n * All ecommerce events\n */\n\njQuery(document).on(\"wpmAddToCart\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToCart\",\n\t\tproduct: product,\n\t}\n\n\t// Facebook\n\t// If Facebook pixel is loaded, add Facebook server to server event data to the payload\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToCart\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t// TikTok\n\t// https://ads.tiktok.com/gateway/docs/index?identify_key=c0138ffadd90a955c1f0670a56fe348d1d40680b3c89461e09f78ed26785164b&language=ENGLISH&doc_id=1739585702922241#item-link-Adding%20parameters%20to%20event%20code\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"AddToCart\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToCart\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmBeginCheckout\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"beginCheckout\",\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"InitiateCheckout\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (wpmDataLayer?.cart && !jQuery.isEmptyObject(wpmDataLayer.cart)) {\n\t\t\tpayload.facebook.custom_data = {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tcontent_ids : wpm.fbGetContentIdsFromCart(),\n\t\t\t\tvalue : wpm.getCartValue(),\n\t\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\t}\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"InitiateCheckout\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideBeginCheckout\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmAddToWishlist\", (event, product) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"addToWishlist\",\n\t\tproduct: product,\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : wpm.fbGetProductDataForCapiEvent(product),\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"AddToWishlist\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideAddToWishlist\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmViewItem\", (event, product = null) => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent : \"viewItem\",\n\t\tproduct: product,\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"ViewContent\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {},\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.facebook.custom_data = wpm.fbGetProductDataForCapiEvent(product)\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"ViewContent\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t}\n\n\t\tif (product) {\n\t\t\tpayload.tiktok.properties = {\n\t\t\t\tvalue : product.price * product.quantity,\n\t\t\t\tcurrency: product.currency,\n\t\t\t\tcontents: [{\n\t\t\t\t\tcontent_id : product.dyn_r_ids[wpmDataLayer.pixels.tiktok.dynamic_remarketing.id_type],\n\t\t\t\t\tcontent_type: \"product\",\n\t\t\t\t\tcontent_name: product.name,\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t}],\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideViewItem\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"pmwEvent:Search\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"search\",\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Search\",\n\t\t\tevent_id : wpm.getFbRandomEventId(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tsearch_string: wpm.getSearchTermFromUrl(),\n\t\t\t},\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"Search\",\n\t\t\tevent_id : wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tquery: wpm.getSearchTermFromUrl(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideSearch\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmPlaceOrder\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"placeOrder\",\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"PlaceAnOrder\",\n\t\t\tevent_id: wpm.getRandomEventId(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientPlaceOrder\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// If function wpm.isServerToServerEnabled() exists, then run it\n\tif (typeof wpm.sendEventPayloadToServer === \"function\") {\n\t\twpm.sendEventPayloadToServer(payload)\n\t}\n})\n\njQuery(document).on(\"wpmOrderReceivedPage\", () => {\n\n\t/**\n\t * Prepare the payload\n\t */\n\n\tlet payload = {\n\t\tevent: \"orderReceived\",\n\t}\n\n\t// Facebook\n\tif (wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tpayload.facebook = {\n\t\t\tevent_name : \"Purchase\",\n\t\t\tevent_id : wpmDataLayer.order.id.toString(),\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t\tcustom_data : {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tcontent_ids : wpm.facebookContentIds(),\n\t\t\t},\n\t\t}\n\t}\n\n\t// TikTok\n\tif (wpmDataLayer?.pixels?.tiktok?.loaded) {\n\t\tpayload.tiktok = {\n\t\t\tevent : \"CompletePayment\",\n\t\t\tevent_id : wpmDataLayer.order.id.toString(),\n\t\t\tcontext : wpm.getTikTokUserDataFromBrowser(),\n\t\t\tproperties: {\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcontents: wpm.getTikTokOrderItemIds(),\n\t\t\t},\n\t\t}\n\t}\n\n\t/**\n\t * Process the client-to-server event\n\t */\n\n\tjQuery(document).trigger(\"wpmClientSideOrderReceivedPage\", payload)\n\n\t/**\n\t * Process the server-to-server event\n\t */\n\n\t// ! No server-to-server event is sent for this event because it is compiled and sent from the server directly\n})\n\njQuery(document).on(\"pmw:ready\", async () => {\n\n\t// /**\n\t// * Run as soon as wpm namespace is loaded\n\t// */\n\t//\n\t// await wpm.wpmDataLayerExists()\n\n\t// Watch for products visible in viewport\n\twpm.startIntersectionObserverToWatch()\n\n\t// Watch for lazy loaded products\n\twpm.startProductsMutationObserverToWatch()\n})\n\n\n\n\n","/**\n * Register event listeners\n */\n\n\n/**\n * add_to_cart event\n *\n * WC is inconsistent with events that emit add-to-cart events.\n * adding_to_cart and added_to_are legacy events. Also, they only work\n * on Ajax buttons on shop pages.\n */\n\nconst addToCartSelectors = [\n\t\".add_to_cart_button:not(.product_type_variable)\",\n\t\".ajax_add_to_cart\",\n\t\".single_add_to_cart_button\",\n].join(\",\")\n\njQuery(addToCartSelectors).on(\"click adding_to_cart\", (event) => {\n\t// console log current time\n\t// console.log(\"add_to_cart event fired at: \" + new Date().getTime())\n\n\ttry {\n\n\t\t// console.log(\"add_to_cart event detected\")\n\n\t\tlet quantity = 1,\n\t\t\tproductId\n\n\t\t// Only process on product pages\n\t\tif (wpmDataLayer.shop.page_type === \"product\") {\n\n\t\t\t// First process related and upsell products\n\t\t\tif (typeof jQuery(event.currentTarget).attr(\"href\") !== \"undefined\" && jQuery(event.currentTarget).attr(\"href\").includes(\"add-to-cart\")) {\n\n\t\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\")\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t\t// If is simple product\n\t\t\tif (wpmDataLayer.shop.product_type === \"simple\") {\n\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\tproductId = jQuery(event.currentTarget).val()\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t\t// If is variable product or variable-subscription\n\t\t\tif ([\"variable\", \"variable-subscription\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\tproductId = jQuery(\"[name='variation_id']\").val()\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t\t// If is grouped product\n\t\t\tif (wpmDataLayer.shop.product_type === \"grouped\") {\n\n\t\t\t\tjQuery(\".woocommerce-grouped-product-list-item\").each((index, element) => {\n\n\t\t\t\t\tquantity = Number(jQuery(element).find(\".input-text.qty\").val())\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\t\tlet classes = jQuery(element).attr(\"class\")\n\t\t\t\t\tproductId = wpm.getPostIdFromString(classes)\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// If is bundle product\n\t\t\tif (wpmDataLayer.shop.product_type === \"bundle\") {\n\n\t\t\t\tquantity = Number(jQuery(\".input-text.qty\").val())\n\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\t\t\t\tproductId = jQuery(\"input[name=add-to-cart]\").val()\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"product_id\")\n\t\t\twpm.addProductToCart(productId, quantity)\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * If someone clicks anywhere on a custom /?add-to-cart=123 link\n * trigger the add to cart event\n */\n\n// jQuery(document).one(\"click\", \"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\", (event) => {\njQuery(\"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\").one(\"click\", (event) => {\n\n\ttry {\n\t\tif (jQuery(event.target).closest(\"a\").attr(\"href\")) {\n\n\t\t\tlet url = new URL(jQuery(event.currentTarget).attr(\"href\"), window.location.origin)\n\n\t\t\tif (url.searchParams.has(\"add-to-cart\")) {\n\n\t\t\t\tlet productId = url.searchParams.get(\"add-to-cart\")\n\t\t\t\twpm.addProductToCart(productId, 1)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select item event\n// jQuery(document).on(\"click\", \".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\", (event) => {\njQuery(\".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\").on(\"click\", (event) => {\n\n\ttry {\n\n\t\t/**\n\t\t * On some pages the event fires multiple times, and on product pages\n\t\t * even on page load. Using e.stopPropagation helps to prevent this,\n\t\t * but I don't know why. We don't even have to use this, since only a real\n\t\t * product click yields a valid productId. So we filter the invalid click\n\t\t * events out later down in the code. I'll keep it that way because this is\n\t\t * the most compatible way across shops.\n\t\t *\n\t\t * e.stopPropagation();\n\t\t * */\n\n\t\tlet productId = jQuery(event.currentTarget).nextAll(\".wpmProductId:first\").data(\"id\")\n\n\t\t/**\n\t\t * On product pages, for some reason, the click event is triggered on the main product on page load.\n\t\t * In that case no ID is found. But we can discard it, since we only want to trigger the event on\n\t\t * related products, which are found below.\n\t\t */\n\n\t\tif (productId) {\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmSelectContentGaUa\", product)\n\t\t\t\tjQuery(document).trigger(\"wpmSelectItem\", product)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// checkout_progress event\n// track checkout option event: entered valid billing email\n// jQuery(document).on(\"input\", \"#billing_email\", (event) => {\njQuery(\"#billing_email\").on(\"input\", (event) => {\n\n\tif (wpm.isEmail(jQuery(event.currentTarget).val())) {\n\t\t// wpm.fireCheckoutOption(2);\n\t\twpm.fireCheckoutProgress(2)\n\t\twpm.emailSelected = true\n\t}\n})\n\n\n/**\n * Place order button\n *\n * Track checkout option event: purchase click\n * https://stackoverflow.com/a/34112407/4688612\n * jQuery(document).one(\"click\", \"#place_order\", () => {\n *\n * Has to be hooked after document ready !\n */\njQuery(\"form.checkout\").on(\"checkout_place_order_success\", () => {\n\n\t// console log current time\n\t// console.log(\"checkout_place_order_success event fired at: \" + new Date().getTime())\n\n\tif (false === wpm.emailSelected) {\n\t\twpm.fireCheckoutProgress(2)\n\t}\n\n\tif (false === wpm.paymentMethodSelected) {\n\t\twpm.fireCheckoutProgress(3)\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t}\n\n\twpm.fireCheckoutProgress(4)\n\n\tjQuery(document).trigger(\"wpmPlaceOrder\", {})\n})\n\n/**\n * Update cart event\n *\n * Has to be hooked after document ready !\n */\njQuery(\"[name='update_cart']\").on(\"click\", () => {\n\n\ttry {\n\t\tjQuery(\".cart_item\").each((index, element) => {\n\n\t\t\tlet url = new URL(jQuery(element).find(\".product-remove\").find(\"a\").attr(\"href\"))\n\t\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\t\tlet quantity = jQuery(element).find(\".qty\").val()\n\n\t\t\tif (quantity === 0) {\n\t\t\t\twpm.removeProductFromCart(productId)\n\t\t\t} else if (quantity < wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.removeProductFromCart(productId, wpmDataLayer.cart[productId].quantity - quantity)\n\t\t\t} else if (quantity > wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.addProductToCart(productId, quantity - wpmDataLayer.cart[productId].quantity)\n\t\t\t}\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t\twpm.getCartItemsFromBackend()\n\t}\n})\n\n// add_to_wishlist\njQuery(\".add_to_wishlist,.wl-add-to\").on(\"click\", event => {\n\n\ttry {\n\n\t\tlet productId\n\n\t\tif (jQuery(event.currentTarget).data(\"productid\")) { // for the WooCommerce wishlist plugin\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"productid\")\n\t\t} else if (jQuery(event.currentTarget).data(\"product-id\")) { // for the YITH wishlist plugin\n\n\t\t\tproductId = jQuery(event.currentTarget).data(\"product-id\")\n\t\t}\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\n\t\tjQuery(document).trigger(\"wpmAddToWishlist\", product)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * Called when the user selects all the required dropdowns / attributes\n *\n * Has to be hooked after document ready !\n *\n * https://stackoverflow.com/a/27849208/4688612\n * https://stackoverflow.com/a/65065335/4688612\n */\n\njQuery(\".single_variation_wrap\").on(\"show_variation\", (event, variation) => {\n\n\ttry {\n\t\tlet productId = wpm.getIdBasedOndVariationsOutputSetting(variation.variation_id)\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\twpm.triggerViewItemEventPrep(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * Called on variable products when no selection has been done yet\n * or when the visitor deselects his choice.\n *\n * Has to be hooked after document ready !\n */\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n//\n// \t\ttry {\n// \t\t\tlet classes = jQuery(\"body\").attr(\"class\")\n// \t\t\tlet productId = classes.match(/(postid-)(\\d+)/)[2]\n//\n// \t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n//\n// \t\t\t/**\n// \t\t\t * If we have a variable product with no preset,\n// \t\t\t * and variations output is enabled,\n// \t\t\t * then we send a viewItem event with the first\n// \t\t\t * variation we find for the parent.\n// \t\t\t * If variations output is disabled,\n// \t\t\t * we just send the parent ID.\n// \t\t\t *\n// \t\t\t * And if Facebook microdata is active, use the\n// \t\t\t * microdata product ID.\n// \t\t\t */\n//\n// \t\t\tif (\n// \t\t\t\t\"variable\" === wpmDataLayer.shop.product_type &&\n// \t\t\t\twpmDataLayer?.general?.variationsOutput\n// \t\t\t) {\n// \t\t\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n// \t\t\t\t\tif (\"parentId\" in product) {\n//\n// \t\t\t\t\t\tproductId = product.id\n// \t\t\t\t\t\tbreak\n// \t\t\t\t\t}\n// \t\t\t\t}\n//\n// \t\t\t\tif (wpmDataLayer?.pixels?.facebook?.microdata_product_id) {\n// \t\t\t\t\tproductId = wpmDataLayer.pixels.facebook.microdata_product_id\n// \t\t\t\t}\n// \t\t\t}\n//\n// \t\t\t// console.log(\"hmm\")\n// \t\t\twpm.triggerViewItemEventPrep(productId)\n//\n// \t\t} catch (e) {\n// \t\t\tconsole.error(e)\n// \t\t}\n// \t})\n// })\n\n// jQuery(function () {\n//\n// \tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n// \t\tjQuery(document).trigger(\"wpmviewitem\")\n// \t})\n// })\n","/**\n * Create a wpm namespace under which all functions are declared\n */\n\n// https://stackoverflow.com/a/5947280/4688612\n\n(function (wpm, $, undefined) {\n\n\tconst wpmDeduper = {\n\t\tkeyName : \"_wpm_order_ids\",\n\t\tcookieExpiresDays: 365,\n\t}\n\n\tconst wpmRestSettings = {\n\t\t// cookiesAvailable : '_wpm_cookies_are_available',\n\t\tcookiePmwRestEndpointAvailable: \"_pmw_endpoint_available\",\n\t\trestEndpointPost : \"pmw/v1/test/\",\n\t\trestFails : 0,\n\t\trestFailsThreshold : 10,\n\t}\n\n\twpm.emailSelected = false\n\twpm.paymentMethodSelected = false\n\n\t// wpm.checkIfCookiesAvailable = function () {\n\t//\n\t// // read the cookie if previously set, if it is return true, otherwise continue\n\t// if (wpm.getCookie(wpmRestSettings.cookiesAvailable)) {\n\t// return true;\n\t// }\n\t//\n\t// // set the cookie for the session\n\t// Cookies.set(wpmRestSettings.cookiesAvailable, true);\n\t//\n\t// // read cookie, true if ok, false if not ok\n\t// return !!wpm.getCookie(wpmRestSettings.cookiesAvailable);\n\t// }\n\n\twpm.useRestEndpoint = () => {\n\n\t\t// only if sessionStorage is available\n\n\t\t// only if REST API endpoint is generally accessible\n\t\t// check in sessionStorage if we checked before and return answer\n\t\t// otherwise check if the endpoint is available, save answer in sessionStorage and return answer\n\n\t\t// only if not too many REST API errors happened\n\n\t\treturn wpm.isSessionStorageAvailable() &&\n\t\t\twpm.isRestEndpointAvailable() &&\n\t\t\twpm.isBelowRestErrorThreshold()\n\t}\n\n\twpm.isBelowRestErrorThreshold = () => window.sessionStorage.getItem(wpmRestSettings.restFails) <= wpmRestSettings.restFailsThreshold\n\n\twpm.isRestEndpointAvailable = async () => {\n\n\t\tif (window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable)) {\n\t\t\treturn JSON.parse(window.sessionStorage.getItem(wpmRestSettings.cookiePmwRestEndpointAvailable))\n\t\t} else {\n\t\t\treturn await wpm.testEndpoint()\n\t\t}\n\t}\n\n\twpm.isSessionStorageAvailable = () => !!window.sessionStorage\n\n\t// Test the endpoint by sending a POST request\n\twpm.testEndpoint = async (\n\t\turl = wpm.root + wpmRestSettings.restEndpointPost,\n\t\tcookieName = wpmRestSettings.cookiePmwRestEndpointAvailable,\n\t) => {\n\n\t\tlet response = await fetch(url, {\n\t\t\tmethod : \"POST\",\n\t\t\tmode : \"cors\",\n\t\t\tcache : \"no-cache\",\n\t\t\tkeepalive: true,\n\t\t})\n\n\t\tif (response.status === 200) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(true))\n\t\t\treturn true\n\t\t} else if (response.status === 404) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t} else if (response.status === 0) {\n\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isWpmRestEndpointAvailable = (cookieName = wpmRestSettings.cookiePmwRestEndpointAvailable) => !!wpm.getCookie(cookieName)\n\n\twpm.writeOrderIdToStorage = (orderId, orderKey, source = \"thankyou_page\", expireDays = 365) => {\n\n\t\t// save the order ID in the browser storage\n\n\t\tif (!window.Storage) {\n\t\t\tlet expiresDate = new Date()\n\t\t\texpiresDate.setDate(expiresDate.getDate() + wpmDeduper.cookieExpiresDays)\n\n\t\t\tlet ids = []\n\t\t\tif (checkCookie()) {\n\t\t\t\tids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t}\n\n\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\tids.push(orderId)\n\t\t\t\tdocument.cookie = wpmDeduper.keyName + \"=\" + JSON.stringify(ids) + \";expires=\" + expiresDate.toUTCString()\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (localStorage.getItem(wpmDeduper.keyName) === null) {\n\t\t\t\tlet ids = []\n\t\t\t\tids.push(orderId)\n\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\n\t\t\t} else {\n\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\t\tids.push(orderId)\n\t\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof wpm.storeOrderIdOnServer === \"function\" && wpmDataLayer.orderDeduplication) {\n\t\t\twpm.storeOrderIdOnServer(orderKey, source)\n\t\t}\n\t}\n\n\tfunction checkCookie() {\n\t\tlet key = wpm.getCookie(wpmDeduper.keyName)\n\t\treturn key !== \"\"\n\t}\n\n\twpm.isOrderIdStored = orderId => {\n\n\t\tif (wpmDataLayer.orderDeduplication) {\n\n\t\t\tif (!window.Storage) {\n\n\t\t\t\tif (checkCookie()) {\n\t\t\t\t\tlet ids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (localStorage.getItem(wpmDeduper.keyName) !== null) {\n\t\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\"order duplication prevention: off\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isEmail = email => {\n\n\t\t// https://emailregex.com/\n\n\t\tlet regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n\t\treturn regex.test(email)\n\t}\n\n\twpm.removeProductFromCart = async (productId, quantityToRemove = null) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet quantity\n\n\t\t\tif (quantityToRemove == null) {\n\t\t\t\tquantity = wpmDataLayer.cart[productId].quantity\n\t\t\t} else {\n\t\t\t\tquantity = quantityToRemove\n\t\t\t}\n\n\t\t\tif (!wpmDataLayer.cart[productId]) {\n\t\t\t\tawait wpm.getProductsFromBackend([productId])\n\t\t\t}\n\n\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\tjQuery(document).trigger(\"wpmRemoveFromCart\", product)\n\n\t\t\tif (quantityToRemove == null || wpmDataLayer.cart[productId].quantity === quantityToRemove) {\n\n\t\t\t\tdelete wpmDataLayer.cart[productId]\n\n\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t} else {\n\n\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity - quantity\n\n\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\t// console.log('getting cart from back end');\n\t\t\t// wpm.getCartItemsFromBackend();\n\t\t\t// console.log('getting cart from back end done');\n\t\t}\n\t}\n\n\twpm.getIdBasedOndVariationsOutputSetting = productId => {\n\n\t\ttry {\n\t\t\tif (wpmDataLayer?.general?.variationsOutput) return productId\n\n\t\t\tif (wpmDataLayer.products[productId].isVariation) return wpmDataLayer.products[productId].parentId\n\n\t\t\treturn productId\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// add_to_cart\n\twpm.addProductToCart = async (productId, quantity) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (!wpmDataLayer?.products[productId]) {\n\t\t\t\tawait wpm.getProductsFromBackend([productId])\n\t\t\t}\n\n\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\tjQuery(document).trigger(\"wpmAddToCart\", product)\n\n\t\t\t// add product to cart wpmDataLayer['cart']\n\n\t\t\t// if the product already exists in the object, only add the additional quantity\n\t\t\t// otherwise create that product object in the wpmDataLayer['cart']\n\t\t\tif (wpmDataLayer?.cart[productId]) {\n\n\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity + quantity\n\t\t\t} else {\n\n\t\t\t\tif (!(\"cart\" in wpmDataLayer)) wpmDataLayer.cart = {}\n\n\t\t\t\twpmDataLayer.cart[productId] = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\t\t\t}\n\n\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\n\t\t\t// fallback if wpmDataLayer.cart and wpmDataLayer.products got out of sync in case cart caching has an issue\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\twpm.getCartItems = () => {\n\n\t\tif (sessionStorage) {\n\t\t\tif (!sessionStorage.getItem(\"wpmDataLayerCart\") || wpmDataLayer.shop.page_type === \"order_received_page\") {\n\t\t\t\tsessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify({}))\n\t\t\t} else {\n\t\t\t\twpm.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem(\"wpmDataLayerCart\")))\n\t\t\t}\n\t\t} else {\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\t// get all cart items from the backend\n\twpm.getCartItemsFromBackend = () => {\n\t\ttry {\n\n\t\t\t/**\n\t\t\t * Can't use a REST API endpoint, as the cart session will not be loaded if the\n\t\t\t * endpoint is called.\n\t\t\t *\n\t\t\t * https://wordpress.org/support/topic/wc-cart-is-null-in-custom-rest-api/#post-11442843\n\t\t\t */\n\n\t\t\t/**\n\t\t\t * Get the cart items from the backend the data object using fetch API\n\t\t\t * and log success or error messages\n\t\t\t * and url encoded data\n\t\t\t */\n\t\t\tfetch(wpm.ajax_url, {\n\t\t\t\tmethod : \"POST\",\n\t\t\t\tcache : \"no-cache\",\n\t\t\t\tbody : new URLSearchParams({action: \"pmw_get_cart_items\"}),\n\t\t\t\tkeepalive: true,\n\t\t\t})\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.ok) {\n\t\t\t\t\t\treturn response.json()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(data => {\n\n\t\t\t\t\tif (data.success) {\n\n\t\t\t\t\t\tif (!data.data[\"cart\"]) data.data[\"cart\"] = {}\n\n\t\t\t\t\t\twpm.saveCartObjectToDataLayer(data.data[\"cart\"])\n\n\t\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(data.data[\"cart\"]))\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow Error(\"Error getting cart items from backend\")\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// get productIds from the backend\n\twpm.getProductsFromBackend = async productIds => {\n\n\t\tif (wpmDataLayer?.products) {\n\t\t\t// If productIds already exists as key in wpmDataLayer.products, remove it from the array\n\t\t\tproductIds = productIds.filter(productId => !(productId in wpmDataLayer.products))\n\t\t}\n\n\t\t// if no products IDs are in the object, don't try to get anything from the server\n\t\tif (!productIds || productIds.length === 0) return\n\n\t\ttry {\n\n\t\t\tlet response\n\n\t\t\tif (await wpm.isRestEndpointAvailable()) {\n\t\t\t\tresponse = await fetch(wpm.root + \"pmw/v1/products/\", {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\tcache : \"no-cache\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t},\n\t\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\t\tpageId : wpmDataLayer.general.pageId,\n\t\t\t\t\t\tpageType : wpmDataLayer.shop.page_type,\n\t\t\t\t\t\tproductIds: productIds,\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t} else {\n\n\t\t\t\t// Get the product details from the backend the data object using fetch API\n\t\t\t\t// and log success or error messages\n\t\t\t\t// and url encoded data\n\t\t\t\tresponse = await fetch(wpm.ajax_url, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tcache : \"no-cache\",\n\t\t\t\t\tbody : new URLSearchParams({\n\t\t\t\t\t\taction : \"pmw_get_product_ids\",\n\t\t\t\t\t\tpageId : wpmDataLayer.general.pageId,\n\t\t\t\t\t\tpageType : wpmDataLayer.shop.page_type,\n\t\t\t\t\t\tproductIds: productIds,\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (response.ok) {\n\t\t\t\tlet responseData = await response.json()\n\t\t\t\tif (responseData.success) {\n\t\t\t\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, responseData.data)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.error(\"Error getting products from backend\")\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\n\t\treturn true\n\t}\n\n\twpm.saveCartObjectToDataLayer = cartObject => {\n\n\t\twpmDataLayer.cart = cartObject\n\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, cartObject)\n\t}\n\n\twpm.triggerViewItemEventPrep = async productId => {\n\n\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\twpm.triggerViewItemEvent(productId)\n\t\t} else {\n\t\t\tawait wpm.getProductsFromBackend([productId])\n\t\t\twpm.triggerViewItemEvent(productId)\n\t\t}\n\t}\n\n\twpm.triggerViewItemEvent = productId => {\n\n\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t}\n\n\twpm.triggerViewItemEventNoProduct = () => {\n\t\tjQuery(document).trigger(\"wpmViewItem\")\n\t}\n\n\twpm.fireCheckoutOption = (step, checkout_option = null, value = null) => {\n\n\t\tlet data = {\n\t\t\tstep : step,\n\t\t\tcheckout_option: checkout_option,\n\t\t\tvalue : value,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutOption\", data)\n\t}\n\n\twpm.fireCheckoutProgress = step => {\n\n\t\tlet data = {\n\t\t\tstep: step,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutProgress\", data)\n\t}\n\n\twpm.getPostIdFromString = string => {\n\n\t\ttry {\n\t\t\treturn string.match(/(post-)(\\d+)/)[2]\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.triggerViewItemList = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tjQuery(document).trigger(\"wpmViewItemList\", wpm.getProductDataForViewItemEvent(productId))\n\t}\n\n\twpm.getProductDataForViewItemEvent = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\ttry {\n\t\t\tif (wpmDataLayer.products[productId]) {\n\n\t\t\t\treturn wpm.getProductDetailsFormattedForEvent(productId)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getMainProductIdFromProductPage = () => {\n\n\t\ttry {\n\t\t\tif ([\"simple\", \"variable\", \"grouped\", \"composite\", \"bundle\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\t\t\t\treturn jQuery(\".wpmProductId:first\").data(\"id\")\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.viewItemListTriggerTestMode = target => {\n\n\t\tjQuery(target).css({\"position\": \"relative\"})\n\t\tjQuery(target).append(\"<div id=\\\"viewItemListTriggerOverlay\\\"></div>\")\n\t\tjQuery(target).find(\"#viewItemListTriggerOverlay\").css({\n\t\t\t\"z-index\" : \"10\",\n\t\t\t\"display\" : \"block\",\n\t\t\t\"position\" : \"absolute\",\n\t\t\t\"height\" : \"100%\",\n\t\t\t\"top\" : \"0\",\n\t\t\t\"left\" : \"0\",\n\t\t\t\"right\" : \"0\",\n\t\t\t\"opacity\" : wpmDataLayer.viewItemListTrigger.opacity,\n\t\t\t\"background-color\": wpmDataLayer.viewItemListTrigger.backgroundColor,\n\t\t})\n\t}\n\n\twpm.getSearchTermFromUrl = () => {\n\n\t\ttry {\n\t\t\tlet urlParameters = new URLSearchParams(window.location.search)\n\t\t\treturn urlParameters.get(\"s\")\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// we need this to track timeouts for intersection observers\n\tlet ioTimeouts = {}\n\n\twpm.observerCallback = (entries, observer) => {\n\n\t\tentries.forEach((entry) => {\n\n\t\t\ttry {\n\t\t\t\tlet productId\n\n\t\t\t\tlet elementId = jQuery(entry.target).data(\"ioid\")\n\n\t\t\t\t// Get the productId from next element, if wpmProductId is a sibling, like in Gutenberg blocks\n\t\t\t\t// otherwise go search in children, like in regular WC loop items\n\t\t\t\tif (jQuery(entry.target).next(\".wpmProductId\").length) {\n\t\t\t\t\t// console.log('test 1');\n\t\t\t\t\tproductId = jQuery(entry.target).next(\".wpmProductId\").data(\"id\")\n\t\t\t\t} else {\n\t\t\t\t\tproductId = jQuery(entry.target).find(\".wpmProductId\").data(\"id\")\n\t\t\t\t}\n\n\n\t\t\t\tif (!productId) throw Error(\"wpmProductId element not found\")\n\n\t\t\t\tif (entry.isIntersecting) {\n\n\t\t\t\t\tioTimeouts[elementId] = setTimeout(() => {\n\n\t\t\t\t\t\twpm.triggerViewItemList(productId)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) wpm.viewItemListTriggerTestMode(entry.target)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.repeat === false) observer.unobserve(entry.target)\n\t\t\t\t\t}, wpmDataLayer.viewItemListTrigger.timeout)\n\n\t\t\t\t} else {\n\n\t\t\t\t\tclearTimeout(ioTimeouts[elementId])\n\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) jQuery(entry.target).find(\"#viewItemListTriggerOverlay\").remove()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t})\n\t}\n\n\t// fire view_item_list only on products that have become visible\n\tlet io\n\tlet ioid = 0\n\tlet allIoElementsToWatch\n\n\tlet getAllElementsToWatch = () => {\n\n\t\tallIoElementsToWatch = jQuery(\".wpmProductId\")\n\t\t\t.map(function (i, elem) {\n\n\t\t\t\tif (\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"type-product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product-item-inner\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(elem).parent()\n\t\t\t\t} else if (\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"wc-block-grid__product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product-small\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"woocommerce-LoopProduct-link\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(this).prev()\n\t\t\t\t} else if (jQuery(elem).closest(\".product\").length) {\n\t\t\t\t\treturn jQuery(elem).closest(\".product\")\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\twpm.startIntersectionObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// enable view_item_list test mode from browser\n\t\t\tif (wpm.urlHasParameter(\"vildemomode\")) wpmDataLayer.viewItemListTrigger.testMode = true\n\n\t\t\t// set up intersection observer\n\t\t\tio = new IntersectionObserver(wpm.observerCallback, {\n\t\t\t\tthreshold: wpmDataLayer.viewItemListTrigger.threshold,\n\t\t\t})\n\n\t\t\tgetAllElementsToWatch()\n\n\t\t\tallIoElementsToWatch.each((i, elem) => {\n\n\t\t\t\tjQuery(elem[0]).data(\"ioid\", ioid++)\n\n\t\t\t\tio.observe(elem[0])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// watch DOM for new lazy loaded products and add them to the intersection observer\n\twpm.startProductsMutationObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// Pass in the target node, as well as the observer options\n\n\t\t\t// selects the most common parent node\n\t\t\t// https://stackoverflow.com/a/7648323/4688612\n\t\t\tlet productsNode = jQuery(\".wpmProductId:eq(0)\").parents().has(jQuery(\".wpmProductId:eq(1)\").parents()).first()\n\n\t\t\tif (productsNode.length) {\n\t\t\t\tproductsMutationObserver.observe(productsNode[0], {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// Create an observer instance\n\tlet productsMutationObserver = new MutationObserver(mutations => {\n\n\t\tmutations.forEach(mutation => {\n\t\t\tlet newNodes = mutation.addedNodes // DOM NodeList\n\t\t\tif (newNodes !== null) { // If there are new nodes added\n\t\t\t\tlet nodes = jQuery(newNodes) // jQuery set\n\t\t\t\tnodes.each(function () {\n\t\t\t\t\tif (\n\t\t\t\t\t\tjQuery(this).hasClass(\"type-product\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"product-small\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"wc-block-grid__product\")\n\t\t\t\t\t) {\n\t\t\t\t\t\t// check if the node has a child or sibling wpmProductId\n\t\t\t\t\t\t// if yes add it to the intersectionObserver\n\t\t\t\t\t\tif (hasWpmProductIdElement(this)) {\n\t\t\t\t\t\t\tjQuery(this).data(\"ioid\", ioid++)\n\t\t\t\t\t\t\tio.observe(this)\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\n\tlet hasWpmProductIdElement = elem =>\n\t\t!!(jQuery(elem).find(\".wpmProductId\").length ||\n\t\t\tjQuery(elem).siblings(\".wpmProductId\").length)\n\n\twpm.setCookie = (cookieName, cookieValue = \"\", expiryDays = null) => {\n\n\t\tif (expiryDays) {\n\n\t\t\tlet d = new Date()\n\t\t\td.setTime(d.getTime() + (expiryDays * 24 * 60 * 60 * 1000))\n\t\t\tlet expires = \"expires=\" + d.toUTCString()\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";\" + expires + \";path=/\"\n\t\t} else {\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";path=/\"\n\t\t}\n\t}\n\n\twpm.getCookie = cookieName => {\n\n\t\tlet name = cookieName + \"=\"\n\t\tlet decodedCookie = decodeURIComponent(document.cookie)\n\t\tlet ca = decodedCookie.split(\";\")\n\n\t\tfor (let i = 0; i < ca.length; i++) {\n\n\t\t\tlet c = ca[i]\n\n\t\t\twhile (c.charAt(0) == \" \") {\n\t\t\t\tc = c.substring(1)\n\t\t\t}\n\n\t\t\tif (c.indexOf(name) == 0) {\n\t\t\t\treturn c.substring(name.length, c.length)\n\t\t\t}\n\t\t}\n\n\t\treturn \"\"\n\t}\n\n\twpm.deleteCookie = cookieName => {\n\t\twpm.setCookie(cookieName, \"\", -1)\n\t}\n\n\twpm.getWpmSessionData = () => {\n\n\t\tif (window.sessionStorage) {\n\n\t\t\tlet data = window.sessionStorage.getItem(\"_wpm\")\n\n\t\t\tif (data !== null) {\n\t\t\t\treturn JSON.parse(data)\n\t\t\t} else {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t} else {\n\t\t\treturn {}\n\t\t}\n\t}\n\n\twpm.setWpmSessionData = data => {\n\t\tif (window.sessionStorage) {\n\t\t\twindow.sessionStorage.setItem(\"_wpm\", JSON.stringify(data))\n\t\t}\n\t}\n\n\twpm.storeOrderIdOnServer = async (orderKey, source) => {\n\n\t\ttry {\n\n\t\t\tlet response\n\n\t\t\tif (await wpm.isRestEndpointAvailable()) {\n\n\t\t\t\tresponse = await fetch(wpm.root + \"pmw/v1/pixels-fired/\", {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\theaders : {\n\t\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t\t\"X-WP-Nonce\" : wpm.nonce_wp_rest,\n\t\t\t\t\t},\n\t\t\t\t\tbody : JSON.stringify({\n\t\t\t\t\t\t// order_id: orderId,\n\t\t\t\t\t\torder_key: orderKey,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t\t// nonce : wpm.pmw_nonce,\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t\tcache : \"no-cache\",\n\t\t\t\t})\n\n\t\t\t} else {\n\t\t\t\t// save the state in the database\n\n\t\t\t\t// Send the data object with ajax request\n\t\t\t\t// and log success or error using fetch API and url encoded\n\t\t\t\tresponse = await fetch(wpm.ajax_url, {\n\t\t\t\t\tmethod : \"POST\",\n\t\t\t\t\tbody : new URLSearchParams({\n\t\t\t\t\t\taction: \"pmw_purchase_pixels_fired\",\n\t\t\t\t\t\t// order_id: orderId,\n\t\t\t\t\t\torder_key : orderKey,\n\t\t\t\t\t\tsource : source,\n\t\t\t\t\t\tnonce_ajax: wpm.nonce_ajax,\n\t\t\t\t\t}),\n\t\t\t\t\tkeepalive: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst responseJson = await response.json()\n\n\t\t\tif (responseJson.success) {\n\t\t\t\tconsole.log(\"wpm.storeOrderIdOnServer success\")\n\t\t\t} else {\n\t\t\t\tconsole.error(\"wpm.storeOrderIdOnServer error\", responseJson)\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getProductIdByCartItemKeyUrl = url => {\n\n\t\tlet searchParams = new URLSearchParams(url.search)\n\t\tlet cartItemKey = searchParams.get(\"remove_item\")\n\n\t\tlet productId\n\n\t\tif (wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"] === 0) {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"product_id\"]\n\t\t} else {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"]\n\t\t}\n\n\t\treturn productId\n\t}\n\n\twpm.getAddToCartLinkProductIds = () =>\n\t\tjQuery(\"a\").map(function () {\n\t\t\tlet href = jQuery(this).attr(\"href\")\n\n\t\t\tif (href && href.includes(\"?add-to-cart=\")) {\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) return matches[2]\n\t\t\t}\n\t\t}).get()\n\n\twpm.getProductDetailsFormattedForEvent = (productId, quantity = 1) => {\n\n\t\tlet product = {\n\t\t\tid : productId.toString(),\n\t\t\tdyn_r_ids : wpmDataLayer.products[productId].dyn_r_ids,\n\t\t\tname : wpmDataLayer.products[productId].name,\n\t\t\tlist_name : wpmDataLayer.shop.list_name,\n\t\t\tbrand : wpmDataLayer.products[productId].brand,\n\t\t\tcategory : wpmDataLayer.products[productId].category,\n\t\t\tvariant : wpmDataLayer.products[productId].variant,\n\t\t\tlist_position: wpmDataLayer.products[productId].position,\n\t\t\tquantity : quantity,\n\t\t\tprice : wpmDataLayer.products[productId].price,\n\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\tisVariable : wpmDataLayer.products[productId].isVariable,\n\t\t\tisVariation : wpmDataLayer.products[productId].isVariation,\n\t\t\tparentId : wpmDataLayer.products[productId].parentId,\n\t\t}\n\n\t\tif (product.isVariation) product[\"parentId_dyn_r_ids\"] = wpmDataLayer.products[productId].parentId_dyn_r_ids\n\n\t\treturn product\n\t}\n\n\twpm.setReferrerToCookie = () => {\n\n\t\t// can't use session storage as we can't read it from the server\n\t\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\t\t\twpm.setCookie(\"wpmReferrer\", document.referrer)\n\t\t}\n\t}\n\n\twpm.getReferrerFromCookie = () => {\n\n\t\tif (wpm.getCookie(\"wpmReferrer\")) {\n\t\t\treturn wpm.getCookie(\"wpmReferrer\")\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t}\n\n\twpm.getClidFromBrowser = (clidId = \"gclid\") => {\n\n\t\tlet clidCookieId\n\n\t\tclidCookieId = {\n\t\t\tgclid: \"_gcl_aw\",\n\t\t\tdclid: \"_gcl_dc\",\n\t\t}\n\n\t\tif (wpm.getCookie(clidCookieId[clidId])) {\n\n\t\t\tlet clidCookie = wpm.getCookie(clidCookieId[clidId])\n\t\t\tlet matches = clidCookie.match(/(GCL.[\\d]*.)(.*)/)\n\t\t\treturn matches[2]\n\t\t} else {\n\t\t\treturn \"\"\n\t\t}\n\t}\n\n\twpm.getUserAgent = () => navigator.userAgent\n\n\twpm.getViewPort = () => ({\n\t\twidth : Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n\t\theight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0),\n\t})\n\n\n\twpm.version = () => {\n\t\tconsole.log(wpmDataLayer.version)\n\t}\n\n\t/**\n\t * https://api.jquery.com/jquery.getscript/\n\t *\n\t * Switched back to jQuery.ajax as the fetch method on some sites returned a type error\n\t * Possible reasons are:\n\t * * CORS mismatch\n\t * * The user is using an ad blocker\n\t */\n\n\twpm.loadScriptAndCacheIt = url => {\n\n\t\t// Get and load the script using fetch API, if possible from cache, and return it without using eval\n\t\t// return fetch(url, {\n\t\t// \tmethod : \"GET\",\n\t\t// \tcache : \"default\",\n\t\t// \tkeepalive: true,\n\t\t// })\n\t\t// \t.then(response => {\n\t\t// \t\tif (response.ok) {\n\t\t// \t\t\t// console.log(\"response\", response)\n\t\t// \t\t\treturn response.text()\n\t\t// \t\t\t// console.log(\"wpm.loadScriptAndCacheIt success: \" + url)\n\t\t// \t\t} else {\n\t\t// \t\t\tthrow new Error(\"Network response was not ok: \" + url)\n\t\t// \t\t}\n\t\t// \t})\n\t\t// \t.then(script => {\n\t\t// \t\t// Execute the script\n\t\t// \t\t// console.error(\"executing script: \" + script)\n\t\t// \t\teval(script)\n\t\t// \t\t// console.log(\"executed script: \" + script)\n\t\t// \t})\n\t\t// \t.catch(e => {\n\t\t// \t\tconsole.error(e)\n\t\t// \t})\n\n\t\tlet options = {\n\t\t\tdataType: \"script\",\n\t\t\tcache : true,\n\t\t\turl : url,\n\t\t}\n\n\t\treturn jQuery.ajax(options)\n\t}\n\n\twpm.getOrderItemPrice = orderItem => (orderItem.total + orderItem.total_tax) / orderItem.quantity\n\n\twpm.hasLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\treturn data?.loginEventFired\n\t}\n\n\twpm.setLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\tdata[\"loginEventFired\"] = true\n\t\twpm.setWpmSessionData(data)\n\t}\n\n\twpm.pageLoaded = async () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (\"complete\" === document.readyState) return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\twpm.pageReady = () => {\n\t\treturn new Promise(resolve => {\n\t\t\t(function waitForVar() {\n\t\t\t\tif (\"interactive\" === document.readyState || \"complete\" === document.readyState) return resolve()\n\t\t\t\tsetTimeout(waitForVar, 50)\n\t\t\t})()\n\t\t})\n\t}\n\n\twpm.isMiniCartActive = () => {\n\t\tif (window.sessionStorage) {\n\t\t\tfor (const [key, value] of Object.entries(window.sessionStorage)) {\n\t\t\t\tif (key.includes(\"wc_fragments\")) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.doesWooCommerceCartExist = () => document.cookie.includes(\"woocommerce_items_in_cart\")\n\n\twpm.urlHasParameter = parameter => {\n\t\tlet urlParams = new URLSearchParams(window.location.search)\n\t\treturn urlParams.has(parameter)\n\t}\n\n\t// https://stackoverflow.com/a/60606893/4688612\n\twpm.hashAsync = (algo, str) => {\n\t\treturn crypto.subtle.digest(algo, new TextEncoder(\"utf-8\").encode(str)).then(buf => {\n\t\t\treturn Array.prototype.map.call(new Uint8Array(buf), x => ((\"00\" + x.toString(16)).slice(-2))).join(\"\")\n\t\t})\n\t}\n\n\twpm.getCartValue = () => {\n\n\t\tlet value = 0\n\n\t\tif (wpmDataLayer?.cart) {\n\n\t\t\tfor (const key in wpmDataLayer.cart) {\n\t\t\t\t// content_ids.push(wpmDataLayer.products[key].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])\n\n\t\t\t\tlet product = wpmDataLayer.cart[key]\n\n\t\t\t\tvalue += product.quantity * product.price\n\t\t\t}\n\t\t}\n\n\t\treturn value\n\t}\n\n\t/**\n\t * Detect if the current URL contains at least one pattern\n\t *\n\t * @param patterns\n\t * @returns {boolean}\n\t */\n\twpm.doesUrlContainPatterns = patterns => {\n\n\t\tfor (const pattern of patterns) {\n\t\t\tif (new RegExp(pattern).test(window.location.href)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\t/**\n\t * Detect if the current URL contains at least one pattern that is on the tracking exclusion list\n\t *\n\t * https://www.linkedin.com/pulse/how-remove-google-robot-problem-via-gtm-facebook-pixel-hjelpdahl/\n\t * https://www.youtube.com/watch?v=b4I1ePZt8Z0\n\t *\n\t * @returns {boolean}\n\t */\n\twpm.excludeDomainFromTracking = () => {\n\n\t\tlet excludeDomains = [\n\t\t\t\"appspot.com\",\n\t\t\t\"translate.google.com\",\n\t\t]\n\n\t\tif (wpmDataLayer?.general?.excludeDomains) {\n\t\t\texcludeDomains = [...excludeDomains, ...wpmDataLayer.general.excludeDomains]\n\t\t}\n\n\t\t// Abort if URL contains excluded domains\n\t\tif (excludeDomains.some(domain => window.location.href.includes(domain))) {\n\t\t\tconsole.debug(\"Pixel Manager for WooCommerce: Aborted due to excluded domain\")\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\twpm.getRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\n\twpm.pmwConsoleMessage = () => {\n\t\tlet pmwConsoleMessage = \"Pixel Manager for WooCommerce: \"\n\t\tpmwConsoleMessage += wpmDataLayer.version.pro ? \"pro\" : \"free\"\n\t\tpmwConsoleMessage += \" | distro: \" + wpmDataLayer.version.distro\n\t\tif (wpmDataLayer.version.distro === \"fms\" && wpmDataLayer.version.pro) {\n\t\t\tpmwConsoleMessage += \" | active license: \" + (wpmDataLayer.version.eligibleForUpdates ? \"yes\" : \"no\")\n\t\t}\n\t\tpmwConsoleMessage += \" | version: \" + wpmDataLayer.version.number\n\n\t\tconsole.log(pmwConsoleMessage)\n\t}\n\n\twpm.canLoadPremiumFeatures = () => {\n\t\treturn (wpmDataLayer.version.distro === \"fms\" && wpmDataLayer.version.pro && wpmDataLayer.version.eligibleForUpdates) || wpmDataLayer.version.distro === \"wcm\"\n\t}\n\n\tlet jQueryReadyFired = false\n\n\twpm.triggerDomReadyEvent = () => {\n\t\tif (jQueryReadyFired === false) jQuery(document).trigger(\"pmw:ready\")\n\t\tjQueryReadyFired = true\n\t}\n\n\tjQuery(document).on(\"ready\", () => {\n\t\twpm.triggerDomReadyEvent()\n\t})\n\n\tdocument.addEventListener(\"DOMContentLoaded\", () => {\n\t\twpm.triggerDomReadyEvent()\n\t})\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load all WPM functions\n *\n * Ignore event listeners. They need to be loaded after\n * we made sure that jQuery has been loaded.\n */\n\nrequire(\"./functions\")\nrequire(\"./cookie_consent\")\nrequire(\"./ip_check\")\n\n// #if process.env.TIER === 'premium'\n// if (wpm.canLoadPremiumFeatures()) {\n// \trequire(\"./functions_premium\")\n// }\n// #endif\n","(function (wpm, $, undefined) {\n\n\twpm.jQueryExists = async () => new Promise(resolve => {\n\n\t\t(function waitForjQuery() {\n\t\t\tif (typeof jQuery !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForjQuery, 100)\n\t\t})()\n\t})\n\n\twpm.wpmDataLayerExists = async () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (typeof wpmDataLayer !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * IP Check\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.ipCheck = async () => {\n\n\t\tif (window.sessionStorage && sessionStorage.getItem(\"pmw_ip_valid\")) {\n\t\t\treturn !!JSON.parse(sessionStorage.getItem(\"pmw_ip_valid\"))\n\t\t}\n\n\t\t// Cloudflare takes approx. 70ms to respond\n\t\tconst response = await fetch(\"https://www.cloudflare.com/cdn-cgi/trace\")\n\t\tlet data = await response.text()\n\n\t\t// Convert key-value pairs to JSON\n\t\t// https://stackoverflow.com/a/39284735/452587\n\t\tdata = data\n\t\t\t.trim()\n\t\t\t.split(\"\\n\")\n\t\t\t.reduce((obj, pair) => {\n\t\t\t\tpair = pair.split(\"=\")\n\t\t\t\treturn obj[pair[0]] = pair[1], obj\n\t\t\t}, {})\n\n\t\tif (isOnBlacklist(data.ip)) {\n\t\t\tif (window.sessionStorage) window.sessionStorage.setItem(\"pmw_ip_valid\", JSON.stringify(false))\n\t\t\treturn false\n\t\t}\n\n\t\tif (window.sessionStorage) window.sessionStorage.setItem(\"pmw_ip_valid\", JSON.stringify(true))\n\t\treturn true\n\t}\n\n\tconst isOnBlacklist = ip => {\n\n\t\tconst {isInSubnet} = require(\"is-in-subnet\")\n\n\t\tfor (const ipName of getBlacklist()) {\n\n\t\t\tif (isCidr(ipName)) {\n\t\t\t\ttry {\n\t\t\t\t\tif (isInSubnet(ip, ipName)) return true\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (ip === ipName) return true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\tconst isCidr = ipName => {\n\n\t\tconst {isRange} = require(\"range_check\")\n\n\t\treturn isRange(ipName)\n\t}\n\n\tconst getBlacklist = () => {\n\n\t\tconst blacklist = [\n\t\t\t// \"91.190.12.52/32\", // for testing\n\t\t\t// \"91.190.12.52\", // for testing\n\t\t]\n\n\t\tconst google = [\n\t\t\t\"2001:4860:4801:10::/64\",\n\t\t\t\"2001:4860:4801:11::/64\",\n\t\t\t\"2001:4860:4801:12::/64\",\n\t\t\t\"2001:4860:4801:13::/64\",\n\t\t\t\"2001:4860:4801:14::/64\",\n\t\t\t\"2001:4860:4801:15::/64\",\n\t\t\t\"2001:4860:4801:16::/64\",\n\t\t\t\"2001:4860:4801:17::/64\",\n\t\t\t\"2001:4860:4801:18::/64\",\n\t\t\t\"2001:4860:4801:19::/64\",\n\t\t\t\"2001:4860:4801:1a::/64\",\n\t\t\t\"2001:4860:4801:1b::/64\",\n\t\t\t\"2001:4860:4801:20::/64\",\n\t\t\t\"2001:4860:4801:21::/64\",\n\t\t\t\"2001:4860:4801:22::/64\",\n\t\t\t\"2001:4860:4801:23::/64\",\n\t\t\t\"2001:4860:4801:24::/64\",\n\t\t\t\"2001:4860:4801:25::/64\",\n\t\t\t\"2001:4860:4801:26::/64\",\n\t\t\t\"2001:4860:4801:27::/64\",\n\t\t\t\"2001:4860:4801:28::/64\",\n\t\t\t\"2001:4860:4801:29::/64\",\n\t\t\t\"2001:4860:4801:2::/64\",\n\t\t\t\"2001:4860:4801:2a::/64\",\n\t\t\t\"2001:4860:4801:2b::/64\",\n\t\t\t\"2001:4860:4801:2c::/64\",\n\t\t\t\"2001:4860:4801:2d::/64\",\n\t\t\t\"2001:4860:4801:2e::/64\",\n\t\t\t\"2001:4860:4801:2f::/64\",\n\t\t\t\"2001:4860:4801:30::/64\",\n\t\t\t\"2001:4860:4801:31::/64\",\n\t\t\t\"2001:4860:4801:32::/64\",\n\t\t\t\"2001:4860:4801:33::/64\",\n\t\t\t\"2001:4860:4801:34::/64\",\n\t\t\t\"2001:4860:4801:35::/64\",\n\t\t\t\"2001:4860:4801:36::/64\",\n\t\t\t\"2001:4860:4801:37::/64\",\n\t\t\t\"2001:4860:4801:38::/64\",\n\t\t\t\"2001:4860:4801:39::/64\",\n\t\t\t\"2001:4860:4801:3::/64\",\n\t\t\t\"2001:4860:4801:3a::/64\",\n\t\t\t\"2001:4860:4801:3b::/64\",\n\t\t\t\"2001:4860:4801:3c::/64\",\n\t\t\t\"2001:4860:4801:3d::/64\",\n\t\t\t\"2001:4860:4801:3e::/64\",\n\t\t\t\"2001:4860:4801:40::/64\",\n\t\t\t\"2001:4860:4801:41::/64\",\n\t\t\t\"2001:4860:4801:42::/64\",\n\t\t\t\"2001:4860:4801:43::/64\",\n\t\t\t\"2001:4860:4801:44::/64\",\n\t\t\t\"2001:4860:4801:45::/64\",\n\t\t\t\"2001:4860:4801:46::/64\",\n\t\t\t\"2001:4860:4801:47::/64\",\n\t\t\t\"2001:4860:4801:48::/64\",\n\t\t\t\"2001:4860:4801:49::/64\",\n\t\t\t\"2001:4860:4801:4a::/64\",\n\t\t\t\"2001:4860:4801:50::/64\",\n\t\t\t\"2001:4860:4801:51::/64\",\n\t\t\t\"2001:4860:4801:53::/64\",\n\t\t\t\"2001:4860:4801:60::/64\",\n\t\t\t\"2001:4860:4801:61::/64\",\n\t\t\t\"2001:4860:4801:62::/64\",\n\t\t\t\"2001:4860:4801:63::/64\",\n\t\t\t\"2001:4860:4801:64::/64\",\n\t\t\t\"2001:4860:4801:65::/64\",\n\t\t\t\"2001:4860:4801:66::/64\",\n\t\t\t\"2001:4860:4801:67::/64\",\n\t\t\t\"2001:4860:4801:68::/64\",\n\t\t\t\"2001:4860:4801:69::/64\",\n\t\t\t\"2001:4860:4801:6a::/64\",\n\t\t\t\"2001:4860:4801:6b::/64\",\n\t\t\t\"2001:4860:4801:6c::/64\",\n\t\t\t\"2001:4860:4801:6d::/64\",\n\t\t\t\"2001:4860:4801:6e::/64\",\n\t\t\t\"2001:4860:4801:6f::/64\",\n\t\t\t\"2001:4860:4801:70::/64\",\n\t\t\t\"2001:4860:4801:71::/64\",\n\t\t\t\"2001:4860:4801:72::/64\",\n\t\t\t\"2001:4860:4801:73::/64\",\n\t\t\t\"2001:4860:4801:74::/64\",\n\t\t\t\"2001:4860:4801:75::/64\",\n\t\t\t\"2001:4860:4801:76::/64\",\n\t\t\t\"2001:4860:4801:77::/64\",\n\t\t\t\"2001:4860:4801:80::/64\",\n\t\t\t\"2001:4860:4801:81::/64\",\n\t\t\t\"2001:4860:4801:82::/64\",\n\t\t\t\"2001:4860:4801:83::/64\",\n\t\t\t\"2001:4860:4801:84::/64\",\n\t\t\t\"2001:4860:4801:85::/64\",\n\t\t\t\"2001:4860:4801:86::/64\",\n\t\t\t\"2001:4860:4801:90::/64\",\n\t\t\t\"2001:4860:4801:91::/64\",\n\t\t\t\"2001:4860:4801:92::/64\",\n\t\t\t\"2001:4860:4801::/64\",\n\t\t\t\"2001:4860:4801:c::/64\",\n\t\t\t\"2001:4860:4801:f::/64\",\n\t\t\t\"34.100.182.96/28\",\n\t\t\t\"34.101.50.144/28\",\n\t\t\t\"34.118.254.0/28\",\n\t\t\t\"34.118.66.0/28\",\n\t\t\t\"34.126.178.96/28\",\n\t\t\t\"34.146.150.144/28\",\n\t\t\t\"34.147.110.144/28\",\n\t\t\t\"34.151.74.144/28\",\n\t\t\t\"34.152.50.64/28\",\n\t\t\t\"34.154.114.144/28\",\n\t\t\t\"34.155.98.32/28\",\n\t\t\t\"34.165.18.176/28\",\n\t\t\t\"34.175.160.64/28\",\n\t\t\t\"34.176.130.16/28\",\n\t\t\t\"34.64.82.64/28\",\n\t\t\t\"34.65.242.112/28\",\n\t\t\t\"34.80.50.80/28\",\n\t\t\t\"34.88.194.0/28\",\n\t\t\t\"34.89.10.80/28\",\n\t\t\t\"34.89.198.80/28\",\n\t\t\t\"34.96.162.48/28\",\n\t\t\t\"35.247.243.240/28\",\n\t\t\t\"66.249.64.0/27\",\n\t\t\t\"66.249.64.128/27\",\n\t\t\t\"66.249.64.160/27\",\n\t\t\t\"66.249.64.192/27\",\n\t\t\t\"66.249.64.224/27\",\n\t\t\t\"66.249.64.32/27\",\n\t\t\t\"66.249.64.64/27\",\n\t\t\t\"66.249.64.96/27\",\n\t\t\t\"66.249.65.0/27\",\n\t\t\t\"66.249.65.128/27\",\n\t\t\t\"66.249.65.160/27\",\n\t\t\t\"66.249.65.192/27\",\n\t\t\t\"66.249.65.224/27\",\n\t\t\t\"66.249.65.32/27\",\n\t\t\t\"66.249.65.64/27\",\n\t\t\t\"66.249.65.96/27\",\n\t\t\t\"66.249.66.0/27\",\n\t\t\t\"66.249.66.128/27\",\n\t\t\t\"66.249.66.192/27\",\n\t\t\t\"66.249.66.32/27\",\n\t\t\t\"66.249.66.64/27\",\n\t\t\t\"66.249.68.0/27\",\n\t\t\t\"66.249.68.32/27\",\n\t\t\t\"66.249.68.64/27\",\n\t\t\t\"66.249.69.0/27\",\n\t\t\t\"66.249.69.128/27\",\n\t\t\t\"66.249.69.160/27\",\n\t\t\t\"66.249.69.192/27\",\n\t\t\t\"66.249.69.224/27\",\n\t\t\t\"66.249.69.32/27\",\n\t\t\t\"66.249.69.64/27\",\n\t\t\t\"66.249.69.96/27\",\n\t\t\t\"66.249.70.0/27\",\n\t\t\t\"66.249.70.128/27\",\n\t\t\t\"66.249.70.160/27\",\n\t\t\t\"66.249.70.192/27\",\n\t\t\t\"66.249.70.224/27\",\n\t\t\t\"66.249.70.32/27\",\n\t\t\t\"66.249.70.64/27\",\n\t\t\t\"66.249.70.96/27\",\n\t\t\t\"66.249.71.0/27\",\n\t\t\t\"66.249.71.128/27\",\n\t\t\t\"66.249.71.160/27\",\n\t\t\t\"66.249.71.192/27\",\n\t\t\t\"66.249.71.32/27\",\n\t\t\t\"66.249.71.64/27\",\n\t\t\t\"66.249.71.96/27\",\n\t\t\t\"66.249.72.0/27\",\n\t\t\t\"66.249.72.128/27\",\n\t\t\t\"66.249.72.160/27\",\n\t\t\t\"66.249.72.192/27\",\n\t\t\t\"66.249.72.224/27\",\n\t\t\t\"66.249.72.32/27\",\n\t\t\t\"66.249.72.64/27\",\n\t\t\t\"66.249.72.96/27\",\n\t\t\t\"66.249.73.0/27\",\n\t\t\t\"66.249.73.128/27\",\n\t\t\t\"66.249.73.160/27\",\n\t\t\t\"66.249.73.192/27\",\n\t\t\t\"66.249.73.224/27\",\n\t\t\t\"66.249.73.32/27\",\n\t\t\t\"66.249.73.64/27\",\n\t\t\t\"66.249.73.96/27\",\n\t\t\t\"66.249.74.0/27\",\n\t\t\t\"66.249.74.32/27\",\n\t\t\t\"66.249.74.64/27\",\n\t\t\t\"66.249.74.96/27\",\n\t\t\t\"66.249.75.0/27\",\n\t\t\t\"66.249.75.128/27\",\n\t\t\t\"66.249.75.160/27\",\n\t\t\t\"66.249.75.192/27\",\n\t\t\t\"66.249.75.224/27\",\n\t\t\t\"66.249.75.32/27\",\n\t\t\t\"66.249.75.64/27\",\n\t\t\t\"66.249.75.96/27\",\n\t\t\t\"66.249.76.0/27\",\n\t\t\t\"66.249.76.128/27\",\n\t\t\t\"66.249.76.160/27\",\n\t\t\t\"66.249.76.192/27\",\n\t\t\t\"66.249.76.224/27\",\n\t\t\t\"66.249.76.32/27\",\n\t\t\t\"66.249.76.64/27\",\n\t\t\t\"66.249.76.96/27\",\n\t\t\t\"66.249.77.0/27\",\n\t\t\t\"66.249.77.128/27\",\n\t\t\t\"66.249.77.32/27\",\n\t\t\t\"66.249.77.64/27\",\n\t\t\t\"66.249.77.96/27\",\n\t\t\t\"66.249.79.0/27\",\n\t\t\t\"66.249.79.128/27\",\n\t\t\t\"66.249.79.160/27\",\n\t\t\t\"66.249.79.192/27\",\n\t\t\t\"66.249.79.224/27\",\n\t\t\t\"66.249.79.32/27\",\n\t\t\t\"66.249.79.64/27\",\n\t\t\t\"66.249.79.96/27\",\n\t\t]\n\n\t\tconst facebook = [\n\t\t\t\"69.63.176.0/20\",\n\t\t\t\"66.220.144.0/20\",\n\t\t\t\"66.220.144.0/21\",\n\t\t\t\"69.63.184.0/21\",\n\t\t\t\"69.63.176.0/21\",\n\t\t\t\"74.119.76.0/22\",\n\t\t\t\"69.171.255.0/24\",\n\t\t\t\"173.252.64.0/18\",\n\t\t\t\"69.171.224.0/19\",\n\t\t\t\"69.171.224.0/20\",\n\t\t\t\"103.4.96.0/22\",\n\t\t\t\"173.252.64.0/19\",\n\t\t\t\"31.13.64.0/18\",\n\t\t\t\"31.13.24.0/21\",\n\t\t\t\"66.220.152.0/21\",\n\t\t\t\"69.171.239.0/24\",\n\t\t\t\"69.171.240.0/20\",\n\t\t\t\"31.13.64.0/19\",\n\t\t\t\"31.13.64.0/24\",\n\t\t\t\"31.13.65.0/24\",\n\t\t\t\"31.13.67.0/24\",\n\t\t\t\"31.13.68.0/24\",\n\t\t\t\"31.13.69.0/24\",\n\t\t\t\"31.13.70.0/24\",\n\t\t\t\"31.13.71.0/24\",\n\t\t\t\"31.13.72.0/24\",\n\t\t\t\"31.13.73.0/24\",\n\t\t\t\"31.13.74.0/24\",\n\t\t\t\"31.13.75.0/24\",\n\t\t\t\"31.13.76.0/24\",\n\t\t\t\"31.13.77.0/24\",\n\t\t\t\"31.13.96.0/19\",\n\t\t\t\"31.13.66.0/24\",\n\t\t\t\"173.252.96.0/19\",\n\t\t\t\"69.63.178.0/24\",\n\t\t\t\"31.13.78.0/24\",\n\t\t\t\"31.13.79.0/24\",\n\t\t\t\"31.13.80.0/24\",\n\t\t\t\"31.13.82.0/24\",\n\t\t\t\"31.13.83.0/24\",\n\t\t\t\"31.13.84.0/24\",\n\t\t\t\"31.13.85.0/24\",\n\t\t\t\"31.13.86.0/24\",\n\t\t\t\"31.13.87.0/24\",\n\t\t\t\"31.13.88.0/24\",\n\t\t\t\"31.13.89.0/24\",\n\t\t\t\"31.13.91.0/24\",\n\t\t\t\"31.13.92.0/24\",\n\t\t\t\"31.13.93.0/24\",\n\t\t\t\"31.13.94.0/24\",\n\t\t\t\"31.13.95.0/24\",\n\t\t\t\"31.13.81.0/24\",\n\t\t\t\"179.60.192.0/22\",\n\t\t\t\"179.60.192.0/24\",\n\t\t\t\"179.60.193.0/24\",\n\t\t\t\"179.60.194.0/24\",\n\t\t\t\"179.60.195.0/24\",\n\t\t\t\"185.60.216.0/22\",\n\t\t\t\"45.64.40.0/22\",\n\t\t\t\"185.60.216.0/24\",\n\t\t\t\"185.60.217.0/24\",\n\t\t\t\"185.60.218.0/24\",\n\t\t\t\"185.60.219.0/24\",\n\t\t\t\"129.134.0.0/16\",\n\t\t\t\"157.240.0.0/16\",\n\t\t\t\"157.240.8.0/24\",\n\t\t\t\"157.240.0.0/24\",\n\t\t\t\"157.240.1.0/24\",\n\t\t\t\"157.240.2.0/24\",\n\t\t\t\"157.240.3.0/24\",\n\t\t\t\"157.240.5.0/24\",\n\t\t\t\"157.240.6.0/24\",\n\t\t\t\"157.240.7.0/24\",\n\t\t\t\"157.240.9.0/24\",\n\t\t\t\"157.240.10.0/24\",\n\t\t\t\"157.240.16.0/24\",\n\t\t\t\"157.240.19.0/24\",\n\t\t\t\"157.240.11.0/24\",\n\t\t\t\"157.240.12.0/24\",\n\t\t\t\"157.240.13.0/24\",\n\t\t\t\"157.240.14.0/24\",\n\t\t\t\"157.240.15.0/24\",\n\t\t\t\"157.240.17.0/24\",\n\t\t\t\"157.240.18.0/24\",\n\t\t\t\"157.240.20.0/24\",\n\t\t\t\"157.240.21.0/24\",\n\t\t\t\"157.240.22.0/24\",\n\t\t\t\"157.240.23.0/24\",\n\t\t\t\"157.240.0.0/17\",\n\t\t\t\"69.171.250.0/24\",\n\t\t\t\"204.15.20.0/22\",\n\t\t\t\"157.240.192.0/24\",\n\t\t\t\"157.240.198.0/24\",\n\t\t\t\"102.132.96.0/20\",\n\t\t\t\"102.132.96.0/24\",\n\t\t\t\"102.132.97.0/24\",\n\t\t\t\"157.240.26.0/24\",\n\t\t\t\"157.240.27.0/24\",\n\t\t\t\"157.240.28.0/24\",\n\t\t\t\"157.240.29.0/24\",\n\t\t\t\"157.240.30.0/24\",\n\t\t\t\"129.134.28.0/24\",\n\t\t\t\"129.134.29.0/24\",\n\t\t\t\"157.240.208.0/24\",\n\t\t\t\"157.240.193.0/24\",\n\t\t\t\"157.240.194.0/24\",\n\t\t\t\"157.240.195.0/24\",\n\t\t\t\"157.240.197.0/24\",\n\t\t\t\"157.240.196.0/24\",\n\t\t\t\"157.240.200.0/24\",\n\t\t\t\"157.240.201.0/24\",\n\t\t\t\"157.240.203.0/24\",\n\t\t\t\"157.240.204.0/24\",\n\t\t\t\"157.240.205.0/24\",\n\t\t\t\"157.240.206.0/24\",\n\t\t\t\"157.240.207.0/24\",\n\t\t\t\"157.240.209.0/24\",\n\t\t\t\"157.240.210.0/24\",\n\t\t\t\"157.240.211.0/24\",\n\t\t\t\"157.240.212.0/24\",\n\t\t\t\"157.240.213.0/24\",\n\t\t\t\"157.240.214.0/24\",\n\t\t\t\"157.240.215.0/24\",\n\t\t\t\"157.240.216.0/24\",\n\t\t\t\"157.240.222.0/24\",\n\t\t\t\"129.134.30.0/24\",\n\t\t\t\"129.134.31.0/24\",\n\t\t\t\"129.134.30.0/23\",\n\t\t\t\"129.134.25.0/24\",\n\t\t\t\"129.134.26.0/24\",\n\t\t\t\"129.134.27.0/24\",\n\t\t\t\"102.132.99.0/24\",\n\t\t\t\"102.132.101.0/24\",\n\t\t\t\"129.134.64.0/24\",\n\t\t\t\"129.134.65.0/24\",\n\t\t\t\"129.134.66.0/24\",\n\t\t\t\"129.134.67.0/24\",\n\t\t\t\"157.240.219.0/24\",\n\t\t\t\"157.240.217.0/24\",\n\t\t\t\"157.240.218.0/24\",\n\t\t\t\"157.240.199.0/24\",\n\t\t\t\"129.134.127.0/24\",\n\t\t\t\"157.240.223.0/24\",\n\t\t\t\"157.240.192.0/18\",\n\t\t\t\"157.240.221.0/24\",\n\t\t\t\"157.240.220.0/24\",\n\t\t\t\"173.252.88.0/21\",\n\t\t\t\"129.134.68.0/24\",\n\t\t\t\"129.134.69.0/24\",\n\t\t\t\"129.134.70.0/24\",\n\t\t\t\"157.240.24.0/24\",\n\t\t\t\"157.240.25.0/24\",\n\t\t\t\"102.132.100.0/24\",\n\t\t\t\"157.240.31.0/24\",\n\t\t\t\"157.240.224.0/24\",\n\t\t\t\"129.134.71.0/24\",\n\t\t\t\"157.240.225.0/24\",\n\t\t\t\"157.240.226.0/24\",\n\t\t\t\"157.240.227.0/24\",\n\t\t\t\"129.134.0.0/17\",\n\t\t\t\"129.134.72.0/24\",\n\t\t\t\"129.134.73.0/24\",\n\t\t\t\"129.134.74.0/24\",\n\t\t\t\"185.89.218.0/24\",\n\t\t\t\"185.89.219.0/24\",\n\t\t\t\"185.89.218.0/23\",\n\t\t\t\"157.240.228.0/24\",\n\t\t\t\"157.240.229.0/24\",\n\t\t\t\"129.134.76.0/24\",\n\t\t\t\"129.134.75.0/24\",\n\t\t\t\"157.240.239.0/24\",\n\t\t\t\"157.240.240.0/24\",\n\t\t\t\"157.240.241.0/24\",\n\t\t\t\"157.240.231.0/24\",\n\t\t\t\"157.240.232.0/24\",\n\t\t\t\"157.240.233.0/24\",\n\t\t\t\"157.240.234.0/24\",\n\t\t\t\"157.240.235.0/24\",\n\t\t\t\"157.240.236.0/24\",\n\t\t\t\"129.134.77.0/24\",\n\t\t\t\"129.134.78.0/24\",\n\t\t\t\"129.134.79.0/24\",\n\t\t\t\"157.240.237.0/24\",\n\t\t\t\"157.240.238.0/24\",\n\t\t\t\"157.240.242.0/24\",\n\t\t\t\"157.240.243.0/24\",\n\t\t\t\"129.134.112.0/24\",\n\t\t\t\"157.240.100.0/24\",\n\t\t\t\"157.240.98.0/24\",\n\t\t\t\"157.240.96.0/24\",\n\t\t\t\"157.240.99.0/24\",\n\t\t\t\"157.240.101.0/24\",\n\t\t\t\"129.134.113.0/24\",\n\t\t\t\"129.134.114.0/24\",\n\t\t\t\"157.240.97.0/24\",\n\t\t\t\"129.134.115.0/24\",\n\t\t\t\"157.240.244.0/24\",\n\t\t\t\"157.240.245.0/24\",\n\t\t\t\"157.240.246.0/24\",\n\t\t\t\"157.240.247.0/24\",\n\t\t\t\"157.240.248.0/24\",\n\t\t\t\"157.240.249.0/24\",\n\t\t\t\"157.240.250.0/24\",\n\t\t\t\"163.70.128.0/17\",\n\t\t\t\"163.77.128.0/17\",\n\t\t\t\"157.240.251.0/24\",\n\t\t\t\"157.240.252.0/24\",\n\t\t\t\"157.240.253.0/24\",\n\t\t\t\"147.75.208.0/20\",\n\t\t\t\"157.240.254.0/24\",\n\t\t\t\"185.89.219.0/24\",\n\t\t\t\"185.89.218.0/24\",\n\t\t\t\"185.89.218.0/23\",\n\t\t\t\"185.89.216.0/22\",\n\t\t\t\"147.75.208.0/20\",\n\t\t\t\"204.15.20.0/22\",\n\t\t\t\"69.63.176.0/20\",\n\t\t\t\"69.63.176.0/21\",\n\t\t\t\"69.63.184.0/21\",\n\t\t\t\"66.220.144.0/20\",\n\t\t\t\"69.63.176.0/20\",\n\t\t\t\"2620:0:1c00::/40\",\n\t\t\t\"2a03:2880::/32\",\n\t\t\t\"2a03:2880:fffe::/48\",\n\t\t\t\"2a03:2880:ffff::/48\",\n\t\t\t\"2620:0:1cff::/48\",\n\t\t\t\"2a03:2880:f001::/48\",\n\t\t\t\"2a03:2880:f003::/48\",\n\t\t\t\"2a03:2880:f004::/48\",\n\t\t\t\"2a03:2880:f005::/48\",\n\t\t\t\"2a03:2880:f006::/48\",\n\t\t\t\"2a03:2880:f007::/48\",\n\t\t\t\"2a03:2880:f008::/48\",\n\t\t\t\"2a03:2880:f00a::/48\",\n\t\t\t\"2a03:2880:f00c::/48\",\n\t\t\t\"2a03:2880:f00d::/48\",\n\t\t\t\"2a03:2880:f00e::/48\",\n\t\t\t\"2a03:2880:f00f::/48\",\n\t\t\t\"2a03:2880:f010::/48\",\n\t\t\t\"2a03:2880:f011::/48\",\n\t\t\t\"2a03:2880:f012::/48\",\n\t\t\t\"2a03:2880:f013::/48\",\n\t\t\t\"2a03:2880:f016::/48\",\n\t\t\t\"2a03:2880:f017::/48\",\n\t\t\t\"2a03:2880:f019::/48\",\n\t\t\t\"2a03:2880:f01b::/48\",\n\t\t\t\"2a03:2880:f01c::/48\",\n\t\t\t\"2a03:2880:f01f::/48\",\n\t\t\t\"2a03:2880:1000::/36\",\n\t\t\t\"2a03:2880:2000::/36\",\n\t\t\t\"2a03:2880:3000::/36\",\n\t\t\t\"2a03:2880:4000::/36\",\n\t\t\t\"2a03:2880:5000::/36\",\n\t\t\t\"2a03:2880:6000::/36\",\n\t\t\t\"2a03:2880:7000::/36\",\n\t\t\t\"2a03:2880:f021::/48\",\n\t\t\t\"2a03:2880:f023::/48\",\n\t\t\t\"2a03:2880:f024::/48\",\n\t\t\t\"2a03:2880:f027::/48\",\n\t\t\t\"2a03:2880:f028::/48\",\n\t\t\t\"2a03:2880:f029::/48\",\n\t\t\t\"2a03:2880:f02b::/48\",\n\t\t\t\"2a03:2880:f02c::/48\",\n\t\t\t\"2a03:2880:f02d::/48\",\n\t\t\t\"2a03:2880:f02e::/48\",\n\t\t\t\"2a03:2880:f02f::/48\",\n\t\t\t\"2a03:2880:f030::/48\",\n\t\t\t\"2a03:2880:f031::/48\",\n\t\t\t\"2a03:2880:f032::/48\",\n\t\t\t\"2a03:2880:f033::/48\",\n\t\t\t\"2a03:2880:f034::/48\",\n\t\t\t\"2a03:2880:f035::/48\",\n\t\t\t\"2a03:2880:f036::/48\",\n\t\t\t\"2a03:2880:f037::/48\",\n\t\t\t\"2a03:2880:f038::/48\",\n\t\t\t\"2a03:2880:f03a::/48\",\n\t\t\t\"2a03:2880:f03b::/48\",\n\t\t\t\"2a03:2880:f03d::/48\",\n\t\t\t\"2a03:2880:f03e::/48\",\n\t\t\t\"2a03:2880:f03f::/48\",\n\t\t\t\"2401:db00::/32\",\n\t\t\t\"2a03:2880::/36\",\n\t\t\t\"2a03:2880:f101::/48\",\n\t\t\t\"2a03:2880:f201::/48\",\n\t\t\t\"2a03:2880:f103::/48\",\n\t\t\t\"2a03:2880:f203::/48\",\n\t\t\t\"2a03:2880:f104::/48\",\n\t\t\t\"2a03:2880:f204::/48\",\n\t\t\t\"2a03:2880:f107::/48\",\n\t\t\t\"2a03:2880:f207::/48\",\n\t\t\t\"2a03:2880:f108::/48\",\n\t\t\t\"2a03:2880:f208::/48\",\n\t\t\t\"2a03:2880:f10a::/48\",\n\t\t\t\"2a03:2880:f20a::/48\",\n\t\t\t\"2a03:2880:f10d::/48\",\n\t\t\t\"2a03:2880:f20d::/48\",\n\t\t\t\"2a03:2880:f10e::/48\",\n\t\t\t\"2a03:2880:f20e::/48\",\n\t\t\t\"2a03:2880:f10f::/48\",\n\t\t\t\"2a03:2880:f20f::/48\",\n\t\t\t\"2a03:2880:f110::/48\",\n\t\t\t\"2a03:2880:f210::/48\",\n\t\t\t\"2a03:2880:f111::/48\",\n\t\t\t\"2a03:2880:f211::/48\",\n\t\t\t\"2a03:2880:f112::/48\",\n\t\t\t\"2a03:2880:f212::/48\",\n\t\t\t\"2a03:2880:f116::/48\",\n\t\t\t\"2a03:2880:f216::/48\",\n\t\t\t\"2a03:2880:f117::/48\",\n\t\t\t\"2a03:2880:f217::/48\",\n\t\t\t\"2a03:2880:f119::/48\",\n\t\t\t\"2a03:2880:f219::/48\",\n\t\t\t\"2a03:2880:f11f::/48\",\n\t\t\t\"2a03:2880:f21f::/48\",\n\t\t\t\"2a03:2880:f121::/48\",\n\t\t\t\"2a03:2880:f221::/48\",\n\t\t\t\"2a03:2880:f123::/48\",\n\t\t\t\"2a03:2880:f223::/48\",\n\t\t\t\"2a03:2880:f10c::/48\",\n\t\t\t\"2a03:2880:f20c::/48\",\n\t\t\t\"2a03:2880:f105::/48\",\n\t\t\t\"2a03:2880:f205::/48\",\n\t\t\t\"2a03:2880:f106::/48\",\n\t\t\t\"2a03:2880:f206::/48\",\n\t\t\t\"2a03:2880:f11b::/48\",\n\t\t\t\"2a03:2880:f21b::/48\",\n\t\t\t\"2a03:2880:f113::/48\",\n\t\t\t\"2a03:2880:f213::/48\",\n\t\t\t\"2a03:2880:f11c::/48\",\n\t\t\t\"2a03:2880:f21c::/48\",\n\t\t\t\"2a03:2880:f128::/48\",\n\t\t\t\"2a03:2880:f228::/48\",\n\t\t\t\"2a03:2880:f02a::/48\",\n\t\t\t\"2a03:2880:f12a::/48\",\n\t\t\t\"2a03:2880:f22a::/48\",\n\t\t\t\"2a03:2880:f12f::/48\",\n\t\t\t\"2a03:2880:f22f::/48\",\n\t\t\t\"2a03:2880:f124::/48\",\n\t\t\t\"2a03:2880:f127::/48\",\n\t\t\t\"2a03:2880:f129::/48\",\n\t\t\t\"2a03:2880:f12b::/48\",\n\t\t\t\"2a03:2880:f12c::/48\",\n\t\t\t\"2a03:2880:f12d::/48\",\n\t\t\t\"2a03:2880:f12e::/48\",\n\t\t\t\"2a03:2880:f130::/48\",\n\t\t\t\"2a03:2880:f131::/48\",\n\t\t\t\"2a03:2880:f132::/48\",\n\t\t\t\"2a03:2880:f133::/48\",\n\t\t\t\"2a03:2880:f134::/48\",\n\t\t\t\"2a03:2880:f135::/48\",\n\t\t\t\"2a03:2880:f136::/48\",\n\t\t\t\"2a03:2880:f137::/48\",\n\t\t\t\"2a03:2880:f138::/48\",\n\t\t\t\"2a03:2880:f13a::/48\",\n\t\t\t\"2a03:2880:f13b::/48\",\n\t\t\t\"2a03:2880:f13d::/48\",\n\t\t\t\"2a03:2880:f13e::/48\",\n\t\t\t\"2a03:2880:f13f::/48\",\n\t\t\t\"2a03:2880:f224::/48\",\n\t\t\t\"2a03:2880:f227::/48\",\n\t\t\t\"2a03:2880:f229::/48\",\n\t\t\t\"2a03:2880:f22b::/48\",\n\t\t\t\"2a03:2880:f22c::/48\",\n\t\t\t\"2a03:2880:f22d::/48\",\n\t\t\t\"2a03:2880:f22e::/48\",\n\t\t\t\"2a03:2880:f230::/48\",\n\t\t\t\"2a03:2880:f231::/48\",\n\t\t\t\"2a03:2880:f232::/48\",\n\t\t\t\"2a03:2880:f233::/48\",\n\t\t\t\"2a03:2880:f234::/48\",\n\t\t\t\"2a03:2880:f235::/48\",\n\t\t\t\"2a03:2880:f236::/48\",\n\t\t\t\"2a03:2880:f237::/48\",\n\t\t\t\"2a03:2880:f238::/48\",\n\t\t\t\"2a03:2880:f23a::/48\",\n\t\t\t\"2a03:2880:f23b::/48\",\n\t\t\t\"2a03:2880:f23d::/48\",\n\t\t\t\"2a03:2880:f23e::/48\",\n\t\t\t\"2a03:2880:f23f::/48\",\n\t\t\t\"2a03:2880:f0ff::/48\",\n\t\t\t\"2a03:2880:f1ff::/48\",\n\t\t\t\"2a03:2880:f2ff::/48\",\n\t\t\t\"2a03:2880:f044::/48\",\n\t\t\t\"2a03:2880:f144::/48\",\n\t\t\t\"2a03:2880:f244::/48\",\n\t\t\t\"2a03:2880:f042::/48\",\n\t\t\t\"2a03:2880:f043::/48\",\n\t\t\t\"2a03:2880:f045::/48\",\n\t\t\t\"2a03:2880:f046::/48\",\n\t\t\t\"2a03:2880:f047::/48\",\n\t\t\t\"2a03:2880:f048::/48\",\n\t\t\t\"2a03:2880:f04a::/48\",\n\t\t\t\"2a03:2880:f04c::/48\",\n\t\t\t\"2a03:2880:f04b::/48\",\n\t\t\t\"2a03:2880:f04d::/48\",\n\t\t\t\"2a03:2880:f259::/48\",\n\t\t\t\"2a03:2880:f258::/48\",\n\t\t\t\"2a03:2880:f257::/48\",\n\t\t\t\"2a03:2880:f256::/48\",\n\t\t\t\"2a03:2880:f255::/48\",\n\t\t\t\"2a03:2880:f254::/48\",\n\t\t\t\"2a03:2880:f253::/48\",\n\t\t\t\"2a03:2880:f252::/48\",\n\t\t\t\"2a03:2880:f250::/48\",\n\t\t\t\"2a03:2880:f24f::/48\",\n\t\t\t\"2a03:2880:f24d::/48\",\n\t\t\t\"2a03:2880:f24e::/48\",\n\t\t\t\"2a03:2880:f24c::/48\",\n\t\t\t\"2a03:2880:f24b::/48\",\n\t\t\t\"2a03:2880:f24a::/48\",\n\t\t\t\"2a03:2880:f248::/48\",\n\t\t\t\"2a03:2880:f247::/48\",\n\t\t\t\"2a03:2880:f246::/48\",\n\t\t\t\"2a03:2880:f245::/48\",\n\t\t\t\"2a03:2880:f243::/48\",\n\t\t\t\"2a03:2880:f242::/48\",\n\t\t\t\"2a03:2880:f241::/48\",\n\t\t\t\"2a03:2880:f240::/48\",\n\t\t\t\"2a03:2880:f159::/48\",\n\t\t\t\"2a03:2880:f158::/48\",\n\t\t\t\"2a03:2880:f157::/48\",\n\t\t\t\"2a03:2880:f156::/48\",\n\t\t\t\"2a03:2880:f155::/48\",\n\t\t\t\"2a03:2880:f154::/48\",\n\t\t\t\"2a03:2880:f153::/48\",\n\t\t\t\"2a03:2880:f152::/48\",\n\t\t\t\"2a03:2880:f150::/48\",\n\t\t\t\"2a03:2880:f14f::/48\",\n\t\t\t\"2a03:2880:f14e::/48\",\n\t\t\t\"2a03:2880:f14d::/48\",\n\t\t\t\"2a03:2880:f14c::/48\",\n\t\t\t\"2a03:2880:f14b::/48\",\n\t\t\t\"2a03:2880:f14a::/48\",\n\t\t\t\"2a03:2880:f148::/48\",\n\t\t\t\"2a03:2880:f147::/48\",\n\t\t\t\"2a03:2880:f146::/48\",\n\t\t\t\"2a03:2880:f145::/48\",\n\t\t\t\"2a03:2880:f143::/48\",\n\t\t\t\"2a03:2880:f142::/48\",\n\t\t\t\"2a03:2880:f141::/48\",\n\t\t\t\"2a03:2880:f140::/48\",\n\t\t\t\"2a03:2880:f059::/48\",\n\t\t\t\"2a03:2880:f058::/48\",\n\t\t\t\"2a03:2880:f057::/48\",\n\t\t\t\"2a03:2880:f056::/48\",\n\t\t\t\"2a03:2880:f055::/48\",\n\t\t\t\"2a03:2880:f054::/48\",\n\t\t\t\"2a03:2880:f053::/48\",\n\t\t\t\"2a03:2880:f052::/48\",\n\t\t\t\"2a03:2880:f050::/48\",\n\t\t\t\"2a03:2880:f04f::/48\",\n\t\t\t\"2a03:2880:f04e::/48\",\n\t\t\t\"2a03:2880:ff0b::/48\",\n\t\t\t\"2a03:2880:ff0c::/48\",\n\t\t\t\"2a03:2880:f040::/48\",\n\t\t\t\"2a03:2880:f041::/48\",\n\t\t\t\"2a03:2880:f0fc::/48\",\n\t\t\t\"2a03:2880:f0fd::/48\",\n\t\t\t\"2a03:2880:f0fc::/47\",\n\t\t\t\"2a03:2880:f1fc::/48\",\n\t\t\t\"2a03:2880:f1fd::/48\",\n\t\t\t\"2a03:2880:f1fc::/47\",\n\t\t\t\"2a03:2880:ff08::/48\",\n\t\t\t\"2a03:2880:ff09::/48\",\n\t\t\t\"2a03:2880:ff0a::/48\",\n\t\t\t\"2a03:2880:f05e::/48\",\n\t\t\t\"2a03:2880:f15e::/48\",\n\t\t\t\"2a03:2880:f25e::/48\",\n\t\t\t\"2620:0:1cfa::/48\",\n\t\t\t\"2a03:2880:f05b::/48\",\n\t\t\t\"2a03:2880:f05a::/48\",\n\t\t\t\"2a03:2880:f25a::/48\",\n\t\t\t\"2a03:2880:f15c::/48\",\n\t\t\t\"2a03:2880:f000::/36\",\n\t\t\t\"2a03:2880:f05d::/48\",\n\t\t\t\"2a03:2880:f25c::/48\",\n\t\t\t\"2a03:2880:f05c::/48\",\n\t\t\t\"2a03:2880:f260::/48\",\n\t\t\t\"2a03:2880:f060::/48\",\n\t\t\t\"2a03:2880:f160::/48\",\n\t\t\t\"2a03:2880:f15d::/48\",\n\t\t\t\"2a03:2880:f25b::/48\",\n\t\t\t\"2a03:2880:f25d::/48\",\n\t\t\t\"2a03:2880:f15b::/48\",\n\t\t\t\"2a03:2880:f15a::/48\",\n\t\t\t\"2a03:2880:f161::/48\",\n\t\t\t\"2a03:2880:f061::/48\",\n\t\t\t\"2a03:2880:f261::/48\",\n\t\t\t\"2a03:2881::/32\",\n\t\t\t\"2a03:2881::/48\",\n\t\t\t\"2a03:2881:1::/48\",\n\t\t\t\"2a03:2881:2::/48\",\n\t\t\t\"2a03:2881:3::/48\",\n\t\t\t\"2a03:2880:f162::/48\",\n\t\t\t\"2a03:2880:f262::/48\",\n\t\t\t\"2a03:2881:4000::/48\",\n\t\t\t\"2a03:2881:4003::/48\",\n\t\t\t\"2a03:2881:4001::/48\",\n\t\t\t\"2a03:2881:4002::/48\",\n\t\t\t\"2a03:2880:f065::/48\",\n\t\t\t\"2a03:2880:f163::/48\",\n\t\t\t\"2a03:2880:f066::/48\",\n\t\t\t\"2a03:2880:f263::/48\",\n\t\t\t\"2a03:2880:f264::/48\",\n\t\t\t\"2a03:2880:f164::/48\",\n\t\t\t\"2a03:2880:f067::/48\",\n\t\t\t\"2a03:2880:f165::/48\",\n\t\t\t\"2a03:2880:f265::/48\",\n\t\t\t\"2a03:2880:f068::/48\",\n\t\t\t\"2a03:2881:4004::/48\",\n\t\t\t\"2a03:2880:f06a::/48\",\n\t\t\t\"2a03:2880:f266::/48\",\n\t\t\t\"2a03:2880:f166::/48\",\n\t\t\t\"2a03:2880:f267::/48\",\n\t\t\t\"2a03:2880:f06b::/48\",\n\t\t\t\"2a03:2880:f167::/48\",\n\t\t\t\"2a03:2881:4006::/48\",\n\t\t\t\"2a03:2881:7::/48\",\n\t\t\t\"2a03:2881:9::/48\",\n\t\t\t\"2a03:2881:8::/48\",\n\t\t\t\"2a03:2881:4::/48\",\n\t\t\t\"2a03:2881:6::/48\",\n\t\t\t\"2a03:2881:5::/48\",\n\t\t\t\"2a03:2881:a::/48\",\n\t\t\t\"2a03:2880:f268::/48\",\n\t\t\t\"2a03:2880:f06d::/48\",\n\t\t\t\"2a03:2880:f168::/48\",\n\t\t\t\"2a03:2881:b::/48\",\n\t\t\t\"2a03:2881:c::/48\",\n\t\t\t\"2a03:2881:4007::/48\",\n\t\t\t\"2a03:2880:f269::/48\",\n\t\t\t\"2a03:2880:f169::/48\",\n\t\t\t\"2a03:2880:f06f::/48\",\n\t\t\t\"2a03:2880:f26a::/48\",\n\t\t\t\"2a03:2880:f16a::/48\",\n\t\t\t\"2a03:2880:f070::/48\",\n\t\t\t\"2a03:2881:d::/48\",\n\t\t\t\"2a03:2881:e::/48\",\n\t\t\t\"2a03:2880:f071::/48\",\n\t\t\t\"2a03:2880:f16b::/48\",\n\t\t\t\"2a03:2880:f26b::/48\",\n\t\t\t\"2a03:2881:4008::/48\",\n\t\t\t\"2a03:2881:10::/48\",\n\t\t\t\"2a03:2881:f::/48\",\n\t\t\t\"2a03:2881:11::/48\",\n\t\t\t\"2a03:2880:f26c::/48\",\n\t\t\t\"2a03:2880:f16c::/48\",\n\t\t\t\"2a03:2880:f073::/48\",\n\t\t\t\"2a03:2880:f16d::/48\",\n\t\t\t\"2a03:2880:f074::/48\",\n\t\t\t\"2a03:2880:f26d::/48\",\n\t\t\t\"2a03:2881:4009::/48\",\n\t\t\t\"2a03:2880:f26e::/48\",\n\t\t\t\"2a03:2880:f16e::/48\",\n\t\t\t\"2a03:2880:f076::/48\",\n\t\t\t\"2a03:2880:f16f::/48\",\n\t\t\t\"2a03:2880:f26f::/48\",\n\t\t\t\"2a03:2880:f077::/48\",\n\t\t\t\"2a03:2881:12::/48\",\n\t\t\t\"2a03:2881:13::/48\",\n\t\t\t\"2a03:2881:17::/48\",\n\t\t\t\"2a03:2881:15::/48\",\n\t\t\t\"2a03:2881:18::/48\",\n\t\t\t\"2a03:2881:14::/48\",\n\t\t\t\"2a03:2881:16::/48\",\n\t\t\t\"2a03:2881:19::/48\",\n\t\t\t\"2a03:2881:4005::/48\",\n\t\t\t\"2a03:2880:f078::/48\",\n\t\t\t\"2a03:2880:f170::/48\",\n\t\t\t\"2a03:2880:f270::/48\",\n\t\t\t\"2a03:2881:400a::/48\",\n\t\t\t\"2a03:2881:400c::/48\",\n\t\t\t\"2a03:2881:400b::/48\",\n\t\t\t\"2a03:2881:400d::/48\",\n\t\t\t\"2a03:2881:1a::/48\",\n\t\t\t\"2a03:2881:1c::/48\",\n\t\t\t\"2a03:2881:1b::/48\",\n\t\t\t\"2a03:2880:f271::/48\",\n\t\t\t\"2a03:2880:f07d::/48\",\n\t\t\t\"2a03:2880:f171::/48\",\n\t\t\t\"2a03:2880:f07e::/48\",\n\t\t\t\"2a03:2880:f172::/48\",\n\t\t\t\"2a03:2880:f272::/48\",\n\t\t\t\"2a03:2880:f080::/48\",\n\t\t\t\"2a03:2880:f173::/48\",\n\t\t\t\"2a03:2880:f273::/48\",\n\t\t\t\"2a03:2880:f081::/48\",\n\t\t\t\"2a03:2880:f174::/48\",\n\t\t\t\"2a03:2880:f274::/48\",\n\t\t\t\"2a03:2880:f175::/48\",\n\t\t\t\"2a03:2880:f275::/48\",\n\t\t\t\"2a03:2880:f082::/48\",\n\t\t\t\"2a03:2880:f176::/48\",\n\t\t\t\"2a03:2880:f276::/48\",\n\t\t\t\"2a03:2880:f083::/48\",\n\t\t\t\"2a03:2880:f277::/48\",\n\t\t\t\"2a03:2880:f084::/48\",\n\t\t\t\"2a03:2880:f177::/48\",\n\t\t\t\"2a03:2881:1e::/48\",\n\t\t\t\"2a03:2880:f085::/48\",\n\t\t\t\"2a03:2880:f178::/48\",\n\t\t\t\"2a03:2880:f278::/48\",\n\t\t\t\"2a03:2880:f179::/48\",\n\t\t\t\"2a03:2880:f086::/48\",\n\t\t\t\"2a03:2880:f279::/48\",\n\t\t\t\"2a03:2880:f17a::/48\",\n\t\t\t\"2a03:2880:f08a::/48\",\n\t\t\t\"2a03:2880:f27a::/48\",\n\t\t\t\"2a03:2881:48::/45\",\n\t\t\t\"2a10:f781:10:cee0::/64\",\n\t\t\t\"2a03:83e0::/32\",\n\t\t]\n\n\t\tconst twitter = [\n\t\t\t\"199.16.156.0/22\",\n\t\t\t\"199.59.148.0/22\",\n\t\t\t\"192.133.76.0/22\",\n\t\t]\n\n\t\tconst bing = [\n\t\t\t\"157.55.39.0/24\",\n\t\t\t\"207.46.13.0/24\",\n\t\t\t\"40.77.167.0/24\",\n\t\t\t\"13.66.139.0/24\",\n\t\t\t\"13.66.144.0/24\",\n\t\t\t\"52.167.144.0/24\",\n\t\t\t\"13.67.10.16/28\",\n\t\t\t\"13.69.66.240/28\",\n\t\t\t\"13.71.172.224/28\",\n\t\t\t\"139.217.52.0/28\",\n\t\t\t\"191.233.204.224/28\",\n\t\t\t\"20.36.108.32/28\",\n\t\t\t\"20.43.120.16/28\",\n\t\t\t\"40.79.131.208/28\",\n\t\t\t\"40.79.186.176/28\",\n\t\t\t\"52.231.148.0/28\",\n\t\t\t\"20.79.107.240/28\",\n\t\t\t\"51.105.67.0/28\",\n\t\t\t\"20.125.163.80/28\",\n\t\t\t\"40.77.188.0/22\",\n\t\t\t\"65.55.210.0/24\",\n\t\t\t\"199.30.24.0/23\",\n\t\t\t\"40.77.202.0/24\",\n\t\t\t\"40.77.139.0/25\",\n\t\t\t\"20.74.197.0/28\",\n\t\t]\n\n\t\tconst pinterest = [\n\t\t\t\"54.236.1.1/32\",\n\t\t\t\"54.236.1.2/31\",\n\t\t\t\"54.236.1.4/30\",\n\t\t\t\"54.236.1.8/29\",\n\t\t\t\"54.236.1.16/28\",\n\t\t\t\"54.236.1.32/27\",\n\t\t\t\"54.236.1.64/26\",\n\t\t\t\"54.236.1.128/25\",\n\t\t]\n\n\t\tconst hotjar = [\n\t\t\t\"18.203.61.76\",\n\t\t\t\"18.203.176.135\",\n\t\t\t\"52.17.197.221\",\n\t\t]\n\n\t\tconst alexa = [\n\t\t\t\"204.236.235.245\",\n\t\t\t\"75.101.186.145\",\n\t\t]\n\n\t\tconst amazon = [\n\t\t\t\"18.207.141.103\",\n\t\t\t\"52.1.113.12\",\n\t\t]\n\n\t\tconst baidu = [\n\t\t\t\"180.76.15.0/24\",\n\t\t\t\"119.63.196.0/24\",\n\t\t\t\"115.239.212.0/24\",\n\t\t\t\"119.63.199.0/24\",\n\t\t\t\"122.81.208.0/22\",\n\t\t\t\"123.125.71.0/24\",\n\t\t\t\"180.76.4.0/24\",\n\t\t\t\"180.76.5.0/24\",\n\t\t\t\"180.76.6.0/24\",\n\t\t\t\"185.10.104.0/24\",\n\t\t\t\"220.181.108.0/24\",\n\t\t\t\"220.181.51.0/24\",\n\t\t\t\"111.13.102.0/24\",\n\t\t\t\"123.125.67.144/29\",\n\t\t\t\"123.125.67.152/31\",\n\t\t\t\"61.135.169.0/24\",\n\t\t\t\"123.125.68.68/30\",\n\t\t\t\"123.125.68.72/29\",\n\t\t\t\"123.125.68.80/28\",\n\t\t\t\"123.125.68.96/30\",\n\t\t\t\"202.46.48.0/20\",\n\t\t\t\"220.181.38.0/24\",\n\t\t\t\"123.125.68.80/30\",\n\t\t\t\"123.125.68.84/31\",\n\t\t\t\"123.125.68.0/24\",\n\t\t]\n\n\t\tconst duckduckgo = [\n\t\t\t\"20.191.45.212\",\n\t\t\t\"40.88.21.235\",\n\t\t\t\"40.76.173.151\",\n\t\t\t\"40.76.163.7\",\n\t\t\t\"20.185.79.47\",\n\t\t\t\"52.142.26.175\",\n\t\t\t\"20.185.79.15\",\n\t\t\t\"52.142.24.149\",\n\t\t\t\"40.76.162.208\",\n\t\t\t\"40.76.163.23\",\n\t\t\t\"40.76.162.191\",\n\t\t\t\"40.76.162.247\",\n\t\t]\n\n\t\tconst yahoo = [\n\t\t\t\"5.255.250.0/24\",\n\t\t\t\"37.9.87.0/24\",\n\t\t\t\"67.195.37.0/24\",\n\t\t\t\"67.195.50.0/24\",\n\t\t\t\"67.195.110.0/24\",\n\t\t\t\"67.195.111.0/24\",\n\t\t\t\"67.195.112.0/23\",\n\t\t\t\"67.195.114.0/24\",\n\t\t\t\"67.195.115.0/24\",\n\t\t\t\"68.180.224.0/21\",\n\t\t\t\"72.30.132.0/24\",\n\t\t\t\"72.30.142.0/24\",\n\t\t\t\"72.30.161.0/24\",\n\t\t\t\"72.30.196.0/24\",\n\t\t\t\"72.30.198.0/24\",\n\t\t\t\"74.6.254.0/24\",\n\t\t\t\"74.6.8.0/24\",\n\t\t\t\"74.6.13.0/24\",\n\t\t\t\"74.6.17.0/24\",\n\t\t\t\"74.6.18.0/24\",\n\t\t\t\"74.6.22.0/24\",\n\t\t\t\"74.6.27.0/24\",\n\t\t\t\"74.6.168.0/24\",\n\t\t\t\"77.88.5.0/24\",\n\t\t\t\"77.88.47.0/24\",\n\t\t\t\"93.158.161.0/24\",\n\t\t\t\"98.137.72.0/24\",\n\t\t\t\"98.137.206.0/24\",\n\t\t\t\"98.137.207.0/24\",\n\t\t\t\"98.139.168.0/24\",\n\t\t\t\"114.111.95.0/24\",\n\t\t\t\"124.83.159.0/24\",\n\t\t\t\"124.83.179.0/24\",\n\t\t\t\"124.83.223.0/24\",\n\t\t\t\"141.8.144.0/24\",\n\t\t\t\"183.79.63.0/24\",\n\t\t\t\"183.79.92.0/24\",\n\t\t\t\"203.216.255.0/24\",\n\t\t\t\"211.14.11.0/24\",\n\t\t]\n\n\t\tconst yandex = [\n\t\t\t\"100.43.90.0/24\",\n\t\t\t\"37.9.115.0/24\",\n\t\t\t\"37.140.165.0/24\",\n\t\t\t\"77.88.22.0/25\",\n\t\t\t\"77.88.29.0/24\",\n\t\t\t\"77.88.31.0/24\",\n\t\t\t\"77.88.59.0/24\",\n\t\t\t\"84.201.146.0/24\",\n\t\t\t\"84.201.148.0/24\",\n\t\t\t\"84.201.149.0/24\",\n\t\t\t\"87.250.243.0/24\",\n\t\t\t\"87.250.253.0/24\",\n\t\t\t\"93.158.147.0/24\",\n\t\t\t\"93.158.148.0/24\",\n\t\t\t\"93.158.151.0/24\",\n\t\t\t\"93.158.153.0/32\",\n\t\t\t\"95.108.128.0/24\",\n\t\t\t\"95.108.138.0/24\",\n\t\t\t\"95.108.150.0/23\",\n\t\t\t\"95.108.158.0/24\",\n\t\t\t\"95.108.156.0/24\",\n\t\t\t\"95.108.188.128/25\",\n\t\t\t\"95.108.234.0/24\",\n\t\t\t\"95.108.248.0/24\",\n\t\t\t\"100.43.80.0/24\",\n\t\t\t\"130.193.62.0/24\",\n\t\t\t\"141.8.153.0/24\",\n\t\t\t\"178.154.165.0/24\",\n\t\t\t\"178.154.166.128/25\",\n\t\t\t\"178.154.173.29\",\n\t\t\t\"178.154.200.158\",\n\t\t\t\"178.154.202.0/24\",\n\t\t\t\"178.154.205.0/24\",\n\t\t\t\"178.154.239.0/24\",\n\t\t\t\"178.154.243.0/24\",\n\t\t\t\"37.9.84.253\",\n\t\t\t\"199.21.99.99\",\n\t\t\t\"178.154.162.29\",\n\t\t\t\"178.154.203.251\",\n\t\t\t\"178.154.211.250\",\n\t\t\t\"178.154.171.0/24\",\n\t\t\t\"178.154.200.0/24\",\n\t\t\t\"178.154.244.0/24\",\n\t\t\t\"178.154.246.0/24\",\n\t\t\t\"95.108.181.0/24\",\n\t\t\t\"95.108.246.252\",\n\t\t\t\"5.45.254.0/24\",\n\t\t\t\"5.255.253.0/24\",\n\t\t\t\"37.140.141.0/24\",\n\t\t\t\"37.140.188.0/24\",\n\t\t\t\"100.43.81.0/24\",\n\t\t\t\"100.43.85.0/24\",\n\t\t\t\"100.43.91.0/24\",\n\t\t\t\"199.21.99.0/24\",\n\t\t\t\"2a02:6b8:b000::/32\",\n\t\t\t\"2a02:6b8:b010::/32\",\n\t\t\t\"2a02:6b8:b011::/32\",\n\t\t\t\"2a02:6b8:c0e::/32\",\n\t\t]\n\n\t\tconst sogou = [\n\t\t\t\"220.181.125.0/24\",\n\t\t\t\"123.126.51.64/27\",\n\t\t\t\"123.126.51.96/28\",\n\t\t\t\"123.126.68.25\",\n\t\t\t\"61.135.189.74\",\n\t\t\t\"61.135.189.75\",\n\t\t]\n\n\t\tconst youdao = [\n\t\t\t\"61.135.249.200/29\",\n\t\t\t\"61.135.249.208/28\",\n\t\t]\n\n\t\tlet customExclusionList = []\n\n\t\t// if wpmDataLayer.general.server2server.ipExcludeList is array\n\t\tif (Array.isArray(wpmDataLayer.general.server2server.ipExcludeList)) {\n\t\t\tcustomExclusionList = wpmDataLayer.general.server2server.ipExcludeList\n\t\t}\n\n\t\treturn blacklist.concat(\n\t\t\tgoogle,\n\t\t\tfacebook,\n\t\t\ttwitter,\n\t\t\tbing,\n\t\t\tpinterest,\n\t\t\thotjar,\n\t\t\talexa,\n\t\t\tamazon,\n\t\t\tbaidu,\n\t\t\tduckduckgo,\n\t\t\tyahoo,\n\t\t\tyandex,\n\t\t\tsogou,\n\t\t\tyoudao,\n\t\t\tcustomExclusionList,\n\t\t)\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * https://github.com/woocommerce/woocommerce-blocks/blob/trunk/src/BlockTypes/AbstractProductGrid.php#L108\n * https://github.com/woocommerce/woocommerce-blocks/issues/3483\n * https://github.com/woocommerce/woocommerce-blocks/issues/1714\n *\n * https://github.com/woocommerce/woocommerce-blocks/blob/trunk/docs/third-party-developers/extensibility/hooks/actions.md#woocommerce_add_to_cart\n *\n * experimental__woocommerce_blocks-product-list-render\n *\n * https://github.com/woocommerce/woocommerce-blocks/blob/a1a6eb2b574b7d39d19d67bafb747d38017289da/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md/#usages-of-experimental-prefix\n */\n\n// TODO experimental__woocommerce_blocks-checkout-set-email-address\n// TODO experimental__woocommerce_blocks-product-view-link > selectItem\n// TODO maybe experimental__woocommerce_blocks-product-list-render, when product list is rendered send some list event\n// TODO maybe experimental__woocommerce_blocks-product-search, if the current event trigger doesn't work\n// TODO experimental__woocommerce_blocks-product-render > viewItem\n// TODO various events during entering checkout details, such as email, address, etc.\n// TODO find a way to keep view_item_list events working with the mutation observer\n\n// import {createHooks, addAction, doAction} from \"@wordpress/hooks\"\n// console.log(wp.hooks)\n// console.log(wp.hooks.applyFilters(\"ndx_change_string\", \"\"))\n\n/**\n * Add-to-cart button\n */\nwp.hooks.addAction(\n\t\"experimental__woocommerce_blocks-cart-add-item\",\n\t\"pixel-manager-for-woocommerce\",\n\tdata => {\n\t\t// console.log(\"experimental__woocommerce_blocks-cart-add-item\", data)\n\n\t\t// Works on the all product page\n\t\t// TODO make it work with variable quantities on product page\n\t\twpm.addProductToCart(data.product.id, 1)\n\t},\n)\n\n/**\n * Change cart quantity\n */\nwp.hooks.addAction(\n\t\"experimental__woocommerce_blocks-cart-set-item-quantity\",\n\t\"pixel-manager-for-woocommerce\",\n\tdata => {\n\t\t// console.log(\"experimental__woocommerce_blocks-cart-set-item-quantity\", data)\n\n\t\tif (data.quantity > data.product.quantity) {\n\t\t\twpm.addProductToCart(data.product.id, data.quantity - data.product.quantity)\n\t\t}\n\n\t\tif (data.quantity < data.product.quantity) {\n\t\t\twpm.removeProductFromCart(data.product.id, data.product.quantity - data.quantity)\n\t\t}\n\t},\n)\n\n/**\n * Remove from cart\n */\nwp.hooks.addAction(\n\t\"experimental__woocommerce_blocks-cart-remove-item\",\n\t\"pixel-manager-for-woocommerce\",\n\tdata => {\n\t\t// console.log(\"experimental__woocommerce_blocks-cart-remove-item\", data)\n\t\twpm.removeProductFromCart(data.product.id, data.quantity)\n\t},\n)\n\n/**\n * Checkout form submit\n */\nwp.hooks.addAction(\n\t\"experimental__woocommerce_blocks-checkout-submit\",\n\t\"pixel-manager-for-woocommerce\",\n\t() => {\n\t\t// console.log(\"experimental__woocommerce_blocks-checkout-submit\")\n\t\tjQuery(document).trigger(\"wpmPlaceOrder\", {})\n\t},\n)\n\n\n/**\n * Only outputs an object with products. No other data or actions.\n */\n// wp.hooks.addAction(\n// \t\"experimental__woocommerce_blocks-product-list-render\",\n// \t\"pixel-manager-for-woocommerce\",\n// \t(value) => {\n//\n// \t\tif (value.products.length > 0) {\n// \t\t\tconsole.log(\"hello world 1\")\n// \t\t\tconsole.log(value)\n//\n// \t\t\tjQuery(\".add_to_cart_button\").on(\"click\", function (event) {\n//\n// \t\t\t\tconsole.log(jQuery(event.target.parentElement.parentElement))\n//\n// \t\t\t\t// console.log(\"hello world 5\");\n// \t\t\t\t//\n// \t\t\t\t// console.log(jQuery(this.parentElement.parentElement));\n// \t\t\t\t//\n// \t\t\t\t// console.log(\"hello world 6\");\n// \t\t\t\t//\n// \t\t\t\t// // element is part of a React component.\n// \t\t\t\t// // Get the parent element.\n// \t\t\t\t// const pe = event.target.parentElement.parentElement\n// \t\t\t\t// console.log(jQuery(pe)._reactInternalFiber.key)\n// \t\t\t\t//\n// \t\t\t\t// // pe is a react component. Get the key of that component.\n// \t\t\t\t// const key = pe.getAttribute(\"data-key\")\n// \t\t\t\t// console.log(key)\n//\n//\n// \t\t\t\t// console.log(element.currentTarget.dataset.key)\n// \t\t\t})\n// \t\t}\n// \t\treturn value\n// \t},\n// )\n\n// jQuery(document).on(\"pmw:ready\", () => {\n// \tjQuery(\".add_to_cart_button\").on(\"click\", function (element) {\n//\n// \t\tconsole.log(\"hello world 3\")\n// \t\t// element is part of a React component.\n// \t\t// Get the key of that component.\n// \t\tconsole.log(element.currentTarget.dataset.key)\n// \t})\n// })\n\n// wp.hooks.addAction(\n// \t'woocommerce_add_to_cart',\n// \t'pixel-manager-for-woocommerce',\n// \t( cart_item_key, product_id, quantity, variation_id, variation, cart_item_data ) => {\n// \t\tconsole.log( cart_item_key, product_id, quantity, variation_id, variation, cart_item_data );\n// \t},\n// \t()=>{\n// \t\tconsole.log(\"hello world 2\")\n// \t}\n// )\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Run PMW main loader\n */\nconst main = async () => {\n\n\trequire(\"./wpm/functions_main\")\n\n\t// Wait until jQuery is loaded\n\tawait wpm.jQueryExists()\n\t// Wait until wpmDataLayer is loaded\n\tawait wpm.wpmDataLayerExists()\n\n\t// wait 1000ms\n\t// await new Promise(resolve => setTimeout(resolve, 1000))\n\n\t// Load all essential scripts first\n\trequire(\"./wpm/functions_loader\")\n\n\t// Load all event listeners that depend on document ready\n\tjQuery(document).on(\"pmw:ready\", () => {\n\t\trequire(\"./wpm/event_listeners_on_ready\")\n\t})\n\n\t// Load remaining event listeners\n\trequire(\"./wpm/event_listeners\")\n\n\trequire(\"./wpm/wc_hooks\")\n\n\t// Output PMW console message\n\twpm.pmwConsoleMessage()\n\n\t// Check if domain is excluded from tracking\n\t// If so, return\n\tif (wpm.excludeDomainFromTracking()) return\n\n\t// Load free pixels\n\trequire(\"./google/loader\")\n\trequire(\"./facebook/loader\")\n\trequire(\"./hotjar/loader\")\n\n\t// #if process.env.TIER === 'premium'\n// \t/**\n// \t * Load all premium scripts\n// \t */\n// \tif (wpm.canLoadPremiumFeatures()) {\n// \t\trequire(\"./wpm/event_listeners_premium\")\n// \t\trequire(\"./microsoft-ads/loader\")\n// \t\trequire(\"./pinterest/loader\")\n// \t\trequire(\"./snapchat/loader\")\n// \t\trequire(\"./tiktok/loader\")\n// \t\trequire(\"./twitter/loader\")\n// \t}\n\t// #endif\n\n\t// Preload pixels\n\tdocument.dispatchEvent(new Event(\"wpmPreLoadPixels\"))\n\n\t// Trigger wpmLoad event\n\tdocument.dispatchEvent(new Event(\"wpmLoad\"))\n\n\t// Wait until page is loaded\n\tawait wpm.pageLoaded()\n\twpm.triggerDomReadyEvent()\n}\n\nmain()\n\n\n\n\n"],"names":["exports","isInSubnet","address","subnetOrSubnets","createChecker","Array","isArray","subnetsByVersion","reduce","acc","subnet","ip","split","util","isIP","push","length","Error","check4","IPv4","check6","IPv6","isIPv6","isIPv4MappedAddress","extractMappedIpv4","Object","enumerable","get","isPrivate","isLocalhost","isReserved","isSpecial","localhost","ipv4","ipv6","private","reserved","ipv4ToLong","isIPv4","octets","parseInt","checks_1","map","addressLong","some","check","createLongChecker","subnetAddress","prefixLengthString","prefixLength","Number","isInteger","subnetLong","specialNetsCache","ipRange_1","dot","mappedIpv4","colon","doubleColon","getIpv6Segments","test","matches","match","prefix","parts","x","toString","mappedIpv4ToIpv6","beforeChunk","afterChunk","beforeParts","afterParts","missingSegments","concat","segments","createSegmentChecker","subnetSegments","i","bitCount","Math","min","addressSegments","Boolean","v4Seg","v4Str","IPv4Reg","RegExp","v6Seg","IPv6Reg","s","expandIPv6","ipaddr","ipv4Part","ipv4Regexes","ipv6Part","ipv6Regexes","matchCIDR","zoneIndex","module","this","first","second","partSize","cidrBits","part","shift","subnetMatch","rangeList","defaultName","k","len","rangeName","rangeSubnets","kind","apply","octet","prototype","join","toNormalizedString","toByteArray","slice","other","cidrRange","ref","SpecialRanges","unspecified","broadcast","multicast","linkLocal","loopback","carrierGradeNat","range","toIPv4MappedAddress","parse","prefixLengthFromSubnetMask","cidr","stop","zeros","zerotable","fourOctet","longValue","parser","string","parseIntAuto","value","results","reverse","zoneId","l","replace","toRFC5952String","bestMatchIndex","bestMatchLength","regex","exec","index","substring","bytes","addr","suffix","call","toFixedLengthString","padStart","uniqueLocal","ipv4Mapped","rfc6145","rfc6052","teredo","toIPv4Address","high","low","transitional","colonCount","lastColon","replacement","replacementCount","indexOf","lastIndexOf","substr","isValid","error1","isValidFourPartDecimal","parseCIDR","maskLength","parsed","defineProperty","subnetMaskFromPrefixLength","filledOctetCount","j","floor","pow","broadcastAddressFromCIDR","ipInterfaceOctets","subnetMaskOctets","networkAddressFromCIDR","fromByteArray","process","normalize","a","_validate","nh","toLowerCase","sections","n","h","ns","hs","undefined","_leftPad","abbreviate","zPreviousFlag","zeroStartIndex","zeroLength","zStartIndex","zLength","section","zFlag","splice","d","p","padding","repeat","_bin2hex","bin","_addr2bin","binAddr","_bin2addr","binPart","hexSection","divideSubnet","mask0","mask1","limit","abbr","ret","binNetPart","binHostPart","numSubnets","binSubnet","hexAddr","binStartAddr","binEndAddr","start","end","size","randomSubnet","random","ptr","mask","version","err","isV4","isV6","isRange","inRange","check_range","ip6","range_data","parse_addr","parse_range","storeIP","displayIP","jQuery","document","on","wpmDataLayer","pixels","facebook","pixel_id","loaded","wpm","doesUrlContainPatterns","exclusion_patterns","canIFire","loadFacebookPixel","event","payload","fbq","custom_data","eventID","event_id","error","console","setFbUserData","$","fbUserData","f","window","b","e","callMethod","arguments","queue","_fbq","t","createElement","async","src","getElementsByTagName","parentNode","insertBefore","data","isFbpSet","isFbAdvancedMatchingEnabled","getUserIdentifiersForFb","user","id","raw","external_id","order","user_id","email","em","billing_email_hashed","first_name","fn","billing_first_name","last_name","ln","billing_last_name","phone","ph","billing_phone","city","ct","billing_city","state","st","billing_state","postcode","zp","billing_postcode","country","billing_country","getFbRandomEventId","getFbUserData","getFbUserDataFromBrowser","advanced_matching","getCookie","isValidFbp","fbp","isValidFbc","fbc","navigator","userAgent","client_user_agent","fbGetProductDataForCapiEvent","product","content_type","content_name","name","content_ids","dyn_r_ids","dynamic_remarketing","id_type","parseFloat","quantity","price","currency","facebookContentIds","prodIds","key","item","entries","items","general","variationsOutput","variation_id","String","products","trackCustomFacebookEvent","eventName","customData","eventId","trigger","event_name","user_data","event_source_url","location","href","fbGetContentIdsFromCart","cart","require","isEmptyObject","google","ads","conversionIds","status","googleConfigConditionsMet","isVariable","send_events_with_parent_ids","send_to","getGoogleAdsConversionIdentifiers","google_business_vertical","gtagLoaded","then","gtag","value_filtered","getGoogleAdsDynamicRemarketingOrderItems","getGoogleAdsConversionIdentifiersWithLabel","data_basic","data_with_cart","transaction_id","number","new_customer","clv_order_value_filtered","customer_lifetime_value","aw_merchant_id","discount","aw_feed_country","aw_feed_language","getGoogleAdsRegularOrderItems","conversionIdentifiers","orderItems","orderItem","analytics","universal","property_id","mp_active","affiliation","value_regular","tax","shipping","coupon","getGAUAOrderItems","category","variant","variant_name","brand","ga3AddListNameToProduct","item_data","productPosition","list_name","shop","list_position","ga4","measurement_id","getGA4OrderItems","item_name","item_category","item_id","item_variant","item_brand","canGoogleLoad","loadGoogle","logPreventedPixelLoading","type","consent_mode","active","getConsentValues","mode","categories","includes","getVisitorConsentStatusAndUpdateGoogleConsentSettings","google_consent_settings","analytics_storage","ad_storage","updateGoogleConsentMode","cookie_consent_mgmt","explicit_consent","fireGtagGoogleAds","enhanced_conversions","phone_conversion_label","phone_conversion_number","keys","page_type","enhanced_conversion_data","fireGtagGoogleAnalyticsUA","parameters","fireGtagGoogleAnalyticsGA4","debug_mode","isGoogleActive","getGoogleGtagId","loadScriptAndCacheIt","script","textStatus","dataLayer","wait_for_update","region","ads_data_redaction","url_passthrough","linker","settings","Date","Promise","resolve","reject","startTime","wait","setTimeout","optimize","container_id","load_google_optimize_pixel","hotjar","site_id","load_hotjar_pixel","o","hj","q","_hjSettings","hjid","hjsv","r","appendChild","getComplianzCookies","cmplz_statistics","cmplz_marketing","visitorHasChosen","getCookieLawInfoCookies","analyticsCookie","adsCookie","wpmConsentValues","setConsentValueCategories","updateConsentCookieValues","cookie","explicitConsent","JSON","decodeURI","action","consents","statistics","marketing","thirdparty","advanced","localStorage","getItem","log","UC_UI","addEventListener","ucUiProcessConsent","areAllConsentsAccepted","groups","URLSearchParams","groupsObject","forEach","group","groupArray","groubsObject","pmw","consentAcceptAll","ucStatisticsSlug","getSettingsLabels","filter","label","slug","consentAdjustSelectively","getServicesBaseInfo","categorySlug","consent","setConsentDefaultValuesToExplicit","pixelName","canIFireMode","scriptTagObserver","MutationObserver","mutations","addedNodes","node","shouldScriptBeActive","unblockScript","blockScript","observe","head","childList","subtree","disconnect","element","scriptNode","removeAttach","remove","wpmSrc","attr","appendTo","dispatchEvent","Event","removeAttr","unblockAllScripts","unblockSelectedPixels","explicitConsentStateAlreadySet","Cookiebot","detail","cmplzStatusChange","cmplzConsentData","huObserver","querySelector","hu","documentElement","body","consentRevokeAll","OneTrust","reload","duration","consentSetCookie","setCookie","stringify","url","URL","currentTarget","productId","getProductIdByCartItemKeyUrl","removeProductFromCart","checkoutButtonClasses","paymentMethodSelected","fireCheckoutProgress","fireCheckoutOption","val","doesWooCommerceCartExist","getCartItems","productIds","getAddToCartLinkProductIds","getProductsFromBackend","referrer","referrerHostname","hostname","host","wpmLoadFired","product_type","getMainProductIdFromProductPage","getProductDataForViewItemEvent","isOrderIdStored","writeOrderIdToStorage","acrRemoveCookie","hasLoginEventFired","setLoginEventFired","sessionStorage","tiktok","getRandomEventId","context","getTikTokUserDataFromBrowser","properties","contents","content_id","sendEventPayloadToServer","getCartValue","search_string","getSearchTermFromUrl","query","getTikTokOrderItemIds","startIntersectionObserverToWatch","startProductsMutationObserverToWatch","addToCartSelectors","addProductToCart","each","find","classes","getPostIdFromString","one","target","closest","origin","searchParams","has","nextAll","getIdBasedOndVariationsOutputSetting","getProductDetailsFormattedForEvent","isEmail","emailSelected","getCartItemsFromBackend","variation","triggerViewItemEventPrep","wpmDeduper","wpmRestSettings","checkCookie","useRestEndpoint","isSessionStorageAvailable","isRestEndpointAvailable","isBelowRestErrorThreshold","testEndpoint","root","cookieName","response","fetch","method","cache","keepalive","setItem","isWpmRestEndpointAvailable","orderId","orderKey","source","Storage","ids","expiresDate","setDate","getDate","toUTCString","storeOrderIdOnServer","orderDeduplication","quantityToRemove","isVariation","parentId","saveCartObjectToDataLayer","ajax_url","ok","json","success","headers","pageId","pageType","responseData","assign","cartObject","triggerViewItemEvent","triggerViewItemEventNoProduct","step","checkout_option","triggerViewItemList","viewItemListTriggerTestMode","css","append","viewItemListTrigger","opacity","backgroundColor","search","io","ioTimeouts","observerCallback","observer","entry","elementId","next","isIntersecting","testMode","unobserve","timeout","clearTimeout","allIoElementsToWatch","ioid","getAllElementsToWatch","elem","parent","hasClass","prev","urlHasParameter","IntersectionObserver","threshold","productsNode","parents","productsMutationObserver","attributes","characterData","mutation","newNodes","hasWpmProductIdElement","siblings","cookieValue","expiryDays","setTime","getTime","expires","ca","decodeURIComponent","c","charAt","deleteCookie","getWpmSessionData","setWpmSessionData","nonce_wp_rest","order_key","nonce_ajax","responseJson","cartItemKey","cartItemKeys","position","parentId_dyn_r_ids","setReferrerToCookie","getReferrerFromCookie","getClidFromBrowser","clidCookieId","clidId","gclid","dclid","getUserAgent","getViewPort","width","max","clientWidth","innerWidth","height","clientHeight","innerHeight","options","dataType","ajax","getOrderItemPrice","total","total_tax","loginEventFired","pageLoaded","waitForVar","readyState","pageReady","isMiniCartActive","parameter","hashAsync","algo","str","crypto","subtle","digest","TextEncoder","encode","buf","Uint8Array","patterns","pattern","excludeDomainFromTracking","excludeDomains","domain","debug","pmwConsoleMessage","pro","distro","eligibleForUpdates","canLoadPremiumFeatures","jQueryReadyFired","triggerDomReadyEvent","jQueryExists","waitForjQuery","wpmDataLayerExists","ipCheck","text","trim","obj","pair","isOnBlacklist","ipName","getBlacklist","isCidr","customExclusionList","server2server","ipExcludeList","wp","hooks","addAction","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","g","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","main"],"sourceRoot":""}
|
languages/woocommerce-google-adwords-conversion-tracking-tag.pot
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the GNU General Public License v3.0.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Pixel Manager for WooCommerce 1.27.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.7.1\n"
|
15 |
"X-Domain: woocommerce-google-adwords-conversion-tracking-tag\n"
|
@@ -40,8 +40,8 @@ msgstr ""
|
|
40 |
|
41 |
#: classes/admin/class-admin.php:334
|
42 |
#: classes/admin/class-admin.php:335
|
43 |
-
#: wgact.php:
|
44 |
-
#: wgact.php:
|
45 |
msgid "Pixel Manager"
|
46 |
msgstr ""
|
47 |
|
@@ -1019,14 +1019,14 @@ msgstr ""
|
|
1019 |
msgid "Conversion pixels not fired yet"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
-
#: wgact.php:
|
1023 |
msgid "Pixel Manager for WooCommerce error"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
-
#: wgact.php:
|
1027 |
msgid "Your environment doesn't meet all the system requirements listed below."
|
1028 |
msgstr ""
|
1029 |
|
1030 |
-
#: wgact.php:
|
1031 |
msgid "The WooCommerce plugin needs to be activated"
|
1032 |
msgstr ""
|
2 |
# This file is distributed under the GNU General Public License v3.0.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Pixel Manager for WooCommerce 1.27.8\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-12-06T03:32:06+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.7.1\n"
|
15 |
"X-Domain: woocommerce-google-adwords-conversion-tracking-tag\n"
|
40 |
|
41 |
#: classes/admin/class-admin.php:334
|
42 |
#: classes/admin/class-admin.php:335
|
43 |
+
#: wgact.php:315
|
44 |
+
#: wgact.php:316
|
45 |
msgid "Pixel Manager"
|
46 |
msgstr ""
|
47 |
|
1019 |
msgid "Conversion pixels not fired yet"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
+
#: wgact.php:331
|
1023 |
msgid "Pixel Manager for WooCommerce error"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
+
#: wgact.php:333
|
1027 |
msgid "Your environment doesn't meet all the system requirements listed below."
|
1028 |
msgstr ""
|
1029 |
|
1030 |
+
#: wgact.php:337
|
1031 |
msgid "The WooCommerce plugin needs to be activated"
|
1032 |
msgstr ""
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: woocommerce, google analytics, google ads, facebook, conversion tracking,
|
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 6.1
|
6 |
Requires PHP: 7.3
|
7 |
-
Stable tag: 1.27.
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -221,6 +221,16 @@ You can send the link to the front page of your shop too if you think it would b
|
|
221 |
|
222 |
== Changelog ==
|
223 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
= 1.27.7 = 24.11.2022
|
225 |
|
226 |
* Fix: Fixed Google Ads dynamic ID output for custom filters product ID filters.
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 6.1
|
6 |
Requires PHP: 7.3
|
7 |
+
Stable tag: 1.27.8
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
221 |
|
222 |
== Changelog ==
|
223 |
|
224 |
+
= 1.27.8 = 06.12.2022
|
225 |
+
|
226 |
+
|
227 |
+
|
228 |
+
* Tweak: Added various type validations for REST routes.
|
229 |
+
* Tweak: Increase Gutenberg compatibility for all-products block, cart block and checkout block.
|
230 |
+
* Tweak: Streamlined code for backend product retrieval and excluded saving product transients on cart and checkout pages.
|
231 |
+
* Tweak: Made sure that the action scheduler hooks always get registered (even when an Ajax request is happening).
|
232 |
+
|
233 |
+
|
234 |
= 1.27.7 = 24.11.2022
|
235 |
|
236 |
* Fix: Fixed Google Ads dynamic ID output for custom filters product ID filters.
|
vendor/composer/installed.json
CHANGED
@@ -2,23 +2,23 @@
|
|
2 |
"packages": [
|
3 |
{
|
4 |
"name": "freemius/wordpress-sdk",
|
5 |
-
"version": "2.5.
|
6 |
-
"version_normalized": "2.5.
|
7 |
"source": {
|
8 |
"type": "git",
|
9 |
"url": "https://github.com/Freemius/wordpress-sdk.git",
|
10 |
-
"reference": "
|
11 |
},
|
12 |
"dist": {
|
13 |
"type": "zip",
|
14 |
-
"url": "https://api.github.com/repos/Freemius/wordpress-sdk/zipball/
|
15 |
-
"reference": "
|
16 |
"shasum": ""
|
17 |
},
|
18 |
"require": {
|
19 |
"php": ">=5.2"
|
20 |
},
|
21 |
-
"time": "2022-
|
22 |
"type": "library",
|
23 |
"installation-source": "dist",
|
24 |
"notification-url": "https://packagist.org/downloads/",
|
@@ -38,23 +38,23 @@
|
|
38 |
],
|
39 |
"support": {
|
40 |
"issues": "https://github.com/Freemius/wordpress-sdk/issues",
|
41 |
-
"source": "https://github.com/Freemius/wordpress-sdk/tree/2.5.
|
42 |
},
|
43 |
"install-path": "../freemius/wordpress-sdk"
|
44 |
},
|
45 |
{
|
46 |
"name": "giggsey/libphonenumber-for-php",
|
47 |
-
"version": "8.13.
|
48 |
-
"version_normalized": "8.13.
|
49 |
"source": {
|
50 |
"type": "git",
|
51 |
"url": "https://github.com/giggsey/libphonenumber-for-php.git",
|
52 |
-
"reference": "
|
53 |
},
|
54 |
"dist": {
|
55 |
"type": "zip",
|
56 |
-
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/
|
57 |
-
"reference": "
|
58 |
"shasum": ""
|
59 |
},
|
60 |
"require": {
|
@@ -71,7 +71,7 @@
|
|
71 |
"symfony/console": "^2.8|^3.0|^v4.4|^v5.2",
|
72 |
"symfony/phpunit-bridge": "^4.2 || ^5"
|
73 |
},
|
74 |
-
"time": "2022-11-
|
75 |
"type": "library",
|
76 |
"extra": {
|
77 |
"branch-alias": {
|
@@ -414,6 +414,6 @@
|
|
414 |
"install-path": "../woocommerce/action-scheduler"
|
415 |
}
|
416 |
],
|
417 |
-
"dev":
|
418 |
"dev-package-names": []
|
419 |
}
|
2 |
"packages": [
|
3 |
{
|
4 |
"name": "freemius/wordpress-sdk",
|
5 |
+
"version": "2.5.3",
|
6 |
+
"version_normalized": "2.5.3.0",
|
7 |
"source": {
|
8 |
"type": "git",
|
9 |
"url": "https://github.com/Freemius/wordpress-sdk.git",
|
10 |
+
"reference": "2e56d683dd7b30445940679ecb401d2aff746c9e"
|
11 |
},
|
12 |
"dist": {
|
13 |
"type": "zip",
|
14 |
+
"url": "https://api.github.com/repos/Freemius/wordpress-sdk/zipball/2e56d683dd7b30445940679ecb401d2aff746c9e",
|
15 |
+
"reference": "2e56d683dd7b30445940679ecb401d2aff746c9e",
|
16 |
"shasum": ""
|
17 |
},
|
18 |
"require": {
|
19 |
"php": ">=5.2"
|
20 |
},
|
21 |
+
"time": "2022-12-05T10:31:45+00:00",
|
22 |
"type": "library",
|
23 |
"installation-source": "dist",
|
24 |
"notification-url": "https://packagist.org/downloads/",
|
38 |
],
|
39 |
"support": {
|
40 |
"issues": "https://github.com/Freemius/wordpress-sdk/issues",
|
41 |
+
"source": "https://github.com/Freemius/wordpress-sdk/tree/2.5.3"
|
42 |
},
|
43 |
"install-path": "../freemius/wordpress-sdk"
|
44 |
},
|
45 |
{
|
46 |
"name": "giggsey/libphonenumber-for-php",
|
47 |
+
"version": "8.13.1",
|
48 |
+
"version_normalized": "8.13.1.0",
|
49 |
"source": {
|
50 |
"type": "git",
|
51 |
"url": "https://github.com/giggsey/libphonenumber-for-php.git",
|
52 |
+
"reference": "58285eaba7cb388f57b5b1b3689a566694b4e043"
|
53 |
},
|
54 |
"dist": {
|
55 |
"type": "zip",
|
56 |
+
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/58285eaba7cb388f57b5b1b3689a566694b4e043",
|
57 |
+
"reference": "58285eaba7cb388f57b5b1b3689a566694b4e043",
|
58 |
"shasum": ""
|
59 |
},
|
60 |
"require": {
|
71 |
"symfony/console": "^2.8|^3.0|^v4.4|^v5.2",
|
72 |
"symfony/phpunit-bridge": "^4.2 || ^5"
|
73 |
},
|
74 |
+
"time": "2022-11-28T12:02:06+00:00",
|
75 |
"type": "library",
|
76 |
"extra": {
|
77 |
"branch-alias": {
|
414 |
"install-path": "../woocommerce/action-scheduler"
|
415 |
}
|
416 |
],
|
417 |
+
"dev": false,
|
418 |
"dev-package-names": []
|
419 |
}
|
vendor/composer/installed.php
CHANGED
@@ -3,26 +3,26 @@
|
|
3 |
'name' => 'sweetcode/pixel-manager-for-woocommerce',
|
4 |
'pretty_version' => 'dev-master',
|
5 |
'version' => 'dev-master',
|
6 |
-
'reference' => '
|
7 |
'type' => 'wordpress-plugin',
|
8 |
'install_path' => __DIR__ . '/../../',
|
9 |
'aliases' => array(),
|
10 |
-
'dev' =>
|
11 |
),
|
12 |
'versions' => array(
|
13 |
'freemius/wordpress-sdk' => array(
|
14 |
-
'pretty_version' => '2.5.
|
15 |
-
'version' => '2.5.
|
16 |
-
'reference' => '
|
17 |
'type' => 'library',
|
18 |
'install_path' => __DIR__ . '/../freemius/wordpress-sdk',
|
19 |
'aliases' => array(),
|
20 |
'dev_requirement' => false,
|
21 |
),
|
22 |
'giggsey/libphonenumber-for-php' => array(
|
23 |
-
'pretty_version' => '8.13.
|
24 |
-
'version' => '8.13.
|
25 |
-
'reference' => '
|
26 |
'type' => 'library',
|
27 |
'install_path' => __DIR__ . '/../giggsey/libphonenumber-for-php',
|
28 |
'aliases' => array(),
|
@@ -49,7 +49,7 @@
|
|
49 |
'sweetcode/pixel-manager-for-woocommerce' => array(
|
50 |
'pretty_version' => 'dev-master',
|
51 |
'version' => 'dev-master',
|
52 |
-
'reference' => '
|
53 |
'type' => 'wordpress-plugin',
|
54 |
'install_path' => __DIR__ . '/../../',
|
55 |
'aliases' => array(),
|
3 |
'name' => 'sweetcode/pixel-manager-for-woocommerce',
|
4 |
'pretty_version' => 'dev-master',
|
5 |
'version' => 'dev-master',
|
6 |
+
'reference' => '1f0fff3ecaa0fdc67ab860c80700a09fc214da62',
|
7 |
'type' => 'wordpress-plugin',
|
8 |
'install_path' => __DIR__ . '/../../',
|
9 |
'aliases' => array(),
|
10 |
+
'dev' => false,
|
11 |
),
|
12 |
'versions' => array(
|
13 |
'freemius/wordpress-sdk' => array(
|
14 |
+
'pretty_version' => '2.5.3',
|
15 |
+
'version' => '2.5.3.0',
|
16 |
+
'reference' => '2e56d683dd7b30445940679ecb401d2aff746c9e',
|
17 |
'type' => 'library',
|
18 |
'install_path' => __DIR__ . '/../freemius/wordpress-sdk',
|
19 |
'aliases' => array(),
|
20 |
'dev_requirement' => false,
|
21 |
),
|
22 |
'giggsey/libphonenumber-for-php' => array(
|
23 |
+
'pretty_version' => '8.13.1',
|
24 |
+
'version' => '8.13.1.0',
|
25 |
+
'reference' => '58285eaba7cb388f57b5b1b3689a566694b4e043',
|
26 |
'type' => 'library',
|
27 |
'install_path' => __DIR__ . '/../giggsey/libphonenumber-for-php',
|
28 |
'aliases' => array(),
|
49 |
'sweetcode/pixel-manager-for-woocommerce' => array(
|
50 |
'pretty_version' => 'dev-master',
|
51 |
'version' => 'dev-master',
|
52 |
+
'reference' => '1f0fff3ecaa0fdc67ab860c80700a09fc214da62',
|
53 |
'type' => 'wordpress-plugin',
|
54 |
'install_path' => __DIR__ . '/../../',
|
55 |
'aliases' => array(),
|
vendor/freemius/wordpress-sdk/assets/css/admin/add-ons.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);box-shadow:0 2px 1px -1px rgba(0,0,0,.3)}#fs_addons .fs-cards-list{list-style:none}#fs_addons .fs-cards-list .fs-card{float:left;height:152px;width:310px;padding:0;margin:0 0 30px 30px;font-size:14px;list-style:none;border:1px solid #ddd;cursor:pointer;position:relative}#fs_addons .fs-cards-list .fs-card .fs-overlay{position:absolute;left:0;right:0;bottom:0;top:0;z-index:9}#fs_addons .fs-cards-list .fs-card .fs-inner{background-color:#fff;overflow:hidden;height:100%;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner>ul{-moz-transition:all,.15s;-o-transition:all,.15s;-ms-transition:all,.15s;-webkit-transition:all,.15s;transition:all,.15s;left:0;right:0;top:0;position:absolute}#fs_addons .fs-cards-list .fs-card .fs-inner>ul>li{list-style:none;line-height:18px;padding:0 15px;width:100%;display:block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner{padding:0;margin:0;line-height:0;display:block;height:100px;background-repeat:repeat-x;background-size:100% 100%;-moz-transition:all,.15s;-o-transition:all,.15s;-ms-transition:all,.15s;-webkit-transition:all,.15s;transition:all,.15s}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner .fs-badge.fs-installed-addon-badge{font-size:1.02em;line-height:1.3em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-title{margin:10px 0 0 0;height:18px;overflow:hidden;color:#000;white-space:nowrap;text-overflow:ellipsis;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-offer{font-size:.9em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-description{background-color:#f9f9f9;padding:10px 15px 100px 15px;border-top:1px solid #eee;margin:0 0 10px 0;color:#777}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-tag{position:absolute;top:10px;right:0px;background:#adff2f;display:block;padding:2px 10px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.3);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.3);box-shadow:1px 1px 1px rgba(0,0,0,.3);text-transform:uppercase;font-size:.9em;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button,#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button-group{position:absolute;top:112px;right:10px}@media screen and (min-width: 960px){#fs_addons .fs-cards-list .fs-card:hover .fs-overlay{border:2px solid #29abe1;margin-left:-1px;margin-top:-1px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner ul{top:-100px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-title,#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-offer{color:#29abe1}}#TB_window,#TB_window iframe{width:821px !important}#plugin-information .fyi{width:266px !important}#plugin-information #section-holder{margin-right:299px}#plugin-information #section-description h2,#plugin-information #section-description h3,#plugin-information #section-description p,#plugin-information #section-description b,#plugin-information #section-description i,#plugin-information #section-description blockquote,#plugin-information #section-description li,#plugin-information #section-description ul,#plugin-information #section-description ol{clear:none}#plugin-information #section-description iframe{max-width:100%}#plugin-information #section-description .fs-selling-points{padding-bottom:10px;border-bottom:1px solid #ddd}#plugin-information #section-description .fs-selling-points ul{margin:0}#plugin-information #section-description .fs-selling-points ul li{padding:0;list-style:none outside none}#plugin-information #section-description .fs-selling-points ul li i.dashicons{color:#71ae00;font-size:3em;vertical-align:middle;line-height:30px;float:left;margin:0 0 0 -15px}#plugin-information #section-description .fs-selling-points ul li h3{margin:1em 30px !important}#plugin-information #section-description .fs-screenshots:after{content:"";display:table;clear:both}#plugin-information #section-description .fs-screenshots ul{list-style:none;margin:0}#plugin-information #section-description .fs-screenshots ul li{width:225px;height:225px;float:left;margin-bottom:20px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}#plugin-information #section-description .fs-screenshots ul li a{display:block;width:100%;height:100%;border:1px solid;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2);background-size:cover}#plugin-information #section-description .fs-screenshots ul li.odd{margin-right:20px}#plugin-information .plugin-information-pricing{margin:-16px;border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan h3{margin-top:0;padding:20px;font-size:16px}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper{border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab{cursor:pointer;position:relative;padding:0 10px;font-size:.9em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab label{text-transform:uppercase;color:green;background:#adff2f;position:absolute;left:-1px;right:-1px;bottom:100%;border:1px solid #006400;padding:2px;text-align:center;font-size:.9em;line-height:1em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab.nav-tab-active{cursor:default;background:#fffeec;border-bottom-color:#fffeec}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle h3{background:#fffeec;margin:0;padding-bottom:0;color:#0073aa}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .nav-tab-wrapper,#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .fs-billing-frequency{display:none}#plugin-information .plugin-information-pricing .fs-plan .fs-pricing-body{background:#fffeec;padding:20px}#plugin-information .plugin-information-pricing .fs-plan .button{width:100%;text-align:center;font-weight:bold;text-transform:uppercase;font-size:1.1em}#plugin-information .plugin-information-pricing .fs-plan label{white-space:nowrap}#plugin-information .plugin-information-pricing .fs-plan var{font-style:normal}#plugin-information .plugin-information-pricing .fs-plan .fs-billing-frequency,#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-align:center;display:block;font-weight:bold;margin-bottom:10px;text-transform:uppercase;background:#f3f3f3;padding:2px;border:1px solid #ccc}#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-transform:none;color:green;background:#adff2f}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms{font-size:.9em}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms i{float:left;margin:0 0 0 -15px}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms li{margin:10px 0 0 0}#plugin-information #section-features .fs-features{margin:-20px -26px}#plugin-information #section-features table{width:100%;border-spacing:0;border-collapse:separate}#plugin-information #section-features table thead th{padding:10px 0}#plugin-information #section-features table thead .fs-price{color:#71ae00;font-weight:normal;display:block;text-align:center}#plugin-information #section-features table tbody td{border-top:1px solid #ccc;padding:10px 0;text-align:center;width:100px;color:#71ae00}#plugin-information #section-features table tbody td:first-child{text-align:left;width:auto;color:inherit;padding-left:26px}#plugin-information #section-features table tbody tr.fs-odd td{background:#fefefe}#plugin-information #section-features .dashicons-yes{width:30px;height:30px;font-size:30px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button,#plugin-information .fs-dropdown .button-group .button{position:relative;width:auto;top:0;right:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button:focus,#plugin-information .fs-dropdown .button-group .button:focus{z-index:10}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .fs-dropdown-arrow,#plugin-information .fs-dropdown .button-group .fs-dropdown-arrow{border-top:6px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;top:12px;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button){border-bottom-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button{border-bottom-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button){border-top-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active.up .fs-dropdown-arrow-button{border-top-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list,#plugin-information .fs-dropdown .fs-dropdown-list{position:absolute;right:-1px;top:100%;margin-left:auto;padding:3px 0;border:1px solid #bfbfbf;background-color:#fff;z-index:1;width:230px;text-align:left;-moz-box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);-webkit-box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12)}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li,#plugin-information .fs-dropdown .fs-dropdown-list li{margin:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li a,#plugin-information .fs-dropdown .fs-dropdown-list li a{display:block;padding:5px 10px;text-decoration:none;text-shadow:none}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover,#plugin-information .fs-dropdown .fs-dropdown-list li:hover{background-color:#0074a3;color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover a,#plugin-information .fs-dropdown .fs-dropdown-list li:hover a{color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown:not(.up) .fs-dropdown-list,#plugin-information .fs-dropdown:not(.up) .fs-dropdown-list{-moz-border-radius:3px 0 3px 3px;-webkit-border-radius:3px 0 3px 3px;border-radius:3px 0 3px 3px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.up .fs-dropdown-list,#plugin-information .fs-dropdown.up .fs-dropdown-list{-moz-border-radius:3px 3px 0 3px;-webkit-border-radius:3px 3px 0 3px;border-radius:3px 3px 0 3px}#plugin-information .fs-dropdown .button-group{width:100%}#plugin-information .fs-dropdown .button-group .button{float:none;font-size:14px;font-weight:normal;text-transform:none}#plugin-information .fs-dropdown .fs-dropdown-list{margin-top:1px}#plugin-information .fs-dropdown.up .fs-dropdown-list{top:auto;bottom:100%;margin-bottom:2px}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group{text-align:center;display:table}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button{display:table-cell}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button:not(.fs-dropdown-arrow-button){left:1px;width:100%}#plugin-information-footer>.button,#plugin-information-footer .fs-dropdown{position:relative;top:3px}#plugin-information-footer>.button.left,#plugin-information-footer .fs-dropdown.left{float:left}#plugin-information-footer>.right,#plugin-information-footer .fs-dropdown{float:right}@media screen and (max-width: 961px){#fs_addons .fs-cards-list .fs-card{height:265px}}
|
1 |
+
.fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);box-shadow:0 2px 1px -1px rgba(0,0,0,.3)}#fs_addons .fs-cards-list{list-style:none}#fs_addons .fs-cards-list .fs-card{float:left;height:152px;width:310px;padding:0;margin:0 0 30px 30px;font-size:14px;list-style:none;border:1px solid #ddd;cursor:pointer;position:relative}#fs_addons .fs-cards-list .fs-card .fs-overlay{position:absolute;left:0;right:0;bottom:0;top:0;z-index:9}#fs_addons .fs-cards-list .fs-card .fs-inner{background-color:#fff;overflow:hidden;height:100%;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner>ul{-moz-transition:all,.15s;-o-transition:all,.15s;-ms-transition:all,.15s;-webkit-transition:all,.15s;transition:all,.15s;left:0;right:0;top:0;position:absolute}#fs_addons .fs-cards-list .fs-card .fs-inner>ul>li{list-style:none;line-height:18px;padding:0 15px;width:100%;display:block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner{padding:0;margin:0;line-height:0;display:block;height:100px;background-repeat:repeat-x;background-size:100% 100%;-moz-transition:all,.15s;-o-transition:all,.15s;-ms-transition:all,.15s;-webkit-transition:all,.15s;transition:all,.15s}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner .fs-badge.fs-installed-addon-badge{font-size:1.02em;line-height:1.3em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-title{margin:10px 0 0 0;height:18px;overflow:hidden;color:#000;white-space:nowrap;text-overflow:ellipsis;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-offer{font-size:.9em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-description{background-color:#f9f9f9;padding:10px 15px 100px 15px;border-top:1px solid #eee;margin:0 0 10px 0;color:#777}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-tag{position:absolute;top:10px;right:0px;background:#adff2f;display:block;padding:2px 10px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.3);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.3);box-shadow:1px 1px 1px rgba(0,0,0,.3);text-transform:uppercase;font-size:.9em;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button,#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button-group{position:absolute;top:112px;right:10px}@media screen and (min-width: 960px){#fs_addons .fs-cards-list .fs-card:hover .fs-overlay{border:2px solid #29abe1;margin-left:-1px;margin-top:-1px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner ul{top:-100px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-title,#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-offer{color:#29abe1}}#TB_window,#TB_window iframe{width:821px !important}#plugin-information .fyi{width:266px !important}#plugin-information #section-holder{margin-right:299px;clear:none}#plugin-information #section-description h2,#plugin-information #section-description h3,#plugin-information #section-description p,#plugin-information #section-description b,#plugin-information #section-description i,#plugin-information #section-description blockquote,#plugin-information #section-description li,#plugin-information #section-description ul,#plugin-information #section-description ol{clear:none}#plugin-information #section-description iframe{max-width:100%}#plugin-information #section-description .fs-selling-points{padding-bottom:10px;border-bottom:1px solid #ddd}#plugin-information #section-description .fs-selling-points ul{margin:0}#plugin-information #section-description .fs-selling-points ul li{padding:0;list-style:none outside none}#plugin-information #section-description .fs-selling-points ul li i.dashicons{color:#71ae00;font-size:3em;vertical-align:middle;line-height:30px;float:left;margin:0 0 0 -15px}#plugin-information #section-description .fs-selling-points ul li h3{margin:1em 30px !important}#plugin-information #section-description .fs-screenshots:after{content:"";display:table;clear:both}#plugin-information #section-description .fs-screenshots ul{list-style:none;margin:0}#plugin-information #section-description .fs-screenshots ul li{width:225px;height:225px;float:left;margin-bottom:20px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}#plugin-information #section-description .fs-screenshots ul li a{display:block;width:100%;height:100%;border:1px solid;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2);background-size:cover}#plugin-information #section-description .fs-screenshots ul li.odd{margin-right:20px}#plugin-information .plugin-information-pricing{margin:-16px;border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan h3{margin-top:0;padding:20px;font-size:16px}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper{border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab{cursor:pointer;position:relative;padding:0 10px;font-size:.9em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab label{text-transform:uppercase;color:green;background:#adff2f;position:absolute;left:-1px;right:-1px;bottom:100%;border:1px solid #006400;padding:2px;text-align:center;font-size:.9em;line-height:1em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab.nav-tab-active{cursor:default;background:#fffeec;border-bottom-color:#fffeec}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle h3{background:#fffeec;margin:0;padding-bottom:0;color:#0073aa}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .nav-tab-wrapper,#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .fs-billing-frequency{display:none}#plugin-information .plugin-information-pricing .fs-plan .fs-pricing-body{background:#fffeec;padding:20px}#plugin-information .plugin-information-pricing .fs-plan .button{width:100%;text-align:center;font-weight:bold;text-transform:uppercase;font-size:1.1em}#plugin-information .plugin-information-pricing .fs-plan label{white-space:nowrap}#plugin-information .plugin-information-pricing .fs-plan var{font-style:normal}#plugin-information .plugin-information-pricing .fs-plan .fs-billing-frequency,#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-align:center;display:block;font-weight:bold;margin-bottom:10px;text-transform:uppercase;background:#f3f3f3;padding:2px;border:1px solid #ccc}#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-transform:none;color:green;background:#adff2f}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms{font-size:.9em}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms i{float:left;margin:0 0 0 -15px}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms li{margin:10px 0 0 0}#plugin-information #section-features .fs-features{margin:-20px -26px}#plugin-information #section-features table{width:100%;border-spacing:0;border-collapse:separate}#plugin-information #section-features table thead th{padding:10px 0}#plugin-information #section-features table thead .fs-price{color:#71ae00;font-weight:normal;display:block;text-align:center}#plugin-information #section-features table tbody td{border-top:1px solid #ccc;padding:10px 0;text-align:center;width:100px;color:#71ae00}#plugin-information #section-features table tbody td:first-child{text-align:left;width:auto;color:inherit;padding-left:26px}#plugin-information #section-features table tbody tr.fs-odd td{background:#fefefe}#plugin-information #section-features .dashicons-yes{width:30px;height:30px;font-size:30px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button,#plugin-information .fs-dropdown .button-group .button{position:relative;width:auto;top:0;right:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button:focus,#plugin-information .fs-dropdown .button-group .button:focus{z-index:10}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .fs-dropdown-arrow,#plugin-information .fs-dropdown .button-group .fs-dropdown-arrow{border-top:6px solid #fff;border-right:4px solid transparent;border-left:4px solid transparent;top:12px;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button){border-bottom-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button{border-bottom-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button){border-top-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active.up .fs-dropdown-arrow-button{border-top-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list,#plugin-information .fs-dropdown .fs-dropdown-list{position:absolute;right:-1px;top:100%;margin-left:auto;padding:3px 0;border:1px solid #bfbfbf;background-color:#fff;z-index:1;width:230px;text-align:left;-moz-box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);-webkit-box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12)}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li,#plugin-information .fs-dropdown .fs-dropdown-list li{margin:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li a,#plugin-information .fs-dropdown .fs-dropdown-list li a{display:block;padding:5px 10px;text-decoration:none;text-shadow:none}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover,#plugin-information .fs-dropdown .fs-dropdown-list li:hover{background-color:#0074a3;color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover a,#plugin-information .fs-dropdown .fs-dropdown-list li:hover a{color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown:not(.up) .fs-dropdown-list,#plugin-information .fs-dropdown:not(.up) .fs-dropdown-list{-moz-border-radius:3px 0 3px 3px;-webkit-border-radius:3px 0 3px 3px;border-radius:3px 0 3px 3px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.up .fs-dropdown-list,#plugin-information .fs-dropdown.up .fs-dropdown-list{-moz-border-radius:3px 3px 0 3px;-webkit-border-radius:3px 3px 0 3px;border-radius:3px 3px 0 3px}#plugin-information .fs-dropdown .button-group{width:100%}#plugin-information .fs-dropdown .button-group .button{float:none;font-size:14px;font-weight:normal;text-transform:none}#plugin-information .fs-dropdown .fs-dropdown-list{margin-top:1px}#plugin-information .fs-dropdown.up .fs-dropdown-list{top:auto;bottom:100%;margin-bottom:2px}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group{text-align:center;display:table}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button{display:table-cell}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button:not(.fs-dropdown-arrow-button){left:1px;width:100%}#plugin-information-footer>.button,#plugin-information-footer .fs-dropdown{position:relative;top:3px}#plugin-information-footer>.button.left,#plugin-information-footer .fs-dropdown.left{float:left}#plugin-information-footer>.right,#plugin-information-footer .fs-dropdown{float:right}@media screen and (max-width: 961px){#fs_addons .fs-cards-list .fs-card{height:265px}}
|
vendor/freemius/wordpress-sdk/includes/class-freemius.php
CHANGED
@@ -3648,7 +3648,7 @@
|
|
3648 |
} else {
|
3649 |
// Add hidden debug page.
|
3650 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
3651 |
-
|
3652 |
$title,
|
3653 |
$title,
|
3654 |
'manage_options',
|
@@ -7315,12 +7315,12 @@
|
|
7315 |
|
7316 |
$this->_admin_notices->add_sticky(
|
7317 |
sprintf(
|
7318 |
-
$this->get_text_inline( 'You should receive
|
7319 |
'<b>' . $this->get_plugin_name() . '</b>',
|
7320 |
'<b>' . $email . '</b>',
|
7321 |
( $is_pending_trial ?
|
7322 |
$this->get_text_inline( 'start the trial', 'start-the-trial' ) :
|
7323 |
-
$this->get_text_inline( 'complete the
|
7324 |
),
|
7325 |
'activation_pending',
|
7326 |
'Thanks!'
|
@@ -18975,7 +18975,7 @@
|
|
18975 |
if ( ! $this->has_settings_menu() ) {
|
18976 |
// Add the opt-in page without a menu item.
|
18977 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
18978 |
-
|
18979 |
$this->get_plugin_name(),
|
18980 |
$this->get_plugin_name(),
|
18981 |
'manage_options',
|
@@ -19407,7 +19407,7 @@
|
|
19407 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
19408 |
$item['show_submenu'] ?
|
19409 |
$top_level_menu_slug :
|
19410 |
-
|
19411 |
$item['page_title'],
|
19412 |
$menu_item,
|
19413 |
$capability,
|
@@ -19422,7 +19422,7 @@
|
|
19422 |
FS_Admin_Menu_Manager::add_subpage(
|
19423 |
$item['show_submenu'] ?
|
19424 |
$top_level_menu_slug :
|
19425 |
-
|
19426 |
$item['page_title'],
|
19427 |
$menu_item,
|
19428 |
$capability,
|
3648 |
} else {
|
3649 |
// Add hidden debug page.
|
3650 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
3651 |
+
'',
|
3652 |
$title,
|
3653 |
$title,
|
3654 |
'manage_options',
|
7315 |
|
7316 |
$this->_admin_notices->add_sticky(
|
7317 |
sprintf(
|
7318 |
+
$this->get_text_inline( 'You should receive a confirmation email for %s to your mailbox at %s. Please make sure you click the button in that email to %s.', 'pending-activation-message' ),
|
7319 |
'<b>' . $this->get_plugin_name() . '</b>',
|
7320 |
'<b>' . $email . '</b>',
|
7321 |
( $is_pending_trial ?
|
7322 |
$this->get_text_inline( 'start the trial', 'start-the-trial' ) :
|
7323 |
+
$this->get_text_inline( 'complete the opt-in', 'complete-the-opt-in' ) )
|
7324 |
),
|
7325 |
'activation_pending',
|
7326 |
'Thanks!'
|
18975 |
if ( ! $this->has_settings_menu() ) {
|
18976 |
// Add the opt-in page without a menu item.
|
18977 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
18978 |
+
'',
|
18979 |
$this->get_plugin_name(),
|
18980 |
$this->get_plugin_name(),
|
18981 |
'manage_options',
|
19407 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
19408 |
$item['show_submenu'] ?
|
19409 |
$top_level_menu_slug :
|
19410 |
+
'',
|
19411 |
$item['page_title'],
|
19412 |
$menu_item,
|
19413 |
$capability,
|
19422 |
FS_Admin_Menu_Manager::add_subpage(
|
19423 |
$item['show_submenu'] ?
|
19424 |
$top_level_menu_slug :
|
19425 |
+
'',
|
19426 |
$item['page_title'],
|
19427 |
$menu_item,
|
19428 |
$capability,
|
vendor/freemius/wordpress-sdk/includes/class-fs-plugin-updater.php
CHANGED
@@ -417,7 +417,7 @@
|
|
417 |
|
418 |
$themes_update = get_site_transient( 'update_themes' );
|
419 |
if ( ! isset( $themes_update->response[ $theme_basename ] ) ||
|
420 |
-
|
421 |
) {
|
422 |
return $prepared_themes;
|
423 |
}
|
@@ -636,7 +636,7 @@
|
|
636 |
foreach ( $this->_translation_updates as $translation_update ) {
|
637 |
$lang = $translation_update['language'];
|
638 |
if ( ! isset( $current_plugin_translation_updates_map[ $lang ] ) ||
|
639 |
-
|
640 |
) {
|
641 |
$current_plugin_translation_updates_map[ $lang ] = $translation_update;
|
642 |
}
|
@@ -660,13 +660,14 @@
|
|
660 |
* @return object
|
661 |
*/
|
662 |
function get_update_details( FS_Plugin_Tag $new_version ) {
|
663 |
-
$update
|
664 |
-
$update->slug
|
665 |
-
$update->new_version
|
666 |
-
$update->url
|
667 |
-
$update->package
|
668 |
-
$update->tested
|
669 |
-
$update->requires
|
|
|
670 |
|
671 |
$icon = $this->_fs->get_local_icon_url();
|
672 |
|
@@ -808,9 +809,9 @@
|
|
808 |
$basename = $this->_fs->get_plugin_basename();
|
809 |
|
810 |
if ( ! is_object( $transient_data ) ||
|
811 |
-
|
812 |
! is_array( $transient_data->response ) ||
|
813 |
-
|
814 |
) {
|
815 |
return;
|
816 |
}
|
@@ -1095,6 +1096,7 @@ if ( !isset($info->error) ) {
|
|
1095 |
if ( ! $plugin_in_repo ) {
|
1096 |
$data->last_updated = ! is_null( $new_version->updated ) ? $new_version->updated : $new_version->created;
|
1097 |
$data->requires = $new_version->requires_platform_version;
|
|
|
1098 |
$data->tested = $new_version->tested_up_to_version;
|
1099 |
}
|
1100 |
|
@@ -1148,9 +1150,28 @@ if ( !isset($info->error) ) {
|
|
1148 |
}
|
1149 |
}
|
1150 |
|
|
|
|
|
|
|
|
|
1151 |
return $data;
|
1152 |
}
|
1153 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1154 |
/**
|
1155 |
* @author Vova Feldman (@svovaf)
|
1156 |
* @since 1.2.1.7
|
417 |
|
418 |
$themes_update = get_site_transient( 'update_themes' );
|
419 |
if ( ! isset( $themes_update->response[ $theme_basename ] ) ||
|
420 |
+
empty( $themes_update->response[ $theme_basename ]['package'] )
|
421 |
) {
|
422 |
return $prepared_themes;
|
423 |
}
|
636 |
foreach ( $this->_translation_updates as $translation_update ) {
|
637 |
$lang = $translation_update['language'];
|
638 |
if ( ! isset( $current_plugin_translation_updates_map[ $lang ] ) ||
|
639 |
+
version_compare( $translation_update['version'], $current_plugin_translation_updates_map[ $lang ]['version'], '>' )
|
640 |
) {
|
641 |
$current_plugin_translation_updates_map[ $lang ] = $translation_update;
|
642 |
}
|
660 |
* @return object
|
661 |
*/
|
662 |
function get_update_details( FS_Plugin_Tag $new_version ) {
|
663 |
+
$update = new stdClass();
|
664 |
+
$update->slug = $this->_fs->get_slug();
|
665 |
+
$update->new_version = $new_version->version;
|
666 |
+
$update->url = WP_FS__ADDRESS;
|
667 |
+
$update->package = $new_version->url;
|
668 |
+
$update->tested = self::get_tested_wp_version( $new_version->tested_up_to_version );
|
669 |
+
$update->requires = $new_version->requires_platform_version;
|
670 |
+
$update->requires_php = $new_version->requires_programming_language_version;
|
671 |
|
672 |
$icon = $this->_fs->get_local_icon_url();
|
673 |
|
809 |
$basename = $this->_fs->get_plugin_basename();
|
810 |
|
811 |
if ( ! is_object( $transient_data ) ||
|
812 |
+
! isset( $transient_data->response ) ||
|
813 |
! is_array( $transient_data->response ) ||
|
814 |
+
empty( $transient_data->response[ $basename ] )
|
815 |
) {
|
816 |
return;
|
817 |
}
|
1096 |
if ( ! $plugin_in_repo ) {
|
1097 |
$data->last_updated = ! is_null( $new_version->updated ) ? $new_version->updated : $new_version->created;
|
1098 |
$data->requires = $new_version->requires_platform_version;
|
1099 |
+
$data->requires_php = $new_version->requires_programming_language_version;
|
1100 |
$data->tested = $new_version->tested_up_to_version;
|
1101 |
}
|
1102 |
|
1150 |
}
|
1151 |
}
|
1152 |
|
1153 |
+
if ( ! empty( $data->tested ) ) {
|
1154 |
+
$data->tested = self::get_tested_wp_version( $data->tested );
|
1155 |
+
}
|
1156 |
+
|
1157 |
return $data;
|
1158 |
}
|
1159 |
|
1160 |
+
/**
|
1161 |
+
* @since 2.5.3 If the current WordPress version is a patch of the tested version (e.g., 6.1.2 is a patch of 6.1), then override the tested version with the patch so developers won't need to release a new version just to bump the latest supported WP version.
|
1162 |
+
*
|
1163 |
+
* @param string|null $tested_up_to
|
1164 |
+
*
|
1165 |
+
* @return string|null
|
1166 |
+
*/
|
1167 |
+
private static function get_tested_wp_version( $tested_up_to ) {
|
1168 |
+
$current_wp_version = get_bloginfo( 'version' );
|
1169 |
+
|
1170 |
+
return ( ! empty($tested_up_to) && fs_starts_with( $current_wp_version, $tested_up_to . '.' ) ) ?
|
1171 |
+
$current_wp_version :
|
1172 |
+
$tested_up_to;
|
1173 |
+
}
|
1174 |
+
|
1175 |
/**
|
1176 |
* @author Vova Feldman (@svovaf)
|
1177 |
* @since 1.2.1.7
|
vendor/freemius/wordpress-sdk/includes/entities/class-fs-plugin-tag.php
CHANGED
@@ -23,6 +23,10 @@
|
|
23 |
* @var string
|
24 |
*/
|
25 |
public $requires_platform_version;
|
|
|
|
|
|
|
|
|
26 |
/**
|
27 |
* @var string
|
28 |
*/
|
23 |
* @var string
|
24 |
*/
|
25 |
public $requires_platform_version;
|
26 |
+
/**
|
27 |
+
* @var string
|
28 |
+
*/
|
29 |
+
public $requires_programming_language_version;
|
30 |
/**
|
31 |
* @var string
|
32 |
*/
|
vendor/freemius/wordpress-sdk/includes/fs-plugin-info-dialog.php
CHANGED
@@ -311,6 +311,7 @@
|
|
311 |
$data->version = $latest->version;
|
312 |
$data->last_updated = $latest->created;
|
313 |
$data->requires = $latest->requires_platform_version;
|
|
|
314 |
$data->tested = $latest->tested_up_to_version;
|
315 |
} else if ( ! empty( $current_addon_version ) ) {
|
316 |
$data->version = $current_addon_version;
|
@@ -1344,7 +1345,10 @@
|
|
1344 |
?>
|
1345 |
<li>
|
1346 |
<strong><?php fs_esc_html_echo_inline( 'Requires WordPress Version', 'requires-wordpress-version', $api->slug ) ?>
|
1347 |
-
:</strong> <?php echo esc_html( sprintf(
|
|
|
|
|
|
|
1348 |
</li>
|
1349 |
<?php
|
1350 |
}
|
@@ -1356,6 +1360,19 @@
|
|
1356 |
</li>
|
1357 |
<?php
|
1358 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1359 |
if ( ! empty( $api->downloaded ) ) {
|
1360 |
?>
|
1361 |
<li>
|
@@ -1485,9 +1502,43 @@
|
|
1485 |
</div>
|
1486 |
<div id="section-holder" class="wrap">
|
1487 |
<?php
|
1488 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1489 |
echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text_inline( 'Warning', 'warning', $api->slug ) . ':</strong> ' . fs_text_inline( 'This plugin has not been tested with your current version of WordPress.', 'not-tested-warning', $api->slug ) . '</p></div>';
|
1490 |
-
} else if ( !
|
1491 |
echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text_inline( 'Warning', 'warning', $api->slug ) . ':</strong> ' . fs_text_inline( 'This plugin has not been marked as compatible with your version of WordPress.', 'not-compatible-warning', $api->slug ) . '</p></div>';
|
1492 |
}
|
1493 |
|
311 |
$data->version = $latest->version;
|
312 |
$data->last_updated = $latest->created;
|
313 |
$data->requires = $latest->requires_platform_version;
|
314 |
+
$data->requires_php = $latest->requires_programming_language_version;
|
315 |
$data->tested = $latest->tested_up_to_version;
|
316 |
} else if ( ! empty( $current_addon_version ) ) {
|
317 |
$data->version = $current_addon_version;
|
1345 |
?>
|
1346 |
<li>
|
1347 |
<strong><?php fs_esc_html_echo_inline( 'Requires WordPress Version', 'requires-wordpress-version', $api->slug ) ?>
|
1348 |
+
:</strong> <?php echo esc_html( sprintf(
|
1349 |
+
/* translators: %s: Version number. */
|
1350 |
+
fs_text_inline( '%s or higher', 'x-or-higher', $api->slug ), $api->requires )
|
1351 |
+
) ?>
|
1352 |
</li>
|
1353 |
<?php
|
1354 |
}
|
1360 |
</li>
|
1361 |
<?php
|
1362 |
}
|
1363 |
+
if ( ! empty( $api->requires_php ) ) {
|
1364 |
+
?>
|
1365 |
+
<li>
|
1366 |
+
<strong><?php fs_esc_html_echo_inline( 'Requires PHP Version', 'requires-php-version', $api->slug ); ?>:</strong>
|
1367 |
+
<?php
|
1368 |
+
echo esc_html( sprintf(
|
1369 |
+
/* translators: %s: Version number. */
|
1370 |
+
fs_text_inline( '%s or higher', 'x-or-higher', $api->slug ), $api->requires_php )
|
1371 |
+
);
|
1372 |
+
?>
|
1373 |
+
</li>
|
1374 |
+
<?php
|
1375 |
+
}
|
1376 |
if ( ! empty( $api->downloaded ) ) {
|
1377 |
?>
|
1378 |
<li>
|
1502 |
</div>
|
1503 |
<div id="section-holder" class="wrap">
|
1504 |
<?php
|
1505 |
+
$requires_php = isset( $api->requires_php ) ? $api->requires_php : null;
|
1506 |
+
$requires_wp = isset( $api->requires ) ? $api->requires : null;
|
1507 |
+
|
1508 |
+
$compatible_php = empty( $requires_php ) || version_compare( PHP_VERSION, $requires_php, '>=' );
|
1509 |
+
|
1510 |
+
// Strip off any -alpha, -RC, -beta, -src suffixes.
|
1511 |
+
list( $wp_version ) = explode( '-', $GLOBALS['wp_version'] );
|
1512 |
+
|
1513 |
+
$compatible_wp = empty( $requires_wp ) || version_compare( $wp_version, $requires_wp, '>=' );
|
1514 |
+
$tested_wp = ( empty( $api->tested ) || version_compare( $wp_version, $api->tested, '<=' ) );
|
1515 |
+
|
1516 |
+
if ( ! $compatible_php ) {
|
1517 |
+
echo '<div class="notice notice-error notice-alt"><p><strong>' . fs_text_inline( 'Error', 'error', $api->slug ) . ':</strong> ' . fs_text_inline( 'This plugin requires a newer version of PHP.', 'newer-php-required-error', $api->slug );
|
1518 |
+
|
1519 |
+
if ( current_user_can( 'update_php' ) ) {
|
1520 |
+
$wp_get_update_php_url = function_exists( 'wp_get_update_php_url' ) ?
|
1521 |
+
wp_get_update_php_url() :
|
1522 |
+
'https://wordpress.org/support/update-php/';
|
1523 |
+
|
1524 |
+
printf(
|
1525 |
+
/* translators: %s: URL to Update PHP page. */
|
1526 |
+
' ' . fs_text_inline( '<a href="%s" target="_blank">Click here to learn more about updating PHP</a>.', 'php-update-learn-more-link', $api->slug ),
|
1527 |
+
esc_url( $wp_get_update_php_url )
|
1528 |
+
);
|
1529 |
+
|
1530 |
+
if ( function_exists( 'wp_update_php_annotation' ) ) {
|
1531 |
+
wp_update_php_annotation( '</p><p><em>', '</em>' );
|
1532 |
+
}
|
1533 |
+
} else {
|
1534 |
+
echo '</p>';
|
1535 |
+
}
|
1536 |
+
echo '</div>';
|
1537 |
+
}
|
1538 |
+
|
1539 |
+
if ( ! $tested_wp ) {
|
1540 |
echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text_inline( 'Warning', 'warning', $api->slug ) . ':</strong> ' . fs_text_inline( 'This plugin has not been tested with your current version of WordPress.', 'not-tested-warning', $api->slug ) . '</p></div>';
|
1541 |
+
} else if ( ! $compatible_wp ) {
|
1542 |
echo '<div class="notice notice-warning"><p>' . '<strong>' . fs_text_inline( 'Warning', 'warning', $api->slug ) . ':</strong> ' . fs_text_inline( 'This plugin has not been marked as compatible with your version of WordPress.', 'not-compatible-warning', $api->slug ) . '</p></div>';
|
1543 |
}
|
1544 |
|
vendor/freemius/wordpress-sdk/languages/freemius-cs_CZ.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-da_DK.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-de_DE.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-en.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-es_ES.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-fr_FR.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-he_IL.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-hu_HU.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-it_IT.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-ja.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-nl_NL.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-ru_RU.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-ta.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius-zh_CN.mo
CHANGED
Binary file
|
vendor/freemius/wordpress-sdk/languages/freemius.pot
CHANGED
@@ -28,7 +28,7 @@ msgstr ""
|
|
28 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
29 |
msgstr ""
|
30 |
|
31 |
-
#: includes/class-freemius.php:1978
|
32 |
msgid "Error"
|
33 |
msgstr ""
|
34 |
|
@@ -214,7 +214,7 @@ msgid "Purchase License"
|
|
214 |
msgstr ""
|
215 |
|
216 |
#: includes/class-freemius.php:7318, templates/connect.php:216
|
217 |
-
msgid "You should receive
|
218 |
msgstr ""
|
219 |
|
220 |
#: includes/class-freemius.php:7322
|
@@ -222,7 +222,7 @@ msgid "start the trial"
|
|
222 |
msgstr ""
|
223 |
|
224 |
#: includes/class-freemius.php:7323, templates/connect.php:220
|
225 |
-
msgid "complete the
|
226 |
msgstr ""
|
227 |
|
228 |
#: includes/class-freemius.php:7456
|
@@ -246,7 +246,7 @@ msgstr ""
|
|
246 |
msgid "The upgrade of %s was successfully completed."
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: includes/class-freemius.php:10709, includes/class-fs-plugin-updater.php:
|
250 |
msgid "Add-On"
|
251 |
msgstr ""
|
252 |
|
@@ -708,115 +708,115 @@ msgstr ""
|
|
708 |
msgid "Opt In"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: includes/class-freemius.php:
|
712 |
msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: includes/class-freemius.php:
|
716 |
msgid "Activate %s features"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/class-freemius.php:
|
720 |
msgid "Please follow these steps to complete the upgrade"
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: includes/class-freemius.php:
|
724 |
msgid "Download the latest %s version"
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: includes/class-freemius.php:
|
728 |
msgid "Upload and activate the downloaded version"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: includes/class-freemius.php:
|
732 |
msgid "How to upload and activate?"
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: includes/class-freemius.php:
|
736 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: includes/class-freemius.php:
|
740 |
msgid "Auto installation only works for opted-in users."
|
741 |
msgstr ""
|
742 |
|
743 |
-
#: includes/class-freemius.php:
|
744 |
msgid "Invalid module ID."
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: includes/class-freemius.php:
|
748 |
msgid "Premium version already active."
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: includes/class-freemius.php:
|
752 |
msgid "You do not have a valid license to access the premium version."
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: includes/class-freemius.php:
|
756 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: includes/class-freemius.php:
|
760 |
msgid "Premium add-on version already installed."
|
761 |
msgstr ""
|
762 |
|
763 |
-
#: includes/class-freemius.php:
|
764 |
msgid "View paid features"
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: includes/class-freemius.php:
|
768 |
msgid "Thank you so much for using %s and its add-ons!"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: includes/class-freemius.php:
|
772 |
msgid "Thank you so much for using %s!"
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: includes/class-freemius.php:
|
776 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: includes/class-freemius.php:
|
780 |
msgid "Thank you so much for using our products!"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: includes/class-freemius.php:
|
784 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: includes/class-freemius.php:
|
788 |
msgid "%s and its add-ons"
|
789 |
msgstr ""
|
790 |
|
791 |
-
#: includes/class-freemius.php:
|
792 |
msgid "Products"
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: includes/class-freemius.php:
|
796 |
msgid "Yes"
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: includes/class-freemius.php:
|
800 |
msgid "send me security & feature updates, educational content and offers."
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: includes/class-freemius.php:
|
804 |
msgid "No"
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: includes/class-freemius.php:
|
808 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
809 |
msgstr ""
|
810 |
|
811 |
-
#: includes/class-freemius.php:
|
812 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
|
813 |
msgstr ""
|
814 |
|
815 |
-
#: includes/class-freemius.php:
|
816 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
817 |
msgstr ""
|
818 |
|
819 |
-
#: includes/class-freemius.php:
|
820 |
msgid "License key is empty."
|
821 |
msgstr ""
|
822 |
|
@@ -844,314 +844,326 @@ msgstr ""
|
|
844 |
msgid "Important Upgrade Notice:"
|
845 |
msgstr ""
|
846 |
|
847 |
-
#: includes/class-fs-plugin-updater.php:
|
848 |
msgid "Installing plugin: %s"
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: includes/class-fs-plugin-updater.php:
|
852 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: includes/class-fs-plugin-updater.php:
|
856 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: includes/fs-plugin-info-dialog.php:
|
860 |
msgid "Purchase More"
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: includes/fs-plugin-info-dialog.php:
|
864 |
msgctxt "verb"
|
865 |
msgid "Purchase"
|
866 |
msgstr ""
|
867 |
|
868 |
-
#: includes/fs-plugin-info-dialog.php:
|
869 |
msgid "Start my free %s"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: includes/fs-plugin-info-dialog.php:
|
873 |
msgid "Install Free Version Update Now"
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: includes/fs-plugin-info-dialog.php:
|
877 |
msgid "Install Update Now"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: includes/fs-plugin-info-dialog.php:
|
881 |
msgid "Install Free Version Now"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: includes/fs-plugin-info-dialog.php:
|
885 |
msgid "Install Now"
|
886 |
msgstr ""
|
887 |
|
888 |
-
#: includes/fs-plugin-info-dialog.php:
|
889 |
msgctxt "as download latest version"
|
890 |
msgid "Download Latest Free Version"
|
891 |
msgstr ""
|
892 |
|
893 |
-
#: includes/fs-plugin-info-dialog.php:
|
894 |
msgctxt "as download latest version"
|
895 |
msgid "Download Latest"
|
896 |
msgstr ""
|
897 |
|
898 |
-
#: includes/fs-plugin-info-dialog.php:
|
899 |
msgid "Activate this add-on"
|
900 |
msgstr ""
|
901 |
|
902 |
-
#: includes/fs-plugin-info-dialog.php:
|
903 |
msgid "Activate Free Version"
|
904 |
msgstr ""
|
905 |
|
906 |
-
#: includes/fs-plugin-info-dialog.php:
|
907 |
msgid "Activate"
|
908 |
msgstr ""
|
909 |
|
910 |
-
#: includes/fs-plugin-info-dialog.php:
|
911 |
msgctxt "Plugin installer section title"
|
912 |
msgid "Description"
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: includes/fs-plugin-info-dialog.php:
|
916 |
msgctxt "Plugin installer section title"
|
917 |
msgid "Installation"
|
918 |
msgstr ""
|
919 |
|
920 |
-
#: includes/fs-plugin-info-dialog.php:
|
921 |
msgctxt "Plugin installer section title"
|
922 |
msgid "FAQ"
|
923 |
msgstr ""
|
924 |
|
925 |
-
#: includes/fs-plugin-info-dialog.php:
|
926 |
msgid "Screenshots"
|
927 |
msgstr ""
|
928 |
|
929 |
-
#: includes/fs-plugin-info-dialog.php:
|
930 |
msgctxt "Plugin installer section title"
|
931 |
msgid "Changelog"
|
932 |
msgstr ""
|
933 |
|
934 |
-
#: includes/fs-plugin-info-dialog.php:
|
935 |
msgctxt "Plugin installer section title"
|
936 |
msgid "Reviews"
|
937 |
msgstr ""
|
938 |
|
939 |
-
#: includes/fs-plugin-info-dialog.php:
|
940 |
msgctxt "Plugin installer section title"
|
941 |
msgid "Other Notes"
|
942 |
msgstr ""
|
943 |
|
944 |
-
#: includes/fs-plugin-info-dialog.php:
|
945 |
msgctxt "Plugin installer section title"
|
946 |
msgid "Features & Pricing"
|
947 |
msgstr ""
|
948 |
|
949 |
-
#: includes/fs-plugin-info-dialog.php:
|
950 |
msgid "Plugin Install"
|
951 |
msgstr ""
|
952 |
|
953 |
-
#: includes/fs-plugin-info-dialog.php:
|
954 |
msgctxt "e.g. Professional Plan"
|
955 |
msgid "%s Plan"
|
956 |
msgstr ""
|
957 |
|
958 |
-
#: includes/fs-plugin-info-dialog.php:
|
959 |
msgctxt "e.g. the best product"
|
960 |
msgid "Best"
|
961 |
msgstr ""
|
962 |
|
963 |
-
#: includes/fs-plugin-info-dialog.php:
|
964 |
msgctxt "as every month"
|
965 |
msgid "Monthly"
|
966 |
msgstr ""
|
967 |
|
968 |
-
#: includes/fs-plugin-info-dialog.php:
|
969 |
msgctxt "as once a year"
|
970 |
msgid "Annual"
|
971 |
msgstr ""
|
972 |
|
973 |
-
#: includes/fs-plugin-info-dialog.php:
|
974 |
msgid "Lifetime"
|
975 |
msgstr ""
|
976 |
|
977 |
-
#: includes/fs-plugin-info-dialog.php:
|
978 |
msgctxt "e.g. billed monthly"
|
979 |
msgid "Billed %s"
|
980 |
msgstr ""
|
981 |
|
982 |
-
#: includes/fs-plugin-info-dialog.php:
|
983 |
msgctxt "as once a year"
|
984 |
msgid "Annually"
|
985 |
msgstr ""
|
986 |
|
987 |
-
#: includes/fs-plugin-info-dialog.php:
|
988 |
msgctxt "as once a year"
|
989 |
msgid "Once"
|
990 |
msgstr ""
|
991 |
|
992 |
-
#: includes/fs-plugin-info-dialog.php:
|
993 |
msgid "Single Site License"
|
994 |
msgstr ""
|
995 |
|
996 |
-
#: includes/fs-plugin-info-dialog.php:
|
997 |
msgid "Unlimited Licenses"
|
998 |
msgstr ""
|
999 |
|
1000 |
-
#: includes/fs-plugin-info-dialog.php:
|
1001 |
msgid "Up to %s Sites"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
-
#: includes/fs-plugin-info-dialog.php:
|
1005 |
msgctxt "as monthly period"
|
1006 |
msgid "mo"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
-
#: includes/fs-plugin-info-dialog.php:
|
1010 |
msgctxt "as annual period"
|
1011 |
msgid "year"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#: includes/fs-plugin-info-dialog.php:
|
1015 |
msgctxt "noun"
|
1016 |
msgid "Price"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#: includes/fs-plugin-info-dialog.php:
|
1020 |
msgid "Save %s"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: includes/fs-plugin-info-dialog.php:
|
1024 |
msgid "No commitment for %s - cancel anytime"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
-
#: includes/fs-plugin-info-dialog.php:
|
1028 |
msgid "After your free %s, pay as little as %s"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
-
#: includes/fs-plugin-info-dialog.php:
|
1032 |
msgid "Details"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
-
#: includes/fs-plugin-info-dialog.php:
|
1036 |
msgctxt "product version"
|
1037 |
msgid "Version"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: includes/fs-plugin-info-dialog.php:
|
1041 |
msgctxt "as the plugin author"
|
1042 |
msgid "Author"
|
1043 |
msgstr ""
|
1044 |
|
1045 |
-
#: includes/fs-plugin-info-dialog.php:
|
1046 |
msgid "Last Updated"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
-
#: includes/fs-plugin-info-dialog.php:
|
1050 |
msgctxt "x-ago"
|
1051 |
msgid "%s ago"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
-
#: includes/fs-plugin-info-dialog.php:
|
1055 |
msgid "Requires WordPress Version"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
-
#: includes/fs-plugin-info-dialog.php:
|
1059 |
msgid "%s or higher"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: includes/fs-plugin-info-dialog.php:
|
1063 |
msgid "Compatible up to"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: includes/fs-plugin-info-dialog.php:
|
|
|
|
|
|
|
|
|
1067 |
msgid "Downloaded"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
-
#: includes/fs-plugin-info-dialog.php:
|
1071 |
msgid "%s time"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#: includes/fs-plugin-info-dialog.php:
|
1075 |
msgid "%s times"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#: includes/fs-plugin-info-dialog.php:
|
1079 |
msgid "WordPress.org Plugin Page"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
-
#: includes/fs-plugin-info-dialog.php:
|
1083 |
msgid "Plugin Homepage"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
-
#: includes/fs-plugin-info-dialog.php:
|
1087 |
msgid "Donate to this plugin"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
-
#: includes/fs-plugin-info-dialog.php:
|
1091 |
msgid "Average Rating"
|
1092 |
msgstr ""
|
1093 |
|
1094 |
-
#: includes/fs-plugin-info-dialog.php:
|
1095 |
msgid "based on %s"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
-
#: includes/fs-plugin-info-dialog.php:
|
1099 |
msgid "%s rating"
|
1100 |
msgstr ""
|
1101 |
|
1102 |
-
#: includes/fs-plugin-info-dialog.php:
|
1103 |
msgid "%s ratings"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: includes/fs-plugin-info-dialog.php:
|
1107 |
msgid "%s star"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
-
#: includes/fs-plugin-info-dialog.php:
|
1111 |
msgid "%s stars"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
-
#: includes/fs-plugin-info-dialog.php:
|
1115 |
msgid "Click to see reviews that provided a rating of %s"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
-
#: includes/fs-plugin-info-dialog.php:
|
1119 |
msgid "Contributors"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
-
#: includes/fs-plugin-info-dialog.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1123 |
msgid "Warning"
|
1124 |
msgstr ""
|
1125 |
|
1126 |
-
#: includes/fs-plugin-info-dialog.php:
|
1127 |
msgid "This plugin has not been tested with your current version of WordPress."
|
1128 |
msgstr ""
|
1129 |
|
1130 |
-
#: includes/fs-plugin-info-dialog.php:
|
1131 |
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1132 |
msgstr ""
|
1133 |
|
1134 |
-
#: includes/fs-plugin-info-dialog.php:
|
1135 |
msgid "Paid add-on must be deployed to Freemius."
|
1136 |
msgstr ""
|
1137 |
|
1138 |
-
#: includes/fs-plugin-info-dialog.php:
|
1139 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1140 |
msgstr ""
|
1141 |
|
1142 |
-
#: includes/fs-plugin-info-dialog.php:
|
1143 |
msgid "Newer Version (%s) Installed"
|
1144 |
msgstr ""
|
1145 |
|
1146 |
-
#: includes/fs-plugin-info-dialog.php:
|
1147 |
msgid "Newer Free Version (%s) Installed"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
-
#: includes/fs-plugin-info-dialog.php:
|
1151 |
msgid "Latest Version Installed"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
-
#: includes/fs-plugin-info-dialog.php:
|
1155 |
msgid "Latest Free Version Installed"
|
1156 |
msgstr ""
|
1157 |
|
28 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: includes/class-freemius.php:1978, includes/fs-plugin-info-dialog.php:1517
|
32 |
msgid "Error"
|
33 |
msgstr ""
|
34 |
|
214 |
msgstr ""
|
215 |
|
216 |
#: includes/class-freemius.php:7318, templates/connect.php:216
|
217 |
+
msgid "You should receive a confirmation email for %s to your mailbox at %s. Please make sure you click the button in that email to %s."
|
218 |
msgstr ""
|
219 |
|
220 |
#: includes/class-freemius.php:7322
|
222 |
msgstr ""
|
223 |
|
224 |
#: includes/class-freemius.php:7323, templates/connect.php:220
|
225 |
+
msgid "complete the opt-in"
|
226 |
msgstr ""
|
227 |
|
228 |
#: includes/class-freemius.php:7456
|
246 |
msgid "The upgrade of %s was successfully completed."
|
247 |
msgstr ""
|
248 |
|
249 |
+
#: includes/class-freemius.php:10709, includes/class-fs-plugin-updater.php:1090, includes/class-fs-plugin-updater.php:1305, includes/class-fs-plugin-updater.php:1312, templates/auto-installation.php:32
|
250 |
msgid "Add-On"
|
251 |
msgstr ""
|
252 |
|
708 |
msgid "Opt In"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: includes/class-freemius.php:24931
|
712 |
msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: includes/class-freemius.php:24941
|
716 |
msgid "Activate %s features"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: includes/class-freemius.php:24954
|
720 |
msgid "Please follow these steps to complete the upgrade"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: includes/class-freemius.php:24958
|
724 |
msgid "Download the latest %s version"
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: includes/class-freemius.php:24962
|
728 |
msgid "Upload and activate the downloaded version"
|
729 |
msgstr ""
|
730 |
|
731 |
+
#: includes/class-freemius.php:24964
|
732 |
msgid "How to upload and activate?"
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: includes/class-freemius.php:25098
|
736 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: includes/class-freemius.php:25267
|
740 |
msgid "Auto installation only works for opted-in users."
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: includes/class-freemius.php:25277, includes/class-freemius.php:25310, includes/class-fs-plugin-updater.php:1284, includes/class-fs-plugin-updater.php:1298
|
744 |
msgid "Invalid module ID."
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: includes/class-freemius.php:25286, includes/class-fs-plugin-updater.php:1320
|
748 |
msgid "Premium version already active."
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: includes/class-freemius.php:25293
|
752 |
msgid "You do not have a valid license to access the premium version."
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: includes/class-freemius.php:25300
|
756 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
757 |
msgstr ""
|
758 |
|
759 |
+
#: includes/class-freemius.php:25318, includes/class-fs-plugin-updater.php:1319
|
760 |
msgid "Premium add-on version already installed."
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: includes/class-freemius.php:25672
|
764 |
msgid "View paid features"
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: includes/class-freemius.php:25994
|
768 |
msgid "Thank you so much for using %s and its add-ons!"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: includes/class-freemius.php:25995
|
772 |
msgid "Thank you so much for using %s!"
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: includes/class-freemius.php:26001
|
776 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: includes/class-freemius.php:26005
|
780 |
msgid "Thank you so much for using our products!"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: includes/class-freemius.php:26006
|
784 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: includes/class-freemius.php:26025
|
788 |
msgid "%s and its add-ons"
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: includes/class-freemius.php:26034
|
792 |
msgid "Products"
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: includes/class-freemius.php:26041, templates/connect.php:324
|
796 |
msgid "Yes"
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: includes/class-freemius.php:26042, templates/connect.php:325
|
800 |
msgid "send me security & feature updates, educational content and offers."
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: includes/class-freemius.php:26043, templates/connect.php:330
|
804 |
msgid "No"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: includes/class-freemius.php:26045, templates/connect.php:332
|
808 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
809 |
msgstr ""
|
810 |
|
811 |
+
#: includes/class-freemius.php:26055
|
812 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
|
813 |
msgstr ""
|
814 |
|
815 |
+
#: includes/class-freemius.php:26057, templates/connect.php:339
|
816 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
817 |
msgstr ""
|
818 |
|
819 |
+
#: includes/class-freemius.php:26339
|
820 |
msgid "License key is empty."
|
821 |
msgstr ""
|
822 |
|
844 |
msgid "Important Upgrade Notice:"
|
845 |
msgstr ""
|
846 |
|
847 |
+
#: includes/class-fs-plugin-updater.php:1349
|
848 |
msgid "Installing plugin: %s"
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: includes/class-fs-plugin-updater.php:1390
|
852 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
853 |
msgstr ""
|
854 |
|
855 |
+
#: includes/class-fs-plugin-updater.php:1572
|
856 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
857 |
msgstr ""
|
858 |
|
859 |
+
#: includes/fs-plugin-info-dialog.php:542
|
860 |
msgid "Purchase More"
|
861 |
msgstr ""
|
862 |
|
863 |
+
#: includes/fs-plugin-info-dialog.php:543, templates/account/partials/addon.php:390
|
864 |
msgctxt "verb"
|
865 |
msgid "Purchase"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: includes/fs-plugin-info-dialog.php:547
|
869 |
msgid "Start my free %s"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: includes/fs-plugin-info-dialog.php:745
|
873 |
msgid "Install Free Version Update Now"
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: includes/fs-plugin-info-dialog.php:746, templates/account.php:656
|
877 |
msgid "Install Update Now"
|
878 |
msgstr ""
|
879 |
|
880 |
+
#: includes/fs-plugin-info-dialog.php:755
|
881 |
msgid "Install Free Version Now"
|
882 |
msgstr ""
|
883 |
|
884 |
+
#: includes/fs-plugin-info-dialog.php:756, templates/add-ons.php:323, templates/auto-installation.php:111, templates/account/partials/addon.php:370, templates/account/partials/addon.php:423
|
885 |
msgid "Install Now"
|
886 |
msgstr ""
|
887 |
|
888 |
+
#: includes/fs-plugin-info-dialog.php:772
|
889 |
msgctxt "as download latest version"
|
890 |
msgid "Download Latest Free Version"
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: includes/fs-plugin-info-dialog.php:773, templates/account.php:114, templates/add-ons.php:37, templates/account/partials/addon.php:30
|
894 |
msgctxt "as download latest version"
|
895 |
msgid "Download Latest"
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: includes/fs-plugin-info-dialog.php:788, templates/add-ons.php:329, templates/account/partials/addon.php:361, templates/account/partials/addon.php:417
|
899 |
msgid "Activate this add-on"
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: includes/fs-plugin-info-dialog.php:790, templates/connect.php:446
|
903 |
msgid "Activate Free Version"
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: includes/fs-plugin-info-dialog.php:791, templates/account.php:138, templates/add-ons.php:330, templates/account/partials/addon.php:53
|
907 |
msgid "Activate"
|
908 |
msgstr ""
|
909 |
|
910 |
+
#: includes/fs-plugin-info-dialog.php:1003
|
911 |
msgctxt "Plugin installer section title"
|
912 |
msgid "Description"
|
913 |
msgstr ""
|
914 |
|
915 |
+
#: includes/fs-plugin-info-dialog.php:1004
|
916 |
msgctxt "Plugin installer section title"
|
917 |
msgid "Installation"
|
918 |
msgstr ""
|
919 |
|
920 |
+
#: includes/fs-plugin-info-dialog.php:1005
|
921 |
msgctxt "Plugin installer section title"
|
922 |
msgid "FAQ"
|
923 |
msgstr ""
|
924 |
|
925 |
+
#: includes/fs-plugin-info-dialog.php:1006, templates/plugin-info/description.php:55
|
926 |
msgid "Screenshots"
|
927 |
msgstr ""
|
928 |
|
929 |
+
#: includes/fs-plugin-info-dialog.php:1007
|
930 |
msgctxt "Plugin installer section title"
|
931 |
msgid "Changelog"
|
932 |
msgstr ""
|
933 |
|
934 |
+
#: includes/fs-plugin-info-dialog.php:1008
|
935 |
msgctxt "Plugin installer section title"
|
936 |
msgid "Reviews"
|
937 |
msgstr ""
|
938 |
|
939 |
+
#: includes/fs-plugin-info-dialog.php:1009
|
940 |
msgctxt "Plugin installer section title"
|
941 |
msgid "Other Notes"
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: includes/fs-plugin-info-dialog.php:1024
|
945 |
msgctxt "Plugin installer section title"
|
946 |
msgid "Features & Pricing"
|
947 |
msgstr ""
|
948 |
|
949 |
+
#: includes/fs-plugin-info-dialog.php:1034
|
950 |
msgid "Plugin Install"
|
951 |
msgstr ""
|
952 |
|
953 |
+
#: includes/fs-plugin-info-dialog.php:1106
|
954 |
msgctxt "e.g. Professional Plan"
|
955 |
msgid "%s Plan"
|
956 |
msgstr ""
|
957 |
|
958 |
+
#: includes/fs-plugin-info-dialog.php:1132
|
959 |
msgctxt "e.g. the best product"
|
960 |
msgid "Best"
|
961 |
msgstr ""
|
962 |
|
963 |
+
#: includes/fs-plugin-info-dialog.php:1138, includes/fs-plugin-info-dialog.php:1158
|
964 |
msgctxt "as every month"
|
965 |
msgid "Monthly"
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: includes/fs-plugin-info-dialog.php:1141
|
969 |
msgctxt "as once a year"
|
970 |
msgid "Annual"
|
971 |
msgstr ""
|
972 |
|
973 |
+
#: includes/fs-plugin-info-dialog.php:1144
|
974 |
msgid "Lifetime"
|
975 |
msgstr ""
|
976 |
|
977 |
+
#: includes/fs-plugin-info-dialog.php:1158, includes/fs-plugin-info-dialog.php:1160, includes/fs-plugin-info-dialog.php:1162
|
978 |
msgctxt "e.g. billed monthly"
|
979 |
msgid "Billed %s"
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: includes/fs-plugin-info-dialog.php:1160
|
983 |
msgctxt "as once a year"
|
984 |
msgid "Annually"
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: includes/fs-plugin-info-dialog.php:1162
|
988 |
msgctxt "as once a year"
|
989 |
msgid "Once"
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: includes/fs-plugin-info-dialog.php:1168
|
993 |
msgid "Single Site License"
|
994 |
msgstr ""
|
995 |
|
996 |
+
#: includes/fs-plugin-info-dialog.php:1170
|
997 |
msgid "Unlimited Licenses"
|
998 |
msgstr ""
|
999 |
|
1000 |
+
#: includes/fs-plugin-info-dialog.php:1172
|
1001 |
msgid "Up to %s Sites"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
+
#: includes/fs-plugin-info-dialog.php:1182, templates/plugin-info/features.php:82
|
1005 |
msgctxt "as monthly period"
|
1006 |
msgid "mo"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
+
#: includes/fs-plugin-info-dialog.php:1189, templates/plugin-info/features.php:80
|
1010 |
msgctxt "as annual period"
|
1011 |
msgid "year"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
+
#: includes/fs-plugin-info-dialog.php:1243
|
1015 |
msgctxt "noun"
|
1016 |
msgid "Price"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: includes/fs-plugin-info-dialog.php:1291
|
1020 |
msgid "Save %s"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: includes/fs-plugin-info-dialog.php:1301
|
1024 |
msgid "No commitment for %s - cancel anytime"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
+
#: includes/fs-plugin-info-dialog.php:1304
|
1028 |
msgid "After your free %s, pay as little as %s"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
+
#: includes/fs-plugin-info-dialog.php:1315
|
1032 |
msgid "Details"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
+
#: includes/fs-plugin-info-dialog.php:1319, templates/account.php:125, templates/debug.php:232, templates/debug.php:269, templates/debug.php:514, templates/account/partials/addon.php:41
|
1036 |
msgctxt "product version"
|
1037 |
msgid "Version"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
+
#: includes/fs-plugin-info-dialog.php:1326
|
1041 |
msgctxt "as the plugin author"
|
1042 |
msgid "Author"
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: includes/fs-plugin-info-dialog.php:1333
|
1046 |
msgid "Last Updated"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: includes/fs-plugin-info-dialog.php:1338, templates/account.php:544
|
1050 |
msgctxt "x-ago"
|
1051 |
msgid "%s ago"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
+
#: includes/fs-plugin-info-dialog.php:1347
|
1055 |
msgid "Requires WordPress Version"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
+
#: includes/fs-plugin-info-dialog.php:1350, includes/fs-plugin-info-dialog.php:1370
|
1059 |
msgid "%s or higher"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
+
#: includes/fs-plugin-info-dialog.php:1358
|
1063 |
msgid "Compatible up to"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
+
#: includes/fs-plugin-info-dialog.php:1366
|
1067 |
+
msgid "Requires PHP Version"
|
1068 |
+
msgstr ""
|
1069 |
+
|
1070 |
+
#: includes/fs-plugin-info-dialog.php:1379
|
1071 |
msgid "Downloaded"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: includes/fs-plugin-info-dialog.php:1383
|
1075 |
msgid "%s time"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
+
#: includes/fs-plugin-info-dialog.php:1385
|
1079 |
msgid "%s times"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
+
#: includes/fs-plugin-info-dialog.php:1396
|
1083 |
msgid "WordPress.org Plugin Page"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
+
#: includes/fs-plugin-info-dialog.php:1405
|
1087 |
msgid "Plugin Homepage"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
+
#: includes/fs-plugin-info-dialog.php:1414, includes/fs-plugin-info-dialog.php:1498
|
1091 |
msgid "Donate to this plugin"
|
1092 |
msgstr ""
|
1093 |
|
1094 |
+
#: includes/fs-plugin-info-dialog.php:1421
|
1095 |
msgid "Average Rating"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
+
#: includes/fs-plugin-info-dialog.php:1428
|
1099 |
msgid "based on %s"
|
1100 |
msgstr ""
|
1101 |
|
1102 |
+
#: includes/fs-plugin-info-dialog.php:1432
|
1103 |
msgid "%s rating"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
+
#: includes/fs-plugin-info-dialog.php:1434
|
1107 |
msgid "%s ratings"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
+
#: includes/fs-plugin-info-dialog.php:1449
|
1111 |
msgid "%s star"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
+
#: includes/fs-plugin-info-dialog.php:1451
|
1115 |
msgid "%s stars"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: includes/fs-plugin-info-dialog.php:1463
|
1119 |
msgid "Click to see reviews that provided a rating of %s"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
+
#: includes/fs-plugin-info-dialog.php:1476
|
1123 |
msgid "Contributors"
|
1124 |
msgstr ""
|
1125 |
|
1126 |
+
#: includes/fs-plugin-info-dialog.php:1517
|
1127 |
+
msgid "This plugin requires a newer version of PHP."
|
1128 |
+
msgstr ""
|
1129 |
+
|
1130 |
+
#: includes/fs-plugin-info-dialog.php:1526
|
1131 |
+
msgid "<a href=\"%s\" target=\"_blank\">Click here to learn more about updating PHP</a>."
|
1132 |
+
msgstr ""
|
1133 |
+
|
1134 |
+
#: includes/fs-plugin-info-dialog.php:1540, includes/fs-plugin-info-dialog.php:1542
|
1135 |
msgid "Warning"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: includes/fs-plugin-info-dialog.php:1540
|
1139 |
msgid "This plugin has not been tested with your current version of WordPress."
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: includes/fs-plugin-info-dialog.php:1542
|
1143 |
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1144 |
msgstr ""
|
1145 |
|
1146 |
+
#: includes/fs-plugin-info-dialog.php:1561
|
1147 |
msgid "Paid add-on must be deployed to Freemius."
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: includes/fs-plugin-info-dialog.php:1562
|
1151 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1152 |
msgstr ""
|
1153 |
|
1154 |
+
#: includes/fs-plugin-info-dialog.php:1583
|
1155 |
msgid "Newer Version (%s) Installed"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
+
#: includes/fs-plugin-info-dialog.php:1584
|
1159 |
msgid "Newer Free Version (%s) Installed"
|
1160 |
msgstr ""
|
1161 |
|
1162 |
+
#: includes/fs-plugin-info-dialog.php:1591
|
1163 |
msgid "Latest Version Installed"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
+
#: includes/fs-plugin-info-dialog.php:1592
|
1167 |
msgid "Latest Free Version Installed"
|
1168 |
msgstr ""
|
1169 |
|
vendor/freemius/wordpress-sdk/start.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
*
|
16 |
* @var string
|
17 |
*/
|
18 |
-
$this_sdk_version = '2.5.
|
19 |
|
20 |
#region SDK Selection Logic --------------------------------------------------------------------
|
21 |
|
15 |
*
|
16 |
* @var string
|
17 |
*/
|
18 |
+
$this_sdk_version = '2.5.3';
|
19 |
|
20 |
#region SDK Selection Logic --------------------------------------------------------------------
|
21 |
|
vendor/freemius/wordpress-sdk/templates/connect.php
CHANGED
@@ -213,11 +213,11 @@
|
|
213 |
$message = $fs->apply_filters( 'pending_activation_message', sprintf(
|
214 |
/* translators: %s: name (e.g. Thanks John!) */
|
215 |
fs_text_inline( 'Thanks %s!', 'thanks-x', $slug ) . '<br>' .
|
216 |
-
fs_text_inline( 'You should receive
|
217 |
$first_name,
|
218 |
'<b>' . $fs->get_plugin_name() . '</b>',
|
219 |
'<b>' . $current_user->user_email . '</b>',
|
220 |
-
fs_text_inline( 'complete the
|
221 |
) );
|
222 |
} else if ( $require_license_key ) {
|
223 |
$button_label = fs_text_inline( 'Activate License', 'activate-license', $slug );
|
213 |
$message = $fs->apply_filters( 'pending_activation_message', sprintf(
|
214 |
/* translators: %s: name (e.g. Thanks John!) */
|
215 |
fs_text_inline( 'Thanks %s!', 'thanks-x', $slug ) . '<br>' .
|
216 |
+
fs_text_inline( 'You should receive a confirmation email for %s to your mailbox at %s. Please make sure you click the button in that email to %s.', 'pending-activation-message', $slug ),
|
217 |
$first_name,
|
218 |
'<b>' . $fs->get_plugin_name() . '</b>',
|
219 |
'<b>' . $current_user->user_email . '</b>',
|
220 |
+
fs_text_inline( 'complete the opt-in', 'complete-the-opt-in', $slug )
|
221 |
) );
|
222 |
} else if ( $require_license_key ) {
|
223 |
$button_label = fs_text_inline( 'Activate License', 'activate-license', $slug );
|
vendor/freemius/wordpress-sdk/templates/plugin-info/description.php
CHANGED
@@ -52,7 +52,7 @@
|
|
52 |
<?php if ( ! empty( $plugin->info->screenshots ) ) : ?>
|
53 |
<?php $screenshots = $plugin->info->screenshots ?>
|
54 |
<div class="fs-screenshots clearfix">
|
55 |
-
<
|
56 |
<ul>
|
57 |
<?php $i = 0;
|
58 |
foreach ( $screenshots as $s => $url ) : ?>
|
52 |
<?php if ( ! empty( $plugin->info->screenshots ) ) : ?>
|
53 |
<?php $screenshots = $plugin->info->screenshots ?>
|
54 |
<div class="fs-screenshots clearfix">
|
55 |
+
<h3><?php fs_esc_html_echo_inline( 'Screenshots', 'screenshots', $plugin->slug ) ?></h3>
|
56 |
<ul>
|
57 |
<?php $i = 0;
|
58 |
foreach ( $screenshots as $s => $url ) : ?>
|
vendor/giggsey/libphonenumber-for-php/METADATA-VERSION.txt
CHANGED
@@ -2,4 +2,4 @@
|
|
2 |
# It can be a commit, branch or tag of the https://github.com/google/libphonenumber project
|
3 |
#
|
4 |
# For more information, look at the phing tasks in build.xml
|
5 |
-
v8.13.
|
2 |
# It can be a commit, branch or tag of the https://github.com/google/libphonenumber project
|
3 |
#
|
4 |
# For more information, look at the phing tasks in build.xml
|
5 |
+
v8.13.1
|
vendor/giggsey/libphonenumber-for-php/src/ShortNumberInfo.php
CHANGED
@@ -92,6 +92,10 @@ class ShortNumberInfo
|
|
92 |
*/
|
93 |
protected function regionDialingFromMatchesNumber(PhoneNumber $number, $regionDialingFrom)
|
94 |
{
|
|
|
|
|
|
|
|
|
95 |
$regionCodes = $this->getRegionCodesForCountryCode($number->getCountryCode());
|
96 |
|
97 |
return in_array(strtoupper($regionDialingFrom), $regionCodes);
|
92 |
*/
|
93 |
protected function regionDialingFromMatchesNumber(PhoneNumber $number, $regionDialingFrom)
|
94 |
{
|
95 |
+
if ($regionDialingFrom === null || $regionDialingFrom === '') {
|
96 |
+
return false;
|
97 |
+
}
|
98 |
+
|
99 |
$regionCodes = $this->getRegionCodesForCountryCode($number->getCountryCode());
|
100 |
|
101 |
return in_array(strtoupper($regionDialingFrom), $regionCodes);
|
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/350.php
CHANGED
@@ -11,6 +11,11 @@
|
|
11 |
*/
|
12 |
|
13 |
return array (
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
15 |
3506 => 'GibTel',
|
16 |
);
|
11 |
*/
|
12 |
|
13 |
return array (
|
14 |
+
35051 => 'Gibfibre',
|
15 |
+
35052 => 'Gibfibre',
|
16 |
+
35054 => 'GibTel',
|
17 |
+
35056 => 'GibTel',
|
18 |
+
35057 => 'GibTel',
|
19 |
+
35058 => 'GibTel',
|
20 |
3506 => 'GibTel',
|
21 |
);
|
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/420.php
CHANGED
@@ -195,6 +195,7 @@ return array (
|
|
195 |
42079954 => 'T-Mobile',
|
196 |
42079955 => 'GoMobil',
|
197 |
42079956 => 'GoMobil',
|
|
|
198 |
42079979 => 'miniTEL',
|
199 |
42079999 => 'T-Mobile',
|
200 |
);
|
195 |
42079954 => 'T-Mobile',
|
196 |
42079955 => 'GoMobil',
|
197 |
42079956 => 'GoMobil',
|
198 |
+
42079957 => 'T-Mobile',
|
199 |
42079979 => 'miniTEL',
|
200 |
42079999 => 'T-Mobile',
|
201 |
);
|
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/51.php
CHANGED
@@ -13,6 +13,8 @@
|
|
13 |
return array (
|
14 |
51900 => 'Claro',
|
15 |
51901 => 'Claro',
|
|
|
|
|
16 |
51910 => 'Claro',
|
17 |
51912 => 'Entel',
|
18 |
51913 => 'Claro',
|
13 |
return array (
|
14 |
51900 => 'Claro',
|
15 |
51901 => 'Claro',
|
16 |
+
51904 => 'Entel',
|
17 |
+
51905 => 'Entel',
|
18 |
51910 => 'Claro',
|
19 |
51912 => 'Entel',
|
20 |
51913 => 'Claro',
|
vendor/giggsey/libphonenumber-for-php/src/carrier/data/en/996.php
CHANGED
@@ -22,6 +22,7 @@ return array (
|
|
22 |
99655 => 'ALFA Telecom',
|
23 |
99656 => 'Winline',
|
24 |
99657 => 'Sotel',
|
|
|
25 |
99670 => 'Nur Telecom',
|
26 |
99675 => 'ALFA Telecom',
|
27 |
99677 => 'Sky mobile',
|
22 |
99655 => 'ALFA Telecom',
|
23 |
99656 => 'Winline',
|
24 |
99657 => 'Sotel',
|
25 |
+
996600 => 'Sky mobile',
|
26 |
99670 => 'Nur Telecom',
|
27 |
99675 => 'ALFA Telecom',
|
28 |
99677 => 'Sky mobile',
|
vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberAlternateFormats_7.php
CHANGED
@@ -24,7 +24,7 @@ return array (
|
|
24 |
'format' => '$1 $2 $3',
|
25 |
'leadingDigitsPatterns' =>
|
26 |
array (
|
27 |
-
0 => '[3489]|7(?:1(?:[0-
|
28 |
),
|
29 |
'nationalPrefixFormattingRule' => '',
|
30 |
'domesticCarrierCodeFormattingRule' => '',
|
@@ -36,7 +36,7 @@ return array (
|
|
36 |
'format' => '$1 $2',
|
37 |
'leadingDigitsPatterns' =>
|
38 |
array (
|
39 |
-
0 => '[3489]|
|
40 |
),
|
41 |
'nationalPrefixFormattingRule' => '',
|
42 |
'domesticCarrierCodeFormattingRule' => '',
|
@@ -60,7 +60,7 @@ return array (
|
|
60 |
'format' => '$1 $2 $3 $4',
|
61 |
'leadingDigitsPatterns' =>
|
62 |
array (
|
63 |
-
0 => '[3489]|7(?:[04-
|
64 |
),
|
65 |
'nationalPrefixFormattingRule' => '',
|
66 |
'domesticCarrierCodeFormattingRule' => '',
|
@@ -72,7 +72,7 @@ return array (
|
|
72 |
'format' => '$1 $2 $3 $4 $5',
|
73 |
'leadingDigitsPatterns' =>
|
74 |
array (
|
75 |
-
0 => '[3489]|7(?:[04-
|
76 |
),
|
77 |
'nationalPrefixFormattingRule' => '',
|
78 |
'domesticCarrierCodeFormattingRule' => '',
|
24 |
'format' => '$1 $2 $3',
|
25 |
'leadingDigitsPatterns' =>
|
26 |
array (
|
27 |
+
0 => '[3489]|7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))',
|
28 |
),
|
29 |
'nationalPrefixFormattingRule' => '',
|
30 |
'domesticCarrierCodeFormattingRule' => '',
|
36 |
'format' => '$1 $2',
|
37 |
'leadingDigitsPatterns' =>
|
38 |
array (
|
39 |
+
0 => '[3489]|72(?:6|7[457])|7(?:12|2[49])[35]|7(?:1[13-58]|2[1-38])[3-5]|7(?:1[06]|25)[3-6]',
|
40 |
),
|
41 |
'nationalPrefixFormattingRule' => '',
|
42 |
'domesticCarrierCodeFormattingRule' => '',
|
60 |
'format' => '$1 $2 $3 $4',
|
61 |
'leadingDigitsPatterns' =>
|
62 |
array (
|
63 |
+
0 => '[3489]|7(?:[04-9]|1(?:04|[236]3|4[3-5]|5[34])|2(?:13|34|7[39]))',
|
64 |
),
|
65 |
'nationalPrefixFormattingRule' => '',
|
66 |
'domesticCarrierCodeFormattingRule' => '',
|
72 |
'format' => '$1 $2 $3 $4 $5',
|
73 |
'leadingDigitsPatterns' =>
|
74 |
array (
|
75 |
+
0 => '[3489]|7(?:[04-9]|1(?:04|[236]3|4[3-5]|5[34])|2(?:13|34|7[39]))',
|
76 |
),
|
77 |
'nationalPrefixFormattingRule' => '',
|
78 |
'domesticCarrierCodeFormattingRule' => '',
|
vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberMetadata_GI.php
CHANGED
@@ -25,7 +25,7 @@ return array (
|
|
25 |
),
|
26 |
'fixedLine' =>
|
27 |
array (
|
28 |
-
'NationalNumberPattern' => '21(?:6[24-
|
29 |
'ExampleNumber' => '20012345',
|
30 |
'PossibleLength' =>
|
31 |
array (
|
@@ -36,7 +36,7 @@ return array (
|
|
36 |
),
|
37 |
'mobile' =>
|
38 |
array (
|
39 |
-
'NationalNumberPattern' => '(?:5[146-8]\\d|606)\\d{5}',
|
40 |
'ExampleNumber' => '57123456',
|
41 |
'PossibleLength' =>
|
42 |
array (
|
25 |
),
|
26 |
'fixedLine' =>
|
27 |
array (
|
28 |
+
'NationalNumberPattern' => '21(?:6[24-9]\\d|90[0-2])\\d{3}|2(?:00|2[2-5])\\d{5}',
|
29 |
'ExampleNumber' => '20012345',
|
30 |
'PossibleLength' =>
|
31 |
array (
|
36 |
),
|
37 |
'mobile' =>
|
38 |
array (
|
39 |
+
'NationalNumberPattern' => '525(?:0\\d|1[0-4])\\d{3}|(?:5[146-8]\\d|606)\\d{5}',
|
40 |
'ExampleNumber' => '57123456',
|
41 |
'PossibleLength' =>
|
42 |
array (
|
vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberMetadata_KG.php
CHANGED
@@ -42,7 +42,7 @@ return array (
|
|
42 |
),
|
43 |
'mobile' =>
|
44 |
array (
|
45 |
-
'NationalNumberPattern' => '312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}',
|
46 |
'ExampleNumber' => '700123456',
|
47 |
'PossibleLength' =>
|
48 |
array (
|
42 |
),
|
43 |
'mobile' =>
|
44 |
array (
|
45 |
+
'NationalNumberPattern' => '312(?:58\\d|973)\\d{3}|(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|600|7(?:[07]\\d|55)|88[08]|99[05-9])\\d{6}',
|
46 |
'ExampleNumber' => '700123456',
|
47 |
'PossibleLength' =>
|
48 |
array (
|
vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberMetadata_KZ.php
CHANGED
@@ -29,7 +29,7 @@ return array (
|
|
29 |
),
|
30 |
'fixedLine' =>
|
31 |
array (
|
32 |
-
'NationalNumberPattern' => '(?:33622|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9])|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[2-4]\\d|5[139])|4(?:2\\d|3[1-35-9]|59)|5(?:[23]\\d|4[0-
|
33 |
'ExampleNumber' => '7123456789',
|
34 |
'PossibleLength' =>
|
35 |
array (
|
29 |
),
|
30 |
'fixedLine' =>
|
31 |
array (
|
32 |
+
'NationalNumberPattern' => '(?:33622|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9]|97)|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]|59))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[2-4]\\d|5[139])|4(?:2\\d|3[1-35-9]|59)|5(?:[23]\\d|4[0-8]|59|61)|6(?:2\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\d|40|5[279])|8(?:[23]\\d|4[0-3]|59)|9(?:2\\d|3[124578]|59))))\\d{5}',
|
33 |
'ExampleNumber' => '7123456789',
|
34 |
'PossibleLength' =>
|
35 |
array (
|
vendor/giggsey/libphonenumber-for-php/src/data/PhoneNumberMetadata_RU.php
CHANGED
@@ -173,8 +173,8 @@ return array (
|
|
173 |
'leadingDigitsPatterns' =>
|
174 |
array (
|
175 |
0 => '7(?:1[0-8]|2[1-9])',
|
176 |
-
1 => '7(?:1(?:[0-
|
177 |
-
2 => '7(?:1(?:[0-
|
178 |
),
|
179 |
'nationalPrefixFormattingRule' => '8 ($1)',
|
180 |
'domesticCarrierCodeFormattingRule' => '',
|
@@ -240,8 +240,8 @@ return array (
|
|
240 |
'leadingDigitsPatterns' =>
|
241 |
array (
|
242 |
0 => '7(?:1[0-8]|2[1-9])',
|
243 |
-
1 => '7(?:1(?:[0-
|
244 |
-
2 => '7(?:1(?:[0-
|
245 |
),
|
246 |
'nationalPrefixFormattingRule' => '8 ($1)',
|
247 |
'domesticCarrierCodeFormattingRule' => '',
|
173 |
'leadingDigitsPatterns' =>
|
174 |
array (
|
175 |
0 => '7(?:1[0-8]|2[1-9])',
|
176 |
+
1 => '7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))',
|
177 |
+
2 => '7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2',
|
178 |
),
|
179 |
'nationalPrefixFormattingRule' => '8 ($1)',
|
180 |
'domesticCarrierCodeFormattingRule' => '',
|
240 |
'leadingDigitsPatterns' =>
|
241 |
array (
|
242 |
0 => '7(?:1[0-8]|2[1-9])',
|
243 |
+
1 => '7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))',
|
244 |
+
2 => '7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2',
|
245 |
),
|
246 |
'nationalPrefixFormattingRule' => '8 ($1)',
|
247 |
'domesticCarrierCodeFormattingRule' => '',
|
vendor/giggsey/libphonenumber-for-php/src/geocoding/data/en/64.php
CHANGED
@@ -39,11 +39,19 @@ return array (
|
|
39 |
643226 => 'Otautau',
|
40 |
643230 => 'Invercargill',
|
41 |
643231 => 'Invercargill',
|
|
|
|
|
42 |
643234 => 'Riverton',
|
43 |
643235 => 'Invercargill',
|
44 |
643236 => 'Winton',
|
|
|
|
|
45 |
643239 => 'Invercargill',
|
|
|
|
|
46 |
6432420 => 'Christchurch',
|
|
|
|
|
47 |
6432423 => 'Dunedin',
|
48 |
6432424 => 'Nelson',
|
49 |
6432425 => 'Invercargill',
|
@@ -51,6 +59,7 @@ return array (
|
|
51 |
6432427 => 'Greymouth',
|
52 |
6432428 => 'Queenstown',
|
53 |
6432429 => 'Timaru',
|
|
|
54 |
6432440 => 'Christchurch',
|
55 |
6432441 => 'Christchurch',
|
56 |
6432442 => 'Christchurch',
|
@@ -61,9 +70,12 @@ return array (
|
|
61 |
6432447 => 'Timaru',
|
62 |
6432448 => 'Dunedin',
|
63 |
6432449 => 'Queenstown',
|
|
|
64 |
643246 => 'Tokanui',
|
|
|
65 |
643248 => 'Lumsden',
|
66 |
643249 => 'Te Anau',
|
|
|
67 |
643250 => 'Christchurch',
|
68 |
643260 => 'Christchurch',
|
69 |
6432606 => 'Dunedin',
|
@@ -74,7 +86,7 @@ return array (
|
|
74 |
6432611 => 'Kaikoura',
|
75 |
6432612 => 'Rangiora',
|
76 |
6432613 => 'Waitangi (Chatham Is.)',
|
77 |
-
6432614 => '
|
78 |
6432615 => 'Amberley',
|
79 |
6432616 => 'Ashburton',
|
80 |
6432617 => 'Cheviot',
|
@@ -125,8 +137,14 @@ return array (
|
|
125 |
6432662 => 'Christchurch',
|
126 |
6432663 => 'Christchurch',
|
127 |
6432664 => 'Christchurch',
|
|
|
|
|
|
|
128 |
6432668 => 'Blenheim',
|
129 |
6432669 => 'Rangiora',
|
|
|
|
|
|
|
130 |
643270 => 'Christchurch',
|
131 |
6432710 => 'Christchurch',
|
132 |
6432711 => 'Akaroa',
|
@@ -177,6 +195,12 @@ return array (
|
|
177 |
6432756 => 'Gore',
|
178 |
6432757 => 'Lumsden',
|
179 |
6432758 => 'Otautau',
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
6432800 => 'Te Anau',
|
181 |
6432801 => 'Lumsden',
|
182 |
6432802 => 'Gore',
|
@@ -201,6 +225,7 @@ return array (
|
|
201 |
6432887 => 'Nelson',
|
202 |
6432888 => 'Nelson',
|
203 |
6432889 => 'Blenheim',
|
|
|
204 |
6432990 => 'Lumsden',
|
205 |
6432991 => 'Milton',
|
206 |
6432992 => 'Gore',
|
@@ -211,14 +236,7 @@ return array (
|
|
211 |
6432997 => 'Edendale',
|
212 |
6432998 => 'Tokanui',
|
213 |
6432999 => 'Invercargill',
|
214 |
-
|
215 |
-
643302 => 'Ashburton/Akaroa/Chatham Islands',
|
216 |
-
643303 => 'Ashburton/Akaroa/Chatham Islands',
|
217 |
-
643304 => 'Ashburton/Akaroa/Chatham Islands',
|
218 |
-
643305 => 'Ashburton/Akaroa/Chatham Islands',
|
219 |
-
643306 => 'Ashburton/Akaroa/Chatham Islands',
|
220 |
-
643307 => 'Ashburton/Akaroa/Chatham Islands',
|
221 |
-
643308 => 'Ashburton/Akaroa/Chatham Islands',
|
222 |
64331 => 'Rangiora/Amberley/Culverden/Darfield/Cheviot/Kaikoura',
|
223 |
64332 => 'Christchurch',
|
224 |
643331 => 'Christchurch',
|
@@ -231,7 +249,7 @@ return array (
|
|
231 |
643339 => 'Christchurch',
|
232 |
64334 => 'Christchurch',
|
233 |
64335 => 'Christchurch',
|
234 |
-
64336 => '
|
235 |
64337 => 'Christchurch',
|
236 |
64338 => 'Christchurch',
|
237 |
643390 => 'Christchurch',
|
@@ -245,6 +263,7 @@ return array (
|
|
245 |
6433917 => 'Franz Josef',
|
246 |
6433918 => 'Fox Glacier',
|
247 |
6433919 => 'Haast',
|
|
|
248 |
643393 => 'Christchurch',
|
249 |
6433940 => 'Westport',
|
250 |
6433941 => 'Blenheim',
|
@@ -266,6 +285,8 @@ return array (
|
|
266 |
6433957 => 'Palmerston',
|
267 |
6433958 => 'Oamaru',
|
268 |
6433959 => 'Balclutha',
|
|
|
|
|
269 |
6433980 => 'Milton',
|
270 |
6433981 => 'Twizel',
|
271 |
6433982 => 'Kurow',
|
@@ -276,6 +297,7 @@ return array (
|
|
276 |
6433987 => 'Cromwell',
|
277 |
6433988 => 'Wanaka',
|
278 |
6433989 => 'Waimate',
|
|
|
279 |
6433991 => 'Invercargill',
|
280 |
6433992 => 'Riverton',
|
281 |
6433993 => 'Te Anau',
|
@@ -285,10 +307,15 @@ return array (
|
|
285 |
6433997 => 'Gore',
|
286 |
6433998 => 'Lumsden',
|
287 |
6433999 => 'Otautau',
|
|
|
288 |
643409 => 'Queenstown',
|
|
|
|
|
289 |
643412 => 'Balclutha',
|
290 |
643413 => 'Balclutha',
|
|
|
291 |
643415 => 'Balclutha',
|
|
|
292 |
643417 => 'Milton',
|
293 |
643418 => 'Balclutha',
|
294 |
643419 => 'Balclutha',
|
@@ -365,24 +392,25 @@ return array (
|
|
365 |
6434297 => 'Westport',
|
366 |
6434298 => 'Hokitika',
|
367 |
6434299 => 'Haast',
|
|
|
368 |
643430 => 'Mt Cook',
|
369 |
-
|
370 |
-
643432 => 'Oamaru',
|
371 |
-
643433 => 'Oamaru',
|
372 |
-
643434 => 'Oamaru',
|
373 |
6434350 => 'Twizel',
|
374 |
6434351 => 'Mt Cook',
|
375 |
6434353 => 'Twizel',
|
376 |
6434359 => 'Twizel',
|
377 |
643436 => 'Kurow',
|
378 |
-
643437 => 'Oamaru',
|
379 |
643438 => 'Kurow',
|
380 |
-
643439 => 'Oamaru',
|
381 |
6434400 => 'Alexandra',
|
382 |
6434401 => 'Cromwell',
|
383 |
6434402 => 'Alexandra',
|
|
|
384 |
6434404 => 'Alexandra',
|
385 |
6434405 => 'Alexandra',
|
|
|
|
|
|
|
|
|
386 |
643441 => 'Queenstown',
|
387 |
643442 => 'Queenstown',
|
388 |
643443 => 'Wanaka',
|
@@ -400,6 +428,11 @@ return array (
|
|
400 |
643455 => 'Dunedin',
|
401 |
643456 => 'Dunedin',
|
402 |
643457 => 'Dunedin',
|
|
|
|
|
|
|
|
|
|
|
403 |
643463 => 'Palmerston',
|
404 |
643464 => 'Dunedin',
|
405 |
643465 => 'Palmerston',
|
@@ -408,14 +441,11 @@ return array (
|
|
408 |
643468 => 'Dunedin',
|
409 |
643469 => 'Dunedin',
|
410 |
64347 => 'Dunedin',
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
643485 => 'Lawrence',
|
415 |
-
|
416 |
-
643487 => 'Dunedin',
|
417 |
-
643488 => 'Dunedin',
|
418 |
-
643489 => 'Dunedin',
|
419 |
6434990 => 'Queenstown',
|
420 |
6434991 => 'Cromwell',
|
421 |
6434992 => 'Ranfurly',
|
@@ -426,6 +456,7 @@ return array (
|
|
426 |
6434997 => 'Lawrence',
|
427 |
6434998 => 'Dunedin',
|
428 |
6434999 => 'Dunedin',
|
|
|
429 |
643520 => 'Blenheim',
|
430 |
643521 => 'Nelson',
|
431 |
643522 => 'Nelson',
|
@@ -553,13 +584,7 @@ return array (
|
|
553 |
6435888 => 'Timaru',
|
554 |
6435889 => 'Timaru',
|
555 |
643590 => 'Christchurch',
|
556 |
-
|
557 |
-
6435951 => 'Christchurch',
|
558 |
-
6435952 => 'Christchurch',
|
559 |
-
6435953 => 'Christchurch',
|
560 |
-
6435954 => 'Christchurch',
|
561 |
-
6435955 => 'Christchurch',
|
562 |
-
6435956 => 'Christchurch',
|
563 |
6435990 => 'Hokitika',
|
564 |
6435991 => 'Franz Josef',
|
565 |
6435992 => 'Fox Glacier',
|
@@ -570,9 +595,11 @@ return array (
|
|
570 |
6435997 => 'Amberley',
|
571 |
6435998 => 'Rangiora',
|
572 |
6435999 => 'Christchurch',
|
573 |
-
|
574 |
-
|
575 |
-
|
|
|
|
|
576 |
6436500 => 'Christchurch',
|
577 |
6436501 => 'Akaroa',
|
578 |
6436502 => 'Amberley',
|
@@ -703,20 +730,14 @@ return array (
|
|
703 |
6436688 => 'Waitangi (Chatham Is.)',
|
704 |
6436689 => 'Christchurch',
|
705 |
643669 => 'Christchurch',
|
|
|
|
|
706 |
643680 => 'Fairlie',
|
707 |
-
|
708 |
-
643683 => 'Timaru',
|
709 |
-
643684 => 'Timaru',
|
710 |
643685 => 'Fairlie',
|
711 |
-
643686 => 'Timaru',
|
712 |
-
643687 => 'Timaru',
|
713 |
-
643688 => 'Timaru',
|
714 |
643689 => 'Waimate',
|
|
|
715 |
643690 => 'Waimate',
|
716 |
-
643692 => 'Geraldine',
|
717 |
-
643693 => 'Geraldine',
|
718 |
-
643696 => 'Geraldine',
|
719 |
-
643697 => 'Geraldine',
|
720 |
6436990 => 'Cheviot',
|
721 |
6436991 => 'Culverden',
|
722 |
6436992 => 'Greymouth',
|
@@ -727,10 +748,10 @@ return array (
|
|
727 |
6436997 => 'Motueka',
|
728 |
6436998 => 'Blenheim',
|
729 |
6436999 => 'Nelson',
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
643740 => 'Christchurch',
|
735 |
643741 => 'Christchurch',
|
736 |
643742 => 'Dunedin',
|
@@ -783,17 +804,21 @@ return array (
|
|
783 |
6437485 => 'Te Anau',
|
784 |
6437486 => 'Tokanui',
|
785 |
6437487 => 'Winton',
|
|
|
|
|
786 |
643749 => 'Christchurch',
|
787 |
643750 => 'Haast',
|
788 |
643751 => 'Fox Glacier',
|
789 |
643752 => 'Franz Josef',
|
790 |
643753 => 'Hokitika',
|
|
|
791 |
643755 => 'Hokitika',
|
792 |
643756 => 'Hokitika',
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
|
|
797 |
6437770 => 'Nelson',
|
798 |
6437771 => 'Blenheim',
|
799 |
6437772 => 'Timaru',
|
@@ -804,9 +829,8 @@ return array (
|
|
804 |
6437777 => 'Christchurch',
|
805 |
6437778 => 'Greymouth',
|
806 |
6437779 => 'Invercargill',
|
807 |
-
|
808 |
-
|
809 |
-
643789 => 'Westport',
|
810 |
6439000 => 'Christchurch',
|
811 |
6439001 => 'Christchurch',
|
812 |
6439002 => 'Rangiora',
|
@@ -820,12 +844,16 @@ return array (
|
|
820 |
6439010 => 'Queenstown',
|
821 |
6439011 => 'Queenstown',
|
822 |
6439012 => 'Queenstown',
|
|
|
|
|
823 |
6439015 => 'Wanaka',
|
824 |
6439016 => 'Alexandra',
|
825 |
6439017 => 'Cromwell',
|
826 |
6439018 => 'Ranfurly',
|
827 |
6439019 => 'Roxburgh',
|
828 |
6439020 => 'Gore',
|
|
|
|
|
829 |
6439023 => 'Te Anau',
|
830 |
6439024 => 'Lumsden',
|
831 |
6439025 => 'Otautau',
|
@@ -835,31 +863,41 @@ return array (
|
|
835 |
6439029 => 'Tokanui',
|
836 |
643903 => 'Christchurch',
|
837 |
6439040 => 'Balclutha',
|
|
|
838 |
6439042 => 'Oamaru',
|
|
|
839 |
6439044 => 'Milton',
|
840 |
6439045 => 'Twizel',
|
841 |
6439046 => 'Kurow',
|
842 |
6439047 => 'Alexandra',
|
843 |
6439048 => 'Lawrence',
|
844 |
6439049 => 'Palmerston',
|
|
|
845 |
6439050 => 'Geraldine',
|
846 |
6439052 => 'Mt Cook',
|
847 |
6439055 => 'Fairlie',
|
848 |
6439057 => 'Waimate',
|
849 |
6439060 => 'Greymouth',
|
850 |
6439061 => 'Greymouth',
|
|
|
851 |
6439063 => 'Westport',
|
|
|
|
|
852 |
6439066 => 'Hokitika',
|
853 |
6439067 => 'Franz Josef',
|
854 |
6439068 => 'Fox Glacier',
|
855 |
6439069 => 'Haast',
|
856 |
6439070 => 'Motueka',
|
857 |
6439071 => 'Motueka',
|
|
|
858 |
6439073 => 'Motueka',
|
|
|
859 |
6439075 => 'Takaka',
|
|
|
|
|
|
|
860 |
6439079 => 'Murchison',
|
861 |
-
|
862 |
-
6439081 => 'Ashburton',
|
863 |
6439082 => 'Culverden',
|
864 |
6439083 => 'Cheviot',
|
865 |
6439084 => 'Amberley',
|
@@ -867,9 +905,14 @@ return array (
|
|
867 |
6439090 => 'Rangiora',
|
868 |
6439091 => 'Rangiora',
|
869 |
6439092 => 'Rangiora',
|
|
|
|
|
|
|
|
|
870 |
6439097 => 'Darfield',
|
871 |
6439098 => 'Akaroa',
|
872 |
6439099 => 'Kaikoura',
|
|
|
873 |
643920 => 'Rangiora',
|
874 |
643921 => 'Blenheim',
|
875 |
643922 => 'Nelson',
|
@@ -930,6 +973,8 @@ return array (
|
|
930 |
6439325 => 'Kaikoura',
|
931 |
6439326 => 'Rangiora',
|
932 |
6439327 => 'Ashburton',
|
|
|
|
|
933 |
6439330 => 'Westport',
|
934 |
6439331 => 'Greymouth',
|
935 |
6439332 => 'Hokitika',
|
@@ -939,6 +984,7 @@ return array (
|
|
939 |
6439336 => 'Cromwell',
|
940 |
6439337 => 'Wanaka',
|
941 |
6439338 => 'Queenstown',
|
|
|
942 |
6439340 => 'Mt Cook',
|
943 |
6439341 => 'Fairlie',
|
944 |
6439342 => 'Geraldine',
|
@@ -947,6 +993,13 @@ return array (
|
|
947 |
6439345 => 'Christchurch',
|
948 |
6439346 => 'Christchurch',
|
949 |
6439347 => 'Christchurch',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
950 |
643940 => 'Christchurch',
|
951 |
643941 => 'Christchurch',
|
952 |
643942 => 'Christchurch',
|
@@ -985,18 +1038,16 @@ return array (
|
|
985 |
6439534 => 'Mt Cook',
|
986 |
6439535 => 'Fairlie',
|
987 |
6439536 => 'Waimate',
|
|
|
|
|
|
|
|
|
988 |
643955 => 'Dunedin',
|
989 |
643956 => 'Timaru',
|
990 |
643957 => 'Timaru',
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
643963 => 'Christchurch',
|
995 |
-
643964 => 'Christchurch',
|
996 |
-
643965 => 'Christchurch',
|
997 |
-
643966 => 'Christchurch',
|
998 |
-
643967 => 'Christchurch',
|
999 |
-
643968 => 'Christchurch',
|
1000 |
6439700 => 'Nelson',
|
1001 |
6439701 => 'Nelson',
|
1002 |
6439702 => 'Nelson',
|
@@ -1084,12 +1135,15 @@ return array (
|
|
1084 |
6439856 => 'Darfield',
|
1085 |
6439857 => 'Akaroa',
|
1086 |
6439858 => 'Kaikoura',
|
|
|
1087 |
6439860 => 'Nelson',
|
1088 |
6439861 => 'Nelson',
|
1089 |
6439862 => 'Nelson',
|
1090 |
6439863 => 'Motueka',
|
1091 |
6439864 => 'Takaka',
|
1092 |
6439865 => 'Murchison',
|
|
|
|
|
1093 |
6439868 => 'Blenheim',
|
1094 |
6439869 => 'Blenheim',
|
1095 |
6439870 => 'Queenstown',
|
@@ -1099,14 +1153,21 @@ return array (
|
|
1099 |
6439874 => 'Cromwell',
|
1100 |
6439875 => 'Ranfurly',
|
1101 |
6439876 => 'Roxburgh',
|
|
|
|
|
|
|
1102 |
6439880 => 'Greymouth',
|
1103 |
6439881 => 'Greymouth',
|
1104 |
6439882 => 'Westport',
|
1105 |
6439883 => 'Hokitika',
|
1106 |
6439884 => 'Franz Josef',
|
1107 |
6439885 => 'Fox Glacier',
|
1108 |
-
6439886 => '
|
|
|
|
|
|
|
1109 |
643989 => 'Nelson',
|
|
|
1110 |
644202 => 'Wellington',
|
1111 |
644203 => 'Wellington',
|
1112 |
644204 => 'Wellington',
|
@@ -1137,56 +1198,19 @@ return array (
|
|
1137 |
644281 => 'Wellington',
|
1138 |
6442820 => 'Wellington',
|
1139 |
6442821 => 'Wellington',
|
1140 |
-
|
1141 |
-
|
1142 |
-
644293 => 'Paraparaumu',
|
1143 |
-
644296 => 'Paraparaumu',
|
1144 |
-
644297 => 'Paraparaumu',
|
1145 |
-
644298 => 'Paraparaumu',
|
1146 |
-
644299 => 'Paraparaumu',
|
1147 |
-
6443330 => 'Wellington',
|
1148 |
-
6443331 => 'Wellington',
|
1149 |
-
6443332 => 'Wellington',
|
1150 |
6443333 => 'Paraparaumu',
|
1151 |
-
644370 => 'Wellington',
|
1152 |
6443708 => 'Paraparaumu',
|
1153 |
6443709 => 'Paraparaumu',
|
1154 |
-
64438 => 'Wellington',
|
1155 |
-
644390 => 'Wellington',
|
1156 |
-
644391 => 'Wellington',
|
1157 |
-
644392 => 'Wellington',
|
1158 |
644393 => 'Paraparaumu',
|
1159 |
-
644399 => 'Wellington',
|
1160 |
6443990 => 'Paraparaumu',
|
1161 |
-
|
1162 |
-
644437 => 'Wellington',
|
1163 |
-
644439 => 'Wellington',
|
1164 |
-
644460 => 'Wellington',
|
1165 |
-
644461 => 'Wellington',
|
1166 |
-
644462 => 'Wellington',
|
1167 |
-
644463 => 'Wellington',
|
1168 |
-
644464 => 'Wellington',
|
1169 |
-
644465 => 'Wellington',
|
1170 |
-
644466 => 'Wellington',
|
1171 |
-
644467 => 'Wellington',
|
1172 |
-
64447 => 'Wellington',
|
1173 |
-
644488 => 'Wellington',
|
1174 |
6444887 => 'Paraparaumu',
|
1175 |
6444888 => 'Paraparaumu',
|
1176 |
6444889 => 'Paraparaumu',
|
1177 |
-
|
1178 |
-
|
1179 |
-
644495 => 'Wellington',
|
1180 |
-
644496 => 'Wellington',
|
1181 |
-
644497 => 'Wellington',
|
1182 |
-
644498 => 'Wellington',
|
1183 |
-
644499 => 'Wellington',
|
1184 |
-
644524 => 'Wellington',
|
1185 |
-
644525 => 'Wellington',
|
1186 |
-
644526 => 'Wellington',
|
1187 |
-
644527 => 'Wellington',
|
1188 |
-
644528 => 'Wellington',
|
1189 |
-
644529 => 'Wellington',
|
1190 |
644550 => 'Wellington',
|
1191 |
644551 => 'Paraparaumu',
|
1192 |
644555 => 'Wellington',
|
@@ -1200,13 +1224,7 @@ return array (
|
|
1200 |
644587 => 'Wellington',
|
1201 |
644589 => 'Wellington',
|
1202 |
644590 => 'Wellington',
|
1203 |
-
|
1204 |
-
6445951 => 'Wellington',
|
1205 |
-
6445952 => 'Wellington',
|
1206 |
-
6445953 => 'Wellington',
|
1207 |
-
6445954 => 'Wellington',
|
1208 |
-
6445955 => 'Wellington',
|
1209 |
-
6445956 => 'Wellington',
|
1210 |
644619 => 'Wellington',
|
1211 |
644650 => 'Wellington',
|
1212 |
6446509 => 'Paraparaumu',
|
@@ -1214,12 +1232,7 @@ return array (
|
|
1214 |
644777 => 'Wellington',
|
1215 |
6447770 => 'Paraparaumu',
|
1216 |
6447771 => 'Paraparaumu',
|
1217 |
-
|
1218 |
-
644802 => 'Wellington',
|
1219 |
-
644803 => 'Wellington',
|
1220 |
-
644804 => 'Wellington',
|
1221 |
-
644805 => 'Wellington',
|
1222 |
-
644806 => 'Wellington',
|
1223 |
644810 => 'Wellington',
|
1224 |
644815 => 'Wellington',
|
1225 |
644816 => 'Wellington',
|
@@ -1241,44 +1254,15 @@ return array (
|
|
1241 |
644895 => 'Paraparaumu',
|
1242 |
644896 => 'Wellington',
|
1243 |
644897 => 'Wellington',
|
1244 |
-
|
1245 |
6449008 => 'Paraparaumu',
|
1246 |
-
644901 => 'Wellington',
|
1247 |
644902 => 'Paraparaumu',
|
1248 |
-
644903 => 'Wellington',
|
1249 |
6449030 => 'Paraparaumu',
|
1250 |
6449031 => 'Paraparaumu',
|
1251 |
644904 => 'Paraparaumu',
|
1252 |
644905 => 'Paraparaumu',
|
1253 |
644906 => 'Paraparaumu',
|
1254 |
-
|
1255 |
-
6449080 => 'Paraparaumu',
|
1256 |
-
6449081 => 'Paraparaumu',
|
1257 |
-
6449082 => 'Wellington',
|
1258 |
-
6449083 => 'Wellington',
|
1259 |
-
6449084 => 'Wellington',
|
1260 |
-
644909 => 'Wellington',
|
1261 |
-
644910 => 'Wellington',
|
1262 |
-
6449120 => 'Wellington',
|
1263 |
-
6449121 => 'Wellington',
|
1264 |
-
6449122 => 'Wellington',
|
1265 |
-
6449123 => 'Wellington',
|
1266 |
-
6449124 => 'Wellington',
|
1267 |
-
644913 => 'Wellington',
|
1268 |
-
644914 => 'Wellington',
|
1269 |
-
644915 => 'Wellington',
|
1270 |
-
644916 => 'Wellington',
|
1271 |
-
644917 => 'Wellington',
|
1272 |
-
644918 => 'Wellington',
|
1273 |
-
644920 => 'Wellington',
|
1274 |
-
644922 => 'Wellington',
|
1275 |
-
644924 => 'Wellington',
|
1276 |
-
644928 => 'Wellington',
|
1277 |
-
644931 => 'Wellington',
|
1278 |
-
644934 => 'Wellington',
|
1279 |
-
644938 => 'Wellington',
|
1280 |
-
644939 => 'Wellington',
|
1281 |
-
64497 => 'Wellington',
|
1282 |
6449740 => 'Paraparaumu',
|
1283 |
6449741 => 'Paraparaumu',
|
1284 |
644975 => 'Paraparaumu',
|
@@ -1348,7 +1332,6 @@ return array (
|
|
1348 |
6462412 => 'Gisborne',
|
1349 |
6462413 => 'Gisborne',
|
1350 |
6462414 => 'Napier',
|
1351 |
-
6462415 => 'Levin',
|
1352 |
6462416 => 'Waipukurau',
|
1353 |
6462417 => 'Wanganui',
|
1354 |
6462418 => 'Palmerston North',
|
@@ -1388,11 +1371,7 @@ return array (
|
|
1388 |
6462627 => 'Wanganui',
|
1389 |
6462628 => 'Wanganui',
|
1390 |
6462629 => 'Levin',
|
1391 |
-
|
1392 |
-
646273 => 'Hawera',
|
1393 |
-
646274 => 'Hawera',
|
1394 |
-
646278 => 'Hawera',
|
1395 |
-
646279 => 'Hawera',
|
1396 |
6462800 => 'Palmerston North',
|
1397 |
6462801 => 'Palmerston North',
|
1398 |
6462802 => 'Palmerston North',
|
@@ -1413,46 +1392,22 @@ return array (
|
|
1413 |
6462817 => 'Napier',
|
1414 |
6462818 => 'New Plymouth',
|
1415 |
6462819 => 'Levin',
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
1419 |
-
646308 => 'Featherston',
|
1420 |
646321 => 'Marton',
|
1421 |
646322 => 'Marton',
|
1422 |
-
646323 => 'Palmerston North',
|
1423 |
-
646324 => 'Palmerston North',
|
1424 |
-
646325 => 'Palmerston North',
|
1425 |
-
646326 => 'Palmerston North',
|
1426 |
646327 => 'Marton',
|
1427 |
-
|
1428 |
-
646329 => 'Palmerston North',
|
1429 |
-
646341 => 'Wanganui',
|
1430 |
-
646342 => 'Wanganui',
|
1431 |
-
646343 => 'Wanganui',
|
1432 |
-
646344 => 'Wanganui',
|
1433 |
-
646345 => 'Wanganui',
|
1434 |
-
646346 => 'Wanganui',
|
1435 |
-
646347 => 'Wanganui',
|
1436 |
-
646348 => 'Wanganui',
|
1437 |
-
646349 => 'Wanganui',
|
1438 |
64635 => 'Palmerston North',
|
1439 |
-
|
1440 |
-
646363 => 'Levin',
|
1441 |
-
646364 => 'Levin',
|
1442 |
646365 => 'Palmerston North',
|
1443 |
-
|
1444 |
-
|
1445 |
-
646368 => 'Levin',
|
1446 |
-
646369 => 'Levin',
|
1447 |
-
646370 => 'Masterton',
|
1448 |
-
646372 => 'Masterton',
|
1449 |
-
646373 => 'Masterton',
|
1450 |
646374 => 'Dannevirke',
|
1451 |
646375 => 'Pahiatua',
|
1452 |
646376 => 'Pahiatua',
|
1453 |
-
|
1454 |
-
646378 => 'Masterton',
|
1455 |
-
646379 => 'Masterton',
|
1456 |
646382 => 'Taihape',
|
1457 |
646385 => 'Ohakune',
|
1458 |
646387 => 'Waiouru',
|
@@ -1538,11 +1493,15 @@ return array (
|
|
1538 |
6466007 => 'Stratford',
|
1539 |
6466008 => 'Ohakune',
|
1540 |
6466009 => 'Waiouru',
|
1541 |
-
646601 => 'Napier',
|
1542 |
6466010 => 'Taihape',
|
1543 |
6466011 => 'Marton',
|
1544 |
-
6466012 => 'Pahiatua',
|
1545 |
6466013 => 'Featherston',
|
|
|
|
|
|
|
|
|
|
|
|
|
1546 |
646650 => 'Napier',
|
1547 |
6466508 => 'Napier/Wairoa',
|
1548 |
6466509 => 'Napier/Waipukurau',
|
@@ -1584,32 +1543,19 @@ return array (
|
|
1584 |
6466997 => 'New Plymouth',
|
1585 |
6466998 => 'New Plymouth',
|
1586 |
6466999 => 'New Plymouth',
|
|
|
1587 |
646750 => 'Mokau',
|
1588 |
-
646751 => 'New Plymouth',
|
1589 |
-
646752 => 'New Plymouth',
|
1590 |
6467525 => 'Mokau',
|
1591 |
6467529 => 'Mokau',
|
1592 |
-
|
1593 |
-
|
1594 |
-
6467550 => 'New Plymouth',
|
1595 |
-
6467551 => 'New Plymouth',
|
1596 |
-
6467552 => 'New Plymouth',
|
1597 |
-
6467553 => 'New Plymouth',
|
1598 |
-
6467554 => 'New Plymouth',
|
1599 |
-
6467555 => 'New Plymouth',
|
1600 |
-
6467557 => 'New Plymouth',
|
1601 |
-
6467558 => 'New Plymouth',
|
1602 |
-
6467559 => 'New Plymouth',
|
1603 |
-
646756 => 'New Plymouth',
|
1604 |
-
646757 => 'New Plymouth',
|
1605 |
-
646758 => 'New Plymouth',
|
1606 |
-
646759 => 'New Plymouth',
|
1607 |
646761 => 'Opunake',
|
1608 |
646762 => 'Stratford',
|
1609 |
646763 => 'Opunake',
|
1610 |
646764 => 'Stratford',
|
1611 |
646765 => 'Stratford',
|
1612 |
646766 => 'New Plymouth',
|
|
|
1613 |
646768 => 'New Plymouth',
|
1614 |
646769 => 'New Plymouth',
|
1615 |
6467770 => 'Gisborne',
|
@@ -1648,40 +1594,31 @@ return array (
|
|
1648 |
6468264 => 'Palmerston North',
|
1649 |
6468268 => 'New Plymouth',
|
1650 |
6468269 => 'New Plymouth',
|
1651 |
-
|
1652 |
-
|
1653 |
-
|
1654 |
-
|
1655 |
-
|
1656 |
-
|
1657 |
-
|
1658 |
-
646833 => 'Napier/Hastings',
|
1659 |
-
646834 => 'Napier/Hastings',
|
1660 |
-
646835 => 'Napier/Hastings',
|
1661 |
-
646836 => 'Napier/Hastings',
|
1662 |
646837 => 'Wairoa',
|
1663 |
646838 => 'Wairoa',
|
1664 |
-
|
|
|
1665 |
646842 => 'Napier/Hastings',
|
1666 |
646843 => 'Napier/Hastings',
|
1667 |
646844 => 'Napier/Hastings',
|
1668 |
646845 => 'Napier/Hastings',
|
|
|
1669 |
646847 => 'Napier/Hastings',
|
1670 |
-
|
1671 |
-
|
1672 |
-
|
1673 |
-
|
1674 |
-
|
1675 |
-
646862 => 'Gisborne',
|
1676 |
-
646863 => 'Gisborne',
|
1677 |
646864 => 'Ruatoria',
|
1678 |
-
|
1679 |
-
|
1680 |
-
646868 => 'Gisborne',
|
1681 |
-
6468690 => 'Gisborne',
|
1682 |
-
6468691 => 'Gisborne',
|
1683 |
-
6468692 => 'Gisborne',
|
1684 |
-
6468693 => 'Gisborne',
|
1685 |
64687 => 'Napier/Hastings',
|
1686 |
6468800 => 'Napier/Hastings',
|
1687 |
6468801 => 'Wanganui',
|
@@ -1815,13 +1752,17 @@ return array (
|
|
1815 |
6469317 => 'Pahiatua',
|
1816 |
6469318 => 'Levin',
|
1817 |
6469319 => 'Masterton',
|
|
|
1818 |
646946 => 'Masterton',
|
1819 |
6469468 => 'Featherston',
|
1820 |
646949 => 'Levin W100',
|
|
|
1821 |
646951 => 'Palmerston North',
|
1822 |
646952 => 'Palmerston North W100',
|
1823 |
646953 => 'Palmerston North W100',
|
1824 |
646954 => 'Palmerston North W100',
|
|
|
|
|
1825 |
6469570 => 'Palmerston North',
|
1826 |
6469571 => 'Palmerston North',
|
1827 |
6469572 => 'Palmerston North',
|
@@ -1832,17 +1773,28 @@ return array (
|
|
1832 |
6469577 => 'Ohakune',
|
1833 |
6469578 => 'Marton',
|
1834 |
6469579 => 'Pahiatua',
|
|
|
|
|
|
|
1835 |
6469610 => 'Wanganui',
|
1836 |
6469611 => 'Wanganui',
|
|
|
1837 |
6469613 => 'Levin',
|
1838 |
6469614 => 'Levin',
|
1839 |
6469615 => 'Masterton',
|
1840 |
6469616 => 'Featherston',
|
|
|
|
|
|
|
|
|
|
|
1841 |
646964 => 'Wanganui',
|
1842 |
646965 => 'Wanganui W100',
|
|
|
1843 |
646967 => 'New Plymouth',
|
1844 |
646968 => 'New Plymouth W100',
|
1845 |
646969 => 'New Plymouth',
|
|
|
1846 |
6469710 => 'New Plymouth',
|
1847 |
6469711 => 'New Plymouth',
|
1848 |
6469712 => 'New Plymouth',
|
@@ -1850,19 +1802,13 @@ return array (
|
|
1850 |
6469714 => 'Hawera',
|
1851 |
6469715 => 'Mokau',
|
1852 |
6469716 => 'Opunake',
|
1853 |
-
|
1854 |
-
646975 => 'Napier',
|
1855 |
-
646976 => 'Napier',
|
1856 |
6469850 => 'Napier',
|
1857 |
6469851 => 'Napier',
|
1858 |
6469852 => 'Napier',
|
1859 |
-
6469853 => '
|
1860 |
6469854 => 'Waipukurau',
|
1861 |
-
646986 => 'Gisborne',
|
1862 |
6469869 => 'Ruatoria',
|
1863 |
-
6469890 => 'Gisborne',
|
1864 |
-
6469891 => 'Gisborne',
|
1865 |
-
6469892 => 'Gisborne',
|
1866 |
6469893 => 'Ruatoria',
|
1867 |
647210 => 'Hamilton',
|
1868 |
647211 => 'Hamilton',
|
@@ -1981,17 +1927,13 @@ return array (
|
|
1981 |
6472827 => 'Tauranga',
|
1982 |
6472828 => 'Tauranga',
|
1983 |
6472829 => 'Tauranga',
|
1984 |
-
|
1985 |
-
|
1986 |
-
647306 => 'Whakatane',
|
1987 |
-
647307 => 'Whakatane',
|
1988 |
-
647308 => 'Whakatane',
|
1989 |
-
647309 => 'Whakatane',
|
1990 |
647312 => 'Whakatane',
|
1991 |
647315 => 'Opotiki',
|
1992 |
-
|
1993 |
-
647323 => 'Whakatane',
|
1994 |
647325 => 'Opotiki',
|
|
|
1995 |
647332 => 'Rotorua',
|
1996 |
6473331 => 'Rotorua',
|
1997 |
6473332 => 'Rotorua',
|
@@ -1999,27 +1941,11 @@ return array (
|
|
1999 |
6473338 => 'Rotorua',
|
2000 |
6473339 => 'Taupo',
|
2001 |
647334 => 'Rotorua',
|
2002 |
-
|
2003 |
-
|
2004 |
-
|
2005 |
-
|
2006 |
-
|
2007 |
-
647349 => 'Rotorua',
|
2008 |
-
647350 => 'Rotorua',
|
2009 |
-
647351 => 'Rotorua',
|
2010 |
-
647357 => 'Rotorua',
|
2011 |
-
647362 => 'Rotorua',
|
2012 |
-
647366 => 'Rotorua',
|
2013 |
-
647372 => 'Taupo',
|
2014 |
-
647374 => 'Taupo',
|
2015 |
-
647376 => 'Taupo',
|
2016 |
-
647377 => 'Taupo',
|
2017 |
-
647378 => 'Taupo',
|
2018 |
-
6473841 => 'Taupo',
|
2019 |
-
6473842 => 'Taupo',
|
2020 |
-
6473843 => 'Taupo',
|
2021 |
-
6473847 => 'Taupo',
|
2022 |
-
647386 => 'Taupo',
|
2023 |
647390 => 'Hamilton',
|
2024 |
647391 => 'Hamilton',
|
2025 |
6473920 => 'Huntly',
|
@@ -2085,17 +2011,7 @@ return array (
|
|
2085 |
6474659 => 'Whangamata',
|
2086 |
647466 => 'Tauranga',
|
2087 |
647533 => 'Tauranga',
|
2088 |
-
|
2089 |
-
647542 => 'Tauranga',
|
2090 |
-
647543 => 'Tauranga',
|
2091 |
-
647544 => 'Tauranga',
|
2092 |
-
647546 => 'Tauranga',
|
2093 |
-
647547 => 'Tauranga',
|
2094 |
-
6475480 => 'Tauranga',
|
2095 |
-
6475481 => 'Tauranga',
|
2096 |
-
6475482 => 'Tauranga',
|
2097 |
-
6475483 => 'Tauranga',
|
2098 |
-
647549 => 'Tauranga',
|
2099 |
647551 => 'Tauranga',
|
2100 |
647552 => 'Tauranga',
|
2101 |
647557 => 'Tauranga',
|
@@ -2165,7 +2081,7 @@ return array (
|
|
2165 |
6478070 => 'Morrinsville',
|
2166 |
6478071 => 'Otorohanga',
|
2167 |
6478072 => 'Paeroa',
|
2168 |
-
6478073 => 'Tokoroa
|
2169 |
6478074 => 'Taumarunui',
|
2170 |
6478075 => 'Te Kuiti',
|
2171 |
6478076 => 'Te Awamutu',
|
@@ -2204,6 +2120,9 @@ return array (
|
|
2204 |
6478142 => 'Whakatane',
|
2205 |
6478143 => 'Opotiki',
|
2206 |
6478144 => 'Tauranga',
|
|
|
|
|
|
|
2207 |
647823 => 'Hamilton',
|
2208 |
647824 => 'Hamilton',
|
2209 |
647825 => 'Hamilton',
|
@@ -2211,38 +2130,11 @@ return array (
|
|
2211 |
647827 => 'Hamilton',
|
2212 |
647828 => 'Huntly',
|
2213 |
647829 => 'Hamilton',
|
2214 |
-
|
2215 |
-
|
2216 |
-
|
2217 |
-
|
2218 |
-
|
2219 |
-
647838 => 'Hamilton',
|
2220 |
-
647839 => 'Hamilton',
|
2221 |
-
647843 => 'Hamilton',
|
2222 |
-
6478450 => 'Hamilton',
|
2223 |
-
6478451 => 'Hamilton',
|
2224 |
-
647846 => 'Hamilton',
|
2225 |
-
647847 => 'Hamilton',
|
2226 |
-
647848 => 'Hamilton',
|
2227 |
-
647849 => 'Hamilton',
|
2228 |
-
647850 => 'Hamilton',
|
2229 |
-
647851 => 'Hamilton',
|
2230 |
-
647852 => 'Hamilton',
|
2231 |
-
647853 => 'Hamilton',
|
2232 |
-
647854 => 'Hamilton',
|
2233 |
-
647855 => 'Hamilton',
|
2234 |
-
647856 => 'Hamilton',
|
2235 |
-
647857 => 'Hamilton',
|
2236 |
-
647858 => 'Hamilton',
|
2237 |
-
6478590 => 'Hamilton',
|
2238 |
-
6478591 => 'Hamilton',
|
2239 |
-
6478592 => 'Hamilton',
|
2240 |
-
6478593 => 'Hamilton',
|
2241 |
-
6478594 => 'Hamilton',
|
2242 |
-
6478595 => 'Hamilton',
|
2243 |
-
6478597 => 'Hamilton',
|
2244 |
-
6478598 => 'Hamilton',
|
2245 |
-
6478599 => 'Hamilton',
|
2246 |
647862 => 'Paeroa',
|
2247 |
647863 => 'Waihi',
|
2248 |
647864 => 'Thames',
|
@@ -2255,9 +2147,12 @@ return array (
|
|
2255 |
647871 => 'Te Awamutu',
|
2256 |
647872 => 'Te Awamutu',
|
2257 |
647873 => 'Otorohanga',
|
|
|
|
|
2258 |
647876 => 'Te Kuiti',
|
2259 |
647877 => 'Te Kuiti',
|
2260 |
647878 => 'Te Kuiti',
|
|
|
2261 |
647880 => 'Matamata',
|
2262 |
647881 => 'Matamata',
|
2263 |
647882 => 'Putaruru/Tokoroa',
|
@@ -2268,11 +2163,7 @@ return array (
|
|
2268 |
647887 => 'Morrinsville',
|
2269 |
647888 => 'Matamata',
|
2270 |
647889 => 'Morrinsville',
|
2271 |
-
|
2272 |
-
647893 => 'Taumarunui',
|
2273 |
-
647894 => 'Taumarunui',
|
2274 |
-
647895 => 'Taumarunui',
|
2275 |
-
647896 => 'Taumarunui',
|
2276 |
6478990 => 'Thames',
|
2277 |
6478991 => 'Whangamata',
|
2278 |
6478992 => 'Paeroa',
|
@@ -2283,13 +2174,13 @@ return array (
|
|
2283 |
6478997 => 'Morrinsville',
|
2284 |
6478998 => 'Hamilton',
|
2285 |
6478999 => 'Hamilton',
|
|
|
2286 |
6479000 => 'Hamilton',
|
2287 |
6479001 => 'Hamilton',
|
2288 |
6479002 => 'Matamata',
|
2289 |
6479003 => 'Thames',
|
2290 |
6479004 => 'Te Awamutu',
|
2291 |
6479005 => 'Tauranga',
|
2292 |
-
6479006 => 'Taupo',
|
2293 |
6479007 => 'Whakatane',
|
2294 |
6479008 => 'Rotorua',
|
2295 |
6479009 => 'Hamilton',
|
@@ -2308,10 +2199,6 @@ return array (
|
|
2308 |
6479040 => 'Otorohanga',
|
2309 |
6479045 => 'Taumarunui',
|
2310 |
6479049 => 'Te Kuiti',
|
2311 |
-
647905 => 'Taupo',
|
2312 |
-
647906 => 'Taupo',
|
2313 |
-
6479090 => 'Taupo',
|
2314 |
-
6479091 => 'Taupo',
|
2315 |
6479100 => 'Rotorua',
|
2316 |
6479101 => 'Rotorua',
|
2317 |
6479102 => 'Rotorua',
|
@@ -2327,10 +2214,12 @@ return array (
|
|
2327 |
6479240 => 'Taupo',
|
2328 |
6479241 => 'Whakatane',
|
2329 |
6479242 => 'Rotorua',
|
|
|
2330 |
6479244 => 'Tauranga',
|
2331 |
6479245 => 'Matamata',
|
2332 |
6479246 => 'Thames',
|
2333 |
6479247 => 'Hamilton',
|
|
|
2334 |
6479249 => 'Huntly',
|
2335 |
647925 => 'Tauranga',
|
2336 |
647926 => 'Tauranga',
|
@@ -2346,18 +2235,15 @@ return array (
|
|
2346 |
6479297 => 'Tauranga',
|
2347 |
6479298 => 'Taupo',
|
2348 |
6479299 => 'Rotorua',
|
|
|
2349 |
6479420 => 'Tauranga',
|
2350 |
6479421 => 'Tauranga',
|
2351 |
6479422 => 'Tauranga',
|
2352 |
647949 => 'Hamilton',
|
|
|
2353 |
6479500 => 'Whakatane',
|
2354 |
6479501 => 'Opotiki',
|
2355 |
-
|
2356 |
-
647958 => 'Hamilton',
|
2357 |
-
647959 => 'Hamilton',
|
2358 |
-
647960 => 'Hamilton',
|
2359 |
-
647961 => 'Hamilton',
|
2360 |
-
647968 => 'Hamilton',
|
2361 |
647970 => 'Hamilton',
|
2362 |
6479708 => 'Thames',
|
2363 |
6479709 => 'Matamata',
|
@@ -2407,55 +2293,24 @@ return array (
|
|
2407 |
647987 => 'Tauranga',
|
2408 |
647988 => 'Rotorua',
|
2409 |
647989 => 'Taupo',
|
2410 |
-
|
2411 |
6492006 => 'Helensville',
|
2412 |
6492007 => 'Warkworth',
|
2413 |
6492008 => 'Hibiscus Coast',
|
2414 |
6492009 => 'Pukekohe',
|
2415 |
-
649210 => 'Auckland',
|
2416 |
-
649211 => 'Auckland',
|
2417 |
-
649212 => 'Auckland',
|
2418 |
-
649213 => 'Auckland',
|
2419 |
-
649214 => 'Auckland',
|
2420 |
-
649215 => 'Auckland',
|
2421 |
-
649216 => 'Auckland',
|
2422 |
-
649218 => 'Auckland',
|
2423 |
-
649220 => 'Auckland',
|
2424 |
-
6492220 => 'Auckland',
|
2425 |
-
6492221 => 'Auckland',
|
2426 |
-
6492222 => 'Auckland',
|
2427 |
-
6492223 => 'Auckland',
|
2428 |
-
6492224 => 'Auckland',
|
2429 |
6492225 => 'Pukekohe',
|
2430 |
6492226 => 'Helensville',
|
2431 |
6492227 => 'Whangarei',
|
2432 |
6492228 => 'Warkworth',
|
2433 |
6492229 => 'Hibiscus Coast',
|
2434 |
-
|
2435 |
-
649232 => 'Pukekohe',
|
2436 |
-
649233 => 'Pukekohe',
|
2437 |
-
649235 => 'Pukekohe',
|
2438 |
-
649236 => 'Pukekohe',
|
2439 |
-
649237 => 'Pukekohe',
|
2440 |
-
649238 => 'Pukekohe',
|
2441 |
-
649239 => 'Pukekohe',
|
2442 |
-
6492420 => 'Auckland',
|
2443 |
6492426 => 'Whangarei',
|
2444 |
6492427 => 'Warkworth',
|
2445 |
6492428 => 'Hibiscus Coast',
|
2446 |
6492429 => 'Pukekohe',
|
2447 |
-
649248 => 'Auckland',
|
2448 |
-
649249 => 'Auckland',
|
2449 |
-
64925 => 'Auckland',
|
2450 |
-
64926 => 'Auckland',
|
2451 |
-
64927 => 'Auckland',
|
2452 |
-
649280 => 'Auckland',
|
2453 |
6492807 => 'Helensville',
|
2454 |
6492808 => 'Great Barrier Island',
|
2455 |
6492809 => 'Maungaturoto',
|
2456 |
-
649281 => 'Auckland',
|
2457 |
-
649282 => 'Auckland',
|
2458 |
-
6492830 => 'Auckland',
|
2459 |
6492831 => 'Maungaturoto',
|
2460 |
6492832 => 'Dargaville',
|
2461 |
6492833 => 'Warkworth',
|
@@ -2465,27 +2320,23 @@ return array (
|
|
2465 |
6492837 => 'Hibiscus Coast',
|
2466 |
6492838 => 'Pukekohe',
|
2467 |
6492839 => 'Whangarei',
|
2468 |
-
649291 => 'Auckland',
|
2469 |
-
649292 => 'Auckland',
|
2470 |
-
649294 => 'Auckland',
|
2471 |
-
649295 => 'Auckland',
|
2472 |
-
649296 => 'Auckland',
|
2473 |
-
649297 => 'Auckland',
|
2474 |
-
649298 => 'Auckland',
|
2475 |
-
649299 => 'Auckland',
|
2476 |
64930 => 'Auckland',
|
|
|
|
|
2477 |
649320 => 'Auckland',
|
2478 |
6493206 => 'Pukekohe',
|
2479 |
6493207 => 'Hibiscus Coast',
|
2480 |
6493208 => 'Helensville',
|
2481 |
6493209 => 'Great Barrier Island',
|
2482 |
64933 => 'Auckland',
|
|
|
2483 |
649347 => 'Auckland',
|
2484 |
649348 => 'Auckland',
|
2485 |
649349 => 'Auckland',
|
2486 |
64935 => 'Auckland',
|
2487 |
64936 => 'Auckland',
|
2488 |
64937 => 'Auckland',
|
|
|
2489 |
649390 => 'Auckland',
|
2490 |
649391 => 'Auckland',
|
2491 |
649392 => 'Auckland',
|
@@ -2503,6 +2354,10 @@ return array (
|
|
2503 |
6493942 => 'Great Barrier Island',
|
2504 |
6493943 => 'Helensville',
|
2505 |
6493944 => 'Hibiscus Coast',
|
|
|
|
|
|
|
|
|
2506 |
649399 => 'Auckland',
|
2507 |
6493990 => 'Great Barrier Island',
|
2508 |
6493991 => 'Pukekohe',
|
@@ -2539,33 +2394,16 @@ return array (
|
|
2539 |
649452 => 'Auckland',
|
2540 |
649458 => 'Dargaville',
|
2541 |
649459 => 'Whangarei',
|
2542 |
-
|
2543 |
-
|
2544 |
-
6494702 => 'Whangarei',
|
2545 |
-
6494703 => 'Whangarei',
|
2546 |
-
6494704 => 'Whangarei',
|
2547 |
-
6494705 => 'Whangarei',
|
2548 |
-
6494706 => 'Whangarei',
|
2549 |
-
649473 => 'Auckland',
|
2550 |
-
649475 => 'Auckland',
|
2551 |
-
649476 => 'Auckland',
|
2552 |
-
649477 => 'Auckland',
|
2553 |
-
649478 => 'Auckland',
|
2554 |
-
649479 => 'Auckland',
|
2555 |
64948 => 'Auckland',
|
2556 |
-
|
2557 |
-
64953 => 'Auckland',
|
2558 |
-
649550 => 'Auckland',
|
2559 |
-
649551 => 'Auckland',
|
2560 |
649552 => 'Pukekohe',
|
2561 |
6495530 => 'Great Barrier Island',
|
2562 |
6495531 => 'Helensville',
|
2563 |
6495532 => 'Warkworth',
|
2564 |
6495533 => 'Whangarei',
|
2565 |
-
6495538 => 'Auckland',
|
2566 |
-
6495539 => 'Auckland',
|
2567 |
649554 => 'Hibiscus Coast',
|
2568 |
-
649555 => 'Auckland',
|
2569 |
6495560 => 'Whangarei',
|
2570 |
6495561 => 'Whangarei',
|
2571 |
6495562 => 'Whangarei',
|
@@ -2576,46 +2414,20 @@ return array (
|
|
2576 |
6495567 => 'Kaitaia',
|
2577 |
6495568 => 'Kawakawa',
|
2578 |
6495569 => 'Maungaturoto',
|
2579 |
-
649557 => 'Auckland',
|
2580 |
-
649558 => 'Auckland',
|
2581 |
6495588 => 'Hibiscus Coast',
|
2582 |
6495589 => 'Pukekohe',
|
2583 |
-
|
2584 |
-
649580 => 'Auckland',
|
2585 |
-
649581 => 'Auckland',
|
2586 |
-
649582 => 'Auckland',
|
2587 |
-
649583 => 'Auckland',
|
2588 |
-
649585 => 'Auckland',
|
2589 |
-
649588 => 'Auckland',
|
2590 |
-
649589 => 'Auckland',
|
2591 |
-
649590 => 'Auckland',
|
2592 |
-
649600 => 'Auckland',
|
2593 |
6496007 => 'Helensville',
|
2594 |
6496008 => 'Hibiscus Coast',
|
2595 |
6496009 => 'Pukekohe',
|
2596 |
6496010 => 'Kaitaia',
|
2597 |
-
6496011 => 'Kaikohe',
|
2598 |
6496012 => 'Kawakawa',
|
2599 |
6496013 => 'Whangarei',
|
2600 |
6496014 => 'Dargaville',
|
2601 |
6496015 => 'Maungaturoto',
|
2602 |
6496016 => 'Warkworth',
|
2603 |
6496017 => 'Great Barrier Island',
|
2604 |
-
6496018 => 'Auckland',
|
2605 |
-
6496019 => 'Auckland',
|
2606 |
6496100 => 'Pukekohe',
|
2607 |
-
64962 => 'Auckland',
|
2608 |
-
649630 => 'Auckland',
|
2609 |
-
649631 => 'Auckland',
|
2610 |
-
649632 => 'Auckland',
|
2611 |
-
649633 => 'Auckland',
|
2612 |
-
649634 => 'Auckland',
|
2613 |
-
649635 => 'Auckland',
|
2614 |
-
649636 => 'Auckland',
|
2615 |
-
649638 => 'Auckland',
|
2616 |
-
649639 => 'Auckland',
|
2617 |
-
649640 => 'Auckland',
|
2618 |
-
649650 => 'Auckland',
|
2619 |
6496507 => 'Helensville',
|
2620 |
6496508 => 'Hibiscus Coast',
|
2621 |
6496509 => 'Pukekohe',
|
@@ -2630,12 +2442,6 @@ return array (
|
|
2630 |
6496518 => 'Kawakawa',
|
2631 |
6496519 => 'Maungaturoto',
|
2632 |
649652 => 'Warkworth',
|
2633 |
-
649666 => 'Auckland',
|
2634 |
-
6496880 => 'Auckland',
|
2635 |
-
6496881 => 'Auckland',
|
2636 |
-
6496882 => 'Auckland',
|
2637 |
-
6496883 => 'Auckland',
|
2638 |
-
6496884 => 'Auckland',
|
2639 |
6496990 => 'Kaitaia',
|
2640 |
6496991 => 'Kaikohe',
|
2641 |
6496992 => 'Kawakawa',
|
@@ -2645,7 +2451,6 @@ return array (
|
|
2645 |
6496996 => 'Warkworth',
|
2646 |
6496997 => 'Hibiscus Coast',
|
2647 |
6496998 => 'Helensville',
|
2648 |
-
6496999 => 'Auckland',
|
2649 |
6497770 => 'Whangarei',
|
2650 |
6497771 => 'Kaikohe',
|
2651 |
6497772 => 'Kaitaia',
|
@@ -2656,38 +2461,13 @@ return array (
|
|
2656 |
6497777 => 'Auckland',
|
2657 |
6497778 => 'Pukekohe',
|
2658 |
6497779 => 'Great Barrier Island',
|
2659 |
-
|
2660 |
6498016 => 'Hibiscus Coast',
|
2661 |
6498017 => 'Hibiscus Coast',
|
2662 |
6498018 => 'Whangarei',
|
2663 |
6498019 => 'Pukekohe',
|
2664 |
-
649810 => 'Auckland',
|
2665 |
-
649811 => 'Auckland',
|
2666 |
-
649812 => 'Auckland',
|
2667 |
-
649813 => 'Auckland',
|
2668 |
-
649814 => 'Auckland',
|
2669 |
-
649815 => 'Auckland',
|
2670 |
-
649816 => 'Auckland',
|
2671 |
-
649817 => 'Auckland',
|
2672 |
-
649818 => 'Auckland',
|
2673 |
-
649820 => 'Auckland',
|
2674 |
-
649822 => 'Auckland',
|
2675 |
-
649825 => 'Auckland',
|
2676 |
-
649826 => 'Auckland',
|
2677 |
-
649827 => 'Auckland',
|
2678 |
-
649828 => 'Auckland',
|
2679 |
-
649829 => 'Auckland',
|
2680 |
-
64983 => 'Auckland',
|
2681 |
-
649840 => 'Auckland',
|
2682 |
-
649845 => 'Auckland',
|
2683 |
-
649846 => 'Auckland',
|
2684 |
-
649847 => 'Auckland',
|
2685 |
-
649849 => 'Auckland',
|
2686 |
-
649869 => 'Auckland',
|
2687 |
6498690 => 'Kawakawa',
|
2688 |
6498691 => 'Maungaturoto',
|
2689 |
-
649880 => 'Auckland',
|
2690 |
-
649881 => 'Auckland',
|
2691 |
6498814 => 'Pukekohe',
|
2692 |
6498815 => 'Helensville',
|
2693 |
6498816 => 'Great Barrier Island',
|
@@ -2699,8 +2479,6 @@ return array (
|
|
2699 |
6498824 => 'Kawakawa',
|
2700 |
6498825 => 'Maungaturoto',
|
2701 |
6498826 => 'Warkworth',
|
2702 |
-
649883 => 'Auckland',
|
2703 |
-
649884 => 'Auckland',
|
2704 |
6498850 => 'Great Barrier Island',
|
2705 |
6498851 => 'Pukekohe',
|
2706 |
6498852 => 'Warkworth',
|
@@ -2711,28 +2489,18 @@ return array (
|
|
2711 |
6498857 => 'Dargaville',
|
2712 |
6498858 => 'Kaikohe',
|
2713 |
6498859 => 'Kaitaia',
|
2714 |
-
649886 => 'Auckland',
|
2715 |
-
649887 => 'Auckland',
|
2716 |
-
649888 => 'Auckland',
|
2717 |
6498880 => 'Helensville',
|
2718 |
6498881 => 'Hibiscus Coast',
|
2719 |
6498882 => 'Whangarei',
|
2720 |
6498883 => 'Whangarei',
|
2721 |
-
649889 => 'Auckland',
|
2722 |
-
649890 => 'Auckland',
|
2723 |
6498900 => 'Pukekohe',
|
2724 |
6498901 => 'Pukekohe',
|
2725 |
-
|
2726 |
-
6499000 => 'Auckland',
|
2727 |
-
6499001 => 'Auckland',
|
2728 |
-
6499002 => 'Auckland',
|
2729 |
6499003 => 'Warkworth',
|
2730 |
6499004 => 'Hibiscus Coast',
|
2731 |
-
6499005 => 'Auckland',
|
2732 |
6499006 => 'Whangarei',
|
2733 |
6499007 => 'Kaikohe',
|
2734 |
6499008 => 'Pukekohe',
|
2735 |
-
6499009 => 'Auckland',
|
2736 |
6499010 => 'Kaitaia',
|
2737 |
6499011 => 'Kaitaia',
|
2738 |
6499012 => 'Kawakawa',
|
@@ -2744,7 +2512,6 @@ return array (
|
|
2744 |
6499018 => 'Maungaturoto',
|
2745 |
6499019 => 'Maungaturoto',
|
2746 |
649902 => 'Warkworth',
|
2747 |
-
649903 => 'Auckland',
|
2748 |
6499040 => 'Helensville',
|
2749 |
6499041 => 'Helensville',
|
2750 |
6499042 => 'Hibiscus Coast',
|
@@ -2755,7 +2522,7 @@ return array (
|
|
2755 |
6499047 => 'Pukekohe',
|
2756 |
6499048 => 'Pukekohe',
|
2757 |
6499049 => 'Great Barrier Island',
|
2758 |
-
|
2759 |
6499061 => 'Hibiscus Coast',
|
2760 |
6499062 => 'Hibiscus Coast',
|
2761 |
6499063 => 'Hibiscus Coast',
|
@@ -2765,34 +2532,18 @@ return array (
|
|
2765 |
6499067 => 'Pukekohe',
|
2766 |
6499068 => 'Pukekohe',
|
2767 |
6499069 => 'Pukekohe',
|
2768 |
-
|
2769 |
-
649909 => 'Auckland',
|
2770 |
6499100 => 'Pukekohe',
|
2771 |
6499101 => 'Pukekohe',
|
2772 |
-
649912 => 'Auckland',
|
2773 |
-
649913 => 'Auckland',
|
2774 |
-
649914 => 'Auckland',
|
2775 |
-
649915 => 'Auckland',
|
2776 |
-
649916 => 'Auckland',
|
2777 |
-
649917 => 'Auckland',
|
2778 |
-
649918 => 'Auckland',
|
2779 |
-
649919 => 'Auckland',
|
2780 |
-
64992 => 'Auckland',
|
2781 |
6499295 => 'Kaikohe',
|
2782 |
6499296 => 'Kaitaia',
|
2783 |
6499297 => 'Hibiscus Coast',
|
2784 |
6499298 => 'Pukekohe',
|
2785 |
6499299 => 'Whangarei',
|
2786 |
-
649930 => 'Auckland',
|
2787 |
-
649940 => 'Auckland',
|
2788 |
-
649941 => 'Auckland',
|
2789 |
6499420 => 'Pukekohe',
|
2790 |
6499421 => 'Hibiscus Coast',
|
2791 |
6499422 => 'Helensville',
|
2792 |
6499423 => 'Great Barrier Island',
|
2793 |
-
6499424 => 'Auckland',
|
2794 |
-
6499425 => 'Auckland',
|
2795 |
-
6499426 => 'Auckland',
|
2796 |
6499428 => 'Warkworth',
|
2797 |
6499450 => 'Warkworth',
|
2798 |
6499451 => 'Warkworth',
|
@@ -2820,17 +2571,9 @@ return array (
|
|
2820 |
6499473 => 'Helensville',
|
2821 |
6499474 => 'Helensville',
|
2822 |
6499475 => 'Hibiscus Coast',
|
2823 |
-
6499476 => 'Auckland',
|
2824 |
6499477 => 'Pukekohe',
|
2825 |
6499478 => 'Pukekohe',
|
2826 |
6499479 => 'Pukekohe',
|
2827 |
-
649948 => 'Auckland',
|
2828 |
-
649949 => 'Auckland',
|
2829 |
-
649950 => 'Auckland',
|
2830 |
-
649951 => 'Auckland',
|
2831 |
-
649952 => 'Auckland',
|
2832 |
-
649953 => 'Auckland',
|
2833 |
-
649954 => 'Auckland',
|
2834 |
6499551 => 'Whangarei',
|
2835 |
6499552 => 'Dargaville',
|
2836 |
6499553 => 'Kaikohe',
|
@@ -2840,21 +2583,11 @@ return array (
|
|
2840 |
6499557 => 'Warkworth',
|
2841 |
6499558 => 'Great Barrier Island',
|
2842 |
6499559 => 'Whangarei',
|
2843 |
-
649956 => 'Auckland',
|
2844 |
649957 => 'Pukekohe',
|
2845 |
649958 => 'Helensville',
|
2846 |
649959 => 'Hibiscus Coast',
|
2847 |
-
649962 => 'Auckland',
|
2848 |
-
649963 => 'Auckland',
|
2849 |
6499630 => 'Pukekohe',
|
2850 |
6499631 => 'Pukekohe',
|
2851 |
-
649964 => 'Auckland',
|
2852 |
-
649965 => 'Auckland',
|
2853 |
-
649966 => 'Auckland',
|
2854 |
-
649967 => 'Auckland',
|
2855 |
-
649968 => 'Auckland',
|
2856 |
-
649969 => 'Auckland',
|
2857 |
-
64997 => 'Auckland',
|
2858 |
6499716 => 'Helensville',
|
2859 |
6499717 => 'Whangarei',
|
2860 |
6499718 => 'Whangarei',
|
@@ -2867,19 +2600,11 @@ return array (
|
|
2867 |
6499746 => 'Kawakawa',
|
2868 |
6499747 => 'Dargaville',
|
2869 |
6499748 => 'Whangarei',
|
2870 |
-
|
2871 |
6499810 => 'Hibiscus Coast',
|
2872 |
6499811 => 'Hibiscus Coast',
|
2873 |
6499818 => 'Great Barrier Island',
|
2874 |
6499819 => 'Helensville',
|
2875 |
-
649982 => 'Whangarei',
|
2876 |
-
649983 => 'Whangarei',
|
2877 |
-
649984 => 'Auckland',
|
2878 |
-
649985 => 'Auckland',
|
2879 |
-
649986 => 'Whangarei',
|
2880 |
-
6499870 => 'Whangarei',
|
2881 |
-
6499871 => 'Whangarei',
|
2882 |
-
6499872 => 'Whangarei',
|
2883 |
6499873 => 'Kaitaia',
|
2884 |
6499874 => 'Kawakawa',
|
2885 |
6499875 => 'Dargaville',
|
@@ -2887,5 +2612,4 @@ return array (
|
|
2887 |
6499877 => 'Maungaturoto',
|
2888 |
6499878 => 'Warkworth',
|
2889 |
6499879 => 'Warkworth',
|
2890 |
-
649988 => 'Whangarei',
|
2891 |
);
|
39 |
643226 => 'Otautau',
|
40 |
643230 => 'Invercargill',
|
41 |
643231 => 'Invercargill',
|
42 |
+
643232 => 'Riverton/Winton',
|
43 |
+
643233 => 'Riverton/Winton',
|
44 |
643234 => 'Riverton',
|
45 |
643235 => 'Invercargill',
|
46 |
643236 => 'Winton',
|
47 |
+
643237 => 'Riverton/Winton',
|
48 |
+
643238 => 'Riverton/Winton',
|
49 |
643239 => 'Invercargill',
|
50 |
+
643240 => 'Tokanui/Lumsden/Te Anau',
|
51 |
+
643241 => 'Tokanui/Lumsden/Te Anau',
|
52 |
6432420 => 'Christchurch',
|
53 |
+
6432421 => 'Tokanui/Lumsden/Te Anau',
|
54 |
+
6432422 => 'Tokanui/Lumsden/Te Anau',
|
55 |
6432423 => 'Dunedin',
|
56 |
6432424 => 'Nelson',
|
57 |
6432425 => 'Invercargill',
|
59 |
6432427 => 'Greymouth',
|
60 |
6432428 => 'Queenstown',
|
61 |
6432429 => 'Timaru',
|
62 |
+
643243 => 'Tokanui/Lumsden/Te Anau',
|
63 |
6432440 => 'Christchurch',
|
64 |
6432441 => 'Christchurch',
|
65 |
6432442 => 'Christchurch',
|
70 |
6432447 => 'Timaru',
|
71 |
6432448 => 'Dunedin',
|
72 |
6432449 => 'Queenstown',
|
73 |
+
643245 => 'Tokanui/Lumsden/Te Anau',
|
74 |
643246 => 'Tokanui',
|
75 |
+
643247 => 'Tokanui/Lumsden/Te Anau',
|
76 |
643248 => 'Lumsden',
|
77 |
643249 => 'Te Anau',
|
78 |
+
64325 => 'South Island',
|
79 |
643250 => 'Christchurch',
|
80 |
643260 => 'Christchurch',
|
81 |
6432606 => 'Dunedin',
|
86 |
6432611 => 'Kaikoura',
|
87 |
6432612 => 'Rangiora',
|
88 |
6432613 => 'Waitangi (Chatham Is.)',
|
89 |
+
6432614 => 'South Island',
|
90 |
6432615 => 'Amberley',
|
91 |
6432616 => 'Ashburton',
|
92 |
6432617 => 'Cheviot',
|
137 |
6432662 => 'Christchurch',
|
138 |
6432663 => 'Christchurch',
|
139 |
6432664 => 'Christchurch',
|
140 |
+
6432665 => 'South Island',
|
141 |
+
6432666 => 'South Island',
|
142 |
+
6432667 => 'South Island',
|
143 |
6432668 => 'Blenheim',
|
144 |
6432669 => 'Rangiora',
|
145 |
+
643267 => 'South Island',
|
146 |
+
643268 => 'South Island',
|
147 |
+
643269 => 'South Island',
|
148 |
643270 => 'Christchurch',
|
149 |
6432710 => 'Christchurch',
|
150 |
6432711 => 'Akaroa',
|
195 |
6432756 => 'Gore',
|
196 |
6432757 => 'Lumsden',
|
197 |
6432758 => 'Otautau',
|
198 |
+
6432759 => 'South Island',
|
199 |
+
643276 => 'South Island',
|
200 |
+
643277 => 'South Island',
|
201 |
+
643278 => 'South Island',
|
202 |
+
643279 => 'South Island',
|
203 |
+
64328 => 'South Island',
|
204 |
6432800 => 'Te Anau',
|
205 |
6432801 => 'Lumsden',
|
206 |
6432802 => 'Gore',
|
225 |
6432887 => 'Nelson',
|
226 |
6432888 => 'Nelson',
|
227 |
6432889 => 'Blenheim',
|
228 |
+
64329 => 'South Island',
|
229 |
6432990 => 'Lumsden',
|
230 |
6432991 => 'Milton',
|
231 |
6432992 => 'Gore',
|
236 |
6432997 => 'Edendale',
|
237 |
6432998 => 'Tokanui',
|
238 |
6432999 => 'Invercargill',
|
239 |
+
64330 => 'Ashburton/Akaroa/Chatham Islands',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
64331 => 'Rangiora/Amberley/Culverden/Darfield/Cheviot/Kaikoura',
|
241 |
64332 => 'Christchurch',
|
242 |
643331 => 'Christchurch',
|
249 |
643339 => 'Christchurch',
|
250 |
64334 => 'Christchurch',
|
251 |
64335 => 'Christchurch',
|
252 |
+
64336 => 'South Island',
|
253 |
64337 => 'Christchurch',
|
254 |
64338 => 'Christchurch',
|
255 |
643390 => 'Christchurch',
|
263 |
6433917 => 'Franz Josef',
|
264 |
6433918 => 'Fox Glacier',
|
265 |
6433919 => 'Haast',
|
266 |
+
643392 => 'South Island',
|
267 |
643393 => 'Christchurch',
|
268 |
6433940 => 'Westport',
|
269 |
6433941 => 'Blenheim',
|
285 |
6433957 => 'Palmerston',
|
286 |
6433958 => 'Oamaru',
|
287 |
6433959 => 'Balclutha',
|
288 |
+
643396 => 'South Island',
|
289 |
+
643397 => 'South Island',
|
290 |
6433980 => 'Milton',
|
291 |
6433981 => 'Twizel',
|
292 |
6433982 => 'Kurow',
|
297 |
6433987 => 'Cromwell',
|
298 |
6433988 => 'Wanaka',
|
299 |
6433989 => 'Waimate',
|
300 |
+
6433990 => 'South Island',
|
301 |
6433991 => 'Invercargill',
|
302 |
6433992 => 'Riverton',
|
303 |
6433993 => 'Te Anau',
|
307 |
6433997 => 'Gore',
|
308 |
6433998 => 'Lumsden',
|
309 |
6433999 => 'Otautau',
|
310 |
+
64340 => 'South Island',
|
311 |
643409 => 'Queenstown',
|
312 |
+
643410 => 'Balclutha/Milton',
|
313 |
+
643411 => 'Balclutha/Milton',
|
314 |
643412 => 'Balclutha',
|
315 |
643413 => 'Balclutha',
|
316 |
+
643414 => 'Balclutha/Milton',
|
317 |
643415 => 'Balclutha',
|
318 |
+
643416 => 'Balclutha/Milton',
|
319 |
643417 => 'Milton',
|
320 |
643418 => 'Balclutha',
|
321 |
643419 => 'Balclutha',
|
392 |
6434297 => 'Westport',
|
393 |
6434298 => 'Hokitika',
|
394 |
6434299 => 'Haast',
|
395 |
+
64343 => 'Oamaru',
|
396 |
643430 => 'Mt Cook',
|
397 |
+
643435 => 'Oamaru/Mount Cook/Twizel/Kurow',
|
|
|
|
|
|
|
398 |
6434350 => 'Twizel',
|
399 |
6434351 => 'Mt Cook',
|
400 |
6434353 => 'Twizel',
|
401 |
6434359 => 'Twizel',
|
402 |
643436 => 'Kurow',
|
|
|
403 |
643438 => 'Kurow',
|
|
|
404 |
6434400 => 'Alexandra',
|
405 |
6434401 => 'Cromwell',
|
406 |
6434402 => 'Alexandra',
|
407 |
+
6434403 => 'Queenstown/Cromwell/Alexandra/Wanaka/Ranfurly/Roxburgh',
|
408 |
6434404 => 'Alexandra',
|
409 |
6434405 => 'Alexandra',
|
410 |
+
6434406 => 'Queenstown/Cromwell/Alexandra/Wanaka/Ranfurly/Roxburgh',
|
411 |
+
6434407 => 'Queenstown/Cromwell/Alexandra/Wanaka/Ranfurly/Roxburgh',
|
412 |
+
6434408 => 'Queenstown/Cromwell/Alexandra/Wanaka/Ranfurly/Roxburgh',
|
413 |
+
6434409 => 'Queenstown/Cromwell/Alexandra/Wanaka/Ranfurly/Roxburgh',
|
414 |
643441 => 'Queenstown',
|
415 |
643442 => 'Queenstown',
|
416 |
643443 => 'Wanaka',
|
428 |
643455 => 'Dunedin',
|
429 |
643456 => 'Dunedin',
|
430 |
643457 => 'Dunedin',
|
431 |
+
643458 => 'Dunedin/Queenstown',
|
432 |
+
643459 => 'Dunedin/Queenstown',
|
433 |
+
643460 => 'Dunedin/Palmerston',
|
434 |
+
643461 => 'Dunedin/Palmerston',
|
435 |
+
643462 => 'Dunedin/Palmerston',
|
436 |
643463 => 'Palmerston',
|
437 |
643464 => 'Dunedin',
|
438 |
643465 => 'Palmerston',
|
441 |
643468 => 'Dunedin',
|
442 |
643469 => 'Dunedin',
|
443 |
64347 => 'Dunedin',
|
444 |
+
64348 => 'Dunedin',
|
445 |
+
643480 => 'Dunedin/Lawrence/Mosgiel',
|
446 |
+
643483 => 'Dunedin/Lawrence/Mosgiel',
|
447 |
643485 => 'Lawrence',
|
448 |
+
64349 => 'South Island',
|
|
|
|
|
|
|
449 |
6434990 => 'Queenstown',
|
450 |
6434991 => 'Cromwell',
|
451 |
6434992 => 'Ranfurly',
|
456 |
6434997 => 'Lawrence',
|
457 |
6434998 => 'Dunedin',
|
458 |
6434999 => 'Dunedin',
|
459 |
+
6435 => 'South Island',
|
460 |
643520 => 'Blenheim',
|
461 |
643521 => 'Nelson',
|
462 |
643522 => 'Nelson',
|
584 |
6435888 => 'Timaru',
|
585 |
6435889 => 'Timaru',
|
586 |
643590 => 'Christchurch',
|
587 |
+
643595 => 'Christchurch',
|
|
|
|
|
|
|
|
|
|
|
|
|
588 |
6435990 => 'Hokitika',
|
589 |
6435991 => 'Franz Josef',
|
590 |
6435992 => 'Fox Glacier',
|
595 |
6435997 => 'Amberley',
|
596 |
6435998 => 'Rangiora',
|
597 |
6435999 => 'Christchurch',
|
598 |
+
64360 => 'South Island',
|
599 |
+
64361 => 'Timaru',
|
600 |
+
64362 => 'South Island',
|
601 |
+
64363 => 'South Island',
|
602 |
+
64364 => 'South Island',
|
603 |
6436500 => 'Christchurch',
|
604 |
6436501 => 'Akaroa',
|
605 |
6436502 => 'Amberley',
|
730 |
6436688 => 'Waitangi (Chatham Is.)',
|
731 |
6436689 => 'Christchurch',
|
732 |
643669 => 'Christchurch',
|
733 |
+
64367 => 'South Island',
|
734 |
+
64368 => 'Timaru',
|
735 |
643680 => 'Fairlie',
|
736 |
+
643682 => 'Timaru/Waimate/Fairlie',
|
|
|
|
|
737 |
643685 => 'Fairlie',
|
|
|
|
|
|
|
738 |
643689 => 'Waimate',
|
739 |
+
64369 => 'Geraldine',
|
740 |
643690 => 'Waimate',
|
|
|
|
|
|
|
|
|
741 |
6436990 => 'Cheviot',
|
742 |
6436991 => 'Culverden',
|
743 |
6436992 => 'Greymouth',
|
748 |
6436997 => 'Motueka',
|
749 |
6436998 => 'Blenheim',
|
750 |
6436999 => 'Nelson',
|
751 |
+
64370 => 'South Island',
|
752 |
+
64371 => 'South Island',
|
753 |
+
64372 => 'South Island',
|
754 |
+
64373 => 'Greymouth',
|
755 |
643740 => 'Christchurch',
|
756 |
643741 => 'Christchurch',
|
757 |
643742 => 'Dunedin',
|
804 |
6437485 => 'Te Anau',
|
805 |
6437486 => 'Tokanui',
|
806 |
6437487 => 'Winton',
|
807 |
+
6437488 => 'South Island',
|
808 |
+
6437489 => 'South Island',
|
809 |
643749 => 'Christchurch',
|
810 |
643750 => 'Haast',
|
811 |
643751 => 'Fox Glacier',
|
812 |
643752 => 'Franz Josef',
|
813 |
643753 => 'Hokitika',
|
814 |
+
643754 => 'Hokitika/Franz Josef Glacier/Fox Glacier/Haast',
|
815 |
643755 => 'Hokitika',
|
816 |
643756 => 'Hokitika',
|
817 |
+
643757 => 'Hokitika/Franz Josef Glacier/Fox Glacier/Haast',
|
818 |
+
643758 => 'Hokitika/Franz Josef Glacier/Fox Glacier/Haast',
|
819 |
+
643759 => 'Hokitika/Franz Josef Glacier/Fox Glacier/Haast',
|
820 |
+
64376 => 'Greymouth',
|
821 |
+
64377 => 'South Island',
|
822 |
6437770 => 'Nelson',
|
823 |
6437771 => 'Blenheim',
|
824 |
6437772 => 'Timaru',
|
829 |
6437777 => 'Christchurch',
|
830 |
6437778 => 'Greymouth',
|
831 |
6437779 => 'Invercargill',
|
832 |
+
64378 => 'Westport',
|
833 |
+
64379 => 'South Island',
|
|
|
834 |
6439000 => 'Christchurch',
|
835 |
6439001 => 'Christchurch',
|
836 |
6439002 => 'Rangiora',
|
844 |
6439010 => 'Queenstown',
|
845 |
6439011 => 'Queenstown',
|
846 |
6439012 => 'Queenstown',
|
847 |
+
6439013 => 'Ashburton',
|
848 |
+
6439014 => 'Ashburton',
|
849 |
6439015 => 'Wanaka',
|
850 |
6439016 => 'Alexandra',
|
851 |
6439017 => 'Cromwell',
|
852 |
6439018 => 'Ranfurly',
|
853 |
6439019 => 'Roxburgh',
|
854 |
6439020 => 'Gore',
|
855 |
+
6439021 => 'Ashburton',
|
856 |
+
6439022 => 'Ashburton',
|
857 |
6439023 => 'Te Anau',
|
858 |
6439024 => 'Lumsden',
|
859 |
6439025 => 'Otautau',
|
863 |
6439029 => 'Tokanui',
|
864 |
643903 => 'Christchurch',
|
865 |
6439040 => 'Balclutha',
|
866 |
+
6439041 => 'Ashburton',
|
867 |
6439042 => 'Oamaru',
|
868 |
+
6439043 => 'Ashburton',
|
869 |
6439044 => 'Milton',
|
870 |
6439045 => 'Twizel',
|
871 |
6439046 => 'Kurow',
|
872 |
6439047 => 'Alexandra',
|
873 |
6439048 => 'Lawrence',
|
874 |
6439049 => 'Palmerston',
|
875 |
+
643905 => 'Ashburton',
|
876 |
6439050 => 'Geraldine',
|
877 |
6439052 => 'Mt Cook',
|
878 |
6439055 => 'Fairlie',
|
879 |
6439057 => 'Waimate',
|
880 |
6439060 => 'Greymouth',
|
881 |
6439061 => 'Greymouth',
|
882 |
+
6439062 => 'Ashburton',
|
883 |
6439063 => 'Westport',
|
884 |
+
6439064 => 'Ashburton',
|
885 |
+
6439065 => 'Ashburton',
|
886 |
6439066 => 'Hokitika',
|
887 |
6439067 => 'Franz Josef',
|
888 |
6439068 => 'Fox Glacier',
|
889 |
6439069 => 'Haast',
|
890 |
6439070 => 'Motueka',
|
891 |
6439071 => 'Motueka',
|
892 |
+
6439072 => 'Ashburton',
|
893 |
6439073 => 'Motueka',
|
894 |
+
6439074 => 'Ashburton',
|
895 |
6439075 => 'Takaka',
|
896 |
+
6439076 => 'Ashburton',
|
897 |
+
6439077 => 'Ashburton',
|
898 |
+
6439078 => 'Ashburton',
|
899 |
6439079 => 'Murchison',
|
900 |
+
643908 => 'Ashburton',
|
|
|
901 |
6439082 => 'Culverden',
|
902 |
6439083 => 'Cheviot',
|
903 |
6439084 => 'Amberley',
|
905 |
6439090 => 'Rangiora',
|
906 |
6439091 => 'Rangiora',
|
907 |
6439092 => 'Rangiora',
|
908 |
+
6439093 => 'Ashburton',
|
909 |
+
6439094 => 'Ashburton',
|
910 |
+
6439095 => 'Ashburton',
|
911 |
+
6439096 => 'Ashburton',
|
912 |
6439097 => 'Darfield',
|
913 |
6439098 => 'Akaroa',
|
914 |
6439099 => 'Kaikoura',
|
915 |
+
64391 => 'South Island',
|
916 |
643920 => 'Rangiora',
|
917 |
643921 => 'Blenheim',
|
918 |
643922 => 'Nelson',
|
973 |
6439325 => 'Kaikoura',
|
974 |
6439326 => 'Rangiora',
|
975 |
6439327 => 'Ashburton',
|
976 |
+
6439328 => 'South Island',
|
977 |
+
6439329 => 'South Island',
|
978 |
6439330 => 'Westport',
|
979 |
6439331 => 'Greymouth',
|
980 |
6439332 => 'Hokitika',
|
984 |
6439336 => 'Cromwell',
|
985 |
6439337 => 'Wanaka',
|
986 |
6439338 => 'Queenstown',
|
987 |
+
6439339 => 'South Island',
|
988 |
6439340 => 'Mt Cook',
|
989 |
6439341 => 'Fairlie',
|
990 |
6439342 => 'Geraldine',
|
993 |
6439345 => 'Christchurch',
|
994 |
6439346 => 'Christchurch',
|
995 |
6439347 => 'Christchurch',
|
996 |
+
6439348 => 'South Island',
|
997 |
+
6439349 => 'South Island',
|
998 |
+
643935 => 'South Island',
|
999 |
+
643936 => 'South Island',
|
1000 |
+
643937 => 'South Island',
|
1001 |
+
643938 => 'South Island',
|
1002 |
+
643939 => 'South Island',
|
1003 |
643940 => 'Christchurch',
|
1004 |
643941 => 'Christchurch',
|
1005 |
643942 => 'Christchurch',
|
1038 |
6439534 => 'Mt Cook',
|
1039 |
6439535 => 'Fairlie',
|
1040 |
6439536 => 'Waimate',
|
1041 |
+
6439537 => 'Dunedin/Timaru',
|
1042 |
+
6439538 => 'Dunedin/Timaru',
|
1043 |
+
6439539 => 'Dunedin/Timaru',
|
1044 |
+
643954 => 'Dunedin/Timaru',
|
1045 |
643955 => 'Dunedin',
|
1046 |
643956 => 'Timaru',
|
1047 |
643957 => 'Timaru',
|
1048 |
+
643958 => 'Dunedin/Timaru',
|
1049 |
+
643959 => 'Dunedin/Timaru',
|
1050 |
+
64396 => 'Christchurch',
|
|
|
|
|
|
|
|
|
|
|
|
|
1051 |
6439700 => 'Nelson',
|
1052 |
6439701 => 'Nelson',
|
1053 |
6439702 => 'Nelson',
|
1135 |
6439856 => 'Darfield',
|
1136 |
6439857 => 'Akaroa',
|
1137 |
6439858 => 'Kaikoura',
|
1138 |
+
6439859 => 'Christchurch/Blenheim/Nelson',
|
1139 |
6439860 => 'Nelson',
|
1140 |
6439861 => 'Nelson',
|
1141 |
6439862 => 'Nelson',
|
1142 |
6439863 => 'Motueka',
|
1143 |
6439864 => 'Takaka',
|
1144 |
6439865 => 'Murchison',
|
1145 |
+
6439866 => 'Christchurch/Blenheim/Nelson',
|
1146 |
+
6439867 => 'Christchurch/Blenheim/Nelson',
|
1147 |
6439868 => 'Blenheim',
|
1148 |
6439869 => 'Blenheim',
|
1149 |
6439870 => 'Queenstown',
|
1153 |
6439874 => 'Cromwell',
|
1154 |
6439875 => 'Ranfurly',
|
1155 |
6439876 => 'Roxburgh',
|
1156 |
+
6439877 => 'Christchurch/Blenheim/Nelson',
|
1157 |
+
6439878 => 'Christchurch/Blenheim/Nelson',
|
1158 |
+
6439879 => 'Christchurch/Blenheim/Nelson',
|
1159 |
6439880 => 'Greymouth',
|
1160 |
6439881 => 'Greymouth',
|
1161 |
6439882 => 'Westport',
|
1162 |
6439883 => 'Hokitika',
|
1163 |
6439884 => 'Franz Josef',
|
1164 |
6439885 => 'Fox Glacier',
|
1165 |
+
6439886 => 'Christchurch/Blenheim/Nelson',
|
1166 |
+
6439887 => 'Christchurch/Blenheim/Nelson',
|
1167 |
+
6439888 => 'Christchurch/Blenheim/Nelson',
|
1168 |
+
6439889 => 'Christchurch/Blenheim/Nelson',
|
1169 |
643989 => 'Nelson',
|
1170 |
+
64399 => 'South Island',
|
1171 |
644202 => 'Wellington',
|
1172 |
644203 => 'Wellington',
|
1173 |
644204 => 'Wellington',
|
1198 |
644281 => 'Wellington',
|
1199 |
6442820 => 'Wellington',
|
1200 |
6442821 => 'Wellington',
|
1201 |
+
64429 => 'Paraparaumu',
|
1202 |
+
6443 => 'Wellington',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1203 |
6443333 => 'Paraparaumu',
|
|
|
1204 |
6443708 => 'Paraparaumu',
|
1205 |
6443709 => 'Paraparaumu',
|
|
|
|
|
|
|
|
|
1206 |
644393 => 'Paraparaumu',
|
|
|
1207 |
6443990 => 'Paraparaumu',
|
1208 |
+
6444 => 'Wellington',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1209 |
6444887 => 'Paraparaumu',
|
1210 |
6444888 => 'Paraparaumu',
|
1211 |
6444889 => 'Paraparaumu',
|
1212 |
+
6445 => 'Wellington/Hutt Valley',
|
1213 |
+
64452 => 'Wellington',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1214 |
644550 => 'Wellington',
|
1215 |
644551 => 'Paraparaumu',
|
1216 |
644555 => 'Wellington',
|
1224 |
644587 => 'Wellington',
|
1225 |
644589 => 'Wellington',
|
1226 |
644590 => 'Wellington',
|
1227 |
+
644595 => 'Wellington',
|
|
|
|
|
|
|
|
|
|
|
|
|
1228 |
644619 => 'Wellington',
|
1229 |
644650 => 'Wellington',
|
1230 |
6446509 => 'Paraparaumu',
|
1232 |
644777 => 'Wellington',
|
1233 |
6447770 => 'Paraparaumu',
|
1234 |
6447771 => 'Paraparaumu',
|
1235 |
+
64480 => 'Wellington',
|
|
|
|
|
|
|
|
|
|
|
1236 |
644810 => 'Wellington',
|
1237 |
644815 => 'Wellington',
|
1238 |
644816 => 'Wellington',
|
1254 |
644895 => 'Paraparaumu',
|
1255 |
644896 => 'Wellington',
|
1256 |
644897 => 'Wellington',
|
1257 |
+
6449 => 'Wellington',
|
1258 |
6449008 => 'Paraparaumu',
|
|
|
1259 |
644902 => 'Paraparaumu',
|
|
|
1260 |
6449030 => 'Paraparaumu',
|
1261 |
6449031 => 'Paraparaumu',
|
1262 |
644904 => 'Paraparaumu',
|
1263 |
644905 => 'Paraparaumu',
|
1264 |
644906 => 'Paraparaumu',
|
1265 |
+
644908 => 'Paraparaumu',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1266 |
6449740 => 'Paraparaumu',
|
1267 |
6449741 => 'Paraparaumu',
|
1268 |
644975 => 'Paraparaumu',
|
1332 |
6462412 => 'Gisborne',
|
1333 |
6462413 => 'Gisborne',
|
1334 |
6462414 => 'Napier',
|
|
|
1335 |
6462416 => 'Waipukurau',
|
1336 |
6462417 => 'Wanganui',
|
1337 |
6462418 => 'Palmerston North',
|
1371 |
6462627 => 'Wanganui',
|
1372 |
6462628 => 'Wanganui',
|
1373 |
6462629 => 'Levin',
|
1374 |
+
64627 => 'Hawera',
|
|
|
|
|
|
|
|
|
1375 |
6462800 => 'Palmerston North',
|
1376 |
6462801 => 'Palmerston North',
|
1377 |
6462802 => 'Palmerston North',
|
1392 |
6462817 => 'Napier',
|
1393 |
6462818 => 'New Plymouth',
|
1394 |
6462819 => 'Levin',
|
1395 |
+
64630 => 'Featherston',
|
1396 |
+
64632 => 'Palmerston North',
|
1397 |
+
646320 => 'Palmerston North/Marton',
|
|
|
1398 |
646321 => 'Marton',
|
1399 |
646322 => 'Marton',
|
|
|
|
|
|
|
|
|
1400 |
646327 => 'Marton',
|
1401 |
+
64634 => 'Wanganui',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1402 |
64635 => 'Palmerston North',
|
1403 |
+
64636 => 'Levin',
|
|
|
|
|
1404 |
646365 => 'Palmerston North',
|
1405 |
+
64637 => 'Masterton',
|
1406 |
+
646371 => 'Masterton/Dannevirke/Pahiatua',
|
|
|
|
|
|
|
|
|
|
|
1407 |
646374 => 'Dannevirke',
|
1408 |
646375 => 'Pahiatua',
|
1409 |
646376 => 'Pahiatua',
|
1410 |
+
64638 => 'Taihape/Ohakune/Waiouru',
|
|
|
|
|
1411 |
646382 => 'Taihape',
|
1412 |
646385 => 'Ohakune',
|
1413 |
646387 => 'Waiouru',
|
1493 |
6466007 => 'Stratford',
|
1494 |
6466008 => 'Ohakune',
|
1495 |
6466009 => 'Waiouru',
|
|
|
1496 |
6466010 => 'Taihape',
|
1497 |
6466011 => 'Marton',
|
|
|
1498 |
6466013 => 'Featherston',
|
1499 |
+
6466014 => 'Napier',
|
1500 |
+
6466015 => 'Napier',
|
1501 |
+
6466016 => 'Napier',
|
1502 |
+
6466017 => 'Napier',
|
1503 |
+
6466018 => 'Napier',
|
1504 |
+
6466019 => 'Napier',
|
1505 |
646650 => 'Napier',
|
1506 |
6466508 => 'Napier/Wairoa',
|
1507 |
6466509 => 'Napier/Waipukurau',
|
1543 |
6466997 => 'New Plymouth',
|
1544 |
6466998 => 'New Plymouth',
|
1545 |
6466999 => 'New Plymouth',
|
1546 |
+
64675 => 'New Plymouth',
|
1547 |
646750 => 'Mokau',
|
|
|
|
|
1548 |
6467525 => 'Mokau',
|
1549 |
6467529 => 'Mokau',
|
1550 |
+
6467556 => 'New Plymouth/Mokau',
|
1551 |
+
646760 => 'New Plymouth/Opunake/Stratford',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1552 |
646761 => 'Opunake',
|
1553 |
646762 => 'Stratford',
|
1554 |
646763 => 'Opunake',
|
1555 |
646764 => 'Stratford',
|
1556 |
646765 => 'Stratford',
|
1557 |
646766 => 'New Plymouth',
|
1558 |
+
646767 => 'New Plymouth/Opunake/Stratford',
|
1559 |
646768 => 'New Plymouth',
|
1560 |
646769 => 'New Plymouth',
|
1561 |
6467770 => 'Gisborne',
|
1594 |
6468264 => 'Palmerston North',
|
1595 |
6468268 => 'New Plymouth',
|
1596 |
6468269 => 'New Plymouth',
|
1597 |
+
64683 => 'Napier/Hastings',
|
1598 |
+
646830 => 'Napier',
|
1599 |
+
6468304 => 'Napier/Wairoa',
|
1600 |
+
6468305 => 'Napier/Wairoa',
|
1601 |
+
6468306 => 'Napier/Wairoa',
|
1602 |
+
6468307 => 'Napier/Wairoa',
|
1603 |
+
646832 => 'Napier/Wairoa',
|
|
|
|
|
|
|
|
|
1604 |
646837 => 'Wairoa',
|
1605 |
646838 => 'Wairoa',
|
1606 |
+
646840 => 'Napier City',
|
1607 |
+
646841 => 'Napier City',
|
1608 |
646842 => 'Napier/Hastings',
|
1609 |
646843 => 'Napier/Hastings',
|
1610 |
646844 => 'Napier/Hastings',
|
1611 |
646845 => 'Napier/Hastings',
|
1612 |
+
646846 => 'Napier City',
|
1613 |
646847 => 'Napier/Hastings',
|
1614 |
+
646848 => 'Napier City',
|
1615 |
+
646849 => 'Napier City',
|
1616 |
+
64685 => 'Waipukurau',
|
1617 |
+
64686 => 'Gisborne',
|
1618 |
+
646860 => 'Gisborne/Ruatoria',
|
|
|
|
|
1619 |
646864 => 'Ruatoria',
|
1620 |
+
646866 => 'Gisborne/Ruatoria',
|
1621 |
+
646869 => 'Gisborne/Ruatoria',
|
|
|
|
|
|
|
|
|
|
|
1622 |
64687 => 'Napier/Hastings',
|
1623 |
6468800 => 'Napier/Hastings',
|
1624 |
6468801 => 'Wanganui',
|
1752 |
6469317 => 'Pahiatua',
|
1753 |
6469318 => 'Levin',
|
1754 |
6469319 => 'Masterton',
|
1755 |
+
64694 => 'Masterton/Levin',
|
1756 |
646946 => 'Masterton',
|
1757 |
6469468 => 'Featherston',
|
1758 |
646949 => 'Levin W100',
|
1759 |
+
646950 => 'Palmerston North/New Plymouth',
|
1760 |
646951 => 'Palmerston North',
|
1761 |
646952 => 'Palmerston North W100',
|
1762 |
646953 => 'Palmerston North W100',
|
1763 |
646954 => 'Palmerston North W100',
|
1764 |
+
646955 => 'Palmerston North/New Plymouth',
|
1765 |
+
646956 => 'Palmerston North/New Plymouth',
|
1766 |
6469570 => 'Palmerston North',
|
1767 |
6469571 => 'Palmerston North',
|
1768 |
6469572 => 'Palmerston North',
|
1773 |
6469577 => 'Ohakune',
|
1774 |
6469578 => 'Marton',
|
1775 |
6469579 => 'Pahiatua',
|
1776 |
+
646958 => 'Palmerston North/New Plymouth',
|
1777 |
+
646959 => 'Palmerston North/New Plymouth',
|
1778 |
+
646960 => 'Wanganui/New Plymouth',
|
1779 |
6469610 => 'Wanganui',
|
1780 |
6469611 => 'Wanganui',
|
1781 |
+
6469612 => 'Wanganui/New Plymouth',
|
1782 |
6469613 => 'Levin',
|
1783 |
6469614 => 'Levin',
|
1784 |
6469615 => 'Masterton',
|
1785 |
6469616 => 'Featherston',
|
1786 |
+
6469617 => 'Wanganui/New Plymouth',
|
1787 |
+
6469618 => 'Wanganui/New Plymouth',
|
1788 |
+
6469619 => 'Wanganui/New Plymouth',
|
1789 |
+
646962 => 'Wanganui/New Plymouth',
|
1790 |
+
646963 => 'Wanganui/New Plymouth',
|
1791 |
646964 => 'Wanganui',
|
1792 |
646965 => 'Wanganui W100',
|
1793 |
+
646966 => 'Wanganui/New Plymouth',
|
1794 |
646967 => 'New Plymouth',
|
1795 |
646968 => 'New Plymouth W100',
|
1796 |
646969 => 'New Plymouth',
|
1797 |
+
64697 => 'Napier',
|
1798 |
6469710 => 'New Plymouth',
|
1799 |
6469711 => 'New Plymouth',
|
1800 |
6469712 => 'New Plymouth',
|
1802 |
6469714 => 'Hawera',
|
1803 |
6469715 => 'Mokau',
|
1804 |
6469716 => 'Opunake',
|
1805 |
+
64698 => 'Gisborne',
|
|
|
|
|
1806 |
6469850 => 'Napier',
|
1807 |
6469851 => 'Napier',
|
1808 |
6469852 => 'Napier',
|
1809 |
+
6469853 => 'Waiouru',
|
1810 |
6469854 => 'Waipukurau',
|
|
|
1811 |
6469869 => 'Ruatoria',
|
|
|
|
|
|
|
1812 |
6469893 => 'Ruatoria',
|
1813 |
647210 => 'Hamilton',
|
1814 |
647211 => 'Hamilton',
|
1927 |
6472827 => 'Tauranga',
|
1928 |
6472828 => 'Tauranga',
|
1929 |
6472829 => 'Tauranga',
|
1930 |
+
64730 => 'Whakatane',
|
1931 |
+
64731 => 'Whakatane/Opotiki',
|
|
|
|
|
|
|
|
|
1932 |
647312 => 'Whakatane',
|
1933 |
647315 => 'Opotiki',
|
1934 |
+
64732 => 'Whakatane',
|
|
|
1935 |
647325 => 'Opotiki',
|
1936 |
+
64733 => 'Rotorua/Taupo',
|
1937 |
647332 => 'Rotorua',
|
1938 |
6473331 => 'Rotorua',
|
1939 |
6473332 => 'Rotorua',
|
1941 |
6473338 => 'Rotorua',
|
1942 |
6473339 => 'Taupo',
|
1943 |
647334 => 'Rotorua',
|
1944 |
+
64734 => 'Rotorua',
|
1945 |
+
64735 => 'Rotorua',
|
1946 |
+
64736 => 'Rotorua',
|
1947 |
+
64737 => 'Taupo',
|
1948 |
+
64738 => 'Taupo',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1949 |
647390 => 'Hamilton',
|
1950 |
647391 => 'Hamilton',
|
1951 |
6473920 => 'Huntly',
|
2011 |
6474659 => 'Whangamata',
|
2012 |
647466 => 'Tauranga',
|
2013 |
647533 => 'Tauranga',
|
2014 |
+
64754 => 'Tauranga',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015 |
647551 => 'Tauranga',
|
2016 |
647552 => 'Tauranga',
|
2017 |
647557 => 'Tauranga',
|
2081 |
6478070 => 'Morrinsville',
|
2082 |
6478071 => 'Otorohanga',
|
2083 |
6478072 => 'Paeroa',
|
2084 |
+
6478073 => 'Putaruru/Tokoroa',
|
2085 |
6478074 => 'Taumarunui',
|
2086 |
6478075 => 'Te Kuiti',
|
2087 |
6478076 => 'Te Awamutu',
|
2120 |
6478142 => 'Whakatane',
|
2121 |
6478143 => 'Opotiki',
|
2122 |
6478144 => 'Tauranga',
|
2123 |
+
647820 => 'Hamilton/Huntly',
|
2124 |
+
647821 => 'Hamilton/Huntly',
|
2125 |
+
647822 => 'Hamilton/Huntly',
|
2126 |
647823 => 'Hamilton',
|
2127 |
647824 => 'Hamilton',
|
2128 |
647825 => 'Hamilton',
|
2130 |
647827 => 'Hamilton',
|
2131 |
647828 => 'Huntly',
|
2132 |
647829 => 'Hamilton',
|
2133 |
+
64783 => 'Hamilton',
|
2134 |
+
64784 => 'Hamilton',
|
2135 |
+
64785 => 'Hamilton',
|
2136 |
+
647860 => 'Paeroa/Waihi/Thames/Whangamata',
|
2137 |
+
647861 => 'Paeroa/Waihi/Thames/Whangamata',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2138 |
647862 => 'Paeroa',
|
2139 |
647863 => 'Waihi',
|
2140 |
647864 => 'Thames',
|
2147 |
647871 => 'Te Awamutu',
|
2148 |
647872 => 'Te Awamutu',
|
2149 |
647873 => 'Otorohanga',
|
2150 |
+
647874 => 'Te Awamutu/Otorohanga/Te Kuiti',
|
2151 |
+
647875 => 'Te Awamutu/Otorohanga/Te Kuiti',
|
2152 |
647876 => 'Te Kuiti',
|
2153 |
647877 => 'Te Kuiti',
|
2154 |
647878 => 'Te Kuiti',
|
2155 |
+
647879 => 'Te Awamutu/Otorohanga/Te Kuiti',
|
2156 |
647880 => 'Matamata',
|
2157 |
647881 => 'Matamata',
|
2158 |
647882 => 'Putaruru/Tokoroa',
|
2163 |
647887 => 'Morrinsville',
|
2164 |
647888 => 'Matamata',
|
2165 |
647889 => 'Morrinsville',
|
2166 |
+
64789 => 'Taumarunui',
|
|
|
|
|
|
|
|
|
2167 |
6478990 => 'Thames',
|
2168 |
6478991 => 'Whangamata',
|
2169 |
6478992 => 'Paeroa',
|
2174 |
6478997 => 'Morrinsville',
|
2175 |
6478998 => 'Hamilton',
|
2176 |
6478999 => 'Hamilton',
|
2177 |
+
64790 => 'Taupo',
|
2178 |
6479000 => 'Hamilton',
|
2179 |
6479001 => 'Hamilton',
|
2180 |
6479002 => 'Matamata',
|
2181 |
6479003 => 'Thames',
|
2182 |
6479004 => 'Te Awamutu',
|
2183 |
6479005 => 'Tauranga',
|
|
|
2184 |
6479007 => 'Whakatane',
|
2185 |
6479008 => 'Rotorua',
|
2186 |
6479009 => 'Hamilton',
|
2199 |
6479040 => 'Otorohanga',
|
2200 |
6479045 => 'Taumarunui',
|
2201 |
6479049 => 'Te Kuiti',
|
|
|
|
|
|
|
|
|
2202 |
6479100 => 'Rotorua',
|
2203 |
6479101 => 'Rotorua',
|
2204 |
6479102 => 'Rotorua',
|
2214 |
6479240 => 'Taupo',
|
2215 |
6479241 => 'Whakatane',
|
2216 |
6479242 => 'Rotorua',
|
2217 |
+
6479243 => 'Rotorua/Whakatane/Tauranga',
|
2218 |
6479244 => 'Tauranga',
|
2219 |
6479245 => 'Matamata',
|
2220 |
6479246 => 'Thames',
|
2221 |
6479247 => 'Hamilton',
|
2222 |
+
6479248 => 'Rotorua/Whakatane/Tauranga',
|
2223 |
6479249 => 'Huntly',
|
2224 |
647925 => 'Tauranga',
|
2225 |
647926 => 'Tauranga',
|
2235 |
6479297 => 'Tauranga',
|
2236 |
6479298 => 'Taupo',
|
2237 |
6479299 => 'Rotorua',
|
2238 |
+
64793 => 'Tauranga',
|
2239 |
6479420 => 'Tauranga',
|
2240 |
6479421 => 'Tauranga',
|
2241 |
6479422 => 'Tauranga',
|
2242 |
647949 => 'Hamilton',
|
2243 |
+
64795 => 'Hamilton',
|
2244 |
6479500 => 'Whakatane',
|
2245 |
6479501 => 'Opotiki',
|
2246 |
+
64796 => 'Hamilton',
|
|
|
|
|
|
|
|
|
|
|
2247 |
647970 => 'Hamilton',
|
2248 |
6479708 => 'Thames',
|
2249 |
6479709 => 'Matamata',
|
2293 |
647987 => 'Tauranga',
|
2294 |
647988 => 'Rotorua',
|
2295 |
647989 => 'Taupo',
|
2296 |
+
6492 => 'Auckland',
|
2297 |
6492006 => 'Helensville',
|
2298 |
6492007 => 'Warkworth',
|
2299 |
6492008 => 'Hibiscus Coast',
|
2300 |
6492009 => 'Pukekohe',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2301 |
6492225 => 'Pukekohe',
|
2302 |
6492226 => 'Helensville',
|
2303 |
6492227 => 'Whangarei',
|
2304 |
6492228 => 'Warkworth',
|
2305 |
6492229 => 'Hibiscus Coast',
|
2306 |
+
64923 => 'Pukekohe',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2307 |
6492426 => 'Whangarei',
|
2308 |
6492427 => 'Warkworth',
|
2309 |
6492428 => 'Hibiscus Coast',
|
2310 |
6492429 => 'Pukekohe',
|
|
|
|
|
|
|
|
|
|
|
|
|
2311 |
6492807 => 'Helensville',
|
2312 |
6492808 => 'Great Barrier Island',
|
2313 |
6492809 => 'Maungaturoto',
|
|
|
|
|
|
|
2314 |
6492831 => 'Maungaturoto',
|
2315 |
6492832 => 'Dargaville',
|
2316 |
6492833 => 'Warkworth',
|
2320 |
6492837 => 'Hibiscus Coast',
|
2321 |
6492838 => 'Pukekohe',
|
2322 |
6492839 => 'Whangarei',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2323 |
64930 => 'Auckland',
|
2324 |
+
64931 => 'Auckland/Waiheke Island',
|
2325 |
+
64932 => 'Auckland/Waiheke Island',
|
2326 |
649320 => 'Auckland',
|
2327 |
6493206 => 'Pukekohe',
|
2328 |
6493207 => 'Hibiscus Coast',
|
2329 |
6493208 => 'Helensville',
|
2330 |
6493209 => 'Great Barrier Island',
|
2331 |
64933 => 'Auckland',
|
2332 |
+
64934 => 'Auckland/Waiheke Island',
|
2333 |
649347 => 'Auckland',
|
2334 |
649348 => 'Auckland',
|
2335 |
649349 => 'Auckland',
|
2336 |
64935 => 'Auckland',
|
2337 |
64936 => 'Auckland',
|
2338 |
64937 => 'Auckland',
|
2339 |
+
64938 => 'Auckland/Waiheke Island',
|
2340 |
649390 => 'Auckland',
|
2341 |
649391 => 'Auckland',
|
2342 |
649392 => 'Auckland',
|
2354 |
6493942 => 'Great Barrier Island',
|
2355 |
6493943 => 'Helensville',
|
2356 |
6493944 => 'Hibiscus Coast',
|
2357 |
+
649395 => 'Auckland/Waiheke Island',
|
2358 |
+
649396 => 'Auckland/Waiheke Island',
|
2359 |
+
649397 => 'Auckland/Waiheke Island',
|
2360 |
+
649398 => 'Auckland/Waiheke Island',
|
2361 |
649399 => 'Auckland',
|
2362 |
6493990 => 'Great Barrier Island',
|
2363 |
6493991 => 'Pukekohe',
|
2394 |
649452 => 'Auckland',
|
2395 |
649458 => 'Dargaville',
|
2396 |
649459 => 'Whangarei',
|
2397 |
+
64947 => 'Auckland',
|
2398 |
+
649470 => 'Whangarei',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2399 |
64948 => 'Auckland',
|
2400 |
+
6495 => 'Auckland',
|
|
|
|
|
|
|
2401 |
649552 => 'Pukekohe',
|
2402 |
6495530 => 'Great Barrier Island',
|
2403 |
6495531 => 'Helensville',
|
2404 |
6495532 => 'Warkworth',
|
2405 |
6495533 => 'Whangarei',
|
|
|
|
|
2406 |
649554 => 'Hibiscus Coast',
|
|
|
2407 |
6495560 => 'Whangarei',
|
2408 |
6495561 => 'Whangarei',
|
2409 |
6495562 => 'Whangarei',
|
2414 |
6495567 => 'Kaitaia',
|
2415 |
6495568 => 'Kawakawa',
|
2416 |
6495569 => 'Maungaturoto',
|
|
|
|
|
2417 |
6495588 => 'Hibiscus Coast',
|
2418 |
6495589 => 'Pukekohe',
|
2419 |
+
6496 => 'Auckland',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2420 |
6496007 => 'Helensville',
|
2421 |
6496008 => 'Hibiscus Coast',
|
2422 |
6496009 => 'Pukekohe',
|
2423 |
6496010 => 'Kaitaia',
|
|
|
2424 |
6496012 => 'Kawakawa',
|
2425 |
6496013 => 'Whangarei',
|
2426 |
6496014 => 'Dargaville',
|
2427 |
6496015 => 'Maungaturoto',
|
2428 |
6496016 => 'Warkworth',
|
2429 |
6496017 => 'Great Barrier Island',
|
|
|
|
|
2430 |
6496100 => 'Pukekohe',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2431 |
6496507 => 'Helensville',
|
2432 |
6496508 => 'Hibiscus Coast',
|
2433 |
6496509 => 'Pukekohe',
|
2442 |
6496518 => 'Kawakawa',
|
2443 |
6496519 => 'Maungaturoto',
|
2444 |
649652 => 'Warkworth',
|
|
|
|
|
|
|
|
|
|
|
|
|
2445 |
6496990 => 'Kaitaia',
|
2446 |
6496991 => 'Kaikohe',
|
2447 |
6496992 => 'Kawakawa',
|
2451 |
6496996 => 'Warkworth',
|
2452 |
6496997 => 'Hibiscus Coast',
|
2453 |
6496998 => 'Helensville',
|
|
|
2454 |
6497770 => 'Whangarei',
|
2455 |
6497771 => 'Kaikohe',
|
2456 |
6497772 => 'Kaitaia',
|
2461 |
6497777 => 'Auckland',
|
2462 |
6497778 => 'Pukekohe',
|
2463 |
6497779 => 'Great Barrier Island',
|
2464 |
+
6498 => 'Auckland',
|
2465 |
6498016 => 'Hibiscus Coast',
|
2466 |
6498017 => 'Hibiscus Coast',
|
2467 |
6498018 => 'Whangarei',
|
2468 |
6498019 => 'Pukekohe',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2469 |
6498690 => 'Kawakawa',
|
2470 |
6498691 => 'Maungaturoto',
|
|
|
|
|
2471 |
6498814 => 'Pukekohe',
|
2472 |
6498815 => 'Helensville',
|
2473 |
6498816 => 'Great Barrier Island',
|
2479 |
6498824 => 'Kawakawa',
|
2480 |
6498825 => 'Maungaturoto',
|
2481 |
6498826 => 'Warkworth',
|
|
|
|
|
2482 |
6498850 => 'Great Barrier Island',
|
2483 |
6498851 => 'Pukekohe',
|
2484 |
6498852 => 'Warkworth',
|
2489 |
6498857 => 'Dargaville',
|
2490 |
6498858 => 'Kaikohe',
|
2491 |
6498859 => 'Kaitaia',
|
|
|
|
|
|
|
2492 |
6498880 => 'Helensville',
|
2493 |
6498881 => 'Hibiscus Coast',
|
2494 |
6498882 => 'Whangarei',
|
2495 |
6498883 => 'Whangarei',
|
|
|
|
|
2496 |
6498900 => 'Pukekohe',
|
2497 |
6498901 => 'Pukekohe',
|
2498 |
+
6499 => 'Auckland',
|
|
|
|
|
|
|
2499 |
6499003 => 'Warkworth',
|
2500 |
6499004 => 'Hibiscus Coast',
|
|
|
2501 |
6499006 => 'Whangarei',
|
2502 |
6499007 => 'Kaikohe',
|
2503 |
6499008 => 'Pukekohe',
|
|
|
2504 |
6499010 => 'Kaitaia',
|
2505 |
6499011 => 'Kaitaia',
|
2506 |
6499012 => 'Kawakawa',
|
2512 |
6499018 => 'Maungaturoto',
|
2513 |
6499019 => 'Maungaturoto',
|
2514 |
649902 => 'Warkworth',
|
|
|
2515 |
6499040 => 'Helensville',
|
2516 |
6499041 => 'Helensville',
|
2517 |
6499042 => 'Hibiscus Coast',
|
2522 |
6499047 => 'Pukekohe',
|
2523 |
6499048 => 'Pukekohe',
|
2524 |
6499049 => 'Great Barrier Island',
|
2525 |
+
6499060 => 'Warkworth',
|
2526 |
6499061 => 'Hibiscus Coast',
|
2527 |
6499062 => 'Hibiscus Coast',
|
2528 |
6499063 => 'Hibiscus Coast',
|
2532 |
6499067 => 'Pukekohe',
|
2533 |
6499068 => 'Pukekohe',
|
2534 |
6499069 => 'Pukekohe',
|
2535 |
+
649907 => 'Warkworth',
|
|
|
2536 |
6499100 => 'Pukekohe',
|
2537 |
6499101 => 'Pukekohe',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2538 |
6499295 => 'Kaikohe',
|
2539 |
6499296 => 'Kaitaia',
|
2540 |
6499297 => 'Hibiscus Coast',
|
2541 |
6499298 => 'Pukekohe',
|
2542 |
6499299 => 'Whangarei',
|
|
|
|
|
|
|
2543 |
6499420 => 'Pukekohe',
|
2544 |
6499421 => 'Hibiscus Coast',
|
2545 |
6499422 => 'Helensville',
|
2546 |
6499423 => 'Great Barrier Island',
|
|
|
|
|
|
|
2547 |
6499428 => 'Warkworth',
|
2548 |
6499450 => 'Warkworth',
|
2549 |
6499451 => 'Warkworth',
|
2571 |
6499473 => 'Helensville',
|
2572 |
6499474 => 'Helensville',
|
2573 |
6499475 => 'Hibiscus Coast',
|
|
|
2574 |
6499477 => 'Pukekohe',
|
2575 |
6499478 => 'Pukekohe',
|
2576 |
6499479 => 'Pukekohe',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2577 |
6499551 => 'Whangarei',
|
2578 |
6499552 => 'Dargaville',
|
2579 |
6499553 => 'Kaikohe',
|
2583 |
6499557 => 'Warkworth',
|
2584 |
6499558 => 'Great Barrier Island',
|
2585 |
6499559 => 'Whangarei',
|
|
|
2586 |
649957 => 'Pukekohe',
|
2587 |
649958 => 'Helensville',
|
2588 |
649959 => 'Hibiscus Coast',
|
|
|
|
|
2589 |
6499630 => 'Pukekohe',
|
2590 |
6499631 => 'Pukekohe',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2591 |
6499716 => 'Helensville',
|
2592 |
6499717 => 'Whangarei',
|
2593 |
6499718 => 'Whangarei',
|
2600 |
6499746 => 'Kawakawa',
|
2601 |
6499747 => 'Dargaville',
|
2602 |
6499748 => 'Whangarei',
|
2603 |
+
64998 => 'Whangarei',
|
2604 |
6499810 => 'Hibiscus Coast',
|
2605 |
6499811 => 'Hibiscus Coast',
|
2606 |
6499818 => 'Great Barrier Island',
|
2607 |
6499819 => 'Helensville',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2608 |
6499873 => 'Kaitaia',
|
2609 |
6499874 => 'Kawakawa',
|
2610 |
6499875 => 'Dargaville',
|
2612 |
6499877 => 'Maungaturoto',
|
2613 |
6499878 => 'Warkworth',
|
2614 |
6499879 => 'Warkworth',
|
|
|
2615 |
);
|
vendor/giggsey/libphonenumber-for-php/src/geocoding/data/en/7.php
CHANGED
@@ -164,6 +164,7 @@ return array (
|
|
164 |
771458 => 'Kostanai Region',
|
165 |
77145834 => 'Krasnogorsk',
|
166 |
771459 => 'Kostanai Region',
|
|
|
167 |
77152 => 'Petropavlovsk',
|
168 |
771531 => 'Bulayevo',
|
169 |
771532 => 'Smirnovo',
|
@@ -215,10 +216,11 @@ return array (
|
|
215 |
771839 => 'Akku',
|
216 |
771840 => 'Bayanaul',
|
217 |
771841 => 'Aktogai',
|
218 |
-
771842 => '
|
219 |
771843 => 'Maisky District',
|
220 |
771844 => 'Irtyshsky District',
|
221 |
771845 => 'Pavlodar Area',
|
|
|
222 |
77187 => 'Ekibastuz',
|
223 |
77212 => 'Karaganda',
|
224 |
77213 => 'Aktau/Temirtau',
|
@@ -291,7 +293,9 @@ return array (
|
|
291 |
772540 => 'Arys',
|
292 |
772541 => 'Myrzakent',
|
293 |
772542 => 'Asykata',
|
|
|
294 |
772544 => 'Shaulder',
|
|
|
295 |
772546 => 'Sholakkorgan',
|
296 |
772547 => 'Lenger',
|
297 |
772548 => 'Shayan',
|
164 |
771458 => 'Kostanai Region',
|
165 |
77145834 => 'Krasnogorsk',
|
166 |
771459 => 'Kostanai Region',
|
167 |
+
77149 => 'Kostanai',
|
168 |
77152 => 'Petropavlovsk',
|
169 |
771531 => 'Bulayevo',
|
170 |
771532 => 'Smirnovo',
|
216 |
771839 => 'Akku',
|
217 |
771840 => 'Bayanaul',
|
218 |
771841 => 'Aktogai',
|
219 |
+
771842 => 'Koktobe',
|
220 |
771843 => 'Maisky District',
|
221 |
771844 => 'Irtyshsky District',
|
222 |
771845 => 'Pavlodar Area',
|
223 |
+
77185 => 'Shaldai',
|
224 |
77187 => 'Ekibastuz',
|
225 |
77212 => 'Karaganda',
|
226 |
77213 => 'Aktau/Temirtau',
|
293 |
772540 => 'Arys',
|
294 |
772541 => 'Myrzakent',
|
295 |
772542 => 'Asykata',
|
296 |
+
772543 => 'Aqsumbe',
|
297 |
772544 => 'Shaulder',
|
298 |
+
772545 => 'Ikan',
|
299 |
772546 => 'Sholakkorgan',
|
300 |
772547 => 'Lenger',
|
301 |
772548 => 'Shayan',
|
vendor/giggsey/libphonenumber-for-php/src/geocoding/data/ru/7.php
CHANGED
@@ -165,6 +165,7 @@ return array (
|
|
165 |
771458 => 'Костанайская область',
|
166 |
77145834 => 'Красногорск',
|
167 |
771459 => 'Костанайская область',
|
|
|
168 |
77152 => 'Петропавловск',
|
169 |
771531 => 'Магжана Жумабаева р-н',
|
170 |
771532 => 'Аккайынский р-н',
|
@@ -216,10 +217,11 @@ return array (
|
|
216 |
771839 => 'Лебяжинский р-н',
|
217 |
771840 => 'Баянаульский р-н',
|
218 |
771841 => 'Актогайский р-н',
|
219 |
-
771842 => '
|
220 |
771843 => 'Майский р-н',
|
221 |
771844 => 'Иртышский р-н',
|
222 |
771845 => 'Павлодар',
|
|
|
223 |
77187 => 'Экибастуз',
|
224 |
77212 => 'Караганда',
|
225 |
77213 => 'Темиртау',
|
@@ -292,7 +294,9 @@ return array (
|
|
292 |
772540 => 'Арыс',
|
293 |
772541 => 'Мырзакент',
|
294 |
772542 => 'Асыката',
|
|
|
295 |
772544 => 'Шаульдер',
|
|
|
296 |
772546 => 'Шолаккорган',
|
297 |
772547 => 'Ленгер',
|
298 |
772548 => 'Шаян',
|
165 |
771458 => 'Костанайская область',
|
166 |
77145834 => 'Красногорск',
|
167 |
771459 => 'Костанайская область',
|
168 |
+
77149 => 'Костанай',
|
169 |
77152 => 'Петропавловск',
|
170 |
771531 => 'Магжана Жумабаева р-н',
|
171 |
771532 => 'Аккайынский р-н',
|
217 |
771839 => 'Лебяжинский р-н',
|
218 |
771840 => 'Баянаульский р-н',
|
219 |
771841 => 'Актогайский р-н',
|
220 |
+
771842 => 'Майский р-он',
|
221 |
771843 => 'Майский р-н',
|
222 |
771844 => 'Иртышский р-н',
|
223 |
771845 => 'Павлодар',
|
224 |
+
77185 => 'Шалдай',
|
225 |
77187 => 'Экибастуз',
|
226 |
77212 => 'Караганда',
|
227 |
77213 => 'Темиртау',
|
294 |
772540 => 'Арыс',
|
295 |
772541 => 'Мырзакент',
|
296 |
772542 => 'Асыката',
|
297 |
+
772543 => 'Аксумбе',
|
298 |
772544 => 'Шаульдер',
|
299 |
+
772545 => 'Икан',
|
300 |
772546 => 'Шолаккорган',
|
301 |
772547 => 'Ленгер',
|
302 |
772548 => 'Шаян',
|
vendor/giggsey/libphonenumber-for-php/src/timezone/data/map_data.php
CHANGED
@@ -3113,8 +3113,7 @@ return array (
|
|
3113 |
645 => 'Pacific/Auckland',
|
3114 |
646 => 'Pacific/Auckland',
|
3115 |
647 => 'Pacific/Auckland',
|
3116 |
-
|
3117 |
-
6486 => 'Pacific/Auckland',
|
3118 |
649 => 'Pacific/Auckland',
|
3119 |
65 => 'Asia/Singapore',
|
3120 |
66 => 'Asia/Bangkok',
|
@@ -3192,6 +3191,7 @@ return array (
|
|
3192 |
7713 => 'Asia/Aqtobe',
|
3193 |
772 => 'Asia/Almaty',
|
3194 |
7729 => 'Asia/Aqtobe',
|
|
|
3195 |
7800 => 'Asia/Almaty&Asia/Aqtobe&Europe/Moscow',
|
3196 |
7803 => 'Europe/Moscow',
|
3197 |
7804 => 'Europe/Moscow',
|
3113 |
645 => 'Pacific/Auckland',
|
3114 |
646 => 'Pacific/Auckland',
|
3115 |
647 => 'Pacific/Auckland',
|
3116 |
+
648 => 'Pacific/Auckland',
|
|
|
3117 |
649 => 'Pacific/Auckland',
|
3118 |
65 => 'Asia/Singapore',
|
3119 |
66 => 'Asia/Bangkok',
|
3191 |
7713 => 'Asia/Aqtobe',
|
3192 |
772 => 'Asia/Almaty',
|
3193 |
7729 => 'Asia/Aqtobe',
|
3194 |
+
779 => 'Asia/Almaty',
|
3195 |
7800 => 'Asia/Almaty&Asia/Aqtobe&Europe/Moscow',
|
3196 |
7803 => 'Europe/Moscow',
|
3197 |
7804 => 'Europe/Moscow',
|
wgact.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
* Developer URI: https://sweetcode.com
|
11 |
* Text Domain: woocommerce-google-adwords-conversion-tracking-tag
|
12 |
* Domain path: /languages
|
13 |
-
* * Version: 1.27.
|
14 |
*
|
15 |
* WC requires at least: 3.7
|
16 |
* WC tested up to: 7.1
|
@@ -19,7 +19,7 @@
|
|
19 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
20 |
*
|
21 |
**/
|
22 |
-
const WPM_CURRENT_VERSION = '1.27.
|
23 |
// TODO add option checkbox on uninstall and ask if user wants to delete options from db
|
24 |
|
25 |
if ( !defined( 'ABSPATH' ) ) {
|
@@ -191,9 +191,6 @@ if ( function_exists( 'wpm_fs' ) ) {
|
|
191 |
|
192 |
public function register_hooks_for_woocommerce()
|
193 |
{
|
194 |
-
if ( wp_doing_ajax() ) {
|
195 |
-
return;
|
196 |
-
}
|
197 |
add_action( 'pmw_reactivate_duplication_prevention', function () {
|
198 |
Admin::get_instance()->deduper_enable();
|
199 |
} );
|
10 |
* Developer URI: https://sweetcode.com
|
11 |
* Text Domain: woocommerce-google-adwords-conversion-tracking-tag
|
12 |
* Domain path: /languages
|
13 |
+
* * Version: 1.27.8
|
14 |
*
|
15 |
* WC requires at least: 3.7
|
16 |
* WC tested up to: 7.1
|
19 |
* License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
20 |
*
|
21 |
**/
|
22 |
+
const WPM_CURRENT_VERSION = '1.27.8' ;
|
23 |
// TODO add option checkbox on uninstall and ask if user wants to delete options from db
|
24 |
|
25 |
if ( !defined( 'ABSPATH' ) ) {
|
191 |
|
192 |
public function register_hooks_for_woocommerce()
|
193 |
{
|
|
|
|
|
|
|
194 |
add_action( 'pmw_reactivate_duplication_prevention', function () {
|
195 |
Admin::get_instance()->deduper_enable();
|
196 |
} );
|