{"version":3,"file":"UncodeCollection.Y7-QgQH2.mjs","names":["useState","useMemo","q","React"],"sources":["https:/framerusercontent.com/modules/NktNXvnf4m4T7jKQcOHx/tE0GTXnTLinhu2bnx5vZ/Utilities.js","https:/framerusercontent.com/modules/oaAH7umUjUOTeKmykfom/QUgwaKJzm3ppWZi5RkAd/Stores.js","https:/framerusercontent.com/modules/uaC9hWf3ec7HqMv3sXMc/CvMGzbirJDY4adFEJwd3/Hooks.js","https:/framerusercontent.com/modules/L7TdKQ7OCrUDcI7mEHAV/saJ1D5cYziXCHw3cuoS0/Branding_Tag.js","https:/framerusercontent.com/modules/tb6g3uFMaN9A8Y0Nh5te/NSmLj9GJ3YcGYE7rQwfM/Header.js","https:/framerusercontent.com/modules/yljxQhHHYCclO8DHlyxu/sRhbB6xnGvNiuDPDTHW5/Helper_Frame.js","https:/framer.com/m/Main-Frame-iHC5.js","https:/framer.com/m/Header-Nmng.js","https:/framerusercontent.com/modules/R62RuVCy6eOjzkRZ9wyj/FO0wrP9rWA5aAMot9UBS/Message.js","https:/framer.com/m/Message-9f6V.js","https:/framerusercontent.com/modules/bmCFSKUhALa4QmIOqr6i/BpmPTjkfVB4lOyz9EiXT/List_Item.js","https:/framerusercontent.com/modules/nls243VrfVJRb2K9we5T/bIwdZocajZouuNz8bgX1/To_Do_List.js","https:/framer.com/m/To-Do-List-rlLo.js","https:/framerusercontent.com/modules/9uKQIQp6F4gR5rw7OCHi/Jxw8eNxT3geRyTaspASR/Helpers.js","https:/framer.com/m/Index-nylz.js","https:/framerusercontent.com/modules/wY3qO7OjekxAK7zShbIa/M9h2LWULrqHSKzyKTija/UncodeCollection.js"],"sourcesContent":["// returns boolean if a string is in ISO 8601 format\nexport function isISO8601(str){const isoDateRegex=/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|([+-]\\d{2}:\\d{2}))?$/;return isoDateRegex.test(str);}/**\n * Accepts a text, checks to see if it's in ISO 8601 format, if yes, resets the time and returns ISO 8601 string, otherwise return empty string.\n * @param {string} text - Date as a string in ISO 8601 format.\n * @returns {string} - Returns the same string value with the time cleared or an empty string.\n */export function resetTimeOfISODateString(text){return isISO8601(text)?`${text.substring(0,10)}T00:00:00.000Z`:\"\";}// used to find a matching active filter on CMS Fields, depending on the filter condition both value and condition have to match or only the condition\nexport function findActiveFilter({currentFilter,target}){const{condition,value}=currentFilter;const valuesMatch=value===target.value;const conditionsMatch=condition===target.condition;// value does not matter if we're checking if it's set or not\nif(condition===\"isSet\"||condition===\"notSet\")return conditionsMatch;return valuesMatch&&conditionsMatch;}export function getProps({object,target,returnParent=false}){if(!object||!target.name||!target.type)return undefined;const propMatch=object[target.name];const typeMatch=target.type.toLowerCase()===\"array\"?Array.isArray(propMatch):typeof propMatch===target.type.toLowerCase();if(propMatch&&typeMatch){// return the target or the target's parent (which will contain the target)\nreturn returnParent?object:propMatch;}for(let nestedProp in object){const value=object[nestedProp];// don't go down another level if the value is not of type object/array\nif(typeof value!==\"object\")continue;const result=getProps({returnParent,target,object:value});if(result!==undefined)return result;}}function createBinaryNode({left,right,operator}){return{left,right,operator,type:\"BinaryOperation\"};}function createCaseNode({controlId,optionIds}){const createCondition=optionId=>{return{then:{type:\"LiteralValue\",value:true},type:\"Condition\",when:{type:\"LiteralValue\",value:optionId}};};return{type:\"Case\",conditions:optionIds.map(createCondition),else:{type:\"LiteralValue\",value:false},value:{name:controlId,type:\"Identifier\"}};}function createDateNode({controlId,operator,value}){const dateType={dataType:\"DATE\",type:\"TypeCast\"};const left={...dateType,value:{name:controlId,type:\"Identifier\"}};const right={...dateType,value:{type:\"LiteralValue\",value}};return createBinaryNode({left,right,operator});}function createFunctionCallNode({binaryNode,functionName}){return{functionName,arguments:[binaryNode.left,binaryNode.right],type:\"FunctionCall\"};}function createUnaryOperationNode({value}){return{operator:\"not\",type:\"UnaryOperation\",value};}// returns the tree structure used by Framer to apply filters to collection list\nfunction createFramerFilterTree({nodes=[],operator=\"and\"}){let tree={};nodes.forEach((node,index)=>{if(index===0){tree=node;}else{tree={operator,left:tree,right:node,type:\"BinaryOperation\"};}});return tree;}// sorting the CMS only works with one sort preference at a time and only without any filters or the fiters that are currently applied.\n// this function is to always include the selected sorting CMS field a 'dummy' filter as a placeholder, it filters the CMS field if the value is set or not, escentially always including without affecting the true active filters.\nfunction sortingPlaceholderNode(sort){const controlIdentifier={name:sort.name,type:\"Identifier\"};const left=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:null,type:\"LiteralValue\"}});const right=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:\"\",type:\"LiteralValue\"}});const isSetNode=createBinaryNode({left,right,operator:\"and\"});const isNotSetNode=createUnaryOperationNode({value:isSetNode});return createFramerFilterTree({nodes:[isSetNode,isNotSetNode],operator:\"or\"});}/**\n * in collectionList.props.children.props.query.where || collectionList.props.children.props.children.props.query.where\n * this function builds the 'where' tree object which acts as the filter conditions for the collection list\n *\n * loops through each field, for each active filter in the field build a sub-tree with operator \"or\"\n * multiple selections from the same field (category) will results in \"or\" filters\n *\n * at the end, loop through all sub-trees and build the main tree with operator \"and\"\n * selections from different fields (categories) compound filters using the \"and\" operator\n *\n * @param {object} cmsFields - An object made up of the CMS fields by name which contains an array of active filters per field.\n * @param {object} realTimeSearch - An object contianing an array of CMS fields and a text value.\n * @returns {object} - Returns an object structured the way Framer stores its filter data for the CMS.\n */export function constructFramerCMSQueryWhere({cmsFields,collectionAlias,realTimeSearch}){// for every CMS field with active filters, a sub tree is created, at the end, after looping through all the fields and checking active filters, each sub tree will be combined into the main Framer filter tree\nconst subTrees=[];// if there is a search text, loop through the selected CMS fields and apply if the type is supported\nif(realTimeSearch.text){const nodes=[];// remove any duplicates\nconst realTimeSearchFields=Array.from(new Set(realTimeSearch.fields));realTimeSearchFields.forEach(fieldName=>{const control=cmsFields[fieldName]||{};const{type}=control;const controlIdentifier={collection:collectionAlias,name:control.id,type:\"Identifier\"};if(type===\"string\"){nodes.push(createFunctionCallNode({binaryNode:createBinaryNode({left:controlIdentifier,right:{value:realTimeSearch.text,type:\"LiteralValue\"},operator:\"==\"}),functionName:\"CONTAINS\"}));}});subTrees.push(createFramerFilterTree({nodes,operator:\"or\"}));}// Loop over each CMS field, extract the selected values to filter\nfor(const[fieldName,properties]of Object.entries(cmsFields)){const cmsField=cmsFields[fieldName];const{activeFilters,filteredValues,id,options,optionTitles,type}=cmsField;// early return if CMS field does not have any active filters\nif(activeFilters.length<=0)continue;const cmsField_isEnum=type===\"enum\";const cmsField_isString=type===\"string\";const cmsField_isNumber=type===\"number\";const cmsField_isBoolean=type===\"boolean\";const cmsField_isImage=type===\"responsiveimage\";const cmsField_isDate=type===\"date\";const cmsField_isLink=type===\"link\";const cmsField_isFormattedText=type===\"richtext\";const cmsField_isColor=type===\"color\";const cmsField_isFile=type===\"file\";const controlIdentifier={collection:collectionAlias,name:id,type:\"Identifier\"};/**\n         * CMS field is date when set to Date\n         */if(cmsField_isDate){const nodes=[];activeFilters.forEach(activeFilter=>{const{condition,value}=activeFilter;// for ranges add a node where minValue is less than or equal, & maxValue is greater than or equal\nif(condition===\"IS_BETWEEN_DATES\"){// inclusive : [], exclusive: ()\nconst minCondition=value.charAt(0)===\"[\"?\">=\":\">\";const maxCondition=value.charAt(value.length-1)===\"]\"?\"<=\":\"<\";const range=value.substring(1,value.length-1).split(\",\");const minValue=range[0];const maxValue=range[1];// the results will be greater than or equal to this start\nconst left=createBinaryNode({left:controlIdentifier,right:{value:minValue,type:\"LiteralValue\"},operator:minCondition});// the results will be less than or equal to this end\nconst right=createBinaryNode({left:controlIdentifier,right:{value:maxValue,type:\"LiteralValue\"},operator:maxCondition});nodes.push(createBinaryNode({left,right,operator:\"and\"}));// early return for date ranges and continue to the next active filter\nreturn;}// handles single dates\nnodes.push(createBinaryNode({left:controlIdentifier,right:{value,type:\"LiteralValue\"},operator:condition}));});subTrees.push(createFramerFilterTree({nodes,operator:\"or\"}));}/**\n         * CMS field is file when set to File\n         *\n         * Every CMS field that is an File, will only have one filter that is checking if the file is set or not\n         */if(cmsField_isFile){const logicalNotOperator=activeFilters[0].condition.charAt(0)===\"!\";const left=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:null,type:\"LiteralValue\"}});const right=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:\"\",type:\"LiteralValue\"}});const node=createBinaryNode({left,right,operator:\"and\"});subTrees.push(logicalNotOperator?createUnaryOperationNode({value:node}):node);}/**\n         * CMS field is responsiveImage when set to Image\n         *\n         * Every CMS field that is an Image, will only have one filter that is checking if the image is set or not\n         */if(cmsField_isImage){const logicalNotOperator=activeFilters[0].condition.charAt(0)===\"!\";const left=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:null,type:\"LiteralValue\"}});const right=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:\"\",type:\"LiteralValue\"}});const node=createBinaryNode({left,right,operator:\"and\"});subTrees.push(logicalNotOperator?createUnaryOperationNode({value:node}):node);}/**\n         * CMS field is richtext when set to Formatted Text\n         *\n         * Every CMS field that is a Formatted Text, will only have one filter that is checking if the formatted text is set or not\n         */if(cmsField_isFormattedText){// const logicalNotOperator =\n//     activeFilters[0].condition.charAt(0) === \"!\"\n// const left = createBinaryNode({\n//     operator: \"!=\",\n//     left: controlIdentifier,\n//     right: { value: null, type: \"LiteralValue\" },\n// })\n// const right = createBinaryNode({\n//     operator: \"!=\",\n//     left: controlIdentifier,\n//     right: { value: \"\", type: \"LiteralValue\" },\n// })\n// const node = createBinaryNode({ left, right, operator: \"and\" })\n// subTrees.push(\n//     logicalNotOperator\n//         ? createUnaryOperationNode({ value: node })\n//         : node\n// )\nconst nodes=[];activeFilters.forEach(activeFilter=>{const{condition,value}=activeFilter;let node;let logicalNotOperator=false;if(condition.includes(\"IS_SET\")){logicalNotOperator=condition.charAt(0)===\"!\";const left=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:null,type:\"LiteralValue\"}});const right=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:\"\",type:\"LiteralValue\"}});node=createBinaryNode({left,right,operator:\"and\"});}else if(condition.includes(\"STARTS_WITH\")||condition.includes(\"ENDS_WITH\")||condition.includes(\"CONTAINS\")){logicalNotOperator=condition.charAt(0)===\"!\";const functionName=logicalNotOperator?condition.substring(1):condition;node=createFunctionCallNode({binaryNode:createBinaryNode({left:controlIdentifier,right:{value,type:\"LiteralValue\"},operator:\"==\"}),functionName});}else{// handles: Equals \"==\" & Doesn't Equal \"!=\"\nnode=createBinaryNode({left:controlIdentifier,right:{value,type:\"LiteralValue\"},operator:condition});}// handles: !IS_SET, !STARTS_WITH, !ENDS_WITH, & !CONTAINS\nif(logicalNotOperator)node=createUnaryOperationNode({value:node});nodes.push(node);});subTrees.push(createFramerFilterTree({nodes,operator:\"or\"}));}/**\n         * CMS field is link when set to Link\n         *\n         * Every CMS field that is a Link, will only have one filter that is checking if the image is set or not\n         */if(cmsField_isLink){const logicalNotOperator=activeFilters[0].condition.charAt(0)===\"!\";const left=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:null,type:\"LiteralValue\"}});const right=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:\"\",type:\"LiteralValue\"}});const node=createBinaryNode({left,right,operator:\"and\"});subTrees.push(logicalNotOperator?createUnaryOperationNode({value:node}):node);}/**\n         * CMS field is boolean when set to Toggle\n         *\n         * Any CMS fields that are a Toggle will ever only have one filter with a value of either true or false.\n         */if(cmsField_isBoolean){subTrees.push(activeFilters[0].value?controlIdentifier:createUnaryOperationNode({value:controlIdentifier}));}/**\n         * CMS field is enum when set to Option\n         */if(cmsField_isEnum){// cross reference the filter values to their corresponding Framer control IDs\nconst activeFilterOptionIds=activeFilters.map(activeFilter=>{const index=optionTitles.indexOf(activeFilter.value);return options[index];});// only one node is every pushed for this type of CMS field filter. the type of node is what changes. a single filter for this field uses a binary node, more than one uses a case node\nsubTrees.push(activeFilters.length===1?createBinaryNode({left:controlIdentifier,right:{value:activeFilterOptionIds[0],type:\"LiteralValue\"},operator:activeFilters[0].condition}):createCaseNode({controlId:id,optionIds:activeFilterOptionIds}));}/**\n         * CMS field is color when set to Color\n         */// if (cmsField_isColor) {\n//     const nodes = []\n//     activeFilters.forEach((activeFilter) => {\n//         const { condition, value } = activeFilter\n//         nodes.push(\n//             createBinaryNode({\n//                 left: controlIdentifier,\n//                 right: { value, type: \"LiteralValue\" },\n//                 operator: condition,\n//             })\n//         )\n//     })\n//     subTrees.push(createFramerFilterTree({ nodes, operator: \"or\" }))\n// }\n/**\n         * CMS field is string when set to Plain Text\n         */if(cmsField_isString){const nodes=[];activeFilters.forEach(activeFilter=>{const{condition,value}=activeFilter;let node;let logicalNotOperator=false;if(condition.includes(\"IS_SET\")){logicalNotOperator=condition.charAt(0)===\"!\";const left=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:null,type:\"LiteralValue\"}});const right=createBinaryNode({operator:\"!=\",left:controlIdentifier,right:{value:\"\",type:\"LiteralValue\"}});node=createBinaryNode({left,right,operator:\"and\"});}else if(condition.includes(\"STARTS_WITH\")||condition.includes(\"ENDS_WITH\")||condition.includes(\"CONTAINS\")){logicalNotOperator=condition.charAt(0)===\"!\";const functionName=logicalNotOperator?condition.substring(1):condition;node=createFunctionCallNode({binaryNode:createBinaryNode({left:controlIdentifier,right:{value,type:\"LiteralValue\"},operator:\"==\"}),functionName});}else{// handles: Equals \"==\" & Doesn't Equal \"!=\"\nnode=createBinaryNode({left:controlIdentifier,right:{value,type:\"LiteralValue\"},operator:condition});}// handles: !IS_SET, !STARTS_WITH, !ENDS_WITH, & !CONTAINS\nif(logicalNotOperator)node=createUnaryOperationNode({value:node});nodes.push(node);});subTrees.push(createFramerFilterTree({nodes,operator:\"or\"}));}/**\n         * CMS filed is number when set to Number\n         */if(cmsField_isNumber){const nodes=[];activeFilters.forEach(activeFilter=>{const{condition,value}=activeFilter;// for ranges add a node where minValue is less than or equal, & maxValue is greater than or equal\nif(condition===\"IS_BETWEEN_NUMBERS\"){// inclusive : [], exclusive: ()\nconst minCondition=value.charAt(0)===\"[\"?\">=\":\">\";const maxCondition=value.charAt(value.length-1)===\"]\"?\"<=\":\"<\";const range=value.substring(1,value.length-1).split(\",\");const minValue=Number(range[0]);const maxValue=Number(range[1]);// the results will be greater than or equal to this start\nconst left=createBinaryNode({left:controlIdentifier,right:{value:minValue,type:\"LiteralValue\"},operator:minCondition});// the results will be less than or equal to this end\nconst right=createBinaryNode({left:controlIdentifier,right:{value:maxValue,type:\"LiteralValue\"},operator:maxCondition});nodes.push(createBinaryNode({left,right,operator:\"and\"}));// return early for ranges and continue to the next active filter\nreturn;}// handles single values\nnodes.push(createBinaryNode({left:controlIdentifier,right:{value,type:\"LiteralValue\"},operator:condition}));});subTrees.push(createFramerFilterTree({nodes,operator:\"or\"}));}}return createFramerFilterTree({nodes:subTrees,operator:\"and\"});}\nexport const __FramerMetadata__ = {\"exports\":{\"getProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"findActiveFilter\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resetTimeOfISODateString\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isISO8601\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"constructFramerCMSQueryWhere\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Utilities.map","import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";export const useCollectionStore=createStore({})/**\n * {\n *   [collectionName]:{\n *      fieldsByID:{},\n *      fieldsByName:{},\n *      orderBy:[],\n *      cmsItems:[],\n *      realTimeSearch:{fields:[], text}\n *   }\n * }\n */;\nexport const __FramerMetadata__ = {\"exports\":{\"useCollectionStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Stores.map","// @ts-ignore\nimport{useQueryData,useIsOnFramerCanvas}from\"framer\";import{useState,useEffect,useRef,useMemo}from\"react\";import{getProps,constructFramerCMSQueryWhere}from\"https://framerusercontent.com/modules/NktNXvnf4m4T7jKQcOHx/tE0GTXnTLinhu2bnx5vZ/Utilities.js\";import{useCollectionStore}from\"https://framerusercontent.com/modules/oaAH7umUjUOTeKmykfom/QUgwaKJzm3ppWZi5RkAd/Stores.js\";/**\n * Hook to debounce a value.\n * @param {number} delay - The delay in milliseconds before showing the alert. Default is 2000.\n * @param {any} value - The value that will return after the timeout delay.\n * @returns {any} - Returns the value.\n */export const useDebouncer=({delay,value})=>{const[debouncedValue,setDebouncedValue]=useState(value);useEffect(()=>{const ID=setTimeout(()=>{setDebouncedValue(value);},delay);return()=>clearTimeout(ID);},[value]);return debouncedValue;};/**\n * Hook to manage error alerts.\n * @param {number} alertDelay - The delay in milliseconds before showing the alert. Default is 2000.\n * @returns {object} - Returns an object containing functions to manage error messages and the alert.\n */export const useErrorAlert=({alertDelay=2e3})=>{const isOnFramerCanvas=useIsOnFramerCanvas();const[hasError,setHasError]=useState(false);const[errors,setErrors]=useState([]);const timeoutIdRef=useRef(null);const addErrorMessage=text=>{if(isOnFramerCanvas)return;setErrors(prev=>[...prev,text]);setHasError(true);};const clearErrors=()=>{setErrors([]);setHasError(false);};const showErrorAlert=()=>{const id=setTimeout(()=>{alert(`\nError!\n\n${errors.join(\"\\n\")}`);},alertDelay);timeoutIdRef.current=id;};const cancelShowErrorAlert=()=>clearInterval(timeoutIdRef.current);useEffect(()=>{if(hasError)showErrorAlert();return()=>{cancelShowErrorAlert();};},[hasError,errors.length]);return{addErrorMessage,hasError};};export const useCollectionFieldSorting=({collectionName})=>{const[store,setStore]=useCollectionStore();const collection=store[collectionName];const collectionIsInitialized=!!collection;const setDirection=ascending=>{if(!collectionIsInitialized)return;setStore(prev=>({...prev,[collectionName]:{...prev[collectionName],renderKey:Math.floor(Math.random()*1e5),orderBy:[{direction:ascending?\"asc\":\"desc\",name:\"index\",type:\"Identifier\"}]}}));};return{setDirection};};export const useCollectionList=({collectionList})=>{const[collectionStore,setCollectionStore]=useCollectionStore();const[isSyncing,setIsSyncing]=useState(true);const[key,setKey]=useState(0);const isOnFramerCanvas=useIsOnFramerCanvas();const collectionName=useMemo(()=>{return isOnFramerCanvas?null:getProps({object:collectionList,target:{name:\"displayName\",type:\"string\"}});},[!!collectionList,isOnFramerCanvas]);const collection=collectionStore[collectionName];const collectionIsInitialized=!!collection;const query=useMemo(()=>{// return an empty object if on canvas view, collection is not initiated, or collecintList is not linked\nif(isOnFramerCanvas||!collectionList||!collectionIsInitialized)return{};const q=getProps({object:collectionList,target:{name:\"query\",type:\"object\"}})||null;// if a collectionList is linked, but no query is found, then it's not a colletionList\nif(!q)return null;const type=\"Identifier\";const select=[];Object.keys(collection.fieldsByID).forEach(name=>{select.push({name,type});});select.push({type,name:\"id\"});q.select=select;return q;},[!!collectionList,collectionIsInitialized,isOnFramerCanvas,collection===null||collection===void 0?void 0:collection.renderKey]);// upon any changes to the collection, the query must be updated to get the CMS items\nconst cmsItems=useMemo(()=>{if(isOnFramerCanvas||!collectionIsInitialized||!query||Object.keys(query).length<1)return[];// CMS Beta update 09/11/24\n// Collection referencing. Collection alias property is being included in 'where' tree\nconst collectionAlias=getProps({object:query,target:{name:\"alias\",type:\"string\"}});const where=constructFramerCMSQueryWhere({collectionAlias,realTimeSearch:collection.realTimeSearch,cmsFields:collection.fieldsByName});// // checks if the construct has any nodes\nconst hasNodes=Object.keys(where).length>0;// // if there's any active filters, apply them to the collection list, otherwise delete 'where'\nif(!hasNodes){delete query.where;}else{query.where=where;}// // if there's a sorting order, apply it to the collection list, otherwise delete 'orderBy'\nif(collection.orderBy.length===0){delete query.orderBy;}else if(collection.orderBy.length>0){query.orderBy=collection.orderBy;}return Object.values(useQueryData(query));},[isOnFramerCanvas,collectionIsInitialized,collection===null||collection===void 0?void 0:collection.renderKey]);//  store the cmsItems to store, and sync local state key when collection.renderKey has been changed\nuseEffect(()=>{if(collectionIsInitialized&&!isOnFramerCanvas){setIsSyncing(false);setKey(collection.renderKey);setCollectionStore(prev=>({...prev,[collectionName]:{...prev[collectionName],cmsItems}}));}},[collectionIsInitialized,isOnFramerCanvas,collection===null||collection===void 0?void 0:collection.renderKey]);// sync the collectionList with the collection in the store\nuseEffect(()=>{if(!isOnFramerCanvas&&collectionIsInitialized){setCollectionStore(prev=>({...prev,[collectionName]:{...prev[collectionName],renderKey:Math.floor(Math.random()*1e5)}}));}},[collectionList,isOnFramerCanvas,collectionIsInitialized]);// initialize collection in collectionStore\nuseEffect(()=>{if(!isOnFramerCanvas&&!collectionIsInitialized&&query){const fieldsByID=getProps({object:collectionList,target:{name:\"propertyControls\",type:\"object\"}})||{};const fieldsByName={};// populate the controls object with the control's cms field name (title) as property names\nfor(const[controlID,field]of Object.entries(fieldsByID)){// @ts-ignore\nconst{title,...otherProps}=field;fieldsByName[title]={...otherProps,id:controlID,activeFilters:[]};}setCollectionStore(prev=>({...prev,[collectionName]:{...prev[collectionName],fieldsByID,fieldsByName,orderBy:[],realTimeSearch:{fields:[],text:\"\"},cmsItems}}));}},[collectionIsInitialized,isOnFramerCanvas,!!query]);return{key,invalidCollectionList:!isOnFramerCanvas&&!!collectionList&&!query,isInitialized:!isSyncing&&collectionIsInitialized,noResults:cmsItems.length<1};};\nexport const __FramerMetadata__ = {\"exports\":{\"useDebouncer\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCollectionList\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useErrorAlert\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCollectionFieldSorting\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Hooks.map","/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */import{jsx as _jsx}from\"react/jsx-runtime\";export default function Branding_Tag({productName}){const styles={fontSize:\"10px\",position:\"absolute\",top:6,left:6};return /*#__PURE__*/_jsx(\"div\",{style:styles,children:productName||\"productName\"});}Branding_Tag.displayName=\"Branding Tag\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Branding_Tag\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Branding_Tag.map","/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */import{jsx as _jsx}from\"react/jsx-runtime\";export default function Header({text,align=\"left\"}){const styles={fontWeight:\"bold\",textAlign:align,width:\"100%\"};// @ts-ignore\nreturn /*#__PURE__*/_jsx(\"div\",{style:styles,children:text||\"Header\"});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Header\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Header.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import Branding_Tag from\"https://framerusercontent.com/modules/L7TdKQ7OCrUDcI7mEHAV/saJ1D5cYziXCHw3cuoS0/Branding_Tag.js\";import Header from\"https://framerusercontent.com/modules/tb6g3uFMaN9A8Y0Nh5te/NSmLj9GJ3YcGYE7rQwfM/Header.js\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n *\n * @framerIntrinsicHeight 400\n * @framerIntrinsicWidth 800\n *\n * @framerDisableUnlink\n */export default function HelperFrame({children,productName,align=\"center\",error=null,justify=\"center\"}){const colors={default:[67,198,135],error:[255,43,43]};const rgb=colors[error?\"error\":\"default\"].join(\",\");const containerProps={style:{alignItems:align,background:`rgba(${rgb}, 0.05)`,border:`1px solid rgb(${rgb})`,color:`rgb(${rgb})`,display:\"flex\",flexDirection:\"column\",fontSize:\"12px\",gap:\"12px\",height:\"fit-content\",justifyContent:justify,padding:\"32px 8px 8px 8px\",position:\"relative\",width:\"100%\"}};if(error){containerProps.style.cursor=\"pointer\";containerProps.onClick=()=>alert(error.message);}return /*#__PURE__*/_jsxs(\"div\",{...containerProps,className:\"cmsPlusError\",children:[/*#__PURE__*/_jsx(Branding_Tag,{productName:productName}),error&&/*#__PURE__*/_jsx(Header,{text:\"Error!\"}),children]});}HelperFrame.displayName=\"Helper Frame\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HelperFrame\",\"slots\":[\"children\"],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"400\",\"framerIntrinsicWidth\":\"800\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","/*\n * Helper_Frame\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/yljxQhHHYCclO8DHlyxu/sRhbB6xnGvNiuDPDTHW5/Helper_Frame.js\"\nexport { default } from \"https://framerusercontent.com/modules/yljxQhHHYCclO8DHlyxu/sRhbB6xnGvNiuDPDTHW5/Helper_Frame.js\"\n","/*\n * Header\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/tb6g3uFMaN9A8Y0Nh5te/NSmLj9GJ3YcGYE7rQwfM/Header.js\"\nexport { default } from \"https://framerusercontent.com/modules/tb6g3uFMaN9A8Y0Nh5te/NSmLj9GJ3YcGYE7rQwfM/Header.js\"\n","/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */import{jsx as _jsx}from\"react/jsx-runtime\";export default function Message({text}){const paragraphStyles={width:\"100%\",whiteSpace:\"pre-wrap\",margin:0,lineHeight:1.3};return /*#__PURE__*/_jsx(\"p\",{style:paragraphStyles,children:text||\"Message\"});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Message\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Message.map","/*\n * Message\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/R62RuVCy6eOjzkRZ9wyj/FO0wrP9rWA5aAMot9UBS/Message.js\"\nexport { default } from \"https://framerusercontent.com/modules/R62RuVCy6eOjzkRZ9wyj/FO0wrP9rWA5aAMot9UBS/Message.js\"\n","/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";export default function ListItem({text,isChecked}){const bulletUnicode=\"•\";const checkUnicode=\"✓\";const listStyles={alignItems:\"start\",display:\"flex\",gap:\"10px\",marginBottom:\"10px\",width:\"100%\"};const iconStyles={textAlign:\"center\",minWidth:\"20px\"};return /*#__PURE__*/_jsxs(\"li\",{style:listStyles,children:[/*#__PURE__*/_jsx(\"span\",{style:iconStyles,children:isChecked?checkUnicode:bulletUnicode}),/*#__PURE__*/_jsx(\"span\",{children:text})]});}ListItem.displayName=\"List Item\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ListItem\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./List_Item.map","import{jsx as _jsx}from\"react/jsx-runtime\";import ListItem from\"https://framerusercontent.com/modules/bmCFSKUhALa4QmIOqr6i/BpmPTjkfVB4lOyz9EiXT/List_Item.js\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */export default function ToDoList({items}){const listStyles={listStyle:\"none\",marginTop:0,paddingLeft:\"16px\",width:\"100%\"};return /*#__PURE__*/_jsx(\"ul\",{style:listStyles,children:items===null||items===void 0?void 0:items.map((item,index)=>/*#__PURE__*/_jsx(ListItem,{text:item.text,isChecked:item.isChecked},index))});}ToDoList.displayName=\"To Do List\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ToDoList\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./To_Do_List.map","/*\n * To_Do_List\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/nls243VrfVJRb2K9we5T/bIwdZocajZouuNz8bgX1/To_Do_List.js\"\nexport { default } from \"https://framerusercontent.com/modules/nls243VrfVJRb2K9we5T/bIwdZocajZouuNz8bgX1/To_Do_List.js\"\n","import{jsx as _jsx}from\"react/jsx-runtime\";import HelperFrame from\"https://framer.com/m/Main-Frame-iHC5.js\";import Header from\"https://framer.com/m/Header-Nmng.js\";import Message from\"https://framer.com/m/Message-9f6V.js\";import ToDoList from\"https://framer.com/m/To-Do-List-rlLo.js\";// default needed to have it appear in Assest to copy Import URL\nexport default function Index(){return /*#__PURE__*/_jsx(\"div\",{});}export{Header,HelperFrame,Message,ToDoList};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Index\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"Message\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Header\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ToDoList\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HelperFrame\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Helpers.map","/*\n * Helpers\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/9uKQIQp6F4gR5rw7OCHi/Jxw8eNxT3geRyTaspASR/Helpers.js\"\nexport { default } from \"https://framerusercontent.com/modules/9uKQIQp6F4gR5rw7OCHi/Jxw8eNxT3geRyTaspASR/Helpers.js\"\n","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import React,{cloneElement}from\"react\";import{addPropertyControls,ControlType,useIsOnFramerCanvas}from\"framer\";import{AnimatePresence}from\"framer-motion\";import{useCollectionList}from\"https://framerusercontent.com/modules/uaC9hWf3ec7HqMv3sXMc/CvMGzbirJDY4adFEJwd3/Hooks.js\";import{HelperFrame,Message}from\"https://framer.com/m/Index-nylz.js\";import{useCollectionStore}from\"https://framerusercontent.com/modules/oaAH7umUjUOTeKmykfom/QUgwaKJzm3ppWZi5RkAd/Stores.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function UncodeCollection(props){var _props__collectionListInstance,_props__mobileCollectionListInstance,_props__noSearchResultsInstance;const componentName=\"UncodeCollection\";const isOnFramerCanvas=useIsOnFramerCanvas();// Obter as coleções principais e mobile\nconst mainCollectionList=(_props__collectionListInstance=props._collectionListInstance)===null||_props__collectionListInstance===void 0?void 0:_props__collectionListInstance[0];const mobileCollectionList=(_props__mobileCollectionListInstance=props._mobileCollectionListInstance)===null||_props__mobileCollectionListInstance===void 0?void 0:_props__mobileCollectionListInstance[0];const linkedCollectionList=props.mobile?mobileCollectionList:mainCollectionList;const linkedNoSearchResults=(_props__noSearchResultsInstance=props._noSearchResultsInstance)===null||_props__noSearchResultsInstance===void 0?void 0:_props__noSearchResultsInstance[0];const[store]=useCollectionStore();const collection=store[props.collectionName];const collectionIsInitialized=!!collection;// Obter os filtros da store\nconst filters=(collection===null||collection===void 0?void 0:collection.filters)||{};console.log(\"Filtros recebidos pela UncodeCollection:\",filters)// Debugging\n;const{key,isInitialized,noResults,invalidCollectionList}=useCollectionList({collectionList:linkedCollectionList,filters:props.collectionName?filters:{}});const hasError=invalidCollectionList;const errorMessage=\"Linked frame is not a collection list.\";const missingFrames=!linkedCollectionList;const showCollectionList=!missingFrames&&(isOnFramerCanvas||isInitialized&&!hasError&&key>0);const showNoResultsFrame=!isOnFramerCanvas&&!hasError&&!!linkedNoSearchResults&&isInitialized&&noResults;// Estilos padrão para o layout\nconst layoutStyle={display:\"flex\",flexDirection:\"row\",flexWrap:\"wrap\",justifyContent:\"flex-start\",alignItems:\"flex-start\",width:\"100%\",height:\"100%\"};// Estilos para os itens filhos\nconst itemStyle={width:\"100%\",height:\"100%\"};return /*#__PURE__*/_jsxs(AnimatePresence,{mode:\"wait\",children:[hasError&&/*#__PURE__*/_jsx(HelperFrame,{productName:componentName,error:{message:errorMessage},children:/*#__PURE__*/_jsx(Message,{text:errorMessage})}),missingFrames?/*#__PURE__*/_jsxs(\"div\",{style:{background:\"linear-gradient(117.25deg, rgba(22, 61, 66, 1) 0%, rgba(10, 31, 34, 1) 100%)\",borderRadius:\"24px\",width:\"100%\",padding:\"63px 49px\",display:\"flex\",flexDirection:\"column\",gap:\"135px\",alignItems:\"flex-start\",justifyContent:\"flex-start\",position:\"relative\",overflow:\"hidden\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{background:\"#205258\",borderRadius:\"55px\",padding:\"7px 33px 7px 6px\",display:\"flex\",flexDirection:\"row\",gap:\"10px\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0,position:\"relative\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"row\",gap:\"20.2px\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0,position:\"relative\"},children:/*#__PURE__*/_jsxs(\"svg\",{className:\"container\",style:{borderRadius:\"63.27px\",display:\"flex\",flexDirection:\"column\",gap:\"10px\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0,width:\"40px\",height:\"40px\",position:\"relative\",overflow:\"visible\"},width:\"40\",height:\"40\",viewBox:\"0 0 40 40\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:[/*#__PURE__*/_jsx(\"rect\",{width:\"40\",height:\"40\",rx:\"20\",fill:\"#133B41\"}),/*#__PURE__*/_jsx(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M23.3087 14.482C22.8251 15.0783 22.1087 15.4231 21.3532 15.4231H11.0909C8.27926 15.4231 6 17.765 6 20.6538V23.2693C6 26.1581 8.27926 28.5 11.0909 28.5H13.0805C13.8359 28.5 14.5524 28.1552 15.036 27.5589L16.6913 25.518C17.1749 24.9217 17.8913 24.5769 18.6468 24.5769H28.9091C31.7207 24.5769 34 22.2351 34 19.3461V16.7308C34 13.8419 31.7207 11.5 28.9091 11.5H26.9195C26.1641 11.5 25.4476 11.8447 24.964 12.4411L23.3087 14.482ZM9.81821 23.2693C9.81821 23.9915 10.388 24.5769 11.0909 24.5769H14.9896C15.7451 24.5769 16.4614 24.2322 16.9451 23.6359L18.6004 21.5949C19.084 20.9986 19.8004 20.6538 20.5559 20.6538H28.9091C29.612 20.6538 30.1818 20.0684 30.1818 19.3461V16.7308C30.1818 16.0086 29.612 15.4231 28.9091 15.4231H25.0104C24.2549 15.4231 23.5386 15.7679 23.0549 16.3642L21.3996 18.4051C20.916 19.0014 20.1996 19.3461 19.4441 19.3461H11.0909C10.388 19.3461 9.81821 19.9316 9.81821 20.6538V23.2693Z\",fill:\"#1EF3D8\"})]})}),/*#__PURE__*/_jsx(\"div\",{style:{color:\"#ffffff\",textAlign:\"left\",fontFamily:\"'Inter-Medium', sans-serif\",fontSize:\"18.035px\",lineHeight:\"21.64px\",fontWeight:500,position:\"relative\",transform:\"rotate(0deg) scale(1, 1)\",display:\"flex\",alignItems:\"center\",justifyContent:\"flex-start\"},children:\"UncodeCMS\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:\"26px\",alignItems:\"flex-start\",justifyContent:\"flex-start\",flexShrink:0,width:\"100%\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{color:\"#ffffff\",textAlign:\"left\",textWrap:\"balance\",fontFamily:\"'InstrumentSans-Regular', sans-serif\",fontSize:\"2.5em\",lineHeight:\"130%\",fontWeight:400,position:\"relative\",alignSelf:\"stretch\",display:\"flex\",alignItems:\"center\",justifyContent:\"flex-start\"},children:\"Conecte alguma collection list.\"}),/*#__PURE__*/_jsx(\"div\",{style:{color:\"#c6f5ef\",textAlign:\"left\",fontFamily:\"'InstrumentSans-Regular', sans-serif\",fontSize:\"14px\",lineHeight:\"130%\",fontWeight:400,position:\"relative\",alignSelf:\"stretch\",display:\"flex\",alignItems:\"center\",justifyContent:\"flex-start\"},children:\"Conecte uma para desktop e outro para mobile.\"})]})]}):/*#__PURE__*/_jsxs(\"div\",{style:{...props.style,...layoutStyle,boxSizing:\"border-box\",width:\"100%\",height:\"100%\"},children:[showCollectionList&&/*#__PURE__*/cloneElement(linkedCollectionList,{key,style:{...linkedCollectionList.props.style,width:\"100%\",height:\"100%\"},children:React.Children.map(linkedCollectionList.props.children,child=>/*#__PURE__*/cloneElement(child,{style:{...child.props.style,...itemStyle}}))}),isInitialized&&noResults&&(linkedNoSearchResults?// Se um frame personalizado estiver conectado para o estado vazio\n/*#__PURE__*/cloneElement(linkedNoSearchResults,{style:{...linkedNoSearchResults.props.style,width:\"100%\",height:\"100%\"}}):// Mensagem padrão quando não há resultados e nenhum frame conectado\n/*#__PURE__*/_jsx(Message,{title:\"Nenhum Resultado Encontrado\",subtitle:\"A busca n\\xe3o retornou nenhum resultado.\"}))]})]});}UncodeCollection.displayName=\"UncodeCollection\";addPropertyControls(UncodeCollection,{_collectionListInstance:{type:ControlType.ComponentInstance,title:\"Desktop Collection\"},_mobileCollectionListInstance:{type:ControlType.ComponentInstance,title:\"Mobile Collection\"},_noSearchResultsInstance:{type:ControlType.ComponentInstance,title:\"Empty\"},mobile:{type:ControlType.Boolean,title:\"Mobile\",defaultValue:false},collectionName:{type:ControlType.String,title:\"Collection Name\",defaultValue:\"\"},codeBy:{type:ControlType.String,title:\"Author\",defaultValue:\"Code by @omatusaelhorch.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"UncodeCollection\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./UncodeCollection.map"],"mappings":"uUAOyG,SAAgB,EAAS,CAAC,SAAO,SAAO,eAAa,IAAO,CAAC,GAAG,CAAC,GAAQ,CAAC,EAAO,MAAM,CAAC,EAAO,KAAK,OAAiB,IAAM,EAAU,EAAO,EAAO,MAAY,EAAU,EAAO,KAAK,aAAa,GAAG,QAAQ,MAAM,QAAQ,EAAU,CAAC,OAAO,IAAY,EAAO,KAAK,aAAa,CAAC,GAAG,GAAW,EAC1Y,OAAO,EAAa,EAAO,EAAW,IAAI,IAAI,KAAc,EAAO,CAAC,IAAM,EAAM,EAAO,GACvF,GAAG,OAAO,GAAQ,SAAS,SAAS,IAAM,EAAO,EAAS,CAAC,eAAa,SAAO,OAAO,EAAM,CAAC,CAAC,GAAG,IAAS,IAAA,GAAU,OAAO,GAAS,SAAS,EAAiB,CAAC,OAAK,QAAM,YAAU,CAAC,MAAM,CAAC,OAAK,QAAM,WAAS,KAAK,kBAAkB,CAAE,SAAS,EAAe,CAAC,YAAU,aAAW,CAA6I,MAAM,CAAC,KAAK,OAAO,WAAW,EAAU,IAA9J,IAAiB,CAAC,KAAK,CAAC,KAAK,eAAe,MAAM,GAAK,CAAC,KAAK,YAAY,KAAK,CAAC,KAAK,eAAe,MAAM,EAAS,CAAC,EAA+D,CAAC,KAAK,CAAC,KAAK,eAAe,MAAM,GAAM,CAAC,MAAM,CAAC,KAAK,EAAU,KAAK,aAAa,CAAC,CAAqR,SAAS,EAAuB,CAAC,aAAW,gBAAc,CAAC,MAAM,CAAC,eAAa,UAAU,CAAC,EAAW,KAAK,EAAW,MAAM,CAAC,KAAK,eAAe,CAAE,SAAS,EAAyB,CAAC,SAAO,CAAC,MAAM,CAAC,SAAS,MAAM,KAAK,iBAAiB,QAAM,CACrjC,SAAS,EAAuB,CAAC,QAAM,EAAE,CAAC,WAAS,OAAO,CAAC,IAAI,EAAK,EAAE,CAA4H,OAA3H,EAAM,SAAS,EAAK,IAAQ,CAAC,AAA8B,EAA3B,IAAQ,EAAQ,EAAgB,CAAC,WAAS,KAAK,EAAK,MAAM,EAAK,KAAK,kBAAkB,EAAI,CAAQ,EAetM,SAAgB,EAA6B,CAAC,YAAU,kBAAgB,kBAAgB,CAC3F,IAAM,EAAS,EAAE,CACjB,GAAG,EAAe,KAAK,CAAC,IAAM,EAAM,EAAE,CACX,MAAM,KAAK,IAAI,IAAI,EAAe,OAAO,CAAC,CAAsB,QAAQ,GAAW,CAAC,IAAM,EAAQ,EAAU,IAAY,EAAE,CAAM,CAAC,QAAM,EAAc,EAAkB,CAAC,WAAW,EAAgB,KAAK,EAAQ,GAAG,KAAK,aAAa,CAAI,IAAO,UAAU,EAAM,KAAK,EAAuB,CAAC,WAAW,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,MAAM,EAAe,KAAK,KAAK,eAAe,CAAC,SAAS,KAAK,CAAC,CAAC,aAAa,WAAW,CAAC,CAAC,EAAI,CAAC,EAAS,KAAK,EAAuB,CAAC,QAAM,SAAS,KAAK,CAAC,CAAC,CAC7gB,IAAI,GAAK,CAAC,EAAU,KAAc,OAAO,QAAQ,EAAU,CAAC,CAAqC,GAAK,CAAC,gBAAc,iBAAe,KAAG,UAAQ,eAAa,QAAhF,EAAU,GACtF,GAAG,EAAc,QAAQ,EAAE,SAAS,IAAM,EAAgB,IAAO,OAAa,EAAkB,IAAO,SAAe,EAAkB,IAAO,SAAe,EAAmB,IAAO,UAAgB,EAAiB,IAAO,kBAAwB,EAAgB,IAAO,OAAa,EAAgB,IAAO,OAAa,EAAyB,IAAO,WAAuD,EAAgB,IAAO,OAAa,EAAkB,CAAC,WAAW,EAAgB,KAAK,EAAG,KAAK,aAAa,CAExf,GAAG,EAAgB,CAAC,IAAM,EAAM,EAAE,CAAC,EAAc,QAAQ,GAAc,CAAC,GAAK,CAAC,YAAU,SAAO,EAC1G,GAAG,IAAY,mBAAmB,CAClC,IAAM,EAAa,EAAM,OAAO,EAAE,GAAG,IAAI,KAAK,IAAU,EAAa,EAAM,OAAO,EAAM,OAAO,EAAE,GAAG,IAAI,KAAK,IAAU,EAAM,EAAM,UAAU,EAAE,EAAM,OAAO,EAAE,CAAC,MAAM,IAAI,CAAO,EAAS,EAAM,GAAS,EAAS,EAAM,GACjN,EAAK,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,MAAM,EAAS,KAAK,eAAe,CAAC,SAAS,EAAa,CAAC,CAChH,EAAM,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,MAAM,EAAS,KAAK,eAAe,CAAC,SAAS,EAAa,CAAC,CAAC,EAAM,KAAK,EAAiB,CAAC,OAAK,QAAM,SAAS,MAAM,CAAC,CAAC,CACjL,OACA,EAAM,KAAK,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,QAAM,KAAK,eAAe,CAAC,SAAS,EAAU,CAAC,CAAC,EAAG,CAAC,EAAS,KAAK,EAAuB,CAAC,QAAM,SAAS,KAAK,CAAC,CAAC,CAIhK,GAAG,EAAgB,CAAC,IAAM,EAAmB,EAAc,GAAG,UAAU,OAAO,EAAE,GAAG,IAA+N,EAAK,EAAiB,CAAC,KAAvO,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,KAAK,KAAK,eAAe,CAAC,CAAC,CAA6I,MAAhI,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,GAAG,KAAK,eAAe,CAAC,CAAC,CAAyC,SAAS,MAAM,CAAC,CAAC,EAAS,KAAK,EAAmB,EAAyB,CAAC,MAAM,EAAK,CAAC,CAAC,EAAK,CAInb,GAAG,EAAiB,CAAC,IAAM,EAAmB,EAAc,GAAG,UAAU,OAAO,EAAE,GAAG,IAA+N,EAAK,EAAiB,CAAC,KAAvO,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,KAAK,KAAK,eAAe,CAAC,CAAC,CAA6I,MAAhI,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,GAAG,KAAK,eAAe,CAAC,CAAC,CAAyC,SAAS,MAAM,CAAC,CAAC,EAAS,KAAK,EAAmB,EAAyB,CAAC,MAAM,EAAK,CAAC,CAAC,EAAK,CAIpb,GAAG,EAAyB,CAkBvC,IAAM,EAAM,EAAE,CAAC,EAAc,QAAQ,GAAc,CAAC,GAAK,CAAC,YAAU,SAAO,EAAiB,EAAS,EAAmB,GAAM,GAAG,EAAU,SAAS,SAAS,CAAE,EAAmB,EAAU,OAAO,EAAE,GAAG,IAAyN,EAAK,EAAiB,CAAC,KAAjO,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,KAAK,KAAK,eAAe,CAAC,CAAC,CAAuI,MAA1H,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,GAAG,KAAK,eAAe,CAAC,CAAC,CAAmC,SAAS,MAAM,CAAC,SAAU,EAAU,SAAS,cAAc,EAAE,EAAU,SAAS,YAAY,EAAE,EAAU,SAAS,WAAW,CAAC,CAAC,EAAmB,EAAU,OAAO,EAAE,GAAG,IAAI,IAAM,EAAa,EAAmB,EAAU,UAAU,EAAE,CAAC,EAAU,EAAK,EAAuB,CAAC,WAAW,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,QAAM,KAAK,eAAe,CAAC,SAAS,KAAK,CAAC,CAAC,eAAa,CAAC,MACt0B,EAAK,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,QAAM,KAAK,eAAe,CAAC,SAAS,EAAU,CAAC,CACjG,IAAmB,EAAK,EAAyB,CAAC,MAAM,EAAK,CAAC,EAAC,EAAM,KAAK,EAAK,EAAG,CAAC,EAAS,KAAK,EAAuB,CAAC,QAAM,SAAS,KAAK,CAAC,CAAC,CAIvI,GAAG,EAAgB,CAAC,IAAM,EAAmB,EAAc,GAAG,UAAU,OAAO,EAAE,GAAG,IAA+N,EAAK,EAAiB,CAAC,KAAvO,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,KAAK,KAAK,eAAe,CAAC,CAAC,CAA6I,MAAhI,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,GAAG,KAAK,eAAe,CAAC,CAAC,CAAyC,SAAS,MAAM,CAAC,CAAC,EAAS,KAAK,EAAmB,EAAyB,CAAC,MAAM,EAAK,CAAC,CAAC,EAAK,CAMnb,GAFG,GAAoB,EAAS,KAAK,EAAc,GAAG,MAAM,EAAkB,EAAyB,CAAC,MAAM,EAAkB,CAAC,CAAC,CAE/H,EAAgB,CAC9B,IAAM,EAAsB,EAAc,IAAI,GAA2E,EAAhD,EAAa,QAAQ,EAAa,MAAM,EAAyB,CAC1I,EAAS,KAAK,EAAc,SAAS,EAAE,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,MAAM,EAAsB,GAAG,KAAK,eAAe,CAAC,SAAS,EAAc,GAAG,UAAU,CAAC,CAAC,EAAe,CAAC,UAAU,EAAG,UAAU,EAAsB,CAAC,CAAC,CAkBrO,GAAG,EAAkB,CAAC,IAAM,EAAM,EAAE,CAAC,EAAc,QAAQ,GAAc,CAAC,GAAK,CAAC,YAAU,SAAO,EAAiB,EAAS,EAAmB,GAAM,GAAG,EAAU,SAAS,SAAS,CAAE,EAAmB,EAAU,OAAO,EAAE,GAAG,IAAyN,EAAK,EAAiB,CAAC,KAAjO,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,KAAK,KAAK,eAAe,CAAC,CAAC,CAAuI,MAA1H,EAAiB,CAAC,SAAS,KAAK,KAAK,EAAkB,MAAM,CAAC,MAAM,GAAG,KAAK,eAAe,CAAC,CAAC,CAAmC,SAAS,MAAM,CAAC,SAAU,EAAU,SAAS,cAAc,EAAE,EAAU,SAAS,YAAY,EAAE,EAAU,SAAS,WAAW,CAAC,CAAC,EAAmB,EAAU,OAAO,EAAE,GAAG,IAAI,IAAM,EAAa,EAAmB,EAAU,UAAU,EAAE,CAAC,EAAU,EAAK,EAAuB,CAAC,WAAW,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,QAAM,KAAK,eAAe,CAAC,SAAS,KAAK,CAAC,CAAC,eAAa,CAAC,MACv2B,EAAK,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,QAAM,KAAK,eAAe,CAAC,SAAS,EAAU,CAAC,CACjG,IAAmB,EAAK,EAAyB,CAAC,MAAM,EAAK,CAAC,EAAC,EAAM,KAAK,EAAK,EAAG,CAAC,EAAS,KAAK,EAAuB,CAAC,QAAM,SAAS,KAAK,CAAC,CAAC,CAEvI,GAAG,EAAkB,CAAC,IAAM,EAAM,EAAE,CAAC,EAAc,QAAQ,GAAc,CAAC,GAAK,CAAC,YAAU,SAAO,EAC5G,GAAG,IAAY,qBAAqB,CACpC,IAAM,EAAa,EAAM,OAAO,EAAE,GAAG,IAAI,KAAK,IAAU,EAAa,EAAM,OAAO,EAAM,OAAO,EAAE,GAAG,IAAI,KAAK,IAAU,EAAM,EAAM,UAAU,EAAE,EAAM,OAAO,EAAE,CAAC,MAAM,IAAI,CAAO,EAAS,OAAO,EAAM,GAAG,CAAO,EAAS,OAAO,EAAM,GAAG,CACnO,EAAK,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,MAAM,EAAS,KAAK,eAAe,CAAC,SAAS,EAAa,CAAC,CAChH,EAAM,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,MAAM,EAAS,KAAK,eAAe,CAAC,SAAS,EAAa,CAAC,CAAC,EAAM,KAAK,EAAiB,CAAC,OAAK,QAAM,SAAS,MAAM,CAAC,CAAC,CACjL,OACA,EAAM,KAAK,EAAiB,CAAC,KAAK,EAAkB,MAAM,CAAC,QAAM,KAAK,eAAe,CAAC,SAAS,EAAU,CAAC,CAAC,EAAG,CAAC,EAAS,KAAK,EAAuB,CAAC,QAAM,SAAS,KAAK,CAAC,CAAC,EAAG,OAAO,EAAuB,CAAC,MAAM,EAAS,SAAS,MAAM,CAAC,kCC9GvK,CAAa,EAAmB,EAAY,EAAE,CAAC,qBCC/D,IAAqD,IAAgJ,IAA0H,CAKpW,GAAc,CAAC,QAAM,WAAS,CAAC,GAAK,CAAC,EAAe,GAAmBA,EAAS,EAAM,CAAiH,OAAhH,MAAc,CAAC,IAAM,EAAG,eAAe,CAAC,EAAkB,EAAM,EAAG,EAAM,CAAC,UAAU,aAAa,EAAG,EAAG,CAAC,EAAM,CAAC,CAAQ,GAO+gB,GAAmB,CAAC,oBAAkB,CAAC,GAAK,CAAC,EAAgB,GAAoB,GAAoB,CAAM,CAAC,EAAU,GAAcA,EAAS,GAAK,CAAM,CAAC,EAAI,GAAQA,EAAS,EAAE,CAAO,EAAiB,GAAqB,CAAO,EAAeC,MAAoB,EAAiB,KAAK,EAAS,CAAC,OAAO,EAAe,OAAO,CAAC,KAAK,cAAc,KAAK,SAAS,CAAC,CAAC,CAAG,CAAC,CAAC,CAAC,EAAe,EAAiB,CAAC,CAAO,EAAW,EAAgB,GAAsB,EAAwB,CAAC,CAAC,EAAiB,EAAMA,MAAY,CACjvC,GAAG,GAAkB,CAAC,GAAgB,CAAC,EAAwB,MAAM,EAAE,CAAC,IAAMC,EAAE,EAAS,CAAC,OAAO,EAAe,OAAO,CAAC,KAAK,QAAQ,KAAK,SAAS,CAAC,CAAC,EAAE,KACvJ,GAAG,CAACA,EAAE,OAAO,KAAK,IAAM,EAAK,aAAmB,EAAO,EAAE,CAA6H,OAA5H,OAAO,KAAK,EAAW,WAAW,CAAC,QAAQ,GAAM,CAAC,EAAO,KAAK,CAAC,OAAK,OAAK,CAAC,EAAG,CAAC,EAAO,KAAK,CAAC,OAAK,KAAK,KAAK,CAAC,CAAC,EAAE,OAAO,EAAcA,GAAI,CAAC,CAAC,CAAC,EAAe,EAAwB,EAAiB,GAAyD,UAAU,CAAC,CAC1T,EAASD,MAAY,CAAC,GAAG,GAAkB,CAAC,GAAyB,CAAC,GAAO,OAAO,KAAK,EAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAEpC,IAAM,EAAM,EAA6B,CAAC,gBAAvG,EAAS,CAAC,OAAO,EAAM,OAAO,CAAC,KAAK,QAAQ,KAAK,SAAS,CAAC,CAAC,CAA2D,eAAe,EAAW,eAAe,UAAU,EAAW,aAAa,CAAC,CAG1F,OAFhH,OAAO,KAAK,EAAM,CAAC,OAAO,EACF,EAAM,MAAM,EAArC,OAAO,EAAM,MACxB,EAAW,QAAQ,SAAS,EAAG,OAAO,EAAM,QAAiB,EAAW,QAAQ,OAAO,IAAG,EAAM,QAAQ,EAAW,SAAgB,OAAO,OAAO,EAAa,EAAM,CAAC,EAAG,CAAC,EAAiB,EAAwB,GAAyD,UAAU,CAAC,CAKkC,OAJ3T,MAAc,CAAI,GAAyB,CAAC,IAAkB,EAAa,GAAM,CAAC,EAAO,EAAW,UAAU,CAAC,EAAmB,IAAO,CAAC,GAAG,GAAM,GAAgB,CAAC,GAAG,EAAK,GAAgB,WAAS,CAAC,EAAE,GAAI,CAAC,EAAwB,EAAiB,GAAyD,UAAU,CAAC,CAC1T,MAAc,CAAI,CAAC,GAAkB,GAAyB,EAAmB,IAAO,CAAC,GAAG,GAAM,GAAgB,CAAC,GAAG,EAAK,GAAgB,UAAU,KAAK,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAI,CAAC,EAAe,EAAiB,EAAwB,CAAC,CACpP,MAAc,CAAC,GAAG,CAAC,GAAkB,CAAC,GAAyB,EAAM,CAAC,IAAM,EAAW,EAAS,CAAC,OAAO,EAAe,OAAO,CAAC,KAAK,mBAAmB,KAAK,SAAS,CAAC,CAAC,EAAE,EAAE,CAAO,EAAa,EAAE,CACjM,IAAI,GAAK,CAAC,EAAU,KAAS,OAAO,QAAQ,EAAW,CAAC,CACxD,GAAK,CAAC,QAAM,GAAG,GAAY,EAAM,EAAa,GAAO,CAAC,GAAG,EAAW,GAAG,EAAU,cAAc,EAAE,CAAC,CAAE,EAAmB,IAAO,CAAC,GAAG,GAAM,GAAgB,CAAC,GAAG,EAAK,GAAgB,aAAW,eAAa,QAAQ,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,WAAS,CAAC,EAAE,GAAI,CAAC,EAAwB,EAAiB,CAAC,CAAC,EAAM,CAAC,CAAO,CAAC,MAAI,sBAAsB,CAAC,GAAkB,CAAC,CAAC,GAAgB,CAAC,EAAM,cAAc,CAAC,GAAW,EAAwB,UAAU,EAAS,OAAO,EAAE,KCrBxa,SAAwB,EAAa,CAAC,eAAa,CAAiE,OAAoB,EAAK,MAAM,CAAC,MAAnF,CAAC,SAAS,OAAO,SAAS,WAAW,IAAI,EAAE,KAAK,EAAE,CAA8C,SAAS,GAAa,cAAc,CAAC,kBAAtM,CAAwM,EAAa,YAAY,kBCAjO,SAAwB,EAAO,CAAC,OAAK,QAAM,QAAQ,CACjG,OAAoB,EAAK,MAAM,CAAC,MAD+E,CAAC,WAAW,OAAO,UAAU,EAAM,MAAM,OAAO,CAClH,SAAS,GAAM,SAAS,CAAC,kBADxB,ICG3C,SAAwB,EAAY,CAAC,WAAS,cAAY,QAAM,SAAS,QAAM,KAAK,UAAQ,UAAU,CAAuD,IAAM,EAA/C,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAkB,EAAM,QAAQ,WAAW,KAAK,IAAI,CAAO,EAAe,CAAC,MAAM,CAAC,WAAW,EAAM,WAAW,QAAQ,EAAI,SAAS,OAAO,iBAAiB,EAAI,GAAG,MAAM,OAAO,EAAI,GAAG,QAAQ,OAAO,cAAc,SAAS,SAAS,OAAO,IAAI,OAAO,OAAO,cAAc,eAAe,EAAQ,QAAQ,mBAAmB,SAAS,WAAW,MAAM,OAAO,CAAC,CAAkG,OAA9F,IAAO,EAAe,MAAM,OAAO,UAAU,EAAe,YAAY,MAAM,EAAM,QAAQ,EAAsB,EAAM,MAAM,CAAC,GAAG,EAAe,UAAU,eAAe,SAAS,CAAc,EAAK,EAAa,CAAa,cAAY,CAAC,CAAC,GAAoB,EAAK,EAAO,CAAC,KAAK,SAAS,CAAC,CAAC,EAAS,CAAC,CAAC,kBARpvB,IAA0H,IAA8G,CAQ8gB,EAAY,YAAY,mCCD9sB,qBCAN,ICFrE,SAAwB,EAAQ,CAAC,QAAM,CAAoF,OAAoB,EAAK,IAAI,CAAC,MAA3F,CAAC,MAAM,OAAO,WAAW,WAAW,OAAO,EAAE,WAAW,IAAI,CAAqD,SAAS,GAAM,UAAU,CAAC,kBAAzM,qBCEsE,ICFxD,SAAwB,EAAS,CAAC,OAAK,aAAW,CAAuM,OAAoB,EAAM,KAAK,CAAC,MAAtK,CAAC,WAAW,QAAQ,QAAQ,OAAO,IAAI,OAAO,aAAa,OAAO,MAAM,OAAO,CAAwG,SAAS,CAAc,EAAK,OAAO,CAAC,MAA1H,CAAC,UAAU,SAAS,SAAS,OAAO,CAAuG,SAAS,EAA1Q,IAAvB,IAAsU,CAAC,CAAc,EAAK,OAAO,CAAC,SAAS,EAAK,CAAC,CAAC,CAAC,CAAC,kBAA3b,CAA6b,EAAS,YAAY,eCA3gB,SAAwB,EAAS,CAAC,SAAO,CAAiF,OAAoB,EAAK,KAAK,CAAC,MAA9F,CAAC,UAAU,OAAO,UAAU,EAAE,YAAY,OAAO,MAAM,OAAO,CAAiD,SAAS,GAA0C,KAAK,EAAK,IAAqB,EAAK,EAAS,CAAC,KAAK,EAAK,KAAK,UAAU,EAAK,UAAU,CAAC,EAAM,CAAC,CAAC,CAAC,kBALrR,IAAmH,CAKoK,EAAS,YAAY,iCCEhO,iBCP5E,IAAiE,IAAwD,IAA0D,IAA8D,qBCOxK,ICHjH,SAAwB,EAAiB,EAAM,CAAyG,IAA6C,EAAiB,GAAqB,CACxO,EAAmD,EAAM,0BAA+G,GAAS,EAA2D,EAAM,gCAAiI,GAAS,EAAqB,EAAM,OAAO,EAAqB,EAAyB,EAAuD,EAAM,2BAAkH,GAAQ,CAAC,GAAO,GAAoB,CAC/pB,EADirB,EAAM,EAAM,iBAC3nB,SAAU,EAAE,CAAC,QAAQ,IAAI,2CAA2C,EAAQ,CACnJ,GAAK,CAAC,MAAI,gBAAc,YAAU,yBAAuB,EAAkB,CAAC,eAAe,EAAqB,QAAQ,EAAM,eAAe,EAAQ,EAAE,CAAC,CAAC,CAAO,EAAS,EAA4B,EAAa,yCAA+C,EAAc,CAAC,EAA2B,EAAmB,CAAC,IAAgB,GAAkB,GAAe,CAAC,GAAU,EAAI,GAC1X,EAAY,CAAC,QAAQ,OAAO,cAAc,MAAM,SAAS,OAAO,eAAe,aAAa,WAAW,aAAa,MAAM,OAAO,OAAO,OAAO,CAC/I,EAAU,CAAC,MAAM,OAAO,OAAO,OAAO,CAAC,OAAoB,EAAM,EAAgB,CAAC,KAAK,OAAO,SAAS,CAAC,GAAuB,EAAK,EAAY,CAAC,YAAY,mBAAc,MAAM,CAAC,QAAQ,EAAa,CAAC,SAAsB,EAAK,EAAQ,CAAC,KAAK,EAAa,CAAC,CAAC,CAAC,CAAC,EAA2B,EAAM,MAAM,CAAC,MAAM,CAAC,WAAW,+EAA+E,aAAa,OAAO,MAAM,OAAO,QAAQ,YAAY,QAAQ,OAAO,cAAc,SAAS,IAAI,QAAQ,WAAW,aAAa,eAAe,aAAa,SAAS,WAAW,SAAS,SAAS,CAAC,SAAS,CAAc,EAAM,MAAM,CAAC,MAAM,CAAC,WAAW,UAAU,aAAa,OAAO,QAAQ,mBAAmB,QAAQ,OAAO,cAAc,MAAM,IAAI,OAAO,WAAW,SAAS,eAAe,SAAS,WAAW,EAAE,SAAS,WAAW,CAAC,SAAS,CAAc,EAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,cAAc,MAAM,IAAI,SAAS,WAAW,SAAS,eAAe,SAAS,WAAW,EAAE,SAAS,WAAW,CAAC,SAAsB,EAAM,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,aAAa,UAAU,QAAQ,OAAO,cAAc,SAAS,IAAI,OAAO,WAAW,SAAS,eAAe,SAAS,WAAW,EAAE,MAAM,OAAO,OAAO,OAAO,SAAS,WAAW,SAAS,UAAU,CAAC,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAA6B,SAAS,CAAc,EAAK,OAAO,CAAC,MAAM,KAAK,OAAO,KAAK,GAAG,KAAK,KAAK,UAAU,CAAC,CAAc,EAAK,OAAO,CAAC,SAAS,UAAU,SAAS,UAAU,EAAE,s4BAAs4B,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAc,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU,UAAU,OAAO,WAAW,6BAA6B,SAAS,WAAW,WAAW,UAAU,WAAW,IAAI,SAAS,WAAW,UAAU,2BAA2B,QAAQ,OAAO,WAAW,SAAS,eAAe,aAAa,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,OAAO,cAAc,SAAS,IAAI,OAAO,WAAW,aAAa,eAAe,aAAa,WAAW,EAAE,MAAM,OAAO,SAAS,WAAW,CAAC,SAAS,CAAc,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU,UAAU,OAAO,SAAS,UAAU,WAAW,uCAAuC,SAAS,QAAQ,WAAW,OAAO,WAAW,IAAI,SAAS,WAAW,UAAU,UAAU,QAAQ,OAAO,WAAW,SAAS,eAAe,aAAa,CAAC,SAAS,kCAAkC,CAAC,CAAc,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,UAAU,UAAU,OAAO,WAAW,uCAAuC,SAAS,OAAO,WAAW,OAAO,WAAW,IAAI,SAAS,WAAW,UAAU,UAAU,QAAQ,OAAO,WAAW,SAAS,eAAe,aAAa,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAc,EAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAM,MAAM,GAAG,EAAY,UAAU,aAAa,MAAM,OAAO,OAAO,OAAO,CAAC,SAAS,CAAC,GAAiC,EAAa,EAAqB,CAAC,MAAI,MAAM,CAAC,GAAG,EAAqB,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,CAAC,SAASE,EAAM,SAAS,IAAI,EAAqB,MAAM,SAAS,GAAoB,EAAa,EAAM,CAAC,MAAM,CAAC,GAAG,EAAM,MAAM,MAAM,GAAG,EAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAe,IAAY,EACn7H,EAAa,EAAsB,CAAC,MAAM,CAAC,GAAG,EAAsB,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,CAAC,CAAC,CAC7G,EAAK,EAAQ,CAAC,MAAM,8BAA8B,SAAS,yCAA4C,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAXnE,IAAuC,IAAwE,IAA2C,IAAwH,IAAoE,IAA0H,CAW3Y,EAAiB,YAAY,mBAAmB,EAAoB,EAAiB,CAAC,wBAAwB,CAAC,KAAK,EAAY,kBAAkB,MAAM,qBAAqB,CAAC,8BAA8B,CAAC,KAAK,EAAY,kBAAkB,MAAM,oBAAoB,CAAC,yBAAyB,CAAC,KAAK,EAAY,kBAAkB,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAY,QAAQ,MAAM,SAAS,aAAa,GAAM,CAAC,eAAe,CAAC,KAAK,EAAY,OAAO,MAAM,kBAAkB,aAAa,GAAG,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,2BAA2B,CAAC,CAAC"}