{
  "version": 3,
  "sources": ["/cdn/shop/t/18/assets/utm-attribution.js"],
  "sourcesContent": ["/* CAF UTM attribution persistence:\n * - Captures first-touch + last-touch UTM/click IDs\n * - Persists to localStorage/cookie\n * - Syncs into Shopify cart attributes so attribution survives checkout\n */\n(function () {\n  'use strict';\n\n  if (window.__cafUtmAttributionInitialized) return;\n  window.__cafUtmAttributionInitialized = true;\n\n  var STORAGE_KEY = 'caf_utm_attribution_v1';\n  var COOKIE_KEY = 'caf_utm_attribution_v1';\n  var CART_SYNC_KEY = 'caf_utm_cart_sync_sig_v3';\n  var CART_NONEMPTY_KEYS_KEY = 'caf_utm_cart_nonempty_keys_v1';\n  var BOT_BLOCKER_CONSENT_KEY = 'bot-blocker:consent';\n  var FIRST_TOUCH_DAYS = 90;\n  var LAST_TOUCH_DAYS = 30;\n  var COOKIE_DAYS = FIRST_TOUCH_DAYS;\n  var MAX_ATTR_LENGTH = 255;\n  var cartSyncPendingSignature = '';\n  var klaviyoUtmIdentifySent = false;\n  var lastBotBlockerConsent = '';\n\n  var PARAMS = [\n    'utm_source',\n    'utm_medium',\n    'utm_campaign',\n    'utm_term',\n    'utm_content',\n    'utm_id',\n    'gclid',\n    'fbclid',\n    'msclkid',\n    'ttclid',\n    'twclid',\n    'li_fat_id',\n    'wbraid',\n    'gbraid',\n    'dclid',\n    'gad_source',\n    'gad_campaignid',\n    'srsltid',\n    'rdt_cid',\n    'scclid',\n    'epik',\n    'cto_bundle',\n    'cto_pld',\n    'ref'\n  ];\n\n  var PARAM_TO_KEY = {\n    utm_source: 'source',\n    utm_medium: 'medium',\n    utm_campaign: 'campaign',\n    utm_term: 'term',\n    utm_content: 'content',\n    utm_id: 'id',\n    gclid: 'gclid',\n    fbclid: 'fbclid',\n    msclkid: 'msclkid',\n    ttclid: 'ttclid',\n    twclid: 'twclid',\n    li_fat_id: 'li_fat_id',\n    wbraid: 'wbraid',\n    gbraid: 'gbraid',\n    dclid: 'dclid',\n    gad_source: 'gad_source',\n    gad_campaignid: 'gad_campaignid',\n    srsltid: 'srsltid',\n    rdt_cid: 'rdt_cid',\n    scclid: 'scclid',\n    epik: 'epik',\n    cto_bundle: 'cto_bundle',\n    cto_pld: 'cto_pld',\n    ref: 'ref'\n  };\n\n  var CLICK_ID_SOURCE_HINTS = [\n    { key: 'gclid', source: 'google', medium: 'cpc' },\n    { key: 'wbraid', source: 'google', medium: 'cpc' },\n    { key: 'gbraid', source: 'google', medium: 'cpc' },\n    { key: 'dclid', source: 'google', medium: 'cpc' },\n    { key: 'gad_source', source: 'google', medium: 'cpc' },\n    { key: 'gad_campaignid', source: 'google', medium: 'cpc' },\n    { key: 'msclkid', source: 'bing', medium: 'cpc' },\n    { key: 'fbclid', source: 'facebook', medium: 'social' },\n    { key: 'ttclid', source: 'tiktok', medium: 'social' },\n    { key: 'twclid', source: 'twitter', medium: 'social' },\n    { key: 'li_fat_id', source: 'linkedin', medium: 'social' },\n    { key: 'rdt_cid', source: 'reddit', medium: 'social' },\n    { key: 'scclid', source: 'snapchat', medium: 'social' },\n    { key: 'epik', source: 'pinterest', medium: 'social' },\n    { key: 'cto_bundle', source: 'criteo', medium: 'display' },\n    { key: 'cto_pld', source: 'criteo', medium: 'display' }\n  ];\n\n  function safeJsonParse(value) {\n    if (!value || typeof value !== 'string') return null;\n    try {\n      return JSON.parse(value);\n    } catch (error) {\n      return null;\n    }\n  }\n\n  function trimTo(value, maxLength) {\n    if (value == null) return '';\n    var text = String(value).trim();\n    if (text.length <= maxLength) return text;\n    return text.slice(0, maxLength);\n  }\n\n  function getCookie(name) {\n    var cookieName = name + '=';\n    var decoded = decodeURIComponent(document.cookie || '');\n    var parts = decoded.split(';');\n    for (var i = 0; i < parts.length; i += 1) {\n      var item = parts[i].trim();\n      if (item.indexOf(cookieName) === 0) {\n        return item.substring(cookieName.length);\n      }\n    }\n    return '';\n  }\n\n  function isPageAllowed() {\n    if (!window.CAFBotBlockerGate || typeof window.CAFBotBlockerGate.isPageAllowed !== 'function') return true;\n    return window.CAFBotBlockerGate.isPageAllowed();\n  }\n\n  function isTrackingAllowed() {\n    if (!window.CAFBotBlockerGate || typeof window.CAFBotBlockerGate.isTrackingAllowed !== 'function') return true;\n    return window.CAFBotBlockerGate.isTrackingAllowed();\n  }\n\n  function runWhenPageAllowed(callback) {\n    if (!window.CAFBotBlockerGate || typeof window.CAFBotBlockerGate.runWhenPageAllowed !== 'function') {\n      callback();\n      return;\n    }\n\n    window.CAFBotBlockerGate.runWhenPageAllowed(callback);\n  }\n\n  function runWhenTrackingAllowed(callback) {\n    if (!window.CAFBotBlockerGate || typeof window.CAFBotBlockerGate.runWhenTrackingAllowed !== 'function') {\n      callback();\n      return;\n    }\n\n    window.CAFBotBlockerGate.runWhenTrackingAllowed(callback);\n  }\n\n  function setCookie(name, value, days) {\n    var expires = '';\n    if (typeof days === 'number') {\n      var date = new Date();\n      date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n      expires = '; expires=' + date.toUTCString();\n    }\n    document.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/; SameSite=Lax';\n  }\n\n  function readStorage(key) {\n    try {\n      return window.localStorage.getItem(key);\n    } catch (error) {\n      return null;\n    }\n  }\n\n  function writeStorage(key, value) {\n    try {\n      window.localStorage.setItem(key, value);\n    } catch (error) {\n      // Ignore storage errors in private mode/quota limits.\n    }\n  }\n\n  function readCartNonEmptyKeys() {\n    var parsed = safeJsonParse(readStorage(CART_NONEMPTY_KEYS_KEY));\n    if (!Array.isArray(parsed)) return [];\n\n    var keys = [];\n    for (var i = 0; i < parsed.length; i += 1) {\n      if (typeof parsed[i] === 'string' && parsed[i]) keys.push(parsed[i]);\n    }\n    return keys;\n  }\n\n  function writeCartNonEmptyKeys(keys) {\n    try {\n      writeStorage(CART_NONEMPTY_KEYS_KEY, JSON.stringify(keys || []));\n    } catch (_error) {\n      // Ignore storage serialization errors.\n    }\n  }\n\n  function getNonEmptyAttributeKeys(attributes) {\n    var out = [];\n    if (!attributes) return out;\n\n    var keys = Object.keys(attributes);\n    for (var i = 0; i < keys.length; i += 1) {\n      var value = attributes[keys[i]];\n      if (value == null) continue;\n      if (String(value) !== '') out.push(keys[i]);\n    }\n    return out;\n  }\n\n  function keySet(keys) {\n    var set = Object.create(null);\n    for (var i = 0; i < keys.length; i += 1) {\n      set[keys[i]] = true;\n    }\n    return set;\n  }\n\n  function parseQueryParams() {\n    var result = {};\n    var search = window.location.search || '';\n    if (!search) return result;\n\n    var query = new URLSearchParams(search);\n    for (var i = 0; i < PARAMS.length; i += 1) {\n      var rawKey = PARAMS[i];\n      var value = query.get(rawKey);\n      if (!value) continue;\n      var normalizedKey = PARAM_TO_KEY[rawKey];\n      result[normalizedKey] = trimTo(value, 500);\n    }\n    return result;\n  }\n\n  function inferSourceFromClickIds(values) {\n    if (!values || typeof values !== 'object') return values;\n    if (values.source && values.medium) return values;\n\n    for (var i = 0; i < CLICK_ID_SOURCE_HINTS.length; i += 1) {\n      var hint = CLICK_ID_SOURCE_HINTS[i];\n      if (!values[hint.key]) continue;\n\n      var enriched = {};\n      var keys = Object.keys(values);\n      for (var k = 0; k < keys.length; k += 1) {\n        enriched[keys[k]] = values[keys[k]];\n      }\n\n      // Internal attribution only: do not rewrite the URL or send manual\n      // campaign params to GA. The raw click IDs remain the source of truth\n      // for ad platforms, while cart attributes stay readable in Shopify.\n      if (!enriched.source) enriched.source = hint.source;\n      if (!enriched.medium) enriched.medium = hint.medium;\n      return enriched;\n    }\n\n    return values;\n  }\n\n  function hasAttributionData(values) {\n    if (!values || typeof values !== 'object') return false;\n    var keys = Object.keys(values);\n    for (var i = 0; i < keys.length; i += 1) {\n      if (values[keys[i]]) return true;\n    }\n    return false;\n  }\n\n  function getReferrerHost() {\n    if (!document.referrer) return '';\n    try {\n      return new URL(document.referrer).hostname || '';\n    } catch (error) {\n      return '';\n    }\n  }\n\n  function createTouch(params) {\n    return {\n      params: params,\n      page_path: window.location.pathname || '/',\n      page_url: window.location.origin + window.location.pathname + window.location.search,\n      referrer_host: getReferrerHost(),\n      captured_at: new Date().toISOString()\n    };\n  }\n\n  function isTouchFresh(touch, days) {\n    if (!touch || !touch.captured_at) return false;\n    var capturedAt = Date.parse(touch.captured_at);\n    if (!isFinite(capturedAt)) return false;\n    return Date.now() - capturedAt <= days * 24 * 60 * 60 * 1000;\n  }\n\n  function normalizeAttributionPayload(payload) {\n    if (!payload || typeof payload !== 'object') return null;\n\n    if (!isTouchFresh(payload.first_touch, FIRST_TOUCH_DAYS)) {\n      delete payload.first_touch;\n    }\n    if (!isTouchFresh(payload.last_touch, LAST_TOUCH_DAYS)) {\n      delete payload.last_touch;\n    }\n\n    return payload.first_touch || payload.last_touch ? payload : null;\n  }\n\n  function readAttributionPayload() {\n    var localValue = readStorage(STORAGE_KEY);\n    var parsedLocal = safeJsonParse(localValue);\n    if (parsedLocal) return normalizeAttributionPayload(parsedLocal);\n\n    var cookieValue = getCookie(COOKIE_KEY);\n    return normalizeAttributionPayload(safeJsonParse(cookieValue));\n  }\n\n  function writeAttributionPayload(payload) {\n    if (!payload) return;\n    var serialized = JSON.stringify(payload);\n    writeStorage(STORAGE_KEY, serialized);\n    setCookie(COOKIE_KEY, serialized, COOKIE_DAYS);\n  }\n\n  var REFERRER_SOURCE_MAP = {\n    'google': { source: 'google', medium: 'organic' },\n    'facebook': { source: 'facebook', medium: 'organic' },\n    'bing': { source: 'bing', medium: 'organic' },\n    'instagram': { source: 'instagram', medium: 'organic' },\n    'pinterest': { source: 'pinterest', medium: 'organic' },\n    'youtube': { source: 'youtube', medium: 'organic' },\n    'tiktok': { source: 'tiktok', medium: 'organic' }\n  };\n\n  function inferSourceFromReferrer() {\n    var host = getReferrerHost();\n    if (!host) return null;\n    var lowerHost = host.toLowerCase();\n\n    var keys = Object.keys(REFERRER_SOURCE_MAP);\n    for (var i = 0; i < keys.length; i += 1) {\n      if (lowerHost.indexOf(keys[i]) !== -1) {\n        return { source: REFERRER_SOURCE_MAP[keys[i]].source, medium: REFERRER_SOURCE_MAP[keys[i]].medium };\n      }\n    }\n\n    // External referrer that doesn't match known sources\n    if (lowerHost.indexOf(window.location.hostname) === -1) {\n      return { source: host, medium: 'referral' };\n    }\n\n    return null;\n  }\n\n  function updateAttributionFromUrl(currentPayload, queryParams) {\n    var payload = currentPayload && typeof currentPayload === 'object' ? currentPayload : {};\n    if (!payload.version) payload.version = 1;\n\n    var hasUtm = hasAttributionData(queryParams);\n    var paramsToUse = queryParams;\n\n    // When no UTM params, try to infer source from referrer\n    if (!hasUtm) {\n      var inferred = inferSourceFromReferrer();\n      if (inferred) {\n        paramsToUse = inferred;\n        hasUtm = true;\n      }\n    }\n\n    if (!hasUtm) {\n      if (payload.first_touch || payload.last_touch) return payload;\n      return null;\n    }\n\n    var touch = createTouch(inferSourceFromClickIds(paramsToUse));\n    payload.last_touch = touch;\n    payload.updated_at = touch.captured_at;\n\n    if (!payload.first_touch || !payload.first_touch.params || !hasAttributionData(payload.first_touch.params)) {\n      payload.first_touch = touch;\n    }\n\n    return payload;\n  }\n\n  function toCartAttributes(payload) {\n    if (!payload || typeof payload !== 'object') return {};\n\n    var firstTouch = payload.first_touch || {};\n    var lastTouch = payload.last_touch || {};\n    var firstParams = firstTouch.params || {};\n    var lastParams = lastTouch.params || {};\n\n    var attributes = {\n      utm_ft_source: firstParams.source || '',\n      utm_ft_medium: firstParams.medium || '',\n      utm_ft_campaign: firstParams.campaign || '',\n      utm_ft_term: firstParams.term || '',\n      utm_ft_content: firstParams.content || '',\n      utm_ft_id: firstParams.id || '',\n      utm_ft_gclid: firstParams.gclid || '',\n      utm_ft_fbclid: firstParams.fbclid || '',\n      utm_ft_msclkid: firstParams.msclkid || '',\n      utm_ft_ttclid: firstParams.ttclid || '',\n      utm_ft_twclid: firstParams.twclid || '',\n      utm_ft_li_fat_id: firstParams.li_fat_id || '',\n      utm_ft_wbraid: firstParams.wbraid || '',\n      utm_ft_gbraid: firstParams.gbraid || '',\n      utm_ft_dclid: firstParams.dclid || '',\n      utm_ft_gad_source: firstParams.gad_source || '',\n      utm_ft_gad_campaignid: firstParams.gad_campaignid || '',\n      utm_ft_srsltid: firstParams.srsltid || '',\n      utm_ft_rdt_cid: firstParams.rdt_cid || '',\n      utm_ft_scclid: firstParams.scclid || '',\n      utm_ft_epik: firstParams.epik || '',\n      utm_ft_cto_bundle: firstParams.cto_bundle || '',\n      utm_ft_cto_pld: firstParams.cto_pld || '',\n      utm_ft_ref: firstParams.ref || '',\n      utm_ft_referrer_host: firstTouch.referrer_host || '',\n      utm_ft_page: firstTouch.page_path || '',\n      utm_ft_at: firstTouch.captured_at || '',\n\n      utm_lt_source: lastParams.source || '',\n      utm_lt_medium: lastParams.medium || '',\n      utm_lt_campaign: lastParams.campaign || '',\n      utm_lt_term: lastParams.term || '',\n      utm_lt_content: lastParams.content || '',\n      utm_lt_id: lastParams.id || '',\n      utm_lt_gclid: lastParams.gclid || '',\n      utm_lt_fbclid: lastParams.fbclid || '',\n      utm_lt_msclkid: lastParams.msclkid || '',\n      utm_lt_ttclid: lastParams.ttclid || '',\n      utm_lt_twclid: lastParams.twclid || '',\n      utm_lt_li_fat_id: lastParams.li_fat_id || '',\n      utm_lt_wbraid: lastParams.wbraid || '',\n      utm_lt_gbraid: lastParams.gbraid || '',\n      utm_lt_dclid: lastParams.dclid || '',\n      utm_lt_gad_source: lastParams.gad_source || '',\n      utm_lt_gad_campaignid: lastParams.gad_campaignid || '',\n      utm_lt_srsltid: lastParams.srsltid || '',\n      utm_lt_rdt_cid: lastParams.rdt_cid || '',\n      utm_lt_scclid: lastParams.scclid || '',\n      utm_lt_epik: lastParams.epik || '',\n      utm_lt_cto_bundle: lastParams.cto_bundle || '',\n      utm_lt_cto_pld: lastParams.cto_pld || '',\n      utm_lt_ref: lastParams.ref || '',\n      utm_lt_referrer_host: lastTouch.referrer_host || '',\n      utm_lt_page: lastTouch.page_path || '',\n      utm_lt_at: lastTouch.captured_at || ''\n    };\n\n    var keys = Object.keys(attributes);\n    for (var i = 0; i < keys.length; i += 1) {\n      attributes[keys[i]] = trimTo(attributes[keys[i]], MAX_ATTR_LENGTH);\n    }\n\n    return attributes;\n  }\n\n  function getShopifySessionToken() {\n    return getCookie('_shopify_s') || '';\n  }\n\n  function readBotBlockerConsent() {\n    var value = readStorage(BOT_BLOCKER_CONSENT_KEY);\n    return value === 'denied' || value === 'granted' ? value : '';\n  }\n\n  lastBotBlockerConsent = readBotBlockerConsent();\n\n  function canReadPlatformCookies() {\n    if (readBotBlockerConsent() === 'denied') return false;\n\n    var privacy = window.Shopify && window.Shopify.customerPrivacy;\n    if (!privacy) return true;\n\n    try {\n      if (typeof privacy.userCanBeTracked === 'function') return privacy.userCanBeTracked();\n      if (typeof privacy.analyticsProcessingAllowed === 'function') return privacy.analyticsProcessingAllowed();\n      if (typeof privacy.marketingAllowed === 'function') return privacy.marketingAllowed();\n    } catch (_error) {\n      return false;\n    }\n\n    return true;\n  }\n\n  function readPlatformCookieAttributes() {\n    // Capture vendor browser identifiers so server-side CAPI / Measurement\n    // Protocol can stitch events back to the browser session that created\n    // the cart. Names match the cookies set by Meta Pixel + Google tag.\n    //   _fbp  : Meta Pixel browser ID (set on init).\n    //   _fbc  : Meta Pixel click ID (set when fbclid is in URL).\n    //   _ga   : GA4 client ID cookie.\n    //   _gcl_au: Google Ads conversion linker.\n    // Criteo identifies via cto_bundle/cto_pld query params (already in\n    // PARAMS), no first-party pass-through cookie needed.\n    if (!canReadPlatformCookies()) {\n      return {\n        caf_fbp: '',\n        caf_fbc: '',\n        caf_ga: '',\n        caf_gcl_au: '',\n      };\n    }\n\n    return {\n      caf_fbp: trimTo(getCookie('_fbp'), MAX_ATTR_LENGTH),\n      caf_fbc: trimTo(getCookie('_fbc'), MAX_ATTR_LENGTH),\n      caf_ga: trimTo(getCookie('_ga'), MAX_ATTR_LENGTH),\n      caf_gcl_au: trimTo(getCookie('_gcl_au'), MAX_ATTR_LENGTH),\n    };\n  }\n\n  function buildAttributes() {\n    var stored = readAttributionPayload();\n    var attrs = toCartAttributes(stored);\n    var platform = readPlatformCookieAttributes();\n    var keys = Object.keys(platform);\n    for (var i = 0; i < keys.length; i += 1) {\n      attrs[keys[i]] = platform[keys[i]];\n    }\n    return attrs;\n  }\n\n  function pushKlaviyoUtmIdentify(payload) {\n    // Push UTM as Klaviyo customer properties so flows can segment by\n    // first/last touch source. Property names are CAF-prefixed to avoid\n    // colliding with any standard Klaviyo property; properties stay queued\n    // until Klaviyo identifies the visitor (via onsite form submit, etc.)\n    // and then merge into the profile.\n    if (klaviyoUtmIdentifySent) return true;\n    if (!payload) return false;\n\n    var firstTouch = payload.first_touch || {};\n    var lastTouch = payload.last_touch || {};\n    var ft = firstTouch.params || {};\n    var lt = lastTouch.params || {};\n    var props = {};\n\n    if (ft.source) props['CAF First Touch Source'] = ft.source;\n    if (ft.medium) props['CAF First Touch Medium'] = ft.medium;\n    if (ft.campaign) props['CAF First Touch Campaign'] = ft.campaign;\n    if (ft.term) props['CAF First Touch Term'] = ft.term;\n    if (ft.content) props['CAF First Touch Content'] = ft.content;\n    if (firstTouch.referrer_host) props['CAF First Touch Referrer'] = firstTouch.referrer_host;\n    if (firstTouch.captured_at) props['CAF First Touch Date'] = firstTouch.captured_at;\n\n    if (lt.source) props['CAF Last Touch Source'] = lt.source;\n    if (lt.medium) props['CAF Last Touch Medium'] = lt.medium;\n    if (lt.campaign) props['CAF Last Touch Campaign'] = lt.campaign;\n    if (lt.term) props['CAF Last Touch Term'] = lt.term;\n    if (lt.content) props['CAF Last Touch Content'] = lt.content;\n    if (lastTouch.referrer_host) props['CAF Last Touch Referrer'] = lastTouch.referrer_host;\n    if (lastTouch.captured_at) props['CAF Last Touch Date'] = lastTouch.captured_at;\n\n    if (!Object.keys(props).length) return false;\n\n    var queue = null;\n    if (window.klaviyo && typeof window.klaviyo.push === 'function') {\n      queue = window.klaviyo;\n    } else if (window._learnq && typeof window._learnq.push === 'function') {\n      queue = window._learnq;\n    }\n    if (!queue) return false;\n\n    try {\n      queue.push(['identify', props]);\n      klaviyoUtmIdentifySent = true;\n      return true;\n    } catch (_error) {\n      // Ignore Klaviyo queue errors.\n      return false;\n    }\n  }\n\n  function scheduleKlaviyoUtmIdentify(payload) {\n    if (!payload) return;\n    if (pushKlaviyoUtmIdentify(payload)) return;\n\n    var retry = function () {\n      pushKlaviyoUtmIdentify(payload);\n    };\n\n    document.addEventListener('klaviyoOnsiteAdded', retry, { once: true });\n    window.setTimeout(retry, 1500);\n    window.setTimeout(retry, 5000);\n  }\n\n  function makeSignature(attributes) {\n    try {\n      return JSON.stringify({\n        attributes: attributes,\n        shopify_session: getShopifySessionToken()\n      });\n    } catch (error) {\n      return '';\n    }\n  }\n\n  function syncCartAttributes(attributes, options) {\n    if (!attributes || !Object.keys(attributes).length) return;\n    // Require an explicit page allow decision before writing attribution to the\n    // cart. A suppress-only decision still allows first-party attribution, but\n    // pending/block decisions do not write cart attributes.\n    if (!isPageAllowed()) return;\n\n    var signature = makeSignature(attributes);\n    if (!signature) return;\n\n    var shouldForce = Boolean(options && options.force);\n    var previousSignature = readStorage(CART_SYNC_KEY);\n    if (cartSyncPendingSignature === signature) return;\n    if (!shouldForce && previousSignature === signature) return;\n\n    var payload = new URLSearchParams();\n    var keys = Object.keys(attributes);\n    var currentNonEmptyKeys = getNonEmptyAttributeKeys(attributes);\n    var previousNonEmptySet = keySet(readCartNonEmptyKeys());\n    for (var i = 0; i < keys.length; i += 1) {\n      var key = keys[i];\n      var value = attributes[key];\n      if (value == null) continue;\n      if (String(value) === '' && !previousNonEmptySet[key]) continue;\n      payload.append('attributes[' + key + ']', String(value));\n    }\n\n    if (!payload.toString()) return;\n\n    cartSyncPendingSignature = signature;\n\n    fetch('/cart/update.js', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n        Accept: 'application/json'\n      },\n      credentials: 'same-origin',\n      body: payload.toString(),\n      keepalive: true\n    })\n      .then(function (response) {\n        if (!response.ok) throw new Error('Failed to sync cart attributes');\n        writeStorage(CART_SYNC_KEY, signature);\n        writeCartNonEmptyKeys(currentNonEmptyKeys);\n        if (cartSyncPendingSignature === signature) cartSyncPendingSignature = '';\n      })\n      .catch(function () {\n        if (cartSyncPendingSignature === signature) cartSyncPendingSignature = '';\n        // Ignore network failures; hidden-input fallback still applies on form submit.\n      });\n  }\n\n  function syncFreshCartAttributes(options) {\n    if (!isPageAllowed()) return;\n    syncCartAttributes(buildAttributes(), options);\n  }\n\n  function upsertHiddenInput(form, name, value) {\n    if (value == null) return;\n    var selector = 'input[name=\"' + name.replace(/\"/g, '\\\\\"') + '\"]';\n    var input = form.querySelector(selector);\n    if (!input) {\n      input = document.createElement('input');\n      input.type = 'hidden';\n      input.name = name;\n      form.appendChild(input);\n    }\n    input.value = value;\n  }\n\n  function injectAttributesIntoForm(form, attributes) {\n    if (!form || !attributes) return;\n    var keys = Object.keys(attributes);\n    var previousNonEmptySet = keySet(readCartNonEmptyKeys());\n    for (var i = 0; i < keys.length; i += 1) {\n      var key = keys[i];\n      var value = attributes[key];\n      if (value == null) continue;\n      if (String(value) === '' && !previousNonEmptySet[key]) continue;\n      upsertHiddenInput(form, 'attributes[' + key + ']', value);\n    }\n  }\n\n  function bindCartLifecycleSync() {\n    // Belt-and-suspenders re-sync at moments where an allowed session is about to\n    // commit / navigate. Each call is cheap because syncCartAttributes\n    // signature-dedups: when nothing changed it short-circuits before\n    // hitting the network. Where it does fire, it catches the cases the\n    // init+deferred path can miss:\n    //   - User adds to cart after Bot Blocker has allowed the session \u2192\n    //     caf:add_to_cart re-sync attaches fresh platform cookies.\n    //   - Tee Buy Now redirects to /checkout via the SDK without form\n    //     submit \u2192 teeinblue-event-after-cart-added capture-phase sync\n    //     ensures UTM is on the cart before the SDK navigates away.\n    //   - User closes tab / iOS Safari pagehide where beforeunload doesn't\n    //     fire \u2192 pagehide + keepalive fetch gives one last sync attempt.\n\n    // Bridge dispatches caf:add_to_cart after every successful /cart/add.js\n    // (XHR + fetch patcher). Re-sync to refresh platform cookies that may\n    // have been set by Meta Pixel / Google tag in the seconds since init.\n    document.addEventListener('caf:add_to_cart', function () {\n      syncFreshCartAttributes();\n    });\n\n    // TeeInBlue cart-added (regular path \u2192 mini-cart drawer, Buy Now path \u2192\n    // /checkout). Capture phase so we run before any bubble-phase Tee handler\n    // opens UI or lets the SDK navigate the page.\n    document.addEventListener(\n      'teeinblue-event-after-cart-added',\n      function () {\n        syncFreshCartAttributes({ force: true });\n      },\n      true\n    );\n\n    // Final attempt on tab close / navigation away. keepalive: true on the\n    // syncCartAttributes fetch lets the request complete after the page is\n    // gone. pagehide is more reliable than beforeunload on mobile Safari.\n    window.addEventListener('pagehide', function () {\n      syncFreshCartAttributes();\n    });\n  }\n\n  function bindBotBlockerConsentSync() {\n    function syncIfConsentChanged() {\n      var currentConsent = readBotBlockerConsent();\n      if (currentConsent === lastBotBlockerConsent) return;\n      lastBotBlockerConsent = currentConsent;\n      syncFreshCartAttributes({ force: true });\n    }\n\n    window.addEventListener('bot-blocker:decision', syncIfConsentChanged);\n    window.addEventListener('storage', function (event) {\n      if (!event || event.key !== BOT_BLOCKER_CONSENT_KEY) return;\n      syncIfConsentChanged();\n    });\n  }\n\n  function attachSubmitInjection() {\n    document.addEventListener(\n      'submit',\n      function (event) {\n        var form = event.target;\n        if (!form || !form.getAttribute) return;\n        if (!isPageAllowed()) return;\n        var action = form.getAttribute('action') || '';\n        if (action.indexOf('/cart') === -1 && action.indexOf('/checkout') === -1) return;\n        // Rebuild at submit time so platform cookies (_fbp set late by Meta\n        // Pixel, _ga, _gcl_au) reflect the freshest values right before\n        // checkout handoff.\n        var freshAttrs = buildAttributes();\n        injectAttributesIntoForm(form, freshAttrs);\n        if (form.querySelector('[data-cart-checkout-button], [name=\"checkout\"]')) {\n          syncCartAttributes(freshAttrs, { force: true });\n        }\n      },\n      true\n    );\n  }\n\n  function publishShopifyCustomerEvent(payload) {\n    if (!payload) return;\n    if (!window.Shopify || !window.Shopify.analytics || typeof window.Shopify.analytics.publish !== 'function') return;\n\n    try {\n      window.Shopify.analytics.publish('caf_attribution_ready', {\n        caf_attribution: payload\n      });\n    } catch (error) {\n      // Ignore analytics publish errors; cart attributes remain the checkout handoff.\n    }\n  }\n\n  function pushAttributionToDataLayer(payload) {\n    if (!payload) return;\n    window.cafAttribution = payload;\n    if (!isTrackingAllowed()) return;\n    if (window.dataLayer && Array.isArray(window.dataLayer)) {\n      window.dataLayer.push({\n        event: 'caf_attribution_ready',\n        caf_attribution: payload\n      });\n    }\n    publishShopifyCustomerEvent(payload);\n  }\n\n  var queryParams = parseQueryParams();\n  var storedPayload = readAttributionPayload();\n  var updatedPayload = updateAttributionFromUrl(storedPayload, queryParams);\n  if (updatedPayload) {\n    writeAttributionPayload(updatedPayload);\n  }\n\n  runWhenPageAllowed(function () {\n    syncFreshCartAttributes();\n  });\n\n  runWhenTrackingAllowed(function () {\n    pushAttributionToDataLayer(updatedPayload);\n    scheduleKlaviyoUtmIdentify(updatedPayload);\n  });\n\n  // Meta Pixel sets _fbp/_fbc and Google tag sets _ga/_gcl_au asynchronously\n  // \u2014 usually within the first 1\u20132s. Re-sync once the tags have had time to\n  // run so the cart carries the freshest browser identifiers. Signature\n  // dedup short-circuits the fetch when nothing new is captured.\n  window.setTimeout(function () {\n    syncFreshCartAttributes();\n  }, 3000);\n\n  attachSubmitInjection();\n  bindBotBlockerConsentSync();\n  bindCartLifecycleSync();\n})();\n"],
  "mappings": "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",
  "names": ["queryParams"]
}
