{"version":3,"file":"Wavy_Text_Distortion_Marquee.B73nCcq6.mjs","names":["useRef","useState","useCallback","useMemo"],"sources":["https:/framerusercontent.com/modules/m3ELMV2pXDb9mcOhi13u/2rMni9Dy17QCGAm7sywj/Wavy_Text_Distortion_Marquee.js"],"sourcesContent":["// @framerDisableUnlink\n// @framerIntrinsicWidth 800\n// @framerIntrinsicHeight 120\n// @framerSupportedLayoutWidth any-prefer-fixed\n// @framerSupportedLayoutHeight auto\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useRef,useEffect,useState,useCallback,useMemo,useLayoutEffect}from\"react\";// --- Best Practice: Token & Font Helpers ---\n/**\n * Safely unwrap tokens like { value: '#000' } for Theme compatibility\n */const parseToken=v=>v&&typeof v===\"object\"&&\"value\"in v?v.value:v;/**\n * Normalize extended font control into CSS and extract numeric size\n */const getFontStyles=font=>{if(!font)return{style:{},size:64};const lh=typeof font.lineHeight===\"number\"?String(font.lineHeight)+\"px\":font.lineHeight;return{style:{...font,fontSize:font.fontSize??font.size,lineHeight:lh,fontVariantNumeric:\"tabular-nums\"},size:typeof font.fontSize===\"number\"?font.fontSize:parseInt(font.fontSize)||64};};// --- Advanced Easing Functions ---\nconst easeInOutSine=t=>-(Math.cos(Math.PI*t)-1)/2;const elasticOut=t=>{const c4=2*Math.PI/3;return t===0?0:t===1?1:Math.pow(2,-10*t)*Math.sin((t*10-.75)*c4)+1;};const bounceOut=t=>{const n1=7.5625;const d1=2.75;if(t<1/d1)return n1*t*t;if(t<2/d1)return n1*(t-=1.5/d1)*t+.75;if(t<2.5/d1)return n1*(t-=2.25/d1)*t+.9375;return n1*(t-=2.625/d1)*t+.984375;};/**\n * @framerDisableUnlink\n */export default function WavyTextDistortionMarquee(props){const{text,uppercase,font,appearance,layout,animation,wave,distortion,style}=props;// --- Canvas Detection for Performance ---\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;const isStatic=RenderTarget.current()===RenderTarget.export||RenderTarget.current()===RenderTarget.thumbnail;// --- Process Font and Colors with Token Support ---\nconst fontData=getFontStyles(font);const fontSize=fontData.size;const textColor=parseToken(appearance.textColor);const bgColor=parseToken(appearance.backgroundColor);// --- Refs & State ---\nconst containerRef=useRef(null);const trackRef=useRef(null);const[isHovered,setIsHovered]=useState(false);const positionRef=useRef(0);const timeRef=useRef(0);const speedRef=useRef(animation.scrollSpeed);const rafRef=useRef();const[tick,setTick]=useState(0);const[itemWidth,setItemWidth]=useState(0);const displayText=uppercase?text.toUpperCase():text;// --- Wave Function Generator ---\nconst getWaveValue=useCallback((phase,t,type)=>{const normalizedPhase=phase+t;switch(type){case\"elastic\":{const sin=Math.sin(normalizedPhase);return sin*elasticOut((Math.sin(normalizedPhase*.5)+1)/2);}case\"bounce\":{const bounce=bounceOut((Math.sin(normalizedPhase*.5)+1)/2);return Math.sin(normalizedPhase)*bounce;}case\"smooth\":{return easeInOutSine((Math.sin(normalizedPhase)+1)/2)*2-1;}case\"chaos\":{const layer1=Math.sin(normalizedPhase);const layer2=Math.sin(normalizedPhase*2.1+1.3)*.5;const layer3=Math.sin(normalizedPhase*.7-.8)*.3;return layer1+layer2+layer3;}case\"sine\":default:return Math.sin(normalizedPhase);}},[]);// --- Dynamic Padding Calculation ---\nconst dynamicPadding=useMemo(()=>{let extraPadding=0;if(distortion.vertical){extraPadding+=wave.amplitude*distortion.intensity*1.2;}if(distortion.scale){const maxScale=1+.2*distortion.intensity;extraPadding+=(fontSize*maxScale-fontSize)/2;}if(distortion.rotation){const maxRotation=12*distortion.intensity;const rotationRadians=maxRotation*Math.PI/180;extraPadding+=Math.sin(rotationRadians)*fontSize*.6;}if(distortion.perspective){extraPadding+=fontSize*.4*distortion.intensity;}if(distortion.blur){extraPadding+=10*distortion.intensity;}return Math.max(extraPadding+layout.paddingY+20,40);},[wave.amplitude,distortion,fontSize,layout.paddingY]);// --- Measure Item Width ---\nuseLayoutEffect(()=>{const measure=()=>{if(trackRef.current){const firstItem=trackRef.current.querySelector(\"[data-marquee-item]\");if(firstItem){setItemWidth(firstItem.offsetWidth);}}};if(typeof document!==\"undefined\"&&document.fonts){document.fonts.ready.then(()=>requestAnimationFrame(measure));}measure();},[displayText,fontSize,font,layout.gap]);// --- Animation Loop ---\nuseEffect(()=>{// Skip animation for static renders (export, thumbnail)\nif(isStatic)return;// Simplified animation for Canvas to improve editor performance\nif(isCanvas){let canvasFrame=0;const canvasLoop=()=>{canvasFrame++;// Slower update rate on canvas\nif(canvasFrame%2===0){positionRef.current-=.3;timeRef.current+=.02;if(itemWidth>0&&positionRef.current<=-itemWidth){positionRef.current+=itemWidth;}setTick(t=>t+1);}rafRef.current=requestAnimationFrame(canvasLoop);};rafRef.current=requestAnimationFrame(canvasLoop);return()=>{if(rafRef.current)cancelAnimationFrame(rafRef.current);};}// Full animation for Preview/Live\nlet prevTime=performance.now();const loop=now=>{const delta=Math.min((now-prevTime)/1e3,.05);prevTime=now;// Calculate target speed based on hover state\nlet targetSpeed=animation.scrollSpeed;if(isHovered){switch(animation.hoverEffect){case\"pause\":targetSpeed=0;break;case\"slowdown\":targetSpeed=animation.slowdownSpeed;break;case\"reverse\":targetSpeed=-animation.scrollSpeed*.5;break;}}// Smooth interpolation with easing\nspeedRef.current+=(targetSpeed-speedRef.current)*.06;const ratio=animation.scrollSpeed===0?0:speedRef.current/animation.scrollSpeed;timeRef.current+=delta*Math.max(Math.abs(ratio),.1);const move=speedRef.current*delta;const directionMultiplier=animation.direction===\"left\"?-1:1;positionRef.current+=move*directionMultiplier;// Seamless loop reset\nif(itemWidth>0){if(animation.direction===\"left\"&&positionRef.current<=-itemWidth){positionRef.current+=itemWidth;}else if(animation.direction===\"right\"&&positionRef.current>=0){positionRef.current-=itemWidth;}}setTick(t=>t+1);rafRef.current=requestAnimationFrame(loop);};rafRef.current=requestAnimationFrame(loop);return()=>{if(rafRef.current)cancelAnimationFrame(rafRef.current);};},[isHovered,animation,itemWidth,isCanvas,isStatic]);// --- Character Renderer with Advanced Distortion ---\nconst renderChars=useCallback((content,setIndex)=>{const t=timeRef.current*wave.speed;return content.split(\"\").map((char,i)=>{const phase=i*fontSize*.5*wave.frequency;// Multi-layer wave values for complex motion\nconst w1=getWaveValue(phase,t,wave.waveType);const w2=getWaveValue(phase*.7,t*1.3,wave.waveType);const w3=getWaveValue(phase*1.4,t*.6,wave.waveType);// Calculate distortion values\nconst y=distortion.vertical?w1*wave.amplitude*distortion.intensity:0;const x=distortion.horizontal?w2*wave.amplitude*.4*distortion.intensity:0;const scale=distortion.scale?1+w1*.2*distortion.intensity:1;const rotate=distortion.rotation?w1*12*distortion.intensity:0;const skew=distortion.skew?w2*8*distortion.intensity:0;// 3D perspective transforms\nconst rotateX=distortion.perspective?w3*20*distortion.intensity:0;const rotateY=distortion.perspective?w2*15*distortion.intensity:0;// Color effects\nconst hueShift=distortion.colorShift?w1*40*distortion.intensity:0;const saturation=distortion.colorShift?100+w2*30*distortion.intensity:100;const brightness=distortion.colorShift?100+w3*15*distortion.intensity:100;// Blur effect\nconst blurAmount=distortion.blur?Math.abs(w1)*3*distortion.intensity:0;// Build transform string\nlet transform=`translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg) skewX(${skew}deg)`;if(distortion.perspective){transform=`perspective(600px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) ${transform}`;}// Build filter string\nconst filters=[];if(distortion.colorShift){filters.push(`hue-rotate(${hueShift}deg)`);filters.push(`saturate(${saturation}%)`);filters.push(`brightness(${brightness}%)`);}if(distortion.blur&&blurAmount>.1){filters.push(`blur(${blurAmount}px)`);}return /*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",transform,willChange:\"transform\",filter:filters.length>0?filters.join(\" \"):undefined,transformStyle:distortion.perspective?\"preserve-3d\":undefined,backfaceVisibility:distortion.perspective?\"hidden\":undefined},children:char===\" \"?\"\\xa0\":char},`${setIndex}-${i}`);});},[wave,distortion,fontSize,tick,getWaveValue]);// --- Calculate Copies Needed ---\nconst screenWidth=typeof window!==\"undefined\"?window.innerWidth:1920;const copies=itemWidth>0?Math.ceil(screenWidth/itemWidth)+3:5;// --- Static Placeholder for Export ---\nif(isStatic){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",minHeight:fontSize+layout.paddingY*2,overflow:\"hidden\",backgroundColor:bgColor,display:\"flex\",alignItems:\"center\",padding:`${layout.paddingY}px 0`,boxSizing:\"border-box\",...fontData.style,color:textColor,...style},children:displayText});}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,onMouseEnter:()=>setIsHovered(true),onMouseLeave:()=>setIsHovered(false),style:{width:800,height:\"auto\",minHeight:fontSize+dynamicPadding*2,overflow:\"hidden\",backgroundColor:bgColor,display:\"flex\",alignItems:\"center\",cursor:animation.hoverEffect!==\"none\"?\"pointer\":\"auto\",padding:`${dynamicPadding}px 0`,boxSizing:\"border-box\",position:\"relative\",...style},children:/*#__PURE__*/_jsx(\"div\",{ref:trackRef,style:{display:\"flex\",whiteSpace:\"nowrap\",transform:`translate3d(${positionRef.current}px, 0, 0)`,...fontData.style,color:textColor},children:Array.from({length:copies}).map((_,i)=>/*#__PURE__*/_jsx(\"div\",{\"data-marquee-item\":true,style:{display:\"inline-flex\",whiteSpace:\"nowrap\",paddingRight:`${layout.gap}px`,flexShrink:0},children:renderChars(displayText,i)},i))})});}// --- Default Props ---\nWavyTextDistortionMarquee.defaultProps={text:\"Creative Agency • Bold Design • Innovation •\",uppercase:false,appearance:{textColor:\"#000000\",backgroundColor:\"transparent\"},layout:{gap:100,paddingY:20},animation:{scrollSpeed:50,direction:\"left\",hoverEffect:\"slowdown\",slowdownSpeed:10},wave:{amplitude:20,frequency:.05,speed:2,waveType:\"sine\"},distortion:{intensity:1,vertical:true,horizontal:true,scale:true,rotation:false,skew:true,perspective:false,colorShift:false,blur:false}};// --- Property Controls ---\naddPropertyControls(WavyTextDistortionMarquee,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Creative Agency • Bold Design • Innovation •\",displayTextArea:true,description:\"Enter the text to display in the marquee.\"},uppercase:{type:ControlType.Boolean,title:\"Uppercase\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},font:{//@ts-ignore\ntype:ControlType.Font,title:\"Font\",controls:\"extended\",displayFontSize:true,defaultFontType:\"sans-serif\",defaultValue:{fontSize:64,fontWeight:700}},appearance:{type:ControlType.Object,title:\"Appearance\",icon:\"color\",controls:{textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"transparent\"}}},layout:{type:ControlType.Object,title:\"Layout\",icon:\"object\",controls:{gap:{type:ControlType.Number,title:\"Gap\",defaultValue:100,min:0,max:300,step:10,unit:\"px\",description:\"Space between repeated text blocks.\"},paddingY:{type:ControlType.Number,title:\"Vertical Padding\",defaultValue:20,min:0,max:100,unit:\"px\"}}},animation:{type:ControlType.Object,title:\"Animation\",icon:\"effect\",controls:{scrollSpeed:{type:ControlType.Number,title:\"Speed\",defaultValue:50,min:0,max:500,step:5,description:\"Movement speed in pixels per second.\"},direction:{type:ControlType.Enum,title:\"Direction\",defaultValue:\"left\",options:[\"left\",\"right\"],optionTitles:[\"← Left\",\"→ Right\"],displaySegmentedControl:true},hoverEffect:{type:ControlType.Enum,title:\"On Hover\",defaultValue:\"slowdown\",options:[\"pause\",\"slowdown\",\"reverse\",\"none\"],optionTitles:[\"Pause\",\"Slow Down\",\"Reverse\",\"None\"]},slowdownSpeed:{type:ControlType.Number,title:\"Hover Speed\",defaultValue:10,min:0,max:100,step:5,hidden:props=>props.hoverEffect!==\"slowdown\"}}},wave:{type:ControlType.Object,title:\"Wave\",icon:\"effect\",controls:{waveType:{type:ControlType.Enum,title:\"Type\",defaultValue:\"sine\",options:[\"sine\",\"elastic\",\"bounce\",\"smooth\",\"chaos\"],optionTitles:[\"Sine\",\"Elastic\",\"Bounce\",\"Smooth\",\"Chaos\"],description:\"Wave motion style.\"},amplitude:{type:ControlType.Number,title:\"Amplitude\",defaultValue:20,min:0,max:150,step:1,unit:\"px\",description:\"Height of wave motion.\"},frequency:{type:ControlType.Number,title:\"Frequency\",defaultValue:.05,min:.001,max:.2,step:.001,description:\"Tightness of wave curves.\"},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:2,min:.1,max:10,step:.1,description:\"Wave undulation speed.\"}}},distortion:{type:ControlType.Object,title:\"Distortion\",icon:\"effect\",controls:{intensity:{type:ControlType.Number,title:\"Intensity\",defaultValue:1,min:0,max:3,step:.1,description:\"Global multiplier for all effects.\"},vertical:{type:ControlType.Boolean,title:\"Vertical\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},horizontal:{type:ControlType.Boolean,title:\"Horizontal\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},scale:{type:ControlType.Boolean,title:\"Scale\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},rotation:{type:ControlType.Boolean,title:\"Rotation\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},skew:{type:ControlType.Boolean,title:\"Skew\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},perspective:{type:ControlType.Boolean,title:\"3D Perspective\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Enable 3D rotation effects.\"},colorShift:{type:ControlType.Boolean,title:\"Color Shift\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Hue and saturation shifting.\"},blur:{type:ControlType.Boolean,title:\"Motion Blur\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Dynamic blur effect.\"}}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"WavyTextDistortionMarquee\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Wavy_Text_Distortion_Marquee.map"],"mappings":"mOAaG,SAAwB,EAA0B,EAAM,CAAC,GAAK,CAAC,OAAK,YAAU,OAAK,aAAW,SAAO,YAAU,OAAK,aAAW,SAAO,EACnI,EAAS,EAAa,SAAS,GAAG,EAAa,OAAa,EAAS,EAAa,SAAS,GAAG,EAAa,QAAQ,EAAa,SAAS,GAAG,EAAa,UACzJ,EAAS,EAAc,EAAK,CAAO,EAAS,EAAS,KAAW,EAAU,EAAW,EAAW,UAAU,CAAO,EAAQ,EAAW,EAAW,gBAAgB,CAC/J,EAAaA,EAAO,KAAK,CAAO,EAASA,EAAO,KAAK,CAAM,CAAC,EAAU,GAAcC,EAAS,GAAM,CAAO,EAAYD,EAAO,EAAE,CAAO,EAAQA,EAAO,EAAE,CAAO,EAASA,EAAO,EAAU,YAAY,CAAO,EAAOA,GAAQ,CAAM,CAAC,EAAK,GAASC,EAAS,EAAE,CAAM,CAAC,EAAU,GAAcA,EAAS,EAAE,CAAO,EAAY,EAAU,EAAK,aAAa,CAAC,EACpV,EAAaC,GAAa,EAAM,EAAE,IAAO,CAAC,IAAM,EAAgB,EAAM,EAAE,OAAO,EAAP,CAAa,IAAI,UAA+C,OAA1B,KAAK,IAAI,EAAgB,CAAY,GAAY,KAAK,IAAI,EAAgB,GAAG,CAAC,GAAG,EAAE,CAAE,IAAI,SAAS,CAAC,IAAM,EAAO,GAAW,KAAK,IAAI,EAAgB,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,KAAK,IAAI,EAAgB,CAAC,EAAQ,IAAI,SAAU,OAAO,GAAe,KAAK,IAAI,EAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAG,IAAI,QAAQ,CAAC,IAAM,EAAO,KAAK,IAAI,EAAgB,CAAO,EAAO,KAAK,IAAI,EAAgB,IAAI,IAAI,CAAC,GAAS,EAAO,KAAK,IAAI,EAAgB,GAAG,GAAG,CAAC,GAAG,OAAO,EAAO,EAAO,EAAQ,IAAI,OAAO,QAAQ,OAAO,KAAK,IAAI,EAAgB,GAAI,EAAE,CAAC,CAC3mB,EAAeC,MAAY,CAAC,IAAI,EAAa,EAAiF,GAA5E,EAAW,WAAU,GAAc,EAAK,UAAU,EAAW,UAAU,KAAQ,EAAW,MAAM,CAAC,IAAM,EAAS,EAAE,GAAG,EAAW,UAAU,IAAe,EAAS,EAAS,GAAU,EAAG,GAAG,EAAW,SAAS,CAA2C,IAAM,EAA9B,GAAG,EAAW,UAA4C,KAAK,GAAG,IAAI,GAAc,KAAK,IAAI,EAAgB,CAAC,EAAS,GAA0I,OAAnI,EAAW,cAAa,GAAc,EAAS,GAAG,EAAW,WAAc,EAAW,OAAM,GAAc,GAAG,EAAW,WAAkB,KAAK,IAAI,EAAa,EAAO,SAAS,GAAG,GAAG,EAAG,CAAC,EAAK,UAAU,EAAW,EAAS,EAAO,SAAS,CAAC,CACtoB,MAAoB,CAAC,IAAM,MAAY,CAAC,GAAG,EAAS,QAAQ,CAAC,IAAM,EAAU,EAAS,QAAQ,cAAc,sBAAsB,CAAI,GAAW,EAAa,EAAU,YAAY,GAAQ,OAAO,SAAW,KAAa,SAAS,OAAO,SAAS,MAAM,MAAM,SAAS,sBAAsB,EAAQ,CAAC,CAAE,GAAS,EAAG,CAAC,EAAY,EAAS,EAAK,EAAO,IAAI,CAAC,CAC7V,MAAc,CACd,GAAG,EAAS,OACZ,GAAG,EAAS,CAAC,IAAI,EAAY,EAAQ,MAAe,CAAC,IAClD,EAAY,GAAI,IAAG,EAAY,SAAS,GAAG,EAAQ,SAAS,IAAO,EAAU,GAAG,EAAY,SAAS,CAAC,IAAW,EAAY,SAAS,GAAW,EAAQ,GAAG,EAAE,EAAE,EAAE,EAAO,QAAQ,sBAAsB,EAAW,EAAoD,MAAjD,GAAO,QAAQ,sBAAsB,EAAW,KAAW,CAAI,EAAO,SAAQ,qBAAqB,EAAO,QAAQ,EAC1U,IAAI,EAAS,YAAY,KAAK,CAAO,EAAK,GAAK,CAAC,IAAM,EAAM,KAAK,KAAK,EAAI,GAAU,IAAI,IAAI,CAAC,EAAS,EACtG,IAAI,EAAY,EAAU,YAAY,GAAG,EAAW,OAAO,EAAU,YAAjB,CAA8B,IAAI,QAAQ,EAAY,EAAE,MAAM,IAAI,WAAW,EAAY,EAAU,cAAc,MAAM,IAAI,UAAU,EAAY,CAAC,EAAU,YAAY,GAAG,MAC/N,EAAS,UAAU,EAAY,EAAS,SAAS,IAAI,IAAM,EAAM,EAAU,cAAc,EAAE,EAAE,EAAS,QAAQ,EAAU,YAAY,EAAQ,SAAS,EAAM,KAAK,IAAI,KAAK,IAAI,EAAM,CAAC,GAAG,CAAC,IAAM,EAAK,EAAS,QAAQ,EAAY,EAAoB,EAAU,YAAY,OAAO,GAAG,EAAE,EAAY,SAAS,EAAK,EAC7S,EAAU,IAAM,EAAU,YAAY,QAAQ,EAAY,SAAS,CAAC,EAAW,EAAY,SAAS,EAAmB,EAAU,YAAY,SAAS,EAAY,SAAS,IAAG,EAAY,SAAS,IAAY,EAAQ,GAAG,EAAE,EAAE,CAAC,EAAO,QAAQ,sBAAsB,EAAK,EAA8C,MAA3C,GAAO,QAAQ,sBAAsB,EAAK,KAAW,CAAI,EAAO,SAAQ,qBAAqB,EAAO,QAAQ,GAAK,CAAC,EAAU,EAAU,EAAU,EAAS,EAAS,CAAC,CAClb,IAAM,EAAYD,GAAa,EAAQ,IAAW,CAAC,IAAM,EAAE,EAAQ,QAAQ,EAAK,MAAM,OAAO,EAAQ,MAAM,GAAG,CAAC,KAAK,EAAK,IAAI,CAAC,IAAM,EAAM,EAAE,EAAS,GAAG,EAAK,UACvJ,EAAG,EAAa,EAAM,EAAE,EAAK,SAAS,CAAO,EAAG,EAAa,EAAM,GAAG,EAAE,IAAI,EAAK,SAAS,CAAO,EAAG,EAAa,EAAM,IAAI,EAAE,GAAG,EAAK,SAAS,CAC9I,EAAE,EAAW,SAAS,EAAG,EAAK,UAAU,EAAW,UAAU,EAAQ,EAAE,EAAW,WAAW,EAAG,EAAK,UAAU,GAAG,EAAW,UAAU,EAAQ,EAAM,EAAW,MAAM,EAAE,EAAG,GAAG,EAAW,UAAU,EAAQ,EAAO,EAAW,SAAS,EAAG,GAAG,EAAW,UAAU,EAAQ,EAAK,EAAW,KAAK,EAAG,EAAE,EAAW,UAAU,EACxT,EAAQ,EAAW,YAAY,EAAG,GAAG,EAAW,UAAU,EAAQ,EAAQ,EAAW,YAAY,EAAG,GAAG,EAAW,UAAU,EAC5H,EAAS,EAAW,WAAW,EAAG,GAAG,EAAW,UAAU,EAAQ,EAAW,EAAW,WAAW,IAAI,EAAG,GAAG,EAAW,UAAU,IAAU,EAAW,EAAW,WAAW,IAAI,EAAG,GAAG,EAAW,UAAU,IAC5M,EAAW,EAAW,KAAK,KAAK,IAAI,EAAG,CAAC,EAAE,EAAW,UAAU,EACjE,EAAU,eAAe,EAAE,MAAM,EAAE,eAAe,EAAM,WAAW,EAAO,aAAa,EAAK,MAAS,EAAW,cAAa,EAAU,8BAA8B,EAAQ,eAAe,EAAQ,OAAO,KAC/M,IAAM,EAAQ,EAAE,CAAqO,OAAjO,EAAW,aAAY,EAAQ,KAAK,cAAc,EAAS,MAAM,CAAC,EAAQ,KAAK,YAAY,EAAW,IAAI,CAAC,EAAQ,KAAK,cAAc,EAAW,IAAI,EAAK,EAAW,MAAM,EAAW,IAAI,EAAQ,KAAK,QAAQ,EAAW,KAAK,CAAsB,EAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,eAAe,YAAU,WAAW,YAAY,OAAO,EAAQ,OAAO,EAAE,EAAQ,KAAK,IAAI,CAAC,IAAA,GAAU,eAAe,EAAW,YAAY,cAAc,IAAA,GAAU,mBAAmB,EAAW,YAAY,SAAS,IAAA,GAAU,CAAC,SAAS,IAAO,IAAI,OAAO,EAAK,CAAC,GAAG,EAAS,GAAG,IAAI,EAAG,EAAG,CAAC,EAAK,EAAW,EAAS,EAAK,EAAa,CAAC,CACtmB,EAAmB,IAAS,OAA8B,KAAlB,EAAO,WAAsB,EAAO,EAAU,EAAE,KAAK,KAAK,EAAY,EAAU,CAAC,EAAE,EAC8K,OAA5S,EAA8B,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,UAAU,EAAS,EAAO,SAAS,EAAE,SAAS,SAAS,gBAAgB,EAAQ,QAAQ,OAAO,WAAW,SAAS,QAAQ,GAAG,EAAO,SAAS,MAAM,UAAU,aAAa,GAAG,EAAS,MAAM,MAAM,EAAU,GAAG,EAAM,CAAC,SAAS,EAAY,CAAC,CAAsB,EAAK,MAAM,CAAC,IAAI,EAAa,iBAAiB,EAAa,GAAK,CAAC,iBAAiB,EAAa,GAAM,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,OAAO,UAAU,EAAS,EAAe,EAAE,SAAS,SAAS,gBAAgB,EAAQ,QAAQ,OAAO,WAAW,SAAS,OAAO,EAAU,cAAc,OAAiB,OAAV,UAAiB,QAAQ,GAAG,EAAe,MAAM,UAAU,aAAa,SAAS,WAAW,GAAG,EAAM,CAAC,SAAsB,EAAK,MAAM,CAAC,IAAI,EAAS,MAAM,CAAC,QAAQ,OAAO,WAAW,SAAS,UAAU,eAAe,EAAY,QAAQ,WAAW,GAAG,EAAS,MAAM,MAAM,EAAU,CAAC,SAAS,MAAM,KAAK,CAAC,OAAO,EAAO,CAAC,CAAC,KAAK,EAAE,IAAiB,EAAK,MAAM,CAAC,oBAAoB,GAAK,MAAM,CAAC,QAAQ,cAAc,WAAW,SAAS,aAAa,GAAG,EAAO,IAAI,IAAI,WAAW,EAAE,CAAC,SAAS,EAAY,EAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,gCAhC1jC,IAAiE,IAAiF,CAGpL,EAAW,GAAG,GAAG,OAAO,GAAI,UAAU,UAAU,EAAE,EAAE,MAAM,EAE1D,EAAc,GAAM,CAAC,GAAG,CAAC,EAAK,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,CAAC,IAAM,EAAG,OAAO,EAAK,YAAa,SAAS,OAAO,EAAK,WAAW,CAAC,KAAK,EAAK,WAAW,MAAM,CAAC,MAAM,CAAC,GAAG,EAAK,SAAS,EAAK,UAAU,EAAK,KAAK,WAAW,EAAG,mBAAmB,eAAe,CAAC,KAAK,OAAO,EAAK,UAAW,SAAS,EAAK,SAAS,SAAS,EAAK,SAAS,EAAE,GAAG,EAC1U,EAAc,GAAG,EAAE,KAAK,IAAI,KAAK,GAAG,EAAE,CAAC,GAAG,EAAQ,EAAW,GAAG,CAAC,IAAM,EAAG,EAAE,KAAK,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,EAAW,IAAE,IAAI,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK,EAAG,CAAC,GAAU,EAAU,GAAG,CAAC,IAAM,EAAG,OAAa,EAAG,KAA8G,OAAtG,EAAE,EAAE,EAAU,EAAG,EAAE,EAAK,EAAE,EAAE,EAAU,GAAI,GAAG,IAAI,GAAI,EAAE,IAAO,EAAE,IAAI,EAAU,GAAI,GAAG,KAAK,GAAI,EAAE,MAAa,GAAI,GAAG,MAAM,GAAI,EAAE,SA2BtV,EAA0B,aAAa,CAAC,KAAK,+CAA+C,UAAU,GAAM,WAAW,CAAC,UAAU,UAAU,gBAAgB,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,UAAU,CAAC,YAAY,GAAG,UAAU,OAAO,YAAY,WAAW,cAAc,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,IAAI,MAAM,EAAE,SAAS,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,SAAS,GAAK,WAAW,GAAK,MAAM,GAAK,SAAS,GAAM,KAAK,GAAK,YAAY,GAAM,WAAW,GAAM,KAAK,GAAM,CAAC,CAC/d,EAAoB,EAA0B,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,+CAA+C,gBAAgB,GAAK,YAAY,4CAA4C,CAAC,UAAU,CAAC,KAAK,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,CAAC,KAAK,CACzV,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,GAAK,gBAAgB,aAAa,aAAa,CAAC,SAAS,GAAG,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,KAAK,QAAQ,SAAS,CAAC,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,KAAK,SAAS,SAAS,CAAC,IAAI,CAAC,KAAK,EAAY,OAAO,MAAM,MAAM,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,YAAY,sCAAsC,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,mBAAmB,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,YAAY,uCAAuC,CAAC,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,YAAY,aAAa,OAAO,QAAQ,CAAC,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,UAAU,CAAC,wBAAwB,GAAK,CAAC,YAAY,CAAC,KAAK,EAAY,KAAK,MAAM,WAAW,aAAa,WAAW,QAAQ,CAAC,QAAQ,WAAW,UAAU,OAAO,CAAC,aAAa,CAAC,QAAQ,YAAY,UAAU,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,OAAO,GAAO,EAAM,cAAc,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,KAAK,SAAS,SAAS,CAAC,SAAS,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,aAAa,OAAO,QAAQ,CAAC,OAAO,UAAU,SAAS,SAAS,QAAQ,CAAC,aAAa,CAAC,OAAO,UAAU,SAAS,SAAS,QAAQ,CAAC,YAAY,qBAAqB,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,KAAK,YAAY,yBAAyB,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,KAAK,YAAY,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,YAAY,yBAAyB,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,KAAK,SAAS,SAAS,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,YAAY,qCAAqC,CAAC,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,WAAW,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,CAAC,WAAW,CAAC,KAAK,EAAY,QAAQ,MAAM,aAAa,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,CAAC,MAAM,CAAC,KAAK,EAAY,QAAQ,MAAM,QAAQ,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,CAAC,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,WAAW,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,CAAC,KAAK,CAAC,KAAK,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAK,aAAa,KAAK,cAAc,MAAM,CAAC,YAAY,CAAC,KAAK,EAAY,QAAQ,MAAM,iBAAiB,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,YAAY,8BAA8B,CAAC,WAAW,CAAC,KAAK,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,YAAY,+BAA+B,CAAC,KAAK,CAAC,KAAK,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,YAAY,uBAAuB,CAAC,CAAC,CAAC,CAAC"}