{"version":3,"file":"Blend_Text.CSwSgc24.mjs","names":["useState","useRef","useMemo","useCallback","p"],"sources":["https:/framerusercontent.com/modules/ct82wm1GziaXrYx4FOSj/4POzaG4uXwifgaB7JKJy/Blend_Text.js"],"sourcesContent":["/**\n * Blend Text — Multi-layer text effect with dynamic animations.\n *\n * Framer Native Version 2.0\n * • Three animation modes: Static, Scroll, Mouse-follow\n * • Smooth, soft transitions with optimized animation\n * • Automatic performance adaptation (always on)\n * • All optimizations included\n *\n * @framerDisplayName \"Blend Text\"\n * @framerDisableUnlink\n * @framerIntrinsicWidth 320\n * @framerIntrinsicHeight 80\n * @version 2.0\n * @author Amr Rashed\n * @website https://amrrashed.com\n * @license Commercial use allowed with attribution\n */import{jsx as _jsx}from\"react/jsx-runtime\";import{useMemo,useState,useEffect,useRef,useCallback,useLayoutEffect}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{useMotionValue,useSpring}from\"framer-motion\";/* ==== CONSTANTS ==== */const isBrowser=typeof window!==\"undefined\";const DEFAULT_CURSOR_RANGE=200;const DEFAULT_DEPTH_CURVE=1;const MOUSE_DEAD_ZONE=5;const TOUCH_DEAD_ZONE=10;const MOUSE_IDLE_TIMEOUT=800;// Capped at practical visual limits\nconst MAX_RENDERED_LAYERS=25;const MAX_RENDERED_LAYERS_MOBILE=20;// Performance thresholds\nconst PERFORMANCE_THRESHOLDS={high:{fps:55,maxLayers:25,smoothing:.92},medium:{fps:40,maxLayers:15,smoothing:.88},low:{fps:25,maxLayers:8,smoothing:.85},potato:{fps:0,maxLayers:3,smoothing:0}};// Default transition for soft, smooth animation\nconst DEFAULT_TRANSITION={type:\"spring\",stiffness:100,damping:28,mass:.8};// Default font settings that match the control panel\nconst DEFAULT_FONT={fontSize:64,fontFamily:\"Inter, sans-serif\",fontWeight:900,lineHeight:1.2,letterSpacing:0,textAlign:\"center\"};/* ==== UTILS ==== */const webkitStrokeSupported=(()=>{if(!isBrowser)return false;const testEl=document.createElement(\"div\");return\"webkitTextStroke\"in testEl.style||\"WebkitTextStroke\"in testEl.style;})();const isMobileDevice=(()=>{if(!isBrowser)return false;return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.matchMedia(\"(max-width: 768px)\").matches||window.matchMedia(\"(pointer: coarse)\").matches;})();const clamp01=t=>Math.max(0,Math.min(1,t));const debounce=(fn,delay)=>{let timeoutId;return(...args)=>{clearTimeout(timeoutId);timeoutId=setTimeout(()=>fn(...args),delay);};};// Auto performance monitoring (always on)\nfunction usePerformanceMonitor(){const[performance,setPerformance]=useState({mode:\"high\",maxLayers:PERFORMANCE_THRESHOLDS.high.maxLayers,smoothing:PERFORMANCE_THRESHOLDS.high.smoothing});const frameTimesRef=useRef([]);const lastTimeRef=useRef(0);const monitoringRef=useRef(false);useEffect(()=>{if(!isBrowser)return;let rafId;let sampleCount=0;const maxSamples=60;const monitor=currentTime=>{if(lastTimeRef.current){const delta=currentTime-lastTimeRef.current;const fps=1e3/delta;frameTimesRef.current.push(fps);if(frameTimesRef.current.length>maxSamples){frameTimesRef.current.shift();}sampleCount++;// Analyze every 60 frames\nif(sampleCount>=maxSamples&&frameTimesRef.current.length>=30){const avgFps=frameTimesRef.current.reduce((a,b)=>a+b,0)/frameTimesRef.current.length;let newMode=\"high\";if(avgFps<PERFORMANCE_THRESHOLDS.low.fps){newMode=\"potato\";}else if(avgFps<PERFORMANCE_THRESHOLDS.medium.fps){newMode=\"low\";}else if(avgFps<PERFORMANCE_THRESHOLDS.high.fps){newMode=\"medium\";}const config=PERFORMANCE_THRESHOLDS[newMode];setPerformance({mode:newMode,maxLayers:config.maxLayers,smoothing:config.smoothing});sampleCount=0;frameTimesRef.current=[];}}lastTimeRef.current=currentTime;if(monitoringRef.current){rafId=requestAnimationFrame(monitor);}};monitoringRef.current=true;rafId=requestAnimationFrame(monitor);return()=>{monitoringRef.current=false;cancelAnimationFrame(rafId);};},[]);return performance;}function resolveCssVar(varName){if(!isBrowser||!varName.startsWith(\"var(\")||!varName.endsWith(\")\")){return varName;}const match=varName.match(/var\\(([^,)]+)(?:,\\s*([^)]+))?\\)/);if(!match)return varName;const token=match[1].trim();const fallback=match[2]?.trim()||\"\";try{const resolved=getComputedStyle(document.documentElement).getPropertyValue(token);return resolved.trim()||fallback||varName;}catch{return fallback||varName;}}function parseCssColor(input){const resolved=resolveCssVar(input.trim().toLowerCase());let result={r:0,g:0,b:0,a:1};if(resolved.startsWith(\"#\")){const clean=resolved.slice(1);if(clean.length===3){result={r:parseInt(clean[0]+clean[0],16),g:parseInt(clean[1]+clean[1],16),b:parseInt(clean[2]+clean[2],16),a:1};}else if(clean.length===6){result={r:parseInt(clean.slice(0,2),16),g:parseInt(clean.slice(2,4),16),b:parseInt(clean.slice(4,6),16),a:1};}else if(clean.length===8){result={r:parseInt(clean.slice(0,2),16),g:parseInt(clean.slice(2,4),16),b:parseInt(clean.slice(4,6),16),a:parseInt(clean.slice(6,8),16)/255};}}else if(resolved.startsWith(\"rgb(\")){const match=resolved.match(/rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/);if(match){result={r:parseInt(match[1],10),g:parseInt(match[2],10),b:parseInt(match[3],10),a:1};}}else if(resolved.startsWith(\"rgba(\")){const match=resolved.match(/rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/);if(match){result={r:parseInt(match[1],10),g:parseInt(match[2],10),b:parseInt(match[3],10),a:parseFloat(match[4])};}}else if(resolved.startsWith(\"hsl(\")){const match=resolved.match(/hsl\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*\\)/);if(match){const h=parseFloat(match[1]);const s=parseFloat(match[2])/100;const l=parseFloat(match[3])/100;const k=n=>(n+h/30)%12;const a=s*Math.min(l,1-l);const f=n=>l-a*Math.max(-1,Math.min(k(n)-3,Math.min(9-k(n),1)));result={r:Math.round(255*f(0)),g:Math.round(255*f(8)),b:Math.round(255*f(4)),a:1};}}else if(resolved.startsWith(\"hsla(\")){const match=resolved.match(/hsla\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)\\s*\\)/);if(match){const h=parseFloat(match[1]);const s=parseFloat(match[2])/100;const l=parseFloat(match[3])/100;const alpha=parseFloat(match[4]);const k=n=>(n+h/30)%12;const a=s*Math.min(l,1-l);const f=n=>l-a*Math.max(-1,Math.min(k(n)-3,Math.min(9-k(n),1)));result={r:Math.round(255*f(0)),g:Math.round(255*f(8)),b:Math.round(255*f(4)),a:alpha};}}return result;}function interpolateRgb(a,b,t){const clampedT=clamp01(t);return{r:Math.round(a.r+(b.r-a.r)*clampedT),g:Math.round(a.g+(b.g-a.g)*clampedT),b:Math.round(a.b+(b.b-a.b)*clampedT),a:a.a+(b.a-a.a)*clampedT};}function rgbToCss(color){if(color.a!==undefined&&color.a!==1){return`rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`;}return`rgb(${color.r}, ${color.g}, ${color.b})`;}// Persistent text measurer singleton with cache\nlet textMeasurerElement=null;const measurementCache=new Map;function getTextMeasurer(){if(!textMeasurerElement&&isBrowser){textMeasurerElement=document.createElement(\"div\");textMeasurerElement.style.cssText=\"position:absolute;visibility:hidden;pointer-events:none;white-space:nowrap;\";textMeasurerElement.id=\"blend-text-measurer\";document.body.appendChild(textMeasurerElement);}return textMeasurerElement;}/* ==== COMPONENT ==== */export default function BlendText({text=\"BLEND\",font,steps=10,distance=28,direction=45,faceColor=\"#ffffff\",color1=\"#888888\",color2=\"#000000\",reverse=false,renderMode=\"solid\",outlineWidth=1,animation=\"static\",scrollMode=\"collapse\",cursorReverse=false,mouseMode=\"Viewport\",transition=DEFAULT_TRANSITION}){// Check if font object has any real values (Framer sometimes passes empty objects)\nconst fontHasValues=font&&(font.fontSize&&font.fontSize>0||font.fontFamily&&font.fontFamily!==\"\"||font.fontWeight&&font.fontWeight!==\"\"||font.lineHeight||font.letterSpacing!==undefined||font.textAlign);// Use the font if it has real values, otherwise use defaults\nconst resolvedFont=useMemo(()=>{if(!fontHasValues){return DEFAULT_FONT;}return{fontSize:font.fontSize||DEFAULT_FONT.fontSize,fontFamily:font.fontFamily||DEFAULT_FONT.fontFamily,fontWeight:font.fontWeight||DEFAULT_FONT.fontWeight,lineHeight:font.lineHeight??DEFAULT_FONT.lineHeight,letterSpacing:font.letterSpacing??DEFAULT_FONT.letterSpacing,textAlign:font.textAlign||DEFAULT_FONT.textAlign};},[font,fontHasValues]);const containerRef=useRef(null);const rectRef=useRef(null);const textMeasurementsRef=useRef(null);const rafIds=useRef(new Set);// Framer Motion values for smooth animations\nconst scrollMotionValue=useMotionValue(0);const mouseXMotionValue=useMotionValue(0);const mouseYMotionValue=useMotionValue(0);const mouseDistMotionValue=useMotionValue(0);// Use spring with soft default animation\nconst smoothedScrollProgress=useSpring(scrollMotionValue,DEFAULT_TRANSITION);const smoothedMouseX=useSpring(mouseXMotionValue,DEFAULT_TRANSITION);const smoothedMouseY=useSpring(mouseYMotionValue,DEFAULT_TRANSITION);const smoothedMouseDist=useSpring(mouseDistMotionValue,DEFAULT_TRANSITION);const[prefersReducedMotion,setPrefersReducedMotion]=useState(false);const[prefersHighContrast,setPrefersHighContrast]=useState(false);const[isMobile]=useState(isMobileDevice);const[mouseState,setMouseState]=useState({x:0,y:0,dist:0});const[scrollProgress,setScrollProgress]=useState(0);// Auto performance monitoring (always on)\nconst performanceMode=usePerformanceMonitor();const effectiveAnimation=prefersReducedMotion?\"static\":animation;const effectiveDeadZone=isMobile?TOUCH_DEAD_ZONE:MOUSE_DEAD_ZONE;const HOVER=effectiveAnimation===\"mouse\"&&mouseMode===\"Text Only\";const effectiveCursorScope=HOVER?\"element\":\"window\";const computedAngle=useMemo(()=>{return(direction+180)*Math.PI/180;},[direction]);const resolvedColors=useMemo(()=>({face:parseCssColor(faceColor),color1:parseCssColor(color1),color2:parseCssColor(color2)}),[faceColor,color1,color2]);const clampedSteps=useMemo(()=>{if(prefersHighContrast){return Math.max(1,Math.min(steps,3));}// Use auto-detected performance limits\nconst perfMax=performanceMode.maxLayers;if(isMobile){return Math.max(1,Math.min(steps,Math.min(MAX_RENDERED_LAYERS_MOBILE,perfMax)));}const maxSteps=effectiveAnimation===\"mouse\"?MAX_RENDERED_LAYERS:100;return Math.max(1,Math.min(steps,Math.min(maxSteps,perfMax)));},[steps,prefersHighContrast,effectiveAnimation,isMobile,performanceMode]);// Subscribe to motion value changes\nuseEffect(()=>{const unsubX=smoothedMouseX.on(\"change\",v=>{setMouseState(prev=>({...prev,x:v}));});const unsubY=smoothedMouseY.on(\"change\",v=>{setMouseState(prev=>({...prev,y:v}));});const unsubDist=smoothedMouseDist.on(\"change\",v=>{setMouseState(prev=>({...prev,dist:v}));});const unsubScroll=smoothedScrollProgress.on(\"change\",v=>{setScrollProgress(v);});return()=>{unsubX();unsubY();unsubDist();unsubScroll();};},[smoothedMouseX,smoothedMouseY,smoothedMouseDist,smoothedScrollProgress]);// Setup persistent text measurer\nuseLayoutEffect(()=>{if(!isBrowser)return;getTextMeasurer();return()=>{// Cleanup is handled globally\n};},[]);// Cleanup RAF IDs on unmount\nuseEffect(()=>{return()=>{rafIds.current.forEach(id=>cancelAnimationFrame(id));rafIds.current.clear();};},[]);const scheduleFrame=useCallback(callback=>{const id=requestAnimationFrame(()=>{rafIds.current.delete(id);callback();});rafIds.current.add(id);return id;},[]);useEffect(()=>{if(!isBrowser)return;const motionQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");setPrefersReducedMotion(motionQuery.matches);const handleMotionChange=e=>{setPrefersReducedMotion(e.matches);};const contrastQueries=[\"(prefers-contrast: high)\",\"(-ms-high-contrast: active)\",\"(-ms-high-contrast: black-on-white)\",\"(-ms-high-contrast: white-on-black)\"];const updateHighContrast=()=>{const isHighContrast=contrastQueries.some(query=>window.matchMedia(query).matches);setPrefersHighContrast(isHighContrast);};updateHighContrast();motionQuery.addEventListener(\"change\",handleMotionChange);const contrastListeners=contrastQueries.map(query=>{const mq=window.matchMedia(query);mq.addEventListener(\"change\",updateHighContrast);return mq;});return()=>{motionQuery.removeEventListener(\"change\",handleMotionChange);contrastListeners.forEach(mq=>mq.removeEventListener(\"change\",updateHighContrast));};},[]);const mouseAngle=useMemo(()=>{if(effectiveAnimation!==\"mouse\")return 0;const ang=Math.atan2(mouseState.y,mouseState.x);return cursorReverse?ang+Math.PI:ang;},[effectiveAnimation,mouseState.x,mouseState.y,cursorReverse]);const mouseFactor=useMemo(()=>{if(effectiveAnimation!==\"mouse\")return 0;const dist=Math.max(0,mouseState.dist-effectiveDeadZone);const norm=clamp01(dist/Math.max(1,DEFAULT_CURSOR_RANGE));const t=norm;return t*t*(3-2*t);},[effectiveAnimation,mouseState.dist,effectiveDeadZone]);const effectiveAngle=useMemo(()=>{return effectiveAnimation===\"mouse\"?mouseAngle:computedAngle;},[effectiveAnimation,mouseAngle,computedAngle]);const computeScrollProgress=useCallback(()=>{if(!isBrowser)return 0;const el=containerRef.current;if(!el)return 0;const rect=el.getBoundingClientRect();const windowHeight=window.innerHeight;if(scrollMode===\"expand\"){const elementTop=rect.top;const triggerPoint=windowHeight*.5;if(elementTop>=triggerPoint){return 0;}else{const distancePastTrigger=triggerPoint-elementTop;const maxDistance=windowHeight*.5+rect.height;return clamp01(distancePastTrigger/maxDistance);}}else{const elementCenter=rect.top+rect.height/2;const viewportCenter=windowHeight/2;const scrollRange=windowHeight;const offset=viewportCenter-elementCenter;return clamp01((offset+scrollRange/2)/scrollRange);}},[scrollMode]);const handleScroll=useCallback(()=>{const progress=computeScrollProgress();scrollMotionValue.set(progress);},[computeScrollProgress,scrollMotionValue]);const handleResize=useCallback(()=>{const progress=computeScrollProgress();scrollMotionValue.set(progress);},[computeScrollProgress,scrollMotionValue]);const debouncedResize=useMemo(()=>debounce(handleResize,150),[handleResize]);useEffect(()=>{if(!isBrowser||effectiveAnimation!==\"scroll\")return;window.addEventListener(\"scroll\",handleScroll,{passive:true});window.addEventListener(\"resize\",debouncedResize,{passive:true});handleResize();return()=>{window.removeEventListener(\"scroll\",handleScroll);window.removeEventListener(\"resize\",debouncedResize);};},[effectiveAnimation,handleScroll,debouncedResize,handleResize]);// Keyboard navigation support for mouse animation\nuseEffect(()=>{if(effectiveAnimation!==\"mouse\"||!containerRef.current)return;const handleKeyboard=e=>{if(!containerRef.current?.matches(\":focus-within\"))return;const step=20;let dx=0,dy=0;switch(e.key){case\"ArrowUp\":dy=-step;break;case\"ArrowDown\":dy=step;break;case\"ArrowLeft\":dx=-step;break;case\"ArrowRight\":dx=step;break;case\"Escape\":mouseXMotionValue.set(0);mouseYMotionValue.set(0);mouseDistMotionValue.set(0);return;default:return;}if(dx||dy){e.preventDefault();const currentX=mouseXMotionValue.get();const currentY=mouseYMotionValue.get();const newX=Math.max(-DEFAULT_CURSOR_RANGE,Math.min(DEFAULT_CURSOR_RANGE,currentX+dx));const newY=Math.max(-DEFAULT_CURSOR_RANGE,Math.min(DEFAULT_CURSOR_RANGE,currentY+dy));mouseXMotionValue.set(newX);mouseYMotionValue.set(newY);mouseDistMotionValue.set(Math.hypot(newX,newY));}};document.addEventListener(\"keydown\",handleKeyboard);return()=>document.removeEventListener(\"keydown\",handleKeyboard);},[effectiveAnimation,mouseXMotionValue,mouseYMotionValue,mouseDistMotionValue]);useEffect(()=>{if(!isBrowser||effectiveAnimation!==\"mouse\")return;const el=containerRef.current;if(!el)return;let resizeTimeout;const ro=new ResizeObserver(()=>{clearTimeout(resizeTimeout);resizeTimeout=window.setTimeout(()=>{rectRef.current=el.getBoundingClientRect();},100);});ro.observe(el);scheduleFrame(()=>{rectRef.current=el.getBoundingClientRect();});let scrollRafId;const onScroll=()=>{cancelAnimationFrame(scrollRafId);scrollRafId=scheduleFrame(()=>{rectRef.current=el.getBoundingClientRect();});};window.addEventListener(\"scroll\",onScroll,{passive:true});let idleTimeout;const onPointerMove=e=>{const rect=rectRef.current;if(rect){const cx=rect.left+rect.width/2;const cy=rect.top+rect.height/2;const dx=e.clientX-cx;const dy=e.clientY-cy;const dist=Math.hypot(dx,dy);if(effectiveCursorScope===\"window\"){const elementUnderMouse=document.elementFromPoint(e.clientX,e.clientY);const isOverText=el.contains(elementUnderMouse);const isInteractive=elementUnderMouse&&(elementUnderMouse.tagName===\"BUTTON\"||elementUnderMouse.tagName===\"A\"||elementUnderMouse.tagName===\"INPUT\"||elementUnderMouse.tagName===\"TEXTAREA\"||elementUnderMouse.tagName===\"SELECT\"||elementUnderMouse.tagName===\"LABEL\"||elementUnderMouse.closest(\"button\")!==null||elementUnderMouse.closest(\"a\")!==null||elementUnderMouse.onclick!==null||elementUnderMouse.style.cursor===\"pointer\");const reduction=isOverText||isInteractive?.1:1;mouseXMotionValue.set(dx*reduction);mouseYMotionValue.set(dy*reduction);mouseDistMotionValue.set(dist*reduction);}else{mouseXMotionValue.set(dx);mouseYMotionValue.set(dy);mouseDistMotionValue.set(dist);}// Reset idle timer\nclearTimeout(idleTimeout);idleTimeout=window.setTimeout(()=>{mouseXMotionValue.set(0);mouseYMotionValue.set(0);mouseDistMotionValue.set(0);},MOUSE_IDLE_TIMEOUT);}};const onPointerEnter=e=>{// Keep for potential future hover states\n};const onPointerLeave=e=>{if(HOVER){mouseXMotionValue.set(0);mouseYMotionValue.set(0);mouseDistMotionValue.set(0);}};const onDocumentMouseLeave=e=>{const from=e.relatedTarget||e.toElement;if(!from||from.nodeName===\"HTML\"){mouseXMotionValue.set(0);mouseYMotionValue.set(0);mouseDistMotionValue.set(0);}};const onTouchMove=e=>{if(e.touches.length>0){const touch=e.touches[0];const rect=rectRef.current;if(rect){const cx=rect.left+rect.width/2;const cy=rect.top+rect.height/2;const dx=touch.clientX-cx;const dy=touch.clientY-cy;const dist=Math.hypot(dx,dy);mouseXMotionValue.set(dx);mouseYMotionValue.set(dy);mouseDistMotionValue.set(dist);clearTimeout(idleTimeout);idleTimeout=window.setTimeout(()=>{mouseXMotionValue.set(0);mouseYMotionValue.set(0);mouseDistMotionValue.set(0);},MOUSE_IDLE_TIMEOUT);}}};const onTouchEnd=()=>{clearTimeout(idleTimeout);idleTimeout=window.setTimeout(()=>{mouseXMotionValue.set(0);mouseYMotionValue.set(0);mouseDistMotionValue.set(0);},MOUSE_IDLE_TIMEOUT);};const target=effectiveCursorScope===\"window\"?document:el;target.addEventListener(\"pointermove\",onPointerMove,{passive:true});target.addEventListener(\"pointerenter\",onPointerEnter,{passive:true});target.addEventListener(\"pointerleave\",onPointerLeave,{passive:true});target.addEventListener(\"touchmove\",onTouchMove,{passive:true});target.addEventListener(\"touchend\",onTouchEnd,{passive:true});if(effectiveCursorScope===\"window\"){document.addEventListener(\"mouseout\",onDocumentMouseLeave,{passive:true});}return()=>{clearTimeout(idleTimeout);cancelAnimationFrame(scrollRafId);ro.disconnect();window.removeEventListener(\"scroll\",onScroll);target.removeEventListener(\"pointermove\",onPointerMove);target.removeEventListener(\"pointerenter\",onPointerEnter);target.removeEventListener(\"pointerleave\",onPointerLeave);target.removeEventListener(\"touchmove\",onTouchMove);target.removeEventListener(\"touchend\",onTouchEnd);if(effectiveCursorScope===\"window\"){document.removeEventListener(\"mouseout\",onDocumentMouseLeave);}};},[effectiveAnimation,effectiveCursorScope,HOVER,scheduleFrame,mouseXMotionValue,mouseYMotionValue,mouseDistMotionValue]);const actualDistance=useMemo(()=>{if(effectiveAnimation===\"mouse\"){return Math.max(0,distance)*mouseFactor;}if(effectiveAnimation!==\"scroll\"){return Math.max(0,distance);}let easedProgress;if(scrollProgress<.5){easedProgress=4*scrollProgress*scrollProgress*scrollProgress;}else{const p=2*scrollProgress-2;easedProgress=1+p*p*p/2;}if(scrollMode===\"collapse\"){return Math.max(0,distance*(1-easedProgress));}else{return Math.max(0,distance*easedProgress);}},[effectiveAnimation,distance,scrollProgress,scrollMode,mouseFactor]);const hasVisibleEffect=actualDistance>=.1;const layerPositions=useMemo(()=>{if(!hasVisibleEffect)return[];const positions=[];const backgroundLayers=Math.max(0,clampedSteps-1);for(let i=0;i<backgroundLayers;i++){const progress=backgroundLayers===1?.5:1-i/backgroundLayers;const curvedProgress=Math.pow(progress,DEFAULT_DEPTH_CURVE);positions.push({index:i,progress,curvedProgress});}return positions;},[clampedSteps,hasVisibleEffect]);const layers=useMemo(()=>{const result=[];if(!hasVisibleEffect){result.push({x:0,y:0,color:rgbToCss(resolvedColors.face),strokeWidth:outlineWidth,isTop:true,zIndex:999,opacity:1});return result;}const{color1:color1Rgb,color2:color2Rgb}=resolvedColors;layerPositions.forEach(pos=>{const layerDistance=actualDistance*pos.curvedProgress;const t=reverse?1-pos.progress:pos.progress;const interpolatedColor=interpolateRgb(color1Rgb,color2Rgb,t);if(interpolatedColor.a>.01){const xPos=Math.cos(effectiveAngle)*layerDistance;const yPos=Math.sin(effectiveAngle)*layerDistance;result.push({x:xPos,y:yPos,color:rgbToCss(interpolatedColor),strokeWidth:outlineWidth,isTop:false,zIndex:pos.index,opacity:interpolatedColor.a});}});result.push({x:0,y:0,color:rgbToCss(resolvedColors.face),strokeWidth:outlineWidth,isTop:true,zIndex:999,opacity:1});return result;},[layerPositions,actualDistance,effectiveAngle,resolvedColors,outlineWidth,reverse,hasVisibleEffect]);const textMeasurements=useMemo(()=>{if(!isBrowser)return{width:320,height:80,baseline:60,padding:50,textWidth:270,textHeight:64};const cacheKey=`${text}-${resolvedFont.fontSize}-${resolvedFont.fontFamily}-${resolvedFont.fontWeight}-${resolvedFont.lineHeight}-${resolvedFont.letterSpacing}`;if(textMeasurementsRef.current&&textMeasurementsRef.current.key===cacheKey){return textMeasurementsRef.current.measurements;}const measurer=getTextMeasurer();if(!measurer)return textMeasurementsRef.current?.measurements||{width:320,height:80,baseline:60,padding:50,textWidth:270,textHeight:48};measurer.style.fontSize=`${resolvedFont.fontSize}px`;measurer.style.fontFamily=resolvedFont.fontFamily;measurer.style.fontWeight=String(resolvedFont.fontWeight);measurer.style.lineHeight=String(resolvedFont.lineHeight);measurer.style.letterSpacing=`${resolvedFont.letterSpacing}px`;measurer.textContent=text;const rect=measurer.getBoundingClientRect();const padding=Math.max(distance,50)+outlineWidth*2;const measurements={width:rect.width+padding*2,height:rect.height+padding*2,baseline:rect.height*.75+padding,padding:padding,textWidth:rect.width,textHeight:rect.height};textMeasurementsRef.current={key:cacheKey,measurements};return measurements;},[text,resolvedFont,distance,outlineWidth]);const justifyContent=resolvedFont.textAlign===\"left\"?\"flex-start\":resolvedFont.textAlign===\"right\"?\"flex-end\":\"center\";return /*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",justifyContent,alignItems:\"center\",maxWidth:\"100%\",overflow:\"visible\",minHeight:\"1em\"},children:/*#__PURE__*/_jsx(\"div\",{ref:containerRef,role:\"img\",\"aria-label\":text,\"aria-live\":effectiveAnimation!==\"static\"?\"polite\":undefined,\"aria-atomic\":\"true\",tabIndex:effectiveAnimation===\"mouse\"?0:undefined,style:{position:\"relative\",display:\"inline-block\",width:\"fit-content\",overflow:\"visible\",outline:\"none\"},onFocus:e=>{if(effectiveAnimation===\"mouse\"){e.currentTarget.style.outline=\"2px solid currentColor\";e.currentTarget.style.outlineOffset=\"4px\";}},onBlur:e=>{if(effectiveAnimation===\"mouse\"){e.currentTarget.style.outline=\"none\";}},children:layers.map((layer,index)=>{const shouldStroke=renderMode===\"outline\"||renderMode===\"both\"&&!layer.isTop;const strokeActive=shouldStroke&&outlineWidth>0;const useWebkitStroke=webkitStrokeSupported&&strokeActive;const layerProgress=layers.length<=1?0:index/Math.max(1,layers.length-1);const staggerIntensity=effectiveAnimation===\"scroll\"&&!prefersReducedMotion?.08:0;const staggerFactor=1-layerProgress*staggerIntensity;const staggeredX=layer.x*staggerFactor;const staggeredY=layer.y*staggerFactor;const transformString=`translate3d(${staggeredX.toFixed(2)}px, ${staggeredY.toFixed(2)}px, 0)`;const strokeStyle=useWebkitStroke?{WebkitTextStroke:`${outlineWidth}px ${layer.color}`,WebkitTextFillColor:\"transparent\"}:{};return /*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":!layer.isTop,style:{...resolvedFont,margin:0,whiteSpace:\"nowrap\",position:layer.isTop?\"relative\":\"absolute\",left:0,top:0,transform:transformString,color:strokeActive&&!useWebkitStroke?\"transparent\":strokeActive?undefined:layer.color,willChange:hasVisibleEffect&&effectiveAnimation!==\"static\"&&!layer.isTop?\"transform\":\"auto\",pointerEvents:layer.isTop?\"auto\":\"none\",userSelect:layer.isTop?\"text\":\"none\",...strokeStyle},children:text},`${index}-${layer.zIndex}`);})})});}/* ==== DEFAULTS ==== */BlendText.displayName=\"Blend Text\";BlendText.framerDisableUnlink=true;/* ==== CONTROLS ==== */addPropertyControls(BlendText,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"BLEND\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",displayFontSize:true,displayTextAlignment:true,defaultValue:{fontSize:64,fontFamily:\"Inter, sans-serif\",fontWeight:900,lineHeight:1.2,letterSpacing:0,textAlign:\"center\"}},steps:{type:ControlType.Number,title:\"Steps\",min:1,max:25,defaultValue:10,displayStepper:true,description:\"Higher values may impact performance\"},distance:{type:ControlType.Number,title:\"Distance\",min:0,max:500,unit:\"px\",defaultValue:28},direction:{type:ControlType.Number,title:\"Direction\",min:0,max:360,unit:\"\\xb0\",defaultValue:45,hidden:props=>props.animation===\"mouse\"},faceColor:{type:ControlType.Color,title:\"Face Color\",defaultValue:\"#ffffff\"},color1:{type:ControlType.Color,title:\"Color 1\",defaultValue:\"#888888\"},color2:{type:ControlType.Color,title:\"Color 2\",defaultValue:\"#000000\"},reverse:{type:ControlType.Boolean,title:\"Reverse\",defaultValue:false},animation:{type:ControlType.Enum,title:\"Interaction\",options:[\"static\",\"scroll\",\"mouse\"],optionTitles:[\"Static\",\"Scroll\",\"Follow Mouse\"],defaultValue:\"static\"},scrollMode:{type:ControlType.Enum,title:\"Scroll Mode\",options:[\"collapse\",\"expand\"],optionTitles:[\"Collapse\",\"Expand\"],defaultValue:\"collapse\",displaySegmentedControl:true,hidden:props=>props.animation!==\"scroll\"},cursorReverse:{type:ControlType.Boolean,title:\"Reverse Cursor Direction\",defaultValue:false,hidden:props=>props.animation!==\"mouse\"},mouseMode:{type:ControlType.Enum,title:\"On Hover\",options:[\"Text Only\",\"Viewport\"],optionTitles:[\"Text Only\",\"Viewport\"],defaultValue:\"Viewport\",displaySegmentedControl:true,hidden:props=>props.animation!==\"mouse\"},renderMode:{type:ControlType.Enum,title:\"Style\",options:[\"solid\",\"outline\",\"both\"],optionTitles:[\"Fill\",\"Outline\",\"Mixed\"],defaultValue:\"solid\"},outlineWidth:{type:ControlType.Number,title:\"Outline Width\",min:.5,max:5,step:.5,unit:\"px\",defaultValue:1,hidden:props=>props.renderMode===\"solid\",description:\"[Built by Amr Rashed](https://amrrashed.com)\"}})/**\n * Component: Blend Text — built by Amr Rashed (https://amrrashed.com)\n * Version: 2.0 • © 2025 • License: Commercial use allowed with attribution\n *\n * Features:\n * • Three animation modes: Static, Scroll, Mouse-follow\n * • Automatic performance adaptation\n * • All optimizations included\n */;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BlendText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Blend_Text.map"],"mappings":"qRAsBA,SAAS,IAAuB,CAAC,GAAK,CAAC,EAAY,GAAgBA,EAAS,CAAC,KAAK,OAAO,UAAU,EAAuB,KAAK,UAAU,UAAU,EAAuB,KAAK,UAAU,CAAC,CAAO,EAAcC,EAAO,EAAE,CAAC,CAAO,EAAYA,EAAO,EAAE,CAAO,EAAcA,EAAO,GAAM,CACse,OADre,MAAc,CAAC,GAAG,CAAC,EAAU,OAAO,IAAI,EAAU,EAAY,EAA4B,EAAQ,GAAa,CAAC,GAAG,EAAY,QAAQ,CAA6C,IAAM,EAAI,KAA1C,EAAY,EAAY,SACpc,GADge,EAAc,QAAQ,KAAK,EAAI,CAAI,EAAc,QAAQ,OAAO,IAAY,EAAc,QAAQ,OAAO,CAAE,IACxkB,GAAa,IAAY,EAAc,QAAQ,QAAQ,GAAG,CAAC,IAAM,EAAO,EAAc,QAAQ,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAc,QAAQ,OAAW,EAAQ,OAAU,EAAO,EAAuB,IAAI,IAAK,EAAQ,SAAkB,EAAO,EAAuB,OAAO,IAAK,EAAQ,MAAe,EAAO,EAAuB,KAAK,MAAK,EAAQ,UAAU,IAAM,EAAO,EAAuB,GAAS,EAAe,CAAC,KAAK,EAAQ,UAAU,EAAO,UAAU,UAAU,EAAO,UAAU,CAAC,CAAC,EAAY,EAAE,EAAc,QAAQ,EAAE,EAAG,EAAY,QAAQ,EAAe,EAAc,UAAS,EAAM,sBAAsB,EAAQ,GAAoE,MAAhE,GAAc,QAAQ,GAAK,EAAM,sBAAsB,EAAQ,KAAW,CAAC,EAAc,QAAQ,GAAM,qBAAqB,EAAM,GAAK,EAAE,CAAC,CAAQ,EAAa,SAAS,EAAc,EAAQ,CAAC,GAAG,CAAC,GAAW,CAAC,EAAQ,WAAW,OAAO,EAAE,CAAC,EAAQ,SAAS,IAAI,CAAE,OAAO,EAAS,IAAM,EAAM,EAAQ,MAAM,kCAAkC,CAAC,GAAG,CAAC,EAAM,OAAO,EAAQ,IAAM,EAAM,EAAM,GAAG,MAAM,CAAO,EAAS,EAAM,IAAI,MAAM,EAAE,GAAG,GAAG,CAAmF,OAAnE,iBAAiB,SAAS,gBAAgB,CAAC,iBAAiB,EAAM,CAAiB,MAAM,EAAE,GAAU,OAAc,CAAC,OAAO,GAAU,GAAU,SAAS,EAAc,EAAM,CAAC,IAAM,EAAS,EAAc,EAAM,MAAM,CAAC,aAAa,CAAC,CAAK,EAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAS,WAAW,IAAI,CAAC,CAAC,IAAM,EAAM,EAAS,MAAM,EAAE,CAAI,EAAM,SAAS,EAAG,EAAO,CAAC,EAAE,SAAS,EAAM,GAAG,EAAM,GAAG,GAAG,CAAC,EAAE,SAAS,EAAM,GAAG,EAAM,GAAG,GAAG,CAAC,EAAE,SAAS,EAAM,GAAG,EAAM,GAAG,GAAG,CAAC,EAAE,EAAE,CAAU,EAAM,SAAS,EAAG,EAAO,CAAC,EAAE,SAAS,EAAM,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAM,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAM,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAU,EAAM,SAAS,IAAG,EAAO,CAAC,EAAE,SAAS,EAAM,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAM,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAM,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAM,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,UAAW,EAAS,WAAW,OAAO,CAAC,CAAC,IAAM,EAAM,EAAS,MAAM,6CAA6C,CAAI,IAAO,EAAO,CAAC,EAAE,SAAS,EAAM,GAAG,GAAG,CAAC,EAAE,SAAS,EAAM,GAAG,GAAG,CAAC,EAAE,SAAS,EAAM,GAAG,GAAG,CAAC,EAAE,EAAE,UAAW,EAAS,WAAW,QAAQ,CAAC,CAAC,IAAM,EAAM,EAAS,MAAM,6DAA6D,CAAI,IAAO,EAAO,CAAC,EAAE,SAAS,EAAM,GAAG,GAAG,CAAC,EAAE,SAAS,EAAM,GAAG,GAAG,CAAC,EAAE,SAAS,EAAM,GAAG,GAAG,CAAC,EAAE,WAAW,EAAM,GAAG,CAAC,UAAW,EAAS,WAAW,OAAO,CAAC,CAAC,IAAM,EAAM,EAAS,MAAM,wDAAwD,CAAC,GAAG,EAAM,CAAC,IAAM,EAAE,WAAW,EAAM,GAAG,CAAO,EAAE,WAAW,EAAM,GAAG,CAAC,IAAU,EAAE,WAAW,EAAM,GAAG,CAAC,IAAU,EAAE,IAAI,EAAE,EAAE,IAAI,GAAS,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CAAO,EAAE,GAAG,EAAE,EAAE,KAAK,IAAI,GAAG,KAAK,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAO,CAAC,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,UAAW,EAAS,WAAW,QAAQ,CAAC,CAAC,IAAM,EAAM,EAAS,MAAM,wEAAwE,CAAC,GAAG,EAAM,CAAC,IAAM,EAAE,WAAW,EAAM,GAAG,CAAO,EAAE,WAAW,EAAM,GAAG,CAAC,IAAU,EAAE,WAAW,EAAM,GAAG,CAAC,IAAU,EAAM,WAAW,EAAM,GAAG,CAAO,EAAE,IAAI,EAAE,EAAE,IAAI,GAAS,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CAAO,EAAE,GAAG,EAAE,EAAE,KAAK,IAAI,GAAG,KAAK,IAAI,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAO,CAAC,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,CAAG,EAAM,EAAG,OAAO,EAAQ,SAAS,GAAe,EAAE,EAAE,EAAE,CAAC,IAAM,EAAS,EAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAS,CAAC,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAS,CAAC,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAS,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAS,CAAE,SAAS,EAAS,EAAM,CAAoG,OAAhG,EAAM,IAAI,IAAA,IAAW,EAAM,IAAI,EAAS,QAAQ,EAAM,EAAE,IAAI,EAAM,EAAE,IAAI,EAAM,EAAE,IAAI,EAAM,EAAE,GAAU,OAAO,EAAM,EAAE,IAAI,EAAM,EAAE,IAAI,EAAM,EAAE,GAC/6G,SAAS,IAAiB,CAAoS,MAAhS,CAAC,GAAqB,IAAW,EAAoB,SAAS,cAAc,MAAM,CAAC,EAAoB,MAAM,QAAQ,8EAA8E,EAAoB,GAAG,sBAAsB,SAAS,KAAK,YAAY,EAAoB,EAAS,EAA8C,SAAwB,EAAU,CAAC,OAAK,QAAQ,OAAK,QAAM,GAAG,WAAS,GAAG,YAAU,GAAG,YAAU,UAAU,SAAO,UAAU,SAAO,UAAU,UAAQ,GAAM,aAAW,QAAQ,eAAa,EAAE,YAAU,SAAS,aAAW,WAAW,gBAAc,GAAM,aAAU,WAAW,cAAW,GAAoB,CAC7tB,IAAM,GAAc,IAAO,EAAK,UAAU,EAAK,SAAS,GAAG,EAAK,YAAY,EAAK,aAAa,IAAI,EAAK,YAAY,EAAK,aAAa,IAAI,EAAK,YAAY,EAAK,gBAAgB,IAAA,IAAW,EAAK,WACzL,EAAaC,MAAiB,GAA0C,CAAC,SAAS,EAAK,UAAU,EAAa,SAAS,WAAW,EAAK,YAAY,EAAa,WAAW,WAAW,EAAK,YAAY,EAAa,WAAW,WAAW,EAAK,YAAY,EAAa,WAAW,cAAc,EAAK,eAAe,EAAa,cAAc,UAAU,EAAK,WAAW,EAAa,UAAU,CAA7U,EAAgV,CAAC,EAAK,GAAc,CAAC,CAAO,EAAaD,EAAO,KAAK,CAAO,EAAQA,EAAO,KAAK,CAAO,EAAoBA,EAAO,KAAK,CAAO,EAAOA,EAAO,IAAI,IAAI,CACxhB,EAAkB,EAAe,EAAE,CAAO,EAAkB,EAAe,EAAE,CAAO,EAAkB,EAAe,EAAE,CAAO,EAAqB,EAAe,EAAE,CACpK,GAAuB,EAAU,EAAkB,EAAmB,CAAO,GAAe,EAAU,EAAkB,EAAmB,CAAO,GAAe,EAAU,EAAkB,EAAmB,CAAO,GAAkB,EAAU,EAAqB,EAAmB,CAAM,CAAC,GAAqB,IAAyBD,EAAS,GAAM,CAAM,CAAC,GAAoB,IAAwBA,EAAS,GAAM,CAAM,CAAC,GAAUA,EAAS,GAAe,CAAM,CAAC,EAAW,GAAeA,EAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAM,CAAC,EAAe,IAAmBA,EAAS,EAAE,CACzjB,GAAgB,IAAuB,CAAO,EAAmB,GAAqB,SAAS,EAAgB,GAAkB,EAAS,GAAgB,GAAsB,EAAM,IAAqB,SAAS,KAAY,YAAkB,EAAqB,EAAM,UAAU,SAAe,GAAcE,OAAoB,EAAU,KAAK,KAAK,GAAG,IAAM,CAAC,EAAU,CAAC,CAAO,EAAeA,OAAa,CAAC,KAAK,EAAc,EAAU,CAAC,OAAO,EAAc,EAAO,CAAC,OAAO,EAAc,EAAO,CAAC,EAAE,CAAC,EAAU,EAAO,EAAO,CAAC,CAAO,GAAaA,MAAY,CAAC,GAAG,GAAqB,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAM,EAAE,CAAC,CAC5mB,IAAM,EAAQ,GAAgB,UAAU,GAAG,EAAU,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAM,KAAK,IAAI,GAA2B,EAAQ,CAAC,CAAC,CAAE,IAAM,EAAS,IAAqB,QAAQ,GAAoB,IAAI,OAAO,KAAK,IAAI,EAAE,KAAK,IAAI,EAAM,KAAK,IAAI,EAAS,EAAQ,CAAC,CAAC,EAAG,CAAC,EAAM,GAAoB,EAAmB,EAAS,GAAgB,CAAC,CAClV,MAAc,CAAC,IAAM,EAAO,GAAe,GAAG,SAAS,GAAG,CAAC,EAAc,IAAO,CAAC,GAAG,EAAK,EAAE,EAAE,EAAE,EAAG,CAAO,EAAO,GAAe,GAAG,SAAS,GAAG,CAAC,EAAc,IAAO,CAAC,GAAG,EAAK,EAAE,EAAE,EAAE,EAAG,CAAO,EAAU,GAAkB,GAAG,SAAS,GAAG,CAAC,EAAc,IAAO,CAAC,GAAG,EAAK,KAAK,EAAE,EAAE,EAAG,CAAO,EAAY,GAAuB,GAAG,SAAS,GAAG,CAAC,GAAkB,EAAE,EAAG,CAAC,UAAU,CAAC,GAAQ,CAAC,GAAQ,CAAC,GAAW,CAAC,GAAa,GAAK,CAAC,GAAe,GAAe,GAAkB,GAAuB,CAAC,CACze,MAAoB,CAAK,KAAmC,OAAlB,IAAiB,KAAW,IAClE,EAAE,CAAC,CACP,UAAyB,CAAC,EAAO,QAAQ,QAAQ,GAAI,qBAAqB,EAAG,CAAC,CAAC,EAAO,QAAQ,OAAO,EAAK,EAAE,CAAC,CAAC,IAAM,EAAcC,EAAY,GAAU,CAAC,IAAM,EAAG,0BAA0B,CAAC,EAAO,QAAQ,OAAO,EAAG,CAAC,GAAU,EAAG,CAAwB,OAAvB,EAAO,QAAQ,IAAI,EAAG,CAAQ,GAAK,EAAE,CAAC,CAAC,MAAc,CAAC,GAAG,CAAC,EAAU,OAAO,IAAM,EAAY,EAAO,WAAW,mCAAmC,CAAC,GAAwB,EAAY,QAAQ,CAAC,IAAM,EAAmB,GAAG,CAAC,GAAwB,EAAE,QAAQ,EAAS,EAAgB,CAAC,2BAA2B,8BAA8B,sCAAsC,sCAAsC,CAAO,MAAuB,CAAoF,GAA9D,EAAgB,KAAK,GAAO,EAAO,WAAW,EAAM,CAAC,QAAQ,CAAuC,EAAG,GAAoB,CAAC,EAAY,iBAAiB,SAAS,EAAmB,CAAC,IAAM,EAAkB,EAAgB,IAAI,GAAO,CAAC,IAAM,EAAG,EAAO,WAAW,EAAM,CAAkD,OAAjD,EAAG,iBAAiB,SAAS,EAAmB,CAAQ,GAAK,CAAC,UAAU,CAAC,EAAY,oBAAoB,SAAS,EAAmB,CAAC,EAAkB,QAAQ,GAAI,EAAG,oBAAoB,SAAS,EAAmB,CAAC,GAAK,EAAE,CAAC,CAAC,IAAM,GAAWD,MAAY,CAAC,GAAG,IAAqB,QAAQ,MAAO,GAAE,IAAM,EAAI,KAAK,MAAM,EAAW,EAAE,EAAW,EAAE,CAAC,OAAO,EAAc,EAAI,KAAK,GAAG,GAAM,CAAC,EAAmB,EAAW,EAAE,EAAW,EAAE,EAAc,CAAC,CAAO,GAAYA,MAAY,CAAC,GAAG,IAAqB,QAAQ,MAAO,GAAqH,IAAM,EAArD,EAAzD,KAAK,IAAI,EAAE,EAAW,KAAK,GAAkB,CAAyB,KAAK,IAAI,EAAE,EAAqB,CAAC,CAAc,OAAO,EAAE,GAAG,EAAE,EAAE,IAAK,CAAC,EAAmB,EAAW,KAAK,GAAkB,CAAC,CAAO,GAAeA,MAAoB,IAAqB,QAAQ,GAAW,GAAgB,CAAC,EAAmB,GAAW,GAAc,CAAC,CAAO,EAAsBC,MAAgB,CAAC,GAAG,CAAC,EAAU,MAAO,GAAE,IAAM,EAAG,EAAa,QAAQ,GAAG,CAAC,EAAG,MAAO,GAAE,IAAM,EAAK,EAAG,uBAAuB,CAAO,EAAa,EAAO,YAAY,GAAG,IAAa,SAAS,CAAC,IAAM,EAAW,EAAK,IAAU,EAAa,EAAa,GAA+I,OAAzI,GAAY,EAAqB,EAA+G,GAA7E,EAAa,IAA6B,EAAa,GAAG,EAAK,QAAsD,KAAO,CAAC,IAAM,EAAc,EAAK,IAAI,EAAK,OAAO,EAAQ,EAAe,EAAa,EAAQ,EAAY,EAAuD,OAAO,GAApC,EAAe,EAAqC,EAAY,GAAG,EAAY,GAAI,CAAC,EAAW,CAAC,CAAO,GAAaA,MAAgB,CAAC,IAAM,EAAS,GAAuB,CAAC,EAAkB,IAAI,EAAS,EAAG,CAAC,EAAsB,EAAkB,CAAC,CAAO,EAAaA,MAAgB,CAAC,IAAM,EAAS,GAAuB,CAAC,EAAkB,IAAI,EAAS,EAAG,CAAC,EAAsB,EAAkB,CAAC,CAAO,GAAgBD,MAAY,GAAS,EAAa,IAAI,CAAC,CAAC,EAAa,CAAC,CAAC,MAAc,CAAI,MAAC,GAAW,IAAqB,UAA8J,OAA9I,EAAO,iBAAiB,SAAS,GAAa,CAAC,QAAQ,GAAK,CAAC,CAAC,EAAO,iBAAiB,SAAS,GAAgB,CAAC,QAAQ,GAAK,CAAC,CAAC,GAAc,KAAW,CAAC,EAAO,oBAAoB,SAAS,GAAa,CAAC,EAAO,oBAAoB,SAAS,GAAgB,GAAK,CAAC,EAAmB,GAAa,GAAgB,EAAa,CAAC,CAC5tG,MAAc,CAAC,GAAG,IAAqB,SAAS,CAAC,EAAa,QAAQ,OAAO,IAAM,EAAe,GAAG,CAAC,GAAG,CAAC,EAAa,SAAS,QAAQ,gBAAgB,CAAC,OAAO,IAAkB,EAAG,EAAE,EAAG,EAAE,OAAO,EAAE,IAAT,CAAc,IAAI,UAAU,EAAG,IAAM,MAAM,IAAI,YAAY,EAAG,GAAK,MAAM,IAAI,YAAY,EAAG,IAAM,MAAM,IAAI,aAAa,EAAG,GAAK,MAAM,IAAI,SAAS,EAAkB,IAAI,EAAE,CAAC,EAAkB,IAAI,EAAE,CAAC,EAAqB,IAAI,EAAE,CAAC,OAAO,QAAQ,OAAQ,GAAG,GAAI,EAAG,CAAC,EAAE,gBAAgB,CAAC,IAAM,EAAS,EAAkB,KAAK,CAAO,EAAS,EAAkB,KAAK,CAAO,EAAK,KAAK,IAAI,CAAC,EAAqB,KAAK,IAAI,EAAqB,EAAS,EAAG,CAAC,CAAO,EAAK,KAAK,IAAI,CAAC,EAAqB,KAAK,IAAI,EAAqB,EAAS,EAAG,CAAC,CAAC,EAAkB,IAAI,EAAK,CAAC,EAAkB,IAAI,EAAK,CAAC,EAAqB,IAAI,KAAK,MAAM,EAAK,EAAK,CAAC,GAAwD,OAApD,SAAS,iBAAiB,UAAU,EAAe,KAAW,SAAS,oBAAoB,UAAU,EAAe,EAAG,CAAC,EAAmB,EAAkB,EAAkB,EAAqB,CAAC,CAAC,MAAc,CAAC,GAAG,CAAC,GAAW,IAAqB,QAAQ,OAAO,IAAM,EAAG,EAAa,QAAQ,GAAG,CAAC,EAAG,OAAO,IAAI,EAAoB,EAAG,IAAI,mBAAmB,CAAC,aAAa,EAAc,CAAC,EAAc,EAAO,eAAe,CAAC,EAAQ,QAAQ,EAAG,uBAAuB,EAAG,IAAI,EAAG,CAAC,EAAG,QAAQ,EAAG,CAAC,MAAkB,CAAC,EAAQ,QAAQ,EAAG,uBAAuB,EAAG,CAAC,IAAI,EAAkB,MAAa,CAAC,qBAAqB,EAAY,CAAC,EAAY,MAAkB,CAAC,EAAQ,QAAQ,EAAG,uBAAuB,EAAG,EAAG,EAAO,iBAAiB,SAAS,EAAS,CAAC,QAAQ,GAAK,CAAC,CAAC,IAAI,EAAkB,EAAc,GAAG,CAAC,IAAM,EAAK,EAAQ,QAAQ,GAAG,EAAK,CAAC,IAAM,EAAG,EAAK,KAAK,EAAK,MAAM,EAAQ,EAAG,EAAK,IAAI,EAAK,OAAO,EAAQ,EAAG,EAAE,QAAQ,EAAS,EAAG,EAAE,QAAQ,EAAS,EAAK,KAAK,MAAM,EAAG,EAAG,CAAC,GAAG,IAAuB,SAAS,CAAC,IAAM,EAAkB,SAAS,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,CAAO,EAAW,EAAG,SAAS,EAAkB,CAAO,EAAc,IAAoB,EAAkB,UAAU,UAAU,EAAkB,UAAU,KAAK,EAAkB,UAAU,SAAS,EAAkB,UAAU,YAAY,EAAkB,UAAU,UAAU,EAAkB,UAAU,SAAS,EAAkB,QAAQ,SAAS,GAAG,MAAM,EAAkB,QAAQ,IAAI,GAAG,MAAM,EAAkB,UAAU,MAAM,EAAkB,MAAM,SAAS,WAAiB,EAAU,GAAY,EAAc,GAAG,EAAE,EAAkB,IAAI,EAAG,EAAU,CAAC,EAAkB,IAAI,EAAG,EAAU,CAAC,EAAqB,IAAI,EAAK,EAAU,MAAO,EAAkB,IAAI,EAAG,CAAC,EAAkB,IAAI,EAAG,CAAC,EAAqB,IAAI,EAAK,CACpkF,aAAa,EAAY,CAAC,EAAY,EAAO,eAAe,CAAC,EAAkB,IAAI,EAAE,CAAC,EAAkB,IAAI,EAAE,CAAC,EAAqB,IAAI,EAAE,EAAG,EAAmB,GAAU,EAAe,GAAG,GACpL,EAAe,GAAG,CAAI,IAAO,EAAkB,IAAI,EAAE,CAAC,EAAkB,IAAI,EAAE,CAAC,EAAqB,IAAI,EAAE,GAAU,EAAqB,GAAG,CAAC,IAAM,EAAK,EAAE,eAAe,EAAE,WAAa,CAAC,GAAM,EAAK,WAAW,UAAQ,EAAkB,IAAI,EAAE,CAAC,EAAkB,IAAI,EAAE,CAAC,EAAqB,IAAI,EAAE,GAAU,EAAY,GAAG,CAAC,GAAG,EAAE,QAAQ,OAAO,EAAE,CAAC,IAAM,EAAM,EAAE,QAAQ,GAAS,EAAK,EAAQ,QAAQ,GAAG,EAAK,CAAC,IAAM,EAAG,EAAK,KAAK,EAAK,MAAM,EAAQ,EAAG,EAAK,IAAI,EAAK,OAAO,EAAQ,EAAG,EAAM,QAAQ,EAAS,EAAG,EAAM,QAAQ,EAAS,EAAK,KAAK,MAAM,EAAG,EAAG,CAAC,EAAkB,IAAI,EAAG,CAAC,EAAkB,IAAI,EAAG,CAAC,EAAqB,IAAI,EAAK,CAAC,aAAa,EAAY,CAAC,EAAY,EAAO,eAAe,CAAC,EAAkB,IAAI,EAAE,CAAC,EAAkB,IAAI,EAAE,CAAC,EAAqB,IAAI,EAAE,EAAG,EAAmB,IAAW,MAAe,CAAC,aAAa,EAAY,CAAC,EAAY,EAAO,eAAe,CAAC,EAAkB,IAAI,EAAE,CAAC,EAAkB,IAAI,EAAE,CAAC,EAAqB,IAAI,EAAE,EAAG,EAAmB,EAAS,EAAO,IAAuB,SAAS,SAAS,EAAgc,OAA7b,EAAO,iBAAiB,cAAc,EAAc,CAAC,QAAQ,GAAK,CAAC,CAAC,EAAO,iBAAiB,eAAe,EAAe,CAAC,QAAQ,GAAK,CAAC,CAAC,EAAO,iBAAiB,eAAe,EAAe,CAAC,QAAQ,GAAK,CAAC,CAAC,EAAO,iBAAiB,YAAY,EAAY,CAAC,QAAQ,GAAK,CAAC,CAAC,EAAO,iBAAiB,WAAW,EAAW,CAAC,QAAQ,GAAK,CAAC,CAAI,IAAuB,UAAU,SAAS,iBAAiB,WAAW,EAAqB,CAAC,QAAQ,GAAK,CAAC,KAAY,CAAC,aAAa,EAAY,CAAC,qBAAqB,EAAY,CAAC,EAAG,YAAY,CAAC,EAAO,oBAAoB,SAAS,EAAS,CAAC,EAAO,oBAAoB,cAAc,EAAc,CAAC,EAAO,oBAAoB,eAAe,EAAe,CAAC,EAAO,oBAAoB,eAAe,EAAe,CAAC,EAAO,oBAAoB,YAAY,EAAY,CAAC,EAAO,oBAAoB,WAAW,EAAW,CAAI,IAAuB,UAAU,SAAS,oBAAoB,WAAW,EAAqB,GAAM,CAAC,EAAmB,EAAqB,EAAM,EAAc,EAAkB,EAAkB,EAAqB,CAAC,CAAC,IAAM,GAAeA,MAAY,CAAC,GAAG,IAAqB,QAAS,OAAO,KAAK,IAAI,EAAE,EAAS,CAAC,GAAa,GAAG,IAAqB,SAAU,OAAO,KAAK,IAAI,EAAE,EAAS,CAAE,IAAI,EAAc,GAAG,EAAe,GAAI,EAAc,EAAE,EAAe,EAAe,MAAoB,CAAC,IAAME,EAAE,EAAE,EAAe,EAAE,EAAc,EAAEA,EAAEA,EAAEA,EAAE,EAAmF,OAA7E,IAAa,WAAmB,KAAK,IAAI,EAAE,GAAU,EAAE,GAAe,CAAc,KAAK,IAAI,EAAE,EAAS,EAAc,EAAI,CAAC,EAAmB,EAAS,EAAe,EAAW,GAAY,CAAC,CAAO,EAAiB,IAAgB,GAAS,GAAeF,MAAY,CAAC,GAAG,CAAC,EAAiB,MAAM,EAAE,CAAC,IAAM,EAAU,EAAE,CAAO,EAAiB,KAAK,IAAI,EAAE,GAAa,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAiB,IAAI,CAAC,IAAM,EAAS,IAAmB,EAAE,GAAG,EAAE,EAAE,EAAuB,EAAwB,IAAS,GAAqB,EAAU,KAAK,CAAC,MAAM,EAAE,WAAS,iBAAe,CAAC,CAAE,OAAO,GAAY,CAAC,GAAa,EAAiB,CAAC,CAAO,EAAOA,MAAY,CAAC,IAAM,EAAO,EAAE,CAAC,GAAG,CAAC,EAAsI,OAApH,EAAO,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAS,EAAe,KAAK,CAAC,YAAY,EAAa,MAAM,GAAK,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAQ,EAAQ,GAAK,CAAC,OAAO,EAAU,OAAO,GAAW,EAAqlB,OAAtkB,GAAe,QAAQ,GAAK,CAAC,IAAM,EAAc,GAAe,EAAI,eAAiE,EAAkB,GAAe,EAAU,EAArF,EAAQ,EAAE,EAAI,SAAS,EAAI,SAAsE,CAAC,GAAG,EAAkB,EAAE,IAAI,CAAC,IAAM,EAAK,KAAK,IAAI,GAAe,CAAC,EAAoB,EAAK,KAAK,IAAI,GAAe,CAAC,EAAc,EAAO,KAAK,CAAC,EAAE,EAAK,EAAE,EAAK,MAAM,EAAS,EAAkB,CAAC,YAAY,EAAa,MAAM,GAAM,OAAO,EAAI,MAAM,QAAQ,EAAkB,EAAE,CAAC,GAAI,CAAC,EAAO,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAS,EAAe,KAAK,CAAC,YAAY,EAAa,MAAM,GAAK,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAQ,GAAS,CAAC,GAAe,GAAe,GAAe,EAAe,EAAa,EAAQ,EAAiB,CAAC,CAAs3C,OAA91C,MAAY,CAAC,GAAG,CAAC,EAAU,MAAM,CAAC,MAAM,IAAI,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,IAAI,WAAW,GAAG,CAAC,IAAM,EAAS,GAAG,EAAK,GAAG,EAAa,SAAS,GAAG,EAAa,WAAW,GAAG,EAAa,WAAW,GAAG,EAAa,WAAW,GAAG,EAAa,gBAAgB,GAAG,EAAoB,SAAS,EAAoB,QAAQ,MAAM,EAAU,OAAO,EAAoB,QAAQ,aAAc,IAAM,EAAS,IAAiB,CAAC,GAAG,CAAC,EAAS,OAAO,EAAoB,SAAS,cAAc,CAAC,MAAM,IAAI,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,IAAI,WAAW,GAAG,CAAC,EAAS,MAAM,SAAS,GAAG,EAAa,SAAS,IAAI,EAAS,MAAM,WAAW,EAAa,WAAW,EAAS,MAAM,WAAW,OAAO,EAAa,WAAW,CAAC,EAAS,MAAM,WAAW,OAAO,EAAa,WAAW,CAAC,EAAS,MAAM,cAAc,GAAG,EAAa,cAAc,IAAI,EAAS,YAAY,EAAK,IAAM,EAAK,EAAS,uBAAuB,CAAO,EAAQ,KAAK,IAAI,EAAS,GAAG,CAAC,EAAa,EAAQ,EAAa,CAAC,MAAM,EAAK,MAAM,EAAQ,EAAE,OAAO,EAAK,OAAO,EAAQ,EAAE,SAAS,EAAK,OAAO,IAAI,EAAgB,UAAQ,UAAU,EAAK,MAAM,WAAW,EAAK,OAAO,CAAyD,MAAxD,GAAoB,QAAQ,CAAC,IAAI,EAAS,eAAa,CAAQ,GAAe,CAAC,EAAK,EAAa,EAAS,EAAa,CAAC,CAA4I,EAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,eAAxJ,EAAa,YAAY,OAAO,aAAa,EAAa,YAAY,QAAQ,WAAW,SAA8E,WAAW,SAAS,SAAS,OAAO,SAAS,UAAU,UAAU,MAAM,CAAC,SAAsB,EAAK,MAAM,CAAC,IAAI,EAAa,KAAK,MAAM,aAAa,EAAK,YAAY,IAAqB,SAAkB,IAAA,GAAT,SAAmB,cAAc,OAAO,SAAS,IAAqB,QAAQ,EAAE,IAAA,GAAU,MAAM,CAAC,SAAS,WAAW,QAAQ,eAAe,MAAM,cAAc,SAAS,UAAU,QAAQ,OAAO,CAAC,QAAQ,GAAG,CAAI,IAAqB,UAAS,EAAE,cAAc,MAAM,QAAQ,yBAAyB,EAAE,cAAc,MAAM,cAAc,QAAS,OAAO,GAAG,CAAI,IAAqB,UAAS,EAAE,cAAc,MAAM,QAAQ,SAAU,SAAS,EAAO,KAAK,EAAM,IAAQ,CAA8E,IAAM,GAAhE,IAAa,WAAW,IAAa,QAAQ,CAAC,EAAM,QAAuC,EAAa,EAAQ,EAAgB,IAAuB,EAA8K,EAAc,GAA3J,EAAO,QAAQ,EAAE,EAAE,EAAM,KAAK,IAAI,EAAE,EAAO,OAAO,EAAE,GAAwB,IAAqB,UAAU,CAAC,GAAqB,IAAI,GAA6D,EAAW,EAAM,EAAE,EAAoB,EAAW,EAAM,EAAE,EAAoB,EAAgB,eAAe,EAAW,QAAQ,EAAE,CAAC,MAAM,EAAW,QAAQ,EAAE,CAAC,QAAc,EAAY,EAAgB,CAAC,iBAAiB,GAAG,EAAa,KAAK,EAAM,QAAQ,oBAAoB,cAAc,CAAC,EAAE,CAAC,OAAoB,EAAK,OAAO,CAAC,cAAc,CAAC,EAAM,MAAM,MAAM,CAAC,GAAG,EAAa,OAAO,EAAE,WAAW,SAAS,SAAS,EAAM,MAAM,WAAW,WAAW,KAAK,EAAE,IAAI,EAAE,UAAU,EAAgB,MAAM,GAAc,CAAC,EAAgB,cAAc,EAAa,IAAA,GAAU,EAAM,MAAM,WAAW,GAAkB,IAAqB,UAAU,CAAC,EAAM,MAAM,YAAY,OAAO,cAAc,EAAM,MAAM,OAAO,OAAO,WAAW,EAAM,MAAM,OAAO,OAAO,GAAG,EAAY,CAAC,SAAS,EAAK,CAAC,GAAG,EAAM,GAAG,EAAM,SAAS,EAAG,CAAC,CAAC,CAAC,CAAC,8DApBzoO,IAAiF,IAAoD,IAAoD,CAA+B,EAAiB,IAAS,OAAkB,EAAqB,IAAU,GAAoB,EAAQ,GAAgB,EAAQ,GAAgB,GAAS,EAAmB,IAC3a,GAAoB,GAAS,GAA2B,GACxD,EAAuB,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,UAAU,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAC1L,EAAmB,CAAC,KAAK,SAAS,UAAU,IAAI,QAAQ,GAAG,KAAK,GAAG,CACnE,EAAa,CAAC,SAAS,GAAG,WAAW,oBAAoB,WAAW,IAAI,WAAW,IAAI,cAAc,EAAE,UAAU,SAAS,CAA4B,QAA2B,CAAC,GAAG,CAAC,EAAU,MAAO,GAAM,IAAM,EAAO,SAAS,cAAc,MAAM,CAAC,MAAM,qBAAqB,EAAO,OAAO,qBAAqB,EAAO,SAAU,CAAO,QAAyB,EAA6B,iEAAiE,KAAK,EAAU,UAAU,EAAE,EAAO,WAAW,qBAAqB,CAAC,SAAS,EAAO,WAAW,oBAAoB,CAAC,QAAhM,KAA4M,CAAO,EAAQ,GAAG,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,CAAO,IAAU,EAAG,IAAQ,CAAC,IAAI,EAAU,OAAO,GAAG,IAAO,CAAC,aAAa,EAAU,CAAC,EAAU,eAAe,EAAG,GAAG,EAAK,CAAC,EAAM,GAGjvB,EAAoB,KAayrO,EAAU,YAAY,aAAa,EAAU,oBAAoB,GAA6B,EAAoB,EAAU,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,GAAK,qBAAqB,GAAK,aAAa,CAAC,SAAS,GAAG,WAAW,oBAAoB,WAAW,IAAI,WAAW,IAAI,cAAc,EAAE,UAAU,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,IAAI,EAAE,IAAI,GAAG,aAAa,GAAG,eAAe,GAAK,YAAY,uCAAuC,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,IAAI,EAAE,IAAI,IAAI,KAAK,KAAK,aAAa,GAAG,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,IAAI,EAAE,IAAI,IAAI,KAAK,IAAO,aAAa,GAAG,OAAO,GAAO,EAAM,YAAY,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,UAAU,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,MAAM,UAAU,aAAa,UAAU,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,MAAM,UAAU,aAAa,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAM,CAAC,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,QAAQ,CAAC,SAAS,SAAS,QAAQ,CAAC,aAAa,CAAC,SAAS,SAAS,eAAe,CAAC,aAAa,SAAS,CAAC,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,cAAc,QAAQ,CAAC,WAAW,SAAS,CAAC,aAAa,CAAC,WAAW,SAAS,CAAC,aAAa,WAAW,wBAAwB,GAAK,OAAO,GAAO,EAAM,YAAY,SAAS,CAAC,cAAc,CAAC,KAAK,EAAY,QAAQ,MAAM,2BAA2B,aAAa,GAAM,OAAO,GAAO,EAAM,YAAY,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,WAAW,QAAQ,CAAC,YAAY,WAAW,CAAC,aAAa,CAAC,YAAY,WAAW,CAAC,aAAa,WAAW,wBAAwB,GAAK,OAAO,GAAO,EAAM,YAAY,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAY,KAAK,MAAM,QAAQ,QAAQ,CAAC,QAAQ,UAAU,OAAO,CAAC,aAAa,CAAC,OAAO,UAAU,QAAQ,CAAC,aAAa,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,KAAK,KAAK,aAAa,EAAE,OAAO,GAAO,EAAM,aAAa,QAAQ,YAAY,+CAA+C,CAAC,CAAC"}