1/** 2 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved 3 * 4 * This source code is licensed under the license found in the 5 * LICENSE file in the root directory of this source tree. 6 * 7 * @package FacebookCommerce 8 */ 9 10/** 11 * Facebook for WooCommerce - Signals helper. 12 * 13 * Exposes `window.fbwcsignal` so a CMP or theme integration can hold or 14 * release signal delivery while keeping the plugin loaded. 15 * 16 * @package FacebookCommerce 17 */ 18( function () { 19 'use strict'; 20 21 var COOKIE_NAME = 'wc_facebook_signals_state'; 22 var STATE_ACTIVE = 'active'; 23 var STATE_HELD = 'held'; 24 25 /** 26 * Minimal cookie setter. 27 * 28 * @param {string} name 29 * @param {string} value 30 * @param {number} days 31 */ 32 function setCookie( name, value, days ) { 33 var d = new Date(); 34 d.setTime( d.getTime() + days * 86400000 ); 35 document.cookie = 36 name + 37 '=' + 38 encodeURIComponent( value ) + 39 ';expires=' + 40 d.toUTCString() + 41 ';path=/;SameSite=Lax'; 42 } 43 44 /** 45 * Read a cookie value. 46 * 47 * @param {string} name 48 * @return {string|null} 49 */ 50 function getCookie( name ) { 51 var match = document.cookie.match( 52 new RegExp( '(?:^|;\\s*)' + name + '=([^;]*)' ) 53 ); 54 return match ? decodeURIComponent( match[ 1 ] ) : null; 55 } 56 57 /** 58 * Update the stored signal state and sync it to PHP. 59 * 60 * @param {string} state `active` or `held`. 61 * @return {Promise} Resolves with the backend response. 62 */ 63 function updateState( state ) { 64 setCookie( COOKIE_NAME, state, 365 ); 65 66 var params = wc_facebook_signals_params; // localized by PHP. 67 68 return new Promise( function ( resolve, reject ) { 69 var xhr = new XMLHttpRequest(); 70 xhr.open( 'POST', params.ajax_url, true ); 71 xhr.setRequestHeader( 72 'Content-Type', 73 'application/x-www-form-urlencoded; charset=UTF-8' 74 ); 75 xhr.onload = function () { 76 if ( xhr.status >= 200 && xhr.status < 300 ) { 77 try { 78 var data = JSON.parse( xhr.responseText ); 79 resolve( data ); 80 } catch ( e ) { 81 reject( e ); 82 } 83 } else { 84 reject( new Error( 'AJAX failed: ' + xhr.status ) ); 85 } 86 }; 87 xhr.onerror = function () { 88 reject( new Error( 'Network error' ) ); 89 }; 90 xhr.send( 91 'action=' + 92 encodeURIComponent( params.action ) + 93 '&security=' + 94 encodeURIComponent( params.nonce ) + 95 '&state=' + 96 encodeURIComponent( state ) 97 ); 98 } ); 99 } 100 101 /** 102 * Hold browser/server signals for subsequent requests. 103 * 104 * @return {Promise} 105 */ 106 function hold() { 107 return updateState( STATE_HELD ); 108 } 109 110 /** 111 * Release held signals and flush any queued browser events. 112 * 113 * @return {Promise} 114 */ 115 function release() { 116 return updateState( STATE_ACTIVE ).then( function ( data ) { 117 if ( 118 window.FacebookSignals && 119 window.FacebookSignals._held 120 ) { 121 return window.FacebookSignals.release().then( 122 function () { 123 return data; 124 }, 125 function () { 126 return data; 127 } 128 ); 129 } 130 131 return data; 132 } ); 133 } 134 135 /** 136 * Read the current signal state from the cookie. 137 * 138 * @return {string|null} `active`, `held`, or `null`. 139 */ 140 function getState() { 141 var val = getCookie( COOKIE_NAME ); 142 if ( val === null ) { 143 return null; 144 } 145 146 return val === STATE_ACTIVE ? STATE_ACTIVE : STATE_HELD; 147 } 148 149 window.fbwcsignal = window.fbwcsignal || {}; 150 window.fbwcsignal.hold = hold; 151 window.fbwcsignal.release = release; 152 window.fbwcsignal.getState = getState; 153} )(); 154; 155var mailchimp,mailchimp_cart,mailchimp_billing_email,mailchimp_username_email,mailchimp_registration_email,mailchimp_submitted_email=false,mailchimpReady=function(a){/in/.test(document.readyState)?setTimeout(()=>{mailchimpReady(a)},9):a()};function mailchimpHandleBillingEmail(selector){try{if(!mailchimp_public_data.allowed_to_set_cookies)return;if(mailchimp_public_data.disable_carts)return;var subscribed=document.querySelector("#mailchimp_woocommerce_newsletter");if(!subscribed)subscribed=document.querySelector("#subscribe-to-newsletter");if(!selector)selector="#billing_email";var a=document.querySelector(selector);var b=void 0!==a?a.value:"";if(!mailchimp_cart.valueEmail(b)||mailchimp_submitted_email===b){return false}mailchimp_cart.setEmail(b);var c=mailchimp_public_data.ajax_url+"?action=mailchimp_set_user_by_email";var d=new XMLHttpRequest;d.open("POST",c,!0);d.onload=function(){var successful=d.status>=200&&d.status<400;var msg=successful?"mailchimp.handle_billing_email.request.success":"mailchimp.handle_billing_email.request.error";if(successful){mailchimp_submitted_email=b}console.log(msg,d.responseText)};d.onerror=function(){console.log("mailchimp.handle_billing_email.request.error",d.responseText)};d.setRequestHeader("Content-Type","application/x-www-form-urlencoded");d.setRequestHeader("Accept","application/json");d.send("email="+b+"&mc_language="+mailchimp_public_data.language+"&subscribed="+(subscribed&&subscribed.checked?"1":"0"));return true}catch(a){console.log("mailchimp.handle_billing_email.error",a);mailchimp_submitted_email=!1}}!function(){"use strict";function mailchimpCart(){this.email_types="input[type=email]";this.regex_email=/^([A-Za-z0-9_+\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;this.current_email=null;this.previous_email=null;this.expireUser=function(){this.current_email=null;
155if(!mailchimp_public_data.allowed_to_set_cookies)return;mailchimp.storage.expire("mailchimp.cart.current_email")};this.expireSaved=function(){if(!mailchimp_public_data.allowed_to_set_cookies)return;mailchimp.storage.expire("mailchimp.cart.items")};this.setEmail=function(a){if(!mailchimp_public_data.allowed_to_set_cookies)return;if(!this.valueEmail(a))return false;this.setPreviousEmail(this.getEmail());mailchimp.storage.set("mailchimp.cart.current_email",this.current_email=a)};this.getEmail=function(){if(!mailchimp_public_data.allowed_to_set_cookies)return;if(this.current_email)return this.current_email;var a=mailchimp.storage.get("mailchimp.cart.current_email",!1);if(!a||!this.valueEmail(a))return false;return this.current_email=a};this.setPreviousEmail=function(a){if(!mailchimp_public_data.allowed_to_set_cookies)return;if(!this.valueEmail(a))return false;mailchimp.storage.set("mailchimp.cart.previous_email",this.previous_email=a)};this.valueEmail=function(a){return this.regex_email.test(a)};return this}var g={extend:function(a,b){for(var c in b||{})b.hasOwnProperty(c)&&(a[c]=b[c]);return a},getQueryStringVars:function(){var a=window.location.search||"",b=[],c={};if(a=a.substr(1),a.length){b=a.split("&");for(var d in b){var e=b[d];if("string"==typeof e){var f=e.split("="),g=f[0],h=f[1];g.length&&("undefined"==typeof c[g]&&(c[g]=[]),c[g].push(h))}}}return c},unEscape:function(a){return decodeURIComponent(a)},escape:function(a){return encodeURIComponent(a)},createDate:function(a,b){a||(a=0);var c=new Date,d=b?c.getDate()-a:c.getDate()+a;return c.setDate(d),c},arrayUnique:function(a){for(var b=a.concat(),c=0;c<b.length;++c)for(var d=c+1;d<b.length;++d)b[c]===b[d]&&b.splice(d,1);return b},objectCombineUnique:function(a){for(var b=a[0],c=1;c<a.length;c++){var d=a[c];for(var e in d)b[e]=d[e]}return b}},h=function(a,b){var c=function(a,b,d){return 1===arguments.length?c.get(a):c.set(a,b,d)};return c.get=function(b,d){return a.cookie!==c._cacheString&&c._populateCache(),void 0==c._cache[b]?d:c._cache[b]},c.defaults={path:"/",secure:true,samesite:"strict"},c.set=function(d,e,f){switch(f={path:f&&f.path||c.defaults.path,domain:f&&f.domain||c.defaults.domain,expires:f&&f.expires||c.defaults.expires,secure:f&&f.secure!==b?f.secure:c.defaults.secure,samesite:f&&f.samesite||c.defaults.samesite},e===b&&(f.expires=-1),typeof f.expires){case"number":f.expires=new Date((new Date).getTime()+1e3*f.expires);break;case"string":f.expires=new Date(f.expires)}return d=encodeURIComponent(d)+"="+(e+"").replace(/[^!#-+\--:<-\[\]-~]/g,encodeURIComponent),d+=f.path?";path="+f.path:"",d+=f.domain?";domain="+f.domain:"",d+=f.expires?";expires="+f.expires.toGMTString():"",d+=f.secure?";secure":"",d+=f.samesite?";samesite="+f.samesite:"",a.cookie=d,c},c.expire=function(a,d){return c.set(a,b,d)},c._populateCache=function(){c._cache={};try{c._cacheString=a.cookie;for(var d=c._cacheString.split("; "),e=0;e<d.length;e++){var f=d[e].indexOf("="),g=decodeURIComponent(d[e].substr(0,f)),f=decodeURIComponent(d[e].substr(f+1));c._cache[g]===b&&(c._cache[g]=f)}}catch(a){console.log(a)}},c.enabled=function(){var a="1"===c.set("cookies.js","1").get("cookies.js");return c.expire("cookies.js"),a}(),c}(document);mailchimp={storage:h,utils:g};mailchimp_cart=new mailchimpCart}();mailchimpReady(function(){if(!mailchimp_public_data.allowed_to_set_cookies)return;if(mailchimp_public_data.disable_carts)return;if(void 0===a){var a={site_url:document.location.origin,defaulted:!0,ajax_url:document.location.origin+"/wp-admin?admin-ajax.php"}}try{var b=mailchimp.utils.getQueryStringVars();var subscribed=document.querySelector("#mailchimp_woocommerce_newsletter");var blockSubscribed=document.querySelector("#subscribe-to-newsletter");if(subscribed){subscribed.onchange=function(){mailchimp_submitted_email=null;mailchimpHandleBillingEmail("#billing_email")}}else if(blockSubscribed){blockSubscribed.onchange=function(){mailchimp_submitted_email=null;mailchimpHandleBillingEmail('#contact-fields input[type="email"]')}}mailchimp_username_email=document.querySelector("#username");mailchimp_billing_email=document.querySelector("#billing_email");mailchimp_registration_email=document.querySelector("#reg_email");var mailchimp_username_email_block=document.querySelector('#contact-fields input[type="email"]');if(mailchimp_billing_email){mailchimp_billing_email.onblur=function(){mailchimpHandleBillingEmail("#billing_email")};mailchimp_billing_email.onfocus=function(){mailchimpHandleBillingEmail("#billing_email")}}if(mailchimp_username_email){mailchimp_username_email.onblur=function(){mailchimpHandleBillingEmail("#username")};mailchimp_username_email.onfocus=function(){mailchimpHandleBillingEmail("#username")}}if(mailchimp_registration_email){mailchimp_registration_email.onblur=function(){mailchimpHandleBillingEmail("#reg_email")};mailchimp_registration_email.onfocus=function(){mailchimpHandleBillingEmail("#reg_email")}}if(mailchimp_username_email_block){mailchimp_username_email_block.onblur
155=function(){mailchimpHandleBillingEmail('#contact-fields input[type="email"]')};mailchimp_username_email_block.onfocus=function(){mailchimpHandleBillingEmail('#contact-fields input[type="email"]')};var typingTimer;mailchimp_username_email_block.addEventListener("keyup",function(){typingTimer&&clearTimeout(typingTimer);typingTimer=setTimeout(function(){if(mailchimp_cart.valueEmail(mailchimp_username_email_block.value)){mailchimpHandleBillingEmail('#contact-fields input[type="email"]')}},2e3)});mailchimp_username_email_block.addEventListener("keydown",function(){typingTimer&&clearTimeout(typingTimer)})}}catch(e){console.log("mailchimp ready error",e)}});; 156/** 157 * Mailchimp Pixel Tracking for WooCommerce 158 * 159 * Listens for WooCommerce events and sends them to the Mailchimp Pixel SDK. 160 * Only tracks if window.$mcSite.pixel.api is available (MC.js loaded). 161 * 162 * @package MailChimp_WooCommerce 163 * @since 1.0.0 164 */ 165 166(function ($) { 167 'use strict'; 168 169 /** 170 * Default config for waitForPixelSDK exponential backoff 171 */ 172 const PIXEL_SDK_WAIT_CONFIG = { 173 initialDelayMs: 100, 174 maxDelayMs: 5000, 175 maxAttempts: 20 176 }; 177 178 /** 179 * How long PRODUCT_VIEWED waits on a variable product for WooCommerce to resolve a 180 * default or deep-linked variation before settling for the parent. 181 */ 182 const VARIATION_RESOLVE_WAIT_MS = 1200; 183 184 /** 185 * Settle time after a form interaction before re-reading the variation id input. 186 * The blocks form writes it through the Interactivity API on the next render. 187 */ 188 const VARIATION_INPUT_SETTLE_MS = 150; 189 190 /** 191 * Mailchimp Pixel Tracking Handler 192 */ 193 const MailchimpPixelTracking = { 194 // Debounce timers for cart fetch calls 195 _atcTimer: null, 196 _rfcTimer: null, 197 _atcFetching: false, 198 _rfcFetching: false, 199 // PRODUCT_VIEWED state for a variable product being resolved to a variation 200 _viewTimer: null, 201 _viewedParent: null, 202 _viewedKeys: null, 203 _inputTimer: null, 204 205 /** 206 * Initialize tracking. 207 * Waits for Pixel SDK with exponential backoff, then sends page events and attaches handlers. 208 */ 209 init: function () { 210 const self = this; 211 212 // Registered before the SDK wait on purpose: that wait runs for seconds, and an 213 // integration that resolves its variation early must not race us. 214 window.mcPixel = window.mcPixel || {}; 215 window.mcPixel.setVariation = function (variationId, product) { 216 self.setVariation(variationId, product); 217 }; 218 document.addEventListener('mailchimp_woocommerce_set_variation', function (event) { 219 const detail = event.detail || {}; 220 self.setVariation(detail.variationId, detail.product); 221 }); 222 223 this.waitForPixelSDK(PIXEL_SDK_WAIT_CONFIG) 224 .then(function () { 225 self.sendPageEvents(); 226 self.attachCartEventListeners(); 227 self.interceptStoreApiRequests(); 228 console.log('Mailchimp Pixel SDK loaded.'); 229 }) 230 .catch(function (e) { 231 console.log('Mailchimp Pixel SDK not loaded within timeout. Tracking disabled.', e); 232 }); 233 }, 234 235 /** 236 * Wait for Pixel SDK to become available using exponential backoff. 237 * 238 * @param {Object} options Optional config 239 * @param {number} options.initialDelayMs First delay in ms (default 100) 240 * @param {number} options.maxDelayMs Cap on delay in ms (default 5000) 241 * @param {number} options.maxAttempts Max number of attempts (default 20) 242 * @return {Promise<void>} Resolves when SDK is available, rejects after maxAttempts 243 */ 244 waitForPixelSDK: function (options) { 245 const config = options || {}; 246 const initialDelayMs = config.initialDelayMs !== undefined ? config.initialDelayMs : PIXEL_SDK_WAIT_CONFIG.initialDelayMs; 247 const maxDelayMs = config.maxDelayMs !== undefined ? config.maxDelayMs : PIXEL_SDK_WAIT_CONFIG.maxDelayMs; 248 const maxAttempts = config.maxAttempts !== undefined ? config.maxAttempts : PIXEL_SDK_WAIT_CONFIG.maxAttempts; 249 250 function isSDKReady() { 251 return typeof window.$mcSite !== 'undefined' && 252 window.$mcSite.pixel && 253 typeof window.$mcSite.pixel.api !== 'undefined' && 254 typeof window.$mcSite.pixel.api.track === 'function' && 255 window.$mcSite.pixel.installed === true; 256 } 257 258 return new Promise(function (resolve, reject) { 259 let attempt = 0; 260 261 function scheduleCheck() { 262 if (isSDKReady()) { 263 // FIXME: temporary wait to accommodate for not being able to detect ready state 264 console.warn('Pixel SDK - remediation for pixel ready issue') 265 setTimeout(function () { 266 resolve(); 267 }, 1000); 268 return; 269 } 270 if (attempt >= maxAttempts) { 271 reject(new Error('Pixel SDK not available')); 272 return; 273 } 274
275 const delay = Math.min( 276 initialDelayMs * Math.pow(2, attempt), 277 maxDelayMs 278 ); 279 attempt += 1; 280 281 setTimeout(scheduleCheck, delay); 282 } 283 284 scheduleCheck(); 285 }); 286 }, 287 288 /** 289 * Synchronous check if Pixel SDK is available (e.g. before each track call). 290 * 291 * @return {boolean} True if SDK is available 292 */ 293 isPixelSDKReady: function () { 294 return typeof window.$mcSite !== 'undefined' && 295 window.$mcSite.pixel && 296 typeof window.$mcSite.pixel.api !== 'undefined' && 297 typeof window.$mcSite.pixel.api.track === 'function'; 298 }, 299 300 /** 301 * Get cart ID from window.mcPixel 302 * 303 * @return {string} Cart ID 304 */ 305 getCartId: function () { 306 return window.mcPixel && window.mcPixel.cartId ? window.mcPixel.cartId : ''; 307 }, 308 309 /** 310 * Get the REST API base URL from the localized config. 311 * 312 * @return {string} REST base URL 313 */ 314 getRestBase: function () { 315 return (window.mcPixelConfig && window.mcPixelConfig.restBase) || '/wp-json/mailchimp-for-woocommerce/v1/'; 316 }, 317 318 /** 319 * Send page-level events based on pre-populated data 320 */ 321 sendPageEvents: function () { 322 if (!window.mcPixel || !window.mcPixel.data) { 323 return; 324 } 325 326 const data = window.mcPixel.data; 327 const events = data.events || []; 328 329 // Send events based on what was set by PHP 330 events.forEach((eventType) => { 331 //console.log('Mailchimp Pixel: Sending event', eventType, data); 332 switch (eventType) { 333 case 'PRODUCT_ADDED_TO_CART': 334 if (data.added_to_cart) { 335 var atcItems = Array.isArray(data.added_to_cart) ? data.added_to_cart : [data.added_to_cart]; 336 for (var ai = 0; ai < atcItems.length; ai++) { 337 this.sendProductAddedToCart(atcItems[ai]); 338 } 339 } 340 break; 341 case 'PRODUCT_REMOVED_FROM_CART': 342 if (data.removed_from_cart) { 343 var rfcItems = Array.isArray(data.removed_from_cart) ? data.removed_from_cart : [data.removed_from_cart]; 344 for (var ri = 0; ri < rfcItems.length; ri++) { 345 this.sendProductRemovedFromCart(rfcItems[ri]); 346 } 347 } 348 break; 349 case 'IDENTITY': 350 if (data.identity && data.identity.email) { 351 this.sendIdentityEvent(data.identity.email); 352 } 353 break; 354 case 'PRODUCT_VIEWED': 355 // Skip if an add-to-cart or remove-from-cart already fired for the same product. 356 // The cart action implies the view, so firing both is redundant. 357 if (data.product) { 358 const viewedId = String(data.product.productId || data.product.id); 359 const atcArr = Array.isArray(data.added_to_cart) ? data.added_to_cart : (data.added_to_cart ? [data.added_to_cart] : []); 360 const rfcArr = Array.isArray(data.removed_from_cart) ? data.removed_from_cart : (data.removed_from_cart ? [data.removed_from_cart] : []); 361 const atcMatch = atcArr.some(function (p) { return String(p.productId || p.id
361) === viewedId; }); 362 const rfcMatch = rfcArr.some(function (p) { return String(p.productId || p.id) === viewedId; }); 363 364 if ( 365 (events.includes('PRODUCT_ADDED_TO_CART') && atcMatch) || 366 (events.includes('PRODUCT_REMOVED_FROM_CART') && rfcMatch) 367 ) { 368 //console.log('Mailchimp Pixel: Skipping PRODUCT_VIEWED (superseded by cart event for same product)'); 369 break; 370 } 371 this.trackProductViewed(data.product); 372 } 373 break; 374 case 'CART_VIEWED': 375 if (data.cart) { 376 this.sendCartViewed(data.cart); 377 } 378 break; 379 case 'CHECKOUT_STARTED': 380 if (data.checkout) { 381 this.sendCheckoutStarted(data.checkout); 382 window.mcPixel._handled.checkout = true; 383 } 384 break; 385 case 'PURCHASED': 386 if (data.order) { 387 this.sendPurchased(data.order); 388 } 389 break; 390 case 'PRODUCT_CATEGORY_VIEWED': 391 if (data.category) { 392 this.sendCategoryViewed(data.category); 393 window.mcPixel._handled.category = true; 394 } 395 break; 396 case 'SEARCH_SUBMITTED': 397 if (data.search) { 398 this.sendSearchSubmitted(data.search); 399 window.mcPixel._handled.search = true; 400 } 401 break; 402 } 403 }); 404 }, 405 406 /** 407 * PRODUCT_VIEWED for the single product page. 408 * 409 * A variable product renders before the customer has picked anything, so the 410 * server-side payload only knows the parent. WooCommerce announces the chosen 411 * variation on the .variations_form with found_variation, so we hold the event 412 * until that fires - or until it's clear nothing is going to resolve. 413 * 414 * @param {Object} product Parent product data from PHP 415 */ 416 trackProductViewed: function (product) { 417 const self = this; 418 this._viewedKeys = this._viewedKeys || {}; 419 420 // not a variable product - the server already knew everything there is to know 421 if (!window.mcPixel.data.product_variations) { 422 this.sendProductViewedOnce(product, product.id); 423 return; 424 } 425 426 this._viewedParent = product; 427 this.attachVariationListeners(); 428 429 const resolved = this.currentVariationId(); 430 if (resolved) { 431 this.sendProductViewedOnce(this.resolveVariationPayload({ variation_id: resolved }), resolved); 432 return; 433 } 434 435 // nothing picked yet, but a default variation or ?attribute_* deep link still 436 // resolves a tick after the form initialises - give WooCommerce that tick 437 // before settling for the parent 438 this._viewTimer = setTimeout(function () { 439 self.sendProductViewedOnce(product, product.id); 440 }, VARIATION_RESOLVE_WAIT_MS); 441 }, 442 443 /** 444 * One PRODUCT_VIEWED per thing actually viewed: the parent, then each variation 445 * the customer lands on. Switching back to an earlier pick sends nothing, so 446 * clicking through a dropdown doesn't turn into a burst of events. 447 * 448 * @param {Object} product Product data to send 449 * @param {string} key Dedup key - the variation id, or the parent id 450 */ 451 sendProductViewedOnce: function (product, key) { 452 clearTimeout(this._viewTimer); 453 if (this._viewedKeys[key]) { 454 return; 455 } 456 // only claim the key once it actually went out - an integration can call 457 // setVariation() before the SDK is up, and that must not count as sent 458 if (this.sendProductViewed(product)) { 459 this._viewedKeys[key] = true; 460 } 461 }, 462 463 /** 464 * Public API for themes, swatch plugins and custom templates. 465 * 466 * Detection covers what WooCommerce itself ships: the classic variations form, 467 * and the hidden variation_id input the block form maintains. Anything else - a 468 * custom swatch UI, a page builder widget, a headless front end - can announce 469 * the selection itself, either directly: 470 * 471 * window.mcPixel.setVariation( 123 ); 472 * 473 * or, when it cannot reach our global, by dispatching an event: 474 * 475 * document.dispatchEvent( new CustomEvent( 476 * 'mailchimp_woocommerce_set_variation', 477 * { detail: { variationId: 123 } } 478 * ) ); 479 * 480 * Pass a second argument to supply the whole product payload instead of letting 481 * us resolve it. Sending the same variation twice is a no-op either way. 482 * 483 * @param {number|string} variationId Variation being viewed 484 * @param {Object} [product] Optional product payload, sent as-is 485 */ 486 setVariation: function (variationId, product) { 487 const id = String(variationId || ''); 488 489 if (!id || id === '0') { 490 return; 491 } 492 // an integration may beat PRODUCT_VIEWED to it - nothing to dedup against yet 493 this._viewedKeys = this._viewedKeys || {}; 494 this.sendProductViewedOnce( 495 product || this.resolveVariationPayload({ variation_id: id }), 496 id 497 ); 498 }, 499 500 /** 501 * found_variation is WooCommerce's own signal that every attribute is chosen and 502 * a variation matched. Bound delegated off body so a form rendered late - blocks, 503 * lazy themes, quick-view modals - is still covered. 504 */ 505 attachVariationListeners: function () { 506 const self = this; 507 508 $(document.body).on('found_variation', '.variations_form', function (event, variation) { 509 if (!variation || !variation.variation_id) { 510 return; 511 } 512 self.sendProductViewedOnce( 513 self.resolveVariationPayload(variation), 514 String(variation.variation_id) 515 ); 516 }); 517 518 // covers the block form, which fires no event at all 519 this.watchVariationInput(); 520 }, 521 522 /** 523 * WooCommerce often resolves a variation before we boot - the SDK wait runs over a 524 * second, and the form fires found_variation during its own init. The form parks
525 * the answer in its variation_id input, so read that rather than assuming we were 526 * listening at the right moment. 527 * 528 * @return {string} Resolved variation id, or '' when nothing is selected 529 */ 530 currentVariationId: function () { 531 // Classic puts this in .variations_form, blocks puts it in .single_variation_wrap 532 // inside its own form element - so key off the input, not either wrapper. 533 const inputs = document.querySelectorAll('form input[name="variation_id"], form input.variation_id'); 534 535 for (let i = 0; i < inputs.length; i++) { 536 const id = parseInt(inputs[i].value, 10); 537 if (id > 0) { 538 return String(id); 539 } 540 } 541 542 return ''; 543 }, 544 545 /** 546 * Catch variation changes on templates that announce nothing. 547 * 548 * The blocks "Add to Cart with Options" form runs on the Interactivity API and 549 * fires no jQuery event and no CustomEvent, so found_variation never arrives. 550 * What it does keep is the hidden variation_id input - WooCommerce renders it 551 * specifically so "extensions or Express Payment methods" can read the form 552 * state - so re-read that whenever the customer touches the form. Its value is 553 * set as a property by the Interactivity API, which a MutationObserver would 554 * never see, hence driving off the interaction instead. 555 */ 556 watchVariationInput: function () { 557 const self = this; 558 559 const recheck = function (event) { 560 // blocks renders its attribute options as buttons, so change alone misses them 561 if (!event.target || !event.target.closest || !event.target.closest('form')) { 562 return; 563 } 564 clearTimeout(self._inputTimer); 565 self._inputTimer = setTimeout(function () { 566 const id = self.currentVariationId(); 567 if (id) { 568 self.sendProductViewedOnce(self.resolveVariationPayload({ variation_id: id }), id); 569 } 570 }, VARIATION_INPUT_SETTLE_MS); 571 }; 572 573 document.addEventListener('change', recheck, true); 574 document.addEventListener('click', recheck, true); 575 }, 576 577 /** 578 * Turn a resolved variation into the product shape the pixel expects. 579 * 580 * Prefer the server-rendered variation: it carries the sku, categories and 581 * parent-derived permalink that the event payload has no idea about, and it 582 * matches what add-to-cart sends for the same variation. Past the pre-render cap 583 * there is nothing to look up, so patch the parent with what the event does give 584 * us - the id being right matters more than the rest. 585 * 586 * @param {Object} variation found_variation payload (or just {variation_id}) 587 * @return {Object} Product data for the pixel 588 */ 589 resolveVariationPayload: function (variation) { 590 const parent = this._viewedParent || {}; 591 const id = String(variation.variation_id); 592 const rendered = window.mcPixel.data.product_variations[id]; 593 594 if (rendered) { 595 return rendered; 596 } 597 598 const patched = $.extend({}, parent, { 599 id: id, 600 productId: parent.productId || parent.id || id 601 }); 602 if (variation.sku) { 603 patched.sku = variation.sku; 604 } 605 if (variation.display_price !== undefined && variation.display_price !== null) { 606 patched.price = parseFloat(variation.display_price); 607 } 608 if (variation.image && variation.image.full_src) { 609 patched.imageUrl = variation.image.full_src; 610 } 611 612 return patched; 613 }, 614 615 /** 616 * Send PRODUCT_VIEWED event 617 * 618 * @param {Object} product Product data 619 */ 620 sendProductViewed: function (product) { 621 if (!this.isPixelSDKReady()) return false; 622 623 window.$mcSite.pixel.api.track('PRODUCT_VIEWED', { 624 product: product 625 }).catch((error) => { 626 console.error('Mailchimp Pixel: Error tracking PRODUCT_VIEWED', error); 627 }); 628 629 return true; 630 }, 631 632 /** 633 * Send PRODUCT_ADDED_TO_CART event 634 * 635 * @param {Object} product Product data 636 */ 637 sendProductAddedToCart: function (product) { 638 if (!this.isPixelSDKReady()) return; 639 640 const cartId = this.getCartId(); 641 const eventData = { 642 cartId: cartId, 643 product: { 644 item: { 645 id: product.id, 646 productId: product.productId, 647 title: product.title, 648 price: product.price, 649 currency: product.currency, 650 sku: product.sku || '' 651 }, 652 quantity: product.quantity || 1, 653 price: product.price * (product.quantity || 1), 654 currency: product.currency 655 } 656 }; 657 658 window.$mcSite.pixel.api.track('PRODUCT_ADDED_TO_CART', eventData).catch((error) => { 659 console.error('Mailchimp Pixel: Error tracking PRODUCT_ADDED_TO_CART', error); 660 }); 661 }, 662 663 /** 664 * Send PRODUCT_REMOVED_FROM_CART event 665 * 666 * @param {Object} product Product data 667 */ 668 sendProductRemovedFromCart: function (product) { 669 if (!this.isPixelSDKReady()) return; 670 671 const cartId = this.getCartId(); 672 const eventData = { 673 cartId: cartId, 674 product: { 675 item: { 676 id: product.id, 677 productId: product.productId, 678 title: product.title, 679 price: product.price, 680 currency: product.currency, 681 sku: product.sku || '' 682 }, 683 quantity: product.quantity || 1, 684 price: product.price * (product.quantity || 1), 685 currency: product.currency 686 } 687 }; 688 689 window.$mcSite.pixel.api.track('PRODUCT_REMOVED_FROM_CART', eventData).catch((error) => { 690 console.error('Mailchimp Pixel: Error tracking PRODUCT_REMOVED_FROM_CART', error); 691 }); 692 }, 693 694 /** 695 * Send CART_VIEWED event 696 * 697 * @param {Object} cart Cart data 698 */ 699 sendCartViewed: function (cart) { 700 if (!this.isPixelSDKReady()) return; 701 702 window.$mcSite.pixel.api.track('CART_VIEWED', { 703 cart: cart 704 }).catch((error) => { 705 console.error('Mailchimp Pixel: Error tracking CART_VIEWED', error); 706 }); 707 }, 708 709 /** 710 * Send CHECKOUT_STARTED event 711 * 712 * @param {Object} checkout Checkout data 713 */ 714 sendCheckoutStarted: function (checkout) { 715 if (!this.isPixelSDKReady()) return; 716 717 window.$mcSite.pixel.api.track('CHECKOUT_STARTED', { 718 checkout: checkout 719 }).catch((error) => { 720 console.error('Mailchimp Pixel: Error tracking CHECKOUT_STARTED', error); 721 }); 722 }, 723 724 sendIdentityEvent: function(email) { 725 if (!this.isPixelSDKReady()) return; 726 window.$mcSite.pixel.api.identify({ 727 type: 'EMAIL', 728 value: email 729 }); 730 }, 731 732 /** 733 * Send PURCHASED event 734 * 735 * @param {Object} order Order data 736 */ 737 sendPurchased: function (order) { 738 if (!this.isPixelSDKReady()) return; 739 740 window.$mcSite.pixel.api.track('PURCHASED', { 741 order: order 742 }).catch((error) => { 743 console.error('Mailchimp Pixel: Error tracking PURCHASED', error); 744 }); 745 }, 746 747 /** 748 * Send PRODUCT_CATEGORY_VIEWED event 749 * 750 * @param {Object} category Category data 751 */ 752 sendCategoryViewed: function (category) { 753 if (!this.isPixelSDKReady()) return; 754 755 window.$mcSite.pixel.api.track('PRODUCT_CATEGORY_VIEWED', category).catch((error) => { 756 console.error('Mailchimp Pixel: Error tracking PRODUCT_CATEGORY_VIEWED', error); 757 }); 758 }, 759 760 /** 761 * Send SEARCH_SUBMITTED event 762 * 763 * @param {Object} search Search data 764 */ 765 sendSearchSubmitted: function (search) { 766 if (!this.isPixelSDKReady()) return; 767 768 window.$mcSite.pixel.api.track('SEARCH_SUBMITTED', search).catch((error) => { 769 console.error('Mailchimp Pixel: Error tracking SEARCH_SUBMITTED', error); 770 }); 771 }, 772 773 /** 774 * Find product by ID from pre-loaded products 775 * 776 * @param {number|string} productId Product ID 777 * @return {Object|null} Product data or null 778 */ 779 findProductById: function (productId) { 780 if (!window.mcPixel || !window.mcPixel.data || !window.mcPixel.data.products) { 781 return null; 782 } 783 784 const products = window.mcPixel.data.products; 785 const id = String(productId); 786 787 for (let i = 0; i < products.length; i++) { 788 if (String(products[i].id) === id) { 789 return products[i]; 790 } 791 } 792 793 return null; 794 }, 795 796 /** 797 * Debounced fetch for add-to-cart events. 798 * Each call resets the timer so rapid-fire triggers coalesce into one 799 * fetch that drains the entire PHP queue. 800 * If a fetch is already in flight, schedule another drain after it completes. 801 */ 802 fetchAndTrackAddToCart: function () { 803 var self = this; 804 if (!this.isPixelSDKReady()) return; 805 806 clearTimeout(this._atcTimer); 807 this._atcTimer = setTimeout(function () { 808 self._drainAddToCartQueue(); 809 }, 600); 810 }, 811 812 _drainAddToCartQueue: async function () { 813 if (this._atcFetching) return; 814 this._atcFetching = true; 815 816 try { 817 var res = await fetch(this.getRestBase() + 'pixel/atc', { 818 method: 'GET', 819 credentials: 'same-origin', 820 headers: { 'Accept': 'application/json' }, 821 }); 822 823 if (!res.ok) return; 824 825 var data = await res.json(); 826 if (!data) return; 827 828 var items = Array.isArray(data) ? data : [data]; 829 for (var i = 0; i < items.length; i++) { 830 this.sendProductAddedToCart(items[i]); 831 } 832 } catch (e) { 833 // no-op 834 } finally { 835 this._atcFetching = false;
836 } 837 }, 838 839 /** 840 * Debounced fetch for remove-from-cart events. 841 * Same debounce pattern as add-to-cart. 842 */ 843 fetchAndTrackRemoveFromCart: function () { 844 var self = this; 845 if (!this.isPixelSDKReady()) return; 846 847 clearTimeout(this._rfcTimer); 848 this._rfcTimer = setTimeout(function () { 849 self._drainRemoveFromCartQueue(); 850 }, 600); 851 }, 852 853 _drainRemoveFromCartQueue: async function () { 854 if (this._rfcFetching) return; 855 this._rfcFetching = true; 856 857 try { 858 var res = await fetch(this.getRestBase() + 'pixel/rfc', { 859 method: 'GET', 860 credentials: 'same-origin', 861 headers: { 'Accept': 'application/json' }, 862 }); 863 864 if (!res.ok) return; 865 866 var data = await res.json(); 867 if (!data) return; 868 869 var items = Array.isArray(data) ? data : [data]; 870 for (var i = 0; i < items.length; i++) { 871 this.sendProductRemovedFromCart(items[i]); 872 } 873 } catch (e) { 874 // no-op 875 } finally { 876 this._rfcFetching = false; 877 } 878 }, 879 880 /** 881 * Attach DOM and jQuery event listeners for cart add/remove. 882 * These serve as fallback triggers alongside the fetch interceptor. 883 */ 884 attachCartEventListeners: function () { 885 const self = this; 886 887 // Classic themes (jQuery events fired by WooCommerce's add-to-cart.js) 888 $(document.body).on('added_to_cart', function () { 889 self.fetchAndTrackAddToCart(); 890 }); 891 $(document.body).on('removed_from_cart', function () { 892 self.fetchAndTrackRemoveFromCart(); 893 }); 894 895 // WC Blocks DOM CustomEvents 896 document.body.addEventListener('wc-blocks_added_to_cart', function () { 897 self.fetchAndTrackAddToCart(); 898 }); 899 document.body.addEventListener('wc-blocks_removed_from_cart', function () { 900 self.fetchAndTrackRemoveFromCart(); 901 }); 902 }, 903 904 /** 905 * Intercept window.fetch to detect WooCommerce Store API cart mutations. 906 * 907 * This is the most reliable method for catching add-to-cart and remove-from-cart 908 * in block-based WooCommerce setups, where DOM events may not fire consistently. 909 * Watches for successful POST requests to the Store API cart endpoints. 910 */ 911 interceptStoreApiRequests: function () { 912 const self = this; 913 const originalFetch = window.fetch; 914 915 window.fetch = function (input, init) { 916 var promise = originalFetch.apply(this, arguments); 917 918 promise.then(function (response) { 919 try { 920 if (!response.ok) return; 921 922 var method = (init && init.method) ? init.method.toUpperCase() : 923 (input instanceof Request ? input.method.toUpperCase() : 'GET'); 924 if (method !== 'POST') return; 925 926 var url = typeof input === 'string' ? input : 927 (input instanceof Request ? input.url : String(input)); 928 929 if (/wc\/store\/v1\/cart\/add-item/.test(url) || /wc\/store\/v1\/cart\/update-item/.test(url)) { 930 self.fetchAndTrackAddToCart(); 931 } else if (/wc\/store\/v1\/cart\/remove-item/.test(url)) { 932 self.fetchAndTrackRemoveFromCart(); 933 } 934 } catch (e) { 935 // Silently ignore interceptor errors 936 } 937 }).catch(function () { 938 // Ignore - the original caller handles fetch errors 939 }); 940 941 return promise; 942 }; 943 }, 944 }; 945 946 // Initialize when DOM is ready 947 $(document).ready(function () { 948 MailchimpPixelTracking.init(); 949 }); 950 951})(jQuery); 952; 953/** 954 * core-js 3.39.0 955 * © 2014-2024 Denis Pushkarev (zloirock.ru) 956 * license: https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE 957 * source: https://github.com/zloirock/core-js 958 */ 959!function(r){"use strict";var t,e,n;t=[function(r,t,e){e(1),e(71),e(72),e(85),e(109),r.exports=e(111)},function(t,e,n){var o=n(2),a=n(3),c=n(67),i=n(68),u=n(69),s=n(29),f=n(70),p=a.Promise,l=!1;o({target:"Promise",stat:!0,forced:!p||!p.try||f(function(){p.try(function(r){l=8===r},8)}).error||!l},{try:function(t){var e=arguments.length>1?i(arguments,1):[],n=u.f(this),o=f(function(){return c(s(t),r,e)});return(o.error?n.reject:n.resolve)(o.value),n.promise}})},function(t,e,n){var o=n(3),a=n(4).f,c=n(42),i=n(46),u=n(36),s=n(54),f=n(66);t.exports=function(t,e){var n,p,l,y,v,h=t.target,b=t.global,g=t.stat;if(n=b?o:g?o[h]||u(h,{}):o[h]&&o[h].prototype)for(p in e){if(y=e[p],l=t.dontCallGetSet?(v=a(n,p))&&v.value:n[p],!f(b?p:h+(g?".":"#")+p,t.forced)&&l!==r){if(typeof y==typeof l)continue;s(y,l)}(t.sham||l&&l.sham)&&c(y,"sham",!0),i(n,p,y,t)}}},function(r,t,e){var n=function(r){return r&&r.Math===Math&&r};r.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof global&&global)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},function(r,t,e){var n=e(5),o=e(7),a=e(9),c=e(10),i=e(11),u=e(17),s=e(37),f=e(40),p=Object.getOwnPropertyDescriptor;t.f=n?p:function(r,t){if(r=i(r),t=u(t),f)try{return p(r,t)}catch(r){}if(s(r,t))return c(!o(a.f,r,t),r[t])}},function(r,t,e){var n=e(6);r.exports=!n(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}}
959)[1]})},function(r,t,e){r.exports=function(r){try{return!!r()}catch(r){return!0}}},function(r,t,e){var n=e(8),o=Function.prototype.call;r.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},function(r,t,e){var n=e(6);r.exports=!n(function(){var r=function(){}.bind();return"function"!=typeof r||r.hasOwnProperty("prototype")})},function(r,t,e){var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,a=o&&!n.call({1:2},1);t.f=a?function(r){var t=o(this,r);return!!t&&t.enumerable}:n},function(r,t,e){r.exports=function(r,t){return{enumerable:!(1&r),configurable:!(2&r),writable:!(4&r),value:t}}},function(r,t,e){var n=e(12),o=e(15);r.exports=function(r){return n(o(r))}},function(r,t,e){var n=e(13),o=e(6),a=e(14),c=Object,i=n("".split);r.exports=o(function(){return!c("z").propertyIsEnumerable(0)})?function(r){return"String"===a(r)?i(r,""):c(r)}:c},function(r,t,e){var n=e(8),o=Function.prototype,a=o.call,c=n&&o.bind.bind(a,a);r.exports=n?c:function(r){return function(){return a.apply(r,arguments)}}},function(r,t,e){var n=e(13),o=n({}.toString),a=n("".slice);r.exports=function(r){return a(o(r),8,-1)}},function(r,t,e){var n=e(16),o=TypeError;r.exports=function(r){if(n(r))throw new o("Can't call method on "+r);return r}},function(t,e,n){t.exports=function(t){return null===t||t===r}},function(r,t,e){var n=e(18),o=e(21);
959r.exports=function(r){var t=n(r,"string");return o(t)?t:t+""}},function(t,e,n){var o=n(7),a=n(19),c=n(21),i=n(28),u=n(31),s=n(32),f=TypeError,p=s("toPrimitive");t.exports=function(t,e){if(!a(t)||c(t))return t;var n,s=i(t,p);if(s){if(e===r&&(e="default"),n=o(s,t,e),!a(n)||c(n))return n;throw new f("Can't convert object to primitive value")}return e===r&&(e="number"),u(t,e)}},function(r,t,e){var n=e(20);r.exports=function(r){return"object"==typeof r?null!==r:n(r)}},function(t,e,n){var o="object"==typeof document&&document.all;t.exports=void 0===o&&o!==r?function(r){return"function"==typeof r||r===o}:function(r){return"function"==typeof r}},function(r,t,e){var n=e(22),o=e(20),a=e(23),c=e(24),i=Object;r.exports=c?function(r){return"symbol"==typeof r}:function(r){var t=n("Symbol");return o(t)&&a(t.prototype,i(r))}},function(t,e,n){var o=n(3),a=n(20);t.exports=function(t,e){return arguments.length<2?(n=o[t],a(n)?n:r):o[t]&&o[t][e];var n}},function(r,t,e){var n=e(13);r.exports=n({}.isPrototypeOf)},function(r,t,e){var n=e(25);r.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(r,t,e){var n=e(26),o=e(6),a=e(3).String;r.exports=!!Object.getOwnPropertySymbols&&!o(function(){var r=Symbol("symbol detection");return!a(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&n&&n<41})},function(r,t,e){var n,o,a=e(3),c=e(27),i=a.process,u=a.Deno,s=i&&i.versions||u&&u.version,f=s&&s.v8;f&&(o=(n=f.split("."))[0]>
vendor: 6,353 bytes, line 959
9590&&n[0]<4?1:+(n[0]+n[1])),!o&&c&&(!(n=c.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=c.match(/Chrome\/(\d+)/))&&(o=+n[1]),r.exports=o},function(r,t,e){var n=e(3).navigator,o=n&&n.userAgent;r.exports=o?String(o):""},function(t,e,n){var o=n(29),a=n(16);t.exports=function(t,e){var n=t[e];return a(n)?r:o(n)}},function(r,t,e){var n=e(20),o=e(30),a=TypeError;r.exports=function(r){if(n(r))return r;throw new a(o(r)+" is not a function")}},function(r,t,e){var n=String;r.exports=function(r){try{return n(r)}catch(r){return"Object"}}},function(r,t,e){var n=e(7),o=e(20),a=e(19),c=TypeError;r.exports=function(r,t){var e,i;if("string"===t&&o(e=r.toString)&&!a(i=n(e,r)))return i;if(o(e=r.valueOf)&&!a(i=n(e,r)))return i;if("string"!==t&&o(e=r.toString)&&!a(i=n(e,r)))return i;throw new c("Can't convert object to primitive value")}},function(r,t,e){var n=e(3),o=e(33),a=e(37),c=e(39),i=e(25),u=e(24),s=n.Symbol,f=o("wks"),p=u?s.for||s:s&&s.withoutSetter||c;r.exports=function(r){return a(f,r)||(f[r]=i&&a(s,r)?s[r]:p("Symbol."+r)),f[r]}},function(r,t,e){var n=e(34);r.exports=function(r,t){return n[r]||(n[r]=t||{})}},function(r,t,e){var n=e(35),o=e(3),a=e(36),c="__core-js_shared__",i=r.exports=o[c]||a(c,{});(i.versions||(i.versions=[])).push({version:"3.39.0",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},function(r,t,e){r.exports=!1},function(r,t,e){var n=e(3),o=Object.defineProperty;r.exports=function(r,t){try{o(n,r,{value:t,configurable:!0,writable:!0})}catch(e){n[r]=t}return t}},function(r,t,e){var n=e(13),o=e(38),a=n({}.hasOwnProperty);r.exports=Object.hasOwn||function(r,t){return a(o(r),t)}},function(r,t,e){var n=e(15),o=Object;r.exports=function(r){return o(n(r))}},function(t,e,n){var o=n(13),a=0,c=Math.random(),i=o(1..toString);t.exports=function(t){return"Symbol("+(t===r?"":t)+")_"+i(++a+c,36)}},function(r,t,e){var n=e(5),o=e(6),a=e(41);r.exports=!n&&!o(function(){return 7!==Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a})},function(r,t,e){var n=e(3),o=e(19),a=n.document,c=o(a)&&o(a.createElement);r.exports=function(r){return c?a.createElement(r):{}}},function(r,t,e){var n=e(5),o=e(43),a=e(10);r.exports=n?function(r,t,e){return o.f(r,t,a(1,e))}:function(r,t,e){return r[t]=e,r}},function(r,t,e){var n=e(5),o=e(40),a=e(44),c=e(45),i=e(17),u=TypeError,s=Object.defineProperty,f=Object.getOwnPropertyDescriptor,p="enumerable",l="configurable",y="writable";t.f=n?a?function(r,t,e){if(c(r),t=i(t),c(e),"function"==typeof r&&"prototype"===t&&"value"in e&&y in e&&!e[y]){var n=f(r,t);n&&n[y]&&(r[t]=e.value,e={configurable:l in e?e[l]:n[l],enumerable:p in e?e[p]:n[p],writable:!1})}return s(r,t,e)}:s:function(r,t,e){if(c(r),t=i(t),c(e),o)try{return s(r,t,e)}catch(r){}if("get"in e||"set"in e)throw new u("Accessors not supported");return"value"in e&&(r[t]=e.value),r}},function(r,t,e){var n=e(5),o=e(6);r.exports=n&&o(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},function(r,t,e){var n=e(19),o=String,a=TypeError;r.exports=function(r){if(n(r))return r;throw new a(o(r)+" is not an object")}},function(t,e,n){var o=n(20),a=n(43),c=n(47),i=n(36);t.exports=function(t,e,n,u){u||(u={});var s=u.enumerable,f=u.name!==r?u.name:e;if(o(n)&&c(n,f,u),u.global)s?t[e]=n:i(e,n);else{try{u.unsafe?t[e]&&(s=!0):delete t[e]}catch(r){}s?t[e]=n:a.f(t,e,{value:n,enumerable:!1,configurable:!u.nonConfigurable,writable:!u.nonWritable})}return t}},function(t,e,n){var o=n(13),a=n(6),c=n(20),i=n(37),u=n(5),s=n(48).CONFIGURABLE,f=n(49),p=n(50),l=p.enforce,y=p.get,v=String,h=Object.defineProperty,b=o("".slice),g=o("".replace),m=o([].join),E=u&&!a(function(){return 8!==h(function(){},"length",{value:8}).length}),d=String(String).split("String"),w=t.exports=function(t,e,n){"Symbol("===b(v(e),0,7)&&(e="["+g(v(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!i(t,"name")||s&&t.name!==e)&&(u?h(t,"name",{value:e,configurable:!0}):t.name=e),E&&n&&i(n,"arity")&&t.length!==n.arity&&h(t,"length",{value:n.arity});try{n&&i(n,"constructor")&&n.constructor?u&&h(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=r)}catch(r){}var o=l(t);return i(o,"source")||(o.source=m(d,"string"==typeof e?e:"")),t};Function.prototype.toString=w(function(){return c(this)&&y(this).source||f(this)},"toString")},function(r,t,e){var n=e(5),o=e(37),a=Function.prototype,c=n&&Object.getOwnPropertyDescriptor,i=o(a,"name"),u=i&&"something"===function(){}.name,s=i&&(!n||n&&c(a,"name").configurable);r.exports={EXISTS:i,PROPER:u,CONFIGURABLE:s}},function(r,t,e){var n=e(13),o=e(20),a=e(34),c=n(Function.toString);o(a.inspectSource)||(a.inspectSource=function(r){return c(r)}),r.exports=a.inspectSource},function(r,t,e){var n,o,a,c=e(51),i=e(3),u=e(19),s=e(42),f=e(37),p=e(34),l=e(52),y=e(53),v="Object already initialized",h=i.TypeError,b=i.WeakMap;if(c||p.state){var g=p.state||(p.state=new b);g.get=g.get,g.has=g.has,g.set=g.set,n=function(r,t){if(g.has(r))throw new h(v);return t.facade=r,g.set(r,t),t},o=function(r){return g.get(r)||{}},a=function(r){return g.has(r)}}else{var m=l("state");y[m]=!0,n=function(r,t){if(f(r,m))throw new h(v);return t.facade=r,s(r,m,t),t},o=function(r){return f(r,m)?r[m]:{}},a=function(r){return f(r,m)}}r.exports={set:n,get:o,has:a,enforce:function(r){return a(r)?o(r):n(r,{})},getterFor:function(r){return function(t){var e;if(!u(t)||(e=o(t)).type!==r)throw new h("Incompatible receiver, "+r+" required");return e}}}},function(r,t,e){var n=e(3),o=e(20),a=n.WeakMap;r.exports=o(a)&&/native code/.test(String(a))},function(r,t,e){var n=e(33),o=e(39),a=n("keys");r.exports=function(r){return a[r]||(a[r]=o(r))}},function(r,t,e){r.exports={}},function(r,t,e){var n=e(37),o=e(55),a=e(4),c=e(43);r.exports=function(r,t,e){for(var i=o(t),u=c.f,s=a.f,f=0;f<i.length;f++){var p=i[f];n(r,p)||e&&n(e,p)||u(r,p,s(t,p))}}},function(r,t,e){var n=e(22),o=e(13),a=e(56),c=e(65),i=e(45),u=o([].concat);r.exports=n("Reflect","ownKeys")||function(r){var t=a.f(i(r)),e=c.f;return e?u(t,e(r)):t}},function(r,t,e){var n=e(57),o=e(64).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(r){return n(r,o)}},function(r,t,e){var n=e(13),o=e(37),a=e(11),c=e(58).indexOf,i=e(53),u=n([].push);
959r.exports=function(r,t){var e,n=a(r),s=0,f=[];for(e in n)!o(i,e)&&o(n,e)&&u(f,e);for(;t.length>s;)o(n,e=t[s++])&&(~c(f,e)||u(f,e));return f}},function(r,t,e){var n=e(11),o=e(59),a=e(62),c=function(r){return function(t,e,c){var i=n(t),u=a(i);if(0===u)return!r&&-1;var s,f=o(c,u);if(r&&e!=e){for(;u>f;)if((s=i[f++])!=s)return!0}else for(;u>f;f++)if((r||f in i)&&i[f]===e)return r||f||0;return!r&&-1}};r.exports={includes:c(!0),indexOf:c(!1)}},function(r,t,e){var n=e(60),o=Math.max,a=Math.min;r.exports=function(r,t){var e=n(r);return e<0?o(e+t,0):a(e,t)}},function(r,t,e){var n=e(61);r.exports=function(r){var t=+r;return t!=t||0===t?0:n(t)}},function(r,t,e){var n=Math.ceil,o=Math.floor;r.exports=Math.trunc||function(r){var t=+r;return(t>0?o:n)(t)}},function(r,t,e){var n=e(63);r.exports=function(r){return n(r.length)}},function(r,t,e){var n=e(60),o=Math.min;r.exports=function(r){var t=n(r);return t>0?o(t,9007199254740991):0}},function(r,t,e){r.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(r,t,e){t.f=Object.getOwnPropertySymbols},function(r,t,e){var n=e(6),o=e(20),a=/#|\.prototype\./,c=function(r,t){var e=u[i(r)];return e===f||e!==s&&(o(t)?n(t):!!t)},i=c.normalize=function(r){return String(r).replace(a,".").toLowerCase()},u=c.data={},s=c.NATIVE="N",f=c.POLYFILL="P";r.exports=c},function(r,t,e){var n=e(8),o=Function.prototype,a=o.apply,c=o.call;r.exports="object"==typeof Reflect&&Reflect.apply||(n?c.bind(a):function(){return c.apply(a,arguments)})},function(r,t,e){var n=e(13);r.exports=n([].slice)},function(t,e,n){var o=n(29),a=TypeError,c=function(t){var e,n;this.promise=new t(function(t,o){if(e!==r||n!==r)throw new a("Bad Promise constructor");e=t,n=o}),this.resolve=o(e),this.reject=o(n)};t.exports.f=function(r){return new c(r)}},function(r,t,e){r.exports=function(r){try{return{error:!1,value:r()}}catch(r){return{error:!0,value:r}}}},function(r,t,e){var n=e(2),o=e(69);n({target:"Promise",stat:!0},{withResolvers:function(){var r=o.f(this);return{promise:r.promise,resolve:r.resolve,reject:r.reject}}})},function(t,e,n){var o=n(2),a=n(3),c=n(22),i=n(10),u=n(43).f,s=n(37),f=n(73),p=n(74),l=n(79),y=n(83),v=n(84),h=n(5),b=n(35),g="DOMException",m=c("Error"),E=c(g),d=function(){f(this,w);var t=arguments.length,e=l(t<1?r:arguments[0]),n=l(t<2?r:arguments[1],"Error"),o=new E(e,n),a=new m(e);return a.name=g,u(o,"stack",i(1,v(a.stack,1))),p(o,this,d),o},w=d.prototype=E.prototype,x="stack"in new m(g),O="stack"in new E(1,2),R=E&&h&&Object.getOwnPropertyDescriptor(a,g),S=!(!R||R.writable&&R.configurable),A=x&&!S&&!O;o({global:!0,constructor:!0,forced:b||A},{DOMException:A?d:E});var D=c(g),T=D.prototype;if(T.constructor!==D)for(var _ in b||u(T,"constructor",i(1,D)),y)if(s(y,_)){var I=y[_],j=I.s;s(D,j)||u(D,j,i(6,I.c))}},function(r,t,e){var n=e(23),o=TypeError;r.exports=function(r,t){if(n(t,r))return r;throw new o("Incorrect invocation")}},function(r,t,e){var n=e(20),o=e(19),a=e(75);r.exports=function(r,t,e){var c,i;return a&&n(c=t.constructor)&&c!==e&&o(i=c.prototype)&&i!==e.prototype&&a(r,i),r}},function(t,e,n){var o=n(76),a=n(19),c=n(15),i=n(77);
vendor: 2,427 bytes, line 959
959t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r,t=!1,e={};try{(r=o(Object.prototype,"__proto__","set"))(e,[]),t=e instanceof Array}catch(r){}return function(e,n){return c(e),i(n),a(e)?(t?r(e,n):e.__proto__=n,e):e}}():r)},function(r,t,e){var n=e(13),o=e(29);r.exports=function(r,t,e){try{return n(o(Object.getOwnPropertyDescriptor(r,t)[e]))}catch(r){}}},function(r,t,e){var n=e(78),o=String,a=TypeError;r.exports=function(r){if(n(r))return r;throw new a("Can't set "+o(r)+" as a prototype")}},function(r,t,e){var n=e(19);r.exports=function(r){return n(r)||null===r}},function(t,e,n){var o=n(80);t.exports=function(t,e){return t===r?arguments.length<2?"":e:o(t)}},function(r,t,e){var n=e(81),o=String;r.exports=function(r){if("Symbol"===n(r))throw new TypeError("Cannot convert a Symbol value to a string");return o(r)}},function(t,e,n){var o=n(82),a=n(20),c=n(14),i=n(32)("toStringTag"),u=Object,s="Arguments"===c(function(){return arguments}());t.exports=o?c:function(t){var e,n,o;return t===r?"Undefined":null===t?"Null":"string"==typeof(n=function(r,t){try{return r[t]}catch(r){}}(e=u(t),i))?n:s?c(e):"Object"===(o=c(e))&&a(e.callee)?"Arguments":o}},function(r,t,e){var n={};n[e(32)("toStringTag")]="z",r.exports="[object z]"===String(n)},function(r,t,e){r.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1}
vendor: 8,053 bytes, line 959
959,InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},function(r,t,e){var n=e(13),o=Error,a=n("".replace),c=String(new o("zxcasd").stack),i=/\n\s*at [^:]*:[^\n]*/,u=i.test(c);r.exports=function(r,t){if(u&&"string"==typeof r&&!o.prepareStackTrace)for(;t--;)r=a(r,i,"");return r}},function(t,e,n){var o,a=n(35),c=n(2),i=n(3),u=n(22),s=n(13),f=n(6),p=n(39),l=n(20),y=n(86),v=n(16),h=n(19),b=n(21),g=n(87),m=n(45),E=n(81),d=n(37),w=n(95),x=n(42),O=n(62),R=n(96),S=n(97),A=n(99),D=n(100),T=n(101),_=n(103),I=n(108),j=n(107),M=i.Object,k=i.Array,P=i.Date,C=i.Error,N=i.TypeError,L=i.PerformanceMark,U=u("DOMException"),B=A.Map,F=A.has,W=A.get,z=A.set,V=D.Set,H=D.add,G=D.has,Y=u("Object","keys"),Q=s([].push),q=s((!0).valueOf),X=s(1..valueOf),K=s("".valueOf),Z=s(P.prototype.getTime),$=p("structuredClone"),J="DataCloneError",rr="Transferring",tr=function(r){return!f(function(){var t=new i.Set([7]),e=r(t),n=r(M(7));return e===t||!e.has(7)||!h(n)||7!==+n})&&r},er=function(r,t){return!f(function(){var e=new t,n=r({a:e,b:e});return!(n&&n.a===n.b&&n.a instanceof t&&n.a.stack===e.stack)})},nr=i.structuredClone,or=a||!er(nr,C)||!er(nr,U)||(o=nr,!!f(function(){var r=o(new i.AggregateError([1],$,{cause:3}));return"AggregateError"!==r.name||1!==r.errors[0]||r.message!==$||3!==r.cause})),ar=!nr&&tr(function(r){return new L($,{detail:r}).detail}),cr=tr(nr)||ar,ir=function(r){throw new U("Uncloneable type: "+r,J)},ur=function(r,t){throw new U((t||"Cloning")+" of "+r+" cannot be properly polyfilled in this engine",J)},sr=function(r,t){return cr||ur(t),cr(r)},fr=function(t,e,n){if(F(e,t))return W(e,t);var o,a,c,u,s,f;if("SharedArrayBuffer"===(n||E(t)))o=cr?cr(t):t;else{var p=i.DataView;p||l(t.slice)||ur("ArrayBuffer");try{if(l(t.slice)&&!t.resizable)o=t.slice(0);else{a=t.byteLength,c="maxByteLength"in t?{maxByteLength:t.maxByteLength}:r,o=new ArrayBuffer(a,c),u=new p(t),s=new p(o);for(f=0;f<a;f++)s.setUint8(f,u.getUint8(f))}}catch(r){throw new U("ArrayBuffer is detached",J)}}return z(e,t,o),o},pr=function(t,e){if(b(t)&&ir("Symbol"),!h(t))return t;if(e){if(F(e,t))return W(e,t)}else e=new B;var n,o,a,c,s,f,p,y,v=E(t);switch(v){case"Array":a=k(O(t));break;case"Object":a={};break;case"Map":a=new B;break;case"Set":a=new V;break;case"RegExp":a=new RegExp(t.source,S(t));break;case"Error":switch(o=t.name){case"AggregateError":a=new(u(o))([]);break;case"EvalError":case"RangeError":case"ReferenceError":case"SuppressedError":case"SyntaxError":case"TypeError":case"URIError":a=new(u(o));break;case"CompileError":case"LinkError":case"RuntimeError":a=new(u("WebAssembly",o));break;default:a=new C}break;case"DOMException":a=new U(t.message,t.name);break;case"ArrayBuffer":case"SharedArrayBuffer":a=fr(t,e,v);break;case"DataView":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float16Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":f="DataView"===v?t.byteLength:t.length,a=function(r,t,e,n,o){var a=i[t];return h(a)||ur(t),new a(fr(r.buffer,o),e,n)}(t,v,t.byteOffset,f,e);break;case"DOMQuad":try{a=new DOMQuad(pr(t.p1,e),pr(t.p2,e),pr(t.p3,e),pr(t.p4,e))}catch(r){a=sr(t,v)}break;case"File":if(cr)try{a=cr(t),E(a)!==v&&(a=r)}catch(r){}if(!a)try{a=new File([t],t.name,t)}catch(r){}a||ur(v);break;case"FileList":if(c=function(){var r;try{r=new i.DataTransfer}catch(t){try{r=new i.ClipboardEvent("").clipboardData}catch(r){}}return r&&r.items&&r.files?r:null}()){for(s=0,f=O(t);s<f;s++)c.items.add(pr(t[s],e));a=c.files}else a=sr(t,v);break;case"ImageData":try{a=new ImageData(pr(t.data,e),t.width,t.height,{colorSpace:t.colorSpace})}catch(r){a=sr(t,v)}break;default:if(cr)a=cr(t);else switch(v){case"BigInt":a=M(t.valueOf());break;case"Boolean":a=M(q(t));break;case"Number":a=M(X(t));break;case"String":a=M(K(t));break;case"Date":a=new P(Z(t));break;case"Blob":try{a=t.slice(0,t.size,t.type)}catch(r){ur(v)}break;case"DOMPoint":case"DOMPointReadOnly":n=i[v];try{a=n.fromPoint?n.fromPoint(t):new n(t.x,t.y,t.z,t.w)}catch(r){ur(v)}break;case"DOMRect":case"DOMRectReadOnly":n=i[v];try{a=n.fromRect?n.fromRect(t):new n(t.x,t.y,t.width,t.height)}catch(r){ur(v)}break;case"DOMMatrix":case"DOMMatrixReadOnly":n=i[v];try{a=n.fromMatrix?n.fromMatrix(t):new n(t)}catch(r){ur(v)}break;case"AudioData":case"VideoFrame":l(t.clone)||ur(v);try{a=t.clone()}catch(r){ir(v)}break;case"CropTarget":case"CryptoKey":case"FileSystemDirectoryHandle":case"FileSystemFileHandle":case"FileSystemHandle":case"GPUCompilationInfo":case"GPUCompilationMessage":case"ImageBitmap":case"RTCCertificate":case"WebAssembly.Module":ur(v);default:ir(v)}}switch(z(e,t,a),v){case"Array":case"Object":for(p=Y(t),s=0,f=O(p);s<f;s++)y=p[s],w(a,y,pr(t[y],e));break;case"Map":t.forEach(function(r,t){z(a,pr(t,e),pr(r,e))});break;case"Set":t.forEach(function(r){H(a,pr(r,e))});break;case"Error":x(a,"message",pr(t.message,e)),d(t,"cause")&&x(a,"cause",pr(t.cause,e)),"AggregateError"===o?a.errors=pr(t.errors,e):"SuppressedError"===o&&(a.error=pr(t.error,e),a.suppressed=pr(t.suppressed,e));case"DOMException":I&&x(a,"stack",pr(t.stack,e))}return a};c({global:!0,enumerable:!0,sham:!j,forced:or},{structuredClone:function(t){var e,n,o=R(arguments.length,1)>1&&!v(arguments[1])?m(arguments[1]):r,a=o?o.transfer:r;a!==r&&(n=function(t,e){if(!h(t))throw new N("Transfer option cannot be converted to a sequence");var n=[];g(t,function(r){Q(n,m(r))});for(var o,a,c,u,s,f=0,p=O(n),v=new V;f<p;){if(o=n[f++],"ArrayBuffer"===(a=E(o))?G(v,o):F(e,o))throw new U("Duplicate transferable",J);if("ArrayBuffer"!==a){if(j)u=nr(o,{transfer:[o]});else switch(a){case"ImageBitmap":c=i.OffscreenCanvas,y(c)||ur(a,rr);try{(s=new c(o.width,o.height)).getContext("bitmaprenderer").transferFromImageBitmap(o),u=s.transferToImageBitmap()}catch(r){}break;case"AudioData":case"VideoFrame":l(o.clone)&&l(o.close)||ur(a,rr);try{u=o.clone(),o.close()}catch(r){}break;case"MediaSourceHandle":case"MessagePort":case"MIDIAccess":case"OffscreenCanvas":case"ReadableStream":case"RTCDataChannel":case"TransformStream":case"WebTransportReceiveStream":case"WebTransportSendStream":case"WritableStream":ur(a,rr)}if(u===r)throw new U("This object cannot be transferred: "+a,J);z(e,o,u)}else H(v,o)}return v}(a,e=new B));var c=pr(t,e);return n&&function(r){T(r,function(r){j?cr(r,{transfer:[r]}):l(r.transfer)?r.transfer():_?_(r):ur("ArrayBuffer",rr)})}(n),c}})},function(r,t,e){var n=e(13),o=e(6),a=e(20),c=e(81),i=e(22),u=e(49),s=function(){},f=i("Reflect","construct"),p=/^\s*(?:class|function)\b/,l=n(p.exec),y=!p.test(s),v=function(r){if(!a(r))return!1;try{return f(s,[],r),!0}catch(r){return!1}},h=function(r){if(!a(r))return!1;switch(c(r)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return y||!!l(p,u(r))}catch(r){return!0}};h.sham=!0,r.exports=!f||o(function(){var r;return v(v.call)||!v(Object)||!v(function(){r=!0})||r})?h:v},function(r,t,e){var n=e(88),o=e(7),a=e(45),c=e(30),i=e(90),u=e(62),s=e(23),f=e(92),p=e(93),l=e(94),y=TypeError,v=function(r,t){this.stopped=r,this.result=t},h=v.prototype;r.exports=function(r,t,e){var b,g,m,E,d,w,x,O=e&&e.that,R=!(!e||!e.AS_ENTRIES),S=!(!e||!e.IS_RECORD),A=!(!e||!e.IS_ITERATOR),D=!(!e||!e.INTERRUPTED),T=n(t,O),_=function(r){return b&&l(b,"normal",r),new v(!0,r)},I=function(r){return R?(a(r),D?T(r[0],r[1],_):T(r[0],r[1])):D?T(r,_):T(r)};if(S)b=r.iterator;else if(A)b=r;else{if(!(g=p(r)))throw new y(c(r)+" is not iterable");if(i(g)){for(m=0,E=u(r);E>m;m++)if((d=I(r[m]))&&s(h,d))return d;return new v(!1)}b=f(r,g)}for(w=S?r.next:b.next;!(x=o(w,b)).done;){try{d=I(x.value)}catch(r){l(b,"throw",r)}if("object"==typeof d&&d&&s(h,d))return d}return new v(!1)}},function(t,e,n){var o=n(89),a=n(29),c=n(8),i=o(o.bind);t.exports=function(t,e){return a(t),e===r?t:c?i(t,e):function(){return t.apply(e,arguments)}}},function(r,t,e){var n=e(14),o=e(13);r.exports=function(r){if("Function"===n(r))return o(r)}},function(t,e,n){var o=n(32),a=n(91),c=o("iterator"),i=Array.prototype;
959t.exports=function(t){return t!==r&&(a.Array===t||i[c]===t)}},function(r,t,e){r.exports={}},function(r,t,e){var n=e(7),o=e(29),a=e(45),c=e(30),i=e(93),u=TypeError;r.exports=function(r,t){var e=arguments.length<2?i(r):t;if(o(e))return a(n(e,r));throw new u(c(r)+" is not iterable")}},function(r,t,e){var n=e(81),o=e(28),a=e(16),c=e(91),i=e(32)("iterator");r.exports=function(r){if(!a(r))return o(r,i)||o(r,"@@iterator")||c[n(r)]}},function(r,t,e){var n=e(7),o=e(45),a=e(28);r.exports=function(r,t,e){var c,i;o(r);try{if(!(c=a(r,"return"))){if("throw"===t)throw e;return e}c=n(c,r)}catch(r){i=!0,c=r}if("throw"===t)throw e;if(i)throw c;return o(c),e}},function(r,t,e){var n=e(5),o=e(43),a=e(10);r.exports=function(r,t,e){n?o.f(r,t,a(0,e)):r[t]=e}},function(r,t,e){var n=TypeError;r.exports=function(r,t){if(r<t)throw new n("Not enough arguments");return r}},function(t,e,n){var o=n(7),a=n(37),c=n(23),i=n(98),u=RegExp.prototype;t.exports=function(t){var e=t.flags;return e!==r||"flags"in u||a(t,"flags")||!c(u,t)?e:o(i,t)}},function(r,t,e){var n=e(45);r.exports=function(){var r=n(this),t="";return r.hasIndices&&(t+="d"),r.global&&(t+="g"),r.ignoreCase&&(t+="i"),r.multiline&&(t+="m"),r.dotAll&&(t+="s"),r.unicode&&(t+="u"),r.unicodeSets&&(t+="v"),r.sticky&&(t+="y"),t}},function(r,t,e){var n=e(13),o=Map.prototype;r.exports={Map:Map,set:n(o.set),get:n(o.get),has:n(o.has),remove:n(o.delete),proto:o}},function(r,t,e){var n=e(13),o=Set.prototype;r.exports={Set:Set,add:n(o.add),has:n(o.has),remove:n(o.delete),proto:o}},function(r,t,e){var n=e(13),o=e(102),a=e(100),c=a.Set,i=a.proto,u=n(i.forEach),s=n(i.keys),f=s(new c).next;r.exports=function(r,t,e){return e?o({iterator:s(r),next:f},t):u(r,t)}},function(t,e,n){var o=n(7);t.exports=function(t,e,n){for(var a,c,i=n?t:t.iterator,u=t.next;!(a=o(u,i)).done;)if((c=e(a.value))!==r)return c}},function(r,t,e){var n,o,a,c,i=e(3),u=e(104),s=e(107),f=i.structuredClone,p=i.ArrayBuffer,l=i.MessageChannel,y=!1;if(s)y=function(r){f(r,{transfer:[r]})};else if(p)try{l||(n=u("worker_threads"))&&(l=n.MessageChannel),l&&(o=new l,a=new p(2),c=function(r){o.port1.postMessage(null,[r])},2===a.byteLength&&(c(a),0===a.byteLength&&(y=c)))}catch(r){}r.exports=y},function(r,t,e){var n=e(3),o=e(105);r.exports=function(r){if(o){try{return n.process.getBuiltinModule(r)}catch(r){}try{return Function('return require("'+r+'")')()}catch(r){}}}},function(r,t,e){var n=e(106);r.exports="NODE"===n},function(r,t,e){var n=e(3),o=e(27),a=e(14),c=function(r){return o.slice(0,r.length)===r};r.exports=c("Bun/")?"BUN":c("Cloudflare-Workers")?"CLOUDFLARE":c("Deno/")?"DENO":c("Node.js/")?"NODE":n.Bun&&"string"==typeof Bun.version?"BUN":n.Deno&&"object"==typeof Deno.version?"DENO":"process"===a(n.process)?"NODE":n.window&&n.document?"BROWSER":"REST"},function(r,t,e){var n=e(3),o=e(6),a=e(26),c=e(106),i=n.structuredClone;r.exports=!!i&&!o(function(){if("DENO"===c&&a>92||"NODE"===c&&a>94||"BROWSER"===c&&a>97)return!1;var r=new ArrayBuffer(8),t=i(r,{transfer:[r]});return 0!==r.byteLength||8!==t.byteLength})},function(r,t,e){var n=e(6),o=e(10);r.exports=!n(function(){var r=new Error("a");return!("stack"in r)||(Object.defineProperty(r,"stack",o(1,7)),7!==r.stack)})},function(t,e,n){var o=n(2),a=n(22),c=n(6),i=n(96),u=n(80),s=n(110),f=a("URL"),p=s&&c(function(){f.canParse()}),l=c(function(){return 1!==f.canParse.length});o({target:"URL",stat:!0,forced:!p||l},{canParse:function(t){var e=i(arguments.length,1),n=u(t),o=e<2||arguments[1]===r?r:u(arguments[1]);try{return!!new f(n,o)}catch(r){return!1}}})},function(t,e,n){var o=n(6),a=n(32),c=n(5),i=n(35),u=a("iterator");t.exports=!o(function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,n=new URLSearchParams("a=1&a=2&b=3"),o="";return t.pathname="c%20d",e.forEach(function(r,t){e.delete("b"),o+=t+r}),n.delete("a",2),n.delete("b",r),i&&(!t.toJSON||!n.has("a",1)||n.has("a",2)||!n.has("a",r)||n.has("b"))||!e.size&&(i||!c)||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[u]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://ÑеÑÑ").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==o||"x"!==new URL("https://x",r).host})},function(t,e,n){var o=n(2),a=n(22),c=n(96),i=n(80),u=n(110),s=a("URL");o({target:"URL",stat:!0,forced:!u},{parse:function(t){var e=c(arguments.length,1),n=i(t),o=e<2||arguments[1]===r?r:i(arguments[1]);try{return new s(n,o)}catch(r){return null}}})}],e={},(n=function(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}).m=t,n.c=e,n.d=function(r,t,e){n.o(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:e})},n.r=function(r){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}
959),Object.defineProperty(r,"__esModule",{value:!0})},n.t=function(r,t){if(1&t&&(r=n(r)),8&t)return r;if(4&t&&"object"==typeof r&&r&&r.__esModule)return r;var e=Object.create(null);if(n.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:r}),2&t&&"string"!=typeof r)for(var o in r)n.d(e,o,function(t){return r[t]}.bind(null,o));return e},n.n=function(r){var t=r&&r.__esModule?function(){return r.default}:function(){return r};return n.d(t,"a",t),t},n.o=function(r,t){return Object.prototype.hasOwnProperty.call(r,t)},n.p="",n(n.s=0)}();; 960(()=>{"use strict";const e=window.wp.hooks,i="mailchimp-woocommerce";let t=!1;function c(){return void 0!==window.$mcSite&&window.$mcSite.pixel&&void 0!==window.$mcSite.pixel.api&&"function"==typeof window.$mcSite.pixel.api.track}function r(){return window.mcPixel&&window.mcPixel.cartId?window.mcPixel.cartId:""}function n(e,i){window.mcPixel&&i&&String(i)!==String(e)&&(window.mcPixel.parentMap||(window.mcPixel.parentMap={}),window.mcPixel.parentMap[String(e)]=String(i))}function o(e,i){t&&c()&&window.$mcSite.pixel.api.track(e,i).catch(function(i){console.error("Mailchimp Pixel Blocks: Error tracking "+e,i)})}function a(e){const i=e.prices||{},t=i.currency_minor_unit||2,c=Math.pow(10,t),r=i.price?parseInt(i.price,10)/c:0,o=String(e.id),a=(e.extensions||{})["mailchimp-pixel"]||{},d=a.product_id?String(a.product_id):function(e){return(window.mcPixel&&window.mcPixel.parentMap||{})[String(e)]||""}(o)||o;return n(o,d),{id:o,productId:d,title:e.name||"",price:r,currency:(i.currency_code||"").toUpperCase(),sku:e.sku||"",imageUrl:e.images&&e.images.length>0?e.images[0].src:"",productUrl:e.permalink||"",vendor:"",categories:[]}}function d(e){const i=e.prices||{},t=i.currency_minor_unit||2,c=Math.pow(10,t),r=i.line_total?parseInt(i.line_total,10)/c:0;return{item:a(e),quantity:e.quantity||1,price:r,currency:(i.currency_code||"").toUpperCase()}}(0,e.addAction)("experimental__woocommerce_blocks-cart-add-item",i,function(e){if(!t)return;if(window.mcPixel&&window.mcPixel._handled.addToCart)return;const i=e.product;if(!i)return;const c=function(e){const i=e.prices||{},t=i.currency_minor_unit||2,c=Math.pow(10,t),r=i.price?parseInt(i.price,10)/c:0,o=String(e.id),a=((e.extensions||{})["mailchimp-pixel"]||{}).product_id||e.parent,d=a?String(a):"";return n(o,d),{id:o,productId:d||o,title:e.name||"",price:r,currency:(i.currency_code||"").toUpperCase(),sku:e.sku||"",imageUrl:e.images&&e.images.length>0?e.images[0].src:"",productUrl:e.permalink||"",vendor:"",categories:(e.categories||[]).map(function(e){return e.name||""})}}(i),a=e.quantity||1;o("PRODUCT_ADDED_TO_CART",{cartId:r(),product:{item:{id:c.id,productId:c.productId,title:c.title,price:c.price,currency:c.currency,sku:c.sku},quantity:a,price:c.price*a,currency:c.currency}}),window.mcPixel&&(window.mcPixel._handled.addToCart=!0,setTimeout(function(){window.mcPixel._handled.addToCart=!1},1e3))}),(0,e.addAction)("experimental__woocommerce_blocks-cart-remove-item",i,function(e){if(!t)return;if(window.mcPixel&&window.mcPixel._handled.removeFromCart)return;const i=e.product;if(!i)return;const c=a(i),n=e.quantity||1;o("PRODUCT_REMOVED_FROM_CART",{cartId:r(),product:{item:{id:c.id,productId:c.productId,title:c.title,price:c.price,currency:c.currency,sku:c.sku},quantity:n,price:c.price*n,currency:c.currency}}),window.mcPixel&&(window.mcPixel._handled.removeFromCart=!0,setTimeout(function(){window.mcPixel._handled.removeFromCart=!1},1e3))}),(0,e.addAction)("experimental__woocommerce_blocks-checkout-render-checkout-form",i,function(e){if(!t)return;if(window.mcPixel&&window.mcPixel._handled.checkout)return;const i=e.storeCart;i&&i.cartItems&&0!==i.cartItems.length&&(o("CHECKOUT_STARTED",{checkout:function(e){const i=e.cartTotals||{},t=i.currency_minor_unit||2,c=Math.pow(10,t),n=(e.cartItems||[]).map(d),o=r();return{id:"checkout_"+o,cartId:o,lineItems:n,subtotalPrice:i.total_items?parseInt(i.total_items,10)/c:0,totalTax:i.total_tax?parseInt(i.total_tax,10)/c:0,totalShipping:i.total_shipping?parseInt(i.total_shipping,10)/c:0,totalPrice:i.total_price?parseInt(i.total_price,10)/c:0,currency:(i.currency_code||"").toUpperCase()}}(i)}),window.mcPixel&&(window.mcPixel._handled.checkout=!0))}),(0,e.addAction)("experimental__woocommerce_blocks-product-list-render",i,function(){t&&(window.mcPixel&&window.mcPixel._handled.category||window.mcPixel&&window.mcPixel.data&&window.mcPixel.data.category&&(o("PRODUCT_CATEGORY_VIEWED",window.mcPixel.data.category),window.mcPixel&&(window.mcPixel._handled.category=!0)))}),(0,e.addAction)("experimental__woocommerce_blocks-product-search",i,function(e){if(!t)return;if(window.mcPixel&&window.mcPixel._handled.search)return;const i=e.searchTerm||"";i&&(o("SEARCH_SUBMITTED",{query:i}),window.mcPixel&&(window.mcPixel._handled.search=!0))}),function(){let e=0;!function i(){if(c())return void setTimeout(function(){t=!0},1e3);if(e>=20)return;const r=Math.min(100*Math.pow(2,e),5e3);e+=1,setTimeout(i,r)}()}()})();;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.