{"version":3,"file":"shared-lib.jOBULwJR.mjs","names":["fonts","css","className","mask","SVG","getProps","Icon","className","getProps","className","useRef","useState","mapRange","useMemo","clamp","text","useCallback","useRef","useState","TimeDate","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","useRef","React.useId","sharedStyle.className","className","RichText","sharedStyle.css","sharedStyle.fonts","React.useContext","React.useMemo","React.Fragment","ArrowUpRight","useRef","React.useId","sharedStyle.className","className","RichText","sharedStyle.css","sharedStyle.fonts","useState","useMemo","css","useState","useRef","useMemo","img","x","metadata","siteMetadata","metadataVersion","__FramerMetadata__","metadata","siteMetadata"],"sources":["https:/framerusercontent.com/modules/XO9IwGBSFphSS6q7hV3p/av5VM3o7bzCpfsKVS8aG/qdnNet2Mf.js","https:/framerusercontent.com/modules/1wRL7nUY2nK8KkYh4H64/8BmVTmn4cOnDi5T2l8Ci/EtnCYK_x2.js","https:/framerusercontent.com/modules/M3Kigmpss7JDpuIFrSme/WLDpzv07TKGu5WuVCgVm/jpVd3mKIZ.js","https:/framerusercontent.com/modules/x9N74fQKlr6QLCpcJIqg/MBzROdhIRkZU6bH01ovN/ScrambleAppear_Prod.js","https:/framerusercontent.com/modules/HYcHVPAbe8jLEeU7c4mp/QiycTxX7vdblEOi3o00G/Time.js","https:/framerusercontent.com/modules/1LPxFRic6d0xOJYzWxkz/nEZOKxPcvzxFlFog2WRv/RfjDljOUi.js","https:/framerusercontent.com/modules/cuhUePk3x43dpTOUNRoz/M11DzAVrpSDlqKzZTxb4/Qzx0I1VQM.js","https:/framerusercontent.com/modules/gB84IOr6A4Cxj3IJpwt6/I3BKFJwwyCGs6zczqunT/HVIlA2slm.js","https:/framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js","https:/framerusercontent.com/modules/quIQjXeusVKZRk3V2tVC/5hoALzyXyTieiXjYdtoX/InteractiveASCII_Prod.js","https:/framerusercontent.com/modules/Aq0YscWRRlDpe0cuDSFP/loWqe1tzbXs8vYpoblGH/siteMetadata.js","https:/framerusercontent.com/modules/dpR2RtWnE9VbCsrtRrdY/wfa7TTbDDeEqcQpxO1Ej/AL3ICiwgb.js","https:/framerusercontent.com/modules/lYuoVzHLv940nhhcqqjt/EtgNBerHBQlXEz3B3eXp/roSx9mu35.js"],"sourcesContent":["// Generated by Framer (569fd08)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Geist Mono-500\",\"GF;Geist Mono-700\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v4/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeEPKJ5W7ihaO_CS.woff2\",weight:\"500\"},{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v4/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeHaL55W7ihaO_CS.woff2\",weight:\"700\"}]}];export const css=['.framer-1hoaa .framer-styles-preset-jth0tn:not(.rich-text-wrapper), .framer-1hoaa .framer-styles-preset-jth0tn.rich-text-wrapper p { --framer-font-family: \"Geist Mono\", monospace; --framer-font-family-bold: \"Geist Mono\", monospace; --framer-font-open-type-features: normal; --framer-font-size: 16px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-letter-spacing: 0.08em; --framer-line-height: 16px; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, #ffffff); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: uppercase; }'];export const className=\"framer-1hoaa\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (569fd08)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 12.444 L 1.556 14 L 10.889 4.667 L 12.444 6.222 L 14 4.667 L 12.444 3.111 L 14 1.556 L 12.444 0 L 10.889 1.556 L 9.333 0 L 7.778 1.556 L 9.333 3.111 Z M 4.667 1.556 L 6.222 0 L 7.778 1.556 L 6.222 3.111 Z M 4.667 1.556 L 3.111 3.111 L 1.556 1.556 L 3.111 0 Z M 12.444 9.333 L 14 7.778 L 12.444 6.222 L 10.889 7.778 Z M 12.444 9.333 L 10.889 10.889 L 12.444 12.444 L 14 10.889 Z\" fill=\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\" height=\"13.999988668266852px\" id=\"JwCLAFPgi\" width=\"14.000000246513691px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({fill,height,id,width,...props})=>{return{...props,oxpl8623F:fill??props.oxpl8623F??\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,oxpl8623F,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-4aczR\",className),layoutId:layoutId,ref:ref,style:{...style}});});const css=[`.framer-4aczR { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, #ffffff); mask: ${mask}; width: 14px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 14\n * @framerIntrinsicHeight 14\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"oxpl8623F\":\"fill\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Arrow up right\",\"color\":{\"type\":\"static\",\"value\":\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\"},\"set\":{\"localId\":\"vectorSet/UxtzdHRBn\",\"id\":\"UxtzdHRBn\",\"moduleId\":\"w5pX7SsyJ9AzjWQm7bwh\"}}\n */const Icon=withCSS(Component,css,\"framer-4aczR\");Icon.displayName=\"Arrow up right\";export default Icon;addPropertyControls(Icon,{oxpl8623F:{defaultValue:'var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255)) /* {\"name\":\"White\"} */',hidden:true,title:\"Fill\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"oxpl8623F\\\":\\\"fill\\\"}\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerImmutableVariables\":\"true\",\"framerVector\":\"{\\\"name\\\":\\\"Arrow up right\\\",\\\"color\\\":{\\\"type\\\":\\\"static\\\",\\\"value\\\":\\\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/UxtzdHRBn\\\",\\\"id\\\":\\\"UxtzdHRBn\\\",\\\"moduleId\\\":\\\"w5pX7SsyJ9AzjWQm7bwh\\\"}}\",\"framerIntrinsicWidth\":\"14\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"14\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (beb597f)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 6 0 L 8 0 L 8 2 L 6 2 Z M 6 3 L 8 3 L 8 5 L 6 5 Z M 0 6 L 2 6 L 2 8 L 0 8 Z M 3 6 L 5 6 L 5 8 L 3 8 Z M 6 6 L 8 6 L 8 8 L 6 8 Z M 9 6 L 11 6 L 11 8 L 9 8 Z M 12 6 L 14 6 L 14 8 L 12 8 Z M 6 9 L 8 9 L 8 11 L 6 11 Z M 6 12 L 8 12 L 8 14 L 6 14 Z\" fill=\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\" height=\"14px\" id=\"sZTZlmMxe\" width=\"14px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({fill,height,id,width,...props})=>{return{...props,oxpl8623F:fill??props.oxpl8623F??\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,oxpl8623F,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-XegAV\",className),layoutId:layoutId,ref:ref,style:{...style}});});const css=[`.framer-XegAV { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, #ffffff); mask: ${mask}; width: 14px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 14\n * @framerIntrinsicHeight 14\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"oxpl8623F\":\"fill\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Bullet\",\"color\":{\"type\":\"static\",\"value\":\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\"},\"set\":{\"localId\":\"vectorSet/UxtzdHRBn\",\"id\":\"UxtzdHRBn\",\"moduleId\":\"w5pX7SsyJ9AzjWQm7bwh\"}}\n */const Icon=withCSS(Component,css,\"framer-XegAV\");Icon.displayName=\"Bullet\";export default Icon;addPropertyControls(Icon,{oxpl8623F:{defaultValue:'var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255)) /* {\"name\":\"White\"} */',hidden:true,title:\"Fill\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"14\",\"framerIntrinsicHeight\":\"14\",\"framerContractVersion\":\"1\",\"framerVector\":\"{\\\"name\\\":\\\"Bullet\\\",\\\"color\\\":{\\\"type\\\":\\\"static\\\",\\\"value\\\":\\\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/UxtzdHRBn\\\",\\\"id\\\":\\\"UxtzdHRBn\\\",\\\"moduleId\\\":\\\"w5pX7SsyJ9AzjWQm7bwh\\\"}}\",\"framerVariables\":\"{\\\"oxpl8623F\\\":\\\"fill\\\"}\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerImmutableVariables\":\"true\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useState,useRef,useMemo}from\"react\";import{useInView,animate}from\"framer-motion\";const HIDDEN=0;const SCRAMBLED=1;const REVEALED=2;/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n */export default function ScrambleAppear(props){const{from,scrambledLetters,text,scrambledColor,animation,speed}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const Tag=props.tag;const ref=useRef(null);const encryptedText=useRef(randomString(props));const[progress,setProgress]=useState(0);const[currentAnimation,setCurrentAnimation]=useState(null);const intervalRef=useRef(null);const isInView=useInView(ref,{once:!props.animation.replay,amount:\"some\"});const characterDelay=mapRange(speed,1,100,.2,.002)// seconds per character\n;const shuffledIndices=useMemo(()=>{if(from===\"random\"){const indices=Array.from({length:text.length},(_,i)=>i);return indices.sort(()=>Math.random()-.5);}return[];},[text,from]);const runAnimation=()=>{if(!isCanvas){if(currentAnimation){currentAnimation.stop();}if(intervalRef.current){clearInterval(intervalRef.current);}// Add timeout for delay\nsetTimeout(()=>{intervalRef.current=setInterval(()=>{encryptedText.current=randomString(props);},characterDelay*1e3);setCurrentAnimation(animate(0,1,{type:\"ease\",ease:\"linear\",duration:characterDelay*(text.length+scrambledLetters),onUpdate:setProgress,onComplete:()=>{if(intervalRef.current){clearInterval(intervalRef.current);}}}));},animation.delay*1e3);}};useEffect(()=>{if(animation.trigger==\"appear\"){runAnimation();}return()=>{if(intervalRef.current){clearInterval(intervalRef.current);}};},[]);useEffect(()=>{if(animation.trigger==\"layerInView\"){if(isInView){runAnimation();}else{if(currentAnimation){currentAnimation.stop();setProgress(0);if(intervalRef.current){clearInterval(intervalRef.current);}}}}},[isInView]);let segments=[];switch(from){case\"left\":{const leftCutoff=mapRange(progress,0,1,-scrambledLetters,text.length);const rightCutoff=mapRange(progress,0,1,0,text.length+scrambledLetters);segments.push([text.substring(0,clamp(leftCutoff,0,text.length)),REVEALED],[encryptedText.current.substring(clamp(leftCutoff,0,text.length),clamp(rightCutoff,0,text.length)),SCRAMBLED],[text.substring(clamp(rightCutoff,0,text.length)),HIDDEN]);break;}case\"center\":{const center=Math.ceil(text.length/2);const letters=Math.max(Math.floor(scrambledLetters/2),1);const leftCutoff=mapRange(progress,0,1,center,-letters);const rightCutoff=mapRange(progress,0,1,center+letters,0);segments.push([text.substring(0,clamp(leftCutoff,0,text.length)),HIDDEN],[encryptedText.current.substring(clamp(leftCutoff,0,center),clamp(rightCutoff,0,center)),SCRAMBLED],[text.substring(clamp(rightCutoff,0,center),clamp(text.length-rightCutoff,center,text.length)),REVEALED],[encryptedText.current.substring(clamp(text.length-leftCutoff,center,text.length),clamp(text.length-rightCutoff,center,text.length)),SCRAMBLED],[text.substring(clamp(text.length-leftCutoff,0,text.length),text.length),HIDDEN]);break;}case\"right\":{const leftCutoff=mapRange(progress,0,1,text.length,-scrambledLetters);const rightCutoff=mapRange(progress,0,1,text.length+scrambledLetters,0);segments.push([text.substring(0,clamp(leftCutoff,0,text.length)),HIDDEN],[encryptedText.current.substring(clamp(leftCutoff,0,text.length),clamp(rightCutoff,0,text.length)),SCRAMBLED],[text.substring(clamp(rightCutoff,0,text.length),text.length),REVEALED]);break;}case\"random\":{// Show all hidden characters if progress is 0 (during delay)\nif(progress===0){segments.push([text,HIDDEN]);}else if(progress>=1){segments.push([text,REVEALED]);}else{// Calculate two thresholds for each character based on its position in shuffledIndices\nfor(let i=0;i<text.length;i++){const indexInSequence=shuffledIndices.indexOf(i);// Adjust the windows to maintain consistent number of scrambled letters\nconst scrambleWindow=scrambledLetters/text.length// Size of the \"window\" of scrambled letters\n;const startScrambleAt=indexInSequence/text.length*(1-scrambleWindow)// When this character starts scrambling\n;const startRevealAt=startScrambleAt+scrambleWindow// When this character starts revealing\n;if(progress>=startRevealAt){// Past reveal threshold - show actual character\nsegments.push([text[i],REVEALED]);}else if(progress>=startScrambleAt){// Between scramble and reveal threshold - show scrambled\nsegments.push([encryptedText.current[i],SCRAMBLED]);}else{// Before scramble threshold - show hidden\nsegments.push([text[i],HIDDEN]);}}}break;}}return /*#__PURE__*/_jsx(Tag,{ref:ref,style:{color:props.color,userSelect:\"none\",pointerEvents:\"none\",margin:0,whiteSpace:props.style?.width?undefined:\"nowrap\",...props.font,...props.style},children:isCanvas?text:consolidateSegments(segments).map(([text,state],index)=>{switch(state){case HIDDEN:return /*#__PURE__*/_jsx(\"span\",{style:{opacity:0},children:text},index);case SCRAMBLED:return scrambledColor?/*#__PURE__*/_jsx(\"span\",{style:{color:scrambledColor},children:text},index):text;case REVEALED:return text;}})});}ScrambleAppear.displayName=\"Scramble Appear\";addPropertyControls(ScrambleAppear,{text:{type:ControlType.String,defaultValue:\"Learn Framer With Framer University\",displayTextArea:true},characters:{type:ControlType.String,defaultValue:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+[]{}|;:,.<>?~\",displayTextArea:true},from:{type:ControlType.Enum,defaultValue:\"left\",options:[\"left\",\"center\",\"right\",\"random\"],optionTitles:[\"Left\",\"Center\",\"Right\",\"Random\"]},font:{type:\"font\",controls:\"extended\",defaultFontType:\"monospace\",defaultValue:{fontSize:24,lineHeight:1.4}},color:{type:ControlType.Color,defaultValue:\"#000\"},scrambledColor:{type:ControlType.Color,optional:true,title:\"Scrambled\"},speed:{type:ControlType.Number,defaultValue:75,min:1,max:100,step:1,unit:\"%\"},scrambledLetters:{type:ControlType.Number,defaultValue:10,min:1,step:1,displayStepper:true,title:\"Letters\"},animation:{type:ControlType.Object,icon:\"effect\",controls:{trigger:{type:ControlType.Enum,defaultValue:\"layerInView\",options:[\"appear\",\"layerInView\"],optionTitles:[\"Appear\",\"Layer in View\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},replay:{type:ControlType.Boolean,defaultValue:true,hidden:props=>props.trigger!==\"layerInView\"},delay:{type:ControlType.Number,defaultValue:0,min:0,step:.01}}},options:{type:ControlType.Object,buttonTitle:\"Options\",controls:{matchCase:{type:ControlType.Boolean,defaultValue:true},keepSpaces:{type:ControlType.Boolean,defaultValue:false,title:\"Spaces\",enabledTitle:\"Keep\",disabledTitle:\"Replace\",description:\"\"}}},userSelect:{type:ControlType.Boolean,defaultValue:true},tag:{type:ControlType.Enum,title:\"Tag\",defaultValue:\"p\",displaySegmentedControl:true,options:[\"h1\",\"h2\",\"h3\",\"p\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"P\"],description:\"More components at [Framer University](https://frameruni.link/cc).\"}});const randomString=props=>{const length=props.text.length;const characters=props.characters;const originalText=props.text;const matchCase=props.options.matchCase;const keepSpaces=props.options.keepSpaces;if(length<=0){return\"\";}let result=\"\";let lastChar=\"\";for(let i=0;i<length;i++){const originalChar=originalText[i];// Preserve spaces and tabs if keepSpaces is true\nif(keepSpaces&&(originalChar===\" \"||originalChar===\"\t\")){result+=originalChar;continue;}let newChar;do{newChar=characters[Math.floor(Math.random()*characters.length)];// Match case if matchCase is true\nif(matchCase&&originalChar){newChar=originalChar===originalChar.toUpperCase()?newChar.toUpperCase():newChar.toLowerCase();}}while(newChar===lastChar&&characters.length>=8)result+=newChar;lastChar=newChar;}return result;};function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}function clamp(value,min,max){return Math.max(min,Math.min(value,max));}function consolidateSegments(segments){return segments.filter(([text])=>text.length>0).reduce((acc,curr)=>{// If array is empty or last segment has different state, add new segment\nif(acc.length===0||acc[acc.length-1][1]!==curr[1]){acc.push(curr);}else{// Combine text with the last segment that has the same state\nacc[acc.length-1][0]+=curr[0];}return acc;},[]);}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScrambleAppear\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicHeight\":\"200\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"*\",\"framerIntrinsicWidth\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrambleAppear_Prod.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,useLocaleCode}from\"framer\";import{startTransition,useCallback,useEffect,useRef,useState}from\"react\";const fontStack=`\"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;function formatTimeOrDate(outputType,{showYear,showMonth,showWeekday,showMinutes,showSeconds},timeFormat,monthFormat,localCode){const date=new Date;const onlyYearIsShown=!showWeekday&&!showMonth&&showYear;switch(outputType){case\"date\":return new Intl.DateTimeFormat(localCode,{weekday:showWeekday?\"long\":undefined,day:onlyYearIsShown?undefined:\"numeric\",month:showMonth?monthFormat:undefined,year:showYear?\"numeric\":undefined}).format(date);case\"time\":return new Intl.DateTimeFormat(localCode,{hour:\"numeric\",minute:showMinutes?\"numeric\":undefined,second:showSeconds&&showMinutes?\"numeric\":undefined,hour12:timeFormat===\"12h\"}).format(date);default:return new Intl.DateTimeFormat(localCode).format(date);}}const defaultProps={height:20,width:140,outputType:\"time\",color:\"#999\",timeFormat:\"24h\",showYear:true,showMonth:true,showWeekday:true,showMinutes:true,showSeconds:true,monthFormat:\"long\",alignment:\"center\"};/**\n * TIME AND DATE\n * FORKED FROM PROTOTYPING\n *\n * @framerIntrinsicWidth 140\n * @framerIntrinsicHeight 20\n *\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export function Time(props){const mergedProps={...defaultProps,...props};const{outputType,timeFormat,showYear,showMonth,showWeekday,// showHours,\nshowMinutes,showSeconds,monthFormat,color,font,tabularFont}=mergedProps;const localCode=useLocaleCode();const getTextContent=useCallback(()=>formatTimeOrDate(outputType,{showYear,showMonth,showWeekday,// showHours,\n    showMinutes,showSeconds},timeFormat,monthFormat,localCode),[localCode,monthFormat,outputType,showMinutes,showMonth,showSeconds,showWeekday,showYear,timeFormat]);const timeoutRef=useRef()// FIXME: With React 19, we can remove this and return a cleanup from the ref callback\n;const updateCountdown=useCallback(node=>{if(node===null){// React calls w/ `null` on unmount or if the ref function changes.\nclearTimeout(timeoutRef.current);return;}let prev;const tick=()=>{const date=new Date;const next=new Date().setSeconds(date.getSeconds()+1,0)-+date;timeoutRef.current=setTimeout(tick,next);const textContent=getTextContent();if(prev!==textContent){node.textContent=textContent;prev=textContent;}};tick();},[getTextContent]);const[visible,setIsVisible]=useState(false);const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{startTransition(()=>setIsVisible(true));// Don’t want real time on Canvas\nif(isCanvas)return;},[isCanvas]);return /*#__PURE__*/_jsx(\"p\",{suppressHydrationWarning:true,style:{margin:0,padding:0,color,fontFamily:fontStack,fontWeight:500,fontSize:16,lineHeight:1,visibility:visible?\"visible\":\"hidden\",...font,fontVariantNumeric:tabularFont?\"tabular-nums\":\"normal\",whiteSpace:\"nowrap\"},ref:isCanvas?undefined:updateCountdown,children:getTextContent()});}Time.displayName=\"Time & Date\";addPropertyControls(Time,{outputType:{title:\"Type\",type:ControlType.Enum,displaySegmentedControl:true,options:[\"date\",\"time\"],optionTitles:[\"Date\",\"Time\"],defaultValue:defaultProps.outputType},showWeekday:{title:\"Day\",type:ControlType.Boolean,enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:defaultProps.showWeekday,hidden:props=>props.outputType!==\"date\"},showMonth:{title:\"Month\",type:ControlType.Boolean,enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:defaultProps.showMonth,hidden:props=>props.outputType!==\"date\"},monthFormat:{title:\"Format\",type:ControlType.Enum,options:[\"short\",\"long\",\"numeric\"],optionTitles:[\"Short\",\"Long\",\"Numeric\"],defaultValue:defaultProps.monthFormat,hidden:props=>props.outputType!==\"date\"||!props.showMonth},showYear:{title:\"Year\",type:ControlType.Boolean,enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:defaultProps.showYear,hidden:props=>props.outputType!==\"date\"},timeFormat:{title:\"Format\",type:ControlType.Enum,options:[\"12h\",\"24h\"],optionTitles:[\"12h\",\"24h\"],displaySegmentedControl:true,defaultValue:defaultProps.timeFormat,hidden:props=>props.outputType!==\"time\"},// showHours: {\n//     title: \"Hours\",\n//     type: ControlType.Boolean,\n//     enabledTitle: \"Show\",\n//     disabledTitle: \"Hide\",\n//     defaultValue: defaultProps.showHours,\n//     hidden: (props) => props.outputType !== \"time\",\n// },\nshowMinutes:{title:\"Minutes\",type:ControlType.Boolean,enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:defaultProps.showMinutes,hidden:props=>props.outputType!==\"time\"},showSeconds:{title:\"Seconds\",type:ControlType.Boolean,enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:defaultProps.showSeconds,hidden:props=>props.outputType!==\"time\"||!props.showMinutes},font:{type:ControlType.Font,controls:\"extended\"},tabularFont:{title:\"Tabular\",type:ControlType.Boolean,defaultValue:true},color:{type:ControlType.Color,defaultValue:defaultProps.color}});\nexport const __FramerMetadata__ = {\"exports\":{\"Time\":{\"type\":\"reactComponent\",\"name\":\"Time\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"20\",\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicWidth\":\"140\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Time.map","// Generated by Framer (656a448)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Geist Mono-regular\",\"GF;Geist Mono-700\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v4/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeE9KJ5W7ihaO_CS.woff2\",weight:\"400\"},{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v4/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeHaL55W7ihaO_CS.woff2\",weight:\"700\"}]}];export const css=['.framer-zhl9a .framer-styles-preset-1rcsw05:not(.rich-text-wrapper), .framer-zhl9a .framer-styles-preset-1rcsw05.rich-text-wrapper p { --framer-font-family: \"Geist Mono\", monospace; --framer-font-family-bold: \"Geist Mono\", monospace; --framer-font-open-type-features: normal; --framer-font-size: 16px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-letter-spacing: -0.3px; --framer-line-height: 21px; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-f2637060-e8bb-4518-bd3b-3b8a8d59e388, rgba(255, 255, 255, 0.6)); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; --framer-text-wrap: balance; }'];export const className=\"framer-zhl9a\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (bf89308)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,cx,getFonts,getFontsFromSharedStyle,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{Time as TimeDate}from\"https://framerusercontent.com/modules/HYcHVPAbe8jLEeU7c4mp/QiycTxX7vdblEOi3o00G/Time.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/1LPxFRic6d0xOJYzWxkz/nEZOKxPcvzxFlFog2WRv/RfjDljOUi.js\";const TimeDateFonts=getFonts(TimeDate);const serializationHash=\"framer-eIinD\";const variantClassNames={ttqUPmDVR:\"framer-v-1i2d1zb\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"ttqUPmDVR\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1i2d1zb\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"ttqUPmDVR\",ref:refBinding,style:{...style},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1rcsw05\",\"data-styles-preset\":\"RfjDljOUi\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255)))\"},children:\"Istanbul\"})}),className:\"framer-152fg4y\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"q_wdIxxCB\",style:{\"--extracted-r6o4lv\":\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",opacity:.5},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-45r1b7-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"fPWeMOO2Q-container\",nodeId:\"fPWeMOO2Q\",rendersWithMotion:true,scopeId:\"Qzx0I1VQM\",style:{opacity:.5},children:/*#__PURE__*/_jsx(TimeDate,{color:\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\",font:{fontFamily:'\"DM Mono\", monospace',fontSize:\"16px\",fontStyle:\"normal\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"22px\"},height:\"100%\",id:\"fPWeMOO2Q\",layoutId:\"fPWeMOO2Q\",monthFormat:\"long\",outputType:\"time\",showMinutes:true,showMonth:true,showSeconds:true,showWeekday:true,showYear:true,tabularFont:true,timeFormat:\"12h\",width:\"100%\"})})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-eIinD.framer-oxq4hg, .framer-eIinD .framer-oxq4hg { display: block; }\",\".framer-eIinD.framer-1i2d1zb { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: min-content; }\",\".framer-eIinD .framer-152fg4y { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-eIinD .framer-45r1b7-container { flex: none; height: auto; position: relative; width: auto; z-index: 1; }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 22\n * @framerIntrinsicWidth 196\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerQzx0I1VQM=withCSS(Component,css,\"framer-eIinD\");export default FramerQzx0I1VQM;FramerQzx0I1VQM.displayName=\"Location\";FramerQzx0I1VQM.defaultProps={height:22,width:196};addFonts(FramerQzx0I1VQM,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{cssFamilyName:\"DM Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"DM Mono\",url:\"https://fonts.gstatic.com/s/dmmono/v16/aFTU7PB1QTsUX8KYhhiaBYyMcKw.woff2\",weight:\"400\"}]},...TimeDateFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerQzx0I1VQM\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"196\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicHeight\":\"22\",\"framerColorSyntax\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerAutoSizeImages\":\"true\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Qzx0I1VQM.map","// Generated by Framer (656a448)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,Instance,Link,RichText,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import ScrambleAppear from\"https://framerusercontent.com/modules/x9N74fQKlr6QLCpcJIqg/MBzROdhIRkZU6bH01ovN/ScrambleAppear_Prod.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/XO9IwGBSFphSS6q7hV3p/av5VM3o7bzCpfsKVS8aG/qdnNet2Mf.js\";import ArrowUpRight from\"https://framerusercontent.com/modules/1wRL7nUY2nK8KkYh4H64/8BmVTmn4cOnDi5T2l8Ci/EtnCYK_x2.js\";const ScrambleAppearFonts=getFonts(ScrambleAppear);const enabledGestures={BvtOQLbGl:{hover:true}};const serializationHash=\"framer-bIU4x\";const variantClassNames={BvtOQLbGl:\"framer-v-10g6rg4\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const g7ZzgJVKB=undefined;const XrL0Pi1AU=undefined;const tBML8MHK7=undefined;const AFqCjNv1n=undefined;const eCaWf2DBd=undefined;const wqkSuBkb0=undefined;const transition1={delay:0,duration:.4,ease:[.59,.48,.31,.46],type:\"tween\"};const transformTemplate1=(_,t)=>`translate(-50%, -50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({click,color,colorOnHover,height,icon,id,link,title,width,...props})=>{return{...props,AFqCjNv1n:color??props.AFqCjNv1n??\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\",eCaWf2DBd:title??props.eCaWf2DBd??\"DOWNLOAD CV\",g7ZzgJVKB:click??props.g7ZzgJVKB,tBML8MHK7:icon??props.tBML8MHK7??ArrowUpRight,wqkSuBkb0:colorOnHover??props.wqkSuBkb0??\"var(--token-f2637060-e8bb-4518-bd3b-3b8a8d59e388, rgba(255, 255, 255, 0.6))\",XrL0Pi1AU:link??props.XrL0Pi1AU};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,eCaWf2DBd,tBML8MHK7,AFqCjNv1n,wqkSuBkb0,XrL0Pi1AU,g7ZzgJVKB,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"BvtOQLbGl\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1ygq1l7=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(g7ZzgJVKB){const res=await g7ZzgJVKB(...args);if(res===false)return false;}});const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(gestureVariant===\"BvtOQLbGl-hover\")return false;return true;};const isDisplayed1=()=>{if(gestureVariant===\"BvtOQLbGl-hover\")return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:XrL0Pi1AU,motionChild:true,nodeId:\"BvtOQLbGl\",openInNewTab:false,scopeId:\"HVIlA2slm\",children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-10g6rg4\",className,classNames)} framer-aux0mb`,\"data-framer-name\":\"Variant 1\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"BvtOQLbGl\",onTap:onTap1ygq1l7,ref:refBinding,style:{...style},...addPropertyOverrides({\"BvtOQLbGl-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ewbnft\",\"data-framer-name\":\"Icon stack\",layoutDependency:layoutDependency,layoutId:\"Dom0mfyvP\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-oywm6o\",\"data-framer-name\":\"Icon frame\",layoutDependency:layoutDependency,layoutId:\"Ux3roAgeu\",style:{opacity:.4},children:/*#__PURE__*/_jsx(Instance,{animated:true,className:\"framer-7gymfw\",Component:tBML8MHK7,layoutDependency:layoutDependency,layoutId:\"Ly9kWLDrf\",style:{\"--iak8q3\":\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\"},transformTemplate:transformTemplate1})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-xzbat6\",\"data-framer-name\":\"Icon frame\",layoutDependency:layoutDependency,layoutId:\"k0ljfO8qD\",children:/*#__PURE__*/_jsx(Instance,{animated:true,className:\"framer-siyj84\",Component:tBML8MHK7,layoutDependency:layoutDependency,layoutId:\"C6jBKG5j0\",style:{\"--iak8q3\":\"var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255))\"},transformTemplate:transformTemplate1})})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-148sj8g\",\"data-framer-name\":\"Text stack\",layoutDependency:layoutDependency,layoutId:\"k2IRlx_Sp\",children:[isDisplayed()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-jth0tn\",\"data-styles-preset\":\"qdnNet2Mf\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--variable-reference-AFqCjNv1n-HVIlA2slm))\"},children:\"Download CV\"})}),className:\"framer-1ahd3jh\",\"data-framer-name\":\"Download CV\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"nFqwpoBM8\",style:{\"--extracted-r6o4lv\":\"var(--variable-reference-AFqCjNv1n-HVIlA2slm)\",\"--framer-paragraph-spacing\":\"0px\",\"--variable-reference-AFqCjNv1n-HVIlA2slm\":AFqCjNv1n},text:eCaWf2DBd,verticalAlignment:\"top\",withExternalLayout:true}),isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-4zf71z-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"pono5jZ31-container\",nodeId:\"pono5jZ31\",rendersWithMotion:true,scopeId:\"HVIlA2slm\",children:/*#__PURE__*/_jsx(ScrambleAppear,{animation:{delay:.03,replay:false,trigger:\"layerInView\"},characters:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+[]{}|;:,.<>?~\",color:wqkSuBkb0,font:{fontFamily:'\"Geist Mono\", monospace',fontSize:\"16px\",fontStyle:\"normal\",fontWeight:500,letterSpacing:\"0.08em\",lineHeight:\"16px\",textAlign:\"center\"},from:\"left\",height:\"100%\",id:\"pono5jZ31\",layoutId:\"pono5jZ31\",options:{keepSpaces:true,matchCase:false},scrambledColor:wqkSuBkb0,scrambledLetters:4,speed:83,tag:\"p\",text:eCaWf2DBd,userSelect:true,width:\"100%\"})})})]})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-bIU4x.framer-aux0mb, .framer-bIU4x .framer-aux0mb { display: block; }\",\".framer-bIU4x.framer-10g6rg4 { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-bIU4x .framer-1ewbnft { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: 24px; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: min-content; }\",\".framer-bIU4x .framer-oywm6o, .framer-bIU4x .framer-xzbat6 { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 24px); overflow: visible; position: relative; width: 24px; }\",\".framer-bIU4x .framer-7gymfw, .framer-bIU4x .framer-siyj84 { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 16px); left: 50%; position: absolute; top: 50%; width: 16px; }\",\".framer-bIU4x .framer-148sj8g { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-bIU4x .framer-1ahd3jh { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-bIU4x .framer-4zf71z-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-bIU4x.framer-v-10g6rg4.hover .framer-1ewbnft { justify-content: flex-end; }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 24\n * @framerIntrinsicWidth 160\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"OakW4nM7l\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"eCaWf2DBd\":\"title\",\"tBML8MHK7\":\"icon\",\"AFqCjNv1n\":\"color\",\"wqkSuBkb0\":\"colorOnHover\",\"XrL0Pi1AU\":\"link\",\"g7ZzgJVKB\":\"click\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerVectorSets [\"w5pX7SsyJ9AzjWQm7bwh\"]\n */const FramerHVIlA2slm=withCSS(Component,css,\"framer-bIU4x\");export default FramerHVIlA2slm;FramerHVIlA2slm.displayName=\"Button\";FramerHVIlA2slm.defaultProps={height:24,width:160};addPropertyControls(FramerHVIlA2slm,{eCaWf2DBd:{defaultValue:\"DOWNLOAD CV\",displayTextArea:false,title:\"Title\",type:ControlType.String},tBML8MHK7:{defaultValue:{identifier:\"local-module:vector/EtnCYK_x2:default\",moduleId:\"1wRL7nUY2nK8KkYh4H64\"},setModuleId:\"w5pX7SsyJ9AzjWQm7bwh\",title:\"Icon\",type:ControlType.VectorSetItem},AFqCjNv1n:{defaultValue:'var(--token-f9a644db-4c7c-46a3-b6e5-9b6a32526608, rgb(255, 255, 255)) /* {\"name\":\"White\"} */',title:\"Color\",type:ControlType.Color},wqkSuBkb0:{defaultValue:'var(--token-f2637060-e8bb-4518-bd3b-3b8a8d59e388, rgba(255, 255, 255, 0.6)) /* {\"name\":\"Grey\"} */',title:\"Color on hover\",type:ControlType.Color},XrL0Pi1AU:{title:\"Link\",type:ControlType.Link},g7ZzgJVKB:{title:\"Click\",type:ControlType.EventHandler}});addFonts(FramerHVIlA2slm,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v4/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeEPKJ5W7ihaO_CS.woff2\",weight:\"500\"}]},...ScrambleAppearFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerHVIlA2slm\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"eCaWf2DBd\\\":\\\"title\\\",\\\"tBML8MHK7\\\":\\\"icon\\\",\\\"AFqCjNv1n\\\":\\\"color\\\",\\\"wqkSuBkb0\\\":\\\"colorOnHover\\\",\\\"XrL0Pi1AU\\\":\\\"link\\\",\\\"g7ZzgJVKB\\\":\\\"click\\\"}\",\"framerAutoSizeImages\":\"true\",\"framerVectorSets\":\"[\\\"w5pX7SsyJ9AzjWQm7bwh\\\"]\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"160\",\"framerIntrinsicHeight\":\"24\",\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"OakW4nM7l\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerColorSyntax\":\"true\",\"framerContractVersion\":\"1\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HVIlA2slm.map","import{RenderTarget}from\"framer\";import{useEffect,useState,useMemo}from\"react\";const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;export function useColors(...colors){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const darkMode=useDarkMode();const[styleValues,setStyleValues]=useState(()=>extractStyleValues(colors.map(extractCSSVariableName)));useEffect(()=>{if(!isCanvas)return;const div=document.body.querySelector(\"main > div\");if(!div)return;const observer=new MutationObserver(()=>{setStyleValues(extractStyleValues(colors.map(extractCSSVariableName)));});observer.observe(div,{attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},colors);const variableNames=useMemo(()=>colors.map(extractCSSVariableName),[colors]);if(isOptimizing){return colors.map(color=>extractDefaultValue(color));}let values=[];for(let i=0;i<colors.length;i++){const color=colors[i];// Return original value if not a string\nif(typeof color!==\"string\"){values.push(color);continue;}const variableName=variableNames[i];const colorValues=styleValues[variableName];if(variableName&&colorValues){values.push(darkMode?colorValues.dark||colorValues.light||color:colorValues.light||color);}else{values.push(color);}}return values;}////////////////////\nfunction extractStyleValues(variableNames){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const result={};let lightVars={};let darkVars={};if(isCanvas&&typeof document!==\"undefined\"){const div=document.body.querySelector(\"main > div\");if(div){const style=div.getAttribute(\"style\");if(style){const vars=parseVariables(style);lightVars=vars;darkVars=vars;}}}else{const{light,dark}=extractColorStyles();lightVars=parseVariables(light);darkVars=parseVariables(dark);}// Include all variables\nconst allVarNames=new Set([...Object.keys(lightVars),...Object.keys(darkVars)]);allVarNames.forEach(varName=>{result[varName]={light:lightVars[varName]||\"\",dark:darkVars[varName]||\"\"};});return result;}function extractColorStyles(){let lightSection=\"\";let darkSection=\"\";if(typeof document!==\"undefined\"){const styles=document.head.querySelectorAll(\"style[data-framer-css], style[data-framer-css-ssr], style[data-framer-css-ssr-minified]\");for(const style of styles){const rules=style.sheet?.cssRules;if(!rules)continue;const styleRules=[];for(const rule of rules){if(rule instanceof CSSStyleRule){styleRules.push([rule,false]);}else if(rule instanceof CSSMediaRule){if(rule.conditionText===\"(prefers-color-scheme: dark)\"){for(const subrule of rule.cssRules){if(subrule instanceof CSSStyleRule){styleRules.push([subrule,true]);}}}}}for(const[rule,isDarkMedia]of styleRules){const css=rule.cssText;const hasVars=css.includes(\"--token-\");if(!hasVars)continue;const isDark=isDarkMedia?rule.selectorText===\"body\":rule.selectorText==='body[data-framer-theme=\"dark\"]';const isLight=!isDarkMedia&&rule.selectorText===\"body\";if(!isDark&&!isLight)continue;if(isDark){if(!darkSection){darkSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}else{if(!lightSection){lightSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}if(darkSection&&lightSection)break;}if(darkSection&&lightSection)break;}}return{light:lightSection,dark:darkSection};}export function useDarkMode(){const isPreview=typeof window!==\"undefined\"&&window.location.origin.endsWith(\"framercanvas.com\");const[isDarkMode,setIsDarkMode]=useState(()=>{if(typeof window===\"undefined\"){return false;}else if(isPreview&&typeof document!==\"undefined\"){return document.body.getAttribute(\"data-framer-theme\")===\"dark\";}else{return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;}});useEffect(()=>{if(isPreview){const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.attributeName===\"data-framer-theme\"){const theme=document.body.getAttribute(\"data-framer-theme\");setIsDarkMode(theme===\"dark\");}});});observer.observe(document.body,{attributes:true,attributeFilter:[\"data-framer-theme\"]});return()=>observer.disconnect();}else{const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{setIsDarkMode(e.matches);};// Update initial value\nif(mediaQuery.matches!==isDarkMode){setIsDarkMode(mediaQuery.matches);}mediaQuery.addListener(handleChange);return()=>mediaQuery.removeListener(handleChange);}},[isPreview]);return isDarkMode;}function extractCSSVariableName(cssString){if(!cssString||!cssString.startsWith(\"var(\")){return\"\";}const match=cssVariableRegex.exec(cssString);if(match){const variableName=match[1];return variableName||\"\";}return\"\";}function parseVariables(section){const vars={};if(!section)return vars;const declarations=section.split(\";\").filter(Boolean);declarations.forEach(declaration=>{const[name,value]=declaration.split(\":\").map(s=>s.trim());if(name&&value){vars[name]=value;}});return vars;}function extractDefaultValue(cssVar){// Check if the string starts with \"var(\"\nif(!cssVar||!cssVar.startsWith(\"var(\")){return cssVar// Return the original value if it doesn't start with \"var(\"\n;}// Remove \"var(\" from the beginning and \")\" from the end\nconst content=cssVar.slice(4,-1);// Split the content by comma\nconst parts=content.split(\",\");// If there's more than one part, the second part is the default value\nif(parts.length>1){// Trim any whitespace from the default value\nreturn parts.slice(1).join(\",\").trim();}// If there's no comma, return an empty string or null\nreturn\"\";}\nexport const __FramerMetadata__ = {\"exports\":{\"useDarkMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useColors\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useColors.map","function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,Color}from\"framer\";import{useEffect,useState,useRef,useMemo}from\"react\";import{useMotionValue,useSpring}from\"framer-motion\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js\";const characterSets={detailed:\"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\\\|()1{}[]?-_+~<>i!lI;:,\\\"^`'.\",standard:\"@%#*+=-:.\",blocks:\"█▓▒░ \",binary:\"01\",hex:\"0123456789ABCDEF\"};const DEFAULT_IMAGE={src:\"https://framerusercontent.com/images/rMjuVOUhT39Hdz1kbwue16ZOySE.png\",srcSet:\"https://framerusercontent.com/images/rMjuVOUhT39Hdz1kbwue16ZOySE.png?scale-down-to=512 512w,https://framerusercontent.com/images/rMjuVOUhT39Hdz1kbwue16ZOySE.png 710w\"};const DEFAULT_FONT={fontFamily:'\"Fragment Mono\", monospace',fontSize:\"12px\",fontStyle:\"normal\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1em\"};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n */export default function InteractiveASCII(props){const{cursor,backgroundColor,color,font,sizing,style,glow,staticEffect}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const image=props.image||DEFAULT_IMAGE;const sizeMode=style?.width&&style?.height?\"both\":style?.width?\"width\":style?.height?\"height\":\"none\";const isSolidColor=color.mode===\"color\";const ditheringMode=staticEffect?\"noise\":props.ditheringMode;const[text,setText]=useState(\"\");const canvasRef=useRef(null);const ctxRef=useRef(null);const maskCanvasRef=useRef(null);const maskCtxRef=useRef(null);const ref=useRef(null);const textRef=useRef(null);const glowRef=useRef(null);const staticIntervalRef=useRef(null);const{x:cursorX,y:cursorY,initialized:cursorInitialized,initializedRef:cursorInitializedRef}=useFollowCursor(cursor?.smoothing||0,textRef);const lastValuesRef=useRef({cursorX:0,cursorY:0,cursorInitialized,outputWidth:props.outputWidth,characterSet:props.characterSet,customCharacterSet:props.customCharacterSet,ditheringMode,invertColors:props.invertColors,whiteMode:props.whiteMode,blur:props.blur,brightness:props.brightness,contrast:props.contrast,cursorStyle:cursor?.style,cursorInvert:cursor?.invert,cursorWidth:cursor?.width,font});const[color1Value,color2Value]=useColors(isSolidColor?\"#FFF\":color.color1,isSolidColor?\"#FFF\":color.color2);const[color1Color,color2Color]=useMemo(()=>[new Color(color1Value),new Color(color2Value)],[color1Value,color2Value]);const colorInterpolatorRef=useRef(()=>createColorInterpolator(color.mode,color1Color,color2Color));const rngSeedRef=useRef(Math.random());const[img,setImg]=useState(null);const[cursorImg,setCursorImg]=useState(null);useEffect(()=>{if(image?.src){const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{setImg(img);};img.src=image.src;return()=>{img.onload=null;};}else{setImg(null);}},[image]);useEffect(()=>{if(cursor?.style===\"image\"&&cursor?.image?.src){const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{setCursorImg(img);};img.src=cursor.image.src;return()=>{img.onload=null;};}else{setCursorImg(null);}},[cursor?.style,cursor?.image]);useEffect(()=>{colorInterpolatorRef.current=createColorInterpolator(color.mode,color1Color,color2Color);},[color1Color,color2Color,color.mode]);useEffect(()=>{lastValuesRef.current={...lastValuesRef.current,outputWidth:props.outputWidth,characterSet:props.characterSet,customCharacterSet:props.customCharacterSet,ditheringMode,invertColors:props.invertColors,whiteMode:props.whiteMode,blur:props.blur,brightness:props.brightness,contrast:props.contrast,font,cursorStyle:cursor?.style,cursorInvert:cursor?.invert,cursorWidth:cursor?.width};},[props.outputWidth,props.characterSet,props.customCharacterSet,ditheringMode,props.invertColors,props.whiteMode,props.blur,props.brightness,props.contrast,font,cursor?.style,cursor?.invert,cursor?.width]);useEffect(()=>{// Initialize canvas and context\nif(!canvasRef.current){canvasRef.current=document.createElement(\"canvas\");ctxRef.current=canvasRef.current.getContext(\"2d\",{willReadFrequently:true});}if(!maskCanvasRef.current){maskCanvasRef.current=document.createElement(\"canvas\");maskCtxRef.current=maskCanvasRef.current.getContext(\"2d\",{willReadFrequently:true});}if(img&&ctxRef.current&&maskCtxRef.current){const loadImage=async()=>{try{const{ascii,grayValues}=generateASCII(img,lastValuesRef.current,canvasRef.current,ctxRef.current,cursorX,cursorY,cursorInitializedRef,textRef,cursorImg,rngSeedRef);setText(ascii);// Update the mask with gradient colors\nif(!isSolidColor){const{outputWidth:asciiWidth}=lastValuesRef.current;const asciiHeight=Math.round(img.height/img.width*asciiWidth*measureFontAspectRatio(font));maskCanvasRef.current.width=asciiWidth;maskCanvasRef.current.height=asciiHeight;const imageData=maskCtxRef.current.getImageData(0,0,asciiWidth,asciiHeight);const data=imageData.data;for(let i=0;i<grayValues.length;i++){const gray=grayValues[i];const point1=color.mode===\"gradient\"?color.color1Point/100:color.threshold/100;const point2=color.mode===\"gradient\"?color.color2Point/100:1;let percent;if(point1===point2){// If points are equal, pick color based on which side of the point the gray value falls\npercent=gray/255<point1?0:1;}else{percent=Math.min(Math.max(mapRange(gray/255,Math.min(point1,point2),Math.max(point1,point2),0,1),0),1);}let interpolatedColor=percent<=point1?color1Color:percent>=point2?color2Color:colorInterpolatorRef.current(percent);const{r,g,b,a}=Color.toRgb(interpolatedColor);const idx=i*4;data[idx]=isNaN(r)?0:r;data[idx+1]=isNaN(g)?0:g;data[idx+2]=isNaN(b)?0:b;data[idx+3]=typeof a===\"number\"?isNaN(a)?0:a*255:255;}maskCtxRef.current.putImageData(imageData,0,0);}}catch(error){console.error(\"Error generating ASCII:\",error);}};let needsUpdate=false;// Subscribe to motion value changes\nconst unsubscribeX=cursorX.on(\"change\",()=>{needsUpdate=true;});const unsubscribeY=cursorY.on(\"change\",()=>{needsUpdate=true;});// Set up interval to check for changes\nconst intervalId=setInterval(()=>{if(needsUpdate){const currentValues={...lastValuesRef.current,cursorInitialized:cursorInitializedRef.current,cursorX:cursorX.get(),cursorY:cursorY.get()};// Check if any values have changed\nconst hasChanged=Object.entries(currentValues).some(([key,value])=>lastValuesRef.current[key]!==value);if(hasChanged){loadImage();lastValuesRef.current=currentValues;}needsUpdate=false;}},24);// Set up static effect interval if enabled\nif(staticEffect&&staticEffect.interval>0&&!(isCanvas&&staticEffect.preview===false)){// Clear any existing interval\nif(staticIntervalRef.current){clearInterval(staticIntervalRef.current);}// Create new interval for static effect\nstaticIntervalRef.current=setInterval(()=>{rngSeedRef.current=Math.random();loadImage();},staticEffect.interval*1e3);}else if(staticIntervalRef.current){// Clear interval if static effect is disabled\nclearInterval(staticIntervalRef.current);staticIntervalRef.current=null;}// Initial load\nloadImage();return()=>{clearInterval(intervalId);if(staticIntervalRef.current){clearInterval(staticIntervalRef.current);staticIntervalRef.current=null;}unsubscribeX();unsubscribeY();};}return()=>{if(canvasRef.current){canvasRef.current.remove();}if(maskCanvasRef.current){maskCanvasRef.current.remove();}if(staticIntervalRef.current){clearInterval(staticIntervalRef.current);staticIntervalRef.current=null;}};},[img,props,cursorX,cursorY,cursorImg,staticEffect]);useEffect(()=>{// Scale text to fit container width\nif(ref.current&&textRef.current){const updateScale=()=>{const containerWidth=ref.current?.offsetWidth;const containerHeight=ref.current?.offsetHeight;const textWidth=textRef.current?.scrollWidth;const textHeight=textRef.current?.scrollHeight;if(textWidth&&textHeight){let scale=1;let width=style?.width||\"auto\";let height=style?.height||\"auto\";switch(sizeMode){case\"width\":scale=containerWidth/textWidth;height=style?.height||`${textHeight*scale}px`;break;case\"height\":scale=containerHeight/textHeight;width=style?.width||`${textWidth*scale}px`;break;case\"both\":const widthScale=containerWidth/textWidth;const heightScale=containerHeight/textHeight;scale=sizing===\"fit\"?Math.min(widthScale,heightScale):Math.max(widthScale,heightScale);break;case\"none\":scale=1;break;}const translate=sizeMode===\"none\"?\"\":`translate(-50%, -50%)`;const transform=`${translate} scale(${scale})`;textRef.current.style.transform=transform;if(glowRef.current){glowRef.current.style.transform=transform;}ref.current.style.width=width;ref.current.style.height=height;}};const resizeObserver=new ResizeObserver(updateScale);resizeObserver.observe(ref.current);resizeObserver.observe(textRef.current);// Initial scale\nupdateScale();return()=>{resizeObserver.disconnect();};}},[text,sizeMode,sizing]);const textStyle={width:\"fit-content\",height:\"fit-content\",color:color.mode===\"color\"?color.color:\"transparent\",userSelect:\"none\",whiteSpace:\"pre\",textAlign:\"center\",transformOrigin:\"center\",fontVariantNumeric:\"tabular-nums\",...sizeMode!==\"none\"?{position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\"}:{},...!isSolidColor?{backgroundImage:`url(${maskCanvasRef.current?.toDataURL()})`,backgroundRepeat:\"no-repeat\",backgroundSize:\"100% 100%\",imageRendering:\"pixelated\",backgroundClip:\"text\",WebkitBackgroundClip:\"text\"}:{},...font};return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{position:\"relative\",overflow:\"hidden\",backgroundColor,borderRadius:props.radius,...style},children:[glow?.blur>0&&glow?.opacity>0&&/*#__PURE__*/_jsx(\"div\",{ref:glowRef,style:{position:\"absolute\",filter:`blur(${glow.blur}px)`,...textStyle,opacity:glow.opacity},\"aria-hidden\":\"true\",children:text}),/*#__PURE__*/_jsx(\"div\",{ref:textRef,style:{...textStyle},\"aria-label\":image?.alt,children:text})]});}InteractiveASCII.displayName=\"Interactive ASCII\";addPropertyControls(InteractiveASCII,{cursor:{type:ControlType.Object,icon:\"effect\",optional:true,defaultValue:{size:20,smoothing:0},controls:{style:{type:ControlType.Enum,defaultValue:\"gradient\",options:[\"gradient\",\"circle\",\"image\"],optionTitles:[\"Gradient\",\"Circle\",\"Image\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},image:{type:ControlType.ResponsiveImage,hidden:props=>props.style!==\"image\"},width:{type:ControlType.Number,defaultValue:20,min:1,max:500,step:1,description:\"Measured in characters\"},invert:{type:ControlType.Boolean,defaultValue:false},smoothing:{type:ControlType.Number,defaultValue:0,min:0,max:100,step:1}}},image:{type:ControlType.ResponsiveImage,__defaultAssetReference:\"data:framer/asset-reference,rMjuVOUhT39Hdz1kbwue16ZOySE.png?originalFilename=image.png&preferredSize=auto\"},sizing:{type:ControlType.Enum,defaultValue:\"fit\",options:[\"fit\",\"fill\"],optionTitles:[\"Fit\",\"Fill\"],displaySegmentedControl:true},font:{type:\"font\",defaultFontType:\"monospace\",displayTextAlignment:false,controls:\"extended\",defaultValue:{fontSize:12,lineHeight:1}},color:{type:ControlType.Object,controls:{mode:{type:ControlType.Enum,options:[\"color\",\"gradient\",\"glow\"],optionTitles:[\"Color\",\"Gradient\",\"Glow\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},color:{type:ControlType.Color,defaultValue:\"#fff\",hidden:props=>props.mode!==\"color\"},color1:{type:ControlType.Color,defaultValue:\"#fff\",title:\"Color 1\",hidden:props=>props.mode!==\"gradient\"&&props.mode!==\"glow\"},color1Point:{type:ControlType.Number,defaultValue:0,min:0,max:100,step:1,unit:\"%\",title:\"Position\",hidden:props=>props.mode!==\"gradient\"},color2:{type:ControlType.Color,defaultValue:\"#000\",title:\"Color 2\",hidden:props=>props.mode!==\"gradient\"&&props.mode!==\"glow\"},color2Point:{type:ControlType.Number,defaultValue:100,min:0,max:100,step:1,unit:\"%\",title:\"Position\",hidden:props=>props.mode!==\"gradient\"},threshold:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,unit:\"%\",hidden:props=>props.mode!==\"glow\"}}},glow:{type:ControlType.Object,optional:true,icon:\"effect\",controls:{blur:{type:ControlType.Number,defaultValue:8,min:1,max:30,step:1},opacity:{type:ControlType.Number,defaultValue:1,min:0,max:1,step:.01}}},staticEffect:{type:ControlType.Object,optional:true,icon:\"effect\",title:\"Static\",controls:{preview:{type:ControlType.Boolean,defaultValue:true,description:\"Show effect in editor\"},interval:{type:ControlType.Number,defaultValue:.1,min:.05,max:1,step:.01,unit:\"s\",description:\"Makes the text change continuously like a static/noise effect\"}}},backgroundColor:{type:ControlType.Color,defaultValue:\"#000\",optional:true,title:\"Background\"},outputWidth:{type:ControlType.Number,defaultValue:100,min:20,max:500,step:1,title:\"Width\"},characterSet:{type:ControlType.Enum,defaultValue:\"detailed\",options:[\"detailed\",\"standard\",\"blocks\",\"binary\",\"hex\",\"custom\"],optionTitles:[`Detailed (${characterSets.detailed})`,`Standard (${characterSets.standard})`,`Blocks (${characterSets.blocks})`,`Binary (${characterSets.binary})`,`Hex (${characterSets.hex})`,\"Custom\"],title:\"Characters\"},customCharacterSet:{type:ControlType.String,defaultValue:\"@%#*+=-:.\",placeholder:\"Character set\",title:\"Custom\",hidden:props=>props.characterSet!==\"custom\"},ditheringMode:{type:ControlType.Enum,defaultValue:\"none\",options:[\"none\",\"floyd\",\"atkinson\",\"ordered\"],optionTitles:[\"None\",\"Floyd-Steinberg\",\"Atkinson\",\"Ordered\"],title:\"Dithering\",hidden:props=>!!props.staticEffect},invertColors:{type:ControlType.Boolean,defaultValue:false,title:\"Invert\"},whiteMode:{type:ControlType.Enum,defaultValue:\"ignore\",options:[\"keep\",\"ignore\"],optionTitles:[\"Keep\",\"Ignore\"],displaySegmentedControl:true,title:\"White\"},blur:{type:ControlType.Number,defaultValue:0,min:0,max:10,step:1,displayStepper:true},brightness:{type:ControlType.Number,defaultValue:0,min:-100,max:100},contrast:{type:ControlType.Number,defaultValue:0,min:-100,max:100},radius:{type:ControlType.BorderRadius,defaultValue:\"0px\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// Helper Functions\n// Measure font aspect ratio by creating a temporary element\nfunction measureFontAspectRatio(font){font=font||DEFAULT_FONT;const temp=document.createElement(\"div\");temp.style.position=\"absolute\";temp.style.visibility=\"hidden\";temp.style.whiteSpace=\"nowrap\";temp.style.fontFamily=font.fontFamily;temp.style.fontWeight=font.fontWeight;temp.style.fontSize=font.fontSize;temp.style.lineHeight=font.lineHeight;temp.style.letterSpacing=font.letterSpacing;temp.textContent=\"W\";document.body.appendChild(temp);const width=temp.offsetWidth;const height=temp.offsetHeight;document.body.removeChild(temp);return width/height;}// Clamp a value between min and max.\nfunction clamp(value,min,max){return Math.max(min,Math.min(max,value));}// ASCII Art Generation Functions\n// Generate grayscale 0-255 values from an image.\nfunction generateGrayValues(img,props,canvas,ctx,cursorX,cursorY,cursorInitializedRef,containerRef,cursorImg){const{cursorStyle,cursorWidth,cursorInvert,outputWidth:asciiWidth,brightness,contrast:contrastValue,blur:blurValue,invertColors:invertEnabled,font}=props;const contrastFactor=259*(contrastValue+255)/(255*(259-contrastValue));const fontAspectRatio=measureFontAspectRatio(font);const asciiHeight=Math.round(img.height/img.width*asciiWidth*fontAspectRatio);canvas.width=asciiWidth;canvas.height=asciiHeight;ctx.filter=blurValue>0?`blur(${blurValue}px)`:\"none\";ctx.drawImage(img,0,0,asciiWidth,asciiHeight);if(cursorWidth&&cursorInitializedRef.current){// Map cursor coordinates from component space to ASCII grid space\nconst mappedX=cursorX.get()*asciiWidth;const mappedY=cursorY.get()*(asciiHeight/fontAspectRatio);ctx.save();ctx.scale(1,fontAspectRatio);switch(cursorStyle){case\"gradient\":{// Create a radial gradient for the cursor effect\nconst gradient=ctx.createRadialGradient(mappedX,mappedY,0,mappedX,mappedY,cursorWidth/2);if(cursorInvert){gradient.addColorStop(0,\"rgba(255, 255, 255, 1)\");gradient.addColorStop(1,\"rgba(255, 255, 255, 0)\");}else{gradient.addColorStop(0,\"rgba(0, 0, 0, 1)\");gradient.addColorStop(1,\"rgba(0, 0, 0, 0)\");}ctx.fillStyle=gradient;ctx.fillRect(0,0,asciiWidth,asciiHeight/fontAspectRatio);break;}case\"circle\":{ctx.fillStyle=cursorInvert?\"rgba(255, 255, 255, 1)\":\"rgba(0, 0, 0, 1)\";ctx.beginPath();ctx.arc(mappedX,mappedY,cursorWidth/2,0,Math.PI*2);ctx.fill();break;}case\"image\":{if(cursorImg){// Calculate the size of the cursor image in ASCII grid space\nconst cursorHeight=cursorImg.height/cursorImg.width*cursorWidth;// Draw the cursor image centered at the cursor position\nctx.save();if(cursorInvert){ctx.filter=\"invert(1)\";}ctx.drawImage(cursorImg,mappedX-cursorWidth/2,mappedY-cursorHeight/2,cursorWidth,cursorHeight);ctx.restore();}break;}}ctx.restore();}const imageData=ctx.getImageData(0,0,asciiWidth,asciiHeight);const data=imageData.data;const gray=[];for(let i=0;i<data.length;i+=4){let lum=.299*data[i]+.587*data[i+1]+.114*data[i+2];if(invertEnabled)lum=255-lum;let adjusted=clamp(contrastFactor*(lum-128)+128+brightness,0,255);gray.push(adjusted);}return{gray,asciiHeight};}// Generate standard ASCII art (non-DOG modes).\nfunction generateASCII(img,props,canvas,ctx,cursorX,cursorY,cursorInitializedRef,containerRef,cursorImg,rngSeedRef){const{outputWidth:asciiWidth,ditheringMode:ditherAlgorithm,characterSet:charset,customCharacterSet,whiteMode}=props;const ignoreWhite=whiteMode===\"ignore\";const gradient=charset===\"custom\"?customCharacterSet||\"0 \":characterSets[charset];const nLevels=gradient.length;const{gray:grayOriginal,asciiHeight}=generateGrayValues(img,props,canvas,ctx,cursorX,cursorY,cursorInitializedRef,containerRef,cursorImg);const gray=[...grayOriginal];let ascii=\"\";if(ditherAlgorithm!==\"none\"){if(ditherAlgorithm===\"floyd\"){// Floyd–Steinberg dithering\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}let computedLevel=Math.round(gray[idx]/255*(nLevels-1));line+=gradient.charAt(computedLevel);const newPixel=computedLevel/(nLevels-1)*255;const error=gray[idx]-newPixel;if(x+1<asciiWidth){gray[idx+1]=clamp(gray[idx+1]+error*(7/16),0,255);}if(x-1>=0&&y+1<asciiHeight){gray[idx-1+asciiWidth]=clamp(gray[idx-1+asciiWidth]+error*(3/16),0,255);}if(y+1<asciiHeight){gray[idx+asciiWidth]=clamp(gray[idx+asciiWidth]+error*(5/16),0,255);}if(x+1<asciiWidth&&y+1<asciiHeight){gray[idx+asciiWidth+1]=clamp(gray[idx+asciiWidth+1]+error*(1/16),0,255);}}ascii+=line+\"\\n\";}}else if(ditherAlgorithm===\"atkinson\"){// Atkinson dithering\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}let computedLevel=Math.round(gray[idx]/255*(nLevels-1));line+=gradient.charAt(computedLevel);const newPixel=computedLevel/(nLevels-1)*255;const error=gray[idx]-newPixel;const diffusion=error/8;if(x+1<asciiWidth){gray[idx+1]=clamp(gray[idx+1]+diffusion,0,255);}if(x+2<asciiWidth){gray[idx+2]=clamp(gray[idx+2]+diffusion,0,255);}if(y+1<asciiHeight){if(x-1>=0){gray[idx-1+asciiWidth]=clamp(gray[idx-1+asciiWidth]+diffusion,0,255);}gray[idx+asciiWidth]=clamp(gray[idx+asciiWidth]+diffusion,0,255);if(x+1<asciiWidth){gray[idx+asciiWidth+1]=clamp(gray[idx+asciiWidth+1]+diffusion,0,255);}}if(y+2<asciiHeight){gray[idx+2*asciiWidth]=clamp(gray[idx+2*asciiWidth]+diffusion,0,255);}}ascii+=line+\"\\n\";}}else if(ditherAlgorithm===\"noise\"){const rng=new SeededRandom(rngSeedRef.current);// Noise dithering\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;const randomValue=rng.next();if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}const noise=(randomValue-.4)*(255/nLevels);const noisyValue=clamp(gray[idx]+noise,0,255);let computedLevel=Math.round(noisyValue/255*(nLevels-1));line+=gradient.charAt(computedLevel);}ascii+=line+\"\\n\";}}else if(ditherAlgorithm===\"ordered\"){// Ordered dithering using a 4x4 Bayer matrix.\nconst bayer=[[0,8,2,10],[12,4,14,6],[3,11,1,9],[15,7,13,5]];const matrixSize=4;for(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}const p=gray[idx]/255;const t=(bayer[y%matrixSize][x%matrixSize]+.5)/(matrixSize*matrixSize);let valueWithDither=p+t-.5;valueWithDither=Math.min(Math.max(valueWithDither,0),1);let computedLevel=Math.floor(valueWithDither*nLevels);if(computedLevel>=nLevels)computedLevel=nLevels-1;line+=gradient.charAt(computedLevel);}ascii+=line+\"\\n\";}}}else{// Simple mapping without dithering.\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}const computedLevel=Math.round(gray[idx]/255*(nLevels-1));line+=gradient.charAt(computedLevel);}ascii+=line+\"\\n\";}}return{ascii,grayValues:gray};}function useFollowCursor(smoothing=0,containerRef){const movementTransition={damping:100,stiffness:mapRange(smoothing,0,100,2e3,50)};const hasSpring=smoothing!==0;const mouseX=useMotionValue(0);const mouseY=useMotionValue(0);const springX=useSpring(mouseX,movementTransition);const springY=useSpring(mouseY,movementTransition);const previousScrollXRef=useRef(0);const previousScrollYRef=useRef(0);const[initialized,setInitialized]=useState(false);const isInitializedRef=useRef(false);useEffect(()=>{const handleMouseMove=event=>{if(!containerRef.current)return;const rect=containerRef.current.getBoundingClientRect();const x=event.clientX-rect.left;const y=event.clientY-rect.top;// Convert to percentages, handling edge cases to prevent infinite values\nconst xPercent=rect.width===0?0:x/rect.width;const yPercent=rect.height===0?0:y/rect.height;mouseX.set(xPercent);mouseY.set(yPercent);if(!isInitializedRef.current){springX.jump(xPercent);springY.jump(yPercent);isInitializedRef.current=true;setInitialized(true);}};const handleScroll=()=>{if(!containerRef.current||!isInitializedRef.current)return;const rect=containerRef.current.getBoundingClientRect();const scrollX=window.scrollX||window.pageXOffset||document.documentElement.scrollLeft;const scrollY=window.scrollY||window.pageYOffset||document.documentElement.scrollTop;// Calculate scroll delta\nconst deltaX=scrollX-previousScrollXRef.current;const deltaY=scrollY-previousScrollYRef.current;// Update previous scroll positions\npreviousScrollXRef.current=scrollX;previousScrollYRef.current=scrollY;// Convert scroll delta to percentage, handling edge cases\nconst deltaXPercent=rect.width===0?0:deltaX/rect.width;const deltaYPercent=rect.height===0?0:deltaY/rect.height;// Update position using scroll delta percentages\nmouseX.set(mouseX.get()+deltaXPercent);mouseY.set(mouseY.get()+deltaYPercent);};window.addEventListener(\"mousemove\",handleMouseMove);window.addEventListener(\"scroll\",handleScroll);return()=>{window.removeEventListener(\"mousemove\",handleMouseMove);window.removeEventListener(\"scroll\",handleScroll);};},[containerRef]);return{initialized,initializedRef:isInitializedRef,x:hasSpring?springX:mouseX,y:hasSpring?springY:mouseY};}function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}function createColorInterpolator(mode,color1,color2){if(mode===\"glow\"){return Color.interpolate(color2,new Color(color2.r,color2.g,color2.b,0));}return Color.interpolate(color1,color2);}class SeededRandom{next(){this.seed=this.seed*16807%2147483647;return(this.seed-1)/2147483646;}constructor(seed){_define_property(this,\"seed\",void 0);this.seed=seed%2147483647;if(this.seed<=0)this.seed+=2147483646;}}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"InteractiveASCII\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"400\",\"framerIntrinsicHeight\":\"400\",\"framerDisableUnlink\":\"*\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (f509301)\nexport default function metadata(params,activeLocale){return{description:\"Quist Collective designs immersive digital experiences for events and brands. Video mapping, DJ backdrops and interactive installations. Istanbul-based, available worldwide. Quist Collective is a creative visual studio founded by Ersan Pars.\",favicon:\"https://framerusercontent.com/assets/XArw3OQw1Weizai84VkvUN82Q.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/KhMxsFnMWxbCU0hL8raQp30b9s.png\",title:\"Quist Collective\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (d22cd96)\nimport siteMetadata from\"#framer/local/siteMetadata/siteMetadata/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"18rdeo9\",mediaQuery:\"(min-width: 1200px)\"},{hash:\"j3b69k\",mediaQuery:\"(min-width: 810px) and (max-width: 1199.98px)\"},{hash:\"16mh0gh\",mediaQuery:\"(max-width: 809.98px)\"}],description:siteMetadata(params,activeLocale).description,elements:{NLOIyxqRu:\"video-trigger\",vVhZyPzqJ:\"go-top-trigger\",xyIHVmSO4:\"info\"},robots:\"max-image-preview:large\",serializationId:\"framer-4hH1A\",socialImage:\"https://framerusercontent.com/assets/NcGaF1KfdHTPx6PTCEzDbDGoBw.png\",title:siteMetadata(params,activeLocale).title||\"Home\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (bf89308)\nimport siteMetadata from\"#framer/local/siteMetadata/siteMetadata/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"t3v0cs\",mediaQuery:\"(min-width: 1200px)\"},{hash:\"1hmhvsl\",mediaQuery:\"(min-width: 810px) and (max-width: 1199.98px)\"},{hash:\"1po7usd\",mediaQuery:\"(max-width: 809.98px)\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-zvmz8\",socialImage:\"https://framerusercontent.com/assets/NcGaF1KfdHTPx6PTCEzDbDGoBw.png\",title:siteMetadata(params,activeLocale).title||\"404\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"kfAC8B,GAAU,UAAU,CAAC,oBAAoB,oBAAoB,CAAC,CAAcA,EAAM,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,cAAc,aAAa,OAAO,SAAS,MAAM,SAAS,aAAa,aAAa,IAAI,kGAAkG,OAAO,MAAM,CAAC,CAAC,cAAc,aAAa,OAAO,SAAS,MAAM,SAAS,aAAa,aAAa,IAAI,kGAAkG,OAAO,MAAM,CAAC,CAAC,CAAC,CAAcC,EAAI,CAAC,8yBAA8yB,CAAcC,GAAU,8CCA90C,IAAsE,IAA4B,CAAoCC,GAAK,kwBAA0wBC,GAAiB,GAAY,EAAM,IAAM,CAAC,GAAK,CAAC,WAAS,WAAS,WAAS,GAAG,GAAM,EAAM,OAAO,EAAsB,EAAK,EAAO,IAAI,CAAC,GAAG,EAAc,WAAa,MAAI,CAAC,CAAc,EAAK,MAAM,CAAC,GAAG,EAAS,MAAI,CAAC,EAAG,CAAOC,IAAU,CAAC,OAAK,SAAO,KAAG,QAAM,GAAG,MAAgB,CAAC,GAAG,EAAM,UAAU,GAAM,EAAM,WAAW,wEAAwE,EAS7zCC,EAAK,EATw1C,EAAiB,SAAS,EAAM,EAAI,CAAC,GAAK,CAAC,QAAM,UAAA,EAAU,WAAS,UAAQ,YAAU,GAAG,GAAWD,GAAS,EAAM,CAAC,OAAoB,EAAKD,GAAI,CAAC,GAAG,EAAU,UAAU,EAAG,eAAeG,EAAU,CAAU,WAAa,MAAI,MAAM,CAAC,GAAG,EAAM,CAAC,CAAC,EAAG,CAAW,CAAC,iCAAiCJ,GAAK,yGAAyGA,GAAK,kBAAkB,CASzuD,eAAe,CAAC,EAAK,YAAY,oBAAgCG,EAAK,EAAoBA,EAAK,CAAC,UAAU,CAAC,aAAa,+FAA+F,OAAO,GAAK,MAAM,OAAO,KAAK,EAAY,MAAM,CAAC,CAAC,iCCTlQ,IAAsE,IAA4B,CAAoC,GAAK,0lBAAkmB,GAAiB,GAAY,EAAM,IAAM,CAAC,GAAK,CAAC,WAAS,WAAS,WAAS,GAAG,GAAM,EAAM,OAAO,EAAsB,EAAK,EAAO,IAAI,CAAC,GAAG,EAAc,WAAa,MAAI,CAAC,CAAc,EAAK,MAAM,CAAC,GAAG,EAAS,MAAI,CAAC,EAAG,CAAOE,IAAU,CAAC,OAAK,SAAO,KAAG,QAAM,GAAG,MAAgB,CAAC,GAAG,EAAM,UAAU,GAAM,EAAM,WAAW,wEAAwE,EASrpC,GAAK,EATgrC,EAAiB,SAAS,EAAM,EAAI,CAAC,GAAK,CAAC,QAAM,UAAA,EAAU,WAAS,UAAQ,YAAU,GAAG,GAAWA,GAAS,EAAM,CAAC,OAAoB,EAAK,GAAI,CAAC,GAAG,EAAU,UAAU,EAAG,eAAeC,EAAU,CAAU,WAAa,MAAI,MAAM,CAAC,GAAG,EAAM,CAAC,CAAC,EAAG,CAAW,CAAC,iCAAiC,GAAK,yGAAyG,GAAK,kBAAkB,CASjkD,eAAe,CAAC,GAAK,YAAY,YAAwB,GAAK,EAAoB,GAAK,CAAC,UAAU,CAAC,aAAa,+FAA+F,OAAO,GAAK,MAAM,OAAO,KAAK,EAAY,MAAM,CAAC,CAAC,ICFlS,SAAwB,EAAe,EAAM,CAAC,GAAK,CAAC,OAAK,mBAAiB,OAAK,iBAAe,YAAU,SAAO,EAAY,EAAS,EAAa,SAAS,GAAG,EAAa,OAAa,EAAI,EAAM,IAAU,EAAIC,EAAO,KAAK,CAAO,EAAcA,EAAO,GAAa,EAAM,CAAC,CAAM,CAAC,EAAS,GAAaC,EAAS,EAAE,CAAM,CAAC,EAAiB,GAAqBA,EAAS,KAAK,CAAO,EAAYD,EAAO,KAAK,CAAO,EAAS,EAAU,EAAI,CAAC,KAAK,CAAC,EAAM,UAAU,OAAO,OAAO,OAAO,CAAC,CAAO,EAAeE,EAAS,EAAM,EAAE,IAAI,GAAG,KAAK,CACvgB,EAAgBC,MAAgB,IAAO,SAAwB,MAAM,KAAK,CAAC,OAAO,EAAK,OAAO,EAAE,EAAE,IAAI,EAAE,CAAgB,SAAS,KAAK,QAAQ,CAAC,GAAG,CAAQ,EAAE,CAAG,CAAC,EAAK,EAAK,CAAC,CAAO,MAAiB,CAAK,IAAa,GAAkB,EAAiB,MAAM,CAAK,EAAY,SAAS,cAAc,EAAY,QAAQ,CACjU,eAAe,CAAC,EAAY,QAAQ,gBAAgB,CAAC,EAAc,QAAQ,GAAa,EAAM,EAAG,EAAe,IAAI,CAAC,EAAoB,EAAQ,EAAE,EAAE,CAAC,KAAK,OAAO,KAAK,SAAS,SAAS,GAAgB,EAAK,OAAO,GAAkB,SAAS,EAAY,eAAe,CAAI,EAAY,SAAS,cAAc,EAAY,QAAQ,EAAI,CAAC,CAAC,EAAG,EAAU,MAAM,IAAI,GAAI,OAAkB,EAAU,SAAS,UAAU,GAAc,KAAY,CAAI,EAAY,SAAS,cAAc,EAAY,QAAQ,GAAM,EAAE,CAAC,CAAC,MAAc,CAAI,EAAU,SAAS,gBAAkB,EAAU,GAAc,CAAU,IAAkB,EAAiB,MAAM,CAAC,EAAY,EAAE,CAAI,EAAY,SAAS,cAAc,EAAY,QAAQ,IAAO,CAAC,EAAS,CAAC,CAAC,IAAI,EAAS,EAAE,CAAC,OAAO,EAAP,CAAa,IAAI,OAAO,CAAC,IAAM,EAAWD,EAAS,EAAS,EAAE,EAAE,CAAC,EAAiB,EAAK,OAAO,CAAO,EAAYA,EAAS,EAAS,EAAE,EAAE,EAAE,EAAK,OAAO,EAAiB,CAAC,EAAS,KAAK,CAAC,EAAK,UAAU,EAAEE,EAAM,EAAW,EAAE,EAAK,OAAO,CAAC,CAAC,EAAS,CAAC,CAAC,EAAc,QAAQ,UAAUA,EAAM,EAAW,EAAE,EAAK,OAAO,CAACA,EAAM,EAAY,EAAE,EAAK,OAAO,CAAC,CAAC,EAAU,CAAC,CAAC,EAAK,UAAUA,EAAM,EAAY,EAAE,EAAK,OAAO,CAAC,CAAC,EAAO,CAAC,CAAC,MAAO,IAAI,SAAS,CAAC,IAAM,EAAO,KAAK,KAAK,EAAK,OAAO,EAAE,CAAO,EAAQ,KAAK,IAAI,KAAK,MAAM,EAAiB,EAAE,CAAC,EAAE,CAAO,EAAWF,EAAS,EAAS,EAAE,EAAE,EAAO,CAAC,EAAQ,CAAO,EAAYA,EAAS,EAAS,EAAE,EAAE,EAAO,EAAQ,EAAE,CAAC,EAAS,KAAK,CAAC,EAAK,UAAU,EAAEE,EAAM,EAAW,EAAE,EAAK,OAAO,CAAC,CAAC,EAAO,CAAC,CAAC,EAAc,QAAQ,UAAUA,EAAM,EAAW,EAAE,EAAO,CAACA,EAAM,EAAY,EAAE,EAAO,CAAC,CAAC,EAAU,CAAC,CAAC,EAAK,UAAUA,EAAM,EAAY,EAAE,EAAO,CAACA,EAAM,EAAK,OAAO,EAAY,EAAO,EAAK,OAAO,CAAC,CAAC,EAAS,CAAC,CAAC,EAAc,QAAQ,UAAUA,EAAM,EAAK,OAAO,EAAW,EAAO,EAAK,OAAO,CAACA,EAAM,EAAK,OAAO,EAAY,EAAO,EAAK,OAAO,CAAC,CAAC,EAAU,CAAC,CAAC,EAAK,UAAUA,EAAM,EAAK,OAAO,EAAW,EAAE,EAAK,OAAO,CAAC,EAAK,OAAO,CAAC,EAAO,CAAC,CAAC,MAAO,IAAI,QAAQ,CAAC,IAAM,EAAWF,EAAS,EAAS,EAAE,EAAE,EAAK,OAAO,CAAC,EAAiB,CAAO,EAAYA,EAAS,EAAS,EAAE,EAAE,EAAK,OAAO,EAAiB,EAAE,CAAC,EAAS,KAAK,CAAC,EAAK,UAAU,EAAEE,EAAM,EAAW,EAAE,EAAK,OAAO,CAAC,CAAC,EAAO,CAAC,CAAC,EAAc,QAAQ,UAAUA,EAAM,EAAW,EAAE,EAAK,OAAO,CAACA,EAAM,EAAY,EAAE,EAAK,OAAO,CAAC,CAAC,EAAU,CAAC,CAAC,EAAK,UAAUA,EAAM,EAAY,EAAE,EAAK,OAAO,CAAC,EAAK,OAAO,CAAC,EAAS,CAAC,CAAC,MAAO,IAAI,SAC1wE,GAAG,IAAW,EAAG,EAAS,KAAK,CAAC,EAAK,EAAO,CAAC,SAAU,GAAU,EAAG,EAAS,KAAK,CAAC,EAAK,EAAS,CAAC,MAClG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,IAAI,CAAC,IAAM,EAAgB,EAAgB,QAAQ,EAAE,CACzE,EAAe,EAAiB,EAAK,OACpC,EAAgB,EAAgB,EAAK,QAAQ,EAAE,GAElD,GADiB,EAAgB,EAErC,EAAS,KAAK,CAAC,EAAK,GAAG,EAAS,CAAC,CAAU,GAAU,EACrD,EAAS,KAAK,CAAC,EAAc,QAAQ,GAAG,EAAU,CAAC,CACnD,EAAS,KAAK,CAAC,EAAK,GAAG,EAAO,CAAC,CAAI,MAAQ,OAAoB,EAAK,EAAI,CAAK,MAAI,MAAM,CAAC,MAAM,EAAM,MAAM,WAAW,OAAO,cAAc,OAAO,OAAO,EAAE,WAAW,EAAM,OAAO,MAAM,IAAA,GAAU,SAAS,GAAG,EAAM,KAAK,GAAG,EAAM,MAAM,CAAC,SAAS,EAAS,EAAK,GAAoB,EAAS,CAAC,KAAK,CAACC,EAAK,GAAO,IAAQ,CAAC,OAAO,EAAP,CAAc,KAAK,EAAO,OAAoB,EAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,SAASA,EAAK,CAAC,EAAM,CAAC,KAAK,EAAU,OAAO,EAA4B,EAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAe,CAAC,SAASA,EAAK,CAAC,EAAM,CAACA,EAAK,KAAK,EAAS,OAAOA,IAAQ,CAAC,CAAC,CAErV,SAASH,EAAS,EAAM,EAAQ,EAAS,EAAM,EAAO,CAA0F,OAAtF,IAAU,EAAiB,EAAkE,GAAzC,EAAM,IAAU,EAAS,IAAkC,EAAO,GAAQ,SAASE,EAAM,EAAM,EAAI,EAAI,CAAC,OAAO,KAAK,IAAI,EAAI,KAAK,IAAI,EAAM,EAAI,CAAC,CAAE,SAAS,GAAoB,EAAS,CAAC,OAAO,EAAS,QAAQ,CAAC,KAAQ,EAAK,OAAO,EAAE,CAAC,QAAQ,EAAI,KAC7jB,EAAI,SAAS,GAAG,EAAI,EAAI,OAAO,GAAG,KAAK,EAAK,GAAI,EAAI,KAAK,EAAK,CACjE,EAAI,EAAI,OAAO,GAAG,IAAI,EAAK,GAAW,GAAM,EAAE,CAAC,4BAvBJ,IAAiE,IAAqD,IAA6C,CAAM,EAAO,EAAQ,EAAU,EAAQ,EAAS,EAmBsT,EAAe,YAAY,kBAAkB,EAAoB,EAAe,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,aAAa,sCAAsC,gBAAgB,GAAK,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,aAAa,gEAAgE,gBAAgB,GAAK,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,aAAa,OAAO,QAAQ,CAAC,OAAO,SAAS,QAAQ,SAAS,CAAC,aAAa,CAAC,OAAO,SAAS,QAAQ,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,SAAS,WAAW,gBAAgB,YAAY,aAAa,CAAC,SAAS,GAAG,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,aAAa,OAAO,CAAC,eAAe,CAAC,KAAK,EAAY,MAAM,SAAS,GAAK,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,KAAK,EAAE,eAAe,GAAK,MAAM,UAAU,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,KAAK,SAAS,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAY,KAAK,aAAa,cAAc,QAAQ,CAAC,SAAS,cAAc,CAAC,aAAa,CAAC,SAAS,gBAAgB,CAAC,wBAAwB,GAAK,0BAA0B,WAAW,CAAC,OAAO,CAAC,KAAK,EAAY,QAAQ,aAAa,GAAK,OAAO,GAAO,EAAM,UAAU,cAAc,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,YAAY,UAAU,SAAS,CAAC,UAAU,CAAC,KAAK,EAAY,QAAQ,aAAa,GAAK,CAAC,WAAW,CAAC,KAAK,EAAY,QAAQ,aAAa,GAAM,MAAM,SAAS,aAAa,OAAO,cAAc,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAY,QAAQ,aAAa,GAAK,CAAC,IAAI,CAAC,KAAK,EAAY,KAAK,MAAM,MAAM,aAAa,IAAI,wBAAwB,GAAK,QAAQ,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,YAAY,qEAAqE,CAAC,CAAC,CAAO,GAAa,GAAO,CAAC,IAAM,EAAO,EAAM,KAAK,OAAa,EAAW,EAAM,WAAiB,EAAa,EAAM,KAAW,EAAU,EAAM,QAAQ,UAAgB,EAAW,EAAM,QAAQ,WAAW,GAAG,GAAQ,EAAG,MAAM,GAAI,IAAI,EAAO,GAAO,EAAS,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAO,IAAI,CAAC,IAAM,EAAa,EAAa,GAC3pF,GAAG,IAAa,IAAe,KAAK,IAAe,KAAK,CAAC,GAAQ,EAAa,SAAU,IAAI,EAAQ,EAAG,GAAQ,EAAW,KAAK,MAAM,KAAK,QAAQ,CAAC,EAAW,OAAO,EAClK,GAAW,IAAc,EAAQ,IAAe,EAAa,aAAa,CAAC,EAAQ,aAAa,CAAC,EAAQ,aAAa,QAAS,IAAU,GAAU,EAAW,QAAQ,GAAE,GAAQ,EAAQ,EAAS,EAAS,OAAO,MCrBmK,SAAS,GAAiB,EAAW,CAAC,WAAS,YAAU,cAAY,cAAY,eAAa,EAAW,EAAY,EAAU,CAAC,IAAM,EAAK,IAAI,KAAW,EAAgB,CAAC,GAAa,CAAC,GAAW,EAAS,OAAO,EAAP,CAAmB,IAAI,OAAO,OAAO,IAAI,KAAK,eAAe,EAAU,CAAC,QAAQ,EAAY,OAAO,IAAA,GAAU,IAAI,EAAgB,IAAA,GAAU,UAAU,MAAM,EAAU,EAAY,IAAA,GAAU,KAAK,EAAS,UAAU,IAAA,GAAU,CAAC,CAAC,OAAO,EAAK,CAAC,IAAI,OAAO,OAAO,IAAI,KAAK,eAAe,EAAU,CAAC,KAAK,UAAU,OAAO,EAAY,UAAU,IAAA,GAAU,OAAO,GAAa,EAAY,UAAU,IAAA,GAAU,OAAO,IAAa,MAAM,CAAC,CAAC,OAAO,EAAK,CAAC,QAAQ,OAAO,IAAI,KAAK,eAAe,EAAU,CAAC,OAAO,EAAK,EAWnjC,SAAgB,GAAK,EAAM,CAA8C,GAAK,CAAC,aAAW,aAAW,WAAS,YAAU,cAC3H,cAAY,cAAY,cAAY,QAAM,OAAK,eADE,CAAC,GAAG,EAAa,GAAG,EAAM,CACG,EAAU,GAAe,CAAO,EAAeE,MAAgB,GAAiB,EAAW,CAAC,WAAS,YAAU,cACzL,cAAY,cAAY,CAAC,EAAW,EAAY,EAAU,CAAC,CAAC,EAAU,EAAY,EAAW,EAAY,EAAU,EAAY,EAAY,EAAS,EAAW,CAAC,CAAO,EAAWC,GAAQ,CACvL,EAAgBD,EAAY,GAAM,CAAC,GAAG,IAAO,KAAK,CACzD,aAAa,EAAW,QAAQ,CAAC,OAAQ,IAAI,EAAW,MAAS,CAAC,IAAM,EAAK,IAAI,KAAW,EAAK,IAAI,MAAM,CAAC,WAAW,EAAK,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,EAAK,EAAW,QAAQ,WAAW,EAAK,EAAK,CAAC,IAAM,EAAY,GAAgB,CAAI,IAAO,IAAa,EAAK,YAAY,EAAY,EAAK,IAAe,GAAM,EAAG,CAAC,EAAe,CAAC,CAAM,CAAC,EAAQ,GAAcE,EAAS,GAAM,CAAO,EAAS,EAAa,SAAS,GAAG,EAAa,OACnY,OAD0Y,MAAc,CAAC,MAAoB,EAAa,GAAK,CAAC,EAC5c,CAAC,EAAS,CAAC,CAAqB,EAAK,IAAI,CAAC,yBAAyB,GAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAM,WAAW,GAAU,WAAW,IAAI,SAAS,GAAG,WAAW,EAAE,WAAW,EAAQ,UAAU,SAAS,GAAG,EAAK,mBAAmB,EAAY,eAAe,SAAS,WAAW,SAAS,CAAC,IAAI,EAAS,IAAA,GAAU,EAAgB,SAAS,GAAgB,CAAC,CAAC,wBAhB3U,IAA+E,IAAyE,CAAM,GAAU,oKAA42B,EAAa,CAAC,OAAO,GAAG,MAAM,IAAI,WAAW,OAAO,MAAM,OAAO,WAAW,MAAM,SAAS,GAAK,UAAU,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,GAAK,YAAY,OAAO,UAAU,SAAS,CAgB/4B,GAAK,YAAY,cAAc,EAAoB,GAAK,CAAC,WAAW,CAAC,MAAM,OAAO,KAAK,EAAY,KAAK,wBAAwB,GAAK,QAAQ,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,OAAO,CAAC,aAAa,EAAa,WAAW,CAAC,YAAY,CAAC,MAAM,MAAM,KAAK,EAAY,QAAQ,aAAa,OAAO,cAAc,OAAO,aAAa,EAAa,YAAY,OAAO,GAAO,EAAM,aAAa,OAAO,CAAC,UAAU,CAAC,MAAM,QAAQ,KAAK,EAAY,QAAQ,aAAa,OAAO,cAAc,OAAO,aAAa,EAAa,UAAU,OAAO,GAAO,EAAM,aAAa,OAAO,CAAC,YAAY,CAAC,MAAM,SAAS,KAAK,EAAY,KAAK,QAAQ,CAAC,QAAQ,OAAO,UAAU,CAAC,aAAa,CAAC,QAAQ,OAAO,UAAU,CAAC,aAAa,EAAa,YAAY,OAAO,GAAO,EAAM,aAAa,QAAQ,CAAC,EAAM,UAAU,CAAC,SAAS,CAAC,MAAM,OAAO,KAAK,EAAY,QAAQ,aAAa,OAAO,cAAc,OAAO,aAAa,EAAa,SAAS,OAAO,GAAO,EAAM,aAAa,OAAO,CAAC,WAAW,CAAC,MAAM,SAAS,KAAK,EAAY,KAAK,QAAQ,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,MAAM,CAAC,wBAAwB,GAAK,aAAa,EAAa,WAAW,OAAO,GAAO,EAAM,aAAa,OAAO,CAQz/C,YAAY,CAAC,MAAM,UAAU,KAAK,EAAY,QAAQ,aAAa,OAAO,cAAc,OAAO,aAAa,EAAa,YAAY,OAAO,GAAO,EAAM,aAAa,OAAO,CAAC,YAAY,CAAC,MAAM,UAAU,KAAK,EAAY,QAAQ,aAAa,OAAO,cAAc,OAAO,aAAa,EAAa,YAAY,OAAO,GAAO,EAAM,aAAa,QAAQ,CAAC,EAAM,YAAY,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,SAAS,WAAW,CAAC,YAAY,CAAC,MAAM,UAAU,KAAK,EAAY,QAAQ,aAAa,GAAK,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,aAAa,EAAa,MAAM,CAAC,CAAC,2BCvB5gB,GAAU,UAAU,CAAC,wBAAwB,oBAAoB,CAAC,CAAc,GAAM,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,cAAc,aAAa,OAAO,SAAS,MAAM,SAAS,aAAa,aAAa,IAAI,kGAAkG,OAAO,MAAM,CAAC,CAAC,cAAc,aAAa,OAAO,SAAS,MAAM,SAAS,aAAa,aAAa,IAAI,kGAAkG,OAAO,MAAM,CAAC,CAAC,CAAC,CAAc,GAAI,CAAC,y1BAAy1B,CAAc,GAAU,6DCA/2C,IAA6L,IAAkE,IAA4B,KAAgJ,KAAyH,CAAM,GAAc,EAASC,GAAS,CAAOC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,CAA8LC,GAAY,CAAC,OAAO,GAAG,MAAM,EAAE,SAAS,GAAG,KAAK,SAAS,CAAOC,IAAY,CAAC,QAAM,cAAY,CAAC,IAAM,EAAOC,EAAiB,EAAoB,CAAO,EAAW,GAAO,EAAO,WAAiB,EAAaC,OAAmB,CAAC,GAAG,EAAO,aAAW,EAAE,CAAC,KAAK,UAAU,EAAW,CAAC,CAAC,CAAC,OAAoB,EAAK,EAAoB,SAAS,CAAC,MAAM,EAAsB,WAAS,CAAC,EAASC,GAAS,EAAO,OAAOC,EAAe,CAAOC,IAAU,CAAC,SAAO,KAAG,QAAM,GAAG,MAAgB,CAAC,GAAG,EAAM,EAASC,IAAwB,EAAM,IAAe,EAAM,iBAAwB,EAAS,KAAK,IAAI,CAAC,EAAM,iBAAwB,EAAS,KAAK,IAAI,CAUjhD,EAAgB,EAViiD,EAAiB,SAAS,EAAM,EAAI,CAAC,IAAM,EAAYC,EAAO,KAAK,CAAO,EAAW,GAAK,EAAkB,EAAgBC,GAAa,CAAM,CAAC,eAAa,aAAW,IAAe,CAAyB,IAAsB,CAAC,GAAK,CAAC,QAAM,UAAA,EAAU,WAAS,UAAQ,GAAG,GAAWH,GAAS,EAAM,CAAM,CAAC,cAAY,aAAW,sBAAoB,kBAAgB,iBAAe,YAAU,kBAAgB,aAAW,YAAU,GAAgB,CAAC,eAAe,YAAY,IAAI,EAAW,UAAQ,kBAAA,GAAkB,CAAC,CAAO,EAAiBC,GAAuB,EAAM,EAAS,CAA2D,EAAkB,EAAGT,GAAlDY,GAA6F,CAAC,OAAoB,EAAK,EAAY,CAAC,GAAG,GAAU,EAAgB,SAAsB,EAAKN,GAAS,CAAC,QAAQ,EAAS,QAAQ,GAAM,SAAsB,EAAKH,GAAW,CAAC,MAAMD,GAAY,SAAsB,EAAM,EAAO,IAAI,CAAC,GAAG,EAAU,GAAG,EAAgB,UAAU,EAAG,EAAkB,iBAAiBW,EAAU,EAAW,CAAC,mBAAmB,YAA6B,mBAAiB,SAAS,YAAY,IAAI,EAAW,MAAM,CAAC,GAAG,EAAM,CAAC,SAAS,CAAc,EAAKC,EAAS,CAAC,sBAAsB,GAAK,SAAsB,EAAKP,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,IAAI,OAAO,MAAM,CAAC,sBAAsB,iGAAiG,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,iBAAiB,MAAM,CAAC,QAAQ,CAAkB,mBAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,wEAAwE,2BAA2B,mBAAmB,gCAAgC,YAAY,QAAQ,GAAG,CAAC,kBAAkB,MAAM,mBAAmB,GAAK,CAAC,CAAc,EAAK,EAA0B,CAAC,SAAsB,EAAK,EAA8B,CAAC,UAAU,0BAA0B,iBAAiB,GAAK,iBAAiB,GAAsB,mBAAiB,SAAS,sBAAsB,OAAO,YAAY,kBAAkB,GAAK,QAAQ,YAAY,MAAM,CAAC,QAAQ,GAAG,CAAC,SAAsB,EAAKR,GAAS,CAAC,MAAM,wEAAwE,KAAK,CAAC,WAAW,uBAAuB,SAAS,OAAO,UAAU,SAAS,WAAW,IAAI,cAAc,MAAM,WAAW,OAAO,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,YAAY,OAAO,WAAW,OAAO,YAAY,GAAK,UAAU,GAAK,YAAY,GAAK,YAAY,GAAK,SAAS,GAAK,YAAY,GAAK,WAAW,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAG,CAAW,CAAC,kFAAkF,gFAAgF,gTAAgT,iHAAiH,oHAAoH,GAAGgB,GAAgB,CAU/1J,eAAe,IAAgB,EAAgB,EAAgB,YAAY,WAAW,EAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,EAAS,EAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,0EAA0E,IAAI,yEAAyE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,wDAAwD,IAAI,yEAAyE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,cAAc,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,cAAc,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,uGAAuG,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,uLAAuL,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,oGAAoG,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,UAAU,OAAO,SAAS,MAAM,SAAS,aAAa,UAAU,IAAI,2EAA2E,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,GAAc,GAAG,EAAwBC,GAAkB,CAAC,CAAC,CAAC,6BAA6B,GAAK,CAAC,ICVvxC,SAAS,GAAqB,EAAU,GAAG,EAAS,CAAC,IAAM,EAAc,EAAE,CAAsF,OAArF,GAAU,QAAQ,GAAS,GAAS,OAAO,OAAO,EAAc,EAAU,GAAS,CAAC,CAAQ,uDAAvlC,IAAoQ,IAAkE,IAA4B,KAA6J,KAAyH,KAAuH,CAAM,GAAoB,EAAS,EAAe,CAAO,GAAgB,CAAC,UAAU,CAAC,MAAM,GAAK,CAAC,CAAO,GAAkB,eAAqB,GAAkB,CAAC,UAAU,mBAAmB,CAA0V,GAAY,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,QAAQ,CAAO,IAAoB,EAAE,IAAI,yBAAyB,IAAU,IAAY,CAAC,QAAM,cAAY,CAAC,IAAM,EAAOC,EAAiB,EAAoB,CAAO,EAAW,GAAO,EAAO,WAAiB,EAAaC,OAAmB,CAAC,GAAG,EAAO,aAAW,EAAE,CAAC,KAAK,UAAU,EAAW,CAAC,CAAC,CAAC,OAAoB,EAAK,EAAoB,SAAS,CAAC,MAAM,EAAsB,WAAS,CAAC,EAAS,GAAS,EAAO,OAAOC,EAAe,CAAO,IAAU,CAAC,QAAM,QAAM,eAAa,SAAO,OAAK,KAAG,OAAK,QAAM,QAAM,GAAG,MAAgB,CAAC,GAAG,EAAM,UAAU,GAAO,EAAM,WAAW,wEAAwE,UAAU,GAAO,EAAM,WAAW,cAAc,UAAU,GAAO,EAAM,UAAU,UAAU,GAAM,EAAM,WAAWC,GAAa,UAAU,GAAc,EAAM,WAAW,8EAA8E,UAAU,GAAM,EAAM,UAAU,EAAS,IAAwB,EAAM,IAAe,EAAM,iBAAwB,EAAS,KAAK,IAAI,CAAC,EAAM,iBAAwB,EAAS,KAAK,IAAI,CAYr6E,EAAgB,EAZq7E,EAAiB,SAAS,EAAM,EAAI,CAAC,IAAM,EAAYC,EAAO,KAAK,CAAO,EAAW,GAAK,EAAkB,EAAgBC,GAAa,CAAM,CAAC,eAAa,aAAW,IAAe,CAAyB,IAAsB,CAAC,GAAK,CAAC,QAAM,UAAA,EAAU,WAAS,UAAQ,YAAU,YAAU,YAAU,YAAU,YAAU,YAAU,GAAG,GAAW,GAAS,EAAM,CAAM,CAAC,cAAY,aAAW,sBAAoB,kBAAgB,iBAAe,YAAU,kBAAgB,aAAW,YAAU,GAAgB,CAAC,eAAe,YAAY,mBAAgB,IAAI,EAAW,UAAQ,qBAAkB,CAAC,CAAO,EAAiB,GAAuB,EAAM,EAAS,CAAM,CAAC,wBAAsB,SAAO,GAAyB,EAAY,CAAO,EAAa,EAAsB,MAAM,GAAG,IAAO,CAAoC,GAAnC,EAAgB,CAAC,UAAU,GAAM,CAAC,CAAI,GAAqB,MAAM,EAAU,GAAG,EAAK,GAAU,GAAM,MAAO,IAAS,CAA2D,GAAkB,EAAG,GAAlDC,GAA6F,CAAO,OAAoB,IAAiB,kBAAmD,OAAqB,IAAiB,kBAA6C,OAAoB,EAAK,EAAY,CAAC,GAAG,GAAU,EAAgB,SAAsB,EAAK,GAAS,CAAC,QAAQ,EAAS,QAAQ,GAAM,SAAsB,EAAK,GAAW,CAAC,MAAM,GAAY,SAAsB,EAAK,GAAK,CAAC,KAAK,EAAU,YAAY,GAAK,OAAO,YAAY,aAAa,GAAM,QAAQ,YAAY,SAAsB,EAAM,EAAO,EAAE,CAAC,GAAG,EAAU,GAAG,EAAgB,UAAU,GAAG,EAAG,GAAkB,iBAAiBC,EAAU,EAAW,CAAC,gBAAgB,mBAAmB,YAAY,iBAAiB,GAAsB,mBAAiB,SAAS,YAAY,MAAM,EAAa,IAAI,EAAW,MAAM,CAAC,GAAG,EAAM,CAAC,GAAG,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,IAAA,GAAU,CAAC,CAAC,EAAY,EAAe,CAAC,SAAS,CAAc,EAAM,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,aAA8B,mBAAiB,SAAS,YAAY,SAAS,CAAc,EAAK,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,aAA8B,mBAAiB,SAAS,YAAY,MAAM,CAAC,QAAQ,GAAG,CAAC,SAAsB,EAAK,GAAS,CAAC,SAAS,GAAK,UAAU,gBAAgB,UAAU,EAA2B,mBAAiB,SAAS,YAAY,MAAM,CAAC,WAAW,wEAAwE,CAAC,kBAAkB,GAAmB,CAAC,CAAC,CAAC,CAAc,EAAK,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,aAA8B,mBAAiB,SAAS,YAAY,SAAsB,EAAK,GAAS,CAAC,SAAS,GAAK,UAAU,gBAAgB,UAAU,EAA2B,mBAAiB,SAAS,YAAY,MAAM,CAAC,WAAW,wEAAwE,CAAC,kBAAkB,GAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAc,EAAM,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,aAA8B,mBAAiB,SAAS,YAAY,SAAS,CAAC,IAAa,EAAe,EAAKC,EAAS,CAAC,sBAAsB,GAAK,SAAsB,EAAKN,EAAe,CAAC,SAAsB,EAAK,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,yEAAyE,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,iBAAiB,mBAAmB,cAAc,MAAM,CAAC,QAAQ,CAAkB,mBAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,gDAAgD,6BAA6B,MAAM,2CAA2C,EAAU,CAAC,KAAK,EAAU,kBAAkB,MAAM,mBAAmB,GAAK,CAAC,CAAC,IAAc,EAAe,EAAK,EAA0B,CAAC,SAAsB,EAAK,EAA8B,CAAC,UAAU,0BAA0B,iBAAiB,GAAK,iBAAiB,GAAsB,mBAAiB,SAAS,sBAAsB,OAAO,YAAY,kBAAkB,GAAK,QAAQ,YAAY,SAAsB,EAAK,EAAe,CAAC,UAAU,CAAC,MAAM,IAAI,OAAO,GAAM,QAAQ,cAAc,CAAC,WAAW,gEAAgE,MAAM,EAAU,KAAK,CAAC,WAAW,0BAA0B,SAAS,OAAO,UAAU,SAAS,WAAW,IAAI,cAAc,SAAS,WAAW,OAAO,UAAU,SAAS,CAAC,KAAK,OAAO,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,QAAQ,CAAC,WAAW,GAAK,UAAU,GAAM,CAAC,eAAe,EAAU,iBAAiB,EAAE,MAAM,GAAG,IAAI,IAAI,KAAK,EAAU,WAAW,GAAK,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAG,CAAW,CAAC,kFAAkF,gFAAgF,oTAAoT,gTAAgT,0MAA0M,4MAA4M,uRAAuR,iHAAiH,wGAAwG,sFAAsF,GAAGO,EAAgB,CAY3yR,eAAe,IAAgB,EAAgB,EAAgB,YAAY,SAAS,EAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,EAAoB,EAAgB,CAAC,UAAU,CAAC,aAAa,cAAc,gBAAgB,GAAM,MAAM,QAAQ,KAAK,EAAY,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,wCAAwC,SAAS,uBAAuB,CAAC,YAAY,uBAAuB,MAAM,OAAO,KAAK,EAAY,cAAc,CAAC,UAAU,CAAC,aAAa,+FAA+F,MAAM,QAAQ,KAAK,EAAY,MAAM,CAAC,UAAU,CAAC,aAAa,oGAAoG,MAAM,iBAAiB,KAAK,EAAY,MAAM,CAAC,UAAU,CAAC,MAAM,OAAO,KAAK,EAAY,KAAK,CAAC,UAAU,CAAC,MAAM,QAAQ,KAAK,EAAY,aAAa,CAAC,CAAC,CAAC,EAAS,EAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,0EAA0E,IAAI,yEAAyE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,wDAAwD,IAAI,yEAAyE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,cAAc,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,cAAc,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,uGAAuG,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,uLAAuL,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,QAAQ,aAAa,oGAAoG,IAAI,wEAAwE,OAAO,MAAM,CAAC,CAAC,cAAc,aAAa,OAAO,SAAS,MAAM,SAAS,aAAa,aAAa,IAAI,kGAAkG,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,GAAoB,GAAG,EAAwBC,EAAkB,CAAC,CAAC,CAAC,6BAA6B,GAAK,CAAC,ICb/1F,SAAgB,GAAU,GAAG,EAAO,CAAC,IAAM,EAAS,EAAa,SAAS,GAAG,EAAa,OAAa,EAAoB,IAAS,OAAkB,EAAS,IAAa,CAAM,CAAC,EAAY,GAAgBC,MAAa,GAAmB,EAAO,IAAI,GAAuB,CAAC,CAAC,CAAC,MAAc,CAAC,GAAG,CAAC,EAAS,OAAO,IAAM,EAAI,SAAS,KAAK,cAAc,aAAa,CAAC,GAAG,CAAC,EAAI,OAAO,IAAM,EAAS,IAAI,qBAAqB,CAAC,EAAe,GAAmB,EAAO,IAAI,GAAuB,CAAC,CAAC,EAAG,CAAmE,OAAlE,EAAS,QAAQ,EAAI,CAAC,WAAW,GAAK,gBAAgB,CAAC,QAAQ,CAAC,CAAC,KAAW,EAAS,YAAY,EAAG,EAAO,CAAC,IAAM,EAAcC,MAAY,EAAO,IAAI,GAAuB,CAAC,CAAC,EAAO,CAAC,CAAC,GAAG,EAAc,OAAO,EAAO,IAAI,GAAO,GAAoB,EAAM,CAAC,CAAE,IAAI,EAAO,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAO,OAAO,IAAI,CAAC,IAAM,EAAM,EAAO,GACt+B,GAAG,OAAO,GAAQ,SAAS,CAAC,EAAO,KAAK,EAAM,CAAC,SAAU,IAAM,EAAa,EAAc,GAAS,EAAY,EAAY,GAAiB,GAAc,EAAa,EAAO,KAAK,EAAS,EAAY,MAAM,EAAY,OAAO,EAAM,EAAY,OAAO,EAAM,CAAO,EAAO,KAAK,EAAM,CAAG,OAAO,EACnS,SAAS,GAAmB,EAAc,CAAC,IAAM,EAAS,EAAa,SAAS,GAAG,EAAa,OAAa,EAAO,EAAE,CAAK,EAAU,EAAE,CAAK,EAAS,EAAE,CAAC,GAAG,GAAU,OAAO,SAAW,IAAY,CAAC,IAAM,EAAI,SAAS,KAAK,cAAc,aAAa,CAAC,GAAG,EAAI,CAAC,IAAM,EAAM,EAAI,aAAa,QAAQ,CAAC,GAAG,EAAM,CAAC,IAAM,EAAK,GAAe,EAAM,CAAC,EAAU,EAAK,EAAS,QAAY,CAAC,GAAK,CAAC,QAAM,QAAM,IAAoB,CAAC,EAAU,GAAe,EAAM,CAAC,EAAS,GAAe,EAAK,CAC/R,OAAzK,IAAI,IAAI,CAAC,GAAG,OAAO,KAAK,EAAU,CAAC,GAAG,OAAO,KAAK,EAAS,CAAC,CAAC,CAAa,QAAQ,GAAS,CAAC,EAAO,GAAS,CAAC,MAAM,EAAU,IAAU,GAAG,KAAK,EAAS,IAAU,GAAG,EAAG,CAAQ,EAAQ,SAAS,IAAoB,CAAC,IAAI,EAAa,GAAO,EAAY,GAAG,GAAG,OAAO,SAAW,IAAY,CAAC,IAAM,EAAO,SAAS,KAAK,iBAAiB,0FAA0F,CAAC,IAAI,IAAM,KAAS,EAAO,CAAC,IAAM,EAAM,EAAM,OAAO,SAAS,GAAG,CAAC,EAAM,SAAS,IAAM,EAAW,EAAE,CAAC,IAAI,IAAM,KAAQ,EAAO,GAAG,aAAgB,aAAc,EAAW,KAAK,CAAC,EAAK,GAAM,CAAC,SAAU,aAAgB,cAAiB,EAAK,gBAAgB,mCAAoC,IAAM,KAAW,EAAK,SAAa,aAAmB,cAAc,EAAW,KAAK,CAAC,EAAQ,GAAK,CAAC,CAAM,IAAI,GAAK,CAAC,EAAK,KAAe,EAAW,CAAC,IAAMC,EAAI,EAAK,QAA+C,GAAG,CAA5BA,EAAI,SAAS,WAAW,CAAa,SAAS,IAAM,EAAO,EAAY,EAAK,eAAe,OAAO,EAAK,eAAe,iCAAuC,EAAQ,CAAC,GAAa,EAAK,eAAe,OAAU,MAAC,GAAQ,CAAC,KAAoB,EAAyB,IAAYA,EAAI,UAAUA,EAAI,QAAQ,IAAI,CAAC,EAAEA,EAAI,YAAY,IAAI,CAAC,CAAC,MAAM,CAA0B,IAAaA,EAAI,UAAUA,EAAI,QAAQ,IAAI,CAAC,EAAEA,EAAI,YAAY,IAAI,CAAC,CAAC,MAAM,CAAM,GAAa,GAAa,MAAO,GAAG,GAAa,EAAa,OAAQ,MAAM,CAAC,MAAM,EAAa,KAAK,EAAY,CAAE,SAAgB,IAAa,CAAC,IAAM,EAAiB,IAAS,QAAa,EAAO,SAAS,OAAO,SAAS,mBAAmB,CAAM,CAAC,EAAW,GAAeF,MAAwB,IAAS,OAAoB,GAAe,GAAW,OAAO,SAAW,IAAoB,SAAS,KAAK,aAAa,oBAAoB,GAAG,OAAoB,EAAO,WAAW,+BAA+B,CAAC,QAAW,CACtqD,OADuqD,MAAc,CAAC,GAAG,EAAU,CAAC,IAAM,EAAS,IAAI,iBAAiB,GAAW,CAAC,EAAU,QAAQ,GAAU,CAAI,EAAS,gBAAgB,qBAAiF,EAAhD,SAAS,KAAK,aAAa,oBAAoB,GAAuB,OAAO,EAAI,EAAG,CAAyF,OAAxF,EAAS,QAAQ,SAAS,KAAK,CAAC,WAAW,GAAK,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,KAAW,EAAS,YAAY,KAAM,CAAC,IAAM,EAAW,EAAO,WAAW,+BAA+B,CAAO,EAAa,GAAG,CAAC,EAAc,EAAE,QAAQ,EACrtE,OAAzG,EAAW,UAAU,GAAY,EAAc,EAAW,QAAQ,CAAE,EAAW,YAAY,EAAa,KAAW,EAAW,eAAe,EAAa,GAAI,CAAC,EAAU,CAAC,CAAQ,EAAY,SAAS,GAAuB,EAAU,CAAC,GAAG,CAAC,GAAW,CAAC,EAAU,WAAW,OAAO,CAAE,MAAM,GAAI,IAAM,EAAM,GAAiB,KAAK,EAAU,CAAgE,OAA5D,GAA0B,EAAM,IAAkC,GAAI,SAAS,GAAe,EAAQ,CAAC,IAAM,EAAK,EAAE,CAAiN,OAA5M,GAAuC,EAAQ,MAAM,IAAI,CAAC,OAAO,QAAQ,CAAc,QAAQ,GAAa,CAAC,GAAK,CAAC,EAAK,GAAO,EAAY,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,CAAI,GAAM,IAAO,EAAK,GAAM,IAAS,CAA5L,EAA0M,SAAS,GAAoB,EAAO,CAC1sB,GAAG,CAAC,GAAQ,CAAC,EAAO,WAAW,OAAO,CAAE,OAAO,EAG/C,IAAM,EADQ,EAAO,MAAM,EAAE,GAAG,CACZ,MAAM,IAAI,CAG9B,OAFG,EAAM,OAAO,EACT,EAAM,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,CAChC,4BAX2B,IAA8C,CAAM,GAAiB,oFCAtG,SAAS,GAAiB,EAAI,EAAI,EAAM,CAAmI,OAA/H,KAAO,EAAK,OAAO,eAAe,EAAI,EAAI,CAAO,QAAM,WAAW,GAAK,aAAa,GAAK,SAAS,GAAK,CAAC,CAAO,EAAI,GAAK,EAAc,EAQ/K,SAAwB,GAAiB,EAAM,CAAC,GAAK,CAAC,SAAO,kBAAgB,QAAM,OAAK,SAAO,QAAM,OAAK,gBAAc,EAAY,EAAS,EAAa,SAAS,GAAG,EAAa,OAAa,EAAM,EAAM,OAAO,GAAoB,EAAS,GAAO,OAAO,GAAO,OAAO,OAAO,GAAO,MAAM,QAAQ,GAAO,OAAO,SAAS,OAAa,EAAa,EAAM,OAAO,QAAc,EAAc,EAAa,QAAQ,EAAM,cAAmB,CAAC,EAAK,GAASG,EAAS,GAAG,CAAO,EAAUC,EAAO,KAAK,CAAO,EAAOA,EAAO,KAAK,CAAO,EAAcA,EAAO,KAAK,CAAO,EAAWA,EAAO,KAAK,CAAO,EAAIA,EAAO,KAAK,CAAO,EAAQA,EAAO,KAAK,CAAO,EAAQA,EAAO,KAAK,CAAO,EAAkBA,EAAO,KAAK,CAAM,CAAC,EAAE,EAAQ,EAAE,EAAQ,YAAY,GAAkB,eAAe,GAAsB,GAAgB,GAAQ,WAAW,EAAE,EAAQ,CAAO,EAAcA,EAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,qBAAkB,YAAY,EAAM,YAAY,aAAa,EAAM,aAAa,mBAAmB,EAAM,mBAAmB,gBAAc,aAAa,EAAM,aAAa,UAAU,EAAM,UAAU,KAAK,EAAM,KAAK,WAAW,EAAM,WAAW,SAAS,EAAM,SAAS,YAAY,GAAQ,MAAM,aAAa,GAAQ,OAAO,YAAY,GAAQ,MAAM,OAAK,CAAC,CAAM,CAAC,GAAY,IAAa,GAAU,EAAa,OAAO,EAAM,OAAO,EAAa,OAAO,EAAM,OAAO,CAAM,CAAC,EAAY,GAAaC,MAAY,CAAC,IAAI,EAAM,GAAY,CAAC,IAAI,EAAM,GAAY,CAAC,CAAC,CAAC,GAAY,GAAY,CAAC,CAAO,GAAqBD,MAAW,GAAwB,EAAM,KAAK,EAAY,EAAY,CAAC,CAAO,GAAWA,EAAO,KAAK,QAAQ,CAAC,CAAM,CAAC,EAAI,IAAQD,EAAS,KAAK,CAAM,CAAC,EAAU,GAAcA,EAAS,KAAK,CAAC,MAAc,CAAC,GAAG,GAAO,IAAI,CAAC,IAAMG,EAAI,IAAI,MAAkF,MAA5E,GAAI,YAAY,YAAY,EAAI,WAAW,CAAC,GAAOA,EAAI,EAAG,EAAI,IAAI,EAAM,QAAc,CAAC,EAAI,OAAO,WAAa,GAAO,KAAK,EAAI,CAAC,EAAM,CAAC,CAAC,MAAc,CAAC,GAAG,GAAQ,QAAQ,SAAS,GAAQ,OAAO,IAAI,CAAC,IAAMA,EAAI,IAAI,MAA+F,MAAzF,GAAI,YAAY,YAAY,EAAI,WAAW,CAAC,EAAaA,EAAI,EAAG,EAAI,IAAI,EAAO,MAAM,QAAc,CAAC,EAAI,OAAO,WAAa,EAAa,KAAK,EAAI,CAAC,GAAQ,MAAM,GAAQ,MAAM,CAAC,CAAC,MAAc,CAAC,GAAqB,QAAQ,GAAwB,EAAM,KAAK,EAAY,EAAY,EAAG,CAAC,EAAY,EAAY,EAAM,KAAK,CAAC,CAAC,MAAc,CAAC,EAAc,QAAQ,CAAC,GAAG,EAAc,QAAQ,YAAY,EAAM,YAAY,aAAa,EAAM,aAAa,mBAAmB,EAAM,mBAAmB,gBAAc,aAAa,EAAM,aAAa,UAAU,EAAM,UAAU,KAAK,EAAM,KAAK,WAAW,EAAM,WAAW,SAAS,EAAM,SAAS,OAAK,YAAY,GAAQ,MAAM,aAAa,GAAQ,OAAO,YAAY,GAAQ,MAAM,EAAG,CAAC,EAAM,YAAY,EAAM,aAAa,EAAM,mBAAmB,EAAc,EAAM,aAAa,EAAM,UAAU,EAAM,KAAK,EAAM,WAAW,EAAM,SAAS,EAAK,GAAQ,MAAM,GAAQ,OAAO,GAAQ,MAAM,CAAC,CAAC,MAAc,CACngF,GAA1T,EAAU,UAAS,EAAU,QAAQ,SAAS,cAAc,SAAS,CAAC,EAAO,QAAQ,EAAU,QAAQ,WAAW,KAAK,CAAC,mBAAmB,GAAK,CAAC,EAAM,EAAc,UAAS,EAAc,QAAQ,SAAS,cAAc,SAAS,CAAC,EAAW,QAAQ,EAAc,QAAQ,WAAW,KAAK,CAAC,mBAAmB,GAAK,CAAC,EAAK,GAAK,EAAO,SAAS,EAAW,QAAQ,CAAC,IAAM,EAAU,SAAS,CAAC,GAAG,CAAC,GAAK,CAAC,QAAM,cAAY,GAAc,EAAI,EAAc,QAAQ,EAAU,QAAQ,EAAO,QAAQ,EAAQ,EAAQ,EAAqB,EAAQ,EAAU,GAAW,CAC3iB,GAD4iB,EAAQ,EAAM,CACvjB,CAAC,EAAa,CAAC,GAAK,CAAC,YAAY,GAAY,EAAc,QAAc,EAAY,KAAK,MAAM,EAAI,OAAO,EAAI,MAAM,EAAW,GAAuB,EAAK,CAAC,CAAC,EAAc,QAAQ,MAAM,EAAW,EAAc,QAAQ,OAAO,EAAY,IAAM,EAAU,EAAW,QAAQ,aAAa,EAAE,EAAE,EAAW,EAAY,CAAO,EAAK,EAAU,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,EAAW,OAAO,IAAI,CAAC,IAAM,EAAK,EAAW,GAAS,EAAO,EAAM,OAAO,WAAW,EAAM,YAAY,IAAI,EAAM,UAAU,IAAU,EAAO,EAAM,OAAO,WAAW,EAAM,YAAY,IAAI,EAAM,EAAQ,AAC3gB,EAD8gB,IAAS,EACjjB,EAAK,IAAI,EAAO,EAAE,EAAgB,KAAK,IAAI,KAAK,IAAI,GAAS,EAAK,IAAI,KAAK,IAAI,EAAO,EAAO,CAAC,KAAK,IAAI,EAAO,EAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAE,IAAI,EAAkB,GAAS,EAAO,EAAY,GAAS,EAAO,EAAY,GAAqB,QAAQ,EAAQ,CAAM,CAAC,IAAE,IAAE,IAAE,KAAG,EAAM,MAAM,EAAkB,CAAO,EAAI,EAAE,EAAE,EAAK,GAAK,MAAM,EAAE,CAAC,EAAE,EAAE,EAAK,EAAI,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,EAAK,EAAI,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,EAAK,EAAI,GAAG,OAAO,GAAI,SAAS,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,IAAK,EAAW,QAAQ,aAAa,EAAU,EAAE,EAAE,QAAS,EAAM,CAAC,QAAQ,MAAM,0BAA0B,EAAM,GAAQ,EAAY,GACnjB,EAAa,EAAQ,GAAG,aAAa,CAAC,EAAY,IAAO,CAAO,EAAa,EAAQ,GAAG,aAAa,CAAC,EAAY,IAAO,CACzH,EAAW,gBAAgB,CAAC,GAAG,EAAY,CAAC,IAAM,EAAc,CAAC,GAAG,EAAc,QAAQ,kBAAkB,EAAqB,QAAQ,QAAQ,EAAQ,KAAK,CAAC,QAAQ,EAAQ,KAAK,CAAC,CAC1K,OAAO,QAAQ,EAAc,CAAC,MAAM,CAAC,EAAI,KAAS,EAAc,QAAQ,KAAO,EAAM,GAAgB,GAAW,CAAC,EAAc,QAAQ,GAAe,EAAY,KAAS,GAAG,CAKnL,OAJT,GAAc,EAAa,SAAS,GAAG,EAAE,GAAU,EAAa,UAAU,KAC1E,EAAkB,SAAS,cAAc,EAAkB,QAAQ,CACtE,EAAkB,QAAQ,gBAAgB,CAAC,GAAW,QAAQ,KAAK,QAAQ,CAAC,GAAW,EAAG,EAAa,SAAS,IAAI,EAC3E,EAAkB,WAA3D,cAAc,EAAkB,QAAQ,CAA2B,MACnE,GAAW,KAAW,CAAC,cAAc,EAAW,CAAC,AAAuE,EAAkB,WAA3D,cAAc,EAAkB,QAAQ,CAA2B,MAAM,GAAc,CAAC,GAAc,EAAI,UAAU,CAAI,EAAU,SAAS,EAAU,QAAQ,QAAQ,CAAK,EAAc,SAAS,EAAc,QAAQ,QAAQ,CAAE,AAAuE,EAAkB,WAA3D,cAAc,EAAkB,QAAQ,CAA2B,QAAU,CAAC,EAAI,EAAM,EAAQ,EAAQ,EAAU,EAAa,CAAC,CAAC,MAAc,CAC7d,GAAG,EAAI,SAAS,EAAQ,QAAQ,CAAC,IAAM,MAAgB,CAAC,IAAM,EAAe,EAAI,SAAS,YAAkB,EAAgB,EAAI,SAAS,aAAmB,EAAU,EAAQ,SAAS,YAAkB,EAAW,EAAQ,SAAS,aAAa,GAAG,GAAW,EAAW,CAAC,IAAI,EAAM,EAAM,EAAM,GAAO,OAAO,OAAW,EAAO,GAAO,QAAQ,OAAO,OAAO,EAAP,CAAiB,IAAI,QAAQ,EAAM,EAAe,EAAU,EAAO,GAAO,QAAQ,GAAG,EAAW,EAAM,IAAI,MAAM,IAAI,SAAS,EAAM,EAAgB,EAAW,EAAM,GAAO,OAAO,GAAG,EAAU,EAAM,IAAI,MAAM,IAAI,OAAO,IAAM,EAAW,EAAe,EAAgB,EAAY,EAAgB,EAAW,EAAM,IAAS,MAAM,KAAK,IAAI,EAAW,EAAY,CAAC,KAAK,IAAI,EAAW,EAAY,CAAC,MAAM,IAAI,OAAO,EAAM,EAAE,MAAoE,IAAM,EAAU,GAA7D,IAAW,OAAO,GAAG,wBAAqD,SAAS,EAAM,GAAG,EAAQ,QAAQ,MAAM,UAAU,EAAa,EAAQ,UAAS,EAAQ,QAAQ,MAAM,UAAU,GAAW,EAAI,QAAQ,MAAM,MAAM,EAAM,EAAI,QAAQ,MAAM,OAAO,IAAgB,EAAe,IAAI,eAAe,EAAY,CAC5jC,OAD6jC,EAAe,QAAQ,EAAI,QAAQ,CAAC,EAAe,QAAQ,EAAQ,QAAQ,CACtpC,GAAa,KAAW,CAAC,EAAe,YAAY,IAAM,CAAC,EAAK,EAAS,EAAO,CAAC,CAAC,IAAM,EAAU,CAAC,MAAM,cAAc,OAAO,cAAc,MAAM,EAAM,OAAO,QAAQ,EAAM,MAAM,cAAc,WAAW,OAAO,WAAW,MAAM,UAAU,SAAS,gBAAgB,SAAS,mBAAmB,eAAe,GAAG,IAAW,OAAoF,EAAE,CAA/E,CAAC,SAAS,WAAW,IAAI,MAAM,KAAK,MAAM,UAAU,wBAAwB,CAAI,GAAI,EAAiN,EAAE,CAAtM,CAAC,gBAAgB,OAAO,EAAc,SAAS,WAAW,CAAC,GAAG,iBAAiB,YAAY,eAAe,YAAY,eAAe,YAAY,eAAe,OAAO,qBAAqB,OAAO,CAAI,GAAG,EAAK,CAAC,OAAoB,EAAM,MAAM,CAAK,MAAI,MAAM,CAAC,SAAS,WAAW,SAAS,SAAS,kBAAgB,aAAa,EAAM,OAAO,GAAG,EAAM,CAAC,SAAS,CAAC,GAAM,KAAK,GAAG,GAAM,QAAQ,GAAgB,EAAK,MAAM,CAAC,IAAI,EAAQ,MAAM,CAAC,SAAS,WAAW,OAAO,QAAQ,EAAK,KAAK,KAAK,GAAG,EAAU,QAAQ,EAAK,QAAQ,CAAC,cAAc,OAAO,SAAS,EAAK,CAAC,CAAc,EAAK,MAAM,CAAC,IAAI,EAAQ,MAAM,CAAC,GAAG,EAAU,CAAC,aAAa,GAAO,IAAI,SAAS,EAAK,CAAC,CAAC,CAAC,CAAC,CAErjC,SAAS,GAAuB,EAAK,CAAC,IAAW,GAAa,IAAM,EAAK,SAAS,cAAc,MAAM,CAAC,EAAK,MAAM,SAAS,WAAW,EAAK,MAAM,WAAW,SAAS,EAAK,MAAM,WAAW,SAAS,EAAK,MAAM,WAAW,EAAK,WAAW,EAAK,MAAM,WAAW,EAAK,WAAW,EAAK,MAAM,SAAS,EAAK,SAAS,EAAK,MAAM,WAAW,EAAK,WAAW,EAAK,MAAM,cAAc,EAAK,cAAc,EAAK,YAAY,IAAI,SAAS,KAAK,YAAY,EAAK,CAAC,IAAM,EAAM,EAAK,YAAkB,EAAO,EAAK,aAA6C,OAAhC,SAAS,KAAK,YAAY,EAAK,CAAQ,EAAM,EACliB,SAAS,EAAM,EAAM,EAAI,EAAI,CAAC,OAAO,KAAK,IAAI,EAAI,KAAK,IAAI,EAAI,EAAM,CAAC,CAEtE,SAAS,GAAmB,EAAI,EAAM,EAAO,EAAI,EAAQ,EAAQ,EAAqB,EAAa,EAAU,CAAC,GAAK,CAAC,cAAY,cAAY,eAAa,YAAY,EAAW,aAAW,SAAS,EAAc,KAAK,EAAU,aAAa,EAAc,QAAM,EAAY,EAAe,KAAK,EAAc,MAAM,KAAK,IAAI,IAAsB,EAAgB,GAAuB,EAAK,CAAO,EAAY,KAAK,MAAM,EAAI,OAAO,EAAI,MAAM,EAAW,EAAgB,CAAsJ,GAArJ,EAAO,MAAM,EAAW,EAAO,OAAO,EAAY,EAAI,OAAO,EAAU,EAAE,QAAQ,EAAU,KAAK,OAAO,EAAI,UAAU,EAAI,EAAE,EAAE,EAAW,EAAY,CAAI,GAAa,EAAqB,QAAQ,CAClpB,IAAM,EAAQ,EAAQ,KAAK,CAAC,EAAiB,EAAQ,EAAQ,KAAK,EAAE,EAAY,GAAyD,OAAxC,EAAI,MAAM,CAAC,EAAI,MAAM,EAAE,EAAgB,CAAQ,EAAP,CAAoB,IAAI,WAAW,CAC5K,IAAM,EAAS,EAAI,qBAAqB,EAAQ,EAAQ,EAAE,EAAQ,EAAQ,EAAY,EAAE,CAAI,GAAc,EAAS,aAAa,EAAE,yBAAyB,CAAC,EAAS,aAAa,EAAE,yBAAyB,GAAO,EAAS,aAAa,EAAE,mBAAmB,CAAC,EAAS,aAAa,EAAE,mBAAmB,EAAE,EAAI,UAAU,EAAS,EAAI,SAAS,EAAE,EAAE,EAAW,EAAY,EAAgB,CAAC,MAAO,IAAI,SAAU,EAAI,UAAU,EAAa,yBAAyB,mBAAmB,EAAI,WAAW,CAAC,EAAI,IAAI,EAAQ,EAAQ,EAAY,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,EAAI,MAAM,CAAC,MAAO,IAAI,QAAS,GAAG,EAAU,CACxkB,IAAM,EAAa,EAAU,OAAO,EAAU,MAAM,EACpD,EAAI,MAAM,CAAI,IAAc,EAAI,OAAO,aAAa,EAAI,UAAU,EAAU,EAAQ,EAAY,EAAE,EAAQ,EAAa,EAAE,EAAY,EAAa,CAAC,EAAI,SAAS,CAAE,MAAQ,EAAI,SAAS,CAA+D,IAAM,EAAnD,EAAI,aAAa,EAAE,EAAE,EAAW,EAAY,CAAsB,KAAW,EAAK,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,GAAG,EAAE,CAAC,IAAI,EAAI,KAAK,EAAK,GAAG,KAAK,EAAK,EAAE,GAAG,KAAK,EAAK,EAAE,GAAM,IAAc,EAAI,IAAI,GAAI,IAAI,EAAS,EAAM,GAAgB,EAAI,KAAK,IAAI,EAAW,EAAE,IAAI,CAAC,EAAK,KAAK,EAAS,CAAE,MAAM,CAAC,OAAK,cAAY,CAC7f,SAAS,GAAc,EAAI,EAAM,EAAO,EAAI,EAAQ,EAAQ,EAAqB,EAAa,EAAU,EAAW,CAAC,GAAK,CAAC,YAAY,EAAW,cAAc,EAAgB,aAAa,EAAQ,qBAAmB,aAAW,EAAY,EAAY,IAAY,SAAe,EAAS,IAAU,SAAS,GAAoB,KAAK,EAAc,GAAe,EAAQ,EAAS,OAAY,CAAC,KAAK,EAAa,eAAa,GAAmB,EAAI,EAAM,EAAO,EAAI,EAAQ,EAAQ,EAAqB,EAAa,EAAU,CAAO,EAAK,CAAC,GAAG,EAAa,CAAK,EAAM,GAAG,GAAG,IAAkB,WAAW,IAAkB,QACrmB,IAAI,IAAI,EAAE,EAAE,EAAE,EAAY,IAAI,CAAC,IAAI,EAAK,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAE,EAAW,IAAI,CAAC,IAAM,EAAI,EAAE,EAAWA,EAAE,GAAG,GAAa,EAAa,KAAO,IAAI,CAAC,GAAM,IAAI,SAAU,IAAI,EAAc,KAAK,MAAM,EAAK,GAAK,KAAK,EAAQ,GAAG,CAAC,GAAM,EAAS,OAAO,EAAc,CAAC,IAAM,EAAS,GAAe,EAAQ,GAAG,IAAU,EAAM,EAAK,GAAK,EAAYA,EAAE,EAAE,IAAY,EAAK,EAAI,GAAG,EAAM,EAAK,EAAI,GAAU,EAAE,GAAT,EAAa,EAAE,IAAI,EAAKA,EAAE,GAAG,GAAG,EAAE,EAAE,IAAa,EAAK,EAAI,EAAE,GAAY,EAAM,EAAK,EAAI,EAAE,GAAmB,EAAE,GAAT,EAAa,EAAE,IAAI,EAAK,EAAE,EAAE,IAAa,EAAK,EAAI,GAAY,EAAM,EAAK,EAAI,GAAmB,EAAE,GAAT,EAAa,EAAE,IAAI,EAAKA,EAAE,EAAE,GAAY,EAAE,EAAE,IAAa,EAAK,EAAI,EAAW,GAAG,EAAM,EAAK,EAAI,EAAW,GAAU,EAAE,GAAT,EAAa,EAAE,IAAI,EAAG,GAAO,EAAK;UAAe,IAAkB,WACvuB,IAAI,IAAI,EAAE,EAAE,EAAE,EAAY,IAAI,CAAC,IAAI,EAAK,GAAG,IAAI,IAAIA,EAAE,EAAEA,EAAE,EAAW,IAAI,CAAC,IAAM,EAAI,EAAE,EAAWA,EAAE,GAAG,GAAa,EAAa,KAAO,IAAI,CAAC,GAAM,IAAI,SAAU,IAAI,EAAc,KAAK,MAAM,EAAK,GAAK,KAAK,EAAQ,GAAG,CAAC,GAAM,EAAS,OAAO,EAAc,CAAC,IAAM,EAAS,GAAe,EAAQ,GAAG,IAAyC,GAAzB,EAAK,GAAK,GAA+B,EAAKA,EAAE,EAAE,IAAY,EAAK,EAAI,GAAG,EAAM,EAAK,EAAI,GAAG,EAAU,EAAE,IAAI,EAAKA,EAAE,EAAE,IAAY,EAAK,EAAI,GAAG,EAAM,EAAK,EAAI,GAAG,EAAU,EAAE,IAAI,EAAK,EAAE,EAAE,IAAgBA,EAAE,GAAG,IAAG,EAAK,EAAI,EAAE,GAAY,EAAM,EAAK,EAAI,EAAE,GAAY,EAAU,EAAE,IAAI,EAAE,EAAK,EAAI,GAAY,EAAM,EAAK,EAAI,GAAY,EAAU,EAAE,IAAI,CAAIA,EAAE,EAAE,IAAY,EAAK,EAAI,EAAW,GAAG,EAAM,EAAK,EAAI,EAAW,GAAG,EAAU,EAAE,IAAI,GAAM,EAAE,EAAE,IAAa,EAAK,EAAI,EAAE,GAAY,EAAM,EAAK,EAAI,EAAE,GAAY,EAAU,EAAE,IAAI,EAAG,GAAO,EAAK;UAAe,IAAkB,QAAQ,CAAC,IAAM,EAAI,IAAI,GAAa,EAAW,QAAQ,CACr6B,IAAI,IAAI,EAAE,EAAE,EAAE,EAAY,IAAI,CAAC,IAAI,EAAK,GAAG,IAAI,IAAIA,EAAE,EAAEA,EAAE,EAAW,IAAI,CAAC,IAAM,EAAI,EAAE,EAAWA,EAAQ,EAAY,EAAI,MAAM,CAAC,GAAG,GAAa,EAAa,KAAO,IAAI,CAAC,GAAM,IAAI,SAAU,IAAM,GAAO,EAAY,KAAK,IAAI,GAAe,EAAW,EAAM,EAAK,GAAK,EAAM,EAAE,IAAI,CAAK,EAAc,KAAK,MAAM,EAAW,KAAK,EAAQ,GAAG,CAAC,GAAM,EAAS,OAAO,EAAc,CAAE,GAAO,EAAK;WAAe,IAAkB,UAAU,CAC3a,IAAM,EAAM,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAoB,IAAI,IAAI,EAAE,EAAE,EAAE,EAAY,IAAI,CAAC,IAAI,EAAK,GAAG,IAAI,IAAIA,EAAE,EAAEA,EAAE,EAAW,IAAI,CAAC,IAAM,EAAI,EAAE,EAAWA,EAAE,GAAG,GAAa,EAAa,KAAO,IAAI,CAAC,GAAM,IAAI,SAAuG,IAAI,EAAzF,EAAK,GAAK,KAAa,EAAM,EAAE,GAAYA,EAAE,GAAY,IAAK,GAA+C,GAAG,EAAgB,KAAK,IAAI,KAAK,IAAI,EAAgB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAc,KAAK,MAAM,EAAgB,EAAQ,CAAI,GAAe,IAAQ,EAAc,EAAQ,GAAE,GAAM,EAAS,OAAO,EAAc,CAAE,GAAO,EAAK;SACxjB,IAAI,IAAI,EAAE,EAAE,EAAE,EAAY,IAAI,CAAC,IAAI,EAAK,GAAG,IAAI,IAAIA,EAAE,EAAEA,EAAE,EAAW,IAAI,CAAC,IAAM,EAAI,EAAE,EAAWA,EAAE,GAAG,GAAa,EAAa,KAAO,IAAI,CAAC,GAAM,IAAI,SAAU,IAAM,EAAc,KAAK,MAAM,EAAK,GAAK,KAAK,EAAQ,GAAG,CAAC,GAAM,EAAS,OAAO,EAAc,CAAE,GAAO,EAAK;EAAO,MAAM,CAAC,QAAM,WAAW,EAAK,CAAE,SAAS,GAAgB,EAAU,EAAE,EAAa,CAAC,IAAM,EAAmB,CAAC,QAAQ,IAAI,UAAU,GAAS,EAAU,EAAE,IAAI,IAAI,GAAG,CAAC,CAAO,EAAU,IAAY,EAAQ,EAAO,EAAe,EAAE,CAAO,EAAO,EAAe,EAAE,CAAO,EAAQ,EAAU,EAAO,EAAmB,CAAO,EAAQ,EAAU,EAAO,EAAmB,CAAO,EAAmBH,EAAO,EAAE,CAAO,EAAmBA,EAAO,EAAE,CAAM,CAAC,EAAY,GAAgBD,EAAS,GAAM,CAAO,EAAiBC,EAAO,GAAM,CAKvd,OALwd,MAAc,CAAC,IAAM,EAAgB,GAAO,CAAC,GAAG,CAAC,EAAa,QAAQ,OAAO,IAAM,EAAK,EAAa,QAAQ,uBAAuB,CAAOG,EAAE,EAAM,QAAQ,EAAK,KAAW,EAAE,EAAM,QAAQ,EAAK,IAC/8B,EAAS,EAAK,QAAQ,EAAE,EAAEA,EAAE,EAAK,MAAY,EAAS,EAAK,SAAS,EAAE,EAAE,EAAE,EAAK,OAAO,EAAO,IAAI,EAAS,CAAC,EAAO,IAAI,EAAS,CAAK,EAAiB,UAAS,EAAQ,KAAK,EAAS,CAAC,EAAQ,KAAK,EAAS,CAAC,EAAiB,QAAQ,GAAK,EAAe,GAAK,GAAU,MAAiB,CAAC,GAAG,CAAC,EAAa,SAAS,CAAC,EAAiB,QAAQ,OAAO,IAAM,EAAK,EAAa,QAAQ,uBAAuB,CAAO,EAAQ,EAAO,SAAS,EAAO,aAAa,SAAS,gBAAgB,WAAiB,EAAQ,EAAO,SAAS,EAAO,aAAa,SAAS,gBAAgB,UAC9iB,EAAO,EAAQ,EAAmB,QAAc,EAAO,EAAQ,EAAmB,QACxF,EAAmB,QAAQ,EAAQ,EAAmB,QAAQ,EAC9D,IAAM,EAAc,EAAK,QAAQ,EAAE,EAAE,EAAO,EAAK,MAAY,EAAc,EAAK,SAAS,EAAE,EAAE,EAAO,EAAK,OACzG,EAAO,IAAI,EAAO,KAAK,CAAC,EAAc,CAAC,EAAO,IAAI,EAAO,KAAK,CAAC,EAAc,EAAuG,OAApG,EAAO,iBAAiB,YAAY,EAAgB,CAAC,EAAO,iBAAiB,SAAS,EAAa,KAAW,CAAC,EAAO,oBAAoB,YAAY,EAAgB,CAAC,EAAO,oBAAoB,SAAS,EAAa,GAAK,CAAC,EAAa,CAAC,CAAO,CAAC,cAAY,eAAe,EAAiB,EAAE,EAAU,EAAQ,EAAO,EAAE,EAAU,EAAQ,EAAO,CAAE,SAAS,GAAS,EAAM,EAAQ,EAAS,EAAM,EAAO,CAA0F,OAAtF,IAAU,EAAiB,EAAkE,GAAzC,EAAM,IAAU,EAAS,IAAkC,EAAO,GAAQ,SAAS,GAAwB,EAAK,EAAO,EAAO,CAA6F,OAAzF,IAAO,OAAe,EAAM,YAAY,EAAO,IAAI,EAAM,EAAO,EAAE,EAAO,EAAE,EAAO,EAAE,EAAE,CAAC,CAAS,EAAM,YAAY,EAAO,EAAO,kCAzCxiB,IAAuE,IAAqD,IAAoD,KAAoH,CAAM,EAAc,CAAC,SAAS,0EAA0E,SAAS,YAAY,OAAO,QAAQ,OAAO,KAAK,IAAI,mBAAmB,CAAO,GAAc,CAAC,IAAI,uEAAuE,OAAO,wKAAwK,CAAO,GAAa,CAAC,WAAW,6BAA6B,SAAS,OAAO,UAAU,SAAS,WAAW,IAAI,cAAc,MAAM,WAAW,MAAM,CAqBhD,GAAiB,YAAY,oBAAoB,EAAoB,GAAiB,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,KAAK,SAAS,SAAS,GAAK,aAAa,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAY,KAAK,aAAa,WAAW,QAAQ,CAAC,WAAW,SAAS,QAAQ,CAAC,aAAa,CAAC,WAAW,SAAS,QAAQ,CAAC,wBAAwB,GAAK,0BAA0B,WAAW,CAAC,MAAM,CAAC,KAAK,EAAY,gBAAgB,OAAO,GAAO,EAAM,QAAQ,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,YAAY,yBAAyB,CAAC,OAAO,CAAC,KAAK,EAAY,QAAQ,aAAa,GAAM,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAY,gBAAgB,wBAAwB,4GAA4G,CAAC,OAAO,CAAC,KAAK,EAAY,KAAK,aAAa,MAAM,QAAQ,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,OAAO,CAAC,wBAAwB,GAAK,CAAC,KAAK,CAAC,KAAK,OAAO,gBAAgB,YAAY,qBAAqB,GAAM,SAAS,WAAW,aAAa,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,QAAQ,CAAC,QAAQ,WAAW,OAAO,CAAC,aAAa,CAAC,QAAQ,WAAW,OAAO,CAAC,wBAAwB,GAAK,0BAA0B,WAAW,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,aAAa,OAAO,OAAO,GAAO,EAAM,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,aAAa,OAAO,MAAM,UAAU,OAAO,GAAO,EAAM,OAAO,YAAY,EAAM,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,MAAM,WAAW,OAAO,GAAO,EAAM,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAY,MAAM,aAAa,OAAO,MAAM,UAAU,OAAO,GAAO,EAAM,OAAO,YAAY,EAAM,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,MAAM,WAAW,OAAO,GAAO,EAAM,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,OAAO,GAAO,EAAM,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,SAAS,GAAK,KAAK,SAAS,SAAS,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,SAAS,GAAK,KAAK,SAAS,MAAM,SAAS,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,aAAa,GAAK,YAAY,wBAAwB,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,KAAK,IAAI,YAAY,gEAAgE,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAY,MAAM,aAAa,OAAO,SAAS,GAAK,MAAM,aAAa,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,aAAa,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,EAAE,MAAM,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAY,KAAK,aAAa,WAAW,QAAQ,CAAC,WAAW,WAAW,SAAS,SAAS,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,EAAc,SAAS,GAAG,aAAa,EAAc,SAAS,GAAG,WAAW,EAAc,OAAO,GAAG,WAAW,EAAc,OAAO,GAAG,QAAQ,EAAc,IAAI,GAAG,SAAS,CAAC,MAAM,aAAa,CAAC,mBAAmB,CAAC,KAAK,EAAY,OAAO,aAAa,YAAY,YAAY,gBAAgB,MAAM,SAAS,OAAO,GAAO,EAAM,eAAe,SAAS,CAAC,cAAc,CAAC,KAAK,EAAY,KAAK,aAAa,OAAO,QAAQ,CAAC,OAAO,QAAQ,WAAW,UAAU,CAAC,aAAa,CAAC,OAAO,kBAAkB,WAAW,UAAU,CAAC,MAAM,YAAY,OAAO,GAAO,CAAC,CAAC,EAAM,aAAa,CAAC,aAAa,CAAC,KAAK,EAAY,QAAQ,aAAa,GAAM,MAAM,SAAS,CAAC,UAAU,CAAC,KAAK,EAAY,KAAK,aAAa,SAAS,QAAQ,CAAC,OAAO,SAAS,CAAC,aAAa,CAAC,OAAO,SAAS,CAAC,wBAAwB,GAAK,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,eAAe,GAAK,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAY,aAAa,aAAa,MAAM,YAAY,qEAAqE,CAAC,CAAC,CAoB7zI,GAAN,KAAkB,CAAC,MAAM,CAAsC,MAArC,MAAK,KAAK,KAAK,KAAK,MAAM,YAAkB,KAAK,KAAK,GAAG,WAAY,YAAY,EAAK,CAAC,GAAiB,KAAK,OAAO,IAAK,GAAE,CAAC,KAAK,KAAK,EAAK,WAAc,KAAK,MAAM,IAAE,KAAK,MAAM,iBCxCr+B,SAAwB,GAAS,EAAO,EAAa,CAAC,MAAM,CAAC,YAAY,oPAAoP,QAAQ,qEAAqE,OAAO,0BAA0B,YAAY,sEAAsE,MAAM,mBAAmB,oBCApc,SAAwBC,GAAS,EAAO,EAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,UAAU,WAAW,sBAAsB,CAAC,CAAC,KAAK,SAAS,WAAW,gDAAgD,CAAC,CAAC,KAAK,UAAU,WAAW,wBAAwB,CAAC,CAAC,YAAYC,GAAa,EAAO,EAAa,CAAC,YAAY,SAAS,CAAC,UAAU,gBAAgB,UAAU,iBAAiB,UAAU,OAAO,CAAC,OAAO,0BAA0B,gBAAgB,eAAe,YAAY,sEAAsE,MAAMA,GAAa,EAAO,EAAa,CAAC,OAAO,OAAO,SAAS,qBAAqB,0BAA7mB,CAA4nBC,GAAgB,EACjtBC,GAAqB,CAAC,QAAU,CAAC,QAAU,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,IAAI,CAAC,CAAC,gBAAkB,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,IAAI,CAAC,CAAC,mBAAqB,CAAC,KAAO,WAAW,CAAC,CAAA,ICDjK,SAAwBC,GAAS,EAAO,EAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,SAAS,WAAW,sBAAsB,CAAC,CAAC,KAAK,UAAU,WAAW,gDAAgD,CAAC,CAAC,KAAK,UAAU,WAAW,wBAAwB,CAAC,CAAC,YAAYC,GAAa,EAAO,EAAa,CAAC,YAAY,SAAS,EAAE,CAAC,OAAO,0BAA0B,gBAAgB,eAAe,YAAY,sEAAsE,MAAMA,GAAa,EAAO,EAAa,CAAC,OAAO,MAAM,SAAS,qBAAqB,0BAAviB,CAAsjB,GAAgB,EAC3oB,GAAqB,CAAC,QAAU,CAAC,gBAAkB,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,IAAI,CAAC,CAAC,QAAU,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,IAAI,CAAC,CAAC,mBAAqB,CAAC,KAAO,WAAW,CAAC,CAAA"}