{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/tb-m-pcard.js?x=1794560346834"],
  "sourcesContent": ["/* Toybox phone product card viewer (up to 749px): tiles open as a card, swipe sideways for the list, scroll for\n   full screen, pull down from the top or tap the chevron to close. Cards: sections/tb-pcard. Styles: tb-m-pcard.css.\n   Smoothness pass (2026-11-12; original in assets/bak-20261112-tb-m-pcard.js):\n   - the tile's own photo shows in the card straight away, so opening is a zoom of the photo, not a grey box,\n     and the real card swaps in once its first photo is decoded (no white flash);\n   - the cards either side follow the finger while swiping (position, size and shade worked out every frame from\n     the scroll position), instead of jumping into place after the swipe stops;\n   - the open animation only moves and fades (no corner-radius repaint) with a softer, app-like ease;\n   - the neighbouring cards are prepared when the phone is idle and never mid-swipe; the cards two away are fetched;\n   - closing on the product that was opened shrinks it back into its tile. */\n(() => {\n  if (window.TbPv) return;\n  const phone = window.matchMedia('(max-width: 749px)');\n  const reduce = () => window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  const idle = window.requestIdleCallback ? (f) => window.requestIdleCallback(f, { timeout: 700 }) : (f) => setTimeout(f, 120);\n  const wait = (ms) => new Promise((r) => setTimeout(r, ms));\n  const EASE_OUT = 'cubic-bezier(.16,1,.3,1)';\n  const cache = new Map();\n  let st = null;\n\n  let assetsReady = null;\n  const loadAssets = () => {\n    if (assetsReady) return assetsReady;\n    const me = document.querySelector('script[src*=\"tb-m-pcard.js\"]');\n    const base = me ? me.src.split('tb-m-pcard.js')[0] : '/assets/';\n    const urls = window.TbAssetUrls || {};\n    const jobs = [];\n    ['tb-product.css', 'tb-m-pdp.css'].forEach((n) => {\n      if (document.querySelector('link[href*=\"/' + n + '\"]')) return;\n      const l = document.createElement('link');\n      l.rel = 'stylesheet';\n      l.href = urls[n] || base + n;\n      jobs.push(new Promise((ok) => { l.onload = ok; l.onerror = ok; }));\n      document.head.appendChild(l);\n    });\n    ['tb-product.js', 'tb-m-pdp.js'].forEach((n) => {\n      if (document.querySelector('script[src*=\"/' + n + '\"]')) return;\n      const sc = document.createElement('script');\n      sc.src = urls[n] || base + n;\n      jobs.push(new Promise((ok) => { sc.onload = ok; sc.onerror = ok; }));\n      document.head.appendChild(sc);\n    });\n    assetsReady = Promise.all(jobs);\n    return assetsReady;\n  };\n\n  const cardUrl = (url) => {\n    const u = new URL(url, location.href);\n    const path = u.pathname.replace(/^.*(\\/products\\/[^/?#]+).*$/, '$1');\n    return location.origin + path + '?section_id=tb-pcard';\n  };\n  const fetchCard = (url) => {\n    const key = cardUrl(url);\n    if (!cache.has(key)) {\n      const p = fetch(key, { credentials: 'same-origin' }).then((r) => { if (!r.ok) throw new Error(r.status); return r.text(); });\n      p.catch(() => cache.delete(key));\n      cache.set(key, p);\n    }\n    return cache.get(key);\n  };\n\n  const esc = (s) => String(s || '').replace(/[&<>\"]/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]));\n  // Placeholder: the tile's photo (already downloaded) where the gallery photo will be, and shimmer lines below.\n  const SKEL = (img) => '<div class=\"tb-pv__skel\" aria-hidden=\"true\">' +\n    (img ? '<span class=\"tb-pv__skel-photo has-img\"><img src=\"' + esc(img) + '\" alt=\"\" decoding=\"async\"></span>' : '<span class=\"tb-pv__skel-photo\"></span>') +\n    '<span></span><span></span><span class=\"is-short\"></span></div>';\n  const svg = (w, sw, d) => '<svg width=\"' + w + '\" height=\"' + w + '\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"' + sw + '\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">' + d + '</svg>';\n  const ICON_DOWN = svg(20, 2.6, '<path d=\"M6 9l6 6 6-6\"/>');\n  const ICON_SHARE = svg(19, 2, '<path d=\"M12 3v12M7 8l5-5 5 5\"/><path d=\"M5 13v6a2 2 0 002 2h10a2 2 0 002-2v-6\"/>');\n  const SLIDE = (it) => '<div class=\"tb-pv__slide\"><div class=\"tb-pv__card\" tabindex=\"-1\" aria-label=\"' + esc(it.title) + '\"><div class=\"tb-pv__scroll\">' +\n    '<div class=\"tb-pv__top\"><div class=\"tb-pv__topin\">' +\n    '<button type=\"button\" class=\"tb-pv__btn\" data-pv-close aria-label=\"Close product\">' + ICON_DOWN + '</button>' +\n    '<span class=\"tb-pv__name\">' + esc(it.title) + '</span>' +\n    '<button type=\"button\" class=\"tb-pv__btn\" data-pv-share aria-label=\"Share\">' + ICON_SHARE + '</button>' +\n    '</div></div><div class=\"tb-pv__body\">' + SKEL(it.img) + '</div></div></div></div>';\n  const wire = (s) => {\n    const card = s.querySelector('.tb-pv__card');\n    const sc = s.querySelector('.tb-pv__scroll');\n    sc.addEventListener('scroll', () => {\n      if (!st) return;\n      const full = st.root.classList.contains('is-full');\n      if (!full && sc.scrollTop > 40) setFull(true);\n      else if (full && sc.scrollTop <= 0) setFull(false);\n    }, { passive: true });\n    dragToClose(card, sc);\n  };\n\n  /* ---------- Cards either side follow the finger ---------- */\n  // Card mode: every card is drawn at 94%; the ones either side are pulled in so a sliver peeks past the edge,\n  // and shaded slightly. Both are worked out from the live scroll position, so nothing jumps when a swipe ends.\n  const paint = () => {\n    if (!st) return;\n    st.raf = 0;\n    if (st.root.classList.contains('is-full')) return;\n    const W = st.track.clientWidth || window.innerWidth;\n    const peek = W * 0.06 - 8;\n    const x = st.track.scrollLeft;\n    const near = Math.round(x / W);\n    for (let k = Math.max(0, near - 2); k <= Math.min(st.slides.length - 1, near + 2); k++) {\n      const s = st.slides[k];\n      const p = Math.max(-1.5, Math.min(1.5, (s.offsetLeft - x) / W));\n      const c = s.firstElementChild;\n      c.style.transform = 'translateX(' + (-p * peek).toFixed(2) + 'px) scale(.94)';\n      c.style.opacity = String(1 - Math.min(1, Math.abs(p)) * 0.15);\n    }\n  };\n  const schedulePaint = () => { if (st && !st.raf) st.raf = requestAnimationFrame(paint); };\n  const clearPaint = () => { if (st) st.slides.forEach((s) => { s.firstElementChild.style.transform = ''; s.firstElementChild.style.opacity = ''; }); };\n  const setFull = (on) => {\n    if (!st) return;\n    st.root.classList.toggle('is-full', on);\n    if (on) clearPaint(); else paint();\n  };\n\n  /* ---------- Loading cards ---------- */\n  const load = async (i) => {\n    if (!st || i < 0 || i >= st.items.length || st.loaded.has(i)) return;\n    st.loaded.add(i);\n    const slide = st.slides[i];\n    const body = slide.querySelector('.tb-pv__body');\n    try {\n      const [html] = await Promise.all([fetchCard(st.items[i].url), loadAssets()]);\n      const doc = new DOMParser().parseFromString(html, 'text/html');\n      const found = doc.querySelector('[data-pcard-body]');\n      if (!found || !st || st.slides[i] !== slide) throw new Error('no card');\n      await st.opened;\n      // Never swap content in under a moving finger: wait for the swipe to settle.\n      while (st && st.moving) await wait(80);\n      if (!st || st.slides[i] !== slide) return;\n      const card = document.adoptNode(found);\n      // Let the first gallery photo decode before the swap, so the placeholder photo hands over without a flash.\n      const first = card.querySelector('.tb-gal img, img');\n      if (first) {\n        first.loading = 'eager';\n        try { first.fetchPriority = 'high'; } catch (e) {}\n        if (first.decode) await Promise.race([first.decode().catch(() => {}), wait(i === st.idx ? 350 : 900)]);\n      }\n      if (!st || st.slides[i] !== slide) return;\n      while (st && st.moving) await wait(80);\n      if (!st) return;\n      card.classList.add('tb-pv__in');\n      body.replaceChildren(card);\n      const t = card.dataset.title;\n      if (t) { st.items[i].title = t; slide.querySelector('.tb-pv__name').textContent = t; slide.querySelector('.tb-pv__card').setAttribute('aria-label', t); }\n      window.TbPdp?.init(card);\n      const bar = card.querySelector('.tb-pbar');\n      if (bar) slide.querySelector('.tb-pv__card').appendChild(bar);\n      document.dispatchEvent(new CustomEvent('tb:cards-added'));\n    } catch (err) {\n      st?.loaded.delete(i);\n      if (st && st.slides[i] === slide) body.innerHTML = '<div class=\"tb-pv__err\"><p>Couldn\u2019t load this toy.</p><a href=\"' + esc(st?.items[i]?.url) + '\">Open the product page</a></div>';\n    }\n  };\n  // The current card loads right away; the ones either side when the phone is idle; two away are only fetched.\n  const loadAround = (i) => {\n    load(i);\n    idle(() => { if (st && st.idx === i) { load(i + 1); load(i - 1); } });\n    [i + 2, i - 2].forEach((k) => { if (st && st.items[k]) fetchCard(st.items[k].url).catch(() => {}); });\n  };\n\n  const centreIndex = () => {\n    const mid = st.track.scrollLeft + st.track.clientWidth / 2;\n    let best = 0;\n    let dist = Infinity;\n    st.slides.forEach((s, k) => { const d = Math.abs(s.offsetLeft + s.offsetWidth / 2 - mid); if (d < dist) { dist = d; best = k; } });\n    return best;\n  };\n\n  const setCurrent = (i) => {\n    if (!st) return;\n    const moved = st.idx !== i;\n    st.idx = i;\n    st.slides.forEach((s, k) => {\n      s.toggleAttribute('inert', k !== i);\n      s.classList.toggle('is-prev', k === i - 1);\n      s.classList.toggle('is-next', k === i + 1);\n    });\n    if (moved) { st.root.classList.remove('is-full'); st.slides[i].querySelector('.tb-pv__scroll').scrollTop = 0; }\n    paint();\n    loadAround(i);\n    const url = st.items[i].url;\n    try { history.replaceState(Object.assign({}, history.state, { tbPv: 1 }), '', url); } catch (e) {}\n  };\n\n  const open = (items, idx, opts = {}) => {\n    if (!items.length) return;\n    loadAssets();\n    if (st) {\n      const prev = st;\n      st = null;\n      prev.root.remove();\n      Object.assign(opts, { push: false, swap: true, pushed: prev.pushed, closeTo: opts.closeTo || prev.closeTo });\n    }\n    const root = document.createElement('div');\n    root.className = 'tb-pv' + (opts.full ? ' is-full' : '');\n    root.setAttribute('role', 'dialog');\n    root.setAttribute('aria-modal', 'true');\n    root.setAttribute('aria-label', 'Product');\n    root.innerHTML = '<div class=\"tb-pv__bg\" data-pv-close></div><div class=\"tb-pv__track\">' + items.map(SLIDE).join('') + '</div>' +\n      (opts.hint ? '<div class=\"tb-pv__hint\" role=\"status\">' + esc(opts.hint) + '</div>' : '');\n    document.body.appendChild(root);\n    document.documentElement.classList.add('tb-pv-lock');\n    let opened;\n    st = {\n      root, track: root.querySelector('.tb-pv__track'), slides: [...root.querySelectorAll('.tb-pv__slide')], items, idx: -1,\n      pushed: !!opts.pushed, closeTo: opts.closeTo, opener: opts.opener || document.activeElement, loaded: new Set(),\n      opened: new Promise((r) => { opened = r; }), raf: 0, moving: false,\n      // Remember the tile so closing on the same product can shrink back into it.\n      homeIdx: idx, homeEl: opts.from || null\n    };\n    const s0 = st.slides[idx];\n    st.track.scrollLeft = s0.offsetLeft;\n    if (opts.push !== false) {\n      try { history.pushState({ tbPv: 1 }, '', items[idx].url); st.pushed = true; } catch (e) {}\n    }\n    setCurrent(idx);\n    if (opts.full) setFull(true);\n    const card0 = s0.querySelector('.tb-pv__card');\n    root.classList.add('is-in');\n    card0.focus({ preventScroll: true });\n    let anim = null;\n    if (!reduce() && card0.animate) {\n      const end = opts.full ? 'none' : 'scale(.94)';\n      let start = 'translateY(100%) scale(.94)';\n      const from = opts.fromRect || (opts.from && opts.from.getBoundingClientRect());\n      if (from && from.width) start = tileTransform(from);\n      else if (opts.dir) start = 'translateX(' + (opts.dir > 0 ? 35 : -35) + '%) scale(.94)';\n      // Transform and opacity only (both run on the GPU). From a tile the photo is visible at once, so the card is\n      // already opaque by a quarter of the way: it reads as the tile's photo growing into the page.\n      const frames = from && from.width\n        ? [{ transform: start, opacity: 0.4, offset: 0 }, { opacity: 1, offset: 0.25 }, { transform: end, opacity: 1, offset: 1 }]\n        : [{ transform: start, opacity: opts.dir ? 0 : 1 }, { transform: end, opacity: 1 }];\n      anim = card0.animate(frames, { duration: 420, easing: EASE_OUT });\n      if (!opts.swap) root.querySelector('.tb-pv__bg').animate([{ opacity: 0 }, { opacity: 1 }], { duration: 320, easing: 'ease-out' });\n    }\n    (anim ? anim.finished.catch(() => {}) : Promise.resolve()).then(() => opened());\n\n    // Swiping: paint every frame, settle on scrollend (or a short pause where scrollend isn't supported).\n    let t;\n    const settle = () => {\n      if (!st) return;\n      st.moving = false;\n      st.root.classList.remove('is-moving');\n      paint();\n      const i = centreIndex();\n      if (i !== st.idx) setCurrent(i);\n    };\n    st.track.addEventListener('scroll', () => {\n      if (!st) return;\n      if (!st.moving) { st.moving = true; st.root.classList.add('is-moving'); }\n      schedulePaint();\n      clearTimeout(t);\n      t = setTimeout(settle, 'onscrollend' in window ? 400 : 90);\n    }, { passive: true });\n    if ('onscrollend' in window) st.track.addEventListener('scrollend', () => { clearTimeout(t); settle(); });\n    st.slides.forEach(wire);\n    root.addEventListener('click', (e) => {\n      if (e.target.closest('[data-pv-close]') || e.target.classList.contains('tb-pv__slide')) { e.preventDefault(); close(); return; }\n      const sh = e.target.closest('[data-pv-share]');\n      if (sh) {\n        const it = st.items[st.idx];\n        const url = new URL(it.url, location.href).href;\n        if (navigator.share) navigator.share({ title: it.title, url }).catch(() => {});\n        else navigator.clipboard?.writeText(url);\n      }\n    });\n    if (opts.hint) setTimeout(() => root.querySelector('.tb-pv__hint')?.classList.add('is-gone'), 2600);\n  };\n\n  // The transform that puts the card (drawn at 94% width, centred) over a tile's rectangle.\n  const tileTransform = (r) => {\n    const W = window.innerWidth;\n    const H = window.innerHeight;\n    const sc = Math.max(0.2, r.width / (W * 0.94));\n    const dx = r.left + r.width / 2 - W / 2;\n    const dy = r.top + r.height / 2 - H / 2;\n    return 'translate(' + dx.toFixed(1) + 'px,' + dy.toFixed(1) + 'px) scale(' + sc.toFixed(4) + ')';\n  };\n\n  const teardown = () => {\n    if (!st) return;\n    const { root, opener, slides, idx, closeTo, homeIdx, homeEl } = st;\n    if (st.raf) cancelAnimationFrame(st.raf);\n    st = null;\n    if (closeTo) {\n      const c = slides[idx]?.querySelector('.tb-pv__card');\n      if (c && c.animate && !reduce()) c.animate([{ translate: c.style.translate || '0 0' }, { translate: '0 105%' }], { duration: 280, easing: 'cubic-bezier(.4,0,.8,.4)', fill: 'forwards' });\n      setTimeout(() => { location.href = closeTo; }, reduce() ? 0 : 240);\n      return;\n    }\n    const card = slides[idx]?.querySelector('.tb-pv__card');\n    const bg = root.querySelector('.tb-pv__bg');\n    root.classList.add('is-out');\n    document.documentElement.classList.remove('tb-pv-lock');\n    if (reduce() || !card || !card.animate) { root.remove(); }\n    else {\n      const startY = card.style.translate || '0 0';\n      const startT = getComputedStyle(card).transform;\n      const r = idx === homeIdx && homeEl && homeEl.isConnected ? homeEl.getBoundingClientRect() : null;\n      const onScreen = r && r.width && r.bottom > 0 && r.top < window.innerHeight;\n      let a;\n      if (onScreen) {\n        // Back into the tile it came from.\n        a = card.animate([\n          { translate: startY, transform: startT === 'none' ? 'none' : startT, opacity: 1 },\n          { opacity: 1, offset: 0.7 },\n          { translate: '0 0', transform: tileTransform(r), opacity: 0 }\n        ], { duration: 340, easing: 'cubic-bezier(.3,0,.2,1)', fill: 'forwards' });\n      } else {\n        a = card.animate([{ translate: startY }, { translate: '0 105%' }], { duration: 300, easing: 'cubic-bezier(.4,0,.8,.4)', fill: 'forwards' });\n      }\n      bg.animate([{ opacity: getComputedStyle(bg).opacity }, { opacity: 0 }], { duration: 300, easing: 'ease-in', fill: 'forwards' });\n      a.finished.catch(() => {}).then(() => root.remove());\n    }\n    if (opener && opener.focus) opener.focus({ preventScroll: true });\n  };\n\n  const close = () => {\n    if (!st) return;\n    if (st.pushed && history.state && history.state.tbPv) history.back();\n    else teardown();\n  };\n\n  window.addEventListener('popstate', () => { if (st) teardown(); });\n  document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && st) close(); });\n\n  // Pull the card down from the top to close.\n  const dragToClose = (card, sc) => {\n    let y0 = null;\n    let x0 = 0;\n    let t0 = 0;\n    let dy = 0;\n    let lock = '';\n    const bg = () => st && st.root.querySelector('.tb-pv__bg');\n    card.addEventListener('touchstart', (e) => {\n      y0 = null;\n      if (e.touches.length > 1 || sc.scrollTop > 0 || e.target.closest('input, textarea, select, dialog')) return;\n      y0 = e.touches[0].clientY; x0 = e.touches[0].clientX; t0 = Date.now(); dy = 0; lock = '';\n    }, { passive: true });\n    card.addEventListener('touchmove', (e) => {\n      if (y0 == null) return;\n      const ddx = e.touches[0].clientX - x0;\n      const ddy = e.touches[0].clientY - y0;\n      if (!lock) {\n        if (ddy > 0 && ddy >= Math.abs(ddx) && e.cancelable) e.preventDefault();\n        if (Math.abs(ddx) < 8 && Math.abs(ddy) < 8) return;\n        lock = ddy > 0 && ddy > Math.abs(ddx) && sc.scrollTop <= 0 ? 'y' : 'n';\n        if (lock === 'n') { y0 = null; return; }\n        y0 += ddy; t0 = Date.now();\n      }\n      if (e.cancelable) e.preventDefault();\n      dy = Math.max(0, e.touches[0].clientY - y0);\n      card.style.translate = '0 ' + dy + 'px';\n      const b = bg(); if (b) b.style.opacity = String(Math.max(0.2, 1 - dy / 400));\n    }, { passive: false });\n    const end = () => {\n      if (y0 == null || lock !== 'y') { y0 = null; return; }\n      y0 = null;\n      const fast = dy > 50 && dy / Math.max(1, Date.now() - t0) > 0.6;\n      if (dy > 110 || fast) { close(); return; }\n      if (card.animate && !reduce()) card.animate([{ translate: '0 ' + dy + 'px' }, { translate: '0 0' }], { duration: 260, easing: EASE_OUT });\n      card.style.translate = '';\n      const b = bg(); if (b) b.style.opacity = '';\n    };\n    card.addEventListener('touchend', end);\n    card.addEventListener('touchcancel', end);\n  };\n\n  const setItems = (list, at, hint) => {\n    if (!st || st.items.length !== 1 || list.length < 2) return;\n    const mk = (it) => { const d = document.createElement('div'); d.innerHTML = SLIDE(it); const sl = d.firstElementChild; wire(sl); return sl; };\n    const before = list.slice(0, at).map(mk);\n    const after = list.slice(at + 1).map(mk);\n    const cur = st.slides[0];\n    before.forEach((sl) => st.track.insertBefore(sl, cur));\n    after.forEach((sl) => st.track.appendChild(sl));\n    st.items = list.slice(0, at).concat([st.items[0]], list.slice(at + 1));\n    st.slides = [...st.track.children];\n    st.loaded = new Set([...st.loaded].map((k) => k + at));\n    st.homeIdx = -1;\n    st.idx = at;\n    st.track.scrollLeft = cur.offsetLeft;\n    setCurrent(at);\n    if (hint) {\n      const h = document.createElement('div');\n      h.className = 'tb-pv__hint';\n      h.setAttribute('role', 'status');\n      h.textContent = hint;\n      st.root.appendChild(h);\n      setTimeout(() => h.classList.add('is-gone'), 2800);\n    }\n  };\n\n  window.TbPv = { open, close, setItems, isOpen: () => !!st };\n\n  // The photo a tile is already showing (so the card can show it at once).\n  const tilePhoto = (el) => { const im = el && el.querySelector('img'); return im ? (im.currentSrc || im.src || '') : ''; };\n\n  document.addEventListener('click', (e) => {\n    if (!phone.matches || e.defaultPrevented || e.metaKey || e.ctrlKey || e.shiftKey || e.button > 0) return;\n    const sim = e.target.closest('.tb-pc-sim__item');\n    if (sim) {\n      const tiles = [...sim.parentElement.querySelectorAll('.tb-pc-sim__item')];\n      e.preventDefault();\n      open(tiles.map((t) => ({ url: t.href, title: t.querySelector('.tb-pc-sim__name')?.textContent.trim() || '', img: tilePhoto(t.querySelector('.tb-pc-sim__img')) })), tiles.indexOf(sim), { opener: sim, fromRect: (sim.querySelector('.tb-pc-sim__img') || sim).getBoundingClientRect() });\n      return;\n    }\n    if (st) return;\n    const a = e.target.closest('.tb-card a[href*=\"/products/\"]');\n    if (!a || e.target.closest('tb-add-to-cart, tb-wish-button, button')) return;\n    const card = a.closest('.tb-card');\n    const list = card.closest('[data-grid], .tbx-track, .tb-grid') || card.parentElement?.parentElement || card.parentElement;\n    const cards = [...list.querySelectorAll('.tb-card')].filter((c) => c.querySelector('.tb-card__title a'));\n    const items = cards.map((c) => { const t = c.querySelector('.tb-card__title a'); return { url: t.href, title: t.textContent.trim(), img: tilePhoto(c.querySelector('.tb-card__slide') || c.querySelector('.tb-card__media')) }; });\n    const idx = cards.indexOf(card);\n    if (idx < 0) return;\n    e.preventDefault();\n    open(items, idx, { opener: a, from: card.querySelector('.tb-card__media') || card });\n  }, true);\n\n  // Preload on touch; product page files when idle.\n  document.addEventListener('touchstart', (e) => {\n    if (!phone.matches || st) return;\n    const a = e.target.closest && e.target.closest('.tb-card a[href*=\"/products/\"]');\n    if (!a) return;\n    loadAssets();\n    fetchCard(a.closest('.tb-card').querySelector('.tb-card__title a')?.href || a.href);\n  }, { passive: true, capture: true });\n  window.addEventListener('load', () => { if (phone.matches && document.querySelector('.tb-card')) idle(() => loadAssets()); });\n\n})();\n"],
  "mappings": "CAUC,IAAM,CACL,GAAI,OAAO,KAAM,OACjB,MAAM,MAAQ,OAAO,WAAW,oBAAoB,EAC9C,OAAS,IAAM,OAAO,WAAW,kCAAkC,EAAE,QACrE,KAAO,OAAO,oBAAuB,GAAM,OAAO,oBAAoB,EAAG,CAAE,QAAS,GAAI,CAAC,EAAK,GAAM,WAAW,EAAG,GAAG,EACrH,KAAQ,IAAO,IAAI,QAAS,GAAM,WAAW,EAAG,EAAE,CAAC,EACnD,SAAW,2BACX,MAAQ,IAAI,IAClB,IAAI,GAAK,KAEL,YAAc,KAClB,MAAM,WAAa,IAAM,CACvB,GAAI,YAAa,OAAO,YACxB,MAAM,GAAK,SAAS,cAAc,8BAA8B,EAC1D,KAAO,GAAK,GAAG,IAAI,MAAM,eAAe,EAAE,CAAC,EAAI,WAC/C,KAAO,OAAO,aAAe,CAAC,EAC9B,KAAO,CAAC,EACd,OAAC,iBAAkB,cAAc,EAAE,QAAS,GAAM,CAChD,GAAI,SAAS,cAAc,gBAAkB,EAAI,IAAI,EAAG,OACxD,MAAM,EAAI,SAAS,cAAc,MAAM,EACvC,EAAE,IAAM,aACR,EAAE,KAAO,KAAK,CAAC,GAAK,KAAO,EAC3B,KAAK,KAAK,IAAI,QAAS,IAAO,CAAE,EAAE,OAAS,GAAI,EAAE,QAAU,EAAI,CAAC,CAAC,EACjE,SAAS,KAAK,YAAY,CAAC,CAC7B,CAAC,EACD,CAAC,gBAAiB,aAAa,EAAE,QAAS,GAAM,CAC9C,GAAI,SAAS,cAAc,iBAAmB,EAAI,IAAI,EAAG,OACzD,MAAM,GAAK,SAAS,cAAc,QAAQ,EAC1C,GAAG,IAAM,KAAK,CAAC,GAAK,KAAO,EAC3B,KAAK,KAAK,IAAI,QAAS,IAAO,CAAE,GAAG,OAAS,GAAI,GAAG,QAAU,EAAI,CAAC,CAAC,EACnE,SAAS,KAAK,YAAY,EAAE,CAC9B,CAAC,EACD,YAAc,QAAQ,IAAI,IAAI,EACvB,WACT,EAEM,QAAW,KAAQ,CAEvB,MAAM,KADI,IAAI,IAAI,IAAK,SAAS,IAAI,EACrB,SAAS,QAAQ,8BAA+B,IAAI,EACnE,OAAO,SAAS,OAAS,KAAO,sBAClC,EACM,UAAa,KAAQ,CACzB,MAAM,IAAM,QAAQ,GAAG,EACvB,GAAI,CAAC,MAAM,IAAI,GAAG,EAAG,CACnB,MAAM,EAAI,MAAM,IAAK,CAAE,YAAa,aAAc,CAAC,EAAE,KAAM,GAAM,CAAE,GAAI,CAAC,EAAE,GAAI,MAAM,IAAI,MAAM,EAAE,MAAM,EAAG,OAAO,EAAE,KAAK,CAAG,CAAC,EAC3H,EAAE,MAAM,IAAM,MAAM,OAAO,GAAG,CAAC,EAC/B,MAAM,IAAI,IAAK,CAAC,CAClB,CACA,OAAO,MAAM,IAAI,GAAG,CACtB,EAEM,IAAO,GAAM,OAAO,GAAK,EAAE,EAAE,QAAQ,UAAY,IAAO,CAAE,IAAK,QAAS,IAAK,OAAQ,IAAK,OAAQ,IAAK,QAAS,GAAE,CAAC,CAAE,EAErH,KAAQ,KAAQ,gDACnB,IAAM,qDAAuD,IAAI,GAAG,EAAI,oCAAsC,2CAC/G,iEACI,IAAM,CAAC,EAAG,GAAI,IAAM,eAAiB,EAAI,aAAe,EAAI,yEAA2E,GAAK,uEAAyE,EAAI,SACzN,UAAY,IAAI,GAAI,IAAK,0BAA0B,EACnD,WAAa,IAAI,GAAI,EAAG,mFAAmF,EAC3G,MAAS,IAAO,gFAAkF,IAAI,GAAG,KAAK,EAAI,oKAE/B,UAAY,sCACpE,IAAI,GAAG,KAAK,EAAI,oFACgC,WAAa,iDAClD,KAAK,GAAG,GAAG,EAAI,2BACrD,KAAQ,GAAM,CAClB,MAAM,KAAO,EAAE,cAAc,cAAc,EACrC,GAAK,EAAE,cAAc,gBAAgB,EAC3C,GAAG,iBAAiB,SAAU,IAAM,CAClC,GAAI,CAAC,GAAI,OACT,MAAM,KAAO,GAAG,KAAK,UAAU,SAAS,SAAS,EAC7C,CAAC,MAAQ,GAAG,UAAY,GAAI,QAAQ,EAAI,EACnC,MAAQ,GAAG,WAAa,GAAG,QAAQ,EAAK,CACnD,EAAG,CAAE,QAAS,EAAK,CAAC,EACpB,YAAY,KAAM,EAAE,CACtB,EAKM,MAAQ,IAAM,CAGlB,GAFI,CAAC,KACL,GAAG,IAAM,EACL,GAAG,KAAK,UAAU,SAAS,SAAS,GAAG,OAC3C,MAAM,EAAI,GAAG,MAAM,aAAe,OAAO,WACnC,KAAO,EAAI,IAAO,EAClB,EAAI,GAAG,MAAM,WACb,KAAO,KAAK,MAAM,EAAI,CAAC,EAC7B,QAAS,EAAI,KAAK,IAAI,EAAG,KAAO,CAAC,EAAG,GAAK,KAAK,IAAI,GAAG,OAAO,OAAS,EAAG,KAAO,CAAC,EAAG,IAAK,CACtF,MAAM,EAAI,GAAG,OAAO,CAAC,EACf,EAAI,KAAK,IAAI,KAAM,KAAK,IAAI,KAAM,EAAE,WAAa,GAAK,CAAC,CAAC,EACxD,EAAI,EAAE,kBACZ,EAAE,MAAM,UAAY,eAAiB,CAAC,EAAI,MAAM,QAAQ,CAAC,EAAI,iBAC7D,EAAE,MAAM,QAAU,OAAO,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,CAAC,CAAC,EAAI,GAAI,CAC9D,CACF,EACM,cAAgB,IAAM,CAAM,IAAM,CAAC,GAAG,MAAK,GAAG,IAAM,sBAAsB,KAAK,EAAG,EAClF,WAAa,IAAM,CAAM,IAAI,GAAG,OAAO,QAAS,GAAM,CAAE,EAAE,kBAAkB,MAAM,UAAY,GAAI,EAAE,kBAAkB,MAAM,QAAU,EAAI,CAAC,CAAG,EAC9I,QAAW,IAAO,CACjB,KACL,GAAG,KAAK,UAAU,OAAO,UAAW,EAAE,EAClC,GAAI,WAAW,EAAQ,MAAM,EACnC,EAGM,KAAO,MAAO,GAAM,CACxB,GAAI,CAAC,IAAM,EAAI,GAAK,GAAK,GAAG,MAAM,QAAU,GAAG,OAAO,IAAI,CAAC,EAAG,OAC9D,GAAG,OAAO,IAAI,CAAC,EACf,MAAM,MAAQ,GAAG,OAAO,CAAC,EACnB,KAAO,MAAM,cAAc,cAAc,EAC/C,GAAI,CACF,KAAM,CAAC,IAAI,EAAI,MAAM,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,GAAG,EAAG,WAAW,CAAC,CAAC,EAErE,MADM,IAAI,UAAU,EAAE,gBAAgB,KAAM,WAAW,EAC3C,cAAc,mBAAmB,EACnD,GAAI,CAAC,OAAS,CAAC,IAAM,GAAG,OAAO,CAAC,IAAM,MAAO,MAAM,IAAI,MAAM,SAAS,EAGtE,IAFA,MAAM,GAAG,OAEF,IAAM,GAAG,QAAQ,MAAM,KAAK,EAAE,EACrC,GAAI,CAAC,IAAM,GAAG,OAAO,CAAC,IAAM,MAAO,OACnC,MAAM,KAAO,SAAS,UAAU,KAAK,EAE/B,MAAQ,KAAK,cAAc,kBAAkB,EACnD,GAAI,MAAO,CACT,MAAM,QAAU,QAChB,GAAI,CAAE,MAAM,cAAgB,MAAQ,MAAY,CAAC,CAC7C,MAAM,QAAQ,MAAM,QAAQ,KAAK,CAAC,MAAM,OAAO,EAAE,MAAM,IAAM,CAAC,CAAC,EAAG,KAAK,IAAM,GAAG,IAAM,IAAM,GAAG,CAAC,CAAC,CACvG,CACA,GAAI,CAAC,IAAM,GAAG,OAAO,CAAC,IAAM,MAAO,OACnC,KAAO,IAAM,GAAG,QAAQ,MAAM,KAAK,EAAE,EACrC,GAAI,CAAC,GAAI,OACT,KAAK,UAAU,IAAI,WAAW,EAC9B,KAAK,gBAAgB,IAAI,EACzB,MAAM,EAAI,KAAK,QAAQ,MACnB,IAAK,GAAG,MAAM,CAAC,EAAE,MAAQ,EAAG,MAAM,cAAc,cAAc,EAAE,YAAc,EAAG,MAAM,cAAc,cAAc,EAAE,aAAa,aAAc,CAAC,GACrJ,OAAO,OAAO,KAAK,IAAI,EACvB,MAAM,IAAM,KAAK,cAAc,UAAU,EACrC,KAAK,MAAM,cAAc,cAAc,EAAE,YAAY,GAAG,EAC5D,SAAS,cAAc,IAAI,YAAY,gBAAgB,CAAC,CAC1D,MAAc,CACZ,IAAI,OAAO,OAAO,CAAC,EACf,IAAM,GAAG,OAAO,CAAC,IAAM,QAAO,KAAK,UAAY,uEAAoE,IAAI,IAAI,MAAM,CAAC,GAAG,GAAG,EAAI,oCAClJ,CACF,EAEM,WAAc,GAAM,CACxB,KAAK,CAAC,EACN,KAAK,IAAM,CAAM,IAAM,GAAG,MAAQ,IAAK,KAAK,EAAI,CAAC,EAAG,KAAK,EAAI,CAAC,EAAK,CAAC,EACpE,CAAC,EAAI,EAAG,EAAI,CAAC,EAAE,QAAS,GAAM,CAAM,IAAM,GAAG,MAAM,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,IAAM,CAAC,CAAC,CAAG,CAAC,CACtG,EAEM,YAAc,IAAM,CACxB,MAAM,IAAM,GAAG,MAAM,WAAa,GAAG,MAAM,YAAc,EACzD,IAAI,KAAO,EACP,KAAO,IACX,UAAG,OAAO,QAAQ,CAAC,EAAG,IAAM,CAAE,MAAM,EAAI,KAAK,IAAI,EAAE,WAAa,EAAE,YAAc,EAAI,GAAG,EAAO,EAAI,OAAQ,KAAO,EAAG,KAAO,EAAK,CAAC,EAC1H,IACT,EAEM,WAAc,GAAM,CACxB,GAAI,CAAC,GAAI,OACT,MAAM,MAAQ,GAAG,MAAQ,EACzB,GAAG,IAAM,EACT,GAAG,OAAO,QAAQ,CAAC,EAAG,IAAM,CAC1B,EAAE,gBAAgB,QAAS,IAAM,CAAC,EAClC,EAAE,UAAU,OAAO,UAAW,IAAM,EAAI,CAAC,EACzC,EAAE,UAAU,OAAO,UAAW,IAAM,EAAI,CAAC,CAC3C,CAAC,EACG,QAAS,GAAG,KAAK,UAAU,OAAO,SAAS,EAAG,GAAG,OAAO,CAAC,EAAE,cAAc,gBAAgB,EAAE,UAAY,GAC3G,MAAM,EACN,WAAW,CAAC,EACZ,MAAM,IAAM,GAAG,MAAM,CAAC,EAAE,IACxB,GAAI,CAAE,QAAQ,aAAa,OAAO,OAAO,CAAC,EAAG,QAAQ,MAAO,CAAE,KAAM,CAAE,CAAC,EAAG,GAAI,GAAG,CAAG,MAAY,CAAC,CACnG,EAEM,KAAO,CAAC,MAAO,IAAK,KAAO,CAAC,IAAM,CACtC,GAAI,CAAC,MAAM,OAAQ,OAEnB,GADA,WAAW,EACP,GAAI,CACN,MAAM,KAAO,GACb,GAAK,KACL,KAAK,KAAK,OAAO,EACjB,OAAO,OAAO,KAAM,CAAE,KAAM,GAAO,KAAM,GAAM,OAAQ,KAAK,OAAQ,QAAS,KAAK,SAAW,KAAK,OAAQ,CAAC,CAC7G,CACA,MAAM,KAAO,SAAS,cAAc,KAAK,EACzC,KAAK,UAAY,SAAW,KAAK,KAAO,WAAa,IACrD,KAAK,aAAa,OAAQ,QAAQ,EAClC,KAAK,aAAa,aAAc,MAAM,EACtC,KAAK,aAAa,aAAc,SAAS,EACzC,KAAK,UAAY,wEAA0E,MAAM,IAAI,KAAK,EAAE,KAAK,EAAE,EAAI,UACpH,KAAK,KAAO,0CAA4C,IAAI,KAAK,IAAI,EAAI,SAAW,IACvF,SAAS,KAAK,YAAY,IAAI,EAC9B,SAAS,gBAAgB,UAAU,IAAI,YAAY,EACnD,IAAI,OACJ,GAAK,CACH,KAAM,MAAO,KAAK,cAAc,eAAe,EAAG,OAAQ,CAAC,GAAG,KAAK,iBAAiB,eAAe,CAAC,EAAG,MAAO,IAAK,GACnH,OAAQ,CAAC,CAAC,KAAK,OAAQ,QAAS,KAAK,QAAS,OAAQ,KAAK,QAAU,SAAS,cAAe,OAAQ,IAAI,IACzG,OAAQ,IAAI,QAAS,GAAM,CAAE,OAAS,CAAG,CAAC,EAAG,IAAK,EAAG,OAAQ,GAE7D,QAAS,IAAK,OAAQ,KAAK,MAAQ,IACrC,EACA,MAAM,GAAK,GAAG,OAAO,GAAG,EAExB,GADA,GAAG,MAAM,WAAa,GAAG,WACrB,KAAK,OAAS,GAChB,GAAI,CAAE,QAAQ,UAAU,CAAE,KAAM,CAAE,EAAG,GAAI,MAAM,GAAG,EAAE,GAAG,EAAG,GAAG,OAAS,EAAM,MAAY,CAAC,CAE3F,WAAW,GAAG,EACV,KAAK,MAAM,QAAQ,EAAI,EAC3B,MAAM,MAAQ,GAAG,cAAc,cAAc,EAC7C,KAAK,UAAU,IAAI,OAAO,EAC1B,MAAM,MAAM,CAAE,cAAe,EAAK,CAAC,EACnC,IAAI,KAAO,KACX,GAAI,CAAC,OAAO,GAAK,MAAM,QAAS,CAC9B,MAAM,IAAM,KAAK,KAAO,OAAS,aACjC,IAAI,MAAQ,8BACZ,MAAM,KAAO,KAAK,UAAa,KAAK,MAAQ,KAAK,KAAK,sBAAsB,EACxE,MAAQ,KAAK,MAAO,MAAQ,cAAc,IAAI,EACzC,KAAK,MAAK,MAAQ,eAAiB,KAAK,IAAM,EAAI,GAAK,KAAO,iBAGvE,MAAM,OAAS,MAAQ,KAAK,MACxB,CAAC,CAAE,UAAW,MAAO,QAAS,GAAK,OAAQ,CAAE,EAAG,CAAE,QAAS,EAAG,OAAQ,GAAK,EAAG,CAAE,UAAW,IAAK,QAAS,EAAG,OAAQ,CAAE,CAAC,EACvH,CAAC,CAAE,UAAW,MAAO,QAAS,KAAK,IAAM,EAAI,CAAE,EAAG,CAAE,UAAW,IAAK,QAAS,CAAE,CAAC,EACpF,KAAO,MAAM,QAAQ,OAAQ,CAAE,SAAU,IAAK,OAAQ,QAAS,CAAC,EAC3D,KAAK,MAAM,KAAK,cAAc,YAAY,EAAE,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,UAAW,CAAC,CAClI,EACC,KAAO,KAAK,SAAS,MAAM,IAAM,CAAC,CAAC,EAAI,QAAQ,QAAQ,GAAG,KAAK,IAAM,OAAO,CAAC,EAG9E,IAAI,EACJ,MAAM,OAAS,IAAM,CACnB,GAAI,CAAC,GAAI,OACT,GAAG,OAAS,GACZ,GAAG,KAAK,UAAU,OAAO,WAAW,EACpC,MAAM,EACN,MAAM,EAAI,YAAY,EAClB,IAAM,GAAG,KAAK,WAAW,CAAC,CAChC,EACA,GAAG,MAAM,iBAAiB,SAAU,IAAM,CACnC,KACA,GAAG,SAAU,GAAG,OAAS,GAAM,GAAG,KAAK,UAAU,IAAI,WAAW,GACrE,cAAc,EACd,aAAa,CAAC,EACd,EAAI,WAAW,OAAQ,gBAAiB,OAAS,IAAM,EAAE,EAC3D,EAAG,CAAE,QAAS,EAAK,CAAC,EAChB,gBAAiB,QAAQ,GAAG,MAAM,iBAAiB,YAAa,IAAM,CAAE,aAAa,CAAC,EAAG,OAAO,CAAG,CAAC,EACxG,GAAG,OAAO,QAAQ,IAAI,EACtB,KAAK,iBAAiB,QAAU,GAAM,CACpC,GAAI,EAAE,OAAO,QAAQ,iBAAiB,GAAK,EAAE,OAAO,UAAU,SAAS,cAAc,EAAG,CAAE,EAAE,eAAe,EAAG,MAAM,EAAG,MAAQ,CAE/H,GADW,EAAE,OAAO,QAAQ,iBAAiB,EACrC,CACN,MAAM,GAAK,GAAG,MAAM,GAAG,GAAG,EACpB,IAAM,IAAI,IAAI,GAAG,IAAK,SAAS,IAAI,EAAE,KACvC,UAAU,MAAO,UAAU,MAAM,CAAE,MAAO,GAAG,MAAO,GAAI,CAAC,EAAE,MAAM,IAAM,CAAC,CAAC,EACxE,UAAU,WAAW,UAAU,GAAG,CACzC,CACF,CAAC,EACG,KAAK,MAAM,WAAW,IAAM,KAAK,cAAc,cAAc,GAAG,UAAU,IAAI,SAAS,EAAG,IAAI,CACpG,EAGM,cAAiB,GAAM,CAC3B,MAAM,EAAI,OAAO,WACX,EAAI,OAAO,YACX,GAAK,KAAK,IAAI,GAAK,EAAE,OAAS,EAAI,IAAK,EACvC,GAAK,EAAE,KAAO,EAAE,MAAQ,EAAI,EAAI,EAChC,GAAK,EAAE,IAAM,EAAE,OAAS,EAAI,EAAI,EACtC,MAAO,aAAe,GAAG,QAAQ,CAAC,EAAI,MAAQ,GAAG,QAAQ,CAAC,EAAI,aAAe,GAAG,QAAQ,CAAC,EAAI,GAC/F,EAEM,SAAW,IAAM,CACrB,GAAI,CAAC,GAAI,OACT,KAAM,CAAE,KAAM,OAAQ,OAAQ,IAAK,QAAS,QAAS,MAAO,EAAI,GAGhE,GAFI,GAAG,KAAK,qBAAqB,GAAG,GAAG,EACvC,GAAK,KACD,QAAS,CACX,MAAM,EAAI,OAAO,GAAG,GAAG,cAAc,cAAc,EAC/C,GAAK,EAAE,SAAW,CAAC,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAE,UAAW,EAAE,MAAM,WAAa,KAAM,EAAG,CAAE,UAAW,QAAS,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,2BAA4B,KAAM,UAAW,CAAC,EACxL,WAAW,IAAM,CAAE,SAAS,KAAO,OAAS,EAAG,OAAO,EAAI,EAAI,GAAG,EACjE,MACF,CACA,MAAM,KAAO,OAAO,GAAG,GAAG,cAAc,cAAc,EAChD,GAAK,KAAK,cAAc,YAAY,EAG1C,GAFA,KAAK,UAAU,IAAI,QAAQ,EAC3B,SAAS,gBAAgB,UAAU,OAAO,YAAY,EAClD,OAAO,GAAK,CAAC,MAAQ,CAAC,KAAK,QAAW,KAAK,OAAO,MACjD,CACH,MAAM,OAAS,KAAK,MAAM,WAAa,MACjC,OAAS,iBAAiB,IAAI,EAAE,UAChC,EAAI,MAAQ,SAAW,QAAU,OAAO,YAAc,OAAO,sBAAsB,EAAI,KACvF,SAAW,GAAK,EAAE,OAAS,EAAE,OAAS,GAAK,EAAE,IAAM,OAAO,YAChE,IAAI,EACA,SAEF,EAAI,KAAK,QAAQ,CACf,CAAE,UAAW,OAAQ,UAAW,SAAW,OAAS,OAAS,OAAQ,QAAS,CAAE,EAChF,CAAE,QAAS,EAAG,OAAQ,EAAI,EAC1B,CAAE,UAAW,MAAO,UAAW,cAAc,CAAC,EAAG,QAAS,CAAE,CAC9D,EAAG,CAAE,SAAU,IAAK,OAAQ,0BAA2B,KAAM,UAAW,CAAC,EAEzE,EAAI,KAAK,QAAQ,CAAC,CAAE,UAAW,MAAO,EAAG,CAAE,UAAW,QAAS,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,2BAA4B,KAAM,UAAW,CAAC,EAE5I,GAAG,QAAQ,CAAC,CAAE,QAAS,iBAAiB,EAAE,EAAE,OAAQ,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,UAAW,KAAM,UAAW,CAAC,EAC9H,EAAE,SAAS,MAAM,IAAM,CAAC,CAAC,EAAE,KAAK,IAAM,KAAK,OAAO,CAAC,CACrD,CACI,QAAU,OAAO,OAAO,OAAO,MAAM,CAAE,cAAe,EAAK,CAAC,CAClE,EAEM,MAAQ,IAAM,CACb,KACD,GAAG,QAAU,QAAQ,OAAS,QAAQ,MAAM,KAAM,QAAQ,KAAK,EAC9D,SAAS,EAChB,EAEA,OAAO,iBAAiB,WAAY,IAAM,CAAM,IAAI,SAAS,CAAG,CAAC,EACjE,SAAS,iBAAiB,UAAY,GAAM,CAAM,EAAE,MAAQ,UAAY,IAAI,MAAM,CAAG,CAAC,EAGtF,MAAM,YAAc,CAAC,KAAM,KAAO,CAChC,IAAI,GAAK,KACL,GAAK,EACL,GAAK,EACL,GAAK,EACL,KAAO,GACX,MAAM,GAAK,IAAM,IAAM,GAAG,KAAK,cAAc,YAAY,EACzD,KAAK,iBAAiB,aAAe,GAAM,CACzC,GAAK,KACD,IAAE,QAAQ,OAAS,GAAK,GAAG,UAAY,GAAK,EAAE,OAAO,QAAQ,iCAAiC,KAClG,GAAK,EAAE,QAAQ,CAAC,EAAE,QAAS,GAAK,EAAE,QAAQ,CAAC,EAAE,QAAS,GAAK,KAAK,IAAI,EAAG,GAAK,EAAG,KAAO,GACxF,EAAG,CAAE,QAAS,EAAK,CAAC,EACpB,KAAK,iBAAiB,YAAc,GAAM,CACxC,GAAI,IAAM,KAAM,OAChB,MAAM,IAAM,EAAE,QAAQ,CAAC,EAAE,QAAU,GAC7B,IAAM,EAAE,QAAQ,CAAC,EAAE,QAAU,GACnC,GAAI,CAAC,KAAM,CAET,GADI,IAAM,GAAK,KAAO,KAAK,IAAI,GAAG,GAAK,EAAE,YAAY,EAAE,eAAe,EAClE,KAAK,IAAI,GAAG,EAAI,GAAK,KAAK,IAAI,GAAG,EAAI,EAAG,OAE5C,GADA,KAAO,IAAM,GAAK,IAAM,KAAK,IAAI,GAAG,GAAK,GAAG,WAAa,EAAI,IAAM,IAC/D,OAAS,IAAK,CAAE,GAAK,KAAM,MAAQ,CACvC,IAAM,IAAK,GAAK,KAAK,IAAI,CAC3B,CACI,EAAE,YAAY,EAAE,eAAe,EACnC,GAAK,KAAK,IAAI,EAAG,EAAE,QAAQ,CAAC,EAAE,QAAU,EAAE,EAC1C,KAAK,MAAM,UAAY,KAAO,GAAK,KACnC,MAAM,EAAI,GAAG,EAAO,IAAG,EAAE,MAAM,QAAU,OAAO,KAAK,IAAI,GAAK,EAAI,GAAK,GAAG,CAAC,EAC7E,EAAG,CAAE,QAAS,EAAM,CAAC,EACrB,MAAM,IAAM,IAAM,CAChB,GAAI,IAAM,MAAQ,OAAS,IAAK,CAAE,GAAK,KAAM,MAAQ,CACrD,GAAK,KACL,MAAM,KAAO,GAAK,IAAM,GAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,EAAE,EAAI,GAC5D,GAAI,GAAK,KAAO,KAAM,CAAE,MAAM,EAAG,MAAQ,CACrC,KAAK,SAAW,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAE,UAAW,KAAO,GAAK,IAAK,EAAG,CAAE,UAAW,KAAM,CAAC,EAAG,CAAE,SAAU,IAAK,OAAQ,QAAS,CAAC,EACxI,KAAK,MAAM,UAAY,GACvB,MAAM,EAAI,GAAG,EAAO,IAAG,EAAE,MAAM,QAAU,GAC3C,EACA,KAAK,iBAAiB,WAAY,GAAG,EACrC,KAAK,iBAAiB,cAAe,GAAG,CAC1C,EAEM,SAAW,CAAC,KAAM,GAAI,OAAS,CACnC,GAAI,CAAC,IAAM,GAAG,MAAM,SAAW,GAAK,KAAK,OAAS,EAAG,OACrD,MAAM,GAAM,IAAO,CAAE,MAAM,EAAI,SAAS,cAAc,KAAK,EAAG,EAAE,UAAY,MAAM,EAAE,EAAG,MAAM,GAAK,EAAE,kBAAmB,YAAK,EAAE,EAAU,EAAI,EACtI,OAAS,KAAK,MAAM,EAAG,EAAE,EAAE,IAAI,EAAE,EACjC,MAAQ,KAAK,MAAM,GAAK,CAAC,EAAE,IAAI,EAAE,EACjC,IAAM,GAAG,OAAO,CAAC,EAUvB,GATA,OAAO,QAAS,IAAO,GAAG,MAAM,aAAa,GAAI,GAAG,CAAC,EACrD,MAAM,QAAS,IAAO,GAAG,MAAM,YAAY,EAAE,CAAC,EAC9C,GAAG,MAAQ,KAAK,MAAM,EAAG,EAAE,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,EAAG,KAAK,MAAM,GAAK,CAAC,CAAC,EACrE,GAAG,OAAS,CAAC,GAAG,GAAG,MAAM,QAAQ,EACjC,GAAG,OAAS,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,IAAK,GAAM,EAAI,EAAE,CAAC,EACrD,GAAG,QAAU,GACb,GAAG,IAAM,GACT,GAAG,MAAM,WAAa,IAAI,WAC1B,WAAW,EAAE,EACT,KAAM,CACR,MAAM,EAAI,SAAS,cAAc,KAAK,EACtC,EAAE,UAAY,cACd,EAAE,aAAa,OAAQ,QAAQ,EAC/B,EAAE,YAAc,KAChB,GAAG,KAAK,YAAY,CAAC,EACrB,WAAW,IAAM,EAAE,UAAU,IAAI,SAAS,EAAG,IAAI,CACnD,CACF,EAEA,OAAO,KAAO,CAAE,KAAM,MAAO,SAAU,OAAQ,IAAM,CAAC,CAAC,EAAG,EAG1D,MAAM,UAAa,IAAO,CAAE,MAAM,GAAK,IAAM,GAAG,cAAc,KAAK,EAAG,OAAO,KAAM,GAAG,YAAc,GAAG,MAAO,EAAU,EAExH,SAAS,iBAAiB,QAAU,GAAM,CACxC,GAAI,CAAC,MAAM,SAAW,EAAE,kBAAoB,EAAE,SAAW,EAAE,SAAW,EAAE,UAAY,EAAE,OAAS,EAAG,OAClG,MAAM,IAAM,EAAE,OAAO,QAAQ,kBAAkB,EAC/C,GAAI,IAAK,CACP,MAAM,MAAQ,CAAC,GAAG,IAAI,cAAc,iBAAiB,kBAAkB,CAAC,EACxE,EAAE,eAAe,EACjB,KAAK,MAAM,IAAK,IAAO,CAAE,IAAK,EAAE,KAAM,MAAO,EAAE,cAAc,kBAAkB,GAAG,YAAY,KAAK,GAAK,GAAI,IAAK,UAAU,EAAE,cAAc,iBAAiB,CAAC,CAAE,EAAE,EAAG,MAAM,QAAQ,GAAG,EAAG,CAAE,OAAQ,IAAK,UAAW,IAAI,cAAc,iBAAiB,GAAK,KAAK,sBAAsB,CAAE,CAAC,EACxR,MACF,CACA,GAAI,GAAI,OACR,MAAM,EAAI,EAAE,OAAO,QAAQ,gCAAgC,EAC3D,GAAI,CAAC,GAAK,EAAE,OAAO,QAAQ,wCAAwC,EAAG,OACtE,MAAM,KAAO,EAAE,QAAQ,UAAU,EAE3B,MAAQ,CAAC,IADF,KAAK,QAAQ,mCAAmC,GAAK,KAAK,eAAe,eAAiB,KAAK,eACrF,iBAAiB,UAAU,CAAC,EAAE,OAAQ,GAAM,EAAE,cAAc,mBAAmB,CAAC,EACjG,MAAQ,MAAM,IAAK,GAAM,CAAE,MAAM,EAAI,EAAE,cAAc,mBAAmB,EAAG,MAAO,CAAE,IAAK,EAAE,KAAM,MAAO,EAAE,YAAY,KAAK,EAAG,IAAK,UAAU,EAAE,cAAc,iBAAiB,GAAK,EAAE,cAAc,iBAAiB,CAAC,CAAE,CAAG,CAAC,EAC3N,IAAM,MAAM,QAAQ,IAAI,EAC1B,IAAM,IACV,EAAE,eAAe,EACjB,KAAK,MAAO,IAAK,CAAE,OAAQ,EAAG,KAAM,KAAK,cAAc,iBAAiB,GAAK,IAAK,CAAC,EACrF,EAAG,EAAI,EAGP,SAAS,iBAAiB,aAAe,GAAM,CAC7C,GAAI,CAAC,MAAM,SAAW,GAAI,OAC1B,MAAM,EAAI,EAAE,OAAO,SAAW,EAAE,OAAO,QAAQ,gCAAgC,EAC1E,IACL,WAAW,EACX,UAAU,EAAE,QAAQ,UAAU,EAAE,cAAc,mBAAmB,GAAG,MAAQ,EAAE,IAAI,EACpF,EAAG,CAAE,QAAS,GAAM,QAAS,EAAK,CAAC,EACnC,OAAO,iBAAiB,OAAQ,IAAM,CAAM,MAAM,SAAW,SAAS,cAAc,UAAU,GAAG,KAAK,IAAM,WAAW,CAAC,CAAG,CAAC,CAE9H,GAAG",
  "names": []
}
