{
  "version": 3,
  "sources": ["/cdn/shop/t/62/assets/britten-yb-page.js?cb=1790936149978"],
  "sourcesContent": ["/* ================================================================\n   BRITTEN CUSTOM: Your Britten, Saved page extras (Compare, Preferences, the shared date rule)\n   ================================================================\n   Added:     30 Sep 2026 (S2, S3b)\n   Author:    Claude / Matthew\n   Location:  assets/britten-yb-page.js (+ .css), loaded by snippets/britten-yb-saved.liquid only\n   Spec:      docs/britten-core-CONTRACT.md (\"S2 / S3b notes\", sections 13 to 20)\n\n   PURPOSE:\n   Compare: tick saved veils, a table of up to three. Preferences: the #preferences card, letters\n   consent, data download, account deletion, sign out. Shared with the other Saved page scripts through\n   window.BrittenYbPage: fmt (the date rule), stepUp (the code form), timed (the 20-second limit), mask, loc.\n   Your orders moved to assets/britten-yb-orders.js (step 2).\n\n   HOW IT WORKS:\n   britten-your-britten.js builds the cards and exposes nothing, so this file watches\n   [data-yb-grid] and reads only what it leaves in the DOM. Every word is a locale key.\n\n   CHANGELOG (details in docs/britten-core-CONTRACT.md):\n   - 30 Sep to 2 Oct 2026: S2 + S3b, Your orders, fix-ups (sections 12 to 18).\n   - 3 Oct 2026: redesign step 1 (19): masked email in the account card, toasts, \"Not set\" quieter, the Compare tick.\n   - 3 Oct 2026: step 2 (20): Your orders moved out; BrittenYbPage.fmt, the one date rule (the market's order, the year\n     only when not this year, a weekday for a day within a week, \"8\u20139 October\"), used by Preferences.\n   - 3 Oct 2026: step 3 (21): the \"Please sign in again\" notice (setting britten_yb_session_notice); the Compare \"Arrives\"\n     cells use fmt; BrittenYbPage also lends mask and loc.\n   - 4 Oct 2026: QA fixes (22): \"Not now\" puts focus on the chosen tab.\n   - 5 Oct 2026: ?compare=a,b,c from a product page opens the table with those veils, saved or not (deepLink); closing strips it.\n   - 15 Oct 2026: crops aim at the bride (fp, marketing_131); no fp = old crop.\n   ================================================================ */\n(function () {\n  'use strict';\n\n  // === CONFIGURATION ===\n  var FEATURE_ENABLED = true;\n  var DEBUG_MODE = false;\n\n  var CFG = window.BrittenCoreConfig;\n  if (!FEATURE_ENABLED || !CFG || !CFG.flags || !CFG.flags.yourBritten) return;\n  if (!window.Promise || !window.fetch || !document.querySelector('[data-yb-saved]')) return;\n\n  var SIGN = !!CFG.flags.signin;                // sign-in switch: off, the session-only markup is not on the page\n  var TOOL = 'your-britten';\n  var SLOT = 'yb';                              // the tool slot britten-your-britten.js registers\n  var CONSENT_VERSION = '';                     // wording version of the letters tick: data-yb-consent-version in the snippet\n  var TS_SRC = 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit';\n  var MAX_PICKS = 3;\n  var FRESH_MS = 9 * 60 * 1000;                 // export and delete: the server wants a code under 10 minutes old\n  var ROOT = String(CFG.rootUrl || '/').replace(/\\/+$/, '');\n  var HUB = String(CFG.supportHubUrl || 'https://brittensupporthub.netlify.app').replace(/\\/+$/, '');\n  var SHARED = /[?&]s=/.test(window.location.search);   // the read-only ?s= view has neither\n  var DASH = '\\u2014';\n  var LADDER = [[48, 'shoulder'], [74, 'elbow'], [122, 'fingertip'], [150, 'waltz'], [200, 'floor'], [250, 'chapel'], [300, 'cathedral']];\n  var ROWS = ['length', 'edge', 'tiers', 'style', 'fabric', 'embellishment', 'colour', 'width', 'arrives', 'returns'];\n  var TOP = { dress: ['edge', 'fabric', 'tiers'], full: ['tiers', 'width', 'fabric', 'style'] };\n\n  var core = null;\n  var i18n = null;   // the name must end in i18n: scripts/i18n-js-keys-check.py finds call sites by it\n  var AT = {}, BR = {}, PC = {}, BC = {}, PF = {}, el = {};\n  var S = { sel: {}, seen: {}, ty: {}, rows: {}, sig: '', tk: '' };\n\n  // === HELPERS ===\n  function log(m) { if (DEBUG_MODE && window.console) console.log('[Britten YB page]', m); }\n  function $(s, c) { return (c || document).querySelector(s); }\n  function $$(s, c) { return Array.prototype.slice.call((c || document).querySelectorAll(s)); }\n  function cl(e, s) { return e && e.closest ? e.closest(s) : null; }\n  function h(tag, cls, txt, role) {\n    var e = document.createElement(tag);\n    if (cls) e.className = cls;\n    if (txt) e.textContent = txt;\n    if (role) e.setAttribute('role', role);\n    return e;\n  }\n  function uniq(a) { return a.filter(function (x, i) { return x && a.indexOf(x) === i; }); }\n  function ymd(d) { function z(n) { return (n < 10 ? '0' : '') + n; } return d.getFullYear() + '-' + z(d.getMonth() + 1) + '-' + z(d.getDate()); }   // YYYY-MM-DD, local time\n  function cut(s, n) { s = s.slice(0, n); return /[\\ud800-\\udbff]$/.test(s) ? s.slice(0, -1) : s; }   // never end on half an emoji\n  function parseISO(s) { var m = /^(\\d{4})-(\\d\\d)-(\\d\\d)$/.exec(s || ''); return m ? new Date(+m[1], +m[2] - 1, +m[3]) : null; }\n  function json(n) { try { return JSON.parse(n.textContent); } catch (e) { return {}; } }\n  function ssGet(k) { try { return JSON.parse(window.sessionStorage.getItem(k)); } catch (e) { return null; } }\n  function signedIn() { var s = core.session.state(); return !!(s && s.signedIn); }\n  function mask(e) { var a = String(e || '').indexOf('@'); return a > 0 ? e.charAt(0) + '\\u2022\\u2022\\u2022' + e.slice(a) : ''; }   // s\u2022\u2022\u2022@example.com\n  function say(text, link, href) { core.toast({ text: text, linkText: link, linkHref: href }); }\n  function emit(name, payload) { payload.tool = TOOL; core.events.emit(name, payload); }\n  var LOC = /^en/i.test(CFG.locale || 'en') ? { us: 'en-US', ca: 'en-CA', au: 'en-AU', nz: 'en-NZ' }[CFG.market] || 'en-GB' : CFG.locale;\n  // One date rule for the page: the market's own order (\"6 October\"), the year only when it is not this year, a\n  // single day up to 7 days ahead with a short weekday (\"Tue 6 October\"), opts.to for a range (\"8\u20139 October\").\n  // An ISO date, an ISO date-time or a Date; '' when it is none of them.\n  function day(v) { var d = v instanceof Date ? v : parseISO(v) || new Date(v || NaN); return isNaN(d.getTime()) ? null : d; }\n  function fmt(a, o) {\n    var d = day(a), e = o && day(o.to), t = new Date(), y = t.getFullYear(), f = { day: 'numeric', month: 'long' }, k, A, B;\n    function str(p) { return p.map(function (x) { return x.value; }).join(''); }\n    if (!d) return '';\n    if (e && e.toDateString() === d.toDateString()) e = null;\n    if (d.getFullYear() !== y || (e && e.getFullYear() !== y)) f.year = 'numeric';\n    A = new Intl.DateTimeFormat(LOC, f);\n    if (!e) {\n      t.setHours(0, 0, 0, 0);\n      k = Math.round((new Date(d.getFullYear(), d.getMonth(), d.getDate()) - t) / 864e5);\n      return k > 0 && k < 8 ? new Intl.DateTimeFormat(LOC, { weekday: 'short', day: 'numeric', month: 'long', year: f.year }).format(d) : A.format(d);\n    }\n    B = A.formatToParts(e);\n    A = A.formatToParts(d);\n    if (d.getMonth() !== e.getMonth() || d.getFullYear() !== e.getFullYear()) return str(A) + '\u2013' + str(B);   // 30 September\u20132 October\n    k = A.filter(function (x) { return x.type === 'day'; })[0].value;\n    return str(B.map(function (x) { return x.type === 'day' ? { value: k + '\u2013' + x.value } : x; }));\n  }\n  function money(pence) {\n    var f = Math.round(pence) % 100 === 0 ? 0 : 2;\n    return new Intl.NumberFormat(LOC, { style: 'currency', currency: CFG.currency || 'GBP', minimumFractionDigits: f, maximumFractionDigits: f }).format(pence / 100);\n  }\n  function cdn(u, w) {\n    u = String(u || '');\n    return /cdn\\.shopify\\.com|\\/cdn\\/shop\\//.test(u) && u.indexOf('width=') < 0 ? u + (u.indexOf('?') < 0 ? '?' : '&') + 'width=' + w : u;\n  }\n\n  // --- COMPARE (S2) ---\n\n  // <root>/products/<handle>.js, as the Saved page fetches it, plus what compare needs.\n  function parseProd(j) {\n    var d = { li: -1, ci: -1, sp: {}, id: j.id, t: j.title || '', ty: j.type || '', img: j.featured_image || (j.images && j.images[0]) || '' };\n    (j.options || []).forEach(function (o, i) {\n      var n = typeof o === 'string' ? o : o.name;\n      if (d.li < 0 && /length|how long/i.test(n)) d.li = i;\n      if (d.ci < 0 && /colou?r/i.test(n)) d.ci = i;\n    });\n    d.tags = Array.isArray(j.tags) ? j.tags : String(j.tags || '').split(/,\\s*/);\n    d.vs = (j.variants || []).map(function (v) {\n      return { id: Number(v.id), av: !!v.available, pr: Number(v.price), o: v.options || [v.option1, v.option2, v.option3].filter(Boolean) };\n    });\n    try {   // <div class=\"britten-specs\"><ul><li>Label: value, from an inert parsed copy\n      $$('.britten-specs li', new DOMParser().parseFromString(j.description || '', 'text/html')).forEach(function (li) {\n        var m = /^\\s*([^:]+):\\s*([\\s\\S]+)$/.exec(li.textContent);\n        if (m) d.sp[m[1].trim().toLowerCase()] = m[2].replace(/\\s+/g, ' ').trim();\n      });\n    } catch (e) { log(e); }\n    return d;\n  }\n  function loadProd(handle) {\n    if (!PC[handle]) {\n      PC[handle] = fetch(ROOT + '/products/' + encodeURIComponent(handle) + '.js', { credentials: 'same-origin', headers: { Accept: 'application/json' } })\n        .then(function (r) { return r.ok ? r.json() : null; })\n        .then(function (j) { return j ? parseProd(j) : null; }, function () { return null; })\n        .then(function (d) { if (!d) delete PC[handle]; return d; })\n        .then(null, function () { delete PC[handle]; return null; });   // a throw in parseProd must not cache a rejection\n    }\n    return PC[handle];\n  }\n  // Real Brides photo: britten-pdp-brides-<last digit of the id>.json, products[id].e[]\n  function photoFor(id) {\n    var dg = String(id).slice(-1);\n    if (!BR[dg]) return Promise.resolve('');\n    if (!BC[dg]) {\n      BC[dg] = fetch(BR[dg]).then(function (r) { return r.ok ? r.json() : null; })\n        .then(function (j) { return (j && j.products) || {}; }, function () { return {}; });\n    }\n    return BC[dg].then(function (ps) {\n      var e = ((ps[id] || {}).e || []).filter(function (x) { return x.k === 'b' && !x.hid && x.q >= 8; });\n      var pk = e.filter(function (x) { return x.h > x.w; })[0] || e.sort(function (a, b) { return b.q - a.q; })[0];\n      if (!pk) return '';\n      var u = cdn(pk.u, 600), f = pk.fp;   // fp: 2 numbers 0..100\n      if (f && f.length === 2 && f[0] >= 0 && f[0] <= 100 && f[1] >= 0 && f[1] <= 100) PF[u] = (+f[0]) + '% ' + (+f[1]) + '%';\n      return u;\n    });\n  }\n  // The type, remembered per handle: the Saved page's cache, else asked once. null = not known yet; undefined = ask again.\n  function isVeil(handle) {\n    var ty = S.ty[handle], c;\n    if (ty === undefined) {\n      c = ssGet('yb:p:' + ROOT + ':' + handle);\n      ty = S.ty[handle] = c && c.d && typeof c.d.ty === 'string' ? c.d.ty : null;\n      if (ty === null) loadProd(handle).then(function (d) { S.ty[handle] = d ? d.ty : undefined; if (d) later(); });   // a failure retries on the next sync, not in a loop\n    }\n    return ty === null ? null : /^wedding veil$/i.test(ty);\n  }\n\n  function cmOf(s) { var m = String(s).match(/(\\d+(?:\\.\\d+)?)\\s*cm/gi); return m ? parseFloat(m[m.length - 1]) : 0; }   // the LAST cm: \"72cm + 250cm\" is blusher + main\n  function near(cm) {\n    var b = LADDER[0], i;\n    for (i = 1; i < LADDER.length; i++) { if (Math.abs(LADDER[i][0] - cm) < Math.abs(b[0] - cm)) b = LADDER[i]; }\n    return b[1];\n  }\n  // i18n-keys-prefix: js.yb.length_\n  function lname(k) {\n    return k === 'chapel' ? i18n.t(CFG.market === 'us' ? 'js.length.church_us' : 'js.length.church') : i18n.t('js.yb.length_' + (k === 'waltz' ? 'ballet' : k));\n  }\n  function variantOf(d, id) {\n    for (var i = 0; i < d.vs.length; i++) { if (d.vs[i].id === Number(id)) return d.vs[i]; }\n    return null;\n  }\n  function direct(it, v) {   // the Saved page's rule for a direct add\n    if (!v || !v.av || it.custom_length_cm) return false;\n    var p = it.properties || {}, k;\n    for (k in p) { if (k !== 'Returns') return false; }\n    return true;\n  }\n  function labels(f, d) {\n    return uniq(d.tags.map(function (t) { return (AT[f] || {})[String(t).toLowerCase()]; }));\n  }\n  function ckey(s) {\n    s = String(s).toLowerCase();\n    return /off[\\s-]*white/.test(s) ? 'off white' : /pale/.test(s) ? 'pale ivory' : /champagne/.test(s) ? 'champagne' : /ivory/.test(s) ? 'ivory' : '';\n  }\n  function optVals(d, i) { return i < 0 ? [] : uniq(d.vs.map(function (v) { return v.o[i]; })); }\n  function lengths(c) {\n    var d = c.d, it = c.it, v = variantOf(d, it.variant_id), ul = h('ul', 'yb-cmp__chips'), seen = {}, cur = v && d.li >= 0 && !it.custom_length_cm ? v.o[d.li] : '';\n    optVals(d, d.li).forEach(function (s) {\n      var cm = cmOf(s), lab = cm ? lname(near(cm)) + ' ' + (core.prefs.get('unit') === 'in' ? Math.round(cm / 2.54) + i18n.t('js.length.unit_in') : cm + i18n.t('js.length.unit_cm')) : String(s).replace(/\\s*\\(.*$/, ''), li;\n      if (/custom/i.test(s) || seen[lab]) return;\n      seen[lab] = 1;\n      li = h('li', 'yb-cmp__chip', lab);\n      if (cur && (s === cur || (cm && cm === cmOf(cur)))) {\n        li.className += ' yb-cmp__chip--saved';\n        li.setAttribute('aria-current', 'true');\n        li.appendChild(h('span', 'yb-sr', ' (' + i18n.t('js.yb.cmp_saved_length') + ')'));\n      }\n      ul.appendChild(li);\n    });\n    return ul.children.length ? ul : '';\n  }\n  function cell(row, c) {\n    var d = c.d, a, est, dt;\n    if (!d) return '';\n    switch (row) {\n      case 'length': return lengths(c);\n      case 'edge': a = labels('edge', d); return a.length ? a.join(', ') : d.sp['edge finish'] || '';\n      case 'embellishment': return labels(row, d).join(', ') || i18n.t('js.yb.cmp_none');\n      case 'colour': return uniq(optVals(d, d.ci).map(function (s) { return (AT.colour || {})[ckey(s)] || String(s).replace(/\\s*\\(.*$/, ''); })).join(', ') || labels(row, d).join(', ');   // the colour tags when there is no Colour option\n      case 'width': return d.sp.width || '';\n      case 'arrives':\n        est = core.delivery.estimate(core.prefs.get('delivery_country'), d.tags);\n        dt = parseISO(est && est.standard && est.standard.maxISO);\n        return dt ? fmt(dt) : '';\n      case 'returns':\n        return c.it.custom_length_cm || d.tags.some(function (t) { return String(t).toLowerCase() === 'norefunds'; })\n          ? i18n.t('js.yb.cmp_returns_no') : i18n.t('js.cart.microcopy_returns_default');\n      default: return labels(row, d).join(', ');   // tiers, style, fabric\n    }\n  }\n\n  function addToBag(btn, it) {   // the Saved page's request\n    var line = { id: it.variant_id, quantity: 1 }, p = it.properties || {}, k, label = btn.textContent;\n    for (k in p) { line.properties = p; break; }\n    btn.disabled = true;\n    btn.textContent = i18n.t('js.yb.card_adding');\n    fetch(ROOT + '/cart/add.js', {\n      method: 'POST', credentials: 'same-origin',\n      headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n      body: JSON.stringify({ items: [line] })\n    }).then(function (r) {\n      if (!r.ok) throw new Error('add ' + r.status);\n      return r.json();\n    }).then(function () {\n      if (!window._brittenRefreshCartSection) { window.location.href = ROOT + '/cart'; return; }\n      window._brittenRefreshCartSection();\n      btn.disabled = false;\n      btn.textContent = label;\n      say(i18n.t('js.yb.card_added'), i18n.t('js.yb.card_view_bag'), ROOT + '/cart');\n    }).then(null, function () {\n      btn.disabled = false;\n      btn.textContent = label;\n      say(i18n.t('js.yb.card_add_failed'));\n    });\n  }\n  function head(c) {\n    var d = c.d, it = c.it, v = d && variantOf(d, it.variant_id), url = c.h ? ROOT + '/products/' + c.h + (it.variant_id ? '?variant=' + it.variant_id : '') : '';\n    var col = h('div', 'yb-cmp__col', '', 'columnheader'), m = h('div', 'yb-cmp__media'), src = c.photo || cdn((d && d.img) || it.image, 600), n = h('p', 'yb-cmp__name'), p = d ? d.vs.map(function (x) { return x.pr; }).filter(isFinite) : [], a, b;\n    if (src) { a = h('img'); a.src = src; a.alt = ''; if (c.photo && src === c.photo && PF[src]) a.style.objectPosition = PF[src]; m.appendChild(a); }\n    col.appendChild(m);\n    if (url) { a = h('a', '', (d && d.t) || it.title); a.href = url; n.appendChild(a); } else { n.textContent = it.title || ''; }\n    col.appendChild(n);\n    if (p.length) col.appendChild(h('p', 'yb-cmp__price', Math.min.apply(null, p) === Math.max.apply(null, p) ? money(p[0]) : i18n.t('js.yb.cmp_from', { price: money(Math.min.apply(null, p)) })));\n    if (!d) col.appendChild(h('p', 'yb-note', i18n.t('js.yb.try_again')));   // the details did not come: say so, calmly\n    if (direct(it, v)) {\n      b = h('button', 'yb-btn yb-btn--primary', i18n.t('js.yb.card_add', { price: money(v.pr) }));\n      b.type = 'button';\n      b.onclick = function () { addToBag(b, it); };\n    } else if (url) {\n      b = h('a', 'yb-btn', i18n.t('js.yb.card_choose'));\n      b.href = url;\n    }\n    if (b) col.appendChild(b);\n    return col;\n  }\n  function pills() {\n    var f = core.store.get(SLOT, 'compareFocus', '');\n    $$('[data-yb-cmp-focus]', el.cmp).forEach(function (b) { b.setAttribute('aria-pressed', b.getAttribute('data-yb-cmp-focus') === f ? 'true' : 'false'); });\n  }\n  function place(animate) {   // rows in order: the chosen question's rows first; a 150ms slide to get there\n    var top = TOP[core.store.get(SLOT, 'compareFocus', '')] || [], ids = ROWS.filter(function (r) { return S.rows[r]; }), was = {};\n    ids = top.filter(function (r) { return ids.indexOf(r) > -1; }).concat(ids.filter(function (r) { return top.indexOf(r) < 0; }));\n    pills();\n    if (!S.body) return;\n    if (animate) ids.forEach(function (id) { was[id] = S.rows[id].getBoundingClientRect().top; });\n    ids.forEach(function (id) { S.body.appendChild(S.rows[id]); });\n    if (animate) {\n      ids.forEach(function (id) {\n        var r = S.rows[id], dy = was[id] - r.getBoundingClientRect().top;\n        if (!dy) return;\n        r.style.transition = 'none';\n        r.style.transform = 'translateY(' + dy + 'px)';\n        r.getBoundingClientRect();\n        r.style.transition = 'transform 150ms ease';\n        r.style.transform = '';\n      });\n    }\n  }\n  function build(cols) {\n    var tb = h('div', 'yb-cmp', '', 'table'), hd = h('div', 'yb-cmp__row yb-cmp__row--head', '', 'row');   // i18n-keys-prefix: js.yb.cmp_row_\n    tb.setAttribute('aria-labelledby', 'yb-compare-title');\n    tb.style.setProperty('--yb-n', cols.length);\n    hd.appendChild(h('div', 'yb-cmp__label')).setAttribute('aria-hidden', 'true');\n    cols.forEach(function (c) { hd.appendChild(head(c)); });\n    tb.appendChild(hd);\n    S.body = tb.appendChild(h('div', 'yb-cmp__body', '', 'rowgroup'));\n    S.rows = {};\n    ROWS.forEach(function (id) {\n      var vals = cols.map(function (c) { return cell(id, c); }), r;\n      if (id === 'width' && !vals.some(Boolean)) return;   // only when a column has one\n      r = S.rows[id] = h('div', 'yb-cmp__row', '', 'row');\n      r.appendChild(h('div', 'yb-cmp__label', i18n.t('js.yb.cmp_row_' + id), 'rowheader'));\n      vals.forEach(function (v) {\n        var td = r.appendChild(h('div', 'yb-cmp__cell', '', 'cell'));\n        if (v && v.nodeType) { td.appendChild(v); } else { td.textContent = v || DASH; }\n      });\n    });\n    el.scroll.textContent = '';\n    el.scroll.appendChild(tb);\n    place(false);\n    fade();\n  }\n  function fade() {   // mobile: the soft right edge shows while more columns wait off-screen (CSS draws it from this class)\n    var s = el.scroll;\n    el.cmp.classList.toggle('yb-compare--more', s.scrollWidth - s.clientWidth > 2 && s.scrollLeft + s.clientWidth < s.scrollWidth - 2);\n  }\n\n  function picks() { return S.link || Object.keys(S.sel).map(function (k) { return S.sel[k]; }); }   // S.link: the ?compare= veils, in order, saved or not\n  function show() {\n    var tk = S.tok = {};\n    el.wait.textContent = i18n.t('js.yb.cmp_loading');\n    el.wait.hidden = false;\n    el.cmp.setAttribute('aria-busy', 'true');\n    return Promise.all(picks().map(function (pk) {\n      return loadProd(pk.h).then(function (d) {\n        return (d ? photoFor(d.id) : Promise.resolve('')).then(function (ph) { return { it: pk.it, h: pk.h, d: d, photo: ph }; });\n      });\n    })).then(function (cols) {\n      if (tk !== S.tok) return;\n      el.wait.hidden = true;\n      el.cmp.removeAttribute('aria-busy');\n      build(cols);\n    });\n  }\n  function openCmp() {\n    var n = picks().length;\n    if (n < 2) { say(i18n.t('js.yb.cmp_need_two')); return; }\n    S.open = true;\n    if ((S.dlg = !!window.matchMedia && window.matchMedia('(max-width: 798px)').matches)) {   // the full-screen layer is a modal dialog\n      el.cmp.setAttribute('role', 'dialog');\n      el.cmp.setAttribute('aria-modal', 'true');\n    }\n    el.cmp.hidden = false;\n    el.btn.setAttribute('aria-expanded', 'true');\n    document.documentElement.classList.add('yb-compare-lock');   // mobile: a full-screen layer\n    pills();\n    el.title.focus();\n    emit('compare_open', { count: n, surface: 'saved' });\n    show();\n  }\n  function closeCmp(back) {\n    S.open = S.dlg = false;\n    if (S.link) later();   // the button's count follows her ticks again\n    S.tok = S.link = null;\n    unlink();\n    el.cmp.setAttribute('role', 'region');\n    el.cmp.removeAttribute('aria-modal');\n    el.cmp.hidden = true;\n    el.btn.setAttribute('aria-expanded', 'false');\n    document.documentElement.classList.remove('yb-compare-lock');\n    if (back !== false) el.btn.focus();\n  }\n  var tm = 0;\n  function later() { clearTimeout(tm); tm = setTimeout(sync, 60); }\n  function sync() {   // ticks on veil cards, the toolbar button, the open table\n    var veils = 0, sig, n;\n    $$('.yb-card', el.grid).forEach(function (c) {\n      var b = $('[data-yb-remove]', c), a = $('.yb-card__name a', c), m = a && /\\/products\\/([^\\/?#]+)/.exec(a.getAttribute('href') || ''), k, v, pk;\n      if (!b || !m) return;\n      k = { id: b.getAttribute('data-yb-remove'), h: decodeURIComponent(m[1]) };\n      v = isVeil(k.h);\n      if (v === null) return;\n      S.seen[k.id] = v ? k.h : '';\n      pk = $('.yb-cmp-pick', c);\n      if (!v) { if (pk) pk.parentNode.removeChild(pk); return; }\n      if (!pk) {\n        pk = h('label', 'yb-cmp-pick');\n        pk.innerHTML = '<input type=\"checkbox\"><span></span>';\n        pk.firstChild.setAttribute('aria-label', i18n.t('js.yb.cmp_pick_aria', { name: a.textContent }));\n        pk.lastChild.textContent = i18n.t('js.yb.cmp_pick');\n        $('.yb-card__actions', c).appendChild(pk);\n      }\n      pk._k = k;\n      $('input', pk).checked = !!S.sel[k.id];\n    });\n    core.items.list().forEach(function (it) { if (it.kind === 'product' && S.seen[it.id]) veils++; });\n    Object.keys(S.sel).forEach(function (id) { if (!core.items.has(id)) delete S.sel[id]; });\n    n = picks().length;\n    sig = Object.keys(S.sel).sort().join();\n    el.btn.hidden = veils < 2;\n    el.btn.setAttribute('aria-disabled', n < 2 ? 'true' : 'false');\n    el.btn.textContent = el.btn.getAttribute('data-yb-label') + (n ? ' (' + n + ')' : '');\n    if (S.open && !S.link) { if (veils < 2 || n < 2) { closeCmp(false); } else if (sig !== S.sig) { show(); } }\n    S.sig = sig;\n  }\n  function unlink() {   // the ?compare= param goes once the table closes: a refresh must not reopen it\n    var u = new URL(window.location.href);\n    if (!u.searchParams.has('compare')) return;\n    u.searchParams.delete('compare');\n    try { window.history.replaceState(window.history.state, '', u.pathname + u.search + u.hash); } catch (e) { log(e); }\n  }\n  // ?compare=a,b,c from a product page: those veils, in that order, saved or not. A saved one uses her saved item (and shows\n  // ticked); any other is read like a saved card's veil (loadProd) and is never added to her list. Under two veils: nothing.\n  function deepLink() {\n    var hs = uniq(String(new URLSearchParams(window.location.search).get('compare') || '').split(',').filter(function (x) { return /^[a-z0-9][a-z0-9-]{0,200}$/.test(x); })).slice(0, 3);\n    if (hs.length < 2) return;\n    Promise.all(hs.map(loadProd)).then(function (ds) {\n      var mine = core.items.list({ kind: 'product' }), ps = [];\n      ds.forEach(function (d, i) {\n        var it = d && /^wedding veil$/i.test(d.ty) && (mine.filter(function (x) { return x.product_id === d.id; })[0] || { title: d.t });\n        if (it) ps.push({ it: it, h: hs[i] });\n      });\n      if (ps.length < 2 || S.open) return;\n      ps.forEach(function (p) { if (p.it.id) S.sel[p.it.id] = p; });\n      S.link = ps;\n      sync();\n      openCmp();\n      emit('yb_compare_from_link', { count: ps.length });\n    });\n  }\n  function initCompare() {\n    el.cmp = $('[data-yb-compare]');\n    el.btn = $('[data-yb-cmp-open]');\n    el.grid = $('[data-yb-grid]');\n    el.title = $('#yb-compare-title');\n    el.wait = $('[data-yb-cmp-wait]');\n    el.scroll = $('[data-yb-cmp-scroll]');\n    if (!el.cmp || !el.btn || !el.grid) return;\n    $$('[data-yb-attrs] li').forEach(function (li) { var f = li.getAttribute('data-f'); (AT[f] = AT[f] || {})[li.getAttribute('data-t')] = li.textContent; });\n    BR = json($('[data-yb-brides]'));\n    el.btn.setAttribute('data-yb-label', el.btn.textContent);\n    el.btn.addEventListener('click', function () { if (S.open) { closeCmp(); } else { openCmp(); } });\n    $('[data-yb-cmp-close]', el.cmp).addEventListener('click', function () { closeCmp(); });\n    el.scroll.addEventListener('scroll', fade, { passive: true });\n    window.addEventListener('resize', fade);\n    el.cmp.addEventListener('click', function (e) {\n      var b = cl(e.target, '[data-yb-cmp-focus]'), f = b && b.getAttribute('data-yb-cmp-focus');\n      if (!b) return;\n      core.store.set(SLOT, 'compareFocus', core.store.get(SLOT, 'compareFocus', '') === f ? '' : f);\n      place(true);\n    });\n    document.addEventListener('keydown', function (e) {\n      var f, i, a = document.activeElement, out;\n      if (!S.open) return;\n      if (e.key === 'Escape') { closeCmp(); return; }\n      if (e.key !== 'Tab' || !S.dlg) return;   // the trap: Tab stays inside the layer\n      f = $$('a[href],button:not([disabled])', el.cmp);\n      i = f.indexOf(a);\n      out = !el.cmp.contains(a);\n      if (f.length && (e.shiftKey ? out || i < 1 : out || i === f.length - 1)) {\n        e.preventDefault();\n        f[e.shiftKey ? f.length - 1 : 0].focus();\n      }\n    });\n    el.grid.addEventListener('change', function (e) {\n      var pk = cl(e.target, '.yb-cmp-pick'), k = pk && pk._k, it = k && core.items.has(k.id);\n      if (!it) return;\n      S.link = null;   // her own ticks take over from the link\n      if (!e.target.checked) {\n        delete S.sel[k.id];\n      } else if (picks().length >= MAX_PICKS) {\n        e.target.checked = false;\n        say(i18n.t('js.yb.cmp_limit'));\n        return;\n      } else {\n        S.sel[k.id] = { it: it, h: k.h };\n      }\n      sync();\n    });\n    if (window.MutationObserver) new window.MutationObserver(later).observe(el.grid, { childList: true, subtree: true });\n    document.addEventListener('britten:items:change', later);\n    sync();\n    deepLink();\n  }\n\n  // --- PREFERENCES (S3b) ---\n  function pickField(name, loose) {   // a select: the value shown is the option's own label\n    function opt(r) {\n      var v = core.prefs.get(name), o = v ? $$('option', r).filter(function (x) { return loose ? ckey(x.value) && ckey(x.value) === ckey(v) : x.value === v; }) : [];\n      return o[0];\n    }\n    return {\n      text: function (r) { var o = opt(r); return o ? o.textContent : ''; },\n      fill: function (r, i) { var o = opt(r); i.value = o ? o.value : ''; },\n      save: function (r, i) { return core.prefs.set(name, i.value || null); }\n    };\n  }\n  function setUnit(r, u) { $$('[data-yb-pref-unit]', r).forEach(function (b) { b.setAttribute('aria-pressed', b.getAttribute('data-yb-pref-unit') === u ? 'true' : 'false'); }); }\n  function unitOf(r) { var b = $('[data-yb-pref-unit][aria-pressed=\"true\"]', r); return b ? b.getAttribute('data-yb-pref-unit') : 'cm'; }\n  var FIELDS = {\n    wedding_date: {\n      text: function () { return fmt(core.prefs.get('wedding_date')); },\n      fill: function (r, i) {\n        var t = new Date();\n        i.min = ymd(t);\n        i.max = ymd(new Date(t.getFullYear() + 3, t.getMonth(), t.getDate()));\n        i.value = core.prefs.get('wedding_date') || '';\n      },\n      save: function (r, i) { var v = i.value; return (!v || (v >= i.min && v <= i.max)) && core.prefs.set('wedding_date', v || null); }\n    },\n    length_style: pickField('length_style', false),\n    colour: pickField('colour', true),\n    delivery_country: pickField('delivery_country', false),\n    dress_designer: {\n      text: function () { return core.prefs.get('dress_designer') || ''; },\n      fill: function (r, i) { i.value = core.prefs.get('dress_designer') || ''; },\n      save: function (r, i) { return core.prefs.set('dress_designer', cut(i.value.trim(), 60) || null); }\n    },\n    height_cm: {\n      text: function () {\n        var c = core.prefs.get('height_cm');\n        if (!c) return '';\n        return core.prefs.get('unit') === 'in' ? Math.round(c / 2.54) + ' ' + i18n.t('js.length.unit_in') : c + ' ' + i18n.t('js.length.unit_cm');\n      },\n      fill: function (r, i) {\n        var c = core.prefs.get('height_cm'), u = core.prefs.get('unit') || 'cm';\n        setUnit(r, u);\n        i.value = c ? (u === 'in' ? Math.round(c / 2.54) : c) : '';\n      },\n      save: function (r, i) {\n        var u = unitOf(r), v = parseFloat(i.value);\n        return core.prefs.set('height_cm', isNaN(v) ? null : Math.round(u === 'in' ? v * 2.54 : v)) && core.prefs.set('unit', u);\n      }\n    }\n  };\n  function flash(node, text, ms) {\n    var n = $('[data-yb-pref-msg]', node);\n    clearTimeout(n._t);\n    n.textContent = text;\n    if (ms) n._t = setTimeout(function () { n.textContent = ''; }, ms);\n  }\n  function paint() {\n    $$('[data-yb-pref-row]', el.prefs).forEach(function (r) {\n      var name = r.getAttribute('data-yb-pref-row'), v = core.prefs.get(name), t, n;\n      if (!FIELDS[name]) return;\n      t = FIELDS[name].text(r);\n      if (!t && name === 'length_style') t = v === 'blusher' ? i18n.t('js.yb.length_blusher') : v === 'waist' ? i18n.t('js.yb.length_waist') : '';\n      t = t || (name === 'colour' && v) || '';\n      n = $('[data-yb-pref-val]', r);\n      n.textContent = t || i18n.t('js.yb.pref_not_set');\n      if (t) n.removeAttribute('data-empty'); else n.setAttribute('data-empty', '');   // \"Not set\" is drawn quieter\n    });\n    if (SIGN) {\n      $('[data-yb-pref-order]', el.prefs).hidden = !(signedIn() && core.store.get(SLOT, 'hasOrdered', false));\n      $('[data-yb-signed-as]', el.prefs).textContent = mask((core.session.state().bride || {}).email);   // the account card\n    }\n  }\n  function edit(r, on) {\n    var f = $('[data-yb-pref-form]', r), b = $('[data-yb-pref-edit]', r), i = $('[data-yb-pref-in]', r);\n    if (on) {\n      FIELDS[r.getAttribute('data-yb-pref-row')].fill(r, i);\n      flash(r, '');\n    }\n    f.hidden = !on;\n    b.hidden = on;\n    (on ? i : b).focus();\n  }\n  function saveEdit(r) {\n    var i = $('[data-yb-pref-in]', r);\n    if (!FIELDS[r.getAttribute('data-yb-pref-row')].save(r, i)) { flash(r, i18n.t('js.yb.pref_check')); i.focus(); return; }\n    edit(r, false);\n    paint();\n    flash(r, i18n.t('js.yb.saved'), 2000);\n  }\n\n  // Letters: yb_me to read; yb_consent_set answers { granted } (null = refused or down).\n  function lettersOn(me) {\n    return (me.consents || []).some(function (c) { return c.purpose === 'letters' && c.granted_at && !c.withdrawn_at; });\n  }\n  function readLetters() {\n    var cb = $('[data-yb-pref-letters]', el.prefs), row = cl(cb, '[data-yb-pref-row]');\n    cb.disabled = true;\n    if (!signedIn()) return;\n    if (!CONSENT_VERSION) { flash(row, i18n.t('js.yb.pref_later')); return; }   // never record a tick with no wording version\n    Promise.resolve(core.session.call('yb_me')).then(function (me) {\n      if (!me) { flash(row, i18n.t('js.yb.pref_later')); return; }\n      cb.checked = lettersOn(me);\n      cb.disabled = false;\n      flash(row, '');\n    });\n  }\n  function setLetters(cb) {\n    var want = cb.checked, row = cl(cb, '[data-yb-pref-row]');\n    function done(on, open, ok) {\n      cb.checked = on;\n      cb.disabled = !open;\n      flash(row, ok ? i18n.t('js.yb.saved') : i18n.t('js.yb.pref_later'), ok ? 2000 : 0);\n    }\n    cb.disabled = true;\n    Promise.resolve(core.session.call('yb_consent_set', { p_purpose: 'letters', p_granted: want, p_wording_version: CONSENT_VERSION, p_source: 'prefs' })).then(function (r) {\n      if (r && typeof r.granted === 'boolean') { done(r.granted, true, r.granted === want); return; }\n      return Promise.resolve(core.session.call('yb_me')).then(function (me) { done(me ? lettersOn(me) : !want, !!me, false); });   // refused: show what the server holds\n    });\n  }\n\n  // Step-up: the fresh code the server wants before an export or delete. Messages are the sign-in block's keys.\n  function ps(k) { return $('[data-yb-pstr=\"' + k + '\"]', el.prefs).textContent; }\n  function tsToken() {   // Turnstile as the sign-in block does: on demand, waits up to 4s\n    var k = CFG.turnstileSiteKey, n = 0, s;\n    if (!k) return Promise.resolve('');\n    S.tk = '';\n    function mount() {\n      if (S.wid !== undefined) { window.turnstile.reset(S.wid); return; }\n      S.wid = window.turnstile.render($('[data-yb-pref-ts]', el.step), { sitekey: k, appearance: 'interaction-only', callback: function (t) { S.tk = t; } });\n    }\n    if (window.turnstile) { mount(); } else { s = h('script'); s.src = TS_SRC; s.async = true; s.onload = mount; document.head.appendChild(s); }\n    return new Promise(function (res) {\n      (function poll() { if (S.tk || n++ > 20) { res(S.tk); return; } setTimeout(poll, 200); })();\n    });\n  }\n  // One form for every ask, moved into \"slot\"; \"force\" skips the 9-minute shortcut.\n  function stepUp(slot, force) {\n    var st = core.session.state(), t = st.stepUpAt ? Date.parse(st.stepUpAt) : 0, f = el.step, code = $('[data-yb-pref-code]', f), note = $('[data-yb-pref-step-msg]', f), sent = $('[data-yb-pref-sent]', f);\n    var email = (st.bride && st.bride.email) || '';\n    if (!force && t && Date.now() - t < FRESH_MS) return Promise.resolve(true);\n    if (S.offStep) return Promise.resolve(false);   // a code is already out: a second click must not send another\n    if (f.parentNode !== slot) {\n      $('[data-yb-pref-ts]', f).textContent = '';   // a moved widget reloads: start afresh\n      S.wid = undefined;\n      slot.appendChild(f);\n    }\n    return new Promise(function (res) {\n      function end(ok) { f.hidden = true; S.onStep = S.offStep = null; res(ok); }\n      function why(r, dflt) { note.textContent = ps({ limit: 'msg_limit', network: 'msg_network', email: 'msg_email' }[r] || dflt); }\n      if (!sent._t) sent._t = sent.textContent;\n      sent.textContent = sent._t.replace('{email}', mask(email));\n      code.value = note.textContent = '';\n      f.hidden = false;\n      $('[role=\"heading\"]', f).focus();\n      S.offStep = function () { end(false); };\n      S.onStep = function () {\n        var v = code.value.replace(/\\D/g, '');\n        if (v.length !== 6 || S.vb) return;\n        S.vb = true;\n        Promise.resolve(core.session.verify(email, v)).then(function (r) { return r || { ok: false, reason: 'network' }; }, function () { return { ok: false, reason: 'network' }; }).then(function (r) {\n          S.vb = false;\n          if (r.ok) { end(true); return; }\n          code.value = '';\n          why(r.reason, 'msg_wrong');\n          code.focus();\n        });\n      };\n      tsToken().then(function (tok) { return core.session.stepUp({ turnstileToken: tok }); }).then(function (r) {\n        if (r && r.sent) { code.focus(); } else { why(r && r.reason, 'msg_send'); }\n      });\n    });\n  }\n\n  // go(signal) -> a promise. Settles with dflt after 20 seconds at the latest; where AbortController exists the\n  // request itself is ended too. Used by assets/britten-yb-orders.js and -messages.js.\n  function timed(go, dflt) {\n    var ac = window.AbortController ? new window.AbortController() : null, t;\n    return new Promise(function (res) {\n      t = setTimeout(function () { if (ac) ac.abort(); res(dflt); }, 20000);\n      go(ac && ac.signal).then(res, function () { res(dflt); });\n    }).then(function (v) { clearTimeout(t); return v; });\n  }\n  function exportData() {\n    stepUp(el.stepHome).then(function (ok) { return ok ? Promise.resolve(core.session.call('yb_export')) : 0; }).then(function (j) {\n      var u, a;\n      if (j === 0) return;   // she changed her mind at the code\n      if (!j) { flash(el.acct, i18n.t('js.yb.pref_later')); return; }\n      u = window.URL.createObjectURL(new Blob([JSON.stringify(j, null, 2)], { type: 'application/json' }));\n      a = h('a');\n      a.href = u;\n      a.download = 'your-britten.json';\n      document.body.appendChild(a);\n      a.click();\n      document.body.removeChild(a);\n      setTimeout(function () { window.URL.revokeObjectURL(u); }, 4000);\n      say(ps('toast_download'));\n    });\n  }\n  function deleteAccount() {\n    el.confirm.hidden = true;\n    stepUp(el.stepHome).then(function (ok) {\n      return ok ? Promise.resolve(core.session.call('yb_delete_request')) : 0;\n    }).then(function (r) {\n      if (r === 0) return null;   // she changed her mind at the code\n      if (!r || r.requested !== true) { flash(el.acct, i18n.t('js.yb.pref_later')); return null; }   // refused or down: not done, stay signed in\n      return Promise.resolve(core.session.signOut()).then(function () {\n        say(i18n.t('js.yb.delete_done'));\n        $('#yb-prefs-title').focus();\n      });\n    });\n  }\n  function initStep() {   // the form's own handlers: they travel with it\n    el.step.addEventListener('click', function (e) { var b = cl(e.target, 'button'); if (b && b.hasAttribute('data-yb-pref-step-cancel') && S.offStep) S.offStep(); });\n    el.step.addEventListener('submit', function (e) { e.preventDefault(); if (S.onStep) S.onStep(); });\n    el.step.addEventListener('input', function () { if (S.onStep) S.onStep(); });   // six digits submit themselves\n    el.step.addEventListener('keydown', function (e) { if (e.key === 'Escape' && S.offStep) S.offStep(); });\n  }\n  function initPrefs() {\n    el.prefs = $('[data-yb-prefs]');\n    if (!el.prefs || SHARED) return;\n    if (SIGN) {\n      el.acct = $('.yb-prefs__account', el.prefs);\n      el.step = $('[data-yb-pref-step]', el.prefs);\n      el.stepHome = el.step.parentNode;\n      el.confirm = $('[data-yb-pref-confirm]', el.prefs);\n      CONSENT_VERSION = ($('[data-yb-consent-version]', el.prefs) || el.prefs).getAttribute('data-yb-consent-version') || '';\n      initStep();\n    }\n\n    el.prefs.addEventListener('click', function (e) {\n      var b = cl(e.target, 'button'), r = cl(e.target, '[data-yb-pref-row]'), i, to;\n      if (!b) return;\n      if (b.hasAttribute('data-yb-pref-edit')) { edit(r, true); }\n      else if (b.hasAttribute('data-yb-pref-cancel')) { edit(r, false); }\n      else if (b.hasAttribute('data-yb-pref-unit')) {   // the number follows the unit\n        i = $('[data-yb-pref-in]', r);\n        to = b.getAttribute('data-yb-pref-unit');\n        if (to !== unitOf(r) && i.value) i.value = Math.round(to === 'in' ? i.value / 2.54 : i.value * 2.54);\n        setUnit(r, to);\n      }\n      else if (b.hasAttribute('data-yb-pref-export')) { exportData(); }\n      else if (b.hasAttribute('data-yb-pref-delete')) { el.confirm.hidden = false; $('[data-yb-pref-keep]', el.confirm).focus(); }\n      else if (b.hasAttribute('data-yb-pref-keep')) { el.confirm.hidden = true; $('[data-yb-pref-delete]', el.prefs).focus(); }\n      else if (b.hasAttribute('data-yb-pref-go')) { deleteAccount(); }\n      else if (b.hasAttribute('data-yb-pref-signout')) { Promise.resolve(core.session.signOut()).then(function () { say(ps('toast_signout')); $('#yb-prefs-title').focus(); }); }\n    });\n    el.prefs.addEventListener('submit', function (e) {\n      e.preventDefault();\n      if (e.target.hasAttribute('data-yb-pref-form')) saveEdit(cl(e.target, '[data-yb-pref-row]'));\n    });\n    el.prefs.addEventListener('change', function (e) { if (e.target.hasAttribute('data-yb-pref-letters')) setLetters(e.target); });\n    el.prefs.addEventListener('keydown', function (e) {\n      if (e.key !== 'Escape') return;\n      if (cl(e.target, '[data-yb-pref-form]')) { edit(cl(e.target, '[data-yb-pref-row]'), false); }\n      else if (cl(e.target, '[data-yb-pref-confirm]')) { el.confirm.hidden = true; $('[data-yb-pref-delete]', el.prefs).focus(); }\n    });\n    ['britten:prefs:change', 'britten:store:change'].forEach(function (n) { document.addEventListener(n, paint); });\n    if (SIGN) ['britten:session:change', 'britten:yb:signed-in'].forEach(function (n) { document.addEventListener(n, function () { paint(); readLetters(); }); });\n    paint();\n    el.prefs.hidden = false;\n    if (SIGN) readLetters();\n    if (window.location.hash === '#preferences') el.prefs.scrollIntoView();   // it was hidden when the browser looked for it\n  }\n\n  // The \"Please sign in again\" notice (setting britten_yb_session_notice): the core leaves a one-shot key in sessionStorage\n  // when a refresh ends her session. Shown once, at once or on the next view of this page; never for a sign-out she chose.\n  function initNotice() {\n    var n = $('[data-yb-session-ended]'), r = $('[data-yb-saved]');\n    if (!n || SHARED || !core.flags.on('sessionNotice')) return;\n    function look() {\n      var k = 'britten:yb:ended', on;\n      try { on = window.sessionStorage.getItem(k); window.sessionStorage.removeItem(k); } catch (e) { on = 0; }\n      if (signedIn()) n.hidden = true; else if (on) n.hidden = false;\n    }\n    n.addEventListener('click', function (e) {\n      var b = cl(e.target, 'button'), a = r.getAttribute('data-yb-active');\n      function go() { var i = $('[data-yb-guest] [data-yb-email]', r); if (i) i.focus(); }\n      if (!b) return;\n      if (!b.hasAttribute('data-yb-ended-signin')) { n.hidden = true; if ((b = $('[data-yb-tab][aria-selected=\"true\"]', r))) b.focus({ preventScroll: true }); return; }   // focus does not fall to the page\n      if (a && a !== 'saved') { window.addEventListener('hashchange', function f() { window.removeEventListener('hashchange', f); go(); }); window.location.hash = '#saved'; } else { go(); }\n    });\n    document.addEventListener('britten:session:change', look);\n    look();\n  }\n\n  // --- start ---\n  function init(c) {\n    core = c;\n    i18n = c.i18n;\n    initPrefs();\n    if (!SHARED) initCompare();\n    if (SIGN) initNotice();\n    if (SIGN) {   // the shared code form, time limit and date rule, for assets/britten-yb-orders.js and -messages.js\n      window.BrittenYbPage = { fmt: fmt, stepUp: stepUp, timed: timed, off: function () { return S.offStep; }, mask: mask, loc: LOC };\n      document.dispatchEvent(new window.Event('britten:store:change'));   // britten-your-britten.js drew its sub-line before fmt was here: once more\n    }\n    log('ready');\n  }\n  function boot() {\n    if (window.BrittenCore) window.BrittenCore.ready(function () { init(window.BrittenCore); });\n  }\n  if (window.BrittenCore) {\n    boot();\n  } else {\n    document.addEventListener('britten:core:ready', function once() {\n      document.removeEventListener('britten:core:ready', once);\n      boot();\n    });\n  }\n})();\n"],
  "mappings": "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",
  "names": ["ps"]
}
