{
  "version": 3,
  "sources": ["/cdn/shop/t/31/assets/klaviyo-mobile-teaser-fix.js?kmtf=20260728-preview-button-clear"],
  "sourcesContent": ["(function () {\n  var RIGHT_PX = 20;\n  var GAP_PX = 12;\n  var MANAGED_ATTR = 'data-ss-klaviyo-teaser-position';\n  var teaserSelector = \"[class*='kl-teaser-']\";\n  var chatSelectors = ['.rp-micro-app-dummy-icon', '.rp-micro-app-dummy-icon-container', '.rp-micro-app-messenger'];\n  var targetSelector = teaserSelector + ', ' + chatSelectors.join(', ');\n  var teasers = [];\n  var chats = [];\n  var structureObserver = null;\n  var attributeObserver = null;\n  var resizeObserver = null;\n  var discoveryObserver = null;\n  var discoveryTimer = null;\n  var frame = null;\n  var correctionPass = 0;\n  var motionTargets = [];\n\n  function connected(node) { return !!(node && node.isConnected); }\n  function roundPx(value) { return Math.round(value * 100) / 100; }\n  function setImportant(node, property, value) {\n    if (node.style.getPropertyValue(property) === value && node.style.getPropertyPriority(property) === 'important') return false;\n    node.style.setProperty(property, value, 'important');\n    return true;\n  }\n  function isVisible(rect) {\n    return rect && rect.width >= 24 && rect.height >= 24 && rect.bottom > 0 && rect.right > 0 &&\n      rect.top < (window.innerHeight || document.documentElement.clientHeight || 0);\n  }\n  function forgetDisconnected() {\n    // Keep a connected, temporarily declassified/hidden widget in the cache so\n    // its local attribute observer can detect its reappearance.\n    teasers = teasers.filter(function (record) { return connected(record.node); });\n    chats = chats.filter(connected);\n  }\n  function remember(node) {\n    if (!node || node.nodeType !== 1 || !connected(node)) return false;\n    if (node.matches(teaserSelector)) {\n      if (teasers.some(function (record) { return record.node === node; })) return false;\n      teasers.push({ node: node, normalized: false, writtenStyle: null });\n      return true;\n    }\n    if (chatSelectors.some(function (selector) { return node.matches(selector); }) && chats.indexOf(node) === -1) {\n      chats.push(node);\n      return true;\n    }\n    return false;\n  }\n  function scan(node) {\n    var changed = remember(node);\n    if (node && node.querySelectorAll) {\n      Array.prototype.forEach.call(node.querySelectorAll(targetSelector), function (target) { changed = remember(target) || changed; });\n    }\n    return changed;\n  }\n\n  function stopDiscovery() {\n    if (discoveryObserver) discoveryObserver.disconnect();\n    if (discoveryTimer !== null) window.clearTimeout(discoveryTimer);\n    discoveryObserver = null;\n    discoveryTimer = null;\n  }\n  function schedule() {\n    correctionPass = 0;\n    teasers.forEach(function (record) { record.previousMeasurement = null; });\n    queueFrame();\n  }\n  function queueFrame() {\n    if (frame !== null || !teasers.length) return;\n    frame = window.requestAnimationFrame(function () { frame = null; apply(); });\n  }\n  function ownStyleMutation(change) {\n    if (change.attributeName !== 'style') return false;\n    return teasers.some(function (record) {\n      return record.node === change.target && record.writtenStyle !== null &&\n        record.writtenStyle === record.node.getAttribute('style');\n    });\n  }\n  function motionFinished(event) {\n    if (motionTargets.indexOf(event.target) !== -1) schedule();\n  }\n  function clearMotionWatchers() {\n    motionTargets.forEach(function (node) {\n      node.removeEventListener('transitionend', motionFinished, true);\n      node.removeEventListener('animationend', motionFinished, true);\n    });\n    motionTargets = [];\n  }\n  function updateWatchers() {\n    clearMotionWatchers();\n    if (structureObserver) structureObserver.disconnect();\n    if (attributeObserver) attributeObserver.disconnect();\n    if (resizeObserver) resizeObserver.disconnect();\n    structureObserver = new MutationObserver(function (changes) {\n      var changed = false;\n      changes.forEach(function (change) {\n        Array.prototype.forEach.call(change.addedNodes, function (node) { changed = scan(node) || changed; });\n        changed = changed || Array.prototype.some.call(change.removedNodes, function (removed) {\n          return teasers.map(function (record) { return record.node; }).concat(chats).some(function (node) {\n            return removed === node || (removed.contains && removed.contains(node));\n          });\n        });\n      });\n      if (!changed) return;\n      forgetDisconnected();\n      updateWatchers();\n      if (teasers.length && chats.length) stopDiscovery();\n      else startDiscovery(false);\n      schedule();\n    });\n    attributeObserver = new MutationObserver(function (changes) {\n      if (!changes.some(function (change) { return !ownStyleMutation(change); })) return;\n      forgetDisconnected();\n      schedule();\n    });\n    resizeObserver = window.ResizeObserver ? new ResizeObserver(schedule) : null;\n    var ancestors = [];\n    teasers.map(function (record) { return record.node; }).concat(chats).forEach(function (target) {\n      var node = target;\n      while (node && node !== document.documentElement) {\n        if (ancestors.indexOf(node) === -1) {\n          ancestors.push(node);\n          // Direct child changes catch widget/container replacement, including\n          // a portal attached directly to body, without observing all descendants.\n          structureObserver.observe(node, { childList: true });\n          if (node !== document.body) {\n            attributeObserver.observe(node, { attributes: true, attributeFilter: ['class', 'style', 'hidden'] });\n            if (resizeObserver) resizeObserver.observe(node);\n            // A class/style mutation can precede the final animated position.\n            // Listen only on the cached widgets and their scoped ancestors.\n            motionTargets.push(node);\n            node.addEventListener('transitionend', motionFinished, true);\n            node.addEventListener('animationend', motionFinished, true);\n          }\n        }\n        node = node.parentElement;\n      }\n    });\n  }\n\n  function startDiscovery(initialScan) {\n    if (initialScan) {\n      forgetDisconnected();\n      scan(document.body);\n      updateWatchers();\n      schedule();\n    }\n    if (teasers.length && chats.length) { stopDiscovery(); return; }\n    if (discoveryObserver) return;\n    // Only startup/recovery discovery is broad, and it is time bounded. Once\n    // both widgets exist their own ancestors handle hidden/reappearing states.\n    discoveryObserver = new MutationObserver(function (changes) {\n      var changed = false;\n      changes.forEach(function (change) {\n        if (change.type === 'attributes') changed = remember(change.target) || changed;\n        else Array.prototype.forEach.call(change.addedNodes, function (node) { changed = scan(node) || changed; });\n      });\n      if (!changed) return;\n      updateWatchers();\n      if (teasers.length && chats.length) stopDiscovery();\n      schedule();\n    });\n    discoveryObserver.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['class'] });\n    discoveryTimer = window.setTimeout(stopDiscovery, 90000);\n  }\n\n  function apply() {\n    forgetDisconnected();\n    if (!teasers.length) return;\n    var viewportWidth = window.innerWidth || document.documentElement.clientWidth || 0;\n    var viewportHeight = window.innerHeight || document.documentElement.clientHeight || 0;\n    var chatRects = chats.map(function (node) {\n      return { node: node, rect: node.getBoundingClientRect() };\n    });\n    var chatRect = null;\n    chatSelectors.some(function (selector) {\n      return chatRects.some(function (item) {\n        if (item.node.matches(selector) && !item.node.classList.contains('rp-micro-app-hide') && isVisible(item.rect)) {\n          chatRect = item.rect;\n          return true;\n        }\n        return false;\n      });\n    });\n    var desiredBottom = chatRect ? Math.max(20, Math.round(viewportHeight - chatRect.top + GAP_PX)) : 92;\n    // One read phase for every teaser. Never read a rect after writing styles\n    // in this frame; transformed visual offsets are corrected next frame.\n    var measured = teasers.map(function (record) {\n      var node = record.node;\n      var rect = node.getBoundingClientRect();\n      return { record: record, rect: rect, position: window.getComputedStyle(node).position,\n        right: parseFloat(node.style.getPropertyValue('right')) || 0,\n        bottom: parseFloat(node.style.getPropertyValue('bottom')) || 0 };\n    });\n    var needsCorrection = false;\n    measured.forEach(function (item) {\n      var record = item.record;\n      var node = record.node;\n      var rect = item.rect;\n      if (!node.matches(teaserSelector) || !isVisible(rect) || item.position !== 'fixed' || rect.width > Math.min(340, viewportWidth * 0.85) ||\n        rect.height > Math.min(270, viewportHeight * 0.5)) return;\n      var normalize = !record.normalized || node.style.getPropertyValue('left') !== 'auto' ||\n        node.style.getPropertyValue('top') !== 'auto' || node.style.getPropertyPriority('left') !== 'important' ||\n        node.style.getPropertyPriority('top') !== 'important';\n      if (normalize) {\n        setImportant(node, 'left', 'auto');\n        setImportant(node, 'top', 'auto');\n        setImportant(node, 'right', RIGHT_PX + 'px');\n        setImportant(node, 'bottom', desiredBottom + 'px');\n        if (node.getAttribute(MANAGED_ATTR) !== 'true') node.setAttribute(MANAGED_ATTR, 'true');\n        record.normalized = true;\n        record.previousMeasurement = null;\n        needsCorrection = true;\n      } else {\n        var rightDelta = RIGHT_PX - (viewportWidth - rect.right);\n        var bottomDelta = desiredBottom - (viewportHeight - rect.bottom);\n        // Fixed widgets can also sit inside a scaled ancestor. Infer the local\n        // CSS-to-visual ratio from our preceding correction, instead of needing\n        // an unbounded sequence of one-pixel-assumption corrections.\n        var previous = record.previousMeasurement;\n        function ratio(cssValue, visualValue, oldCss, oldVisual) {\n          if (!previous || Math.abs(cssValue - oldCss) < 0.1) return 1;\n          var scale = (visualValue - oldVisual) / (cssValue - oldCss);\n          return isFinite(scale) && scale > 0.05 && scale < 20 ? scale : 1;\n        }\n        var rightScale = ratio(item.right, viewportWidth - rect.right, previous && previous.right, previous && previous.visualRight);\n        var bottomScale = ratio(item.bottom, viewportHeight - rect.bottom, previous && previous.bottom, previous && previous.visualBottom);\n        record.previousMeasurement = { right: item.right, bottom: item.bottom,\n          visualRight: viewportWidth - rect.right, visualBottom: viewportHeight - rect.bottom };\n        if (Math.abs(rightDelta) > 0.1) needsCorrection = setImportant(node, 'right', roundPx(item.right + rightDelta / rightScale) + 'px') || needsCorrection;\n        if (Math.abs(bottomDelta) > 0.1) needsCorrection = setImportant(node, 'bottom', roundPx(item.bottom + bottomDelta / bottomScale) + 'px') || needsCorrection;\n      }\n      record.writtenStyle = node.getAttribute('style');\n    });\n    // At most a few visual corrections per outside event. Own style mutation\n    // records are ignored, so a transformed widget cannot create an idle loop.\n    if (needsCorrection && correctionPass < 3) { correctionPass += 1; queueFrame(); }\n  }\n\n  function stop() {\n    stopDiscovery();\n    clearMotionWatchers();\n    if (structureObserver) structureObserver.disconnect();\n    if (attributeObserver) attributeObserver.disconnect();\n    if (resizeObserver) resizeObserver.disconnect();\n    if (frame !== null) window.cancelAnimationFrame(frame);\n    frame = null;\n  }\n  function boot() {\n    window.addEventListener('resize', schedule, { passive: true });\n    window.addEventListener('orientationchange', schedule, { passive: true });\n    window.addEventListener('pagehide', stop);\n    window.addEventListener('pageshow', function () { startDiscovery(true); });\n    document.addEventListener('visibilitychange', function () { if (!document.hidden) startDiscovery(true); });\n    // A widget intentionally loaded after interaction gets a fresh bounded\n    // discovery window even if its initial 90-second startup window expired.\n    document.addEventListener('pointerdown', function () {\n      if (!teasers.length || !chats.length) startDiscovery(!discoveryObserver);\n    }, { passive: true });\n    startDiscovery(true);\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot, { once: true });\n  else boot();\n})();\n"],
  "mappings": "CAAC,UAAY,CACX,IAAI,SAAW,GACX,OAAS,GACT,aAAe,kCACf,eAAiB,wBACjB,cAAgB,CAAC,2BAA4B,qCAAsC,yBAAyB,EAC5G,eAAiB,eAAiB,KAAO,cAAc,KAAK,IAAI,EAChE,QAAU,CAAC,EACX,MAAQ,CAAC,EACT,kBAAoB,KACpB,kBAAoB,KACpB,eAAiB,KACjB,kBAAoB,KACpB,eAAiB,KACjB,MAAQ,KACR,eAAiB,EACjB,cAAgB,CAAC,EAErB,SAAS,UAAU,KAAM,CAAE,MAAO,CAAC,EAAE,MAAQ,KAAK,YAAc,CAChE,SAAS,QAAQ,MAAO,CAAE,OAAO,KAAK,MAAM,MAAQ,GAAG,EAAI,GAAK,CAChE,SAAS,aAAa,KAAM,SAAU,MAAO,CAC3C,OAAI,KAAK,MAAM,iBAAiB,QAAQ,IAAM,OAAS,KAAK,MAAM,oBAAoB,QAAQ,IAAM,YAAoB,IACxH,KAAK,MAAM,YAAY,SAAU,MAAO,WAAW,EAC5C,GACT,CACA,SAAS,UAAU,KAAM,CACvB,OAAO,MAAQ,KAAK,OAAS,IAAM,KAAK,QAAU,IAAM,KAAK,OAAS,GAAK,KAAK,MAAQ,GACtF,KAAK,KAAO,OAAO,aAAe,SAAS,gBAAgB,cAAgB,EAC/E,CACA,SAAS,oBAAqB,CAG5B,QAAU,QAAQ,OAAO,SAAU,OAAQ,CAAE,OAAO,UAAU,OAAO,IAAI,CAAG,CAAC,EAC7E,MAAQ,MAAM,OAAO,SAAS,CAChC,CACA,SAAS,SAAS,KAAM,CACtB,MAAI,CAAC,MAAQ,KAAK,WAAa,GAAK,CAAC,UAAU,IAAI,EAAU,GACzD,KAAK,QAAQ,cAAc,EACzB,QAAQ,KAAK,SAAU,OAAQ,CAAE,OAAO,OAAO,OAAS,IAAM,CAAC,EAAU,IAC7E,QAAQ,KAAK,CAAE,KAAM,KAAM,WAAY,GAAO,aAAc,IAAK,CAAC,EAC3D,IAEL,cAAc,KAAK,SAAU,SAAU,CAAE,OAAO,KAAK,QAAQ,QAAQ,CAAG,CAAC,GAAK,MAAM,QAAQ,IAAI,IAAM,IACxG,MAAM,KAAK,IAAI,EACR,IAEF,EACT,CACA,SAAS,KAAK,KAAM,CAClB,IAAI,QAAU,SAAS,IAAI,EAC3B,OAAI,MAAQ,KAAK,kBACf,MAAM,UAAU,QAAQ,KAAK,KAAK,iBAAiB,cAAc,EAAG,SAAU,OAAQ,CAAE,QAAU,SAAS,MAAM,GAAK,OAAS,CAAC,EAE3H,OACT,CAEA,SAAS,eAAgB,CACnB,mBAAmB,kBAAkB,WAAW,EAChD,iBAAmB,MAAM,OAAO,aAAa,cAAc,EAC/D,kBAAoB,KACpB,eAAiB,IACnB,CACA,SAAS,UAAW,CAClB,eAAiB,EACjB,QAAQ,QAAQ,SAAU,OAAQ,CAAE,OAAO,oBAAsB,IAAM,CAAC,EACxE,WAAW,CACb,CACA,SAAS,YAAa,CAChB,QAAU,MAAQ,CAAC,QAAQ,SAC/B,MAAQ,OAAO,sBAAsB,UAAY,CAAE,MAAQ,KAAM,MAAM,CAAG,CAAC,EAC7E,CACA,SAAS,iBAAiB,OAAQ,CAChC,OAAI,OAAO,gBAAkB,QAAgB,GACtC,QAAQ,KAAK,SAAU,OAAQ,CACpC,OAAO,OAAO,OAAS,OAAO,QAAU,OAAO,eAAiB,MAC9D,OAAO,eAAiB,OAAO,KAAK,aAAa,OAAO,CAC5D,CAAC,CACH,CACA,SAAS,eAAe,MAAO,CACzB,cAAc,QAAQ,MAAM,MAAM,IAAM,IAAI,SAAS,CAC3D,CACA,SAAS,qBAAsB,CAC7B,cAAc,QAAQ,SAAU,KAAM,CACpC,KAAK,oBAAoB,gBAAiB,eAAgB,EAAI,EAC9D,KAAK,oBAAoB,eAAgB,eAAgB,EAAI,CAC/D,CAAC,EACD,cAAgB,CAAC,CACnB,CACA,SAAS,gBAAiB,CACxB,oBAAoB,EAChB,mBAAmB,kBAAkB,WAAW,EAChD,mBAAmB,kBAAkB,WAAW,EAChD,gBAAgB,eAAe,WAAW,EAC9C,kBAAoB,IAAI,iBAAiB,SAAU,QAAS,CAC1D,IAAI,QAAU,GACd,QAAQ,QAAQ,SAAU,OAAQ,CAChC,MAAM,UAAU,QAAQ,KAAK,OAAO,WAAY,SAAU,KAAM,CAAE,QAAU,KAAK,IAAI,GAAK,OAAS,CAAC,EACpG,QAAU,SAAW,MAAM,UAAU,KAAK,KAAK,OAAO,aAAc,SAAU,QAAS,CACrF,OAAO,QAAQ,IAAI,SAAU,OAAQ,CAAE,OAAO,OAAO,IAAM,CAAC,EAAE,OAAO,KAAK,EAAE,KAAK,SAAU,KAAM,CAC/F,OAAO,UAAY,MAAS,QAAQ,UAAY,QAAQ,SAAS,IAAI,CACvE,CAAC,CACH,CAAC,CACH,CAAC,EACI,UACL,mBAAmB,EACnB,eAAe,EACX,QAAQ,QAAU,MAAM,OAAQ,cAAc,EAC7C,eAAe,EAAK,EACzB,SAAS,EACX,CAAC,EACD,kBAAoB,IAAI,iBAAiB,SAAU,QAAS,CACrD,QAAQ,KAAK,SAAU,OAAQ,CAAE,MAAO,CAAC,iBAAiB,MAAM,CAAG,CAAC,IACzE,mBAAmB,EACnB,SAAS,EACX,CAAC,EACD,eAAiB,OAAO,eAAiB,IAAI,eAAe,QAAQ,EAAI,KACxE,IAAI,UAAY,CAAC,EACjB,QAAQ,IAAI,SAAU,OAAQ,CAAE,OAAO,OAAO,IAAM,CAAC,EAAE,OAAO,KAAK,EAAE,QAAQ,SAAU,OAAQ,CAE7F,QADI,KAAO,OACJ,MAAQ,OAAS,SAAS,iBAC3B,UAAU,QAAQ,IAAI,IAAM,KAC9B,UAAU,KAAK,IAAI,EAGnB,kBAAkB,QAAQ,KAAM,CAAE,UAAW,EAAK,CAAC,EAC/C,OAAS,SAAS,OACpB,kBAAkB,QAAQ,KAAM,CAAE,WAAY,GAAM,gBAAiB,CAAC,QAAS,QAAS,QAAQ,CAAE,CAAC,EAC/F,gBAAgB,eAAe,QAAQ,IAAI,EAG/C,cAAc,KAAK,IAAI,EACvB,KAAK,iBAAiB,gBAAiB,eAAgB,EAAI,EAC3D,KAAK,iBAAiB,eAAgB,eAAgB,EAAI,IAG9D,KAAO,KAAK,aAEhB,CAAC,CACH,CAEA,SAAS,eAAe,YAAa,CAOnC,GANI,cACF,mBAAmB,EACnB,KAAK,SAAS,IAAI,EAClB,eAAe,EACf,SAAS,GAEP,QAAQ,QAAU,MAAM,OAAQ,CAAE,cAAc,EAAG,MAAQ,CAC3D,oBAGJ,kBAAoB,IAAI,iBAAiB,SAAU,QAAS,CAC1D,IAAI,QAAU,GACd,QAAQ,QAAQ,SAAU,OAAQ,CAC5B,OAAO,OAAS,aAAc,QAAU,SAAS,OAAO,MAAM,GAAK,QAClE,MAAM,UAAU,QAAQ,KAAK,OAAO,WAAY,SAAU,KAAM,CAAE,QAAU,KAAK,IAAI,GAAK,OAAS,CAAC,CAC3G,CAAC,EACI,UACL,eAAe,EACX,QAAQ,QAAU,MAAM,QAAQ,cAAc,EAClD,SAAS,EACX,CAAC,EACD,kBAAkB,QAAQ,SAAS,KAAM,CAAE,UAAW,GAAM,QAAS,GAAM,WAAY,GAAM,gBAAiB,CAAC,OAAO,CAAE,CAAC,EACzH,eAAiB,OAAO,WAAW,cAAe,GAAK,EACzD,CAEA,SAAS,OAAQ,CAEf,GADA,mBAAmB,EACf,EAAC,QAAQ,OACb,KAAI,cAAgB,OAAO,YAAc,SAAS,gBAAgB,aAAe,EAC7E,eAAiB,OAAO,aAAe,SAAS,gBAAgB,cAAgB,EAChF,UAAY,MAAM,IAAI,SAAU,KAAM,CACxC,MAAO,CAAE,KAAM,KAAM,KAAM,KAAK,sBAAsB,CAAE,CAC1D,CAAC,EACG,SAAW,KACf,cAAc,KAAK,SAAU,SAAU,CACrC,OAAO,UAAU,KAAK,SAAU,KAAM,CACpC,OAAI,KAAK,KAAK,QAAQ,QAAQ,GAAK,CAAC,KAAK,KAAK,UAAU,SAAS,mBAAmB,GAAK,UAAU,KAAK,IAAI,GAC1G,SAAW,KAAK,KACT,IAEF,EACT,CAAC,CACH,CAAC,EACD,IAAI,cAAgB,SAAW,KAAK,IAAI,GAAI,KAAK,MAAM,eAAiB,SAAS,IAAM,MAAM,CAAC,EAAI,GAG9F,SAAW,QAAQ,IAAI,SAAU,OAAQ,CAC3C,IAAI,KAAO,OAAO,KACd,KAAO,KAAK,sBAAsB,EACtC,MAAO,CAAE,OAAQ,OAAQ,KAAM,KAAM,SAAU,OAAO,iBAAiB,IAAI,EAAE,SAC3E,MAAO,WAAW,KAAK,MAAM,iBAAiB,OAAO,CAAC,GAAK,EAC3D,OAAQ,WAAW,KAAK,MAAM,iBAAiB,QAAQ,CAAC,GAAK,CAAE,CACnE,CAAC,EACG,gBAAkB,GACtB,SAAS,QAAQ,SAAU,KAAM,CAC/B,IAAI,OAAS,KAAK,OACd,KAAO,OAAO,KACd,KAAO,KAAK,KAChB,GAAI,GAAC,KAAK,QAAQ,cAAc,GAAK,CAAC,UAAU,IAAI,GAAK,KAAK,WAAa,SAAW,KAAK,MAAQ,KAAK,IAAI,IAAK,cAAgB,GAAI,GACnI,KAAK,OAAS,KAAK,IAAI,IAAK,eAAiB,EAAG,GAClD,KAAI,UAAY,CAAC,OAAO,YAAc,KAAK,MAAM,iBAAiB,MAAM,IAAM,QAC5E,KAAK,MAAM,iBAAiB,KAAK,IAAM,QAAU,KAAK,MAAM,oBAAoB,MAAM,IAAM,aAC5F,KAAK,MAAM,oBAAoB,KAAK,IAAM,YAC5C,GAAI,UACF,aAAa,KAAM,OAAQ,MAAM,EACjC,aAAa,KAAM,MAAO,MAAM,EAChC,aAAa,KAAM,QAAS,SAAW,IAAI,EAC3C,aAAa,KAAM,SAAU,cAAgB,IAAI,EAC7C,KAAK,aAAa,YAAY,IAAM,QAAQ,KAAK,aAAa,aAAc,MAAM,EACtF,OAAO,WAAa,GACpB,OAAO,oBAAsB,KAC7B,gBAAkB,OACb,CAOL,IAASA,OAAT,SAAe,SAAU,YAAa,OAAQ,UAAW,CACvD,GAAI,CAAC,UAAY,KAAK,IAAI,SAAW,MAAM,EAAI,GAAK,MAAO,GAC3D,IAAI,OAAS,YAAc,YAAc,SAAW,QACpD,OAAO,SAAS,KAAK,GAAK,MAAQ,KAAQ,MAAQ,GAAK,MAAQ,CACjE,EAJS,MAAAA,OANL,WAAa,UAAY,cAAgB,KAAK,OAC9C,YAAc,eAAiB,eAAiB,KAAK,QAIrD,SAAW,OAAO,oBAMlB,WAAaA,OAAM,KAAK,MAAO,cAAgB,KAAK,MAAO,UAAY,SAAS,MAAO,UAAY,SAAS,WAAW,EACvH,YAAcA,OAAM,KAAK,OAAQ,eAAiB,KAAK,OAAQ,UAAY,SAAS,OAAQ,UAAY,SAAS,YAAY,EACjI,OAAO,oBAAsB,CAAE,MAAO,KAAK,MAAO,OAAQ,KAAK,OAC7D,YAAa,cAAgB,KAAK,MAAO,aAAc,eAAiB,KAAK,MAAO,EAClF,KAAK,IAAI,UAAU,EAAI,KAAK,gBAAkB,aAAa,KAAM,QAAS,QAAQ,KAAK,MAAQ,WAAa,UAAU,EAAI,IAAI,GAAK,iBACnI,KAAK,IAAI,WAAW,EAAI,KAAK,gBAAkB,aAAa,KAAM,SAAU,QAAQ,KAAK,OAAS,YAAc,WAAW,EAAI,IAAI,GAAK,gBAC9I,CACA,OAAO,aAAe,KAAK,aAAa,OAAO,EACjD,CAAC,EAGG,iBAAmB,eAAiB,IAAK,gBAAkB,EAAG,WAAW,GAC/E,CAEA,SAAS,MAAO,CACd,cAAc,EACd,oBAAoB,EAChB,mBAAmB,kBAAkB,WAAW,EAChD,mBAAmB,kBAAkB,WAAW,EAChD,gBAAgB,eAAe,WAAW,EAC1C,QAAU,MAAM,OAAO,qBAAqB,KAAK,EACrD,MAAQ,IACV,CACA,SAAS,MAAO,CACd,OAAO,iBAAiB,SAAU,SAAU,CAAE,QAAS,EAAK,CAAC,EAC7D,OAAO,iBAAiB,oBAAqB,SAAU,CAAE,QAAS,EAAK,CAAC,EACxE,OAAO,iBAAiB,WAAY,IAAI,EACxC,OAAO,iBAAiB,WAAY,UAAY,CAAE,eAAe,EAAI,CAAG,CAAC,EACzE,SAAS,iBAAiB,mBAAoB,UAAY,CAAO,SAAS,QAAQ,eAAe,EAAI,CAAG,CAAC,EAGzG,SAAS,iBAAiB,cAAe,UAAY,EAC/C,CAAC,QAAQ,QAAU,CAAC,MAAM,SAAQ,eAAe,CAAC,iBAAiB,CACzE,EAAG,CAAE,QAAS,EAAK,CAAC,EACpB,eAAe,EAAI,CACrB,CACI,SAAS,aAAe,UAAW,SAAS,iBAAiB,mBAAoB,KAAM,CAAE,KAAM,EAAK,CAAC,EACpG,KAAK,CACZ,GAAG",
  "names": ["ratio"]
}
