{"version":3,"file":"Partner_Mobile.C_g4Py3t.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/02fZDGuqgCnIp4rFGrFF/F6lpbDE8hWLqbnv30HPV/Partner_Mobile.js"],"sourcesContent":["// Stacked Partner Listing Page — Mobile · v10\n//\n// v10: matches desktop v18. No more Airtable in the browser. The page reads one\n// JSON object from the Stacked API (GET /api/partner?slug=…, hosted on Netlify\n// as stacked-api) and the \"Get in touch\" form posts to POST /api/lead. The\n// Airtable token, base ID and the hard-coded Slack webhook are gone from this\n// file, and so is the \"API Key\" control, along with the table and field-name\n// controls (the API owns those names now). Tier gating happens on the server:\n// Lite listings never receive the website or video at all. Lead alerts still\n// come from the Airtable automation on the Forms table, unchanged. The lead\n// form carries a hidden company_website honeypot field; anything filling it is\n// a bot and gets a silent fake success. Layout and design controls unchanged.\n//\n// v9: video tile is a paid-tier element. v8: \"Get in touch\" is a product lead\n// form, fields stacked full width, with a mailto fallback so a lead is never\n// lost. v7: Visit Website / Edit your listing hidden behind toggles. v6: usage\n// bars fill. v5: real usage chart. v4: integrations scroll well. v3: CTA under\n// the name; grouped Design controls. v2: About clamps to 5 lines. v1: logo.\n//\n// Dedicated compact/mobile variant of Partner.tsx, swapped in as the Mobile\n// breakpoint for the /partners/[slug] page. Everything is one stacked column\n// with smaller type, spacing and badge scale.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef}from\"react\";const API_BASE=\"https://stacked-api.netlify.app\";// ─── Colour helpers ──────────────────────────────────────────────────────────\nfunction parseColor(c){if(!c)return null;c=String(c).trim();if(c[0]===\"#\"){let h=c.slice(1);if(h.length===3)h=h.split(\"\").map(x=>x+x).join(\"\");return[parseInt(h.slice(0,2),16),parseInt(h.slice(2,4),16),parseInt(h.slice(4,6),16)];}const m=c.match(/rgba?\\(([^)]+)\\)/);if(m){const p=m[1].split(\",\").map(s=>parseFloat(s));return[p[0],p[1],p[2]];}return null;}function toHex(r,g,b){return\"#\"+[r,g,b].map(x=>Math.max(0,Math.min(255,Math.round(x))).toString(16).padStart(2,\"0\")).join(\"\");}function mix(color,target,amt){const a=parseColor(color),b=parseColor(target);if(!a)return color;return toHex(a[0]+(b[0]-a[0])*amt,a[1]+(b[1]-a[1])*amt,a[2]+(b[2]-a[2])*amt);}// ─── Small helpers ───────────────────────────────────────────────────────────\nfunction normalizeUrl(u){if(!u)return null;const s=String(u).trim();if(!s)return null;return/^https?:\\/\\//i.test(s)?s:\"https://\"+s;}function getEmbedUrl(url){if(!url)return null;const normalized=normalizeUrl(url);if(!normalized)return null;let parsed=null;try{parsed=new URL(normalized);}catch(e){return null;}const host=parsed.hostname.replace(/^www\\./i,\"\").toLowerCase();if(host===\"youtube.com\"||host===\"m.youtube.com\"||host===\"youtu.be\"){const fromWatch=parsed.searchParams.get(\"v\");const fromPath=parsed.pathname.match(/\\/embed\\/([a-zA-Z0-9_-]{11})/)?.[1];const fromShort=host===\"youtu.be\"?parsed.pathname.replace(/^\\/+/,\"\").split(\"/\")[0]:\"\";const id=[fromWatch,fromPath,fromShort].find(v=>/^[a-zA-Z0-9_-]{11}$/.test(String(v||\"\")));if(id)return`https://www.youtube.com/embed/${id}`;return null;}if(host===\"vimeo.com\"||host===\"player.vimeo.com\"){const vimeoId=parsed.pathname.match(/\\/(?:video\\/)?(\\d+)/)?.[1];if(vimeoId)return`https://player.vimeo.com/video/${vimeoId}`;return null;}return null;}function getSlug(){const parts=window.location.pathname.split(\"/\").filter(Boolean);return parts[parts.length-1]||null;}function arr(v){return Array.isArray(v)?v.filter(x=>x!=null&&x!==\"\"):[];}function isSosScoreLabel(label){const n=String(label||\"\").trim().toLowerCase();if(!n)return false;if(/\\bsos\\b/.test(n))return true;if(/\\bstacked\\s*operator\\s*score\\b/.test(n))return true;if(/\\boperator\\s*score\\b/.test(n))return true;return/\\bscore\\b/.test(n)&&/\\boperator\\b/.test(n);}// ─── Typography helpers ──────────────────────────────────────────────────────\nfunction caseStyle(value){return{textTransform:value||\"none\"};}function fontOf(group){return{...group?.font||{},...caseStyle(group?.case)};}const PX_PROPS=new Set([\"fontSize\",\"letterSpacing\"]);function applyStyle(node,styleObj){if(!node||!styleObj)return;Object.keys(styleObj).forEach(k=>{let v=styleObj[k];if(v===undefined||v===null||v===\"\")return;if(typeof v===\"number\"&&PX_PROPS.has(k))v=v+\"px\";node.style[k]=v;});}// ─── Solution icons ──────────────────────────────────────────────────────────\nconst ICONS={pos:'<rect x=\"6\" y=\"2\" width=\"12\" height=\"20\" rx=\"1\"/><path d=\"M9 6h6M9 10h6M9 14h2\"/>',payment:'<rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\"/><path d=\"M2 10h20\"/>',kitchen:'<rect x=\"3\" y=\"4\" width=\"18\" height=\"12\" rx=\"2\"/><path d=\"M8 20h8M12 16v4\"/>',order:'<path d=\"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01\"/>',booking:'<rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M3 9h18M8 2v4M16 2v4\"/>',loyalty:'<path d=\"M12 21s-7-4.5-9-8.5C1.5 9 3 6 6 6c2 0 3 1.2 4 2.5C11 7.2 12 6 14 6c3 0 4.5 3 3 6.5C19 16.5 12 21 12 21z\"/>',analytics:'<path d=\"M3 3v18h18\"/><path d=\"M7 14l3-3 3 3 4-5\"/>',cloud:'<path d=\"M17 18a4 4 0 0 0 0-8 6 6 0 0 0-11.3 1.5A3.5 3.5 0 0 0 6 18z\"/>',api:'<path d=\"M8 6l-6 6 6 6M16 6l6 6-6 6\"/>',mobile:'<rect x=\"7\" y=\"2\" width=\"10\" height=\"20\" rx=\"2\"/><path d=\"M11 18h2\"/>',fallback:'<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M9 12l2 2 4-4\"/>'};function iconKey(name){const n=(name||\"\").toLowerCase();if(n.includes(\"pos\")||n.includes(\"point of sale\"))return\"pos\";if(n.includes(\"pay\"))return\"payment\";if(n.includes(\"kitchen\")||n.includes(\"display\")||n.includes(\"kds\"))return\"kitchen\";if(n.includes(\"order\"))return\"order\";if(n.includes(\"book\")||n.includes(\"reserv\")||n.includes(\"table\"))return\"booking\";if(n.includes(\"loyal\")||n.includes(\"reward\")||n.includes(\"gift\"))return\"loyalty\";if(n.includes(\"analyt\")||n.includes(\"report\")||n.includes(\"insight\"))return\"analytics\";if(n.includes(\"cloud\"))return\"cloud\";if(n.includes(\"api\"))return\"api\";if(n.includes(\"ios\")||n.includes(\"android\")||n.includes(\"mobile\")||n.includes(\"app\")||n.includes(\"kiosk\"))return\"mobile\";return\"fallback\";}function svgFor(name){return`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${ICONS[iconKey(name)]}</svg>`;}// ─── Lead form option sets (must match /api/lead) ────────────────────────────\nconst ENQUIRY_TYPES=[\"A demo\",\"Pricing\",\"General question\"];const SITE_BANDS=[\"\",\"1 site\",\"2-5 sites\",\"6-20 sites\",\"21-50 sites\",\"50+ sites\"];const TIMELINES=[\"\",\"Looking now\",\"Next few months\",\"Just researching\"];// ─── Sample data (Framer canvas / no slug) ───────────────────────────────────\nconst SAMPLE_POOLS={solution:[\"Point of Sale\",\"Payments\",\"Kitchen Display\",\"Online Ordering\",\"Reservations & Bookings\",\"Loyalty & Rewards\",\"Inventory\",\"Staff Scheduling\",\"Analytics & Reporting\",\"Table Management\",\"Gift Cards\",\"Self-Service Kiosk\"],technology:[\"Cloud\",\"iOS\",\"Android\",\"Web App\",\"API\",\"Offline Mode\",\"Integrations\",\"On-Premise\"],sector:[\"Restaurants\",\"QSR\",\"Caf\\xe9s\",\"Bars & Pubs\",\"Hotels\",\"Hospitality\",\"Retail\",\"Stadiums & Venues\",\"Catering\"]};const SAMPLE={slug:null,name:\"Sample Partner\",logo:null,summary:\"All-in-one point of sale built for high-volume restaurants — orders, payments, and kitchen display in one tidy system.\",about:\"This is placeholder copy shown in the Framer editor so you can adjust the layout without live data.\\n\\nIt fills the About section with two paragraphs so spacing and rhythm are easy to judge while designing.\",video:\"https://www.youtube.com/embed/ysz5S6PUM-U\",website:\"https://example.com\",email:null,phone:null,approved:true,tier:\"approved\",showContact:false,showWebsite:true,showVideo:true,stats:[{num:\"35\",label:\"Operators\"},{num:\"120\",label:\"Venues\"},{num:\"4.6★\",label:\"Operator score\"}],operatorNames:[\"Dishoom\",\"Hakkasan Group\",\"BAO London\",\"Bombay Brasserie\",\"Cabana\",\"Big Easy\",\"El Pastor\",\"Fish Shop\",\"Pasture\",\"Norma\",\"MyLahore\",\"Balans\",\"Bocca Di Lupo\",\"Sucre London\",\"The Waffle House\",\"Din Tai Fung\",\"Jack Solomons Club\",\"Brighton Music Hall\"],usage:[{label:\"Point of Sale\",value:48},{label:\"Payments\",value:32},{label:\"Mobile/QR Ordering\",value:12},{label:\"Inventory & Stock Management\",value:8}],solution:[\"Point of Sale\",\"Payments\",\"Kitchen Display\"],technology:[\"Cloud\",\"iOS\",\"Android\",\"API\"],sector:[\"Restaurants\",\"QSR\",\"Hospitality\"],integration:[\"Xero\",\"Deliveroo\",\"Stripe\",\"Uber Eats\",\"Just Eat\",\"QuickBooks\",\"Shopify\",\"Mailchimp\",\"Klaviyo\",\"Google Calendar\",\"OpenTable\",\"Square\",\"Sage\",\"Zapier\",\"SumUp\",\"Trivec\"],support:[\"24/7 phone support\",\"Onboarding & training\",\"Dedicated account manager\"]};// Maps the /api/partner response onto the shape the renderer expects. The API\n// already strips paid-tier values for Lite listings; the flags stay as a\n// second line of defence.\nfunction fromApi(d){return{slug:d.slug||null,name:d.name||\"Untitled Partner\",logo:d.logo||null,summary:d.summary||\"\",about:d.about||\"\",video:d.video||null,website:d.website||null,email:null,phone:null,tier:d.tier||\"lite\",approved:!!d.approved,showContact:false,showWebsite:!!d.showWebsite,showVideo:!!d.showVideo,stats:arr(d.stats),usage:arr(d.usage),operatorNames:arr(d.operatorNames),solution:arr(d.solution),technology:arr(d.technology),sector:arr(d.sector),support:arr(d.support),integration:arr(d.integration)};}export default function StackedPartnerPageMobile({integrationVisible,usageTitle,barScaleToMax,marketplacePath,liteEnquiryEmail,approvedBadge,showWebsiteButton,showEditButton,formRecipientEmail,maxTags,operatorsVisible,operatorsOverflowLink,spacing,typography,colors}){const rootRef=useRef(null);const liteEmail=liteEnquiryEmail||\"hello@wearestacked.io\";const cap=maxTags||5;const operatorVisibleCount=Math.max(1,Math.floor(operatorsVisible||5));const operatorOverflowHref=operatorsOverflowLink||\"/contact\";const intVisible=Math.max(1,integrationVisible||8);const websiteBtnOn=showWebsiteButton===true;const editBtnOn=showEditButton===true;const isCanvas=RenderTarget.current()===RenderTarget.canvas;// ── Spacing (grouped) ──────────────────────────────────────────────────\nconst sp=spacing||{};const spCard=sp.card||{};const spTiles=sp.tiles||{};const spBadges=sp.badges||{};const padPx=spCard.padding??16;const radPx=spCard.radius??20;const stackGap=spTiles.stackGap??12;const tilePadding=spTiles.tilePadding??16;const tileRadius=spTiles.tileRadius??16;const badgePx=spBadges.badgeSize??56;const logoPx=spBadges.logoHeight??24;// ── Colours (grouped) ──────────────────────────────────────────────────\nconst cl=colors||{};const mainColor=cl.mainColor||\"#E8440A\";const contrastColor=cl.contrastColor||\"#0F766E\";const textOnAccent=cl.textOnAccent||\"\";const textOnContrast=cl.textOnContrast||\"\";const cardBg=cl.cardBackground||\"#FFFFFF\";const backColor=cl.backLinkColor||\"\";const nameColor=cl.idNameColor||\"\";const summaryColor=cl.idSummaryColor||\"\";const labelColor=cl.sectionLabelColor||\"\";const statNumColor=cl.statNumColor||\"\";const statLabelColor=cl.statLabelColor||\"\";const barLabelColor=cl.barLabelColor||\"\";const barValColor=cl.barValColor||\"\";const barFillColor=cl.barFillColor||\"\";const barTrackColor=cl.barTrackColor||\"\";const aboutColor=cl.aboutBodyColor||\"\";const contactColor=cl.contactTextColor||\"\";const pillColor=cl.pillTextColor||\"\";const supportColor=cl.supportItemColor||\"\";const buttonTextColor=cl.buttonTextColor||\"\";const buttonFillColor=cl.buttonFillColor||\"\";// ── Typography (grouped, font + case per style) ───────────────────────\nconst ty=typography||{};const fBack=fontOf(ty.backLink);const fName=fontOf(ty.idName);const fSummary=fontOf(ty.idSummary);const fLabel=fontOf(ty.sectionLabel);const fStatNum=fontOf(ty.statNum);const fStatLabel=fontOf(ty.statLabel);const fBarLabel=fontOf(ty.barLabel);const fBarVal=fontOf(ty.barVal);const fAbout=fontOf(ty.aboutBody);const fContact=fontOf(ty.contactText);const fPill=fontOf(ty.pillText);const fSupport=fontOf(ty.supportItem);const fButton=fontOf(ty.buttonText);useEffect(()=>{if(!rootRef.current)return;const root=rootRef.current;root.id=\"spm-root\";root.style.position=\"relative\";root.style.width=\"100%\";root.style.height=\"auto\";root.style.minHeight=\"0\";root.style.overflow=\"visible\";let cancelled=false;let heightRaf=0;let resizeObs=null;let mutObs=null;const syncHeight=()=>{if(!root)return;const card=root.firstElementChild;if(!card)return;const h=Math.ceil(card.getBoundingClientRect().height);if(!h)return;root.style.height=h+\"px\";root.style.minHeight=h+\"px\";};const queueHeightSync=()=>{if(heightRaf)cancelAnimationFrame(heightRaf);heightRaf=requestAnimationFrame(()=>{syncHeight();heightRaf=0;});};const STYLE_ID=\"spm-styles\";const oldS=document.getElementById(STYLE_ID);if(oldS)oldS.remove();const style=document.createElement(\"style\");style.id=STYLE_ID;style.textContent=`\n            #spm-root, #spm-root * { pointer-events: all !important; box-sizing: border-box; }\n            #spm-root { width: 100%; font-family: sans-serif; }\n            .spm-card { display: flex; flex-direction: column; gap: 16px; position: relative; }\n            .spm-back-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }\n            .spm-back { font-size: 13px; color: var(--main); text-decoration: none; font-weight: 500; }\n            .spm-logo { height: ${logoPx}px; width: auto; max-width: 120px; object-fit: contain; flex-shrink: 0; }\n\n            .spm-stack { display: flex; flex-direction: column; gap: ${stackGap}px; }\n            .spm-tile { border-radius: ${tileRadius}px; padding: ${tilePadding}px; display: flex; flex-direction: column; gap: 10px; min-width: 0; }\n            .spm-t-accent { background: var(--accent-soft); color: var(--ink-accent); }\n            .spm-t-contrast { background: var(--contrast-soft); color: var(--ink-contrast); }\n            .spm-t-dark { background: #0e0e0e; color: #fff; padding: 0; overflow: hidden; }\n            .spm-tlabel { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; opacity: .55; }\n\n            .spm-id-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }\n            .spm-id-name { font-size: 22px; font-weight: 700; margin: 0; line-height: 1.15; }\n            .spm-id-summary { font-size: 14px; line-height: 1.5; margin: 0; opacity: .85; }\n            .spm-btn-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }\n\n            .spm-seal { width: 56px; height: 56px; flex-shrink: 0; color: #fff; display: flex; align-items: center; justify-content: center; text-align: center; transform: rotate(-8deg); position: relative; }\n            .spm-seal-bg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; filter: drop-shadow(0 6px 14px rgba(0,0,0,.18)); }\n            .spm-seal-bg .spm-scallop * { fill: var(--main); }\n            .spm-seal-bg .spm-ring { fill: none; stroke: rgba(255,255,255,.7); stroke-width: 1.4; stroke-dasharray: 3 3; }\n            .spm-seal-text { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; line-height: 1; }\n            .spm-seal-check { font-size: 11px; } .spm-seal-word { font-size: 5px; font-weight: 800; letter-spacing: .08em; margin-top: 1px; }\n            .spm-badge-img { object-fit: contain; flex-shrink: 0; }\n\n            .spm-btn { display: inline-block; padding: 10px 16px; border-radius: 99px; font-size: 13px; font-weight: 600; cursor: pointer; text-decoration: none; border: 1.5px solid transparent; font-family: sans-serif; text-align: center; }\n            .spm-btn-primary { background: var(--main); color: #fff; }\n            .spm-btn-outline { background: transparent; border-color: currentColor; color: inherit; }\n            .spm-btn-block { display: block; width: 100%; }\n            .spm-btn[disabled] { opacity: .6; cursor: default; }\n\n            .spm-stats-row { margin-top: 8px; }\n            .spm-stats-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; overflow: visible; }\n            .spm-stats-scroll { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 2px; -webkit-overflow-scrolling: touch; scrollbar-width: none; scroll-snap-type: x proximity; }\n            .spm-stats-scroll::-webkit-scrollbar { display: none; }\n            .spm-stat { flex: 0 0 auto; min-width: 96px; border-radius: 14px; padding: 14px 14px; scroll-snap-align: start; }\n            .spm-stats-grid .spm-stat { flex: 1 1 0; min-width: 0; width: 100%; padding: 16px 14px; }\n            .spm-stat-link { text-decoration: none; color: inherit; }\n            .spm-stat-num { font-size: 20px; font-weight: 800; line-height: 1; }\n            .spm-stat-label { font-size: 11px; opacity: .65; margin-top: 6px; }\n            .spm-stat-score {\n                background: linear-gradient(145deg, rgba(62,35,112,1) 0%, rgba(79,47,140,1) 100%);\n                color: #ffffff;\n                border: 1px solid rgba(196,161,255,0.75);\n                box-shadow: 0 0 0 1px rgba(255,255,255,0.14) inset, 0 8px 18px rgba(62,35,112,0.24);\n            }\n            .spm-stat-score .spm-stat-num,\n            .spm-stat-score .spm-stat-label { color: #ffffff !important; }\n            .spm-stat-score .spm-stat-label { opacity: .86; }\n\n            .spm-bar-row { display: flex; align-items: center; gap: 8px; }\n            .spm-bar-label { font-size: 11px; width: 78px; flex-shrink: 0; opacity: .8; }\n            .spm-bar-track { flex: 1; height: 9px; background: var(--bar-track); border-radius: 99px; overflow: hidden; }\n            .spm-bar-fill { display: block; width: 0; height: 100%; background: var(--bar-fill); border-radius: 99px; transition: width .75s cubic-bezier(.22,1,.36,1); }\n            @media (prefers-reduced-motion: reduce) { .spm-bar-fill { transition: none; } }\n            .spm-bar-val { font-size: 11px; font-weight: 700; width: 32px; text-align: right; }\n\n            .spm-about p { font-size: 13px; line-height: 1.65; margin: 0 0 8px; opacity: .9; }\n            .spm-about-body { display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; overflow: hidden; }\n            .spm-about-body.expanded { -webkit-line-clamp: unset; overflow: visible; }\n            .spm-about-toggle { align-self: flex-start; background: none; border: none; color: var(--main); font-weight: 700; font-size: 12px; cursor: pointer; padding: 4px 0 0; }\n            .spm-contact a { color: inherit; text-decoration: none; font-size: 13px; font-weight: 600; }\n            .spm-contact span { font-size: 13px; opacity: .8; }\n\n            .spm-pills { display: flex; flex-wrap: wrap; gap: 6px; }\n            .spm-pills-scroll { overflow-y: auto; overscroll-behavior: contain; padding-right: 4px; scrollbar-width: thin; scrollbar-color: rgba(0,0,0,.22) transparent; -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 22px), transparent 100%); mask-image: linear-gradient(to bottom, #000 calc(100% - 22px), transparent 100%); }\n            .spm-pills-scroll.at-end { -webkit-mask-image: none; mask-image: none; }\n            .spm-pills-scroll::-webkit-scrollbar { width: 5px; }\n            .spm-pills-scroll::-webkit-scrollbar-track { background: transparent; }\n            .spm-pills-scroll::-webkit-scrollbar-thumb { background: rgba(0,0,0,.18); border-radius: 99px; }\n            .spm-tlabel-count { opacity: .7; font-weight: 700; }\n            .spm-pill { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; border-radius: 99px; font-size: 11px; font-weight: 600; background: rgba(255,255,255,.5); color: inherit; white-space: nowrap; }\n            .spm-pill svg { width: 12px; height: 12px; flex-shrink: 0; }\n            .spm-op-overflow { display:inline-flex; align-items:center; border-radius:99px; padding:5px 10px; font-size:11px; font-weight:700; color:inherit; background:transparent; border:1.5px dashed rgba(62,35,112,0.35); text-decoration:none; line-height:1; cursor:pointer; }\n            .spm-op-overflow:hover { background:rgba(62,35,112,0.08); }\n            .spm-op-overflow:focus-visible { outline:2px solid rgba(62,35,112,0.8); outline-offset:2px; }\n            .spm-support-item { font-size: 12px; opacity: .9; }\n            .spm-divider { height: 1px; background: currentColor; opacity: .12; }\n\n            .spm-video { position: relative; width: 100%; padding-top: 56.25%; }\n            .spm-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: none; }\n\n            .spm-overlay { position: fixed; inset: 0; z-index: 99999; background: rgba(0,0,0,.45); display: flex; align-items: flex-end; justify-content: center; padding: 0; font-family: sans-serif; }\n            .spm-modal { background: #fff; color: #111; border-radius: 18px 18px 0 0; max-width: 560px; width: 100%; max-height: 88vh; overflow: auto; padding: 22px; display: flex; flex-direction: column; gap: 12px; box-shadow: 0 -8px 40px rgba(0,0,0,.25); }\n            .spm-modal h3 { margin: 0; font-size: 18px; font-weight: 700; }\n            .spm-modal-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }\n            .spm-modal-close { border: 1.5px solid rgba(0,0,0,.16); background: #fff; color: #222; border-radius: 999px; padding: 7px 12px; font-size: 12px; font-weight: 700; line-height: 1; cursor: pointer; }\n            .spm-modal-close:hover { border-color: rgba(0,0,0,.3); }\n            .spm-modal-close:focus-visible { outline: 2px solid var(--main); outline-offset: 2px; }\n            .spm-modal-sub { margin: 0 0 4px; font-size: 13px; line-height: 1.5; color: #666; }\n            .spm-group-label { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: #999; margin: 8px 0 -2px; }\n            .spm-field { display: flex; flex-direction: column; gap: 5px; font-size: 13px; font-weight: 600; color: #333; }\n            /* 16px minimum on inputs, otherwise iOS Safari zooms the page on focus. */\n            .spm-field input, .spm-field textarea, .spm-field select { padding: 10px 12px; border: 1.5px solid rgba(0,0,0,.15); border-radius: 10px; font-size: 16px; font-family: sans-serif; outline: none; resize: vertical; width: 100%; font-weight: 400; color: #111; background: #fff; }\n            .spm-field input:focus, .spm-field textarea:focus, .spm-field select:focus { border-color: var(--main); }\n            .spm-hint { font-size: 11px; font-weight: 400; color: #999; line-height: 1.4; }\n            /* Honeypot: off-screen rather than display:none, so naive bots still fill it. */\n            .spm-hp { position: absolute !important; left: -10000px !important; top: auto !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }\n            .spm-privacy { font-size: 11px; color: #999; line-height: 1.45; margin: 2px 0 0; }\n            .spm-chips { display: flex; flex-wrap: wrap; gap: 7px; }\n            .spm-chip { display: inline-flex; align-items: center; gap: 5px; padding: 7px 11px; border: 1.5px solid rgba(0,0,0,.15); border-radius: 99px; font-size: 12px; font-weight: 500; color: #444; background: #fff; cursor: pointer; user-select: none; font-family: sans-serif; }\n            .spm-chip input { display: none; }\n            .spm-chip.checked { border-color: var(--main); background: color-mix(in srgb, var(--main) 10%, transparent); color: var(--main); }\n            .spm-chip.checked::before { content: \"✓\"; font-size: 10px; }\n            .spm-chip.disabled { opacity: .4; cursor: not-allowed; }\n            .spm-limit-note { font-size: 11px; font-weight: 400; color: #999; }\n            .spm-limit-note.maxed { color: #c0770b; }\n            .spm-err { font-size: 12px; color: #cc0000; display: none; }\n            .spm-row { display: flex; gap: 8px; margin-top: 6px; position: sticky; bottom: -22px; background: #fff; padding-top: 8px; }\n            .spm-row .spm-btn { flex: 1; }\n        `;document.head.appendChild(style);root.innerHTML=`<div style=\"padding:40px 0;text-align:center;color:#999;\">Loading...</div>`;function el(tag,cls,html){const e=document.createElement(tag);if(cls)e.className=cls;if(html!=null)e.innerHTML=html;return e;}function label(text){const s=el(\"span\",\"spm-tlabel\");s.textContent=text;applyStyle(s,fLabel);if(labelColor)s.style.color=labelColor;return s;}function pill(text,withIcon){const s=el(\"span\",\"spm-pill\");if(withIcon)s.innerHTML=svgFor(text);const t=el(\"span\");t.textContent=text;s.appendChild(t);applyStyle(s,fPill);if(pillColor)s.style.color=pillColor;return s;}function capPillHeight(pills,visible){let lastWidth=-1;const apply=()=>{pills.style.maxHeight=\"\";pills.classList.remove(\"spm-pills-scroll\",\"at-end\");const kids=pills.children;if(kids.length<=visible)return;const anchor=kids[visible-1];if(!anchor)return;const cut=Math.round(anchor.getBoundingClientRect().bottom-pills.getBoundingClientRect().top);if(cut<=0||pills.scrollHeight<=cut+4)return;pills.classList.add(\"spm-pills-scroll\");pills.style.maxHeight=cut+\"px\";queueHeightSync();};pills.addEventListener(\"scroll\",()=>{const atEnd=pills.scrollTop+pills.clientHeight>=pills.scrollHeight-2;pills.classList.toggle(\"at-end\",atEnd);});requestAnimationFrame(apply);if(typeof ResizeObserver!==\"undefined\"){const ro=new ResizeObserver(entries=>{const w=Math.round(entries[0].contentRect.width);if(w===lastWidth)return;lastWidth=w;requestAnimationFrame(apply);});ro.observe(pills);}}function buildSeal(){const cx=50,cy=50,Rc=36,br=8,n=16;let bumps=\"\";for(let i=0;i<n;i++){const a=2*Math.PI*i/n;bumps+=`<circle cx=\"${(cx+Rc*Math.cos(a)).toFixed(2)}\" cy=\"${(cy+Rc*Math.sin(a)).toFixed(2)}\" r=\"${br}\"/>`;}const seal=el(\"div\",\"spm-seal\");seal.title=\"Approved partner\";seal.innerHTML=`<svg class=\"spm-seal-bg\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\"><g class=\"spm-scallop\">${bumps}<circle cx=\"50\" cy=\"50\" r=\"${Rc}\"/></g><circle class=\"spm-ring\" cx=\"50\" cy=\"50\" r=\"32\"/></svg><span class=\"spm-seal-text\"><span class=\"spm-seal-check\">✓</span><span class=\"spm-seal-word\">APPROVED</span><span class=\"spm-seal-word\">PARTNER</span></span>`;return seal;}// ── Modals ────────────────────────────────────────────────────────────\nfunction openModal(buildBody){document.getElementById(\"spm-modal-overlay\")?.remove();const overlay=el(\"div\",\"spm-overlay\");overlay.id=\"spm-modal-overlay\";const modal=el(\"div\",\"spm-modal\");overlay.appendChild(modal);overlay.addEventListener(\"click\",e=>{if(e.target===overlay)overlay.remove();});buildBody(modal,()=>overlay.remove());document.body.appendChild(overlay);}function fieldEl({label,hint,type=\"text\",value=\"\",placeholder=\"\",id}){const wrap=el(\"label\",\"spm-field\");const lab=el(\"span\");lab.textContent=label;wrap.appendChild(lab);const input=type===\"textarea\"?el(\"textarea\"):el(\"input\");if(type!==\"textarea\")input.type=type;if(type===\"textarea\")input.rows=label===\"About\"?5:3;input.value=value;input.placeholder=placeholder;input.id=id;wrap.appendChild(input);if(hint){const h=el(\"span\",\"spm-hint\");h.textContent=hint;wrap.appendChild(h);}return wrap;}function selectEl({label,id,options,hint}){const wrap=el(\"label\",\"spm-field\");const lab=el(\"span\");lab.textContent=label;wrap.appendChild(lab);const sel=el(\"select\");sel.id=id;options.forEach(o=>{const opt=el(\"option\");opt.value=o;opt.textContent=o===\"\"?\"Prefer not to say\":o;sel.appendChild(opt);});wrap.appendChild(sel);if(hint){const h=el(\"span\",\"spm-hint\");h.textContent=hint;wrap.appendChild(h);}return wrap;}// Hidden honeypot field. Off-screen, not focusable, no autofill, and\n// hidden from screen readers, so only bots ever put a value in it.\nfunction honeypotEl(){const wrap=el(\"div\",\"spm-hp\");wrap.setAttribute(\"aria-hidden\",\"true\");const lab=el(\"label\");lab.htmlFor=\"qCompanyWebsite\";lab.textContent=\"Company website\";const input=el(\"input\");input.type=\"text\";input.id=\"qCompanyWebsite\";input.name=\"company_website\";input.tabIndex=-1;input.autocomplete=\"off\";wrap.appendChild(lab);wrap.appendChild(input);return wrap;}function checkGroup({label,options,selected,max}){const wrap=el(\"div\",\"spm-field\");const lab=el(\"span\");lab.textContent=`${label} (choose up to ${max})`;wrap.appendChild(lab);const chips=el(\"div\",\"spm-chips\");wrap.appendChild(chips);const note=el(\"span\",\"spm-limit-note\");wrap.appendChild(note);function refresh(){const inputs=[...chips.querySelectorAll(\"input\")];const count=inputs.filter(i=>i.checked).length;const atMax=count>=max;inputs.forEach(i=>{const chip=i.closest(\".spm-chip\");chip.classList.toggle(\"checked\",i.checked);const lock=!i.checked&&atMax;i.disabled=lock;chip.classList.toggle(\"disabled\",lock);});note.textContent=`${count}/${max} selected`;note.classList.toggle(\"maxed\",atMax);}options.forEach(opt=>{const chip=el(\"label\",\"spm-chip\");const input=el(\"input\");input.type=\"checkbox\";input.value=opt;if(selected.includes(opt))input.checked=true;const span=el(\"span\");span.textContent=opt;chip.appendChild(input);chip.appendChild(span);input.addEventListener(\"change\",refresh);chips.appendChild(chip);});refresh();return{wrap,getValues:()=>[...chips.querySelectorAll(\"input:checked\")].map(i=>i.value)};}function sendMailTo(to,subject,lines,close){if(!to){alert(\"No recipient email is configured. Set 'Listing Request Email' (and 'Lite Enquiry Email') in the component settings.\");return;}window.location.href=\"mailto:\"+to+\"?subject=\"+encodeURIComponent(subject)+\"&body=\"+encodeURIComponent(lines.join(\"\\n\"));close();}function sendMail(subject,lines,close){sendMailTo(formRecipientEmail,subject,lines,close);}function submitRow(modal,text,onSubmit){const err=el(\"div\",\"spm-err\");modal.appendChild(err);const row=el(\"div\",\"spm-row\");const cancel=el(\"button\",\"spm-btn spm-btn-outline\");cancel.style.color=\"#111\";cancel.textContent=\"Cancel\";cancel.addEventListener(\"click\",()=>document.getElementById(\"spm-modal-overlay\")?.remove());const submit=el(\"button\",\"spm-btn spm-btn-primary\");submit.textContent=text;submit.addEventListener(\"click\",()=>onSubmit(err,submit));row.appendChild(cancel);row.appendChild(submit);modal.appendChild(row);return submit;}const v=id=>{const n=document.getElementById(id);return n&&n.value?String(n.value).trim():\"\";};// Sends the lead to the Stacked API, which works out the partner and\n// package from the slug and writes the row to Forms. Alerts come from\n// the Airtable automation on that table, not from this file.\nasync function postLead(payload){const res=await fetch(`${API_BASE}/api/lead`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(payload)});const data=await res.json().catch(()=>({}));if(!res.ok||!data.ok){const e=new Error(data.error||`Lead API error ${res.status}`);e.status=res.status;throw e;}return data;}// ── The lead form ─────────────────────────────────────────────────────\n// Same questions as desktop, stacked full width. Only first name and\n// work email are enforced.\nfunction openEnquiry(p){openModal((modal,close)=>{const head=el(\"div\",\"spm-modal-head\");const h=el(\"h3\");h.textContent=`Interested in ${p.name}?`;const closeBtn=el(\"button\",\"spm-modal-close\");closeBtn.type=\"button\";closeBtn.textContent=\"Close\";closeBtn.setAttribute(\"aria-label\",\"Close enquiry form\");closeBtn.addEventListener(\"click\",()=>close());head.appendChild(h);head.appendChild(closeBtn);modal.appendChild(head);const sub=el(\"p\",\"spm-modal-sub\");sub.textContent=`Tell us a little about your setup and we'll introduce you to the right person at ${p.name}. No hard sell.`;modal.appendChild(sub);let enquiryType=ENQUIRY_TYPES[0];const typeWrap=el(\"div\",\"spm-field\");const typeLab=el(\"span\");typeLab.textContent=\"What are you after?\";typeWrap.appendChild(typeLab);const typeChips=el(\"div\",\"spm-chips\");ENQUIRY_TYPES.forEach(t=>{const chip=el(\"button\",\"spm-chip\"+(t===enquiryType?\" checked\":\"\"));chip.type=\"button\";const span=el(\"span\");span.textContent=t;chip.appendChild(span);chip.addEventListener(\"click\",()=>{enquiryType=t;Array.from(typeChips.children).forEach(k=>k.classList.remove(\"checked\"));chip.classList.add(\"checked\");});typeChips.appendChild(chip);});typeWrap.appendChild(typeChips);modal.appendChild(typeWrap);modal.appendChild(el(\"p\",\"spm-group-label\")).textContent=\"About you\";modal.appendChild(fieldEl({label:\"First name\",id:\"qFirst\"}));modal.appendChild(fieldEl({label:\"Last name\",id:\"qLast\"}));modal.appendChild(fieldEl({label:\"Work email\",type:\"email\",id:\"qEmail\"}));modal.appendChild(fieldEl({label:\"Phone\",type:\"tel\",id:\"qPhone\",placeholder:\"Optional\"}));modal.appendChild(fieldEl({label:\"Your job role\",id:\"qRole\",placeholder:\"e.g. Operations Director\"}));modal.appendChild(el(\"p\",\"spm-group-label\")).textContent=\"About your business\";modal.appendChild(fieldEl({label:\"Company\",id:\"qCompany\"}));modal.appendChild(selectEl({label:\"Number of sites\",id:\"qSites\",options:SITE_BANDS}));modal.appendChild(selectEl({label:\"When are you looking to move?\",id:\"qTimeline\",options:TIMELINES}));modal.appendChild(fieldEl({label:\"Anything specific you'd like to see?\",type:\"textarea\",id:\"qMessage\",hint:`Optional. Helps ${p.name} come prepared.`}));modal.appendChild(honeypotEl());const privacy=el(\"p\",\"spm-privacy\");privacy.textContent=\"We'll share these details with the partner so they can get back to you.\";modal.appendChild(privacy);submitRow(modal,\"Send enquiry\",async(err,btn)=>{const first=v(\"qFirst\"),last=v(\"qLast\"),email=v(\"qEmail\");if(!first||!email||!/.+@.+\\..+/.test(email)){err.textContent=\"Please add your first name and a valid work email.\";err.style.display=\"block\";return;}err.style.display=\"none\";btn.disabled=true;btn.textContent=\"Sending…\";const payload={slug:p.slug,firstName:first,lastName:last,email,phone:v(\"qPhone\"),role:v(\"qRole\"),company:v(\"qCompany\"),sites:v(\"qSites\"),timeline:v(\"qTimeline\"),message:v(\"qMessage\"),enquiryType,company_website:v(\"qCompanyWebsite\")};try{if(isCanvas||!p.slug)throw new Error(\"Lead form is disabled on the canvas\");await postLead(payload);modal.innerHTML=\"\";modal.appendChild(el(\"h3\")).textContent=\"Thanks, that's on its way\";const done=el(\"p\",\"spm-modal-sub\");done.textContent=`We've passed your details to ${p.name}. Someone will be in touch shortly.`;modal.appendChild(done);const row=el(\"div\",\"spm-row\");const ok=el(\"button\",\"spm-btn spm-btn-primary\");ok.textContent=\"Done\";ok.addEventListener(\"click\",()=>close());row.appendChild(ok);modal.appendChild(row);}catch(e){// A validation problem the visitor can fix: say so and let them retry.\nif(e&&e.status===422){err.textContent=e.message;err.style.display=\"block\";btn.disabled=false;btn.textContent=\"Send enquiry\";return;}// Anything else: never lose the lead. Hand it to the\n// visitor's mail client addressed to Stacked.\nconst lines=[`Marketplace enquiry about: ${p.name}`,`Page: ${location.href}`,``,`From: ${first} ${last}`.trim(),`Email: ${email}`,payload.phone?`Phone: ${payload.phone}`:\"\",payload.company?`Company: ${payload.company}`:\"\",``,`Looking for: ${enquiryType}`,payload.role?`Job role: ${payload.role}`:\"\",payload.sites?`Sites: ${payload.sites}`:\"\",payload.timeline?`Timeline: ${payload.timeline}`:\"\",payload.message?`\nMessage:\n${payload.message}`:\"\"].filter(Boolean);sendMailTo(liteEmail,`Marketplace enquiry: ${p.name}`,lines,close);}});});}function openClaim(p){openModal((modal,close)=>{const head=el(\"div\",\"spm-modal-head\");const h=el(\"h3\");h.textContent=\"Is this your business?\";const closeBtn=el(\"button\",\"spm-modal-close\");closeBtn.type=\"button\";closeBtn.textContent=\"Close\";closeBtn.setAttribute(\"aria-label\",\"Close claim form\");closeBtn.addEventListener(\"click\",()=>close());head.appendChild(h);head.appendChild(closeBtn);modal.appendChild(head);const sub=el(\"p\",\"spm-modal-sub\");sub.textContent=`Tell us a bit about yourself and we'll help you claim ${p.name}.`;modal.appendChild(sub);modal.appendChild(fieldEl({label:\"Your name\",id:\"cName\"}));modal.appendChild(fieldEl({label:\"Your work email\",type:\"email\",id:\"cEmail\",hint:\"Use an email on the company's domain so we can verify ownership quickly.\"}));modal.appendChild(fieldEl({label:\"Your role at the business\",id:\"cRole\",placeholder:\"e.g. Marketing Manager\"}));modal.appendChild(fieldEl({label:\"Anything else? (optional)\",type:\"textarea\",id:\"cNote\"}));submitRow(modal,\"Send claim request\",err=>{if(!v(\"cName\")||!v(\"cEmail\")){err.textContent=\"Please add your name and work email.\";err.style.display=\"block\";return;}const lines=[`Listing: ${p.name}`,`Page: ${location.href}`,``,`From: ${v(\"cName\")}`,`Email: ${v(\"cEmail\")}`];if(v(\"cRole\"))lines.push(`Role: ${v(\"cRole\")}`);if(v(\"cNote\"))lines.push(``,`Notes:`,v(\"cNote\"));sendMailTo(\"hello@wearestacked.io\",`Business claim: ${p.name}`,lines,close);});});}function openEdit(p,pools){openModal((modal,close)=>{modal.appendChild(el(\"h3\")).textContent=\"Edit your listing\";const sub=el(\"p\",\"spm-modal-sub\");sub.textContent=`Update anything below and send it over — we'll review and publish the changes to ${p.name}.`;modal.appendChild(sub);modal.appendChild(el(\"p\",\"spm-group-label\")).textContent=\"Who's requesting\";modal.appendChild(fieldEl({label:\"Your name\",id:\"eName\"}));modal.appendChild(fieldEl({label:\"Your work email\",type:\"email\",id:\"eEmail\"}));modal.appendChild(el(\"p\",\"spm-group-label\")).textContent=\"Listing content\";modal.appendChild(fieldEl({label:\"Summary\",id:\"eSummary\",value:p.summary,hint:\"One punchy sentence shown at the top of your listing.\"}));modal.appendChild(fieldEl({label:\"About\",type:\"textarea\",id:\"eAbout\",value:p.about,hint:\"What you do and who it's for. 2–3 short paragraphs; leave a blank line between them.\"}));const sol=checkGroup({label:\"Solution\",options:pools.solution,selected:p.solution,max:cap});const tech=checkGroup({label:\"Technology\",options:pools.technology,selected:p.technology,max:cap});const sec=checkGroup({label:\"Sector\",options:pools.sector,selected:p.sector,max:cap});modal.appendChild(sol.wrap);modal.appendChild(tech.wrap);modal.appendChild(sec.wrap);modal.appendChild(fieldEl({label:\"Support\",type:\"textarea\",id:\"eSupport\",value:p.support.join(\"\\n\"),hint:\"One per line. Support options you offer.\"}));modal.appendChild(el(\"p\",\"spm-group-label\")).textContent=\"Contact details\";modal.appendChild(fieldEl({label:\"Website\",type:\"url\",id:\"eWebsite\",value:p.website||\"\",hint:\"Shown to visitors once your listing is approved.\"}));modal.appendChild(fieldEl({label:\"Public email\",type:\"email\",id:\"eContactEmail\",value:p.email||\"\"}));modal.appendChild(fieldEl({label:\"Phone\",id:\"ePhone\",value:p.phone||\"\"}));submitRow(modal,\"Send edit request\",err=>{if(!v(\"eName\")||!v(\"eEmail\")){err.textContent=\"Please add your name and work email so we can confirm the changes.\";err.style.display=\"block\";return;}const lines=[`Listing edit request for: ${p.name}`,`Page: ${location.href}`,``,`Requested by: ${v(\"eName\")} <${v(\"eEmail\")}>`,``,`── Proposed content ──`,`Summary: ${v(\"eSummary\")}`,``,`About:`,v(\"eAbout\"),``,`Solution tags: ${sol.getValues().join(\", \")}`,`Technology tags: ${tech.getValues().join(\", \")}`,`Sector tags: ${sec.getValues().join(\", \")}`,``,`Support:`,...v(\"eSupport\").split(\"\\n\").map(s=>\"- \"+s.trim()).filter(s=>s!==\"- \"),``,`── Contact ──`,`Website: ${v(\"eWebsite\")}`,`Public email: ${v(\"eContactEmail\")}`,`Phone: ${v(\"ePhone\")}`];sendMail(`Listing edit request: ${p.name}`,lines,close);});});}// ── Render the single-column mobile page ────────────────────────────────\nfunction renderPage(p,pools,main,contrast){const r=document.documentElement.style;r.setProperty(\"--main\",main);r.setProperty(\"--contrast\",contrast);r.setProperty(\"--bar-fill\",barFillColor||contrast);r.setProperty(\"--bar-track\",barTrackColor||mix(contrast,\"#ffffff\",.78));r.setProperty(\"--accent-soft\",mix(main,\"#ffffff\",.88));r.setProperty(\"--contrast-soft\",mix(contrast,\"#ffffff\",.88));r.setProperty(\"--ink-accent\",textOnAccent||mix(main,\"#000000\",.5));r.setProperty(\"--ink-contrast\",textOnContrast||mix(contrast,\"#000000\",.5));root.innerHTML=\"\";const card=el(\"div\",\"spm-card\");card.style.background=cardBg;card.style.borderRadius=radPx+\"px\";card.style.padding=padPx+\"px\";const backRow=el(\"div\",\"spm-back-row\");const back=el(\"a\",\"spm-back\");back.href=marketplacePath;back.textContent=\"← Marketplace\";applyStyle(back,fBack);if(backColor)back.style.color=backColor;backRow.appendChild(back);if(p.logo){const logo=el(\"img\",\"spm-logo\");logo.src=p.logo;logo.alt=p.name+\" logo\";backRow.appendChild(logo);}card.appendChild(backRow);const stack=el(\"div\",\"spm-stack\");// Identity tile\nconst idTile=el(\"div\",\"spm-tile spm-t-accent\");const top=el(\"div\",\"spm-id-top\");const idLeft=el(\"div\");idLeft.style.display=\"flex\";idLeft.style.flexDirection=\"column\";idLeft.style.gap=\"8px\";idLeft.style.minWidth=\"0\";const name=el(\"h1\",\"spm-id-name\");name.textContent=p.name;applyStyle(name,fName);if(nameColor)name.style.color=nameColor;idLeft.appendChild(name);if(p.summary){const s=el(\"p\",\"spm-id-summary\");s.textContent=p.summary;applyStyle(s,fSummary);if(summaryColor)s.style.color=summaryColor;idLeft.appendChild(s);}const siteUrl=normalizeUrl(p.website);const ctaRow=el(\"div\",\"spm-btn-row\");if(websiteBtnOn&&siteUrl&&p.showWebsite){const w=el(\"a\",\"spm-btn spm-btn-primary\");w.href=siteUrl;w.target=\"_blank\";w.rel=\"noopener noreferrer\";w.textContent=\"Visit Website →\";applyStyle(w,fButton);if(buttonFillColor)w.style.background=buttonFillColor;if(buttonTextColor)w.style.color=buttonTextColor;ctaRow.appendChild(w);}else{const g=el(\"button\",\"spm-btn spm-btn-primary\");g.type=\"button\";g.textContent=\"Get in touch\";applyStyle(g,fButton);if(buttonFillColor)g.style.background=buttonFillColor;if(buttonTextColor)g.style.color=buttonTextColor;g.addEventListener(\"click\",()=>openEnquiry(p));ctaRow.appendChild(g);}idLeft.appendChild(ctaRow);top.appendChild(idLeft);if(p.approved){if(approvedBadge){const img=el(\"img\",\"spm-badge-img\");img.src=approvedBadge;img.alt=\"Approved partner\";img.style.width=badgePx+\"px\";img.style.height=badgePx+\"px\";top.appendChild(img);}else{top.appendChild(buildSeal());}}idTile.appendChild(top);stack.appendChild(idTile);// Stats: an even three-card row for the usual trio, otherwise a\n// horizontal scroll row.\nif(p.stats&&p.stats.length){const isTrio=p.stats.length===3;const row=el(\"div\",`spm-stats-row ${isTrio?\"spm-stats-grid\":\"spm-stats-scroll\"}`);p.stats.forEach((s,i)=>{const isScoreStat=isSosScoreLabel(s.label);const styleClass=isScoreStat?\"spm-stat-score\":i%2===0?\"spm-t-accent\":\"spm-t-contrast\";const t=el(\"a\",\"spm-stat spm-stat-link spm-tile \"+styleClass);t.href=\"/contact\";t.setAttribute(\"aria-label\",`Get in touch about ${s.label}`);const numEl=el(\"div\",\"spm-stat-num\");numEl.textContent=s.num;applyStyle(numEl,fStatNum);if(!isScoreStat&&statNumColor)numEl.style.color=statNumColor;const labEl=el(\"div\",\"spm-stat-label\");labEl.textContent=s.label;applyStyle(labEl,fStatLabel);if(!isScoreStat&&statLabelColor)labEl.style.color=statLabelColor;t.appendChild(numEl);t.appendChild(labEl);row.appendChild(t);});stack.appendChild(row);}// Operators we’ve verified using it\nif(p.operatorNames&&p.operatorNames.length){const opTile=el(\"div\",\"spm-tile spm-t-contrast\");opTile.appendChild(label(\"Operators we’ve verified using it\"));const opSub=el(\"div\");opSub.textContent=\"These are operators verified through Stacked audits, not the partner’s full customer list.\";opSub.style.cssText=\"font-size:12px;line-height:1.45;color:rgba(62,35,112,0.68);font-family:'DM Sans',sans-serif;\";opTile.appendChild(opSub);const opPills=el(\"div\",\"spm-pills\");const names=p.operatorNames;names.slice(0,operatorVisibleCount).forEach(nm=>opPills.appendChild(pill(nm,false)));const remaining=names.length-operatorVisibleCount;if(remaining>0){const more=el(\"a\",\"spm-op-overflow\");more.href=operatorOverflowHref;more.textContent=`+${remaining}`;more.setAttribute(\"aria-label\",`See ${remaining} more operators`);more.title=\"Contact us for the full operator list\";opPills.appendChild(more);}opTile.appendChild(opPills);stack.appendChild(opTile);}// Video is a paid-tier element; the API sends none for Lite.\nconst embed=p.showVideo?getEmbedUrl(p.video):null;if(embed){const vid=el(\"div\",\"spm-tile spm-t-dark\");const wrapV=el(\"div\",\"spm-video\");const iframe=el(\"iframe\");iframe.src=embed;iframe.setAttribute(\"allow\",\"autoplay; fullscreen; picture-in-picture\");iframe.setAttribute(\"allowfullscreen\",\"\");wrapV.appendChild(iframe);vid.appendChild(wrapV);stack.appendChild(vid);}if(p.about){const about=el(\"div\",\"spm-tile spm-t-contrast\");about.appendChild(label(\"About\"));const body=el(\"div\",\"spm-about spm-about-body\");p.about.split(/\\n\\n+/).forEach(para=>{if(!para.trim())return;const pp=el(\"p\");pp.textContent=para.trim();applyStyle(pp,fAbout);if(aboutColor)pp.style.color=aboutColor;body.appendChild(pp);});about.appendChild(body);const aboutToggle=el(\"button\",\"spm-about-toggle\");aboutToggle.type=\"button\";aboutToggle.textContent=\"Show more\";aboutToggle.style.display=\"none\";aboutToggle.addEventListener(\"click\",()=>{const expanded=body.classList.toggle(\"expanded\");aboutToggle.textContent=expanded?\"Show less\":\"Show more\";queueHeightSync();});about.appendChild(aboutToggle);stack.appendChild(about);requestAnimationFrame(()=>{if(body.scrollHeight>body.clientHeight+2)aboutToggle.style.display=\"inline-block\";});}if(p.usage&&p.usage.length){const usage=el(\"div\",\"spm-tile spm-t-contrast\");usage.appendChild(label(usageTitle||\"What operators use it for\"));const max=Math.max(...p.usage.map(u=>Number(u.value)||0),1);p.usage.forEach(u=>{const val=Number(u.value)||0;const row=el(\"div\",\"spm-bar-row\");const labEl=el(\"span\",\"spm-bar-label\");labEl.textContent=u.label;applyStyle(labEl,fBarLabel);if(barLabelColor)labEl.style.color=barLabelColor;const track=el(\"span\",\"spm-bar-track\");const target=barScaleToMax?val/max*100:Math.min(100,Math.max(0,val));const fill=el(\"span\",\"spm-bar-fill\");requestAnimationFrame(()=>{fill.style.width=target+\"%\";});track.appendChild(fill);const valEl=el(\"span\",\"spm-bar-val\");valEl.textContent=val+\"%\";applyStyle(valEl,fBarVal);if(barValColor)valEl.style.color=barValColor;row.appendChild(labEl);row.appendChild(track);row.appendChild(valEl);usage.appendChild(row);});stack.appendChild(usage);}// Contact + tags + support, all in one accent tile\nconst info=el(\"div\",\"spm-tile spm-t-accent\");if(p.showContact&&(p.email||p.phone)){const sec=el(\"div\");sec.style.display=\"flex\";sec.style.flexDirection=\"column\";sec.style.gap=\"6px\";sec.appendChild(label(\"Contact\"));if(p.email){const a=el(\"a\");a.href=\"mailto:\"+p.email;a.textContent=p.email;applyStyle(a,fContact);if(contactColor)a.style.color=contactColor;const w=el(\"div\",\"spm-contact\");w.appendChild(a);sec.appendChild(w);}if(p.phone){const s=el(\"span\");s.textContent=p.phone;applyStyle(s,fContact);if(contactColor)s.style.color=contactColor;const w=el(\"div\",\"spm-contact\");w.appendChild(s);sec.appendChild(w);}info.appendChild(sec);}const tagSec=(lab,items,withIcon,scrollAfter)=>{if(!items||!items.length)return;const sec=el(\"div\");sec.style.display=\"flex\";sec.style.flexDirection=\"column\";sec.style.gap=\"6px\";const lb=label(lab);if(scrollAfter&&items.length>scrollAfter){const c=el(\"span\",\"spm-tlabel-count\");c.textContent=\"  \"+items.length;lb.appendChild(c);}sec.appendChild(lb);const pills=el(\"div\",\"spm-pills\");items.forEach(x=>pills.appendChild(pill(x,withIcon)));sec.appendChild(pills);info.appendChild(sec);if(scrollAfter&&items.length>scrollAfter)capPillHeight(pills,scrollAfter);};tagSec(\"Solution\",p.solution,true);tagSec(\"Technology\",p.technology,false);tagSec(\"Sector\",p.sector,false);tagSec(\"Integration Partners\",p.integration,false,intVisible);if(p.support&&p.support.length){const sec=el(\"div\");sec.style.display=\"flex\";sec.style.flexDirection=\"column\";sec.style.gap=\"6px\";sec.appendChild(label(\"Support\"));p.support.forEach(s=>{const i=el(\"span\",\"spm-support-item\");i.textContent=\"✓  \"+s;applyStyle(i,fSupport);if(supportColor)i.style.color=supportColor;sec.appendChild(i);});info.appendChild(sec);}if(info.children.length)stack.appendChild(info);// Secondary actions. \"Edit your listing\" is hidden by default.\nconst secSec=el(\"div\",\"spm-tile spm-t-contrast\");secSec.appendChild(label(\"Manage this listing\"));const claim=el(\"button\",\"spm-btn spm-btn-outline spm-btn-block\");claim.textContent=\"Is this your business?\";applyStyle(claim,fButton);claim.addEventListener(\"click\",()=>openClaim(p));secSec.appendChild(claim);if(editBtnOn){const edit=el(\"button\",\"spm-btn spm-btn-outline spm-btn-block\");edit.textContent=\"Edit your listing\";applyStyle(edit,fButton);edit.addEventListener(\"click\",()=>openEdit(p,pools));secSec.appendChild(edit);}stack.appendChild(secSec);// Bottom CTA repeats the primary \"Get in touch\" action.\nconst bottomCta=el(\"button\",\"spm-btn spm-btn-primary spm-btn-block\");bottomCta.type=\"button\";bottomCta.textContent=\"Get in touch\";applyStyle(bottomCta,fButton);if(buttonFillColor)bottomCta.style.background=buttonFillColor;if(buttonTextColor)bottomCta.style.color=buttonTextColor;bottomCta.addEventListener(\"click\",()=>openEnquiry(p));stack.appendChild(bottomCta);card.appendChild(stack);root.appendChild(card);queueHeightSync();}function showMessage(text,isError){const box=el(\"div\");box.style.cssText=isError?\"padding:24px;background:#fff5f5;border:1px solid #ffd0d0;border-radius:12px;font-family:sans-serif;font-size:13px;color:#cc0000;\":\"padding:40px 0;text-align:center;color:#999;font-family:sans-serif;\";box.textContent=text;root.innerHTML=\"\";root.appendChild(box);queueHeightSync();}async function load(slug){try{const res=await fetch(`${API_BASE}/api/partner?slug=${encodeURIComponent(slug)}`);if(cancelled)return;if(res.status===404||res.status===400){showMessage(\"Partner not found.\",false);return;}if(!res.ok)throw new Error(`The listing couldn't load (error ${res.status}). Refresh the page to try again.`);const d=await res.json();if(cancelled)return;const p=fromApi(d);const pools={solution:arr(d.pools?.solution),technology:arr(d.pools?.technology),sector:arr(d.pools?.sector)};renderPage(p,pools,d.brandColor||mainColor,contrastColor);}catch(e){if(!cancelled)showMessage(e&&e.message?e.message:\"The listing couldn't load. Refresh the page to try again.\",true);}}const slug=isCanvas?null:getSlug();if(!slug)renderPage(SAMPLE,SAMPLE_POOLS,mainColor,contrastColor);else load(slug);if(typeof ResizeObserver!==\"undefined\"){resizeObs=new ResizeObserver(()=>queueHeightSync());resizeObs.observe(root);}if(typeof MutationObserver!==\"undefined\"){mutObs=new MutationObserver(()=>queueHeightSync());mutObs.observe(root,{childList:true,subtree:true,characterData:true});}if(typeof window!==\"undefined\"){window.addEventListener(\"resize\",queueHeightSync);}queueHeightSync();return()=>{cancelled=true;if(heightRaf)cancelAnimationFrame(heightRaf);if(resizeObs)resizeObs.disconnect();if(mutObs)mutObs.disconnect();if(typeof window!==\"undefined\"){window.removeEventListener(\"resize\",queueHeightSync);}};},[marketplacePath,liteEmail,approvedBadge,badgePx,logoPx,websiteBtnOn,editBtnOn,usageTitle,barScaleToMax,intVisible,mainColor,contrastColor,textOnAccent,textOnContrast,cardBg,padPx,radPx,stackGap,tilePadding,tileRadius,backColor,nameColor,summaryColor,labelColor,statNumColor,statLabelColor,barLabelColor,barValColor,barFillColor,barTrackColor,aboutColor,contactColor,pillColor,supportColor,buttonTextColor,buttonFillColor,formRecipientEmail,cap,operatorVisibleCount,operatorOverflowHref,isCanvas,typography,colors,spacing]);return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:{position:\"relative\",width:\"100%\",height:\"auto\",minHeight:0,overflow:\"visible\"}});}// ── Control helpers ──────────────────────────────────────────────────────────\nfunction num(title,defaultValue,min,max,step=1,unit=\"px\"){return{type:ControlType.Number,title,defaultValue,min,max,step,unit};}function grp(title,controls){return{type:ControlType.Object,title,buttonTitle:title,controls};}function color(title,defaultValue){return{type:ControlType.Color,title,defaultValue};}const caseOptions=[\"none\",\"uppercase\",\"lowercase\",\"capitalize\"];const caseOptionTitles=[\"Default\",\"UPPERCASE\",\"lowercase\",\"Capitalize\"];function caseCtl(defaultValue=\"none\"){return{type:ControlType.Enum,title:\"Case\",options:caseOptions,optionTitles:caseOptionTitles,defaultValue};}function fontCtl(defaultValue,defaultFontType=\"sans-serif\"){return{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType,defaultValue};}function typeGroup(title,fontDefault,caseDefault=\"none\",fontType=\"sans-serif\"){return{type:ControlType.Object,title,buttonTitle:title,controls:{font:fontCtl(fontDefault,fontType),case:caseCtl(caseDefault)}};}addPropertyControls(StackedPartnerPageMobile,{usageTitle:{type:ControlType.String,title:\"Usage Title\",defaultValue:\"What operators use it for\",section:\"Content\"},barScaleToMax:{type:ControlType.Boolean,title:\"Usage: Scale To Largest\",defaultValue:false,description:\"Off = a bar is filled to its own percentage. On = the largest category fills the whole bar.\",section:\"Content\"},integrationVisible:{type:ControlType.Number,title:\"Integrations Visible\",defaultValue:8,min:3,max:40,step:1,displayStepper:true,description:\"Roughly how many integration pills show before the list becomes a scroll well.\",section:\"Content\"},marketplacePath:{type:ControlType.String,title:\"Marketplace Path\",defaultValue:\"/marketplace\",section:\"Content\"},showWebsiteButton:{type:ControlType.Boolean,title:\"Show Visit Website Button\",defaultValue:false,description:\"Off (default) = hidden, and the primary CTA is always 'Get in touch'.\",section:\"Content\"},showEditButton:{type:ControlType.Boolean,title:\"Show Edit Listing Button\",defaultValue:false,description:\"Off (default) = the 'Edit your listing' button is hidden. The edit form itself is untouched.\",section:\"Content\"},approvedBadge:{type:ControlType.Image,title:\"Approved Badge\",description:\"Optional. Image/SVG approved stamp. Leave empty for the built-in frilled seal.\",section:\"Content\"},maxTags:{type:ControlType.Number,title:\"Max tags / group\",defaultValue:5,min:3,max:10,step:1,displayStepper:true,section:\"Content\"},operatorsVisible:{type:ControlType.Number,title:\"Operators Visible\",defaultValue:5,min:1,max:30,step:1,displayStepper:true,section:\"Content\"},operatorsOverflowLink:{type:ControlType.Link,title:\"Operators Overflow Link\",defaultValue:\"/contact\",section:\"Content\"},formRecipientEmail:{type:ControlType.String,title:\"Listing Request Email\",placeholder:\"you@yourcompany.com\",section:\"Content\"},liteEnquiryEmail:{type:ControlType.String,title:\"Lite Enquiry Email\",defaultValue:\"hello@wearestacked.io\",description:\"Fallback only. Used if the lead API can't be reached, so a lead is never lost.\",section:\"Content\"},spacing:{type:ControlType.Object,title:\"Spacing\",buttonTitle:\"Spacing\",section:\"Design\",controls:{card:grp(\"Card\",{padding:num(\"Padding\",16,0,60,2),radius:num(\"Radius\",20,0,48,2)}),tiles:grp(\"Tiles\",{stackGap:num(\"Stack gap\",12,0,32,1),tilePadding:num(\"Tile padding\",16,0,40,1),tileRadius:num(\"Tile radius\",16,0,40,1)}),badges:grp(\"Badge & logo\",{badgeSize:num(\"Approved badge size\",56,32,120,2),logoHeight:num(\"Logo height\",24,14,60,2)})}},typography:{type:ControlType.Object,title:\"Typography\",buttonTitle:\"Typography\",section:\"Design\",controls:{backLink:typeGroup(\"Back link\",{fontSize:13,fontWeight:500},\"none\"),idName:typeGroup(\"Partner name\",{fontSize:22,fontWeight:700},\"none\"),idSummary:typeGroup(\"Summary\",{fontSize:14,lineHeight:\"1.5em\"},\"none\"),sectionLabel:typeGroup(\"Section label\",{fontSize:10,fontWeight:700,letterSpacing:\"0.08em\"},\"uppercase\"),statNum:typeGroup(\"Stat number\",{fontSize:20,fontWeight:800},\"none\"),statLabel:typeGroup(\"Stat label\",{fontSize:11},\"none\"),barLabel:typeGroup(\"Usage bar label\",{fontSize:11},\"none\"),barVal:typeGroup(\"Usage bar value\",{fontSize:11,fontWeight:700},\"none\"),aboutBody:typeGroup(\"About body\",{fontSize:13,lineHeight:\"1.65em\"},\"none\"),contactText:typeGroup(\"Contact text\",{fontSize:13,fontWeight:600},\"none\"),pillText:typeGroup(\"Pill text\",{fontSize:11,fontWeight:600},\"none\"),supportItem:typeGroup(\"Support item\",{fontSize:12},\"none\"),buttonText:typeGroup(\"Button text\",{fontSize:13,fontWeight:600},\"none\")}},colors:{type:ControlType.Object,title:\"Colors\",buttonTitle:\"Colors\",section:\"Design\",controls:{mainColor:color(\"Main\",\"#E8440A\"),contrastColor:color(\"Contrast\",\"#0F766E\"),textOnAccent:{type:ControlType.Color,title:\"Text on Accent\",defaultValue:\"\"},textOnContrast:{type:ControlType.Color,title:\"Text on Contrast\",defaultValue:\"\"},cardBackground:color(\"Card Background\",\"#FFFFFF\"),backLinkColor:{type:ControlType.Color,title:\"Back link\",defaultValue:\"\"},idNameColor:{type:ControlType.Color,title:\"Partner name\",defaultValue:\"\"},idSummaryColor:{type:ControlType.Color,title:\"Summary\",defaultValue:\"\"},sectionLabelColor:{type:ControlType.Color,title:\"Section label\",defaultValue:\"\"},statNumColor:{type:ControlType.Color,title:\"Stat number\",defaultValue:\"\"},statLabelColor:{type:ControlType.Color,title:\"Stat label\",defaultValue:\"\"},barLabelColor:{type:ControlType.Color,title:\"Usage bar label\",defaultValue:\"\"},barValColor:{type:ControlType.Color,title:\"Usage bar value\",defaultValue:\"\"},barFillColor:{type:ControlType.Color,title:\"Usage bar fill\",defaultValue:\"\"},barTrackColor:{type:ControlType.Color,title:\"Usage bar track\",defaultValue:\"\"},aboutBodyColor:{type:ControlType.Color,title:\"About body\",defaultValue:\"\"},contactTextColor:{type:ControlType.Color,title:\"Contact text\",defaultValue:\"\"},pillTextColor:{type:ControlType.Color,title:\"Pill text\",defaultValue:\"\"},supportItemColor:{type:ControlType.Color,title:\"Support item\",defaultValue:\"\"},buttonTextColor:{type:ControlType.Color,title:\"Button text\",defaultValue:\"\"},buttonFillColor:{type:ControlType.Color,title:\"Button fill\",defaultValue:\"\",description:\"Background of the primary (filled) button. Leave blank to use Main colour.\"}}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StackedPartnerPageMobile\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Partner_Mobile.map"],"mappings":"sMAuBA,SAAS,EAAW,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAwB,GAAnB,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAK,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,EAAqD,OAAhD,EAAE,SAAS,IAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,GAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,IAAM,EAAE,EAAE,MAAM,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAM,EAAE,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,CAAC,OAAO,IAAK,CAAC,SAAS,EAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAE,CAAC,SAAS,EAAI,EAAM,EAAO,EAAI,CAAC,IAAM,EAAE,EAAW,CAAK,EAAE,EAAE,EAAW,CAAM,EAAqB,OAAf,EAAsB,EAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAG,EAAjF,CAAmF,CAChpB,SAAS,GAAa,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAoB,OAAd,EAAoB,gBAAgB,KAAK,CAAC,EAAE,EAAE,WAAW,EAAhD,IAAkD,CAAC,SAAS,GAAY,EAAI,CAAC,GAAG,CAAC,EAAI,OAAO,KAAK,IAAM,EAAW,GAAa,CAAG,EAAE,GAAG,CAAC,EAAW,OAAO,KAAK,IAAI,EAAO,KAAK,GAAG,CAAC,EAAO,IAAI,IAAI,CAAU,CAAE,MAAS,CAAC,OAAO,IAAK,CAAC,IAAM,EAAK,EAAO,SAAS,QAAQ,UAAU,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,IAAO,eAAe,IAAO,iBAAiB,IAAO,WAAW,CAA8M,IAAM,EAAG,CAAtM,EAAO,aAAa,IAAI,GAAuL,EAAnK,EAAO,SAAS,MAAM,8BAA8B,CAAC,GAAG,GAAmB,IAAO,WAAW,EAAO,SAAS,QAAQ,OAAO,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAyC,CAAC,CAAC,KAAK,GAAG,sBAAsB,KAAK,OAAO,GAAG,EAAE,CAAC,CAAC,EAAoD,OAA/C,EAAS,iCAAiC,IAAY,IAAK,CAAC,GAAG,IAAO,aAAa,IAAO,mBAAmB,CAAC,IAAM,EAAQ,EAAO,SAAS,MAAM,qBAAqB,CAAC,GAAG,GAAgE,OAA1D,EAAc,kCAAkC,IAAiB,IAAK,CAAC,OAAO,IAAK,CAAC,SAAS,GAAS,CAAC,IAAM,EAAM,EAAO,SAAS,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,EAAE,OAAO,EAAM,EAAM,OAAO,IAAI,IAAK,CAAC,SAAS,EAAI,EAAE,CAAC,OAAO,MAAM,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC,CAAE,CAAC,SAAS,GAAgB,EAAM,CAAC,IAAM,EAAE,OAAO,GAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAA4J,OAAtJ,EAAkB,UAAU,KAAK,CAAC,GAAiB,iCAAiC,KAAK,CAAC,GAAiB,uBAAuB,KAAK,CAAC,EAAS,GAAW,YAAY,KAAK,CAAC,GAAG,eAAe,KAAK,CAAC,EAA7L,EAA+L,CACp8C,SAAS,EAAU,EAAM,CAAC,MAAM,CAAC,cAAc,GAAO,MAAM,CAAE,CAAC,SAAS,EAAO,EAAM,CAAC,MAAM,CAAC,GAAG,GAAO,MAAM,CAAC,EAAE,GAAG,EAAU,GAAO,IAAI,CAAC,CAAE,CAAsD,SAAS,EAAW,EAAK,EAAS,CAAI,CAAC,GAAM,CAAC,GAAgB,OAAO,KAAK,CAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAS,GAAM,GAAmB,MAAM,IAAI,KAAa,OAAO,GAAI,UAAU,EAAS,IAAI,CAAC,IAAE,GAAI,MAAK,EAAK,MAAM,GAAG,EAAE,CAAC,CAAE,CAC4d,SAAS,EAAQ,EAAK,CAAC,IAAM,GAAG,GAAM,GAAA,CAAI,YAAY,EAAqpB,OAAhpB,EAAE,SAAS,KAAK,GAAG,EAAE,SAAS,eAAe,EAAQ,MAAS,EAAE,SAAS,KAAK,EAAQ,UAAa,EAAE,SAAS,SAAS,GAAG,EAAE,SAAS,SAAS,GAAG,EAAE,SAAS,KAAK,EAAQ,UAAa,EAAE,SAAS,OAAO,EAAQ,QAAW,EAAE,SAAS,MAAM,GAAG,EAAE,SAAS,QAAQ,GAAG,EAAE,SAAS,OAAO,EAAQ,UAAa,EAAE,SAAS,OAAO,GAAG,EAAE,SAAS,QAAQ,GAAG,EAAE,SAAS,MAAM,EAAQ,UAAa,EAAE,SAAS,QAAQ,GAAG,EAAE,SAAS,QAAQ,GAAG,EAAE,SAAS,SAAS,EAAQ,YAAe,EAAE,SAAS,OAAO,EAAQ,QAAW,EAAE,SAAS,KAAK,EAAQ,MAAS,EAAE,SAAS,KAAK,GAAG,EAAE,SAAS,SAAS,GAAG,EAAE,SAAS,QAAQ,GAAG,EAAE,SAAS,KAAK,GAAG,EAAE,SAAS,OAAO,EAAQ,SAAe,UAAW,CAAC,SAAS,EAAO,EAAK,CAAC,MAAM,8HAA8H,EAAM,EAAQ,CAAI,GAAG,OAAQ,CAKjxD,SAAS,EAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE,MAAM,mBAAmB,KAAK,EAAE,MAAM,KAAK,QAAQ,EAAE,SAAS,GAAG,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,OAAO,KAAK,QAAQ,EAAE,SAAS,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK,EAAE,MAAM,OAAO,SAAS,CAAC,CAAC,EAAE,SAAS,YAAY,GAAM,YAAY,CAAC,CAAC,EAAE,YAAY,UAAU,CAAC,CAAC,EAAE,UAAU,MAAM,EAAI,EAAE,KAAK,EAAE,MAAM,EAAI,EAAE,KAAK,EAAE,cAAc,EAAI,EAAE,aAAa,EAAE,SAAS,EAAI,EAAE,QAAQ,EAAE,WAAW,EAAI,EAAE,UAAU,EAAE,OAAO,EAAI,EAAE,MAAM,EAAE,QAAQ,EAAI,EAAE,OAAO,EAAE,YAAY,EAAI,EAAE,WAAW,CAAC,CAAE,CAAC,SAAwB,EAAyB,CAAC,qBAAmB,aAAW,gBAAc,kBAAgB,mBAAiB,gBAAc,oBAAkB,iBAAe,qBAAmB,UAAQ,mBAAiB,wBAAsB,UAAQ,aAAW,UAAQ,CAAC,IAAM,EAAQA,EAAO,IAAI,EAAQ,EAAU,GAAkB,wBAA8B,EAAI,GAAS,EAAQ,EAAqB,KAAK,IAAI,EAAE,KAAK,MAAM,GAAkB,CAAC,CAAC,EAAQ,EAAqB,GAAuB,WAAiB,EAAW,KAAK,IAAI,EAAE,GAAoB,CAAC,EAAQ,EAAa,IAAoB,GAAW,EAAU,IAAiB,GAAW,EAAS,EAAa,QAAQ,IAAI,EAAa,OACnrC,EAAG,GAAS,CAAC,EAAQ,EAAO,EAAG,MAAM,CAAC,EAAQ,EAAQ,EAAG,OAAO,CAAC,EAAQ,EAAS,EAAG,QAAQ,CAAC,EAAQ,GAAM,EAAO,SAAS,GAAS,GAAM,EAAO,QAAQ,GAAS,GAAS,EAAQ,UAAU,GAAS,GAAY,EAAQ,aAAa,GAAS,GAAW,EAAQ,YAAY,GAAS,EAAQ,EAAS,WAAW,GAAS,GAAO,EAAS,YAAY,GAC1V,EAAG,GAAQ,CAAC,EAAQ,EAAU,EAAG,WAAW,UAAgB,EAAc,EAAG,eAAe,UAAgB,GAAa,EAAG,cAAc,GAAS,GAAe,EAAG,gBAAgB,GAAS,GAAO,EAAG,gBAAgB,UAAgB,GAAU,EAAG,eAAe,GAAS,GAAU,EAAG,aAAa,GAAS,GAAa,EAAG,gBAAgB,GAAS,GAAW,EAAG,mBAAmB,GAAS,GAAa,EAAG,cAAc,GAAS,GAAe,EAAG,gBAAgB,GAAS,GAAc,EAAG,eAAe,GAAS,GAAY,EAAG,aAAa,GAAS,GAAa,EAAG,cAAc,GAAS,GAAc,EAAG,eAAe,GAAS,GAAW,EAAG,gBAAgB,GAAS,EAAa,EAAG,kBAAkB,GAAS,GAAU,EAAG,eAAe,GAAS,GAAa,EAAG,kBAAkB,GAAS,EAAgB,EAAG,iBAAiB,GAAS,EAAgB,EAAG,iBAAiB,GACt2B,EAAG,GAAY,CAAC,EAAQ,GAAM,EAAO,EAAG,QAAQ,EAAQ,GAAM,EAAO,EAAG,MAAM,EAAQ,GAAS,EAAO,EAAG,SAAS,EAAQ,GAAO,EAAO,EAAG,YAAY,EAAQ,GAAS,EAAO,EAAG,OAAO,EAAQ,GAAW,EAAO,EAAG,SAAS,EAAQ,GAAU,EAAO,EAAG,QAAQ,EAAQ,GAAQ,EAAO,EAAG,MAAM,EAAQ,GAAO,EAAO,EAAG,SAAS,EAAQ,GAAS,EAAO,EAAG,WAAW,EAAQ,GAAM,EAAO,EAAG,QAAQ,EAAQ,GAAS,EAAO,EAAG,WAAW,EAAQ,EAAQ,EAAO,EAAG,UAAU,EAwI6sE,OAxI3sE,MAAc,CAAC,GAAG,CAAC,EAAQ,QAAQ,OAAO,IAAM,EAAK,EAAQ,QAAQ,EAAK,GAAG,WAAW,EAAK,MAAM,SAAS,WAAW,EAAK,MAAM,MAAM,OAAO,EAAK,MAAM,OAAO,OAAO,EAAK,MAAM,UAAU,IAAI,EAAK,MAAM,SAAS,UAAU,IAAI,EAAU,GAAU,EAAU,EAAM,EAAU,KAAS,EAAO,KAAW,MAAe,CAAC,GAAG,CAAC,EAAK,OAAO,IAAM,EAAK,EAAK,kBAAkB,GAAG,CAAC,EAAK,OAAO,IAAM,EAAE,KAAK,KAAK,EAAK,sBAAsB,CAAC,CAAC,MAAM,EAAM,IAAS,EAAK,MAAM,OAAO,EAAE,KAAK,EAAK,MAAM,UAAU,EAAE,KAAK,EAAQ,MAAoB,CAAI,GAAU,qBAAqB,CAAS,EAAE,EAAU,0BAA0B,CAAC,EAAW,EAAE,EAAU,CAAE,CAAC,CAAE,EAAQ,EAAS,aAAmB,EAAK,SAAS,eAAe,CAAQ,EAAK,GAAK,EAAK,OAAO,EAAE,IAAM,EAAM,SAAS,cAAc,OAAO,EAAE,EAAM,GAAG,EAAS,EAAM,YAAY;;;;;;kCAM9uC,GAAO;;uEAE8B,GAAS;yCACvC,GAAW,eAAe,GAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAwGrE,SAAS,KAAK,YAAY,CAAK,EAAE,EAAK,UAAU,6EAA6E,SAAS,EAAG,EAAI,EAAI,EAAK,CAAC,IAAM,EAAE,SAAS,cAAc,CAAG,EAAwD,OAAnD,IAAI,EAAE,UAAU,GAAO,GAAM,OAAK,EAAE,UAAU,GAAY,CAAE,CAAC,SAAS,EAAM,EAAK,CAAC,IAAM,EAAE,EAAG,OAAO,YAAY,EAAiF,MAA/E,GAAE,YAAY,EAAK,EAAW,EAAE,EAAM,EAAK,KAAW,EAAE,MAAM,MAAM,IAAkB,CAAE,CAAC,SAAS,EAAK,EAAK,EAAS,CAAC,IAAM,EAAE,EAAG,OAAO,UAAU,EAAK,IAAS,EAAE,UAAU,EAAO,CAAI,GAAE,IAAM,EAAE,EAAG,MAAM,EAA+F,MAA7F,GAAE,YAAY,EAAK,EAAE,YAAY,CAAC,EAAE,EAAW,EAAE,EAAK,EAAK,KAAU,EAAE,MAAM,MAAM,IAAiB,CAAE,CAAC,SAAS,EAAc,EAAM,EAAQ,CAAC,IAAI,EAAU,GAAS,MAAU,CAAC,EAAM,MAAM,UAAU,GAAG,EAAM,UAAU,OAAO,mBAAmB,QAAQ,EAAE,IAAM,EAAK,EAAM,SAAS,GAAG,EAAK,QAAQ,EAAQ,OAAO,IAAM,EAAO,EAAK,EAAQ,GAAG,GAAG,CAAC,EAAO,OAAO,IAAM,EAAI,KAAK,MAAM,EAAO,sBAAsB,CAAC,CAAC,OAAO,EAAM,sBAAsB,CAAC,CAAC,GAAG,EAAK,GAAK,GAAG,EAAM,cAAc,EAAI,IAAS,EAAM,UAAU,IAAI,kBAAkB,EAAE,EAAM,MAAM,UAAU,EAAI,KAAK,EAAgB,EAAE,EAAE,EAAM,iBAAiB,aAAa,CAAC,IAAM,EAAM,EAAM,UAAU,EAAM,cAAc,EAAM,aAAa,EAAE,EAAM,UAAU,OAAO,SAAS,CAAK,CAAE,CAAC,EAAE,sBAAsB,CAAK,EAAK,OAAO,eAAiB,KAAwK,IAA9I,eAAe,GAAS,CAAC,IAAM,EAAE,KAAK,MAAM,EAAQ,EAAE,CAAC,YAAY,KAAK,EAAK,IAAI,IAAiB,EAAU,EAAE,sBAAsB,CAAK,EAAE,CAAI,CAAC,CAAC,QAAQ,CAAK,CAAG,CAAC,SAAS,GAAW,CAAC,IAAsC,EAAM,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,GAAE,IAAI,CAAC,IAAM,EAAE,EAAE,KAAK,GAAG,EAAE,GAAE,GAAO,gBAAgB,GAAG,GAAG,KAAK,IAAI,CAAC,EAAA,CAAG,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG,KAAK,IAAI,CAAC,EAAA,CAAG,QAAQ,CAAC,EAAE,UAAe,CAAC,IAAM,EAAK,EAAG,MAAM,UAAU,EAA8Z,MAA5Z,GAAK,MAAM,mBAAmB,EAAK,UAAU,4GAA4G,EAAM,0PAAoQ,CAAK,CAC1nE,SAAS,EAAU,EAAU,CAAC,SAAS,eAAe,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAM,EAAQ,EAAG,MAAM,aAAa,EAAE,EAAQ,GAAG,oBAAoB,IAAM,EAAM,EAAG,MAAM,WAAW,EAAE,EAAQ,YAAY,CAAK,EAAE,EAAQ,iBAAiB,QAAQ,GAAG,CAAI,EAAE,SAAS,GAAQ,EAAQ,OAAO,CAAE,CAAC,EAAE,EAAU,MAAU,EAAQ,OAAO,CAAC,EAAE,SAAS,KAAK,YAAY,CAAO,CAAE,CAAC,SAAS,EAAQ,CAAC,QAAM,OAAK,OAAK,OAAO,QAAM,GAAG,cAAY,GAAG,MAAI,CAAC,IAAM,EAAK,EAAG,QAAQ,WAAW,EAAQ,EAAI,EAAG,MAAM,EAAE,EAAI,YAAY,EAAM,EAAK,YAAY,CAAG,EAAE,IAAM,EAAwB,EAAlB,IAAO,WAAc,WAAe,OAAO,EAA+K,GAA1K,IAAO,aAAW,EAAM,KAAK,GAAQ,IAAO,aAAW,EAAM,KAAK,IAAQ,QAAQ,EAAE,GAAE,EAAM,MAAM,EAAM,EAAM,YAAY,EAAY,EAAM,GAAG,EAAG,EAAK,YAAY,CAAK,EAAK,EAAK,CAAC,IAAM,EAAE,EAAG,OAAO,UAAU,EAAE,EAAE,YAAY,EAAK,EAAK,YAAY,CAAC,CAAE,CAAC,OAAO,CAAK,CAAC,SAAS,EAAS,CAAC,QAAM,KAAG,UAAQ,QAAM,CAAC,IAAM,EAAK,EAAG,QAAQ,WAAW,EAAQ,EAAI,EAAG,MAAM,EAAE,EAAI,YAAY,EAAM,EAAK,YAAY,CAAG,EAAE,IAAM,EAAI,EAAG,QAAQ,EAA8J,GAA5J,EAAI,GAAG,EAAG,EAAQ,QAAQ,GAAG,CAAC,IAAM,EAAI,EAAG,QAAQ,EAAE,EAAI,MAAM,EAAE,EAAI,YAAY,IAAI,GAAG,oBAAoB,EAAE,EAAI,YAAY,CAAG,CAAE,CAAC,EAAE,EAAK,YAAY,CAAG,EAAK,EAAK,CAAC,IAAM,EAAE,EAAG,OAAO,UAAU,EAAE,EAAE,YAAY,EAAK,EAAK,YAAY,CAAC,CAAE,CAAC,OAAO,CAAK,CAEzvC,SAAS,GAAY,CAAC,IAAM,EAAK,EAAG,MAAM,QAAQ,EAAE,EAAK,aAAa,cAAc,MAAM,EAAE,IAAM,EAAI,EAAG,OAAO,EAAE,EAAI,QAAQ,kBAAkB,EAAI,YAAY,kBAAkB,IAAM,EAAM,EAAG,OAAO,EAAqK,MAAnK,GAAM,KAAK,OAAO,EAAM,GAAG,kBAAkB,EAAM,KAAK,kBAAkB,EAAM,SAAS,GAAG,EAAM,aAAa,MAAM,EAAK,YAAY,CAAG,EAAE,EAAK,YAAY,CAAK,EAAS,CAAK,CAAC,SAAS,EAAW,CAAC,QAAM,UAAQ,WAAS,OAAK,CAAC,IAAM,EAAK,EAAG,MAAM,WAAW,EAAQ,EAAI,EAAG,MAAM,EAAE,EAAI,YAAY,GAAG,EAAM,iBAAiB,EAAI,GAAG,EAAK,YAAY,CAAG,EAAE,IAAM,EAAM,EAAG,MAAM,WAAW,EAAE,EAAK,YAAY,CAAK,EAAE,IAAM,EAAK,EAAG,OAAO,gBAAgB,EAAE,EAAK,YAAY,CAAI,EAAE,SAAS,GAAS,CAAC,IAAM,EAAO,CAAC,GAAG,EAAM,iBAAiB,OAAO,CAAC,EAAQ,EAAM,EAAO,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,OAAa,EAAM,GAAO,EAAI,EAAO,QAAQ,GAAG,CAAC,IAAM,EAAK,EAAE,QAAQ,WAAW,EAAE,EAAK,UAAU,OAAO,UAAU,EAAE,OAAO,EAAE,IAAM,EAAK,CAAC,EAAE,SAAS,EAAM,EAAE,SAAS,EAAK,EAAK,UAAU,OAAO,WAAW,CAAI,CAAE,CAAC,EAAE,EAAK,YAAY,GAAG,EAAM,GAAG,EAAI,WAAW,EAAK,UAAU,OAAO,QAAQ,CAAK,CAAE,CAA4U,OAA3U,EAAQ,QAAQ,GAAK,CAAC,IAAM,EAAK,EAAG,QAAQ,UAAU,EAAQ,EAAM,EAAG,OAAO,EAAE,EAAM,KAAK,WAAW,EAAM,MAAM,EAAO,EAAS,SAAS,CAAG,IAAE,EAAM,QAAQ,IAAK,IAAM,EAAK,EAAG,MAAM,EAAE,EAAK,YAAY,EAAI,EAAK,YAAY,CAAK,EAAE,EAAK,YAAY,CAAI,EAAE,EAAM,iBAAiB,SAAS,CAAO,EAAE,EAAM,YAAY,CAAI,CAAE,CAAC,EAAE,EAAQ,EAAQ,CAAC,OAAK,cAAc,CAAC,GAAG,EAAM,iBAAiB,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAE,CAAC,SAAS,EAAW,EAAG,EAAQ,EAAM,EAAM,CAAC,GAAG,CAAC,EAAG,CAAC,MAAM,qHAAqH,EAAE,MAAO,CAAC,EAAO,SAAS,KAAK,UAAU,EAAG,YAAY,mBAAmB,CAAO,EAAE,SAAS,mBAAmB,EAAM,KAAK;CAAI,CAAC,EAAE,EAAM,CAAE,CAAC,SAAS,GAAS,EAAQ,EAAM,EAAM,CAAC,EAAW,EAAmB,EAAQ,EAAM,CAAK,CAAE,CAAC,SAAS,GAAU,EAAM,EAAK,EAAS,CAAC,IAAM,EAAI,EAAG,MAAM,SAAS,EAAE,EAAM,YAAY,CAAG,EAAE,IAAM,EAAI,EAAG,MAAM,SAAS,EAAQ,EAAO,EAAG,SAAS,yBAAyB,EAAE,EAAO,MAAM,MAAM,OAAO,EAAO,YAAY,SAAS,EAAO,iBAAiB,YAAY,SAAS,eAAe,mBAAmB,CAAC,EAAE,OAAO,CAAC,EAAE,IAAM,EAAO,EAAG,SAAS,yBAAyB,EAA2J,MAAzJ,GAAO,YAAY,EAAK,EAAO,iBAAiB,YAAY,EAAS,EAAI,CAAM,CAAC,EAAE,EAAI,YAAY,CAAM,EAAE,EAAI,YAAY,CAAM,EAAE,EAAM,YAAY,CAAG,EAAS,CAAO,CAAC,IAAM,EAAE,GAAI,CAAC,IAAM,EAAE,SAAS,eAAe,CAAE,EAAE,OAAO,GAAG,EAAE,MAAM,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,EAAG,EAGx+E,eAAe,GAAS,EAAQ,CAAC,IAAM,EAAI,MAAM,MAAM,GAAG,EAAS,WAAW,CAAC,OAAO,OAAO,QAAQ,CAAC,eAAe,kBAAkB,EAAE,KAAK,KAAK,UAAU,CAAO,CAAC,CAAC,EAAQ,EAAK,MAAM,EAAI,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,EAAI,IAAI,CAAC,EAAK,GAAG,CAAC,IAAM,EAAM,MAAM,EAAK,OAAO,kBAAkB,EAAI,QAAQ,EAAsB,KAApB,GAAE,OAAO,EAAI,OAAa,CAAE,CAAC,OAAO,CAAK,CAGjV,SAAS,GAAY,EAAE,CAAC,GAAW,EAAM,IAAQ,CAAC,IAAM,EAAK,EAAG,MAAM,gBAAgB,EAAQ,EAAE,EAAG,IAAI,EAAE,EAAE,YAAY,iBAAiB,EAAE,KAAK,GAAG,IAAM,EAAS,EAAG,SAAS,iBAAiB,EAAE,EAAS,KAAK,SAAS,EAAS,YAAY,QAAQ,EAAS,aAAa,aAAa,oBAAoB,EAAE,EAAS,iBAAiB,YAAY,EAAM,CAAC,EAAE,EAAK,YAAY,CAAC,EAAE,EAAK,YAAY,CAAQ,EAAE,EAAM,YAAY,CAAI,EAAE,IAAM,EAAI,EAAG,IAAI,eAAe,EAAE,EAAI,YAAY,oFAAoF,EAAE,KAAK,iBAAiB,EAAM,YAAY,CAAG,EAAE,IAAI,EAAY,EAAc,GAAS,EAAS,EAAG,MAAM,WAAW,EAAQ,EAAQ,EAAG,MAAM,EAAE,EAAQ,YAAY,sBAAsB,EAAS,YAAY,CAAO,EAAE,IAAM,EAAU,EAAG,MAAM,WAAW,EAAE,EAAc,QAAQ,GAAG,CAAC,IAAM,EAAK,EAAG,SAAS,YAAY,IAAI,EAAY,WAAW,GAAG,EAAE,EAAK,KAAK,SAAS,IAAM,EAAK,EAAG,MAAM,EAAE,EAAK,YAAY,EAAE,EAAK,YAAY,CAAI,EAAE,EAAK,iBAAiB,YAAY,CAAC,EAAY,EAAE,MAAM,KAAK,EAAU,QAAQ,CAAC,CAAC,QAAQ,GAAG,EAAE,UAAU,OAAO,SAAS,CAAC,EAAE,EAAK,UAAU,IAAI,SAAS,CAAE,CAAC,EAAE,EAAU,YAAY,CAAI,CAAE,CAAC,EAAE,EAAS,YAAY,CAAS,EAAE,EAAM,YAAY,CAAQ,EAAE,EAAM,YAAY,EAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,YAAY,YAAY,EAAM,YAAY,EAAQ,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,aAAa,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,QAAQ,KAAK,MAAM,GAAG,SAAS,YAAY,UAAU,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,gBAAgB,GAAG,QAAQ,YAAY,0BAA0B,CAAC,CAAC,EAAE,EAAM,YAAY,EAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,YAAY,sBAAsB,EAAM,YAAY,EAAQ,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,EAAE,EAAM,YAAY,EAAS,CAAC,MAAM,kBAAkB,GAAG,SAAS,QAAQ,CAAU,CAAC,CAAC,EAAE,EAAM,YAAY,EAAS,CAAC,MAAM,gCAAgC,GAAG,YAAY,QAAQ,CAAS,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,uCAAuC,KAAK,WAAW,GAAG,WAAW,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,CAAC,CAAC,EAAE,EAAM,YAAY,EAAW,CAAC,EAAE,IAAM,EAAQ,EAAG,IAAI,aAAa,EAAE,EAAQ,YAAY,0EAA0E,EAAM,YAAY,CAAO,EAAE,GAAU,EAAM,eAAe,MAAM,EAAI,IAAM,CAAC,IAAM,EAAM,EAAE,QAAQ,EAAE,EAAK,EAAE,OAAO,EAAE,EAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAO,CAAC,GAAO,CAAC,YAAY,KAAK,CAAK,EAAE,CAAC,EAAI,YAAY,qDAAqD,EAAI,MAAM,QAAQ,QAAQ,MAAO,CAAC,EAAI,MAAM,QAAQ,OAAO,EAAI,SAAS,GAAK,EAAI,YAAY,WAAW,IAAM,EAAQ,CAAC,KAAK,EAAE,KAAK,UAAU,EAAM,SAAS,EAAK,QAAM,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAY,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,GAAG,GAAU,CAAC,EAAE,KAAK,MAAU,MAAM,qCAAqC,EAAE,MAAM,GAAS,CAAO,EAAE,EAAM,UAAU,GAAG,EAAM,YAAY,EAAG,IAAI,CAAC,CAAC,CAAC,YAAY,4BAA4B,IAAM,EAAK,EAAG,IAAI,eAAe,EAAE,EAAK,YAAY,gCAAgC,EAAE,KAAK,qCAAqC,EAAM,YAAY,CAAI,EAAE,IAAM,EAAI,EAAG,MAAM,SAAS,EAAQ,EAAG,EAAG,SAAS,yBAAyB,EAAE,EAAG,YAAY,OAAO,EAAG,iBAAiB,YAAY,EAAM,CAAC,EAAE,EAAI,YAAY,CAAE,EAAE,EAAM,YAAY,CAAG,CAAE,OAAO,EAAE,CACp3G,GAAG,GAAG,EAAE,SAAS,IAAI,CAAC,EAAI,YAAY,EAAE,QAAQ,EAAI,MAAM,QAAQ,QAAQ,EAAI,SAAS,GAAM,EAAI,YAAY,eAAe,MAAO,CAEnI,IAAM,EAAM,CAAC,8BAA8B,EAAE,OAAO,SAAS,SAAS,OAAO,GAAG,SAAS,EAAM,GAAG,IAAO,KAAK,EAAE,UAAU,IAAQ,EAAQ,MAAM,UAAU,EAAQ,QAAQ,GAAG,EAAQ,QAAQ,YAAY,EAAQ,UAAU,GAAG,GAAG,gBAAgB,IAAc,EAAQ,KAAK,aAAa,EAAQ,OAAO,GAAG,EAAQ,MAAM,UAAU,EAAQ,QAAQ,GAAG,EAAQ,SAAS,aAAa,EAAQ,WAAW,GAAG,EAAQ,QAAQ;;EAExZ,EAAQ,UAAU,EAAE,CAAC,CAAC,OAAO,OAAO,EAAE,EAAW,EAAU,wBAAwB,EAAE,OAAO,EAAM,CAAK,CAAE,CAAC,CAAC,CAAE,CAAC,CAAE,CAAC,SAAS,GAAU,EAAE,CAAC,GAAW,EAAM,IAAQ,CAAC,IAAM,EAAK,EAAG,MAAM,gBAAgB,EAAQ,EAAE,EAAG,IAAI,EAAE,EAAE,YAAY,yBAAyB,IAAM,EAAS,EAAG,SAAS,iBAAiB,EAAE,EAAS,KAAK,SAAS,EAAS,YAAY,QAAQ,EAAS,aAAa,aAAa,kBAAkB,EAAE,EAAS,iBAAiB,YAAY,EAAM,CAAC,EAAE,EAAK,YAAY,CAAC,EAAE,EAAK,YAAY,CAAQ,EAAE,EAAM,YAAY,CAAI,EAAE,IAAM,EAAI,EAAG,IAAI,eAAe,EAAE,EAAI,YAAY,yDAAyD,EAAE,KAAK,GAAG,EAAM,YAAY,CAAG,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,kBAAkB,KAAK,QAAQ,GAAG,SAAS,KAAK,0EAA0E,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,4BAA4B,GAAG,QAAQ,YAAY,wBAAwB,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,4BAA4B,KAAK,WAAW,GAAG,OAAO,CAAC,CAAC,EAAE,GAAU,EAAM,qBAAqB,GAAK,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAI,YAAY,uCAAuC,EAAI,MAAM,QAAQ,QAAQ,MAAO,CAAC,IAAM,EAAM,CAAC,YAAY,EAAE,OAAO,SAAS,SAAS,OAAO,GAAG,SAAS,EAAE,OAAO,IAAI,UAAU,EAAE,QAAQ,GAAG,EAAK,EAAE,OAAO,GAAE,EAAM,KAAK,SAAS,EAAE,OAAO,GAAG,EAAK,EAAE,OAAO,GAAE,EAAM,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,EAAW,wBAAwB,mBAAmB,EAAE,OAAO,EAAM,CAAK,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,SAAS,GAAS,EAAE,EAAM,CAAC,GAAW,EAAM,IAAQ,CAAC,EAAM,YAAY,EAAG,IAAI,CAAC,CAAC,CAAC,YAAY,oBAAoB,IAAM,EAAI,EAAG,IAAI,eAAe,EAAE,EAAI,YAAY,oFAAoF,EAAE,KAAK,GAAG,EAAM,YAAY,CAAG,EAAE,EAAM,YAAY,EAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,YAAY,mBAAmB,EAAM,YAAY,EAAQ,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,kBAAkB,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAM,YAAY,EAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,YAAY,kBAAkB,EAAM,YAAY,EAAQ,CAAC,MAAM,UAAU,GAAG,WAAW,MAAM,EAAE,QAAQ,KAAK,uDAAuD,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,QAAQ,KAAK,WAAW,GAAG,SAAS,MAAM,EAAE,MAAM,KAAK,sFAAsF,CAAC,CAAC,EAAE,IAAM,EAAI,EAAW,CAAC,MAAM,WAAW,QAAQ,EAAM,SAAS,SAAS,EAAE,SAAS,IAAI,CAAG,CAAC,EAAQ,EAAK,EAAW,CAAC,MAAM,aAAa,QAAQ,EAAM,WAAW,SAAS,EAAE,WAAW,IAAI,CAAG,CAAC,EAAQ,EAAI,EAAW,CAAC,MAAM,SAAS,QAAQ,EAAM,OAAO,SAAS,EAAE,OAAO,IAAI,CAAG,CAAC,EAAE,EAAM,YAAY,EAAI,IAAI,EAAE,EAAM,YAAY,EAAK,IAAI,EAAE,EAAM,YAAY,EAAI,IAAI,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,UAAU,KAAK,WAAW,GAAG,WAAW,MAAM,EAAE,QAAQ,KAAK;CAAI,EAAE,KAAK,0CAA0C,CAAC,CAAC,EAAE,EAAM,YAAY,EAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,YAAY,kBAAkB,EAAM,YAAY,EAAQ,CAAC,MAAM,UAAU,KAAK,MAAM,GAAG,WAAW,MAAM,EAAE,SAAS,GAAG,KAAK,kDAAkD,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,eAAe,KAAK,QAAQ,GAAG,gBAAgB,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAM,YAAY,EAAQ,CAAC,MAAM,QAAQ,GAAG,SAAS,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,GAAU,EAAM,oBAAoB,GAAK,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAI,YAAY,qEAAqE,EAAI,MAAM,QAAQ,QAAQ,MAAO,CAAC,IAAM,EAAM,CAAC,6BAA6B,EAAE,OAAO,SAAS,SAAS,OAAO,GAAG,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,yBAAyB,YAAY,EAAE,UAAU,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAI,UAAU,CAAC,CAAC,KAAK,IAAI,IAAI,oBAAoB,EAAK,UAAU,CAAC,CAAC,KAAK,IAAI,IAAI,gBAAgB,EAAI,UAAU,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,WAAW,GAAG,EAAE,UAAU,CAAC,CAAC,MAAM;CAAI,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,GAAG,gBAAgB,YAAY,EAAE,UAAU,IAAI,iBAAiB,EAAE,eAAe,IAAI,UAAU,EAAE,QAAQ,GAAG,EAAE,GAAS,yBAAyB,EAAE,OAAO,EAAM,CAAK,CAAE,CAAC,CAAE,CAAC,CAAE,CACriI,SAAS,GAAW,EAAE,EAAM,EAAK,EAAS,CAAC,IAAM,EAAE,SAAS,gBAAgB,MAAM,EAAE,YAAY,SAAS,CAAI,EAAE,EAAE,YAAY,aAAa,CAAQ,EAAE,EAAE,YAAY,aAAa,IAAc,CAAQ,EAAE,EAAE,YAAY,cAAc,IAAe,EAAI,EAAS,UAAU,GAAG,CAAC,EAAE,EAAE,YAAY,gBAAgB,EAAI,EAAK,UAAU,GAAG,CAAC,EAAE,EAAE,YAAY,kBAAkB,EAAI,EAAS,UAAU,GAAG,CAAC,EAAE,EAAE,YAAY,eAAe,IAAc,EAAI,EAAK,UAAU,EAAE,CAAC,EAAE,EAAE,YAAY,iBAAiB,IAAgB,EAAI,EAAS,UAAU,EAAE,CAAC,EAAE,EAAK,UAAU,GAAG,IAAM,EAAK,EAAG,MAAM,UAAU,EAAE,EAAK,MAAM,WAAW,GAAO,EAAK,MAAM,aAAa,GAAM,KAAK,EAAK,MAAM,QAAQ,GAAM,KAAK,IAAM,EAAQ,EAAG,MAAM,cAAc,EAAQ,EAAK,EAAG,IAAI,UAAU,EAAsJ,GAApJ,EAAK,KAAK,EAAgB,EAAK,YAAY,gBAAgB,EAAW,EAAK,EAAK,EAAK,KAAU,EAAK,MAAM,MAAM,IAAU,EAAQ,YAAY,CAAI,EAAK,EAAE,KAAK,CAAC,IAAM,EAAK,EAAG,MAAM,UAAU,EAAE,EAAK,IAAI,EAAE,KAAK,EAAK,IAAI,EAAE,KAAK,QAAQ,EAAQ,YAAY,CAAI,CAAE,CAAC,EAAK,YAAY,CAAO,EAAE,IAAM,EAAM,EAAG,MAAM,WAAW,EAC5hC,EAAO,EAAG,MAAM,uBAAuB,EAAQ,EAAI,EAAG,MAAM,YAAY,EAAQ,EAAO,EAAG,KAAK,EAAE,EAAO,MAAM,QAAQ,OAAO,EAAO,MAAM,cAAc,SAAS,EAAO,MAAM,IAAI,MAAM,EAAO,MAAM,SAAS,IAAI,IAAM,EAAK,EAAG,KAAK,aAAa,EAAkH,GAAhH,EAAK,YAAY,EAAE,KAAK,EAAW,EAAK,EAAK,EAAK,KAAU,EAAK,MAAM,MAAM,IAAU,EAAO,YAAY,CAAI,EAAK,EAAE,QAAQ,CAAC,IAAM,EAAE,EAAG,IAAI,gBAAgB,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAW,EAAE,EAAQ,EAAK,KAAa,EAAE,MAAM,MAAM,IAAa,EAAO,YAAY,CAAC,CAAE,CAAC,IAAM,EAAQ,GAAa,EAAE,OAAO,EAAQ,EAAO,EAAG,MAAM,aAAa,EAAE,GAAG,GAAc,GAAS,EAAE,YAAY,CAAC,IAAM,EAAE,EAAG,IAAI,yBAAyB,EAAE,EAAE,KAAK,EAAQ,EAAE,OAAO,SAAS,EAAE,IAAI,sBAAsB,EAAE,YAAY,kBAAkB,EAAW,EAAE,CAAO,EAAK,IAAgB,EAAE,MAAM,WAAW,GAAmB,IAAgB,EAAE,MAAM,MAAM,GAAgB,EAAO,YAAY,CAAC,CAAE,KAAK,CAAC,IAAM,EAAE,EAAG,SAAS,yBAAyB,EAAE,EAAE,KAAK,SAAS,EAAE,YAAY,eAAe,EAAW,EAAE,CAAO,EAAK,IAAgB,EAAE,MAAM,WAAW,GAAmB,IAAgB,EAAE,MAAM,MAAM,GAAgB,EAAE,iBAAiB,YAAY,GAAY,CAAC,CAAC,EAAE,EAAO,YAAY,CAAC,CAAE,CAAoD,GAAnD,EAAO,YAAY,CAAM,EAAE,EAAI,YAAY,CAAM,EAAK,EAAE,SAAU,GAAG,EAAc,CAAC,IAAM,EAAI,EAAG,MAAM,eAAe,EAAE,EAAI,IAAI,EAAc,EAAI,IAAI,mBAAmB,EAAI,MAAM,MAAM,EAAQ,KAAK,EAAI,MAAM,OAAO,EAAQ,KAAK,EAAI,YAAY,CAAG,CAAE,MAAM,EAAI,YAAY,EAAU,CAAC,EAEv9C,GAF29C,EAAO,YAAY,CAAG,EAAE,EAAM,YAAY,CAAM,EAExgD,EAAE,OAAO,EAAE,MAAM,OAAO,CAAiC,IAAM,EAAI,EAAG,MAAM,iBAAtC,EAAE,MAAM,SAAS,EAA6C,iBAAiB,oBAAoB,EAAE,EAAE,MAAM,SAAS,EAAE,IAAI,CAAC,IAAM,EAAY,GAAgB,EAAE,KAAK,EAA8F,EAAE,EAAG,IAAI,oCAApF,EAAY,iBAAiB,EAAE,GAAI,EAAE,eAAe,iBAA6E,EAAE,EAAE,KAAK,WAAW,EAAE,aAAa,aAAa,sBAAsB,EAAE,OAAO,EAAE,IAAM,EAAM,EAAG,MAAM,cAAc,EAAE,EAAM,YAAY,EAAE,IAAI,EAAW,EAAM,EAAQ,EAAK,CAAC,GAAa,KAAa,EAAM,MAAM,MAAM,IAAa,IAAM,EAAM,EAAG,MAAM,gBAAgB,EAAE,EAAM,YAAY,EAAE,MAAM,EAAW,EAAM,EAAU,EAAK,CAAC,GAAa,KAAe,EAAM,MAAM,MAAM,IAAe,EAAE,YAAY,CAAK,EAAE,EAAE,YAAY,CAAK,EAAE,EAAI,YAAY,CAAC,CAAE,CAAC,EAAE,EAAM,YAAY,CAAG,CAAE,CAC/zB,GAAG,EAAE,eAAe,EAAE,cAAc,OAAO,CAAC,IAAM,EAAO,EAAG,MAAM,yBAAyB,EAAE,EAAO,YAAY,EAAM,mCAAmC,CAAC,EAAE,IAAM,EAAM,EAAG,KAAK,EAAE,EAAM,YAAY,6FAA6F,EAAM,MAAM,QAAQ,+FAA+F,EAAO,YAAY,CAAK,EAAE,IAAM,EAAQ,EAAG,MAAM,WAAW,EAAQ,EAAM,EAAE,cAAc,EAAM,MAAM,EAAE,CAAoB,CAAC,CAAC,QAAQ,GAAI,EAAQ,YAAY,EAAK,EAAG,EAAK,CAAC,CAAC,EAAE,IAAM,EAAU,EAAM,OAAO,EAAqB,GAAG,EAAU,EAAE,CAAC,IAAM,EAAK,EAAG,IAAI,iBAAiB,EAAE,EAAK,KAAK,EAAqB,EAAK,YAAY,IAAI,IAAY,EAAK,aAAa,aAAa,OAAO,EAAU,gBAAgB,EAAE,EAAK,MAAM,wCAAwC,EAAQ,YAAY,CAAI,CAAE,CAAC,EAAO,YAAY,CAAO,EAAE,EAAM,YAAY,CAAM,CAAE,CACh7B,IAAM,EAAM,EAAE,UAAU,GAAY,EAAE,KAAK,EAAE,KAAK,GAAG,EAAM,CAAC,IAAM,EAAI,EAAG,MAAM,qBAAqB,EAAQ,EAAM,EAAG,MAAM,WAAW,EAAQ,EAAO,EAAG,QAAQ,EAAE,EAAO,IAAI,EAAM,EAAO,aAAa,QAAQ,0CAA0C,EAAE,EAAO,aAAa,kBAAkB,EAAE,EAAE,EAAM,YAAY,CAAM,EAAE,EAAI,YAAY,CAAK,EAAE,EAAM,YAAY,CAAG,CAAE,CAAC,GAAG,EAAE,MAAM,CAAC,IAAM,EAAM,EAAG,MAAM,yBAAyB,EAAE,EAAM,YAAY,EAAM,OAAO,CAAC,EAAE,IAAM,EAAK,EAAG,MAAM,0BAA0B,EAAE,EAAE,MAAM,MAAM,OAAO,CAAC,CAAC,QAAQ,GAAM,CAAC,GAAG,CAAC,EAAK,KAAK,EAAE,OAAO,IAAM,EAAG,EAAG,GAAG,EAAE,EAAG,YAAY,EAAK,KAAK,EAAE,EAAW,EAAG,EAAM,EAAK,KAAW,EAAG,MAAM,MAAM,IAAW,EAAK,YAAY,CAAE,CAAE,CAAC,EAAE,EAAM,YAAY,CAAI,EAAE,IAAM,EAAY,EAAG,SAAS,kBAAkB,EAAE,EAAY,KAAK,SAAS,EAAY,YAAY,YAAY,EAAY,MAAM,QAAQ,OAAO,EAAY,iBAAiB,YAAY,CAAC,IAAM,EAAS,EAAK,UAAU,OAAO,UAAU,EAAE,EAAY,YAAY,EAAS,YAAY,YAAY,EAAgB,CAAE,CAAC,EAAE,EAAM,YAAY,CAAW,EAAE,EAAM,YAAY,CAAK,EAAE,0BAA0B,CAAI,EAAK,aAAa,EAAK,aAAa,IAAE,EAAY,MAAM,QAAQ,eAAe,CAAC,CAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,IAAM,EAAM,EAAG,MAAM,yBAAyB,EAAE,EAAM,YAAY,EAAM,GAAY,2BAA2B,CAAC,EAAE,IAAM,EAAI,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,QAAQ,GAAG,CAAC,IAAM,EAAI,OAAO,EAAE,KAAK,GAAG,EAAQ,EAAI,EAAG,MAAM,aAAa,EAAQ,EAAM,EAAG,OAAO,eAAe,EAAE,EAAM,YAAY,EAAE,MAAM,EAAW,EAAM,EAAS,EAAK,KAAc,EAAM,MAAM,MAAM,IAAc,IAAM,EAAM,EAAG,OAAO,eAAe,EAAQ,EAAO,EAAc,EAAI,EAAI,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE,CAAG,CAAC,EAAQ,EAAK,EAAG,OAAO,cAAc,EAAE,0BAA0B,CAAC,EAAK,MAAM,MAAM,EAAO,GAAI,CAAC,EAAE,EAAM,YAAY,CAAI,EAAE,IAAM,EAAM,EAAG,OAAO,aAAa,EAAE,EAAM,YAAY,EAAI,IAAI,EAAW,EAAM,EAAO,EAAK,KAAY,EAAM,MAAM,MAAM,IAAY,EAAI,YAAY,CAAK,EAAE,EAAI,YAAY,CAAK,EAAE,EAAI,YAAY,CAAK,EAAE,EAAM,YAAY,CAAG,CAAE,CAAC,EAAE,EAAM,YAAY,CAAK,CAAE,CAClkE,IAAM,EAAK,EAAG,MAAM,uBAAuB,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,IAAM,EAAI,EAAG,KAAK,EAAkH,GAAhH,EAAI,MAAM,QAAQ,OAAO,EAAI,MAAM,cAAc,SAAS,EAAI,MAAM,IAAI,MAAM,EAAI,YAAY,EAAM,SAAS,CAAC,EAAK,EAAE,MAAM,CAAC,IAAM,EAAE,EAAG,GAAG,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAW,EAAE,EAAQ,EAAK,IAAa,EAAE,MAAM,MAAM,GAAa,IAAM,EAAE,EAAG,MAAM,aAAa,EAAE,EAAE,YAAY,CAAC,EAAE,EAAI,YAAY,CAAC,CAAE,CAAC,GAAG,EAAE,MAAM,CAAC,IAAM,EAAE,EAAG,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAW,EAAE,EAAQ,EAAK,IAAa,EAAE,MAAM,MAAM,GAAa,IAAM,EAAE,EAAG,MAAM,aAAa,EAAE,EAAE,YAAY,CAAC,EAAE,EAAI,YAAY,CAAC,CAAE,CAAC,EAAK,YAAY,CAAG,CAAE,CAAC,IAAM,GAAQ,EAAI,EAAM,EAAS,IAAc,CAAC,GAAG,CAAC,GAAO,CAAC,EAAM,OAAO,OAAO,IAAM,EAAI,EAAG,KAAK,EAAE,EAAI,MAAM,QAAQ,OAAO,EAAI,MAAM,cAAc,SAAS,EAAI,MAAM,IAAI,MAAM,IAAM,EAAG,EAAM,CAAG,EAAE,GAAG,GAAa,EAAM,OAAO,EAAY,CAAC,IAAM,EAAE,EAAG,OAAO,kBAAkB,EAAE,EAAE,YAAY,KAAK,EAAM,OAAO,EAAG,YAAY,CAAC,CAAE,CAAC,EAAI,YAAY,CAAE,EAAE,IAAM,EAAM,EAAG,MAAM,WAAW,EAAE,EAAM,QAAQ,GAAG,EAAM,YAAY,EAAK,EAAE,CAAQ,CAAC,CAAC,EAAE,EAAI,YAAY,CAAK,EAAE,EAAK,YAAY,CAAG,EAAK,GAAa,EAAM,OAAO,GAAY,EAAc,EAAM,CAAW,CAAE,EAA2K,GAAzK,EAAO,WAAW,EAAE,SAAS,EAAI,EAAE,EAAO,aAAa,EAAE,WAAW,EAAK,EAAE,EAAO,SAAS,EAAE,OAAO,EAAK,EAAE,EAAO,uBAAuB,EAAE,YAAY,GAAM,CAAU,EAAK,EAAE,SAAS,EAAE,QAAQ,OAAO,CAAC,IAAM,EAAI,EAAG,KAAK,EAAE,EAAI,MAAM,QAAQ,OAAO,EAAI,MAAM,cAAc,SAAS,EAAI,MAAM,IAAI,MAAM,EAAI,YAAY,EAAM,SAAS,CAAC,EAAE,EAAE,QAAQ,QAAQ,GAAG,CAAC,IAAM,EAAE,EAAG,OAAO,kBAAkB,EAAE,EAAE,YAAY,MAAM,EAAE,EAAW,EAAE,EAAQ,EAAK,KAAa,EAAE,MAAM,MAAM,IAAa,EAAI,YAAY,CAAC,CAAE,CAAC,EAAE,EAAK,YAAY,CAAG,CAAE,CAAI,EAAK,SAAS,QAAO,EAAM,YAAY,CAAI,EACtuD,IAAM,EAAO,EAAG,MAAM,yBAAyB,EAAE,EAAO,YAAY,EAAM,qBAAqB,CAAC,EAAE,IAAM,EAAM,EAAG,SAAS,uCAAuC,EAAkJ,GAAhJ,EAAM,YAAY,yBAAyB,EAAW,EAAM,CAAO,EAAE,EAAM,iBAAiB,YAAY,GAAU,CAAC,CAAC,EAAE,EAAO,YAAY,CAAK,EAAK,EAAU,CAAC,IAAM,EAAK,EAAG,SAAS,uCAAuC,EAAE,EAAK,YAAY,oBAAoB,EAAW,EAAK,CAAO,EAAE,EAAK,iBAAiB,YAAY,GAAS,EAAE,CAAK,CAAC,EAAE,EAAO,YAAY,CAAI,CAAE,CAAC,EAAM,YAAY,CAAM,EACtiB,IAAM,EAAU,EAAG,SAAS,uCAAuC,EAAE,EAAU,KAAK,SAAS,EAAU,YAAY,eAAe,EAAW,EAAU,CAAO,EAAK,IAAgB,EAAU,MAAM,WAAW,GAAmB,IAAgB,EAAU,MAAM,MAAM,GAAgB,EAAU,iBAAiB,YAAY,GAAY,CAAC,CAAC,EAAE,EAAM,YAAY,CAAS,EAAE,EAAK,YAAY,CAAK,EAAE,EAAK,YAAY,CAAI,EAAE,EAAgB,CAAE,CAAC,SAAS,GAAY,EAAK,EAAQ,CAAC,IAAM,EAAI,EAAG,KAAK,EAAE,EAAI,MAAM,QAAQ,EAAQ,mIAAmI,sEAAsE,EAAI,YAAY,EAAK,EAAK,UAAU,GAAG,EAAK,YAAY,CAAG,EAAE,EAAgB,CAAE,CAAC,eAAe,GAAK,EAAK,CAAC,GAAG,CAAC,IAAM,EAAI,MAAM,MAAM,GAAG,EAAS,oBAAoB,mBAAmB,CAAI,GAAG,EAAE,GAAG,EAAU,OAAO,GAAG,EAAI,SAAS,KAAK,EAAI,SAAS,IAAI,CAAC,GAAY,qBAAqB,EAAK,EAAE,MAAO,CAAC,GAAG,CAAC,EAAI,GAAG,MAAU,MAAM,oCAAoC,EAAI,OAAO,kCAAkC,EAAE,IAAM,EAAE,MAAM,EAAI,KAAK,EAAE,GAAG,EAAU,OAAwI,GAAzH,EAAQ,CAA4H,EAAE,CAA9G,SAAS,EAAI,EAAE,OAAO,QAAQ,EAAE,WAAW,EAAI,EAAE,OAAO,UAAU,EAAE,OAAO,EAAI,EAAE,OAAO,MAAM,CAAoB,EAAE,EAAE,YAAY,EAAU,CAAa,CAAE,OAAO,EAAE,CAAK,GAAU,GAAY,GAAG,EAAE,QAAQ,EAAE,QAAQ,4DAA4D,EAAI,CAAE,CAAC,CAAC,IAAM,GAAK,EAAS,KAAK,EAAQ,EAAid,OAA3c,GAAkE,GAAK,EAAI,EAAtE,GAAW,GAAO,GAAa,EAAU,CAAa,EAAqB,OAAO,eAAiB,MAAa,EAAU,IAAI,mBAAmB,EAAgB,CAAC,EAAE,EAAU,QAAQ,CAAI,GAAM,OAAO,iBAAmB,MAAa,EAAO,IAAI,qBAAqB,EAAgB,CAAC,EAAE,EAAO,QAAQ,EAAK,CAAC,UAAU,GAAK,QAAQ,GAAK,cAAc,EAAI,CAAC,GAAa,IAAS,QAAa,EAAO,iBAAiB,SAAS,CAAe,EAAG,EAAgB,MAAY,CAAC,EAAU,GAAQ,GAAU,qBAAqB,CAAS,EAAK,GAAU,EAAU,WAAW,EAAK,GAAO,EAAO,WAAW,EAAY,IAAS,QAAa,EAAO,oBAAoB,SAAS,CAAe,CAAG,CAAE,EAAE,CAAC,EAAgB,EAAU,EAAc,EAAQ,GAAO,EAAa,EAAU,EAAW,EAAc,EAAW,EAAU,EAAc,GAAa,GAAe,GAAO,GAAM,GAAM,GAAS,GAAY,GAAW,GAAU,GAAU,GAAa,GAAW,GAAa,GAAe,GAAc,GAAY,GAAa,GAAc,GAAW,EAAa,GAAU,GAAa,EAAgB,EAAgB,EAAmB,EAAI,EAAqB,EAAqB,EAAS,EAAW,EAAO,CAAO,CAAC,EAAsB,EAAK,MAAM,CAAC,IAAI,EAAQ,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,UAAU,EAAE,SAAS,SAAS,CAAC,CAAC,CAAE,CAC5yF,SAAS,EAAI,EAAM,EAAa,EAAI,EAAI,EAAK,EAAE,EAAK,KAAK,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,QAAM,eAAa,MAAI,MAAI,OAAK,MAAI,CAAE,CAAC,SAAS,EAAI,EAAM,EAAS,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,QAAM,YAAY,EAAM,UAAQ,CAAE,CAAC,SAAS,EAAM,EAAM,EAAa,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,QAAM,cAAY,CAAE,CAAyI,SAAS,EAAQ,EAAa,OAAO,CAAC,MAAM,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,QAAQ,EAAY,aAAa,EAAiB,cAAY,CAAE,CAAC,SAAS,EAAQ,EAAa,EAAgB,aAAa,CAAC,MAAM,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,kBAAgB,cAAY,CAAE,CAAC,SAAS,EAAU,EAAM,EAAY,EAAY,OAAO,EAAS,aAAa,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,QAAM,YAAY,EAAM,SAAS,CAAC,KAAK,EAAQ,EAAY,CAAQ,EAAE,KAAK,EAAQ,CAAW,CAAC,CAAC,CAAE,2CArJ54B,IAAiE,IAAoC,EAAO,EAAS,kCAGb,EAAS,IAAI,IAAI,CAAC,WAAW,eAAe,CAAC,EACzL,EAAM,CAAC,IAAI,oFAAoF,QAAQ,wEAAwE,QAAQ,+EAA+E,MAAM,gEAAgE,QAAQ,oFAAoF,QAAQ,sHAAsH,UAAU,sDAAsD,MAAM,0EAA0E,IAAI,yCAAyC,OAAO,wEAAwE,SAAS,0DAA0D,EACr3B,EAAc,CAAC,SAAS,UAAU,kBAAkB,EAAQ,EAAW,CAAC,GAAG,SAAS,YAAY,aAAa,cAAc,WAAW,EAAQ,EAAU,CAAC,GAAG,cAAc,kBAAkB,kBAAkB,EAC9M,GAAa,CAAC,SAAS,CAAC,gBAAgB,WAAW,kBAAkB,kBAAkB,0BAA0B,oBAAoB,YAAY,mBAAmB,wBAAwB,mBAAmB,aAAa,oBAAoB,EAAE,WAAW,CAAC,QAAQ,MAAM,UAAU,UAAU,MAAM,eAAe,eAAe,YAAY,EAAE,OAAO,CAAC,cAAc,MAAM,QAAW,cAAc,SAAS,cAAc,SAAS,oBAAoB,UAAU,CAAC,EAAQ,GAAO,CAAC,KAAK,KAAK,KAAK,iBAAiB,KAAK,KAAK,QAAQ,yHAAyH,MAAM;;yGAAiN,MAAM,4CAA4C,QAAQ,sBAAsB,MAAM,KAAK,MAAM,KAAK,SAAS,GAAK,KAAK,WAAW,YAAY,GAAM,YAAY,GAAK,UAAU,GAAK,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,WAAW,EAAE,CAAC,IAAI,MAAM,MAAM,QAAQ,EAAE,CAAC,IAAI,OAAO,MAAM,gBAAgB,CAAC,EAAE,cAAc,CAAC,UAAU,iBAAiB,aAAa,mBAAmB,SAAS,WAAW,YAAY,YAAY,UAAU,QAAQ,WAAW,SAAS,gBAAgB,eAAe,mBAAmB,eAAe,qBAAqB,qBAAqB,EAAE,MAAM,CAAC,CAAC,MAAM,gBAAgB,MAAM,EAAE,EAAE,CAAC,MAAM,WAAW,MAAM,EAAE,EAAE,CAAC,MAAM,qBAAqB,MAAM,EAAE,EAAE,CAAC,MAAM,+BAA+B,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,gBAAgB,WAAW,iBAAiB,EAAE,WAAW,CAAC,QAAQ,MAAM,UAAU,KAAK,EAAE,OAAO,CAAC,cAAc,MAAM,aAAa,EAAE,YAAY,CAAC,OAAO,YAAY,SAAS,YAAY,WAAW,aAAa,UAAU,YAAY,UAAU,kBAAkB,YAAY,SAAS,OAAO,SAAS,QAAQ,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,wBAAwB,2BAA2B,CAAC,EA+ItnD,EAAY,CAAC,OAAO,YAAY,YAAY,YAAY,EAAQ,EAAiB,CAAC,UAAU,YAAY,YAAY,YAAY,EAA4f,EAAoB,EAAyB,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,4BAA4B,QAAQ,SAAS,EAAE,cAAc,CAAC,KAAK,EAAY,QAAQ,MAAM,0BAA0B,aAAa,GAAM,YAAY,8FAA8F,QAAQ,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAY,OAAO,MAAM,uBAAuB,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,eAAe,GAAK,YAAY,iFAAiF,QAAQ,SAAS,EAAE,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,aAAa,eAAe,QAAQ,SAAS,EAAE,kBAAkB,CAAC,KAAK,EAAY,QAAQ,MAAM,4BAA4B,aAAa,GAAM,YAAY,wEAAwE,QAAQ,SAAS,EAAE,eAAe,CAAC,KAAK,EAAY,QAAQ,MAAM,2BAA2B,aAAa,GAAM,YAAY,+FAA+F,QAAQ,SAAS,EAAE,cAAc,CAAC,KAAK,EAAY,MAAM,MAAM,iBAAiB,YAAY,iFAAiF,QAAQ,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,eAAe,GAAK,QAAQ,SAAS,EAAE,iBAAiB,CAAC,KAAK,EAAY,OAAO,MAAM,oBAAoB,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,eAAe,GAAK,QAAQ,SAAS,EAAE,sBAAsB,CAAC,KAAK,EAAY,KAAK,MAAM,0BAA0B,aAAa,WAAW,QAAQ,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAY,OAAO,MAAM,wBAAwB,YAAY,sBAAsB,QAAQ,SAAS,EAAE,iBAAiB,CAAC,KAAK,EAAY,OAAO,MAAM,qBAAqB,aAAa,wBAAwB,YAAY,iFAAiF,QAAQ,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,YAAY,UAAU,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAI,OAAO,CAAC,QAAQ,EAAI,UAAU,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,EAAI,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAI,QAAQ,CAAC,SAAS,EAAI,YAAY,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY,EAAI,eAAe,GAAG,EAAE,GAAG,CAAC,EAAE,WAAW,EAAI,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAI,eAAe,CAAC,UAAU,EAAI,sBAAsB,GAAG,GAAG,IAAI,CAAC,EAAE,WAAW,EAAI,cAAc,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,YAAY,aAAa,QAAQ,SAAS,SAAS,CAAC,SAAS,EAAU,YAAY,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE,MAAM,EAAE,OAAO,EAAU,eAAe,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE,MAAM,EAAE,UAAU,EAAU,UAAU,CAAC,SAAS,GAAG,WAAW,OAAO,EAAE,MAAM,EAAE,aAAa,EAAU,gBAAgB,CAAC,SAAS,GAAG,WAAW,IAAI,cAAc,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAU,cAAc,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE,MAAM,EAAE,UAAU,EAAU,aAAa,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAU,kBAAkB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAU,kBAAkB,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE,MAAM,EAAE,UAAU,EAAU,aAAa,CAAC,SAAS,GAAG,WAAW,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAU,eAAe,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE,MAAM,EAAE,SAAS,EAAU,YAAY,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE,MAAM,EAAE,YAAY,EAAU,eAAe,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAU,cAAc,CAAC,SAAS,GAAG,WAAW,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,YAAY,SAAS,QAAQ,SAAS,SAAS,CAAC,UAAU,EAAM,OAAO,SAAS,EAAE,cAAc,EAAM,WAAW,SAAS,EAAE,aAAa,CAAC,KAAK,EAAY,MAAM,MAAM,iBAAiB,aAAa,EAAE,EAAE,eAAe,CAAC,KAAK,EAAY,MAAM,MAAM,mBAAmB,aAAa,EAAE,EAAE,eAAe,EAAM,kBAAkB,SAAS,EAAE,cAAc,CAAC,KAAK,EAAY,MAAM,MAAM,YAAY,aAAa,EAAE,EAAE,YAAY,CAAC,KAAK,EAAY,MAAM,MAAM,eAAe,aAAa,EAAE,EAAE,eAAe,CAAC,KAAK,EAAY,MAAM,MAAM,UAAU,aAAa,EAAE,EAAE,kBAAkB,CAAC,KAAK,EAAY,MAAM,MAAM,gBAAgB,aAAa,EAAE,EAAE,aAAa,CAAC,KAAK,EAAY,MAAM,MAAM,cAAc,aAAa,EAAE,EAAE,eAAe,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,EAAE,EAAE,cAAc,CAAC,KAAK,EAAY,MAAM,MAAM,kBAAkB,aAAa,EAAE,EAAE,YAAY,CAAC,KAAK,EAAY,MAAM,MAAM,kBAAkB,aAAa,EAAE,EAAE,aAAa,CAAC,KAAK,EAAY,MAAM,MAAM,iBAAiB,aAAa,EAAE,EAAE,cAAc,CAAC,KAAK,EAAY,MAAM,MAAM,kBAAkB,aAAa,EAAE,EAAE,eAAe,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,EAAE,EAAE,iBAAiB,CAAC,KAAK,EAAY,MAAM,MAAM,eAAe,aAAa,EAAE,EAAE,cAAc,CAAC,KAAK,EAAY,MAAM,MAAM,YAAY,aAAa,EAAE,EAAE,iBAAiB,CAAC,KAAK,EAAY,MAAM,MAAM,eAAe,aAAa,EAAE,EAAE,gBAAgB,CAAC,KAAK,EAAY,MAAM,MAAM,cAAc,aAAa,EAAE,EAAE,gBAAgB,CAAC,KAAK,EAAY,MAAM,MAAM,cAAc,aAAa,GAAG,YAAY,4EAA4E,CAAC,CAAC,CAAC,CAAC"}