{"version":3,"file":"AbstractIntentExitModal.DteAimLX.mjs","names":["React.useRef","React.useCallback","p","React.useState","enoughPages","React.useMemo","_Fragment"],"sources":["https:/framerusercontent.com/modules/4ozxQjaxyD75yLAoabbd/LLVPqznW3ccnrNI16a8f/AbstractIntentExitModal.js"],"sourcesContent":["// AbstractIntentExitModal.tsx\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{createPortal}from\"react-dom\";const OPEN_EVENT=\"intent:open\";const CLOSE_EVENT=\"intent:close\";const FIRE_EVENT=\"engage:trigger\";const BACKDROP_OPACITY=.5;const ANIM_MS=220;const ANIM_EASING=\"cubic-bezier(.2,.8,.2,1)\";const CLOSE_ON_BACKDROP=true;const CLOSE_ON_ESC=true;const CLOSE_BUTTON_LABEL=\"\\xd7\";const now=()=>Date.now();const isMobileUA=()=>/Mobi|Android|iPhone|iPad|Tablet|Windows Phone/i.test(navigator.userAgent);function getSessionId(prefix){const key=`${prefix}.sessionId`;let id=sessionStorage.getItem(key);if(!id){id=Math.random().toString(36).slice(2);sessionStorage.setItem(key,id);}return id;}function readState(prefix,sid){try{const raw=localStorage.getItem(`${prefix}.state.${sid}`);if(!raw)return{siteMs:0,pages:[]};const obj=JSON.parse(raw);return{siteMs:Number(obj.siteMs||0),pages:Array.isArray(obj.pages)?obj.pages:[],lastPath:obj.lastPath};}catch{return{siteMs:0,pages:[]};}}function writeState(prefix,sid,data){try{localStorage.setItem(`${prefix}.state.${sid}`,JSON.stringify(data));}catch{}}const readLastShown=prefix=>{return Number(localStorage.getItem(`${prefix}.lastShownAt`)||0);};function writeLastShown(prefix,ts){try{localStorage.setItem(`${prefix}.lastShownAt`,String(ts));}catch{}}function isInExitZone(x,y,exitTopPx,sideHeightPx){const w=window.innerWidth;const top=y<=exitTopPx||y<0;const left=(x<=exitTopPx||x<0)&&y>=0&&y<=sideHeightPx;const right=(x>=w-exitTopPx||x>w)&&y>=0&&y<=sideHeightPx;return top||left||right;}const readShownThisSession=prefix=>{return sessionStorage.getItem(`${prefix}.shown`)===\"1\";};const writeShownThisSession=(prefix,v)=>{sessionStorage.setItem(`${prefix}.shown`,v?\"1\":\"0\");};function installLocationChangeListener(handle){const fire=()=>window.dispatchEvent(new Event(\"locationchange\"));const _push=history.pushState;const _replace=history.replaceState;history.pushState=function(...args){const r=_push.apply(this,args);fire();return r;};history.replaceState=function(...args){const r=_replace.apply(this,args);fire();return r;};window.addEventListener(\"popstate\",fire);window.addEventListener(\"locationchange\",handle);return()=>{window.removeEventListener(\"locationchange\",handle);window.removeEventListener(\"popstate\",fire);history.pushState=_push;history.replaceState=_replace;};}/** Keep latest value without changing callback identity */function useLatest(value){const ref=React.useRef(value);ref.current=value;return ref;}/** Stable callback that always sees latest closures */function useEvent(fn){const fnRef=useLatest(fn);// eslint-disable-next-line react-hooks/exhaustive-deps\nreturn React.useCallback((...args)=>fnRef.current(...args),[]);}export default function AbstractIntentExitModal(props){const p={...defaultProps,...props};const pRef=useLatest(p);const[visible,setVisible]=React.useState(false);const[mounted,setMounted]=React.useState(false);const[tick,setTick]=React.useState(0);const sessionIdRef=React.useRef(\"\");const stateRef=React.useRef({siteMs:0,pages:[]});const lastTsRef=React.useRef(now());const closeBtnRef=React.useRef(null);const siteSec=Math.floor(stateRef.current.siteMs/1e3);const pageCount=stateRef.current.pages.length;// freeze writes to localStorage once minSeconds is reached, but keep listeners alive\nconst storageFrozenRef=React.useRef(false);// when true, no more cache/counter updates AND listeners removed (after show)\nconst trackingStoppedRef=React.useRef(false);const stopAllTrackingRef=React.useRef(null);// debug mouse state\nconst[mouse,setMouse]=React.useState({x:-1,y:-1,inExit:false});const recordPageView=useEvent(()=>{if(trackingStoppedRef.current)return;const path=window.location.pathname+window.location.search;const set=new Set(stateRef.current.pages);set.add(path);stateRef.current.pages=Array.from(set);stateRef.current.lastPath=path;if(!storageFrozenRef.current){writeState(pRef.current.prefix,sessionIdRef.current,stateRef.current);}});const throttledByDays=useEvent(()=>{if(trackingStoppedRef.current)return false;const days=pRef.current.showOnceDays;if(days<=0)return false;const diff=now()-readLastShown(pRef.current.prefix);return diff<days*24*60*60*1e3;});const alreadyShownThisSession=useEvent(()=>{if(trackingStoppedRef.current)return true;return pRef.current.showOncePerSession&&readShownThisSession(pRef.current.prefix);});const markShown=useEvent(()=>{writeShownThisSession(pRef.current.prefix,true);writeLastShown(pRef.current.prefix,now());});const dispatchTrigger=useEvent(source=>{const detail={source,siteSec:Math.floor(stateRef.current.siteMs/1e3),pages:stateRef.current.pages.length,path:window.location.pathname+window.location.search};window.dispatchEvent(new CustomEvent(FIRE_EVENT,{detail}));});const stopAllTracking=useEvent(()=>{if(trackingStoppedRef.current)return;trackingStoppedRef.current=true;stopAllTrackingRef.current?.();stopAllTrackingRef.current=null;});const show=useEvent(source=>{if(!mounted)setMounted(true);requestAnimationFrame(()=>setVisible(true));markShown();dispatchTrigger(source);// after showing, shut everything down\nstopAllTracking();});const hide=useEvent(()=>{setVisible(false);window.setTimeout(()=>setMounted(false),ANIM_MS);});const maybeTrigger=useEvent(source=>{if(trackingStoppedRef.current)return;const currentSiteSec=Math.floor(stateRef.current.siteMs/1e3);const currentPageCount=stateRef.current.pages.length;if(mounted||visible)return;if(alreadyShownThisSession())return;if(throttledByDays())return;const enoughPages=currentPageCount>=pRef.current.pagesThreshold;if(source===\"exit\"){if(currentSiteSec>=pRef.current.minSeconds||enoughPages){show(source);}return;}// timer/page sources can also trigger if you want; keeping your original intent focused on exit\n});React.useEffect(()=>{sessionIdRef.current=getSessionId(p.prefix);stateRef.current=readState(p.prefix,sessionIdRef.current);recordPageView();const int=window.setInterval(()=>{if(trackingStoppedRef.current)return;const t=now();const delta=Math.min(t-lastTsRef.current,4e3);lastTsRef.current=t;// always advance in-memory counters so logic can evaluate,\n// but freeze localStorage writes after minSeconds\nstateRef.current.siteMs+=delta;if(!storageFrozenRef.current){if(Math.floor(stateRef.current.siteMs/1e3)>=pRef.current.minSeconds){storageFrozenRef.current=true;}// only persist while not frozen\nwriteState(pRef.current.prefix,sessionIdRef.current,stateRef.current);}maybeTrigger(\"timer\");if(pRef.current.debug)setTick(x=>x+1);},1e3);const onVis=()=>{if(trackingStoppedRef.current)return;lastTsRef.current=now();};document.addEventListener(\"visibilitychange\",onVis);const offNav=installLocationChangeListener(()=>{if(trackingStoppedRef.current)return;recordPageView();if(pRef.current.debug)setTick(x=>x+1);maybeTrigger(\"page\");});// Watch pointer inside the viewport. If it enters an exit zone, consider it exit-intent.\nconst onDocMouseMove=e=>{if(trackingStoppedRef.current)return;if(isMobileUA())return;const inExit=isInExitZone(e.clientX,e.clientY,pRef.current.exitTopPx,pRef.current.sideEdgeHeightPx);if(pRef.current.debug){setMouse({x:e.clientX,y:e.clientY,inExit});}if(inExit){maybeTrigger(\"exit\");}};// Keep mouseleave to catch true viewport exits as a fallback\nconst onDocMouseLeave=e=>{if(trackingStoppedRef.current)return;if(!isMobileUA()&&isInExitZone(e.clientX,e.clientY,pRef.current.exitTopPx,pRef.current.sideEdgeHeightPx)){maybeTrigger(\"exit\");}};document.addEventListener(\"mousemove\",onDocMouseMove);document.addEventListener(\"mouseleave\",onDocMouseLeave);const onKey=e=>{if(CLOSE_ON_ESC&&e.key===\"Escape\")hide();};window.addEventListener(\"keydown\",onKey);const onOpen=()=>show(\"external\");window.addEventListener(OPEN_EVENT,onOpen);const onClose=()=>hide();window.addEventListener(CLOSE_EVENT,onClose);// one place to stop everything\nstopAllTrackingRef.current=()=>{window.clearInterval(int);document.removeEventListener(\"visibilitychange\",onVis);offNav();document.removeEventListener(\"mousemove\",onDocMouseMove);document.removeEventListener(\"mouseleave\",onDocMouseLeave);window.removeEventListener(\"keydown\",onKey);window.removeEventListener(OPEN_EVENT,onOpen);window.removeEventListener(CLOSE_EVENT,onClose);};return()=>{stopAllTracking();};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[p.prefix]);React.useEffect(()=>{if(mounted&&visible){const t=window.setTimeout(()=>closeBtnRef.current?.focus(),30);return()=>window.clearTimeout(t);}},[mounted,visible]);const wrapper=React.useMemo(()=>/*#__PURE__*/_jsx(\"div\",{style:{...p.style}}),[p.style]);const portal=mounted?/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",inset:0,display:\"grid\",placeItems:\"center\",zIndex:2147483647},\"aria-hidden\":!visible,children:[/*#__PURE__*/_jsx(\"div\",{onClick:()=>CLOSE_ON_BACKDROP&&hide(),style:{position:\"absolute\",inset:0,background:\"rgba(0,0,0,1)\",opacity:visible?BACKDROP_OPACITY:0,transition:`opacity ${ANIM_MS}ms ${ANIM_EASING}`}}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",transform:visible?\"translateY(0) scale(1)\":\"translateY(8px) scale(0.98)\",opacity:visible?1:0,width:800,transition:`transform ${ANIM_MS}ms ${ANIM_EASING}, opacity ${ANIM_MS}ms ${ANIM_EASING}`},children:[/*#__PURE__*/_jsx(\"button\",{ref:closeBtnRef,\"aria-label\":\"Close\",onClick:hide,style:{position:\"absolute\",top:0,right:0,width:40,height:40,cursor:\"pointer\",background:\"transparent\",border:\"transparent\",fontSize:\"24px\",zIndex:1,outline:\"none\"},children:CLOSE_BUTTON_LABEL}),p.children??null]})]}),document.body):null;// compute debug flags without mutating anything\nconst pastMin=siteSec>=p.minSeconds;const enoughPages=pageCount>=p.pagesThreshold;const throttled=throttledByDays();const shownThisSession=alreadyShownThisSession();const canShowOnExit=!mounted&&!visible&&!shownThisSession&&!throttled&&(pastMin||enoughPages);return /*#__PURE__*/_jsxs(_Fragment,{children:[wrapper,p.debug&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",left:8,bottom:8,padding:\"8px 10px\",background:\"rgba(0,0,0,.7)\",color:\"#fff\",borderRadius:8,fontSize:12,zIndex:2147483646,fontFamily:\"ui-monospace, SFMono-Regular, Menlo, monospace\",maxWidth:360},children:[/*#__PURE__*/_jsxs(\"div\",{children:[\"site: \",siteSec,\"s\"]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"pages: \",pageCount]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"lastPath: \",stateRef.current.lastPath||\"/\"]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"shownThisSession: \",String(shownThisSession)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"throttledDays: \",String(throttled)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"pastMinSeconds: \",String(pastMin)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"enoughPages: \",String(enoughPages)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"canShowOnExit: \",String(canShowOnExit)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"storageFrozen: \",String(storageFrozenRef.current)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"trackingStopped: \",String(trackingStoppedRef.current)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"mounted: \",String(mounted),\" | visible: \",String(visible)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"mouse: x=\",mouse.x,\", y=\",mouse.y,\", inExit=\",String(mouse.inExit)]}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:6,borderTop:\"1px dashed rgba(255,255,255,.3)\"}})]}),portal]});}AbstractIntentExitModal.displayName=\"AbstractIntentExitModal\";const defaultProps={prefix:\"intentPortal\",minSeconds:30,pagesThreshold:2,exitTopPx:10,sideEdgeHeightPx:120,showOncePerSession:true,showOnceDays:7,children:undefined,debug:false,style:{}};addPropertyControls(AbstractIntentExitModal,{prefix:{type:ControlType.String,title:\"Widget Prefix\"},minSeconds:{type:ControlType.Number,title:\"Min seconds\",min:0,max:600,step:1},pagesThreshold:{type:ControlType.Number,title:\"Min pages\",min:1,max:20,step:1},exitTopPx:{type:ControlType.Number,title:\"Exit top (px)\",min:0,max:200,step:1},sideEdgeHeightPx:{type:ControlType.Number,title:\"Side height\",min:0,max:1e3,step:1},showOncePerSession:{type:ControlType.Boolean,title:\"Once per session\"},showOnceDays:{type:ControlType.Number,title:\"Once per N days\",min:0,max:365,step:1},children:{type:ControlType.ComponentInstance,title:\"Children\"},debug:{type:ControlType.Boolean,title:\"Debug\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AbstractIntentExitModal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AbstractIntentExitModal.map"],"mappings":"8YAC4kB,SAAS,GAAa,EAAO,CAAC,IAAM,EAAI,GAAG,EAAO,YAAgB,EAAG,eAAe,QAAQ,EAAI,CAAgF,OAA3E,IAAI,EAAG,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC,eAAe,QAAQ,EAAI,EAAG,EAAS,EAAI,SAAS,GAAU,EAAO,EAAI,CAAC,GAAG,CAAC,IAAM,EAAI,aAAa,QAAQ,GAAG,EAAO,SAAS,IAAM,CAAC,GAAG,CAAC,EAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAM,EAAI,KAAK,MAAM,EAAI,CAAC,MAAM,CAAC,OAAO,OAAO,EAAI,QAAQ,EAAE,CAAC,MAAM,MAAM,QAAQ,EAAI,MAAM,CAAC,EAAI,MAAM,EAAE,CAAC,SAAS,EAAI,SAAS,MAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAG,SAAS,EAAW,EAAO,EAAI,EAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,GAAG,EAAO,SAAS,IAAM,KAAK,UAAU,EAAK,CAAC,MAAO,GAAkG,SAAS,GAAe,EAAO,EAAG,CAAC,GAAG,CAAC,aAAa,QAAQ,GAAG,EAAO,cAAc,OAAO,EAAG,CAAC,MAAO,GAAG,SAAS,EAAa,EAAE,EAAE,EAAU,EAAa,CAAC,IAAM,EAAE,EAAO,WAAiB,EAAI,GAAG,GAAW,EAAE,EAAQ,GAAM,GAAG,GAAW,EAAE,IAAI,GAAG,GAAG,GAAG,EAAmB,GAAO,GAAG,EAAE,GAAW,EAAE,IAAI,GAAG,GAAG,GAAG,EAAa,OAAO,GAAK,GAAM,EAAmM,SAAS,GAA8B,EAAO,CAAC,IAAM,MAAS,EAAO,cAAc,IAAI,MAAM,iBAAiB,CAAC,CAAO,EAAM,QAAQ,UAAgB,EAAS,QAAQ,aAAuR,MAA1Q,SAAQ,UAAU,SAAS,GAAG,EAAK,CAAC,IAAM,EAAE,EAAM,MAAM,KAAK,EAAK,CAAQ,OAAP,GAAM,CAAQ,GAAI,QAAQ,aAAa,SAAS,GAAG,EAAK,CAAC,IAAM,EAAE,EAAS,MAAM,KAAK,EAAK,CAAQ,OAAP,GAAM,CAAQ,GAAI,EAAO,iBAAiB,WAAW,EAAK,CAAC,EAAO,iBAAiB,iBAAiB,EAAO,KAAW,CAAC,EAAO,oBAAoB,iBAAiB,EAAO,CAAC,EAAO,oBAAoB,WAAW,EAAK,CAAC,QAAQ,UAAU,EAAM,QAAQ,aAAa,GAAuE,SAAS,EAAU,EAAM,CAAC,IAAM,EAAIA,EAAa,EAAM,CAAmB,MAAlB,GAAI,QAAQ,EAAa,EAA4D,SAAS,EAAS,EAAG,CAAC,IAAM,EAAM,EAAU,EAAG,CAC1mF,OAAOC,GAAmB,GAAG,IAAO,EAAM,QAAQ,GAAG,EAAK,CAAC,EAAE,CAAC,CAAE,SAAwB,EAAwB,EAAM,CAAC,IAAMC,EAAE,CAAC,GAAG,EAAa,GAAG,EAAM,CAAO,EAAK,EAAUA,EAAE,CAAM,CAAC,EAAQ,GAAYC,EAAe,GAAM,CAAM,CAAC,EAAQ,GAAYA,EAAe,GAAM,CAAM,CAAC,EAAK,GAASA,EAAe,EAAE,CAAO,EAAaH,EAAa,GAAG,CAAO,EAASA,EAAa,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAO,EAAUA,EAAa,GAAK,CAAC,CAAO,EAAYA,EAAa,KAAK,CAAO,EAAQ,KAAK,MAAM,EAAS,QAAQ,OAAO,IAAI,CAAO,EAAU,EAAS,QAAQ,MAAM,OAC7iB,EAAiBA,EAAa,GAAM,CACpC,EAAmBA,EAAa,GAAM,CAAO,EAAmBA,EAAa,KAAK,CACnF,CAAC,EAAM,IAAUG,EAAe,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,GAAM,CAAC,CAAO,EAAe,MAAa,CAAC,GAAG,EAAmB,QAAQ,OAAO,IAAM,EAAK,EAAO,SAAS,SAAS,EAAO,SAAS,OAAa,EAAI,IAAI,IAAI,EAAS,QAAQ,MAAM,CAAC,EAAI,IAAI,EAAK,CAAC,EAAS,QAAQ,MAAM,MAAM,KAAK,EAAI,CAAC,EAAS,QAAQ,SAAS,EAAS,EAAiB,SAAS,EAAW,EAAK,QAAQ,OAAO,EAAa,QAAQ,EAAS,QAAQ,EAAI,CAAO,EAAgB,MAAa,CAAC,GAAG,EAAmB,QAAQ,MAAO,GAAM,IAAM,EAAK,EAAK,QAAQ,aAAyF,OAAzE,GAAM,EAAS,GAAiB,GAAK,CAAC,EAAc,EAAK,QAAQ,OAAO,CAAa,EAAK,GAAG,GAAG,GAAG,KAAM,CAAO,EAAwB,MAAiB,EAAmB,QAAe,GAAY,EAAK,QAAQ,oBAAoB,EAAqB,EAAK,QAAQ,OAAO,CAAG,CAAO,GAAU,MAAa,CAAC,EAAsB,EAAK,QAAQ,OAAO,GAAK,CAAC,GAAe,EAAK,QAAQ,OAAO,GAAK,CAAC,EAAG,CAAO,GAAgB,EAAS,GAAQ,CAAC,IAAM,EAAO,CAAC,SAAO,QAAQ,KAAK,MAAM,EAAS,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAS,QAAQ,MAAM,OAAO,KAAK,EAAO,SAAS,SAAS,EAAO,SAAS,OAAO,CAAC,EAAO,cAAc,IAAI,YAAY,EAAW,CAAC,SAAO,CAAC,CAAC,EAAG,CAAO,EAAgB,MAAa,CAAI,EAAmB,UAAe,EAAmB,QAAQ,GAAK,EAAmB,WAAW,CAAC,EAAmB,QAAQ,OAAO,CAAO,EAAK,EAAS,GAAQ,CAAK,GAAQ,EAAW,GAAK,CAAC,0BAA0B,EAAW,GAAK,CAAC,CAAC,IAAW,CAAC,GAAgB,EAAO,CACx+C,GAAiB,EAAG,CAAO,EAAK,MAAa,CAAC,EAAW,GAAM,CAAC,EAAO,eAAe,EAAW,GAAM,CAAC,EAAQ,EAAG,CAAO,EAAa,EAAS,GAAQ,CAAC,GAAG,EAAmB,QAAQ,OAAO,IAAM,EAAe,KAAK,MAAM,EAAS,QAAQ,OAAO,IAAI,CAAO,EAAiB,EAAS,QAAQ,MAAM,OAAsE,GAA5D,GAAS,GAAkB,GAAyB,EAAW,GAAiB,CAAC,OAAO,IAAMC,EAAY,GAAkB,EAAK,QAAQ,eAAe,GAAG,IAAS,OAAO,EAAI,GAAgB,EAAK,QAAQ,YAAYA,IAAa,EAAK,EAAO,CAAE,SACpiB,CAAC,OAAoB,CAAC,EAAa,QAAQ,GAAaF,EAAE,OAAO,CAAC,EAAS,QAAQ,GAAUA,EAAE,OAAO,EAAa,QAAQ,CAAC,GAAgB,CAAC,IAAM,EAAI,EAAO,gBAAgB,CAAC,GAAG,EAAmB,QAAQ,OAAO,IAAM,EAAE,GAAK,CAAO,EAAM,KAAK,IAAI,EAAE,EAAU,QAAQ,IAAI,CAAC,EAAU,QAAQ,EAEpS,EAAS,QAAQ,QAAQ,EAAU,EAAiB,UAAY,KAAK,MAAM,EAAS,QAAQ,OAAO,IAAI,EAAE,EAAK,QAAQ,aAAY,EAAiB,QAAQ,IAC3J,EAAW,EAAK,QAAQ,OAAO,EAAa,QAAQ,EAAS,QAAQ,EAAE,EAAa,QAAQ,CAAI,EAAK,QAAQ,OAAM,EAAQ,GAAG,EAAE,EAAE,EAAG,IAAI,CAAO,MAAU,CAAI,EAAmB,UAAe,EAAU,QAAQ,GAAK,GAAG,SAAS,iBAAiB,mBAAmB,EAAM,CAAC,IAAM,EAAO,OAAkC,CAAI,EAAmB,UAAe,GAAgB,CAAI,EAAK,QAAQ,OAAM,EAAQ,GAAG,EAAE,EAAE,CAAC,EAAa,OAAO,GAAG,CAC3a,EAAe,GAAG,CAAsC,GAAlC,EAAmB,SAAkB,GAAY,CAAC,OAAO,IAAM,EAAO,EAAa,EAAE,QAAQ,EAAE,QAAQ,EAAK,QAAQ,UAAU,EAAK,QAAQ,iBAAiB,CAAI,EAAK,QAAQ,OAAO,GAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,SAAO,CAAC,CAAK,GAAQ,EAAa,OAAO,EACrR,EAAgB,GAAG,CAAI,EAAmB,SAAkB,CAAC,GAAY,EAAE,EAAa,EAAE,QAAQ,EAAE,QAAQ,EAAK,QAAQ,UAAU,EAAK,QAAQ,iBAAiB,EAAE,EAAa,OAAO,EAAI,SAAS,iBAAiB,YAAY,EAAe,CAAC,SAAS,iBAAiB,aAAa,EAAgB,CAAC,IAAM,EAAM,GAAG,CAAkB,EAAE,MAAM,UAAS,GAAM,EAAG,EAAO,iBAAiB,UAAU,EAAM,CAAC,IAAM,MAAW,EAAK,WAAW,CAAC,EAAO,iBAAiB,EAAW,EAAO,CAAC,IAAM,MAAY,GAAM,CAC9H,OAD+H,EAAO,iBAAiB,EAAY,EAAQ,CACriB,EAAmB,YAAY,CAAC,EAAO,cAAc,EAAI,CAAC,SAAS,oBAAoB,mBAAmB,EAAM,CAAC,GAAQ,CAAC,SAAS,oBAAoB,YAAY,EAAe,CAAC,SAAS,oBAAoB,aAAa,EAAgB,CAAC,EAAO,oBAAoB,UAAU,EAAM,CAAC,EAAO,oBAAoB,EAAW,EAAO,CAAC,EAAO,oBAAoB,EAAY,EAAQ,MAAa,CAAC,GAAiB,GACpZ,CAACA,EAAE,OAAO,CAAC,CAAC,OAAoB,CAAC,GAAG,GAAS,EAAQ,CAAC,IAAM,EAAE,EAAO,eAAe,EAAY,SAAS,OAAO,CAAC,GAAG,CAAC,UAAU,EAAO,aAAa,EAAE,GAAI,CAAC,EAAQ,EAAQ,CAAC,CAAC,IAAM,GAAQG,OAA+B,EAAK,MAAM,CAAC,MAAM,CAAC,GAAGH,EAAE,MAAM,CAAC,CAAC,CAAC,CAACA,EAAE,MAAM,CAAC,CAAO,GAAO,EAAqB,EAA0B,EAAM,MAAM,CAAC,MAAM,CAAC,SAAS,QAAQ,MAAM,EAAE,QAAQ,OAAO,WAAW,SAAS,OAAO,WAAW,CAAC,cAAc,CAAC,EAAQ,SAAS,CAAc,EAAK,MAAM,CAAC,YAA+B,GAAM,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,WAAW,gBAAgB,QAAQ,EAAQ,EAAiB,EAAE,WAAW,WAAW,EAAQ,KAAK,IAAc,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,UAAU,EAAQ,yBAAyB,8BAA8B,QAAQ,EAAQ,EAAE,EAAE,MAAM,IAAI,WAAW,aAAa,EAAQ,KAAK,EAAY,YAAY,EAAQ,KAAK,IAAc,CAAC,SAAS,CAAc,EAAK,SAAS,CAAC,IAAI,EAAY,aAAa,QAAQ,QAAQ,EAAK,MAAM,CAAC,SAAS,WAAW,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,UAAU,WAAW,cAAc,OAAO,cAAc,SAAS,OAAO,OAAO,EAAE,QAAQ,OAAO,CAAC,SAAS,EAAmB,CAAC,CAACA,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAC1sC,EAAQ,GAASA,EAAE,WAAiB,EAAY,GAAWA,EAAE,eAAqB,EAAU,GAAiB,CAAO,EAAiB,GAAyB,CAAO,GAAc,CAAC,GAAS,CAAC,GAAS,CAAC,GAAkB,CAAC,IAAY,GAAS,GAAa,OAAoB,EAAMI,EAAU,CAAC,SAAS,CAAC,GAAQJ,EAAE,OAAoB,EAAM,MAAM,CAAC,MAAM,CAAC,SAAS,QAAQ,KAAK,EAAE,OAAO,EAAE,QAAQ,WAAW,WAAW,iBAAiB,MAAM,OAAO,aAAa,EAAE,SAAS,GAAG,OAAO,WAAW,WAAW,iDAAiD,SAAS,IAAI,CAAC,SAAS,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,SAAS,EAAQ,IAAI,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAU,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,aAAa,EAAS,QAAQ,UAAU,IAAI,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,qBAAqB,OAAO,EAAiB,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,kBAAkB,OAAO,EAAU,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,mBAAmB,OAAO,EAAQ,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,OAAO,EAAY,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,kBAAkB,OAAO,GAAc,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,kBAAkB,OAAO,EAAiB,QAAQ,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,oBAAoB,OAAO,EAAmB,QAAQ,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,YAAY,OAAO,EAAQ,CAAC,eAAe,OAAO,EAAQ,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,SAAS,CAAC,YAAY,EAAM,EAAE,OAAO,EAAM,EAAE,YAAY,OAAO,EAAM,OAAO,CAAC,CAAC,CAAC,CAAc,EAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAO,CAAC,CAAC,gDAd7iD,IAA4B,IAAoD,IAAoC,CAAM,EAAW,cAAoB,EAAY,eAAqB,EAAW,iBAAuB,EAAiB,GAAS,EAAQ,IAAU,EAAY,2BAAsF,EAAmB,IAAa,MAAQ,KAAK,KAAK,CAAO,MAAe,iDAAiD,KAAK,EAAU,UAAU,CAA0lB,EAAc,GAAgB,OAAO,aAAa,QAAQ,GAAG,EAAO,cAAc,EAAE,EAAE,CAAkW,EAAqB,GAAgB,eAAe,QAAQ,GAAG,EAAO,QAAQ,GAAG,IAAY,GAAuB,EAAO,IAAI,CAAC,eAAe,QAAQ,GAAG,EAAO,QAAQ,EAAE,IAAI,IAAI,EAclJ,EAAwB,YAAY,0BAAgC,EAAa,CAAC,OAAO,eAAe,WAAW,GAAG,eAAe,EAAE,UAAU,GAAG,iBAAiB,IAAI,mBAAmB,GAAK,aAAa,EAAE,SAAS,IAAA,GAAU,MAAM,GAAM,MAAM,EAAE,CAAC,CAAC,EAAoB,EAAwB,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,eAAe,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAY,QAAQ,MAAM,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,kBAAkB,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,EAAY,kBAAkB,MAAM,WAAW,CAAC,MAAM,CAAC,KAAK,EAAY,QAAQ,MAAM,QAAQ,CAAC,CAAC"}