{
  "version": 3,
  "sources": ["ssg:https://ga.jspm.io/npm:react@18.1.0/index.js", "ssg:https://app.framerstatic.com/chunk-VQMNPCBY.js", "ssg:https://app.framerstatic.com/framer.SNKC76OU.js"],
  "sourcesContent": ["var e={};var t=Symbol.for(\"react.element\"),r=Symbol.for(\"react.portal\"),n=Symbol.for(\"react.fragment\"),o=Symbol.for(\"react.strict_mode\"),u=Symbol.for(\"react.profiler\"),a=Symbol.for(\"react.provider\"),c=Symbol.for(\"react.context\"),i=Symbol.for(\"react.forward_ref\"),f=Symbol.for(\"react.suspense\"),s=Symbol.for(\"react.memo\"),l=Symbol.for(\"react.lazy\"),p=Symbol.iterator;function A(e){if(null===e||\"object\"!==typeof e)return null;e=p&&e[p]||e[\"@@iterator\"];return\"function\"===typeof e?e:null}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},d=Object.assign,_={};function E(e,t,r){this.props=e;this.context=t;this.refs=_;this.updater=r||y}E.prototype.isReactComponent={};E.prototype.setState=function(e,t){if(\"object\"!==typeof e&&\"function\"!==typeof e&&null!=e)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,e,t,\"setState\")};E.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(e,t,r){this.props=e;this.context=t;this.refs=_;this.updater=r||y}var m=G.prototype=new F;m.constructor=G;d(m,E.prototype);m.isPureReactComponent=!0;var h=Array.isArray,v=Object.prototype.hasOwnProperty,b={current:null},C={key:!0,ref:!0,__self:!0,__source:!0};function M(e,r,n){var o,u={},a=null,c=null;if(null!=r)for(o in void 0!==r.ref&&(c=r.ref),void 0!==r.key&&(a=\"\"+r.key),r)v.call(r,o)&&!C.hasOwnProperty(o)&&(u[o]=r[o]);var i=arguments.length-2;if(1===i)u.children=n;else if(1<i){for(var f=Array(i),s=0;s<i;s++)f[s]=arguments[s+2];u.children=f}if(e&&e.defaultProps)for(o in i=e.defaultProps,i)void 0===u[o]&&(u[o]=i[o]);return{$$typeof:t,type:e,key:a,ref:c,props:u,_owner:b.current}}function N(e,r){return{$$typeof:t,type:e.type,key:r,ref:e.ref,props:e.props,_owner:e._owner}}function O(e){return\"object\"===typeof e&&null!==e&&e.$$typeof===t}function escape(e){var t={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+e.replace(/[=:]/g,(function(e){return t[e]}))}var w=/\\/+/g;function Q(e,t){return\"object\"===typeof e&&null!==e&&null!=e.key?escape(\"\"+e.key):t.toString(36)}function R(e,n,o,u,a){var c=typeof e;\"undefined\"!==c&&\"boolean\"!==c||(e=null);var i=!1;if(null===e)i=!0;else switch(c){case\"string\":case\"number\":i=!0;break;case\"object\":switch(e.$$typeof){case t:case r:i=!0}}if(i)return i=e,a=a(i),e=\"\"===u?\".\"+Q(i,0):u,h(a)?(o=\"\",null!=e&&(o=e.replace(w,\"$&/\")+\"/\"),R(a,n,o,\"\",(function(e){return e}))):null!=a&&(O(a)&&(a=N(a,o+(!a.key||i&&i.key===a.key?\"\":(\"\"+a.key).replace(w,\"$&/\")+\"/\")+e)),n.push(a)),1;i=0;u=\"\"===u?\".\":u+\":\";if(h(e))for(var f=0;f<e.length;f++){c=e[f];var s=u+Q(c,f);i+=R(c,n,o,s,a)}else if(s=A(e),\"function\"===typeof s)for(e=s.call(e),f=0;!(c=e.next()).done;)c=c.value,s=u+Q(c,f++),i+=R(c,n,o,s,a);else if(\"object\"===c)throw n=String(e),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===n?\"object with keys {\"+Object.keys(e).join(\", \")+\"}\":n)+\"). If you meant to render a collection of children, use an array instead.\");return i}function S(e,t,r){if(null==e)return e;var n=[],o=0;R(e,n,\"\",\"\",(function(e){return t.call(r,e,o++)}));return n}function T(e){if(-1===e._status){var t=e._result;t=t();t.then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}));-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var $={current:null},k={transition:null},g={ReactCurrentDispatcher:$,ReactCurrentBatchConfig:k,ReactCurrentOwner:b};e.Children={map:S,forEach:function(e,t,r){S(e,(function(){t.apply(this,arguments)}),r)},count:function(e){var t=0;S(e,(function(){t++}));return t},toArray:function(e){return S(e,(function(e){return e}))||[]},only:function(e){if(!O(e))throw Error(\"React.Children.only expected to receive a single React element child.\");return e}};e.Component=E;e.Fragment=n;e.Profiler=u;e.PureComponent=G;e.StrictMode=o;e.Suspense=f;e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=g;e.cloneElement=function(e,r,n){if(null===e||void 0===e)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+e+\".\");var o=d({},e.props),u=e.key,a=e.ref,c=e._owner;if(null!=r){void 0!==r.ref&&(a=r.ref,c=b.current);void 0!==r.key&&(u=\"\"+r.key);if(e.type&&e.type.defaultProps)var i=e.type.defaultProps;for(f in r)v.call(r,f)&&!C.hasOwnProperty(f)&&(o[f]=void 0===r[f]&&void 0!==i?i[f]:r[f])}var f=arguments.length-2;if(1===f)o.children=n;else if(1<f){i=Array(f);for(var s=0;s<f;s++)i[s]=arguments[s+2];o.children=i}return{$$typeof:t,type:e.type,key:u,ref:a,props:o,_owner:c}};e.createContext=function(e){e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};e.Provider={$$typeof:a,_context:e};return e.Consumer=e};e.createElement=M;e.createFactory=function(e){var t=M.bind(null,e);t.type=e;return t};e.createRef=function(){return{current:null}};e.forwardRef=function(e){return{$$typeof:i,render:e}};e.isValidElement=O;e.lazy=function(e){return{$$typeof:l,_payload:{_status:-1,_result:e},_init:T}};e.memo=function(e,t){return{$$typeof:s,type:e,compare:void 0===t?null:t}};e.startTransition=function(e){var t=k.transition;k.transition={};try{e()}finally{k.transition=t}};e.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\")};e.useCallback=function(e,t){return $.current.useCallback(e,t)};e.useContext=function(e){return $.current.useContext(e)};e.useDebugValue=function(){};e.useDeferredValue=function(e){return $.current.useDeferredValue(e)};e.useEffect=function(e,t){return $.current.useEffect(e,t)};e.useId=function(){return $.current.useId()};e.useImperativeHandle=function(e,t,r){return $.current.useImperativeHandle(e,t,r)};e.useInsertionEffect=function(e,t){return $.current.useInsertionEffect(e,t)};e.useLayoutEffect=function(e,t){return $.current.useLayoutEffect(e,t)};e.useMemo=function(e,t){return $.current.useMemo(e,t)};e.useReducer=function(e,t,r){return $.current.useReducer(e,t,r)};e.useRef=function(e){return $.current.useRef(e)};e.useState=function(e){return $.current.useState(e)};e.useSyncExternalStore=function(e,t,r){return $.current.useSyncExternalStore(e,t,r)};e.useTransition=function(){return $.current.useTransition()};e.version=\"18.1.0\";const j=e.Children,I=e.Component,x=e.Fragment,P=e.Profiler,D=e.PureComponent,V=e.StrictMode,L=e.Suspense,U=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,q=e.cloneElement,z=e.createContext,B=e.createElement,H=e.createFactory,W=e.createRef,Y=e.forwardRef,J=e.isValidElement,K=e.lazy,X=e.memo,Z=e.startTransition,ee=e.unstable_act,te=e.useCallback,re=e.useContext,ne=e.useDebugValue,oe=e.useDeferredValue,ue=e.useEffect,ae=e.useId,ce=e.useImperativeHandle,ie=e.useInsertionEffect,fe=e.useLayoutEffect,se=e.useMemo,le=e.useReducer,pe=e.useRef,ye=e.useState,de=e.useSyncExternalStore,_e=e.useTransition,me=e.version;export{j as Children,I as Component,x as Fragment,P as Profiler,D as PureComponent,V as StrictMode,L as Suspense,U as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,q as cloneElement,z as createContext,B as createElement,H as createFactory,W as createRef,e as default,Y as forwardRef,J as isValidElement,K as lazy,X as memo,Z as startTransition,ee as unstable_act,te as useCallback,re as useContext,ne as useDebugValue,oe as useDeferredValue,ue as useEffect,ae as useId,ce as useImperativeHandle,ie as useInsertionEffect,fe as useLayoutEffect,se as useMemo,le as useReducer,pe as useRef,ye as useState,de as useSyncExternalStore,_e as useTransition,me as version};\n\n//# sourceMappingURL=index.js.map", "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function __require() {\n  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n  mod\n));\nvar __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\n\n// ../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\nvar require_memoize_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function memoize(fn) {\n      var cache = {};\n      return function(arg) {\n        if (cache[arg] === void 0)\n          cache[arg] = fn(arg);\n        return cache[arg];\n      };\n    }\n    exports.default = memoize;\n  }\n});\n\n// ../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\nvar require_is_prop_valid_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function _interopDefault(ex) {\n      return ex && typeof ex === \"object\" && \"default\" in ex ? ex[\"default\"] : ex;\n    }\n    var memoize = _interopDefault(require_memoize_browser_cjs());\n    var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;\n    var index = memoize(\n      function(prop) {\n        return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;\n      }\n    );\n    exports.default = index;\n  }\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs\nimport { createContext } from \"react\";\nvar MotionConfigContext = createContext({\n  transformPagePoint: (p) => p,\n  isStatic: false,\n  reducedMotion: \"never\"\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs\nimport { createContext as createContext2, useContext } from \"react\";\nvar MotionContext = createContext2({});\nfunction useVisualElementContext() {\n  return useContext(MotionContext).visualElement;\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/PresenceContext.mjs\nimport { createContext as createContext3 } from \"react\";\nvar PresenceContext = createContext3(null);\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-browser.mjs\nvar isBrowser = typeof document !== \"undefined\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs\nimport { useLayoutEffect, useEffect } from \"react\";\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\n// ../../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs\nimport { createContext as createContext4 } from \"react\";\nvar LayoutGroupContext = createContext4({});\n\n// ../../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs\nimport { createContext as createContext5 } from \"react\";\nvar SwitchLayoutGroupContext = createContext5({});\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nimport * as React from \"react\";\nimport { forwardRef, useContext as useContext4 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nimport { useContext as useContext2, useRef, useEffect as useEffect2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/LazyContext.mjs\nimport { createContext as createContext6 } from \"react\";\nvar LazyContext = createContext6({ strict: false });\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nfunction useVisualElement(Component2, visualState, props, createVisualElement) {\n  const parent = useVisualElementContext();\n  const lazyContext = useContext2(LazyContext);\n  const presenceContext = useContext2(PresenceContext);\n  const reducedMotionConfig = useContext2(MotionConfigContext).reducedMotion;\n  const visualElementRef = useRef();\n  createVisualElement = createVisualElement || lazyContext.renderer;\n  if (!visualElementRef.current && createVisualElement) {\n    visualElementRef.current = createVisualElement(Component2, {\n      visualState,\n      parent,\n      props,\n      presenceId: presenceContext ? presenceContext.id : void 0,\n      blockInitialAnimation: presenceContext ? presenceContext.initial === false : false,\n      reducedMotionConfig\n    });\n  }\n  const visualElement = visualElementRef.current;\n  useIsomorphicLayoutEffect(() => {\n    visualElement && visualElement.render();\n  });\n  const useAnimateChangesEffect = window.MotionAppearAnimations ? useIsomorphicLayoutEffect : useEffect2;\n  useAnimateChangesEffect(() => {\n    if (visualElement && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n  });\n  return visualElement;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs\nimport { useCallback } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs\nfunction isRefObject(ref) {\n  return typeof ref === \"object\" && Object.prototype.hasOwnProperty.call(ref, \"current\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs\nfunction useMotionRef(visualState, visualElement, externalRef) {\n  return useCallback(\n    (instance) => {\n      instance && visualState.mount && visualState.mount(instance);\n      if (visualElement) {\n        instance ? visualElement.mount(instance) : visualElement.unmount();\n      }\n      if (externalRef) {\n        if (typeof externalRef === \"function\") {\n          externalRef(instance);\n        } else if (isRefObject(externalRef)) {\n          externalRef.current = instance;\n        }\n      }\n    },\n    [visualElement]\n  );\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nimport { useContext as useContext3, useMemo } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs\nfunction isVariantLabel(v) {\n  return typeof v === \"string\" || Array.isArray(v);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs\nfunction isAnimationControls(v) {\n  return typeof v === \"object\" && typeof v.start === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs\nvar variantProps = [\n  \"initial\",\n  \"animate\",\n  \"exit\",\n  \"whileHover\",\n  \"whileDrag\",\n  \"whileTap\",\n  \"whileFocus\",\n  \"whileInView\"\n];\nfunction isControllingVariants(props) {\n  return isAnimationControls(props.animate) || variantProps.some((name) => isVariantLabel(props[name]));\n}\nfunction isVariantNode(props) {\n  return Boolean(isControllingVariants(props) || props.variants);\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs\nfunction getCurrentTreeVariants(props, context) {\n  if (isControllingVariants(props)) {\n    const { initial, animate: animate3 } = props;\n    return {\n      initial: initial === false || isVariantLabel(initial) ? initial : void 0,\n      animate: isVariantLabel(animate3) ? animate3 : void 0\n    };\n  }\n  return props.inherit !== false ? context : {};\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nfunction useCreateMotionContext(props) {\n  const { initial, animate: animate3 } = getCurrentTreeVariants(props, useContext3(MotionContext));\n  return useMemo(() => ({ initial, animate: animate3 }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate3)]);\n}\nfunction variantLabelsAsDependency(prop) {\n  return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs\nvar createDefinition = (propNames) => ({\n  isEnabled: (props) => propNames.some((name) => !!props[name])\n});\nvar featureDefinitions = {\n  measureLayout: createDefinition([\"layout\", \"layoutId\", \"drag\"]),\n  animation: createDefinition([\n    \"animate\",\n    \"exit\",\n    \"variants\",\n    \"whileHover\",\n    \"whileTap\",\n    \"whileFocus\",\n    \"whileDrag\",\n    \"whileInView\"\n  ]),\n  exit: createDefinition([\"exit\"]),\n  drag: createDefinition([\"drag\", \"dragControls\"]),\n  focus: createDefinition([\"whileFocus\"]),\n  hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n  tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n  pan: createDefinition([\n    \"onPan\",\n    \"onPanStart\",\n    \"onPanSessionStart\",\n    \"onPanEnd\"\n  ]),\n  inView: createDefinition([\n    \"whileInView\",\n    \"onViewportEnter\",\n    \"onViewportLeave\"\n  ])\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/load-features.mjs\nfunction loadFeatures(features) {\n  for (const key in features) {\n    if (key === \"projectionNodeConstructor\") {\n      featureDefinitions.projectionNodeConstructor = features[key];\n    } else {\n      featureDefinitions[key].Component = features[key];\n    }\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-constant.mjs\nimport { useRef as useRef2 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef2(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/state.mjs\nvar globalProjectionState = {\n  hasAnimatedSinceResize: true,\n  hasEverUpdated: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/id.mjs\nvar id = 1;\nfunction useProjectionId() {\n  return useConstant(() => {\n    if (globalProjectionState.hasEverUpdated) {\n      return id++;\n    }\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/VisualElementHandler.mjs\nimport React__default from \"react\";\nvar VisualElementHandler = class extends React__default.Component {\n  getSnapshotBeforeUpdate() {\n    const { visualElement, props } = this.props;\n    if (visualElement)\n      visualElement.setProps(props);\n    return null;\n  }\n  componentDidUpdate() {\n  }\n  render() {\n    return this.props.children;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs\nvar motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, projectionNodeConstructor, useRender, useVisualState: useVisualState2, Component: Component2 }) {\n  preloadedFeatures && loadFeatures(preloadedFeatures);\n  function MotionComponent(props, externalRef) {\n    const configAndProps = {\n      ...useContext4(MotionConfigContext),\n      ...props,\n      layoutId: useLayoutId(props)\n    };\n    const { isStatic } = configAndProps;\n    let features = null;\n    const context = useCreateMotionContext(props);\n    const projectionId = isStatic ? void 0 : useProjectionId();\n    const visualState = useVisualState2(props, isStatic);\n    if (!isStatic && isBrowser) {\n      context.visualElement = useVisualElement(Component2, visualState, configAndProps, createVisualElement);\n      const lazyStrictMode = useContext4(LazyContext).strict;\n      const initialLayoutGroupConfig = useContext4(SwitchLayoutGroupContext);\n      if (context.visualElement) {\n        features = context.visualElement.loadFeatures(\n          configAndProps,\n          lazyStrictMode,\n          preloadedFeatures,\n          projectionId,\n          projectionNodeConstructor || featureDefinitions.projectionNodeConstructor,\n          initialLayoutGroupConfig\n        );\n      }\n    }\n    return React.createElement(\n      VisualElementHandler,\n      { visualElement: context.visualElement, props: configAndProps },\n      features,\n      React.createElement(MotionContext.Provider, { value: context }, useRender(Component2, props, projectionId, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement))\n    );\n  }\n  const ForwardRefComponent = forwardRef(MotionComponent);\n  ForwardRefComponent[motionComponentSymbol] = Component2;\n  return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n  const layoutGroupId = useContext4(LayoutGroupContext).id;\n  return layoutGroupId && layoutId !== void 0 ? layoutGroupId + \"-\" + layoutId : layoutId;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs\nvar scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n  Object.assign(scaleCorrectors, correctors);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs\nvar isMotionValue = (value) => !!(value === null || value === void 0 ? void 0 : value.getVelocity);\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs\nvar transformPropOrder = [\n  \"transformPerspective\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"translateX\",\n  \"translateY\",\n  \"translateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\"\n];\nvar transformProps = new Set(transformPropOrder);\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs\nvar translateAlias = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\",\n  transformPerspective: \"perspective\"\n};\nvar sortTransformProps = (a, b) => transformPropOrder.indexOf(a) - transformPropOrder.indexOf(b);\nfunction buildTransform({ transform: transform2, transformKeys: transformKeys2 }, { enableHardwareAcceleration = true, allowTransformNone = true }, transformIsDefault, transformTemplate) {\n  let transformString = \"\";\n  transformKeys2.sort(sortTransformProps);\n  for (const key of transformKeys2) {\n    transformString += `${translateAlias[key] || key}(${transform2[key]}) `;\n  }\n  if (enableHardwareAcceleration && !transform2.z) {\n    transformString += \"translateZ(0)\";\n  }\n  transformString = transformString.trim();\n  if (transformTemplate) {\n    transformString = transformTemplate(transform2, transformIsDefault ? \"\" : transformString);\n  } else if (allowTransformNone && transformIsDefault) {\n    transformString = \"none\";\n  }\n  return transformString;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/clamp.mjs\nvar clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs\nvar animationProps = [\n  \"animate\",\n  \"exit\",\n  \"variants\",\n  \"whileHover\",\n  \"whileTap\",\n  \"whileFocus\",\n  \"whileDrag\",\n  \"whileInView\"\n];\nvar tapProps = [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"];\nvar panProps = [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"];\nvar inViewProps = [\n  \"whileInView\",\n  \"onViewportEnter\",\n  \"onViewportLeave\",\n  \"viewport\"\n];\nvar validMotionProps = /* @__PURE__ */ new Set([\n  \"initial\",\n  \"style\",\n  \"values\",\n  \"variants\",\n  \"transition\",\n  \"transformTemplate\",\n  \"transformValues\",\n  \"custom\",\n  \"inherit\",\n  \"layout\",\n  \"layoutId\",\n  \"layoutDependency\",\n  \"onLayoutAnimationStart\",\n  \"onLayoutAnimationComplete\",\n  \"onLayoutMeasure\",\n  \"onBeforeLayoutMeasure\",\n  \"onAnimationStart\",\n  \"onAnimationComplete\",\n  \"onUpdate\",\n  \"onDragStart\",\n  \"onDrag\",\n  \"onDragEnd\",\n  \"onMeasureDragConstraints\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"drag\",\n  \"dragControls\",\n  \"dragListener\",\n  \"dragConstraints\",\n  \"dragDirectionLock\",\n  \"dragSnapToOrigin\",\n  \"_dragX\",\n  \"_dragY\",\n  \"dragElastic\",\n  \"dragMomentum\",\n  \"dragPropagation\",\n  \"dragTransition\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"layoutScroll\",\n  ...inViewProps,\n  ...tapProps,\n  ...animationProps,\n  ...panProps\n]);\nfunction isValidMotionProp(key) {\n  return validMotionProps.has(key);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs\nvar shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n  if (!isValidProp)\n    return;\n  shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\ntry {\n  loadExternalIsValidProp(require_is_prop_valid_browser_cjs().default);\n} catch (_a) {\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n  const filteredProps = {};\n  for (const key in props) {\n    if (key === \"values\" && typeof props.values === \"object\")\n      continue;\n    if (shouldForward(key) || forwardMotionProps === true && isValidMotionProp(key) || !isDom && !isValidMotionProp(key) || props[\"draggable\"] && key.startsWith(\"onDrag\")) {\n      filteredProps[key] = props[key];\n    }\n  }\n  return filteredProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs\nvar isKeyframesTarget = (v) => {\n  return Array.isArray(v);\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/resolve-value.mjs\nvar isCustomValue = (v) => {\n  return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar resolveFinalValueInKeyframes = (v) => {\n  return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs\nfunction resolveMotionValue(value) {\n  const unwrappedValue = isMotionValue(value) ? value.get() : value;\n  return isCustomValue(unwrappedValue) ? unwrappedValue.toValue() : unwrappedValue;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nimport { useContext as useContext5 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs\nfunction resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {\n  if (typeof definition === \"function\") {\n    definition = definition(custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n  }\n  if (typeof definition === \"string\") {\n    definition = props.variants && props.variants[definition];\n  }\n  if (typeof definition === \"function\") {\n    definition = definition(custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n  }\n  return definition;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nfunction makeState({ scrapeMotionValuesFromProps: scrapeMotionValuesFromProps3, createRenderState, onMount }, props, context, presenceContext) {\n  const state = {\n    latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps3),\n    renderState: createRenderState()\n  };\n  if (onMount) {\n    state.mount = (instance) => onMount(props, instance, state);\n  }\n  return state;\n}\nvar makeUseVisualState = (config) => (props, isStatic) => {\n  const context = useContext5(MotionContext);\n  const presenceContext = useContext5(PresenceContext);\n  const make = () => makeState(config, props, context, presenceContext);\n  return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n  const values = {};\n  const motionValues = scrapeMotionValues(props, {});\n  for (const key in motionValues) {\n    values[key] = resolveMotionValue(motionValues[key]);\n  }\n  let { initial, animate: animate3 } = props;\n  const isControllingVariants$1 = isControllingVariants(props);\n  const isVariantNode$1 = isVariantNode(props);\n  if (context && isVariantNode$1 && !isControllingVariants$1 && props.inherit !== false) {\n    if (initial === void 0)\n      initial = context.initial;\n    if (animate3 === void 0)\n      animate3 = context.animate;\n  }\n  let isInitialAnimationBlocked = presenceContext ? presenceContext.initial === false : false;\n  isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n  const variantToSet = isInitialAnimationBlocked ? animate3 : initial;\n  if (variantToSet && typeof variantToSet !== \"boolean\" && !isAnimationControls(variantToSet)) {\n    const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n    list.forEach((definition) => {\n      const resolved = resolveVariantFromProps(props, definition);\n      if (!resolved)\n        return;\n      const { transitionEnd, transition, ...target } = resolved;\n      for (const key in target) {\n        let valueTarget = target[key];\n        if (Array.isArray(valueTarget)) {\n          const index = isInitialAnimationBlocked ? valueTarget.length - 1 : 0;\n          valueTarget = valueTarget[index];\n        }\n        if (valueTarget !== null) {\n          values[key] = valueTarget;\n        }\n      }\n      for (const key in transitionEnd)\n        values[key] = transitionEnd[key];\n    });\n  }\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/types.mjs\nvar AnimationType;\n(function(AnimationType2) {\n  AnimationType2[\"Animate\"] = \"animate\";\n  AnimationType2[\"Hover\"] = \"whileHover\";\n  AnimationType2[\"Tap\"] = \"whileTap\";\n  AnimationType2[\"Drag\"] = \"whileDrag\";\n  AnimationType2[\"Focus\"] = \"whileFocus\";\n  AnimationType2[\"InView\"] = \"whileInView\";\n  AnimationType2[\"Exit\"] = \"exit\";\n})(AnimationType || (AnimationType = {}));\n\n// ../../../node_modules/framer-motion/dist/es/events/use-dom-event.mjs\nimport { useEffect as useEffect3 } from \"react\";\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n  target.addEventListener(eventName, handler, options);\n  return () => target.removeEventListener(eventName, handler);\n}\nfunction useDomEvent(ref, eventName, handler, options) {\n  useEffect3(() => {\n    const element = ref.current;\n    if (handler && element) {\n      return addDomEvent(element, eventName, handler, options);\n    }\n  }, [ref, eventName, handler, options]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs\nvar isPrimaryPointer = (event) => event.isPrimary !== false;\n\n// ../../../node_modules/framer-motion/dist/es/events/event-info.mjs\nfunction extractEventInfo(event, pointType = \"page\") {\n  return {\n    point: {\n      x: event[pointType + \"X\"],\n      y: event[pointType + \"Y\"]\n    }\n  };\n}\nvar addPointerInfo = (handler) => {\n  return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/use-pointer-event.mjs\nfunction addPointerEvent(target, eventName, handler, options) {\n  return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\nfunction usePointerEvent(ref, eventName, handler, options) {\n  return useDomEvent(ref, eventName, handler && addPointerInfo(handler), options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs\nfunction createLock(name) {\n  let lock = null;\n  return () => {\n    const openLock = () => {\n      lock = null;\n    };\n    if (lock === null) {\n      lock = name;\n      return openLock;\n    }\n    return false;\n  };\n}\nvar globalHorizontalLock = createLock(\"dragHorizontal\");\nvar globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag2) {\n  let lock = false;\n  if (drag2 === \"y\") {\n    lock = globalVerticalLock();\n  } else if (drag2 === \"x\") {\n    lock = globalHorizontalLock();\n  } else {\n    const openHorizontal = globalHorizontalLock();\n    const openVertical = globalVerticalLock();\n    if (openHorizontal && openVertical) {\n      lock = () => {\n        openHorizontal();\n        openVertical();\n      };\n    } else {\n      if (openHorizontal)\n        openHorizontal();\n      if (openVertical)\n        openVertical();\n    }\n  }\n  return lock;\n}\nfunction isDragActive() {\n  const openGestureLock = getGlobalLock(true);\n  if (!openGestureLock)\n    return true;\n  openGestureLock();\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs\nimport { useEffect as useEffect4 } from \"react\";\nfunction useUnmountEffect(callback) {\n  return useEffect4(() => () => callback(), []);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/pipe.mjs\nvar combineFunctions = (a, b) => (v) => b(a(v));\nvar pipe = (...transformers) => transformers.reduce(combineFunctions);\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs\nimport { useContext as useContext6, useId, useEffect as useEffect5 } from \"react\";\nfunction usePresence() {\n  const context = useContext6(PresenceContext);\n  if (context === null)\n    return [true, null];\n  const { isPresent: isPresent2, onExitComplete, register } = context;\n  const id4 = useId();\n  useEffect5(() => register(id4), []);\n  const safeToRemove = () => onExitComplete && onExitComplete(id4);\n  return !isPresent2 && onExitComplete ? [false, safeToRemove] : [true];\n}\nfunction useIsPresent() {\n  return isPresent(useContext6(PresenceContext));\n}\nfunction isPresent(context) {\n  return context === null ? true : context.isPresent;\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/data.mjs\nvar frameData = {\n  delta: 0,\n  timestamp: 0\n};\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/on-next-frame.mjs\nvar defaultTimestep = 1 / 60 * 1e3;\nvar getCurrentTime = typeof performance !== \"undefined\" ? () => performance.now() : () => Date.now();\nvar onNextFrame = typeof window !== \"undefined\" ? (callback) => window.requestAnimationFrame(callback) : (callback) => setTimeout(() => callback(getCurrentTime()), defaultTimestep);\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/create-render-step.mjs\nfunction createRenderStep(runNextFrame2) {\n  let toRun = [];\n  let toRunNextFrame = [];\n  let numToRun = 0;\n  let isProcessing2 = false;\n  let flushNextFrame = false;\n  const toKeepAlive = /* @__PURE__ */ new WeakSet();\n  const step = {\n    schedule: (callback, keepAlive = false, immediate = false) => {\n      const addToCurrentFrame = immediate && isProcessing2;\n      const buffer = addToCurrentFrame ? toRun : toRunNextFrame;\n      if (keepAlive)\n        toKeepAlive.add(callback);\n      if (buffer.indexOf(callback) === -1) {\n        buffer.push(callback);\n        if (addToCurrentFrame && isProcessing2)\n          numToRun = toRun.length;\n      }\n      return callback;\n    },\n    cancel: (callback) => {\n      const index = toRunNextFrame.indexOf(callback);\n      if (index !== -1)\n        toRunNextFrame.splice(index, 1);\n      toKeepAlive.delete(callback);\n    },\n    process: (frameData2) => {\n      if (isProcessing2) {\n        flushNextFrame = true;\n        return;\n      }\n      isProcessing2 = true;\n      [toRun, toRunNextFrame] = [toRunNextFrame, toRun];\n      toRunNextFrame.length = 0;\n      numToRun = toRun.length;\n      if (numToRun) {\n        for (let i = 0; i < numToRun; i++) {\n          const callback = toRun[i];\n          callback(frameData2);\n          if (toKeepAlive.has(callback)) {\n            step.schedule(callback);\n            runNextFrame2();\n          }\n        }\n      }\n      isProcessing2 = false;\n      if (flushNextFrame) {\n        flushNextFrame = false;\n        step.process(frameData2);\n      }\n    }\n  };\n  return step;\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/index.mjs\nvar maxElapsed = 40;\nvar useDefaultElapsed = true;\nvar runNextFrame = false;\nvar isProcessing = false;\nvar stepsOrder = [\n  \"read\",\n  \"update\",\n  \"preRender\",\n  \"render\",\n  \"postRender\"\n];\nvar steps = stepsOrder.reduce((acc, key) => {\n  acc[key] = createRenderStep(() => runNextFrame = true);\n  return acc;\n}, {});\nvar sync = stepsOrder.reduce((acc, key) => {\n  const step = steps[key];\n  acc[key] = (process2, keepAlive = false, immediate = false) => {\n    if (!runNextFrame)\n      startLoop();\n    return step.schedule(process2, keepAlive, immediate);\n  };\n  return acc;\n}, {});\nvar cancelSync = stepsOrder.reduce((acc, key) => {\n  acc[key] = steps[key].cancel;\n  return acc;\n}, {});\nvar flushSync = stepsOrder.reduce((acc, key) => {\n  acc[key] = () => steps[key].process(frameData);\n  return acc;\n}, {});\nvar processStep = (stepId) => steps[stepId].process(frameData);\nvar processFrame = (timestamp) => {\n  runNextFrame = false;\n  frameData.delta = useDefaultElapsed ? defaultTimestep : Math.max(Math.min(timestamp - frameData.timestamp, maxElapsed), 1);\n  frameData.timestamp = timestamp;\n  isProcessing = true;\n  stepsOrder.forEach(processStep);\n  isProcessing = false;\n  if (runNextFrame) {\n    useDefaultElapsed = false;\n    onNextFrame(processFrame);\n  }\n};\nvar startLoop = () => {\n  runNextFrame = true;\n  useDefaultElapsed = true;\n  if (!isProcessing)\n    onNextFrame(processFrame);\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/array.mjs\nfunction addUniqueItem(arr, item) {\n  if (arr.indexOf(item) === -1)\n    arr.push(item);\n}\nfunction removeItem(arr, item) {\n  const index = arr.indexOf(item);\n  if (index > -1)\n    arr.splice(index, 1);\n}\nfunction moveItem([...arr], fromIndex, toIndex) {\n  const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n  if (startIndex >= 0 && startIndex < arr.length) {\n    const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n    const [item] = arr.splice(fromIndex, 1);\n    arr.splice(endIndex, 0, item);\n  }\n  return arr;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs\nvar SubscriptionManager = class {\n  constructor() {\n    this.subscriptions = [];\n  }\n  add(handler) {\n    addUniqueItem(this.subscriptions, handler);\n    return () => removeItem(this.subscriptions, handler);\n  }\n  notify(a, b, c) {\n    const numSubscriptions = this.subscriptions.length;\n    if (!numSubscriptions)\n      return;\n    if (numSubscriptions === 1) {\n      this.subscriptions[0](a, b, c);\n    } else {\n      for (let i = 0; i < numSubscriptions; i++) {\n        const handler = this.subscriptions[i];\n        handler && handler(a, b, c);\n      }\n    }\n  }\n  getSize() {\n    return this.subscriptions.length;\n  }\n  clear() {\n    this.subscriptions.length = 0;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs\nfunction velocityPerSecond(velocity, frameDuration) {\n  return frameDuration ? velocity * (1e3 / frameDuration) : 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/index.mjs\nvar isFloat = (value) => {\n  return !isNaN(parseFloat(value));\n};\nvar MotionValue = class {\n  constructor(init, options = {}) {\n    this.version = \"8.4.6\";\n    this.timeDelta = 0;\n    this.lastUpdated = 0;\n    this.canTrackVelocity = false;\n    this.events = {};\n    this.updateAndNotify = (v, render = true) => {\n      this.prev = this.current;\n      this.current = v;\n      const { delta, timestamp } = frameData;\n      if (this.lastUpdated !== timestamp) {\n        this.timeDelta = delta;\n        this.lastUpdated = timestamp;\n        sync.postRender(this.scheduleVelocityCheck);\n      }\n      if (this.prev !== this.current && this.events.change) {\n        this.events.change.notify(this.current);\n      }\n      if (this.events.velocityChange) {\n        this.events.velocityChange.notify(this.getVelocity());\n      }\n      if (render && this.events.renderRequest) {\n        this.events.renderRequest.notify(this.current);\n      }\n    };\n    this.scheduleVelocityCheck = () => sync.postRender(this.velocityCheck);\n    this.velocityCheck = ({ timestamp }) => {\n      if (timestamp !== this.lastUpdated) {\n        this.prev = this.current;\n        if (this.events.velocityChange) {\n          this.events.velocityChange.notify(this.getVelocity());\n        }\n      }\n    };\n    this.hasAnimated = false;\n    this.prev = this.current = init;\n    this.canTrackVelocity = isFloat(this.current);\n    this.owner = options.owner;\n  }\n  onChange(subscription) {\n    return this.on(\"change\", subscription);\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    const unsubscribe = this.events[eventName].add(callback);\n    if (eventName === \"change\") {\n      return () => {\n        unsubscribe();\n        sync.read(() => {\n          if (!this.events.change.getSize()) {\n            this.stop();\n          }\n        });\n      };\n    }\n    return unsubscribe;\n  }\n  clearListeners() {\n    for (const eventManagers in this.events) {\n      this.events[eventManagers].clear();\n    }\n  }\n  attach(passiveEffect, stopPassiveEffect) {\n    this.passiveEffect = passiveEffect;\n    this.stopPassiveEffect = stopPassiveEffect;\n  }\n  set(v, render = true) {\n    if (!render || !this.passiveEffect) {\n      this.updateAndNotify(v, render);\n    } else {\n      this.passiveEffect(v, this.updateAndNotify);\n    }\n  }\n  setWithVelocity(prev, current, delta) {\n    this.set(current);\n    this.prev = prev;\n    this.timeDelta = delta;\n  }\n  jump(v) {\n    this.updateAndNotify(v);\n    this.prev = v;\n    this.stop();\n    if (this.stopPassiveEffect)\n      this.stopPassiveEffect();\n  }\n  get() {\n    return this.current;\n  }\n  getPrevious() {\n    return this.prev;\n  }\n  getVelocity() {\n    return this.canTrackVelocity ? velocityPerSecond(parseFloat(this.current) - parseFloat(this.prev), this.timeDelta) : 0;\n  }\n  start(startAnimation) {\n    this.stop();\n    return new Promise((resolve) => {\n      this.hasAnimated = true;\n      this.animation = startAnimation(resolve) || null;\n      if (this.events.animationStart) {\n        this.events.animationStart.notify();\n      }\n    }).then(() => {\n      if (this.events.animationComplete) {\n        this.events.animationComplete.notify();\n      }\n      this.clearAnimation();\n    });\n  }\n  stop() {\n    if (this.animation) {\n      this.animation.stop();\n      if (this.events.animationCancel) {\n        this.events.animationCancel.notify();\n      }\n    }\n    this.clearAnimation();\n  }\n  isAnimating() {\n    return !!this.animation;\n  }\n  clearAnimation() {\n    this.animation = null;\n  }\n  destroy() {\n    this.clearListeners();\n    this.stop();\n    if (this.stopPassiveEffect) {\n      this.stopPassiveEffect();\n    }\n  }\n};\nfunction motionValue(init, options) {\n  return new MotionValue(init, options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs\nvar isNumericalString = (v) => /^\\-?\\d*\\.?\\d+$/.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs\nvar isZeroValueString = (v) => /^0[^.\\s]+$/.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils.mjs\nvar sanitize = (v) => Math.round(v * 1e5) / 1e5;\nvar floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nvar colorRegex = /(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nvar singleColorRegex = /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString(v) {\n  return typeof v === \"string\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs\nvar number = {\n  test: (v) => typeof v === \"number\",\n  parse: parseFloat,\n  transform: (v) => v\n};\nvar alpha = {\n  ...number,\n  transform: (v) => clamp(0, 1, v)\n};\nvar scale = {\n  ...number,\n  default: 1\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/utils.mjs\nvar isColorString = (type, testProp) => (v) => {\n  return Boolean(isString(v) && singleColorRegex.test(v) && v.startsWith(type) || testProp && Object.prototype.hasOwnProperty.call(v, testProp));\n};\nvar splitColor = (aName, bName, cName) => (v) => {\n  if (!isString(v))\n    return v;\n  const [a, b, c, alpha2] = v.match(floatRegex);\n  return {\n    [aName]: parseFloat(a),\n    [bName]: parseFloat(b),\n    [cName]: parseFloat(c),\n    alpha: alpha2 !== void 0 ? parseFloat(alpha2) : 1\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs\nvar clampRgbUnit = (v) => clamp(0, 255, v);\nvar rgbUnit = {\n  ...number,\n  transform: (v) => Math.round(clampRgbUnit(v))\n};\nvar rgba = {\n  test: isColorString(\"rgb\", \"red\"),\n  parse: splitColor(\"red\", \"green\", \"blue\"),\n  transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" + rgbUnit.transform(red) + \", \" + rgbUnit.transform(green) + \", \" + rgbUnit.transform(blue) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\"\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/hex.mjs\nfunction parseHex(v) {\n  let r = \"\";\n  let g = \"\";\n  let b = \"\";\n  let a = \"\";\n  if (v.length > 5) {\n    r = v.substring(1, 3);\n    g = v.substring(3, 5);\n    b = v.substring(5, 7);\n    a = v.substring(7, 9);\n  } else {\n    r = v.substring(1, 2);\n    g = v.substring(2, 3);\n    b = v.substring(3, 4);\n    a = v.substring(4, 5);\n    r += r;\n    g += g;\n    b += b;\n    a += a;\n  }\n  return {\n    red: parseInt(r, 16),\n    green: parseInt(g, 16),\n    blue: parseInt(b, 16),\n    alpha: a ? parseInt(a, 16) / 255 : 1\n  };\n}\nvar hex = {\n  test: isColorString(\"#\"),\n  parse: parseHex,\n  transform: rgba.transform\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs\nvar createUnitType = (unit) => ({\n  test: (v) => isString(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n  parse: parseFloat,\n  transform: (v) => `${v}${unit}`\n});\nvar degrees = createUnitType(\"deg\");\nvar percent = createUnitType(\"%\");\nvar px = createUnitType(\"px\");\nvar vh = createUnitType(\"vh\");\nvar vw = createUnitType(\"vw\");\nvar progressPercentage = {\n  ...percent,\n  parse: (v) => percent.parse(v) / 100,\n  transform: (v) => percent.transform(v * 100)\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs\nvar hsla = {\n  test: isColorString(\"hsl\", \"hue\"),\n  parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n  transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n    return \"hsla(\" + Math.round(hue) + \", \" + percent.transform(sanitize(saturation)) + \", \" + percent.transform(sanitize(lightness)) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\";\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/index.mjs\nvar color = {\n  test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n  parse: (v) => {\n    if (rgba.test(v)) {\n      return rgba.parse(v);\n    } else if (hsla.test(v)) {\n      return hsla.parse(v);\n    } else {\n      return hex.parse(v);\n    }\n  },\n  transform: (v) => {\n    return isString(v) ? v : v.hasOwnProperty(\"red\") ? rgba.transform(v) : hsla.transform(v);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/complex/index.mjs\nvar colorToken = \"${c}\";\nvar numberToken = \"${n}\";\nfunction test(v) {\n  var _a, _b;\n  return isNaN(v) && isString(v) && (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) + (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0;\n}\nfunction analyseComplexValue(v) {\n  if (typeof v === \"number\")\n    v = `${v}`;\n  const values = [];\n  let numColors = 0;\n  let numNumbers = 0;\n  const colors = v.match(colorRegex);\n  if (colors) {\n    numColors = colors.length;\n    v = v.replace(colorRegex, colorToken);\n    values.push(...colors.map(color.parse));\n  }\n  const numbers = v.match(floatRegex);\n  if (numbers) {\n    numNumbers = numbers.length;\n    v = v.replace(floatRegex, numberToken);\n    values.push(...numbers.map(number.parse));\n  }\n  return { values, numColors, numNumbers, tokenised: v };\n}\nfunction parse(v) {\n  return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n  const { values, numColors, tokenised } = analyseComplexValue(source);\n  const numValues = values.length;\n  return (v) => {\n    let output = tokenised;\n    for (let i = 0; i < numValues; i++) {\n      output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v[i]) : sanitize(v[i]));\n    }\n    return output;\n  };\n}\nvar convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n  const parsed = parse(v);\n  const transformer = createTransformer(v);\n  return transformer(parsed.map(convertNumbersToZero));\n}\nvar complex = { test, parse, createTransformer, getAnimatableNone };\n\n// ../../../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs\nvar maxDefaults = /* @__PURE__ */ new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n  const [name, value] = v.slice(0, -1).split(\"(\");\n  if (name === \"drop-shadow\")\n    return v;\n  const [number2] = value.match(floatRegex) || [];\n  if (!number2)\n    return v;\n  const unit = value.replace(number2, \"\");\n  let defaultValue = maxDefaults.has(name) ? 1 : 0;\n  if (number2 !== value)\n    defaultValue *= 100;\n  return name + \"(\" + defaultValue + unit + \")\";\n}\nvar functionRegex = /([a-z-]*)\\(.*?\\)/g;\nvar filter = {\n  ...complex,\n  getAnimatableNone: (v) => {\n    const functions = v.match(functionRegex);\n    return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs\nvar int = {\n  ...number,\n  transform: Math.round\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs\nvar numberValueTypes = {\n  borderWidth: px,\n  borderTopWidth: px,\n  borderRightWidth: px,\n  borderBottomWidth: px,\n  borderLeftWidth: px,\n  borderRadius: px,\n  radius: px,\n  borderTopLeftRadius: px,\n  borderTopRightRadius: px,\n  borderBottomRightRadius: px,\n  borderBottomLeftRadius: px,\n  width: px,\n  maxWidth: px,\n  height: px,\n  maxHeight: px,\n  size: px,\n  top: px,\n  right: px,\n  bottom: px,\n  left: px,\n  padding: px,\n  paddingTop: px,\n  paddingRight: px,\n  paddingBottom: px,\n  paddingLeft: px,\n  margin: px,\n  marginTop: px,\n  marginRight: px,\n  marginBottom: px,\n  marginLeft: px,\n  rotate: degrees,\n  rotateX: degrees,\n  rotateY: degrees,\n  rotateZ: degrees,\n  scale,\n  scaleX: scale,\n  scaleY: scale,\n  scaleZ: scale,\n  skew: degrees,\n  skewX: degrees,\n  skewY: degrees,\n  distance: px,\n  translateX: px,\n  translateY: px,\n  translateZ: px,\n  x: px,\n  y: px,\n  z: px,\n  perspective: px,\n  transformPerspective: px,\n  opacity: alpha,\n  originX: progressPercentage,\n  originY: progressPercentage,\n  originZ: px,\n  zIndex: int,\n  fillOpacity: alpha,\n  strokeOpacity: alpha,\n  numOctaves: int\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs\nvar defaultValueTypes = {\n  ...numberValueTypes,\n  color,\n  backgroundColor: color,\n  outlineColor: color,\n  fill: color,\n  stroke: color,\n  borderColor: color,\n  borderTopColor: color,\n  borderRightColor: color,\n  borderBottomColor: color,\n  borderLeftColor: color,\n  filter,\n  WebkitFilter: filter\n};\nvar getDefaultValueType = (key) => defaultValueTypes[key];\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs\nfunction getAnimatableNone2(key, value) {\n  var _a;\n  let defaultValueType = getDefaultValueType(key);\n  if (defaultValueType !== filter)\n    defaultValueType = complex;\n  return (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs\nvar testValueType = (v) => (type) => type.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs\nvar auto = {\n  test: (v) => v === \"auto\",\n  parse: (v) => v\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\nvar findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs\nvar valueTypes = [...dimensionValueTypes, color, complex];\nvar findValueType = (v) => valueTypes.find(testValueType(v));\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs\nfunction getCurrent(visualElement) {\n  const current = {};\n  visualElement.values.forEach((value, key) => current[key] = value.get());\n  return current;\n}\nfunction getVelocity(visualElement) {\n  const velocity = {};\n  visualElement.values.forEach((value, key) => velocity[key] = value.getVelocity());\n  return velocity;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n  const props = visualElement.getProps();\n  return resolveVariantFromProps(props, definition, custom !== void 0 ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/setters.mjs\nfunction setMotionValue(visualElement, key, value) {\n  if (visualElement.hasValue(key)) {\n    visualElement.getValue(key).set(value);\n  } else {\n    visualElement.addValue(key, motionValue(value));\n  }\n}\nfunction setTarget(visualElement, definition) {\n  const resolved = resolveVariant(visualElement, definition);\n  let { transitionEnd = {}, transition = {}, ...target } = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {};\n  target = { ...target, ...transitionEnd };\n  for (const key in target) {\n    const value = resolveFinalValueInKeyframes(target[key]);\n    setMotionValue(visualElement, key, value);\n  }\n}\nfunction setVariants(visualElement, variantLabels) {\n  const reversedLabels = [...variantLabels].reverse();\n  reversedLabels.forEach((key) => {\n    var _a;\n    const variant = visualElement.getVariant(key);\n    variant && setTarget(visualElement, variant);\n    (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => {\n      setVariants(child, variantLabels);\n    });\n  });\n}\nfunction setValues(visualElement, definition) {\n  if (Array.isArray(definition)) {\n    return setVariants(visualElement, definition);\n  } else if (typeof definition === \"string\") {\n    return setVariants(visualElement, [definition]);\n  } else {\n    setTarget(visualElement, definition);\n  }\n}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n  var _a, _b;\n  const newValueKeys = Object.keys(target).filter((key) => !visualElement.hasValue(key));\n  const numNewValues = newValueKeys.length;\n  if (!numNewValues)\n    return;\n  for (let i = 0; i < numNewValues; i++) {\n    const key = newValueKeys[i];\n    const targetValue = target[key];\n    let value = null;\n    if (Array.isArray(targetValue)) {\n      value = targetValue[0];\n    }\n    if (value === null) {\n      value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n    }\n    if (value === void 0 || value === null)\n      continue;\n    if (typeof value === \"string\" && (isNumericalString(value) || isZeroValueString(value))) {\n      value = parseFloat(value);\n    } else if (!findValueType(value) && complex.test(targetValue)) {\n      value = getAnimatableNone2(key, targetValue);\n    }\n    visualElement.addValue(key, motionValue(value, { owner: visualElement }));\n    if (origin[key] === void 0) {\n      origin[key] = value;\n    }\n    if (value !== null)\n      visualElement.setBaseTarget(key, value);\n  }\n}\nfunction getOriginFromTransition(key, transition) {\n  if (!transition)\n    return;\n  const valueTransition = transition[key] || transition[\"default\"] || transition;\n  return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n  var _a;\n  const origin = {};\n  for (const key in target) {\n    const transitionOrigin = getOriginFromTransition(key, transition);\n    origin[key] = transitionOrigin !== void 0 ? transitionOrigin : (_a = visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.get();\n  }\n  return origin;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs\nvar camelToDash = (str) => str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs\nvar optimizedAppearDataId = \"framerAppearId\";\nvar optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\n// ../../../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs\nvar mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\n// ../../../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs\nvar reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\n// ../../../node_modules/framer-motion/dist/es/easing/ease.mjs\nvar easeIn = (p) => p * p;\nvar easeOut = reverseEasing(easeIn);\nvar easeInOut = mirrorEasing(easeIn);\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix.mjs\nvar mix = (from, to, progress3) => -progress3 * from + progress3 * to + from;\n\n// ../../../node_modules/framer-motion/dist/es/utils/noop.mjs\nvar noop = (any) => any;\n\n// ../../../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs\nvar calcBezier = (t, a1, a2) => (((1 - 3 * a2 + 3 * a1) * t + (3 * a2 - 6 * a1)) * t + 3 * a1) * t;\nvar subdivisionPrecision = 1e-7;\nvar subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n  let currentX;\n  let currentT;\n  let i = 0;\n  do {\n    currentT = lowerBound + (upperBound - lowerBound) / 2;\n    currentX = calcBezier(currentT, mX1, mX2) - x;\n    if (currentX > 0) {\n      upperBound = currentT;\n    } else {\n      lowerBound = currentT;\n    }\n  } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);\n  return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n  if (mX1 === mY1 && mX2 === mY2)\n    return noop;\n  const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n  return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/circ.mjs\nvar circIn = (p) => 1 - Math.sin(Math.acos(p));\nvar circOut = reverseEasing(circIn);\nvar circInOut = mirrorEasing(circOut);\n\n// ../../../node_modules/framer-motion/dist/es/easing/back.mjs\nvar backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nvar backIn = reverseEasing(backOut);\nvar backInOut = mirrorEasing(backIn);\n\n// ../../../node_modules/framer-motion/dist/es/easing/anticipate.mjs\nvar anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\n// ../../../node_modules/hey-listen/dist/hey-listen.es.js\nvar warning = function() {\n};\nvar invariant = function() {\n};\nif (false) {\n  warning = function(check, message) {\n    if (!check && typeof console !== \"undefined\") {\n      console.warn(message);\n    }\n  };\n  invariant = function(check, message) {\n    if (!check) {\n      throw new Error(message);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/find-spring.mjs\nvar safeMin = 1e-3;\nvar minDuration = 0.01;\nvar maxDuration = 10;\nvar minDamping = 0.05;\nvar maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1 }) {\n  let envelope;\n  let derivative;\n  warning(duration <= maxDuration * 1e3, \"Spring duration must be 10 seconds or less\");\n  let dampingRatio = 1 - bounce;\n  dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n  duration = clamp(minDuration, maxDuration, duration / 1e3);\n  if (dampingRatio < 1) {\n    envelope = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const a = exponentialDecay - velocity;\n      const b = calcAngularFreq(undampedFreq2, dampingRatio);\n      const c = Math.exp(-delta);\n      return safeMin - a / b * c;\n    };\n    derivative = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const d = delta * velocity + velocity;\n      const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;\n      const f = Math.exp(-delta);\n      const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);\n      const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;\n      return factor * ((d - e) * f) / g;\n    };\n  } else {\n    envelope = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (undampedFreq2 - velocity) * duration + 1;\n      return -safeMin + a * b;\n    };\n    derivative = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (velocity - undampedFreq2) * (duration * duration);\n      return a * b;\n    };\n  }\n  const initialGuess = 5 / duration;\n  const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n  duration = duration * 1e3;\n  if (isNaN(undampedFreq)) {\n    return {\n      stiffness: 100,\n      damping: 10,\n      duration\n    };\n  } else {\n    const stiffness = Math.pow(undampedFreq, 2) * mass;\n    return {\n      stiffness,\n      damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n      duration\n    };\n  }\n}\nvar rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n  let result = initialGuess;\n  for (let i = 1; i < rootIterations; i++) {\n    result = result - envelope(result) / derivative(result);\n  }\n  return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n  return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/spring.mjs\nvar durationKeys = [\"duration\", \"bounce\"];\nvar physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys2) {\n  return keys2.some((key) => options[key] !== void 0);\n}\nfunction getSpringOptions(options) {\n  let springOptions = {\n    velocity: 0,\n    stiffness: 100,\n    damping: 10,\n    mass: 1,\n    isResolvedFromDuration: false,\n    ...options\n  };\n  if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {\n    const derived = findSpring(options);\n    springOptions = {\n      ...springOptions,\n      ...derived,\n      velocity: 0,\n      mass: 1\n    };\n    springOptions.isResolvedFromDuration = true;\n  }\n  return springOptions;\n}\nvar velocitySampleDuration = 5;\nfunction spring({ keyframes: keyframes2, restSpeed = 2, restDelta = 0.01, ...options }) {\n  let origin = keyframes2[0];\n  let target = keyframes2[keyframes2.length - 1];\n  const state = { done: false, value: origin };\n  const { stiffness, damping, mass, velocity, duration, isResolvedFromDuration } = getSpringOptions(options);\n  let resolveSpring = zero;\n  let initialVelocity = velocity ? -(velocity / 1e3) : 0;\n  const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n  function createSpring() {\n    const initialDelta = target - origin;\n    const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1e3;\n    if (restDelta === void 0) {\n      restDelta = Math.min(Math.abs(target - origin) / 100, 0.4);\n    }\n    if (dampingRatio < 1) {\n      const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n      resolveSpring = (t) => {\n        const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n        return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));\n      };\n    } else if (dampingRatio === 1) {\n      resolveSpring = (t) => target - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);\n    } else {\n      const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n      resolveSpring = (t) => {\n        const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n        const freqForT = Math.min(dampedAngularFreq * t, 300);\n        return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;\n      };\n    }\n  }\n  createSpring();\n  return {\n    next: (t) => {\n      const current = resolveSpring(t);\n      if (!isResolvedFromDuration) {\n        let currentVelocity = initialVelocity;\n        if (t !== 0) {\n          if (dampingRatio < 1) {\n            const prevT = Math.max(0, t - velocitySampleDuration);\n            currentVelocity = velocityPerSecond(current - resolveSpring(prevT), t - prevT);\n          } else {\n            currentVelocity = 0;\n          }\n        }\n        const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n        const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n        state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;\n      } else {\n        state.done = t >= duration;\n      }\n      state.value = state.done ? target : current;\n      return state;\n    },\n    flipTarget: () => {\n      initialVelocity = -initialVelocity;\n      [origin, target] = [target, origin];\n      createSpring();\n    }\n  };\n}\nspring.needsInterpolation = (a, b) => typeof a === \"string\" || typeof b === \"string\";\nvar zero = (_t) => 0;\n\n// ../../../node_modules/framer-motion/dist/es/utils/delay.mjs\nfunction delay(callback, timeout) {\n  const start = performance.now();\n  const checkElapsed = ({ timestamp }) => {\n    const elapsed = timestamp - start;\n    if (elapsed >= timeout) {\n      cancelSync.read(checkElapsed);\n      callback(elapsed - timeout);\n    }\n  };\n  sync.read(checkElapsed, true);\n  return () => cancelSync.read(checkElapsed);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs\nfunction isWillChangeMotionValue(value) {\n  return Boolean(isMotionValue(value) && value.add);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store-id.mjs\nvar appearStoreId = (id4, value) => `${id4}: ${value}`;\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/handoff.mjs\nfunction handoffOptimizedAppearAnimation(id4, name, value) {\n  const { MotionAppearAnimations } = window;\n  const animationId = appearStoreId(id4, transformProps.has(name) ? \"transform\" : name);\n  const animation = MotionAppearAnimations && MotionAppearAnimations.get(animationId);\n  if (animation) {\n    const sampledTime = performance.now();\n    sync.update(() => {\n      if (value.animation) {\n        value.animation.currentTime = performance.now() - sampledTime;\n      }\n    });\n    sync.render(() => {\n      MotionAppearAnimations.delete(animationId);\n      try {\n        animation.cancel();\n      } catch (e) {\n      }\n    });\n    return animation.currentTime || 0;\n  } else {\n    return 0;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/time-conversion.mjs\nvar secondsToMilliseconds = (seconds) => seconds * 1e3;\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs\nvar instantAnimationState = {\n  current: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs\nfunction hueToRgb(p, q, t) {\n  if (t < 0)\n    t += 1;\n  if (t > 1)\n    t -= 1;\n  if (t < 1 / 6)\n    return p + (q - p) * 6 * t;\n  if (t < 1 / 2)\n    return q;\n  if (t < 2 / 3)\n    return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {\n  hue /= 360;\n  saturation /= 100;\n  lightness /= 100;\n  let red = 0;\n  let green = 0;\n  let blue = 0;\n  if (!saturation) {\n    red = green = blue = lightness;\n  } else {\n    const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;\n    const p = 2 * lightness - q;\n    red = hueToRgb(p, q, hue + 1 / 3);\n    green = hueToRgb(p, q, hue);\n    blue = hueToRgb(p, q, hue - 1 / 3);\n  }\n  return {\n    red: Math.round(red * 255),\n    green: Math.round(green * 255),\n    blue: Math.round(blue * 255),\n    alpha: alpha2\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix-color.mjs\nvar mixLinearColor = (from, to, v) => {\n  const fromExpo = from * from;\n  return Math.sqrt(Math.max(0, v * (to * to - fromExpo) + fromExpo));\n};\nvar colorTypes = [hex, rgba, hsla];\nvar getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color2) {\n  const type = getColorType(color2);\n  invariant(Boolean(type), `'${color2}' is not an animatable color. Use the equivalent color code instead.`);\n  let model = type.parse(color2);\n  if (type === hsla) {\n    model = hslaToRgba(model);\n  }\n  return model;\n}\nvar mixColor = (from, to) => {\n  const fromRGBA = asRGBA(from);\n  const toRGBA = asRGBA(to);\n  const blended = { ...fromRGBA };\n  return (v) => {\n    blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n    blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n    blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n    blended.alpha = mix(fromRGBA.alpha, toRGBA.alpha, v);\n    return rgba.transform(blended);\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix-complex.mjs\nfunction getMixer(origin, target) {\n  if (typeof origin === \"number\") {\n    return (v) => mix(origin, target, v);\n  } else if (color.test(origin)) {\n    return mixColor(origin, target);\n  } else {\n    return mixComplex(origin, target);\n  }\n}\nvar mixArray = (from, to) => {\n  const output = [...from];\n  const numValues = output.length;\n  const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n  return (v) => {\n    for (let i = 0; i < numValues; i++) {\n      output[i] = blendValue[i](v);\n    }\n    return output;\n  };\n};\nvar mixObject = (origin, target) => {\n  const output = { ...origin, ...target };\n  const blendValue = {};\n  for (const key in output) {\n    if (origin[key] !== void 0 && target[key] !== void 0) {\n      blendValue[key] = getMixer(origin[key], target[key]);\n    }\n  }\n  return (v) => {\n    for (const key in blendValue) {\n      output[key] = blendValue[key](v);\n    }\n    return output;\n  };\n};\nvar mixComplex = (origin, target) => {\n  const template = complex.createTransformer(target);\n  const originStats = analyseComplexValue(origin);\n  const targetStats = analyseComplexValue(target);\n  const canInterpolate = originStats.numColors === targetStats.numColors && originStats.numNumbers >= targetStats.numNumbers;\n  if (canInterpolate) {\n    return pipe(mixArray(originStats.values, targetStats.values), template);\n  } else {\n    warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n    return (p) => `${p > 0 ? target : origin}`;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/progress.mjs\nvar progress = (from, to, value) => {\n  const toFromDifference = to - from;\n  return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/interpolate.mjs\nvar mixNumber = (from, to) => (p) => mix(from, to, p);\nfunction detectMixerFactory(v) {\n  if (typeof v === \"number\") {\n    return mixNumber;\n  } else if (typeof v === \"string\") {\n    if (color.test(v)) {\n      return mixColor;\n    } else {\n      return mixComplex;\n    }\n  } else if (Array.isArray(v)) {\n    return mixArray;\n  } else if (typeof v === \"object\") {\n    return mixObject;\n  }\n  return mixNumber;\n}\nfunction createMixers(output, ease, customMixer) {\n  const mixers = [];\n  const mixerFactory = customMixer || detectMixerFactory(output[0]);\n  const numMixers = output.length - 1;\n  for (let i = 0; i < numMixers; i++) {\n    let mixer = mixerFactory(output[i], output[i + 1]);\n    if (ease) {\n      const easingFunction = Array.isArray(ease) ? ease[i] : ease;\n      mixer = pipe(easingFunction, mixer);\n    }\n    mixers.push(mixer);\n  }\n  return mixers;\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n  const inputLength = input.length;\n  invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n  invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, \"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.\");\n  if (input[0] > input[inputLength - 1]) {\n    input = [...input].reverse();\n    output = [...output].reverse();\n  }\n  const mixers = createMixers(output, ease, mixer);\n  const numMixers = mixers.length;\n  const interpolator = (v) => {\n    let i = 0;\n    if (numMixers > 1) {\n      for (; i < input.length - 2; i++) {\n        if (v < input[i + 1])\n          break;\n      }\n    }\n    const progressInRange = progress(input[i], input[i + 1], v);\n    return mixers[i](progressInRange);\n  };\n  return isClamp ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v)) : interpolator;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/easing.mjs\nvar easingLookup = {\n  linear: noop,\n  easeIn,\n  easeInOut,\n  easeOut,\n  circIn,\n  circInOut,\n  circOut,\n  backIn,\n  backInOut,\n  backOut,\n  anticipate\n};\nvar easingDefinitionToFunction = (definition) => {\n  if (Array.isArray(definition)) {\n    invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n    const [x1, y1, x2, y2] = definition;\n    return cubicBezier(x1, y1, x2, y2);\n  } else if (typeof definition === \"string\") {\n    invariant(easingLookup[definition] !== void 0, `Invalid easing type '${definition}'`);\n    return easingLookup[definition];\n  }\n  return definition;\n};\nvar isEasingArray = (ease) => {\n  return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/keyframes.mjs\nfunction defaultEasing(values, easing) {\n  return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction defaultOffset(values) {\n  const numValues = values.length;\n  return values.map((_value, i) => i !== 0 ? i / (numValues - 1) : 0);\n}\nfunction convertOffsetToTimes(offset, duration) {\n  return offset.map((o) => o * duration);\n}\nfunction keyframes({ keyframes: keyframeValues, ease = easeInOut, times, duration = 300 }) {\n  keyframeValues = [...keyframeValues];\n  const easingFunctions = isEasingArray(ease) ? ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease);\n  const state = {\n    done: false,\n    value: keyframeValues[0]\n  };\n  const absoluteTimes = convertOffsetToTimes(\n    times && times.length === keyframeValues.length ? times : defaultOffset(keyframeValues),\n    duration\n  );\n  function createInterpolator() {\n    return interpolate(absoluteTimes, keyframeValues, {\n      ease: Array.isArray(easingFunctions) ? easingFunctions : defaultEasing(keyframeValues, easingFunctions)\n    });\n  }\n  let interpolator = createInterpolator();\n  return {\n    next: (t) => {\n      state.value = interpolator(t);\n      state.done = t >= duration;\n      return state;\n    },\n    flipTarget: () => {\n      keyframeValues.reverse();\n      interpolator = createInterpolator();\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/decay.mjs\nfunction decay({\n  keyframes: keyframes2 = [0],\n  velocity = 0,\n  power = 0.8,\n  timeConstant = 350,\n  restDelta = 0.5,\n  modifyTarget\n}) {\n  const origin = keyframes2[0];\n  const state = { done: false, value: origin };\n  let amplitude = power * velocity;\n  const ideal = origin + amplitude;\n  const target = modifyTarget === void 0 ? ideal : modifyTarget(ideal);\n  if (target !== ideal)\n    amplitude = target - origin;\n  return {\n    next: (t) => {\n      const delta = -amplitude * Math.exp(-t / timeConstant);\n      state.done = !(delta > restDelta || delta < -restDelta);\n      state.value = state.done ? target : target + delta;\n      return state;\n    },\n    flipTarget: () => {\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/index.mjs\nvar types = {\n  decay,\n  keyframes,\n  tween: keyframes,\n  spring\n};\nfunction loopElapsed(elapsed, duration, delay2 = 0) {\n  return elapsed - duration - delay2;\n}\nfunction reverseElapsed(elapsed, duration = 0, delay2 = 0, isForwardPlayback = true) {\n  return isForwardPlayback ? loopElapsed(duration + -elapsed, duration, delay2) : duration - (elapsed - duration) + delay2;\n}\nfunction hasRepeatDelayElapsed(elapsed, duration, delay2, isForwardPlayback) {\n  return isForwardPlayback ? elapsed >= duration + delay2 : elapsed <= -delay2;\n}\nvar framesync = (update) => {\n  const passTimestamp = ({ delta }) => update(delta);\n  return {\n    start: () => sync.update(passTimestamp, true),\n    stop: () => cancelSync.update(passTimestamp)\n  };\n};\nfunction animate({ duration, driver = framesync, elapsed = 0, repeat: repeatMax = 0, repeatType = \"loop\", repeatDelay = 0, keyframes: keyframes$1, autoplay = true, onPlay, onStop, onComplete, onRepeat, onUpdate, type = \"keyframes\", ...options }) {\n  var _a, _b;\n  const initialElapsed = elapsed;\n  let driverControls;\n  let repeatCount = 0;\n  let computedDuration = duration;\n  let isComplete = false;\n  let isForwardPlayback = true;\n  let interpolateFromNumber;\n  const animator = types[keyframes$1.length > 2 ? \"keyframes\" : type] || keyframes;\n  const origin = keyframes$1[0];\n  const target = keyframes$1[keyframes$1.length - 1];\n  let state = { done: false, value: origin };\n  if ((_b = (_a = animator).needsInterpolation) === null || _b === void 0 ? void 0 : _b.call(_a, origin, target)) {\n    interpolateFromNumber = interpolate([0, 100], [origin, target], {\n      clamp: false\n    });\n    keyframes$1 = [0, 100];\n  }\n  const animation = animator({\n    ...options,\n    duration,\n    keyframes: keyframes$1\n  });\n  function repeat() {\n    repeatCount++;\n    if (repeatType === \"reverse\") {\n      isForwardPlayback = repeatCount % 2 === 0;\n      elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);\n    } else {\n      elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);\n      if (repeatType === \"mirror\")\n        animation.flipTarget();\n    }\n    isComplete = false;\n    onRepeat && onRepeat();\n  }\n  function complete() {\n    driverControls && driverControls.stop();\n    onComplete && onComplete();\n  }\n  function update(delta) {\n    if (!isForwardPlayback)\n      delta = -delta;\n    elapsed += delta;\n    if (!isComplete) {\n      state = animation.next(Math.max(0, elapsed));\n      if (interpolateFromNumber)\n        state.value = interpolateFromNumber(state.value);\n      isComplete = isForwardPlayback ? state.done : elapsed <= 0;\n    }\n    onUpdate && onUpdate(state.value);\n    if (isComplete) {\n      if (repeatCount === 0) {\n        computedDuration = computedDuration !== void 0 ? computedDuration : elapsed;\n      }\n      if (repeatCount < repeatMax) {\n        hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();\n      } else {\n        complete();\n      }\n    }\n  }\n  function play() {\n    onPlay && onPlay();\n    driverControls = driver(update);\n    driverControls.start();\n  }\n  autoplay && play();\n  return {\n    stop: () => {\n      onStop && onStop();\n      driverControls && driverControls.stop();\n    },\n    set currentTime(t) {\n      elapsed = initialElapsed;\n      update(t);\n    },\n    sample: (t) => {\n      elapsed = initialElapsed;\n      const sampleResolution = duration && typeof duration === \"number\" ? Math.max(duration * 0.5, 50) : 50;\n      let sampleElapsed = 0;\n      update(0);\n      while (sampleElapsed <= t) {\n        const remaining = t - sampleElapsed;\n        update(Math.min(remaining, sampleResolution));\n        sampleElapsed += sampleResolution;\n      }\n      return state;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/waapi/easing.mjs\nfunction isWaapiSupportedEasing(easing) {\n  return !easing || Array.isArray(easing) || typeof easing === \"string\" && supportedWaapiEasing[easing];\n}\nvar cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nvar supportedWaapiEasing = {\n  linear: \"linear\",\n  ease: \"ease\",\n  easeIn: \"ease-in\",\n  easeOut: \"ease-out\",\n  easeInOut: \"ease-in-out\",\n  circIn: cubicBezierAsString([0, 0.65, 0.55, 1]),\n  circOut: cubicBezierAsString([0.55, 0, 1, 0.45]),\n  backIn: cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n  backOut: cubicBezierAsString([0.33, 1.53, 0.69, 0.99])\n};\nfunction mapEasingToNativeEasing(easing) {\n  if (!easing)\n    return void 0;\n  return Array.isArray(easing) ? cubicBezierAsString(easing) : supportedWaapiEasing[easing];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/waapi/index.mjs\nfunction animateStyle(element, valueName, keyframes2, { delay: delay2 = 0, duration, repeat = 0, repeatType = \"loop\", ease, times } = {}) {\n  return element.animate({ [valueName]: keyframes2, offset: times }, {\n    delay: delay2,\n    duration,\n    easing: mapEasingToNativeEasing(ease),\n    fill: \"both\",\n    iterations: repeat + 1,\n    direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\"\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/waapi/supports.mjs\nvar featureTests = {\n  waapi: () => Object.hasOwnProperty.call(Element.prototype, \"animate\")\n};\nvar results = {};\nvar supports = {};\nfor (const key in featureTests) {\n  supports[key] = () => {\n    if (results[key] === void 0)\n      results[key] = featureTests[key]();\n    return results[key];\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/waapi/utils/get-final-keyframe.mjs\nfunction getFinalKeyframe(keyframes2, { repeat, repeatType = \"loop\" }) {\n  const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1 ? 0 : keyframes2.length - 1;\n  return keyframes2[index];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/waapi/create-accelerated-animation.mjs\nvar acceleratedValues = /* @__PURE__ */ new Set([\"opacity\"]);\nvar sampleDelta = 10;\nfunction createAcceleratedAnimation(value, valueName, { onUpdate, onComplete, ...options }) {\n  const canAccelerateAnimation = supports.waapi() && acceleratedValues.has(valueName) && !options.repeatDelay && options.repeatType !== \"mirror\" && options.damping !== 0;\n  if (!canAccelerateAnimation)\n    return false;\n  let { keyframes: keyframes2, duration = 300, elapsed = 0, ease } = options;\n  if (options.type === \"spring\" || !isWaapiSupportedEasing(options.ease)) {\n    if (options.repeat === Infinity)\n      return;\n    const sampleAnimation = animate({ ...options, elapsed: 0 });\n    let state = { done: false, value: keyframes2[0] };\n    const pregeneratedKeyframes = [];\n    let t = 0;\n    while (!state.done && t < 2e4) {\n      state = sampleAnimation.sample(t);\n      pregeneratedKeyframes.push(state.value);\n      t += sampleDelta;\n    }\n    keyframes2 = pregeneratedKeyframes;\n    duration = t - sampleDelta;\n    ease = \"linear\";\n  }\n  const animation = animateStyle(value.owner.current, valueName, keyframes2, {\n    ...options,\n    delay: -elapsed,\n    duration,\n    ease\n  });\n  animation.onfinish = () => {\n    value.set(getFinalKeyframe(keyframes2, options));\n    onComplete && onComplete();\n  };\n  return {\n    get currentTime() {\n      return animation.currentTime || 0;\n    },\n    set currentTime(t) {\n      animation.currentTime = t;\n    },\n    stop: () => {\n      const { currentTime } = animation;\n      if (currentTime) {\n        const sampleAnimation = animate({ ...options, autoplay: false });\n        value.setWithVelocity(sampleAnimation.sample(currentTime - sampleDelta).value, sampleAnimation.sample(currentTime).value, sampleDelta);\n      }\n      sync.update(() => animation.cancel());\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/create-instant-animation.mjs\nfunction createInstantAnimation({ keyframes: keyframes2, elapsed, onUpdate, onComplete }) {\n  const setValue = () => {\n    onUpdate && onUpdate(keyframes2[keyframes2.length - 1]);\n    onComplete && onComplete();\n  };\n  return elapsed ? { stop: delay(setValue, -elapsed) } : setValue();\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/legacy-popmotion/inertia.mjs\nfunction inertia({ keyframes: keyframes2, velocity = 0, min, max, power = 0.8, timeConstant = 750, bounceStiffness = 500, bounceDamping = 10, restDelta = 1, modifyTarget, driver, onUpdate, onComplete, onStop }) {\n  const origin = keyframes2[0];\n  let currentAnimation;\n  function isOutOfBounds(v) {\n    return min !== void 0 && v < min || max !== void 0 && v > max;\n  }\n  function findNearestBoundary(v) {\n    if (min === void 0)\n      return max;\n    if (max === void 0)\n      return min;\n    return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n  }\n  function startAnimation(options) {\n    currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n    currentAnimation = animate({\n      keyframes: [0, 1],\n      velocity: 0,\n      ...options,\n      driver,\n      onUpdate: (v) => {\n        var _a;\n        onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);\n        (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);\n      },\n      onComplete,\n      onStop\n    });\n  }\n  function startSpring(options) {\n    startAnimation({\n      type: \"spring\",\n      stiffness: bounceStiffness,\n      damping: bounceDamping,\n      restDelta,\n      ...options\n    });\n  }\n  if (isOutOfBounds(origin)) {\n    startSpring({\n      velocity,\n      keyframes: [origin, findNearestBoundary(origin)]\n    });\n  } else {\n    let target = power * velocity + origin;\n    if (typeof modifyTarget !== \"undefined\")\n      target = modifyTarget(target);\n    const boundary = findNearestBoundary(target);\n    const heading = boundary === min ? -1 : 1;\n    let prev;\n    let current;\n    const checkBoundary = (v) => {\n      prev = current;\n      current = v;\n      velocity = velocityPerSecond(v - prev, frameData.delta);\n      if (heading === 1 && v > boundary || heading === -1 && v < boundary) {\n        startSpring({ keyframes: [v, boundary], velocity });\n      }\n    };\n    startAnimation({\n      type: \"decay\",\n      keyframes: [origin, 0],\n      velocity,\n      timeConstant,\n      power,\n      restDelta,\n      modifyTarget,\n      onUpdate: isOutOfBounds(target) ? checkBoundary : void 0\n    });\n  }\n  return {\n    stop: () => currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop()\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs\nvar underDampedSpring = () => ({\n  type: \"spring\",\n  stiffness: 500,\n  damping: 25,\n  restSpeed: 10\n});\nvar criticallyDampedSpring = (target) => ({\n  type: \"spring\",\n  stiffness: 550,\n  damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n  restSpeed: 10\n});\nvar linearTween = () => ({\n  type: \"keyframes\",\n  ease: \"linear\",\n  duration: 0.3\n});\nvar keyframesTransition = {\n  type: \"keyframes\",\n  duration: 0.8\n};\nvar defaultTransitions = {\n  x: underDampedSpring,\n  y: underDampedSpring,\n  z: underDampedSpring,\n  rotate: underDampedSpring,\n  rotateX: underDampedSpring,\n  rotateY: underDampedSpring,\n  rotateZ: underDampedSpring,\n  scaleX: criticallyDampedSpring,\n  scaleY: criticallyDampedSpring,\n  scale: criticallyDampedSpring,\n  opacity: linearTween,\n  backgroundColor: linearTween,\n  color: linearTween,\n  default: criticallyDampedSpring\n};\nvar getDefaultTransition = (valueKey, { keyframes: keyframes2 }) => {\n  if (keyframes2.length > 2) {\n    return keyframesTransition;\n  } else {\n    const factory = defaultTransitions[valueKey] || defaultTransitions.default;\n    return factory(keyframes2[1]);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs\nvar isAnimatable = (key, value) => {\n  if (key === \"zIndex\")\n    return false;\n  if (typeof value === \"number\" || Array.isArray(value))\n    return true;\n  if (typeof value === \"string\" && complex.test(value) && !value.startsWith(\"url(\")) {\n    return true;\n  }\n  return false;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n  return !!Object.keys(transition).length;\n}\nfunction isZero(value) {\n  return value === 0 || typeof value === \"string\" && parseFloat(value) === 0 && value.indexOf(\" \") === -1;\n}\nfunction getZeroUnit(potentialUnitType) {\n  return typeof potentialUnitType === \"number\" ? 0 : getAnimatableNone2(\"\", potentialUnitType);\n}\nfunction getValueTransition(transition, key) {\n  return transition[key] || transition[\"default\"] || transition;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/keyframes.mjs\nfunction getKeyframes(value, valueName, target, transition) {\n  const isTargetAnimatable = isAnimatable(valueName, target);\n  let origin = transition.from !== void 0 ? transition.from : value.get();\n  if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n    origin = getAnimatableNone2(valueName, target);\n  } else if (isZero(origin) && typeof target === \"string\") {\n    origin = getZeroUnit(target);\n  } else if (!Array.isArray(target) && isZero(target) && typeof origin === \"string\") {\n    target = getZeroUnit(origin);\n  }\n  if (Array.isArray(target)) {\n    if (target[0] === null) {\n      target[0] = origin;\n    }\n    return target;\n  } else {\n    return [origin, target];\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/index.mjs\nvar createMotionValueAnimation = (valueName, value, target, transition = {}) => {\n  return (onComplete) => {\n    const valueTransition = getValueTransition(transition, valueName) || {};\n    const delay2 = valueTransition.delay || transition.delay || 0;\n    let { elapsed = 0 } = transition;\n    elapsed = elapsed - secondsToMilliseconds(delay2);\n    const keyframes2 = getKeyframes(value, valueName, target, valueTransition);\n    const originKeyframe = keyframes2[0];\n    const targetKeyframe = keyframes2[keyframes2.length - 1];\n    const isOriginAnimatable = isAnimatable(valueName, originKeyframe);\n    const isTargetAnimatable = isAnimatable(valueName, targetKeyframe);\n    warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${valueName} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n    let options = {\n      keyframes: keyframes2,\n      velocity: value.getVelocity(),\n      ...valueTransition,\n      elapsed,\n      onUpdate: (v) => {\n        value.set(v);\n        valueTransition.onUpdate && valueTransition.onUpdate(v);\n      },\n      onComplete: () => {\n        onComplete();\n        valueTransition.onComplete && valueTransition.onComplete();\n      }\n    };\n    if (!isOriginAnimatable || !isTargetAnimatable || instantAnimationState.current || valueTransition.type === false) {\n      return createInstantAnimation(options);\n    } else if (valueTransition.type === \"inertia\") {\n      return inertia(options);\n    }\n    if (!isTransitionDefined(valueTransition)) {\n      options = {\n        ...options,\n        ...getDefaultTransition(valueName, options)\n      };\n    }\n    if (options.duration) {\n      options.duration = secondsToMilliseconds(options.duration);\n    }\n    if (options.repeatDelay) {\n      options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n    }\n    const visualElement = value.owner;\n    const element = visualElement && visualElement.current;\n    if (visualElement && element instanceof HTMLElement && !(visualElement === null || visualElement === void 0 ? void 0 : visualElement.getProps().onUpdate)) {\n      const acceleratedAnimation = createAcceleratedAnimation(value, valueName, options);\n      if (acceleratedAnimation)\n        return acceleratedAnimation;\n    }\n    return animate(options);\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/animation.mjs\nfunction animateVisualElement(visualElement, definition, options = {}) {\n  visualElement.notify(\"AnimationStart\", definition);\n  let animation;\n  if (Array.isArray(definition)) {\n    const animations2 = definition.map((variant) => animateVariant(visualElement, variant, options));\n    animation = Promise.all(animations2);\n  } else if (typeof definition === \"string\") {\n    animation = animateVariant(visualElement, definition, options);\n  } else {\n    const resolvedDefinition = typeof definition === \"function\" ? resolveVariant(visualElement, definition, options.custom) : definition;\n    animation = animateTarget(visualElement, resolvedDefinition, options);\n  }\n  return animation.then(() => visualElement.notify(\"AnimationComplete\", definition));\n}\nfunction animateVariant(visualElement, variant, options = {}) {\n  var _a;\n  const resolved = resolveVariant(visualElement, variant, options.custom);\n  let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n  if (options.transitionOverride) {\n    transition = options.transitionOverride;\n  }\n  const getAnimation = resolved ? () => animateTarget(visualElement, resolved, options) : () => Promise.resolve();\n  const getChildAnimations = ((_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.size) ? (forwardDelay = 0) => {\n    const { delayChildren = 0, staggerChildren, staggerDirection } = transition;\n    return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n  } : () => Promise.resolve();\n  const { when } = transition;\n  if (when) {\n    const [first, last] = when === \"beforeChildren\" ? [getAnimation, getChildAnimations] : [getChildAnimations, getAnimation];\n    return first().then(last);\n  } else {\n    return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n  }\n}\nfunction animateTarget(visualElement, definition, { delay: delay2 = 0, transitionOverride, type } = {}) {\n  var _a;\n  let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = visualElement.makeTargetAnimatable(definition);\n  const willChange = visualElement.getValue(\"willChange\");\n  if (transitionOverride)\n    transition = transitionOverride;\n  const animations2 = [];\n  const animationTypeState = type && ((_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.getState()[type]);\n  for (const key in target) {\n    const value = visualElement.getValue(key);\n    const valueTarget = target[key];\n    if (!value || valueTarget === void 0 || animationTypeState && shouldBlockAnimation(animationTypeState, key)) {\n      continue;\n    }\n    const valueTransition = { delay: delay2, elapsed: 0, ...transition };\n    if (!value.hasAnimated) {\n      const appearId = visualElement.getProps()[optimizedAppearDataAttribute];\n      if (appearId) {\n        valueTransition.elapsed = handoffOptimizedAppearAnimation(appearId, key, value);\n      }\n    }\n    let animation = value.start(createMotionValueAnimation(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key) ? { type: false } : valueTransition));\n    if (isWillChangeMotionValue(willChange)) {\n      willChange.add(key);\n      animation = animation.then(() => willChange.remove(key));\n    }\n    animations2.push(animation);\n  }\n  return Promise.all(animations2).then(() => {\n    transitionEnd && setTarget(visualElement, transitionEnd);\n  });\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n  const animations2 = [];\n  const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n  const generateStaggerDuration = staggerDirection === 1 ? (i = 0) => i * staggerChildren : (i = 0) => maxStaggerDuration - i * staggerChildren;\n  Array.from(visualElement.variantChildren).sort(sortByTreeOrder).forEach((child, i) => {\n    child.notify(\"AnimationStart\", variant);\n    animations2.push(animateVariant(child, variant, {\n      ...options,\n      delay: delayChildren + generateStaggerDuration(i)\n    }).then(() => child.notify(\"AnimationComplete\", variant)));\n  });\n  return Promise.all(animations2);\n}\nfunction stopAnimation(visualElement) {\n  visualElement.values.forEach((value) => value.stop());\n}\nfunction sortByTreeOrder(a, b) {\n  return a.sortNodePosition(b);\n}\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n  const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n  needsAnimating[key] = false;\n  return shouldBlock;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animations.mjs\nimport { useEffect as useEffect6, useContext as useContext7 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs\nfunction shallowCompare(next, prev) {\n  if (!Array.isArray(prev))\n    return false;\n  const prevLength = prev.length;\n  if (prevLength !== next.length)\n    return false;\n  for (let i = 0; i < prevLength; i++) {\n    if (prev[i] !== next[i])\n      return false;\n  }\n  return true;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs\nvar variantPriorityOrder = [\n  AnimationType.Animate,\n  AnimationType.InView,\n  AnimationType.Focus,\n  AnimationType.Hover,\n  AnimationType.Tap,\n  AnimationType.Drag,\n  AnimationType.Exit\n];\nvar reversePriorityOrder = [...variantPriorityOrder].reverse();\nvar numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n  return (animations2) => Promise.all(animations2.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n  let animate3 = animateList(visualElement);\n  const state = createState();\n  let isInitialRender = true;\n  const buildResolvedTypeValues = (acc, definition) => {\n    const resolved = resolveVariant(visualElement, definition);\n    if (resolved) {\n      const { transition, transitionEnd, ...target } = resolved;\n      acc = { ...acc, ...target, ...transitionEnd };\n    }\n    return acc;\n  };\n  function setAnimateFunction(makeAnimator) {\n    animate3 = makeAnimator(visualElement);\n  }\n  function animateChanges(options, changedActiveType) {\n    const props = visualElement.getProps();\n    const context = visualElement.getVariantContext(true) || {};\n    const animations2 = [];\n    const removedKeys = /* @__PURE__ */ new Set();\n    let encounteredKeys = {};\n    let removedVariantIndex = Infinity;\n    for (let i = 0; i < numAnimationTypes; i++) {\n      const type = reversePriorityOrder[i];\n      const typeState = state[type];\n      const prop = props[type] !== void 0 ? props[type] : context[type];\n      const propIsVariant = isVariantLabel(prop);\n      const activeDelta = type === changedActiveType ? typeState.isActive : null;\n      if (activeDelta === false)\n        removedVariantIndex = i;\n      let isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n      if (isInherited && isInitialRender && visualElement.manuallyAnimateOnMount) {\n        isInherited = false;\n      }\n      typeState.protectedKeys = { ...encounteredKeys };\n      if (!typeState.isActive && activeDelta === null || !prop && !typeState.prevProp || isAnimationControls(prop) || typeof prop === \"boolean\") {\n        continue;\n      }\n      const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n      let shouldAnimateType = variantDidChange || type === changedActiveType && typeState.isActive && !isInherited && propIsVariant || i > removedVariantIndex && propIsVariant;\n      const definitionList = Array.isArray(prop) ? prop : [prop];\n      let resolvedValues = definitionList.reduce(buildResolvedTypeValues, {});\n      if (activeDelta === false)\n        resolvedValues = {};\n      const { prevResolvedValues = {} } = typeState;\n      const allKeys = {\n        ...prevResolvedValues,\n        ...resolvedValues\n      };\n      const markToAnimate = (key) => {\n        shouldAnimateType = true;\n        removedKeys.delete(key);\n        typeState.needsAnimating[key] = true;\n      };\n      for (const key in allKeys) {\n        const next = resolvedValues[key];\n        const prev = prevResolvedValues[key];\n        if (encounteredKeys.hasOwnProperty(key))\n          continue;\n        if (next !== prev) {\n          if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n            if (!shallowCompare(next, prev) || variantDidChange) {\n              markToAnimate(key);\n            } else {\n              typeState.protectedKeys[key] = true;\n            }\n          } else if (next !== void 0) {\n            markToAnimate(key);\n          } else {\n            removedKeys.add(key);\n          }\n        } else if (next !== void 0 && removedKeys.has(key)) {\n          markToAnimate(key);\n        } else {\n          typeState.protectedKeys[key] = true;\n        }\n      }\n      typeState.prevProp = prop;\n      typeState.prevResolvedValues = resolvedValues;\n      if (typeState.isActive) {\n        encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n      }\n      if (isInitialRender && visualElement.blockInitialAnimation) {\n        shouldAnimateType = false;\n      }\n      if (shouldAnimateType && !isInherited) {\n        animations2.push(...definitionList.map((animation) => ({\n          animation,\n          options: { type, ...options }\n        })));\n      }\n    }\n    if (removedKeys.size) {\n      const fallbackAnimation = {};\n      removedKeys.forEach((key) => {\n        const fallbackTarget = visualElement.getBaseTarget(key);\n        if (fallbackTarget !== void 0) {\n          fallbackAnimation[key] = fallbackTarget;\n        }\n      });\n      animations2.push({ animation: fallbackAnimation });\n    }\n    let shouldAnimate = Boolean(animations2.length);\n    if (isInitialRender && props.initial === false && !visualElement.manuallyAnimateOnMount) {\n      shouldAnimate = false;\n    }\n    isInitialRender = false;\n    return shouldAnimate ? animate3(animations2) : Promise.resolve();\n  }\n  function setActive(type, isActive, options) {\n    var _a;\n    if (state[type].isActive === isActive)\n      return Promise.resolve();\n    (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => {\n      var _a2;\n      return (_a2 = child.animationState) === null || _a2 === void 0 ? void 0 : _a2.setActive(type, isActive);\n    });\n    state[type].isActive = isActive;\n    const animations2 = animateChanges(options, type);\n    for (const key in state) {\n      state[key].protectedKeys = {};\n    }\n    return animations2;\n  }\n  return {\n    animateChanges,\n    setActive,\n    setAnimateFunction,\n    getState: () => state\n  };\n}\nfunction checkVariantsDidChange(prev, next) {\n  if (typeof next === \"string\") {\n    return next !== prev;\n  } else if (Array.isArray(next)) {\n    return !shallowCompare(next, prev);\n  }\n  return false;\n}\nfunction createTypeState(isActive = false) {\n  return {\n    isActive,\n    protectedKeys: {},\n    needsAnimating: {},\n    prevResolvedValues: {}\n  };\n}\nfunction createState() {\n  return {\n    [AnimationType.Animate]: createTypeState(true),\n    [AnimationType.InView]: createTypeState(),\n    [AnimationType.Hover]: createTypeState(),\n    [AnimationType.Tap]: createTypeState(),\n    [AnimationType.Drag]: createTypeState(),\n    [AnimationType.Focus]: createTypeState(),\n    [AnimationType.Exit]: createTypeState()\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/make-renderless-component.mjs\nvar makeRenderlessComponent = (hook) => (props) => {\n  hook(props);\n  return null;\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animations.mjs\nvar animations = {\n  animation: makeRenderlessComponent(({ visualElement, animate: animate3 }) => {\n    visualElement.animationState || (visualElement.animationState = createAnimationState(visualElement));\n    if (isAnimationControls(animate3)) {\n      useEffect6(() => animate3.subscribe(visualElement), [animate3]);\n    }\n  }),\n  exit: makeRenderlessComponent((props) => {\n    const { custom, visualElement } = props;\n    const [isPresent2, safeToRemove] = usePresence();\n    const presenceContext = useContext7(PresenceContext);\n    useEffect6(() => {\n      visualElement.isPresent = isPresent2;\n      const animation = visualElement.animationState && visualElement.animationState.setActive(AnimationType.Exit, !isPresent2, {\n        custom: presenceContext && presenceContext.custom || custom\n      });\n      if (animation && !isPresent2) {\n        animation.then(safeToRemove);\n      }\n    }, [isPresent2]);\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/distance.mjs\nvar distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n  const xDelta = distance(a.x, b.x);\n  const yDelta = distance(a.y, b.y);\n  return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs\nfunction calcLength(axis) {\n  return axis.max - axis.min;\n}\nfunction isNear(value, target = 0, maxDistance = 0.01) {\n  return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n  delta.origin = origin;\n  delta.originPoint = mix(source.min, source.max, delta.origin);\n  delta.scale = calcLength(target) / calcLength(source);\n  if (isNear(delta.scale, 1, 1e-4) || isNaN(delta.scale))\n    delta.scale = 1;\n  delta.translate = mix(target.min, target.max, delta.origin) - delta.originPoint;\n  if (isNear(delta.translate) || isNaN(delta.translate))\n    delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n  calcAxisDelta(delta.x, source.x, target.x, origin === null || origin === void 0 ? void 0 : origin.originX);\n  calcAxisDelta(delta.y, source.y, target.y, origin === null || origin === void 0 ? void 0 : origin.originY);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n  target.min = parent.min + relative.min;\n  target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n  calcRelativeAxis(target.x, relative.x, parent.x);\n  calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n  target.min = layout.min - parent.min;\n  target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n  calcRelativeAxisPosition(target.x, layout.x, parent.x);\n  calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/models.mjs\nvar createAxisDelta = () => ({\n  translate: 0,\n  scale: 1,\n  origin: 0,\n  originPoint: 0\n});\nvar createDelta = () => ({\n  x: createAxisDelta(),\n  y: createAxisDelta()\n});\nvar createAxis = () => ({ min: 0, max: 0 });\nvar createBox = () => ({\n  x: createAxis(),\n  y: createAxis()\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/VisualElement.mjs\nimport { createElement as createElement2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs\nvar prefersReducedMotion = { current: null };\nvar hasReducedMotionListener = { current: false };\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs\nfunction initPrefersReducedMotion() {\n  hasReducedMotionListener.current = true;\n  if (!isBrowser)\n    return;\n  if (window.matchMedia) {\n    const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n    const setReducedMotionPreferences = () => prefersReducedMotion.current = motionMediaQuery.matches;\n    motionMediaQuery.addListener(setReducedMotionPreferences);\n    setReducedMotionPreferences();\n  } else {\n    prefersReducedMotion.current = false;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs\nfunction updateMotionValuesFromProps(element, next, prev) {\n  const { willChange } = next;\n  for (const key in next) {\n    const nextValue = next[key];\n    const prevValue = prev[key];\n    if (isMotionValue(nextValue)) {\n      element.addValue(key, nextValue);\n      if (isWillChangeMotionValue(willChange)) {\n        willChange.add(key);\n      }\n      if (false) {\n        warnOnce(nextValue.version === \"8.4.6\", `Attempting to mix Framer Motion versions ${nextValue.version} with 8.4.6 may not work as expected.`);\n      }\n    } else if (isMotionValue(prevValue)) {\n      element.addValue(key, motionValue(nextValue, { owner: element }));\n      if (isWillChangeMotionValue(willChange)) {\n        willChange.remove(key);\n      }\n    } else if (prevValue !== nextValue) {\n      if (element.hasValue(key)) {\n        const existingValue = element.getValue(key);\n        !existingValue.hasAnimated && existingValue.set(nextValue);\n      } else {\n        const latestValue = element.getStaticValue(key);\n        element.addValue(key, motionValue(latestValue !== void 0 ? latestValue : nextValue, { owner: element }));\n      }\n    }\n  }\n  for (const key in prev) {\n    if (next[key] === void 0)\n      element.removeValue(key);\n  }\n  return next;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/VisualElement.mjs\nvar featureNames = Object.keys(featureDefinitions);\nvar numFeatures = featureNames.length;\nvar propEventHandlers = [\n  \"AnimationStart\",\n  \"AnimationComplete\",\n  \"Update\",\n  \"BeforeLayoutMeasure\",\n  \"LayoutMeasure\",\n  \"LayoutAnimationStart\",\n  \"LayoutAnimationComplete\"\n];\nvar VisualElement = class {\n  constructor({ parent, props, reducedMotionConfig, visualState }, options = {}) {\n    this.current = null;\n    this.children = /* @__PURE__ */ new Set();\n    this.isVariantNode = false;\n    this.isControllingVariants = false;\n    this.shouldReduceMotion = null;\n    this.values = /* @__PURE__ */ new Map();\n    this.isPresent = true;\n    this.valueSubscriptions = /* @__PURE__ */ new Map();\n    this.prevMotionValues = {};\n    this.events = {};\n    this.propEventSubscriptions = {};\n    this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n    this.render = () => {\n      if (!this.current)\n        return;\n      this.triggerBuild();\n      this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n    };\n    this.scheduleRender = () => sync.render(this.render, false, true);\n    const { latestValues, renderState } = visualState;\n    this.latestValues = latestValues;\n    this.baseTarget = { ...latestValues };\n    this.initialValues = props.initial ? { ...latestValues } : {};\n    this.renderState = renderState;\n    this.parent = parent;\n    this.props = props;\n    this.depth = parent ? parent.depth + 1 : 0;\n    this.reducedMotionConfig = reducedMotionConfig;\n    this.options = options;\n    this.isControllingVariants = isControllingVariants(props);\n    this.isVariantNode = isVariantNode(props);\n    if (this.isVariantNode) {\n      this.variantChildren = /* @__PURE__ */ new Set();\n    }\n    this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n    const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {});\n    for (const key in initialMotionValues) {\n      const value = initialMotionValues[key];\n      if (latestValues[key] !== void 0 && isMotionValue(value)) {\n        value.set(latestValues[key], false);\n        if (isWillChangeMotionValue(willChange)) {\n          willChange.add(key);\n        }\n      }\n    }\n  }\n  scrapeMotionValuesFromProps(_props, _prevProps) {\n    return {};\n  }\n  mount(instance) {\n    var _a;\n    this.current = instance;\n    if (this.projection) {\n      this.projection.mount(instance);\n    }\n    if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n      this.removeFromVariantTree = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.addVariantChild(this);\n    }\n    this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n    if (!hasReducedMotionListener.current) {\n      initPrefersReducedMotion();\n    }\n    this.shouldReduceMotion = this.reducedMotionConfig === \"never\" ? false : this.reducedMotionConfig === \"always\" ? true : prefersReducedMotion.current;\n    if (false) {\n      warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n    }\n    if (this.parent)\n      this.parent.children.add(this);\n    this.setProps(this.props);\n  }\n  unmount() {\n    var _a, _b, _c;\n    (_a = this.projection) === null || _a === void 0 ? void 0 : _a.unmount();\n    cancelSync.update(this.notifyUpdate);\n    cancelSync.render(this.render);\n    this.valueSubscriptions.forEach((remove) => remove());\n    (_b = this.removeFromVariantTree) === null || _b === void 0 ? void 0 : _b.call(this);\n    (_c = this.parent) === null || _c === void 0 ? void 0 : _c.children.delete(this);\n    for (const key in this.events) {\n      this.events[key].clear();\n    }\n    this.current = null;\n  }\n  bindToMotionValue(key, value) {\n    const valueIsTransform = transformProps.has(key);\n    const removeOnChange = value.on(\"change\", (latestValue) => {\n      this.latestValues[key] = latestValue;\n      this.props.onUpdate && sync.update(this.notifyUpdate, false, true);\n      if (valueIsTransform && this.projection) {\n        this.projection.isTransformDirty = true;\n      }\n    });\n    const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n    this.valueSubscriptions.set(key, () => {\n      removeOnChange();\n      removeOnRenderRequest();\n    });\n  }\n  sortNodePosition(other) {\n    if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type)\n      return 0;\n    return this.sortInstanceNodePosition(this.current, other.current);\n  }\n  loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures, projectionId, ProjectionNodeConstructor, initialLayoutGroupConfig) {\n    const features = [];\n    if (false) {\n      invariant(false, \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\");\n    }\n    for (let i = 0; i < numFeatures; i++) {\n      const name = featureNames[i];\n      const { isEnabled, Component: Component2 } = featureDefinitions[name];\n      if (isEnabled(renderedProps) && Component2) {\n        features.push(createElement2(Component2, {\n          key: name,\n          ...renderedProps,\n          visualElement: this\n        }));\n      }\n    }\n    if (!this.projection && ProjectionNodeConstructor) {\n      this.projection = new ProjectionNodeConstructor(projectionId, this.latestValues, this.parent && this.parent.projection);\n      const { layoutId, layout, drag: drag2, dragConstraints, layoutScroll } = renderedProps;\n      this.projection.setOptions({\n        layoutId,\n        layout,\n        alwaysMeasureLayout: Boolean(drag2) || dragConstraints && isRefObject(dragConstraints),\n        visualElement: this,\n        scheduleRender: () => this.scheduleRender(),\n        animationType: typeof layout === \"string\" ? layout : \"both\",\n        initialPromotionConfig: initialLayoutGroupConfig,\n        layoutScroll\n      });\n    }\n    return features;\n  }\n  triggerBuild() {\n    this.build(this.renderState, this.latestValues, this.options, this.props);\n  }\n  measureViewportBox() {\n    return this.current ? this.measureInstanceViewportBox(this.current, this.props) : createBox();\n  }\n  getStaticValue(key) {\n    return this.latestValues[key];\n  }\n  setStaticValue(key, value) {\n    this.latestValues[key] = value;\n  }\n  makeTargetAnimatable(target, canMutate = true) {\n    return this.makeTargetAnimatableFromInstance(target, this.props, canMutate);\n  }\n  setProps(props) {\n    if (props.transformTemplate || this.props.transformTemplate) {\n      this.scheduleRender();\n    }\n    const prevProps = this.props;\n    this.props = props;\n    for (let i = 0; i < propEventHandlers.length; i++) {\n      const key = propEventHandlers[i];\n      if (this.propEventSubscriptions[key]) {\n        this.propEventSubscriptions[key]();\n        delete this.propEventSubscriptions[key];\n      }\n      const listener = props[\"on\" + key];\n      if (listener) {\n        this.propEventSubscriptions[key] = this.on(key, listener);\n      }\n    }\n    this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, prevProps), this.prevMotionValues);\n    if (this.handleChildMotionValue) {\n      this.handleChildMotionValue();\n    }\n  }\n  getProps() {\n    return this.props;\n  }\n  getVariant(name) {\n    var _a;\n    return (_a = this.props.variants) === null || _a === void 0 ? void 0 : _a[name];\n  }\n  getDefaultTransition() {\n    return this.props.transition;\n  }\n  getTransformPagePoint() {\n    return this.props.transformPagePoint;\n  }\n  getClosestVariantNode() {\n    var _a;\n    return this.isVariantNode ? this : (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getClosestVariantNode();\n  }\n  getVariantContext(startAtParent = false) {\n    var _a, _b;\n    if (startAtParent)\n      return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getVariantContext();\n    if (!this.isControllingVariants) {\n      const context2 = ((_b = this.parent) === null || _b === void 0 ? void 0 : _b.getVariantContext()) || {};\n      if (this.props.initial !== void 0) {\n        context2.initial = this.props.initial;\n      }\n      return context2;\n    }\n    const context = {};\n    for (let i = 0; i < numVariantProps; i++) {\n      const name = variantProps2[i];\n      const prop = this.props[name];\n      if (isVariantLabel(prop) || prop === false) {\n        context[name] = prop;\n      }\n    }\n    return context;\n  }\n  addVariantChild(child) {\n    var _a;\n    const closestVariantNode = this.getClosestVariantNode();\n    if (closestVariantNode) {\n      (_a = closestVariantNode.variantChildren) === null || _a === void 0 ? void 0 : _a.add(child);\n      return () => closestVariantNode.variantChildren.delete(child);\n    }\n  }\n  addValue(key, value) {\n    if (value !== this.values.get(key)) {\n      this.removeValue(key);\n      this.bindToMotionValue(key, value);\n    }\n    this.values.set(key, value);\n    this.latestValues[key] = value.get();\n  }\n  removeValue(key) {\n    var _a;\n    this.values.delete(key);\n    (_a = this.valueSubscriptions.get(key)) === null || _a === void 0 ? void 0 : _a();\n    this.valueSubscriptions.delete(key);\n    delete this.latestValues[key];\n    this.removeValueFromRenderState(key, this.renderState);\n  }\n  hasValue(key) {\n    return this.values.has(key);\n  }\n  getValue(key, defaultValue) {\n    if (this.props.values && this.props.values[key]) {\n      return this.props.values[key];\n    }\n    let value = this.values.get(key);\n    if (value === void 0 && defaultValue !== void 0) {\n      value = motionValue(defaultValue, { owner: this });\n      this.addValue(key, value);\n    }\n    return value;\n  }\n  readValue(key) {\n    return this.latestValues[key] !== void 0 || !this.current ? this.latestValues[key] : this.readValueFromInstance(this.current, key, this.options);\n  }\n  setBaseTarget(key, value) {\n    this.baseTarget[key] = value;\n  }\n  getBaseTarget(key) {\n    var _a;\n    const { initial } = this.props;\n    const valueFromInitial = typeof initial === \"string\" || typeof initial === \"object\" ? (_a = resolveVariantFromProps(this.props, initial)) === null || _a === void 0 ? void 0 : _a[key] : void 0;\n    if (initial && valueFromInitial !== void 0) {\n      return valueFromInitial;\n    }\n    const target = this.getBaseTargetFromProps(this.props, key);\n    if (target !== void 0 && !isMotionValue(target))\n      return target;\n    return this.initialValues[key] !== void 0 && valueFromInitial === void 0 ? void 0 : this.baseTarget[key];\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    return this.events[eventName].add(callback);\n  }\n  notify(eventName, ...args) {\n    var _a;\n    (_a = this.events[eventName]) === null || _a === void 0 ? void 0 : _a.notify(...args);\n  }\n};\nvar variantProps2 = [\"initial\", ...variantPriorityOrder];\nvar numVariantProps = variantProps2.length;\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate.mjs\nfunction animate2(from, to, transition = {}) {\n  const value = isMotionValue(from) ? from : motionValue(from);\n  value.start(createMotionValueAnimation(\"\", value, to, transition));\n  return {\n    stop: () => value.stop(),\n    isAnimating: () => value.isAnimating()\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs\nvar compareByDepth = (a, b) => a.depth - b.depth;\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs\nvar FlatTree = class {\n  constructor() {\n    this.children = [];\n    this.isDirty = false;\n  }\n  add(child) {\n    addUniqueItem(this.children, child);\n    this.isDirty = true;\n  }\n  remove(child) {\n    removeItem(this.children, child);\n    this.isDirty = true;\n  }\n  forEach(callback) {\n    this.isDirty && this.children.sort(compareByDepth);\n    this.isDirty = false;\n    this.children.forEach(callback);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs\nfunction createMotionProxy(createConfig) {\n  function custom(Component2, customMotionComponentConfig = {}) {\n    return createMotionComponent(createConfig(Component2, customMotionComponentConfig));\n  }\n  if (typeof Proxy === \"undefined\") {\n    return custom;\n  }\n  const componentCache = /* @__PURE__ */ new Map();\n  return new Proxy(custom, {\n    get: (_target, key) => {\n      if (!componentCache.has(key)) {\n        componentCache.set(key, custom(key));\n      }\n      return componentCache.get(key);\n    }\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs\nvar lowercaseSVGElements = [\n  \"animate\",\n  \"circle\",\n  \"defs\",\n  \"desc\",\n  \"ellipse\",\n  \"g\",\n  \"image\",\n  \"line\",\n  \"filter\",\n  \"marker\",\n  \"mask\",\n  \"metadata\",\n  \"path\",\n  \"pattern\",\n  \"polygon\",\n  \"polyline\",\n  \"rect\",\n  \"stop\",\n  \"switch\",\n  \"symbol\",\n  \"svg\",\n  \"text\",\n  \"tspan\",\n  \"use\",\n  \"view\"\n];\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs\nfunction isSVGComponent(Component2) {\n  if (typeof Component2 !== \"string\" || Component2.includes(\"-\")) {\n    return false;\n  } else if (lowercaseSVGElements.indexOf(Component2) > -1 || /[A-Z]/.test(Component2)) {\n    return true;\n  }\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nimport { useMemo as useMemo4, createElement as createElement3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs\nimport { useMemo as useMemo2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n  return transformProps.has(key) || key.startsWith(\"origin\") || (layout || layoutId !== void 0) && (!!scaleCorrectors[key] || key === \"opacity\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs\nfunction isCSSVariable(key) {\n  return key.startsWith(\"--\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs\nvar getValueAsType = (value, type) => {\n  return type && typeof value === \"number\" ? type.transform(value) : value;\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n  const { style, vars, transform: transform2, transformKeys: transformKeys2, transformOrigin } = state;\n  transformKeys2.length = 0;\n  let hasTransform2 = false;\n  let hasTransformOrigin = false;\n  let transformIsNone = true;\n  for (const key in latestValues) {\n    const value = latestValues[key];\n    if (isCSSVariable(key)) {\n      vars[key] = value;\n      continue;\n    }\n    const valueType = numberValueTypes[key];\n    const valueAsType = getValueAsType(value, valueType);\n    if (transformProps.has(key)) {\n      hasTransform2 = true;\n      transform2[key] = valueAsType;\n      transformKeys2.push(key);\n      if (!transformIsNone)\n        continue;\n      if (value !== (valueType.default || 0))\n        transformIsNone = false;\n    } else if (key.startsWith(\"origin\")) {\n      hasTransformOrigin = true;\n      transformOrigin[key] = valueAsType;\n    } else {\n      style[key] = valueAsType;\n    }\n  }\n  if (!latestValues.transform) {\n    if (hasTransform2 || transformTemplate) {\n      style.transform = buildTransform(state, options, transformIsNone, transformTemplate);\n    } else if (style.transform) {\n      style.transform = \"none\";\n    }\n  }\n  if (hasTransformOrigin) {\n    const { originX = \"50%\", originY = \"50%\", originZ = 0 } = transformOrigin;\n    style.transformOrigin = `${originX} ${originY} ${originZ}`;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs\nvar createHtmlRenderState = () => ({\n  style: {},\n  transform: {},\n  transformKeys: [],\n  transformOrigin: {},\n  vars: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs\nfunction copyRawValuesOnly(target, source, props) {\n  for (const key in source) {\n    if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n      target[key] = source[key];\n    }\n  }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n  return useMemo2(() => {\n    const state = createHtmlRenderState();\n    buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n    return Object.assign({}, state.vars, state.style);\n  }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n  const styleProp = props.style || {};\n  const style = {};\n  copyRawValuesOnly(style, styleProp, props);\n  Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n  return props.transformValues ? props.transformValues(style) : style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n  const htmlProps = {};\n  const style = useStyle(props, visualState, isStatic);\n  if (props.drag && props.dragListener !== false) {\n    htmlProps.draggable = false;\n    style.userSelect = style.WebkitUserSelect = style.WebkitTouchCallout = \"none\";\n    style.touchAction = props.drag === true ? \"none\" : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n  }\n  htmlProps.style = style;\n  return htmlProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs\nimport { useMemo as useMemo3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs\nfunction calcOrigin(origin, offset, size) {\n  return typeof origin === \"string\" ? origin : px.transform(offset + size * origin);\n}\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n  const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n  const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n  return `${pxOriginX} ${pxOriginY}`;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs\nvar dashKeys = {\n  offset: \"stroke-dashoffset\",\n  array: \"stroke-dasharray\"\n};\nvar camelKeys = {\n  offset: \"strokeDashoffset\",\n  array: \"strokeDasharray\"\n};\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n  attrs.pathLength = 1;\n  const keys2 = useDashCase ? dashKeys : camelKeys;\n  attrs[keys2.offset] = px.transform(-offset);\n  const pathLength = px.transform(length);\n  const pathSpacing = px.transform(spacing);\n  attrs[keys2.array] = `${pathLength} ${pathSpacing}`;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs\nfunction buildSVGAttrs(state, {\n  attrX,\n  attrY,\n  originX,\n  originY,\n  pathLength,\n  pathSpacing = 1,\n  pathOffset = 0,\n  ...latest\n}, options, isSVGTag2, transformTemplate) {\n  buildHTMLStyles(state, latest, options, transformTemplate);\n  if (isSVGTag2) {\n    if (state.style.viewBox) {\n      state.attrs.viewBox = state.style.viewBox;\n    }\n    return;\n  }\n  state.attrs = state.style;\n  state.style = {};\n  const { attrs, style, dimensions } = state;\n  if (attrs.transform) {\n    if (dimensions)\n      style.transform = attrs.transform;\n    delete attrs.transform;\n  }\n  if (dimensions && (originX !== void 0 || originY !== void 0 || style.transform)) {\n    style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== void 0 ? originX : 0.5, originY !== void 0 ? originY : 0.5);\n  }\n  if (attrX !== void 0)\n    attrs.x = attrX;\n  if (attrY !== void 0)\n    attrs.y = attrY;\n  if (pathLength !== void 0) {\n    buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs\nvar createSvgRenderState = () => ({\n  ...createHtmlRenderState(),\n  attrs: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs\nvar isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs\nfunction useSVGProps(props, visualState, _isStatic, Component2) {\n  const visualProps = useMemo3(() => {\n    const state = createSvgRenderState();\n    buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component2), props.transformTemplate);\n    return {\n      ...state.attrs,\n      style: { ...state.style }\n    };\n  }, [visualState]);\n  if (props.style) {\n    const rawStyles = {};\n    copyRawValuesOnly(rawStyles, props.style, props);\n    visualProps.style = { ...rawStyles, ...visualProps.style };\n  }\n  return visualProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nfunction createUseRender(forwardMotionProps = false) {\n  const useRender = (Component2, props, projectionId, ref, { latestValues }, isStatic) => {\n    const useVisualProps = isSVGComponent(Component2) ? useSVGProps : useHTMLProps;\n    const visualProps = useVisualProps(props, latestValues, isStatic, Component2);\n    const filteredProps = filterProps(props, typeof Component2 === \"string\", forwardMotionProps);\n    const elementProps = {\n      ...filteredProps,\n      ...visualProps,\n      ref\n    };\n    const { children } = props;\n    const renderedChildren = useMemo4(() => isMotionValue(children) ? children.get() : children, [children]);\n    if (projectionId) {\n      elementProps[\"data-projection-id\"] = projectionId;\n    }\n    return createElement3(Component2, {\n      ...elementProps,\n      children: renderedChildren\n    });\n  };\n  return useRender;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs\nfunction renderHTML(element, { style, vars }, styleProp, projection) {\n  Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n  for (const key in vars) {\n    element.style.setProperty(key, vars[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs\nvar camelCaseAttributes = /* @__PURE__ */ new Set([\n  \"baseFrequency\",\n  \"diffuseConstant\",\n  \"kernelMatrix\",\n  \"kernelUnitLength\",\n  \"keySplines\",\n  \"keyTimes\",\n  \"limitingConeAngle\",\n  \"markerHeight\",\n  \"markerWidth\",\n  \"numOctaves\",\n  \"targetX\",\n  \"targetY\",\n  \"surfaceScale\",\n  \"specularConstant\",\n  \"specularExponent\",\n  \"stdDeviation\",\n  \"tableValues\",\n  \"viewBox\",\n  \"gradientTransform\",\n  \"pathLength\",\n  \"startOffset\",\n  \"textLength\",\n  \"lengthAdjust\"\n]);\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs\nfunction renderSVG(element, renderState, _styleProp, projection) {\n  renderHTML(element, renderState, void 0, projection);\n  for (const key in renderState.attrs) {\n    element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps(props, prevProps) {\n  const { style } = props;\n  const newValues = {};\n  for (const key in style) {\n    if (isMotionValue(style[key]) || prevProps.style && isMotionValue(prevProps.style[key]) || isForcedMotionValue(key, props)) {\n      newValues[key] = style[key];\n    }\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps2(props, prevProps) {\n  const newValues = scrapeMotionValuesFromProps(props, prevProps);\n  for (const key in props) {\n    if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {\n      const targetKey = key === \"x\" || key === \"y\" ? \"attr\" + key.toUpperCase() : key;\n      newValues[targetKey] = props[key];\n    }\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs\nvar svgMotionConfig = {\n  useVisualState: makeUseVisualState({\n    scrapeMotionValuesFromProps: scrapeMotionValuesFromProps2,\n    createRenderState: createSvgRenderState,\n    onMount: (props, instance, { renderState, latestValues }) => {\n      try {\n        renderState.dimensions = typeof instance.getBBox === \"function\" ? instance.getBBox() : instance.getBoundingClientRect();\n      } catch (e) {\n        renderState.dimensions = {\n          x: 0,\n          y: 0,\n          width: 0,\n          height: 0\n        };\n      }\n      buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n      renderSVG(instance, renderState);\n    }\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/config-motion.mjs\nvar htmlMotionConfig = {\n  useVisualState: makeUseVisualState({\n    scrapeMotionValuesFromProps,\n    createRenderState: createHtmlRenderState\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs\nfunction createDomMotionConfig(Component2, { forwardMotionProps = false }, preloadedFeatures, createVisualElement, projectionNodeConstructor) {\n  const baseConfig = isSVGComponent(Component2) ? svgMotionConfig : htmlMotionConfig;\n  return {\n    ...baseConfig,\n    preloadedFeatures,\n    useRender: createUseRender(forwardMotionProps),\n    createVisualElement,\n    projectionNodeConstructor,\n    Component: Component2\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/use-focus-gesture.mjs\nimport { useCallback as useCallback2 } from \"react\";\nfunction useFocusGesture({ whileFocus, visualElement }) {\n  const { animationState } = visualElement;\n  const onFocus = useCallback2(() => {\n    animationState && animationState.setActive(AnimationType.Focus, true);\n  }, [animationState]);\n  const onBlur = useCallback2(() => {\n    animationState && animationState.setActive(AnimationType.Focus, false);\n  }, [animationState]);\n  useDomEvent(visualElement, \"focus\", whileFocus ? onFocus : void 0);\n  useDomEvent(visualElement, \"blur\", whileFocus ? onBlur : void 0);\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/use-hover-gesture.mjs\nimport { useMemo as useMemo5 } from \"react\";\nfunction createHoverEvent(visualElement, isActive, applyVariants, callback) {\n  return (event, info) => {\n    if (event.type === \"touch\" || isDragActive())\n      return;\n    if (applyVariants && visualElement.animationState) {\n      visualElement.animationState.setActive(AnimationType.Hover, isActive);\n    }\n    callback && callback(event, info);\n  };\n}\nfunction useHoverGesture({ onHoverStart, onHoverEnd, whileHover, visualElement }) {\n  usePointerEvent(visualElement, \"pointerenter\", useMemo5(() => {\n    return onHoverStart || whileHover ? createHoverEvent(visualElement, true, Boolean(whileHover), onHoverStart) : void 0;\n  }, [onHoverStart, Boolean(whileHover), visualElement]), { passive: !onHoverStart });\n  usePointerEvent(visualElement, \"pointerleave\", useMemo5(() => {\n    return onHoverEnd || whileHover ? createHoverEvent(visualElement, false, Boolean(whileHover), onHoverEnd) : void 0;\n  }, [onHoverStart, Boolean(whileHover), visualElement]), { passive: !onHoverEnd });\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/use-tap-gesture.mjs\nimport { useRef as useRef3, useCallback as useCallback3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs\nvar isNodeOrChild = (parent, child) => {\n  if (!child) {\n    return false;\n  } else if (parent === child) {\n    return true;\n  } else {\n    return isNodeOrChild(parent, child.parentElement);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/use-tap-gesture.mjs\nfunction useTapGesture({ onTap, onTapStart, onTapCancel, whileTap, visualElement, ...props }) {\n  const hasPressListeners = onTap || onTapStart || onTapCancel || whileTap;\n  const isPressing = useRef3(false);\n  const cancelPointerEndListeners = useRef3(null);\n  const eventOptions = {\n    passive: !(onTapStart || onTap || onTapCancel || props[\"onPointerDown\"])\n  };\n  function removePointerEndListener() {\n    cancelPointerEndListeners.current && cancelPointerEndListeners.current();\n    cancelPointerEndListeners.current = null;\n  }\n  function checkPointerEnd() {\n    removePointerEndListener();\n    isPressing.current = false;\n    const latestProps = visualElement.getProps();\n    if (latestProps.whileTap && visualElement.animationState) {\n      visualElement.animationState.setActive(AnimationType.Tap, false);\n    }\n    return !isDragActive();\n  }\n  function onPointerUp(event, info) {\n    var _a, _b, _c, _d;\n    if (!checkPointerEnd())\n      return;\n    !isNodeOrChild(visualElement.current, event.target) ? (_b = (_a = visualElement.getProps()).onTapCancel) === null || _b === void 0 ? void 0 : _b.call(_a, event, info) : (_d = (_c = visualElement.getProps()).onTap) === null || _d === void 0 ? void 0 : _d.call(_c, event, info);\n  }\n  function onPointerCancel(event, info) {\n    var _a, _b;\n    if (!checkPointerEnd())\n      return;\n    (_b = (_a = visualElement.getProps()).onTapCancel) === null || _b === void 0 ? void 0 : _b.call(_a, event, info);\n  }\n  const startPress = useCallback3((event, info) => {\n    var _a;\n    removePointerEndListener();\n    if (isPressing.current)\n      return;\n    isPressing.current = true;\n    cancelPointerEndListeners.current = pipe(addPointerEvent(window, \"pointerup\", onPointerUp, eventOptions), addPointerEvent(window, \"pointercancel\", onPointerCancel, eventOptions));\n    const latestProps = visualElement.getProps();\n    if (latestProps.whileTap && visualElement.animationState) {\n      visualElement.animationState.setActive(AnimationType.Tap, true);\n    }\n    (_a = latestProps.onTapStart) === null || _a === void 0 ? void 0 : _a.call(latestProps, event, info);\n  }, [Boolean(onTapStart), visualElement]);\n  usePointerEvent(visualElement, \"pointerdown\", hasPressListeners ? startPress : void 0, eventOptions);\n  useUnmountEffect(removePointerEndListener);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/use-viewport.mjs\nimport { useRef as useRef4, useEffect as useEffect7 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs\nvar observerCallbacks = /* @__PURE__ */ new WeakMap();\nvar observers = /* @__PURE__ */ new WeakMap();\nvar fireObserverCallback = (entry) => {\n  const callback = observerCallbacks.get(entry.target);\n  callback && callback(entry);\n};\nvar fireAllObserverCallbacks = (entries) => {\n  entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n  const lookupRoot = root || document;\n  if (!observers.has(lookupRoot)) {\n    observers.set(lookupRoot, {});\n  }\n  const rootObservers = observers.get(lookupRoot);\n  const key = JSON.stringify(options);\n  if (!rootObservers[key]) {\n    rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n  }\n  return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n  const rootInteresectionObserver = initIntersectionObserver(options);\n  observerCallbacks.set(element, callback);\n  rootInteresectionObserver.observe(element);\n  return () => {\n    observerCallbacks.delete(element);\n    rootInteresectionObserver.unobserve(element);\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/use-viewport.mjs\nfunction useViewport({ visualElement, whileInView, onViewportEnter, onViewportLeave, viewport = {} }) {\n  const state = useRef4({\n    hasEnteredView: false,\n    isInView: false\n  });\n  let shouldObserve = Boolean(whileInView || onViewportEnter || onViewportLeave);\n  if (viewport.once && state.current.hasEnteredView)\n    shouldObserve = false;\n  const useObserver = typeof IntersectionObserver === \"undefined\" ? useMissingIntersectionObserver : useIntersectionObserver;\n  useObserver(shouldObserve, state.current, visualElement, viewport);\n}\nvar thresholdNames = {\n  some: 0,\n  all: 1\n};\nfunction useIntersectionObserver(shouldObserve, state, visualElement, { root, margin: rootMargin, amount = \"some\", once }) {\n  useEffect7(() => {\n    if (!shouldObserve || !visualElement.current)\n      return;\n    const options = {\n      root: root === null || root === void 0 ? void 0 : root.current,\n      rootMargin,\n      threshold: typeof amount === \"number\" ? amount : thresholdNames[amount]\n    };\n    const intersectionCallback = (entry) => {\n      const { isIntersecting } = entry;\n      if (state.isInView === isIntersecting)\n        return;\n      state.isInView = isIntersecting;\n      if (once && !isIntersecting && state.hasEnteredView) {\n        return;\n      } else if (isIntersecting) {\n        state.hasEnteredView = true;\n      }\n      if (visualElement.animationState) {\n        visualElement.animationState.setActive(AnimationType.InView, isIntersecting);\n      }\n      const props = visualElement.getProps();\n      const callback = isIntersecting ? props.onViewportEnter : props.onViewportLeave;\n      callback && callback(entry);\n    };\n    return observeIntersection(visualElement.current, options, intersectionCallback);\n  }, [shouldObserve, root, rootMargin, amount]);\n}\nfunction useMissingIntersectionObserver(shouldObserve, state, visualElement, { fallback = true }) {\n  useEffect7(() => {\n    if (!shouldObserve || !fallback)\n      return;\n    if (false) {\n      warnOnce(false, \"IntersectionObserver not available on this device. whileInView animations will trigger on mount.\");\n    }\n    requestAnimationFrame(() => {\n      state.hasEnteredView = true;\n      const { onViewportEnter } = visualElement.getProps();\n      onViewportEnter && onViewportEnter(null);\n      if (visualElement.animationState) {\n        visualElement.animationState.setActive(AnimationType.InView, true);\n      }\n    });\n  }, [shouldObserve]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs\nvar gestureAnimations = {\n  inView: makeRenderlessComponent(useViewport),\n  tap: makeRenderlessComponent(useTapGesture),\n  focus: makeRenderlessComponent(useFocusGesture),\n  hover: makeRenderlessComponent(useHoverGesture)\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/use-drag.mjs\nimport { useEffect as useEffect8 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/gestures/PanSession.mjs\nvar PanSession = class {\n  constructor(event, handlers, { transformPagePoint } = {}) {\n    this.startEvent = null;\n    this.lastMoveEvent = null;\n    this.lastMoveEventInfo = null;\n    this.handlers = {};\n    this.updatePoint = () => {\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const info2 = getPanInfo(this.lastMoveEventInfo, this.history);\n      const isPanStarted = this.startEvent !== null;\n      const isDistancePastThreshold = distance2D(info2.offset, { x: 0, y: 0 }) >= 3;\n      if (!isPanStarted && !isDistancePastThreshold)\n        return;\n      const { point: point3 } = info2;\n      const { timestamp: timestamp2 } = frameData;\n      this.history.push({ ...point3, timestamp: timestamp2 });\n      const { onStart, onMove } = this.handlers;\n      if (!isPanStarted) {\n        onStart && onStart(this.lastMoveEvent, info2);\n        this.startEvent = this.lastMoveEvent;\n      }\n      onMove && onMove(this.lastMoveEvent, info2);\n    };\n    this.handlePointerMove = (event2, info2) => {\n      this.lastMoveEvent = event2;\n      this.lastMoveEventInfo = transformPoint(info2, this.transformPagePoint);\n      sync.update(this.updatePoint, true);\n    };\n    this.handlePointerUp = (event2, info2) => {\n      this.end();\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const { onEnd, onSessionEnd } = this.handlers;\n      const panInfo = getPanInfo(event2.type === \"pointercancel\" ? this.lastMoveEventInfo : transformPoint(info2, this.transformPagePoint), this.history);\n      if (this.startEvent && onEnd) {\n        onEnd(event2, panInfo);\n      }\n      onSessionEnd && onSessionEnd(event2, panInfo);\n    };\n    if (!isPrimaryPointer(event))\n      return;\n    this.handlers = handlers;\n    this.transformPagePoint = transformPagePoint;\n    const info = extractEventInfo(event);\n    const initialInfo = transformPoint(info, this.transformPagePoint);\n    const { point: point2 } = initialInfo;\n    const { timestamp } = frameData;\n    this.history = [{ ...point2, timestamp }];\n    const { onSessionStart } = handlers;\n    onSessionStart && onSessionStart(event, getPanInfo(initialInfo, this.history));\n    this.removeListeners = pipe(addPointerEvent(window, \"pointermove\", this.handlePointerMove), addPointerEvent(window, \"pointerup\", this.handlePointerUp), addPointerEvent(window, \"pointercancel\", this.handlePointerUp));\n  }\n  updateHandlers(handlers) {\n    this.handlers = handlers;\n  }\n  end() {\n    this.removeListeners && this.removeListeners();\n    cancelSync.update(this.updatePoint);\n  }\n};\nfunction transformPoint(info, transformPagePoint) {\n  return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n  return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point: point2 }, history) {\n  return {\n    point: point2,\n    delta: subtractPoint(point2, lastDevicePoint(history)),\n    offset: subtractPoint(point2, startDevicePoint(history)),\n    velocity: getVelocity2(history, 0.1)\n  };\n}\nfunction startDevicePoint(history) {\n  return history[0];\n}\nfunction lastDevicePoint(history) {\n  return history[history.length - 1];\n}\nfunction getVelocity2(history, timeDelta) {\n  if (history.length < 2) {\n    return { x: 0, y: 0 };\n  }\n  let i = history.length - 1;\n  let timestampedPoint = null;\n  const lastPoint = lastDevicePoint(history);\n  while (i >= 0) {\n    timestampedPoint = history[i];\n    if (lastPoint.timestamp - timestampedPoint.timestamp > secondsToMilliseconds(timeDelta)) {\n      break;\n    }\n    i--;\n  }\n  if (!timestampedPoint) {\n    return { x: 0, y: 0 };\n  }\n  const time = (lastPoint.timestamp - timestampedPoint.timestamp) / 1e3;\n  if (time === 0) {\n    return { x: 0, y: 0 };\n  }\n  const currentVelocity = {\n    x: (lastPoint.x - timestampedPoint.x) / time,\n    y: (lastPoint.y - timestampedPoint.y) / time\n  };\n  if (currentVelocity.x === Infinity) {\n    currentVelocity.x = 0;\n  }\n  if (currentVelocity.y === Infinity) {\n    currentVelocity.y = 0;\n  }\n  return currentVelocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs\nfunction applyConstraints(point2, { min, max }, elastic) {\n  if (min !== void 0 && point2 < min) {\n    point2 = elastic ? mix(min, point2, elastic.min) : Math.max(point2, min);\n  } else if (max !== void 0 && point2 > max) {\n    point2 = elastic ? mix(max, point2, elastic.max) : Math.min(point2, max);\n  }\n  return point2;\n}\nfunction calcRelativeAxisConstraints(axis, min, max) {\n  return {\n    min: min !== void 0 ? axis.min + min : void 0,\n    max: max !== void 0 ? axis.max + max - (axis.max - axis.min) : void 0\n  };\n}\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n  return {\n    x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n    y: calcRelativeAxisConstraints(layoutBox.y, top, bottom)\n  };\n}\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n  let min = constraintsAxis.min - layoutAxis.min;\n  let max = constraintsAxis.max - layoutAxis.max;\n  if (constraintsAxis.max - constraintsAxis.min < layoutAxis.max - layoutAxis.min) {\n    [min, max] = [max, min];\n  }\n  return { min, max };\n}\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n  return {\n    x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n    y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y)\n  };\n}\nfunction calcOrigin2(source, target) {\n  let origin = 0.5;\n  const sourceLength = calcLength(source);\n  const targetLength = calcLength(target);\n  if (targetLength > sourceLength) {\n    origin = progress(target.min, target.max - sourceLength, source.min);\n  } else if (sourceLength > targetLength) {\n    origin = progress(source.min, source.max - targetLength, target.min);\n  }\n  return clamp(0, 1, origin);\n}\nfunction rebaseAxisConstraints(layout, constraints) {\n  const relativeConstraints = {};\n  if (constraints.min !== void 0) {\n    relativeConstraints.min = constraints.min - layout.min;\n  }\n  if (constraints.max !== void 0) {\n    relativeConstraints.max = constraints.max - layout.min;\n  }\n  return relativeConstraints;\n}\nvar defaultElastic = 0.35;\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n  if (dragElastic === false) {\n    dragElastic = 0;\n  } else if (dragElastic === true) {\n    dragElastic = defaultElastic;\n  }\n  return {\n    x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n    y: resolveAxisElastic(dragElastic, \"top\", \"bottom\")\n  };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n  return {\n    min: resolvePointElastic(dragElastic, minLabel),\n    max: resolvePointElastic(dragElastic, maxLabel)\n  };\n}\nfunction resolvePointElastic(dragElastic, label) {\n  return typeof dragElastic === \"number\" ? dragElastic : dragElastic[label] || 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs\nfunction eachAxis(callback) {\n  return [callback(\"x\"), callback(\"y\")];\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs\nfunction convertBoundingBoxToBox({ top, left, right, bottom }) {\n  return {\n    x: { min: left, max: right },\n    y: { min: top, max: bottom }\n  };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n  return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\nfunction transformBoxPoints(point2, transformPoint2) {\n  if (!transformPoint2)\n    return point2;\n  const topLeft = transformPoint2({ x: point2.left, y: point2.top });\n  const bottomRight = transformPoint2({ x: point2.right, y: point2.bottom });\n  return {\n    top: topLeft.y,\n    left: topLeft.x,\n    bottom: bottomRight.y,\n    right: bottomRight.x\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs\nfunction isIdentityScale(scale2) {\n  return scale2 === void 0 || scale2 === 1;\n}\nfunction hasScale({ scale: scale2, scaleX, scaleY }) {\n  return !isIdentityScale(scale2) || !isIdentityScale(scaleX) || !isIdentityScale(scaleY);\n}\nfunction hasTransform(values) {\n  return hasScale(values) || has2DTranslate(values) || values.z || values.rotate || values.rotateX || values.rotateY;\n}\nfunction has2DTranslate(values) {\n  return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n  return value && value !== \"0%\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs\nfunction scalePoint(point2, scale2, originPoint) {\n  const distanceFromOrigin = point2 - originPoint;\n  const scaled = scale2 * distanceFromOrigin;\n  return originPoint + scaled;\n}\nfunction applyPointDelta(point2, translate, scale2, originPoint, boxScale) {\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, boxScale, originPoint);\n  }\n  return scalePoint(point2, scale2, originPoint) + translate;\n}\nfunction applyAxisDelta(axis, translate = 0, scale2 = 1, originPoint, boxScale) {\n  axis.min = applyPointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = applyPointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction applyBoxDelta(box, { x, y }) {\n  applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n  applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n  var _a, _b;\n  const treeLength = treePath.length;\n  if (!treeLength)\n    return;\n  treeScale.x = treeScale.y = 1;\n  let node;\n  let delta;\n  for (let i = 0; i < treeLength; i++) {\n    node = treePath[i];\n    delta = node.projectionDelta;\n    if (((_b = (_a = node.instance) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.display) === \"contents\")\n      continue;\n    if (isSharedTransition && node.options.layoutScroll && node.scroll && node !== node.root) {\n      transformBox(box, {\n        x: -node.scroll.offset.x,\n        y: -node.scroll.offset.y\n      });\n    }\n    if (delta) {\n      treeScale.x *= delta.x.scale;\n      treeScale.y *= delta.y.scale;\n      applyBoxDelta(box, delta);\n    }\n    if (isSharedTransition && hasTransform(node.latestValues)) {\n      transformBox(box, node.latestValues);\n    }\n  }\n  treeScale.x = snapToDefault(treeScale.x);\n  treeScale.y = snapToDefault(treeScale.y);\n}\nfunction snapToDefault(scale2) {\n  if (Number.isInteger(scale2))\n    return scale2;\n  return scale2 > 1.0000000000001 || scale2 < 0.999999999999 ? scale2 : 1;\n}\nfunction translateAxis(axis, distance2) {\n  axis.min = axis.min + distance2;\n  axis.max = axis.max + distance2;\n}\nfunction transformAxis(axis, transforms, [key, scaleKey, originKey]) {\n  const axisOrigin = transforms[originKey] !== void 0 ? transforms[originKey] : 0.5;\n  const originPoint = mix(axis.min, axis.max, axisOrigin);\n  applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\nfunction transformBox(box, transform2) {\n  transformAxis(box.x, transform2, xKeys);\n  transformAxis(box.y, transform2, yKeys);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/measure.mjs\nfunction measureViewportBox(instance, transformPoint2) {\n  return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint2));\n}\nfunction measurePageBox(element, rootProjectionNode2, transformPagePoint) {\n  const viewportBox = measureViewportBox(element, transformPagePoint);\n  const { scroll: scroll2 } = rootProjectionNode2;\n  if (scroll2) {\n    translateAxis(viewportBox.x, scroll2.offset.x);\n    translateAxis(viewportBox.y, scroll2.offset.y);\n  }\n  return viewportBox;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs\nvar elementDragControls = /* @__PURE__ */ new WeakMap();\nvar VisualElementDragControls = class {\n  constructor(visualElement) {\n    this.openGlobalLock = null;\n    this.isDragging = false;\n    this.currentDirection = null;\n    this.originPoint = { x: 0, y: 0 };\n    this.constraints = false;\n    this.hasMutatedConstraints = false;\n    this.elastic = createBox();\n    this.visualElement = visualElement;\n  }\n  start(originEvent, { snapToCursor = false } = {}) {\n    if (this.visualElement.isPresent === false)\n      return;\n    const onSessionStart = (event) => {\n      this.stopAnimation();\n      if (snapToCursor) {\n        this.snapToCursor(extractEventInfo(event, \"page\").point);\n      }\n    };\n    const onStart = (event, info) => {\n      var _a;\n      const { drag: drag2, dragPropagation, onDragStart } = this.getProps();\n      if (drag2 && !dragPropagation) {\n        if (this.openGlobalLock)\n          this.openGlobalLock();\n        this.openGlobalLock = getGlobalLock(drag2);\n        if (!this.openGlobalLock)\n          return;\n      }\n      this.isDragging = true;\n      this.currentDirection = null;\n      this.resolveConstraints();\n      if (this.visualElement.projection) {\n        this.visualElement.projection.isAnimationBlocked = true;\n        this.visualElement.projection.target = void 0;\n      }\n      eachAxis((axis) => {\n        var _a2, _b;\n        let current = this.getAxisMotionValue(axis).get() || 0;\n        if (percent.test(current)) {\n          const measuredAxis = (_b = (_a2 = this.visualElement.projection) === null || _a2 === void 0 ? void 0 : _a2.layout) === null || _b === void 0 ? void 0 : _b.layoutBox[axis];\n          if (measuredAxis) {\n            const length = calcLength(measuredAxis);\n            current = length * (parseFloat(current) / 100);\n          }\n        }\n        this.originPoint[axis] = current;\n      });\n      onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event, info);\n      (_a = this.visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Drag, true);\n    };\n    const onMove = (event, info) => {\n      const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag } = this.getProps();\n      if (!dragPropagation && !this.openGlobalLock)\n        return;\n      const { offset } = info;\n      if (dragDirectionLock && this.currentDirection === null) {\n        this.currentDirection = getCurrentDirection(offset);\n        if (this.currentDirection !== null) {\n          onDirectionLock === null || onDirectionLock === void 0 ? void 0 : onDirectionLock(this.currentDirection);\n        }\n        return;\n      }\n      this.updateAxis(\"x\", info.point, offset);\n      this.updateAxis(\"y\", info.point, offset);\n      this.visualElement.render();\n      onDrag === null || onDrag === void 0 ? void 0 : onDrag(event, info);\n    };\n    const onSessionEnd = (event, info) => this.stop(event, info);\n    this.panSession = new PanSession(originEvent, {\n      onSessionStart,\n      onStart,\n      onMove,\n      onSessionEnd\n    }, { transformPagePoint: this.visualElement.getTransformPagePoint() });\n  }\n  stop(event, info) {\n    const isDragging = this.isDragging;\n    this.cancel();\n    if (!isDragging)\n      return;\n    const { velocity } = info;\n    this.startAnimation(velocity);\n    const { onDragEnd } = this.getProps();\n    onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, info);\n  }\n  cancel() {\n    var _a, _b;\n    this.isDragging = false;\n    if (this.visualElement.projection) {\n      this.visualElement.projection.isAnimationBlocked = false;\n    }\n    (_a = this.panSession) === null || _a === void 0 ? void 0 : _a.end();\n    this.panSession = void 0;\n    const { dragPropagation } = this.getProps();\n    if (!dragPropagation && this.openGlobalLock) {\n      this.openGlobalLock();\n      this.openGlobalLock = null;\n    }\n    (_b = this.visualElement.animationState) === null || _b === void 0 ? void 0 : _b.setActive(AnimationType.Drag, false);\n  }\n  updateAxis(axis, _point, offset) {\n    const { drag: drag2 } = this.getProps();\n    if (!offset || !shouldDrag(axis, drag2, this.currentDirection))\n      return;\n    const axisValue = this.getAxisMotionValue(axis);\n    let next = this.originPoint[axis] + offset[axis];\n    if (this.constraints && this.constraints[axis]) {\n      next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n    }\n    axisValue.set(next);\n  }\n  resolveConstraints() {\n    const { dragConstraints, dragElastic } = this.getProps();\n    const { layout } = this.visualElement.projection || {};\n    const prevConstraints = this.constraints;\n    if (dragConstraints && isRefObject(dragConstraints)) {\n      if (!this.constraints) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    } else {\n      if (dragConstraints && layout) {\n        this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n      } else {\n        this.constraints = false;\n      }\n    }\n    this.elastic = resolveDragElastic(dragElastic);\n    if (prevConstraints !== this.constraints && layout && this.constraints && !this.hasMutatedConstraints) {\n      eachAxis((axis) => {\n        if (this.getAxisMotionValue(axis)) {\n          this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n        }\n      });\n    }\n  }\n  resolveRefConstraints() {\n    const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n    if (!constraints || !isRefObject(constraints))\n      return false;\n    const constraintsElement = constraints.current;\n    invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n    const { projection } = this.visualElement;\n    if (!projection || !projection.layout)\n      return false;\n    const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n    let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n    if (onMeasureDragConstraints) {\n      const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n      this.hasMutatedConstraints = !!userConstraints;\n      if (userConstraints) {\n        measuredConstraints = convertBoundingBoxToBox(userConstraints);\n      }\n    }\n    return measuredConstraints;\n  }\n  startAnimation(velocity) {\n    const { drag: drag2, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd } = this.getProps();\n    const constraints = this.constraints || {};\n    const momentumAnimations = eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, this.currentDirection)) {\n        return;\n      }\n      let transition = (constraints === null || constraints === void 0 ? void 0 : constraints[axis]) || {};\n      if (dragSnapToOrigin)\n        transition = { min: 0, max: 0 };\n      const bounceStiffness = dragElastic ? 200 : 1e6;\n      const bounceDamping = dragElastic ? 40 : 1e7;\n      const inertia2 = {\n        type: \"inertia\",\n        velocity: dragMomentum ? velocity[axis] : 0,\n        bounceStiffness,\n        bounceDamping,\n        timeConstant: 750,\n        restDelta: 1,\n        restSpeed: 10,\n        ...dragTransition,\n        ...transition\n      };\n      return this.startAxisValueAnimation(axis, inertia2);\n    });\n    return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n  }\n  startAxisValueAnimation(axis, transition) {\n    const axisValue = this.getAxisMotionValue(axis);\n    return axisValue.start(createMotionValueAnimation(axis, axisValue, 0, transition));\n  }\n  stopAnimation() {\n    eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n  }\n  getAxisMotionValue(axis) {\n    var _a;\n    const dragKey = \"_drag\" + axis.toUpperCase();\n    const externalMotionValue = this.visualElement.getProps()[dragKey];\n    return externalMotionValue ? externalMotionValue : this.visualElement.getValue(axis, ((_a = this.visualElement.getProps().initial) === null || _a === void 0 ? void 0 : _a[axis]) || 0);\n  }\n  snapToCursor(point2) {\n    eachAxis((axis) => {\n      const { drag: drag2 } = this.getProps();\n      if (!shouldDrag(axis, drag2, this.currentDirection))\n        return;\n      const { projection } = this.visualElement;\n      const axisValue = this.getAxisMotionValue(axis);\n      if (projection && projection.layout) {\n        const { min, max } = projection.layout.layoutBox[axis];\n        axisValue.set(point2[axis] - mix(min, max, 0.5));\n      }\n    });\n  }\n  scalePositionWithinConstraints() {\n    var _a;\n    if (!this.visualElement.current)\n      return;\n    const { drag: drag2, dragConstraints } = this.getProps();\n    const { projection } = this.visualElement;\n    if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n      return;\n    this.stopAnimation();\n    const boxProgress = { x: 0, y: 0 };\n    eachAxis((axis) => {\n      const axisValue = this.getAxisMotionValue(axis);\n      if (axisValue) {\n        const latest = axisValue.get();\n        boxProgress[axis] = calcOrigin2({ min: latest, max: latest }, this.constraints[axis]);\n      }\n    });\n    const { transformTemplate } = this.visualElement.getProps();\n    this.visualElement.current.style.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n    (_a = projection.root) === null || _a === void 0 ? void 0 : _a.updateScroll();\n    projection.updateLayout();\n    this.resolveConstraints();\n    eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, null))\n        return;\n      const axisValue = this.getAxisMotionValue(axis);\n      const { min, max } = this.constraints[axis];\n      axisValue.set(mix(min, max, boxProgress[axis]));\n    });\n  }\n  addListeners() {\n    var _a;\n    if (!this.visualElement.current)\n      return;\n    elementDragControls.set(this.visualElement, this);\n    const element = this.visualElement.current;\n    const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n      const { drag: drag2, dragListener = true } = this.getProps();\n      drag2 && dragListener && this.start(event);\n    });\n    const measureDragConstraints = () => {\n      const { dragConstraints } = this.getProps();\n      if (isRefObject(dragConstraints)) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    };\n    const { projection } = this.visualElement;\n    const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n    if (projection && !projection.layout) {\n      (_a = projection.root) === null || _a === void 0 ? void 0 : _a.updateScroll();\n      projection.updateLayout();\n    }\n    measureDragConstraints();\n    const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n    const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged }) => {\n      if (this.isDragging && hasLayoutChanged) {\n        eachAxis((axis) => {\n          const motionValue2 = this.getAxisMotionValue(axis);\n          if (!motionValue2)\n            return;\n          this.originPoint[axis] += delta[axis].translate;\n          motionValue2.set(motionValue2.get() + delta[axis].translate);\n        });\n        this.visualElement.render();\n      }\n    });\n    return () => {\n      stopResizeListener();\n      stopPointerListener();\n      stopMeasureLayoutListener();\n      stopLayoutUpdateListener === null || stopLayoutUpdateListener === void 0 ? void 0 : stopLayoutUpdateListener();\n    };\n  }\n  getProps() {\n    const props = this.visualElement.getProps();\n    const { drag: drag2 = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true } = props;\n    return {\n      ...props,\n      drag: drag2,\n      dragDirectionLock,\n      dragPropagation,\n      dragConstraints,\n      dragElastic,\n      dragMomentum\n    };\n  }\n};\nfunction shouldDrag(direction, drag2, currentDirection) {\n  return (drag2 === true || drag2 === direction) && (currentDirection === null || currentDirection === direction);\n}\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n  let direction = null;\n  if (Math.abs(offset.y) > lockThreshold) {\n    direction = \"y\";\n  } else if (Math.abs(offset.x) > lockThreshold) {\n    direction = \"x\";\n  }\n  return direction;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/use-drag.mjs\nfunction useDrag(props) {\n  const { dragControls: groupDragControls, visualElement } = props;\n  const dragControls = useConstant(() => new VisualElementDragControls(visualElement));\n  useEffect8(() => groupDragControls && groupDragControls.subscribe(dragControls), [dragControls, groupDragControls]);\n  useEffect8(() => dragControls.addListeners(), [dragControls]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/use-pan-gesture.mjs\nimport { useRef as useRef5, useContext as useContext8, useEffect as useEffect9 } from \"react\";\nfunction usePanGesture({ onPan, onPanStart, onPanEnd, onPanSessionStart, visualElement }) {\n  const hasPanEvents = onPan || onPanStart || onPanEnd || onPanSessionStart;\n  const panSession = useRef5(null);\n  const { transformPagePoint } = useContext8(MotionConfigContext);\n  const handlers = {\n    onSessionStart: onPanSessionStart,\n    onStart: onPanStart,\n    onMove: onPan,\n    onEnd: (event, info) => {\n      panSession.current = null;\n      onPanEnd && onPanEnd(event, info);\n    }\n  };\n  useEffect9(() => {\n    if (panSession.current !== null) {\n      panSession.current.updateHandlers(handlers);\n    }\n  });\n  function onPointerDown(event) {\n    panSession.current = new PanSession(event, handlers, {\n      transformPagePoint\n    });\n  }\n  usePointerEvent(visualElement, \"pointerdown\", hasPanEvents && onPointerDown);\n  useUnmountEffect(() => panSession.current && panSession.current.end());\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/drag.mjs\nvar drag = {\n  pan: makeRenderlessComponent(usePanGesture),\n  drag: makeRenderlessComponent(useDrag)\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs\nfunction isCSSVariable2(value) {\n  return typeof value === \"string\" && value.startsWith(\"var(--\");\n}\nvar cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n  const match = cssVariableRegex.exec(current);\n  if (!match)\n    return [,];\n  const [, token, fallback] = match;\n  return [token, fallback];\n}\nvar maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n  invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n  const [token, fallback] = parseCSSVariable(current);\n  if (!token)\n    return;\n  const resolved = window.getComputedStyle(element).getPropertyValue(token);\n  if (resolved) {\n    return resolved.trim();\n  } else if (isCSSVariable2(fallback)) {\n    return getVariableValue(fallback, element, depth + 1);\n  } else {\n    return fallback;\n  }\n}\nfunction resolveCSSVariables(visualElement, { ...target }, transitionEnd) {\n  const element = visualElement.current;\n  if (!(element instanceof Element))\n    return { target, transitionEnd };\n  if (transitionEnd) {\n    transitionEnd = { ...transitionEnd };\n  }\n  visualElement.values.forEach((value) => {\n    const current = value.get();\n    if (!isCSSVariable2(current))\n      return;\n    const resolved = getVariableValue(current, element);\n    if (resolved)\n      value.set(resolved);\n  });\n  for (const key in target) {\n    const current = target[key];\n    if (!isCSSVariable2(current))\n      continue;\n    const resolved = getVariableValue(current, element);\n    if (!resolved)\n      continue;\n    target[key] = resolved;\n    if (transitionEnd && transitionEnd[key] === void 0) {\n      transitionEnd[key] = current;\n    }\n  }\n  return { target, transitionEnd };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs\nvar positionalKeys = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"top\",\n  \"left\",\n  \"right\",\n  \"bottom\",\n  \"x\",\n  \"y\"\n]);\nvar isPositionalKey = (key) => positionalKeys.has(key);\nvar hasPositionalKey = (target) => {\n  return Object.keys(target).some(isPositionalKey);\n};\nvar isNumOrPxType = (v) => v === number || v === px;\nvar BoundingBoxDimension;\n(function(BoundingBoxDimension2) {\n  BoundingBoxDimension2[\"width\"] = \"width\";\n  BoundingBoxDimension2[\"height\"] = \"height\";\n  BoundingBoxDimension2[\"left\"] = \"left\";\n  BoundingBoxDimension2[\"right\"] = \"right\";\n  BoundingBoxDimension2[\"top\"] = \"top\";\n  BoundingBoxDimension2[\"bottom\"] = \"bottom\";\n})(BoundingBoxDimension || (BoundingBoxDimension = {}));\nvar getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nvar getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform: transform2 }) => {\n  if (transform2 === \"none\" || !transform2)\n    return 0;\n  const matrix3d = transform2.match(/^matrix3d\\((.+)\\)$/);\n  if (matrix3d) {\n    return getPosFromMatrix(matrix3d[1], pos3);\n  } else {\n    const matrix = transform2.match(/^matrix\\((.+)\\)$/);\n    if (matrix) {\n      return getPosFromMatrix(matrix[1], pos2);\n    } else {\n      return 0;\n    }\n  }\n};\nvar transformKeys = /* @__PURE__ */ new Set([\"x\", \"y\", \"z\"]);\nvar nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n  const removedTransforms = [];\n  nonTranslationalTransformKeys.forEach((key) => {\n    const value = visualElement.getValue(key);\n    if (value !== void 0) {\n      removedTransforms.push([key, value.get()]);\n      value.set(key.startsWith(\"scale\") ? 1 : 0);\n    }\n  });\n  if (removedTransforms.length)\n    visualElement.render();\n  return removedTransforms;\n}\nvar positionalValues = {\n  width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n  height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n  top: (_bbox, { top }) => parseFloat(top),\n  left: (_bbox, { left }) => parseFloat(left),\n  bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n  right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n  x: getTranslateFromMatrix(4, 13),\n  y: getTranslateFromMatrix(5, 14)\n};\nvar convertChangedValueTypes = (target, visualElement, changedKeys) => {\n  const originBbox = visualElement.measureViewportBox();\n  const element = visualElement.current;\n  const elementComputedStyle = getComputedStyle(element);\n  const { display } = elementComputedStyle;\n  const origin = {};\n  if (display === \"none\") {\n    visualElement.setStaticValue(\"display\", target.display || \"block\");\n  }\n  changedKeys.forEach((key) => {\n    origin[key] = positionalValues[key](originBbox, elementComputedStyle);\n  });\n  visualElement.render();\n  const targetBbox = visualElement.measureViewportBox();\n  changedKeys.forEach((key) => {\n    const value = visualElement.getValue(key);\n    value && value.jump(origin[key]);\n    target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n  });\n  return target;\n};\nvar checkAndConvertChangedValueTypes = (visualElement, target, origin = {}, transitionEnd = {}) => {\n  target = { ...target };\n  transitionEnd = { ...transitionEnd };\n  const targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n  let removedTransformValues = [];\n  let hasAttemptedToRemoveTransformValues = false;\n  const changedValueTypeKeys = [];\n  targetPositionalKeys.forEach((key) => {\n    const value = visualElement.getValue(key);\n    if (!visualElement.hasValue(key))\n      return;\n    let from = origin[key];\n    let fromType = findDimensionValueType(from);\n    const to = target[key];\n    let toType;\n    if (isKeyframesTarget(to)) {\n      const numKeyframes = to.length;\n      const fromIndex = to[0] === null ? 1 : 0;\n      from = to[fromIndex];\n      fromType = findDimensionValueType(from);\n      for (let i = fromIndex; i < numKeyframes; i++) {\n        if (!toType) {\n          toType = findDimensionValueType(to[i]);\n          invariant(toType === fromType || isNumOrPxType(fromType) && isNumOrPxType(toType), \"Keyframes must be of the same dimension as the current value\");\n        } else {\n          invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n        }\n      }\n    } else {\n      toType = findDimensionValueType(to);\n    }\n    if (fromType !== toType) {\n      if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n        const current = value.get();\n        if (typeof current === \"string\") {\n          value.set(parseFloat(current));\n        }\n        if (typeof to === \"string\") {\n          target[key] = parseFloat(to);\n        } else if (Array.isArray(to) && toType === px) {\n          target[key] = to.map(parseFloat);\n        }\n      } else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) && (toType === null || toType === void 0 ? void 0 : toType.transform) && (from === 0 || to === 0)) {\n        if (from === 0) {\n          value.set(toType.transform(from));\n        } else {\n          target[key] = fromType.transform(to);\n        }\n      } else {\n        if (!hasAttemptedToRemoveTransformValues) {\n          removedTransformValues = removeNonTranslationalTransform(visualElement);\n          hasAttemptedToRemoveTransformValues = true;\n        }\n        changedValueTypeKeys.push(key);\n        transitionEnd[key] = transitionEnd[key] !== void 0 ? transitionEnd[key] : target[key];\n        value.jump(to);\n      }\n    }\n  });\n  if (changedValueTypeKeys.length) {\n    const scrollY = changedValueTypeKeys.indexOf(\"height\") >= 0 ? window.pageYOffset : null;\n    const convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n    if (removedTransformValues.length) {\n      removedTransformValues.forEach(([key, value]) => {\n        visualElement.getValue(key).set(value);\n      });\n    }\n    visualElement.render();\n    if (isBrowser && scrollY !== null) {\n      window.scrollTo({ top: scrollY });\n    }\n    return { target: convertedTarget, transitionEnd };\n  } else {\n    return { target, transitionEnd };\n  }\n};\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n  return hasPositionalKey(target) ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd) : { target, transitionEnd };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs\nvar parseDomVariant = (visualElement, target, origin, transitionEnd) => {\n  const resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n  target = resolved.target;\n  transitionEnd = resolved.transitionEnd;\n  return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs\nvar DOMVisualElement = class extends VisualElement {\n  sortInstanceNodePosition(a, b) {\n    return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n  }\n  getBaseTargetFromProps(props, key) {\n    var _a;\n    return (_a = props.style) === null || _a === void 0 ? void 0 : _a[key];\n  }\n  removeValueFromRenderState(key, { vars, style }) {\n    delete vars[key];\n    delete style[key];\n  }\n  makeTargetAnimatableFromInstance({ transition, transitionEnd, ...target }, { transformValues }, isMounted) {\n    let origin = getOrigin(target, transition || {}, this);\n    if (transformValues) {\n      if (transitionEnd)\n        transitionEnd = transformValues(transitionEnd);\n      if (target)\n        target = transformValues(target);\n      if (origin)\n        origin = transformValues(origin);\n    }\n    if (isMounted) {\n      checkTargetForNewValues(this, target, origin);\n      const parsed = parseDomVariant(this, target, origin, transitionEnd);\n      transitionEnd = parsed.transitionEnd;\n      target = parsed.target;\n    }\n    return {\n      transition,\n      transitionEnd,\n      ...target\n    };\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs\nfunction getComputedStyle2(element) {\n  return window.getComputedStyle(element);\n}\nvar HTMLVisualElement = class extends DOMVisualElement {\n  readValueFromInstance(instance, key) {\n    if (transformProps.has(key)) {\n      const defaultType = getDefaultValueType(key);\n      return defaultType ? defaultType.default || 0 : 0;\n    } else {\n      const computedStyle = getComputedStyle2(instance);\n      const value = (isCSSVariable(key) ? computedStyle.getPropertyValue(key) : computedStyle[key]) || 0;\n      return typeof value === \"string\" ? value.trim() : value;\n    }\n  }\n  measureInstanceViewportBox(instance, { transformPagePoint }) {\n    return measureViewportBox(instance, transformPagePoint);\n  }\n  build(renderState, latestValues, options, props) {\n    buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n  }\n  scrapeMotionValuesFromProps(props, prevProps) {\n    return scrapeMotionValuesFromProps(props, prevProps);\n  }\n  handleChildMotionValue() {\n    if (this.childSubscription) {\n      this.childSubscription();\n      delete this.childSubscription;\n    }\n    const { children } = this.props;\n    if (isMotionValue(children)) {\n      this.childSubscription = children.on(\"change\", (latest) => {\n        if (this.current)\n          this.current.textContent = `${latest}`;\n      });\n    }\n  }\n  renderInstance(instance, renderState, styleProp, projection) {\n    renderHTML(instance, renderState, styleProp, projection);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs\nvar SVGVisualElement = class extends DOMVisualElement {\n  constructor() {\n    super(...arguments);\n    this.isSVGTag = false;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props[key];\n  }\n  readValueFromInstance(instance, key) {\n    var _a;\n    if (transformProps.has(key)) {\n      return ((_a = getDefaultValueType(key)) === null || _a === void 0 ? void 0 : _a.default) || 0;\n    }\n    key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n    return instance.getAttribute(key);\n  }\n  measureInstanceViewportBox() {\n    return createBox();\n  }\n  scrapeMotionValuesFromProps(props, prevProps) {\n    return scrapeMotionValuesFromProps2(props, prevProps);\n  }\n  build(renderState, latestValues, options, props) {\n    buildSVGAttrs(renderState, latestValues, options, this.isSVGTag, props.transformTemplate);\n  }\n  renderInstance(instance, renderState, styleProp, projection) {\n    renderSVG(instance, renderState, styleProp, projection);\n  }\n  mount(instance) {\n    this.isSVGTag = isSVGTag(instance.tagName);\n    super.mount(instance);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs\nvar createDomVisualElement = (Component2, options) => {\n  return isSVGComponent(Component2) ? new SVGVisualElement(options, { enableHardwareAcceleration: false }) : new HTMLVisualElement(options, { enableHardwareAcceleration: true });\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nimport React__default2, { useContext as useContext9 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs\nfunction pixelsToPercent(pixels, axis) {\n  if (axis.max === axis.min)\n    return 0;\n  return pixels / (axis.max - axis.min) * 100;\n}\nvar correctBorderRadius = {\n  correct: (latest, node) => {\n    if (!node.target)\n      return latest;\n    if (typeof latest === \"string\") {\n      if (px.test(latest)) {\n        latest = parseFloat(latest);\n      } else {\n        return latest;\n      }\n    }\n    const x = pixelsToPercent(latest, node.target.x);\n    const y = pixelsToPercent(latest, node.target.y);\n    return `${x}% ${y}%`;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs\nvar varToken = \"_$css\";\nvar correctBoxShadow = {\n  correct: (latest, { treeScale, projectionDelta }) => {\n    const original = latest;\n    const containsCSSVariables = latest.includes(\"var(\");\n    const cssVariables = [];\n    if (containsCSSVariables) {\n      latest = latest.replace(cssVariableRegex, (match) => {\n        cssVariables.push(match);\n        return varToken;\n      });\n    }\n    const shadow = complex.parse(latest);\n    if (shadow.length > 5)\n      return original;\n    const template = complex.createTransformer(latest);\n    const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n    const xScale = projectionDelta.x.scale * treeScale.x;\n    const yScale = projectionDelta.y.scale * treeScale.y;\n    shadow[0 + offset] /= xScale;\n    shadow[1 + offset] /= yScale;\n    const averageScale = mix(xScale, yScale, 0.5);\n    if (typeof shadow[2 + offset] === \"number\")\n      shadow[2 + offset] /= averageScale;\n    if (typeof shadow[3 + offset] === \"number\")\n      shadow[3 + offset] /= averageScale;\n    let output = template(shadow);\n    if (containsCSSVariables) {\n      let i = 0;\n      output = output.replace(varToken, () => {\n        const cssVariable = cssVariables[i];\n        i++;\n        return cssVariable;\n      });\n    }\n    return output;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nvar MeasureLayoutWithContext = class extends React__default2.Component {\n  componentDidMount() {\n    const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n    const { projection } = visualElement;\n    addScaleCorrector(defaultScaleCorrectors);\n    if (projection) {\n      if (layoutGroup.group)\n        layoutGroup.group.add(projection);\n      if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n        switchLayoutGroup.register(projection);\n      }\n      projection.root.didUpdate();\n      projection.addEventListener(\"animationComplete\", () => {\n        this.safeToRemove();\n      });\n      projection.setOptions({\n        ...projection.options,\n        onExitComplete: () => this.safeToRemove()\n      });\n    }\n    globalProjectionState.hasEverUpdated = true;\n  }\n  getSnapshotBeforeUpdate(prevProps) {\n    const { layoutDependency, visualElement, drag: drag2, isPresent: isPresent2 } = this.props;\n    const projection = visualElement.projection;\n    if (!projection)\n      return null;\n    projection.isPresent = isPresent2;\n    if (drag2 || prevProps.layoutDependency !== layoutDependency || layoutDependency === void 0) {\n      projection.willUpdate();\n    } else {\n      this.safeToRemove();\n    }\n    if (prevProps.isPresent !== isPresent2) {\n      if (isPresent2) {\n        projection.promote();\n      } else if (!projection.relegate()) {\n        sync.postRender(() => {\n          var _a;\n          if (!((_a = projection.getStack()) === null || _a === void 0 ? void 0 : _a.members.length)) {\n            this.safeToRemove();\n          }\n        });\n      }\n    }\n    return null;\n  }\n  componentDidUpdate() {\n    const { projection } = this.props.visualElement;\n    if (projection) {\n      projection.root.didUpdate();\n      if (!projection.currentAnimation && projection.isLead()) {\n        this.safeToRemove();\n      }\n    }\n  }\n  componentWillUnmount() {\n    const { visualElement, layoutGroup, switchLayoutGroup: promoteContext } = this.props;\n    const { projection } = visualElement;\n    if (projection) {\n      projection.scheduleCheckAfterUnmount();\n      if (layoutGroup === null || layoutGroup === void 0 ? void 0 : layoutGroup.group)\n        layoutGroup.group.remove(projection);\n      if (promoteContext === null || promoteContext === void 0 ? void 0 : promoteContext.deregister)\n        promoteContext.deregister(projection);\n    }\n  }\n  safeToRemove() {\n    const { safeToRemove } = this.props;\n    safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove();\n  }\n  render() {\n    return null;\n  }\n};\nfunction MeasureLayout(props) {\n  const [isPresent2, safeToRemove] = usePresence();\n  const layoutGroup = useContext9(LayoutGroupContext);\n  return React__default2.createElement(MeasureLayoutWithContext, { ...props, layoutGroup, switchLayoutGroup: useContext9(SwitchLayoutGroupContext), isPresent: isPresent2, safeToRemove });\n}\nvar defaultScaleCorrectors = {\n  borderRadius: {\n    ...correctBorderRadius,\n    applyTo: [\n      \"borderTopLeftRadius\",\n      \"borderTopRightRadius\",\n      \"borderBottomLeftRadius\",\n      \"borderBottomRightRadius\"\n    ]\n  },\n  borderTopLeftRadius: correctBorderRadius,\n  borderTopRightRadius: correctBorderRadius,\n  borderBottomLeftRadius: correctBorderRadius,\n  borderBottomRightRadius: correctBorderRadius,\n  boxShadow: correctBoxShadow\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/index.mjs\nvar layoutFeatures = {\n  measureLayout: MeasureLayout\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs\nvar borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nvar numBorders = borders.length;\nvar asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nvar isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress3, shouldCrossfadeOpacity, isOnlyMember) {\n  if (shouldCrossfadeOpacity) {\n    target.opacity = mix(\n      0,\n      lead.opacity !== void 0 ? lead.opacity : 1,\n      easeCrossfadeIn(progress3)\n    );\n    target.opacityExit = mix(follow.opacity !== void 0 ? follow.opacity : 1, 0, easeCrossfadeOut(progress3));\n  } else if (isOnlyMember) {\n    target.opacity = mix(follow.opacity !== void 0 ? follow.opacity : 1, lead.opacity !== void 0 ? lead.opacity : 1, progress3);\n  }\n  for (let i = 0; i < numBorders; i++) {\n    const borderLabel = `border${borders[i]}Radius`;\n    let followRadius = getRadius(follow, borderLabel);\n    let leadRadius = getRadius(lead, borderLabel);\n    if (followRadius === void 0 && leadRadius === void 0)\n      continue;\n    followRadius || (followRadius = 0);\n    leadRadius || (leadRadius = 0);\n    const canMix = followRadius === 0 || leadRadius === 0 || isPx(followRadius) === isPx(leadRadius);\n    if (canMix) {\n      target[borderLabel] = Math.max(mix(asNumber(followRadius), asNumber(leadRadius), progress3), 0);\n      if (percent.test(leadRadius) || percent.test(followRadius)) {\n        target[borderLabel] += \"%\";\n      }\n    } else {\n      target[borderLabel] = leadRadius;\n    }\n  }\n  if (follow.rotate || lead.rotate) {\n    target.rotate = mix(follow.rotate || 0, lead.rotate || 0, progress3);\n  }\n}\nfunction getRadius(values, radiusName) {\n  return values[radiusName] !== void 0 ? values[radiusName] : values.borderRadius;\n}\nvar easeCrossfadeIn = compress(0, 0.5, circOut);\nvar easeCrossfadeOut = compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n  return (p) => {\n    if (p < min)\n      return 0;\n    if (p > max)\n      return 1;\n    return easing(progress(min, max, p));\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs\nfunction copyAxisInto(axis, originAxis) {\n  axis.min = originAxis.min;\n  axis.max = originAxis.max;\n}\nfunction copyBoxInto(box, originBox) {\n  copyAxisInto(box.x, originBox.x);\n  copyAxisInto(box.y, originBox.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs\nfunction removePointDelta(point2, translate, scale2, originPoint, boxScale) {\n  point2 -= translate;\n  point2 = scalePoint(point2, 1 / scale2, originPoint);\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, 1 / boxScale, originPoint);\n  }\n  return point2;\n}\nfunction removeAxisDelta(axis, translate = 0, scale2 = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n  if (percent.test(translate)) {\n    translate = parseFloat(translate);\n    const relativeProgress = mix(sourceAxis.min, sourceAxis.max, translate / 100);\n    translate = relativeProgress - sourceAxis.min;\n  }\n  if (typeof translate !== \"number\")\n    return;\n  let originPoint = mix(originAxis.min, originAxis.max, origin);\n  if (axis === originAxis)\n    originPoint -= translate;\n  axis.min = removePointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = removePointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n  removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\nvar xKeys2 = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys2 = [\"y\", \"scaleY\", \"originY\"];\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n  removeAxisTransforms(box.x, transforms, xKeys2, originBox === null || originBox === void 0 ? void 0 : originBox.x, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.x);\n  removeAxisTransforms(box.y, transforms, yKeys2, originBox === null || originBox === void 0 ? void 0 : originBox.y, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs\nfunction isAxisDeltaZero(delta) {\n  return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n  return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction boxEquals(a, b) {\n  return a.x.min === b.x.min && a.x.max === b.x.max && a.y.min === b.y.min && a.y.max === b.y.max;\n}\nfunction aspectRatio(box) {\n  return calcLength(box.x) / calcLength(box.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/shared/stack.mjs\nvar NodeStack = class {\n  constructor() {\n    this.members = [];\n  }\n  add(node) {\n    addUniqueItem(this.members, node);\n    node.scheduleRender();\n  }\n  remove(node) {\n    removeItem(this.members, node);\n    if (node === this.prevLead) {\n      this.prevLead = void 0;\n    }\n    if (node === this.lead) {\n      const prevLead = this.members[this.members.length - 1];\n      if (prevLead) {\n        this.promote(prevLead);\n      }\n    }\n  }\n  relegate(node) {\n    const indexOfNode = this.members.findIndex((member) => node === member);\n    if (indexOfNode === 0)\n      return false;\n    let prevLead;\n    for (let i = indexOfNode; i >= 0; i--) {\n      const member = this.members[i];\n      if (member.isPresent !== false) {\n        prevLead = member;\n        break;\n      }\n    }\n    if (prevLead) {\n      this.promote(prevLead);\n      return true;\n    } else {\n      return false;\n    }\n  }\n  promote(node, preserveFollowOpacity) {\n    var _a;\n    const prevLead = this.lead;\n    if (node === prevLead)\n      return;\n    this.prevLead = prevLead;\n    this.lead = node;\n    node.show();\n    if (prevLead) {\n      prevLead.instance && prevLead.scheduleRender();\n      node.scheduleRender();\n      node.resumeFrom = prevLead;\n      if (preserveFollowOpacity) {\n        node.resumeFrom.preserveOpacity = true;\n      }\n      if (prevLead.snapshot) {\n        node.snapshot = prevLead.snapshot;\n        node.snapshot.latestValues = prevLead.animationValues || prevLead.latestValues;\n      }\n      if ((_a = node.root) === null || _a === void 0 ? void 0 : _a.isUpdating) {\n        node.isLayoutDirty = true;\n      }\n      const { crossfade } = node.options;\n      if (crossfade === false) {\n        prevLead.hide();\n      }\n    }\n  }\n  exitAnimationComplete() {\n    this.members.forEach((node) => {\n      var _a, _b, _c, _d, _e;\n      (_b = (_a = node.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n      (_e = (_c = node.resumingFrom) === null || _c === void 0 ? void 0 : (_d = _c.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d);\n    });\n  }\n  scheduleRender() {\n    this.members.forEach((node) => {\n      node.instance && node.scheduleRender(false);\n    });\n  }\n  removeLeadSnapshot() {\n    if (this.lead && this.lead.snapshot) {\n      this.lead.snapshot = void 0;\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/transform.mjs\nfunction buildProjectionTransform(delta, treeScale, latestTransform) {\n  let transform2 = \"\";\n  const xTranslate = delta.x.translate / treeScale.x;\n  const yTranslate = delta.y.translate / treeScale.y;\n  if (xTranslate || yTranslate) {\n    transform2 = `translate3d(${xTranslate}px, ${yTranslate}px, 0) `;\n  }\n  if (treeScale.x !== 1 || treeScale.y !== 1) {\n    transform2 += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n  }\n  if (latestTransform) {\n    const { rotate, rotateX, rotateY } = latestTransform;\n    if (rotate)\n      transform2 += `rotate(${rotate}deg) `;\n    if (rotateX)\n      transform2 += `rotateX(${rotateX}deg) `;\n    if (rotateY)\n      transform2 += `rotateY(${rotateY}deg) `;\n  }\n  const elementScaleX = delta.x.scale * treeScale.x;\n  const elementScaleY = delta.y.scale * treeScale.y;\n  if (elementScaleX !== 1 || elementScaleY !== 1) {\n    transform2 += `scale(${elementScaleX}, ${elementScaleY})`;\n  }\n  return transform2 || \"none\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nvar animationTarget = 1e3;\nvar id2 = 0;\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform }) {\n  return class ProjectionNode {\n    constructor(elementId, latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n      this.id = id2++;\n      this.animationId = 0;\n      this.children = /* @__PURE__ */ new Set();\n      this.options = {};\n      this.isTreeAnimating = false;\n      this.isAnimationBlocked = false;\n      this.isLayoutDirty = false;\n      this.isTransformDirty = false;\n      this.isProjectionDirty = false;\n      this.updateManuallyBlocked = false;\n      this.updateBlockedByResize = false;\n      this.isUpdating = false;\n      this.isSVG = false;\n      this.needsReset = false;\n      this.shouldResetTransform = false;\n      this.treeScale = { x: 1, y: 1 };\n      this.eventHandlers = /* @__PURE__ */ new Map();\n      this.potentialNodes = /* @__PURE__ */ new Map();\n      this.checkUpdateFailed = () => {\n        if (this.isUpdating) {\n          this.isUpdating = false;\n          this.clearAllSnapshots();\n        }\n      };\n      this.updateProjection = () => {\n        this.nodes.forEach(propagateDirtyNodes);\n        this.nodes.forEach(resolveTargetDelta);\n        this.nodes.forEach(calcProjection);\n      };\n      this.hasProjected = false;\n      this.isVisible = true;\n      this.animationProgress = 0;\n      this.sharedNodes = /* @__PURE__ */ new Map();\n      this.elementId = elementId;\n      this.latestValues = latestValues;\n      this.root = parent ? parent.root || parent : this;\n      this.path = parent ? [...parent.path, parent] : [];\n      this.parent = parent;\n      this.depth = parent ? parent.depth + 1 : 0;\n      elementId && this.root.registerPotentialNode(elementId, this);\n      for (let i = 0; i < this.path.length; i++) {\n        this.path[i].shouldResetTransform = true;\n      }\n      if (this.root === this)\n        this.nodes = new FlatTree();\n    }\n    addEventListener(name, handler) {\n      if (!this.eventHandlers.has(name)) {\n        this.eventHandlers.set(name, new SubscriptionManager());\n      }\n      return this.eventHandlers.get(name).add(handler);\n    }\n    notifyListeners(name, ...args) {\n      const subscriptionManager = this.eventHandlers.get(name);\n      subscriptionManager === null || subscriptionManager === void 0 ? void 0 : subscriptionManager.notify(...args);\n    }\n    hasListeners(name) {\n      return this.eventHandlers.has(name);\n    }\n    registerPotentialNode(elementId, node) {\n      this.potentialNodes.set(elementId, node);\n    }\n    mount(instance, isLayoutDirty = false) {\n      var _a;\n      if (this.instance)\n        return;\n      this.isSVG = instance instanceof SVGElement && instance.tagName !== \"svg\";\n      this.instance = instance;\n      const { layoutId, layout, visualElement } = this.options;\n      if (visualElement && !visualElement.current) {\n        visualElement.mount(instance);\n      }\n      this.root.nodes.add(this);\n      (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children.add(this);\n      this.elementId && this.root.potentialNodes.delete(this.elementId);\n      if (isLayoutDirty && (layout || layoutId)) {\n        this.isLayoutDirty = true;\n      }\n      if (attachResizeListener) {\n        let cancelDelay;\n        const resizeUnblockUpdate = () => this.root.updateBlockedByResize = false;\n        attachResizeListener(instance, () => {\n          this.root.updateBlockedByResize = true;\n          cancelDelay && cancelDelay();\n          cancelDelay = delay(resizeUnblockUpdate, 250);\n          if (globalProjectionState.hasAnimatedSinceResize) {\n            globalProjectionState.hasAnimatedSinceResize = false;\n            this.nodes.forEach(finishAnimation);\n          }\n        });\n      }\n      if (layoutId) {\n        this.root.registerSharedNode(layoutId, this);\n      }\n      if (this.options.animate !== false && visualElement && (layoutId || layout)) {\n        this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout }) => {\n          var _a2, _b, _c, _d, _e;\n          if (this.isTreeAnimationBlocked()) {\n            this.target = void 0;\n            this.relativeTarget = void 0;\n            return;\n          }\n          const layoutTransition = (_b = (_a2 = this.options.transition) !== null && _a2 !== void 0 ? _a2 : visualElement.getDefaultTransition()) !== null && _b !== void 0 ? _b : defaultLayoutTransition;\n          const { onLayoutAnimationStart, onLayoutAnimationComplete } = visualElement.getProps();\n          const targetChanged = !this.targetLayout || !boxEquals(this.targetLayout, newLayout) || hasRelativeTargetChanged;\n          const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n          if (((_c = this.resumeFrom) === null || _c === void 0 ? void 0 : _c.instance) || hasOnlyRelativeTargetChanged || hasLayoutChanged && (targetChanged || !this.currentAnimation)) {\n            if (this.resumeFrom) {\n              this.resumingFrom = this.resumeFrom;\n              this.resumingFrom.resumingFrom = void 0;\n            }\n            this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n            const animationOptions = {\n              ...getValueTransition(layoutTransition, \"layout\"),\n              onPlay: onLayoutAnimationStart,\n              onComplete: onLayoutAnimationComplete\n            };\n            if (visualElement.shouldReduceMotion) {\n              animationOptions.delay = 0;\n              animationOptions.type = false;\n            }\n            this.startAnimation(animationOptions);\n          } else {\n            if (!hasLayoutChanged && this.animationProgress === 0) {\n              finishAnimation(this);\n            }\n            this.isLead() && ((_e = (_d = this.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d));\n          }\n          this.targetLayout = newLayout;\n        });\n      }\n    }\n    unmount() {\n      var _a, _b;\n      this.options.layoutId && this.willUpdate();\n      this.root.nodes.remove(this);\n      (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.remove(this);\n      (_b = this.parent) === null || _b === void 0 ? void 0 : _b.children.delete(this);\n      this.instance = void 0;\n      cancelSync.preRender(this.updateProjection);\n    }\n    blockUpdate() {\n      this.updateManuallyBlocked = true;\n    }\n    unblockUpdate() {\n      this.updateManuallyBlocked = false;\n    }\n    isUpdateBlocked() {\n      return this.updateManuallyBlocked || this.updateBlockedByResize;\n    }\n    isTreeAnimationBlocked() {\n      var _a;\n      return this.isAnimationBlocked || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimationBlocked()) || false;\n    }\n    startUpdate() {\n      var _a;\n      if (this.isUpdateBlocked())\n        return;\n      this.isUpdating = true;\n      (_a = this.nodes) === null || _a === void 0 ? void 0 : _a.forEach(resetRotation);\n      this.animationId++;\n    }\n    willUpdate(shouldNotifyListeners = true) {\n      var _a, _b, _c;\n      if (this.root.isUpdateBlocked()) {\n        (_b = (_a = this.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n        return;\n      }\n      !this.root.isUpdating && this.root.startUpdate();\n      if (this.isLayoutDirty)\n        return;\n      this.isLayoutDirty = true;\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        node.shouldResetTransform = true;\n        node.updateScroll(\"snapshot\");\n      }\n      const { layoutId, layout } = this.options;\n      if (layoutId === void 0 && !layout)\n        return;\n      const transformTemplate = (_c = this.options.visualElement) === null || _c === void 0 ? void 0 : _c.getProps().transformTemplate;\n      this.prevTransformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n      this.updateSnapshot();\n      shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n    }\n    didUpdate() {\n      const updateWasBlocked = this.isUpdateBlocked();\n      if (updateWasBlocked) {\n        this.unblockUpdate();\n        this.clearAllSnapshots();\n        this.nodes.forEach(clearMeasurements);\n        return;\n      }\n      if (!this.isUpdating)\n        return;\n      this.isUpdating = false;\n      if (this.potentialNodes.size) {\n        this.potentialNodes.forEach(mountNodeEarly);\n        this.potentialNodes.clear();\n      }\n      this.nodes.forEach(resetTransformStyle);\n      this.nodes.forEach(updateLayout);\n      this.nodes.forEach(notifyLayoutUpdate);\n      this.clearAllSnapshots();\n      flushSync.update();\n      flushSync.preRender();\n      flushSync.render();\n    }\n    clearAllSnapshots() {\n      this.nodes.forEach(clearSnapshot);\n      this.sharedNodes.forEach(removeLeadSnapshots);\n    }\n    scheduleUpdateProjection() {\n      sync.preRender(this.updateProjection, false, true);\n    }\n    scheduleCheckAfterUnmount() {\n      sync.postRender(() => {\n        if (this.isLayoutDirty) {\n          this.root.didUpdate();\n        } else {\n          this.root.checkUpdateFailed();\n        }\n      });\n    }\n    updateSnapshot() {\n      if (this.snapshot || !this.instance)\n        return;\n      this.snapshot = this.measure();\n    }\n    updateLayout() {\n      var _a;\n      if (!this.instance)\n        return;\n      this.updateScroll();\n      if (!(this.options.alwaysMeasureLayout && this.isLead()) && !this.isLayoutDirty) {\n        return;\n      }\n      if (this.resumeFrom && !this.resumeFrom.instance) {\n        for (let i = 0; i < this.path.length; i++) {\n          const node = this.path[i];\n          node.updateScroll();\n        }\n      }\n      const prevLayout = this.layout;\n      this.layout = this.measure(false);\n      this.layoutCorrected = createBox();\n      this.isLayoutDirty = false;\n      this.projectionDelta = void 0;\n      this.notifyListeners(\"measure\", this.layout.layoutBox);\n      (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout === null || prevLayout === void 0 ? void 0 : prevLayout.layoutBox);\n    }\n    updateScroll(phase = \"measure\") {\n      let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n      if (this.scroll && this.scroll.animationId === this.root.animationId && this.scroll.phase === phase) {\n        needsMeasurement = false;\n      }\n      if (needsMeasurement) {\n        this.scroll = {\n          animationId: this.root.animationId,\n          phase,\n          isRoot: checkIsScrollRoot(this.instance),\n          offset: measureScroll(this.instance)\n        };\n      }\n    }\n    resetTransform() {\n      var _a;\n      if (!resetTransform)\n        return;\n      const isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n      const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n      const transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n      const transformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n      const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n      if (isResetRequested && (hasProjection || hasTransform(this.latestValues) || transformTemplateHasChanged)) {\n        resetTransform(this.instance, transformTemplateValue);\n        this.shouldResetTransform = false;\n        this.scheduleRender();\n      }\n    }\n    measure(removeTransform = true) {\n      const pageBox = this.measurePageBox();\n      let layoutBox = this.removeElementScroll(pageBox);\n      if (removeTransform) {\n        layoutBox = this.removeTransform(layoutBox);\n      }\n      roundBox(layoutBox);\n      return {\n        animationId: this.root.animationId,\n        measuredBox: pageBox,\n        layoutBox,\n        latestValues: {},\n        source: this.id\n      };\n    }\n    measurePageBox() {\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return createBox();\n      const box = visualElement.measureViewportBox();\n      const { scroll: scroll2 } = this.root;\n      if (scroll2) {\n        translateAxis(box.x, scroll2.offset.x);\n        translateAxis(box.y, scroll2.offset.y);\n      }\n      return box;\n    }\n    removeElementScroll(box) {\n      const boxWithoutScroll = createBox();\n      copyBoxInto(boxWithoutScroll, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        const { scroll: scroll2, options } = node;\n        if (node !== this.root && scroll2 && options.layoutScroll) {\n          if (scroll2.isRoot) {\n            copyBoxInto(boxWithoutScroll, box);\n            const { scroll: rootScroll } = this.root;\n            if (rootScroll) {\n              translateAxis(boxWithoutScroll.x, -rootScroll.offset.x);\n              translateAxis(boxWithoutScroll.y, -rootScroll.offset.y);\n            }\n          }\n          translateAxis(boxWithoutScroll.x, scroll2.offset.x);\n          translateAxis(boxWithoutScroll.y, scroll2.offset.y);\n        }\n      }\n      return boxWithoutScroll;\n    }\n    applyTransform(box, transformOnly = false) {\n      const withTransforms = createBox();\n      copyBoxInto(withTransforms, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!transformOnly && node.options.layoutScroll && node.scroll && node !== node.root) {\n          transformBox(withTransforms, {\n            x: -node.scroll.offset.x,\n            y: -node.scroll.offset.y\n          });\n        }\n        if (!hasTransform(node.latestValues))\n          continue;\n        transformBox(withTransforms, node.latestValues);\n      }\n      if (hasTransform(this.latestValues)) {\n        transformBox(withTransforms, this.latestValues);\n      }\n      return withTransforms;\n    }\n    removeTransform(box) {\n      var _a;\n      const boxWithoutTransform = createBox();\n      copyBoxInto(boxWithoutTransform, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!node.instance)\n          continue;\n        if (!hasTransform(node.latestValues))\n          continue;\n        hasScale(node.latestValues) && node.updateSnapshot();\n        const sourceBox = createBox();\n        const nodeBox = node.measurePageBox();\n        copyBoxInto(sourceBox, nodeBox);\n        removeBoxTransforms(boxWithoutTransform, node.latestValues, (_a = node.snapshot) === null || _a === void 0 ? void 0 : _a.layoutBox, sourceBox);\n      }\n      if (hasTransform(this.latestValues)) {\n        removeBoxTransforms(boxWithoutTransform, this.latestValues);\n      }\n      return boxWithoutTransform;\n    }\n    setTargetDelta(delta) {\n      this.targetDelta = delta;\n      this.isProjectionDirty = true;\n      this.root.scheduleUpdateProjection();\n    }\n    setOptions(options) {\n      this.options = {\n        ...this.options,\n        ...options,\n        crossfade: options.crossfade !== void 0 ? options.crossfade : true\n      };\n    }\n    clearMeasurements() {\n      this.scroll = void 0;\n      this.layout = void 0;\n      this.snapshot = void 0;\n      this.prevTransformTemplateValue = void 0;\n      this.targetDelta = void 0;\n      this.target = void 0;\n      this.isLayoutDirty = false;\n    }\n    resolveTargetDelta() {\n      var _a;\n      const lead = this.getLead();\n      this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n      this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n      if (!this.isProjectionDirty && !this.attemptToResolveRelativeTarget)\n        return;\n      const { layout, layoutId } = this.options;\n      if (!this.layout || !(layout || layoutId))\n        return;\n      if (!this.targetDelta && !this.relativeTarget) {\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && relativeParent.layout) {\n          this.relativeParent = relativeParent;\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n      if (!this.relativeTarget && !this.targetDelta)\n        return;\n      if (!this.target) {\n        this.target = createBox();\n        this.targetWithTransforms = createBox();\n      }\n      if (this.relativeTarget && this.relativeTargetOrigin && ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.target)) {\n        calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n      } else if (this.targetDelta) {\n        if (Boolean(this.resumingFrom)) {\n          this.target = this.applyTransform(this.layout.layoutBox);\n        } else {\n          copyBoxInto(this.target, this.layout.layoutBox);\n        }\n        applyBoxDelta(this.target, this.targetDelta);\n      } else {\n        copyBoxInto(this.target, this.layout.layoutBox);\n      }\n      if (this.attemptToResolveRelativeTarget) {\n        this.attemptToResolveRelativeTarget = false;\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && Boolean(relativeParent.resumingFrom) === Boolean(this.resumingFrom) && !relativeParent.options.layoutScroll && relativeParent.target) {\n          this.relativeParent = relativeParent;\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n    }\n    getClosestProjectingParent() {\n      if (!this.parent || hasScale(this.parent.latestValues) || has2DTranslate(this.parent.latestValues))\n        return void 0;\n      if ((this.parent.relativeTarget || this.parent.targetDelta) && this.parent.layout) {\n        return this.parent;\n      } else {\n        return this.parent.getClosestProjectingParent();\n      }\n    }\n    calcProjection() {\n      var _a;\n      const { isProjectionDirty, isTransformDirty } = this;\n      this.isProjectionDirty = this.isTransformDirty = false;\n      const lead = this.getLead();\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      let canSkip = true;\n      if (isProjectionDirty)\n        canSkip = false;\n      if (isShared && isTransformDirty)\n        canSkip = false;\n      if (canSkip)\n        return;\n      const { layout, layoutId } = this.options;\n      this.isTreeAnimating = Boolean(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimating) || this.currentAnimation || this.pendingAnimation);\n      if (!this.isTreeAnimating) {\n        this.targetDelta = this.relativeTarget = void 0;\n      }\n      if (!this.layout || !(layout || layoutId))\n        return;\n      copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n      applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n      const { target } = lead;\n      if (!target)\n        return;\n      if (!this.projectionDelta) {\n        this.projectionDelta = createDelta();\n        this.projectionDeltaWithTransform = createDelta();\n      }\n      const prevTreeScaleX = this.treeScale.x;\n      const prevTreeScaleY = this.treeScale.y;\n      const prevProjectionTransform = this.projectionTransform;\n      calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n      this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n      if (this.projectionTransform !== prevProjectionTransform || this.treeScale.x !== prevTreeScaleX || this.treeScale.y !== prevTreeScaleY) {\n        this.hasProjected = true;\n        this.scheduleRender();\n        this.notifyListeners(\"projectionUpdate\", target);\n      }\n    }\n    hide() {\n      this.isVisible = false;\n    }\n    show() {\n      this.isVisible = true;\n    }\n    scheduleRender(notifyAll2 = true) {\n      var _a, _b, _c;\n      (_b = (_a = this.options).scheduleRender) === null || _b === void 0 ? void 0 : _b.call(_a);\n      notifyAll2 && ((_c = this.getStack()) === null || _c === void 0 ? void 0 : _c.scheduleRender());\n      if (this.resumingFrom && !this.resumingFrom.instance) {\n        this.resumingFrom = void 0;\n      }\n    }\n    setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n      var _a, _b;\n      const snapshot = this.snapshot;\n      const snapshotLatestValues = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.latestValues) || {};\n      const mixedValues = { ...this.latestValues };\n      const targetDelta = createDelta();\n      this.relativeTarget = this.relativeTargetOrigin = void 0;\n      this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n      const relativeLayout = createBox();\n      const isSharedLayoutAnimation = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.source) !== ((_a = this.layout) === null || _a === void 0 ? void 0 : _a.source);\n      const isOnlyMember = (((_b = this.getStack()) === null || _b === void 0 ? void 0 : _b.members.length) || 0) <= 1;\n      const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation && !isOnlyMember && this.options.crossfade === true && !this.path.some(hasOpacityCrossfade));\n      this.animationProgress = 0;\n      this.mixTargetDelta = (latest) => {\n        var _a2;\n        const progress3 = latest / 1e3;\n        mixAxisDelta(targetDelta.x, delta.x, progress3);\n        mixAxisDelta(targetDelta.y, delta.y, progress3);\n        this.setTargetDelta(targetDelta);\n        if (this.relativeTarget && this.relativeTargetOrigin && this.layout && ((_a2 = this.relativeParent) === null || _a2 === void 0 ? void 0 : _a2.layout)) {\n          calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n          mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress3);\n        }\n        if (isSharedLayoutAnimation) {\n          this.animationValues = mixedValues;\n          mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress3, shouldCrossfadeOpacity, isOnlyMember);\n        }\n        this.root.scheduleUpdateProjection();\n        this.scheduleRender();\n        this.animationProgress = progress3;\n      };\n      this.mixTargetDelta(0);\n    }\n    startAnimation(options) {\n      var _a, _b;\n      this.notifyListeners(\"animationStart\");\n      (_a = this.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n      if (this.resumingFrom) {\n        (_b = this.resumingFrom.currentAnimation) === null || _b === void 0 ? void 0 : _b.stop();\n      }\n      if (this.pendingAnimation) {\n        cancelSync.update(this.pendingAnimation);\n        this.pendingAnimation = void 0;\n      }\n      this.pendingAnimation = sync.update(() => {\n        globalProjectionState.hasAnimatedSinceResize = true;\n        this.currentAnimation = animate2(0, animationTarget, {\n          ...options,\n          onUpdate: (latest) => {\n            var _a2;\n            this.mixTargetDelta(latest);\n            (_a2 = options.onUpdate) === null || _a2 === void 0 ? void 0 : _a2.call(options, latest);\n          },\n          onComplete: () => {\n            var _a2;\n            (_a2 = options.onComplete) === null || _a2 === void 0 ? void 0 : _a2.call(options);\n            this.completeAnimation();\n          }\n        });\n        if (this.resumingFrom) {\n          this.resumingFrom.currentAnimation = this.currentAnimation;\n        }\n        this.pendingAnimation = void 0;\n      });\n    }\n    completeAnimation() {\n      var _a;\n      if (this.resumingFrom) {\n        this.resumingFrom.currentAnimation = void 0;\n        this.resumingFrom.preserveOpacity = void 0;\n      }\n      (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.exitAnimationComplete();\n      this.resumingFrom = this.currentAnimation = this.animationValues = void 0;\n      this.notifyListeners(\"animationComplete\");\n    }\n    finishAnimation() {\n      var _a;\n      if (this.currentAnimation) {\n        (_a = this.mixTargetDelta) === null || _a === void 0 ? void 0 : _a.call(this, animationTarget);\n        this.currentAnimation.stop();\n      }\n      this.completeAnimation();\n    }\n    applyTransformsToTarget() {\n      const lead = this.getLead();\n      let { targetWithTransforms, target, layout, latestValues } = lead;\n      if (!targetWithTransforms || !target || !layout)\n        return;\n      if (this !== lead && this.layout && layout && shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n        target = this.target || createBox();\n        const xLength = calcLength(this.layout.layoutBox.x);\n        target.x.min = lead.target.x.min;\n        target.x.max = target.x.min + xLength;\n        const yLength = calcLength(this.layout.layoutBox.y);\n        target.y.min = lead.target.y.min;\n        target.y.max = target.y.min + yLength;\n      }\n      copyBoxInto(targetWithTransforms, target);\n      transformBox(targetWithTransforms, latestValues);\n      calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n    }\n    registerSharedNode(layoutId, node) {\n      var _a, _b, _c;\n      if (!this.sharedNodes.has(layoutId)) {\n        this.sharedNodes.set(layoutId, new NodeStack());\n      }\n      const stack = this.sharedNodes.get(layoutId);\n      stack.add(node);\n      node.promote({\n        transition: (_a = node.options.initialPromotionConfig) === null || _a === void 0 ? void 0 : _a.transition,\n        preserveFollowOpacity: (_c = (_b = node.options.initialPromotionConfig) === null || _b === void 0 ? void 0 : _b.shouldPreserveFollowOpacity) === null || _c === void 0 ? void 0 : _c.call(_b, node)\n      });\n    }\n    isLead() {\n      const stack = this.getStack();\n      return stack ? stack.lead === this : true;\n    }\n    getLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n    }\n    getPrevLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : void 0;\n    }\n    getStack() {\n      const { layoutId } = this.options;\n      if (layoutId)\n        return this.root.sharedNodes.get(layoutId);\n    }\n    promote({ needsReset, transition, preserveFollowOpacity } = {}) {\n      const stack = this.getStack();\n      if (stack)\n        stack.promote(this, preserveFollowOpacity);\n      if (needsReset) {\n        this.projectionDelta = void 0;\n        this.needsReset = true;\n      }\n      if (transition)\n        this.setOptions({ transition });\n    }\n    relegate() {\n      const stack = this.getStack();\n      if (stack) {\n        return stack.relegate(this);\n      } else {\n        return false;\n      }\n    }\n    resetRotation() {\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return;\n      let hasRotate = false;\n      const { latestValues } = visualElement;\n      if (latestValues.rotate || latestValues.rotateX || latestValues.rotateY || latestValues.rotateZ) {\n        hasRotate = true;\n      }\n      if (!hasRotate)\n        return;\n      const resetValues = {};\n      for (let i = 0; i < transformAxes.length; i++) {\n        const key = \"rotate\" + transformAxes[i];\n        if (latestValues[key]) {\n          resetValues[key] = latestValues[key];\n          visualElement.setStaticValue(key, 0);\n        }\n      }\n      visualElement === null || visualElement === void 0 ? void 0 : visualElement.render();\n      for (const key in resetValues) {\n        visualElement.setStaticValue(key, resetValues[key]);\n      }\n      visualElement.scheduleRender();\n    }\n    getProjectionStyles(styleProp = {}) {\n      var _a, _b, _c;\n      const styles = {};\n      if (!this.instance || this.isSVG)\n        return styles;\n      if (!this.isVisible) {\n        return { visibility: \"hidden\" };\n      } else {\n        styles.visibility = \"\";\n      }\n      const transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n      if (this.needsReset) {\n        this.needsReset = false;\n        styles.opacity = \"\";\n        styles.pointerEvents = resolveMotionValue(styleProp.pointerEvents) || \"\";\n        styles.transform = transformTemplate ? transformTemplate(this.latestValues, \"\") : \"none\";\n        return styles;\n      }\n      const lead = this.getLead();\n      if (!this.projectionDelta || !this.layout || !lead.target) {\n        const emptyStyles = {};\n        if (this.options.layoutId) {\n          emptyStyles.opacity = this.latestValues.opacity !== void 0 ? this.latestValues.opacity : 1;\n          emptyStyles.pointerEvents = resolveMotionValue(styleProp.pointerEvents) || \"\";\n        }\n        if (this.hasProjected && !hasTransform(this.latestValues)) {\n          emptyStyles.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n          this.hasProjected = false;\n        }\n        return emptyStyles;\n      }\n      const valuesToRender = lead.animationValues || lead.latestValues;\n      this.applyTransformsToTarget();\n      styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n      if (transformTemplate) {\n        styles.transform = transformTemplate(valuesToRender, styles.transform);\n      }\n      const { x, y } = this.projectionDelta;\n      styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n      if (lead.animationValues) {\n        styles.opacity = lead === this ? (_c = (_b = valuesToRender.opacity) !== null && _b !== void 0 ? _b : this.latestValues.opacity) !== null && _c !== void 0 ? _c : 1 : this.preserveOpacity ? this.latestValues.opacity : valuesToRender.opacityExit;\n      } else {\n        styles.opacity = lead === this ? valuesToRender.opacity !== void 0 ? valuesToRender.opacity : \"\" : valuesToRender.opacityExit !== void 0 ? valuesToRender.opacityExit : 0;\n      }\n      for (const key in scaleCorrectors) {\n        if (valuesToRender[key] === void 0)\n          continue;\n        const { correct, applyTo } = scaleCorrectors[key];\n        const corrected = styles.transform === \"none\" ? valuesToRender[key] : correct(valuesToRender[key], lead);\n        if (applyTo) {\n          const num = applyTo.length;\n          for (let i = 0; i < num; i++) {\n            styles[applyTo[i]] = corrected;\n          }\n        } else {\n          styles[key] = corrected;\n        }\n      }\n      if (this.options.layoutId) {\n        styles.pointerEvents = lead === this ? resolveMotionValue(styleProp.pointerEvents) || \"\" : \"none\";\n      }\n      return styles;\n    }\n    clearSnapshot() {\n      this.resumeFrom = this.snapshot = void 0;\n    }\n    resetTree() {\n      this.root.nodes.forEach((node) => {\n        var _a;\n        return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n      });\n      this.root.nodes.forEach(clearMeasurements);\n      this.root.sharedNodes.clear();\n    }\n  };\n}\nfunction updateLayout(node) {\n  node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n  var _a, _b, _c;\n  const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n  if (node.isLead() && node.layout && snapshot && node.hasListeners(\"didUpdate\")) {\n    const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n    const { animationType } = node.options;\n    const isShared = snapshot.source !== node.layout.source;\n    if (animationType === \"size\") {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(axisSnapshot);\n        axisSnapshot.min = layout[axis].min;\n        axisSnapshot.max = axisSnapshot.min + length;\n      });\n    } else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(layout[axis]);\n        axisSnapshot.max = axisSnapshot.min + length;\n      });\n    }\n    const layoutDelta = createDelta();\n    calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n    const visualDelta = createDelta();\n    if (isShared) {\n      calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n    } else {\n      calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n    }\n    const hasLayoutChanged = !isDeltaZero(layoutDelta);\n    let hasRelativeTargetChanged = false;\n    if (!node.resumeFrom) {\n      const relativeParent = node.getClosestProjectingParent();\n      if (relativeParent && !relativeParent.resumeFrom) {\n        const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n        if (parentSnapshot && parentLayout) {\n          const relativeSnapshot = createBox();\n          calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n          const relativeLayout = createBox();\n          calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n          if (!boxEquals(relativeSnapshot, relativeLayout)) {\n            hasRelativeTargetChanged = true;\n          }\n        }\n      }\n    }\n    node.notifyListeners(\"didUpdate\", {\n      layout,\n      snapshot,\n      delta: visualDelta,\n      layoutDelta,\n      hasLayoutChanged,\n      hasRelativeTargetChanged\n    });\n  } else if (node.isLead()) {\n    (_c = (_b = node.options).onExitComplete) === null || _c === void 0 ? void 0 : _c.call(_b);\n  }\n  node.options.transition = void 0;\n}\nfunction propagateDirtyNodes(node) {\n  node.isProjectionDirty || (node.isProjectionDirty = Boolean(node.parent && node.parent.isProjectionDirty));\n  node.isTransformDirty || (node.isTransformDirty = Boolean(node.parent && node.parent.isTransformDirty));\n}\nfunction clearSnapshot(node) {\n  node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n  node.clearMeasurements();\n}\nfunction resetTransformStyle(node) {\n  const { visualElement } = node.options;\n  if (visualElement === null || visualElement === void 0 ? void 0 : visualElement.getProps().onBeforeLayoutMeasure) {\n    visualElement.notify(\"BeforeLayoutMeasure\");\n  }\n  node.resetTransform();\n}\nfunction finishAnimation(node) {\n  node.finishAnimation();\n  node.targetDelta = node.relativeTarget = node.target = void 0;\n}\nfunction resolveTargetDelta(node) {\n  node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n  node.calcProjection();\n}\nfunction resetRotation(node) {\n  node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n  stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n  output.translate = mix(delta.translate, 0, p);\n  output.scale = mix(delta.scale, 1, p);\n  output.origin = delta.origin;\n  output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n  output.min = mix(from.min, to.min, p);\n  output.max = mix(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n  mixAxis(output.x, from.x, to.x, p);\n  mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n  return node.animationValues && node.animationValues.opacityExit !== void 0;\n}\nvar defaultLayoutTransition = {\n  duration: 0.45,\n  ease: [0.4, 0, 0.1, 1]\n};\nfunction mountNodeEarly(node, elementId) {\n  let searchNode = node.root;\n  for (let i = node.path.length - 1; i >= 0; i--) {\n    if (Boolean(node.path[i].instance)) {\n      searchNode = node.path[i];\n      break;\n    }\n  }\n  const searchElement = searchNode && searchNode !== node.root ? searchNode.instance : document;\n  const element = searchElement.querySelector(`[data-projection-id=\"${elementId}\"]`);\n  if (element)\n    node.mount(element, true);\n}\nfunction roundAxis(axis) {\n  axis.min = Math.round(axis.min);\n  axis.max = Math.round(axis.max);\n}\nfunction roundBox(box) {\n  roundAxis(box.x);\n  roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n  return animationType === \"position\" || animationType === \"preserve-aspect\" && !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs\nvar DocumentProjectionNode = createProjectionNode({\n  attachResizeListener: (ref, notify2) => addDomEvent(ref, \"resize\", notify2),\n  measureScroll: () => ({\n    x: document.documentElement.scrollLeft || document.body.scrollLeft,\n    y: document.documentElement.scrollTop || document.body.scrollTop\n  }),\n  checkIsScrollRoot: () => true\n});\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs\nvar rootProjectionNode = {\n  current: void 0\n};\nvar HTMLProjectionNode = createProjectionNode({\n  measureScroll: (instance) => ({\n    x: instance.scrollLeft,\n    y: instance.scrollTop\n  }),\n  defaultParent: () => {\n    if (!rootProjectionNode.current) {\n      const documentNode = new DocumentProjectionNode(0, {});\n      documentNode.mount(window);\n      documentNode.setOptions({ layoutScroll: true });\n      rootProjectionNode.current = documentNode;\n    }\n    return rootProjectionNode.current;\n  },\n  resetTransform: (instance, value) => {\n    instance.style.transform = value !== void 0 ? value : \"none\";\n  },\n  checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\")\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/motion.mjs\nvar featureBundle = {\n  ...animations,\n  ...gestureAnimations,\n  ...drag,\n  ...layoutFeatures\n};\nvar motion = /* @__PURE__ */ createMotionProxy((Component2, config) => createDomMotionConfig(Component2, config, featureBundle, createDomVisualElement, HTMLProjectionNode));\nfunction createDomMotionComponent(key) {\n  return createMotionComponent(createDomMotionConfig(key, { forwardMotionProps: false }, featureBundle, createDomVisualElement, HTMLProjectionNode));\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/motion-minimal.mjs\nvar m = createMotionProxy(createDomMotionConfig);\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nimport { useState, useCallback as useCallback4 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs\nimport { useRef as useRef6 } from \"react\";\nfunction useIsMounted() {\n  const isMounted = useRef6(false);\n  useIsomorphicLayoutEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  return isMounted;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nfunction useForceUpdate() {\n  const isMounted = useIsMounted();\n  const [forcedRenderCount, setForcedRenderCount] = useState(0);\n  const forceRender = useCallback4(() => {\n    isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n  }, [forcedRenderCount]);\n  const deferredForceRender = useCallback4(() => sync.postRender(forceRender), [forceRender]);\n  return [deferredForceRender, forcedRenderCount];\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nimport * as React4 from \"react\";\nimport { useContext as useContext10, useRef as useRef8, cloneElement as cloneElement2, Children, isValidElement } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nimport * as React3 from \"react\";\nimport { useId as useId3, useMemo as useMemo6 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs\nimport * as React2 from \"react\";\nimport { useId as useId2, useRef as useRef7, useInsertionEffect } from \"react\";\nvar PopChildMeasure = class extends React2.Component {\n  getSnapshotBeforeUpdate(prevProps) {\n    const element = this.props.childRef.current;\n    if (element && prevProps.isPresent && !this.props.isPresent) {\n      const size = this.props.sizeRef.current;\n      size.height = element.offsetHeight || 0;\n      size.width = element.offsetWidth || 0;\n      size.top = element.offsetTop;\n      size.left = element.offsetLeft;\n    }\n    return null;\n  }\n  componentDidUpdate() {\n  }\n  render() {\n    return this.props.children;\n  }\n};\nfunction PopChild({ children, isPresent: isPresent2 }) {\n  const id4 = useId2();\n  const ref = useRef7(null);\n  const size = useRef7({\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0\n  });\n  useInsertionEffect(() => {\n    const { width, height, top, left } = size.current;\n    if (isPresent2 || !ref.current || !width || !height)\n      return;\n    ref.current.dataset.motionPopId = id4;\n    const style = document.createElement(\"style\");\n    document.head.appendChild(style);\n    if (style.sheet) {\n      style.sheet.insertRule(`\n          [data-motion-pop-id=\"${id4}\"] {\n            position: absolute !important;\n            width: ${width}px !important;\n            height: ${height}px !important;\n            top: ${top}px !important;\n            left: ${left}px !important;\n          }\n        `);\n    }\n    return () => {\n      document.head.removeChild(style);\n    };\n  }, [isPresent2]);\n  return React2.createElement(PopChildMeasure, { isPresent: isPresent2, childRef: ref, sizeRef: size }, React2.cloneElement(children, { ref }));\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nvar PresenceChild = ({ children, initial, isPresent: isPresent2, onExitComplete, custom, presenceAffectsLayout, mode }) => {\n  const presenceChildren = useConstant(newChildrenMap);\n  const id4 = useId3();\n  const context = useMemo6(\n    () => ({\n      id: id4,\n      initial,\n      isPresent: isPresent2,\n      custom,\n      onExitComplete: (childId) => {\n        presenceChildren.set(childId, true);\n        for (const isComplete of presenceChildren.values()) {\n          if (!isComplete)\n            return;\n        }\n        onExitComplete && onExitComplete();\n      },\n      register: (childId) => {\n        presenceChildren.set(childId, false);\n        return () => presenceChildren.delete(childId);\n      }\n    }),\n    presenceAffectsLayout ? void 0 : [isPresent2]\n  );\n  useMemo6(() => {\n    presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n  }, [isPresent2]);\n  React3.useEffect(() => {\n    !isPresent2 && !presenceChildren.size && onExitComplete && onExitComplete();\n  }, [isPresent2]);\n  if (mode === \"popLayout\") {\n    children = React3.createElement(PopChild, { isPresent: isPresent2 }, children);\n  }\n  return React3.createElement(PresenceContext.Provider, { value: context }, children);\n};\nfunction newChildrenMap() {\n  return /* @__PURE__ */ new Map();\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nvar getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n  children.forEach((child) => {\n    const key = getChildKey(child);\n    allChildren.set(key, child);\n  });\n}\nfunction onlyElements(children) {\n  const filtered = [];\n  Children.forEach(children, (child) => {\n    if (isValidElement(child))\n      filtered.push(child);\n  });\n  return filtered;\n}\nvar AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\" }) => {\n  if (exitBeforeEnter) {\n    mode = \"wait\";\n    if (false) {\n      warnOnce(false, \"Replace exitBeforeEnter with mode='wait'\");\n    }\n  }\n  let [forceRender] = useForceUpdate();\n  const forceRenderLayoutGroup = useContext10(LayoutGroupContext).forceRender;\n  if (forceRenderLayoutGroup)\n    forceRender = forceRenderLayoutGroup;\n  const isMounted = useIsMounted();\n  const filteredChildren = onlyElements(children);\n  let childrenToRender = filteredChildren;\n  const exiting = /* @__PURE__ */ new Set();\n  const presentChildren = useRef8(childrenToRender);\n  const allChildren = useRef8(/* @__PURE__ */ new Map()).current;\n  const isInitialRender = useRef8(true);\n  useIsomorphicLayoutEffect(() => {\n    isInitialRender.current = false;\n    updateChildLookup(filteredChildren, allChildren);\n    presentChildren.current = childrenToRender;\n  });\n  useUnmountEffect(() => {\n    isInitialRender.current = true;\n    allChildren.clear();\n    exiting.clear();\n  });\n  if (isInitialRender.current) {\n    return React4.createElement(React4.Fragment, null, childrenToRender.map((child) => React4.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? void 0 : false, presenceAffectsLayout, mode }, child)));\n  }\n  childrenToRender = [...childrenToRender];\n  const presentKeys = presentChildren.current.map(getChildKey);\n  const targetKeys = filteredChildren.map(getChildKey);\n  const numPresent = presentKeys.length;\n  for (let i = 0; i < numPresent; i++) {\n    const key = presentKeys[i];\n    if (targetKeys.indexOf(key) === -1) {\n      exiting.add(key);\n    }\n  }\n  if (mode === \"wait\" && exiting.size) {\n    childrenToRender = [];\n  }\n  exiting.forEach((key) => {\n    if (targetKeys.indexOf(key) !== -1)\n      return;\n    const child = allChildren.get(key);\n    if (!child)\n      return;\n    const insertionIndex = presentKeys.indexOf(key);\n    const onExit = () => {\n      allChildren.delete(key);\n      exiting.delete(key);\n      const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);\n      presentChildren.current.splice(removeIndex, 1);\n      if (!exiting.size) {\n        presentChildren.current = filteredChildren;\n        if (isMounted.current === false)\n          return;\n        forceRender();\n        onExitComplete && onExitComplete();\n      }\n    };\n    childrenToRender.splice(insertionIndex, 0, React4.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom, presenceAffectsLayout, mode }, child));\n  });\n  childrenToRender = childrenToRender.map((child) => {\n    const key = child.key;\n    return exiting.has(key) ? child : React4.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout, mode }, child);\n  });\n  if (false) {\n    console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n  }\n  return React4.createElement(React4.Fragment, null, exiting.size ? childrenToRender : childrenToRender.map((child) => cloneElement2(child)));\n};\n\n// ../../../node_modules/framer-motion/dist/es/context/DeprecatedLayoutGroupContext.mjs\nimport { createContext as createContext7 } from \"react\";\nvar DeprecatedLayoutGroupContext = createContext7(null);\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nimport * as React5 from \"react\";\nimport { useContext as useContext11, useRef as useRef9, useMemo as useMemo7 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/group.mjs\nvar notify = (node) => !node.isLayoutDirty && node.willUpdate(false);\nfunction nodeGroup() {\n  const nodes = /* @__PURE__ */ new Set();\n  const subscriptions = /* @__PURE__ */ new WeakMap();\n  const dirtyAll = () => nodes.forEach(notify);\n  return {\n    add: (node) => {\n      nodes.add(node);\n      subscriptions.set(node, node.addEventListener(\"willUpdate\", dirtyAll));\n    },\n    remove: (node) => {\n      var _a;\n      nodes.delete(node);\n      (_a = subscriptions.get(node)) === null || _a === void 0 ? void 0 : _a();\n      subscriptions.delete(node);\n      dirtyAll();\n    },\n    dirty: dirtyAll\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nvar shouldInheritGroup = (inherit) => inherit === true;\nvar shouldInheritId = (inherit) => shouldInheritGroup(inherit === true) || inherit === \"id\";\nvar LayoutGroup = ({ children, id: id4, inheritId, inherit = true }) => {\n  if (inheritId !== void 0)\n    inherit = inheritId;\n  const layoutGroupContext = useContext11(LayoutGroupContext);\n  const deprecatedLayoutGroupContext = useContext11(DeprecatedLayoutGroupContext);\n  const [forceRender, key] = useForceUpdate();\n  const context = useRef9(null);\n  const upstreamId = layoutGroupContext.id || deprecatedLayoutGroupContext;\n  if (context.current === null) {\n    if (shouldInheritId(inherit) && upstreamId) {\n      id4 = id4 ? upstreamId + \"-\" + id4 : upstreamId;\n    }\n    context.current = {\n      id: id4,\n      group: shouldInheritGroup(inherit) ? layoutGroupContext.group || nodeGroup() : nodeGroup()\n    };\n  }\n  const memoizedContext = useMemo7(() => ({ ...context.current, forceRender }), [key]);\n  return React5.createElement(LayoutGroupContext.Provider, { value: memoizedContext }, children);\n};\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimateSharedLayout.mjs\nimport * as React6 from \"react\";\nvar id3 = 0;\nvar AnimateSharedLayout = ({ children }) => {\n  React6.useEffect(() => {\n    warning(false, \"AnimateSharedLayout is deprecated: https://www.framer.com/docs/guide-upgrade/##shared-layout-animations\");\n  }, []);\n  return React6.createElement(LayoutGroup, { id: useConstant(() => `asl-${id3++}`) }, children);\n};\n\n// ../../../node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs\nimport * as React7 from \"react\";\nimport { useContext as useContext12, useMemo as useMemo8 } from \"react\";\nfunction MotionConfig({ children, isValidProp, ...config }) {\n  isValidProp && loadExternalIsValidProp(isValidProp);\n  config = { ...useContext12(MotionConfigContext), ...config };\n  config.isStatic = useConstant(() => config.isStatic);\n  const context = useMemo8(() => config, [JSON.stringify(config.transition), config.transformPagePoint, config.reducedMotion]);\n  return React7.createElement(MotionConfigContext.Provider, { value: context }, children);\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\nimport * as React8 from \"react\";\nimport { useState as useState2, useRef as useRef10, useEffect as useEffect12 } from \"react\";\nfunction LazyMotion({ children, features, strict = false }) {\n  const [, setIsLoaded] = useState2(!isLazyBundle(features));\n  const loadedRenderer = useRef10(void 0);\n  if (!isLazyBundle(features)) {\n    const { renderer, ...loadedFeatures } = features;\n    loadedRenderer.current = renderer;\n    loadFeatures(loadedFeatures);\n  }\n  useEffect12(() => {\n    if (isLazyBundle(features)) {\n      features().then(({ renderer, ...loadedFeatures }) => {\n        loadFeatures(loadedFeatures);\n        loadedRenderer.current = renderer;\n        setIsLoaded(true);\n      });\n    }\n  }, []);\n  return React8.createElement(LazyContext.Provider, { value: { renderer: loadedRenderer.current, strict } }, children);\n}\nfunction isLazyBundle(features) {\n  return typeof features === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-value.mjs\nimport { useContext as useContext13, useState as useState3, useEffect as useEffect13 } from \"react\";\nfunction useMotionValue(initial) {\n  const value = useConstant(() => motionValue(initial));\n  const { isStatic } = useContext13(MotionConfigContext);\n  if (isStatic) {\n    const [, setLatest] = useState3(initial);\n    useEffect13(() => value.on(\"change\", setLatest), []);\n  }\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/transform.mjs\nvar isCustomValueType = (v) => {\n  return typeof v === \"object\" && v.mix;\n};\nvar getMixer2 = (v) => isCustomValueType(v) ? v.mix : void 0;\nfunction transform(...args) {\n  const useImmediate = !Array.isArray(args[0]);\n  const argOffset = useImmediate ? 0 : -1;\n  const inputValue = args[0 + argOffset];\n  const inputRange = args[1 + argOffset];\n  const outputRange = args[2 + argOffset];\n  const options = args[3 + argOffset];\n  const interpolator = interpolate(inputRange, outputRange, {\n    mixer: getMixer2(outputRange[0]),\n    ...options\n  });\n  return useImmediate ? interpolator(inputValue) : interpolator;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-combine-values.mjs\nfunction useCombineMotionValues(values, combineValues) {\n  const value = useMotionValue(combineValues());\n  const updateValue = () => value.set(combineValues());\n  updateValue();\n  useIsomorphicLayoutEffect(() => {\n    const scheduleUpdate = () => sync.update(updateValue, false, true);\n    const subscriptions = values.map((v) => v.on(\"change\", scheduleUpdate));\n    return () => {\n      subscriptions.forEach((unsubscribe) => unsubscribe());\n      cancelSync.update(updateValue);\n    };\n  });\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-transform.mjs\nfunction useTransform(input, inputRangeOrTransformer, outputRange, options) {\n  const transformer = typeof inputRangeOrTransformer === \"function\" ? inputRangeOrTransformer : transform(inputRangeOrTransformer, outputRange, options);\n  return Array.isArray(input) ? useListTransform(input, transformer) : useListTransform([input], ([latest]) => transformer(latest));\n}\nfunction useListTransform(values, transformer) {\n  const latest = useConstant(() => []);\n  return useCombineMotionValues(values, () => {\n    latest.length = 0;\n    const numValues = values.length;\n    for (let i = 0; i < numValues; i++) {\n      latest[i] = values[i].get();\n    }\n    return transformer(latest);\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nimport * as React9 from \"react\";\nimport { forwardRef as forwardRef2, useRef as useRef11, useEffect as useEffect14 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/ReorderContext.mjs\nimport { createContext as createContext8 } from \"react\";\nvar ReorderContext = createContext8(null);\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.mjs\nfunction checkReorder(order, value, offset, velocity) {\n  if (!velocity)\n    return order;\n  const index = order.findIndex((item2) => item2.value === value);\n  if (index === -1)\n    return order;\n  const nextOffset = velocity > 0 ? 1 : -1;\n  const nextItem = order[index + nextOffset];\n  if (!nextItem)\n    return order;\n  const item = order[index];\n  const nextLayout = nextItem.layout;\n  const nextItemCenter = mix(nextLayout.min, nextLayout.max, 0.5);\n  if (nextOffset === 1 && item.layout.max + offset > nextItemCenter || nextOffset === -1 && item.layout.min + offset < nextItemCenter) {\n    return moveItem(order, index, index + nextOffset);\n  }\n  return order;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nfunction ReorderGroup({ children, as = \"ul\", axis = \"y\", onReorder, values, ...props }, externalRef) {\n  const Component2 = useConstant(() => motion(as));\n  const order = [];\n  const isReordering = useRef11(false);\n  invariant(Boolean(values), \"Reorder.Group must be provided a values prop\");\n  const context = {\n    axis,\n    registerItem: (value, layout) => {\n      if (layout && order.findIndex((entry) => value === entry.value) === -1) {\n        order.push({ value, layout: layout[axis] });\n        order.sort(compareMin);\n      }\n    },\n    updateOrder: (id4, offset, velocity) => {\n      if (isReordering.current)\n        return;\n      const newOrder = checkReorder(order, id4, offset, velocity);\n      if (order !== newOrder) {\n        isReordering.current = true;\n        onReorder(newOrder.map(getValue).filter((value) => values.indexOf(value) !== -1));\n      }\n    }\n  };\n  useEffect14(() => {\n    isReordering.current = false;\n  });\n  return React9.createElement(\n    Component2,\n    { ...props, ref: externalRef },\n    React9.createElement(ReorderContext.Provider, { value: context }, children)\n  );\n}\nvar Group = forwardRef2(ReorderGroup);\nfunction getValue(item) {\n  return item.value;\n}\nfunction compareMin(a, b) {\n  return a.layout.min - b.layout.min;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Item.mjs\nimport * as React10 from \"react\";\nimport { forwardRef as forwardRef3, useContext as useContext14, useRef as useRef12, useEffect as useEffect15 } from \"react\";\nfunction useDefaultMotionValue(value, defaultValue = 0) {\n  return isMotionValue(value) ? value : useMotionValue(defaultValue);\n}\nfunction ReorderItem({ children, style = {}, value, as = \"li\", onDrag, layout = true, ...props }, externalRef) {\n  const Component2 = useConstant(() => motion(as));\n  const context = useContext14(ReorderContext);\n  const point2 = {\n    x: useDefaultMotionValue(style.x),\n    y: useDefaultMotionValue(style.y)\n  };\n  const zIndex = useTransform([point2.x, point2.y], ([latestX, latestY]) => latestX || latestY ? 1 : \"unset\");\n  const measuredLayout = useRef12(null);\n  invariant(Boolean(context), \"Reorder.Item must be a child of Reorder.Group\");\n  const { axis, registerItem, updateOrder } = context;\n  useEffect15(() => {\n    registerItem(value, measuredLayout.current);\n  }, [context]);\n  return React10.createElement(Component2, { drag: axis, ...props, dragSnapToOrigin: true, style: { ...style, x: point2.x, y: point2.y, zIndex }, layout, onDrag: (event, gesturePoint) => {\n    const { velocity } = gesturePoint;\n    velocity[axis] && updateOrder(value, point2[axis].get(), velocity[axis]);\n    onDrag && onDrag(event, gesturePoint);\n  }, onLayoutMeasure: (measured) => {\n    measuredLayout.current = measured;\n  }, ref: externalRef }, children);\n}\nvar Item = forwardRef3(ReorderItem);\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/index.mjs\nvar Reorder = {\n  Group,\n  Item\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\nvar domAnimation = {\n  renderer: createDomVisualElement,\n  ...animations,\n  ...gestureAnimations\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-max.mjs\nvar domMax = {\n  ...domAnimation,\n  ...drag,\n  ...layoutFeatures,\n  projectionNodeConstructor: HTMLProjectionNode\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-template.mjs\nfunction useMotionTemplate(fragments, ...values) {\n  const numFragments = fragments.length;\n  function buildValue() {\n    let output = ``;\n    for (let i = 0; i < numFragments; i++) {\n      output += fragments[i];\n      const value = values[i];\n      if (value) {\n        output += isMotionValue(value) ? value.get() : value;\n      }\n    }\n    return output;\n  }\n  return useCombineMotionValues(values.filter(isMotionValue), buildValue);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-spring.mjs\nimport { useContext as useContext15, useRef as useRef13, useInsertionEffect as useInsertionEffect2 } from \"react\";\nfunction useSpring(source, config = {}) {\n  const { isStatic } = useContext15(MotionConfigContext);\n  const activeSpringAnimation = useRef13(null);\n  const value = useMotionValue(isMotionValue(source) ? source.get() : source);\n  const stopAnimation2 = () => {\n    if (activeSpringAnimation.current) {\n      activeSpringAnimation.current.stop();\n    }\n  };\n  useInsertionEffect2(() => {\n    return value.attach((v, set) => {\n      if (isStatic)\n        return set(v);\n      stopAnimation2();\n      activeSpringAnimation.current = animate({\n        keyframes: [value.get(), v],\n        velocity: value.getVelocity(),\n        type: \"spring\",\n        ...config,\n        onUpdate: set\n      });\n      return value.get();\n    }, stopAnimation2);\n  }, [JSON.stringify(config)]);\n  useIsomorphicLayoutEffect(() => {\n    if (isMotionValue(source)) {\n      return source.on(\"change\", (v) => value.set(parseFloat(v)));\n    }\n  }, [value]);\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-velocity.mjs\nimport { useEffect as useEffect16 } from \"react\";\nfunction useVelocity(value) {\n  const velocity = useMotionValue(value.getVelocity());\n  useEffect16(() => {\n    return value.on(\"velocityChange\", (newVelocity) => {\n      velocity.set(newVelocity);\n    });\n  }, [value]);\n  return velocity;\n}\n\n// ../../../node_modules/@motionone/utils/dist/clamp.es.js\nvar clamp2 = (min, max, v) => Math.min(Math.max(v, min), max);\n\n// ../../../node_modules/@motionone/utils/dist/is-number.es.js\nvar isNumber = (value) => typeof value === \"number\";\n\n// ../../../node_modules/@motionone/utils/dist/is-easing-list.es.js\nvar isEasingList = (easing) => Array.isArray(easing) && !isNumber(easing[0]);\n\n// ../../../node_modules/@motionone/utils/dist/wrap.es.js\nvar wrap = (min, max, v) => {\n  const rangeSize = max - min;\n  return ((v - min) % rangeSize + rangeSize) % rangeSize + min;\n};\n\n// ../../../node_modules/@motionone/utils/dist/easing.es.js\nfunction getEasingForSegment(easing, i) {\n  return isEasingList(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\n// ../../../node_modules/@motionone/utils/dist/mix.es.js\nvar mix2 = (min, max, progress3) => -progress3 * min + progress3 * max + min;\n\n// ../../../node_modules/@motionone/utils/dist/noop.es.js\nvar noopReturn = (v) => v;\n\n// ../../../node_modules/@motionone/utils/dist/progress.es.js\nvar progress2 = (min, max, value) => max - min === 0 ? 1 : (value - min) / (max - min);\n\n// ../../../node_modules/@motionone/utils/dist/offset.es.js\nfunction fillOffset(offset, remaining) {\n  const min = offset[offset.length - 1];\n  for (let i = 1; i <= remaining; i++) {\n    const offsetProgress = progress2(0, remaining, i);\n    offset.push(mix2(min, 1, offsetProgress));\n  }\n}\nfunction defaultOffset2(length) {\n  const offset = [0];\n  fillOffset(offset, length - 1);\n  return offset;\n}\n\n// ../../../node_modules/@motionone/utils/dist/interpolate.es.js\nfunction interpolate2(output, input = defaultOffset2(output.length), easing = noopReturn) {\n  const length = output.length;\n  const remainder = length - input.length;\n  remainder > 0 && fillOffset(input, remainder);\n  return (t) => {\n    let i = 0;\n    for (; i < length - 2; i++) {\n      if (t < input[i + 1])\n        break;\n    }\n    let progressInRange = clamp2(0, 1, progress2(input[i], input[i + 1], t));\n    const segmentEasing = getEasingForSegment(easing, i);\n    progressInRange = segmentEasing(progressInRange);\n    return mix2(output[i], output[i + 1], progressInRange);\n  };\n}\n\n// ../../../node_modules/@motionone/utils/dist/is-function.es.js\nvar isFunction = (value) => typeof value === \"function\";\n\n// ../../../node_modules/@motionone/utils/dist/is-string.es.js\nvar isString2 = (value) => typeof value === \"string\";\n\n// ../../../node_modules/@motionone/utils/dist/velocity.es.js\nfunction velocityPerSecond2(velocity, frameDuration) {\n  return frameDuration ? velocity * (1e3 / frameDuration) : 0;\n}\n\n// ../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js\nfunction resolveElements(elements, selectorCache) {\n  var _a;\n  if (typeof elements === \"string\") {\n    if (selectorCache) {\n      (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : selectorCache[elements] = document.querySelectorAll(elements);\n      elements = selectorCache[elements];\n    } else {\n      elements = document.querySelectorAll(elements);\n    }\n  } else if (elements instanceof Element) {\n    elements = [elements];\n  }\n  return Array.from(elements || []);\n}\n\n// ../../../node_modules/tslib/tslib.es6.js\nfunction __rest(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js\nvar thresholds = {\n  any: 0,\n  all: 1\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"any\" } = {}) {\n  if (typeof IntersectionObserver === \"undefined\") {\n    return () => {\n    };\n  }\n  const elements = resolveElements(elementOrSelector);\n  const activeIntersections = /* @__PURE__ */ new WeakMap();\n  const onIntersectionChange = (entries) => {\n    entries.forEach((entry) => {\n      const onEnd = activeIntersections.get(entry.target);\n      if (entry.isIntersecting === Boolean(onEnd))\n        return;\n      if (entry.isIntersecting) {\n        const newOnEnd = onStart(entry);\n        if (isFunction(newOnEnd)) {\n          activeIntersections.set(entry.target, newOnEnd);\n        } else {\n          observer2.unobserve(entry.target);\n        }\n      } else if (onEnd) {\n        onEnd(entry);\n        activeIntersections.delete(entry.target);\n      }\n    });\n  };\n  const observer2 = new IntersectionObserver(onIntersectionChange, {\n    root,\n    rootMargin,\n    threshold: typeof amount === \"number\" ? amount : thresholds[amount]\n  });\n  elements.forEach((element) => observer2.observe(element));\n  return () => observer2.disconnect();\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js\nvar resizeHandlers = /* @__PURE__ */ new WeakMap();\nvar observer;\nfunction getElementSize(target, borderBoxSize) {\n  if (borderBoxSize) {\n    const { inlineSize, blockSize } = borderBoxSize[0];\n    return { width: inlineSize, height: blockSize };\n  } else if (target instanceof SVGElement && \"getBBox\" in target) {\n    return target.getBBox();\n  } else {\n    return {\n      width: target.offsetWidth,\n      height: target.offsetHeight\n    };\n  }\n}\nfunction notifyTarget({ target, contentRect, borderBoxSize }) {\n  var _a;\n  (_a = resizeHandlers.get(target)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => {\n    handler({\n      target,\n      contentSize: contentRect,\n      get size() {\n        return getElementSize(target, borderBoxSize);\n      }\n    });\n  });\n}\nfunction notifyAll(entries) {\n  entries.forEach(notifyTarget);\n}\nfunction createResizeObserver() {\n  if (typeof ResizeObserver === \"undefined\")\n    return;\n  observer = new ResizeObserver(notifyAll);\n}\nfunction resizeElement(target, handler) {\n  if (!observer)\n    createResizeObserver();\n  const elements = resolveElements(target);\n  elements.forEach((element) => {\n    let elementHandlers = resizeHandlers.get(element);\n    if (!elementHandlers) {\n      elementHandlers = /* @__PURE__ */ new Set();\n      resizeHandlers.set(element, elementHandlers);\n    }\n    elementHandlers.add(handler);\n    observer === null || observer === void 0 ? void 0 : observer.observe(element);\n  });\n  return () => {\n    elements.forEach((element) => {\n      const elementHandlers = resizeHandlers.get(element);\n      elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.delete(handler);\n      if (!(elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.size)) {\n        observer === null || observer === void 0 ? void 0 : observer.unobserve(element);\n      }\n    });\n  };\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js\nvar windowCallbacks = /* @__PURE__ */ new Set();\nvar windowResizeHandler;\nfunction createWindowResizeHandler() {\n  windowResizeHandler = () => {\n    const size = {\n      width: window.innerWidth,\n      height: window.innerHeight\n    };\n    const info = {\n      target: window,\n      size,\n      contentSize: size\n    };\n    windowCallbacks.forEach((callback) => callback(info));\n  };\n  window.addEventListener(\"resize\", windowResizeHandler);\n}\nfunction resizeWindow(callback) {\n  windowCallbacks.add(callback);\n  if (!windowResizeHandler)\n    createWindowResizeHandler();\n  return () => {\n    windowCallbacks.delete(callback);\n    if (!windowCallbacks.size && windowResizeHandler) {\n      windowResizeHandler = void 0;\n    }\n  };\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js\nfunction resize(a, b) {\n  return isFunction(a) ? resizeWindow(a) : resizeElement(a, b);\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js\nvar maxElapsed2 = 50;\nvar createAxisInfo = () => ({\n  current: 0,\n  offset: [],\n  progress: 0,\n  scrollLength: 0,\n  targetOffset: 0,\n  targetLength: 0,\n  containerLength: 0,\n  velocity: 0\n});\nvar createScrollInfo = () => ({\n  time: 0,\n  x: createAxisInfo(),\n  y: createAxisInfo()\n});\nvar keys = {\n  x: {\n    length: \"Width\",\n    position: \"Left\"\n  },\n  y: {\n    length: \"Height\",\n    position: \"Top\"\n  }\n};\nfunction updateAxisInfo(element, axisName, info, time) {\n  const axis = info[axisName];\n  const { length, position } = keys[axisName];\n  const prev = axis.current;\n  const prevTime = info.time;\n  axis.current = element[\"scroll\" + position];\n  axis.scrollLength = element[\"scroll\" + length] - element[\"client\" + length];\n  axis.offset.length = 0;\n  axis.offset[0] = 0;\n  axis.offset[1] = axis.scrollLength;\n  axis.progress = progress2(0, axis.scrollLength, axis.current);\n  const elapsed = time - prevTime;\n  axis.velocity = elapsed > maxElapsed2 ? 0 : velocityPerSecond2(axis.current - prev, elapsed);\n}\nfunction updateScrollInfo(element, info, time) {\n  updateAxisInfo(element, \"x\", info, time);\n  updateAxisInfo(element, \"y\", info, time);\n  info.time = time;\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js\nfunction calcInset(element, container) {\n  let inset = { x: 0, y: 0 };\n  let current = element;\n  while (current && current !== container) {\n    if (current instanceof HTMLElement) {\n      inset.x += current.offsetLeft;\n      inset.y += current.offsetTop;\n      current = current.offsetParent;\n    } else if (current instanceof SVGGraphicsElement && \"getBBox\" in current) {\n      const { top, left } = current.getBBox();\n      inset.x += left;\n      inset.y += top;\n      while (current && current.tagName !== \"svg\") {\n        current = current.parentNode;\n      }\n    }\n  }\n  return inset;\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js\nvar ScrollOffset = {\n  Enter: [\n    [0, 1],\n    [1, 1]\n  ],\n  Exit: [\n    [0, 0],\n    [1, 0]\n  ],\n  Any: [\n    [1, 0],\n    [0, 1]\n  ],\n  All: [\n    [0, 0],\n    [1, 1]\n  ]\n};\n\n// ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js\nvar namedEdges = {\n  start: 0,\n  center: 0.5,\n  end: 1\n};\nfunction resolveEdge(edge, length, inset = 0) {\n  let delta = 0;\n  if (namedEdges[edge] !== void 0) {\n    edge = namedEdges[edge];\n  }\n  if (isString2(edge)) {\n    const asNumber2 = parseFloat(edge);\n    if (edge.endsWith(\"px\")) {\n      delta = asNumber2;\n    } else if (edge.endsWith(\"%\")) {\n      edge = asNumber2 / 100;\n    } else if (edge.endsWith(\"vw\")) {\n      delta = asNumber2 / 100 * document.documentElement.clientWidth;\n    } else if (edge.endsWith(\"vh\")) {\n      delta = asNumber2 / 100 * document.documentElement.clientHeight;\n    } else {\n      edge = asNumber2;\n    }\n  }\n  if (isNumber(edge)) {\n    delta = length * edge;\n  }\n  return inset + delta;\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js\nvar defaultOffset3 = [0, 0];\nfunction resolveOffset(offset, containerLength, targetLength, targetInset) {\n  let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset3;\n  let targetPoint = 0;\n  let containerPoint = 0;\n  if (isNumber(offset)) {\n    offsetDefinition = [offset, offset];\n  } else if (isString2(offset)) {\n    offset = offset.trim();\n    if (offset.includes(\" \")) {\n      offsetDefinition = offset.split(\" \");\n    } else {\n      offsetDefinition = [offset, namedEdges[offset] ? offset : `0`];\n    }\n  }\n  targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);\n  containerPoint = resolveEdge(offsetDefinition[1], containerLength);\n  return targetPoint - containerPoint;\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js\nvar point = { x: 0, y: 0 };\nfunction resolveOffsets(container, info, options) {\n  let { offset: offsetDefinition = ScrollOffset.All } = options;\n  const { target = container, axis = \"y\" } = options;\n  const lengthLabel = axis === \"y\" ? \"height\" : \"width\";\n  const inset = target !== container ? calcInset(target, container) : point;\n  const targetSize = target === container ? { width: container.scrollWidth, height: container.scrollHeight } : { width: target.clientWidth, height: target.clientHeight };\n  const containerSize = {\n    width: container.clientWidth,\n    height: container.clientHeight\n  };\n  info[axis].offset.length = 0;\n  let hasChanged = !info[axis].interpolate;\n  const numOffsets = offsetDefinition.length;\n  for (let i = 0; i < numOffsets; i++) {\n    const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);\n    if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {\n      hasChanged = true;\n    }\n    info[axis].offset[i] = offset;\n  }\n  if (hasChanged) {\n    info[axis].interpolate = interpolate2(defaultOffset2(numOffsets), info[axis].offset);\n    info[axis].interpolatorOffsets = [...info[axis].offset];\n  }\n  info[axis].progress = info[axis].interpolate(info[axis].current);\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js\nfunction measure(container, target = container, info) {\n  info.x.targetOffset = 0;\n  info.y.targetOffset = 0;\n  if (target !== container) {\n    let node = target;\n    while (node && node != container) {\n      info.x.targetOffset += node.offsetLeft;\n      info.y.targetOffset += node.offsetTop;\n      node = node.offsetParent;\n    }\n  }\n  info.x.targetLength = target === container ? target.scrollWidth : target.clientWidth;\n  info.y.targetLength = target === container ? target.scrollHeight : target.clientHeight;\n  info.x.containerLength = container.clientWidth;\n  info.y.containerLength = container.clientHeight;\n}\nfunction createOnScrollHandler(element, onScroll, info, options = {}) {\n  const axis = options.axis || \"y\";\n  return {\n    measure: () => measure(element, options.target, info),\n    update: (time) => {\n      updateScrollInfo(element, info, time);\n      if (options.offset || options.target) {\n        resolveOffsets(element, info, options);\n      }\n    },\n    notify: isFunction(onScroll) ? () => onScroll(info) : scrubAnimation(onScroll, info[axis])\n  };\n}\nfunction scrubAnimation(controls, axisInfo) {\n  controls.pause();\n  controls.forEachNative((animation, { easing }) => {\n    var _a, _b;\n    if (animation.updateDuration) {\n      if (!easing)\n        animation.easing = noopReturn;\n      animation.updateDuration(1);\n    } else {\n      const timingOptions = { duration: 1e3 };\n      if (!easing)\n        timingOptions.easing = \"linear\";\n      (_b = (_a = animation.effect) === null || _a === void 0 ? void 0 : _a.updateTiming) === null || _b === void 0 ? void 0 : _b.call(_a, timingOptions);\n    }\n  });\n  return () => {\n    controls.currentTime = axisInfo.progress;\n  };\n}\n\n// ../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js\nvar scrollListeners = /* @__PURE__ */ new WeakMap();\nvar resizeListeners = /* @__PURE__ */ new WeakMap();\nvar onScrollHandlers = /* @__PURE__ */ new WeakMap();\nvar getEventTarget = (element) => element === document.documentElement ? window : element;\nfunction scroll(onScroll, _a = {}) {\n  var { container = document.documentElement } = _a, options = __rest(_a, [\"container\"]);\n  let containerHandlers = onScrollHandlers.get(container);\n  if (!containerHandlers) {\n    containerHandlers = /* @__PURE__ */ new Set();\n    onScrollHandlers.set(container, containerHandlers);\n  }\n  const info = createScrollInfo();\n  const containerHandler = createOnScrollHandler(container, onScroll, info, options);\n  containerHandlers.add(containerHandler);\n  if (!scrollListeners.has(container)) {\n    const listener2 = () => {\n      const time = performance.now();\n      for (const handler of containerHandlers)\n        handler.measure();\n      for (const handler of containerHandlers)\n        handler.update(time);\n      for (const handler of containerHandlers)\n        handler.notify();\n    };\n    scrollListeners.set(container, listener2);\n    const target = getEventTarget(container);\n    window.addEventListener(\"resize\", listener2, { passive: true });\n    if (container !== document.documentElement) {\n      resizeListeners.set(container, resize(container, listener2));\n    }\n    target.addEventListener(\"scroll\", listener2, { passive: true });\n  }\n  const listener = scrollListeners.get(container);\n  const onLoadProcesss = requestAnimationFrame(listener);\n  return () => {\n    var _a2;\n    if (typeof onScroll !== \"function\")\n      onScroll.stop();\n    cancelAnimationFrame(onLoadProcesss);\n    const containerHandlers2 = onScrollHandlers.get(container);\n    if (!containerHandlers2)\n      return;\n    containerHandlers2.delete(containerHandler);\n    if (containerHandlers2.size)\n      return;\n    const listener2 = scrollListeners.get(container);\n    scrollListeners.delete(container);\n    if (listener2) {\n      getEventTarget(container).removeEventListener(\"scroll\", listener2);\n      (_a2 = resizeListeners.get(container)) === null || _a2 === void 0 ? void 0 : _a2();\n      window.removeEventListener(\"resize\", listener2);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-scroll.mjs\nimport { useEffect as useEffect17 } from \"react\";\nfunction refWarning(name, ref) {\n  warning(Boolean(!ref || ref.current), `You have defined a ${name} options but the provided ref is not yet hydrated, probably because it's defined higher up the tree. Try calling useScroll() in the same component as the ref, or setting its \\`layoutEffect: false\\` option.`);\n}\nvar createScrollMotionValues = () => ({\n  scrollX: motionValue(0),\n  scrollY: motionValue(0),\n  scrollXProgress: motionValue(0),\n  scrollYProgress: motionValue(0)\n});\nfunction useScroll({ container, target, layoutEffect = true, ...options } = {}) {\n  const values = useConstant(createScrollMotionValues);\n  const useLifecycleEffect = layoutEffect ? useIsomorphicLayoutEffect : useEffect17;\n  useLifecycleEffect(() => {\n    refWarning(\"target\", target);\n    refWarning(\"container\", container);\n    return scroll(({ x, y }) => {\n      values.scrollX.set(x.current);\n      values.scrollXProgress.set(x.progress);\n      values.scrollY.set(y.current);\n      values.scrollYProgress.set(y.progress);\n    }, {\n      ...options,\n      container: (container === null || container === void 0 ? void 0 : container.current) || void 0,\n      target: (target === null || target === void 0 ? void 0 : target.current) || void 0\n    });\n  }, []);\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-element-scroll.mjs\nfunction useElementScroll(ref) {\n  if (false) {\n    warnOnce(false, \"useElementScroll is deprecated. Convert to useScroll({ container: ref }).\");\n  }\n  return useScroll({ container: ref });\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-viewport-scroll.mjs\nfunction useViewportScroll() {\n  if (false) {\n    warnOnce(false, \"useViewportScroll is deprecated. Convert to useScroll().\");\n  }\n  return useScroll();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-animation-frame.mjs\nimport { useRef as useRef14, useContext as useContext16, useEffect as useEffect18 } from \"react\";\nfunction useAnimationFrame(callback) {\n  const initialTimestamp = useRef14(0);\n  const { isStatic } = useContext16(MotionConfigContext);\n  useEffect18(() => {\n    if (isStatic)\n      return;\n    const provideTimeSinceStart = ({ timestamp, delta }) => {\n      if (!initialTimestamp.current)\n        initialTimestamp.current = timestamp;\n      callback(timestamp - initialTimestamp.current, delta);\n    };\n    sync.update(provideTimeSinceStart, true);\n    return () => cancelSync.update(provideTimeSinceStart);\n  }, [callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-time.mjs\nfunction useTime() {\n  const time = useMotionValue(0);\n  useAnimationFrame((t) => time.set(t));\n  return time;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/index.mjs\nvar WillChangeMotionValue = class extends MotionValue {\n  constructor() {\n    super(...arguments);\n    this.members = [];\n    this.transforms = /* @__PURE__ */ new Set();\n  }\n  add(name) {\n    let memberName;\n    if (transformProps.has(name)) {\n      this.transforms.add(name);\n      memberName = \"transform\";\n    } else if (!name.startsWith(\"origin\") && !isCSSVariable(name) && name !== \"willChange\") {\n      memberName = camelToDash(name);\n    }\n    if (memberName) {\n      addUniqueItem(this.members, memberName);\n      this.update();\n    }\n  }\n  remove(name) {\n    if (transformProps.has(name)) {\n      this.transforms.delete(name);\n      if (!this.transforms.size) {\n        removeItem(this.members, \"transform\");\n      }\n    } else {\n      removeItem(this.members, camelToDash(name));\n    }\n    this.update();\n  }\n  update() {\n    this.set(this.members.length ? this.members.join(\", \") : \"auto\");\n  }\n};\nfunction useWillChange() {\n  return useConstant(() => new WillChangeMotionValue(\"auto\"));\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-motion-value-event.mjs\nimport { useInsertionEffect as useInsertionEffect3 } from \"react\";\nfunction useMotionValueEvent(value, event, callback) {\n  useInsertionEffect3(() => value.on(event, callback), [value, event, callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.mjs\nimport { useState as useState4 } from \"react\";\nfunction useReducedMotion() {\n  !hasReducedMotionListener.current && initPrefersReducedMotion();\n  const [shouldReduceMotion] = useState4(prefersReducedMotion.current);\n  if (false) {\n    warnOnce(shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n  }\n  return shouldReduceMotion;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion-config.mjs\nimport { useContext as useContext17 } from \"react\";\nfunction useReducedMotionConfig() {\n  const reducedMotionPreference = useReducedMotion();\n  const { reducedMotion } = useContext17(MotionConfigContext);\n  if (reducedMotion === \"never\") {\n    return false;\n  } else if (reducedMotion === \"always\") {\n    return true;\n  } else {\n    return reducedMotionPreference;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs\nfunction animationControls() {\n  let hasMounted = false;\n  const subscribers = /* @__PURE__ */ new Set();\n  const controls = {\n    subscribe(visualElement) {\n      subscribers.add(visualElement);\n      return () => void subscribers.delete(visualElement);\n    },\n    start(definition, transitionOverride) {\n      invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      const animations2 = [];\n      subscribers.forEach((visualElement) => {\n        animations2.push(animateVisualElement(visualElement, definition, {\n          transitionOverride\n        }));\n      });\n      return Promise.all(animations2);\n    },\n    set(definition) {\n      invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      return subscribers.forEach((visualElement) => {\n        setValues(visualElement, definition);\n      });\n    },\n    stop() {\n      subscribers.forEach((visualElement) => {\n        stopAnimation(visualElement);\n      });\n    },\n    mount() {\n      hasMounted = true;\n      return () => {\n        hasMounted = false;\n        controls.stop();\n      };\n    }\n  };\n  return controls;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs\nfunction useAnimationControls() {\n  const controls = useConstant(animationControls);\n  useIsomorphicLayoutEffect(controls.mount, []);\n  return controls;\n}\nvar useAnimation = useAnimationControls;\n\n// ../../../node_modules/framer-motion/dist/es/utils/wrap.mjs\nvar wrap2 = (min, max, v) => {\n  const rangeSize = max - min;\n  return ((v - min) % rangeSize + rangeSize) % rangeSize + min;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-cycle.mjs\nimport { useRef as useRef15, useState as useState5, useCallback as useCallback5 } from \"react\";\nfunction useCycle(...items) {\n  const index = useRef15(0);\n  const [item, setItem] = useState5(items[index.current]);\n  const runCycle = useCallback5(\n    (next) => {\n      index.current = typeof next !== \"number\" ? wrap2(0, items.length, index.current + 1) : next;\n      setItem(items[index.current]);\n    },\n    [items.length, ...items]\n  );\n  return [item, runCycle];\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-in-view.mjs\nimport { useState as useState6, useEffect as useEffect19 } from \"react\";\nfunction useInView(ref, { root, margin, amount, once = false } = {}) {\n  const [isInView, setInView] = useState6(false);\n  useEffect19(() => {\n    if (!ref.current || once && isInView)\n      return;\n    const onEnter = () => {\n      setInView(true);\n      return once ? void 0 : () => setInView(false);\n    };\n    const options = {\n      root: root && root.current || void 0,\n      margin,\n      amount: amount === \"some\" ? \"any\" : amount\n    };\n    return inView(ref.current, onEnter, options);\n  }, [root, ref, margin, once]);\n  return isInView;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs\nvar DragControls = class {\n  constructor() {\n    this.componentControls = /* @__PURE__ */ new Set();\n  }\n  subscribe(controls) {\n    this.componentControls.add(controls);\n    return () => this.componentControls.delete(controls);\n  }\n  start(event, options) {\n    this.componentControls.forEach((controls) => {\n      controls.start(event.nativeEvent || event, options);\n    });\n  }\n};\nvar createDragControls = () => new DragControls();\nfunction useDragControls() {\n  return useConstant(createDragControls);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-motion-component.mjs\nfunction isMotionComponent(component) {\n  return component !== null && typeof component === \"object\" && motionComponentSymbol in component;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/unwrap-motion-component.mjs\nfunction unwrapMotionComponent(component) {\n  if (isMotionComponent(component)) {\n    return component[motionComponentSymbol];\n  }\n  return void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-instant-layout-transition.mjs\nfunction useInstantLayoutTransition() {\n  return startTransition;\n}\nfunction startTransition(callback) {\n  if (!rootProjectionNode.current)\n    return;\n  rootProjectionNode.current.isUpdating = false;\n  rootProjectionNode.current.blockUpdate();\n  callback && callback();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition.mjs\nimport { useEffect as useEffect20 } from \"react\";\nfunction useInstantTransition() {\n  const [forceUpdate, forcedRenderCount] = useForceUpdate();\n  const startInstantLayoutTransition = useInstantLayoutTransition();\n  useEffect20(() => {\n    sync.postRender(() => sync.postRender(() => instantAnimationState.current = false));\n  }, [forcedRenderCount]);\n  return (callback) => {\n    startInstantLayoutTransition(() => {\n      instantAnimationState.current = true;\n      forceUpdate();\n      callback();\n    });\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-reset-projection.mjs\nimport * as React11 from \"react\";\nfunction useResetProjection() {\n  const reset = React11.useCallback(() => {\n    const root = rootProjectionNode.current;\n    if (!root)\n      return;\n    root.resetTree();\n  }, []);\n  return reset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/start.mjs\nfunction startOptimizedAppearAnimation(element, name, keyframes2, options) {\n  window.MotionAppearAnimations || (window.MotionAppearAnimations = /* @__PURE__ */ new Map());\n  const id4 = element.dataset[optimizedAppearDataId];\n  const animation = animateStyle(element, name, keyframes2, options);\n  if (id4 && animation) {\n    window.MotionAppearAnimations.set(appearStoreId(id4, name), animation);\n  }\n  return animation;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animated-state.mjs\nimport { useState as useState7, useEffect as useEffect21 } from \"react\";\nvar createObject = () => ({});\nvar StateVisualElement = class extends VisualElement {\n  build() {\n  }\n  measureInstanceViewportBox() {\n    return createBox();\n  }\n  resetTransform() {\n  }\n  restoreTransform() {\n  }\n  removeValueFromRenderState() {\n  }\n  renderInstance() {\n  }\n  scrapeMotionValuesFromProps() {\n    return createObject();\n  }\n  getBaseTargetFromProps() {\n    return void 0;\n  }\n  readValueFromInstance(_state, key, options) {\n    return options.initialState[key] || 0;\n  }\n  sortInstanceNodePosition() {\n    return 0;\n  }\n  makeTargetAnimatableFromInstance({ transition, transitionEnd, ...target }) {\n    const origin = getOrigin(target, transition || {}, this);\n    checkTargetForNewValues(this, target, origin);\n    return { transition, transitionEnd, ...target };\n  }\n};\nvar useVisualState = makeUseVisualState({\n  scrapeMotionValuesFromProps: createObject,\n  createRenderState: createObject\n});\nfunction useAnimatedState(initialState) {\n  const [animationState, setAnimationState] = useState7(initialState);\n  const visualState = useVisualState({}, false);\n  const element = useConstant(() => {\n    return new StateVisualElement({ props: {}, visualState }, { initialState });\n  });\n  useEffect21(() => {\n    element.mount({});\n    return () => element.unmount();\n  }, [element]);\n  useEffect21(() => {\n    element.setProps({\n      onUpdate: (v) => {\n        setAnimationState({ ...v });\n      }\n    });\n  }, [setAnimationState, element]);\n  const startAnimation = useConstant(() => (animationDefinition) => {\n    return animateVisualElement(element, animationDefinition);\n  });\n  return [animationState, startAnimation];\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-inverted-scale.mjs\nvar maxScale = 1e5;\nvar invertScale = (scale2) => scale2 > 1e-3 ? 1 / scale2 : maxScale;\nvar hasWarned = false;\nfunction useInvertedScale(scale2) {\n  let parentScaleX = useMotionValue(1);\n  let parentScaleY = useMotionValue(1);\n  const visualElement = useVisualElementContext();\n  invariant(!!(scale2 || visualElement), \"If no scale values are provided, useInvertedScale must be used within a child of another motion component.\");\n  warning(hasWarned, \"useInvertedScale is deprecated and will be removed in 3.0. Use the layout prop instead.\");\n  hasWarned = true;\n  if (scale2) {\n    parentScaleX = scale2.scaleX || parentScaleX;\n    parentScaleY = scale2.scaleY || parentScaleY;\n  } else if (visualElement) {\n    parentScaleX = visualElement.getValue(\"scaleX\", 1);\n    parentScaleY = visualElement.getValue(\"scaleY\", 1);\n  }\n  const scaleX = useTransform(parentScaleX, invertScale);\n  const scaleY = useTransform(parentScaleY, invertScale);\n  return { scaleX, scaleY };\n}\n\nexport {\n  __commonJS,\n  __toESM,\n  __privateGet,\n  __privateAdd,\n  __privateSet,\n  MotionConfigContext,\n  MotionContext,\n  useVisualElementContext,\n  PresenceContext,\n  isBrowser,\n  useIsomorphicLayoutEffect,\n  LayoutGroupContext,\n  SwitchLayoutGroupContext,\n  createMotionComponent,\n  addScaleCorrector,\n  isMotionValue,\n  buildTransform,\n  clamp,\n  isValidMotionProp,\n  filterProps,\n  resolveMotionValue,\n  makeUseVisualState,\n  AnimationType,\n  useDomEvent,\n  addPointerInfo,\n  addPointerEvent,\n  isDragActive,\n  useUnmountEffect,\n  pipe,\n  usePresence,\n  useIsPresent,\n  frameData,\n  sync,\n  MotionValue,\n  motionValue,\n  checkTargetForNewValues,\n  optimizedAppearDataAttribute,\n  warning,\n  invariant,\n  easeIn,\n  easeOut,\n  easeInOut,\n  mix,\n  cubicBezier,\n  circIn,\n  circOut,\n  circInOut,\n  backOut,\n  backIn,\n  backInOut,\n  anticipate,\n  spring,\n  delay,\n  animateVisualElement,\n  animations,\n  distance,\n  distance2D,\n  calcLength,\n  createBox,\n  VisualElement,\n  animate2 as animate,\n  FlatTree,\n  motion,\n  createDomMotionComponent,\n  m,\n  useForceUpdate,\n  AnimatePresence,\n  DeprecatedLayoutGroupContext,\n  LayoutGroup,\n  AnimateSharedLayout,\n  MotionConfig,\n  LazyMotion,\n  useMotionValue,\n  transform,\n  useTransform,\n  Reorder,\n  domAnimation,\n  domMax,\n  useMotionTemplate,\n  useSpring,\n  useVelocity,\n  scroll,\n  useScroll,\n  useElementScroll,\n  useViewportScroll,\n  useAnimationFrame,\n  useTime,\n  useWillChange,\n  useMotionValueEvent,\n  useReducedMotion,\n  useReducedMotionConfig,\n  animationControls,\n  useAnimationControls,\n  useAnimation,\n  wrap2 as wrap,\n  useCycle,\n  useInView,\n  DragControls,\n  useDragControls,\n  isMotionComponent,\n  unwrapMotionComponent,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useResetProjection,\n  startOptimizedAppearAnimation,\n  useAnimatedState,\n  useInvertedScale\n};\n//# sourceMappingURL=chunk-VQMNPCBY.js.map\n", "import {\n  AnimatePresence,\n  AnimationType,\n  DeprecatedLayoutGroupContext,\n  DragControls,\n  FlatTree,\n  LayoutGroup,\n  LazyMotion,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionValue,\n  PresenceContext,\n  Reorder,\n  SwitchLayoutGroupContext,\n  VisualElement,\n  __commonJS,\n  __privateAdd,\n  __privateGet,\n  __privateSet,\n  __toESM,\n  addPointerEvent,\n  addPointerInfo,\n  addScaleCorrector,\n  animate,\n  animateVisualElement,\n  animationControls,\n  animations,\n  anticipate,\n  backIn,\n  backInOut,\n  backOut,\n  buildTransform,\n  calcLength,\n  checkTargetForNewValues,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  createBox,\n  createDomMotionComponent,\n  createMotionComponent,\n  cubicBezier,\n  delay,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  easeIn,\n  easeInOut,\n  easeOut,\n  filterProps,\n  frameData,\n  invariant,\n  isBrowser,\n  isDragActive,\n  isMotionComponent,\n  isMotionValue,\n  isValidMotionProp,\n  m,\n  makeUseVisualState,\n  mix,\n  motion,\n  motionValue,\n  optimizedAppearDataAttribute,\n  pipe,\n  resolveMotionValue,\n  scroll,\n  spring,\n  startOptimizedAppearAnimation,\n  sync,\n  transform,\n  unwrapMotionComponent,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useCycle,\n  useDomEvent,\n  useDragControls,\n  useElementScroll,\n  useForceUpdate,\n  useInView,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsPresent,\n  useIsomorphicLayoutEffect,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  usePresence,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useResetProjection,\n  useScroll,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVelocity,\n  useViewportScroll,\n  useVisualElementContext,\n  useWillChange,\n  warning,\n  wrap\n} from \"./chunk-VQMNPCBY.js\";\n\n// ../../../node_modules/hsluv/hsluv.js\nvar require_hsluv = __commonJS({\n  \"../../../node_modules/hsluv/hsluv.js\"(exports, module) {\n    var hsluv = hsluv || {};\n    hsluv.Geometry = function() {\n    };\n    hsluv.Geometry.intersectLineLine = function(a, b) {\n      var x = (a.intercept - b.intercept) / (b.slope - a.slope);\n      var y = a.slope * x + a.intercept;\n      return { x, y };\n    };\n    hsluv.Geometry.distanceFromOrigin = function(point) {\n      return Math.sqrt(Math.pow(point.x, 2) + Math.pow(point.y, 2));\n    };\n    hsluv.Geometry.distanceLineFromOrigin = function(line) {\n      return Math.abs(line.intercept) / Math.sqrt(Math.pow(line.slope, 2) + 1);\n    };\n    hsluv.Geometry.perpendicularThroughPoint = function(line, point) {\n      var slope = -1 / line.slope;\n      var intercept = point.y - slope * point.x;\n      return { slope, intercept };\n    };\n    hsluv.Geometry.angleFromOrigin = function(point) {\n      return Math.atan2(point.y, point.x);\n    };\n    hsluv.Geometry.normalizeAngle = function(angle) {\n      var m2 = 2 * Math.PI;\n      return (angle % m2 + m2) % m2;\n    };\n    hsluv.Geometry.lengthOfRayUntilIntersect = function(theta, line) {\n      return line.intercept / (Math.sin(theta) - line.slope * Math.cos(theta));\n    };\n    hsluv.Hsluv = function() {\n    };\n    hsluv.Hsluv.getBounds = function(L) {\n      var result = [];\n      var sub1 = Math.pow(L + 16, 3) / 1560896;\n      var sub2 = sub1 > hsluv.Hsluv.epsilon ? sub1 : L / hsluv.Hsluv.kappa;\n      var _g = 0;\n      while (_g < 3) {\n        var c = _g++;\n        var m1 = hsluv.Hsluv.m[c][0];\n        var m2 = hsluv.Hsluv.m[c][1];\n        var m3 = hsluv.Hsluv.m[c][2];\n        var _g1 = 0;\n        while (_g1 < 2) {\n          var t = _g1++;\n          var top1 = (284517 * m1 - 94839 * m3) * sub2;\n          var top2 = (838422 * m3 + 769860 * m2 + 731718 * m1) * L * sub2 - 769860 * t * L;\n          var bottom = (632260 * m3 - 126452 * m2) * sub2 + 126452 * t;\n          result.push({ slope: top1 / bottom, intercept: top2 / bottom });\n        }\n      }\n      return result;\n    };\n    hsluv.Hsluv.maxSafeChromaForL = function(L) {\n      var bounds = hsluv.Hsluv.getBounds(L);\n      var min = Infinity;\n      var _g = 0;\n      while (_g < bounds.length) {\n        var bound = bounds[_g];\n        ++_g;\n        var length = hsluv.Geometry.distanceLineFromOrigin(bound);\n        min = Math.min(min, length);\n      }\n      return min;\n    };\n    hsluv.Hsluv.maxChromaForLH = function(L, H) {\n      var hrad = H / 360 * Math.PI * 2;\n      var bounds = hsluv.Hsluv.getBounds(L);\n      var min = Infinity;\n      var _g = 0;\n      while (_g < bounds.length) {\n        var bound = bounds[_g];\n        ++_g;\n        var length = hsluv.Geometry.lengthOfRayUntilIntersect(hrad, bound);\n        if (length >= 0) {\n          min = Math.min(min, length);\n        }\n      }\n      return min;\n    };\n    hsluv.Hsluv.dotProduct = function(a, b) {\n      var sum = 0;\n      var _g1 = 0;\n      var _g = a.length;\n      while (_g1 < _g) {\n        var i = _g1++;\n        sum += a[i] * b[i];\n      }\n      return sum;\n    };\n    hsluv.Hsluv.fromLinear = function(c) {\n      if (c <= 31308e-7) {\n        return 12.92 * c;\n      } else {\n        return 1.055 * Math.pow(c, 0.4166666666666667) - 0.055;\n      }\n    };\n    hsluv.Hsluv.toLinear = function(c) {\n      if (c > 0.04045) {\n        return Math.pow((c + 0.055) / 1.055, 2.4);\n      } else {\n        return c / 12.92;\n      }\n    };\n    hsluv.Hsluv.xyzToRgb = function(tuple) {\n      return [hsluv.Hsluv.fromLinear(hsluv.Hsluv.dotProduct(hsluv.Hsluv.m[0], tuple)), hsluv.Hsluv.fromLinear(hsluv.Hsluv.dotProduct(hsluv.Hsluv.m[1], tuple)), hsluv.Hsluv.fromLinear(hsluv.Hsluv.dotProduct(hsluv.Hsluv.m[2], tuple))];\n    };\n    hsluv.Hsluv.rgbToXyz = function(tuple) {\n      var rgbl = [hsluv.Hsluv.toLinear(tuple[0]), hsluv.Hsluv.toLinear(tuple[1]), hsluv.Hsluv.toLinear(tuple[2])];\n      return [hsluv.Hsluv.dotProduct(hsluv.Hsluv.minv[0], rgbl), hsluv.Hsluv.dotProduct(hsluv.Hsluv.minv[1], rgbl), hsluv.Hsluv.dotProduct(hsluv.Hsluv.minv[2], rgbl)];\n    };\n    hsluv.Hsluv.yToL = function(Y) {\n      if (Y <= hsluv.Hsluv.epsilon) {\n        return Y / hsluv.Hsluv.refY * hsluv.Hsluv.kappa;\n      } else {\n        return 116 * Math.pow(Y / hsluv.Hsluv.refY, 0.3333333333333333) - 16;\n      }\n    };\n    hsluv.Hsluv.lToY = function(L) {\n      if (L <= 8) {\n        return hsluv.Hsluv.refY * L / hsluv.Hsluv.kappa;\n      } else {\n        return hsluv.Hsluv.refY * Math.pow((L + 16) / 116, 3);\n      }\n    };\n    hsluv.Hsluv.xyzToLuv = function(tuple) {\n      var X = tuple[0];\n      var Y = tuple[1];\n      var Z = tuple[2];\n      var divider = X + 15 * Y + 3 * Z;\n      var varU = 4 * X;\n      var varV = 9 * Y;\n      if (divider != 0) {\n        varU /= divider;\n        varV /= divider;\n      } else {\n        varU = NaN;\n        varV = NaN;\n      }\n      var L = hsluv.Hsluv.yToL(Y);\n      if (L == 0) {\n        return [0, 0, 0];\n      }\n      var U = 13 * L * (varU - hsluv.Hsluv.refU);\n      var V = 13 * L * (varV - hsluv.Hsluv.refV);\n      return [L, U, V];\n    };\n    hsluv.Hsluv.luvToXyz = function(tuple) {\n      var L = tuple[0];\n      var U = tuple[1];\n      var V = tuple[2];\n      if (L == 0) {\n        return [0, 0, 0];\n      }\n      var varU = U / (13 * L) + hsluv.Hsluv.refU;\n      var varV = V / (13 * L) + hsluv.Hsluv.refV;\n      var Y = hsluv.Hsluv.lToY(L);\n      var X = 0 - 9 * Y * varU / ((varU - 4) * varV - varU * varV);\n      var Z = (9 * Y - 15 * varV * Y - varV * X) / (3 * varV);\n      return [X, Y, Z];\n    };\n    hsluv.Hsluv.luvToLch = function(tuple) {\n      var L = tuple[0];\n      var U = tuple[1];\n      var V = tuple[2];\n      var C = Math.sqrt(U * U + V * V);\n      var H;\n      if (C < 1e-8) {\n        H = 0;\n      } else {\n        var Hrad = Math.atan2(V, U);\n        H = Hrad * 180 / Math.PI;\n        if (H < 0) {\n          H = 360 + H;\n        }\n      }\n      return [L, C, H];\n    };\n    hsluv.Hsluv.lchToLuv = function(tuple) {\n      var L = tuple[0];\n      var C = tuple[1];\n      var H = tuple[2];\n      var Hrad = H / 360 * 2 * Math.PI;\n      var U = Math.cos(Hrad) * C;\n      var V = Math.sin(Hrad) * C;\n      return [L, U, V];\n    };\n    hsluv.Hsluv.hsluvToLch = function(tuple) {\n      var H = tuple[0];\n      var S = tuple[1];\n      var L = tuple[2];\n      if (L > 99.9999999) {\n        return [100, 0, H];\n      }\n      if (L < 1e-8) {\n        return [0, 0, H];\n      }\n      var max = hsluv.Hsluv.maxChromaForLH(L, H);\n      var C = max / 100 * S;\n      return [L, C, H];\n    };\n    hsluv.Hsluv.lchToHsluv = function(tuple) {\n      var L = tuple[0];\n      var C = tuple[1];\n      var H = tuple[2];\n      if (L > 99.9999999) {\n        return [H, 0, 100];\n      }\n      if (L < 1e-8) {\n        return [H, 0, 0];\n      }\n      var max = hsluv.Hsluv.maxChromaForLH(L, H);\n      var S = C / max * 100;\n      return [H, S, L];\n    };\n    hsluv.Hsluv.hpluvToLch = function(tuple) {\n      var H = tuple[0];\n      var S = tuple[1];\n      var L = tuple[2];\n      if (L > 99.9999999) {\n        return [100, 0, H];\n      }\n      if (L < 1e-8) {\n        return [0, 0, H];\n      }\n      var max = hsluv.Hsluv.maxSafeChromaForL(L);\n      var C = max / 100 * S;\n      return [L, C, H];\n    };\n    hsluv.Hsluv.lchToHpluv = function(tuple) {\n      var L = tuple[0];\n      var C = tuple[1];\n      var H = tuple[2];\n      if (L > 99.9999999) {\n        return [H, 0, 100];\n      }\n      if (L < 1e-8) {\n        return [H, 0, 0];\n      }\n      var max = hsluv.Hsluv.maxSafeChromaForL(L);\n      var S = C / max * 100;\n      return [H, S, L];\n    };\n    hsluv.Hsluv.rgbToHex = function(tuple) {\n      var h = \"#\";\n      var _g = 0;\n      while (_g < 3) {\n        var i = _g++;\n        var chan = tuple[i];\n        var c = Math.round(chan * 255);\n        var digit2 = c % 16;\n        var digit1 = (c - digit2) / 16 | 0;\n        h += hsluv.Hsluv.hexChars.charAt(digit1) + hsluv.Hsluv.hexChars.charAt(digit2);\n      }\n      return h;\n    };\n    hsluv.Hsluv.hexToRgb = function(hex2) {\n      hex2 = hex2.toLowerCase();\n      var ret = [];\n      var _g = 0;\n      while (_g < 3) {\n        var i = _g++;\n        var digit1 = hsluv.Hsluv.hexChars.indexOf(hex2.charAt(i * 2 + 1));\n        var digit2 = hsluv.Hsluv.hexChars.indexOf(hex2.charAt(i * 2 + 2));\n        var n = digit1 * 16 + digit2;\n        ret.push(n / 255);\n      }\n      return ret;\n    };\n    hsluv.Hsluv.lchToRgb = function(tuple) {\n      return hsluv.Hsluv.xyzToRgb(hsluv.Hsluv.luvToXyz(hsluv.Hsluv.lchToLuv(tuple)));\n    };\n    hsluv.Hsluv.rgbToLch = function(tuple) {\n      return hsluv.Hsluv.luvToLch(hsluv.Hsluv.xyzToLuv(hsluv.Hsluv.rgbToXyz(tuple)));\n    };\n    hsluv.Hsluv.hsluvToRgb = function(tuple) {\n      return hsluv.Hsluv.lchToRgb(hsluv.Hsluv.hsluvToLch(tuple));\n    };\n    hsluv.Hsluv.rgbToHsluv = function(tuple) {\n      return hsluv.Hsluv.lchToHsluv(hsluv.Hsluv.rgbToLch(tuple));\n    };\n    hsluv.Hsluv.hpluvToRgb = function(tuple) {\n      return hsluv.Hsluv.lchToRgb(hsluv.Hsluv.hpluvToLch(tuple));\n    };\n    hsluv.Hsluv.rgbToHpluv = function(tuple) {\n      return hsluv.Hsluv.lchToHpluv(hsluv.Hsluv.rgbToLch(tuple));\n    };\n    hsluv.Hsluv.hsluvToHex = function(tuple) {\n      return hsluv.Hsluv.rgbToHex(hsluv.Hsluv.hsluvToRgb(tuple));\n    };\n    hsluv.Hsluv.hpluvToHex = function(tuple) {\n      return hsluv.Hsluv.rgbToHex(hsluv.Hsluv.hpluvToRgb(tuple));\n    };\n    hsluv.Hsluv.hexToHsluv = function(s) {\n      return hsluv.Hsluv.rgbToHsluv(hsluv.Hsluv.hexToRgb(s));\n    };\n    hsluv.Hsluv.hexToHpluv = function(s) {\n      return hsluv.Hsluv.rgbToHpluv(hsluv.Hsluv.hexToRgb(s));\n    };\n    hsluv.Hsluv.m = [[3.240969941904521, -1.537383177570093, -0.498610760293], [-0.96924363628087, 1.87596750150772, 0.041555057407175], [0.055630079696993, -0.20397695888897, 1.056971514242878]];\n    hsluv.Hsluv.minv = [[0.41239079926595, 0.35758433938387, 0.18048078840183], [0.21263900587151, 0.71516867876775, 0.072192315360733], [0.019330818715591, 0.11919477979462, 0.95053215224966]];\n    hsluv.Hsluv.refY = 1;\n    hsluv.Hsluv.refU = 0.19783000664283;\n    hsluv.Hsluv.refV = 0.46831999493879;\n    hsluv.Hsluv.kappa = 903.2962962;\n    hsluv.Hsluv.epsilon = 0.0088564516;\n    hsluv.Hsluv.hexChars = \"0123456789abcdef\";\n    var root = {\n      \"hsluvToRgb\": hsluv.Hsluv.hsluvToRgb,\n      \"rgbToHsluv\": hsluv.Hsluv.rgbToHsluv,\n      \"hpluvToRgb\": hsluv.Hsluv.hpluvToRgb,\n      \"rgbToHpluv\": hsluv.Hsluv.rgbToHpluv,\n      \"hsluvToHex\": hsluv.Hsluv.hsluvToHex,\n      \"hexToHsluv\": hsluv.Hsluv.hexToHsluv,\n      \"hpluvToHex\": hsluv.Hsluv.hpluvToHex,\n      \"hexToHpluv\": hsluv.Hsluv.hexToHpluv,\n      \"lchToHpluv\": hsluv.Hsluv.lchToHpluv,\n      \"hpluvToLch\": hsluv.Hsluv.hpluvToLch,\n      \"lchToHsluv\": hsluv.Hsluv.lchToHsluv,\n      \"hsluvToLch\": hsluv.Hsluv.hsluvToLch,\n      \"lchToLuv\": hsluv.Hsluv.lchToLuv,\n      \"luvToLch\": hsluv.Hsluv.luvToLch,\n      \"xyzToLuv\": hsluv.Hsluv.xyzToLuv,\n      \"luvToXyz\": hsluv.Hsluv.luvToXyz,\n      \"xyzToRgb\": hsluv.Hsluv.xyzToRgb,\n      \"rgbToXyz\": hsluv.Hsluv.rgbToXyz,\n      \"lchToRgb\": hsluv.Hsluv.lchToRgb,\n      \"rgbToLch\": hsluv.Hsluv.rgbToLch\n    };\n    module.exports = root;\n  }\n});\n\n// ../../../node_modules/eventemitter3/index.js\nvar require_eventemitter3 = __commonJS({\n  \"../../../node_modules/eventemitter3/index.js\"(exports, module) {\n    \"use strict\";\n    var has = Object.prototype.hasOwnProperty;\n    var prefix2 = \"~\";\n    function Events() {\n    }\n    if (Object.create) {\n      Events.prototype = /* @__PURE__ */ Object.create(null);\n      if (!new Events().__proto__)\n        prefix2 = false;\n    }\n    function EE(fn, context, once) {\n      this.fn = fn;\n      this.context = context;\n      this.once = once || false;\n    }\n    function addListener(emitter, event, fn, context, once) {\n      if (typeof fn !== \"function\") {\n        throw new TypeError(\"The listener must be a function\");\n      }\n      var listener = new EE(fn, context || emitter, once), evt = prefix2 ? prefix2 + event : event;\n      if (!emitter._events[evt])\n        emitter._events[evt] = listener, emitter._eventsCount++;\n      else if (!emitter._events[evt].fn)\n        emitter._events[evt].push(listener);\n      else\n        emitter._events[evt] = [emitter._events[evt], listener];\n      return emitter;\n    }\n    function clearEvent(emitter, evt) {\n      if (--emitter._eventsCount === 0)\n        emitter._events = new Events();\n      else\n        delete emitter._events[evt];\n    }\n    function EventEmitter2() {\n      this._events = new Events();\n      this._eventsCount = 0;\n    }\n    EventEmitter2.prototype.eventNames = function eventNames() {\n      var names = [], events2, name;\n      if (this._eventsCount === 0)\n        return names;\n      for (name in events2 = this._events) {\n        if (has.call(events2, name))\n          names.push(prefix2 ? name.slice(1) : name);\n      }\n      if (Object.getOwnPropertySymbols) {\n        return names.concat(Object.getOwnPropertySymbols(events2));\n      }\n      return names;\n    };\n    EventEmitter2.prototype.listeners = function listeners(event) {\n      var evt = prefix2 ? prefix2 + event : event, handlers = this._events[evt];\n      if (!handlers)\n        return [];\n      if (handlers.fn)\n        return [handlers.fn];\n      for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n        ee[i] = handlers[i].fn;\n      }\n      return ee;\n    };\n    EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n      var evt = prefix2 ? prefix2 + event : event, listeners = this._events[evt];\n      if (!listeners)\n        return 0;\n      if (listeners.fn)\n        return 1;\n      return listeners.length;\n    };\n    EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt])\n        return false;\n      var listeners = this._events[evt], len = arguments.length, args, i;\n      if (listeners.fn) {\n        if (listeners.once)\n          this.removeListener(event, listeners.fn, void 0, true);\n        switch (len) {\n          case 1:\n            return listeners.fn.call(listeners.context), true;\n          case 2:\n            return listeners.fn.call(listeners.context, a1), true;\n          case 3:\n            return listeners.fn.call(listeners.context, a1, a2), true;\n          case 4:\n            return listeners.fn.call(listeners.context, a1, a2, a3), true;\n          case 5:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n          case 6:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n        }\n        for (i = 1, args = new Array(len - 1); i < len; i++) {\n          args[i - 1] = arguments[i];\n        }\n        listeners.fn.apply(listeners.context, args);\n      } else {\n        var length = listeners.length, j;\n        for (i = 0; i < length; i++) {\n          if (listeners[i].once)\n            this.removeListener(event, listeners[i].fn, void 0, true);\n          switch (len) {\n            case 1:\n              listeners[i].fn.call(listeners[i].context);\n              break;\n            case 2:\n              listeners[i].fn.call(listeners[i].context, a1);\n              break;\n            case 3:\n              listeners[i].fn.call(listeners[i].context, a1, a2);\n              break;\n            case 4:\n              listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n              break;\n            default:\n              if (!args)\n                for (j = 1, args = new Array(len - 1); j < len; j++) {\n                  args[j - 1] = arguments[j];\n                }\n              listeners[i].fn.apply(listeners[i].context, args);\n          }\n        }\n      }\n      return true;\n    };\n    EventEmitter2.prototype.on = function on(event, fn, context) {\n      return addListener(this, event, fn, context, false);\n    };\n    EventEmitter2.prototype.once = function once(event, fn, context) {\n      return addListener(this, event, fn, context, true);\n    };\n    EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt])\n        return this;\n      if (!fn) {\n        clearEvent(this, evt);\n        return this;\n      }\n      var listeners = this._events[evt];\n      if (listeners.fn) {\n        if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n          clearEvent(this, evt);\n        }\n      } else {\n        for (var i = 0, events2 = [], length = listeners.length; i < length; i++) {\n          if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n            events2.push(listeners[i]);\n          }\n        }\n        if (events2.length)\n          this._events[evt] = events2.length === 1 ? events2[0] : events2;\n        else\n          clearEvent(this, evt);\n      }\n      return this;\n    };\n    EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n      var evt;\n      if (event) {\n        evt = prefix2 ? prefix2 + event : event;\n        if (this._events[evt])\n          clearEvent(this, evt);\n      } else {\n        this._events = new Events();\n        this._eventsCount = 0;\n      }\n      return this;\n    };\n    EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n    EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n    EventEmitter2.prefixed = prefix2;\n    EventEmitter2.EventEmitter = EventEmitter2;\n    if (\"undefined\" !== typeof module) {\n      module.exports = EventEmitter2;\n    }\n  }\n});\n\n// ../../../node_modules/process/browser.js\nvar require_browser = __commonJS({\n  \"../../../node_modules/process/browser.js\"(exports, module) {\n    var process13 = module.exports = {};\n    var cachedSetTimeout;\n    var cachedClearTimeout;\n    function defaultSetTimout() {\n      throw new Error(\"setTimeout has not been defined\");\n    }\n    function defaultClearTimeout() {\n      throw new Error(\"clearTimeout has not been defined\");\n    }\n    (function() {\n      try {\n        if (typeof setTimeout === \"function\") {\n          cachedSetTimeout = setTimeout;\n        } else {\n          cachedSetTimeout = defaultSetTimout;\n        }\n      } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n      }\n      try {\n        if (typeof clearTimeout === \"function\") {\n          cachedClearTimeout = clearTimeout;\n        } else {\n          cachedClearTimeout = defaultClearTimeout;\n        }\n      } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n      }\n    })();\n    function runTimeout(fun) {\n      if (cachedSetTimeout === setTimeout) {\n        return setTimeout(fun, 0);\n      }\n      if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n      }\n      try {\n        return cachedSetTimeout(fun, 0);\n      } catch (e) {\n        try {\n          return cachedSetTimeout.call(null, fun, 0);\n        } catch (e2) {\n          return cachedSetTimeout.call(this, fun, 0);\n        }\n      }\n    }\n    function runClearTimeout(marker) {\n      if (cachedClearTimeout === clearTimeout) {\n        return clearTimeout(marker);\n      }\n      if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n      }\n      try {\n        return cachedClearTimeout(marker);\n      } catch (e) {\n        try {\n          return cachedClearTimeout.call(null, marker);\n        } catch (e2) {\n          return cachedClearTimeout.call(this, marker);\n        }\n      }\n    }\n    var queue = [];\n    var draining = false;\n    var currentQueue;\n    var queueIndex = -1;\n    function cleanUpNextTick() {\n      if (!draining || !currentQueue) {\n        return;\n      }\n      draining = false;\n      if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n      } else {\n        queueIndex = -1;\n      }\n      if (queue.length) {\n        drainQueue();\n      }\n    }\n    function drainQueue() {\n      if (draining) {\n        return;\n      }\n      var timeout = runTimeout(cleanUpNextTick);\n      draining = true;\n      var len = queue.length;\n      while (len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n          if (currentQueue) {\n            currentQueue[queueIndex].run();\n          }\n        }\n        queueIndex = -1;\n        len = queue.length;\n      }\n      currentQueue = null;\n      draining = false;\n      runClearTimeout(timeout);\n    }\n    process13.nextTick = function(fun) {\n      var args = new Array(arguments.length - 1);\n      if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n          args[i - 1] = arguments[i];\n        }\n      }\n      queue.push(new Item(fun, args));\n      if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n      }\n    };\n    function Item(fun, array) {\n      this.fun = fun;\n      this.array = array;\n    }\n    Item.prototype.run = function() {\n      this.fun.apply(null, this.array);\n    };\n    process13.title = \"browser\";\n    process13.browser = true;\n    process13.env = {};\n    process13.argv = [];\n    process13.version = \"\";\n    process13.versions = {};\n    function noop() {\n    }\n    process13.on = noop;\n    process13.addListener = noop;\n    process13.once = noop;\n    process13.off = noop;\n    process13.removeListener = noop;\n    process13.removeAllListeners = noop;\n    process13.emit = noop;\n    process13.prependListener = noop;\n    process13.prependOnceListener = noop;\n    process13.listeners = function(name) {\n      return [];\n    };\n    process13.binding = function(name) {\n      throw new Error(\"process.binding is not supported\");\n    };\n    process13.cwd = function() {\n      return \"/\";\n    };\n    process13.chdir = function(dir) {\n      throw new Error(\"process.chdir is not supported\");\n    };\n    process13.umask = function() {\n      return 0;\n    };\n  }\n});\n\n// ../../../node_modules/react-is/cjs/react-is.production.min.js\nvar require_react_is_production_min = __commonJS({\n  \"../../../node_modules/react-is/cjs/react-is.production.min.js\"(exports) {\n    \"use strict\";\n    var b = \"function\" === typeof Symbol && Symbol.for;\n    var c = b ? Symbol.for(\"react.element\") : 60103;\n    var d = b ? Symbol.for(\"react.portal\") : 60106;\n    var e = b ? Symbol.for(\"react.fragment\") : 60107;\n    var f = b ? Symbol.for(\"react.strict_mode\") : 60108;\n    var g = b ? Symbol.for(\"react.profiler\") : 60114;\n    var h = b ? Symbol.for(\"react.provider\") : 60109;\n    var k = b ? Symbol.for(\"react.context\") : 60110;\n    var l = b ? Symbol.for(\"react.async_mode\") : 60111;\n    var m2 = b ? Symbol.for(\"react.concurrent_mode\") : 60111;\n    var n = b ? Symbol.for(\"react.forward_ref\") : 60112;\n    var p = b ? Symbol.for(\"react.suspense\") : 60113;\n    var q = b ? Symbol.for(\"react.suspense_list\") : 60120;\n    var r = b ? Symbol.for(\"react.memo\") : 60115;\n    var t = b ? Symbol.for(\"react.lazy\") : 60116;\n    var v = b ? Symbol.for(\"react.block\") : 60121;\n    var w = b ? Symbol.for(\"react.fundamental\") : 60117;\n    var x = b ? Symbol.for(\"react.responder\") : 60118;\n    var y = b ? Symbol.for(\"react.scope\") : 60119;\n    function z(a) {\n      if (\"object\" === typeof a && null !== a) {\n        var u = a.$$typeof;\n        switch (u) {\n          case c:\n            switch (a = a.type, a) {\n              case l:\n              case m2:\n              case e:\n              case g:\n              case f:\n              case p:\n                return a;\n              default:\n                switch (a = a && a.$$typeof, a) {\n                  case k:\n                  case n:\n                  case t:\n                  case r:\n                  case h:\n                    return a;\n                  default:\n                    return u;\n                }\n            }\n          case d:\n            return u;\n        }\n      }\n    }\n    function A(a) {\n      return z(a) === m2;\n    }\n    exports.AsyncMode = l;\n    exports.ConcurrentMode = m2;\n    exports.ContextConsumer = k;\n    exports.ContextProvider = h;\n    exports.Element = c;\n    exports.ForwardRef = n;\n    exports.Fragment = e;\n    exports.Lazy = t;\n    exports.Memo = r;\n    exports.Portal = d;\n    exports.Profiler = g;\n    exports.StrictMode = f;\n    exports.Suspense = p;\n    exports.isAsyncMode = function(a) {\n      return A(a) || z(a) === l;\n    };\n    exports.isConcurrentMode = A;\n    exports.isContextConsumer = function(a) {\n      return z(a) === k;\n    };\n    exports.isContextProvider = function(a) {\n      return z(a) === h;\n    };\n    exports.isElement = function(a) {\n      return \"object\" === typeof a && null !== a && a.$$typeof === c;\n    };\n    exports.isForwardRef = function(a) {\n      return z(a) === n;\n    };\n    exports.isFragment = function(a) {\n      return z(a) === e;\n    };\n    exports.isLazy = function(a) {\n      return z(a) === t;\n    };\n    exports.isMemo = function(a) {\n      return z(a) === r;\n    };\n    exports.isPortal = function(a) {\n      return z(a) === d;\n    };\n    exports.isProfiler = function(a) {\n      return z(a) === g;\n    };\n    exports.isStrictMode = function(a) {\n      return z(a) === f;\n    };\n    exports.isSuspense = function(a) {\n      return z(a) === p;\n    };\n    exports.isValidElementType = function(a) {\n      return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m2 || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n    };\n    exports.typeOf = z;\n  }\n});\n\n// ../../../node_modules/react-is/index.js\nvar require_react_is = __commonJS({\n  \"../../../node_modules/react-is/index.js\"(exports, module) {\n    \"use strict\";\n    if (true) {\n      module.exports = require_react_is_production_min();\n    } else {\n      module.exports = null;\n    }\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\nvar require_hoist_non_react_statics_cjs = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\"(exports, module) {\n    \"use strict\";\n    var reactIs = require_react_is();\n    var REACT_STATICS = {\n      childContextTypes: true,\n      contextType: true,\n      contextTypes: true,\n      defaultProps: true,\n      displayName: true,\n      getDefaultProps: true,\n      getDerivedStateFromError: true,\n      getDerivedStateFromProps: true,\n      mixins: true,\n      propTypes: true,\n      type: true\n    };\n    var KNOWN_STATICS = {\n      name: true,\n      length: true,\n      prototype: true,\n      caller: true,\n      callee: true,\n      arguments: true,\n      arity: true\n    };\n    var FORWARD_REF_STATICS = {\n      \"$$typeof\": true,\n      render: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true\n    };\n    var MEMO_STATICS = {\n      \"$$typeof\": true,\n      compare: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true,\n      type: true\n    };\n    var TYPE_STATICS = {};\n    TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n    TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n    function getStatics(component) {\n      if (reactIs.isMemo(component)) {\n        return MEMO_STATICS;\n      }\n      return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n    }\n    var defineProperty = Object.defineProperty;\n    var getOwnPropertyNames = Object.getOwnPropertyNames;\n    var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n    var getPrototypeOf = Object.getPrototypeOf;\n    var objectPrototype = Object.prototype;\n    function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n      if (typeof sourceComponent !== \"string\") {\n        if (objectPrototype) {\n          var inheritedComponent = getPrototypeOf(sourceComponent);\n          if (inheritedComponent && inheritedComponent !== objectPrototype) {\n            hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n          }\n        }\n        var keys3 = getOwnPropertyNames(sourceComponent);\n        if (getOwnPropertySymbols) {\n          keys3 = keys3.concat(getOwnPropertySymbols(sourceComponent));\n        }\n        var targetStatics = getStatics(targetComponent);\n        var sourceStatics = getStatics(sourceComponent);\n        for (var i = 0; i < keys3.length; ++i) {\n          var key7 = keys3[i];\n          if (!KNOWN_STATICS[key7] && !(blacklist && blacklist[key7]) && !(sourceStatics && sourceStatics[key7]) && !(targetStatics && targetStatics[key7])) {\n            var descriptor = getOwnPropertyDescriptor(sourceComponent, key7);\n            try {\n              defineProperty(targetComponent, key7, descriptor);\n            } catch (e) {\n            }\n          }\n        }\n      }\n      return targetComponent;\n    }\n    module.exports = hoistNonReactStatics;\n  }\n});\n\n// ../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\nvar require_fontfaceobserver_standalone = __commonJS({\n  \"../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\"(exports, module) {\n    (function() {\n      function l(a, b) {\n        document.addEventListener ? a.addEventListener(\"scroll\", b, false) : a.attachEvent(\"scroll\", b);\n      }\n      function m2(a) {\n        document.body ? a() : document.addEventListener ? document.addEventListener(\"DOMContentLoaded\", function c() {\n          document.removeEventListener(\"DOMContentLoaded\", c);\n          a();\n        }) : document.attachEvent(\"onreadystatechange\", function k() {\n          if (\"interactive\" == document.readyState || \"complete\" == document.readyState)\n            document.detachEvent(\"onreadystatechange\", k), a();\n        });\n      }\n      ;\n      function t(a) {\n        this.a = document.createElement(\"div\");\n        this.a.setAttribute(\"aria-hidden\", \"true\");\n        this.a.appendChild(document.createTextNode(a));\n        this.b = document.createElement(\"span\");\n        this.c = document.createElement(\"span\");\n        this.h = document.createElement(\"span\");\n        this.f = document.createElement(\"span\");\n        this.g = -1;\n        this.b.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.c.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.f.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.h.style.cssText = \"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";\n        this.b.appendChild(this.h);\n        this.c.appendChild(this.f);\n        this.a.appendChild(this.b);\n        this.a.appendChild(this.c);\n      }\n      function u(a, b) {\n        a.a.style.cssText = \"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\" + b + \";\";\n      }\n      function z(a) {\n        var b = a.a.offsetWidth, c = b + 100;\n        a.f.style.width = c + \"px\";\n        a.c.scrollLeft = c;\n        a.b.scrollLeft = a.b.scrollWidth + 100;\n        return a.g !== b ? (a.g = b, true) : false;\n      }\n      function A(a, b) {\n        function c() {\n          var a2 = k;\n          z(a2) && a2.a.parentNode && b(a2.g);\n        }\n        var k = a;\n        l(a.b, c);\n        l(a.c, c);\n        z(a);\n      }\n      ;\n      function B(a, b) {\n        var c = b || {};\n        this.family = a;\n        this.style = c.style || \"normal\";\n        this.weight = c.weight || \"normal\";\n        this.stretch = c.stretch || \"normal\";\n      }\n      var C = null, D = null, E = null, F = null;\n      function G() {\n        if (null === D)\n          if (J() && /Apple/.test(window.navigator.vendor)) {\n            var a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent);\n            D = !!a && 603 > parseInt(a[1], 10);\n          } else\n            D = false;\n        return D;\n      }\n      function J() {\n        null === F && (F = !!document.fonts);\n        return F;\n      }\n      function K() {\n        if (null === E) {\n          var a = document.createElement(\"div\");\n          try {\n            a.style.font = \"condensed 100px sans-serif\";\n          } catch (b) {\n          }\n          E = \"\" !== a.style.font;\n        }\n        return E;\n      }\n      function L(a, b) {\n        return [a.style, a.weight, K() ? a.stretch : \"\", \"100px\", b].join(\" \");\n      }\n      B.prototype.load = function(a, b) {\n        var c = this, k = a || \"BESbswy\", r = 0, n = b || 3e3, H = new Date().getTime();\n        return new Promise(function(a2, b2) {\n          if (J() && !G()) {\n            var M = new Promise(function(a3, b3) {\n              function e() {\n                new Date().getTime() - H >= n ? b3(Error(\"\" + n + \"ms timeout exceeded\")) : document.fonts.load(L(c, '\"' + c.family + '\"'), k).then(function(c2) {\n                  1 <= c2.length ? a3() : setTimeout(e, 25);\n                }, b3);\n              }\n              e();\n            }), N = new Promise(function(a3, c2) {\n              r = setTimeout(function() {\n                c2(Error(\"\" + n + \"ms timeout exceeded\"));\n              }, n);\n            });\n            Promise.race([N, M]).then(\n              function() {\n                clearTimeout(r);\n                a2(c);\n              },\n              b2\n            );\n          } else\n            m2(function() {\n              function v() {\n                var b3;\n                if (b3 = -1 != f && -1 != g || -1 != f && -1 != h || -1 != g && -1 != h)\n                  (b3 = f != g && f != h && g != h) || (null === C && (b3 = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent), C = !!b3 && (536 > parseInt(b3[1], 10) || 536 === parseInt(b3[1], 10) && 11 >= parseInt(b3[2], 10))), b3 = C && (f == w && g == w && h == w || f == x && g == x && h == x || f == y && g == y && h == y)), b3 = !b3;\n                b3 && (d.parentNode && d.parentNode.removeChild(d), clearTimeout(r), a2(c));\n              }\n              function I() {\n                if (new Date().getTime() - H >= n)\n                  d.parentNode && d.parentNode.removeChild(d), b2(Error(\"\" + n + \"ms timeout exceeded\"));\n                else {\n                  var a3 = document.hidden;\n                  if (true === a3 || void 0 === a3)\n                    f = e.a.offsetWidth, g = p.a.offsetWidth, h = q.a.offsetWidth, v();\n                  r = setTimeout(I, 50);\n                }\n              }\n              var e = new t(k), p = new t(k), q = new t(k), f = -1, g = -1, h = -1, w = -1, x = -1, y = -1, d = document.createElement(\"div\");\n              d.dir = \"ltr\";\n              u(e, L(c, \"sans-serif\"));\n              u(p, L(c, \"serif\"));\n              u(q, L(c, \"monospace\"));\n              d.appendChild(e.a);\n              d.appendChild(p.a);\n              d.appendChild(q.a);\n              document.body.appendChild(d);\n              w = e.a.offsetWidth;\n              x = p.a.offsetWidth;\n              y = q.a.offsetWidth;\n              I();\n              A(e, function(a3) {\n                f = a3;\n                v();\n              });\n              u(\n                e,\n                L(c, '\"' + c.family + '\",sans-serif')\n              );\n              A(p, function(a3) {\n                g = a3;\n                v();\n              });\n              u(p, L(c, '\"' + c.family + '\",serif'));\n              A(q, function(a3) {\n                h = a3;\n                v();\n              });\n              u(q, L(c, '\"' + c.family + '\",monospace'));\n            });\n        });\n      };\n      \"object\" === typeof module ? module.exports = B : (window.FontFaceObserver = B, window.FontFaceObserver.prototype.load = B.prototype.load);\n    })();\n  }\n});\n\n// ../../router/build/computeRelativePath.js\nfunction computeRelativePath(from, to) {\n  if (!from.startsWith(\"/\") || !to.startsWith(\"/\")) {\n    throw new Error(\"from/to paths are expected to be absolute\");\n  }\n  const [fromDir] = getDirAndFile(from);\n  const [toDir, toFile] = getDirAndFile(to);\n  let relativePath = relative(fromDir, toDir);\n  if (relativePath === \"\")\n    relativePath = \".\";\n  if (!relativePath.startsWith(\".\") && !relativePath.startsWith(\"/\")) {\n    relativePath = \"./\" + relativePath;\n  }\n  return relativePath + \"/\" + toFile;\n}\nfunction getDirAndFile(path) {\n  const index = path.lastIndexOf(\"/\");\n  return [path.substring(0, index + 1), path.substring(index + 1)];\n}\nvar CHAR_DOT = 46;\nvar CHAR_FORWARD_SLASH = 47;\nvar StringPrototypeCharCodeAt = (str, index) => str.charCodeAt(index);\nvar StringPrototypeLastIndexOf = (str, searchString) => str.lastIndexOf(searchString);\nvar StringPrototypeSlice = (str, start, end) => str.slice(start, end);\nfunction relative(from, to) {\n  if (from === to)\n    return \"\";\n  from = \"/\" + normalizeString(from);\n  to = \"/\" + normalizeString(to);\n  if (from === to)\n    return \"\";\n  const fromStart = 1;\n  const fromEnd = from.length;\n  const fromLen = fromEnd - fromStart;\n  const toStart = 1;\n  const toLen = to.length - toStart;\n  const length = fromLen < toLen ? fromLen : toLen;\n  let lastCommonSep = -1;\n  let i = 0;\n  for (; i < length; i++) {\n    const fromCode = StringPrototypeCharCodeAt(from, fromStart + i);\n    if (fromCode !== StringPrototypeCharCodeAt(to, toStart + i))\n      break;\n    else if (fromCode === CHAR_FORWARD_SLASH)\n      lastCommonSep = i;\n  }\n  if (i === length) {\n    if (toLen > length) {\n      if (StringPrototypeCharCodeAt(to, toStart + i) === CHAR_FORWARD_SLASH) {\n        return StringPrototypeSlice(to, toStart + i + 1);\n      }\n      if (i === 0) {\n        return StringPrototypeSlice(to, toStart + i);\n      }\n    } else if (fromLen > length) {\n      if (StringPrototypeCharCodeAt(from, fromStart + i) === CHAR_FORWARD_SLASH) {\n        lastCommonSep = i;\n      } else if (i === 0) {\n        lastCommonSep = 0;\n      }\n    }\n  }\n  let out = \"\";\n  for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n    if (i === fromEnd || StringPrototypeCharCodeAt(from, i) === CHAR_FORWARD_SLASH) {\n      out += out.length === 0 ? \"..\" : \"/..\";\n    }\n  }\n  return `${out}${StringPrototypeSlice(to, toStart + lastCommonSep)}`;\n}\nvar allowAboveRoot = false;\nvar separator = \"/\";\nvar isPathSeparator = (code) => code === CHAR_FORWARD_SLASH;\nfunction normalizeString(path) {\n  let res = \"\";\n  let lastSegmentLength = 0;\n  let lastSlash = -1;\n  let dots = 0;\n  let code = 0;\n  for (let i = 0; i <= path.length; ++i) {\n    if (i < path.length)\n      code = StringPrototypeCharCodeAt(path, i);\n    else if (isPathSeparator(code))\n      break;\n    else\n      code = CHAR_FORWARD_SLASH;\n    if (isPathSeparator(code)) {\n      if (lastSlash === i - 1 || dots === 1) {\n      } else if (dots === 2) {\n        if (res.length < 2 || lastSegmentLength !== 2 || StringPrototypeCharCodeAt(res, res.length - 1) !== CHAR_DOT || StringPrototypeCharCodeAt(res, res.length - 2) !== CHAR_DOT) {\n          if (res.length > 2) {\n            const lastSlashIndex = StringPrototypeLastIndexOf(res, separator);\n            if (lastSlashIndex === -1) {\n              res = \"\";\n              lastSegmentLength = 0;\n            } else {\n              res = StringPrototypeSlice(res, 0, lastSlashIndex);\n              lastSegmentLength = res.length - 1 - StringPrototypeLastIndexOf(res, separator);\n            }\n            lastSlash = i;\n            dots = 0;\n            continue;\n          } else if (res.length !== 0) {\n            res = \"\";\n            lastSegmentLength = 0;\n            lastSlash = i;\n            dots = 0;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          res += res.length > 0 ? `${separator}..` : \"..\";\n          lastSegmentLength = 2;\n        }\n      } else {\n        if (res.length > 0)\n          res += `${separator}${StringPrototypeSlice(path, lastSlash + 1, i)}`;\n        else\n          res = StringPrototypeSlice(path, lastSlash + 1, i);\n        lastSegmentLength = i - lastSlash - 1;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === CHAR_DOT && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n\n// ../../router/build/ErrorBoundary.js\nimport { Component } from \"react\";\n\n// ../../router/build/renderPage.js\nimport React2 from \"react\";\n\n// ../../router/build/utils.js\nimport React from \"react\";\nfunction isObject(value) {\n  return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction isString(value) {\n  return typeof value === \"string\";\n}\nvar preloadKey = \"preload\";\nfunction isLazyComponentType(componentType) {\n  return typeof componentType === \"object\" && preloadKey in componentType;\n}\nfunction lazy(factory) {\n  const LazyComponent = React.lazy(factory);\n  let factoryPromise;\n  let LoadedComponent;\n  const Component15 = React.forwardRef(function LazyWithPreload(props, ref) {\n    return React.createElement(LoadedComponent !== null && LoadedComponent !== void 0 ? LoadedComponent : LazyComponent, Object.assign(ref ? { ref } : {}, props));\n  });\n  Component15.preload = () => {\n    if (!factoryPromise) {\n      factoryPromise = factory().then((module) => {\n        LoadedComponent = module.default;\n        return LoadedComponent;\n      });\n    }\n    return factoryPromise;\n  };\n  return Component15;\n}\nfunction getRouteElementId(route, elementId) {\n  if (elementId && route) {\n    if (route.elements && elementId in route.elements) {\n      return route.elements[elementId];\n    } else {\n      return elementId;\n    }\n  }\n  return void 0;\n}\n\n// ../../router/build/renderPage.js\nfunction renderPage(Page4, defaultPageStyle = {}) {\n  const element = React2.isValidElement(Page4) ? React2.cloneElement(Page4, { style: defaultPageStyle }) : React2.createElement(Page4, { style: defaultPageStyle });\n  if (isLazyComponentType(element.type)) {\n    return React2.createElement(React2.Suspense, { fallback: null }, element);\n  }\n  return element;\n}\n\n// ../../router/build/ErrorBoundary.js\nvar NotFoundError = class extends Error {\n};\nvar ErrorBoundary = class extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: void 0, forceUpdateKey: props.forceUpdateKey };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  static getDerivedStateFromProps(nextProps, prevState) {\n    if (nextProps.forceUpdateKey !== prevState.forceUpdateKey) {\n      const newState = {\n        forceUpdateKey: nextProps.forceUpdateKey\n      };\n      if (prevState.error) {\n        newState.error = void 0;\n      }\n      return newState;\n    }\n    return null;\n  }\n  render() {\n    if (this.state.error === void 0) {\n      return this.props.children;\n    }\n    if (!(this.state.error instanceof NotFoundError)) {\n      throw this.state.error;\n    }\n    const { notFoundPage, defaultPageStyle } = this.props;\n    if (!notFoundPage) {\n      throw this.state.error;\n    }\n    return renderPage(notFoundPage, defaultPageStyle);\n  }\n};\n\n// ../../router/build/history.js\nimport React3 from \"react\";\n\n// ../../router/build/pathVariables.js\nvar pathVariablesRegExpRaw = \":([a-zA-Z][a-zA-Z0-9_]*)\";\nvar pathVariablesRegExp = new RegExp(pathVariablesRegExpRaw, \"g\");\n\n// ../../router/build/history.js\nfunction pushRouteState(routeId, route, { currentRoutePath, elementId, pathVariables } = {}) {\n  const { path } = route;\n  if (path) {\n    try {\n      const newPath = getPathForRoute(route, { currentRoutePath, elementId, pathVariables });\n      window.history.pushState({ routeId, elementId, pathVariables }, \"\", newPath);\n    } catch {\n    }\n  }\n}\nfunction useReplaceInitialState({ disabled, routeId, initialPathVariables }) {\n  React3.useEffect(() => {\n    if (disabled)\n      return;\n    window.history.replaceState({ routeId, pathVariables: initialPathVariables }, \"\");\n  }, []);\n}\nfunction usePopStateHandler(setCurrentRouteId) {\n  const popStateHandler = React3.useCallback(({ state }) => {\n    if (!isObject(state))\n      return;\n    const { routeId, pathVariables } = state;\n    if (!isString(routeId))\n      return;\n    setCurrentRouteId(routeId, isObject(pathVariables) ? pathVariables : void 0);\n  }, [setCurrentRouteId]);\n  React3.useEffect(() => {\n    window.addEventListener(\"popstate\", popStateHandler);\n    return () => window.removeEventListener(\"popstate\", popStateHandler);\n  }, [popStateHandler]);\n}\nfunction getPathForRoute(route, { currentRoutePath, elementId, pathVariables, relative: relative2 = true }) {\n  var _a;\n  const hash2 = getRouteElementId(route, elementId);\n  const currentPath = currentRoutePath !== null && currentRoutePath !== void 0 ? currentRoutePath : \"/\";\n  const targetPath = (_a = route === null || route === void 0 ? void 0 : route.path) !== null && _a !== void 0 ? _a : \"/\";\n  let path = targetPath;\n  if (pathVariables) {\n    path = path.replace(pathVariablesRegExp, (m2, p1) => {\n      var _a2;\n      return String((_a2 = pathVariables[p1]) !== null && _a2 !== void 0 ? _a2 : m2);\n    });\n  }\n  if (relative2) {\n    path = computeRelativePath(currentPath, path);\n  }\n  return hash2 ? `${path}#${hash2}` : path;\n}\n\n// ../../router/build/inferInitialRouteFromPath.js\nvar memoPathRoutes;\nvar memoPaths;\nvar lastRoutes;\nfunction getRouteInfoMemo(routes) {\n  if (lastRoutes !== routes) {\n    memoPathRoutes = {};\n    for (const [routeId, { path }] of Object.entries(routes)) {\n      if (path)\n        memoPathRoutes[path] = { path, depth: pathDepth(path), routeId };\n    }\n    memoPaths = Object.values(memoPathRoutes);\n    memoPaths.sort(({ depth: depth1 }, { depth: depth2 }) => depth2 - depth1);\n    lastRoutes = routes;\n  }\n  return [memoPathRoutes, memoPaths];\n}\nfunction inferInitialRouteFromPath(routes, decodedLocationPath, fallback = true) {\n  const [pathRoutes, paths] = getRouteInfoMemo(routes);\n  const exactMatch = pathRoutes[decodedLocationPath];\n  if (exactMatch) {\n    const match = matchPath(decodedLocationPath, exactMatch.path);\n    if (match.isMatch)\n      return { routeId: exactMatch.routeId, pathVariables: match.pathVariables };\n  }\n  for (const { path, routeId } of paths) {\n    const match = matchPath(decodedLocationPath, path);\n    if (match.isMatch)\n      return { routeId, pathVariables: match.pathVariables };\n  }\n  if (!fallback)\n    throw new Error(\"No exact match found for path\");\n  const rootPath = pathRoutes[\"/\"];\n  if (rootPath)\n    return { routeId: rootPath.routeId };\n  const firstRoute = Object.keys(routes)[0];\n  if (!firstRoute)\n    throw new Error(\"Router should not have undefined routes\");\n  return { routeId: firstRoute };\n}\nfunction pathDepth(path) {\n  const pathWithTrimmedSlashes = path.replace(/(?:^\\/|\\/$)/g, \"\");\n  if (pathWithTrimmedSlashes === \"\")\n    return 0;\n  return pathWithTrimmedSlashes.split(\"/\").length;\n}\nfunction matchPath(path, routePath) {\n  const pathVariablesKeys = [];\n  const safeRoutePath = escapeStringRegExp(routePath);\n  const routePathRegExpString = safeRoutePath.replace(pathVariablesRegExp, (_, name) => {\n    pathVariablesKeys.push(name);\n    return \"([^/]+)\";\n  });\n  const routePathRegExp = new RegExp(routePathRegExpString + \"$\");\n  const matches = path.match(routePathRegExp);\n  if (!matches)\n    return { isMatch: false };\n  if (matches.length === 1)\n    return { isMatch: true };\n  const pathVariables = {};\n  const pathVariablesValues = matches.slice(1);\n  for (let i = 0; i < pathVariablesKeys.length; ++i) {\n    const key7 = pathVariablesKeys[i];\n    if (key7 === void 0)\n      continue;\n    const value = pathVariablesValues[i];\n    const existingValue = pathVariables[key7];\n    if (existingValue) {\n      if (existingValue !== value) {\n        return { isMatch: false };\n      } else {\n        continue;\n      }\n    }\n    if (value === void 0) {\n      throw new Error(\"Path variable values cannot be undefined\");\n    }\n    pathVariables[key7] = value;\n  }\n  return { isMatch: true, pathVariables };\n}\nfunction escapeStringRegExp(string) {\n  return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n}\n\n// ../../router/build/isRoute.js\nvar key = \"page\";\nfunction isRoute(route) {\n  return isObject(route) && key in route && route.page !== void 0;\n}\n\n// ../../router/build/Router.js\nimport React7 from \"react\";\n\n// ../../router/build/isSamePage.js\nfunction isSamePage(a, b) {\n  if (a.routeId !== b.routeId)\n    return false;\n  if (a.pathVariables === b.pathVariables)\n    return true;\n  const aPathVariables = a.pathVariables || {};\n  const bPathVariables = b.pathVariables || {};\n  return aPathVariables.length === bPathVariables.length && Object.keys(aPathVariables).every((key7) => aPathVariables[key7] === bPathVariables[key7]);\n}\n\n// ../../router/build/RouterContext.js\nimport React5 from \"react\";\n\n// ../../router/build/useGetRouteCallback.js\nimport React4 from \"react\";\nfunction useGetRouteCallback(routes) {\n  return React4.useCallback((routeId) => routes[routeId], [routes]);\n}\n\n// ../../router/build/RouterContext.js\nvar RouterContext = React5.createContext({});\nfunction RouterAPIProvider({ api, children }) {\n  return React5.createElement(RouterContext.Provider, { value: api }, children);\n}\nfunction useRouter() {\n  return React5.useContext(RouterContext);\n}\nfunction RoutesProvider({ routes, children }) {\n  const getRoute = useGetRouteCallback(routes);\n  return React5.createElement(RouterContext.Provider, { value: { getRoute } }, children);\n}\n\n// ../../router/build/useForceUpdate.js\nimport React6 from \"react\";\nfunction useForceUpdate2() {\n  const [_, setForcedRenderCount] = React6.useState(0);\n  return [_, React6.useCallback(() => setForcedRenderCount((v) => v + 1), [])];\n}\n\n// ../../router/build/Router.js\nfunction Router({ defaultPageStyle, disableHistory, initialPathVariables, initialRoute, notFoundPage, routes }) {\n  useReplaceInitialState({\n    disabled: disableHistory,\n    routeId: initialRoute,\n    initialPathVariables\n  });\n  const currentRouteRef = React7.useRef(initialRoute);\n  const currentPathVariablesRef = React7.useRef(initialPathVariables);\n  const nextElementRef = React7.useRef();\n  const nextSmoothScrollRef = React7.useRef();\n  const [dep, forceUpdate] = useForceUpdate2();\n  const setCurrentRouteId = React7.useCallback((routeId, pathVariables) => {\n    currentRouteRef.current = routeId;\n    currentPathVariablesRef.current = pathVariables;\n    forceUpdate();\n  }, [forceUpdate]);\n  React7.useLayoutEffect(() => {\n    if (!nextElementRef.current)\n      return;\n    const element = document.getElementById(nextElementRef.current);\n    if (!element)\n      return;\n    scrollElementIntoView(element, nextSmoothScrollRef.current);\n  }, [dep]);\n  usePopStateHandler(setCurrentRouteId);\n  const navigate = React7.useCallback((routeId, elementId, pathVariables, smoothScroll) => {\n    var _a, _b;\n    const newRoute = routes[routeId];\n    if (pathVariables) {\n      const inUse = /* @__PURE__ */ new Set();\n      const path = (_a = newRoute === null || newRoute === void 0 ? void 0 : newRoute.path) !== null && _a !== void 0 ? _a : \"/\";\n      for (const match of path.matchAll(pathVariablesRegExp)) {\n        const usedVariable = match[1];\n        if (usedVariable === void 0) {\n          throw new Error(\"A matching path variable should not be undefined\");\n        }\n        inUse.add(usedVariable);\n      }\n      pathVariables = Object.fromEntries(Object.entries(pathVariables).filter(([key7]) => inUse.has(key7)));\n    }\n    const routeElementId = getRouteElementId(newRoute, elementId);\n    if (isSamePage({ routeId: currentRouteRef.current, pathVariables: currentPathVariablesRef.current }, { routeId, pathVariables })) {\n      if (((_b = window.history.state) === null || _b === void 0 ? void 0 : _b.elementId) !== elementId) {\n        if (!disableHistory) {\n          const route = routes[routeId];\n          if (route) {\n            pushRouteState(routeId, route, {\n              currentRoutePath: route.path,\n              pathVariables,\n              elementId\n            });\n          }\n        }\n      }\n      nextElementRef.current = void 0;\n      nextSmoothScrollRef.current = void 0;\n      if (routeElementId) {\n        const element = document.getElementById(routeElementId);\n        if (!element)\n          return;\n        scrollElementIntoView(element, smoothScroll);\n      } else {\n        window.scrollTo(0, 0);\n      }\n      return;\n    }\n    if (!newRoute)\n      return;\n    if (!disableHistory) {\n      const currentRoute = routes[currentRouteRef.current];\n      pushRouteState(routeId, newRoute, {\n        currentRoutePath: currentRoute === null || currentRoute === void 0 ? void 0 : currentRoute.path,\n        elementId,\n        pathVariables\n      });\n    }\n    if (routeElementId) {\n      nextElementRef.current = routeElementId;\n      nextSmoothScrollRef.current = smoothScroll;\n    } else {\n      window.scrollTo(0, 0);\n      nextElementRef.current = void 0;\n      nextSmoothScrollRef.current = void 0;\n    }\n    setCurrentRouteId(routeId, pathVariables);\n  }, [routes, disableHistory, setCurrentRouteId]);\n  const getRoute = useGetRouteCallback(routes);\n  const currentRouteId = currentRouteRef.current;\n  const currentPathVariables = currentPathVariablesRef.current;\n  const api = React7.useMemo(() => ({ navigate, getRoute, currentRouteId, currentPathVariables, routes }), [navigate, getRoute, currentRouteId, currentPathVariables, routes]);\n  const current = routes[currentRouteRef.current];\n  if (!current) {\n    throw new Error(`Router cannot find route for ${currentRouteRef.current}`);\n  }\n  return React7.createElement(\n    RouterAPIProvider,\n    { api },\n    React7.createElement(ErrorBoundary, { notFoundPage, defaultPageStyle, forceUpdateKey: dep }, renderPage(current.page, defaultPageStyle))\n  );\n}\nfunction scrollElementIntoView(element, smoothScroll) {\n  const scrollIntoViewOptions = smoothScroll ? { behavior: \"smooth\", block: \"start\", inline: \"nearest\" } : void 0;\n  element.scrollIntoView(scrollIntoViewOptions);\n}\n\n// ../../router/build/useCurrentRoute.js\nimport React8, { useContext } from \"react\";\nvar CurrentRouteContext = React8.createContext(void 0);\nfunction useCurrentRoute() {\n  var _a;\n  const router = useRouter();\n  const override = useContext(CurrentRouteContext);\n  const id = override !== null && override !== void 0 ? override : router.currentRouteId;\n  if (!id)\n    return void 0;\n  const route = (_a = router.getRoute) === null || _a === void 0 ? void 0 : _a.call(router, id);\n  if (!route)\n    return void 0;\n  return {\n    ...route,\n    id,\n    pathVariables: override ? void 0 : router.currentPathVariables\n  };\n}\nfunction useCurrentRouteId() {\n  var _a;\n  return (_a = useCurrentRoute()) === null || _a === void 0 ? void 0 : _a.id;\n}\n\n// ../../router/build/useCurrentPathVariables.js\nfunction useCurrentPathVariables() {\n  var _a;\n  return (_a = useCurrentRoute()) === null || _a === void 0 ? void 0 : _a.pathVariables;\n}\n\n// ../../router/build/useRoute.js\nfunction useRoute(routeId) {\n  var _a;\n  const routerAPI = useRouter();\n  if (!routeId)\n    return void 0;\n  return (_a = routerAPI.getRoute) === null || _a === void 0 ? void 0 : _a.call(routerAPI, routeId);\n}\n\n// ../../router/build/useRouteAnchor.js\nimport React10 from \"react\";\n\n// ../../router/build/useRoutePreloader.js\nimport React9 from \"react\";\nfunction useRoutePreloader(routeIds, enabled = true) {\n  const { getRoute } = useRouter();\n  React9.useEffect(() => {\n    if (!getRoute || !enabled)\n      return;\n    for (const routeId of routeIds) {\n      const route = getRoute(routeId);\n      if (route === null || route === void 0 ? void 0 : route.page)\n        preloadComponent(route.page);\n    }\n  }, [routeIds, getRoute, enabled]);\n}\nfunction preloadComponent(component) {\n  if (component && !React9.isValidElement(component) && isLazyComponentType(component)) {\n    void component.preload();\n  }\n}\n\n// ../../router/build/useRouteAnchor.js\nfunction useRouteAnchor(routeId, { elementId } = {}) {\n  const { navigate } = useRouter();\n  const route = useRoute(routeId);\n  const currentRouteId = useCurrentRouteId();\n  const currentRoute = useRoute(currentRouteId !== null && currentRouteId !== void 0 ? currentRouteId : \"\");\n  useRoutePreloader([routeId], true);\n  const href = React10.useMemo(() => getPathForRoute(route, { currentRoutePath: currentRoute === null || currentRoute === void 0 ? void 0 : currentRoute.path, elementId }), [currentRoute, elementId, route]);\n  const navigateToRoute = React10.useCallback(() => navigate === null || navigate === void 0 ? void 0 : navigate(routeId, elementId), [elementId, navigate, routeId]);\n  const onClick = React10.useCallback((event) => {\n    event.preventDefault();\n    navigateToRoute();\n  }, [navigateToRoute]);\n  return { onClick, href };\n}\n\n// ../../router/build/useRouteElementId.js\nimport React11 from \"react\";\nfunction useRouteElementId(id, targetRouteId) {\n  var _a;\n  const currentRoute = useCurrentRoute();\n  const route = (_a = useRoute(targetRouteId)) !== null && _a !== void 0 ? _a : currentRoute;\n  return React11.useMemo(() => getRouteElementId(route, id), [id, route]);\n}\n\n// ../../router/build/useRouteHandler.js\nimport React12 from \"react\";\nfunction useRouteHandler(routeId, preload = false, elementId) {\n  const { navigate } = useRouter();\n  useRoutePreloader([routeId], preload);\n  const handler = React12.useCallback(() => navigate === null || navigate === void 0 ? void 0 : navigate(routeId, elementId), [navigate, elementId, routeId]);\n  return handler;\n}\n\n// ../../library/src/utils/warnOnce.ts\nvar warningMessages = /* @__PURE__ */ new Set();\nfunction warnOnce(keyMessage, ...rest) {\n  if (warningMessages.has(keyMessage))\n    return;\n  warningMessages.add(keyMessage);\n  console.warn(keyMessage, ...rest);\n}\n\n// ../../library/src/utils/deprecation.ts\nfunction deprecationWarning(removedItem, removalVersion, replacement) {\n  const replacementText = replacement ? `, use ${replacement} instead` : \"\";\n  const warningText = `Deprecation warning: ${removedItem} will be removed in version ${removalVersion}${replacementText}.`;\n  warnOnce(warningText);\n}\n\n// ../../library/src/animation/Animatable/Observers.ts\nvar Observers = class {\n  constructor() {\n    this.observers = /* @__PURE__ */ new Set();\n    this.transactions = {};\n  }\n  add(observer) {\n    this.observers.add(observer);\n    let isCalled = false;\n    return () => {\n      if (isCalled) {\n        return;\n      }\n      isCalled = true;\n      this.remove(observer);\n    };\n  }\n  remove(observer) {\n    this.observers.delete(observer);\n  }\n  notify(change, transaction) {\n    if (transaction) {\n      const accumulatedChange = this.transactions[transaction] || change;\n      accumulatedChange.value = change.value;\n      this.transactions[transaction] = accumulatedChange;\n    } else {\n      this.callObservers(change);\n    }\n  }\n  finishTransaction(transaction) {\n    const accumulatedChange = this.transactions[transaction];\n    delete this.transactions[transaction];\n    return this.callObservers(accumulatedChange, transaction);\n  }\n  callObservers(change, transaction) {\n    const finishObservers = [];\n    new Set(this.observers).forEach((observer) => {\n      if (typeof observer === \"function\") {\n        observer(change, transaction);\n      } else {\n        observer.update(change, transaction);\n        finishObservers.push(observer.finish);\n      }\n    });\n    return finishObservers;\n  }\n};\n\n// ../../library/src/animation/Animatable/Animatable.ts\nvar Animatable = /* @__PURE__ */ (() => {\n  function Animatable2(value) {\n    deprecationWarning(\"Animatable()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n    return isAnimatable(value) ? value : new AnimatableValue(value);\n  }\n  Animatable2.transaction = (update) => {\n    const transactionId = Math.random();\n    const updatedValues = /* @__PURE__ */ new Set();\n    const updater = (animatable, value) => {\n      animatable.set(value, transactionId);\n      updatedValues.add(animatable);\n    };\n    update(updater, transactionId);\n    const finishObservers = [];\n    updatedValues.forEach((value) => {\n      finishObservers.push(...value.finishTransaction(transactionId));\n    });\n    finishObservers.forEach((finish) => {\n      finish(transactionId);\n    });\n  };\n  Animatable2.getNumber = (value, defaultValue = 0) => {\n    return Animatable2.get(value, defaultValue);\n  };\n  Animatable2.get = (value, defaultValue) => {\n    if (value === void 0 || value === null) {\n      return defaultValue;\n    }\n    if (isAnimatable(value)) {\n      return value.get();\n    }\n    return value;\n  };\n  Animatable2.objectToValues = (object) => {\n    if (!object) {\n      return object;\n    }\n    const result = {};\n    for (const key7 in object) {\n      const value = object[key7];\n      if (isAnimatable(value)) {\n        result[key7] = value.get();\n      } else {\n        result[key7] = value;\n      }\n    }\n    return result;\n  };\n  return Animatable2;\n})();\nvar onUpdateKey = \"onUpdate\";\nvar finishTransactionKey = \"finishTransaction\";\nfunction isAnimatable(value) {\n  return value !== null && typeof value === \"object\" && onUpdateKey in value && value[onUpdateKey] instanceof Function && finishTransactionKey in value && value[finishTransactionKey] instanceof Function;\n}\nfunction animatableInterpolation(value, currentInterpolation) {\n  return {\n    interpolate(from, to) {\n      const fromValue = from.get();\n      const toValue = to.get();\n      const result = Animatable(fromValue);\n      return (progress2) => {\n        const v = currentInterpolation.interpolate(fromValue, toValue)(progress2);\n        result.set(v);\n        return result;\n      };\n    },\n    difference(from, to) {\n      const v = from.get();\n      return currentInterpolation.difference(v, to.get());\n    }\n  };\n}\nvar AnimatableValue = class {\n  constructor(value) {\n    this.value = value;\n    this.observers = new Observers();\n  }\n  static interpolationFor(value, currentInterpolation) {\n    if (isAnimatable(value)) {\n      return animatableInterpolation(value, currentInterpolation);\n    }\n  }\n  get() {\n    return this.value;\n  }\n  set(value, transaction) {\n    const oldValue = this.value;\n    if (isAnimatable(value)) {\n      value = value.get();\n    }\n    this.value = value;\n    const change = {\n      value,\n      oldValue\n    };\n    this.observers.notify(change, transaction);\n  }\n  finishTransaction(transaction) {\n    return this.observers.finishTransaction(transaction);\n  }\n  onUpdate(handler) {\n    return this.observers.add(handler);\n  }\n};\n\n// ../../library/src/render/utils/isMotionValue.ts\nvar isMotionValue2 = (v) => v instanceof MotionValue;\n\n// ../../library/src/render/utils/roundedNumber.ts\nfunction roundedNumber(value, decimals) {\n  const d = Math.round(Math.abs(decimals));\n  const multiplier = Math.pow(10, d);\n  return Math.round(value * multiplier) / multiplier;\n}\nfunction roundedNumberString(value, decimals) {\n  const result = value.toFixed(decimals);\n  if (decimals === 0) {\n    return result;\n  }\n  return result.replace(/\\.?0+$/, \"\");\n}\nfunction roundWithOffset(value, offset) {\n  if (offset === 0) {\n    return Math.round(value);\n  }\n  offset -= offset | 0;\n  if (offset < 0) {\n    offset = 1 - offset;\n  }\n  return Math.round(value - offset) + offset;\n}\n\n// ../../library/src/render/types/Point.ts\nfunction Point(x, y) {\n  return { x, y };\n}\n((Point3) => {\n  Point3.add = (...args) => {\n    return args.reduce(\n      (previousValue, currentValue) => {\n        return { x: previousValue.x + currentValue.x, y: previousValue.y + currentValue.y };\n      },\n      { x: 0, y: 0 }\n    );\n  };\n  Point3.subtract = (a, b) => {\n    return { x: a.x - b.x, y: a.y - b.y };\n  };\n  Point3.multiply = (a, b) => {\n    return { x: a.x * b, y: a.y * b };\n  };\n  Point3.divide = (a, b) => {\n    return { x: a.x / b, y: a.y / b };\n  };\n  Point3.absolute = (point) => {\n    return {\n      x: Math.abs(point.x),\n      y: Math.abs(point.y)\n    };\n  };\n  Point3.reverse = (point) => {\n    return {\n      x: point.x * -1,\n      y: point.y * -1\n    };\n  };\n  Point3.pixelAligned = (point, offset = { x: 0, y: 0 }) => {\n    return {\n      x: roundWithOffset(point.x, offset.x),\n      y: roundWithOffset(point.y, offset.y)\n    };\n  };\n  Point3.distance = (a, b) => {\n    const deltaX = Math.abs(a.x - b.x);\n    const deltaY = Math.abs(a.y - b.y);\n    return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  };\n  Point3.angle = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI - 90;\n  };\n  Point3.isEqual = (a, b) => {\n    return a.x === b.x && a.y === b.y;\n  };\n  Point3.rotationNormalizer = () => {\n    let lastValue;\n    return (value) => {\n      if (typeof lastValue !== \"number\") {\n        lastValue = value;\n      }\n      const diff = lastValue - value;\n      const maxDiff = Math.abs(diff) + 180;\n      const nTimes = Math.floor(maxDiff / 360);\n      if (diff < 180) {\n        value -= nTimes * 360;\n      }\n      if (diff > 180) {\n        value += nTimes * 360;\n      }\n      lastValue = value;\n      return value;\n    };\n  };\n  function center(a, b) {\n    return {\n      x: (a.x + b.x) / 2,\n      y: (a.y + b.y) / 2\n    };\n  }\n  Point3.center = center;\n})(Point || (Point = {}));\n\n// ../../library/src/animation/Animators/BezierAnimator.ts\nvar BezierDefaults = {\n  curve: \"ease\" /* Ease */,\n  duration: 1\n};\nfunction controlPointsForCurve(curve) {\n  switch (curve) {\n    case \"linear\" /* Linear */:\n      return [0, 0, 1, 1];\n    case \"ease\" /* Ease */:\n      return [0.25, 0.1, 0.25, 1];\n    case \"ease-in\" /* EaseIn */:\n      return [0.42, 0, 1, 1];\n    case \"ease-out\" /* EaseOut */:\n      return [0, 0, 0.58, 1];\n    case \"ease-in-out\" /* EaseInOut */:\n      return [0.42, 0, 0.58, 1];\n  }\n}\nvar BezierAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    this.progress = 0;\n    this.next = (delta) => {\n      const { duration } = this.options;\n      this.progress += delta / duration;\n      const value = this.unitBezier.solve(this.progress, this.solveEpsilon(duration));\n      this.current = this.interpolator(value);\n      return this.current;\n    };\n    this.options = { ...BezierDefaults, ...options };\n    let controlPoints;\n    if (typeof this.options.curve === \"string\") {\n      controlPoints = controlPointsForCurve(this.options.curve);\n    } else {\n      controlPoints = this.options.curve;\n    }\n    const [p1x, p1y, p2x, p2y] = controlPoints;\n    this.unitBezier = new UnitBezier(Point(p1x, p1y), Point(p2x, p2y));\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setTo(value) {\n    this.destination = value;\n    this.updateInterpolator();\n  }\n  isReady() {\n    return this.interpolator !== void 0;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n  isFinished() {\n    return this.progress >= 1;\n  }\n  solveEpsilon(duration) {\n    return 1 / (200 * duration);\n  }\n};\nvar UnitBezier = class {\n  constructor(point1, point2) {\n    this.c = Point.multiply(point1, 3);\n    this.b = Point.subtract(Point.multiply(Point.subtract(point2, point1), 3), this.c);\n    this.a = Point.subtract(Point.subtract(Point(1, 1), this.c), this.b);\n  }\n  solve(x, epsilon2) {\n    return this.sampleY(this.solveForT(x, epsilon2));\n  }\n  sampleX(t) {\n    return ((this.a.x * t + this.b.x) * t + this.c.x) * t;\n  }\n  sampleY(t) {\n    return ((this.a.y * t + this.b.y) * t + this.c.y) * t;\n  }\n  sampleDerivativeX(t) {\n    return (3 * this.a.x * t + 2 * this.b.x) * t + this.c.x;\n  }\n  solveForT(x, epsilon2) {\n    let t0, t1, t2, x2, d2, i;\n    t2 = x;\n    for (i = 0; i < 8; ++i) {\n      x2 = this.sampleX(t2) - x;\n      if (Math.abs(x2) < epsilon2)\n        return t2;\n      d2 = this.sampleDerivativeX(t2);\n      if (Math.abs(d2) < epsilon2)\n        break;\n      t2 = t2 - x2 / d2;\n    }\n    t0 = 0;\n    t1 = 1;\n    t2 = x;\n    if (t2 < t0)\n      return t0;\n    if (t2 > t1)\n      return t1;\n    while (t0 < t1) {\n      x2 = this.sampleX(t2);\n      if (Math.abs(x2 - x) < epsilon2)\n        return t2;\n      if (x > x2)\n        t0 = t2;\n      else\n        t1 = t2;\n      t2 = (t1 - t0) * 0.5 + t0;\n    }\n    return t2;\n  }\n};\n\n// ../../library/src/animation/Animators/Integrator.ts\nvar Integrator = class {\n  constructor(accelerationFunction) {\n    this.accelerationForState = accelerationFunction;\n  }\n  integrateState(state, dt) {\n    const a = this.evaluateState(state);\n    const b = this.evaluateStateWithDerivative(state, dt * 0.5, a);\n    const c = this.evaluateStateWithDerivative(state, dt * 0.5, b);\n    const d = this.evaluateStateWithDerivative(state, dt, c);\n    const dxdt = 1 / 6 * (a.dx + 2 * (b.dx + c.dx) + d.dx);\n    const dvdt = 1 / 6 * (a.dv + 2 * (b.dv + c.dv) + d.dv);\n    state.x = state.x + dxdt * dt;\n    state.v = state.v + dvdt * dt;\n    return state;\n  }\n  evaluateState(initialState2) {\n    const dv = this.accelerationForState(initialState2);\n    return { dx: initialState2.v, dv };\n  }\n  evaluateStateWithDerivative(initialState2, dt, derivative) {\n    const state = {\n      x: initialState2.x + derivative.dx * dt,\n      v: initialState2.v + derivative.dv * dt\n    };\n    const output = {\n      dx: state.v,\n      dv: this.accelerationForState(state)\n    };\n    return output;\n  }\n};\n\n// ../../library/src/animation/Animators/FrictionAnimator.ts\nvar FrictionAnimator = class {\n  constructor(options) {\n    this.options = {\n      velocity: 0,\n      friction: 2,\n      tolerance: 1 / 10\n    };\n    Object.assign(this.options, options);\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -(this.options.friction * state.v));\n  }\n  setFrom(value) {\n    this.state.x = value;\n  }\n  setTo(value) {\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  getState() {\n    return this.state;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    return this.state.x;\n  }\n  isFinished() {\n    return Math.abs(this.state.v) < this.options.tolerance;\n  }\n};\n\n// ../../library/src/interpolation/Interpolation.ts\nfunction isInterpolatable(value) {\n  return typeof value === \"function\" && value.interpolationFor && typeof value.interpolationFor === \"function\";\n}\nvar Interpolation = {\n  handleUndefined: (from, to) => {\n    if (from === void 0) {\n      from = to;\n    }\n    if (to === void 0) {\n      to = from;\n    }\n    return [from, to];\n  }\n};\n\n// ../../library/src/interpolation/NumberInterpolation.ts\nvar NumberInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    const a1 = +from;\n    const b1 = to - a1;\n    return (progress2) => {\n      const value = a1 + b1 * progress2;\n      return value;\n    };\n  },\n  difference(from, to) {\n    return to - from;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringCurveValueConverter.ts\nvar epsilon = 1e-3;\nvar minDuration = 0.01;\nvar maxDuration = 10;\nvar minDamping = Number.MIN_VALUE;\nvar maxDamping = 1;\nfunction approximateRoot(func, derivative, initialGuess, times = 12) {\n  let result = initialGuess;\n  for (let i = 1, end = times, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n    result = result - func(result) / derivative(result);\n  }\n  return result;\n}\nfunction angularFrequency(undampedFrequency, dampingRatio) {\n  return undampedFrequency * Math.sqrt(1 - Math.pow(dampingRatio, 2));\n}\nvar SpringCurveValueConverter = {\n  computeDampingRatio: (tension, friction, mass = 1) => {\n    return friction / (2 * Math.sqrt(mass * tension));\n  },\n  computeDuration: (tension, friction, velocity = 0, mass = 1) => {\n    let duration;\n    const dampingRatio = SpringCurveValueConverter.computeDampingRatio(tension, friction);\n    const undampedFrequency = Math.sqrt(tension / mass);\n    if (dampingRatio < 1) {\n      const a = Math.sqrt(1 - Math.pow(dampingRatio, 2));\n      const b = velocity / (a * undampedFrequency);\n      const c = dampingRatio / a;\n      const d = -((b - c) / epsilon);\n      if (d <= 0) {\n        return null;\n      }\n      duration = Math.log(d) / (dampingRatio * undampedFrequency);\n    } else {\n      return null;\n    }\n    return duration;\n  },\n  computeDerivedCurveOptions: (dampingRatio, duration, velocity = 0, mass = 1) => {\n    let derivative, envelope;\n    dampingRatio = Math.max(Math.min(dampingRatio, maxDamping), minDamping);\n    duration = Math.max(Math.min(duration, maxDuration), minDuration);\n    if (dampingRatio < 1) {\n      envelope = function(envelopeUndampedFrequency) {\n        const exponentialDecay = envelopeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const a = exponentialDecay - velocity;\n        const b = angularFrequency(envelopeUndampedFrequency, dampingRatio);\n        const c = Math.exp(-currentDisplacement);\n        return epsilon - a / b * c;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const exponentialDecay = derivativeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const d = currentDisplacement * velocity + velocity;\n        const e = Math.pow(dampingRatio, 2) * Math.pow(derivativeUndampedFrequency, 2) * duration;\n        const f = Math.exp(-currentDisplacement);\n        const g = angularFrequency(Math.pow(derivativeUndampedFrequency, 2), dampingRatio);\n        const factor = -envelope(derivativeUndampedFrequency) + epsilon > 0 ? -1 : 1;\n        return factor * ((d - e) * f) / g;\n      };\n    } else {\n      envelope = function(envelopeUndampedFrequency) {\n        const a = Math.exp(-envelopeUndampedFrequency * duration);\n        const b = (envelopeUndampedFrequency - velocity) * duration + 1;\n        return -epsilon + a * b;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const a = Math.exp(-derivativeUndampedFrequency * duration);\n        const b = (velocity - derivativeUndampedFrequency) * Math.pow(duration, 2);\n        return a * b;\n      };\n    }\n    const result = {\n      tension: 100,\n      friction: 10,\n      velocity\n    };\n    const initialGuess = 5 / duration;\n    const undampedFrequency = approximateRoot(envelope, derivative, initialGuess);\n    if (!isNaN(undampedFrequency)) {\n      result.tension = Math.pow(undampedFrequency, 2) * mass;\n      result.friction = dampingRatio * 2 * Math.sqrt(mass * result.tension);\n    }\n    return result;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringAnimator.ts\nvar SpringTensionFrictionDefaults = {\n  tension: 500,\n  friction: 10,\n  tolerance: 1 / 1e4,\n  velocity: 0\n};\nvar SpringDampingDurationDefaults = {\n  dampingRatio: 1,\n  duration: 1,\n  velocity: 0,\n  mass: 1\n};\nfunction isDampingDurationSpringOptions(options) {\n  if (!options) {\n    return false;\n  }\n  return typeof options.dampingRatio === \"number\" || typeof options.duration === \"number\" || typeof options.mass === \"number\";\n}\nvar SpringAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    let _opt;\n    if (isDampingDurationSpringOptions(options)) {\n      const toPass = { ...SpringDampingDurationDefaults, ...options };\n      _opt = SpringCurveValueConverter.computeDerivedCurveOptions(\n        toPass.dampingRatio,\n        toPass.duration,\n        toPass.velocity,\n        toPass.mass\n      );\n    } else {\n      _opt = options;\n    }\n    this.options = { ...SpringTensionFrictionDefaults, ..._opt };\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -this.options.tension * state.x - this.options.friction * state.v);\n  }\n  isReady() {\n    return this.interpolator !== void 0 && this.difference !== void 0;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    const value = this.interpolator(this.progress());\n    return value;\n  }\n  isFinished() {\n    const positionNearZero = Math.abs(this.state.x) < this.options.tolerance;\n    const velocityNearZero = Math.abs(this.state.v) < this.options.tolerance;\n    return positionNearZero && velocityNearZero;\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  progress() {\n    return 1 - this.state.x / this.difference;\n  }\n  setTo(value) {\n    this.destination = value;\n    this.difference = this.interpolation.difference(this.destination, this.current);\n    this.state.x = this.difference;\n    this.updateInterpolator();\n  }\n  getState() {\n    return this.state;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n};\n\n// ../../library/src/animation/Animators/InertialScrollAnimator.ts\nvar Defaults = {\n  velocity: 0,\n  min: 0,\n  max: 0,\n  momentum: {\n    friction: 2,\n    tolerance: 10\n  },\n  bounce: {\n    tension: 500,\n    friction: 10,\n    tolerance: 1\n  }\n};\nvar InertialScrollAnimator = class {\n  constructor(options) {\n    this.options = Object.assign({ ...Defaults }, options);\n    this.frictionAnimator = new FrictionAnimator({\n      friction: this.options.momentum.friction,\n      tolerance: this.options.momentum.tolerance,\n      velocity: this.options.velocity\n    });\n    this.springAnimator = new SpringAnimator(\n      {\n        tension: this.options.bounce.tension,\n        friction: this.options.bounce.friction,\n        tolerance: this.options.bounce.tolerance,\n        velocity: this.options.velocity\n      },\n      NumberInterpolation\n    );\n    this.useSpring = false;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.current = this.currentAnimator.next(delta);\n    if (!this.useSpring) {\n      this.tryTransitionToSpring();\n    }\n    return this.current;\n  }\n  get currentAnimator() {\n    if (this.useSpring) {\n      return this.springAnimator;\n    }\n    return this.frictionAnimator;\n  }\n  isFinished() {\n    return this.currentAnimator.isFinished();\n  }\n  get state() {\n    return this.currentAnimator.getState();\n  }\n  setFrom(value) {\n    this.setState({ x: value, v: this.state.v });\n  }\n  setState(state) {\n    this.frictionAnimator.setFrom(state.x);\n    this.frictionAnimator.setVelocity(state.v);\n    if (this.isValidState()) {\n      return this.tryTransitionToSpring();\n    } else {\n      let bound = 0;\n      if (this.state.x <= this.options.min) {\n        bound = this.options.min;\n      }\n      if (this.state.x >= this.options.max) {\n        bound = this.options.max;\n      }\n      return this.transitionToSpring(bound);\n    }\n  }\n  setTo(destination) {\n    this.frictionAnimator.setTo(destination);\n    this.springAnimator.setTo(destination);\n  }\n  setLimits(min, max) {\n    this.options.min = min;\n    this.options.max = max;\n  }\n  tryTransitionToSpring() {\n    const belowMinWithVelocity = this.state.x < this.options.min && this.state.v <= 0;\n    const aboveMaxWithVelocity = this.state.x > this.options.max && this.state.v >= 0;\n    if (belowMinWithVelocity || aboveMaxWithVelocity) {\n      let bound;\n      if (belowMinWithVelocity) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      this.transitionToSpring(bound);\n    } else {\n      this.useSpring = false;\n    }\n  }\n  transitionToSpring(bound) {\n    this.springAnimator.setFrom(this.state.x);\n    this.springAnimator.setVelocity(this.state.v);\n    this.springAnimator.setTo(bound);\n    this.useSpring = true;\n  }\n  isValidState() {\n    const belowMinTravelingBack = this.state.x < this.options.min && this.state.v > 0;\n    const aboveMaxTravelingBack = this.state.x > this.options.max && this.state.v < 0;\n    if (belowMinTravelingBack || aboveMaxTravelingBack) {\n      let bound;\n      if (belowMinTravelingBack) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      const friction = this.frictionAnimator.options.friction;\n      const solution = 1 - friction * (bound - this.state.x) / this.state.v;\n      return solution > 0;\n    }\n    return true;\n  }\n};\n\n// ../../library/src/render/types/Color/converters.ts\nvar import_hsluv = __toESM(require_hsluv(), 1);\n\n// ../../library/src/render/types/Color/CSSNames.ts\nvar cssNames = {\n  aliceblue: \"f0f8ff\",\n  antiquewhite: \"faebd7\",\n  aqua: \"0ff\",\n  aquamarine: \"7fffd4\",\n  azure: \"f0ffff\",\n  beige: \"f5f5dc\",\n  bisque: \"ffe4c4\",\n  black: \"000\",\n  blanchedalmond: \"ffebcd\",\n  blue: \"00f\",\n  blueviolet: \"8a2be2\",\n  brown: \"a52a2a\",\n  burlywood: \"deb887\",\n  burntsienna: \"ea7e5d\",\n  cadetblue: \"5f9ea0\",\n  chartreuse: \"7fff00\",\n  chocolate: \"d2691e\",\n  coral: \"ff7f50\",\n  cornflowerblue: \"6495ed\",\n  cornsilk: \"fff8dc\",\n  crimson: \"dc143c\",\n  cyan: \"0ff\",\n  darkblue: \"00008b\",\n  darkcyan: \"008b8b\",\n  darkgoldenrod: \"b8860b\",\n  darkgray: \"a9a9a9\",\n  darkgreen: \"006400\",\n  darkgrey: \"a9a9a9\",\n  darkkhaki: \"bdb76b\",\n  darkmagenta: \"8b008b\",\n  darkolivegreen: \"556b2f\",\n  darkorange: \"ff8c00\",\n  darkorchid: \"9932cc\",\n  darkred: \"8b0000\",\n  darksalmon: \"e9967a\",\n  darkseagreen: \"8fbc8f\",\n  darkslateblue: \"483d8b\",\n  darkslategray: \"2f4f4f\",\n  darkslategrey: \"2f4f4f\",\n  darkturquoise: \"00ced1\",\n  darkviolet: \"9400d3\",\n  deeppink: \"ff1493\",\n  deepskyblue: \"00bfff\",\n  dimgray: \"696969\",\n  dimgrey: \"696969\",\n  dodgerblue: \"1e90ff\",\n  firebrick: \"b22222\",\n  floralwhite: \"fffaf0\",\n  forestgreen: \"228b22\",\n  fuchsia: \"f0f\",\n  gainsboro: \"dcdcdc\",\n  ghostwhite: \"f8f8ff\",\n  gold: \"ffd700\",\n  goldenrod: \"daa520\",\n  gray: \"808080\",\n  green: \"008000\",\n  greenyellow: \"adff2f\",\n  grey: \"808080\",\n  honeydew: \"f0fff0\",\n  hotpink: \"ff69b4\",\n  indianred: \"cd5c5c\",\n  indigo: \"4b0082\",\n  ivory: \"fffff0\",\n  khaki: \"f0e68c\",\n  lavender: \"e6e6fa\",\n  lavenderblush: \"fff0f5\",\n  lawngreen: \"7cfc00\",\n  lemonchiffon: \"fffacd\",\n  lightblue: \"add8e6\",\n  lightcoral: \"f08080\",\n  lightcyan: \"e0ffff\",\n  lightgoldenrodyellow: \"fafad2\",\n  lightgray: \"d3d3d3\",\n  lightgreen: \"90ee90\",\n  lightgrey: \"d3d3d3\",\n  lightpink: \"ffb6c1\",\n  lightsalmon: \"ffa07a\",\n  lightseagreen: \"20b2aa\",\n  lightskyblue: \"87cefa\",\n  lightslategray: \"789\",\n  lightslategrey: \"789\",\n  lightsteelblue: \"b0c4de\",\n  lightyellow: \"ffffe0\",\n  lime: \"0f0\",\n  limegreen: \"32cd32\",\n  linen: \"faf0e6\",\n  magenta: \"f0f\",\n  maroon: \"800000\",\n  mediumaquamarine: \"66cdaa\",\n  mediumblue: \"0000cd\",\n  mediumorchid: \"ba55d3\",\n  mediumpurple: \"9370db\",\n  mediumseagreen: \"3cb371\",\n  mediumslateblue: \"7b68ee\",\n  mediumspringgreen: \"00fa9a\",\n  mediumturquoise: \"48d1cc\",\n  mediumvioletred: \"c71585\",\n  midnightblue: \"191970\",\n  mintcream: \"f5fffa\",\n  mistyrose: \"ffe4e1\",\n  moccasin: \"ffe4b5\",\n  navajowhite: \"ffdead\",\n  navy: \"000080\",\n  oldlace: \"fdf5e6\",\n  olive: \"808000\",\n  olivedrab: \"6b8e23\",\n  orange: \"ffa500\",\n  orangered: \"ff4500\",\n  orchid: \"da70d6\",\n  palegoldenrod: \"eee8aa\",\n  palegreen: \"98fb98\",\n  paleturquoise: \"afeeee\",\n  palevioletred: \"db7093\",\n  papayawhip: \"ffefd5\",\n  peachpuff: \"ffdab9\",\n  peru: \"cd853f\",\n  pink: \"ffc0cb\",\n  plum: \"dda0dd\",\n  powderblue: \"b0e0e6\",\n  purple: \"800080\",\n  rebeccapurple: \"663399\",\n  red: \"f00\",\n  rosybrown: \"bc8f8f\",\n  royalblue: \"4169e1\",\n  saddlebrown: \"8b4513\",\n  salmon: \"fa8072\",\n  sandybrown: \"f4a460\",\n  seagreen: \"2e8b57\",\n  seashell: \"fff5ee\",\n  sienna: \"a0522d\",\n  silver: \"c0c0c0\",\n  skyblue: \"87ceeb\",\n  slateblue: \"6a5acd\",\n  slategray: \"708090\",\n  slategrey: \"708090\",\n  snow: \"fffafa\",\n  springgreen: \"00ff7f\",\n  steelblue: \"4682b4\",\n  tan: \"d2b48c\",\n  teal: \"008080\",\n  thistle: \"d8bfd8\",\n  tomato: \"ff6347\",\n  turquoise: \"40e0d0\",\n  violet: \"ee82ee\",\n  wheat: \"f5deb3\",\n  white: \"fff\",\n  whitesmoke: \"f5f5f5\",\n  yellow: \"ff0\",\n  yellowgreen: \"9acd32\"\n};\n\n// ../../library/src/render/types/Color/types.ts\nvar ColorFormat = /* @__PURE__ */ ((ColorFormat2) => {\n  ColorFormat2[\"RGB\"] = \"rgb\";\n  ColorFormat2[\"HSL\"] = \"hsl\";\n  ColorFormat2[\"HSV\"] = \"hsv\";\n  ColorFormat2[\"HEX\"] = \"hex\";\n  ColorFormat2[\"NAME\"] = \"name\";\n  return ColorFormat2;\n})(ColorFormat || {});\nvar ColorMixModelType = /* @__PURE__ */ ((ColorMixModelType2) => {\n  ColorMixModelType2[\"RGB\"] = \"rgb\";\n  ColorMixModelType2[\"RGBA\"] = \"rgba\";\n  ColorMixModelType2[\"HSL\"] = \"hsl\";\n  ColorMixModelType2[\"HSLA\"] = \"hsla\";\n  ColorMixModelType2[\"HUSL\"] = \"husl\";\n  return ColorMixModelType2;\n})(ColorMixModelType || {});\n\n// ../../library/src/render/types/Color/Utils.ts\nfunction modulate(value, rangeA, rangeB, limit = false) {\n  const [fromLow, fromHigh] = rangeA;\n  const [toLow, toHigh] = rangeB;\n  const fromDelta = fromHigh - fromLow;\n  if (fromDelta === 0)\n    return (toHigh + toLow) / 2;\n  const toDelta = toHigh - toLow;\n  if (toDelta === 0)\n    return toLow;\n  const result = toLow + (value - fromLow) / fromDelta * toDelta;\n  if (limit === true) {\n    if (toLow < toHigh) {\n      if (result < toLow) {\n        return toLow;\n      }\n      if (result > toHigh) {\n        return toHigh;\n      }\n    } else {\n      if (result > toLow) {\n        return toLow;\n      }\n      if (result < toHigh) {\n        return toHigh;\n      }\n    }\n  }\n  return result;\n}\nfunction isNumeric(value) {\n  return !isNaN(value) && isFinite(value);\n}\nfunction percentToFraction(val) {\n  const digits = numberFromString(val);\n  if (digits !== void 0) {\n    if (val.includes(\"%\")) {\n      return digits / 100;\n    }\n    return digits;\n  }\n  return 0;\n}\nfunction numberFromString(input) {\n  const match = input.match(/\\d?\\.?\\d+/);\n  return match ? Number(match[0]) : void 0;\n}\n\n// ../../library/src/render/types/Color/converters.ts\nvar { hsluvToRgb, rgbToHsluv: rgbToHsluvExternal } = import_hsluv.default;\nfunction rgbToHsluv(r, g, b) {\n  const [h, s, l] = rgbToHsluvExternal([r / 255, g / 255, b / 255]);\n  return { h, s, l };\n}\nfunction rgbaFromHusl(h, s, l, a = 1) {\n  const rgb = hsluvToRgb([h, s, l]);\n  return {\n    r: rgb[0] * 255,\n    g: rgb[1] * 255,\n    b: rgb[2] * 255,\n    a\n  };\n}\nfunction hsvToStr(h, s, v, a) {\n  const _h = Math.round(h);\n  const _s = Math.round(s * 100);\n  const _v = Math.round(v * 100);\n  return a === void 0 || a === 1 ? \"hsv(\" + _h + \", \" + _s + \"%, \" + _v + \"%)\" : \"hsva(\" + _h + \", \" + _s + \"%, \" + _v + \"%, \" + a + \")\";\n}\nfunction rgbToRgb(r, g, b) {\n  return {\n    r: isNumeric(r) ? bound01(r, 255) * 255 : 0,\n    g: isNumeric(g) ? bound01(g, 255) * 255 : 0,\n    b: isNumeric(b) ? bound01(b, 255) * 255 : 0\n  };\n}\nfunction rgbToHex(r, g, b, allow3Char) {\n  const hex2 = [\n    pad2(Math.round(r).toString(16)),\n    pad2(Math.round(g).toString(16)),\n    pad2(Math.round(b).toString(16))\n  ];\n  if (allow3Char && hex2[0].charAt(0) === hex2[0].charAt(1) && hex2[1].charAt(0) === hex2[1].charAt(1) && hex2[2].charAt(0) === hex2[2].charAt(1)) {\n    return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0);\n  }\n  return hex2.join(\"\");\n}\nfunction rgbToHsl(r, g, b) {\n  let l;\n  let s;\n  const _r = bound01(r, 255);\n  const _g = bound01(g, 255);\n  const _b = bound01(b, 255);\n  const max = Math.max(_r, _g, _b);\n  const min = Math.min(_r, _g, _b);\n  let h = s = l = (max + min) / 2;\n  if (max === min) {\n    h = s = 0;\n  } else {\n    const d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    switch (max) {\n      case _r:\n        h = (_g - _b) / d + (_g < _b ? 6 : 0);\n        break;\n      case _g:\n        h = (_b - _r) / d + 2;\n        break;\n      case _b:\n        h = (_r - _g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h: h * 360, s, l };\n}\nfunction hue2rgb(p, q, t) {\n  if (t < 0) {\n    t += 1;\n  }\n  if (t > 1) {\n    t -= 1;\n  }\n  if (t < 1 / 6) {\n    return p + (q - p) * 6 * t;\n  }\n  if (t < 1 / 2) {\n    return q;\n  }\n  if (t < 2 / 3) {\n    return p + (q - p) * (2 / 3 - t) * 6;\n  }\n  return p;\n}\nfunction hslToRgb(h, s, l) {\n  let r;\n  let g;\n  let b;\n  h = bound01(h, 360);\n  s = bound01(s * 100, 100);\n  l = bound01(l * 100, 100);\n  if (s === 0) {\n    r = g = b = l;\n  } else {\n    const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    const p = 2 * l - q;\n    r = hue2rgb(p, q, h + 1 / 3);\n    g = hue2rgb(p, q, h);\n    b = hue2rgb(p, q, h - 1 / 3);\n  }\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction rgbToHsv(r, g, b) {\n  r = bound01(r, 255);\n  g = bound01(g, 255);\n  b = bound01(b, 255);\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const d = max - min;\n  let h;\n  const s = max === 0 ? 0 : d / max;\n  const v = max;\n  if (max === min) {\n    h = 0;\n  } else {\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h, s, v };\n}\nfunction hsvToRgb(h, s, v) {\n  h = bound01(h, 360) * 6;\n  s = bound01(s * 100, 100);\n  v = bound01(v * 100, 100);\n  const i = Math.floor(h);\n  const f = h - i;\n  const p = v * (1 - s);\n  const q = v * (1 - f * s);\n  const t = v * (1 - (1 - f) * s);\n  const mod = i % 6;\n  const r = [v, q, p, p, t, v][mod];\n  const g = [t, v, v, q, p, p][mod];\n  const b = [p, p, t, v, v, q][mod];\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction bound01(n, max) {\n  let _max;\n  let _n;\n  if (typeof max === \"string\")\n    _max = parseFloat(max);\n  else\n    _max = max;\n  if (typeof n === \"string\") {\n    if (isOnePointZero(n)) {\n      n = \"100%\";\n    }\n    const processPercent = isPercentage(n);\n    _n = Math.min(_max, Math.max(0, parseFloat(n)));\n    if (processPercent) {\n      _n = Math.floor(_n * _max) / 100;\n    }\n  } else {\n    _n = n;\n  }\n  if (Math.abs(_n - _max) < 1e-6) {\n    return 1;\n  }\n  return _n % _max / _max;\n}\nfunction isOnePointZero(n) {\n  return typeof n === \"string\" && n.includes(\".\") && parseFloat(n) === 1;\n}\nfunction isPercentage(n) {\n  return typeof n === \"string\" && n.includes(\"%\");\n}\nfunction pad2(char) {\n  if (char.length === 1) {\n    return \"0\" + char;\n  } else {\n    return \"\" + char;\n  }\n}\nvar matchers = function() {\n  const cssInteger = \"[-\\\\+]?\\\\d+%?\";\n  const cssNumber = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n  const cssUnit = \"(?:\" + cssNumber + \")|(?:\" + cssInteger + \")\";\n  const permissiveMatch3 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  const permissiveMatch4 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  return {\n    rgb: new RegExp(\"rgb\" + permissiveMatch3),\n    rgba: new RegExp(\"rgba\" + permissiveMatch4),\n    hsl: new RegExp(\"hsl\" + permissiveMatch3),\n    hsla: new RegExp(\"hsla\" + permissiveMatch4),\n    hsv: new RegExp(\"hsv\" + permissiveMatch3),\n    hsva: new RegExp(\"hsva\" + permissiveMatch4),\n    hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n  };\n}();\nfunction stringToObject(inputColor) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B;\n  if (inputColor.includes(\"gradient(\"))\n    return false;\n  if (inputColor.includes(\"var(\"))\n    return false;\n  const trimLeft = /^[\\s,#]+/;\n  const trimRight = /\\s+$/;\n  let color2 = inputColor.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n  let named = false;\n  if (cssNames[color2]) {\n    color2 = cssNames[color2];\n    named = true;\n  }\n  if (color2 === \"transparent\") {\n    return {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 0,\n      format: \"name\" /* NAME */\n    };\n  }\n  let match;\n  if (match = matchers.rgb.exec(color2)) {\n    return {\n      r: parseInt((_a = match[1]) != null ? _a : \"\"),\n      g: parseInt((_b = match[2]) != null ? _b : \"\"),\n      b: parseInt((_c = match[3]) != null ? _c : \"\"),\n      a: 1,\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.rgba.exec(color2)) {\n    return {\n      r: parseInt((_d = match[1]) != null ? _d : \"\"),\n      g: parseInt((_e = match[2]) != null ? _e : \"\"),\n      b: parseInt((_f = match[3]) != null ? _f : \"\"),\n      a: parseFloat((_g = match[4]) != null ? _g : \"\"),\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.hsl.exec(color2)) {\n    return {\n      h: parseInt((_h = match[1]) != null ? _h : \"\"),\n      s: percentToFraction((_i = match[2]) != null ? _i : \"\"),\n      l: percentToFraction((_j = match[3]) != null ? _j : \"\"),\n      a: 1,\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsla.exec(color2)) {\n    return {\n      h: parseInt((_k = match[1]) != null ? _k : \"\"),\n      s: percentToFraction((_l = match[2]) != null ? _l : \"\"),\n      l: percentToFraction((_m = match[3]) != null ? _m : \"\"),\n      a: parseFloat((_n = match[4]) != null ? _n : \"\"),\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsv.exec(color2)) {\n    return {\n      h: parseInt((_o = match[1]) != null ? _o : \"\"),\n      s: percentToFraction((_p = match[2]) != null ? _p : \"\"),\n      v: percentToFraction((_q = match[3]) != null ? _q : \"\"),\n      a: 1,\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hsva.exec(color2)) {\n    return {\n      h: parseInt((_r = match[1]) != null ? _r : \"\"),\n      s: percentToFraction((_s = match[2]) != null ? _s : \"\"),\n      v: percentToFraction((_t = match[3]) != null ? _t : \"\"),\n      a: parseFloat((_u = match[4]) != null ? _u : \"\"),\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hex8.exec(color2)) {\n    return {\n      r: parseIntFromHex((_v = match[1]) != null ? _v : \"\"),\n      g: parseIntFromHex((_w = match[2]) != null ? _w : \"\"),\n      b: parseIntFromHex((_x = match[3]) != null ? _x : \"\"),\n      a: convertHexToDecimal((_y = match[4]) != null ? _y : \"\"),\n      format: named ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex6.exec(color2)) {\n    return {\n      r: parseIntFromHex((_z = match[1]) != null ? _z : \"\"),\n      g: parseIntFromHex((_A = match[2]) != null ? _A : \"\"),\n      b: parseIntFromHex((_B = match[3]) != null ? _B : \"\"),\n      a: 1,\n      format: named ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex4.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: convertHexToDecimal(match[4] + \"\" + match[4]),\n      format: named ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex3.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: 1,\n      format: named ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  } else {\n    return false;\n  }\n}\nfunction parseIntFromHex(hex2) {\n  return parseInt(hex2, 16);\n}\nfunction convertHexToDecimal(h) {\n  return parseIntFromHex(h) / 255;\n}\n\n// ../../library/src/render/types/Color/Color.ts\nvar cache = /* @__PURE__ */ new Map();\nvar Color = /* @__PURE__ */ (() => {\n  function Color2(color2, r, g, b) {\n    if (typeof color2 === \"string\") {\n      let c = cache.get(color2);\n      if (c)\n        return c;\n      c = createColor(color2);\n      if (c === void 0)\n        return { ...Color2(\"black\"), isValid: false };\n      cache.set(color2, c);\n      return c;\n    }\n    const created = createColor(color2, r, g, b);\n    return created !== void 0 ? created : { ...Color2(\"black\"), isValid: false };\n  }\n  function createColor(color2, r, g, b) {\n    if (color2 === \"\")\n      return void 0;\n    const colorData = getCompleteColorStrategy(color2, r, g, b);\n    if (colorData) {\n      const newColor = {\n        r: colorData.r,\n        g: colorData.g,\n        b: colorData.b,\n        a: colorData.a,\n        h: colorData.h,\n        s: colorData.s,\n        l: colorData.l,\n        initialValue: typeof color2 === \"string\" && colorData.format !== \"hsv\" /* HSV */ ? color2 : void 0,\n        roundA: Math.round(100 * colorData.a) / 100,\n        format: colorData.format,\n        mix: Color2.mix,\n        toValue: () => Color2.toRgbString(newColor)\n      };\n      return newColor;\n    } else {\n      return void 0;\n    }\n  }\n  const ColorMixModel = {\n    isRGB(colorModel) {\n      return colorModel === \"rgb\" /* RGB */ || colorModel === \"rgba\" /* RGBA */;\n    },\n    isHSL(colorModel) {\n      return colorModel === \"hsl\" /* HSL */ || colorModel === \"hsla\" /* HSLA */;\n    }\n  };\n  Color2.inspect = (color2, initialValue) => {\n    if (color2.format === \"hsl\" /* HSL */) {\n      return `<${color2.constructor.name} h:${color2.h} s:${color2.s} l:${color2.l} a:${color2.a}>`;\n    } else if (color2.format === \"hex\" /* HEX */ || color2.format === \"name\" /* NAME */) {\n      return `<${color2.constructor.name} \"${initialValue}\">`;\n    } else {\n      return `<${color2.constructor.name} r:${color2.r} g:${color2.g} b:${color2.b} a:${color2.a}>`;\n    }\n  };\n  Color2.isColor = (color2) => {\n    if (typeof color2 === \"string\") {\n      return Color2.isColorString(color2);\n    } else {\n      return Color2.isColorObject(color2);\n    }\n  };\n  Color2.isColorString = (colorString) => {\n    if (typeof colorString === \"string\") {\n      return stringToObject(colorString) !== false;\n    }\n    return false;\n  };\n  Color2.isColorObject = (color2) => {\n    return color2 && typeof color2 !== \"string\" && typeof color2.r === \"number\" && typeof color2.g === \"number\" && typeof color2.b === \"number\" && typeof color2.h === \"number\" && typeof color2.s === \"number\" && typeof color2.l === \"number\" && typeof color2.a === \"number\" && typeof color2.roundA === \"number\" && typeof color2.format === \"string\";\n  };\n  Color2.toString = (color2) => {\n    return Color2.toRgbString(color2);\n  };\n  Color2.toHex = (color2, allow3Char = false) => {\n    return rgbToHex(color2.r, color2.g, color2.b, allow3Char);\n  };\n  Color2.toHexString = (color2, allow3Char = false) => {\n    return `#${Color2.toHex(color2, allow3Char)}`;\n  };\n  Color2.toRgbString = (color2) => {\n    return color2.a === 1 ? \"rgb(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \")\" : \"rgba(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \", \" + color2.roundA + \")\";\n  };\n  Color2.toHusl = (color2) => {\n    return {\n      ...rgbToHsluv(color2.r, color2.g, color2.b),\n      a: color2.roundA\n    };\n  };\n  Color2.toHslString = (color2) => {\n    const hsl = Color2.toHsl(color2);\n    const h = Math.round(hsl.h);\n    const s = Math.round(hsl.s * 100);\n    const l = Math.round(hsl.l * 100);\n    return color2.a === 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toHsv = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: color2.a };\n  };\n  Color2.toHsvString = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    const h = Math.round(hsv.h * 360);\n    const s = Math.round(hsv.s * 100);\n    const v = Math.round(hsv.v * 100);\n    return color2.a === 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toName = (color2) => {\n    if (color2.a === 0) {\n      return \"transparent\";\n    }\n    if (color2.a < 1) {\n      return false;\n    }\n    const hex2 = rgbToHex(color2.r, color2.g, color2.b, true);\n    for (const key7 of Object.keys(cssNames)) {\n      const value = cssNames[key7];\n      if (value === hex2) {\n        return key7;\n      }\n    }\n    return false;\n  };\n  Color2.toHsl = (color2) => {\n    return {\n      h: Math.round(color2.h),\n      s: color2.s,\n      l: color2.l,\n      a: color2.a\n    };\n  };\n  Color2.toRgb = (color2) => {\n    return {\n      r: Math.round(color2.r),\n      g: Math.round(color2.g),\n      b: Math.round(color2.b),\n      a: color2.a\n    };\n  };\n  Color2.brighten = (color2, amount = 10) => {\n    const rgb = Color2.toRgb(color2);\n    rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n    rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n    rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n    return Color2(rgb);\n  };\n  Color2.lighten = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l += amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.darken = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l -= amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.saturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s += amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.desaturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s -= amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.grayscale = (color2) => {\n    return Color2.desaturate(color2, 100);\n  };\n  Color2.hueRotate = (color2, angle) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.h += angle;\n    hsl.h = hsl.h > 360 ? hsl.h - 360 : hsl.h;\n    return Color2(hsl);\n  };\n  Color2.alpha = (color2, a = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a\n    });\n  };\n  Color2.transparent = (color2) => {\n    return Color2.alpha(color2, 0);\n  };\n  Color2.multiplyAlpha = (color2, alphaValue = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a: color2.a * alphaValue\n    });\n  };\n  Color2.interpolate = (colorA, colorB, model = \"rgb\" /* RGB */) => {\n    if (!Color2.isColorObject(colorA) || !Color2.isColorObject(colorB)) {\n      throw new TypeError(\"Both arguments for Color.interpolate must be Color objects\");\n    }\n    return (progress2) => {\n      const color2 = Color2.mixAsColor(colorA, colorB, progress2, false, model);\n      return color2;\n    };\n  };\n  Color2.mix = (from, toColor, { model = \"rgb\" /* RGB */ } = {}) => {\n    const fromColor = typeof from === \"string\" ? Color2(from) : from;\n    const mixer = Color2.interpolate(fromColor, toColor, model);\n    return (p) => Color2.toRgbString(mixer(p));\n  };\n  Color2.mixAsColor = (colorA, colorB, fraction2 = 0.5, limit = false, model = \"rgb\" /* RGB */) => {\n    let result = null;\n    if (ColorMixModel.isRGB(model)) {\n      result = Color2({\n        r: modulate(fraction2, [0, 1], [colorA.r, colorB.r], limit),\n        g: modulate(fraction2, [0, 1], [colorA.g, colorB.g], limit),\n        b: modulate(fraction2, [0, 1], [colorA.b, colorB.b], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      });\n    } else {\n      let hslA, hslB;\n      if (ColorMixModel.isHSL(model)) {\n        hslA = Color2.toHsl(colorA);\n        hslB = Color2.toHsl(colorB);\n      } else {\n        hslA = Color2.toHusl(colorA);\n        hslB = Color2.toHusl(colorB);\n      }\n      if (hslA.s === 0) {\n        hslA.h = hslB.h;\n      } else if (hslB.s === 0) {\n        hslB.h = hslA.h;\n      }\n      const fromH = hslA.h;\n      const toH = hslB.h;\n      let deltaH = toH - fromH;\n      if (deltaH > 180) {\n        deltaH = toH - 360 - fromH;\n      } else if (deltaH < -180) {\n        deltaH = toH + 360 - fromH;\n      }\n      const tween = {\n        h: modulate(fraction2, [0, 1], [fromH, fromH + deltaH], limit),\n        s: modulate(fraction2, [0, 1], [hslA.s, hslB.s], limit),\n        l: modulate(fraction2, [0, 1], [hslA.l, hslB.l], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      };\n      if (ColorMixModel.isHSL(model)) {\n        result = Color2(tween);\n      } else {\n        result = Color2(rgbaFromHusl(tween.h, tween.s, tween.l, tween.a));\n      }\n    }\n    return result;\n  };\n  Color2.random = (alphaValue = 1) => {\n    function gen() {\n      return Math.floor(Math.random() * 255);\n    }\n    return Color2(\"rgba(\" + gen() + \", \" + gen() + \", \" + gen() + \", \" + alphaValue + \")\");\n  };\n  Color2.grey = (amount = 0.5, alphaValue = 1) => {\n    amount = Math.floor(amount * 255);\n    return Color2(\"rgba(\" + amount + \", \" + amount + \", \" + amount + \", \" + alphaValue + \")\");\n  };\n  Color2.gray = Color2.grey;\n  Color2.rgbToHsl = (r, g, b) => {\n    return rgbToHsl(r, g, b);\n  };\n  Color2.isValidColorProperty = (name, value) => {\n    const isColorKey = name.toLowerCase().slice(-5) === \"color\" || name === \"fill\" || name === \"stroke\";\n    if (isColorKey && typeof value === \"string\" && Color2.isColorString(value)) {\n      return true;\n    }\n    return false;\n  };\n  Color2.difference = (colorA, colorB) => {\n    const _r = (colorA.r + colorB.r) / 2;\n    const deltaR = colorA.r - colorB.r;\n    const deltaG = colorA.g - colorB.g;\n    const deltaB = colorA.b - colorB.b;\n    const deltaR2 = Math.pow(deltaR, 2);\n    const deltaG2 = Math.pow(deltaG, 2);\n    const deltaB2 = Math.pow(deltaB, 2);\n    return Math.sqrt(2 * deltaR2 + 4 * deltaG2 + 3 * deltaB2 + _r * (deltaR2 - deltaB2) / 256);\n  };\n  Color2.equal = (colorA, colorB, tolerance = 0.1) => {\n    if (Math.abs(colorA.r - colorB.r) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.g - colorB.g) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.b - colorB.b) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.a - colorB.a) * 256 >= tolerance) {\n      return false;\n    }\n    return true;\n  };\n  return Color2;\n})();\nfunction getCompleteColorStrategy(colorOrR, g, b, a = 1) {\n  let completeColor;\n  if (typeof colorOrR === \"number\" && !Number.isNaN(colorOrR) && typeof g === \"number\" && !Number.isNaN(g) && typeof b === \"number\" && !Number.isNaN(b)) {\n    const _r = colorOrR;\n    const _g = g;\n    const _b = b;\n    const _a = a;\n    completeColor = getCompleteColorFromRGB({ r: _r, g: _g, b: _b, a: _a });\n  } else if (typeof colorOrR === \"string\") {\n    completeColor = getCompleteColorFromString(colorOrR);\n  } else if (typeof colorOrR === \"object\") {\n    if (colorOrR.hasOwnProperty(\"r\") && colorOrR.hasOwnProperty(\"g\") && colorOrR.hasOwnProperty(\"b\")) {\n      completeColor = getCompleteColorFromRGB(colorOrR);\n    } else {\n      completeColor = getCompleteColorFromHSL(colorOrR);\n    }\n  }\n  return completeColor;\n}\nfunction getCompleteColorFromString(color2) {\n  const result = stringToObject(color2);\n  if (result) {\n    if (result.format === \"hsl\" /* HSL */) {\n      return getCompleteColorFromHSL(result);\n    } else if (result.format === \"hsv\" /* HSV */) {\n      return getCompleteColorFromHSV(result);\n    } else {\n      return getCompleteColorFromRGB(result);\n    }\n  }\n}\nfunction getCompleteColorFromHSV(color2) {\n  const rgb = hsvToRgb(color2.h, color2.s, color2.v);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromRGB(color2) {\n  const rgb = rgbToRgb(color2.r, color2.g, color2.b);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromHSL(color2) {\n  let h;\n  let s;\n  let l;\n  let rgb = { r: 0, g: 0, b: 0 };\n  let hsl = { h: 0, s: 0, l: 0 };\n  h = isNumeric(color2.h) ? color2.h : 0;\n  h = (h + 360) % 360;\n  s = isNumeric(color2.s) ? color2.s : 1;\n  if (typeof color2.s === \"string\") {\n    s = numberFromString(color2.s);\n  }\n  l = isNumeric(color2.l) ? color2.l : 0.5;\n  if (typeof color2.l === \"string\") {\n    l = numberFromString(color2.l);\n  }\n  rgb = hslToRgb(h, s, l);\n  hsl = {\n    h,\n    s,\n    l\n  };\n  return {\n    ...rgb,\n    ...hsl,\n    a: color2.a === void 0 ? 1 : color2.a,\n    format: \"hsl\" /* HSL */\n  };\n}\nfunction correctAlpha(alphaValue) {\n  alphaValue = parseFloat(alphaValue);\n  if (alphaValue < 0) {\n    alphaValue = 0;\n  }\n  if (isNaN(alphaValue) || alphaValue > 1) {\n    alphaValue = 1;\n  }\n  return alphaValue;\n}\n\n// ../../library/src/interpolation/ColorInterpolation.ts\nvar ColorInterpolation = (type = \"husl\" /* HUSL */) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return Color.interpolate(Color(from), Color(to), type);\n    },\n    difference(from, to) {\n      return Color.difference(Color(from), Color(to));\n    }\n  };\n};\n\n// ../../library/src/interpolation/NoInterpolation.ts\nvar NoInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    return (progress2) => {\n      return progress2 < 0.5 ? from : to;\n    };\n  },\n  difference(from, to) {\n    return from === to ? 0 : 1;\n  }\n};\n\n// ../../library/src/interpolation/ObjectInterpolation.ts\nvar ObjectInterpolation = (valueInterpolation) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      const result = Object.assign({}, from);\n      const interpolations = {};\n      const keys3 = /* @__PURE__ */ new Set();\n      for (const key7 in from) {\n        interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n        keys3.add(key7);\n      }\n      for (const key7 in to) {\n        if (!keys3.has(key7)) {\n          interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n          keys3.add(key7);\n        }\n      }\n      return (progress2) => {\n        for (const key7 in interpolations) {\n          result[key7] = interpolations[key7](progress2);\n        }\n        return result;\n      };\n    },\n    difference(from, to) {\n      let sum = 0;\n      for (const key7 in from) {\n        const difference = valueInterpolation.difference(from[key7], to[key7]);\n        sum += Math.pow(difference, 2);\n      }\n      return Math.sqrt(sum);\n    }\n  };\n};\n\n// ../../library/src/interpolation/ValueInterpolation.ts\nvar DefaultInterpolationOptions = {\n  colorModel: \"husl\" /* HUSL */\n};\nvar ValueInterpolation = class {\n  constructor(options = DefaultInterpolationOptions) {\n    this.interpolate = (from, to) => {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return this.interPolationForValue(from).interpolate(from, to);\n    };\n    this.difference = (from, to) => {\n      const interpolation = this.interPolationForValue(from);\n      return interpolation.difference(from, to);\n    };\n    this.options = { ...DefaultInterpolationOptions, ...options };\n  }\n  interPolationForValue(value) {\n    const type = typeof value;\n    if (type === \"number\") {\n      return NumberInterpolation;\n    } else if (type === \"boolean\" || type === \"function\") {\n      return NoInterpolation;\n    } else if (Color.isColor(value)) {\n      return ColorInterpolation(this.options.colorModel);\n    } else if (type === \"object\") {\n      if (value === null) {\n        return NoInterpolation;\n      }\n      const constructor = value.constructor;\n      if (constructor && isInterpolatable(constructor)) {\n        const interpolation = constructor.interpolationFor(value, this);\n        if (interpolation && interpolation !== this && interpolation.constructor !== ValueInterpolation) {\n          return interpolation;\n        }\n      }\n      return ObjectInterpolation(this);\n    }\n    console.warn(`No interpolation defined for ${value}`);\n    return NoInterpolation;\n  }\n};\nvar AnyInterpolation = /* @__PURE__ */ new ValueInterpolation();\n\n// ../../library/src/animation/Animators/PrecalculatedAnimator.ts\nvar Defaults2 = {\n  delta: 1 / 60,\n  maxValues: 1e4\n};\nvar PrecalculatedAnimator = class {\n  constructor(options) {\n    this.currentTime = 0;\n    this.options = { ...Defaults2, ...options };\n    this.animator = options.animator;\n  }\n  preCalculate() {\n    if (!this.animator.isReady()) {\n      return;\n    }\n    const { delta } = this.options;\n    this.values = [];\n    while (!this.animator.isFinished() && this.values.length < this.options.maxValues) {\n      let value = this.animator.next(this.options.delta);\n      if (typeof value === \"object\" && value) {\n        const object = value;\n        const copy = { ...object };\n        value = copy;\n      }\n      this.values.push(value);\n    }\n    this.totalTime = this.values.length * delta;\n  }\n  indexForTime(time2) {\n    return Math.max(\n      0,\n      Math.min(this.values.length - 1, Math.round(this.values.length * (time2 / this.totalTime)) - 1)\n    );\n  }\n  valueForTime(time2) {\n    const index = this.indexForTime(time2);\n    const value = this.values[index];\n    return value;\n  }\n  setFrom(value) {\n    this.animator.setFrom(value);\n    this.preCalculate();\n  }\n  setTo(end) {\n    this.animator.setTo(end);\n    this.preCalculate();\n  }\n  isReady() {\n    return this.values !== void 0 && this.values.length > 0 && this.totalTime > 0;\n  }\n  next(delta) {\n    this.currentTime += delta;\n    return this.valueForTime(this.currentTime);\n  }\n  isFinished() {\n    return this.totalTime === 0 || this.currentTime >= this.totalTime;\n  }\n  get endValue() {\n    this.preCalculate();\n    const value = this.valueForTime(this.totalTime);\n    return this.values.length > 0 ? value : this.animator.next(0);\n  }\n};\n\n// ../../library/src/utils/safeWindow.ts\nvar mockWindow = {\n  addEventListener: () => {\n  },\n  removeEventListener: () => {\n  },\n  dispatchEvent: () => false,\n  ResizeObserver: void 0,\n  onpointerdown: false,\n  onpointermove: false,\n  onpointerup: false,\n  ontouchstart: false,\n  ontouchmove: false,\n  ontouchend: false,\n  onmousedown: false,\n  onmousemove: false,\n  onmouseup: false,\n  devicePixelRatio: 1,\n  scrollX: 0,\n  scrollY: 0,\n  location: {\n    href: \"\"\n  },\n  setTimeout: () => 0,\n  clearTimeout: () => {\n  },\n  setInterval: () => 0,\n  clearInterval: () => {\n  },\n  requestAnimationFrame: () => 0,\n  cancelAnimationFrame: () => {\n  },\n  getSelection: () => null,\n  matchMedia: (query) => {\n    return {\n      matches: false,\n      media: query,\n      onchange: () => {\n      },\n      addEventListener: () => {\n      },\n      removeEventListener: () => {\n      },\n      addListener: () => {\n      },\n      removeListener: () => {\n      },\n      dispatchEvent: () => false\n    };\n  },\n  innerHeight: 0,\n  SVGSVGElement: {}\n};\nvar safeWindow = typeof window === \"undefined\" ? mockWindow : window;\n\n// ../../library/src/core/Time.ts\nvar _raf = (f) => {\n  setTimeout(f, 1 / 60);\n};\nvar __raf = safeWindow[\"requestAnimationFrame\"] || _raf;\nvar raf = (f) => __raf(f);\n\n// ../../library/src/core/EventEmitter.ts\nvar import_eventemitter3 = __toESM(require_eventemitter3(), 1);\nvar { EventEmitter: EventEmitter3 } = import_eventemitter3.default;\nvar EventEmitter = class {\n  constructor() {\n    this._emitter = new EventEmitter3();\n  }\n  eventNames() {\n    return this._emitter.eventNames();\n  }\n  eventListeners() {\n    const listeners = {};\n    for (const eventName of this._emitter.eventNames()) {\n      listeners[eventName] = this._emitter.listeners(eventName);\n    }\n    return listeners;\n  }\n  on(eventName, fn) {\n    this.addEventListener(eventName, fn, false, false, this);\n  }\n  off(eventName, fn) {\n    this.removeEventListeners(eventName, fn);\n  }\n  once(eventName, fn) {\n    this.addEventListener(eventName, fn, true, false, this);\n  }\n  unique(eventName, fn) {\n    this.addEventListener(eventName, fn, false, true, this);\n  }\n  addEventListener(eventName, fn, once, unique, context) {\n    if (unique) {\n      for (const name of this._emitter.eventNames()) {\n        if (fn === this._emitter.listeners(name)) {\n          return;\n        }\n      }\n    }\n    if (once === true) {\n      this._emitter.once(eventName, fn, context);\n    } else {\n      this._emitter.addListener(eventName, fn, context);\n    }\n  }\n  removeEventListeners(eventName, fn) {\n    if (eventName) {\n      this._emitter.removeListener(eventName, fn);\n    } else {\n      this.removeAllEventListeners();\n    }\n  }\n  removeAllEventListeners() {\n    this._emitter.removeAllListeners();\n  }\n  countEventListeners(eventName, handler) {\n    if (eventName) {\n      return this._emitter.listeners(eventName).length;\n    } else {\n      let count = 0;\n      for (const name of this._emitter.eventNames()) {\n        count += this._emitter.listeners(name).length;\n      }\n      return count;\n    }\n  }\n  emit(eventName, ...args) {\n    this._emitter.emit(eventName, ...args);\n  }\n};\n\n// ../../library/src/core/Loop.ts\nvar LoopTimeStep = 1 / 60;\nvar Loop = class extends EventEmitter {\n  constructor(start = false) {\n    super();\n    this._started = false;\n    this._frame = 0;\n    this._frameTasks = [];\n    this.tick = () => {\n      if (!this._started)\n        return;\n      raf(this.tick);\n      this.emit(\"update\", this._frame, LoopTimeStep);\n      this.emit(\"render\", this._frame, LoopTimeStep);\n      this._processFrameTasks();\n      this._frame++;\n    };\n    if (start) {\n      this.start();\n    }\n  }\n  addFrameTask(task) {\n    this._frameTasks.push(task);\n  }\n  _processFrameTasks() {\n    var _a;\n    const postEventTasks = this._frameTasks;\n    const length = postEventTasks.length;\n    if (length === 0)\n      return;\n    for (let i = 0; i < length; i++) {\n      (_a = postEventTasks[i]) == null ? void 0 : _a.call(postEventTasks);\n    }\n    postEventTasks.length = 0;\n  }\n  static set TimeStep(value) {\n    LoopTimeStep = value;\n  }\n  static get TimeStep() {\n    return LoopTimeStep;\n  }\n  start() {\n    if (this._started)\n      return this;\n    this._frame = 0;\n    this._started = true;\n    raf(this.tick);\n    return this;\n  }\n  stop() {\n    this._started = false;\n    return this;\n  }\n  get frame() {\n    return this._frame;\n  }\n  get time() {\n    return this._frame * LoopTimeStep;\n  }\n};\nvar MainLoop = new Loop();\n\n// ../../library/src/render/types/RenderEnvironment.ts\nvar RenderTarget = /* @__PURE__ */ ((RenderTarget2) => {\n  RenderTarget2[\"canvas\"] = \"CANVAS\";\n  RenderTarget2[\"export\"] = \"EXPORT\";\n  RenderTarget2[\"thumbnail\"] = \"THUMBNAIL\";\n  RenderTarget2[\"preview\"] = \"PREVIEW\";\n  return RenderTarget2;\n})(RenderTarget || {});\nvar RenderEnvironment = {\n  imageBaseURL: \"\",\n  target: \"PREVIEW\" /* preview */,\n  zoom: 1\n};\nfunction executeInRenderEnvironment(customEnvironment, task) {\n  const previousEnvironment = Object.assign({}, RenderEnvironment);\n  Object.assign(RenderEnvironment, customEnvironment);\n  const result = task();\n  Object.assign(RenderEnvironment, previousEnvironment);\n  return result;\n}\nfunction setGlobalRenderEnvironment(environment2) {\n  Object.assign(RenderEnvironment, environment2);\n}\nfunction useRenderEnvironment(target, imageBaseURL, zoom) {\n  let willChangeElements = false;\n  if (RenderEnvironment.imageBaseURL !== imageBaseURL) {\n    RenderEnvironment.imageBaseURL = imageBaseURL;\n    willChangeElements = true;\n  }\n  if (RenderEnvironment.target !== target) {\n    RenderEnvironment.target = target;\n    willChangeElements = true;\n  }\n  if (RenderEnvironment.zoom !== zoom) {\n    RenderEnvironment.zoom = zoom;\n  }\n  return { willChangeElements };\n}\n((RenderTarget2) => {\n  function current() {\n    return RenderEnvironment.target;\n  }\n  RenderTarget2.current = current;\n  function hasRestrictions() {\n    const target = RenderEnvironment.target;\n    if (target === \"CANVAS\" /* canvas */)\n      return true;\n    if (target === \"EXPORT\" /* export */)\n      return true;\n    return false;\n  }\n  RenderTarget2.hasRestrictions = hasRestrictions;\n})(RenderTarget || (RenderTarget = {}));\n\n// ../../library/src/animation/Drivers/AnimationDriver.ts\nvar AnimationDriver = class {\n  constructor(animator, updateCallback, finishedCallback) {\n    this.animator = animator;\n    this.updateCallback = updateCallback;\n    this.finishedCallback = finishedCallback;\n    this.update = (frame2, elapsed) => {\n      if (this.animator.isFinished()) {\n        this.finish();\n      } else {\n        const value = this.animator.next(elapsed);\n        this.updateCallback(value);\n      }\n    };\n    if (!this.animator.isReady()) {\n      console.warn(\"AnimationDriver initialized with animator that isn't ready\");\n    }\n  }\n  finish() {\n    if (this.finishedCallback) {\n      this.finishedCallback(this.animator.isFinished());\n    }\n  }\n  isFinished() {\n    return this.animator.isFinished();\n  }\n};\n\n// ../../library/src/animation/Drivers/MainLoopDriver.ts\nvar MainLoopAnimationDriver = class extends AnimationDriver {\n  play() {\n    if (RenderEnvironment.target !== \"PREVIEW\" /* preview */) {\n      this.finishedCallback && this.finishedCallback(false);\n      return;\n    }\n    MainLoop.on(\"update\", this.update);\n  }\n  cancel() {\n    MainLoop.off(\"update\", this.update);\n  }\n  finish() {\n    MainLoop.off(\"update\", this.update);\n    super.finish();\n  }\n};\n\n// ../../library/src/animation/FramerAnimation.ts\nvar DefaultDeprecatedAnimationOptions = {\n  precalculate: false,\n  colorModel: \"husl\" /* HUSL */\n};\nvar FramerAnimation = class {\n  constructor(target, from, to, animatorClass, options, driverClass = MainLoopAnimationDriver) {\n    this.playStateSource = \"idle\";\n    this.readyPromise = Promise.resolve();\n    this.resetFinishedPromise();\n    const deprecatedAnimationOptions = { ...DefaultDeprecatedAnimationOptions };\n    const animatorOptions = {};\n    if (options) {\n      Object.assign(deprecatedAnimationOptions, options);\n      Object.assign(animatorOptions, options);\n    }\n    let interpolation;\n    if (deprecatedAnimationOptions.customInterpolation) {\n      interpolation = deprecatedAnimationOptions.customInterpolation;\n    } else {\n      interpolation = new ValueInterpolation(options);\n    }\n    let animator;\n    if (!animatorClass) {\n      animator = new BezierAnimator({}, interpolation);\n    } else {\n      animator = new animatorClass(animatorOptions, interpolation);\n    }\n    if (deprecatedAnimationOptions.precalculate) {\n      animator = new PrecalculatedAnimator({ animator });\n    }\n    animator.setFrom(from);\n    animator.setTo(to);\n    const updateCallback = (value) => {\n      FramerAnimation.driverCallbackHandler(target, value);\n    };\n    const finishedCallback = (isFinished) => {\n      if (isFinished) {\n        FramerAnimation.driverCallbackHandler(target, to);\n        if (this.playStateSource === \"running\") {\n          this.playStateValue = \"finished\";\n        }\n      }\n    };\n    this.driver = new driverClass(animator, updateCallback, finishedCallback);\n  }\n  static driverCallbackHandler(target, value) {\n    if (isAnimatable(target) || isMotionValue2(target)) {\n      target.set(value);\n    } else {\n      const targetObject = target;\n      Animatable.transaction((update) => {\n        for (const key7 in targetObject) {\n          const targetValue = targetObject[key7];\n          if (isAnimatable(targetValue)) {\n            update(targetValue, value[key7]);\n          } else {\n            targetObject[key7] = value[key7];\n          }\n        }\n      });\n    }\n  }\n  get playStateValue() {\n    return this.playStateSource;\n  }\n  set playStateValue(value) {\n    if (value !== this.playStateSource) {\n      const oldValue = value;\n      this.playStateSource = value;\n      switch (value) {\n        case \"idle\":\n          if (oldValue === \"running\") {\n            this.oncancel && this.oncancel();\n          }\n          this.readyResolve && this.readyResolve();\n          this.resetReadyPromise();\n          break;\n        case \"finished\":\n          if (oldValue === \"idle\") {\n            console.warn(\"Bad state transition\");\n            break;\n          }\n          this.onfinish && this.onfinish();\n          this.finishedResolve && this.finishedResolve();\n          break;\n        case \"running\":\n          this.resetReadyPromise();\n          break;\n      }\n      if (oldValue === \"finished\") {\n        this.resetFinishedPromise();\n      }\n      if (value === \"finished\") {\n        this.playStateValue = \"idle\";\n      }\n    }\n  }\n  get playState() {\n    return this.playStateValue;\n  }\n  resetReadyPromise() {\n    this.readyResolve = null;\n    this.readyPromise = new Promise((resolve, reject) => {\n      this.readyResolve = resolve;\n    });\n  }\n  get ready() {\n    return this.readyPromise;\n  }\n  resetFinishedPromise() {\n    this.finishedResolve = null;\n    this.finishedReject = null;\n    this.finishedPromise = new Promise((resolve, reject) => {\n      this.finishedResolve = resolve;\n      this.finishedReject = reject;\n    });\n    this.finishedPromise.catch((reason) => {\n    });\n  }\n  get finished() {\n    return this.finishedPromise;\n  }\n  play() {\n    this.playStateValue = \"running\";\n    this.driver.play();\n  }\n  cancel() {\n    if (this.playStateValue !== \"running\") {\n      return;\n    }\n    this.driver.cancel();\n    if (this.playState !== \"idle\") {\n      const reason = \"AbortError\";\n      this.finishedReject && this.finishedReject(reason);\n    }\n    this.playStateValue = \"idle\";\n  }\n  finish() {\n    if (this.playStateSource === \"running\") {\n      this.playStateValue = \"finished\";\n      this.driver.finish();\n    }\n  }\n  isFinished() {\n    return this.playStateValue === \"finished\";\n  }\n};\n\n// ../../library/src/animation/animate.ts\nfunction deprecatedAnimate(from, to, animator, options) {\n  deprecationWarning(\"animate()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n  const target = from;\n  let fromValue;\n  if (isAnimatable(from) || isMotionValue2(from)) {\n    fromValue = from.get();\n  } else {\n    fromValue = Animatable.objectToValues(from);\n  }\n  const animation = new FramerAnimation(target, fromValue, to, animator, options);\n  animation.play();\n  return animation;\n}\nvar animate2 = /* @__PURE__ */ (() => {\n  function animate4(from, to, animatorOrTransition, options) {\n    return isAnimatable(from) ? deprecatedAnimate(from, to, animatorOrTransition, options) : animate(from, to, animatorOrTransition);\n  }\n  animate4.spring = (from, to, options) => {\n    return animate4(from, to, SpringAnimator, options);\n  };\n  animate4.bezier = (from, to, options) => {\n    return animate4(from, to, BezierAnimator, options);\n  };\n  animate4.linear = (from, to, options) => {\n    return animate4.bezier(from, to, { ...options, curve: \"linear\" /* Linear */ });\n  };\n  animate4.ease = (from, to, options) => {\n    return animate4.bezier(from, to, { ...options, curve: \"ease\" /* Ease */ });\n  };\n  animate4.easeIn = (from, to, options) => {\n    return animate4.bezier(from, to, { ...options, curve: \"ease-in\" /* EaseIn */ });\n  };\n  animate4.easeOut = (from, to, options) => {\n    return animate4.bezier(from, to, { ...options, curve: \"ease-out\" /* EaseOut */ });\n  };\n  animate4.easeInOut = (from, to, options) => {\n    return animate4.bezier(from, to, { ...options, curve: \"ease-in-out\" /* EaseInOut */ });\n  };\n  return animate4;\n})();\n\n// ../../library/src/animation/Motion/MotionSetup.tsx\nimport React13 from \"react\";\n\n// ../../library/src/animation/Motion/autoValueHandlers.ts\nvar correctBorderScale = (axis) => ({\n  correct: (latest, { delta, treeScale }) => {\n    if (typeof latest === \"string\")\n      latest = parseFloat(latest);\n    if (latest === 0)\n      return \"0px\";\n    let corrected = latest;\n    if (delta && treeScale) {\n      corrected = Math.round(latest / delta[axis].scale / treeScale[axis]);\n      corrected = Math.max(corrected, 1);\n    }\n    return corrected + \"px\";\n  }\n});\n\n// ../../library/src/animation/Motion/MotionSetup.tsx\naddScaleCorrector({\n  borderTopWidth: correctBorderScale(\"y\"),\n  borderLeftWidth: correctBorderScale(\"x\"),\n  borderRightWidth: correctBorderScale(\"x\"),\n  borderBottomWidth: correctBorderScale(\"y\")\n});\nfunction MotionSetup({ children }) {\n  return /* @__PURE__ */ React13.createElement(React13.Fragment, null, children);\n}\n\n// ../../library/src/animation/Motion/startAnimation.ts\nfunction startAnimation(_key, value, target, transition = {}) {\n  warnOnce(\n    `\"startAnimation\" is unsupported. Use \"animate\" instead: https://www.framer.com/api/motion/utilities/#animate`\n  );\n  return new Promise((resolve) => {\n    animate(value, target, {\n      ...transition,\n      onComplete: () => resolve()\n    });\n  });\n}\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nimport React14, { useCallback, useContext as useContext2, useMemo, useRef } from \"react\";\n\n// ../../library/src/utils/assert.ts\nfunction assert(condition, ...msg2) {\n  var _a, _b;\n  if (condition)\n    return;\n  const e = Error(\"Assertion Error\" + (msg2.length > 0 ? \": \" + msg2.join(\" \") : \"\"));\n  if (e.stack) {\n    try {\n      const lines = e.stack.split(\"\\n\");\n      if ((_a = lines[1]) == null ? void 0 : _a.includes(\"assert\")) {\n        lines.splice(1, 1);\n        e.stack = lines.join(\"\\n\");\n      } else if ((_b = lines[0]) == null ? void 0 : _b.includes(\"assert\")) {\n        lines.splice(0, 1);\n        e.stack = lines.join(\"\\n\");\n      }\n    } catch {\n    }\n  }\n  throw e;\n}\nfunction assertNever(x, error) {\n  throw error || new Error(x ? `Unexpected value: ${x}` : \"Application entered invalid state\");\n}\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nvar LayoutIdContext = React14.createContext({\n  getLayoutId: (args) => null,\n  persistLayoutIdCache: () => {\n  },\n  top: false,\n  enabled: true\n});\nfunction LayoutIdProvider({ children }) {\n  const context = useContext2(LayoutIdContext);\n  if (context.top)\n    return /* @__PURE__ */ React14.createElement(React14.Fragment, null, children);\n  const cache3 = useRef({\n    byId: {},\n    byName: {},\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {},\n    count: {\n      byId: {},\n      byName: {}\n    }\n  });\n  const screen = useRef({\n    byId: {},\n    byName: {},\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {}\n  });\n  const usedIds = useRef(/* @__PURE__ */ new Set()).current;\n  const getLayoutId = useCallback(({ id, name, duplicatedFrom }) => {\n    if (!id)\n      return null;\n    const cacheKey = name ? \"byName\" : \"byId\";\n    const previousId = cache3.current[cacheKey][id];\n    if (previousId)\n      return previousId;\n    const nodeIdentifier = name || id;\n    if (!duplicatedFrom && !usedIds.has(nodeIdentifier) && (!cache3.current.byLayoutId[nodeIdentifier] || cache3.current.byLayoutId[nodeIdentifier] === nodeIdentifier)) {\n      if (cache3.current.count[cacheKey][nodeIdentifier] === void 0) {\n        cache3.current.count[cacheKey][nodeIdentifier] = 0;\n        cache3.current.byLayoutId[nodeIdentifier] = nodeIdentifier;\n        screen.current[cacheKey][id] = nodeIdentifier;\n      }\n      usedIds.add(nodeIdentifier);\n      return nodeIdentifier;\n    }\n    let possibleMatch = void 0;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      for (let index = duplicatedFrom.length - 1; index >= 0; index--) {\n        const duplicatedId = duplicatedFrom[index];\n        assert(!!duplicatedId, `duplicatedId must be defined`);\n        const match = cache3.current[cacheKey][duplicatedId];\n        const byLastIdMatch = cache3.current.byLastId[duplicatedId];\n        if (byLastIdMatch && !possibleMatch) {\n          const matchedLayoutId = cache3.current.byLayoutId[byLastIdMatch];\n          const shouldUseNamedLastIdMatch = !matchedLayoutId || matchedLayoutId === name;\n          if (byLastIdMatch && !usedIds.has(byLastIdMatch) && (name ? shouldUseNamedLastIdMatch : true)) {\n            possibleMatch = [byLastIdMatch, duplicatedId];\n          }\n        }\n        const previousLayoutId = cache3.current.byLayoutId[match];\n        const shouldUseNamedMatch = !previousLayoutId || previousLayoutId === name;\n        if (match && !usedIds.has(match) && (name ? shouldUseNamedMatch : true)) {\n          screen.current[cacheKey][id] = match;\n          screen.current.byLastId[duplicatedId] = match;\n          usedIds.add(match);\n          return match;\n        }\n      }\n    }\n    const last = cache3.current.byLastId[id];\n    if (last && !usedIds.has(last)) {\n      usedIds.add(last);\n      screen.current.byId[id] = last;\n      return last;\n    }\n    if (possibleMatch) {\n      const [match, duplicatedId] = possibleMatch;\n      screen.current[cacheKey][id] = match;\n      screen.current.byLastId[duplicatedId] = match;\n      usedIds.add(match);\n      return match;\n    }\n    const possible = cache3.current.byPossibleId[id];\n    if (possible && !usedIds.has(possible)) {\n      usedIds.add(possible);\n      screen.current.byId[id] = possible;\n      return possible;\n    }\n    const rootDuplicatedId = duplicatedFrom == null ? void 0 : duplicatedFrom[0];\n    const identifier = name || rootDuplicatedId || id;\n    const value = cache3.current.count[cacheKey][identifier] + 1 || 0;\n    const { layoutId, value: nextValue } = nextLayoutId(identifier, value, usedIds);\n    cache3.current.count[cacheKey][identifier] = nextValue;\n    screen.current[cacheKey][id] = layoutId;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      if (!name) {\n        const lastId = duplicatedFrom[duplicatedFrom.length - 1];\n        if (lastId) {\n          screen.current.byLastId[lastId] = layoutId;\n        }\n        if (duplicatedFrom.length > 1) {\n          for (let index = 0; index < duplicatedFrom.length - 1; index++) {\n            const possibleId = duplicatedFrom[index];\n            if (possibleId === void 0)\n              continue;\n            if (!screen.current.byPossibleId[possibleId]) {\n              screen.current.byPossibleId[possibleId] = layoutId;\n            }\n          }\n        }\n      }\n    }\n    screen.current.byLayoutId[layoutId] = nodeIdentifier;\n    usedIds.add(layoutId);\n    return layoutId;\n  }, []);\n  const persistLayoutIdCache = useCallback(() => {\n    cache3.current = {\n      byId: {\n        ...cache3.current.byId,\n        ...screen.current.byId\n      },\n      byLastId: {\n        ...cache3.current.byLastId,\n        ...screen.current.byLastId\n      },\n      byPossibleId: {\n        ...cache3.current.byPossibleId,\n        ...screen.current.byPossibleId\n      },\n      byName: {\n        ...cache3.current.byName,\n        ...screen.current.byName\n      },\n      byLastName: { ...cache3.current.byLastName, ...screen.current.byLastName },\n      byLayoutId: { ...cache3.current.byLayoutId, ...screen.current.byLayoutId },\n      count: {\n        ...cache3.current.count,\n        byName: {}\n      }\n    };\n    screen.current = {\n      byId: {},\n      byName: {},\n      byLastId: {},\n      byPossibleId: {},\n      byLastName: {},\n      byLayoutId: {}\n    };\n    usedIds.clear();\n  }, []);\n  const contextValue = useRef({\n    getLayoutId,\n    persistLayoutIdCache,\n    top: true,\n    enabled: true\n  }).current;\n  return /* @__PURE__ */ React14.createElement(LayoutIdContext.Provider, { value: contextValue }, children);\n}\nfunction nextLayoutId(identifier, initialValue, usedIds) {\n  let value = initialValue;\n  let layoutId = value ? `${identifier}-${value}` : identifier;\n  while (usedIds.has(layoutId)) {\n    value++;\n    layoutId = `${identifier}-${value}`;\n  }\n  return { layoutId, value };\n}\nfunction AutomaticLayoutIds({ enabled = true, ...props }) {\n  const context = useContext2(LayoutIdContext);\n  const contextValue = useMemo(() => {\n    return {\n      ...context,\n      enabled\n    };\n  }, [enabled]);\n  return /* @__PURE__ */ React14.createElement(LayoutIdContext.Provider, { ...props, value: contextValue });\n}\n\n// ../../library/src/components/Device/Device.tsx\nimport React16, { Component as Component2 } from \"react\";\n\n// ../../library/src/components/utils/useConstant.ts\nimport { useRef as useRef2 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef2(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../library/src/components/Device/ErrorPlaceholder.tsx\nimport React15 from \"react\";\nvar baseStyle = {\n  background: void 0,\n  display: \"flex\",\n  flexDirection: \"column\",\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  lineHeight: \"1.4em\",\n  textOverflow: \"ellipsis\",\n  overflow: \"hidden\",\n  minHeight: 0,\n  width: \"100%\",\n  height: \"100%\"\n};\nvar errorStyle = {\n  ...baseStyle,\n  border: \"1px solid rgba(149, 149, 149, 0.15)\",\n  borderRadius: 6,\n  fontSize: \"12px\",\n  backgroundColor: \"rgba(149, 149, 149, 0.1)\",\n  color: \"#a5a5a5\"\n};\nvar textStyle = {\n  overflow: \"hidden\",\n  whiteSpace: \"nowrap\",\n  textOverflow: \"ellipsis\",\n  maxWidth: \"100%\",\n  flexShrink: 0,\n  padding: `0 10px`\n};\nvar titleStyle = {\n  ...textStyle,\n  fontWeight: 500\n};\nvar messageStyle = {\n  ...textStyle,\n  whiteSpace: \"pre\",\n  maxHeight: \"calc(50% - calc(20px * var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)))\",\n  WebkitMaskImage: \"linear-gradient(to bottom, black 80%, transparent 100%)\"\n};\nfunction ErrorPlaceholder(props) {\n  const { error, file } = props;\n  const title = file ? `Error in ${stripSlash(file)}` : \"Error\";\n  const message = error instanceof Error ? error.message : \"\" + error;\n  return /* @__PURE__ */ React15.createElement(\"div\", { style: errorStyle }, /* @__PURE__ */ React15.createElement(\"div\", { className: \"text\", style: titleStyle }, title), message && /* @__PURE__ */ React15.createElement(\"div\", { className: \"text\", style: messageStyle }, message));\n}\nfunction stripSlash(title) {\n  if (title.startsWith(\"./\")) {\n    return title.replace(\"./\", \"\");\n  }\n  return title;\n}\n\n// ../../library/src/components/Device/Device.tsx\nfunction getScaleData(deviceOptions, containerSize) {\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const scaleX = containerSize.width / componentWidth;\n  const scaleY = containerSize.height / componentHeight;\n  const scale2 = Math.min(scaleX, scaleY, 1);\n  let screenScalePixelFix = 1;\n  if (scale2 < 1) {\n    const actualScreenWidth = deviceOptions.screenWidth * scale2;\n    const desiredScreenWidth = actualScreenWidth + 1;\n    const screenScaleX = desiredScreenWidth / actualScreenWidth;\n    const actualScreenHeight = deviceOptions.screenHeight * scale2;\n    const desiredScreenHeight = actualScreenHeight + 1;\n    const screenScaleY = desiredScreenHeight / actualScreenHeight;\n    const screenScale = Math.max(screenScaleX, screenScaleY);\n    screenScalePixelFix = screenScale;\n  }\n  return {\n    scale: scale2,\n    screenScalePixelFix,\n    scaledComponentWidth: componentWidth * scale2,\n    scaledComponentHeight: componentHeight * scale2,\n    scaledDeviceWidth: deviceOptions.deviceWidth * scale2,\n    scaledDeviceHeight: deviceOptions.deviceHeight * scale2\n  };\n}\nfunction getColorsFromTheme(theme, type) {\n  if (type === \"none\")\n    return {};\n  if (!theme)\n    return {};\n  const isDarkTheme = theme === \"dark\";\n  return {\n    shadowColor: isDarkTheme ? \"rgba(0, 0, 0, 0.55)\" : \"rgba(0, 0, 0, 0.15)\",\n    bezelColor: isDarkTheme ? \"#222\" : \"#fff\",\n    bezelShadeColor: isDarkTheme ? \"#000\" : \"rgba(0, 0, 0, 0.2)\",\n    screenColor: isDarkTheme ? \"#333\" : \"#eee\"\n  };\n}\nvar ErrorBoundary2 = class extends Component2 {\n  constructor() {\n    super(...arguments);\n    this.state = {};\n  }\n  componentDidCatch(error, info) {\n    let stack = info.componentStack.split(\"\\n\").filter((line) => line.length !== 0);\n    let currentIndex = 0;\n    for (const line of stack) {\n      if (line.startsWith(`    in ${this.constructor.name}`)) {\n        break;\n      }\n      currentIndex++;\n    }\n    stack = stack.slice(0, currentIndex);\n    this.setState({\n      lastError: {\n        error,\n        componentStack: stack\n      }\n    });\n  }\n  componentDidUpdate(_, prevState) {\n    if (this.state.lastError === void 0)\n      return;\n    if (prevState.lastError === this.state.lastError)\n      this.setState({ lastError: void 0 });\n  }\n  render() {\n    if (this.state.lastError) {\n      return /* @__PURE__ */ React16.createElement(ErrorPlaceholder, { error: this.state.lastError.error.message, file: \"Prototype\" });\n    }\n    return this.props.children;\n  }\n};\nfunction Device({\n  canResize = false,\n  children,\n  ResizeObserver: ResizeObserver2 = safeWindow.ResizeObserver,\n  ...options\n}) {\n  var _a;\n  const optionsRef = React16.useRef(void 0);\n  if (optionsRef.current === void 0)\n    optionsRef.current = options;\n  const deviceAppearance = (_a = options.deviceOptions) == null ? void 0 : _a.appearance.type;\n  const scaleDataRef = React16.useRef();\n  const containerRef = React16.useRef(null);\n  const deviceRef = React16.useRef(null);\n  const screenRef = React16.useRef(null);\n  const updateImperativeScale = ({ scale: scale2, screenScalePixelFix }) => {\n    if (!scaleDataRef.current || !deviceRef.current || !screenRef.current)\n      return;\n    deviceRef.current.style.transform = `scale(${scale2})`;\n    screenRef.current.style.transform = `scale(${screenScalePixelFix})`;\n  };\n  if (scaleDataRef.current === void 0 && options.deviceOptions && options.scaleTo && options.scaleTo !== \"dynamic\") {\n    const scale2 = scaleDataRef.current = getScaleData(options.deviceOptions, options.scaleTo);\n    updateImperativeScale(scale2);\n  }\n  const invertScale = React16.useCallback(\n    (point) => {\n      if (!scaleDataRef.current)\n        return point;\n      const { scale: scale2 = 1 } = scaleDataRef.current;\n      return { x: point.x / scale2, y: point.y / scale2 };\n    },\n    [scaleDataRef]\n  );\n  const updateScale = React16.useCallback(() => {\n    var _a2;\n    const { deviceOptions, scaleTo, onScaleChange } = (_a2 = optionsRef.current) != null ? _a2 : {};\n    if (!deviceOptions || !scaleTo || scaleTo !== \"dynamic\" || !containerRef.current)\n      return;\n    if (containerRef.current.offsetWidth === 0 || containerRef.current.offsetHeight === 0)\n      return;\n    const scaleData = scaleDataRef.current = getScaleData(deviceOptions, {\n      width: containerRef.current.offsetWidth,\n      height: containerRef.current.offsetHeight\n    });\n    onScaleChange == null ? void 0 : onScaleChange(scaleData);\n    updateImperativeScale(scaleData);\n  }, []);\n  const observer = useConstant(() => {\n    if (!ResizeObserver2) {\n      return;\n    }\n    return new ResizeObserver2(() => updateScale());\n  });\n  React16.useLayoutEffect(() => {\n    optionsRef.current = {\n      deviceOptions: options.deviceOptions,\n      onScaleChange: options.onScaleChange,\n      overrideTheme: options.overrideTheme,\n      scaleTo: options.scaleTo\n    };\n  }, [options.deviceOptions, options.onScaleChange, options.overrideTheme, options.scaleTo]);\n  React16.useLayoutEffect(() => {\n    updateScale();\n  }, [updateScale]);\n  React16.useEffect(() => {\n    if (!observer || !containerRef.current)\n      return;\n    observer.observe(containerRef.current);\n    return () => observer.disconnect();\n  }, [observer]);\n  const { containerStyle, handStyle, deviceStyle, deviceImageStyle, screenStyle } = getDeviceStyle(options);\n  const resizeStyles = canResize ? {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\"\n  } : {};\n  return /* @__PURE__ */ React16.createElement(\"div\", { style: { ...containerStyle, pointerEvents: \"none\", ...resizeStyles }, ref: containerRef }, /* @__PURE__ */ React16.createElement(\"div\", { style: { ...deviceStyle, pointerEvents: \"none\" }, ref: deviceRef }, handStyle && /* @__PURE__ */ React16.createElement(\"div\", { style: handStyle }), deviceAppearance === \"external-clay\" && deviceImageStyle && /* @__PURE__ */ React16.createElement(\"div\", { style: deviceImageStyle }), /* @__PURE__ */ React16.createElement(\n    \"div\",\n    {\n      style: {\n        ...screenStyle,\n        pointerEvents: \"auto\",\n        backgroundColor: children ? \"white\" : screenStyle.backgroundColor\n      },\n      ref: screenRef\n    },\n    /* @__PURE__ */ React16.createElement(MotionConfig, { transformPagePoint: invertScale }, /* @__PURE__ */ React16.createElement(ErrorBoundary2, null, children))\n  ), deviceAppearance === \"realistic\" && deviceImageStyle && /* @__PURE__ */ React16.createElement(\"div\", { style: deviceImageStyle })));\n}\nvar DEVICE_PADDING = 45;\nvar HAND_IMG_WIDTH = 2400;\nvar HAND_IMG_HEIGHT = 3740;\nvar HAND_IMG_GAP_WIDTH = 859;\nvar HAND_IMG_GAP_LEFT = 772;\nvar HAND_IMG_GAP_BOTTOM = 992 - 5;\nvar noDeviceSize = { componentWidth: 500, componentHeight: 500 };\nfunction getComponentSize(options) {\n  if (!options)\n    return noDeviceSize;\n  const { deviceWidth, deviceHeight, noPadding } = options;\n  const padding = noPadding ? 0 : DEVICE_PADDING * 2;\n  return {\n    componentWidth: deviceWidth + padding,\n    componentHeight: deviceHeight + padding\n  };\n}\nfunction getDeviceStyle({ scaleTo, deviceOptions, overrideTheme } = {}) {\n  var _a, _b, _c;\n  const noDeviceStyle = { containerStyle: {}, deviceStyle: {}, screenStyle: {} };\n  if (!deviceOptions)\n    return noDeviceStyle;\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const overriddenColors = getColorsFromTheme(overrideTheme, deviceOptions.appearance.type);\n  const {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenMaxHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius,\n    screenMaskImage,\n    screenColor,\n    shadow,\n    background,\n    hand\n  } = deviceOptions;\n  const boxShadows = [];\n  if (appearance.type === \"clay\" && shadow) {\n    boxShadows.push(shadow);\n  }\n  let bezelStyle = void 0;\n  if (appearance.type === \"clay\") {\n    bezelStyle = {\n      borderRadius: appearance.bezelRadius,\n      backgroundColor: overriddenColors.bezelColor || appearance.bezelColor\n    };\n    if (overriddenColors.bezelShadeColor || appearance.bezelShadeColor) {\n      boxShadows.push(`inset 0 0 15px ${overriddenColors.bezelShadeColor || appearance.bezelShadeColor}`);\n    }\n  }\n  const handOffsetLeft = (_a = hand == null ? void 0 : hand.offsetLeft) != null ? _a : 0;\n  const handOffsetRight = (_b = hand == null ? void 0 : hand.offsetRight) != null ? _b : 0;\n  const handOffsetBottom = (_c = hand == null ? void 0 : hand.offsetBottom) != null ? _c : 0;\n  const handScale = (deviceWidth - handOffsetLeft - handOffsetRight) / HAND_IMG_GAP_WIDTH;\n  return {\n    containerStyle: {\n      width: scaleTo ? \"100%\" : componentWidth,\n      height: scaleTo ? \"100%\" : componentHeight,\n      flex: \"1 1 0\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      background\n    },\n    handStyle: hand && {\n      width: HAND_IMG_WIDTH * handScale,\n      height: HAND_IMG_HEIGHT * handScale,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      backgroundImage: `url(\"${hand.imageUrl}\")`,\n      backgroundSize: \"contain\",\n      backgroundRepeat: \"no-repeat\",\n      left: -HAND_IMG_GAP_LEFT * handScale + handOffsetLeft,\n      bottom: -HAND_IMG_GAP_BOTTOM * handScale + handOffsetBottom\n    },\n    deviceStyle: {\n      width: deviceWidth,\n      height: deviceHeight,\n      flexShrink: 0,\n      position: \"absolute\",\n      boxShadow: boxShadows.join(\",\"),\n      ...bezelStyle\n    },\n    deviceImageStyle: appearance.type === \"realistic\" || appearance.type === \"external-clay\" ? {\n      width: appearance.imageWidth,\n      height: appearance.imageHeight,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      overflow: \"hidden\",\n      backgroundImage: `url(\"${appearance.imageUrl}\")`,\n      backgroundPosition: \"top left\",\n      backgroundRepeat: \"no-repeat\",\n      backgroundSize: `${appearance.imageWidth}px ${appearance.imageHeight}px`,\n      transformOrigin: \"top left\",\n      transform: appearance.rotateImage ? `translateY(${appearance.imageWidth}px) rotate(-90deg)` : void 0\n    } : void 0,\n    screenStyle: {\n      width: screenWidth,\n      height: screenHeight,\n      maxHeight: screenMaxHeight,\n      position: \"absolute\",\n      top: screenOffsetTop,\n      left: screenOffsetLeft,\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      borderRadius: screenRadius,\n      backgroundColor: overriddenColors.screenColor || screenColor,\n      ...screenMaskImage && {\n        maskImage: screenMaskImage,\n        WebkitMaskImage: screenMaskImage,\n        maskSize: \"contain\",\n        WebkitMaskSize: \"contain\"\n      }\n    }\n  };\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nimport React19 from \"react\";\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport React17 from \"react\";\n\n// ../../library/src/render/utils/isFiniteNumber.ts\nfunction isFiniteNumber(value) {\n  return typeof value === \"number\" && isFinite(value);\n}\nfunction finiteNumber(value) {\n  return isFiniteNumber(value) ? value : void 0;\n}\n\n// ../../library/src/utils/type-guards.ts\nfunction isEmpty(obj) {\n  return !obj || !Object.keys(obj).length && obj.constructor === Object;\n}\nfunction isReactElement(test2) {\n  return typeof test2 !== \"string\" && typeof test2 !== \"number\";\n}\nfunction isReactChild(test2) {\n  return test2 !== null && typeof test2 !== \"undefined\" && typeof test2 !== \"boolean\" && !isEmpty(test2);\n}\n\n// ../../library/src/render/types/Rect.ts\nvar Rect;\n((Rect2) => {\n  function equals(rect, other) {\n    if (rect === other)\n      return true;\n    if (!rect || !other)\n      return false;\n    return rect.x === other.x && rect.y === other.y && rect.width === other.width && rect.height === other.height;\n  }\n  Rect2.equals = equals;\n  Rect2.atOrigin = (size2) => {\n    return { ...size2, x: 0, y: 0 };\n  };\n  Rect2.fromTwoPoints = (a, b) => {\n    return {\n      x: Math.min(a.x, b.x),\n      y: Math.min(a.y, b.y),\n      width: Math.abs(a.x - b.x),\n      height: Math.abs(a.y - b.y)\n    };\n  };\n  Rect2.fromRect = (rect) => {\n    return {\n      x: rect.left,\n      y: rect.top,\n      width: rect.right - rect.left,\n      height: rect.bottom - rect.top\n    };\n  };\n  Rect2.multiply = (rect, n) => {\n    return {\n      x: rect.x * n,\n      y: rect.y * n,\n      width: rect.width * n,\n      height: rect.height * n\n    };\n  };\n  Rect2.divide = (rect, n) => {\n    return (0, Rect2.multiply)(rect, 1 / n);\n  };\n  Rect2.offset = (rect, delta) => {\n    const xOffset = typeof delta.x === \"number\" ? delta.x : 0;\n    const yOffset = typeof delta.y === \"number\" ? delta.y : 0;\n    return {\n      ...rect,\n      x: rect.x + xOffset,\n      y: rect.y + yOffset\n    };\n  };\n  function inflate(rect, value) {\n    if (value === 0)\n      return rect;\n    const doubleValue = 2 * value;\n    return {\n      x: rect.x - value,\n      y: rect.y - value,\n      width: rect.width + doubleValue,\n      height: rect.height + doubleValue\n    };\n  }\n  Rect2.inflate = inflate;\n  Rect2.pixelAligned = (rect) => {\n    const x = Math.round(rect.x);\n    const y = Math.round(rect.y);\n    const rectMaxX = Math.round(rect.x + rect.width);\n    const rectMaxY = Math.round(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  };\n  Rect2.halfPixelAligned = (rect) => {\n    const x = Math.round(rect.x * 2) / 2;\n    const y = Math.round(rect.y * 2) / 2;\n    const rectMaxX = Math.round((rect.x + rect.width) * 2) / 2;\n    const rectMaxY = Math.round((rect.y + rect.height) * 2) / 2;\n    const width = Math.max(rectMaxX - x, 1);\n    const height = Math.max(rectMaxY - y, 1);\n    return { x, y, width, height };\n  };\n  Rect2.round = (rect, decimals = 0) => {\n    const x = roundedNumber(rect.x, decimals);\n    const y = roundedNumber(rect.y, decimals);\n    const width = roundedNumber(rect.width, decimals);\n    const height = roundedNumber(rect.height, decimals);\n    return { x, y, width, height };\n  };\n  Rect2.roundToOutside = (rect) => {\n    const x = Math.floor(rect.x);\n    const y = Math.floor(rect.y);\n    const rectMaxX = Math.ceil(rect.x + rect.width);\n    const rectMaxY = Math.ceil(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  };\n  Rect2.minX = (rect) => {\n    return rect.x;\n  };\n  Rect2.maxX = (rect) => {\n    return rect.x + rect.width;\n  };\n  Rect2.minY = (rect) => {\n    return rect.y;\n  };\n  Rect2.maxY = (rect) => {\n    return rect.y + rect.height;\n  };\n  Rect2.positions = (rect) => {\n    return {\n      minX: rect.x,\n      midX: rect.x + rect.width / 2,\n      maxX: (0, Rect2.maxX)(rect),\n      minY: rect.y,\n      midY: rect.y + rect.height / 2,\n      maxY: (0, Rect2.maxY)(rect)\n    };\n  };\n  Rect2.center = (rect) => {\n    return {\n      x: rect.x + rect.width / 2,\n      y: rect.y + rect.height / 2\n    };\n  };\n  Rect2.fromPoints = (ps) => {\n    const xValues = ps.map((point) => point.x);\n    const yValues = ps.map((point) => point.y);\n    const x = Math.min(...xValues);\n    const y = Math.min(...yValues);\n    const width = Math.max(...xValues) - x;\n    const height = Math.max(...yValues) - y;\n    return { x, y, width, height };\n  };\n  Rect2.merge = (...rect) => {\n    const min = {\n      x: Math.min(...rect.map(Rect2.minX)),\n      y: Math.min(...rect.map(Rect2.minY))\n    };\n    const max = {\n      x: Math.max(...rect.map(Rect2.maxX)),\n      y: Math.max(...rect.map(Rect2.maxY))\n    };\n    return (0, Rect2.fromTwoPoints)(min, max);\n  };\n  Rect2.intersection = (rect1, rect2) => {\n    const x = Math.max(rect1.x, rect2.x);\n    const x2 = Math.min(rect1.x + rect1.width, rect2.x + rect2.width);\n    const y = Math.max(rect1.y, rect2.y);\n    const y2 = Math.min(rect1.y + rect1.height, rect2.y + rect2.height);\n    return { x, y, width: x2 - x, height: y2 - y };\n  };\n  Rect2.points = (rect) => {\n    return [\n      { x: (0, Rect2.minX)(rect), y: (0, Rect2.minY)(rect) },\n      { x: (0, Rect2.minX)(rect), y: (0, Rect2.maxY)(rect) },\n      { x: (0, Rect2.maxX)(rect), y: (0, Rect2.minY)(rect) },\n      { x: (0, Rect2.maxX)(rect), y: (0, Rect2.maxY)(rect) }\n    ];\n  };\n  Rect2.transform = (rect, matrix) => {\n    const { x: x1, y: y1 } = matrix.transformPoint({ x: rect.x, y: rect.y });\n    const { x: x2, y: y2 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y });\n    const { x: x3, y: y3 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y + rect.height });\n    const { x: x4, y: y4 } = matrix.transformPoint({ x: rect.x, y: rect.y + rect.height });\n    const x = Math.min(x1, x2, x3, x4);\n    const width = Math.max(x1, x2, x3, x4) - x;\n    const y = Math.min(y1, y2, y3, y4);\n    const height = Math.max(y1, y2, y3, y4) - y;\n    return { x, y, width, height };\n  };\n  Rect2.containsPoint = (rect, point) => {\n    if (point.x < (0, Rect2.minX)(rect)) {\n      return false;\n    }\n    if (point.x > (0, Rect2.maxX)(rect)) {\n      return false;\n    }\n    if (point.y < (0, Rect2.minY)(rect)) {\n      return false;\n    }\n    if (point.y > (0, Rect2.maxY)(rect)) {\n      return false;\n    }\n    if (isNaN(rect.x)) {\n      return false;\n    }\n    if (isNaN(rect.y)) {\n      return false;\n    }\n    return true;\n  };\n  Rect2.containsRect = (rectA, rectB) => {\n    for (const point of (0, Rect2.points)(rectB)) {\n      if (!(0, Rect2.containsPoint)(rectA, point)) {\n        return false;\n      }\n    }\n    return true;\n  };\n  Rect2.toCSS = (rect) => {\n    return {\n      display: \"block\",\n      transform: `translate(${rect.x}px, ${rect.y}px)`,\n      width: `${rect.width}px`,\n      height: `${rect.height}px`\n    };\n  };\n  Rect2.inset = (rect, n) => {\n    return {\n      x: rect.x + n,\n      y: rect.y + n,\n      width: Math.max(0, rect.width - 2 * n),\n      height: Math.max(0, rect.height - 2 * n)\n    };\n  };\n  Rect2.intersects = (rectA, rectB) => {\n    return !(rectB.x >= (0, Rect2.maxX)(rectA) || (0, Rect2.maxX)(rectB) <= rectA.x || rectB.y >= (0, Rect2.maxY)(rectA) || (0, Rect2.maxY)(rectB) <= rectA.y);\n  };\n  Rect2.overlapHorizontally = (rectA, rectB) => {\n    const aMax = Rect2.maxX(rectA);\n    const bMax = Rect2.maxX(rectB);\n    return aMax > rectB.x && bMax > rectA.x;\n  };\n  Rect2.overlapVertically = (rectA, rectB) => {\n    const aMax = Rect2.maxY(rectA);\n    const bMax = Rect2.maxY(rectB);\n    return aMax > rectB.y && bMax > rectA.y;\n  };\n  Rect2.doesNotIntersect = (rect, rects) => {\n    return rects.find((comparingRect) => {\n      return Rect2.intersects(comparingRect, rect);\n    }) === void 0;\n  };\n  Rect2.isEqual = (rectA, rectB) => {\n    if (rectA && rectB) {\n      const { x, y, width, height } = rectA;\n      return rectB.x === x && rectB.y === y && rectB.width === width && rectB.height === height;\n    } else {\n      return rectA === rectB;\n    }\n  };\n  Rect2.cornerPoints = (rect) => {\n    const rectMinX = rect.x;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMaxY = rect.y + rect.height;\n    const corner1 = { x: rectMinX, y: rectMinY };\n    const corner2 = { x: rectMaxX, y: rectMinY };\n    const corner3 = { x: rectMaxX, y: rectMaxY };\n    const corner4 = { x: rectMinX, y: rectMaxY };\n    return [corner1, corner2, corner3, corner4];\n  };\n  Rect2.midPoints = (rect) => {\n    const rectMinX = rect.x;\n    const rectMidX = rect.x + rect.width / 2;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMidY = rect.y + rect.height / 2;\n    const rectMaxY = rect.y + rect.height;\n    const corner1 = { x: rectMidX, y: rectMinY };\n    const corner2 = { x: rectMaxX, y: rectMidY };\n    const corner3 = { x: rectMidX, y: rectMaxY };\n    const corner4 = { x: rectMinX, y: rectMidY };\n    return [corner1, corner2, corner3, corner4];\n  };\n  Rect2.pointDistance = (rect, point) => {\n    let x = 0;\n    let y = 0;\n    if (point.x < rect.x) {\n      x = rect.x - point.x;\n    } else if (point.x > Rect2.maxX(rect)) {\n      x = point.x - Rect2.maxX(rect);\n    }\n    if (point.y < rect.y) {\n      y = rect.y - point.y;\n    } else if (point.y > Rect2.maxY(rect)) {\n      y = point.y - Rect2.maxY(rect);\n    }\n    return Point.distance({ x, y }, { x: 0, y: 0 });\n  };\n  const fromAnyDefaults = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  };\n  Rect2.fromAny = (rect, defaults = fromAnyDefaults) => {\n    return {\n      x: rect.x || defaults.x,\n      y: rect.y || defaults.y,\n      width: rect.width || defaults.width,\n      height: rect.height || defaults.height\n    };\n  };\n})(Rect || (Rect = {}));\n\n// ../../library/src/render/types/Constraints.ts\nvar constraintDefaults = {\n  left: null,\n  right: null,\n  top: null,\n  bottom: null,\n  centerX: \"50%\",\n  centerY: \"50%\",\n  aspectRatio: null,\n  parentSize: null,\n  width: 100,\n  height: 100\n};\nvar DimensionType = /* @__PURE__ */ ((DimensionType2) => {\n  DimensionType2[DimensionType2[\"FixedNumber\"] = 0] = \"FixedNumber\";\n  DimensionType2[DimensionType2[\"Percentage\"] = 1] = \"Percentage\";\n  DimensionType2[DimensionType2[\"Auto\"] = 2] = \"Auto\";\n  DimensionType2[DimensionType2[\"FractionOfFreeSpace\"] = 3] = \"FractionOfFreeSpace\";\n  DimensionType2[DimensionType2[\"Viewport\"] = 4] = \"Viewport\";\n  return DimensionType2;\n})(DimensionType || {});\nfunction isConstraintSupportingChild(child) {\n  if (!isReactChild(child) || !isReactElement(child)) {\n    return false;\n  }\n  return true;\n}\nvar ConstraintMask;\n((ConstraintMask2) => {\n  ConstraintMask2.quickfix = (constraints) => {\n    if (constraints.widthType === 2 /* Auto */ || constraints.heightType === 2 /* Auto */) {\n      constraints.aspectRatio = null;\n    }\n    if (isFiniteNumber(constraints.aspectRatio)) {\n      if (constraints.left && constraints.right) {\n        constraints.widthType = 0 /* FixedNumber */;\n      }\n      if (constraints.top && constraints.bottom) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n      if (constraints.left && constraints.right && constraints.top && constraints.bottom) {\n        constraints.bottom = false;\n      }\n      if (constraints.widthType !== 0 /* FixedNumber */ && constraints.heightType !== 0 /* FixedNumber */) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n    }\n    if (constraints.left && constraints.right) {\n      if (constraints.fixedSize || constraints.widthType === 2 /* Auto */ || isFiniteNumber(constraints.maxWidth)) {\n        constraints.right = false;\n      }\n      constraints.widthType = 0 /* FixedNumber */;\n    }\n    if (constraints.top && constraints.bottom) {\n      if (constraints.fixedSize || constraints.heightType === 2 /* Auto */ || isFiniteNumber(constraints.maxHeight)) {\n        constraints.bottom = false;\n      }\n      constraints.heightType = 0 /* FixedNumber */;\n    }\n    return constraints;\n  };\n})(ConstraintMask || (ConstraintMask = {}));\nfunction valueToDimensionType(value) {\n  if (typeof value === \"string\") {\n    const trimmedValue = value.trim();\n    if (trimmedValue === \"auto\")\n      return 2 /* Auto */;\n    if (trimmedValue.endsWith(\"fr\"))\n      return 3 /* FractionOfFreeSpace */;\n    if (trimmedValue.endsWith(\"%\"))\n      return 1 /* Percentage */;\n    if (trimmedValue.endsWith(\"vw\") || trimmedValue.endsWith(\"vh\"))\n      return 4 /* Viewport */;\n  }\n  return 0 /* FixedNumber */;\n}\nvar ConstraintValues;\n((ConstraintValues2) => {\n  ConstraintValues2.fromProperties = (props) => {\n    const { left, right, top, bottom, width, height, centerX, centerY, aspectRatio, autoSize } = props;\n    const constraints = ConstraintMask.quickfix({\n      left: isFiniteNumber(left) || isAnimatable(left),\n      right: isFiniteNumber(right) || isAnimatable(right),\n      top: isFiniteNumber(top) || isAnimatable(top),\n      bottom: isFiniteNumber(bottom) || isAnimatable(bottom),\n      widthType: valueToDimensionType(width),\n      heightType: valueToDimensionType(height),\n      aspectRatio: aspectRatio || null,\n      fixedSize: autoSize === true\n    });\n    let widthValue = null;\n    let heightValue = null;\n    let widthType = 0 /* FixedNumber */;\n    let heightType = 0 /* FixedNumber */;\n    if (constraints.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n      const parsedWidth = parseFloat(width);\n      if (width.endsWith(\"fr\")) {\n        widthType = 3 /* FractionOfFreeSpace */;\n        widthValue = parsedWidth;\n      } else if (width === \"auto\") {\n        widthType = 2 /* Auto */;\n      } else {\n        widthType = 1 /* Percentage */;\n        widthValue = parsedWidth / 100;\n      }\n    } else if (width !== void 0 && typeof width !== \"string\") {\n      widthValue = Animatable.getNumber(width);\n    }\n    if (constraints.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n      const parsedHeight = parseFloat(height);\n      if (height.endsWith(\"fr\")) {\n        heightType = 3 /* FractionOfFreeSpace */;\n        heightValue = parsedHeight;\n      } else if (height === \"auto\") {\n        heightType = 2 /* Auto */;\n      } else {\n        heightType = 1 /* Percentage */;\n        heightValue = parseFloat(height) / 100;\n      }\n    } else if (height !== void 0 && typeof height !== \"string\") {\n      heightValue = Animatable.getNumber(height);\n    }\n    let centerAnchorX = 0.5;\n    let centerAnchorY = 0.5;\n    if (centerX) {\n      centerAnchorX = parseFloat(centerX) / 100;\n    }\n    if (centerY) {\n      centerAnchorY = parseFloat(centerY) / 100;\n    }\n    return {\n      left: constraints.left ? Animatable.getNumber(left) : null,\n      right: constraints.right ? Animatable.getNumber(right) : null,\n      top: constraints.top ? Animatable.getNumber(top) : null,\n      bottom: constraints.bottom ? Animatable.getNumber(bottom) : null,\n      widthType,\n      heightType,\n      width: widthValue,\n      height: heightValue,\n      aspectRatio: constraints.aspectRatio || null,\n      centerAnchorX,\n      centerAnchorY\n    };\n  };\n  ConstraintValues2.toSize = (values, parentSize, autoSize, freeSpace) => {\n    let width = null;\n    let height = null;\n    const parentWidth = parentSize ? Animatable.getNumber(parentSize.width) : null;\n    const parentHeight = parentSize ? Animatable.getNumber(parentSize.height) : null;\n    const hOpposingPinsOffset = pinnedOffset(values.left, values.right);\n    if (parentWidth && isFiniteNumber(hOpposingPinsOffset)) {\n      width = parentWidth - hOpposingPinsOffset;\n    } else if (autoSize && values.widthType === 2 /* Auto */) {\n      width = autoSize.width;\n    } else if (isFiniteNumber(values.width)) {\n      switch (values.widthType) {\n        case 0 /* FixedNumber */:\n          width = values.width;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          width = freeSpace ? freeSpace.freeSpaceInParent.width / freeSpace.freeSpaceUnitDivisor.width * values.width : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentWidth) {\n            width = parentWidth * values.width;\n          }\n          break;\n        case 2 /* Auto */:\n          break;\n        default:\n          assertNever(values.widthType);\n      }\n    }\n    const vOpposingPinsOffset = pinnedOffset(values.top, values.bottom);\n    if (parentHeight && isFiniteNumber(vOpposingPinsOffset)) {\n      height = parentHeight - vOpposingPinsOffset;\n    } else if (autoSize && values.heightType === 2 /* Auto */) {\n      height = autoSize.height;\n    } else if (isFiniteNumber(values.height)) {\n      switch (values.heightType) {\n        case 0 /* FixedNumber */:\n          height = values.height;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          height = freeSpace ? freeSpace.freeSpaceInParent.height / freeSpace.freeSpaceUnitDivisor.height * values.height : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentHeight) {\n            height = parentHeight * values.height;\n          }\n          break;\n        case 2 /* Auto */:\n          break;\n        default:\n          assertNever(values.heightType);\n      }\n    }\n    return sizeAfterApplyingDefaultsAndAspectRatio(width, height, values, {\n      height: parentHeight != null ? parentHeight : 0,\n      width: parentWidth != null ? parentWidth : 0\n    });\n  };\n  ConstraintValues2.toRect = (values, parentSizeInfo = null, autoSize = null, pixelAlign = false, freeSpace = null) => {\n    var _a, _b;\n    let x = values.left || 0;\n    let y = values.top || 0;\n    const parentSizeForSizing = (_a = parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) != null ? _a : null;\n    const parentSizeForPositioning = (_b = parentSizeInfo == null ? void 0 : parentSizeInfo.positioning) != null ? _b : null;\n    const { width, height } = ConstraintValues2.toSize(values, parentSizeForSizing, autoSize, freeSpace);\n    const positioningParentWidth = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.width) : null;\n    const positioningParentHeight = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.height) : null;\n    if (values.left !== null) {\n      x = values.left;\n    } else if (positioningParentWidth && values.right !== null) {\n      x = positioningParentWidth - values.right - width;\n    } else if (positioningParentWidth) {\n      x = values.centerAnchorX * positioningParentWidth - width / 2;\n    }\n    if (values.top !== null) {\n      y = values.top;\n    } else if (positioningParentHeight && values.bottom !== null) {\n      y = positioningParentHeight - values.bottom - height;\n    } else if (positioningParentHeight) {\n      y = values.centerAnchorY * positioningParentHeight - height / 2;\n    }\n    const f = { x, y, width, height };\n    if (pixelAlign) {\n      return Rect.pixelAligned(f);\n    }\n    return f;\n  };\n})(ConstraintValues || (ConstraintValues = {}));\nvar defaultWidth = 200;\nvar defaultHeight = 200;\nfunction getConstraintValue(constraint, value, parentSize) {\n  if (typeof value === \"string\") {\n    if (value.endsWith(\"%\") && parentSize) {\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * parentSize.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * parentSize.height;\n        default:\n          break;\n      }\n    }\n    return parseFloat(value);\n  }\n  return value;\n}\nfunction constrainHeight(height, values, parentSize) {\n  if (values.minHeight) {\n    height = Math.max(getConstraintValue(\"minHeight\", values.minHeight, parentSize), height);\n  }\n  if (values.maxHeight) {\n    height = Math.min(getConstraintValue(\"maxHeight\", values.maxHeight, parentSize), height);\n  }\n  return height;\n}\nfunction constrainWidth(width, values, parentSize) {\n  if (values.minWidth) {\n    width = Math.max(getConstraintValue(\"minWidth\", values.minWidth, parentSize), width);\n  }\n  if (values.maxWidth) {\n    width = Math.min(getConstraintValue(\"maxWidth\", values.maxWidth, parentSize), width);\n  }\n  return width;\n}\nfunction sizeAfterApplyingDefaultsAndAspectRatio(width, height, values, parentSize) {\n  let w = constrainWidth(isFiniteNumber(width) ? width : defaultWidth, values, parentSize);\n  let h = constrainHeight(isFiniteNumber(height) ? height : defaultHeight, values, parentSize);\n  if (isFiniteNumber(values.aspectRatio) && values.aspectRatio > 0) {\n    if (isFiniteNumber(values.left) && isFiniteNumber(values.right)) {\n      h = w / values.aspectRatio;\n    } else if (isFiniteNumber(values.top) && isFiniteNumber(values.bottom)) {\n      w = h * values.aspectRatio;\n    } else if (values.widthType !== 0 /* FixedNumber */) {\n      h = w / values.aspectRatio;\n    } else {\n      w = h * values.aspectRatio;\n    }\n  }\n  return {\n    width: w,\n    height: h\n  };\n}\nfunction pinnedOffset(start, end) {\n  if (!isFiniteNumber(start) || !isFiniteNumber(end))\n    return null;\n  return start + end;\n}\nfunction getMergedConstraintsProps(props, constraints) {\n  const result = {};\n  if (props.constraints) {\n    result.constraints = { ...props.constraints, ...constraints };\n  } else {\n    Object.assign(result, constraints);\n  }\n  return result;\n}\n\n// ../../library/src/render/types/NewConstraints.tsx\nfunction isString2(t) {\n  return typeof t === \"string\";\n}\nfunction containsInvalidStringValues(props) {\n  const { left, right, top, bottom, center } = props;\n  if ([right, bottom].some(isString2)) {\n    return true;\n  }\n  if (isString2(left) && (!center || center === \"y\")) {\n    return true;\n  }\n  if (isString2(top) && (!center || center === \"x\")) {\n    return true;\n  }\n  return false;\n}\nfunction constraintsEnabled(props) {\n  const { _constraints } = props;\n  if (!_constraints) {\n    return false;\n  }\n  if (containsInvalidStringValues(props)) {\n    return false;\n  }\n  return _constraints.enabled;\n}\nfunction sizeFromFiniteNumberProps(props) {\n  const { size: size2 } = props;\n  let { width, height } = props;\n  if (isFiniteNumber(size2)) {\n    if (width === void 0) {\n      width = size2;\n    }\n    if (height === void 0) {\n      height = size2;\n    }\n  }\n  if (isFiniteNumber(width) && isFiniteNumber(height)) {\n    return {\n      width,\n      height\n    };\n  }\n  return null;\n}\nfunction rectFromFiniteNumberProps(props) {\n  const size2 = sizeFromFiniteNumberProps(props);\n  if (size2 === null) {\n    return null;\n  }\n  const { left, top } = props;\n  if (isFiniteNumber(left) && isFiniteNumber(top)) {\n    return {\n      x: left,\n      y: top,\n      ...size2\n    };\n  }\n  return null;\n}\nfunction calculateRect(props, parentSize, pixelAlign = true) {\n  if (props.positionFixed || props.positionAbsolute)\n    return null;\n  const parentSizeDisabled = parentSize === ParentSizeState.Disabled || parentSize === ParentSizeState.DisabledForCurrentLevel;\n  if (!constraintsEnabled(props) || parentSizeDisabled) {\n    return rectFromFiniteNumberProps(props);\n  }\n  const constraintValues = getConstraintValues(props);\n  const enabledParentSize = deprecatedParentSize(parentSize);\n  const parentSizeInfo = enabledParentSize ? { sizing: enabledParentSize, positioning: enabledParentSize } : null;\n  return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, pixelAlign, null);\n}\nfunction getConstraintValues(props) {\n  const { left, right, top, bottom, center, _constraints, size: size2 } = props;\n  let { width, height } = props;\n  if (width === void 0) {\n    width = size2;\n  }\n  if (height === void 0) {\n    height = size2;\n  }\n  const { aspectRatio, autoSize } = _constraints;\n  const constraintMask = ConstraintMask.quickfix({\n    left: isFiniteNumber(left),\n    right: isFiniteNumber(right),\n    top: isFiniteNumber(top),\n    bottom: isFiniteNumber(bottom),\n    widthType: valueToDimensionType(width),\n    heightType: valueToDimensionType(height),\n    aspectRatio: aspectRatio || null,\n    fixedSize: autoSize === true\n  });\n  let widthValue = null;\n  let heightValue = null;\n  let widthType = 0 /* FixedNumber */;\n  let heightType = 0 /* FixedNumber */;\n  if (constraintMask.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n    const parsedWidth = parseFloat(width);\n    if (width.endsWith(\"fr\")) {\n      widthType = 3 /* FractionOfFreeSpace */;\n      widthValue = parsedWidth;\n    } else if (width === \"auto\") {\n      widthType = 2 /* Auto */;\n    } else {\n      widthType = 1 /* Percentage */;\n      widthValue = parsedWidth / 100;\n    }\n  } else if (width !== void 0 && typeof width !== \"string\") {\n    widthValue = width;\n  }\n  if (constraintMask.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n    const parsedHeight = parseFloat(height);\n    if (height.endsWith(\"fr\")) {\n      heightType = 3 /* FractionOfFreeSpace */;\n      heightValue = parsedHeight;\n    } else if (height === \"auto\") {\n      heightType = 2 /* Auto */;\n    } else {\n      heightType = 1 /* Percentage */;\n      heightValue = parseFloat(height) / 100;\n    }\n  } else if (height !== void 0 && typeof height !== \"string\") {\n    heightValue = height;\n  }\n  let centerAnchorX = 0.5;\n  let centerAnchorY = 0.5;\n  if (center === true || center === \"x\") {\n    constraintMask.left = false;\n    if (typeof left === \"string\") {\n      centerAnchorX = parseFloat(left) / 100;\n    }\n  }\n  if (center === true || center === \"y\") {\n    constraintMask.top = false;\n    if (typeof top === \"string\") {\n      centerAnchorY = parseFloat(top) / 100;\n    }\n  }\n  return {\n    left: constraintMask.left ? left : null,\n    right: constraintMask.right ? right : null,\n    top: constraintMask.top ? top : null,\n    bottom: constraintMask.bottom ? bottom : null,\n    widthType,\n    heightType,\n    width: widthValue,\n    height: heightValue,\n    aspectRatio: constraintMask.aspectRatio || null,\n    centerAnchorX,\n    centerAnchorY,\n    minHeight: props.minHeight,\n    maxHeight: props.maxHeight,\n    minWidth: props.minWidth,\n    maxWidth: props.maxWidth\n  };\n}\nvar ParentSizeState = /* @__PURE__ */ ((ParentSizeState2) => {\n  ParentSizeState2[ParentSizeState2[\"Unknown\"] = 0] = \"Unknown\";\n  ParentSizeState2[ParentSizeState2[\"Disabled\"] = 1] = \"Disabled\";\n  ParentSizeState2[ParentSizeState2[\"DisabledForCurrentLevel\"] = 2] = \"DisabledForCurrentLevel\";\n  return ParentSizeState2;\n})(ParentSizeState || {});\nvar ConstraintsContext = React17.createContext({\n  parentSize: 0 /* Unknown */\n});\nfunction deprecatedParentSize(parentSize) {\n  if (parentSize === 0 /* Unknown */ || parentSize === 1 /* Disabled */ || parentSize === 2 /* DisabledForCurrentLevel */) {\n    return null;\n  }\n  return parentSize;\n}\nfunction useParentSize() {\n  return React17.useContext(ConstraintsContext).parentSize;\n}\nfunction isSize(o) {\n  return typeof o === \"object\";\n}\nvar ProvideParentSize = (props) => {\n  const currentParentSize = useParentSize();\n  const { parentSize, children } = props;\n  const value = React17.useMemo(\n    () => ({ parentSize }),\n    [getParentWidth(parentSize), getParentHeight(parentSize)]\n  );\n  if (currentParentSize === 1 /* Disabled */) {\n    return children ? /* @__PURE__ */ React17.createElement(React17.Fragment, null, children) : null;\n  }\n  return /* @__PURE__ */ React17.createElement(ConstraintsContext.Provider, { value }, children);\n};\nfunction getParentWidth(parentSize) {\n  return isSize(parentSize) ? parentSize.width : parentSize;\n}\nfunction getParentHeight(parentSize) {\n  return isSize(parentSize) ? parentSize.height : parentSize;\n}\nvar ConsumeParentSize = ConstraintsContext.Consumer;\nfunction useProvideParentSize(node, parentSize) {\n  return /* @__PURE__ */ React17.createElement(ProvideParentSize, { parentSize }, node);\n}\nfunction useConstraints(props) {\n  const parentSize = useParentSize();\n  const calculatedRect = calculateRect(props, parentSize, true);\n  return calculatedRect;\n}\n\n// ../../library/src/render/types/PropertyControls.ts\nvar ControlType = /* @__PURE__ */ ((ControlType2) => {\n  ControlType2[\"Boolean\"] = \"boolean\";\n  ControlType2[\"Number\"] = \"number\";\n  ControlType2[\"String\"] = \"string\";\n  ControlType2[\"RichText\"] = \"richtext\";\n  ControlType2[\"FusedNumber\"] = \"fusednumber\";\n  ControlType2[\"Enum\"] = \"enum\";\n  ControlType2[\"SegmentedEnum\"] = \"segmentedenum\";\n  ControlType2[\"Color\"] = \"color\";\n  ControlType2[\"Image\"] = \"image\";\n  ControlType2[\"ResponsiveImage\"] = \"responsiveimage\";\n  ControlType2[\"File\"] = \"file\";\n  ControlType2[\"ComponentInstance\"] = \"componentinstance\";\n  ControlType2[\"Array\"] = \"array\";\n  ControlType2[\"EventHandler\"] = \"eventhandler\";\n  ControlType2[\"Transition\"] = \"transition\";\n  ControlType2[\"Link\"] = \"link\";\n  ControlType2[\"Date\"] = \"date\";\n  ControlType2[\"Object\"] = \"object\";\n  return ControlType2;\n})(ControlType || {});\n\n// ../../library/src/modules/isFlexboxGapSupported.ts\nvar isFlexboxGapSupportedCached;\nfunction isFlexboxGapSupported() {\n  if (isFlexboxGapSupportedCached !== void 0) {\n    return isFlexboxGapSupportedCached;\n  }\n  const flex = document.createElement(\"div\");\n  Object.assign(flex.style, {\n    position: \"absolute\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"1px\"\n  });\n  flex.appendChild(document.createElement(\"div\"));\n  flex.appendChild(document.createElement(\"div\"));\n  document.body.appendChild(flex);\n  const isSupported = flex.scrollHeight === 1;\n  if (flex.parentNode) {\n    flex.parentNode.removeChild(flex);\n  }\n  isFlexboxGapSupportedCached = isSupported;\n  return isSupported;\n}\n\n// ../../library/src/modules/workaroundFlexboxGapNotSupported.ts\nvar flexboxGapNotSupportedClass = \"flexbox-gap-not-supported\";\nvar initialized = false;\nfunction installFlexboxGapWorkaroundIfNeeded() {\n  if (initialized)\n    return;\n  initialized = true;\n  if (isFlexboxGapSupported())\n    return;\n  document.body.classList.add(flexboxGapNotSupportedClass);\n}\n\n// ../../library/src/render/utils/injectDeprecatedRichTextRules.ts\nvar richTextStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6,\n[data-framer-component-type=\"DeprecatedRichText\"] li,\n[data-framer-component-type=\"DeprecatedRichText\"] ol,\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] span:not([data-text-fill]) {\n    font-family: var(--framer-font-family, Inter, sans-serif);\n    font-style: var(--framer-font-style, normal);\n    font-weight: var(--framer-font-weight, 400);\n    color: var(--framer-text-color, #000);\n    font-size: var(--framer-font-size, 16px);\n    letter-spacing: var(--framer-letter-spacing, 0);\n    text-transform: var(--framer-text-transform, none);\n    text-decoration: var(--framer-text-decoration, none);\n    line-height: var(--framer-line-height, 1.2em);\n    text-align: var(--framer-text-alignment, start);\n}\n`;\nvar richTextParagraphSpacingStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] div:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h1:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h2:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h3:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h4:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h5:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h6:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ol:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ul:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image:not(:first-child) {\n    margin-top: var(--framer-paragraph-spacing, 0);\n}\n`;\nvar richTextBackgroundMaskStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] span[data-text-fill] {\n    display: inline-block;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n}\n`;\nvar richTextLinkStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a,\n[data-framer-component-type=\"DeprecatedRichText\"] a span:not([data-text-fill]) {\n    font-family: var(--framer-link-font-family, var(--framer-font-family, Inter, sans-serif));\n    font-style: var(--framer-link-font-style, var(--framer-font-style, normal));\n    font-weight: var(--framer-link-font-weight, var(--framer-font-weight, 400));\n    color: var(--framer-link-text-color, var(--framer-text-color, #000));\n    font-size: var(--framer-link-font-size, var(--framer-font-size, 16px));\n    text-transform: var(--framer-link-text-transform, var(--framer-text-transform, none));\n    text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration, none));\n}\n`;\nvar richTextLinkHoverStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover,\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover span:not([data-text-fill]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, sans-serif)));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentStylesRule = `\na[data-framer-page-link-current],\na[data-framer-page-link-current] span:not([data-text-fill]) {\n    font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, sans-serif)));\n    font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentHoverStylesRule = `\na[data-framer-page-link-current]:hover,\na[data-framer-page-link-current]:hover span:not([data-text-fill]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, sans-serif))));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n    color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n}\n`;\nvar richTextBoldStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] strong {\n    font-weight: bolder;\n}\n`;\nvar richTextItalicStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] em {\n    font-style: italic;\n}\n`;\nvar richTextImageRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image {\n    display: block;\n    max-width: 100%;\n    height: auto;\n}\n`;\nvar richTextBlockElementResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6 {\n    margin: 0;\n    padding: 0;\n}\n`;\nvar richTextStylesPresetResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .text-styles-preset-reset {\n    --framer-font-family: Inter, sans-serif;\n    --framer-font-style: normal;\n    --framer-font-weight: 500;\n    --framer-text-color: #000;\n    --framer-font-size: 16px;\n    --framer-letter-spacing: 0;\n    --framer-text-transform: none;\n    --framer-text-decoration: none;\n    --framer-line-height: 1.2em;\n    --framer-text-alignment: start;\n}\n`;\nvar richTextStylesList = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] ol {\n    display: table;\n    width: 100%;\n    padding-left: 0;\n    margin: 0;\n}\n`;\nvar richTextStylesListItem = `\n[data-framer-component-type=\"DeprecatedRichText\"] li {\n    display: table-row;\n    counter-increment: list-item;\n    list-style: none;\n}\n`;\nvar richTextStylesNumberedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ol > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: counter(list-item) \".\";\n    white-space: nowrap;\n}\n`;\nvar richTextStylesBulletedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: \"\\u2022\";\n}\n`;\nvar deprecatedRichTextCSSRules = [\n  `[data-framer-component-type=\"DeprecatedRichText\"] { cursor: inherit; }`,\n  richTextStylesPresetResetRule,\n  richTextBlockElementResetRule,\n  richTextStylesRule,\n  richTextParagraphSpacingStylesRule,\n  richTextBackgroundMaskStylesRule,\n  richTextLinkStylesRule,\n  richTextLinkHoverStylesRule,\n  richTextLinkCurrentStylesRule,\n  richTextLinkCurrentHoverStylesRule,\n  richTextBoldStylesRule,\n  richTextItalicStylesRule,\n  richTextImageRule,\n  richTextStylesList,\n  richTextStylesListItem,\n  richTextStylesNumberedListMarker,\n  richTextStylesBulletedListMarker\n];\n\n// ../../library/src/render/utils/injectRichTextRules.ts\nvar richTextCSSRules = [\n  `\n        p.framer-text,\n        div.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        ol.framer-text,\n        ul.framer-text {\n            margin: 0;\n            padding: 0;\n        }\n    `,\n  `\n        p.framer-text,\n        div.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        li.framer-text,\n        ol.framer-text,\n        ul.framer-text,\n        span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-font-family, Inter, sans-serif);\n            font-style: var(--framer-font-style, normal);\n            font-weight: var(--framer-font-weight, 400);\n            color: var(--framer-text-color, #000);\n            font-size: var(--framer-font-size, 16px);\n            letter-spacing: var(--framer-letter-spacing, 0);\n            text-transform: var(--framer-text-transform, none);\n            text-decoration: var(--framer-text-decoration, none);\n            line-height: var(--framer-line-height, 1.2em);\n            text-align: var(--framer-text-alignment, start);\n        }\n    `,\n  `\n        strong.framer-text {\n            font-weight: bolder;\n        }\n    `,\n  `\n        em.framer-text {\n            font-style: italic;\n        }\n    `,\n  `\n        p.framer-text:not(:first-child),\n        div.framer-text:not(:first-child),\n        h1.framer-text:not(:first-child),\n        h2.framer-text:not(:first-child),\n        h3.framer-text:not(:first-child),\n        h4.framer-text:not(:first-child),\n        h5.framer-text:not(:first-child),\n        h6.framer-text:not(:first-child),\n        ol.framer-text:not(:first-child),\n        ul.framer-text:not(:first-child),\n        .framer-image.framer-text:not(:first-child) {\n            margin-top: var(--framer-paragraph-spacing, 0);\n        }\n    `,\n  `\n        .framer-text[data-text-fill] {\n            display: inline-block;\n            background-clip: text;\n            -webkit-background-clip: text;\n            /* make this a transparent color if you want to visualise the clipping  */\n            -webkit-text-fill-color: transparent;\n            padding: max(0em, calc(calc(1.3em - var(--framer-line-height, 1.3em)) / 2));\n            margin: min(0em, calc(calc(1.3em - var(--framer-line-height, 1.3em)) / -2));\n        }\n    `,\n  `\n        a.framer-text,\n        a.framer-text span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-font-family, var(--framer-font-family, Inter, sans-serif));\n            font-style: var(--framer-link-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-link-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-text-color, var(--framer-text-color, #000));\n            font-size: var(--framer-link-font-size, var(--framer-font-size, 16px));\n            text-transform: var(--framer-link-text-transform, var(--framer-text-transform, none));\n            text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration, none));\n            cursor: var(--framer-custom-cursors, pointer);\n        }\n    `,\n  `\n        a.framer-text:hover,\n        a.framer-text:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, sans-serif)));\n            font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n        }\n    `,\n  `\n        a.framer-text[data-framer-page-link-current],\n        a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, sans-serif)));\n            font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n            text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n        }\n    `,\n  `\n        a.framer-text[data-framer-page-link-current]:hover,\n        a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, sans-serif))));\n            font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n            color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n            font-size: var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n            text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n        }\n    `,\n  `\n        .framer-image.framer-text {\n            display: block;\n            max-width: 100%;\n            height: auto;\n        }\n    `,\n  `\n        .text-styles-preset-reset.framer-text {\n            --framer-font-family: Inter, sans-serif;\n            --framer-font-style: normal;\n            --framer-font-weight: 500;\n            --framer-text-color: #000;\n            --framer-font-size: 16px;\n            --framer-letter-spacing: 0;\n            --framer-text-transform: none;\n            --framer-text-decoration: none;\n            --framer-line-height: 1.2em;\n            --framer-text-alignment: start;\n        }\n    `,\n  `\n        ul.framer-text,\n        ol.framer-text {\n            display: table;\n            width: 100%;\n        }\n    `,\n  `\n        li.framer-text {\n            display: table-row;\n            counter-increment: list-item;\n            list-style: none;\n        }\n    `,\n  `\n        ol.framer-text > li.framer-text::before {\n            display: table-cell;\n            width: 2.25ch;\n            box-sizing: border-box;\n            padding-right: 0.75ch;\n            content: counter(list-item) \".\";\n            white-space: nowrap;\n        }\n    `,\n  `\n        ul.framer-text > li.framer-text::before {\n            display: table-cell;\n            width: 2.25ch;\n            box-sizing: border-box;\n            padding-right: 0.75ch;\n            content: \"\\u2022\";\n        }\n    `,\n  `\n        .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n            width: 100%;\n        }\n    `,\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] {\n                position: relative;\n            }\n        }\n    `,\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"]::before {\n                content: \"\";\n                display: block;\n                padding-bottom: calc(100% / var(--aspect-ratio));\n            }\n        }\n    `,\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n                position: absolute;\n                top: 0;\n                left: 0;\n                height: 100%;\n            }\n        }\n    `\n];\n\n// ../../library/src/render/utils/setDocumentStyles.ts\nvar defaultCache = /* @__PURE__ */ new Set();\nvar defaultSheet;\nfunction injectCSSRule(cssRule, sheet, cache3 = defaultCache) {\n  if (!cssRule || cache3.has(cssRule) || typeof document === \"undefined\")\n    return;\n  cache3.add(cssRule);\n  if (!sheet) {\n    if (!defaultSheet) {\n      const styleElement = document.createElement(\"style\");\n      styleElement.setAttribute(\"type\", \"text/css\");\n      styleElement.setAttribute(\"data-framer-css\", \"true\");\n      if (!document.head) {\n        console.warn(\"not injecting CSS: the document is missing a <head> element\");\n        return;\n      }\n      document.head.appendChild(styleElement);\n      if (styleElement.sheet) {\n        defaultSheet = styleElement.sheet;\n      } else {\n        console.warn(\"not injecting CSS: injected <style> element does not have a sheet\", styleElement);\n        return;\n      }\n    }\n    sheet = defaultSheet;\n  }\n  try {\n    sheet.insertRule(cssRule, sheet.cssRules.length);\n  } catch {\n  }\n}\n\n// ../../library/src/render/utils/injectComponentCSSRules.ts\nvar componentCSSRules = [`[data-framer-component-type] { position: absolute; }`];\nvar textAlignmentRule = `\n[data-framer-component-type=\"Text\"] > * {\n    text-align: var(--framer-text-alignment, start);\n}`;\nvar textBlockSpanRule = `\n[data-framer-component-type=\"Text\"] span span,\n[data-framer-component-type=\"Text\"] p span,\n[data-framer-component-type=\"Text\"] h1 span,\n[data-framer-component-type=\"Text\"] h2 span,\n[data-framer-component-type=\"Text\"] h3 span,\n[data-framer-component-type=\"Text\"] h4 span,\n[data-framer-component-type=\"Text\"] h5 span,\n[data-framer-component-type=\"Text\"] h6 span {\n    display: block;\n}`;\nvar textInlineSpanRule = `\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span {\n    display: unset;\n}`;\nvar renderTextStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    font-family: var(--font-family);\n    font-style: var(--font-style);\n    font-weight: min(calc(var(--framer-font-weight-increase, 0) + var(--font-weight, 400)), 900);\n    color: var(--text-color);\n    letter-spacing: var(--letter-spacing);\n    font-size: var(--font-size);\n    text-transform: var(--text-transform);\n    text-decoration: var(--text-decoration);\n    line-height: var(--line-height);\n}`;\nvar textStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    --font-family: var(--framer-font-family);\n    --font-style: var(--framer-font-style);\n    --font-weight: var(--framer-font-weight);\n    --text-color: var(--framer-text-color);\n    --letter-spacing: var(--framer-letter-spacing);\n    --font-size: var(--framer-font-size);\n    --text-transform: var(--framer-text-transform);\n    --text-decoration: var(--framer-text-decoration);\n    --line-height: var(--framer-line-height);\n}`;\nvar linkStylesRule = `\n[data-framer-component-type=\"Text\"] a,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] a span span span,\n[data-framer-component-type=\"Text\"] a p span span,\n[data-framer-component-type=\"Text\"] a h1 span span,\n[data-framer-component-type=\"Text\"] a h2 span span,\n[data-framer-component-type=\"Text\"] a h3 span span,\n[data-framer-component-type=\"Text\"] a h4 span span,\n[data-framer-component-type=\"Text\"] a h5 span span,\n[data-framer-component-type=\"Text\"] a h6 span span {\n    --font-family: var(--framer-link-font-family, var(--framer-font-family));\n    --font-style: var(--framer-link-font-style, var(--framer-font-style));\n    --font-weight: var(--framer-link-font-weight, var(--framer-font-weight));\n    --text-color: var(--framer-link-text-color, var(--framer-text-color));\n    --font-size: var(--framer-link-font-size, var(--framer-font-size));\n    --text-transform: var(--framer-link-text-transform, var(--framer-text-transform));\n    --text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration));\n}`;\nvar linkHoverStylesRule = `\n[data-framer-component-type=\"Text\"] a:hover,\n[data-framer-component-type=\"Text\"] a div span:hover,\n[data-framer-component-type=\"Text\"] a span span span:hover,\n[data-framer-component-type=\"Text\"] a p span span:hover,\n[data-framer-component-type=\"Text\"] a h1 span span:hover,\n[data-framer-component-type=\"Text\"] a h2 span span:hover,\n[data-framer-component-type=\"Text\"] a h3 span span:hover,\n[data-framer-component-type=\"Text\"] a h4 span span:hover,\n[data-framer-component-type=\"Text\"] a h5 span span:hover,\n[data-framer-component-type=\"Text\"] a h6 span span:hover {\n    --font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));\n}`;\nvar linkCurrentStylesRule = `\n[data-framer-component-type=\"Text\"].isCurrent a,\n[data-framer-component-type=\"Text\"].isCurrent a div span,\n[data-framer-component-type=\"Text\"].isCurrent a span span span,\n[data-framer-component-type=\"Text\"].isCurrent a p span span,\n[data-framer-component-type=\"Text\"].isCurrent a h1 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h2 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h3 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h4 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h5 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h6 span span {\n    --font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));\n}`;\nvar textCSSRules = [\n  `[data-framer-component-type=\"Text\"] { cursor: inherit; }`,\n  `[data-framer-component-text-autosized] * { white-space: pre; }`,\n  textAlignmentRule,\n  textBlockSpanRule,\n  textInlineSpanRule,\n  renderTextStylesRule,\n  textStylesRule,\n  linkStylesRule,\n  linkHoverStylesRule,\n  linkCurrentStylesRule\n];\nvar stackPositionRule = `\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-component-type],\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > [data-framer-component-type] {\n    position: relative;\n}`;\nvar nativeStackGapRules = [\n  `[data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: var(--stack-native-row-gap);\n        column-gap: var(--stack-native-column-gap);\n    }`,\n  `.${flexboxGapNotSupportedClass} [data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: unset;\n        column-gap: unset;\n    }`\n];\nvar stackGapRule = `\n.${flexboxGapNotSupportedClass} [data-framer-legacy-stack-gap-enabled=\"true\"] > *, [data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"] {\n    margin-top: calc(var(--stack-gap-y) / 2);\n    margin-bottom: calc(var(--stack-gap-y) / 2);\n    margin-right: calc(var(--stack-gap-x) / 2);\n    margin-left: calc(var(--stack-gap-x) / 2);\n}\n`;\nvar stackDirectionRuleVertical = `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child {\n    margin-top: 0;\n    margin-left: 0;\n}`;\nvar stackDirectionRuleHorizontal = `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child {\n    margin-right: 0;\n    margin-bottom: 0;\n}`;\nvar stackCSSRules = [\n  stackPositionRule,\n  stackGapRule,\n  ...nativeStackGapRules,\n  stackDirectionRuleVertical,\n  stackDirectionRuleHorizontal\n];\nvar navigationCSSRules = [\n  `\nNavigationContainer\n[data-framer-component-type=\"NavigationContainer\"] > *,\n[data-framer-component-type=\"NavigationContainer\"] > [data-framer-component-type] {\n    position: relative;\n}`\n];\nvar scrollCSSRules = [\n  `[data-framer-component-type=\"Scroll\"]::-webkit-scrollbar { display: none; }`,\n  `[data-framer-component-type=\"ScrollContentWrapper\"] > * { position: relative; }`\n];\nvar nativeScrollCSSRules = [\n  `[data-framer-component-type=\"NativeScroll\"] { -webkit-overflow-scrolling: touch; }`,\n  `[data-framer-component-type=\"NativeScroll\"] > * { position: relative; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-both { overflow-x: scroll; overflow-y: scroll; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical { overflow-x: hidden; overflow-y: scroll; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal { overflow-x: scroll; overflow-y: hidden; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical > * { width: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal > * { height: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].scrollbar-hidden::-webkit-scrollbar { display: none; }`\n];\nvar deviceComponentCSSRules = [\n  `[data-framer-component-type=\"DeviceComponent\"].no-device > * { width: 100% !important; height: 100% !important; }`\n];\nvar pageContentWrapperWrapperCSSRules = [\n  `[data-framer-component-type=\"PageContentWrapper\"] > *, [data-framer-component-type=\"PageContentWrapper\"] > [data-framer-component-type] { position: relative; }`\n];\nvar presenceCSS = [\n  `[data-is-present=\"false\"], [data-is-present=\"false\"] * { pointer-events: none !important; }`\n];\nvar cursorCSS = [\n  `[data-framer-cursor=\"pointer\"] { cursor: pointer; }`,\n  `[data-framer-cursor=\"grab\"] { cursor: grab; }`,\n  `[data-framer-cursor=\"grab\"]:active { cursor: grabbing; }`\n];\nvar frameCSS = [\n  `[data-framer-component-type=\"Frame\"] *, [data-framer-component-type=\"Stack\"] * { pointer-events: auto; }`,\n  `[data-framer-generated] * { pointer-events: unset }`\n];\nvar resetCSS = [\n  `[data-reset=\"button\"] {\n        border-width: 0;\n        padding: 0;\n}`\n];\nvar frameCSSRules = (isPreview) => {\n  return isPreview ? frameCSS : [];\n};\nvar svgCSSRules = [`.svgContainer svg { display: block; }`];\nvar combineCSSRules = (isPreview) => [\n  ...componentCSSRules,\n  ...textCSSRules,\n  ...richTextCSSRules,\n  ...deprecatedRichTextCSSRules,\n  ...stackCSSRules,\n  ...navigationCSSRules,\n  ...scrollCSSRules,\n  ...nativeScrollCSSRules,\n  ...pageContentWrapperWrapperCSSRules,\n  ...deviceComponentCSSRules,\n  ...presenceCSS,\n  ...cursorCSS,\n  ...frameCSSRules(isPreview),\n  ...svgCSSRules,\n  ...resetCSS\n];\nvar combinedCSSRules = combineCSSRules(false);\nvar combinedCSSRulesForPreview = combineCSSRules(true);\nvar injectComponentCSSRules = (sheet, cache3) => {\n  const styles = RenderTarget.current() === \"PREVIEW\" /* preview */ ? combinedCSSRulesForPreview : combinedCSSRules;\n  for (const rule of styles)\n    injectCSSRule(rule.trim(), sheet, cache3);\n};\n\n// ../../library/src/utils/addPropertyControls.ts\nfunction addPropertyControls(component, propertyControls) {\n  Object.assign(component, { propertyControls });\n}\nfunction getPropertyControls(component) {\n  return component.propertyControls;\n}\n\n// ../../library/src/components/Device/presets.ts\nvar defaultPresetId = \"iphone-12-pro\";\nvar presetsBase = {\n  iPhonePro: {\n    screenRadius: 0,\n    clayBezelLeft: 21,\n    clayBezelRight: 21,\n    clayBezelTop: 21,\n    clayBezelBottom: 21,\n    clayBezelRadius: 38 + 21\n  },\n  iPhone8: {\n    screenRadius: 0,\n    clayBezelLeft: 24,\n    clayBezelRight: 24,\n    clayBezelTop: 96,\n    clayBezelBottom: 96,\n    clayBezelRadius: 38 * 1.5\n  },\n  iPadPro: {\n    screenRadius: 25,\n    clayBezelLeft: 38,\n    clayBezelRight: 38,\n    clayBezelTop: 38,\n    clayBezelBottom: 38,\n    clayBezelRadius: 25 + 38\n  },\n  desktop: {\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 20,\n    clayBezelBottom: 20,\n    clayBezelRadius: 20\n  }\n};\nvar devicePresets = [\n  {\n    id: \"iphone-12\",\n    title: \"iPhone 12\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 500,\n      height: 974,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-mini\",\n    title: \"iPhone 12 Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 450,\n      height: 890,\n      screenOffsetTop: 55,\n      screenOffsetLeft: 45\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M142 18c0 19 14 47 43 48h349c31 0 44-29 44-48 0-12 4-18 14-18h18c38 0 52 4 66 11 14 8 25 19 33 33v1c7 14 11 28 11 65v1340c0 38-4 52-11 66-8 14-19 25-33 33h-1c-14 7-28 11-65 11H110c-38 0-52-4-66-11-14-8-25-19-33-33v-1c-7-13-11-27-11-64V110c0-38 4-52 11-66 8-14 19-25 33-33h1C58 4 72 0 109 0h16c11 0 17 6 17 18z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 460,\n      height: 880,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 31.5, right: 30.5, bottom: 30 }\n    }\n  },\n  {\n    id: \"iphone-12-pro\",\n    title: \"iPhone 12 Pro\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 494,\n      height: 968,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-pro-max\",\n    title: \"iPhone 12 Pro Max\",\n    screenRadius: 50,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 428,\n    screenHeight: 926,\n    externalClay: {\n      width: 532,\n      height: 1050,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<path d=\"M102 0c6 0 7 3 7 9 0 10 7 23 24 23h164c13 0 22-12 22-23 0-6 1-9 7-9h34c24 0 32 2 41 7s15 11 20 20 7 17 7 41v790c0 24-2 32-7 41s-11 15-20 20-17 7-41 7H68c-24 0-32-2-41-7s-15-11-20-20-7-17-7-41V68c0-24 2-32 7-41S18 12 27 7s17-7 41-7h34z\" fill=\"#000\" fill-rule=\"evenodd\"/>',\n    realisticImage: {\n      width: 528,\n      height: 1026,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 28.5, right: 28, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-11\",\n    title: \"iPhone 11\",\n    screenRadius: 0,\n    clayBezelLeft: 35.5,\n    clayBezelRight: 35.5,\n    clayBezelTop: 35.5,\n    clayBezelBottom: 35.5,\n    clayBezelRadius: 77,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M85.5 0C89.1 0 92 3 92 6.5c.3 6 1.5 10 3.4 13.5 2.2 4.1 5.5 7.4 9.6 9.6 4.2 2.2 8.9 3.4 17 3.4h170c8.1 0 12.8-1.2 17-3.4 4.1-2.2 7.4-5.5 9.6-9.6A31 31 0 00322 6.5c0-3.6 3-6.5 6.5-6.5h32.3c18.5 0 25.2 2 32 5.5 6.7 3.7 12 9 15.7 15.7 3.6 6.8 5.5 13.5 5.5 32v789.6c0 18.5-2 25.2-5.5 32-3.7 6.7-9 12-15.7 15.7-6.8 3.6-13.5 5.5-32 5.5H53.2c-18.5 0-25.2-2-32-5.5-6.7-3.7-12-9-15.7-15.7C2 868 0 861.3 0 842.8V53.2c0-18.5 2-25.2 5.5-32 3.7-6.7 9-12 15.7-15.7C28 2 34.7 0 53.2 0h32.3z\" fill=\"#000\" fill-rule=\"nonzero\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#202120\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F9F6EF\" },\n        { id: \"purple\", title: \"Purple\", colorValue: \"#D1CDDB\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#ADE0CD\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#B90D2E\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FFE680\" }\n      ],\n      handOffset: { left: 14.5, right: 14.5, bottom: 14.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro\",\n    title: \"iPhone 11 Pro\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 375,\n    screenHeight: 812,\n    externalClay: {\n      width: 485,\n      height: 942,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M292 8.668V9c0 9.266-7.07 21-23.332 21h-162C90.402 30 83.332 18.266 83.332 9v-.332c0-4.285 0-8.668-7.664-8.668H43.332C16.312 0 0 16.313 0 43.332v725.336C0 795.688 16.313 812 43.332 812h288.336c27.02 0 43.332-16.313 43.332-43.332V43.332C375 16.312 358.687 0 331.668 0h-32C292 0 292 4.383 292 8.668zm0 0\"/>',\n    realisticImage: {\n      width: 475,\n      height: 912,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 24.5, right: 24.5, bottom: 23.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro-max\",\n    title: \"iPhone 11 Pro Max\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M96 0c3.313 0 5.91 2.688 6 6 .18 6.645 1.191 10.148 2.938 13.41 1.917 3.586 4.73 6.402 8.316 8.317 3.586 1.918 7.441 2.941 15.445 2.941h156.602c8.004 0 11.86-1.023 15.445-2.941 3.586-1.915 6.399-4.73 8.317-8.317 1.746-3.265 2.746-6.758 2.937-13.41.094-3.313 2.688-6 6-6h46.004c17.387 0 23.687 1.809 30.043 5.21 6.355 3.4 11.344 8.388 14.742 14.743C412.191 26.31 414 32.61 414 49.996v796.008c0 17.387-1.809 23.687-5.21 30.043-3.4 6.355-8.388 11.344-14.743 14.742-6.356 3.402-12.656 5.211-30.043 5.211H49.996c-17.387 0-23.687-1.809-30.043-5.21-6.355-3.4-11.344-8.388-14.742-14.743C1.809 869.69 0 863.39 0 846.004V49.996C0 32.61 1.809 26.31 5.21 19.953c3.4-6.355 8.388-11.344 14.743-14.742C26.31 1.809 32.61 0 49.996 0zm0 0\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 23.5, right: 24.5, bottom: 24 }\n    }\n  },\n  {\n    id: \"iphone-8\",\n    title: \"iPhone 8\",\n    ...presetsBase.iPhone8,\n    screenWidth: 375,\n    screenHeight: 667,\n    externalClay: {\n      width: 491,\n      height: 971,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 475,\n      height: 927,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 18.5 }\n    }\n  },\n  {\n    id: \"iphone-8-plus\",\n    title: \"iPhone 8 Plus\",\n    ...presetsBase.iPhone8,\n    screenWidth: 414,\n    screenHeight: 736,\n    externalClay: {\n      width: 530,\n      height: 1064,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 164\n    },\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 21, right: 20.5, bottom: 19 }\n    }\n  },\n  {\n    id: \"iphone-se\",\n    title: \"iPhone SE\",\n    screenWidth: 320,\n    screenHeight: 568,\n    screenRadius: 0,\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 112,\n    clayBezelBottom: 112,\n    clayBezelRadius: 38 * 1.5,\n    externalClay: {\n      width: 436,\n      height: 872,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 420,\n      height: 828,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#F7CFCA\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 26.5 }\n    }\n  },\n  {\n    id: \"samsung-galaxy-s7\",\n    title: \"Samsung Galaxy S7\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 640,\n    externalClay: {\n      width: 454,\n      height: 880,\n      screenOffsetTop: 120,\n      screenOffsetLeft: 47\n    },\n    realisticImage: {\n      width: 440,\n      height: 860,\n      screenOffsetLeft: 40,\n      screenOffsetTop: 110,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 26, right: 25.5, bottom: 32 }\n    }\n  },\n  {\n    id: \"samsung-note-10\",\n    title: \"Samsung Note 10\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 10,\n    clayBezelLeft: 7,\n    clayBezelRight: 7,\n    clayBezelTop: 15,\n    clayBezelBottom: 15,\n    clayBezelRadius: 15\n  },\n  {\n    id: \"pixel-5\",\n    title: \"Google Pixel 5\",\n    screenRadius: 31,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 460,\n      height: 900,\n      screenOffsetTop: 60,\n      screenOffsetLeft: 50\n    },\n    realisticImage: {\n      width: 920 / 2,\n      height: 1760 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2,\n      availableColors: [\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#2E2C36\" },\n        { id: \"sorta-sage\", title: \"Sorta Sage\", colorValue: \"#B7C9C0\" }\n      ],\n      handOffset: { left: 31.5, right: 31, bottom: 31 }\n    }\n  },\n  {\n    id: \"pixel-4\",\n    title: \"Google Pixel 4\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 34,\n    clayBezelLeft: 10,\n    clayBezelRight: 10,\n    clayBezelTop: 50,\n    clayBezelBottom: 25,\n    clayBezelRadius: 50,\n    externalClay: {\n      width: 460,\n      height: 938,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 89\n    },\n    realisticImage: {\n      width: 460,\n      height: 920,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 80,\n      availableColors: [\n        { id: \"clearly-white\", title: \"Clearly White\", colorValue: \"#EAEDF2\" },\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#1A1A1A\" },\n        { id: \"oh-so-orange\", title: \"Oh So Orange\", colorValue: \"#FF7A68\" }\n      ],\n      handOffset: { left: 35.5, right: 35.5, bottom: 57 }\n    }\n  },\n  {\n    id: \"macbook-air\",\n    title: \"MacBook Air\",\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1890,\n      height: 1125,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 98\n    },\n    realisticImage: {\n      width: 3848 / 2,\n      height: 2240 / 2,\n      screenOffsetLeft: 484 / 2,\n      screenOffsetTop: 196 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-13\",\n    title: `MacBook Pro 13\"`,\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1914,\n      height: 1169,\n      screenOffsetLeft: 236,\n      screenOffsetTop: 109\n    },\n    realisticImage: {\n      width: 3916 / 2,\n      height: 2330 / 2,\n      screenOffsetLeft: 518 / 2,\n      screenOffsetTop: 218 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-16\",\n    title: `MacBook Pro 16\"`,\n    screenWidth: 1536,\n    screenHeight: 960,\n    disableRotation: true,\n    externalClay: {\n      width: 1984,\n      height: 1179,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 78\n    },\n    realisticImage: {\n      width: 4032 / 2,\n      height: 2348 / 2,\n      screenOffsetLeft: 480 / 2,\n      screenOffsetTop: 148 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"imac-21-5\",\n    title: `iMac 21.5\"`,\n    screenWidth: 2048,\n    screenHeight: 1152,\n    disableRotation: true,\n    externalClay: {\n      width: 2288,\n      height: 1892,\n      screenOffsetLeft: 120,\n      screenOffsetTop: 120\n    },\n    realisticImage: {\n      width: 4562 / 2,\n      height: 3796 / 2,\n      screenOffsetLeft: 232 / 2,\n      screenOffsetTop: 244 / 2\n    }\n  },\n  {\n    id: \"imac-27\",\n    title: `iMac 27\"`,\n    screenWidth: 2560,\n    screenHeight: 1440,\n    disableRotation: true,\n    externalClay: {\n      width: 2848,\n      height: 2351,\n      screenOffsetLeft: 144,\n      screenOffsetTop: 151\n    },\n    realisticImage: {\n      width: 5676 / 2,\n      height: 4720 / 2,\n      screenOffsetLeft: 278 / 2,\n      screenOffsetTop: 292 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pro\", title: \"Pro\", colorValue: \"#5F5E63\" }\n      ]\n    }\n  },\n  {\n    id: \"pro-display-xdr\",\n    title: `Pro Display XDR`,\n    screenWidth: 3008,\n    screenHeight: 1692,\n    disableRotation: true,\n    externalClay: {\n      width: 3148,\n      height: 2325,\n      screenOffsetLeft: 70,\n      screenOffsetTop: 60\n    },\n    realisticImage: {\n      width: 6276 / 2,\n      height: 4695 / 2,\n      screenOffsetLeft: 130 / 2,\n      screenOffsetTop: 130 / 2\n    }\n  },\n  {\n    id: \"dell-xps\",\n    title: `Dell XPS`,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    disableRotation: true,\n    externalClay: {\n      width: 2624,\n      height: 1381,\n      screenOffsetLeft: 352,\n      screenOffsetTop: 57\n    },\n    realisticImage: {\n      width: 5412 / 2,\n      height: 2746 / 2,\n      screenOffsetLeft: 786 / 2,\n      screenOffsetTop: 108 / 2\n    }\n  },\n  {\n    id: \"surface-book\",\n    title: `Microsoft Surface Book`,\n    screenWidth: 1500,\n    screenHeight: 1e3,\n    disableRotation: true,\n    externalClay: {\n      width: 2089,\n      height: 1234,\n      screenOffsetLeft: 296,\n      screenOffsetTop: 93\n    },\n    realisticImage: {\n      width: 4200 / 2,\n      height: 2508 / 2,\n      screenOffsetLeft: 600 / 2,\n      screenOffsetTop: 210 / 2\n    }\n  },\n  {\n    id: \"ipad\",\n    title: \"iPad\",\n    screenRadius: 0,\n    screenWidth: 810,\n    screenHeight: 1080,\n    clayBezelLeft: 30,\n    clayBezelRight: 30,\n    clayBezelTop: 95,\n    clayBezelBottom: 95,\n    clayBezelRadius: 0,\n    externalClay: {\n      width: 966,\n      height: 1378,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 149\n    },\n    realisticImage: {\n      width: 1920 / 2,\n      height: 2720 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 140,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-mini\",\n    title: \"iPad Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 768,\n    screenHeight: 1024,\n    externalClay: {\n      width: 924,\n      height: 1384,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 180\n    },\n    realisticImage: {\n      width: 1856 / 2,\n      height: 2728 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 340 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-air\",\n    title: \"iPad Air\",\n    screenRadius: 18,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 820,\n    screenHeight: 1180,\n    externalClay: {\n      width: 994,\n      height: 1374,\n      screenOffsetLeft: 87,\n      screenOffsetTop: 97\n    },\n    realisticImage: {\n      width: 1960 / 2,\n      height: 2680 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 160 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#ECCBC4\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#CBDAE6\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-11\",\n    title: \"iPad Pro 11\\u2033\",\n    screenRadius: 17,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 834,\n    screenHeight: 1194,\n    externalClay: {\n      width: 990,\n      height: 1370,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 1968 / 2,\n      height: 2688 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-12-9\",\n    title: \"iPad Pro 12.9\\u2033\",\n    ...presetsBase.iPadPro,\n    screenRadius: 17,\n    screenWidth: 1024,\n    screenHeight: 1366,\n    externalClay: {\n      width: 1180,\n      height: 1542,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 2348 / 2,\n      height: 3032 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"surface-3\",\n    title: \"Microsoft Surface 3\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 960,\n    screenHeight: 640,\n    externalClay: {\n      width: 1184,\n      height: 864,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 2280 / 2,\n      height: 1580 / 2,\n      screenOffsetLeft: 180 / 2,\n      screenOffsetTop: 150 / 2\n    }\n  },\n  {\n    id: \"surface-pro-4\",\n    title: \"Microsoft Surface Pro 4\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 1368,\n    screenHeight: 912,\n    externalClay: {\n      width: 1592,\n      height: 1136,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 3176 / 2,\n      height: 2224 / 2,\n      screenOffsetLeft: 220 / 2,\n      screenOffsetTop: 200 / 2\n    }\n  },\n  {\n    id: \"apple-watch-44\",\n    title: `Apple Watch 44mm`,\n    screenRadius: 33,\n    screenWidth: 184,\n    screenHeight: 224,\n    disableRotation: true,\n    externalClay: {\n      width: 298,\n      height: 502,\n      screenOffsetLeft: 57,\n      screenOffsetTop: 129\n    },\n    realisticImage: {\n      width: 548 / 2,\n      height: 908 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  {\n    id: \"apple-watch-40\",\n    title: `Apple Watch 40mm`,\n    screenRadius: 27,\n    screenWidth: 162,\n    screenHeight: 197,\n    disableRotation: true,\n    externalClay: {\n      width: 280,\n      height: 463,\n      screenOffsetLeft: 59,\n      screenOffsetTop: 124\n    },\n    realisticImage: {\n      width: 504 / 2,\n      height: 854 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  {\n    id: \"tv-full-hd\",\n    title: `Full HD`,\n    screenRadius: 0,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    externalClay: {\n      width: 1968,\n      height: 1168,\n      screenOffsetLeft: 24,\n      screenOffsetTop: 12\n    },\n    realisticImage: {\n      width: 4040 / 2,\n      height: 2360 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2\n    }\n  },\n  {\n    id: \"tv-4k\",\n    title: `4K`,\n    screenRadius: 0,\n    screenWidth: 3840,\n    screenHeight: 2160,\n    externalClay: {\n      width: 3908,\n      height: 2308,\n      screenOffsetLeft: 34,\n      screenOffsetTop: 24\n    },\n    realisticImage: {\n      width: 7960 / 2,\n      height: 4600 / 2,\n      screenOffsetLeft: 140 / 2,\n      screenOffsetTop: 140 / 2\n    }\n  },\n  {\n    id: \"720p\",\n    title: \"720p\",\n    ...presetsBase.desktop,\n    screenWidth: 720,\n    screenHeight: 1280\n  },\n  {\n    id: \"900p\",\n    title: \"900p\",\n    ...presetsBase.desktop,\n    screenWidth: 900,\n    screenHeight: 1440\n  },\n  {\n    id: \"1080p\",\n    title: \"1080p\",\n    ...presetsBase.desktop,\n    screenWidth: 1080,\n    screenHeight: 1920\n  },\n  {\n    id: \"1440p\",\n    title: \"1440p\",\n    ...presetsBase.desktop,\n    screenWidth: 1440,\n    screenHeight: 2560\n  },\n  {\n    id: \"4k\",\n    title: \"4K\",\n    ...presetsBase.desktop,\n    screenWidth: 2160,\n    screenHeight: 3840\n  }\n];\nvar deviceCodeComponentPresetIds = [\n  \"iphone-12\",\n  \"iphone-12-mini\",\n  \"iphone-12-pro\",\n  \"iphone-11\",\n  \"iphone-11-pro\",\n  \"iphone-11-pro-max\",\n  \"iphone-8\",\n  \"iphone-8-plus\",\n  \"iphone-se\",\n  \"samsung-note-10\",\n  \"pixel-4\",\n  \"ipad\",\n  \"ipad-pro-11\",\n  \"ipad-pro-12-9\",\n  \"720p\",\n  \"900p\",\n  \"1080p\",\n  \"1440p\",\n  \"4k\"\n];\nvar devicePresetsMap = devicePresets.reduce((map, preset) => {\n  map[preset.id] = preset;\n  return map;\n}, {});\nfunction getDevicePreset(presetId) {\n  var _a;\n  return (_a = devicePresetsMap[presetId]) != null ? _a : devicePresetsMap[defaultPresetId];\n}\n\n// ../../library/src/components/Device/DeviceCodeComponentProps.ts\nvar defaultDeviceProps = {\n  preset: defaultPresetId,\n  customWidth: 375,\n  customHeight: 800,\n  customBezel: 20,\n  isMixedBezel: false,\n  bezelTop: 20,\n  bezelRight: 20,\n  bezelBottom: 20,\n  bezelLeft: 20,\n  customBezelRadius: 20,\n  customScreenRadius: 0,\n  orientation: \"portrait\",\n  skin: \"clay\",\n  theme: \"dark\",\n  shadow: true,\n  backgroundColor: void 0\n};\nfunction convertPropsToDeviceOptions(props, { forceOldClay = false } = {}) {\n  var _a, _b, _c, _d, _e, _f, _g;\n  if (props.preset === \"no-device\") {\n    return;\n  }\n  let preset;\n  if (props.preset === \"custom\") {\n    preset = {\n      screenWidth: props.customWidth,\n      screenHeight: props.customHeight,\n      screenRadius: props.customScreenRadius,\n      clayBezelTop: props.isMixedBezel ? props.bezelTop : props.customBezel,\n      clayBezelRight: props.isMixedBezel ? props.bezelRight : props.customBezel,\n      clayBezelBottom: props.isMixedBezel ? props.bezelBottom : props.customBezel,\n      clayBezelLeft: props.isMixedBezel ? props.bezelLeft : props.customBezel,\n      clayBezelRadius: props.customBezelRadius\n    };\n  } else {\n    preset = getDevicePreset(props.preset);\n  }\n  const colors = getColorsFromTheme(props.theme);\n  const shadowColor = colors.shadowColor;\n  const shadow = props.shadow ? `0 10px 30px ${shadowColor}` : void 0;\n  const rotate = !preset.disableRotation && (props.orientation === \"landscape\" || props.rotated);\n  let deviceWidth;\n  let deviceHeight;\n  let screenOffsetTop;\n  let screenOffsetLeft;\n  let colorId = props.colorId;\n  let appearance;\n  if ((props.skin === void 0 || props.skin === \"realistic\") && preset.realisticImage && props.preset) {\n    deviceWidth = preset.realisticImage.width;\n    deviceHeight = preset.realisticImage.height;\n    screenOffsetTop = preset.realisticImage.screenOffsetTop;\n    screenOffsetLeft = preset.realisticImage.screenOffsetLeft;\n    colorId = colorId != null ? colorId : colorIdForTheme(props.theme, preset.realisticImage.availableColors);\n    appearance = {\n      type: \"realistic\",\n      imageUrl: colorId ? `https://preview.framercdn.com/images/devices/${props.preset}-${colorId}.png` : `https://preview.framercdn.com/images/devices/${props.preset}.png`,\n      imageWidth: preset.realisticImage.width,\n      imageHeight: preset.realisticImage.height,\n      rotateImage: rotate\n    };\n  } else {\n    deviceWidth = preset.screenWidth + ((_a = preset.clayBezelLeft) != null ? _a : 0) + ((_b = preset.clayBezelRight) != null ? _b : 0);\n    deviceHeight = preset.screenHeight + ((_c = preset.clayBezelTop) != null ? _c : 0) + ((_d = preset.clayBezelBottom) != null ? _d : 0);\n    screenOffsetTop = (_e = preset.clayBezelTop) != null ? _e : 0;\n    screenOffsetLeft = (_f = preset.clayBezelLeft) != null ? _f : 0;\n    if (preset.externalClay && !forceOldClay) {\n      deviceWidth = preset.externalClay.width;\n      deviceHeight = preset.externalClay.height;\n      screenOffsetTop = preset.externalClay.screenOffsetTop;\n      screenOffsetLeft = preset.externalClay.screenOffsetLeft;\n      appearance = {\n        type: \"external-clay\",\n        imageUrl: `https://preview.framercdn.com/images/devices/${props.preset}-${props.theme}.svg`,\n        imageWidth: preset.externalClay.width,\n        imageHeight: preset.externalClay.height,\n        rotateImage: rotate\n      };\n    } else {\n      appearance = {\n        type: \"clay\",\n        bezelRadius: preset.clayBezelRadius !== void 0 ? `${preset.clayBezelRadius}px` : void 0,\n        bezelColor: colors.bezelColor,\n        bezelShadeColor: colors.bezelShadeColor\n      };\n    }\n  }\n  let screenWidth = preset.screenWidth;\n  let screenHeight = preset.screenHeight;\n  if (rotate) {\n    const screenOffsetRight = deviceWidth - screenWidth - screenOffsetLeft;\n    [deviceWidth, deviceHeight] = [deviceHeight, deviceWidth];\n    [screenWidth, screenHeight] = [screenHeight, screenWidth];\n    [screenOffsetTop, screenOffsetLeft] = [screenOffsetRight, screenOffsetTop];\n  }\n  const handOffset = (_g = preset.realisticImage) == null ? void 0 : _g.handOffset;\n  return {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius: preset.screenRadius !== void 0 ? `${preset.screenRadius}px` : void 0,\n    screenMaskImage: appearance.type !== \"realistic\" && preset.screenMask ? makeScreenMaskImage({\n      mask: preset.screenMask,\n      width: preset.screenWidth,\n      height: preset.screenHeight,\n      rotate\n    }) : void 0,\n    screenColor: colors.screenColor,\n    shadow,\n    hand: props.hand !== void 0 && supportsHand(props) ? {\n      imageUrl: `https://preview.framercdn.com/images/hands/${props.hand}.png`,\n      offsetLeft: handOffset == null ? void 0 : handOffset.left,\n      offsetRight: handOffset == null ? void 0 : handOffset.right,\n      offsetBottom: handOffset == null ? void 0 : handOffset.bottom\n    } : void 0,\n    background: props.backgroundColor,\n    theme: props.theme,\n    colorId\n  };\n}\nfunction makeScreenMaskImage({\n  mask,\n  width,\n  height,\n  rotate = false\n}) {\n  const transform2 = rotate ? `transform=\"translate(0 ${width}) rotate(-90)\"` : \"\";\n  const encoded = encodeURIComponent(\n    `<svg xmlns=\"http://www.w3.org/2000/svg\" viewport=\"0 0 ${width} ${height}\" preserveAspectRatio=\"none\"><g x=\"0\" y=\"0\" ${transform2}>${mask}</g></svg>`\n  );\n  return `url(\"data:image/svg+xml;utf8,${encoded}\")`;\n}\nvar lightColors = /* @__PURE__ */ new Set([\"white\", \"silver\", \"clearly-white\", \"sorta-sage\"]);\nvar darkColors = /* @__PURE__ */ new Set([\"black\", \"space-grey\", \"graphite\", \"just-black\", \"pro\"]);\nfunction colorIdForTheme(theme, availableColors) {\n  var _a;\n  if (!availableColors)\n    return;\n  const colors = theme === \"light\" ? lightColors : darkColors;\n  for (const color2 of availableColors) {\n    if (colors.has(color2.id)) {\n      return color2.id;\n    }\n  }\n  return (_a = availableColors[0]) == null ? void 0 : _a.id;\n}\nfunction supportsHand({ preset: presetId, skin, orientation = \"portrait\" }) {\n  var _a;\n  if (!presetId || presetId === \"custom\" || presetId === \"no-device\" || orientation === \"landscape\")\n    return false;\n  const preset = getDevicePreset(presetId);\n  return skin !== \"clay\" && ((_a = preset.realisticImage) == null ? void 0 : _a.handOffset) !== void 0;\n}\n\n// ../../library/src/components/Device/usePrototypingMetaTags.ts\nimport React18 from \"react\";\nfunction applyMetaTag(name, props) {\n  var _a;\n  let tag = document.querySelector(`meta[name=\"${name}\"]`);\n  if (!tag) {\n    tag = document.createElement(\"meta\");\n    (_a = document.getElementsByTagName(\"head\")[0]) == null ? void 0 : _a.appendChild(tag);\n    tag.setAttribute(\"name\", name);\n  }\n  for (const [k, v] of Object.entries(props)) {\n    tag.setAttribute(k, v);\n  }\n}\nfunction usePrototypingMetaTags() {\n  React18.useEffect(() => {\n    applyMetaTag(\"mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-status-bar-style\", {\n      content: \"black-translucent\"\n    });\n    applyMetaTag(\"viewport\", {\n      content: \"viewport-fit=cover, user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1\"\n    });\n  }, []);\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nfunction DeviceCodeComponentInner({ children, ...props }) {\n  usePrototypingMetaTags();\n  const deviceOptions = convertPropsToDeviceOptions(props, { forceOldClay: true });\n  if (!deviceOptions) {\n    injectComponentCSSRules();\n    return /* @__PURE__ */ React19.createElement(\n      \"div\",\n      {\n        \"data-framer-component-type\": \"DeviceComponent\",\n        className: \"no-device\",\n        style: { width: \"100%\", height: \"100%\" }\n      },\n      /* @__PURE__ */ React19.createElement(ProvideParentSize, { parentSize: 1 /* Disabled */ }, children)\n    );\n  }\n  const child = Array.isArray(children) ? children[0] : children;\n  const resizedChild = child && React19.isValidElement(child) ? React19.cloneElement(child, {\n    width: deviceOptions.screenWidth,\n    height: deviceOptions.screenHeight\n  }) : null;\n  return /* @__PURE__ */ React19.createElement(Device, { scaleTo: \"dynamic\", deviceOptions }, resizedChild);\n}\nvar DeviceCodeComponent = /* @__PURE__ */ (() => {\n  const { componentWidth: defaultWidth2, componentHeight: defaultHeight2 } = getComponentSize(\n    convertPropsToDeviceOptions(defaultDeviceProps, { forceOldClay: true })\n  );\n  DeviceCodeComponentInner.defaultProps = {\n    width: defaultWidth2,\n    height: defaultHeight2,\n    ...defaultDeviceProps\n  };\n  const deviceCodeComponentPresets = devicePresets.filter((preset) => deviceCodeComponentPresetIds.includes(preset.id));\n  addPropertyControls(DeviceCodeComponentInner, {\n    children: {\n      title: \"Content\",\n      type: \"componentinstance\" /* ComponentInstance */\n    },\n    preset: {\n      type: \"enum\" /* Enum */,\n      options: [\"no-device\", \"custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.id)),\n      optionTitles: [\"No Device\", \"Custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.title))\n    },\n    customWidth: {\n      title: \"Width\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customHeight: {\n      title: \"Height\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezel: {\n      title: \"Bezel\",\n      type: \"fusednumber\" /* FusedNumber */,\n      min: 0,\n      toggleKey: \"isMixedBezel\",\n      toggleTitles: [\"a\", \"b\"],\n      valueKeys: [\"bezelTop\", \"bezelRight\", \"bezelBottom\", \"bezelLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezelRadius: {\n      title: \"Bezel Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customScreenRadius: {\n      title: \"Screen Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    orientation: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"portrait\", \"landscape\"],\n      optionTitles: [\"Portrait\", \"Landscape\"],\n      optionIcons: [\"orientation-portrait\", \"orientation-landscape\"],\n      hidden: (props) => !!props.preset && !supportsOrientation(props.preset)\n    },\n    skin: {\n      title: \"Device\",\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"realistic\", \"clay\"],\n      optionTitles: [\"Realistic\", \"Clay\"],\n      defaultValue: \"clay\",\n      hidden: (props) => !!props.preset && !supportsRealisticSkin(props.preset)\n    },\n    theme: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"light\", \"dark\"],\n      optionTitles: [\"Light\", \"Dark\"],\n      hidden: (props) => !!props.preset && !supportsThemes(props.preset, props.skin)\n    },\n    shadow: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      hidden: ({ skin, preset }) => preset !== \"custom\" && skin === \"realistic\" || preset === \"no-device\"\n    },\n    hand: {\n      type: \"enum\" /* Enum */,\n      options: [void 0, \"hand-1\", \"hand-2\"],\n      optionTitles: [\"None\", \"Model 1\", \"Model 2\"],\n      hidden: (props) => !supportsHand(props)\n    },\n    backgroundColor: {\n      type: \"color\" /* Color */,\n      title: \"Background\",\n      optional: true,\n      hidden: ({ preset }) => preset === \"no-device\"\n    }\n  });\n  return DeviceCodeComponentInner;\n})();\nfunction supportsOrientation(presetId) {\n  if (presetId === \"no-device\")\n    return false;\n  if (presetId === \"custom\")\n    return true;\n  const preset = getDevicePreset(presetId);\n  return !preset.disableRotation;\n}\nfunction supportsRealisticSkin(presetId) {\n  if (presetId === \"custom\" || presetId === \"no-device\")\n    return false;\n  const preset = getDevicePreset(presetId);\n  return !!preset.realisticImage;\n}\nfunction supportsThemes(presetId, skin) {\n  if (presetId === \"no-device\")\n    return false;\n  if (presetId === \"custom\" || skin !== \"realistic\")\n    return true;\n  const preset = getDevicePreset(presetId);\n  const realisticImage = preset.realisticImage;\n  if (realisticImage === void 0) {\n    return true;\n  }\n  if (colorIdForTheme(\"dark\", realisticImage.availableColors) !== void 0) {\n    return true;\n  }\n  return false;\n}\n\n// ../../library/src/components/EmptyState.tsx\nimport React28 from \"react\";\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nvar import_process3 = __toESM(require_browser(), 1);\nimport React27, { forwardRef, useContext as useContext5, useRef as useRef4 } from \"react\";\n\n// ../../library/src/utils/isPropValid.ts\nfunction memoize(fn) {\n  const cache3 = /* @__PURE__ */ Object.create(null);\n  return (arg) => {\n    if (cache3[arg] === void 0)\n      cache3[arg] = fn(arg);\n    return cache3[arg];\n  };\n}\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;\nvar isPropValid = /* @__PURE__ */ memoize(\n  (prop) => reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91\n);\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport React20 from \"react\";\n\n// ../../library/src/useIsomorphicLayoutEffect.ts\nimport { useEffect, useLayoutEffect } from \"react\";\nvar useIsomorphicLayoutEffect2 = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// ../../library/src/utils/runtimeInjection.ts\nvar mockWithWarning = (message) => {\n  return () => {\n    warnOnce(message);\n  };\n};\nvar implementation = {\n  useImageSource(image) {\n    var _a;\n    return (_a = image.src) != null ? _a : \"\";\n  },\n  useImageElement(image, rect, nodeId) {\n    const element = new Image();\n    element.src = runtime.useImageSource(image, rect, nodeId);\n    if (image.srcSet)\n      element.srcset = image.srcSet;\n    return element;\n  }\n};\nvar isRuntimeInjected = false;\nvar runtimeProxy = {\n  get(target, key7, reciever) {\n    if (Reflect.has(target, key7)) {\n      return Reflect.get(target, key7, reciever);\n    }\n    if (isRuntimeInjected) {\n      return mockWithWarning(`${String(key7)} is not available in this version of Framer.`);\n    } else {\n      return mockWithWarning(`${String(key7)} is only available inside of Framer. https://www.framer.com/`);\n    }\n  }\n};\nvar runtime = new Proxy(implementation, runtimeProxy);\nfunction _injectRuntime(injectedRuntime) {\n  Object.assign(implementation, injectedRuntime);\n  isRuntimeInjected = true;\n}\n\n// ../../library/src/utils/utils.ts\nfunction isFunction(value) {\n  return value instanceof Function;\n}\nfunction isString3(value) {\n  return typeof value === \"string\";\n}\nfunction isNumber(value) {\n  return typeof value === \"number\";\n}\nfunction isArray(value) {\n  return value instanceof Array;\n}\nfunction isObject2(value) {\n  return typeof value === \"object\";\n}\n\n// ../../library/src/render/utils/imageRendering.ts\nfunction minZoomForPixelatedImageRendering(image, containerSize, devicePixelRatio3 = 1) {\n  var _a, _b, _c, _d;\n  let { width: frameWidth, height: frameHeight } = containerSize;\n  const imageWidth = (_b = (_a = image.pixelWidth) != null ? _a : image.intrinsicWidth) != null ? _b : 0;\n  const imageHeight = (_d = (_c = image.pixelHeight) != null ? _c : image.intrinsicHeight) != null ? _d : 0;\n  if (frameWidth < 1 || frameHeight < 1 || imageWidth < 1 || imageHeight < 1) {\n    return void 0;\n  }\n  frameWidth *= devicePixelRatio3;\n  frameHeight *= devicePixelRatio3;\n  const frameAspectRatio = frameWidth / frameHeight;\n  const imageAspectRatio = imageWidth / imageHeight;\n  switch (image.fit) {\n    case \"fill\":\n      if (imageAspectRatio > frameAspectRatio) {\n        return imageHeight / frameHeight;\n      } else {\n        return imageWidth / frameWidth;\n      }\n    case \"fit\":\n    case \"stretch\":\n      return Math.max(imageWidth / frameWidth, imageHeight / frameHeight);\n  }\n}\nfunction imageRenderingForZoom(zoom, minPixelatedZoom) {\n  if (minPixelatedZoom && Math.max(1, zoom) > minPixelatedZoom) {\n    return \"pixelated\";\n  }\n  return \"auto\";\n}\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nvar wrapperStyle = {\n  position: \"absolute\",\n  pointerEvents: \"none\",\n  userSelect: \"none\",\n  borderRadius: \"inherit\",\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\nvar placeholderStyle = {\n  backgroundSize: \"16px 16px\",\n  backgroundImage: \"repeating-linear-gradient(45deg, rgba(180, 180, 180, 0.8) 0, rgba(180, 180, 180, 0.8) 1px, rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.2) 50%)\",\n  border: \"1px solid #c4c4c4\"\n};\nfunction cssObjectFit(imageFit) {\n  switch (imageFit) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"fill\";\n    default:\n      return \"cover\";\n  }\n}\nfunction cssImageRendering(image, containerSize) {\n  if (!containerSize)\n    return \"auto\";\n  const devicePixelRatio3 = RenderTarget.current() === \"CANVAS\" /* canvas */ ? safeWindow.devicePixelRatio : 1;\n  const minPixelatedZoom = minZoomForPixelatedImageRendering(image, containerSize, devicePixelRatio3);\n  if (RenderTarget.current() === \"CANVAS\" /* canvas */) {\n    return imageRenderingForZoom(1, minPixelatedZoom);\n  } else {\n    return imageRenderingForZoom(RenderEnvironment.zoom, minPixelatedZoom);\n  }\n}\nfunction getImageStyle(image, containerSize) {\n  return {\n    pointerEvents: \"none\",\n    userSelect: \"none\",\n    display: \"block\",\n    width: \"100%\",\n    height: \"100%\",\n    borderRadius: \"inherit\",\n    objectPosition: \"center\",\n    objectFit: cssObjectFit(image.fit),\n    imageRendering: cssImageRendering(image, containerSize)\n  };\n}\nfunction InnerImage({ image, containerSize, nodeId, alt }) {\n  const wrapperRef = React20.useRef(null);\n  const isStaticRendering = RenderTarget.current() !== \"CANVAS\" /* canvas */;\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image, containerSize);\n  if (!isStaticRendering) {\n    const imageElement = runtime.useImageElement(image, containerSize, nodeId);\n    useIsomorphicLayoutEffect2(() => {\n      const wrapper = wrapperRef.current;\n      if (wrapper === null)\n        return;\n      wrapper.appendChild(imageElement);\n      return () => {\n        wrapper.removeChild(imageElement);\n      };\n    }, [imageElement]);\n    Object.assign(imageElement.style, imageStyle);\n  }\n  return /* @__PURE__ */ React20.createElement(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\", pointerEvents: \"none\" } }, isStaticRendering ? /* @__PURE__ */ React20.createElement(\n    \"img\",\n    {\n      src: source,\n      alt: alt != null ? alt : image.alt,\n      srcSet: image.srcSet,\n      sizes: image.sizes,\n      style: imageStyle,\n      loading: image.loading\n    }\n  ) : null);\n}\nfunction BackgroundImageComponent({ layoutId, image, ...props }) {\n  if (layoutId) {\n    layoutId = layoutId + \"-background\";\n  }\n  const hasImage = isString3(image.src);\n  const hasPlaceholder = !hasImage;\n  return /* @__PURE__ */ React20.createElement(\n    motion.div,\n    {\n      layoutId,\n      style: hasPlaceholder ? { ...wrapperStyle, ...placeholderStyle } : wrapperStyle,\n      \"data-framer-background-image-wrapper\": true\n    },\n    hasImage && /* @__PURE__ */ React20.createElement(InnerImage, { image, ...props })\n  );\n}\n\n// ../../library/src/render/types/BackgroundImage.ts\nvar key2 = \"src\";\nvar BackgroundImage;\n((BackgroundImage2) => {\n  BackgroundImage2.isImageObject = function(image) {\n    if (!image || typeof image === \"string\")\n      return false;\n    return key2 in image;\n  };\n})(BackgroundImage || (BackgroundImage = {}));\n\n// ../../library/src/render/style/backgroundImageFromProps.ts\nfunction applyForwardOverrides(background, props) {\n  const { _forwardedOverrideId, _forwardedOverrides, id } = props;\n  const forwardedOverrideId = _forwardedOverrideId != null ? _forwardedOverrideId : id;\n  const src = _forwardedOverrides && forwardedOverrideId ? _forwardedOverrides[forwardedOverrideId] : void 0;\n  if (src && typeof src === \"string\") {\n    background = { ...background, src };\n  }\n  return background;\n}\nfunction backgroundImageFromProps(props) {\n  const { background, image } = props;\n  if (image !== void 0 && background && !BackgroundImage.isImageObject(background)) {\n    return;\n  }\n  let backgroundImage = null;\n  if (isString3(image)) {\n    backgroundImage = { alt: \"\", src: image };\n  } else {\n    backgroundImage = Animatable.get(background, null);\n  }\n  if (!BackgroundImage.isImageObject(backgroundImage)) {\n    return;\n  }\n  return applyForwardOverrides(backgroundImage, props);\n}\n\n// ../../library/src/render/style/BorderComponent.tsx\nimport React21 from \"react\";\nfunction collectBorderStyleForProps(props, style, collapseEqualBorders = true) {\n  const { borderWidth, borderStyle, borderColor } = props;\n  if (!borderWidth) {\n    return;\n  }\n  let borderTop;\n  let borderBottom;\n  let borderLeft;\n  let borderRight;\n  if (typeof borderWidth === \"number\") {\n    borderTop = borderBottom = borderLeft = borderRight = borderWidth;\n  } else {\n    borderTop = borderWidth.top || 0;\n    borderBottom = borderWidth.bottom || 0;\n    borderLeft = borderWidth.left || 0;\n    borderRight = borderWidth.right || 0;\n  }\n  if (borderTop === 0 && borderBottom === 0 && borderLeft === 0 && borderRight === 0) {\n    return;\n  }\n  if (collapseEqualBorders && borderTop === borderBottom && borderTop === borderLeft && borderTop === borderRight) {\n    style.border = `${borderTop}px ${borderStyle} ${borderColor}`;\n    return;\n  }\n  style.borderStyle = props.borderStyle;\n  style.borderColor = props.borderColor;\n  style.borderTopWidth = `${borderTop}px`;\n  style.borderBottomWidth = `${borderBottom}px`;\n  style.borderLeftWidth = `${borderLeft}px`;\n  style.borderRightWidth = `${borderRight}px`;\n}\nfunction Border(props) {\n  const layoutId = props.layoutId ? `${props.layoutId}-border` : void 0;\n  if (!props.borderWidth) {\n    return null;\n  }\n  const style = {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    borderRadius: \"inherit\",\n    pointerEvents: \"none\"\n  };\n  if (props.border) {\n    ;\n    style.border = props.border;\n    return /* @__PURE__ */ React21.createElement(motion.div, { style });\n  }\n  collectBorderStyleForProps(props, style, false);\n  return /* @__PURE__ */ React21.createElement(motion.div, { \"data-frame-border\": true, style, layoutId });\n}\n\n// ../../library/src/utils/environment.ts\nvar import_process = __toESM(require_browser(), 1);\n\n// ../../library/src/utils/safeNavigator.ts\nvar safeNavigator = typeof navigator !== \"undefined\" ? navigator : void 0;\n\n// ../../library/src/utils/environment.ts\nvar isBrowser2 = () => typeof document === \"object\";\nvar isWebKit = () => {\n  var _a;\n  return ((_a = safeNavigator) == null ? void 0 : _a.userAgent.includes(\"AppleWebKit/\")) && !isChrome() && !isEdge();\n};\nvar webkitVersion = () => {\n  let version2 = -1;\n  const regexp = /AppleWebKit\\/([\\d.]+)/;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar safariVersion = () => {\n  let version2 = -1;\n  const regexp = /Version\\/([\\d.]+)/;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar isChrome = () => safeNavigator && /Chrome/.test(safeNavigator.userAgent) && /Google Inc/.test(safeNavigator.vendor) && !isEdge();\nvar isSafari = () => safeNavigator && /Safari/.test(safeNavigator.userAgent) && /Apple Computer/.test(safeNavigator.vendor);\nvar isFirefox = () => safeNavigator && /Firefox\\/\\d+\\.\\d+$/.test(safeNavigator.userAgent);\nvar isFramerX = () => safeNavigator && /FramerX/.test(safeNavigator.userAgent);\nvar isEdge = () => safeNavigator && /Edg\\//.test(safeNavigator.userAgent);\nvar isAndroid = () => safeNavigator && /(android)/i.test(safeNavigator.userAgent);\nvar isIOS = () => safeNavigator && /(iPhone|iPod|iPad)/i.test(safeNavigator.platform);\nvar isMacOS = () => safeNavigator && /Mac/.test(safeNavigator.platform);\nvar isWindows = () => safeNavigator && /Win/.test(safeNavigator.platform);\nvar isTouch = () => safeWindow.ontouchstart === null && safeWindow.ontouchmove === null && safeWindow.ontouchend === null;\nvar isDesktop = () => deviceType() === \"desktop\";\nvar isPhone = () => deviceType() === \"phone\";\nvar isTablet = () => deviceType() === \"tablet\";\nvar isMobile = () => isPhone() || isTablet();\nvar isFileUrl = (url) => url.startsWith(\"file://\");\nvar isDataUrl = (url) => url.startsWith(\"data:\");\nvar isTest = () => import_process.default.env.NODE_ENV === \"test\";\nvar isRelativeUrl = (url) => !/^([a-zA-Z]{1,8}:\\/\\/).*$/.test(url);\nvar isLocalServerUrl = (url) => /[a-zA-Z]{1,8}:\\/\\/127\\.0\\.0\\.1/.test(url) || /[a-zA-Z]{1,8}:\\/\\/localhost/.test(url);\nvar isLocalUrl = (url) => {\n  if (isFileUrl(url))\n    return true;\n  if (isLocalServerUrl(url))\n    return true;\n  return false;\n};\nvar isLocalAssetUrl = (url, baseUrl) => {\n  if (baseUrl === null)\n    baseUrl = safeWindow.location.href;\n  if (isDataUrl(url))\n    return false;\n  if (isLocalUrl(url))\n    return true;\n  if (isRelativeUrl(url) && isLocalUrl(baseUrl))\n    return true;\n  return false;\n};\nvar devicePixelRatio2 = () => safeWindow.devicePixelRatio;\nvar isJP2Supported = function() {\n  if (isFirefox())\n    return false;\n  return isWebKit();\n};\nvar isWebPSupported = () => isChrome();\nvar deviceType = () => {\n  if (safeNavigator && /(tablet)|(iPad)|(Nexus 9)/i.test(safeNavigator.userAgent))\n    return \"tablet\";\n  if (safeNavigator && /(mobi)/i.test(safeNavigator.userAgent))\n    return \"phone\";\n  return \"desktop\";\n};\nvar deviceOS = () => {\n  if (isMacOS())\n    return \"macos\";\n  if (isIOS())\n    return \"ios\";\n  if (isAndroid())\n    return \"android\";\n  if (isWindows())\n    return \"windows\";\n};\nvar deviceFont = (os) => {\n  if (!os) {\n    os = deviceOS();\n  }\n  const fonts = {\n    apple: \"-apple-system, BlinkMacSystemFont, SF Pro Text, SF UI Text, Helvetica Neue\",\n    google: \"Roboto, Helvetica Neue\",\n    microsoft: \"Segoe UI, Helvetica Neue\"\n  };\n  if (os === \"macos\")\n    return fonts.apple;\n  if (os === \"ios\")\n    return fonts.apple;\n  if (os === \"android\")\n    return fonts.google;\n  if (os === \"windows\")\n    return fonts.microsoft;\n  return fonts.apple;\n};\nvar environment = {\n  isWebKit,\n  webkitVersion,\n  isChrome,\n  isSafari,\n  isFirefox,\n  isFramerX,\n  isEdge,\n  isAndroid,\n  isIOS,\n  isMacOS,\n  isWindows,\n  isTouch,\n  isDesktop,\n  isPhone,\n  isTablet,\n  isMobile,\n  isFileUrl,\n  isDataUrl,\n  isRelativeUrl,\n  isLocalServerUrl,\n  isLocalUrl,\n  isLocalAssetUrl,\n  devicePixelRatio: devicePixelRatio2,\n  isJP2Supported,\n  isWebPSupported,\n  deviceType,\n  deviceOS,\n  deviceFont,\n  safariVersion\n};\n\n// ../../library/src/render/utils/layoutHintDataPropsForCenter.ts\nvar isChrome2 = isChrome();\nfunction layoutHintDataPropsForCenter(center) {\n  const props = {};\n  if (!isChrome2 || RenderTarget.current() !== \"CANVAS\" /* canvas */) {\n    return props;\n  }\n  if (center === true || center === \"x\") {\n    props[\"data-framer-layout-hint-center-x\"] = true;\n  }\n  if (center === true || center === \"y\") {\n    props[\"data-framer-layout-hint-center-y\"] = true;\n  }\n  return props;\n}\n\n// ../../library/src/render/utils/nodeIdFromString.ts\nfunction nodeIdFromString(str) {\n  return str.replace(/^id_/, \"\").replace(/\\\\/g, \"\");\n}\n\n// ../../library/src/render/utils/processOverrideForwarding.ts\nimport React22 from \"react\";\nfunction processOverrideForwarding(props, children) {\n  if (!children) {\n    children = props.children;\n    if (!children)\n      return { props, children };\n  }\n  let _forwardedOverrides = props._forwardedOverrides;\n  const extractions = props._overrideForwardingDescription;\n  if (extractions) {\n    _forwardedOverrides = void 0;\n    for (const key7 in extractions) {\n      const propName = extractions[key7];\n      const value = props[propName];\n      if (value !== void 0) {\n        if (!_forwardedOverrides) {\n          _forwardedOverrides = {};\n          props = { ...props };\n        }\n        _forwardedOverrides[key7] = props[propName];\n        delete props[propName];\n      }\n    }\n  }\n  if (!_forwardedOverrides)\n    return { props, children };\n  children = React22.Children.map(children, (child) => {\n    if (!React22.isValidElement(child))\n      return child;\n    return React22.cloneElement(child, { _forwardedOverrides });\n  });\n  return { props, children };\n}\n\n// ../../../node_modules/style-value-types/dist/es/utils.mjs\nvar clamp2 = (min, max) => (v) => Math.max(Math.min(v, max), min);\nvar sanitize = (v) => v % 1 ? Number(v.toFixed(5)) : v;\nvar floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nvar colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nvar singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString4(v) {\n  return typeof v === \"string\";\n}\n\n// ../../../node_modules/style-value-types/dist/es/numbers/index.mjs\nvar number = {\n  test: (v) => typeof v === \"number\",\n  parse: parseFloat,\n  transform: (v) => v\n};\nvar alpha = Object.assign(Object.assign({}, number), { transform: clamp2(0, 1) });\nvar scale = Object.assign(Object.assign({}, number), { default: 1 });\n\n// ../../../node_modules/style-value-types/dist/es/numbers/units.mjs\nvar createUnitType = (unit) => ({\n  test: (v) => isString4(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n  parse: parseFloat,\n  transform: (v) => `${v}${unit}`\n});\nvar degrees = createUnitType(\"deg\");\nvar percent = createUnitType(\"%\");\nvar px = createUnitType(\"px\");\nvar vh = createUnitType(\"vh\");\nvar vw = createUnitType(\"vw\");\nvar progressPercentage = Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });\n\n// ../../../node_modules/style-value-types/dist/es/color/utils.mjs\nvar isColorString = (type, testProp) => (v) => {\n  return Boolean(isString4(v) && singleColorRegex.test(v) && v.startsWith(type) || testProp && Object.prototype.hasOwnProperty.call(v, testProp));\n};\nvar splitColor = (aName, bName, cName) => (v) => {\n  if (!isString4(v))\n    return v;\n  const [a, b, c, alpha2] = v.match(floatRegex);\n  return {\n    [aName]: parseFloat(a),\n    [bName]: parseFloat(b),\n    [cName]: parseFloat(c),\n    alpha: alpha2 !== void 0 ? parseFloat(alpha2) : 1\n  };\n};\n\n// ../../../node_modules/style-value-types/dist/es/color/hsla.mjs\nvar hsla = {\n  test: isColorString(\"hsl\", \"hue\"),\n  parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n  transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n    return \"hsla(\" + Math.round(hue) + \", \" + percent.transform(sanitize(saturation)) + \", \" + percent.transform(sanitize(lightness)) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\";\n  }\n};\n\n// ../../../node_modules/style-value-types/dist/es/color/rgba.mjs\nvar clampRgbUnit = clamp2(0, 255);\nvar rgbUnit = Object.assign(Object.assign({}, number), { transform: (v) => Math.round(clampRgbUnit(v)) });\nvar rgba = {\n  test: isColorString(\"rgb\", \"red\"),\n  parse: splitColor(\"red\", \"green\", \"blue\"),\n  transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" + rgbUnit.transform(red) + \", \" + rgbUnit.transform(green) + \", \" + rgbUnit.transform(blue) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\"\n};\n\n// ../../../node_modules/style-value-types/dist/es/color/hex.mjs\nfunction parseHex(v) {\n  let r = \"\";\n  let g = \"\";\n  let b = \"\";\n  let a = \"\";\n  if (v.length > 5) {\n    r = v.substr(1, 2);\n    g = v.substr(3, 2);\n    b = v.substr(5, 2);\n    a = v.substr(7, 2);\n  } else {\n    r = v.substr(1, 1);\n    g = v.substr(2, 1);\n    b = v.substr(3, 1);\n    a = v.substr(4, 1);\n    r += r;\n    g += g;\n    b += b;\n    a += a;\n  }\n  return {\n    red: parseInt(r, 16),\n    green: parseInt(g, 16),\n    blue: parseInt(b, 16),\n    alpha: a ? parseInt(a, 16) / 255 : 1\n  };\n}\nvar hex = {\n  test: isColorString(\"#\"),\n  parse: parseHex,\n  transform: rgba.transform\n};\n\n// ../../../node_modules/style-value-types/dist/es/color/index.mjs\nvar color = {\n  test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n  parse: (v) => {\n    if (rgba.test(v)) {\n      return rgba.parse(v);\n    } else if (hsla.test(v)) {\n      return hsla.parse(v);\n    } else {\n      return hex.parse(v);\n    }\n  },\n  transform: (v) => {\n    return isString4(v) ? v : v.hasOwnProperty(\"red\") ? rgba.transform(v) : hsla.transform(v);\n  }\n};\n\n// ../../../node_modules/style-value-types/dist/es/complex/index.mjs\nvar colorToken = \"${c}\";\nvar numberToken = \"${n}\";\nfunction test(v) {\n  var _a, _b, _c, _d;\n  return isNaN(v) && isString4(v) && ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0;\n}\nfunction analyse(v) {\n  if (typeof v === \"number\")\n    v = `${v}`;\n  const values = [];\n  let numColors = 0;\n  const colors = v.match(colorRegex);\n  if (colors) {\n    numColors = colors.length;\n    v = v.replace(colorRegex, colorToken);\n    values.push(...colors.map(color.parse));\n  }\n  const numbers = v.match(floatRegex);\n  if (numbers) {\n    v = v.replace(floatRegex, numberToken);\n    values.push(...numbers.map(number.parse));\n  }\n  return { values, numColors, tokenised: v };\n}\nfunction parse(v) {\n  return analyse(v).values;\n}\nfunction createTransformer(v) {\n  const { values, numColors, tokenised } = analyse(v);\n  const numValues = values.length;\n  return (v2) => {\n    let output = tokenised;\n    for (let i = 0; i < numValues; i++) {\n      output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v2[i]) : sanitize(v2[i]));\n    }\n    return output;\n  };\n}\nvar convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n  const parsed = parse(v);\n  const transformer = createTransformer(v);\n  return transformer(parsed.map(convertNumbersToZero));\n}\nvar complex = { test, parse, createTransformer, getAnimatableNone };\n\n// ../../library/src/render/utils/transformCustomValues.ts\nvar isCustomValue = (v) => {\n  return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar isColorProp = (key7) => key7 === \"background\" || key7.endsWith(\"color\") || key7.endsWith(\"Color\");\nvar resolveSingleCustomValue = (key7, v) => {\n  if (v && typeof v === \"object\") {\n    invariant(\n      isCustomValue(v),\n      \"Motion styles must be numbers, strings, or an instance with a `toValue` and `mix` methods.\"\n    );\n    return v.toValue();\n  } else if (isColorProp(key7) && typeof v === \"string\" && Color.isColor(v)) {\n    return Color(v).toValue();\n  }\n  return v;\n};\nvar resolveCustomValues = (key7, v) => {\n  if (Array.isArray(v)) {\n    const numValues = v.length;\n    const resolved = [];\n    for (let i = 0; i < numValues; i++) {\n      resolved.push(resolveSingleCustomValue(key7, v[i]));\n    }\n    return resolved;\n  } else {\n    return resolveSingleCustomValue(key7, v);\n  }\n};\nvar customValueHandlers = {\n  size: {\n    set: (inputValues, outputValues, value) => {\n      if (inputValues.height === void 0) {\n        outputValues.height = value;\n      }\n      if (inputValues.width === void 0) {\n        outputValues.width = value;\n      }\n    },\n    type: px\n  },\n  radius: {\n    set: (inputValues, outputValues, value) => {\n      outputValues.borderRadius = value;\n    },\n    type: px\n  },\n  shadow: {\n    set: (inputValues, outputValues, value) => {\n      outputValues.boxShadow = value;\n    },\n    type: complex\n  }\n};\nvar transformValues = (values) => {\n  const transformedValues = {};\n  for (const key7 in values) {\n    const resolved = resolveCustomValues(key7, values[key7]);\n    const valueHandler = customValueHandlers[key7];\n    if (valueHandler) {\n      const isDefaultType = valueHandler.type && typeof values[key7] === \"number\";\n      const value = isDefaultType ? valueHandler.type.transform(values[key7]) : values[key7];\n      valueHandler.set(values, transformedValues, value);\n    } else {\n      transformedValues[key7] = resolved;\n    }\n  }\n  return transformedValues;\n};\n\n// ../../library/src/render/utils/transformTemplate.ts\nfunction transformTemplate(center) {\n  return (_, generated) => {\n    if (center === true) {\n      return `translate(-50%, -50%) ${generated}`;\n    } else {\n      if (center === \"x\") {\n        return `translateX(-50%) ${generated}`;\n      } else if (center === \"y\") {\n        return `translateY(-50%) ${generated}`;\n      }\n    }\n    return generated || \"none\";\n  };\n}\n\n// ../../library/src/render/utils/useLayoutId.ts\nimport { useContext as useContext3, useMemo as useMemo2 } from \"react\";\nfunction useLayoutId(props, { specificLayoutId, postfix } = {}) {\n  const { name, layoutIdKey, duplicatedFrom, __fromCodeComponentNode = false, drag } = props;\n  const { getLayoutId, enabled } = useContext3(LayoutIdContext);\n  return useMemo2(() => {\n    if (!enabled)\n      return props.layoutId;\n    const existingLayoutId = specificLayoutId || props.layoutId;\n    if (!existingLayoutId) {\n      if (drag || !layoutIdKey || __fromCodeComponentNode)\n        return void 0;\n    }\n    const layoutIdCandidate = existingLayoutId || getLayoutId({ id: layoutIdKey, name, duplicatedFrom });\n    if (!layoutIdCandidate)\n      return void 0;\n    return postfix ? `${layoutIdCandidate}-${postfix}` : layoutIdCandidate;\n  }, [enabled]);\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nimport { useContext as useContext4 } from \"react\";\n\n// ../../library/src/render/presentation/ComponentContainerContext.tsx\nimport React23 from \"react\";\nvar ComponentContainerContext = React23.createContext(false);\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js\nvar resizeObservers = [];\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js\nvar hasActiveObservations = function() {\n  return resizeObservers.some(function(ro) {\n    return ro.activeTargets.length > 0;\n  });\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js\nvar hasSkippedObservations = function() {\n  return resizeObservers.some(function(ro) {\n    return ro.skippedTargets.length > 0;\n  });\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js\nvar msg = \"ResizeObserver loop completed with undelivered notifications.\";\nvar deliverResizeLoopError = function() {\n  var event;\n  if (typeof ErrorEvent === \"function\") {\n    event = new ErrorEvent(\"error\", {\n      message: msg\n    });\n  } else {\n    event = document.createEvent(\"Event\");\n    event.initEvent(\"error\", false, false);\n    event.message = msg;\n  }\n  window.dispatchEvent(event);\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js\nvar ResizeObserverBoxOptions;\n(function(ResizeObserverBoxOptions2) {\n  ResizeObserverBoxOptions2[\"BORDER_BOX\"] = \"border-box\";\n  ResizeObserverBoxOptions2[\"CONTENT_BOX\"] = \"content-box\";\n  ResizeObserverBoxOptions2[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/freeze.js\nvar freeze = function(obj) {\n  return Object.freeze(obj);\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js\nvar ResizeObserverSize = function() {\n  function ResizeObserverSize2(inlineSize, blockSize) {\n    this.inlineSize = inlineSize;\n    this.blockSize = blockSize;\n    freeze(this);\n  }\n  return ResizeObserverSize2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js\nvar DOMRectReadOnly = function() {\n  function DOMRectReadOnly2(x, y, width, height) {\n    this.x = x;\n    this.y = y;\n    this.width = width;\n    this.height = height;\n    this.top = this.y;\n    this.left = this.x;\n    this.bottom = this.top + this.height;\n    this.right = this.left + this.width;\n    return freeze(this);\n  }\n  DOMRectReadOnly2.prototype.toJSON = function() {\n    var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n    return { x, y, top, right, bottom, left, width, height };\n  };\n  DOMRectReadOnly2.fromRect = function(rectangle) {\n    return new DOMRectReadOnly2(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n  };\n  return DOMRectReadOnly2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/element.js\nvar isSVG = function(target) {\n  return target instanceof SVGElement && \"getBBox\" in target;\n};\nvar isHidden = function(target) {\n  if (isSVG(target)) {\n    var _a = target.getBBox(), width = _a.width, height = _a.height;\n    return !width && !height;\n  }\n  var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n  return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function(obj) {\n  var _a, _b;\n  if (obj instanceof Element) {\n    return true;\n  }\n  var scope = (_b = (_a = obj) === null || _a === void 0 ? void 0 : _a.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView;\n  return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function(target) {\n  switch (target.tagName) {\n    case \"INPUT\":\n      if (target.type !== \"image\") {\n        break;\n      }\n    case \"VIDEO\":\n    case \"AUDIO\":\n    case \"EMBED\":\n    case \"OBJECT\":\n    case \"CANVAS\":\n    case \"IFRAME\":\n    case \"IMG\":\n      return true;\n  }\n  return false;\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/global.js\nvar global = typeof window !== \"undefined\" ? window : {};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js\nvar cache2 = /* @__PURE__ */ new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = /msie|trident/i.test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function(pixel) {\n  return parseFloat(pixel || \"0\");\n};\nvar size = function(inlineSize, blockSize, switchSizes) {\n  if (inlineSize === void 0) {\n    inlineSize = 0;\n  }\n  if (blockSize === void 0) {\n    blockSize = 0;\n  }\n  if (switchSizes === void 0) {\n    switchSizes = false;\n  }\n  return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n  devicePixelContentBoxSize: size(),\n  borderBoxSize: size(),\n  contentBoxSize: size(),\n  contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function(target, forceRecalculation) {\n  if (forceRecalculation === void 0) {\n    forceRecalculation = false;\n  }\n  if (cache2.has(target) && !forceRecalculation) {\n    return cache2.get(target);\n  }\n  if (isHidden(target)) {\n    cache2.set(target, zeroBoxes);\n    return zeroBoxes;\n  }\n  var cs = getComputedStyle(target);\n  var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n  var removePadding = !IE && cs.boxSizing === \"border-box\";\n  var switchSizes = verticalRegexp.test(cs.writingMode || \"\");\n  var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || \"\");\n  var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || \"\");\n  var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n  var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n  var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n  var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n  var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n  var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n  var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n  var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n  var horizontalPadding = paddingLeft + paddingRight;\n  var verticalPadding = paddingTop + paddingBottom;\n  var horizontalBorderArea = borderLeft + borderRight;\n  var verticalBorderArea = borderTop + borderBottom;\n  var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n  var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n  var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n  var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n  var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n  var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n  var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n  var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n  var boxes = freeze({\n    devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n    borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n    contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n    contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n  });\n  cache2.set(target, boxes);\n  return boxes;\n};\nvar calculateBoxSize = function(target, observedBox, forceRecalculation) {\n  var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n  switch (observedBox) {\n    case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n      return devicePixelContentBoxSize;\n    case ResizeObserverBoxOptions.BORDER_BOX:\n      return borderBoxSize;\n    default:\n      return contentBoxSize;\n  }\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js\nvar ResizeObserverEntry = function() {\n  function ResizeObserverEntry2(target) {\n    var boxes = calculateBoxSizes(target);\n    this.target = target;\n    this.contentRect = boxes.contentRect;\n    this.borderBoxSize = freeze([boxes.borderBoxSize]);\n    this.contentBoxSize = freeze([boxes.contentBoxSize]);\n    this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n  }\n  return ResizeObserverEntry2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js\nvar calculateDepthForNode = function(node) {\n  if (isHidden(node)) {\n    return Infinity;\n  }\n  var depth = 0;\n  var parent = node.parentNode;\n  while (parent) {\n    depth += 1;\n    parent = parent.parentNode;\n  }\n  return depth;\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js\nvar broadcastActiveObservations = function() {\n  var shallowestDepth = Infinity;\n  var callbacks2 = [];\n  resizeObservers.forEach(function processObserver(ro) {\n    if (ro.activeTargets.length === 0) {\n      return;\n    }\n    var entries = [];\n    ro.activeTargets.forEach(function processTarget(ot) {\n      var entry = new ResizeObserverEntry(ot.target);\n      var targetDepth = calculateDepthForNode(ot.target);\n      entries.push(entry);\n      ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n      if (targetDepth < shallowestDepth) {\n        shallowestDepth = targetDepth;\n      }\n    });\n    callbacks2.push(function resizeObserverCallback() {\n      ro.callback.call(ro.observer, entries, ro.observer);\n    });\n    ro.activeTargets.splice(0, ro.activeTargets.length);\n  });\n  for (var _i = 0, callbacks_1 = callbacks2; _i < callbacks_1.length; _i++) {\n    var callback = callbacks_1[_i];\n    callback();\n  }\n  return shallowestDepth;\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js\nvar gatherActiveObservationsAtDepth = function(depth) {\n  resizeObservers.forEach(function processObserver(ro) {\n    ro.activeTargets.splice(0, ro.activeTargets.length);\n    ro.skippedTargets.splice(0, ro.skippedTargets.length);\n    ro.observationTargets.forEach(function processTarget(ot) {\n      if (ot.isActive()) {\n        if (calculateDepthForNode(ot.target) > depth) {\n          ro.activeTargets.push(ot);\n        } else {\n          ro.skippedTargets.push(ot);\n        }\n      }\n    });\n  });\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/process.js\nvar process3 = function() {\n  var depth = 0;\n  gatherActiveObservationsAtDepth(depth);\n  while (hasActiveObservations()) {\n    depth = broadcastActiveObservations();\n    gatherActiveObservationsAtDepth(depth);\n  }\n  if (hasSkippedObservations()) {\n    deliverResizeLoopError();\n  }\n  return depth > 0;\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js\nvar trigger;\nvar callbacks = [];\nvar notify = function() {\n  return callbacks.splice(0).forEach(function(cb2) {\n    return cb2();\n  });\n};\nvar queueMicroTask = function(callback) {\n  if (!trigger) {\n    var toggle_1 = 0;\n    var el_1 = document.createTextNode(\"\");\n    var config = { characterData: true };\n    new MutationObserver(function() {\n      return notify();\n    }).observe(el_1, config);\n    trigger = function() {\n      el_1.textContent = \"\" + (toggle_1 ? toggle_1-- : toggle_1++);\n    };\n  }\n  callbacks.push(callback);\n  trigger();\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js\nvar queueResizeObserver = function(cb2) {\n  queueMicroTask(function ResizeObserver2() {\n    requestAnimationFrame(cb2);\n  });\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/scheduler.js\nvar watching = 0;\nvar isWatching = function() {\n  return !!watching;\n};\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n  \"resize\",\n  \"load\",\n  \"transitionend\",\n  \"animationend\",\n  \"animationstart\",\n  \"animationiteration\",\n  \"keyup\",\n  \"keydown\",\n  \"mouseup\",\n  \"mousedown\",\n  \"mouseover\",\n  \"mouseout\",\n  \"blur\",\n  \"focus\"\n];\nvar time = function(timeout) {\n  if (timeout === void 0) {\n    timeout = 0;\n  }\n  return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = function() {\n  function Scheduler2() {\n    var _this = this;\n    this.stopped = true;\n    this.listener = function() {\n      return _this.schedule();\n    };\n  }\n  Scheduler2.prototype.run = function(timeout) {\n    var _this = this;\n    if (timeout === void 0) {\n      timeout = CATCH_PERIOD;\n    }\n    if (scheduled) {\n      return;\n    }\n    scheduled = true;\n    var until = time(timeout);\n    queueResizeObserver(function() {\n      var elementsHaveResized = false;\n      try {\n        elementsHaveResized = process3();\n      } finally {\n        scheduled = false;\n        timeout = until - time();\n        if (!isWatching()) {\n          return;\n        }\n        if (elementsHaveResized) {\n          _this.run(1e3);\n        } else if (timeout > 0) {\n          _this.run(timeout);\n        } else {\n          _this.start();\n        }\n      }\n    });\n  };\n  Scheduler2.prototype.schedule = function() {\n    this.stop();\n    this.run();\n  };\n  Scheduler2.prototype.observe = function() {\n    var _this = this;\n    var cb2 = function() {\n      return _this.observer && _this.observer.observe(document.body, observerConfig);\n    };\n    document.body ? cb2() : global.addEventListener(\"DOMContentLoaded\", cb2);\n  };\n  Scheduler2.prototype.start = function() {\n    var _this = this;\n    if (this.stopped) {\n      this.stopped = false;\n      this.observer = new MutationObserver(this.listener);\n      this.observe();\n      events.forEach(function(name) {\n        return global.addEventListener(name, _this.listener, true);\n      });\n    }\n  };\n  Scheduler2.prototype.stop = function() {\n    var _this = this;\n    if (!this.stopped) {\n      this.observer && this.observer.disconnect();\n      events.forEach(function(name) {\n        return global.removeEventListener(name, _this.listener, true);\n      });\n      this.stopped = true;\n    }\n  };\n  return Scheduler2;\n}();\nvar scheduler = new Scheduler();\nvar updateCount = function(n) {\n  !watching && n > 0 && scheduler.start();\n  watching += n;\n  !watching && scheduler.stop();\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObservation.js\nvar skipNotifyOnElement = function(target) {\n  return !isSVG(target) && !isReplacedElement(target) && getComputedStyle(target).display === \"inline\";\n};\nvar ResizeObservation = function() {\n  function ResizeObservation2(target, observedBox) {\n    this.target = target;\n    this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n    this.lastReportedSize = {\n      inlineSize: 0,\n      blockSize: 0\n    };\n  }\n  ResizeObservation2.prototype.isActive = function() {\n    var size2 = calculateBoxSize(this.target, this.observedBox, true);\n    if (skipNotifyOnElement(this.target)) {\n      this.lastReportedSize = size2;\n    }\n    if (this.lastReportedSize.inlineSize !== size2.inlineSize || this.lastReportedSize.blockSize !== size2.blockSize) {\n      return true;\n    }\n    return false;\n  };\n  return ResizeObservation2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js\nvar ResizeObserverDetail = function() {\n  function ResizeObserverDetail2(resizeObserver, callback) {\n    this.activeTargets = [];\n    this.skippedTargets = [];\n    this.observationTargets = [];\n    this.observer = resizeObserver;\n    this.callback = callback;\n  }\n  return ResizeObserverDetail2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js\nvar observerMap = /* @__PURE__ */ new WeakMap();\nvar getObservationIndex = function(observationTargets, target) {\n  for (var i = 0; i < observationTargets.length; i += 1) {\n    if (observationTargets[i].target === target) {\n      return i;\n    }\n  }\n  return -1;\n};\nvar ResizeObserverController = function() {\n  function ResizeObserverController2() {\n  }\n  ResizeObserverController2.connect = function(resizeObserver, callback) {\n    var detail = new ResizeObserverDetail(resizeObserver, callback);\n    observerMap.set(resizeObserver, detail);\n  };\n  ResizeObserverController2.observe = function(resizeObserver, target, options) {\n    var detail = observerMap.get(resizeObserver);\n    var firstObservation = detail.observationTargets.length === 0;\n    if (getObservationIndex(detail.observationTargets, target) < 0) {\n      firstObservation && resizeObservers.push(detail);\n      detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n      updateCount(1);\n      scheduler.schedule();\n    }\n  };\n  ResizeObserverController2.unobserve = function(resizeObserver, target) {\n    var detail = observerMap.get(resizeObserver);\n    var index = getObservationIndex(detail.observationTargets, target);\n    var lastObservation = detail.observationTargets.length === 1;\n    if (index >= 0) {\n      lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n      detail.observationTargets.splice(index, 1);\n      updateCount(-1);\n    }\n  };\n  ResizeObserverController2.disconnect = function(resizeObserver) {\n    var _this = this;\n    var detail = observerMap.get(resizeObserver);\n    detail.observationTargets.slice().forEach(function(ot) {\n      return _this.unobserve(resizeObserver, ot.target);\n    });\n    detail.activeTargets.splice(0, detail.activeTargets.length);\n  };\n  return ResizeObserverController2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserver.js\nvar ResizeObserver = function() {\n  function ResizeObserver2(callback) {\n    if (arguments.length === 0) {\n      throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n    }\n    if (typeof callback !== \"function\") {\n      throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n    }\n    ResizeObserverController.connect(this, callback);\n  }\n  ResizeObserver2.prototype.observe = function(target, options) {\n    if (arguments.length === 0) {\n      throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n    }\n    if (!isElement(target)) {\n      throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n    }\n    ResizeObserverController.observe(this, target, options);\n  };\n  ResizeObserver2.prototype.unobserve = function(target) {\n    if (arguments.length === 0) {\n      throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n    }\n    if (!isElement(target)) {\n      throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n    }\n    ResizeObserverController.unobserve(this, target);\n  };\n  ResizeObserver2.prototype.disconnect = function() {\n    ResizeObserverController.disconnect(this);\n  };\n  ResizeObserver2.toString = function() {\n    return \"function ResizeObserver () { [polyfill code] }\";\n  };\n  return ResizeObserver2;\n}();\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport React25 from \"react\";\n\n// ../../library/src/modules/useForceUpdate.ts\nimport React24 from \"react\";\nfunction useForceUpdate3() {\n  const [_, setForcedRenderCount] = React24.useState(0);\n  return React24.useCallback(() => setForcedRenderCount((v) => v + 1), []);\n}\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nvar DEFAULT_SIZE = 200;\nvar _sharedResizeObserver, _callbacks;\nvar SharedObserver = class {\n  constructor() {\n    __privateAdd(this, _sharedResizeObserver, void 0);\n    __privateAdd(this, _callbacks, /* @__PURE__ */ new WeakMap());\n    var _a;\n    const ResizeObserver2 = (_a = safeWindow.ResizeObserver) != null ? _a : ResizeObserver;\n    __privateSet(this, _sharedResizeObserver, new ResizeObserver2(this.updateResizedElements.bind(this)));\n  }\n  updateResizedElements(entries) {\n    for (const entry of entries) {\n      const callbackForElement = __privateGet(this, _callbacks).get(entry.target);\n      if (callbackForElement)\n        callbackForElement(entry.contentRect);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    __privateGet(this, _sharedResizeObserver).observe(element);\n    __privateGet(this, _callbacks).set(element, callback);\n  }\n  unobserve(element) {\n    __privateGet(this, _sharedResizeObserver).unobserve(element);\n    __privateGet(this, _callbacks).delete(element);\n  }\n};\n_sharedResizeObserver = new WeakMap();\n_callbacks = new WeakMap();\nvar sharedResizeObserver = isBrowser2() ? new SharedObserver() : void 0;\nfunction useMeasuredSize(ref) {\n  const forceUpdate = useForceUpdate3();\n  const size2 = React25.useRef(null);\n  function updateSize(newSize) {\n    if (newSize.width === 0 && newSize.height === 0)\n      return;\n    if (!size2.current || newSize.height !== size2.current.height || newSize.width !== size2.current.width) {\n      size2.current = { width: newSize.width, height: newSize.height };\n      forceUpdate();\n    }\n  }\n  useIsomorphicLayoutEffect2(() => {\n    if (!ref.current)\n      return;\n    const { offsetWidth, offsetHeight } = ref.current;\n    updateSize({\n      width: offsetWidth,\n      height: offsetHeight\n    });\n    sharedResizeObserver.observeElementWithCallback(ref.current, updateSize);\n    return () => {\n      if (!ref.current)\n        return;\n      sharedResizeObserver.unobserve(ref.current);\n    };\n  }, []);\n  return size2.current;\n}\nvar SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE = \"data-framer-size-compatibility-wrapper\";\nvar withMeasuredSize = (Component15) => (props) => {\n  var _a, _b, _c, _d;\n  const ref = React25.useRef(null);\n  const size2 = useMeasuredSize(ref);\n  const dataProps = { [SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE]: true };\n  const shouldRender = Boolean(size2);\n  const fallbackWidth = (_a = props.width) != null ? _a : DEFAULT_SIZE;\n  const fallbackHeight = (_b = props.height) != null ? _b : DEFAULT_SIZE;\n  return /* @__PURE__ */ React25.createElement(\"div\", { style: { width: \"100%\", height: \"100%\", pointerEvents: \"none\" }, ref, ...dataProps }, shouldRender && /* @__PURE__ */ React25.createElement(\n    Component15,\n    {\n      ...props,\n      width: (_c = size2 == null ? void 0 : size2.width) != null ? _c : fallbackWidth,\n      height: (_d = size2 == null ? void 0 : size2.height) != null ? _d : fallbackHeight\n    }\n  ));\n};\n\n// ../../library/src/render/utils/getMeasurableCodeComponentChildren.ts\nfunction getMeasurableCodeComponentChildren(element) {\n  const childrenCollection = element.firstElementChild && element.firstElementChild.hasAttribute(SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE) ? element.firstElementChild.children : element.children;\n  return [...childrenCollection].filter(isMeasurable).map(unwrapInlinedDisplayContents);\n}\nfunction isMeasurable(element) {\n  if (element instanceof HTMLBaseElement || element instanceof HTMLHeadElement || element instanceof HTMLLinkElement || element instanceof HTMLMetaElement || element instanceof HTMLScriptElement || element instanceof HTMLStyleElement || element instanceof HTMLTitleElement) {\n    return false;\n  }\n  return element instanceof HTMLElement || element instanceof SVGElement;\n}\nfunction unwrapInlinedDisplayContents(element) {\n  if (!(element instanceof HTMLElement))\n    return element;\n  if (element.children.length === 0)\n    return element;\n  if (element.style.display !== \"contents\")\n    return element;\n  const firstMeasurableChild = [...element.children].find(isMeasurable);\n  if (firstMeasurableChild) {\n    return unwrapInlinedDisplayContents(firstMeasurableChild);\n  }\n  return element;\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nfunction useMeasureLayout(props, ref, getChildren = () => [], options = {}) {\n  const { id, visible, _needsMeasure } = props;\n  const { skipHook = false } = options;\n  const inCodeComponent = Boolean(useContext4(ComponentContainerContext));\n  const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n  useIsomorphicLayoutEffect2(() => {\n    if (!onCanvas || inCodeComponent || skipHook) {\n      return;\n    }\n    if (!(ref.current && id && visible && _needsMeasure)) {\n      return;\n    }\n    runtime.queueMeasureRequest(nodeIdFromString(id), ref.current, getChildren(ref.current));\n  });\n}\nfunction measureClosestComponentContainer(element) {\n  const container = element.closest(\"[data-framer-component-container]\");\n  if (!container)\n    return;\n  runtime.queueMeasureRequest(\n    nodeIdFromString(container.id),\n    container,\n    getMeasurableCodeComponentChildren(container)\n  );\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nimport { Component as Component3 } from \"react\";\n\n// ../../library/src/render/utils/isEqual.ts\nfunction hasProp(o, prop) {\n  return Object.prototype.hasOwnProperty.call(o, prop);\n}\nfunction withEquals(o) {\n  if (!hasProp(o, \"equals\"))\n    return false;\n  return typeof o.equals === \"function\";\n}\nfunction equal(a, b, deep) {\n  const isArray2 = Array.isArray;\n  const keyList = Object.keys;\n  if (a === b)\n    return true;\n  if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n    const arrA = isArray2(a);\n    const arrB = isArray2(b);\n    let i, length;\n    if (arrA && arrB) {\n      length = a.length;\n      if (length !== b.length)\n        return false;\n      for (i = length; i-- !== 0; ) {\n        if (!deep && a[i] !== b[i])\n          return false;\n        if (deep && !equal(a[i], b[i], true))\n          return false;\n      }\n      return true;\n    }\n    if (arrA !== arrB)\n      return false;\n    const dateA = a instanceof Date;\n    const dateB = b instanceof Date;\n    if (dateA !== dateB)\n      return false;\n    if (dateA && dateB)\n      return a.getTime() === b.getTime();\n    const regexpA = a instanceof RegExp;\n    const regexpB = b instanceof RegExp;\n    if (regexpA !== regexpB)\n      return false;\n    if (regexpA && regexpB)\n      return a.toString() === b.toString();\n    if (a instanceof Set && b instanceof Set) {\n      if (a.size !== b.size)\n        return false;\n      for (const aItem of a)\n        if (!b.has(aItem))\n          return false;\n      return true;\n    }\n    if (withEquals(a) && withEquals(b)) {\n      return a.equals(b);\n    }\n    const keys3 = keyList(a);\n    length = keys3.length;\n    if (length !== keyList(b).length)\n      return false;\n    for (const key7 of keys3) {\n      if (!hasProp(b, key7))\n        return false;\n      if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n        continue;\n      }\n      if (!deep && a[key7] !== b[key7])\n        return false;\n      if (deep && !equal(a[key7], b[key7], true))\n        return false;\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\nfunction isEqual(a, b, deep = true) {\n  try {\n    return equal(a, b, deep);\n  } catch (error) {\n    if (error instanceof Error && error.message.match(/stack|recursion/i)) {\n      console.warn(\"Warning: isEqual does not handle circular references.\", error.name, error.message);\n      return false;\n    }\n    throw error;\n  }\n}\n\n// ../../library/src/render/utils/setLayerBacked.ts\nvar smallValue = \"0.000001px\";\nvar translateZ = ` translateZ(${smallValue})`;\nvar useTranslateZHack = isFramerX() || isSafari() || isTest();\nfunction forceLayerBackingWithMotionStyle(motionStyle) {\n  motionStyle.willChange = \"transform\";\n  const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n  if (useTranslateZHack && onCanvas) {\n    motionStyle.translateZ = smallValue;\n  }\n}\nfunction forceLayerBackingWithCSSProperties(cssProperties) {\n  cssProperties.willChange = \"transform\";\n  setTranslateZHack(cssProperties, true);\n}\nfunction setTranslateZHack(style, enabled) {\n  const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n  if (!useTranslateZHack || !onCanvas) {\n    return;\n  }\n  const transform2 = style.transform || \"\";\n  if (enabled) {\n    const hasTranslateZ = transform2.includes(translateZ);\n    if (!hasTranslateZ) {\n      style.transform = transform2 + translateZ;\n    }\n  } else {\n    style.transform = transform2.replace(translateZ, \"\");\n  }\n}\n\n// ../../library/src/render/utils/useWebkitFixes.ts\nimport { useEffect as useEffect2, useRef as useRef3 } from \"react\";\nfunction resetSetStyle(element, key7, toValue, microtask = true) {\n  if (!element) {\n    return;\n  }\n  const value = toValue ? toValue : element.style[key7];\n  const reset = () => {\n    element.style[key7] = value;\n  };\n  element.style[key7] = null;\n  if (microtask) {\n    void Promise.resolve().then(reset);\n  } else {\n    setTimeout(reset, 0);\n  }\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nvar Layer = class extends Component3 {\n  constructor() {\n    super(...arguments);\n    this.layerElement = null;\n    this.setLayerElement = (element) => {\n      this.layerElement = element;\n    };\n  }\n  static applyWillChange(props, style, usingMotionStyle) {\n    if (props.willChangeTransform) {\n      if (usingMotionStyle) {\n        forceLayerBackingWithMotionStyle(style);\n      } else {\n        forceLayerBackingWithCSSProperties(style);\n      }\n    }\n  }\n  shouldComponentUpdate(nextProps, nextState) {\n    return nextProps._needsMeasure || this.state !== nextState || !isEqual(this.props, nextProps);\n  }\n  componentDidUpdate(prevProps) {\n    if (this.props[\"clip\"] && this.props[\"radius\"] === 0 && prevProps[\"radius\"] !== 0) {\n      resetSetStyle(this.layerElement, \"overflow\", \"hidden\", false);\n    }\n  }\n};\nLayer.defaultProps = {};\n\n// ../../library/src/utils/memoize.ts\nfunction manageCache(cache3, maxEntries) {\n  const size2 = cache3.size;\n  if (size2 < maxEntries)\n    return;\n  let i = Math.round(Math.random());\n  for (const key7 of cache3.keys()) {\n    if ((++i & 1) === 1)\n      continue;\n    cache3.delete(key7);\n  }\n}\nfunction memoize2(maxEntries, cache3, key7, create) {\n  const r = cache3.get(key7);\n  if (r)\n    return r;\n  manageCache(cache3, maxEntries);\n  const g = create(key7);\n  cache3.set(key7, g);\n  return g;\n}\n\n// ../../library/src/utils/string.ts\nvar hash = (value) => {\n  let hasher = 0, i, chr;\n  if (value.length === 0)\n    return hasher;\n  for (i = 0; i < value.length; i++) {\n    chr = value.charCodeAt(i);\n    hasher = (hasher << 5) - hasher + chr;\n    hasher |= 0;\n  }\n  return hasher;\n};\n\n// ../../library/src/render/types/Color/ConvertColor.ts\nvar ConvertColor = {\n  hueRotate: (color2, angle) => {\n    return Color.toHslString(Color.hueRotate(Color(color2), angle));\n  },\n  setAlpha: (color2, alpha2) => {\n    return Color.toRgbString(Color.alpha(Color(color2), alpha2));\n  },\n  getAlpha: (color2) => {\n    const obj = stringToObject(color2);\n    return obj ? obj.a : 1;\n  },\n  multiplyAlpha: (color2, alpha2) => {\n    return Color.toRgbString(Color.multiplyAlpha(Color(color2), alpha2));\n  },\n  toHex: (color2) => {\n    return Color.toHexString(Color(color2)).toUpperCase();\n  },\n  toRgb: (color2) => {\n    return Color.toRgb(Color(color2));\n  },\n  toRgbString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  toHSV: (color2) => {\n    return Color.toHsv(Color(color2));\n  },\n  toHSL: (color2) => {\n    return Color.toHsl(Color(color2));\n  },\n  toHslString: (color2) => {\n    return Color.toHslString(Color(color2));\n  },\n  toHsvString: (color2) => {\n    return Color.toHsvString(Color(color2));\n  },\n  hsvToHSLString: (hsv) => {\n    return Color.toHslString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a)));\n  },\n  hsvToString: (hsv) => {\n    return hsvToStr(hsv.h, hsv.s, hsv.v);\n  },\n  rgbaToString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  hslToString: (hsl) => {\n    return Color.toRgbString(Color(hsl));\n  },\n  toColorPickerSquare: (h) => {\n    return Color.toRgbString(Color({ h, s: 1, l: 0.5, a: 1 }));\n  },\n  isValid: (color2) => {\n    return Color(color2).isValid !== false;\n  },\n  equals: (a, b) => {\n    if (typeof a === \"string\") {\n      a = Color(a);\n    }\n    if (typeof b === \"string\") {\n      b = Color(b);\n    }\n    return Color.equal(a, b);\n  },\n  toHexOrRgbaString: (input) => {\n    const color2 = Color(input);\n    return color2.a !== 1 ? Color.toRgbString(color2) : Color.toHexString(color2);\n  }\n};\n\n// ../../library/src/render/utils/gradientColorStops.ts\nvar CSSVariableRegExp = /var\\(.+\\)/;\nvar colorCache = /* @__PURE__ */ new Map();\nfunction cachedMultiplyAlpha(s, a) {\n  const key7 = [s, a];\n  if (CSSVariableRegExp.test(s)) {\n    return s;\n  }\n  return memoize2(1e3, colorCache, key7, () => ConvertColor.multiplyAlpha(s, a));\n}\nfunction gradientColorStops(gradient, alpha2 = 1) {\n  let stops;\n  if (\"stops\" in gradient) {\n    stops = gradient.stops;\n  } else {\n    stops = [\n      { value: gradient.start, position: 0 },\n      { value: gradient.end, position: 1 }\n    ];\n  }\n  if (alpha2 === 1) {\n    return stops;\n  } else {\n    return stops.map((stop) => ({ ...stop, value: cachedMultiplyAlpha(stop.value, alpha2) }));\n  }\n}\nfunction gradientColorStopsHash(gradient, alpha2) {\n  let result = 0;\n  gradientColorStops(gradient, alpha2).forEach((stop) => {\n    result ^= hash(stop.value) ^ stop.position;\n  });\n  return result;\n}\n\n// ../../library/src/render/types/MultiStopGradient.ts\nvar multiStopGradientKeys = [\"stops\"];\nfunction isMultiStopGradient(value) {\n  return value && multiStopGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/SimpleGradient.ts\nvar simpleGradientKeys = [\"start\", \"end\"];\nfunction isSimpleGradient(value) {\n  return value && simpleGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/LinearGradient.ts\nvar linearGradientKeys = [\"angle\", \"alpha\"];\nvar LinearGradient = {\n  isLinearGradient: (value) => {\n    return value && linearGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  hash: (linearGradient) => {\n    return linearGradient.angle ^ gradientColorStopsHash(linearGradient, linearGradient.alpha);\n  },\n  toCSS: (linearGradient, overrideAngle) => {\n    const stops = gradientColorStops(linearGradient, linearGradient.alpha);\n    const angle = overrideAngle !== void 0 ? overrideAngle : linearGradient.angle;\n    const cssStops = stops.map((stop) => `${stop.value} ${stop.position * 100}%`);\n    return `linear-gradient(${angle}deg, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/types/RadialGradient.ts\nvar radialGradientKeys = [\n  \"widthFactor\",\n  \"heightFactor\",\n  \"centerAnchorX\",\n  \"centerAnchorY\",\n  \"alpha\"\n];\nvar RadialGradient = {\n  isRadialGradient: (value) => {\n    return value && radialGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  hash: (radialGradient) => {\n    return radialGradient.centerAnchorX ^ radialGradient.centerAnchorY ^ radialGradient.widthFactor ^ radialGradient.heightFactor ^ gradientColorStopsHash(radialGradient, radialGradient.alpha);\n  },\n  toCSS: (radialGradient) => {\n    const { alpha: alpha2, widthFactor, heightFactor, centerAnchorX, centerAnchorY } = radialGradient;\n    const stops = gradientColorStops(radialGradient, alpha2);\n    const cssStops = stops.map((stop) => `${stop.value} ${stop.position * 100}%`);\n    return `radial-gradient(${widthFactor * 100}% ${heightFactor * 100}% at ${centerAnchorX * 100}% ${centerAnchorY * 100}%, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/traits/Background.ts\nfunction collectBackgroundFromProps({ background, backgroundColor }, style) {\n  if (backgroundColor) {\n    if (typeof backgroundColor === \"string\" || isMotionValue2(backgroundColor)) {\n      style.backgroundColor = backgroundColor;\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  } else if (background) {\n    background = Animatable.get(background, null);\n    if (typeof background === \"string\" || isMotionValue2(background)) {\n      style.background = background;\n    } else if (LinearGradient.isLinearGradient(background)) {\n      style.background = LinearGradient.toCSS(background);\n    } else if (RadialGradient.isRadialGradient(background)) {\n      style.background = RadialGradient.toCSS(background);\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  }\n}\n\n// ../../library/src/render/utils/extractStyleFromProps.ts\nfunction extractStyleFromProps(props, name, styleRef, into) {\n  if (into === void 0) {\n    into = name;\n  }\n  if (props[name] !== void 0) {\n    styleRef[into] = props[name];\n    return;\n  }\n}\n\n// ../../library/src/render/presentation/Frame/getStyleForFrameProps.ts\nfunction hasLeftAndRight(style) {\n  if (!style)\n    return false;\n  return style.left !== void 0 && style.right !== void 0;\n}\nfunction hasTopAndBottom(style) {\n  if (!style)\n    return false;\n  return style.top !== void 0 && style.bottom !== void 0;\n}\nfunction getStyleForFrameProps(props) {\n  if (!props) {\n    return {};\n  }\n  const style = {};\n  if (props.preserve3d === true) {\n    style.transformStyle = \"preserve-3d\";\n  } else if (props.preserve3d === false) {\n    style.transformStyle = \"flat\";\n  }\n  if (props.backfaceVisible === true) {\n    style.backfaceVisibility = \"visible\";\n  } else if (props.backfaceVisible === false) {\n    style.backfaceVisibility = \"hidden\";\n  }\n  if (style.backfaceVisibility) {\n    style.WebkitBackfaceVisibility = style.backfaceVisibility;\n  }\n  if (props.perspective !== void 0) {\n    style.perspective = style.WebkitPerspective = props.perspective;\n  }\n  if (!props.__fromCanvasComponent) {\n    if (props.center === true) {\n      style.left = \"50%\";\n      style.top = \"50%\";\n    } else {\n      if (props.center === \"x\") {\n        style.left = \"50%\";\n      } else if (props.center === \"y\") {\n        style.top = \"50%\";\n      }\n    }\n  }\n  extractStyleFromProps(props, \"size\", style);\n  extractStyleFromProps(props, \"width\", style);\n  extractStyleFromProps(props, \"height\", style);\n  extractStyleFromProps(props, \"minWidth\", style);\n  extractStyleFromProps(props, \"minHeight\", style);\n  extractStyleFromProps(props, \"top\", style);\n  extractStyleFromProps(props, \"right\", style);\n  extractStyleFromProps(props, \"bottom\", style);\n  extractStyleFromProps(props, \"left\", style);\n  extractStyleFromProps(props, \"position\", style);\n  extractStyleFromProps(props, \"overflow\", style);\n  extractStyleFromProps(props, \"opacity\", style);\n  if (!props._border || !props._border.borderWidth)\n    extractStyleFromProps(props, \"border\", style);\n  extractStyleFromProps(props, \"borderRadius\", style);\n  extractStyleFromProps(props, \"radius\", style, \"borderRadius\");\n  extractStyleFromProps(props, \"color\", style);\n  extractStyleFromProps(props, \"shadow\", style, \"boxShadow\");\n  extractStyleFromProps(props, \"x\", style);\n  extractStyleFromProps(props, \"y\", style);\n  extractStyleFromProps(props, \"z\", style);\n  extractStyleFromProps(props, \"rotate\", style);\n  extractStyleFromProps(props, \"rotateX\", style);\n  extractStyleFromProps(props, \"rotateY\", style);\n  extractStyleFromProps(props, \"rotateZ\", style);\n  extractStyleFromProps(props, \"scale\", style);\n  extractStyleFromProps(props, \"scaleX\", style);\n  extractStyleFromProps(props, \"scaleY\", style);\n  extractStyleFromProps(props, \"skew\", style);\n  extractStyleFromProps(props, \"skewX\", style);\n  extractStyleFromProps(props, \"skewY\", style);\n  extractStyleFromProps(props, \"originX\", style);\n  extractStyleFromProps(props, \"originY\", style);\n  extractStyleFromProps(props, \"originZ\", style);\n  collectBackgroundFromProps(props, style);\n  return style;\n}\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nfunction hasEvents(props) {\n  for (const key7 in props) {\n    if (key7 === \"drag\" || key7.startsWith(\"while\") || typeof props[key7] === \"function\" && key7.startsWith(\"on\") && !key7.includes(\"Animation\")) {\n      return true;\n    }\n  }\n  return false;\n}\nvar pointerEvents = [\n  \"onClick\",\n  \"onDoubleClick\",\n  \"onMouse\",\n  \"onMouseDown\",\n  \"onMouseUp\",\n  \"onTapDown\",\n  \"onTap\",\n  \"onTapUp\",\n  \"onPointer\",\n  \"onPointerDown\",\n  \"onPointerUp\",\n  \"onTouch\",\n  \"onTouchDown\",\n  \"onTouchUp\"\n];\nvar pointerEventsSet = /* @__PURE__ */ new Set([\n  ...pointerEvents,\n  ...pointerEvents.map((event) => `${event}Capture`)\n]);\nfunction getCursorFromEvents(props) {\n  if (props.drag) {\n    return \"grab\";\n  }\n  for (const key7 in props) {\n    if (pointerEventsSet.has(key7)) {\n      return \"pointer\";\n    }\n  }\n  return void 0;\n}\nvar overflowKey = \"overflow\";\nfunction hasScrollableContent(props) {\n  if (hasScrollingOverflow(props))\n    return true;\n  if (!props.style)\n    return false;\n  if (hasScrollingOverflow(props.style))\n    return true;\n  return false;\n}\nfunction hasScrollingOverflow(props) {\n  if (overflowKey in props && (props[overflowKey] === \"scroll\" || props[overflowKey] === \"auto\"))\n    return true;\n  return false;\n}\nfunction unwrapFrameProps(frameProps) {\n  const {\n    left,\n    top,\n    bottom,\n    right,\n    width,\n    height,\n    center,\n    _constraints,\n    size: size2,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute\n  } = frameProps;\n  const minWidth = resolveMotionValue(frameProps.minWidth);\n  const minHeight = resolveMotionValue(frameProps.minHeight);\n  const maxWidth = resolveMotionValue(frameProps.maxWidth);\n  const maxHeight = resolveMotionValue(frameProps.maxHeight);\n  const constraintProps = {\n    top: resolveMotionValue(top),\n    left: resolveMotionValue(left),\n    bottom: resolveMotionValue(bottom),\n    right: resolveMotionValue(right),\n    width: resolveMotionValue(width),\n    height: resolveMotionValue(height),\n    size: resolveMotionValue(size2),\n    center,\n    _constraints,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute,\n    minWidth,\n    minHeight,\n    maxWidth,\n    maxHeight\n  };\n  return constraintProps;\n}\nvar defaultFrameRect = { x: 0, y: 0, width: 200, height: 200 };\nfunction useStyleAndRect(props) {\n  var _a;\n  injectComponentCSSRules();\n  const inCodeComponent = Boolean(useContext5(ComponentContainerContext));\n  const { style, _initialStyle, __fromCanvasComponent, size: size2 } = props;\n  const unwrappedProps = unwrapFrameProps(props);\n  const constraintsRect = useConstraints(unwrappedProps);\n  const defaultStyle = {\n    display: \"block\",\n    flexShrink: 0,\n    userSelect: RenderTarget.current() !== \"PREVIEW\" /* preview */ ? \"none\" : void 0\n  };\n  if (!props.__fromCanvasComponent) {\n    defaultStyle.backgroundColor = props.background === void 0 ? \"rgba(0, 170, 255, 0.3)\" : void 0;\n  }\n  const shouldDisablePointerEvents = !hasEvents(props) && !props.__fromCanvasComponent && !hasScrollableContent(props) && !((_a = props.style) == null ? void 0 : _a.pointerEvents);\n  if (shouldDisablePointerEvents) {\n    defaultStyle.pointerEvents = \"none\";\n  }\n  const addTextCentering = React27.Children.count(props.children) > 0 && React27.Children.toArray(props.children).every((child) => {\n    return typeof child === \"string\" || typeof child === \"number\";\n  });\n  const centerTextStyle = addTextCentering && {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    textAlign: \"center\"\n  };\n  const propsStyle = getStyleForFrameProps(props);\n  if (size2 === void 0 && !__fromCanvasComponent) {\n    if (!hasLeftAndRight(propsStyle)) {\n      defaultStyle.width = defaultFrameRect.width;\n    }\n    if (!hasTopAndBottom(propsStyle)) {\n      defaultStyle.height = defaultFrameRect.height;\n    }\n  }\n  if (unwrappedProps.minWidth !== void 0) {\n    defaultStyle.minWidth = unwrappedProps.minWidth;\n  }\n  if (unwrappedProps.minHeight !== void 0) {\n    defaultStyle.minHeight = unwrappedProps.minHeight;\n  }\n  let constraintsStyle = {};\n  if (constraintsEnabled(unwrappedProps)) {\n    if (constraintsRect && !isAutoSized(props)) {\n      constraintsStyle = {\n        left: constraintsRect.x,\n        top: constraintsRect.y,\n        width: constraintsRect.width,\n        height: constraintsRect.height,\n        right: void 0,\n        bottom: void 0\n      };\n    }\n  }\n  Object.assign(defaultStyle, centerTextStyle, _initialStyle, propsStyle, constraintsStyle, style);\n  Layer.applyWillChange(props, defaultStyle, true);\n  let resultStyle = defaultStyle;\n  if (!defaultStyle.transform) {\n    resultStyle = { x: 0, y: 0, ...defaultStyle };\n  }\n  const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n  if (props.positionSticky) {\n    if (!onCanvas || inCodeComponent) {\n      resultStyle.position = \"sticky\";\n      resultStyle.willChange = \"transform\";\n      resultStyle.zIndex = 1;\n      resultStyle.top = props.positionStickyTop;\n      resultStyle.right = props.positionStickyRight;\n      resultStyle.bottom = props.positionStickyBottom;\n      resultStyle.left = props.positionStickyLeft;\n    }\n  } else if (onCanvas && (props.positionFixed || props.positionAbsolute)) {\n    resultStyle.position = \"absolute\";\n  }\n  if (\"rotate\" in resultStyle && resultStyle.rotate === void 0) {\n    delete resultStyle.rotate;\n  }\n  return [resultStyle, constraintsRect];\n}\nvar filteredProps = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"opacity\",\n  \"overflow\",\n  \"radius\",\n  \"background\",\n  \"color\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\",\n  \"originX\",\n  \"originY\",\n  \"originZ\"\n]);\nfunction getMotionProps(props) {\n  const motionProps = {};\n  for (const key7 in props) {\n    const isValid = isValidMotionProp(key7) || isPropValid(key7);\n    if (isValid && !filteredProps.has(key7)) {\n      motionProps[key7] = props[key7];\n    } else if (key7 === \"positionTransition\" || key7 === \"layoutTransition\") {\n      motionProps[\"layout\"] = true;\n      if (typeof props[key7] !== \"boolean\" && !props.transition) {\n        motionProps[\"transition\"] = props[key7];\n      }\n    }\n  }\n  return motionProps;\n}\nfunction hasDataFramerName(props) {\n  return \"data-framer-name\" in props;\n}\nvar VisibleFrame = /* @__PURE__ */ forwardRef(function VisibleFrame2(props, forwardedRef) {\n  var _a, _b;\n  const { name, center, border, _border, __portal } = props;\n  const { props: propsWithOverrides, children } = processOverrideForwarding(props);\n  const motionProps = getMotionProps(propsWithOverrides);\n  const layoutId = useLayoutId(props);\n  const cursor = getCursorFromEvents(props);\n  const fallbackRef = useRef4(null);\n  const ref = forwardedRef != null ? forwardedRef : fallbackRef;\n  const dataProps = {\n    \"data-framer-component-type\": \"Frame\",\n    \"data-framer-cursor\": cursor,\n    \"data-framer-highlight\": cursor === \"pointer\" ? true : void 0,\n    \"data-layoutid\": layoutId\n  };\n  if (!hasDataFramerName(props) && name) {\n    dataProps[\"data-framer-name\"] = name;\n  }\n  const [currentStyle, rect] = useStyleAndRect(propsWithOverrides);\n  const unwrappedProps = unwrapFrameProps(propsWithOverrides);\n  const autoSized = isAutoSized(unwrappedProps);\n  if (center && !(rect && !autoSized && constraintsEnabled(unwrappedProps))) {\n    if (!motionProps.transformTemplate)\n      motionProps.transformTemplate = transformTemplate(center);\n    Object.assign(dataProps, layoutHintDataPropsForCenter(center));\n  } else if (!motionProps.transformTemplate) {\n    motionProps.transformTemplate = void 0;\n  }\n  useMeasureLayout(props, ref);\n  const backgroundImage = backgroundImageFromProps(props);\n  const inCodeComponent = Boolean(useContext5(ComponentContainerContext));\n  const parentSize = resolveParentSize(propsWithOverrides, unwrappedProps, rect, inCodeComponent);\n  const wrappedContent = useProvideParentSize(\n    /* @__PURE__ */ React27.createElement(React27.Fragment, null, backgroundImage ? /* @__PURE__ */ React27.createElement(\n      BackgroundImageComponent,\n      {\n        alt: (_a = props.alt) != null ? _a : \"\",\n        image: backgroundImage,\n        containerSize: rect != null ? rect : void 0,\n        nodeId: props.id && nodeIdFromString(props.id),\n        layoutId\n      }\n    ) : null, children, /* @__PURE__ */ React27.createElement(Border, { ..._border, border, layoutId })),\n    parentSize\n  );\n  const MotionComponent = motion[(_b = props.as) != null ? _b : \"div\"];\n  return /* @__PURE__ */ React27.createElement(\n    MotionComponent,\n    {\n      ...dataProps,\n      ...motionProps,\n      layoutId,\n      style: currentStyle,\n      ref,\n      transformValues\n    },\n    wrappedContent,\n    __portal\n  );\n});\nvar FrameWithMotion = /* @__PURE__ */ forwardRef(function FrameWithMotion2(props, ref) {\n  if (import_process3.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n    safeWindow[\"perf\"].nodeRender();\n  const { visible = true } = props;\n  if (!visible)\n    return null;\n  return /* @__PURE__ */ React27.createElement(VisibleFrame, { ...props, ref });\n});\nfunction resolveParentSize(props, unwrappedProps, rect, inCodeComponent) {\n  if (inCodeComponent) {\n    const parentSize = rect ? { width: rect.width, height: rect.height } : 1 /* Disabled */;\n    return parentSize;\n  }\n  const { _usesDOMRect } = props;\n  const {\n    widthType = 0 /* FixedNumber */,\n    heightType = 0 /* FixedNumber */,\n    width,\n    height\n  } = unwrappedProps;\n  if (rect && !_usesDOMRect) {\n    return rect;\n  }\n  if (widthType === 0 /* FixedNumber */ && heightType === 0 /* FixedNumber */ && typeof width === \"number\" && typeof height === \"number\") {\n    return { width, height };\n  }\n  if (_usesDOMRect || props.positionFixed || props.positionAbsolute) {\n    return 2 /* DisabledForCurrentLevel */;\n  }\n  return 0 /* Unknown */;\n}\nfunction isAutoSized({\n  width,\n  height\n}) {\n  return width === \"auto\" || width === \"min-content\" || height === \"auto\" || height === \"min-content\";\n}\n\n// ../../library/src/components/EmptyState.tsx\nfunction EmptyState({\n  title = \"\",\n  description = \"Click and drag the connector to any frame on the canvas \\u2192\",\n  children,\n  size: size2,\n  hide,\n  insideUserCodeComponent = false\n}) {\n  const { target } = RenderEnvironment;\n  const childCount = React28.Children.count(children);\n  if (insideUserCodeComponent && childCount === 0) {\n    return /* @__PURE__ */ React28.createElement(FrameWithMotion, { ...size2, \"data-name\": \"placeholder\" });\n  }\n  if (target !== \"CANVAS\" /* canvas */)\n    return null;\n  if (hide)\n    return null;\n  if (childCount !== 0)\n    return null;\n  return /* @__PURE__ */ React28.createElement(\n    FrameWithMotion,\n    {\n      key: \"empty-state\",\n      className: \"framerInternalUI-canvasPlaceholder\",\n      top: 0,\n      left: 0,\n      bottom: 0,\n      right: 0,\n      style: { position: \"absolute\" }\n    },\n    /* @__PURE__ */ React28.createElement(\n      \"div\",\n      {\n        style: {\n          display: \"flex\",\n          alignItems: \"center\",\n          lineHeight: \"1.4\",\n          height: \"100%\",\n          width: \"100%\"\n        }\n      },\n      /* @__PURE__ */ React28.createElement(\n        \"div\",\n        {\n          style: {\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            flexDirection: \"column\",\n            width: \"100%\",\n            WebkitMaskImage: `linear-gradient(90deg, black, black calc(100% - 12px * ${scaleFactor}), transparent)`\n          }\n        },\n        /* @__PURE__ */ React28.createElement(Title, null, title),\n        /* @__PURE__ */ React28.createElement(Description, null, description)\n      )\n    )\n  );\n}\nvar scaleFactor = \"var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)\";\nfunction Title({ children }) {\n  return /* @__PURE__ */ React28.createElement(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 600,\n        marginBottom: \"5px\"\n      }\n    },\n    children\n  );\n}\nfunction Description({ children }) {\n  return /* @__PURE__ */ React28.createElement(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 400,\n        maxWidth: \"200px\"\n      }\n    },\n    children\n  );\n}\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nvar import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React29 from \"react\";\n\n// ../../library/src/render/types/NavigationLink.ts\nvar NavigateTo = /* @__PURE__ */ ((NavigateTo2) => {\n  NavigateTo2[\"Previous\"] = \"@Previous\";\n  return NavigateTo2;\n})(NavigateTo || {});\nvar NavigationTransitionType = /* @__PURE__ */ ((NavigationTransitionType2) => {\n  NavigationTransitionType2[\"push\"] = \"push\";\n  NavigationTransitionType2[\"instant\"] = \"instant\";\n  NavigationTransitionType2[\"fade\"] = \"fade\";\n  NavigationTransitionType2[\"modal\"] = \"modal\";\n  NavigationTransitionType2[\"overlay\"] = \"overlay\";\n  NavigationTransitionType2[\"flip\"] = \"flip\";\n  NavigationTransitionType2[\"magicMotion\"] = \"magicMotion\";\n  return NavigationTransitionType2;\n})(NavigationTransitionType || {});\n\n// ../../library/src/components/NavigationContext.ts\nimport { createContext } from \"react\";\n\n// ../../library/src/components/NavigatorMock.tsx\nvar NavigatorMock = class {\n  constructor() {\n    this.warning = () => {\n      warnOnce(\"The Navigator API is only available inside of Framer: https://www.framer.com/\");\n    };\n    this.goBack = () => this.warning();\n    this.instant = () => this.warning();\n    this.fade = () => this.warning();\n    this.push = () => this.warning();\n    this.modal = () => this.warning();\n    this.overlay = () => this.warning();\n    this.flip = () => this.warning();\n    this.customTransition = () => this.warning();\n    this.magicMotion = () => this.warning();\n  }\n};\nvar navigatorMock = new NavigatorMock();\n\n// ../../library/src/components/NavigationContext.ts\nvar NavigationContext = createContext(navigatorMock);\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nfunction WithNavigator(BaseComponent, navigationTransition, navigationTransitionDirection, NavigationTarget2, navigationTransitionOptions) {\n  const InternalWithNavigator = class extends React29.Component {\n    render() {\n      return /* @__PURE__ */ React29.createElement(NavigationContext.Consumer, null, (navigation) => {\n        const navigate = () => {\n          if (navigationTransition === \"goBack\") {\n            navigation.goBack();\n            return;\n          }\n          if (!NavigationTarget2)\n            return;\n          const component = NavigationTarget2();\n          const appearsFrom = transitionDirectionToSide(navigationTransitionDirection);\n          switch (navigationTransition) {\n            case \"instant\" /* instant */:\n              navigation.instant(component);\n              break;\n            case \"fade\" /* fade */:\n              navigation.fade(component);\n              break;\n            case \"modal\" /* modal */:\n              navigation.modal(component, navigationTransitionOptions);\n              break;\n            case \"push\" /* push */:\n              navigation.push(component, { appearsFrom });\n              break;\n            case \"overlay\" /* overlay */:\n              navigation.overlay(component, {\n                ...navigationTransitionOptions,\n                appearsFrom\n              });\n              break;\n            case \"flip\" /* flip */:\n              navigation.flip(component, { appearsFrom });\n              break;\n            case \"magicMotion\" /* magicMotion */:\n              navigation.magicMotion(component, {});\n              break;\n          }\n        };\n        const { onTap, ...props } = this.props;\n        if (onTap) {\n          props.onTap = (...args) => {\n            onTap.apply(this, args);\n            navigate.apply(this, args);\n          };\n        } else {\n          props.onTap = navigate;\n        }\n        return /* @__PURE__ */ React29.createElement(BaseComponent, { ...props });\n      });\n    }\n  };\n  (0, import_hoist_non_react_statics.default)(InternalWithNavigator, BaseComponent);\n  return InternalWithNavigator;\n}\nfunction transitionDirectionToSide(direction) {\n  switch (direction) {\n    case \"left\":\n      return \"right\";\n    case \"right\":\n      return \"left\";\n    case \"up\":\n      return \"bottom\";\n    case \"down\":\n      return \"top\";\n  }\n}\n\n// ../../library/src/components/AnimateLayout/AnimateSharedLayout.tsx\nvar AnimateSharedLayout = (props) => props.children;\n\n// ../../library/src/render/presentation/Frame/index.tsx\nimport React35, { forwardRef as forwardRef2 } from \"react\";\n\n// ../../library/src/components/hoc/WithEvents.tsx\nvar import_hoist_non_react_statics3 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React31 from \"react\";\n\n// ../../library/src/utils/events.ts\nfunction pointForEvent(event, customTarget = null) {\n  let target;\n  if (customTarget instanceof HTMLElement) {\n    target = customTarget;\n  }\n  if (!target && event.target instanceof HTMLElement) {\n    target = event.target;\n  }\n  if (!target) {\n    return { x: event.pageX, y: event.pageY };\n  }\n  if (\"webkitConvertPointFromPageToNode\" in safeWindow) {\n    let webkitPoint = new safeWindow.WebKitPoint(event.pageX, event.pageY);\n    webkitPoint = safeWindow.webkitConvertPointFromPageToNode(target, webkitPoint);\n    return { x: webkitPoint.x, y: webkitPoint.y };\n  }\n  const rect = target.getBoundingClientRect();\n  const width = parseFloat(target.style.width);\n  const height = parseFloat(target.style.height);\n  const scale2 = {\n    x: width ? width / rect.width : 1,\n    y: height ? height / rect.height : 1\n  };\n  const point = {\n    x: scale2.x * (event.pageX - rect.left - target.clientLeft + target.scrollLeft),\n    y: scale2.y * (event.pageY - rect.top - target.clientTop + target.scrollTop)\n  };\n  return point;\n}\n\n// ../../library/src/events/FramerEvent.ts\nvar FramerEvent = class {\n  constructor(originalEvent, session) {\n    this.originalEvent = originalEvent;\n    this.session = session;\n    this.time = Date.now();\n    this.loopTime = MainLoop.time;\n    const customTarget = session && session.startEvent && session.startEvent.target || originalEvent.target;\n    const eventLike = FramerEvent.eventLikeFromOriginalEvent(originalEvent);\n    this.point = pointForEvent(eventLike, customTarget);\n    const deviceTarget = session && session.originElement ? session.originElement : document.body;\n    this.devicePoint = pointForEvent(eventLike, deviceTarget);\n    this.target = originalEvent.target || null;\n    const lastEvent = session && session.lastEvent;\n    if (originalEvent instanceof WheelEvent) {\n      this.delta = { x: originalEvent.deltaX, y: originalEvent.deltaY };\n    } else if (lastEvent && this.devicePoint && lastEvent.devicePoint) {\n      this.delta = Point.subtract(this.devicePoint, lastEvent.devicePoint);\n    } else {\n      this.delta = { x: 0, y: 0 };\n    }\n  }\n  static eventLikeFromOriginalEvent(originalEvent) {\n    if (\"touches\" in originalEvent) {\n      let touches = originalEvent.touches;\n      if (!touches || !touches.length) {\n        if (originalEvent.changedTouches && originalEvent.changedTouches.length) {\n          touches = originalEvent.changedTouches;\n        }\n      }\n      const firstTouch = touches[0];\n      if (!touches || !firstTouch) {\n        return { pageX: 0, pageY: 0, target: null };\n      }\n      const pageX = firstTouch.clientX || firstTouch.screenX || firstTouch.pageX;\n      const pageY = firstTouch.clientY || firstTouch.screenY || firstTouch.pageY;\n      return {\n        pageX,\n        pageY,\n        target: originalEvent.target\n      };\n    }\n    return originalEvent;\n  }\n  velocity(t) {\n    return this.session ? this.session.velocity(t) : { x: 0, y: 0 };\n  }\n  get offset() {\n    return this.session ? this.session.offset(this) : { x: 0, y: 0 };\n  }\n  get isLeftMouseClick() {\n    if (environment.isTouch()) {\n      return void 0;\n    }\n    if (\"button\" in this.originalEvent && \"buttons\" in this.originalEvent && \"ctrlKey\" in this.originalEvent) {\n      return (this.originalEvent.button === 0 || this.originalEvent.buttons === 1) && !this.originalEvent.ctrlKey;\n    }\n    return false;\n  }\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nvar import_hoist_non_react_statics2 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React30 from \"react\";\n\n// ../../library/src/utils/math.ts\nvar clamp3 = (value, a, b) => {\n  const min = Math.min(a, b);\n  const max = Math.max(a, b);\n  if (value < min) {\n    value = min;\n  }\n  if (value > max) {\n    value = max;\n  }\n  return value;\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nvar DraggingContext = React30.createContext({ dragging: false });\nfunction WithDragging(Component15) {\n  const _WithDraggingHOC = class extends React30.Component {\n    constructor(props, defaultProps) {\n      super(props, defaultProps);\n      this.state = {\n        isDragging: false\n      };\n      this.x = Animatable(0);\n      this.y = Animatable(0);\n      this.onChangePosition = (change, transaction) => {\n        if (change.value === change.oldValue) {\n          return;\n        }\n        if (this.props.onMove) {\n          this.props.onMove(this.point, this);\n        }\n      };\n      this.isMoving = false;\n      this.isAnimating = false;\n      this.directionLockAxis = null;\n      this._constraints = null;\n      this.panStart = (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.isMoving = this.isAnimating;\n        this.stopAnimation();\n        this.resetdirectionLock();\n        this.layerStartPoint = this.point;\n        this.correctedLayerStartPoint = this.point;\n        if (this._constraints && this.props.bounce) {\n          this.correctedLayerStartPoint = this.constrainPosition(\n            this.correctedLayerStartPoint,\n            this._constraints,\n            1 / this.props.overdragScale\n          );\n        }\n        this.previousPoint = this.correctedLayerStartPoint;\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n        }\n        if (this.props.onDragSessionStart) {\n          this.props.onDragSessionStart(event, this);\n        }\n      };\n      this.pan = (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          directionLock,\n          overdragScale,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragStart,\n          onDragWillMove,\n          onDragDidMove,\n          onDragSessionMove\n        } = this.props;\n        if (!enabled) {\n          return;\n        }\n        let point = { ...this.previousPoint };\n        point.x += event.delta.x * speedX;\n        point.y += event.delta.y * speedY;\n        this.previousPoint = { ...point };\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, overdragScale);\n        }\n        if (directionLock) {\n          if (this.directionLockAxis === null) {\n            const offset = event.offset;\n            offset.x = offset.x * speedX;\n            offset.y = offset.y * speedY;\n            this.updatedirectionLock(offset);\n            return;\n          } else {\n            if (this.directionLockAxis === \"y\") {\n              point.x = this.layerStartPoint.x;\n            }\n            if (this.directionLockAxis === \"x\") {\n              point.y = this.layerStartPoint.y;\n            }\n          }\n        }\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n          this.isMoving = true;\n          if (onDragStart) {\n            onDragStart(event, this);\n          }\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n        if (onDragSessionMove) {\n          onDragSessionMove(event, this);\n        }\n      };\n      this.panEnd = (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.startAnimation(event);\n        const { onDragSessionEnd, onDragEnd } = this.props;\n        if (this.state.isDragging) {\n          if (onDragEnd) {\n            onDragEnd(event, this);\n          }\n        }\n        if (onDragSessionEnd) {\n          onDragSessionEnd(event, this);\n        }\n        if (this.state.isDragging) {\n          this.setState({ isDragging: false });\n        }\n        this.isMoving = this.isAnimating;\n      };\n      this.mouseWheelStart = (event) => {\n        this.correctedLayerStartPoint = this.point;\n        this.previousPoint = this.correctedLayerStartPoint;\n        this.stopAnimation();\n      };\n      this.mouseWheel = (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragWillMove,\n          onDragDidMove,\n          mouseWheel\n        } = this.props;\n        if (!mouseWheel || !enabled) {\n          return;\n        }\n        let point = { ...this.point };\n        point.x -= event.delta.x * speedX;\n        point.y -= event.delta.y * speedY;\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, 0, false);\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n      };\n      this.mouseWheelEnd = (event) => {\n      };\n      this.onAnimationStep = (axis, value) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        let delta = 0;\n        if (this.constraints) {\n          if (this.props.bounce) {\n            delta = value - this.getValue(axis);\n          } else {\n            const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n            if (axis === \"x\") {\n              delta = clamp3(value, minX, maxX) - this.getValue(axis);\n            }\n            if (axis === \"y\") {\n              delta = clamp3(value, minY, maxY) - this.getValue(axis);\n            }\n          }\n        } else {\n          delta = value - this.getValue(axis);\n        }\n        const updatePoint = this.point;\n        if (axis === \"x\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        if (axis === \"y\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        this.setPoint(updatePoint, axis);\n      };\n      this.onAnimationStop = (axis) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        if (!this.animation) {\n          return;\n        }\n        if (this.props.pixelAlign) {\n          const point = this.point;\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n          this.setPoint(point, axis);\n        }\n        if (this.animation.x.isFinished() && this.animation.y.isFinished()) {\n          return this.stopAnimation();\n        }\n      };\n      this.stopAnimation = () => {\n        this.isAnimating = false;\n        this.isMoving = false;\n        if (!this.animation) {\n          return;\n        }\n        this.animation.x.cancel();\n        this.animation.y.cancel();\n        if (this.props.onDragAnimationEnd) {\n          this.props.onDragAnimationEnd(this.animation, this);\n        }\n        this.animation = null;\n      };\n      const x = this.props.left;\n      const y = this.props.top;\n      if (!x) {\n        this.x = Animatable(0);\n      } else if (isAnimatable(x)) {\n        this.x = x;\n      } else {\n        this.x = Animatable(x);\n      }\n      if (!y) {\n        this.y = Animatable(0);\n      } else if (isAnimatable(y)) {\n        this.y = y;\n      } else {\n        this.y = Animatable(y);\n      }\n      this.x.onUpdate(this.onChangePosition);\n      this.y.onUpdate(this.onChangePosition);\n      const constraints = this.props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    UNSAFE_componentWillReceiveProps(props) {\n      if (this.props.left !== props.left && isFiniteNumber(props.left)) {\n        this.x.set(props.left);\n      }\n      if (this.props.top !== props.top && isFiniteNumber(props.top)) {\n        this.y.set(props.top);\n      }\n      const constraints = props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    get point() {\n      return { x: this.x.get(), y: this.y.get() };\n    }\n    setPoint(point, axis = null) {\n      switch (axis) {\n        case \"x\":\n          this.x.set(point.x);\n          break;\n        case \"y\":\n          this.y.set(point.y);\n          break;\n        case null:\n          this.x.set(point.x);\n          this.y.set(point.y);\n          break;\n      }\n    }\n    getValue(axis) {\n      switch (axis) {\n        case \"x\":\n          return this.x.get();\n        case \"y\":\n          return this.y.get();\n      }\n    }\n    get width() {\n      const width = this.props.width;\n      if (!width) {\n        return 100;\n      }\n      if (isAnimatable(width)) {\n        return width.get();\n      }\n      if (typeof width === \"string\") {\n        return parseFloat(width);\n      }\n      return width;\n    }\n    get height() {\n      const height = this.props.height;\n      if (!height) {\n        return 100;\n      }\n      if (isAnimatable(height)) {\n        return height.get();\n      }\n      if (typeof height === \"string\") {\n        return parseFloat(height);\n      }\n      return height;\n    }\n    get constraints() {\n      return this._constraints;\n    }\n    set constraints(value) {\n      if (value !== null && typeof value === \"object\") {\n        this._constraints = {\n          x: value.x || 0,\n          y: value.y || 0,\n          width: value.width || 0,\n          height: value.height || 0\n        };\n      } else {\n        this._constraints = null;\n      }\n      if (this._constraints) {\n        this.updateAnimationConstraints(this._constraints);\n      }\n    }\n    get constraintsOffset() {\n      if (!this.constraints) {\n        return { x: 0, y: 0 };\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const point = this.point;\n      const constrainedPoint = { x: clamp3(point.x, minX, maxX), y: clamp3(point.y, minY, maxY) };\n      const offset = { x: point.x - constrainedPoint.x, y: point.y - constrainedPoint.y };\n      return offset;\n    }\n    get isBeyondConstraints() {\n      const constraintsOffset = this.constraintsOffset;\n      if (constraintsOffset.x !== 0) {\n        return true;\n      }\n      if (constraintsOffset.y !== 0) {\n        return true;\n      }\n      return false;\n    }\n    clampAndScale(value, min, max, scale2, scaleAllowed) {\n      if (!scaleAllowed) {\n        return clamp3(value, min, max);\n      }\n      if (value < min) {\n        value = min + (value - min) * scale2;\n      }\n      if (value > max) {\n        value = max + (value - max) * scale2;\n      }\n      return value;\n    }\n    calculateConstraints(bounds) {\n      if (!bounds) {\n        return { minX: Infinity, maxX: Infinity, minY: Infinity, maxY: Infinity };\n      }\n      if (bounds.width < this.width) {\n        bounds.width = this.width;\n      }\n      if (bounds.height < this.height) {\n        bounds.height = this.height;\n      }\n      const constraints = {\n        minX: Rect.minX(bounds),\n        maxX: Rect.maxX(bounds),\n        minY: Rect.minY(bounds),\n        maxY: Rect.maxY(bounds)\n      };\n      constraints.maxX -= this.width;\n      constraints.maxY -= this.height;\n      return constraints;\n    }\n    constrainPosition(proposedPoint, bounds, scale2, overdrag = this.props.overdrag) {\n      const { maxX, maxY, minX, minY } = this.calculateConstraints(this._constraints);\n      const point = {\n        x: this.clampAndScale(proposedPoint.x, minX, maxX, scale2, overdrag),\n        y: this.clampAndScale(proposedPoint.y, minY, maxY, scale2, overdrag)\n      };\n      if (this.props.speedX === 0 || this.props.horizontal === false) {\n        point.x = proposedPoint.x;\n      }\n      if (this.props.speedY === 0 || this.props.vertical === false) {\n        point.y = proposedPoint.y;\n      }\n      return point;\n    }\n    updatedirectionLock(correctedDelta) {\n      if (Math.abs(correctedDelta.y) > this.props.directionLockThreshold.y) {\n        this.directionLockAxis = \"y\";\n      } else if (Math.abs(correctedDelta.x) > this.props.directionLockThreshold.x) {\n        this.directionLockAxis = \"x\";\n      }\n      if (this.directionLockAxis !== null) {\n        if (this.props.onDragDirectionLockStart) {\n          this.props.onDragDirectionLockStart(this.directionLockAxis, this);\n        }\n      }\n    }\n    resetdirectionLock() {\n      this.directionLockAxis = null;\n    }\n    setupAnimation() {\n      if (this.animation) {\n        return;\n      }\n      this.animation = { x: this.setupAnimationForAxis(\"x\"), y: this.setupAnimationForAxis(\"y\") };\n      this.updateAnimationConstraints(this._constraints);\n    }\n    setupAnimationForAxis(axis) {\n      const properties = {};\n      properties[axis] = true;\n      const animator = new InertialScrollAnimator({\n        momentum: this.props.momentumOptions,\n        bounce: this.props.bounceOptions\n      });\n      const updateCallback = (value) => {\n        this.onAnimationStep(axis, value);\n      };\n      const doneCallback = () => {\n        this.onAnimationStop(axis);\n      };\n      return new MainLoopAnimationDriver(animator, updateCallback, doneCallback);\n    }\n    updateAnimationConstraints(constraints) {\n      if (!this.animation) {\n        return;\n      }\n      if (constraints) {\n        const { minX, minY, maxX, maxY } = this.calculateConstraints(constraints);\n        this.animation.x.animator.setLimits(minX, maxX);\n        this.animation.y.animator.setLimits(minY, maxY);\n      } else {\n        this.animation.x.animator.setLimits(-Infinity, Infinity);\n        this.animation.y.animator.setLimits(-Infinity, Infinity);\n      }\n    }\n    startAnimation(event) {\n      const { momentum, bounce, momentumVelocityMultiplier, speedX, speedY, overdrag, onDragAnimationStart } = this.props;\n      if (!(momentum || bounce)) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && momentum === false) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && this.state.isDragging === false) {\n        return;\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const startAnimationX = overdrag === true || this.point.x > minX && this.point.x < maxX;\n      const startAnimationY = overdrag === true || this.point.y > minY && this.point.y < maxY;\n      if (startAnimationX === startAnimationY && startAnimationY === false) {\n        return;\n      }\n      const velocity = event.velocity(0.1);\n      let velocityX = velocity.x * momentumVelocityMultiplier * speedX;\n      let velocityY = velocity.y * momentumVelocityMultiplier * speedY;\n      if (this.directionLockAxis === \"x\") {\n        velocityY = 0;\n      }\n      if (this.directionLockAxis === \"y\") {\n        velocityX = 0;\n      }\n      this.setupAnimation();\n      this.isAnimating = true;\n      this.isMoving = true;\n      if (!this.animation) {\n        return;\n      }\n      this.animation.x.animator.setState({ x: this.point.x, v: velocityX });\n      if (startAnimationX) {\n        this.animation.x.play();\n      }\n      this.animation.y.animator.setState({ x: this.point.y, v: velocityY });\n      if (startAnimationY) {\n        this.animation.y.play();\n      }\n      if (onDragAnimationStart) {\n        onDragAnimationStart(this.animation, this);\n      }\n    }\n    wrapHandler(ownHandler, originalHandler) {\n      if (!originalHandler) {\n        return ownHandler;\n      }\n      return (event) => {\n        ownHandler(event);\n        originalHandler(event);\n      };\n    }\n    render() {\n      const { onPanStart, onPan, onPanEnd, onMouseWheelStart, onMouseWheel, onMouseWheelEnd, ...attributes } = this.props;\n      const originalProps = { ...attributes };\n      Object.keys(_WithDraggingHOC.draggingDefaultProps).forEach((key7) => {\n        delete originalProps[key7];\n      });\n      originalProps.onPanStart = this.wrapHandler(this.panStart, onPanStart);\n      originalProps.onPan = this.wrapHandler(this.pan, onPan);\n      originalProps.onPanEnd = this.wrapHandler(this.panEnd, onPanEnd);\n      originalProps.onMouseWheelStart = this.wrapHandler(this.mouseWheelStart, onMouseWheelStart);\n      originalProps.onMouseWheel = this.wrapHandler(this.mouseWheel, onMouseWheel);\n      originalProps.onMouseWheelEnd = this.wrapHandler(this.mouseWheelEnd, onMouseWheelEnd);\n      originalProps.left = this.x;\n      originalProps.top = this.y;\n      return /* @__PURE__ */ React30.createElement(DraggingContext.Provider, { value: { dragging: this.state.isDragging } }, /* @__PURE__ */ React30.createElement(Component15, { ...originalProps }));\n    }\n  };\n  let WithDraggingHOC = _WithDraggingHOC;\n  WithDraggingHOC.draggingDefaultProps = {\n    momentum: true,\n    momentumOptions: { friction: 2.1, tolerance: 1 },\n    momentumVelocityMultiplier: 800,\n    speedX: 1,\n    speedY: 1,\n    bounce: true,\n    bounceOptions: { friction: 40, tension: 200, tolerance: 1 },\n    directionLock: false,\n    directionLockThreshold: { x: 10, y: 10 },\n    overdrag: true,\n    overdragScale: 0.5,\n    pixelAlign: true,\n    velocityTimeout: 100,\n    velocityScale: 890,\n    horizontal: true,\n    vertical: true,\n    enabled: true,\n    constraints: {},\n    mouseWheel: false\n  };\n  WithDraggingHOC.defaultProps = Object.assign(\n    {},\n    Component15.defaultProps,\n    _WithDraggingHOC.draggingDefaultProps\n  );\n  const withDragging = WithDraggingHOC;\n  (0, import_hoist_non_react_statics2.default)(withDragging, Component15);\n  return withDragging;\n}\n\n// ../../library/src/components/hoc/WithEvents.tsx\nvar hoverProps = {\n  onMouseEnter: \"mouseenter\",\n  onMouseLeave: \"mouseleave\"\n};\nvar hoverEventKeys = Object.keys(hoverProps);\nvar eventHandlerMapping = {\n  panstart: [\"onPanStart\"],\n  pan: [\"onPan\"],\n  panend: [\"onPanEnd\"],\n  tapstart: [\"onTapStart\", \"onMouseDown\"],\n  tap: [\"onTap\", \"onClick\"],\n  tapend: [\"onTapEnd\", \"onMouseUp\"],\n  mousewheelstart: [\"onMouseWheelStart\"],\n  mousewheel: [\"onMouseWheel\"],\n  mousewheelend: [\"onMouseWheelEnd\"]\n};\nvar tapEventKeys = /* @__PURE__ */ new Set([\"tapstart\", \"tap\", \"tapend\"]);\nfunction WithEvents(BaseComponent) {\n  var _a;\n  const withEvents = (_a = class extends React31.Component {\n    constructor() {\n      super(...arguments);\n      this.shouldCancelTap = false;\n      this.activeEventListeners = /* @__PURE__ */ new Map();\n      this.hasFramerEventListener = false;\n      this.component = React31.createRef();\n    }\n    get element() {\n      return this.component.current && this.component.current.element;\n    }\n    componentDidMount() {\n      this.addEventListeners();\n    }\n    componentDidUpdate(prevProps) {\n      this.addEventListeners(prevProps);\n    }\n    componentWillUnmount() {\n      this.removeEventListeners();\n    }\n    addEventListeners(prevProps) {\n      if (this.element && !this.hasFramerEventListener) {\n        this.element.addEventListener(\"FramerEvent\", ({ detail }) => {\n          const type = detail.type;\n          const framerEvent = detail.event;\n          this.handleEvent(type, framerEvent);\n        });\n        hoverEventKeys.forEach((eventName) => this.addHoverEvent(eventName));\n        this.hasFramerEventListener = true;\n      } else if (this.element && prevProps) {\n        hoverEventKeys.forEach((eventName) => this.checkHoverEvent(eventName, prevProps));\n      } else if (!this.element) {\n        this.hasFramerEventListener = false;\n      }\n    }\n    removeEventListeners() {\n      hoverEventKeys.forEach((eventName) => this.removeHoverEvent(eventName));\n    }\n    addHoverEvent(eventName) {\n      const originalEventListener = this.props[eventName];\n      if (this.element && originalEventListener) {\n        const eventListener = (e) => {\n          const framerEvent = new FramerEvent(e);\n          originalEventListener(framerEvent);\n        };\n        this.activeEventListeners.set(eventName, eventListener);\n        const domEventName = hoverProps[eventName];\n        this.element.addEventListener(domEventName, eventListener);\n      }\n    }\n    removeHoverEvent(eventName) {\n      const eventListener = this.activeEventListeners.get(eventName);\n      if (this.element && eventListener) {\n        const domEventName = hoverProps[eventName];\n        this.element.removeEventListener(domEventName, eventListener);\n        this.activeEventListeners.delete(eventName);\n      }\n    }\n    checkHoverEvent(eventName, prevProps) {\n      if (prevProps[eventName] !== this.props[eventName]) {\n        this.removeHoverEvent(eventName);\n        this.addHoverEvent(eventName);\n      }\n    }\n    handleEvent(type, framerEvent) {\n      const eventListenerKeys = eventHandlerMapping[type];\n      if (!eventListenerKeys)\n        return;\n      eventListenerKeys.forEach((eventKey) => {\n        const eventListener = this.props[eventKey];\n        const cancelEvent = this.shouldCancelTap && tapEventKeys.has(eventKey);\n        if (eventListener && !cancelEvent) {\n          eventListener(framerEvent);\n        }\n      });\n    }\n    render() {\n      return /* @__PURE__ */ React31.createElement(DraggingContext.Consumer, null, (value) => {\n        this.shouldCancelTap = value.dragging;\n        return /* @__PURE__ */ React31.createElement(BaseComponent, { ...this.props, ref: this.component });\n      });\n    }\n  }, _a.defaultProps = Object.assign({}, BaseComponent.defaultProps), _a);\n  (0, import_hoist_non_react_statics3.default)(withEvents, BaseComponent);\n  return withEvents;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nvar import_process4 = __toESM(require_browser(), 1);\nimport React34 from \"react\";\n\n// ../../library/src/data/ObservableObject.ts\nvar hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar ObservableObject = /* @__PURE__ */ (() => {\n  function ObservableObject2(initial = {}, makeAnimatables = false, observeAnimatables = true) {\n    const unproxiedState = {};\n    unproxiedState[$private] = {\n      makeAnimatables,\n      observeAnimatables,\n      observers: new Observers(),\n      reset() {\n        for (const key7 in state) {\n          if (hasOwnProperty(state, key7)) {\n            state[key7] = hasOwnProperty(initial, key7) ? initial[key7] : void 0;\n          }\n        }\n      },\n      transactions: /* @__PURE__ */ new Set()\n    };\n    const state = new Proxy(unproxiedState, sharedProxyHandler);\n    Object.assign(state, initial);\n    return state;\n  }\n  ObservableObject2.resetObject = (target) => {\n    return target[$private].reset();\n  };\n  ObservableObject2.addObserver = (target, observer) => {\n    return target[$private].observers.add(observer);\n  };\n  return ObservableObject2;\n})();\nvar ObservableObjectProxyHandler = class {\n  constructor() {\n    this.set = (target, key7, value, receiver) => {\n      if (key7 === $private) {\n        return false;\n      }\n      const privateObject = target[$private];\n      let animatable;\n      let rawValue;\n      if (isAnimatable(value)) {\n        animatable = value;\n        rawValue = animatable.get();\n      } else {\n        rawValue = value;\n      }\n      if (privateObject.makeAnimatables && typeof value !== \"function\" && typeof value !== \"object\" && !animatable) {\n        animatable = Animatable(value);\n      }\n      if (privateObject.observeAnimatables && animatable) {\n        const transactions = privateObject.transactions;\n        animatable.onUpdate({\n          update: (change, transaction) => {\n            if (transaction) {\n              transactions.add(transaction);\n            }\n            privateObject.observers.notify({ value: receiver }, transaction);\n          },\n          finish: (transaction) => {\n            if (transactions.delete(transaction)) {\n              privateObject.observers.finishTransaction(transaction);\n            }\n          }\n        });\n      }\n      let result = false;\n      let changed = true;\n      if (target[key7] !== void 0) {\n        if (isAnimatable(target[key7])) {\n          changed = target[key7].get() !== rawValue;\n          target[key7].set(rawValue);\n        } else {\n          changed = target[key7] !== rawValue;\n          target[key7] = rawValue;\n        }\n        const rawValueIsObject = rawValue !== null && typeof rawValue === \"object\";\n        if (Array.isArray(rawValue) || rawValueIsObject)\n          changed = true;\n        result = true;\n      } else {\n        if (animatable) {\n          value = animatable;\n        }\n        result = Reflect.set(target, key7, value);\n      }\n      if (changed) {\n        privateObject.observers.notify({ value: receiver });\n      }\n      return result;\n    };\n    this.get = (target, key7, receiver) => {\n      if (key7 === $private) {\n        return target[key7];\n      }\n      const value = Reflect.get(target, key7, receiver);\n      return typeof value === \"function\" ? value.bind(receiver) : value;\n    };\n  }\n  deleteProperty(target, key7) {\n    const result = Reflect.deleteProperty(target, key7);\n    target[$private].observers.notify({ value: target });\n    return result;\n  }\n  ownKeys(target) {\n    const keys3 = Reflect.ownKeys(target);\n    const privateIndex = keys3.indexOf($private);\n    if (privateIndex !== -1) {\n      keys3.splice(privateIndex, 1);\n    }\n    return keys3;\n  }\n  getOwnPropertyDescriptor(target, key7) {\n    if (key7 === $private) {\n      return void 0;\n    }\n    return Reflect.getOwnPropertyDescriptor(target, key7);\n  }\n};\nvar sharedProxyHandler = /* @__PURE__ */ new ObservableObjectProxyHandler();\nvar $private = /* @__PURE__ */ Symbol(\"private\");\n\n// ../../library/src/render/traits/Blending.ts\nfunction collectBlendingFromProps(node, style) {\n  if (!node.blendingMode || node.blendingMode === \"normal\")\n    return;\n  style.mixBlendMode = node.blendingMode;\n}\n\n// ../../library/src/render/traits/Opacity.ts\nvar key3 = \"opacity\";\nfunction withOpacity(target) {\n  return key3 in target;\n}\nfunction collectOpacityFromProps(props, style) {\n  if (!withOpacity(props))\n    return;\n  const opacity = Animatable.getNumber(props.opacity);\n  if (opacity === 1)\n    return;\n  style.opacity = opacity;\n}\n\n// ../../library/src/render/traits/Overflow.ts\nfunction collectOverflowFromProps(props, style) {\n  if (props.overflow) {\n    style.overflow = props.overflow;\n  }\n}\n\n// ../../library/src/render/traits/Radius.ts\nvar key4 = \"radius\";\nfunction hasRadius(props) {\n  return key4 in props;\n}\nfunction getRadiusValue(value) {\n  let num = Number(value);\n  if (typeof value === \"string\" && isNaN(num)) {\n    return value;\n  } else if (isAnimatable(value)) {\n    num = Animatable.getNumber(value);\n  }\n  return num ? `${num}px` : \"0\";\n}\nfunction hasRadiusValue(value) {\n  return value && value !== \"0\";\n}\nfunction collectRadiusFromProps(props, style) {\n  if (!hasRadius(props))\n    return;\n  const { radius } = props;\n  if (typeof radius === \"string\" || isAnimatable(radius) || isFiniteNumber(radius)) {\n    const radiusValue = getRadiusValue(radius);\n    if (hasRadiusValue(radiusValue)) {\n      style.borderTopLeftRadius = style.borderTopRightRadius = style.borderBottomRightRadius = style.borderBottomLeftRadius = radiusValue;\n    }\n  } else if (radius) {\n    const topLeft = getRadiusValue(radius.topLeft);\n    const topRight = getRadiusValue(radius.topRight);\n    const bottomRight = getRadiusValue(radius.bottomRight);\n    const bottomLeft = getRadiusValue(radius.bottomLeft);\n    if (hasRadiusValue(topLeft) || hasRadiusValue(topRight) || hasRadiusValue(bottomRight) || hasRadiusValue(bottomLeft)) {\n      style.borderTopLeftRadius = topLeft;\n      style.borderTopRightRadius = topRight;\n      style.borderBottomRightRadius = bottomRight;\n      style.borderBottomLeftRadius = bottomLeft;\n    }\n  }\n}\n\n// ../../library/src/render/traits/TextColor.ts\nfunction collectTextColorFromProps(props, style) {\n  const { color: color2 } = props;\n  if (typeof color2 === \"string\") {\n    style.color = color2;\n  } else if (Color.isColorObject(color2)) {\n    style.color = color2.initialValue || Color.toRgbString(color2);\n  }\n}\n\n// ../../../node_modules/popmotion/node_modules/tslib/tslib.es6.js\nfunction __rest(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n}\n\n// ../../../node_modules/popmotion/dist/es/utils/clamp.mjs\nvar clamp4 = (min, max, v) => Math.min(Math.max(v, min), max);\n\n// ../../../node_modules/popmotion/dist/es/animations/utils/find-spring.mjs\nvar safeMin = 1e-3;\nvar minDuration2 = 0.01;\nvar maxDuration2 = 10;\nvar minDamping2 = 0.05;\nvar maxDamping2 = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1 }) {\n  let envelope;\n  let derivative;\n  warning(duration <= maxDuration2 * 1e3, \"Spring duration must be 10 seconds or less\");\n  let dampingRatio = 1 - bounce;\n  dampingRatio = clamp4(minDamping2, maxDamping2, dampingRatio);\n  duration = clamp4(minDuration2, maxDuration2, duration / 1e3);\n  if (dampingRatio < 1) {\n    envelope = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const a = exponentialDecay - velocity;\n      const b = calcAngularFreq(undampedFreq2, dampingRatio);\n      const c = Math.exp(-delta);\n      return safeMin - a / b * c;\n    };\n    derivative = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const d = delta * velocity + velocity;\n      const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;\n      const f = Math.exp(-delta);\n      const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);\n      const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;\n      return factor * ((d - e) * f) / g;\n    };\n  } else {\n    envelope = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (undampedFreq2 - velocity) * duration + 1;\n      return -safeMin + a * b;\n    };\n    derivative = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (velocity - undampedFreq2) * (duration * duration);\n      return a * b;\n    };\n  }\n  const initialGuess = 5 / duration;\n  const undampedFreq = approximateRoot2(envelope, derivative, initialGuess);\n  duration = duration * 1e3;\n  if (isNaN(undampedFreq)) {\n    return {\n      stiffness: 100,\n      damping: 10,\n      duration\n    };\n  } else {\n    const stiffness = Math.pow(undampedFreq, 2) * mass;\n    return {\n      stiffness,\n      damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n      duration\n    };\n  }\n}\nvar rootIterations = 12;\nfunction approximateRoot2(envelope, derivative, initialGuess) {\n  let result = initialGuess;\n  for (let i = 1; i < rootIterations; i++) {\n    result = result - envelope(result) / derivative(result);\n  }\n  return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n  return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\n// ../../../node_modules/popmotion/dist/es/animations/generators/spring.mjs\nvar durationKeys = [\"duration\", \"bounce\"];\nvar physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys3) {\n  return keys3.some((key7) => options[key7] !== void 0);\n}\nfunction getSpringOptions(options) {\n  let springOptions = Object.assign({ velocity: 0, stiffness: 100, damping: 10, mass: 1, isResolvedFromDuration: false }, options);\n  if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {\n    const derived = findSpring(options);\n    springOptions = Object.assign(Object.assign(Object.assign({}, springOptions), derived), { velocity: 0, mass: 1 });\n    springOptions.isResolvedFromDuration = true;\n  }\n  return springOptions;\n}\nfunction spring2(_a) {\n  var { from = 0, to = 1, restSpeed = 2, restDelta } = _a, options = __rest(_a, [\"from\", \"to\", \"restSpeed\", \"restDelta\"]);\n  const state = { done: false, value: from };\n  let { stiffness, damping, mass, velocity, duration, isResolvedFromDuration } = getSpringOptions(options);\n  let resolveSpring = zero;\n  let resolveVelocity = zero;\n  function createSpring() {\n    const initialVelocity = velocity ? -(velocity / 1e3) : 0;\n    const initialDelta = to - from;\n    const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n    const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1e3;\n    if (restDelta === void 0) {\n      restDelta = Math.min(Math.abs(to - from) / 100, 0.4);\n    }\n    if (dampingRatio < 1) {\n      const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n      resolveSpring = (t) => {\n        const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n        return to - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));\n      };\n      resolveVelocity = (t) => {\n        const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n        return dampingRatio * undampedAngularFreq * envelope * (Math.sin(angularFreq * t) * (initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq + initialDelta * Math.cos(angularFreq * t)) - envelope * (Math.cos(angularFreq * t) * (initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) - angularFreq * initialDelta * Math.sin(angularFreq * t));\n      };\n    } else if (dampingRatio === 1) {\n      resolveSpring = (t) => to - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);\n    } else {\n      const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n      resolveSpring = (t) => {\n        const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n        const freqForT = Math.min(dampedAngularFreq * t, 300);\n        return to - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;\n      };\n    }\n  }\n  createSpring();\n  return {\n    next: (t) => {\n      const current = resolveSpring(t);\n      if (!isResolvedFromDuration) {\n        const currentVelocity = resolveVelocity(t) * 1e3;\n        const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n        const isBelowDisplacementThreshold = Math.abs(to - current) <= restDelta;\n        state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;\n      } else {\n        state.done = t >= duration;\n      }\n      state.value = state.done ? to : current;\n      return state;\n    },\n    flipTarget: () => {\n      velocity = -velocity;\n      [from, to] = [to, from];\n      createSpring();\n    }\n  };\n}\nspring2.needsInterpolation = (a, b) => typeof a === \"string\" || typeof b === \"string\";\nvar zero = (_t) => 0;\n\n// ../../../node_modules/popmotion/dist/es/utils/progress.mjs\nvar progress = (from, to, value) => {\n  const toFromDifference = to - from;\n  return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\n// ../../../node_modules/popmotion/dist/es/utils/mix.mjs\nvar mix2 = (from, to, progress2) => -progress2 * from + progress2 * to + from;\n\n// ../../../node_modules/popmotion/dist/es/utils/hsla-to-rgba.mjs\nfunction hueToRgb(p, q, t) {\n  if (t < 0)\n    t += 1;\n  if (t > 1)\n    t -= 1;\n  if (t < 1 / 6)\n    return p + (q - p) * 6 * t;\n  if (t < 1 / 2)\n    return q;\n  if (t < 2 / 3)\n    return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {\n  hue /= 360;\n  saturation /= 100;\n  lightness /= 100;\n  let red = 0;\n  let green = 0;\n  let blue = 0;\n  if (!saturation) {\n    red = green = blue = lightness;\n  } else {\n    const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;\n    const p = 2 * lightness - q;\n    red = hueToRgb(p, q, hue + 1 / 3);\n    green = hueToRgb(p, q, hue);\n    blue = hueToRgb(p, q, hue - 1 / 3);\n  }\n  return {\n    red: Math.round(red * 255),\n    green: Math.round(green * 255),\n    blue: Math.round(blue * 255),\n    alpha: alpha2\n  };\n}\n\n// ../../../node_modules/popmotion/dist/es/utils/mix-color.mjs\nvar mixLinearColor = (from, to, v) => {\n  const fromExpo = from * from;\n  const toExpo = to * to;\n  return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));\n};\nvar colorTypes = [hex, rgba, hsla];\nvar getColorType = (v) => colorTypes.find((type) => type.test(v));\nvar notAnimatable = (color2) => `'${color2}' is not an animatable color. Use the equivalent color code instead.`;\nvar mixColor = (from, to) => {\n  let fromColorType = getColorType(from);\n  let toColorType = getColorType(to);\n  invariant(!!fromColorType, notAnimatable(from));\n  invariant(!!toColorType, notAnimatable(to));\n  let fromColor = fromColorType.parse(from);\n  let toColor = toColorType.parse(to);\n  if (fromColorType === hsla) {\n    fromColor = hslaToRgba(fromColor);\n    fromColorType = rgba;\n  }\n  if (toColorType === hsla) {\n    toColor = hslaToRgba(toColor);\n    toColorType = rgba;\n  }\n  const blended = Object.assign({}, fromColor);\n  return (v) => {\n    for (const key7 in blended) {\n      if (key7 !== \"alpha\") {\n        blended[key7] = mixLinearColor(fromColor[key7], toColor[key7], v);\n      }\n    }\n    blended.alpha = mix2(fromColor.alpha, toColor.alpha, v);\n    return fromColorType.transform(blended);\n  };\n};\n\n// ../../../node_modules/popmotion/dist/es/utils/inc.mjs\nvar isNum = (v) => typeof v === \"number\";\n\n// ../../../node_modules/popmotion/dist/es/utils/pipe.mjs\nvar combineFunctions = (a, b) => (v) => b(a(v));\nvar pipe2 = (...transformers) => transformers.reduce(combineFunctions);\n\n// ../../../node_modules/popmotion/dist/es/utils/mix-complex.mjs\nfunction getMixer(origin, target) {\n  if (isNum(origin)) {\n    return (v) => mix2(origin, target, v);\n  } else if (color.test(origin)) {\n    return mixColor(origin, target);\n  } else {\n    return mixComplex(origin, target);\n  }\n}\nvar mixArray = (from, to) => {\n  const output = [...from];\n  const numValues = output.length;\n  const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n  return (v) => {\n    for (let i = 0; i < numValues; i++) {\n      output[i] = blendValue[i](v);\n    }\n    return output;\n  };\n};\nvar mixObject = (origin, target) => {\n  const output = Object.assign(Object.assign({}, origin), target);\n  const blendValue = {};\n  for (const key7 in output) {\n    if (origin[key7] !== void 0 && target[key7] !== void 0) {\n      blendValue[key7] = getMixer(origin[key7], target[key7]);\n    }\n  }\n  return (v) => {\n    for (const key7 in blendValue) {\n      output[key7] = blendValue[key7](v);\n    }\n    return output;\n  };\n};\nfunction analyse2(value) {\n  const parsed = complex.parse(value);\n  const numValues = parsed.length;\n  let numNumbers = 0;\n  let numRGB = 0;\n  let numHSL = 0;\n  for (let i = 0; i < numValues; i++) {\n    if (numNumbers || typeof parsed[i] === \"number\") {\n      numNumbers++;\n    } else {\n      if (parsed[i].hue !== void 0) {\n        numHSL++;\n      } else {\n        numRGB++;\n      }\n    }\n  }\n  return { parsed, numNumbers, numRGB, numHSL };\n}\nvar mixComplex = (origin, target) => {\n  const template = complex.createTransformer(target);\n  const originStats = analyse2(origin);\n  const targetStats = analyse2(target);\n  const canInterpolate = originStats.numHSL === targetStats.numHSL && originStats.numRGB === targetStats.numRGB && originStats.numNumbers >= targetStats.numNumbers;\n  if (canInterpolate) {\n    return pipe2(mixArray(originStats.parsed, targetStats.parsed), template);\n  } else {\n    warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n    return (p) => `${p > 0 ? target : origin}`;\n  }\n};\n\n// ../../../node_modules/popmotion/dist/es/utils/interpolate.mjs\nvar mixNumber = (from, to) => (p) => mix2(from, to, p);\nfunction detectMixerFactory(v) {\n  if (typeof v === \"number\") {\n    return mixNumber;\n  } else if (typeof v === \"string\") {\n    if (color.test(v)) {\n      return mixColor;\n    } else {\n      return mixComplex;\n    }\n  } else if (Array.isArray(v)) {\n    return mixArray;\n  } else if (typeof v === \"object\") {\n    return mixObject;\n  }\n}\nfunction createMixers(output, ease, customMixer) {\n  const mixers = [];\n  const mixerFactory = customMixer || detectMixerFactory(output[0]);\n  const numMixers = output.length - 1;\n  for (let i = 0; i < numMixers; i++) {\n    let mixer = mixerFactory(output[i], output[i + 1]);\n    if (ease) {\n      const easingFunction = Array.isArray(ease) ? ease[i] : ease;\n      mixer = pipe2(easingFunction, mixer);\n    }\n    mixers.push(mixer);\n  }\n  return mixers;\n}\nfunction fastInterpolate([from, to], [mixer]) {\n  return (v) => mixer(progress(from, to, v));\n}\nfunction slowInterpolate(input, mixers) {\n  const inputLength = input.length;\n  const lastInputIndex = inputLength - 1;\n  return (v) => {\n    let mixerIndex = 0;\n    let foundMixerIndex = false;\n    if (v <= input[0]) {\n      foundMixerIndex = true;\n    } else if (v >= input[lastInputIndex]) {\n      mixerIndex = lastInputIndex - 1;\n      foundMixerIndex = true;\n    }\n    if (!foundMixerIndex) {\n      let i = 1;\n      for (; i < inputLength; i++) {\n        if (input[i] > v || i === lastInputIndex) {\n          break;\n        }\n      }\n      mixerIndex = i - 1;\n    }\n    const progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);\n    return mixers[mixerIndex](progressInRange);\n  };\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n  const inputLength = input.length;\n  invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n  invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, \"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.\");\n  if (input[0] > input[inputLength - 1]) {\n    input = [].concat(input);\n    output = [].concat(output);\n    input.reverse();\n    output.reverse();\n  }\n  const mixers = createMixers(output, ease, mixer);\n  const interpolator = inputLength === 2 ? fastInterpolate(input, mixers) : slowInterpolate(input, mixers);\n  return isClamp ? (v) => interpolator(clamp4(input[0], input[inputLength - 1], v)) : interpolator;\n}\n\n// ../../../node_modules/popmotion/dist/es/easing/utils.mjs\nvar reverseEasing = (easing) => (p) => 1 - easing(1 - p);\nvar mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\nvar createExpoIn = (power) => (p) => Math.pow(p, power);\nvar createBackIn = (power) => (p) => p * p * ((power + 1) * p - power);\nvar createAnticipate = (power) => {\n  const backEasing = createBackIn(power);\n  return (p) => (p *= 2) < 1 ? 0.5 * backEasing(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n};\n\n// ../../../node_modules/popmotion/dist/es/easing/index.mjs\nvar DEFAULT_OVERSHOOT_STRENGTH = 1.525;\nvar BOUNCE_FIRST_THRESHOLD = 4 / 11;\nvar BOUNCE_SECOND_THRESHOLD = 8 / 11;\nvar BOUNCE_THIRD_THRESHOLD = 9 / 10;\nvar easeIn2 = createExpoIn(2);\nvar easeOut2 = reverseEasing(easeIn2);\nvar easeInOut2 = mirrorEasing(easeIn2);\nvar circIn2 = (p) => 1 - Math.sin(Math.acos(p));\nvar circOut2 = reverseEasing(circIn2);\nvar circInOut2 = mirrorEasing(circOut2);\nvar backIn2 = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);\nvar backOut2 = reverseEasing(backIn2);\nvar backInOut2 = mirrorEasing(backIn2);\nvar anticipate2 = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);\nvar ca = 4356 / 361;\nvar cb = 35442 / 1805;\nvar cc = 16061 / 1805;\nvar bounceOut = (p) => {\n  if (p === 1 || p === 0)\n    return p;\n  const p2 = p * p;\n  return p < BOUNCE_FIRST_THRESHOLD ? 7.5625 * p2 : p < BOUNCE_SECOND_THRESHOLD ? 9.075 * p2 - 9.9 * p + 3.4 : p < BOUNCE_THIRD_THRESHOLD ? ca * p2 - cb * p + cc : 10.8 * p * p - 20.52 * p + 10.72;\n};\nvar bounceIn = reverseEasing(bounceOut);\n\n// ../../../node_modules/popmotion/dist/es/animations/generators/keyframes.mjs\nfunction defaultEasing(values, easing) {\n  return values.map(() => easing || easeInOut2).splice(0, values.length - 1);\n}\nfunction defaultOffset(values) {\n  const numValues = values.length;\n  return values.map((_value, i) => i !== 0 ? i / (numValues - 1) : 0);\n}\nfunction convertOffsetToTimes(offset, duration) {\n  return offset.map((o) => o * duration);\n}\nfunction keyframes({ from = 0, to = 1, ease, offset, duration = 300 }) {\n  const state = { done: false, value: from };\n  const values = Array.isArray(to) ? to : [from, to];\n  const times = convertOffsetToTimes(offset && offset.length === values.length ? offset : defaultOffset(values), duration);\n  function createInterpolator() {\n    return interpolate(times, values, {\n      ease: Array.isArray(ease) ? ease : defaultEasing(values, ease)\n    });\n  }\n  let interpolator = createInterpolator();\n  return {\n    next: (t) => {\n      state.value = interpolator(t);\n      state.done = t >= duration;\n      return state;\n    },\n    flipTarget: () => {\n      values.reverse();\n      interpolator = createInterpolator();\n    }\n  };\n}\n\n// ../../../node_modules/popmotion/dist/es/animations/generators/decay.mjs\nfunction decay({ velocity = 0, from = 0, power = 0.8, timeConstant: timeConstant2 = 350, restDelta = 0.5, modifyTarget }) {\n  const state = { done: false, value: from };\n  let amplitude = power * velocity;\n  const ideal = from + amplitude;\n  const target = modifyTarget === void 0 ? ideal : modifyTarget(ideal);\n  if (target !== ideal)\n    amplitude = target - from;\n  return {\n    next: (t) => {\n      const delta = -amplitude * Math.exp(-t / timeConstant2);\n      state.done = !(delta > restDelta || delta < -restDelta);\n      state.value = state.done ? target : target + delta;\n      return state;\n    },\n    flipTarget: () => {\n    }\n  };\n}\n\n// ../../../node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.mjs\nvar types = { keyframes, spring: spring2, decay };\nfunction detectAnimationFromOptions(config) {\n  if (Array.isArray(config.to)) {\n    return keyframes;\n  } else if (types[config.type]) {\n    return types[config.type];\n  }\n  const keys3 = new Set(Object.keys(config));\n  if (keys3.has(\"ease\") || keys3.has(\"duration\") && !keys3.has(\"dampingRatio\")) {\n    return keyframes;\n  } else if (keys3.has(\"dampingRatio\") || keys3.has(\"stiffness\") || keys3.has(\"mass\") || keys3.has(\"damping\") || keys3.has(\"restSpeed\") || keys3.has(\"restDelta\")) {\n    return spring2;\n  }\n  return keyframes;\n}\n\n// ../../../node_modules/framesync/dist/es/on-next-frame.mjs\nvar defaultTimestep = 1 / 60 * 1e3;\nvar getCurrentTime = typeof performance !== \"undefined\" ? () => performance.now() : () => Date.now();\nvar onNextFrame = typeof window !== \"undefined\" ? (callback) => window.requestAnimationFrame(callback) : (callback) => setTimeout(() => callback(getCurrentTime()), defaultTimestep);\n\n// ../../../node_modules/framesync/dist/es/create-render-step.mjs\nfunction createRenderStep(runNextFrame2) {\n  let toRun = [];\n  let toRunNextFrame = [];\n  let numToRun = 0;\n  let isProcessing2 = false;\n  let flushNextFrame = false;\n  const toKeepAlive = /* @__PURE__ */ new WeakSet();\n  const step = {\n    schedule: (callback, keepAlive = false, immediate = false) => {\n      const addToCurrentFrame = immediate && isProcessing2;\n      const buffer = addToCurrentFrame ? toRun : toRunNextFrame;\n      if (keepAlive)\n        toKeepAlive.add(callback);\n      if (buffer.indexOf(callback) === -1) {\n        buffer.push(callback);\n        if (addToCurrentFrame && isProcessing2)\n          numToRun = toRun.length;\n      }\n      return callback;\n    },\n    cancel: (callback) => {\n      const index = toRunNextFrame.indexOf(callback);\n      if (index !== -1)\n        toRunNextFrame.splice(index, 1);\n      toKeepAlive.delete(callback);\n    },\n    process: (frameData2) => {\n      if (isProcessing2) {\n        flushNextFrame = true;\n        return;\n      }\n      isProcessing2 = true;\n      [toRun, toRunNextFrame] = [toRunNextFrame, toRun];\n      toRunNextFrame.length = 0;\n      numToRun = toRun.length;\n      if (numToRun) {\n        for (let i = 0; i < numToRun; i++) {\n          const callback = toRun[i];\n          callback(frameData2);\n          if (toKeepAlive.has(callback)) {\n            step.schedule(callback);\n            runNextFrame2();\n          }\n        }\n      }\n      isProcessing2 = false;\n      if (flushNextFrame) {\n        flushNextFrame = false;\n        step.process(frameData2);\n      }\n    }\n  };\n  return step;\n}\n\n// ../../../node_modules/framesync/dist/es/index.mjs\nvar maxElapsed = 40;\nvar useDefaultElapsed = true;\nvar runNextFrame = false;\nvar isProcessing = false;\nvar frame = {\n  delta: 0,\n  timestamp: 0\n};\nvar stepsOrder = [\n  \"read\",\n  \"update\",\n  \"preRender\",\n  \"render\",\n  \"postRender\"\n];\nvar steps = stepsOrder.reduce((acc, key7) => {\n  acc[key7] = createRenderStep(() => runNextFrame = true);\n  return acc;\n}, {});\nvar sync2 = stepsOrder.reduce((acc, key7) => {\n  const step = steps[key7];\n  acc[key7] = (process13, keepAlive = false, immediate = false) => {\n    if (!runNextFrame)\n      startLoop();\n    return step.schedule(process13, keepAlive, immediate);\n  };\n  return acc;\n}, {});\nvar cancelSync = stepsOrder.reduce((acc, key7) => {\n  acc[key7] = steps[key7].cancel;\n  return acc;\n}, {});\nvar flushSync = stepsOrder.reduce((acc, key7) => {\n  acc[key7] = () => steps[key7].process(frame);\n  return acc;\n}, {});\nvar processStep = (stepId) => steps[stepId].process(frame);\nvar processFrame = (timestamp) => {\n  runNextFrame = false;\n  frame.delta = useDefaultElapsed ? defaultTimestep : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n  frame.timestamp = timestamp;\n  isProcessing = true;\n  stepsOrder.forEach(processStep);\n  isProcessing = false;\n  if (runNextFrame) {\n    useDefaultElapsed = false;\n    onNextFrame(processFrame);\n  }\n};\nvar startLoop = () => {\n  runNextFrame = true;\n  useDefaultElapsed = true;\n  if (!isProcessing)\n    onNextFrame(processFrame);\n};\nvar getFrameData = () => frame;\nvar es_default = sync2;\n\n// ../../../node_modules/popmotion/dist/es/animations/utils/elapsed.mjs\nfunction loopElapsed(elapsed, duration, delay2 = 0) {\n  return elapsed - duration - delay2;\n}\nfunction reverseElapsed(elapsed, duration, delay2 = 0, isForwardPlayback = true) {\n  return isForwardPlayback ? loopElapsed(duration + -elapsed, duration, delay2) : duration - (elapsed - duration) + delay2;\n}\nfunction hasRepeatDelayElapsed(elapsed, duration, delay2, isForwardPlayback) {\n  return isForwardPlayback ? elapsed >= duration + delay2 : elapsed <= -delay2;\n}\n\n// ../../../node_modules/popmotion/dist/es/animations/index.mjs\nvar framesync = (update) => {\n  const passTimestamp = ({ delta }) => update(delta);\n  return {\n    start: () => es_default.update(passTimestamp, true),\n    stop: () => cancelSync.update(passTimestamp)\n  };\n};\nfunction animate3(_a) {\n  var _b, _c;\n  var { from, autoplay = true, driver = framesync, elapsed = 0, repeat: repeatMax = 0, repeatType = \"loop\", repeatDelay = 0, onPlay, onStop, onComplete, onRepeat, onUpdate } = _a, options = __rest(_a, [\"from\", \"autoplay\", \"driver\", \"elapsed\", \"repeat\", \"repeatType\", \"repeatDelay\", \"onPlay\", \"onStop\", \"onComplete\", \"onRepeat\", \"onUpdate\"]);\n  let { to } = options;\n  let driverControls;\n  let repeatCount = 0;\n  let computedDuration = options.duration;\n  let latest;\n  let isComplete = false;\n  let isForwardPlayback = true;\n  let interpolateFromNumber;\n  const animator = detectAnimationFromOptions(options);\n  if ((_c = (_b = animator).needsInterpolation) === null || _c === void 0 ? void 0 : _c.call(_b, from, to)) {\n    interpolateFromNumber = interpolate([0, 100], [from, to], {\n      clamp: false\n    });\n    from = 0;\n    to = 100;\n  }\n  const animation = animator(Object.assign(Object.assign({}, options), { from, to }));\n  function repeat() {\n    repeatCount++;\n    if (repeatType === \"reverse\") {\n      isForwardPlayback = repeatCount % 2 === 0;\n      elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);\n    } else {\n      elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);\n      if (repeatType === \"mirror\")\n        animation.flipTarget();\n    }\n    isComplete = false;\n    onRepeat && onRepeat();\n  }\n  function complete() {\n    driverControls.stop();\n    onComplete && onComplete();\n  }\n  function update(delta) {\n    if (!isForwardPlayback)\n      delta = -delta;\n    elapsed += delta;\n    if (!isComplete) {\n      const state = animation.next(Math.max(0, elapsed));\n      latest = state.value;\n      if (interpolateFromNumber)\n        latest = interpolateFromNumber(latest);\n      isComplete = isForwardPlayback ? state.done : elapsed <= 0;\n    }\n    onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(latest);\n    if (isComplete) {\n      if (repeatCount === 0)\n        computedDuration !== null && computedDuration !== void 0 ? computedDuration : computedDuration = elapsed;\n      if (repeatCount < repeatMax) {\n        hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();\n      } else {\n        complete();\n      }\n    }\n  }\n  function play() {\n    onPlay === null || onPlay === void 0 ? void 0 : onPlay();\n    driverControls = driver(update);\n    driverControls.start();\n  }\n  autoplay && play();\n  return {\n    stop: () => {\n      onStop === null || onStop === void 0 ? void 0 : onStop();\n      driverControls.stop();\n    }\n  };\n}\n\n// ../../../node_modules/popmotion/dist/es/utils/velocity-per-second.mjs\nfunction velocityPerSecond(velocity, frameDuration) {\n  return frameDuration ? velocity * (1e3 / frameDuration) : 0;\n}\n\n// ../../../node_modules/popmotion/dist/es/animations/inertia.mjs\nfunction inertia({ from = 0, velocity = 0, min, max, power = 0.8, timeConstant: timeConstant2 = 750, bounceStiffness = 500, bounceDamping = 10, restDelta = 1, modifyTarget, driver, onUpdate, onComplete, onStop }) {\n  let currentAnimation;\n  function isOutOfBounds(v) {\n    return min !== void 0 && v < min || max !== void 0 && v > max;\n  }\n  function boundaryNearest(v) {\n    if (min === void 0)\n      return max;\n    if (max === void 0)\n      return min;\n    return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n  }\n  function startAnimation2(options) {\n    currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n    currentAnimation = animate3(Object.assign(Object.assign({}, options), {\n      driver,\n      onUpdate: (v) => {\n        var _a;\n        onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);\n        (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);\n      },\n      onComplete,\n      onStop\n    }));\n  }\n  function startSpring(options) {\n    startAnimation2(Object.assign({ type: \"spring\", stiffness: bounceStiffness, damping: bounceDamping, restDelta }, options));\n  }\n  if (isOutOfBounds(from)) {\n    startSpring({ from, velocity, to: boundaryNearest(from) });\n  } else {\n    let target = power * velocity + from;\n    if (typeof modifyTarget !== \"undefined\")\n      target = modifyTarget(target);\n    const boundary = boundaryNearest(target);\n    const heading = boundary === min ? -1 : 1;\n    let prev;\n    let current;\n    const checkBoundary = (v) => {\n      prev = current;\n      current = v;\n      velocity = velocityPerSecond(v - prev, getFrameData().delta);\n      if (heading === 1 && v > boundary || heading === -1 && v < boundary) {\n        startSpring({ from: v, to: boundary, velocity });\n      }\n    };\n    startAnimation2({\n      type: \"decay\",\n      from,\n      velocity,\n      timeConstant: timeConstant2,\n      power,\n      restDelta,\n      modifyTarget,\n      onUpdate: isOutOfBounds(target) ? checkBoundary : void 0\n    });\n  }\n  return {\n    stop: () => currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop()\n  };\n}\n\n// ../../../node_modules/popmotion/dist/es/utils/is-point.mjs\nvar isPoint = (point) => point.hasOwnProperty(\"x\") && point.hasOwnProperty(\"y\");\n\n// ../../../node_modules/popmotion/dist/es/utils/is-point-3d.mjs\nvar isPoint3D = (point) => isPoint(point) && point.hasOwnProperty(\"z\");\n\n// ../../../node_modules/popmotion/dist/es/utils/distance.mjs\nvar distance1D = (a, b) => Math.abs(a - b);\nfunction distance2(a, b) {\n  if (isNum(a) && isNum(b)) {\n    return distance1D(a, b);\n  } else if (isPoint(a) && isPoint(b)) {\n    const xDelta = distance1D(a.x, b.x);\n    const yDelta = distance1D(a.y, b.y);\n    const zDelta = isPoint3D(a) && isPoint3D(b) ? distance1D(a.z, b.z) : 0;\n    return Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2) + Math.pow(zDelta, 2));\n  }\n}\n\n// ../../library/src/render/style/shadow.tsx\nimport React33 from \"react\";\n\n// ../../library/src/render/presentation/CustomProperties.tsx\nimport React32, { PureComponent } from \"react\";\nvar VariableRegex = /var\\(([^),]+)/;\nvar CustomPropertiesContext = /* @__PURE__ */ React32.createContext(() => null);\nvar CustomProperties = class extends PureComponent {\n  constructor() {\n    super(...arguments);\n    this.lookup = (variable) => {\n      const match = VariableRegex.exec(variable);\n      const customProperty = (match == null ? void 0 : match[1]) ? match[1].trim() : \"\";\n      return this.props.customProperties[customProperty] || null;\n    };\n  }\n  render() {\n    const { children, customProperties } = this.props;\n    return /* @__PURE__ */ React32.createElement(CustomPropertiesContext.Provider, { value: this.lookup }, /* @__PURE__ */ React32.createElement(\"div\", { style: customProperties }, children));\n  }\n};\n\n// ../../library/src/render/types/Shadow.ts\nvar shadowKeys = [\"color\", \"x\", \"y\", \"blur\"];\nvar Shadow = {\n  is: (shadow) => {\n    return shadow && shadowKeys.every((key7) => key7 in shadow);\n  }\n};\nvar boxShadowKeys = [\"x\", \"y\", \"color\", \"inset\", \"blur\", \"spread\"];\nvar BoxShadow = {\n  is: (shadow) => {\n    return shadow && boxShadowKeys.every((key7) => key7 in shadow);\n  },\n  toCSS: (shadow) => {\n    const inset = shadow.inset ? \"inset \" : \"\";\n    return `${inset}${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.spread}px ${shadow.color}`;\n  }\n};\n\n// ../../library/src/render/style/shadow.tsx\nfunction shadowsAsFilter(shadows) {\n  const filters = [];\n  if (shadows && shadows.length) {\n    const dropShadows = shadows.map((shadowItem) => {\n      return `drop-shadow(${shadowItem.x}px ${shadowItem.y}px ${shadowItem.blur}px ${shadowItem.color})`;\n    });\n    filters.push(...dropShadows);\n  }\n  return filters;\n}\nfunction collectTextShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0)\n    return;\n  const textShadow = props.shadows.map((shadow) => {\n    return `${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.color}`;\n  }).join(\", \");\n  if (!textShadow)\n    return;\n  style.textShadow = textShadow;\n}\nfunction collectBoxShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0)\n    return;\n  const boxShadow = props.shadows.map((shadowItem) => BoxShadow.toCSS(shadowItem)).join(\", \");\n  if (!boxShadow)\n    return;\n  style.boxShadow = boxShadow;\n}\nfunction shadowForShape(boxShadows, rect, shapeId, fillAlpha, strokeAlpha, strokeWidth, strokeClipId, svgStrokeAttributes) {\n  const definition = [];\n  let outsetElement = null;\n  let insetElement = null;\n  const needsStrokeClip = false;\n  const shadows = [];\n  const insetShadows = [];\n  const boxShadowsCount = boxShadows.length;\n  const svgShadowClass = \"svg-shadow\";\n  const svgShadowProps = RenderTarget.current() === \"CANVAS\" /* canvas */ ? { className: svgShadowClass } : {};\n  for (const shadow of boxShadows) {\n    shadow.inset ? insetShadows.push(shadow) : shadows.push(shadow);\n  }\n  if (shadows.length > 0) {\n    shadows.reverse();\n    const outsideShadowId = shapeId.add(\"_shadow_out\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowRects = [normalizedFrame];\n    for (const shadow of shadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowRects.push(shadowFrame);\n    }\n    let maxBlur = 0;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = shadows.length; i < il; i++) {\n      const shadow = shadows[i];\n      if (!shadow)\n        continue;\n      const shadowElements = outerShadowElements(shapeId, shadow, i);\n      maxBlur = Math.max(maxBlur, shadow.blur);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    let expandStrokeWidth = strokeWidth;\n    if (!isFiniteNumber(expandStrokeWidth))\n      expandStrokeWidth = 0;\n    let miter = svgStrokeAttributes.strokeMiterlimit;\n    if (!isFiniteNumber(miter))\n      miter = 4;\n    let shadowRect = Rect.merge(...shadowRects);\n    shadowRect = Rect.inflate(shadowRect, (expandStrokeWidth * miter / 2 + maxBlur) * 1.1);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    definition.push(\n      /* @__PURE__ */ React33.createElement(\n        \"filter\",\n        {\n          key: outsideShadowId.id,\n          id: outsideShadowId.id,\n          x: `${filterX.toFixed(1)}%`,\n          y: `${filterY.toFixed(1)}%`,\n          width: `${filterWidth.toFixed(1)}%`,\n          height: `${filterHeight.toFixed(1)}%`,\n          filterUnits: \"objectBoundingBox\",\n          ...svgShadowProps\n        },\n        filterElements,\n        shadows.length > 1 ? /* @__PURE__ */ React33.createElement(\"feMerge\", null, mergeElements) : null\n      )\n    );\n    outsetElement = /* @__PURE__ */ React33.createElement(\"g\", { filter: outsideShadowId.urlLink, ...svgShadowProps }, /* @__PURE__ */ React33.createElement(\n      \"use\",\n      {\n        ...svgStrokeAttributes,\n        fill: \"black\",\n        fillOpacity: fillAlpha <= 0 ? 0 : 1,\n        stroke: \"black\",\n        strokeOpacity: strokeAlpha <= 0 ? 0 : 1,\n        strokeWidth: strokeAlpha > 0 ? strokeWidth : 0,\n        xlinkHref: shapeId.link,\n        clipPath: strokeClipId.urlLink\n      }\n    ));\n  }\n  if (insetShadows.length) {\n    insetShadows.reverse();\n    const insideShadowId = shapeId.add(\"_shadow_inside\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowFrames = [normalizedFrame];\n    for (const shadow of insetShadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowFrames.push(shadowFrame);\n    }\n    const shadowRect = Rect.merge(...shadowFrames);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = insetShadows.length; i < il; i++) {\n      const shadow = insetShadows[i];\n      if (!shadow)\n        continue;\n      const shadowElements = innerShadowElements(shapeId, shadow, i);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    definition.push(\n      /* @__PURE__ */ React33.createElement(\n        \"filter\",\n        {\n          key: insideShadowId.id,\n          id: insideShadowId.id,\n          x: `${filterX.toFixed(1)}%`,\n          y: `${filterY.toFixed(1)}%`,\n          width: `${filterWidth.toFixed(1)}%`,\n          height: `${filterHeight.toFixed(1)}%`,\n          filterUnits: \"objectBoundingBox\",\n          ...svgShadowProps\n        },\n        filterElements,\n        insetShadows.length > 1 ? /* @__PURE__ */ React33.createElement(\"feMerge\", null, mergeElements) : null\n      )\n    );\n    let clipPath;\n    if (needsStrokeClip) {\n      clipPath = strokeClipId.urlLink;\n    }\n    insetElement = /* @__PURE__ */ React33.createElement(\n      \"use\",\n      {\n        fill: \"black\",\n        fillOpacity: \"1\",\n        filter: insideShadowId.urlLink,\n        xlinkHref: shapeId.link,\n        clipPath,\n        ...svgShadowProps\n      }\n    );\n  }\n  return { definition, outsetElement, insetElement, needsStrokeClip };\n}\nfunction outerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_outer_shadow\" + index);\n  const offsetResultId = shadowKey.add(\"offset\").id;\n  const blurResultId = shadowKey.add(\"blur\").id;\n  const matrixResultId = shadowKey.add(\"matrix\").id;\n  const filterElements = /* @__PURE__ */ React33.createElement(\n    OuterShadowFilterElements,\n    {\n      key: shadowKey.id + \"-filters\",\n      shadow,\n      blurId: blurResultId,\n      offsetId: offsetResultId,\n      matrixId: matrixResultId\n    }\n  );\n  const mergeElement = /* @__PURE__ */ React33.createElement(\"feMergeNode\", { key: shadowKey.id + \"-merge\", in: matrixResultId });\n  return { filterElements, mergeElement };\n}\nvar OuterShadowFilterElements = (props) => {\n  const lookup = React33.useContext(CustomPropertiesContext);\n  const { shadow, blurId, offsetId, matrixId } = props;\n  let color2 = shadow.color;\n  const result = lookup(color2);\n  if (result) {\n    color2 = result;\n  }\n  const rgb = ConvertColor.toRgb(color2);\n  const r = roundedNumberString(rgb.r / 255, 3);\n  const g = roundedNumberString(rgb.g / 255, 3);\n  const b = roundedNumberString(rgb.b / 255, 3);\n  const matrixValues = `0 0 0 0 ${r}   0 0 0 0 ${g}   0 0 0 0 ${b}  0 0 0 ${rgb.a} 0`;\n  return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: \"SourceAlpha\", result: offsetId }), /* @__PURE__ */ React33.createElement(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: offsetId, result: blurId }), /* @__PURE__ */ React33.createElement(\n    \"feColorMatrix\",\n    {\n      colorInterpolationFilters: \"sRGB\",\n      values: matrixValues,\n      type: \"matrix\",\n      in: blurId,\n      result: matrixId\n    }\n  ));\n};\nfunction innerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_inside_shadow\" + index);\n  const blurId = shadowKey.add(\"blur\").id;\n  const offsetId = shadowKey.add(\"offset\").id;\n  const compositeId = shadowKey.add(\"composite\").id;\n  const matrixId = shadowKey.add(\"matrix\").id;\n  const filterElements = /* @__PURE__ */ React33.createElement(\n    InnerShadowFilterElements,\n    {\n      key: shadowKey.id + \"-filters\",\n      shadow,\n      blurId,\n      offsetId,\n      compositeId,\n      matrixId\n    }\n  );\n  const mergeElement = /* @__PURE__ */ React33.createElement(\"feMergeNode\", { key: shadowKey.id + \"-merge\", in: matrixId });\n  return { filterElements, mergeElement };\n}\nvar InnerShadowFilterElements = (props) => {\n  const lookup = React33.useContext(CustomPropertiesContext);\n  const { shadow, blurId, offsetId, compositeId, matrixId } = props;\n  let color2 = shadow.color;\n  const result = lookup(color2);\n  if (result) {\n    color2 = result;\n  }\n  const rgb = ConvertColor.toRgb(color2);\n  const r = rgb.r / 255;\n  const g = rgb.g / 255;\n  const b = rgb.b / 255;\n  const matrixValues = `0 0 0 0 ${r}   0 0 0 0 ${g}   0 0 0 0 ${b}  0 0 0 ${rgb.a} 0`;\n  return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: \"SourceAlpha\", result: blurId }), /* @__PURE__ */ React33.createElement(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: blurId, result: offsetId }), /* @__PURE__ */ React33.createElement(\"feComposite\", { in: offsetId, in2: \"SourceAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\", result: compositeId }), /* @__PURE__ */ React33.createElement(\n    \"feColorMatrix\",\n    {\n      colorInterpolationFilters: \"sRGB\",\n      values: matrixValues,\n      type: \"matrix\",\n      in: compositeId,\n      result: matrixId\n    }\n  ));\n};\nfunction calcMaxRealisticShadowBlur(distance3, focus) {\n  return interpolate([0, 0.5, 1], [distance3 * 5, distance3, 0])(focus);\n}\nvar maxSpread = 5;\nfunction calcRealisticShadowSpread(diffusion) {\n  return mix2(-maxSpread, 0, diffusion);\n}\nfunction localShadowFrame(shadow, frame2, isSVG2 = false) {\n  if (!isSVG2 && shadow[\"inset\"])\n    return null;\n  let growth = shadow.blur;\n  let minX;\n  let maxX;\n  let minY;\n  let maxY;\n  if (isSVG2) {\n    minX = -Math.abs(shadow.x) - growth;\n    maxX = Math.abs(shadow.x) + frame2.width + growth;\n    minY = -Math.abs(shadow.y) - growth;\n    maxY = Math.abs(shadow.y) + frame2.height + growth;\n  } else if (BoxShadow.is(shadow) && shadow.type === \"realistic\") {\n    growth = calcMaxRealisticShadowBlur(distance2(shadow.x, shadow.y), shadow.focus) + calcRealisticShadowSpread(shadow.diffusion);\n    if (shadow.x >= 0) {\n      minX = 0 - growth;\n      maxX = shadow.x + frame2.width + growth;\n    } else {\n      minX = shadow.x - growth;\n      maxX = frame2.width + growth;\n    }\n    if (shadow.y >= 0) {\n      minY = 0 - growth;\n      maxY = shadow.y + frame2.height + growth;\n    } else {\n      minY = shadow.y - growth;\n      maxY = frame2.height + growth;\n    }\n  } else {\n    growth += shadow.spread;\n    minX = shadow.x - growth;\n    maxX = shadow.x + frame2.width + growth;\n    minY = shadow.y - growth;\n    maxY = shadow.y + frame2.height + growth;\n  }\n  if (maxX <= minX || maxY <= minY)\n    return null;\n  return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n}\n\n// ../../library/src/render/utils/filtersForNode.ts\nfunction collectLayerFilters(props, style) {\n  const filters = [];\n  if (isFiniteNumber(props.brightness)) {\n    filters.push(`brightness(${props.brightness / 100})`);\n  }\n  if (isFiniteNumber(props.contrast)) {\n    filters.push(`contrast(${props.contrast / 100})`);\n  }\n  if (isFiniteNumber(props.grayscale)) {\n    filters.push(`grayscale(${props.grayscale / 100})`);\n  }\n  if (isFiniteNumber(props.hueRotate)) {\n    filters.push(`hue-rotate(${props.hueRotate}deg)`);\n  }\n  if (isFiniteNumber(props.invert)) {\n    filters.push(`invert(${props.invert / 100})`);\n  }\n  if (isFiniteNumber(props.saturate)) {\n    filters.push(`saturate(${props.saturate / 100})`);\n  }\n  if (isFiniteNumber(props.sepia)) {\n    filters.push(`sepia(${props.sepia / 100})`);\n  }\n  if (isFiniteNumber(props.blur)) {\n    filters.push(`blur(${props.blur}px)`);\n  }\n  if (props.dropShadows) {\n    filters.push(...shadowsAsFilter(props.dropShadows));\n  }\n  if (filters.length === 0)\n    return;\n  style.filter = style.WebkitFilter = filters.join(\" \");\n}\nfunction collectBackgroundFilters(props, style) {\n  if (isFiniteNumber(props.backgroundBlur)) {\n    style.backdropFilter = style.WebkitBackdropFilter = `blur(${props.backgroundBlur}px)`;\n  }\n}\nfunction collectFiltersFromProps(props, style) {\n  collectBackgroundFilters(props, style);\n  collectLayerFilters(props, style);\n}\n\n// ../../library/src/render/style/collectVisualStyleFromProps.ts\nfunction collectVisualStyleFromProps(props, style, isTextNode = false) {\n  collectBackgroundFromProps(props, style);\n  collectRadiusFromProps(props, style);\n  collectFiltersFromProps(props, style);\n  collectBlendingFromProps(props, style);\n  collectOverflowFromProps(props, style);\n  collectOpacityFromProps(props, style);\n  collectTextColorFromProps(props, style);\n  if (isTextNode) {\n    collectTextShadowsForProps(props, style);\n  } else {\n    collectBoxShadowsForProps(props, style);\n  }\n}\n\n// ../../library/src/render/traits/Transform.ts\nvar { getNumber } = Animatable;\nvar transformDefaults = {\n  z: 0,\n  rotation: 0,\n  rotationX: 0,\n  rotationY: 0,\n  rotationZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0\n};\nfunction getRotation(rotation, rotate) {\n  if (typeof rotate === \"string\") {\n    rotate = parseFloat(rotate);\n  }\n  return isFiniteNumber(rotate) ? rotate : getNumber(rotation);\n}\nfunction collectTransformFromProps(props, rect, style) {\n  const motionStyle = style;\n  const x = typeof rect.x === \"number\" ? `${rect.x}px` : rect.x;\n  const y = typeof rect.y === \"number\" ? `${rect.y}px` : rect.y;\n  const z = getNumber(props.z);\n  const scaleZ = getNumber(props.scaleZ);\n  const originZ = getNumber(props.originZ);\n  const rotationZ = getRotation(props.rotationZ, resolveMotionValue(motionStyle.rotateZ));\n  const rotationX = getRotation(props.rotationX, resolveMotionValue(motionStyle.rotateX));\n  const rotationY = getRotation(props.rotationY, resolveMotionValue(motionStyle.rotateY));\n  const scale2 = getNumber(props.scale);\n  const scaleX = getNumber(props.scaleX);\n  const scaleY = getNumber(props.scaleY);\n  const skew = getNumber(props.skew);\n  const skewX = getNumber(props.skewX);\n  const skewY = getNumber(props.skewY);\n  const rotation = getRotation(props.rotation, resolveMotionValue(motionStyle.rotate));\n  const force3d = RenderEnvironment.target === \"EXPORT\" /* export */;\n  if (force3d || z !== 0 || scaleZ !== 1 || originZ !== 0 || rotationZ !== 0 || rotationX !== 0 || rotationY !== 0) {\n    style.transform = `\n            ${`translate3d(${x}, ${y}, ${z}px)`}\n            scale3d(${scaleX * scale2}, ${scaleY * scale2}, ${scaleZ})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            translateZ(${originZ}px)\n            rotateX(${rotationX}deg)\n            rotateY(${rotationY}deg)\n            rotateZ(${(rotation + rotationZ).toFixed(4)}deg)\n            translateZ(${-originZ}px)`;\n  } else {\n    style.transform = `\n            ${`translate(${x}, ${y})`}\n            scale(${scaleX * scale2}, ${scaleY * scale2})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            rotate(${rotation.toFixed(4)}deg)`;\n  }\n  const transformOrigin = `${getNumber(props.originX) * 100}% ${getNumber(props.originY) * 100}%`;\n  style.transformOrigin = transformOrigin;\n  style.WebkitTransformOrigin = transformOrigin;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nfunction cssBackgroundSize(size2) {\n  switch (size2) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"100% 100%\";\n    default:\n      return \"cover\";\n  }\n}\nfunction collectBackgroundImageFromProps(props, style) {\n  const image = backgroundImageFromProps(props);\n  if (image) {\n    style.backgroundImage = `url(\"${image.src}\")`;\n    style.backgroundSize = cssBackgroundSize(image.fit);\n    style.backgroundRepeat = \"no-repeat\";\n    style.backgroundPosition = \"center\";\n  }\n}\nfunction toPixelString(value) {\n  return isFiniteNumber(value) ? `${value}px` : value;\n}\nfunction applyLayoutProp(style, props, key7) {\n  if (props[key7] !== void 0) {\n    const value = Animatable.get(props[key7], void 0);\n    style[key7] = toPixelString(value);\n  }\n}\nvar DeprecatedFrame = /* @__PURE__ */ (() => {\n  const _DeprecatedFrameInner = class extends Layer {\n    constructor() {\n      super(...arguments);\n      this.element = null;\n      this.imageDidChange = false;\n      this.state = {\n        size: null\n      };\n      this.updateStyle = () => {\n        if (!this.element) {\n          return;\n        }\n        Object.assign(this.element.style, this.getStyle());\n      };\n      this.setElement = (element) => {\n        this.element = element;\n        this.setLayerElement(element);\n      };\n      this.onPropsChange = (props) => {\n        const rect = _DeprecatedFrameInner.rect(Animatable.objectToValues(props.value));\n        if (this.state.size && isAnimatable(this.state.size.width) && isAnimatable(props.value.width)) {\n          this.state.size.width.set(rect.width);\n        }\n        if (this.state.size && isAnimatable(this.state.size.height) && isAnimatable(props.value.height)) {\n          this.state.size.height.set(rect.height);\n        }\n        this.updateStyle();\n      };\n      this.onSizeChange = () => {\n        this.updateStyle();\n      };\n    }\n    static rect(props) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      const parentSizeInfo = props.parentSize ? { sizing: props.parentSize, positioning: props.parentSize } : null;\n      return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, true);\n    }\n    get rect() {\n      return _DeprecatedFrameInner.rect(this.props);\n    }\n    static getDerivedStateFromProps(nextProps, prevState) {\n      const size2 = _DeprecatedFrameInner.updatedSize(nextProps, prevState);\n      const { target } = RenderEnvironment;\n      const nextBackgroundImageSrc = nextProps.background && BackgroundImage.isImageObject(nextProps.background) ? nextProps.background.src : null;\n      if (nextBackgroundImageSrc) {\n        return {\n          size: size2\n        };\n      }\n      if (prevState.size) {\n        if (target === \"PREVIEW\" /* preview */) {\n          return null;\n        }\n        if (prevState.size.width === size2.width && prevState.size.height === size2.height) {\n          return null;\n        }\n      }\n      return {\n        size: size2\n      };\n    }\n    static updatedSize(props, state) {\n      const rect = _DeprecatedFrameInner.rect(props);\n      let size2 = state.size;\n      const newSize = { width: rect.width, height: rect.height };\n      const { target } = RenderEnvironment;\n      if (!size2) {\n        if (target === \"PREVIEW\" /* preview */) {\n          size2 = ObservableObject(newSize, true);\n        } else {\n          size2 = newSize;\n        }\n      } else {\n        if (isAnimatable(size2.width) && isAnimatable(size2.height)) {\n          size2.width.set(newSize.width);\n          size2.height.set(newSize.height);\n        } else {\n          size2 = newSize;\n        }\n      }\n      return size2;\n    }\n    getStyle() {\n      const rect = this.rect;\n      const style = {\n        display: \"block\",\n        position: \"absolute\",\n        width: `${rect.width}px`,\n        height: `${rect.height}px`,\n        pointerEvents: void 0,\n        userSelect: \"none\"\n      };\n      let left = Animatable.get(this.props.left, void 0);\n      let top = Animatable.get(this.props.top, void 0);\n      Object.assign(style, this.props._initialStyle);\n      const hasParentSize = this.context.parentSize !== 1 /* Disabled */;\n      const perspective = Animatable.get(this.props.perspective, void 0);\n      style.perspective = perspective;\n      style.WebkitPerspective = perspective;\n      let backfaceVisibility = void 0;\n      const backfaceVisible = Animatable.get(this.props.backfaceVisible, void 0);\n      if (backfaceVisible === true) {\n        backfaceVisibility = \"visible\";\n      } else if (backfaceVisible === false) {\n        backfaceVisibility = \"hidden\";\n      }\n      style.backfaceVisibility = backfaceVisibility;\n      style.WebkitBackfaceVisibility = backfaceVisibility;\n      const preserve3d = Animatable.get(this.props.preserve3d, void 0);\n      if (preserve3d === true) {\n        style.transformStyle = \"preserve-3d\";\n      } else if (preserve3d === false) {\n        style.transformStyle = \"flat\";\n      }\n      if (!hasParentSize) {\n        applyLayoutProp(style, this.props, \"right\");\n        applyLayoutProp(style, this.props, \"bottom\");\n        const width = Animatable.get(this.props.width, void 0);\n        const stringWidth = toPixelString(width);\n        const height = Animatable.get(this.props.height, void 0);\n        const stringHeight = toPixelString(height);\n        if (typeof left === \"string\" && left.endsWith(\"%\") && this.props.right === null) {\n          left = `calc(${left} - calc(${stringWidth}} / 2))`;\n          style.width = stringWidth;\n        }\n        if (typeof top === \"string\" && top.endsWith(\"%\") && this.props.bottom === null) {\n          top = `calc(${top} - calc(${stringHeight} / 2))`;\n          style.height = stringHeight;\n        }\n        if (top !== void 0 && style.bottom !== void 0) {\n          style.height = void 0;\n          top = toPixelString(Animatable.get(this.props.top, void 0));\n        } else {\n          style.height = stringHeight;\n        }\n        if (left !== void 0 && style.right !== void 0) {\n          style.width = void 0;\n          left = toPixelString(Animatable.get(this.props.left, void 0));\n        } else {\n          style.width = stringWidth;\n        }\n      }\n      const transformRect = { ...rect };\n      if (typeof left !== \"undefined\") {\n        transformRect.x = left;\n      }\n      if (typeof top !== \"undefined\") {\n        transformRect.y = top;\n      }\n      collectTransformFromProps(this.props, transformRect, style);\n      collectVisualStyleFromProps(this.props, style);\n      collectBackgroundImageFromProps(this.props, style);\n      Layer.applyWillChange(this.props, style, false);\n      if (this.props.style) {\n        Object.assign(style, this.props.style);\n      }\n      return style;\n    }\n    componentDidMount() {\n      const { target } = RenderEnvironment;\n      if (target === \"PREVIEW\" /* preview */) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentDidUpdate() {\n      const { target } = RenderEnvironment;\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      if (target === \"PREVIEW\" /* preview */) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentWillUnmount() {\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.propsObserverCancel = void 0;\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      this.sizeObserverCancel = void 0;\n    }\n    render() {\n      if (import_process4.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      const { visible, id, className } = this.props;\n      if (!visible) {\n        return null;\n      }\n      const style = this.getStyle();\n      const rect = this.rect;\n      const parentSize = { width: rect.width, height: rect.height };\n      return /* @__PURE__ */ React34.createElement(\"div\", { id, style, ref: this.setElement, className }, /* @__PURE__ */ React34.createElement(ProvideParentSize, { parentSize }, this.layoutChildren()), /* @__PURE__ */ React34.createElement(Border, { ...this.props }));\n    }\n    layoutChildren() {\n      let _forwardedOverrides = this.props._forwardedOverrides;\n      const extractions = this.props._overrideForwardingDescription;\n      if (extractions) {\n        let added = false;\n        _forwardedOverrides = {};\n        for (const [key7, value] of Object.entries(extractions)) {\n          added = true;\n          _forwardedOverrides[key7] = this.props[value];\n        }\n        if (!added) {\n          _forwardedOverrides = void 0;\n        }\n      }\n      let children = React34.Children.map(this.props.children, (child) => {\n        if (isConstraintSupportingChild(child)) {\n          return React34.cloneElement(child, {\n            parentSize: this.state.size,\n            _forwardedOverrides\n          });\n        } else if (_forwardedOverrides && child) {\n          return React34.cloneElement(child, { _forwardedOverrides });\n        } else {\n          return child;\n        }\n      });\n      if (children && children.length === 1 && typeof children[0] === \"string\") {\n        children = [/* @__PURE__ */ React34.createElement(Center, { key: \"0\" }, children)];\n      }\n      return children;\n    }\n  };\n  let DeprecatedFrameInner = _DeprecatedFrameInner;\n  DeprecatedFrameInner.supportsConstraints = true;\n  DeprecatedFrameInner.defaultFrameSpecificProps = {\n    ...constraintDefaults,\n    ...transformDefaults,\n    opacity: 1,\n    background: Color(\"rgba(0, 170, 255, 0.3)\"),\n    visible: true,\n    borderWidth: 0,\n    borderColor: \"#222\",\n    borderStyle: \"solid\"\n  };\n  DeprecatedFrameInner.defaultProps = {\n    ...Layer.defaultProps,\n    ..._DeprecatedFrameInner.defaultFrameSpecificProps\n  };\n  DeprecatedFrameInner.contextType = ConstraintsContext;\n  return DeprecatedFrameInner;\n})();\nfunction Center(props) {\n  const style = Object.assign(\n    {},\n    {\n      height: \"100%\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      fontFamily: \"Helvetica\"\n    },\n    props.style || {}\n  );\n  return /* @__PURE__ */ React34.createElement(\"div\", { style }, props.children);\n}\n\n// ../../library/src/render/presentation/Frame/isDeprecatedFrameProps.ts\nvar frameWithMotionPropsFields = [\n  \"_border\",\n  \"_constraints\",\n  \"animate\",\n  \"initial\",\n  \"variants\",\n  \"transition\",\n  \"inherit\",\n  \"center\",\n  \"initial\",\n  \"transformTemplate\",\n  \"transformValues\",\n  \"animate\",\n  \"variants\",\n  \"transition\",\n  \"onUpdate\",\n  \"onAnimationComplete\",\n  \"onPanSessionStart\",\n  \"onTapCancel\",\n  \"whileTap\",\n  \"whileHover\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"drag\",\n  \"dragDirectionLock\",\n  \"dragPropagation\",\n  \"dragConstraints\",\n  \"dragElastic\",\n  \"dragMomentum\",\n  \"dragTransition\",\n  \"onDragStart\",\n  \"onDragEnd\",\n  \"onDrag\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"x\",\n  \"y\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"position\",\n  \"border\",\n  \"borderRadius\",\n  \"shadow\",\n  \"size\"\n];\nvar deprecatedFramePropsFields = [\n  \"autoSize\",\n  \"aspectRatio\",\n  \"borderWidth\",\n  \"borderStyle\",\n  \"borderColor\",\n  \"centerX\",\n  \"centerY\"\n];\nfunction isDeprecatedFrameProps(props) {\n  let field;\n  for (const propKey in props) {\n    if (isAnimatable(props[propKey]))\n      return true;\n  }\n  for (field of frameWithMotionPropsFields) {\n    if (props.hasOwnProperty(field))\n      return false;\n  }\n  for (field of deprecatedFramePropsFields) {\n    if (props.hasOwnProperty(field))\n      return true;\n  }\n  return false;\n}\n\n// ../../library/src/render/presentation/Frame/index.tsx\nvar DeprecatedFrameWithEvents = /* @__PURE__ */ WithEvents(DeprecatedFrame);\nvar Frame = /* @__PURE__ */ (() => {\n  const FrameInner = forwardRef2(function FrameInner2(props, ref) {\n    const parentSize = useParentSize();\n    if (isDeprecatedFrameProps(props)) {\n      const currentParentSize = props.parentSize || deprecatedParentSize(parentSize);\n      return /* @__PURE__ */ React35.createElement(DeprecatedFrameWithEvents, { ...props, parentSize: currentParentSize });\n    }\n    return /* @__PURE__ */ React35.createElement(FrameWithMotion, { ...props, ref });\n  });\n  FrameInner[\"displayName\"] = \"Frame\";\n  return FrameInner;\n})();\n\n// ../../library/src/components/Draggable.ts\nvar Draggable = /* @__PURE__ */ WithDragging(DeprecatedFrameWithEvents);\n\n// ../../library/src/components/Navigation.tsx\nimport React43, { Component as Component6 } from \"react\";\n\n// ../../library/src/components/AnimateLayout/SharedLayoutRoot.tsx\nimport React36, { Component as Component4 } from \"react\";\nvar TREE_ROOT_ID = \"__LAYOUT_TREE_ROOT\";\nvar SharedLayoutContext = /* @__PURE__ */ React36.createContext({\n  schedulePromoteTree: () => {\n  },\n  scheduleProjectionDidUpdate: () => {\n  },\n  initLead: () => {\n  }\n});\nvar SharedLayoutRoot = class extends Component4 {\n  constructor() {\n    super(...arguments);\n    this.shouldAnimate = false;\n    this.scheduledPromotion = false;\n    this.scheduledDidUpdate = false;\n    this.scheduleProjectionDidUpdate = () => {\n      this.scheduledDidUpdate = true;\n    };\n    this.schedulePromoteTree = (tree, transition, shouldAnimate) => {\n      this.follow = this.lead;\n      this.shouldAnimate = shouldAnimate;\n      this.lead = tree;\n      this.transition = transition;\n      this.scheduledPromotion = true;\n    };\n    this.initLead = (tree, shouldAnimate) => {\n      this.follow = this.lead;\n      this.lead = tree;\n      if (this.follow && shouldAnimate) {\n        this.follow.layoutMaybeMutated = true;\n      }\n    };\n    this.sharedLayoutContext = {\n      schedulePromoteTree: this.schedulePromoteTree,\n      scheduleProjectionDidUpdate: this.scheduleProjectionDidUpdate,\n      initLead: this.initLead\n    };\n  }\n  getSnapshotBeforeUpdate() {\n    var _a;\n    if (!this.scheduledPromotion || !this.lead || !this.follow)\n      return null;\n    const needsReset = !!((_a = this.lead) == null ? void 0 : _a.layoutMaybeMutated) && !this.shouldAnimate;\n    this.lead.projectionNodes.forEach((projectionNode) => {\n      var _a2;\n      projectionNode == null ? void 0 : projectionNode.promote({\n        needsReset,\n        transition: this.shouldAnimate ? this.transition : void 0,\n        preserveFollowOpacity: projectionNode.options.layoutId === TREE_ROOT_ID && !((_a2 = this.follow) == null ? void 0 : _a2.isExiting)\n      });\n    });\n    if (this.shouldAnimate) {\n      this.follow.layoutMaybeMutated = true;\n    } else {\n      this.scheduleProjectionDidUpdate();\n    }\n    this.lead.layoutMaybeMutated = false;\n    this.transition = void 0;\n    this.scheduledPromotion = false;\n    return null;\n  }\n  componentDidUpdate() {\n    var _a, _b;\n    if (!this.lead)\n      return null;\n    if (this.scheduledDidUpdate) {\n      (_b = (_a = this.lead.rootProjectionNode) == null ? void 0 : _a.root) == null ? void 0 : _b.didUpdate();\n      this.scheduledDidUpdate = false;\n    }\n  }\n  render() {\n    return /* @__PURE__ */ React36.createElement(SharedLayoutContext.Provider, { value: this.sharedLayoutContext }, this.props.children);\n  }\n};\n\n// ../../library/src/components/MagicMotionCrossfadeRoot.tsx\nimport React37 from \"react\";\nvar rootStyles = {\n  width: \"100%\",\n  height: \"100%\",\n  backgroundColor: \"none\",\n  pointerEvents: \"none\"\n};\nfunction MagicMotionCrossfadeRoot(props) {\n  return /* @__PURE__ */ React37.createElement(motion.div, { layoutId: TREE_ROOT_ID, style: rootStyles }, props.children);\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport React42, { useContext as useContext8, useEffect as useEffect4, useRef as useRef6 } from \"react\";\n\n// ../../library/src/modules/useAppearEffect.ts\nimport React38 from \"react\";\nvar _sharedIntersectionObserver, _callbacks2;\nvar SharedIntersectionObserver = class {\n  constructor(options) {\n    __privateAdd(this, _sharedIntersectionObserver, void 0);\n    __privateAdd(this, _callbacks2, /* @__PURE__ */ new WeakMap());\n    if (!document)\n      return;\n    __privateSet(this, _sharedIntersectionObserver, new IntersectionObserver(this.resizeObserverCallback.bind(this), options));\n  }\n  resizeObserverCallback(entries, observer) {\n    for (const entry of entries) {\n      const callbackForElement = __privateGet(this, _callbacks2).get(entry.target);\n      if (callbackForElement)\n        callbackForElement([entry], observer);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    if (!__privateGet(this, _sharedIntersectionObserver))\n      return;\n    __privateGet(this, _sharedIntersectionObserver).observe(element);\n    __privateGet(this, _callbacks2).set(element, callback);\n  }\n  unobserve(element) {\n    if (!__privateGet(this, _sharedIntersectionObserver))\n      return;\n    __privateGet(this, _sharedIntersectionObserver).unobserve(element);\n    __privateGet(this, _callbacks2).delete(element);\n  }\n  get root() {\n    var _a;\n    return (_a = __privateGet(this, _sharedIntersectionObserver)) == null ? void 0 : _a.root;\n  }\n};\n_sharedIntersectionObserver = new WeakMap();\n_callbacks2 = new WeakMap();\nvar SharedIntersectionObserverContext = /* @__PURE__ */ React38.createContext(/* @__PURE__ */ new Map());\nfunction useSharedIntersectionObserver(ref, callback, options) {\n  const key7 = useConstant(() => `${options.rootMargin}`);\n  const observers = React38.useContext(SharedIntersectionObserverContext);\n  React38.useEffect(() => {\n    var _a;\n    if (typeof IntersectionObserver === \"undefined\")\n      return;\n    const element = ref.current;\n    if (!element)\n      return;\n    let observer = observers.get(key7);\n    if (!observer || observer.root !== ((_a = options.root) == null ? void 0 : _a.current)) {\n      const { root, ...rest } = options;\n      observer = new SharedIntersectionObserver({ ...rest, root: root == null ? void 0 : root.current });\n      observers.set(key7, observer);\n    }\n    observer.observeElementWithCallback(element, callback);\n    return () => observer == null ? void 0 : observer.unobserve(element);\n  }, []);\n}\nvar thresholds = /* @__PURE__ */ new Array(100).fill(void 0).map((_, i) => i * 0.01);\nvar ViewportContext = /* @__PURE__ */ React38.createContext(null);\nfunction useAppearEffect(ref, options, appearCallback) {\n  const internalState = React38.useRef({\n    isInView: false,\n    hasAnimatedOnce: false\n  });\n  const { animateOnce, threshold, rootMargin = `0px 0px 0px 0px` } = options;\n  const callback = React38.useCallback(\n    ([entry]) => {\n      var _a;\n      if (!entry)\n        return;\n      const { isInView, hasAnimatedOnce } = internalState.current;\n      const isIntersecting = isIntersectingWithThreshold(entry, (_a = threshold == null ? void 0 : threshold.y) != null ? _a : 0);\n      if (isIntersecting && !isInView) {\n        if (animateOnce && hasAnimatedOnce)\n          return;\n        internalState.current.hasAnimatedOnce = true;\n        internalState.current.isInView = true;\n        appearCallback(true);\n        return;\n      }\n      if (!isIntersecting && isInView) {\n        internalState.current.isInView = false;\n        if (animateOnce)\n          return;\n        appearCallback(false);\n        return;\n      }\n    },\n    [animateOnce, threshold == null ? void 0 : threshold.y, appearCallback]\n  );\n  useSharedIntersectionObserver(ref, callback, {\n    threshold: thresholds,\n    rootMargin\n  });\n}\nfunction calculatedIntersection(intersectionRect, boundingClientRect) {\n  if (boundingClientRect.height === 0)\n    return 0;\n  return intersectionRect.height / Math.min(boundingClientRect.height, safeWindow.innerHeight);\n}\nfunction isIntersectingWithThreshold({ boundingClientRect, intersectionRect, isIntersecting }, threshold) {\n  if (boundingClientRect.height === 0)\n    return isIntersecting;\n  return isIntersecting && calculatedIntersection(intersectionRect, boundingClientRect) >= threshold;\n}\n\n// ../../library/src/components/AnimateLayout/SharedLayoutTree.tsx\nimport React39, { Component as Component5 } from \"react\";\nvar LayoutTree = class extends Component5 {\n  constructor() {\n    super(...arguments);\n    this.projectionNodes = /* @__PURE__ */ new Map();\n    this.shouldPreserveFollowOpacity = (child) => {\n      return child.options.layoutId === TREE_ROOT_ID && !this.props.isExiting;\n    };\n    this.switchLayoutGroupContext = {\n      register: (child) => this.addChild(child),\n      deregister: (child) => this.removeChild(child),\n      transition: this.props.isLead !== void 0 && this.props.animatesLayout ? this.props.transition : void 0,\n      shouldPreserveFollowOpacity: this.shouldPreserveFollowOpacity\n    };\n  }\n  componentDidMount() {\n    if (this.props.isLead) {\n      this.props.sharedLayoutContext.initLead(this, !!this.props.animatesLayout);\n    }\n  }\n  shouldComponentUpdate(nextProps) {\n    const { isLead, isExiting, isOverlayed, animatesLayout, transition, sharedLayoutContext } = nextProps;\n    this.isExiting = isExiting;\n    if (isLead === void 0)\n      return true;\n    const hasBecomeLead = !this.props.isLead && !!isLead;\n    const hasExitBeenCancelled = this.props.isExiting && !isExiting;\n    const shouldPromote = hasBecomeLead || hasExitBeenCancelled;\n    const shouldDemote = !!this.props.isLead && !isLead;\n    const overlayChanged = this.props.isOverlayed !== isOverlayed;\n    if (shouldPromote || shouldDemote) {\n      this.projectionNodes.forEach((projection) => projection == null ? void 0 : projection.willUpdate());\n    }\n    if (shouldPromote) {\n      sharedLayoutContext.schedulePromoteTree(this, transition, !!animatesLayout);\n    } else if (overlayChanged) {\n      sharedLayoutContext.scheduleProjectionDidUpdate();\n    }\n    return !!shouldPromote && !!animatesLayout;\n  }\n  addChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.set(layoutId, child);\n      this.setRootChild(child);\n    }\n  }\n  setRootChild(child) {\n    if (!this.rootProjectionNode)\n      return this.rootProjectionNode = child;\n    this.rootProjectionNode = this.rootProjectionNode.depth < child.depth ? this.rootProjectionNode : child;\n  }\n  removeChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.delete(layoutId);\n    }\n  }\n  render() {\n    return /* @__PURE__ */ React39.createElement(SwitchLayoutGroupContext.Provider, { value: this.switchLayoutGroupContext }, this.props.children);\n  }\n};\nvar SharedLayoutTree = (props) => {\n  const sharedLayoutContext = React39.useContext(SharedLayoutContext);\n  return /* @__PURE__ */ React39.createElement(LayoutTree, { ...props, sharedLayoutContext });\n};\n\n// ../../library/src/components/NavigationContainerContext.tsx\nimport React40, { useContext as useContext6 } from \"react\";\nvar NavigationContainerContext = React40.createContext(true);\nfunction useIsInCurrentNavigationTarget() {\n  const isInCurrentNavigationTarget = useContext6(NavigationContainerContext);\n  return isInCurrentNavigationTarget;\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nimport React41, { createContext as createContext2, useCallback as useCallback2, useContext as useContext7, useEffect as useEffect3, useRef as useRef5 } from \"react\";\n\n// ../../library/src/components/utils/useMap.ts\nfunction newMap() {\n  return /* @__PURE__ */ new Map();\n}\nfunction useMap() {\n  return useConstant(newMap);\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nvar NavigationTargetContext = /* @__PURE__ */ createContext2({ register: () => {\n}, deregister: () => {\n} });\nvar NavigationTargetWrapper = ({ isCurrent, isOverlayed, children }) => {\n  const callbacks2 = useMap();\n  const register = useCallback2(\n    (fn) => {\n      if (callbacks2.has(fn)) {\n        console.warn(\"NavigationTargetWrapper: already registered\");\n        return;\n      }\n      callbacks2.set(fn, void 0);\n    },\n    [callbacks2]\n  );\n  const deregister = useCallback2(\n    (fn) => {\n      const cleanup = callbacks2.get(fn);\n      cleanup == null ? void 0 : cleanup();\n      callbacks2.delete(fn);\n    },\n    [callbacks2]\n  );\n  const value = useRef5({ register, deregister }).current;\n  useEffect3(() => {\n    callbacks2.forEach((_, cb2) => {\n      const newCleanup = cb2(isCurrent, isOverlayed);\n      callbacks2.set(cb2, isFunction(newCleanup) ? newCleanup : void 0);\n    });\n    return () => {\n      callbacks2.forEach((cleanup, cb2) => {\n        if (!cleanup)\n          return;\n        cleanup();\n        callbacks2.set(cb2, void 0);\n      });\n    };\n  }, [isCurrent, isOverlayed, callbacks2]);\n  return /* @__PURE__ */ React41.createElement(NavigationTargetContext.Provider, { value }, children);\n};\nfunction useOnCurrentTargetChange(callback, deps = []) {\n  const { register, deregister } = useContext7(NavigationTargetContext);\n  useEffect3(() => {\n    if (!callback)\n      return;\n    register(callback);\n    return () => deregister(callback);\n  }, [register, deregister, ...deps]);\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nvar NavigationContainer = /* @__PURE__ */ React42.memo(\n  function NavigationContainer2({\n    isLayeredContainer,\n    isCurrent,\n    isPrevious,\n    isOverlayed = false,\n    visible,\n    transitionProps,\n    children,\n    backdropColor,\n    onTapBackdrop,\n    backfaceVisible,\n    exitBackfaceVisible,\n    animation,\n    exitAnimation,\n    instant,\n    initialProps,\n    exitProps,\n    position = { top: 0, right: 0, bottom: 0, left: 0 },\n    withMagicMotion,\n    index,\n    areMagicMotionLayersPresent,\n    id,\n    isInitial\n  }) {\n    const animate4 = useAnimation();\n    const presence = useContext8(PresenceContext);\n    const { persistLayoutIdCache } = useContext8(LayoutIdContext);\n    const previousState = useRef6({\n      wasCurrent: void 0,\n      wasPrevious: false,\n      wasBeingRemoved: false,\n      wasReset: true,\n      origins: getOriginProps({}, initialProps, transitionProps)\n    });\n    const viewportRef = useRef6(null);\n    const isBeingRemoved = presence !== null && !presence.isPresent;\n    if (isCurrent && previousState.current.wasCurrent === void 0)\n      persistLayoutIdCache();\n    useEffect4(() => {\n      if (isLayeredContainer || !animate4)\n        return;\n      if (isBeingRemoved) {\n        previousState.current = {\n          ...previousState.current,\n          wasBeingRemoved: isBeingRemoved\n        };\n        return;\n      }\n      const { wasPrevious, wasCurrent } = previousState.current;\n      const shouldAnimateIn = isCurrent && !wasCurrent || !isBeingRemoved && previousState.current.wasBeingRemoved && isCurrent;\n      const shouldAnimateOut = isPrevious && !wasPrevious;\n      const origins = getOriginProps(previousState.current.origins, initialProps, transitionProps);\n      let wasReset = previousState.current.wasReset;\n      if (shouldAnimateIn || shouldAnimateOut) {\n        animate4.stop();\n        animate4.start({\n          zIndex: index,\n          ...origins,\n          ...transitionProps\n        });\n        wasReset = false;\n      } else if (wasReset === false) {\n        animate4.stop();\n        animate4.set({ zIndex: index, ...allAnimatableProperties, opacity: 0 });\n        wasReset = true;\n      }\n      previousState.current = {\n        wasCurrent: !!isCurrent,\n        wasPrevious: !!isPrevious,\n        wasBeingRemoved: false,\n        wasReset,\n        origins\n      };\n    }, [isCurrent, isPrevious, isBeingRemoved]);\n    const transition = instant ? { type: false } : \"velocity\" in animation ? { ...animation, velocity: 0 } : animation;\n    const exitTransition = instant ? { type: false } : exitAnimation || animation;\n    const layout = { ...position };\n    if (layout.left === void 0 || layout.right === void 0)\n      layout.width = \"auto\";\n    if (layout.top === void 0 || layout.bottom === void 0)\n      layout.height = \"auto\";\n    const needsPerspective = contains3Dprops(transitionProps) || contains3Dprops(initialProps);\n    const perspective = needsPerspective && (isLayeredContainer || isCurrent || isPrevious) ? 1200 : void 0;\n    const identity = { ...allAnimatableProperties, ...previousState.current.origins };\n    const animations2 = isLayeredContainer ? {\n      initial: { ...identity, ...initialProps },\n      animate: { ...identity, ...transitionProps, transition },\n      exit: { ...identity, ...exitProps, transition: animation }\n    } : {\n      animate: animate4,\n      exit: { ...identity, ...exitProps, transition: exitTransition }\n    };\n    const isPresent = isBeingRemoved || areMagicMotionLayersPresent === false ? false : true;\n    const isCurrentTarget = !!isCurrent && isPresent;\n    const forceOpacity = isCurrent && isInitial;\n    return /* @__PURE__ */ React42.createElement(\n      FrameWithMotion,\n      {\n        width: \"100%\",\n        height: \"100%\",\n        style: {\n          position: \"absolute\",\n          transformStyle: \"flat\",\n          backgroundColor: \"transparent\",\n          overflow: \"hidden\",\n          zIndex: isLayeredContainer || isBeingRemoved || isCurrent && withMagicMotion ? index : void 0,\n          pointerEvents: \"none\",\n          visibility: visible ? \"visible\" : \"hidden\",\n          perspective\n        }\n      },\n      isLayeredContainer && /* @__PURE__ */ React42.createElement(\n        FrameWithMotion,\n        {\n          width: \"100%\",\n          height: \"100%\",\n          transition: animation,\n          initial: { opacity: instant && visible ? 1 : 0 },\n          animate: { opacity: 1 },\n          exit: { opacity: 0 },\n          backgroundColor: backdropColor ? backdropColor : \"transparent\",\n          onTap: !isBeingRemoved ? onTapBackdrop : void 0\n        }\n      ),\n      /* @__PURE__ */ React42.createElement(\n        FrameWithMotion,\n        {\n          ...layout,\n          ...animations2,\n          transition: {\n            default: transition,\n            originX: { type: false },\n            originY: { type: false },\n            originZ: { type: false }\n          },\n          backgroundColor: \"transparent\",\n          backfaceVisible: !isBeingRemoved ? backfaceVisible : exitBackfaceVisible,\n          \"data-framer-component-type\": \"NavigationContainer\",\n          \"data-framer-is-current-navigation-target\": !!isCurrent,\n          style: {\n            pointerEvents: \"initial\",\n            opacity: forceOpacity || isLayeredContainer || isCurrent && withMagicMotion ? 1 : 0\n          },\n          \"data-is-present\": isPresent ? void 0 : false,\n          ref: viewportRef\n        },\n        /* @__PURE__ */ React42.createElement(ViewportContext.Provider, { value: viewportRef }, /* @__PURE__ */ React42.createElement(NavigationContainerContext.Provider, { value: isCurrentTarget }, /* @__PURE__ */ React42.createElement(NavigationTargetWrapper, { isCurrent: isCurrentTarget, isOverlayed }, /* @__PURE__ */ React42.createElement(\n          SharedLayoutTree,\n          {\n            isLead: isCurrent,\n            animatesLayout: !!withMagicMotion,\n            transition,\n            isExiting: !isPresent,\n            isOverlayed,\n            id\n          },\n          children\n        ))))\n      )\n    );\n  },\n  shouldUsePreviousValue\n);\nfunction shouldUsePreviousValue(prevProps, nextProps) {\n  if (nextProps.isCurrent === void 0)\n    return false;\n  if (prevProps.isCurrent !== nextProps.isCurrent)\n    return false;\n  if (prevProps.isPrevious !== nextProps.isPrevious)\n    return false;\n  if (nextProps.isCurrent && prevProps.isOverlayed !== nextProps.isOverlayed)\n    return false;\n  return true;\n}\nfunction getOriginProps(currentOriginProps, initialProps, transitionProps) {\n  const result = { ...currentOriginProps };\n  if (initialProps) {\n    if (isFiniteNumber(initialProps.originX))\n      result.originX = initialProps.originX;\n    if (isFiniteNumber(initialProps.originY))\n      result.originY = initialProps.originY;\n    if (isFiniteNumber(initialProps.originZ))\n      result.originZ = initialProps.originZ;\n  }\n  if (transitionProps) {\n    if (isFiniteNumber(transitionProps.originX))\n      result.originX = transitionProps.originX;\n    if (isFiniteNumber(transitionProps.originY))\n      result.originY = transitionProps.originY;\n    if (isFiniteNumber(transitionProps.originZ))\n      result.originZ = transitionProps.originZ;\n  }\n  return result;\n}\nfunction contains3Dprops(containerProps) {\n  var _a, _b, _c;\n  if (!containerProps)\n    return false;\n  const containsProps = \"rotateX\" in containerProps || \"rotateY\" in containerProps || \"z\" in containerProps;\n  if (!containsProps)\n    return false;\n  const toPropsContain3d = containerProps.rotateX !== 0 || containerProps.rotateY !== 0 || containerProps.z !== 0;\n  const fromPropsContain3d = ((_a = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _a.rotateX.from) !== 0 || ((_b = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _b.rotateY.from) !== 0 || ((_c = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _c.z.from) !== 0;\n  return toPropsContain3d || fromPropsContain3d;\n}\nvar allAnimatableProperties = {\n  x: 0,\n  y: 0,\n  z: 0,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  rotateZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0,\n  opacity: 1\n};\n\n// ../../library/src/components/NavigationTransitions.ts\nvar TransitionDefaults = {\n  Fade: {\n    exit: { opacity: 0 },\n    enter: { opacity: 0 }\n  },\n  PushLeft: {\n    exit: { x: \"-30%\" },\n    enter: { x: \"100%\" }\n  },\n  PushRight: {\n    exit: { x: \"30%\" },\n    enter: { x: \"-100%\" }\n  },\n  PushUp: {\n    exit: { y: \"-30%\" },\n    enter: { y: \"100%\" }\n  },\n  PushDown: {\n    exit: { y: \"30%\" },\n    enter: { y: \"-100%\" }\n  },\n  Instant: {\n    animation: { type: false },\n    enter: { opacity: 0 }\n  },\n  Modal: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { center: true },\n    enter: { opacity: 0, scale: 1.2 }\n  },\n  OverlayLeft: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { right: 0, top: 0, bottom: 0 },\n    enter: { x: \"100%\" }\n  },\n  OverlayRight: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { left: 0, top: 0, bottom: 0 },\n    enter: { x: \"-100%\" }\n  },\n  OverlayUp: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { bottom: 0, left: 0, right: 0 },\n    enter: { y: \"100%\" }\n  },\n  OverlayDown: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { top: 0, left: 0, right: 0 },\n    enter: { y: \"-100%\" }\n  },\n  FlipLeft: {\n    backfaceVisible: false,\n    exit: { rotateY: -180 },\n    enter: { rotateY: 180 }\n  },\n  FlipRight: {\n    backfaceVisible: false,\n    exit: { rotateY: 180 },\n    enter: { rotateY: -180 }\n  },\n  FlipUp: {\n    backfaceVisible: false,\n    exit: { rotateX: 180 },\n    enter: { rotateX: -180 }\n  },\n  FlipDown: {\n    backfaceVisible: false,\n    exit: { rotateX: -180 },\n    enter: { rotateX: 180 }\n  },\n  MagicMotion: {\n    withMagicMotion: true\n  }\n};\nfunction pushTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"right\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.PushLeft;\n    case \"left\":\n      return TransitionDefaults.PushRight;\n    case \"bottom\":\n      return TransitionDefaults.PushUp;\n    case \"top\":\n      return TransitionDefaults.PushDown;\n  }\n}\nfunction overlayTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.OverlayLeft;\n    case \"left\":\n      return TransitionDefaults.OverlayRight;\n    case \"bottom\":\n      return TransitionDefaults.OverlayUp;\n    case \"top\":\n      return TransitionDefaults.OverlayDown;\n  }\n}\nfunction flipTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.FlipLeft;\n    case \"left\":\n      return TransitionDefaults.FlipRight;\n    case \"bottom\":\n      return TransitionDefaults.FlipUp;\n    case \"top\":\n      return TransitionDefaults.FlipDown;\n  }\n}\n\n// ../../library/src/components/reduceNavigationStateForAction.ts\nvar defaultState = () => ({\n  current: -1,\n  previous: -1,\n  currentOverlay: -1,\n  previousOverlay: -1,\n  visualIndex: 0,\n  overlayItemId: 0,\n  historyItemId: 0,\n  history: [],\n  overlayStack: [],\n  containers: {},\n  containerIndex: {},\n  containerVisualIndex: {},\n  containerIsRemoved: {},\n  transitionForContainer: {},\n  previousTransition: null\n});\nfunction reduceNavigationStateForAction(state, action) {\n  switch (action.type) {\n    case \"addOverlay\":\n      return addOverlay(state, action.transition, action.component);\n    case \"removeOverlay\":\n      return removeOverlay(state);\n    case \"add\":\n      return add(state, action.key, action.transition, action.component);\n    case \"remove\":\n      return remove(state);\n    case \"update\":\n      return updateComponent(state, action.key, action.component);\n    case \"back\":\n      return back(state);\n    case \"forward\":\n      return forward(state);\n    default:\n      return;\n  }\n}\nfunction updateComponent(currentState, key7, component) {\n  return {\n    ...currentState,\n    containers: {\n      ...currentState.containers,\n      [key7]: component\n    }\n  };\n}\nfunction addOverlay(currentState, transition, component) {\n  const currentOverlay = currentState.overlayStack[currentState.currentOverlay];\n  if (currentOverlay && currentOverlay.component === component)\n    return;\n  const overlayItemId = currentState.overlayItemId + 1;\n  const overlayStack = [\n    ...currentState.overlayStack,\n    {\n      key: `stack-${overlayItemId}`,\n      component,\n      transition\n    }\n  ];\n  return {\n    ...currentState,\n    overlayStack,\n    overlayItemId,\n    currentOverlay: Math.max(0, Math.min(currentState.currentOverlay + 1, overlayStack.length - 1)),\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction removeOverlay(currentState) {\n  return {\n    ...currentState,\n    overlayStack: [],\n    currentOverlay: -1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction add(currentState, key7, transition, component) {\n  if (!currentState.containers[key7])\n    currentState.containers[key7] = component;\n  currentState.history = currentState.history.slice(0, currentState.current + 1);\n  currentState.visualIndex = Math.max(currentState.history.length, 0);\n  const currentItem = currentState.history[currentState.history.length - 1];\n  const isCurrentScreen = currentItem && currentItem.key === key7;\n  currentState.overlayStack = [];\n  if (isCurrentScreen && currentState.currentOverlay > -1) {\n    return {\n      ...currentState,\n      currentOverlay: -1,\n      previousOverlay: currentState.currentOverlay\n    };\n  }\n  if (isCurrentScreen)\n    return;\n  const nextIndex = currentState.containerVisualIndex[key7];\n  const removed = currentState.containerIsRemoved[key7];\n  const shouldMoveForward = (currentItem == null ? void 0 : currentItem.key) && transition.withMagicMotion ? isNextTargetForward(key7, nextIndex, removed, currentState.history) : true;\n  currentState.history.push({\n    key: key7,\n    transition,\n    visualIndex: shouldMoveForward ? Math.max(currentState.visualIndex, 0) : currentState.containerVisualIndex[key7]\n  });\n  const current = currentState.current + 1;\n  const previous = currentState.current;\n  for (const containerKey in currentState.containerIndex) {\n    if (currentState.containerIndex[containerKey] === current) {\n      currentState.containerIndex[containerKey] = findLatestHistoryIndex(containerKey, currentState.history);\n    }\n  }\n  currentState.containerIndex[key7] = current;\n  const { containerVisualIndex, containerIsRemoved } = magicMotionPropsForAdd(currentState, key7, shouldMoveForward);\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerVisualIndex,\n    containerIsRemoved,\n    transitionForContainer,\n    previousTransition: null,\n    currentOverlay: -1,\n    historyItemId: currentState.historyItemId + 1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction back(currentState) {\n  const containers = { ...currentState.containers };\n  const nextState = remove(currentState);\n  if (!nextState)\n    return;\n  nextState.containers = containers;\n  return nextState;\n}\nfunction forward(currentState) {\n  const nextItem = currentState.history[currentState.current + 1];\n  if (!nextItem)\n    return;\n  const { key: key7, transition, component } = nextItem;\n  const history = [...currentState.history];\n  const nextState = add(currentState, key7, transition, component);\n  if (!nextState)\n    return;\n  nextState.history = history;\n  return nextState;\n}\nfunction remove(currentState) {\n  const history = [...currentState.history.slice(0, currentState.current + 1)];\n  if (history.length === 1)\n    return;\n  const currentItem = history.pop();\n  if (!currentItem)\n    return;\n  const target = history[history.length - 1];\n  assert(target, \"The navigation history must have at least one component\");\n  currentState.containerIndex[target.key] = history.length - 1;\n  const shouldRemoveContainer = history.every((item) => item.key !== currentItem.key);\n  if (shouldRemoveContainer) {\n    delete currentState.containers[currentItem.key];\n  }\n  const current = currentState.current - 1;\n  const previous = currentState.current;\n  const { containerIsRemoved, containerVisualIndex, previousTransition, visualIndex } = magicMotionPropsForRemove(\n    currentState,\n    target,\n    currentItem\n  );\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerIsRemoved,\n    containerVisualIndex,\n    previousTransition,\n    visualIndex,\n    transitionForContainer\n  };\n}\nfunction magicMotionPropsForAdd(currentState, nextKey, shouldMoveForward) {\n  const update = {\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    containerIsRemoved: { ...currentState.containerIsRemoved }\n  };\n  if (shouldMoveForward) {\n    update.containerVisualIndex[nextKey] = currentState.history.length - 1;\n    update.containerIsRemoved[nextKey] = false;\n  } else {\n    const nextVisualIndex = currentState.containerVisualIndex[nextKey];\n    for (const [key7, visualIndex] of Object.entries(currentState.containerVisualIndex)) {\n      if (nextVisualIndex !== void 0 && visualIndex > nextVisualIndex) {\n        update.containerIsRemoved[key7] = true;\n      }\n    }\n  }\n  return update;\n}\nfunction magicMotionPropsForRemove(currentState, target, currentItem) {\n  const validTargets = [target.key, currentItem.key];\n  const nextValidTarget = currentState.history[currentState.history.length - 2];\n  const previousTransition = currentState.previousTransition === null ? null : { ...currentState.previousTransition };\n  const update = {\n    containerIsRemoved: { ...currentState.containerIsRemoved },\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    previousTransition,\n    visualIndex: currentState.visualIndex\n  };\n  if (nextValidTarget)\n    validTargets.push(nextValidTarget.key);\n  const targetVisualIndex = currentState.containerVisualIndex[target.key];\n  const currentVisualIndex = currentState.containerVisualIndex[currentItem.key];\n  const shouldRemoveLastKey = targetVisualIndex !== void 0 && currentVisualIndex !== void 0 && targetVisualIndex <= currentVisualIndex || target.visualIndex !== void 0 && target.visualIndex < currentState.history.length - 1;\n  const nextIndex = target.visualIndex;\n  if (shouldRemoveLastKey) {\n    update.containerIsRemoved[currentItem.key] = true;\n    update.containerVisualIndex[target.key] = nextIndex !== void 0 ? nextIndex : currentState.history.length - 1;\n  } else {\n    update.visualIndex = currentState.visualIndex + 1;\n    update.containerVisualIndex[target.key] = currentState.visualIndex + 1;\n  }\n  if (currentItem.transition.withMagicMotion)\n    update.previousTransition = currentItem.transition || null;\n  currentState.containerIsRemoved[target.key] = false;\n  return update;\n}\nfunction findLatestHistoryIndex(key7, history) {\n  var _a;\n  for (let index = history.length; index > history.length; index--) {\n    if (((_a = history[index]) == null ? void 0 : _a.key) === key7)\n      return index;\n  }\n  return -1;\n}\nfunction updateTransitions(current, previous, history, containerIndex, transitionForContainer) {\n  const transitions = { ...transitionForContainer };\n  for (const [key7, screenIndex] of Object.entries(containerIndex)) {\n    const transition = transitionForScreen(screenIndex, { current, previous, history });\n    if (transition) {\n      transitions[key7] = transition;\n    }\n  }\n  return transitions;\n}\nfunction isNextTargetForward(key7, index, removed, history) {\n  if (removed || index === void 0)\n    return true;\n  if (index === 0)\n    return false;\n  const forwardHistory = history.slice(index, history.length);\n  if (forwardHistory.findIndex((item) => item.key === key7) > -1)\n    return true;\n  const backwardsHistory = history.slice(0, index - 1);\n  if (backwardsHistory.findIndex((item) => item.key === key7) > -1)\n    return false;\n  return true;\n}\nfunction transitionForScreen(screenIndex, stackState) {\n  const { current, previous, history } = stackState;\n  if (screenIndex !== current && screenIndex !== previous)\n    return void 0;\n  if (screenIndex === current && current > previous) {\n    const item = history[screenIndex];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current > previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === current && current < previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current < previous) {\n    const item = history[screenIndex];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n}\nvar allAnimatableKeys = Object.keys(allAnimatableProperties);\nfunction sequence(direction, transition, animation) {\n  const value = {};\n  const from = {};\n  allAnimatableKeys.forEach((property) => {\n    value[property] = allAnimatableProperties[property];\n    from[property] = {\n      ...animation,\n      from: allAnimatableProperties[property]\n    };\n  });\n  if (transition) {\n    Object.keys(transition).forEach((property) => {\n      if (transition[property] === void 0)\n        return;\n      const transitionTo = transition[property];\n      const transitionFrom = typeof transition[property] === \"string\" ? `${allAnimatableProperties[property]}%` : allAnimatableProperties[property];\n      value[property] = direction === \"enter\" ? transitionFrom : transitionTo;\n      from[property] = {\n        ...animation,\n        from: direction === \"enter\" ? transitionTo : transitionFrom,\n        velocity: 0\n      };\n    });\n  }\n  return {\n    ...value,\n    transition: {\n      ...from\n    }\n  };\n}\n\n// ../../library/src/components/Navigation.tsx\nvar NavigationConsumer = NavigationContext.Consumer;\nvar NavigationCallbackContext = React43.createContext(void 0);\nvar NavigationCallbackProvider = NavigationCallbackContext.Provider;\nvar IsInitialNavigationContext = React43.createContext(void 0);\nvar Navigation = class extends Component6 {\n  constructor(props) {\n    var _a;\n    super(props);\n    this.lastEventTimeStamp = null;\n    this.state = defaultState();\n    this.navigationAction = (action) => {\n      if (!this.props.enabled && this.state.history.length > 0)\n        return;\n      const newState = reduceNavigationStateForAction(this.state, action);\n      if (!newState)\n        return;\n      const { skipLayoutAnimation } = this.props;\n      const historyItem = newState.history[newState.current];\n      const withMagicMotion = action.type === \"add\" && action.transition.withMagicMotion || action.type === \"forward\" && (historyItem == null ? void 0 : historyItem.transition.withMagicMotion) || action.type === \"remove\" && !!newState.previousTransition;\n      const updateState = () => {\n        var _a;\n        this.setState(newState);\n        if (historyItem == null ? void 0 : historyItem.key) {\n          (_a = this.context) == null ? void 0 : _a.call(this, historyItem.key);\n        }\n      };\n      if (skipLayoutAnimation && !withMagicMotion) {\n        skipLayoutAnimation(updateState);\n      } else {\n        updateState();\n      }\n    };\n    this.goBack = () => {\n      var _a;\n      if (this.isSameEventTransition())\n        return;\n      this.lastEventTimeStamp = ((_a = globalThis.event) == null ? void 0 : _a.timeStamp) || null;\n      if (this.state.currentOverlay !== -1)\n        return this.navigationAction({ type: \"removeOverlay\" });\n      return this.navigationAction({ type: \"remove\" });\n    };\n    const component = this.props.children;\n    if (!component || !isReactChild(component) || !isReactElement(component))\n      return;\n    const transition = { ...TransitionDefaults.Instant };\n    const key7 = ((_a = component.key) == null ? void 0 : _a.toString()) || `stack-${this.state.historyItemId + 1}`;\n    const action = { type: \"add\", key: key7, transition, component };\n    const newState = reduceNavigationStateForAction(this.state, action);\n    if (!newState)\n      return;\n    this.state = newState;\n  }\n  componentDidMount() {\n    var _a;\n    injectComponentCSSRules();\n    const historyItem = this.state.history[this.state.current];\n    if (!historyItem)\n      return;\n    (_a = this.context) == null ? void 0 : _a.call(this, historyItem.key);\n  }\n  UNSAFE_componentWillReceiveProps(props) {\n    var _a;\n    const component = props[\"children\"];\n    if (!isReactChild(component) || !isReactElement(component))\n      return;\n    const key7 = (_a = component.key) == null ? void 0 : _a.toString();\n    if (!key7)\n      return;\n    if (this.state.history.length === 0) {\n      this.transition(component, TransitionDefaults.Instant);\n    } else {\n      this.navigationAction({ type: \"update\", key: key7, component });\n    }\n  }\n  componentWillUnmount() {\n    var _a, _b;\n    (_b = (_a = this.props).resetProjection) == null ? void 0 : _b.call(_a);\n  }\n  getStackState(options) {\n    const { current, previous, currentOverlay, previousOverlay } = this.state;\n    if (options.overCurrentContext) {\n      return {\n        current: currentOverlay,\n        previous: previousOverlay,\n        history: this.state.overlayStack\n      };\n    }\n    return {\n      current,\n      previous,\n      history: this.state.history\n    };\n  }\n  isSameEventTransition() {\n    if (!globalThis.event)\n      return false;\n    return this.lastEventTimeStamp === globalThis.event.timeStamp;\n  }\n  transition(component, transitionTraits, transitionOptions) {\n    var _a, _b;\n    if (this.isSameEventTransition())\n      return;\n    this.lastEventTimeStamp = ((_a = globalThis.event) == null ? void 0 : _a.timeStamp) || null;\n    if (!component || !isReactChild(component) || !isReactElement(component))\n      return;\n    const transition = { ...transitionTraits, ...transitionOptions };\n    const overCurrentContext = !!transition.overCurrentContext;\n    if (overCurrentContext)\n      return this.navigationAction({ type: \"addOverlay\", transition, component });\n    const key7 = ((_b = component.key) == null ? void 0 : _b.toString()) || `stack-${this.state.historyItemId + 1}`;\n    this.navigationAction({ type: \"add\", key: key7, transition, component });\n  }\n  instant(component) {\n    this.transition(component, TransitionDefaults.Instant, void 0);\n  }\n  fade(component, options) {\n    this.transition(component, TransitionDefaults.Fade, options);\n  }\n  push(component, options) {\n    this.transition(component, pushTransition(options), options);\n  }\n  modal(component, options) {\n    this.transition(component, TransitionDefaults.Modal, options);\n  }\n  overlay(component, options) {\n    this.transition(component, overlayTransition(options), options);\n  }\n  flip(component, options) {\n    this.transition(component, flipTransition(options), options);\n  }\n  magicMotion(component, options) {\n    this.transition(component, TransitionDefaults.MagicMotion, options);\n  }\n  customTransition(component, transition) {\n    this.transition(component, transition);\n  }\n  render() {\n    var _a, _b, _c, _d, _e;\n    const stackState = this.getStackState({ overCurrentContext: false });\n    const overlayStackState = this.getStackState({ overCurrentContext: true });\n    const activeOverlay = activeOverlayItem(overlayStackState);\n    const isOverlayVisible = overlayStackState.current > -1;\n    const isInitial = this.state.history.length === 1;\n    const contentContainers = [];\n    for (const [key7, component] of Object.entries(this.state.containers)) {\n      const index = this.state.containerIndex[key7];\n      assert(index !== void 0, \"Container's index must be registered\");\n      const visualIndex = this.state.containerVisualIndex[key7];\n      assert(visualIndex !== void 0, \"Container's visual index must be registered\");\n      const removed = this.state.containerIsRemoved[key7];\n      const historyItem = this.state.history[index];\n      const transitionProps = this.state.transitionForContainer[key7];\n      const isCurrent = index === this.state.current;\n      const isPrevious = index === this.state.previous;\n      const areMagicMotionLayersPresent = isCurrent ? false : removed;\n      const withMagicMotion = ((_a = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _a.withMagicMotion) || isCurrent && !!this.state.previousTransition;\n      contentContainers.push(\n        /* @__PURE__ */ React43.createElement(\n          NavigationContainer,\n          {\n            key: key7,\n            id: key7,\n            index: visualIndex,\n            isInitial,\n            isCurrent,\n            isPrevious,\n            isOverlayed: isOverlayVisible,\n            visible: isCurrent || isPrevious,\n            position: (_b = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _b.position,\n            instant: isInstantContainerTransition(index, stackState),\n            transitionProps,\n            animation: animationPropsForContainer(index, stackState),\n            backfaceVisible: getBackfaceVisibleForScreen(index, stackState),\n            exitAnimation: (_c = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _c.animation,\n            exitBackfaceVisible: (_d = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _d.backfaceVisible,\n            exitProps: (_e = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _e.enter,\n            withMagicMotion,\n            areMagicMotionLayersPresent: areMagicMotionLayersPresent ? false : void 0\n          },\n          /* @__PURE__ */ React43.createElement(MagicMotionCrossfadeRoot, null, containerContent({\n            component,\n            transition: historyItem == null ? void 0 : historyItem.transition\n          }))\n        )\n      );\n    }\n    const overlayContainers = this.state.overlayStack.map((item, stackIndex) => {\n      return /* @__PURE__ */ React43.createElement(\n        NavigationContainer,\n        {\n          isLayeredContainer: true,\n          key: item.key,\n          isCurrent: stackIndex === this.state.currentOverlay,\n          position: item.transition.position,\n          initialProps: initialPropsForOverlay(stackIndex, overlayStackState),\n          transitionProps: transitionPropsForOverlay(stackIndex, overlayStackState),\n          instant: isInstantContainerTransition(stackIndex, overlayStackState, true),\n          animation: animationPropsForContainer(stackIndex, overlayStackState),\n          exitProps: item.transition.enter,\n          visible: containerIsVisible(stackIndex, overlayStackState),\n          backdropColor: backdropColorForTransition(item.transition),\n          backfaceVisible: getBackfaceVisibleForOverlay(stackIndex, overlayStackState),\n          onTapBackdrop: backdropTapAction(item.transition, this.goBack),\n          index: this.state.current + 1 + stackIndex\n        },\n        containerContent({\n          component: item.component,\n          transition: item.transition\n        })\n      );\n    });\n    return /* @__PURE__ */ React43.createElement(\n      FrameWithMotion,\n      {\n        top: 0,\n        left: 0,\n        width: \"100%\",\n        height: \"100%\",\n        position: \"relative\",\n        style: { overflow: \"hidden\", backgroundColor: \"unset\", ...this.props.style }\n      },\n      /* @__PURE__ */ React43.createElement(NavigationContext.Provider, { value: this }, /* @__PURE__ */ React43.createElement(IsInitialNavigationContext.Provider, { value: isInitial }, /* @__PURE__ */ React43.createElement(\n        NavigationContainer,\n        {\n          isLayeredContainer: true,\n          position: void 0,\n          initialProps: {},\n          instant: false,\n          transitionProps: transitionPropsForStackWrapper(activeOverlay),\n          animation: animationForStackWrapper(activeOverlay),\n          backfaceVisible: backfaceVisibleForStackWrapper(activeOverlay),\n          visible: true,\n          backdropColor: void 0,\n          onTapBackdrop: void 0,\n          index: 0\n        },\n        /* @__PURE__ */ React43.createElement(LayoutIdProvider, null, /* @__PURE__ */ React43.createElement(SharedLayoutRoot, null, /* @__PURE__ */ React43.createElement(AnimatePresence, { presenceAffectsLayout: false }, contentContainers)))\n      ), /* @__PURE__ */ React43.createElement(AnimatePresence, null, overlayContainers)))\n    );\n  }\n};\nNavigation.defaultProps = {\n  enabled: true\n};\nNavigation.contextType = NavigationCallbackContext;\nvar animationDefault = {\n  stiffness: 500,\n  damping: 50,\n  restDelta: 1,\n  type: \"spring\"\n};\nfunction activeOverlayItem(overlayStack) {\n  let currentOverlayItem;\n  let previousOverlayItem;\n  if (overlayStack.current !== -1) {\n    currentOverlayItem = overlayStack.history[overlayStack.current];\n  } else {\n    previousOverlayItem = overlayStack.history[overlayStack.previous];\n  }\n  return { currentOverlayItem, previousOverlayItem };\n}\nfunction transitionPropsForStackWrapper({ currentOverlayItem }) {\n  return currentOverlayItem && currentOverlayItem.transition.exit;\n}\nfunction animationForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem && currentOverlayItem.transition.animation) {\n    return currentOverlayItem.transition.animation;\n  }\n  if (previousOverlayItem && previousOverlayItem.transition.animation) {\n    return previousOverlayItem.transition.animation;\n  }\n  return animationDefault;\n}\nfunction backfaceVisibleForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem)\n    return currentOverlayItem.transition.backfaceVisible;\n  return previousOverlayItem && previousOverlayItem.transition.backfaceVisible;\n}\nfunction backdropColorForTransition(transition) {\n  if (transition.backdropColor)\n    return transition.backdropColor;\n  if (transition.overCurrentContext)\n    return \"rgba(4,4,15,.4)\";\n  return void 0;\n}\nfunction getBackfaceVisibleForOverlay(containerIndex, stackState) {\n  const { current, history } = stackState;\n  if (containerIndex === current) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else if (containerIndex < current) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  }\n}\nfunction initialPropsForOverlay(containerIndex, stackState) {\n  const navigationItem = stackState.history[containerIndex];\n  if (navigationItem)\n    return navigationItem.transition.enter;\n}\nfunction getBackfaceVisibleForScreen(screenIndex, stackState) {\n  var _a, _b, _c, _d;\n  const { current, previous, history } = stackState;\n  if (screenIndex === previous && current > previous || screenIndex === current && current < previous) {\n    return (_b = (_a = history[screenIndex + 1]) == null ? void 0 : _a.transition) == null ? void 0 : _b.backfaceVisible;\n  }\n  return (_d = (_c = history[screenIndex]) == null ? void 0 : _c.transition) == null ? void 0 : _d.backfaceVisible;\n}\nfunction transitionPropsForOverlay(overlayIndex, stackState) {\n  const { current, history } = stackState;\n  if (overlayIndex === current) {\n    return;\n  } else if (overlayIndex < current) {\n    const navigationItem = history[overlayIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.exit;\n    }\n  } else {\n    const navigationItem = history[overlayIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.enter;\n    }\n  }\n}\nfunction animationPropsForContainer(containerIndex, stackState) {\n  const { current, previous, history } = stackState;\n  const containerCurrent = previous > current ? previous : current;\n  if (containerIndex < containerCurrent) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else if (containerIndex !== containerCurrent) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem == null ? void 0 : navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  }\n  return animationDefault;\n}\nfunction isInstantContainerTransition(containerIndex, stackState, overCurrentContext) {\n  const { current, previous, history } = stackState;\n  if (overCurrentContext && history.length > 1)\n    return true;\n  if (containerIndex !== previous && containerIndex !== current)\n    return true;\n  if (current === previous)\n    return true;\n  return false;\n}\nfunction containerIsVisible(containerIndex, stackState) {\n  const { current, previous } = stackState;\n  if (containerIndex > current && containerIndex > previous)\n    return false;\n  if (containerIndex === current)\n    return true;\n  return false;\n}\nfunction containerContent(item) {\n  const content = React43.Children.map(\n    item.component,\n    (child) => {\n      var _a, _b;\n      if (!isReactChild(child) || !isReactElement(child) || !child.props) {\n        return child;\n      }\n      const props = {\n        style: (_a = child.props.style) != null ? _a : {}\n      };\n      const position = (_b = item == null ? void 0 : item.transition) == null ? void 0 : _b.position;\n      const shouldStretchWidth = !position || position.left !== void 0 && position.right !== void 0;\n      const shouldStretchHeight = !position || position.top !== void 0 && position.bottom !== void 0;\n      const canStretchStyle = \"style\" in child.props ? isObject2(child.props.style) : true;\n      if (shouldStretchWidth) {\n        const canStretchWidth = \"width\" in child.props;\n        if (canStretchWidth)\n          props.width = \"100%\";\n        if (canStretchStyle)\n          props.style.width = \"100%\";\n      }\n      if (shouldStretchHeight) {\n        const canStretchHeight = \"height\" in child.props;\n        if (canStretchHeight)\n          props.height = \"100%\";\n        if (canStretchStyle)\n          props.style.height = \"100%\";\n      }\n      return React43.cloneElement(child, props);\n    }\n  );\n  return content;\n}\nfunction backdropTapAction(transition, goBackAction) {\n  if (transition.goBackOnTapOutside !== false)\n    return goBackAction;\n}\nfunction NavigationWrapper(props) {\n  const resetProjection = useResetProjection();\n  const skipLayoutAnimation = useInstantLayoutTransition();\n  return /* @__PURE__ */ React43.createElement(Navigation, { ...props, resetProjection, skipLayoutAnimation }, props.children);\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nvar import_process5 = __toESM(require_browser(), 1);\nimport React47 from \"react\";\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nimport { useCallback as useCallback3, useRef as useRef7 } from \"react\";\n\n// ../../library/src/render/utils/debounce.ts\nfunction debounce(fn, time2) {\n  let timeout;\n  const debounced = (...args) => {\n    safeWindow.clearTimeout(timeout);\n    timeout = safeWindow.setTimeout(fn, time2, ...args);\n  };\n  const cancel = () => {\n    safeWindow.clearTimeout(timeout);\n  };\n  debounced.cancel = cancel;\n  return debounced;\n}\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nfunction useWheelScroll(ref, {\n  enabled,\n  initial,\n  prev,\n  direction,\n  constraints,\n  offsetX,\n  offsetY,\n  onScrollStart,\n  onScroll,\n  onScrollEnd\n}) {\n  const isWheelScrollActive = useRef7(false);\n  const getPointData = useCallback3(() => {\n    const point = getPoint(offsetX, offsetY);\n    const data2 = {\n      point,\n      velocity: { x: offsetX.getVelocity(), y: offsetY.getVelocity() },\n      offset: { x: point.x - initial.x, y: point.y - initial.y },\n      delta: { x: point.x - prev.x, y: point.y - prev.y }\n    };\n    prev.x = point.x;\n    prev.y = point.y;\n    return data2;\n  }, []);\n  let handler;\n  if (enabled) {\n    let clampX = function(v) {\n      return constraints.current === null ? v : clamp3(v, constraints.current.left, constraints.current.right);\n    }, clampY = function(v) {\n      return constraints.current === null ? v : clamp3(v, constraints.current.top, constraints.current.bottom);\n    }, updateX = function(delta) {\n      offsetX.stop();\n      offsetX.set(clampX(offsetX.get() - delta));\n    }, updateY = function(delta) {\n      offsetY.stop();\n      offsetY.set(clampY(offsetY.get() - delta));\n    };\n    const debouncedOnScrollEnd = debounce(() => {\n      onScrollEnd && onScrollEnd(getPointData());\n      isWheelScrollActive.current = false;\n    }, 200);\n    handler = (e) => {\n      e.preventDefault();\n      if (!isWheelScrollActive.current) {\n        const x = offsetX.get();\n        const y = offsetY.get();\n        initial.x = x;\n        initial.y = y;\n        prev.x = x;\n        prev.y = y;\n        onScrollStart && onScrollStart(getPointData());\n        isWheelScrollActive.current = true;\n      }\n      switch (direction) {\n        case \"horizontal\":\n          updateX(e.deltaX);\n          break;\n        case \"vertical\":\n          updateY(e.deltaY);\n          break;\n        default:\n          updateX(e.deltaX);\n          updateY(e.deltaY);\n      }\n      onScroll && onScroll(getPointData());\n      debouncedOnScrollEnd();\n    };\n  }\n  useDomEvent(ref, \"wheel\", handler, { passive: false });\n}\nfunction getPoint(x, y) {\n  return { x: x.get(), y: y.get() };\n}\n\n// ../../library/src/components/utils/paddingFromProps.ts\nfunction hasPaddingPerSide(props) {\n  const { paddingPerSide, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  return paddingPerSide !== false && (paddingTop !== void 0 || paddingBottom !== void 0 || paddingLeft !== void 0 || paddingRight !== void 0);\n}\nfunction paddingFromProps(props) {\n  const { padding = 0, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  if (hasPaddingPerSide(props)) {\n    return {\n      top: paddingTop !== void 0 ? paddingTop : padding,\n      bottom: paddingBottom !== void 0 ? paddingBottom : padding,\n      left: paddingLeft !== void 0 ? paddingLeft : padding,\n      right: paddingRight !== void 0 ? paddingRight : padding\n    };\n  }\n  return {\n    top: padding,\n    bottom: padding,\n    left: padding,\n    right: padding\n  };\n}\nfunction makePaddingString({\n  top,\n  left,\n  bottom,\n  right\n}) {\n  return `${top}px ${right}px ${bottom}px ${left}px`;\n}\n\n// ../../library/src/components/Page/PageContainer.tsx\nimport React46 from \"react\";\n\n// ../../library/src/components/Stack/Stack.tsx\nimport React45 from \"react\";\n\n// ../../library/src/modules/useSafariGapFix.tsx\nimport React44 from \"react\";\nfunction triggerStackReflow(element, display) {\n  if (!element)\n    return;\n  element.style.display = \"none\";\n  void element.offsetHeight;\n  element.style.display = display;\n}\nvar requiresPolyfill = Boolean(isSafari() && safariVersion() < 15.4);\nfunction useSafariGapFix(gap, ref, display) {\n  if (!requiresPolyfill)\n    return void 0;\n  const isInitialRender = React44.useRef(true);\n  const hasTriggeredReflow = React44.useRef(false);\n  const prevGapValue = React44.useRef(gap);\n  hasTriggeredReflow.current = false;\n  React44.useLayoutEffect(() => {\n    prevGapValue.current = gap;\n    if (isInitialRender.current) {\n      isInitialRender.current = false;\n      return;\n    }\n    if (!hasTriggeredReflow.current) {\n      triggerStackReflow(ref.current, display);\n      hasTriggeredReflow.current = true;\n    }\n  }, [gap, ref, prevGapValue, display]);\n  return React44.useCallback(() => {\n    if (prevGapValue.current === gap)\n      return;\n    if (!hasTriggeredReflow.current)\n      triggerStackReflow(ref.current, display);\n    hasTriggeredReflow.current = true;\n  }, [gap, ref]);\n}\n\n// ../../library/src/components/Stack/Stack.tsx\nvar Stack = /* @__PURE__ */ (() => {\n  const StackInner = React45.memo(\n    React45.forwardRef(function StackInner2(stackProps, forwardedRef) {\n      var _a, _b;\n      const {\n        as = \"div\",\n        direction = \"vertical\",\n        distribution = \"start\",\n        alignment = \"center\",\n        gap = 10,\n        wrap: wrap2 = false,\n        useFlexboxGap: externalUseFlexboxGap = true,\n        children,\n        style: styleProp,\n        className,\n        willChangeTransform,\n        __fromCodeComponentNode,\n        parentSize,\n        __contentWrapperStyle,\n        ...containerProps\n      } = stackProps;\n      const useFlexboxGap = Boolean(externalUseFlexboxGap || wrap2);\n      const stackRef = React45.useRef(null);\n      const onBeforeLayoutMeasure = useSafariGapFix(gap, stackRef, \"flex\");\n      const flexDirection = toFlexDirection(direction);\n      const isReverse = isReverseDirection(flexDirection);\n      const justifyContent = toJustifyOrAlignment(distribution);\n      const padding = hasPaddingPerSide(containerProps) || containerProps.padding ? makePaddingString(paddingFromProps(containerProps)) : void 0;\n      const style = { ...styleProp };\n      Layer.applyWillChange({ willChangeTransform }, style, true);\n      if (__fromCodeComponentNode && !constraintsEnabled(unwrapFrameProps(containerProps))) {\n        containerProps.width = \"100%\";\n        containerProps.height = \"100%\";\n        containerProps._constraints = { enabled: true };\n      }\n      const layoutId = useLayoutId(stackProps);\n      const { children: _children, props } = processOverrideForwarding(containerProps, children);\n      const widthType = (_a = containerProps.widthType) != null ? _a : containerProps.width === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */;\n      const heightType = (_b = containerProps.heightType) != null ? _b : containerProps.height === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */;\n      const fractionChildren = handleFraction(_children, direction, widthType, heightType);\n      const gapChildren = wrapInGapElementForLegacyGap(\n        fractionChildren,\n        gap,\n        flexDirection,\n        justifyContent,\n        useFlexboxGap,\n        wrap2\n      );\n      const content = useProvideParentSize(gapChildren, parentSize != null ? parentSize : 1 /* Disabled */);\n      const attributes = {\n        \"data-framer-component-type\": \"Stack\"\n      };\n      const fromCanvasComponent = containerProps.__fromCanvasComponent;\n      if (fromCanvasComponent)\n        attributes[\"data-framer-generated\"] = true;\n      const alignItems = toJustifyOrAlignment(alignment);\n      const contentWrapperStyle = {\n        display: \"flex\",\n        flexDirection,\n        flexWrap: wrap2 ? \"wrap\" : \"nowrap\",\n        justifyContent,\n        alignItems,\n        alignContent: alignItems,\n        padding,\n        ...__contentWrapperStyle\n      };\n      const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n      if (useFlexboxGap && gapEnabled) {\n        const gapSupportedInMainAxis = isGapSupportedInMainAxis(justifyContent);\n        if (gapSupportedInMainAxis || direction !== \"horizontal\") {\n          contentWrapperStyle[\"--stack-native-column-gap\"] = `${gap}px`;\n        }\n        if (gapSupportedInMainAxis || direction !== \"vertical\") {\n          contentWrapperStyle[\"--stack-native-row-gap\"] = `${gap}px`;\n        }\n      }\n      if (contentWrapperStyle.width === void 0) {\n        contentWrapperStyle.width = widthType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (contentWrapperStyle.height === void 0) {\n        contentWrapperStyle.height = heightType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (fromCanvasComponent) {\n        if (styleProp == null ? void 0 : styleProp.width)\n          contentWrapperStyle.width = styleProp == null ? void 0 : styleProp.width;\n        if (styleProp == null ? void 0 : styleProp.height)\n          contentWrapperStyle.height = styleProp == null ? void 0 : styleProp.height;\n      }\n      return /* @__PURE__ */ React45.createElement(\n        FrameWithMotion,\n        {\n          as,\n          background: fromCanvasComponent ? void 0 : \"none\",\n          ...props,\n          layoutId,\n          ref: useForwardedRef(forwardedRef, stackRef),\n          ...attributes,\n          style,\n          className,\n          layoutScroll: true\n        },\n        /* @__PURE__ */ React45.createElement(\n          motion.div,\n          {\n            \"data-framer-stack-content-wrapper\": true,\n            \"data-framer-stack-direction-reverse\": isReverse,\n            \"data-framer-stack-gap-enabled\": gapEnabled,\n            style: contentWrapperStyle,\n            onBeforeLayoutMeasure\n          },\n          content\n        )\n      );\n    })\n  );\n  StackInner.displayName = \"Stack\";\n  addPropertyControls(StackInner, {\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"vertical\"\n    },\n    distribution: {\n      type: \"enum\" /* Enum */,\n      options: [\"start\", \"center\", \"end\", \"space-between\", \"space-around\", \"space-evenly\"],\n      optionTitles: [\"Start\", \"Center\", \"End\", \"Space Between\", \"Space Around\", \"Space Evenly\"],\n      title: \"Distribute\",\n      defaultValue: \"space-around\"\n    },\n    alignment: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"start\", \"center\", \"end\"],\n      title: \"Align\",\n      defaultValue: \"center\"\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      hidden: (props) => {\n        return props.distribution !== void 0 && [\"space-between\", \"space-around\", \"space-evenly\"].includes(props.distribution);\n      },\n      defaultValue: 10\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"t\", \"r\", \"b\", \"l\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    }\n  });\n  return StackInner;\n})();\nfunction isFractionDimension(dimension) {\n  return typeof dimension === \"string\" && dimension.endsWith(\"fr\");\n}\nfunction fraction(dimension) {\n  const value = parseFloat(dimension);\n  return isFiniteNumber(value) ? value : 0;\n}\nfunction handleFraction(children, direction, widthType, heightType) {\n  return React45.Children.map(children, (child) => {\n    if (!isReactChild(child) || !isReactElement(child))\n      return;\n    const isVertical = direction === \"vertical\";\n    const style = {};\n    let hasFraction = false;\n    const { style: propsStyle, size: size2 } = child.props;\n    let { width, height } = child.props;\n    if (size2 !== void 0) {\n      if (width === void 0)\n        width = size2;\n      if (height === void 0)\n        height = size2;\n    }\n    let newWidth = width;\n    let newHeight = height;\n    if (isFractionDimension(width)) {\n      hasFraction = true;\n      hasFraction = true;\n      if (isVertical) {\n        if (widthType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newWidth = \"auto\";\n        } else {\n          newWidth = `${fraction(width) * 100}%`;\n        }\n      } else {\n        newWidth = 1;\n        style.flexGrow = fraction(width);\n        style.flexBasis = 0;\n      }\n      style.width = newWidth;\n    }\n    if (isFractionDimension(height)) {\n      hasFraction = true;\n      if (isVertical) {\n        newHeight = 1;\n        style.flexGrow = fraction(height);\n        style.flexBasis = 0;\n      } else {\n        if (heightType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newHeight = \"auto\";\n        } else {\n          newHeight = `${fraction(height) * 100}%`;\n        }\n      }\n      style.height = newHeight;\n    }\n    if (!hasFraction)\n      return child;\n    const nextStyle = { ...propsStyle, ...style };\n    return React45.cloneElement(child, {\n      width: newWidth,\n      height: newHeight,\n      style: nextStyle\n    });\n  });\n}\nfunction isGapSupportedInMainAxis(justifyContent) {\n  if (!justifyContent)\n    return false;\n  return ![\"space-between\", \"space-around\", \"space-evenly\", \"stretch\"].includes(justifyContent);\n}\nfunction isGapEnabled(gap, justifyContent, wrap2) {\n  if (!gap) {\n    return false;\n  }\n  if (!wrap2 && !isGapSupportedInMainAxis(justifyContent)) {\n    return false;\n  }\n  return true;\n}\nfunction wrapInGapElementForLegacyGap(children, gap, direction, justifyContent, useFlexboxGap, wrap2) {\n  const gapStyle = {\n    display: \"contents\"\n  };\n  const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n  if (gapEnabled) {\n    const isVertical = isVerticalDirection(direction);\n    gapStyle[\"--stack-gap-x\"] = `${isVertical ? 0 : gap}px`;\n    gapStyle[\"--stack-gap-y\"] = `${isVertical ? gap : 0}px`;\n  }\n  return /* @__PURE__ */ React45.createElement(\n    \"div\",\n    {\n      \"data-framer-legacy-stack-gap-enabled\": gapEnabled,\n      \"data-framer-stack-flexbox-gap\": useFlexboxGap,\n      style: gapStyle\n    },\n    children\n  );\n}\nfunction toFlexDirection(direction) {\n  switch (direction) {\n    case \"vertical\":\n      return \"column\";\n    case \"horizontal\":\n      return \"row\";\n    default:\n      return direction;\n  }\n}\nfunction isVerticalDirection(direction) {\n  return direction === \"column\" || direction === \"column-reverse\";\n}\nfunction isReverseDirection(direction) {\n  switch (direction) {\n    case \"column-reverse\":\n    case \"row-reverse\":\n      return true;\n    default:\n      return false;\n  }\n}\nfunction toJustifyOrAlignment(distribution) {\n  switch (distribution) {\n    case \"start\":\n      return \"flex-start\";\n    case \"end\":\n      return \"flex-end\";\n    default:\n      return distribution;\n  }\n}\nfunction useForwardedRef(forwardedRef, innerRef) {\n  return (element) => {\n    innerRef.current = element;\n    if (typeof forwardedRef === \"function\") {\n      forwardedRef(element);\n    } else if (forwardedRef) {\n      forwardedRef.current = element;\n    }\n  };\n}\n\n// ../../library/src/components/Page/PageContainer.tsx\nvar pageContentWrapperType = \"PageContentWrapper\";\nfunction PageContainer({\n  children,\n  effect,\n  dragEnabled,\n  direction,\n  contentHeight,\n  contentWidth,\n  alignment,\n  gap,\n  isLastPage,\n  contentOffsetRef,\n  constraintsRef,\n  directionLock,\n  onDragStart,\n  onDrag,\n  onDragEnd,\n  layoutId\n}) {\n  const isHorizontalDirection = direction === \"horizontal\";\n  const dragAxis = isHorizontalDirection ? \"x\" : \"y\";\n  const hasHorizontalGap = isHorizontalDirection && !isLastPage && gap;\n  const hasVerticalGap = !isHorizontalDirection && !isLastPage && gap;\n  const hasAutoWidth = contentWidth !== \"stretch\" && isHorizontalDirection;\n  const hasAutoHeight = contentHeight !== \"stretch\" && !isHorizontalDirection;\n  const wrapperWidth = hasAutoWidth ? \"auto\" : \"100%\";\n  const wrapperHeight = hasAutoHeight ? \"auto\" : \"100%\";\n  const containerWidth = hasHorizontalGap && wrapperWidth === \"100%\" ? `calc(100% + ${gap}px)` : wrapperWidth;\n  const containerHeight = hasVerticalGap && wrapperHeight === \"100%\" ? `calc(100% + ${gap}px)` : wrapperHeight;\n  return /* @__PURE__ */ React46.createElement(\n    FrameWithMotion,\n    {\n      position: \"relative\",\n      \"data-framer-component-type\": \"PageContainer\",\n      width: containerWidth,\n      height: containerHeight,\n      layoutId: layoutId ? `${layoutId}-container` : void 0,\n      backgroundColor: \"transparent\",\n      drag: dragEnabled ? dragAxis : false,\n      dragDirectionLock: directionLock,\n      _dragX: contentOffsetRef.current.x,\n      _dragY: contentOffsetRef.current.y,\n      dragConstraints: constraintsRef.current,\n      onDrag,\n      onDragStart,\n      onDragEnd,\n      preserve3d: true,\n      style: {\n        paddingRight: hasHorizontalGap ? gap : 0,\n        paddingBottom: hasVerticalGap ? gap : 0\n      }\n    },\n    /* @__PURE__ */ React46.createElement(\n      FrameWithMotion,\n      {\n        position: \"relative\",\n        \"data-framer-component-type\": pageContentWrapperType,\n        width: wrapperWidth,\n        height: wrapperHeight,\n        preserve3d: false,\n        backgroundColor: \"transparent\",\n        key: effect ? Object.keys(effect).join(\"\") : \"\",\n        style: {\n          ...effect,\n          display: \"flex\",\n          flexDirection: isHorizontalDirection ? \"row\" : \"column\",\n          alignItems: alignment && toJustifyOrAlignment(alignment)\n        }\n      },\n      children\n    )\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nvar Page = /* @__PURE__ */ React47.forwardRef(function Page2(props, forwardedRef) {\n  var _a, _b;\n  const {\n    direction = \"horizontal\",\n    contentWidth = \"stretch\",\n    contentHeight = \"stretch\",\n    alignment = \"start\",\n    currentPage = 0,\n    animateCurrentPageUpdate = true,\n    gap: gapValue = 10,\n    padding = 0,\n    momentum = false,\n    dragEnabled = true,\n    defaultEffect = \"none\",\n    background = \"transparent\",\n    overflow = \"hidden\",\n    __fromCodeComponentNode,\n    effect,\n    children,\n    contentOffsetX,\n    contentOffsetY,\n    onChangePage,\n    onScrollStart,\n    onScroll,\n    onDragStart,\n    onDrag,\n    onDragEnd,\n    directionLock,\n    onScrollEnd,\n    onDirectionLock,\n    onUpdate,\n    wheelEnabled = false,\n    layoutId: specificLayoutId,\n    ...rest\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"page\" });\n  const containerProps = { ...rest, background };\n  const hasMountedRef = React47.useRef(false);\n  const hasFixedSize = RenderTarget.hasRestrictions() && props.__fromCodeComponentNode && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height);\n  if (!hasFixedSize && __fromCodeComponentNode && !containerProps.__fromCanvasComponent) {\n    containerProps.width = \"100%\";\n    containerProps.height = \"100%\";\n    containerProps._constraints = { enabled: true };\n  }\n  const { initial, prev } = React47.useRef({\n    initial: { x: 0, y: 0 },\n    prev: { x: 0, y: 0 }\n  }).current;\n  const isHorizontal = direction === \"horizontal\";\n  let gap = gapValue;\n  if (gap < 0) {\n    warnOnce(`The 'gap' property of Page component can not be negative, but is ${gapValue}.`);\n    gap = 0;\n  }\n  injectComponentCSSRules();\n  const pageCount = React47.Children.count(children);\n  const maxOffsetRef = React47.useRef(0);\n  const constraints = React47.useRef({ top: 0, left: 0, right: 0, bottom: 0 });\n  const fallbackContainerRef = React47.useRef(null);\n  const containerRef = forwardedRef || fallbackContainerRef;\n  const scrollableRef = React47.useRef(null);\n  const pageEffectValuesRef = React47.useRef([]);\n  const pageRectsRef = React47.useRef([]);\n  const internalX = useMotionValue(isMotionValue2(contentOffsetX) ? 0 : contentOffsetX != null ? contentOffsetX : 0);\n  const internalY = useMotionValue(isMotionValue2(contentOffsetY) ? 0 : contentOffsetY != null ? contentOffsetY : 0);\n  const contentOffsetRef = React47.useRef({\n    x: isMotionValue2(contentOffsetX) ? contentOffsetX : internalX,\n    y: isMotionValue2(contentOffsetY) ? contentOffsetY : internalY\n  });\n  const currentContentPageRef = React47.useRef(currentPage);\n  const propsBoundedCurrentPageRef = React47.useRef(currentPage);\n  const latestPropsRef = React47.useRef(props);\n  latestPropsRef.current = props;\n  const lastDirectionRef = React47.useRef(props.direction);\n  const snapToPage = useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal);\n  const [_, setForceUpdateCount] = React47.useState(0);\n  const containerSizeRef = React47.useRef({ width: 200, height: 200 });\n  if (hasFixedSize && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height)) {\n    containerSizeRef.current.width = containerProps.width;\n    containerSizeRef.current.height = containerProps.height;\n  }\n  const updateOnResize = React47.useCallback(() => {\n    if (!hasFixedSize)\n      setForceUpdateCount((v) => v + 1);\n  }, [hasFixedSize]);\n  React47.useEffect(() => {\n    if (RenderTarget.current() !== \"PREVIEW\" /* preview */)\n      return;\n    globalThis.addEventListener(\"resize\", updateOnResize);\n    return () => {\n      globalThis.removeEventListener(\"resize\", updateOnResize);\n    };\n  }, [updateOnResize]);\n  const applyEffects = () => {\n    pageEffectValuesRef.current.forEach((effectDictionary, index) => {\n      const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n      if (!effectDictionary || !values)\n        return;\n      for (const [key7, value] of Object.entries(values)) {\n        const effectValue = effectDictionary[key7];\n        if (isMotionValue2(effectValue)) {\n          effectValue.set(value);\n        }\n      }\n    });\n  };\n  const updateMaxOffsetFromPageContents = (containerSize) => {\n    const newPageContentRects = getPageContentRects(containerRef, containerSize, direction, gap);\n    if (newPageContentRects)\n      pageRectsRef.current = newPageContentRects;\n    const newMaxOffset = getMaxOffset(\n      containerSizeRef.current,\n      pageRectsRef.current,\n      direction,\n      latestPropsRef.current\n    );\n    if (newMaxOffset !== maxOffsetRef.current) {\n      maxOffsetRef.current = newMaxOffset;\n      constraints.current.top = -newMaxOffset;\n      constraints.current.left = -newMaxOffset;\n      if (RenderTarget.current() === \"CANVAS\" /* canvas */)\n        setForceUpdateCount((v) => v + 1);\n    }\n  };\n  const measureContainerSize = () => {\n    const element = containerRef.current;\n    if (!element)\n      return null;\n    const { offsetWidth, offsetHeight } = element;\n    const currentSize = containerSizeRef.current;\n    if (offsetWidth !== currentSize.width || offsetHeight !== currentSize.height) {\n      containerSizeRef.current = {\n        width: offsetWidth,\n        height: offsetHeight\n      };\n      return containerSizeRef.current;\n    }\n    return null;\n  };\n  const updateAndSnapToPage = (newPage, mount = false) => {\n    const newBoundedCurrentPage = getBoundedCurrentPage(newPage, pageCount);\n    const boundedCurrentPageDidChange = newBoundedCurrentPage !== propsBoundedCurrentPageRef.current;\n    if (boundedCurrentPageDidChange) {\n      propsBoundedCurrentPageRef.current = newBoundedCurrentPage;\n      updateCurrentPage(newBoundedCurrentPage, currentContentPageRef, !mount ? onChangePage : void 0);\n    }\n    const offset = offsetForPage(newBoundedCurrentPage, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    const animated = animateCurrentPageUpdate && RenderTarget.current() !== \"CANVAS\" /* canvas */ && !mount;\n    snapToPage(newBoundedCurrentPage, offset, { animated });\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (hasMountedRef.current)\n      return;\n    requestAnimationFrame(() => {\n      var _a2;\n      currentContentPageRef.current = currentPage;\n      const contentOffset = contentOffsetRef.current;\n      contentOffset.x.onChange(applyEffects);\n      contentOffset.y.onChange(applyEffects);\n      applyEffects();\n      hasMountedRef.current = true;\n      const containerSize = (_a2 = measureContainerSize()) != null ? _a2 : containerSizeRef.current;\n      updateMaxOffsetFromPageContents(containerSize);\n      updateAndSnapToPage(currentContentPageRef.current, true);\n    });\n  }, []);\n  React47.useEffect(() => {\n    if (currentPage !== currentContentPageRef.current)\n      updateAndSnapToPage(currentPage);\n  }, [currentPage]);\n  const handleMeasureLifecycle = () => {\n    const newContainerSize = measureContainerSize();\n    updateMaxOffsetFromPageContents(newContainerSize != null ? newContainerSize : containerSizeRef.current);\n    updateAndSnapToPage(currentContentPageRef.current);\n    if (newContainerSize || direction !== lastDirectionRef.current) {\n      if (direction === \"horizontal\") {\n        contentOffsetRef.current.y.set(0);\n      } else {\n        contentOffsetRef.current.x.set(0);\n      }\n      lastDirectionRef.current = direction;\n    }\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (RenderTarget.current() !== \"CANVAS\" /* canvas */)\n      return;\n    handleMeasureLifecycle();\n  });\n  const onDragStartHandler = (event, info) => {\n    if (onScrollStart)\n      onScrollStart(info);\n    if (onDragStart)\n      onDragStart(event, info);\n    prev.x = initial.x = info.point.x;\n    prev.y = initial.y = info.point.y;\n  };\n  const onDragHandler = (event, info) => {\n    if (onScroll)\n      onScroll(info);\n    if (onDrag)\n      onDrag(event, info);\n    prev.x = info.point.x;\n    prev.y = info.point.y;\n  };\n  const onDragTransitionEnd = () => {\n    if (props.onDragTransitionEnd)\n      props.onDragTransitionEnd();\n    if (onScrollEnd) {\n      const { x, y } = contentOffsetRef.current;\n      const point = { x: x.get(), y: y.get() };\n      onScrollEnd({\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      });\n    }\n  };\n  const onDragEndHandler = async (event, info) => {\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    contentOffset.stop();\n    const startPosition = contentOffset.get();\n    const axis = isHorizontal ? \"x\" : \"y\";\n    const velocity = info.velocity[axis];\n    let index = nearestPageIndex(pageRectsRef.current, startPosition, startPosition, isHorizontal, momentum);\n    if (velocity) {\n      inertia({\n        from: startPosition,\n        velocity,\n        modifyTarget: (endPosition) => {\n          index = nearestPageIndex(pageRectsRef.current, startPosition, endPosition, isHorizontal, momentum);\n          return endPosition;\n        }\n      }).stop();\n    }\n    updateCurrentPage(index, currentContentPageRef, onChangePage);\n    const offset = offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    if (onDragEnd)\n      onDragEnd(event, info);\n    const handler = contentOffsetRef.current[axis];\n    animate(handler, offset, {\n      type: \"spring\",\n      from: startPosition,\n      velocity,\n      stiffness: 500,\n      damping: 50,\n      onComplete: onDragTransitionEnd\n    });\n  };\n  pageEffectValuesRef.current = [];\n  const childComponents = React47.Children.map(children, (child, index) => {\n    var _a2;\n    if (!isReactChild(child) || !isReactElement(child)) {\n      return child;\n    }\n    const update = {\n      right: void 0,\n      bottom: void 0,\n      top: void 0,\n      left: void 0,\n      _constraints: {\n        enabled: false\n      }\n    };\n    if (containerProps.__fromCanvasComponent) {\n      update.style = (_a2 = child.props.style) != null ? _a2 : {};\n      if (contentWidth === \"stretch\")\n        update.style.width = \"100%\";\n      if (contentHeight === \"stretch\")\n        update.style.height = \"100%\";\n    } else {\n      if (contentWidth === \"stretch\")\n        update.width = \"100%\";\n      if (contentHeight === \"stretch\")\n        update.height = \"100%\";\n    }\n    let effectDictionary;\n    const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n    if (values) {\n      effectDictionary = {};\n      for (const key7 in values) {\n        effectDictionary[key7] = motionValue(values[key7]);\n      }\n    }\n    pageEffectValuesRef.current.push(effectDictionary);\n    return /* @__PURE__ */ React47.createElement(\n      PageContainer,\n      {\n        key: index,\n        effect: effectDictionary,\n        dragEnabled,\n        direction,\n        contentHeight,\n        contentWidth,\n        alignment,\n        gap,\n        isLastPage: index === pageCount - 1,\n        contentOffsetRef,\n        constraintsRef: constraints,\n        directionLock,\n        onDragStart: onDragStartHandler,\n        onDrag: onDragHandler,\n        onDragEnd: onDragEndHandler,\n        layoutId: layoutId ? `${layoutId}-${index}` : void 0\n      },\n      React47.cloneElement(child, update)\n    );\n  });\n  useWheelScroll(scrollableRef, {\n    enabled: wheelEnabled,\n    initial,\n    prev,\n    direction,\n    constraints,\n    offsetX: contentOffsetRef.current.x,\n    offsetY: contentOffsetRef.current.y,\n    onScrollStart,\n    onScroll,\n    onScrollEnd\n  });\n  return /* @__PURE__ */ React47.createElement(\n    FrameWithMotion,\n    {\n      preserve3d: false,\n      perspective: hasEffect(props) ? 1200 : void 0,\n      overflow,\n      ...containerProps,\n      layoutId,\n      ref: containerRef,\n      onLayoutMeasure: handleMeasureLifecycle\n    },\n    /* @__PURE__ */ React47.createElement(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"Page\",\n        ref: scrollableRef,\n        background: null,\n        x: contentOffsetRef.current.x,\n        y: contentOffsetRef.current.y,\n        width: \"100%\",\n        height: \"100%\",\n        preserve3d: true,\n        layout: true,\n        layoutId: layoutId !== void 0 ? layoutId + \"-page\" : void 0,\n        style: {\n          padding: makePaddingString(paddingFromProps(props)),\n          display: \"flex\",\n          flexDirection: isHorizontal ? \"row\" : \"column\",\n          pointerEvents: (_b = (_a = props.style) == null ? void 0 : _a.pointerEvents) != null ? _b : \"auto\"\n        }\n      },\n      /* @__PURE__ */ React47.createElement(\n        EmptyState,\n        {\n          title: \"Page\",\n          description: \"Click and drag the connector to any frame on the canvas \\u2192\",\n          children,\n          size: containerSizeRef.current,\n          insideUserCodeComponent: !__fromCodeComponentNode\n        }\n      ),\n      childComponents\n    )\n  );\n});\nfunction cubeEffect(info) {\n  const { normalizedOffset, direction } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    originX: normalizedOffset < 0 ? 1 : 0,\n    originY: normalizedOffset < 0 ? 1 : 0,\n    rotateY: isHorizontal ? Math.min(Math.max(-90, normalizedOffset * 90), 90) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(Math.max(-90, normalizedOffset * -90), 90),\n    backfaceVisibility: \"hidden\",\n    WebkitBackfaceVisibility: \"hidden\"\n  };\n}\nfunction coverflowEffect(info) {\n  const { normalizedOffset, direction, size: size2 } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    rotateY: isHorizontal ? Math.min(45, Math.max(-45, normalizedOffset * -45)) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(45, Math.max(-45, normalizedOffset * 45)),\n    originX: isHorizontal ? normalizedOffset < 0 ? 0 : 1 : 0.5,\n    originY: isHorizontal ? 0.5 : normalizedOffset < 0 ? 0 : 1,\n    x: isHorizontal ? `${normalizedOffset * -25}%` : 0,\n    y: isHorizontal ? 0 : `${normalizedOffset * -25}%`,\n    z: -Math.abs(normalizedOffset),\n    scale: 1 - Math.abs(normalizedOffset / 10)\n  };\n}\nfunction calcPileAxisOffset(offset, length) {\n  return offset * length - offset * 8;\n}\nfunction pileEffect(info) {\n  const { normalizedOffset, direction, size: size2 } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const absoluteOffset = Math.abs(normalizedOffset);\n  return {\n    x: normalizedOffset < 0 && isHorizontal ? calcPileAxisOffset(absoluteOffset, size2.width) : 0,\n    y: normalizedOffset < 0 && !isHorizontal ? calcPileAxisOffset(absoluteOffset, size2.height) : 0,\n    scale: normalizedOffset < 0 ? 1 - absoluteOffset / 50 : 1\n  };\n}\nfunction wheelEffect(info) {\n  const { normalizedOffset, direction, size: size2 } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const originZ = (isHorizontal ? size2.width : size2.height) * 18 / (2 * Math.PI);\n  const rotateX = isHorizontal ? 0 : normalizedOffset * -20;\n  const rotateY = isHorizontal ? normalizedOffset * 20 : 0;\n  const y = isHorizontal ? 0 : normalizedOffset * -size2.height;\n  const x = isHorizontal ? normalizedOffset * -size2.width : 0;\n  return {\n    opacity: 1 - Math.abs(normalizedOffset) / 4,\n    transform: `translate(${x}px, ${y}px) translateZ(-${originZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) translateZ(${originZ}px)`\n  };\n}\nfunction getDefaultEffect(type) {\n  switch (type) {\n    case \"cube\":\n      return cubeEffect;\n    case \"coverflow\":\n      return coverflowEffect;\n    case \"pile\":\n      return pileEffect;\n    case \"wheel\":\n      return wheelEffect;\n    default:\n      return null;\n  }\n}\nfunction nearestPageIndex(pageRects, startPosition, endPosition, isHorizontalDirection, allowSkippingPages) {\n  const distanceToStart = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + startPosition);\n  };\n  const distanceToEnd = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + endPosition);\n  };\n  if (allowSkippingPages) {\n    const closestPages = [...pageRects].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0])\n      return -1;\n    return pageRects.indexOf(closestPages[0]);\n  } else {\n    const closestToStart = [...pageRects].sort((a, b) => distanceToStart(a) - distanceToStart(b));\n    if (closestToStart.length === 1 && closestToStart[0])\n      return pageRects.indexOf(closestToStart[0]);\n    const pageA = closestToStart[0];\n    const pageB = closestToStart[1];\n    if (!pageA || !pageB)\n      return -1;\n    const closestPages = [pageA, pageB].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0])\n      return -1;\n    return pageRects.indexOf(closestPages[0]);\n  }\n}\nfunction getPageContentRects(containerRef, containerSize, direction, gap) {\n  var _a;\n  const containerElement = containerRef.current;\n  if (!containerElement)\n    return;\n  const contentWrappers = [];\n  (_a = containerElement.firstChild) == null ? void 0 : _a.childNodes.forEach((node) => {\n    const childNode = node.firstChild;\n    if (!(childNode instanceof HTMLElement))\n      return;\n    const componentType = childNode.getAttribute(\"data-framer-component-type\");\n    if (componentType === pageContentWrapperType) {\n      contentWrappers.push(childNode);\n    }\n  });\n  const sizes = [];\n  contentWrappers.forEach((contentWrapper) => {\n    if (contentWrapper instanceof HTMLElement && contentWrapper.firstChild instanceof HTMLElement) {\n      let width = contentWrapper.firstChild.offsetWidth;\n      let height = contentWrapper.firstChild.offsetHeight;\n      if (import_process5.default.env.NODE_ENV === \"test\") {\n        width = 100;\n        height = 100;\n      }\n      sizes.push({ width, height });\n    } else {\n      sizes.push(null);\n    }\n  });\n  let maxX = 0;\n  let maxY = 0;\n  const isHorizontal = direction === \"horizontal\";\n  return sizes.map((queriedSize) => {\n    const size2 = queriedSize || containerSize;\n    const x = maxX;\n    const y = maxY;\n    if (isHorizontal) {\n      maxX += size2.width + gap;\n    } else {\n      maxY += size2.height + gap;\n    }\n    return { ...size2, x, y };\n  });\n}\nfunction getMaxOffset(containerSize, pageContentRects, direction, paddingProps) {\n  const lastPageRect = pageContentRects[pageContentRects.length - 1];\n  if (!lastPageRect)\n    return 0;\n  const paddingSides = paddingFromProps(paddingProps);\n  const isHorizontal = direction === \"horizontal\";\n  const paddingStart = isHorizontal ? paddingSides.left : paddingSides.top;\n  const paddingEnd = isHorizontal ? paddingSides.right : paddingSides.bottom;\n  const pageWidth = isHorizontal ? lastPageRect.width : lastPageRect.height;\n  const containerWidth = isHorizontal ? containerSize.width : containerSize.height;\n  const freeSpace = containerWidth - paddingStart - paddingEnd - pageWidth;\n  const target = isHorizontal ? lastPageRect.x : lastPageRect.y;\n  if (freeSpace <= 0)\n    return Math.max(target, 0);\n  return Math.max(target - freeSpace, 0);\n}\nfunction offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef) {\n  const pageIndex = Math.max(0, Math.min(pageCount - 1, index));\n  const currentPageRect = pageRectsRef.current[pageIndex];\n  if (!currentPageRect) {\n    return 0;\n  }\n  if (isHorizontal) {\n    return -Math.min(currentPageRect.x, maxOffsetRef.current);\n  } else {\n    return -Math.min(currentPageRect.y, maxOffsetRef.current);\n  }\n}\nfunction useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal) {\n  return (pageIndex, offset, options) => {\n    currentContentPageRef.current = pageIndex;\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    if (!options || !options.animated) {\n      contentOffset.set(offset);\n      return;\n    }\n    const axis = isHorizontal ? \"x\" : \"y\";\n    animate(contentOffsetRef.current[axis], offset, {\n      type: \"spring\",\n      from: contentOffset.get(),\n      velocity: contentOffset.getVelocity(),\n      stiffness: 500,\n      damping: 50\n    });\n  };\n}\nfunction getBoundedCurrentPage(pageIndex, pageCount) {\n  return pageIndex >= 0 ? Math.min(pageIndex, pageCount - 1) : (pageIndex % pageCount + pageCount) % pageCount;\n}\nfunction effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef) {\n  const {\n    direction: latestDirection = \"horizontal\",\n    defaultEffect: latestDefaultEffect,\n    effect: latestEffect,\n    gap: latestGap = 0\n  } = latestPropsRef.current;\n  const latestIsHorizontal = latestDirection === \"horizontal\";\n  const pageRect = pageRectsRef.current[index] || {\n    x: latestIsHorizontal ? index * 200 + latestGap : 0,\n    y: latestIsHorizontal ? 0 : index * 200 + latestGap,\n    width: 200,\n    height: 200\n  };\n  const effectFunction = latestEffect || getDefaultEffect(latestDefaultEffect);\n  if (!effectFunction)\n    return null;\n  let offset;\n  let normalizedOffset;\n  const contentOffset = contentOffsetRef.current;\n  const maxScrollOffset = maxOffsetRef.current;\n  if (latestIsHorizontal) {\n    offset = Math.min(pageRect.x, maxScrollOffset) + (contentOffset ? contentOffset.x.get() : 0);\n    normalizedOffset = offset / (pageRect.width + latestGap);\n  } else {\n    offset = Math.min(pageRect.y, maxScrollOffset) + (contentOffset ? contentOffset.y.get() : 0);\n    normalizedOffset = offset / (pageRect.height + latestGap);\n  }\n  const size2 = { width: pageRect.width, height: pageRect.height };\n  return effectFunction({\n    offset,\n    normalizedOffset,\n    size: size2,\n    index,\n    direction: latestDirection,\n    gap: latestGap,\n    pageCount: pageRectsRef.current.length\n  });\n}\nfunction hasEffect(props) {\n  return !!props.effect || !!getDefaultEffect(props.defaultEffect);\n}\nfunction updateCurrentPage(newPageIndex, currentContentPageRef, onChangePage) {\n  if (currentContentPageRef.current === newPageIndex)\n    return;\n  if (onChangePage)\n    onChangePage(newPageIndex, currentContentPageRef.current);\n  currentContentPageRef.current = newPageIndex;\n}\n\n// ../../library/src/components/Page/Page.tsx\nvar Page3 = /* @__PURE__ */ (() => {\n  const ContentDimension = {\n    Auto: \"auto\",\n    Stretch: \"stretch\"\n  };\n  const pageContentDimensionOptions = [ContentDimension.Auto, ContentDimension.Stretch];\n  const pageContentDimensionTitles = /* @__PURE__ */ pageContentDimensionOptions.map((option) => {\n    switch (option) {\n      case ContentDimension.Auto:\n        return \"Auto\";\n      case ContentDimension.Stretch:\n        return \"Stretch\";\n    }\n  });\n  const pageEffectOptions = [\"none\", \"cube\", \"coverflow\", \"wheel\", \"pile\"];\n  const pageEffectTitles = /* @__PURE__ */ pageEffectOptions.map((option) => {\n    switch (option) {\n      case \"none\":\n        return \"None\";\n      case \"cube\":\n        return \"Cube\";\n      case \"coverflow\":\n        return \"Cover Flow\";\n      case \"wheel\":\n        return \"Wheel\";\n      case \"pile\":\n        return \"Pile\";\n    }\n  });\n  const pageAlignmentOptions = [\"start\", \"center\", \"end\"];\n  const genericAlignmentTitles = /* @__PURE__ */ pageAlignmentOptions.map((option) => {\n    switch (option) {\n      case \"start\":\n        return \"Start\";\n      case \"center\":\n        return \"Center\";\n      case \"end\":\n        return \"End\";\n    }\n  });\n  addPropertyControls(Page, {\n    direction: {\n      type: \"enum\" /* Enum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"horizontal\",\n      displaySegmentedControl: true,\n      optionIcons: [\"direction-horizontal\", \"direction-vertical\"]\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    contentWidth: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Width\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    contentHeight: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Height\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    alignment: {\n      type: \"enum\" /* Enum */,\n      options: pageAlignmentOptions,\n      optionTitles: genericAlignmentTitles,\n      title: \"Align\",\n      hidden(props) {\n        const { direction, contentWidth, contentHeight } = props;\n        const isHorizontalDirection = direction === \"horizontal\";\n        const crossDimension = isHorizontalDirection ? contentHeight : contentWidth;\n        return crossDimension === ContentDimension.Stretch;\n      },\n      defaultValue: \"start\",\n      displaySegmentedControl: true,\n      optionIcons: {\n        direction: {\n          horizontal: [\"align-top\", \"align-middle\", \"align-bottom\"],\n          vertical: [\"align-left\", \"align-center\", \"align-right\"]\n        }\n      }\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      defaultValue: 0\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    },\n    overflow: {\n      type: \"enum\" /* Enum */,\n      title: \"Overflow\",\n      defaultValue: \"hidden\",\n      options: [\"visible\", \"hidden\"],\n      optionTitles: [\"Visible\", \"Hidden\"],\n      displaySegmentedControl: true\n    },\n    currentPage: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Current\",\n      displayStepper: true,\n      defaultValue: 0\n    },\n    momentum: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      title: \"Momentum\",\n      defaultValue: false\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: false\n    },\n    defaultEffect: {\n      type: \"enum\" /* Enum */,\n      options: pageEffectOptions,\n      optionTitles: pageEffectTitles,\n      title: \"Effect\",\n      defaultValue: \"none\"\n    },\n    children: {\n      type: \"array\" /* Array */,\n      title: \"Content\",\n      control: { type: \"componentinstance\" /* ComponentInstance */, title: \"Page\" }\n    }\n  });\n  Page.supportsConstraints = true;\n  return Page;\n})();\n\n// ../../library/src/components/Screen.tsx\nimport React50, { Component as Component9 } from \"react\";\n\n// ../../library/src/events/recognizer/GestureRecognizer.ts\nfunction stateName(state) {\n  switch (state) {\n    case 2 /* Possible */:\n      return \"Possible\";\n    case 4 /* Began */:\n      return \"Began\";\n    case 8 /* Changed */:\n      return \"Changed\";\n    case 16 /* Ended */:\n      return \"Ended\";\n    case 32 /* Failed */:\n      return \"Failed\";\n    case 64 /* Cancelled */:\n      return \"Cancelled\";\n    case 128 /* Recognized */:\n      return \"Recognized\";\n    default:\n      return \"Unknown\";\n  }\n}\nfunction containsBitmask(value, bitmask) {\n  return (value & bitmask) !== 0;\n}\nvar GestureRecognizer = class {\n  constructor() {\n    this._state = 2 /* Possible */;\n    this.preventers = [];\n  }\n  get state() {\n    return this._state;\n  }\n  setState(state) {\n    this._state = state;\n  }\n  get isPrevented() {\n    let prevented = false;\n    for (const recognizer of this.preventers) {\n      if (recognizer.state & (4 /* Began */ | 8 /* Changed */ | 16 /* Ended */)) {\n        prevented = true;\n        break;\n      }\n    }\n    return prevented;\n  }\n  canBePreventedBy(recognizer) {\n    this.preventers.push(recognizer);\n  }\n  hasState(bitmask) {\n    return containsBitmask(this.state, bitmask);\n  }\n  stateSwitch(newState) {\n    let allowedStates;\n    switch (this.state) {\n      case 2 /* Possible */:\n        allowedStates = 4 /* Began */ | 128 /* Recognized */ | 32 /* Failed */;\n        break;\n      case 4 /* Began */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 8 /* Changed */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 128 /* Recognized */:\n      case 16 /* Ended */:\n      case 64 /* Cancelled */:\n      case 32 /* Failed */:\n        allowedStates = 2 /* Possible */;\n        break;\n      default:\n        allowedStates = 0;\n    }\n    if (!containsBitmask(newState, allowedStates)) {\n      console.warn(`Unallowed state change from ${stateName(this.state)} to ${stateName(newState)}`);\n      return;\n    }\n    this.setState(newState);\n  }\n  cancel() {\n    if (this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      this.setState(64 /* Cancelled */);\n    }\n    this.reset();\n  }\n  reset() {\n    if (!this.hasState(2 /* Possible */)) {\n      this.stateSwitch(2 /* Possible */);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/MouseWheelGestureRecognizer.ts\nvar MouseWheelGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    this.eventType = \"mousewheel\";\n    this.onMouseWheelEnd = debounce((event) => {\n      if (this.handler && this.startEvent) {\n        this.stateSwitch(16 /* Ended */);\n        this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n        this.startEvent = null;\n        this.reset();\n      }\n    }, 300);\n  }\n  pointerSessionBegan(session, event) {\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n  }\n  mouseWheel(session, event) {\n    if (!this.handler)\n      return;\n    if (this.hasState(2 /* Possible */)) {\n      this.startEvent = event;\n      this.stateSwitch(4 /* Began */);\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n      return;\n    }\n    if (this.hasState(4 /* Began */ | 8 /* Changed */) && this.startEvent) {\n      this.stateSwitch(8 /* Changed */);\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n    this.onMouseWheelEnd(event);\n  }\n};\n\n// ../../library/src/events/recognizer/PanGestureRecognizer.ts\nvar PanGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    this.eventType = \"pan\";\n  }\n  pointerSessionBegan(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionMoved(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionEnded(session, event) {\n    this.panend(event);\n  }\n  recognize(session, event) {\n    if (Math.abs(event.delta.x) > 0 || Math.abs(event.delta.y) > 0) {\n      if (this.startEvent) {\n        this.pan(event);\n      } else {\n        this.panstart(event);\n      }\n    }\n  }\n  reset() {\n    this.startEvent = null;\n    super.reset();\n  }\n  panstart(event) {\n    if (!this.hasState(2 /* Possible */) || event.isLeftMouseClick !== void 0 && !event.isLeftMouseClick) {\n      return;\n    }\n    this.stateSwitch(4 /* Began */);\n    this.startEvent = event;\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n    }\n  }\n  pan(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(8 /* Changed */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n  }\n  panend(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(16 /* Ended */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/TapGestureRecognizer.ts\nvar TapGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    this.eventType = \"tap\";\n  }\n  pointerSessionBegan(session, event) {\n    if (this.handler && (event.isLeftMouseClick === void 0 || event.isLeftMouseClick)) {\n      this.handler.gestureBegan(this.eventType, event, null);\n    }\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n    if (this.isPrevented) {\n      this.stateSwitch(32 /* Failed */);\n    } else if (!session.startEvent || session.startEvent.target === event.target) {\n      this.stateSwitch(128 /* Recognized */);\n      if (this.handler) {\n        this.handler.gestureChanged(this.eventType, event, null);\n      }\n    } else {\n      this.stateSwitch(32 /* Failed */);\n    }\n    if (this.handler) {\n      this.handler.gestureEnded(this.eventType, event, null);\n    }\n  }\n};\n\n// ../../library/src/events/FramerEventSession.ts\nvar FramerEventSession = class {\n  constructor(dispatcher, customOrigin) {\n    this.events = [];\n    this.recognizers = [];\n    this.mouseWheelRecognizer = new MouseWheelGestureRecognizer();\n    this.dispatcher = dispatcher;\n    if (customOrigin) {\n      this.originElement = customOrigin;\n    } else {\n      this.originElement = document.body;\n    }\n    const pan = new PanGestureRecognizer();\n    const tap = new TapGestureRecognizer();\n    pan.handler = this;\n    tap.handler = this;\n    this.mouseWheelRecognizer.handler = this;\n    this.recognizers = [tap, pan];\n  }\n  get isStarted() {\n    return this.events.length !== 0;\n  }\n  get startEvent() {\n    return this.isStarted ? this.events[0] : void 0;\n  }\n  get lastEvent() {\n    return this.events[this.events.length - 1];\n  }\n  processEvent(event) {\n    this.events.push(event);\n    return event;\n  }\n  pointerDown(event) {\n    if (this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.cancel();\n      r.pointerSessionBegan(this, event);\n    });\n  }\n  pointerMove(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionMoved(this, event);\n    });\n  }\n  pointerUp(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionEnded(this, event);\n    });\n    this.clearEvents();\n    this.recognizers.map((r) => {\n      r.reset();\n    });\n  }\n  mouseWheel(event) {\n    this.processEvent(event);\n    this.mouseWheelRecognizer.mouseWheel(this, event);\n    this.clearEvents();\n  }\n  clearEvents() {\n    this.events = [];\n  }\n  dispatch(type, event, target = null) {\n    const dispatchTarget = target || this.startEvent && this.startEvent.target || event.target;\n    if (dispatchTarget) {\n      this.dispatcher(type, event, dispatchTarget);\n    }\n  }\n  gestureBegan(type, event, target) {\n    this.dispatch(`${type}start`, event, target);\n  }\n  gestureChanged(type, event, target) {\n    this.dispatch(type, event, target);\n  }\n  gestureEnded(type, event, target) {\n    this.dispatch(`${type}end`, event, target);\n  }\n  velocity(t = Loop.TimeStep * 2) {\n    var _a;\n    if (!this.isStarted || this.events.length < 2) {\n      return { x: 0, y: 0 };\n    }\n    const events2 = this.events;\n    let i = events2.length - 1;\n    let event = null;\n    while (i >= 0) {\n      event = (_a = events2[i]) != null ? _a : null;\n      if (!event || MainLoop.time - event.loopTime > t) {\n        break;\n      }\n      i--;\n    }\n    if (!event) {\n      return { x: 0, y: 0 };\n    }\n    const current = events2[events2.length - 1];\n    if (!current) {\n      return { x: 0, y: 0 };\n    }\n    const time2 = (MainLoop.time - event.loopTime) * 1e3;\n    if (time2 === 0) {\n      return { x: 0, y: 0 };\n    }\n    const velocity = {\n      x: (current.devicePoint.x - event.devicePoint.x) / time2,\n      y: (current.devicePoint.y - event.devicePoint.y) / time2\n    };\n    if (velocity.x === Infinity) {\n      velocity.x = 0;\n    }\n    if (velocity.y === Infinity) {\n      velocity.y = 0;\n    }\n    return velocity;\n  }\n  offset(event) {\n    if (!this.startEvent) {\n      return { x: 0, y: 0 };\n    }\n    const subtract = (pointA, pointB) => {\n      return {\n        x: pointA.x - pointB.x,\n        y: pointA.y - pointB.y\n      };\n    };\n    return subtract(event.devicePoint, this.startEvent.devicePoint);\n  }\n};\n\n// ../../library/src/events/recognizer/MouseEventListener.ts\nimport { Component as Component7 } from \"react\";\nvar MouseEventListener = class extends Component7 {\n  constructor() {\n    super(...arguments);\n    this.domMouseDown = (originalEvent) => {\n      safeWindow.addEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.addEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    };\n    this.domMouseMove = (originalEvent) => {\n      const leftMouseButtonOnlyDown = originalEvent.buttons === void 0 ? originalEvent.which === 1 : originalEvent.buttons === 1;\n      if (!leftMouseButtonOnlyDown) {\n        this.domMouseUp(originalEvent);\n        return;\n      }\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    };\n    this.domMouseUp = (originalEvent) => {\n      safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    };\n    this.domMouseWheel = (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.mouseWheel(event);\n    };\n  }\n  render() {\n    return this.props.children;\n  }\n  componentDidMount() {\n    safeWindow.addEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.addEventListener(\"wheel\", this.domMouseWheel);\n  }\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n    safeWindow.removeEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n    safeWindow.removeEventListener(\"wheel\", this.domMouseWheel);\n  }\n};\n\n// ../../library/src/events/recognizer/TouchEventListener.ts\nimport { Component as Component8 } from \"react\";\nvar TouchEventListener = class extends Component8 {\n  constructor() {\n    super(...arguments);\n    this.domTouchStart = (originalEvent) => {\n      safeWindow.addEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.addEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    };\n    this.domTouchMove = (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    };\n    this.domTouchEnd = (originalEvent) => {\n      safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    };\n  }\n  render() {\n    return this.props.children;\n  }\n  componentDidMount() {\n    safeWindow.addEventListener(\"touchstart\", this.domTouchStart);\n  }\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"touchstart\", this.domTouchStart);\n    safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n    safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n  }\n};\n\n// ../../library/src/events/FramerEventListener.ts\nvar FramerEventListener = /* @__PURE__ */ environment.isTouch() ? TouchEventListener : MouseEventListener;\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport React54 from \"react\";\n\n// ../../library/src/components/Scroll/EmulatedScroll.tsx\nimport React51, { useCallback as useCallback4, useMemo as useMemo3, useRef as useRef8 } from \"react\";\nvar directionMap = {\n  horizontal: \"x\",\n  vertical: \"y\",\n  both: true\n};\nfunction convertScrollDirectionToDrag(scrollDirection) {\n  return scrollDirection ? directionMap[scrollDirection] : scrollDirection;\n}\nvar useUpdateChildSize = ({\n  dragDirection,\n  children,\n  fromCanvasComponent\n}) => {\n  return useMemo3(() => {\n    return React51.Children.map(children, (child) => {\n      if (child === null || typeof child !== \"object\" || typeof child.type === \"string\") {\n        return child;\n      }\n      const updatedSize = {};\n      switch (dragDirection) {\n        case \"vertical\":\n          updatedSize.width = \"100%\";\n          break;\n        case \"horizontal\":\n          updatedSize.height = \"100%\";\n          break;\n        default:\n          return child;\n      }\n      const update = fromCanvasComponent ? { style: Object.assign({}, child.props.style, updatedSize) } : updatedSize;\n      return React51.cloneElement(child, update);\n    });\n  }, [dragDirection, children]);\n};\nvar numberFromOptionalMotionValue = (value) => {\n  return typeof value === \"number\" ? value : value.get();\n};\nvar EmulatedScroll = /* @__PURE__ */ React51.forwardRef(\n  function EmulatedScroll2(props, forwardedRef) {\n    const {\n      direction = \"vertical\",\n      directionLock = false,\n      dragEnabled = true,\n      dragElastic,\n      dragMomentum,\n      dragTransition,\n      wheelEnabled = true,\n      contentOffsetX = 0,\n      contentOffsetY = 0,\n      contentWidth,\n      contentHeight,\n      onScrollStart,\n      onScroll,\n      onScrollEnd,\n      onDragStart,\n      onDrag,\n      onDragEnd,\n      onUpdate,\n      onDirectionLock,\n      style,\n      children,\n      scrollAnimate,\n      resetOffset,\n      overdragEnabled = true,\n      layoutId: specificLayoutId,\n      native,\n      ...containerProps\n    } = props;\n    const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n    const defaultX = useMotionValue(typeof contentOffsetX === \"number\" ? contentOffsetX : 0);\n    const defaultY = useMotionValue(typeof contentOffsetY === \"number\" ? contentOffsetY : 0);\n    const x = isMotionValue2(contentOffsetX) ? contentOffsetX : defaultX;\n    const y = isMotionValue2(contentOffsetY) ? contentOffsetY : defaultY;\n    const measuredConstraints = useRef8(null);\n    const dragControls = useDragControls();\n    const isInTarget = useIsInCurrentNavigationTarget();\n    const wasInTargetRef = useRef8(true);\n    injectComponentCSSRules();\n    function setMeasureDragConstraints(constraints) {\n      constraints = offsetToZero(constraints);\n      if (contentWidth !== void 0)\n        constraints.left = -contentWidth;\n      if (contentHeight !== void 0)\n        constraints.top = -contentHeight;\n      return measuredConstraints.current = constraints;\n    }\n    const { initial, prev } = useRef8({\n      initial: { x: 0, y: 0 },\n      prev: { x: 0, y: 0 }\n    }).current;\n    const isPreview = RenderTarget.current() === \"PREVIEW\" /* preview */;\n    const containerFallbackRef = useRef8(null);\n    const containerRef = forwardedRef || containerFallbackRef;\n    const contentRef = useRef8(null);\n    const lastOffsetRef = useRef8(null);\n    function shouldResetScroll(inTarget) {\n      const hasEnteredTarget = inTarget && wasInTargetRef.current === false;\n      return resetOffset && hasEnteredTarget;\n    }\n    function measureAndUpdateScrollOffset() {\n      if (!contentRef.current || !containerRef.current)\n        return;\n      const mustReset = shouldResetScroll(isInTarget);\n      wasInTargetRef.current = isInTarget;\n      const previous = lastOffsetRef.current;\n      if (previous === null && contentOffsetX === void 0 && contentOffsetY === void 0)\n        return;\n      const shouldUpdateOffset = previous === null || !isMotionValue2(contentOffsetX) && contentOffsetX !== previous.offsetX || !isMotionValue2(contentOffsetY) && contentOffsetY !== previous.offsetY;\n      const currentMaxXOffset = contentRef.current.offsetWidth - containerRef.current.offsetWidth;\n      const currentMaxYOffset = contentRef.current.offsetHeight - containerRef.current.offsetHeight;\n      const hasSizeChanged = currentMaxXOffset !== (previous == null ? void 0 : previous.maxXOffset) || currentMaxYOffset !== (previous == null ? void 0 : previous.maxYOffset);\n      const hasScrollOffsetChanged = (previous == null ? void 0 : previous.x) !== x.get() || (previous == null ? void 0 : previous.y) !== y.get();\n      const shouldStayPinned = hasSizeChanged && !hasScrollOffsetChanged;\n      if (mustReset || shouldUpdateOffset || shouldStayPinned) {\n        const currentOffsetX = direction !== \"vertical\" ? numberFromOptionalMotionValue(contentOffsetX) : 0;\n        const currentOffsetY = direction !== \"horizontal\" ? numberFromOptionalMotionValue(contentOffsetY) : 0;\n        const nextXOffset = -Math.min(currentOffsetX, currentMaxXOffset);\n        const nextYOffset = -Math.min(currentOffsetY, currentMaxYOffset);\n        x.set(nextXOffset);\n        y.set(nextYOffset);\n        lastOffsetRef.current = {\n          maxXOffset: currentMaxXOffset,\n          maxYOffset: currentMaxYOffset,\n          offsetX: currentOffsetX,\n          offsetY: currentOffsetY,\n          x: nextXOffset,\n          y: nextYOffset\n        };\n      }\n    }\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() !== \"CANVAS\" /* canvas */)\n        return;\n      measureAndUpdateScrollOffset();\n    });\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() === \"CANVAS\" /* canvas */)\n        return;\n      measureAndUpdateScrollOffset();\n    }, []);\n    React51.useEffect(() => {\n      if (shouldResetScroll(isInTarget))\n        measureAndUpdateScrollOffset();\n      if (isInTarget === false)\n        wasInTargetRef.current = false;\n    }, [isInTarget]);\n    const getLatestPoint = () => ({ x: x.get(), y: y.get() });\n    const resetInitialPoint = useCallback4(() => {\n      const point = getLatestPoint();\n      initial.x = point.x;\n      initial.y = point.y;\n      prev.x = point.x;\n      prev.y = point.y;\n    }, []);\n    const getPointData = useCallback4(() => {\n      const point = getLatestPoint();\n      const data2 = {\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      };\n      prev.x = point.x;\n      prev.y = point.y;\n      return data2;\n    }, [x, y]);\n    const updateScrollListeners = useCallback4(() => {\n      onUpdate && onUpdate({ x: x.get(), y: y.get() });\n      onScroll && onScroll(getPointData());\n    }, [onScroll, onUpdate, getPointData, x, y]);\n    const scheduleUpdateScrollListeners = useCallback4(() => {\n      sync.update(updateScrollListeners, false, true);\n    }, [updateScrollListeners]);\n    const onMotionDragStart = (event, info) => {\n      resetInitialPoint();\n      onDragStart && onDragStart(event, info);\n      onScrollStart && onScrollStart(info);\n    };\n    const onMotionDragTransitionEnd = () => onScrollEnd && onScrollEnd(getPointData());\n    const onWheelScrollStart = (info) => {\n      onScrollStart == null ? void 0 : onScrollStart(info);\n    };\n    useWheelScroll(containerRef, {\n      enabled: wheelEnabled,\n      initial,\n      prev,\n      direction,\n      offsetX: x,\n      offsetY: y,\n      onScrollStart: onWheelScrollStart,\n      onScroll,\n      onScrollEnd,\n      constraints: measuredConstraints\n    });\n    const overdragX = useMotionValue(0);\n    const overdragY = useMotionValue(0);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollX = (xValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement))\n          return;\n        element.scrollLeft = -xValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragXValue = 0;\n          if (xValue > constraints.right)\n            overdragXValue = xValue;\n          if (xValue < constraints.left)\n            overdragXValue = xValue - constraints.left;\n          overdragX.set(overdragXValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentX = x.get();\n      if (currentX !== 0)\n        setScrollX(currentX);\n      return x.onChange(setScrollX);\n    }, [x, overdragX, scheduleUpdateScrollListeners, overdragEnabled]);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollY = (yValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement))\n          return;\n        element.scrollTop = -yValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragYValue = 0;\n          if (yValue > constraints.bottom)\n            overdragYValue = yValue;\n          if (yValue < constraints.top)\n            overdragYValue = yValue - constraints.top;\n          overdragY.set(overdragYValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentY = y.get();\n      if (currentY !== 0)\n        setScrollY(currentY);\n      return y.onChange(setScrollY);\n    }, [y, overdragY, scheduleUpdateScrollListeners, overdragEnabled]);\n    const nativeOnScroll = React51.useCallback(() => {\n      const element = containerRef.current;\n      if (!(element instanceof HTMLDivElement))\n        return;\n      const xDelta = Math.abs(x.get() + element.scrollLeft);\n      const yDelta = Math.abs(y.get() + element.scrollTop);\n      if (xDelta > 1)\n        x.set(-element.scrollLeft);\n      if (yDelta > 1)\n        y.set(-element.scrollTop);\n    }, [x, y]);\n    const isEmpty2 = React51.Children.count(children) === 0;\n    const width = direction !== \"vertical\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const height = direction !== \"horizontal\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const size2 = !containerProps.__fromCanvasComponent ? {\n      width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n      height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n    } : {};\n    return /* @__PURE__ */ React51.createElement(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"Scroll\",\n        background: \"none\",\n        ...containerProps,\n        ...size2,\n        style: {\n          ...style,\n          willChange: isPreview ? \"transform\" : void 0,\n          overflow: \"hidden\"\n        },\n        onScroll: nativeOnScroll,\n        preserve3d: containerProps.preserve3d,\n        ref: containerRef,\n        layoutId,\n        layoutScroll: true,\n        onBeforeLayoutMeasure: measureAndUpdateScrollOffset\n      },\n      /* @__PURE__ */ React51.createElement(\n        FrameWithMotion,\n        {\n          \"data-framer-component-type\": \"ScrollContentWrapper\",\n          animate: scrollAnimate,\n          drag: dragEnabled && convertScrollDirectionToDrag(direction),\n          dragDirectionLock: directionLock,\n          dragElastic,\n          dragMomentum,\n          dragTransition,\n          dragConstraints: containerRef,\n          dragControls,\n          onDragStart: onMotionDragStart,\n          onDrag,\n          onDragEnd,\n          onDragTransitionEnd: onMotionDragTransitionEnd,\n          onDirectionLock,\n          onMeasureDragConstraints: setMeasureDragConstraints,\n          width,\n          height,\n          _dragX: x,\n          _dragY: y,\n          position: \"relative\",\n          x: overdragEnabled ? overdragX : void 0,\n          y: overdragEnabled ? overdragY : void 0,\n          ref: contentRef,\n          style: {\n            display: isEmpty2 ? \"block\" : \"inline-block\",\n            willChange: isPreview ? \"transform\" : void 0,\n            backgroundColor: \"transparent\",\n            overflow: \"visible\",\n            minWidth: \"100%\",\n            minHeight: \"100%\"\n          },\n          preserve3d: containerProps.preserve3d\n        },\n        /* @__PURE__ */ React51.createElement(\n          EmptyState,\n          {\n            children,\n            size: {\n              width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n              height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n            },\n            insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n            title: \"Scroll\",\n            description: \"Click and drag the connector to any frame on the canvas \\u2192\"\n          }\n        ),\n        useUpdateChildSize({\n          dragDirection: direction,\n          children,\n          fromCanvasComponent: containerProps.__fromCanvasComponent\n        })\n      )\n    );\n  }\n);\nfunction offsetToZero({ top, left, right, bottom }) {\n  const width = right - left;\n  const height = bottom - top;\n  return {\n    top: -height,\n    left: -width,\n    right: 0,\n    bottom: 0\n  };\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nimport React53 from \"react\";\n\n// ../../library/src/modules/cx.ts\nfunction cx(...classNames) {\n  return classNames.filter(Boolean).join(\" \");\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nimport React52, { useEffect as useEffect5 } from \"react\";\n\n// ../../library/src/components/utils/animatePointWithInertia.ts\nfunction isRunningAnimation(...phases) {\n  let runningAny = false;\n  let cancelledAny = false;\n  phases.forEach((phase) => {\n    runningAny = runningAny || phase === 1 /* Running */;\n    cancelledAny = cancelledAny || phase === 3 /* Cancelled */;\n  });\n  return runningAny && !cancelledAny;\n}\nfunction didFinishAnimations(...phases) {\n  return phases.every((phase) => phase === 0 /* None */ || phase === 2 /* Completed */);\n}\nvar timeConstant = 400;\nfunction animatePointWithInertia({\n  from,\n  velocity,\n  onUpdate,\n  onComplete,\n  onStop\n}) {\n  const latest = from;\n  let animationPhaseX = 0 /* None */;\n  let animationPhaseY = 0 /* None */;\n  const animations2 = [];\n  const updateHandler = () => {\n    if (isRunningAnimation(animationPhaseX, animationPhaseY)) {\n      onUpdate(latest);\n    }\n  };\n  const completionHandler = () => {\n    if (didFinishAnimations(animationPhaseX, animationPhaseY)) {\n      onComplete();\n    }\n  };\n  if (velocity.x) {\n    animationPhaseX = 1 /* Running */;\n    animations2.push(\n      inertia({\n        from: from.x,\n        velocity: -velocity.x,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.x = value;\n          sync.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseX !== 1 /* Running */) {\n            throw Error(\"animation x should be running when completing\");\n          }\n          animationPhaseX = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (velocity.y) {\n    animationPhaseY = 1 /* Running */;\n    animations2.push(\n      inertia({\n        from: from.y,\n        velocity: -velocity.y,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.y = value;\n          sync.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseY !== 1 /* Running */) {\n            throw Error(\"animation y should be running when completing\");\n          }\n          animationPhaseY = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (!isRunningAnimation(animationPhaseX, animationPhaseY)) {\n    completionHandler();\n  }\n  return {\n    stop: () => {\n      if (!isRunningAnimation(animationPhaseX, animationPhaseY))\n        return;\n      animations2.forEach((animation) => animation.stop());\n      animationPhaseX = animationPhaseX === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseX;\n      animationPhaseY = animationPhaseY === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseY;\n      onStop();\n    }\n  };\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nvar scrollThreshold = 3;\nvar isTouchDevice = /* @__PURE__ */ isTouch();\nvar isSafariBrowser = /* @__PURE__ */ isSafari();\nfunction getTouchAction(element) {\n  if (!(element instanceof HTMLElement))\n    return null;\n  return element.style.touchAction;\n}\nfunction canPanInDirection(element, direction) {\n  switch (direction) {\n    case \"horizontal\":\n      return getTouchAction(element) === \"pan-x\";\n    case \"vertical\":\n      return getTouchAction(element) === \"pan-y\";\n    default:\n      return false;\n  }\n}\nfunction isInteractiveElement(element) {\n  const tag = element.tagName.toLowerCase();\n  if (tag === \"input\")\n    return true;\n  if (tag === \"text\")\n    return true;\n  if (tag === \"textarea\")\n    return true;\n  return false;\n}\nfunction canStartScrollFromElement(element, direction) {\n  if (!(element instanceof Element))\n    return false;\n  if (isInteractiveElement(element))\n    return false;\n  if (element.hasAttribute(\"draggable\")) {\n    if (!canPanInDirection(element, direction)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getEventPoint(event) {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n}\nfunction setStyle(element, property, value) {\n  if (element == null ? void 0 : element.style) {\n    element.style[property] = value;\n  }\n}\nfunction getStyle(element, property) {\n  var _a;\n  return (_a = element == null ? void 0 : element.style) == null ? void 0 : _a[property];\n}\nvar emptyObject = {};\nObject.freeze(emptyObject);\nfunction useEmulateTouchScroll(ref, direction, enabled) {\n  if (isTouchDevice)\n    return emptyObject;\n  if (RenderTarget.current() !== \"PREVIEW\" /* preview */)\n    return emptyObject;\n  const scrollAnimationControlsRef = React52.useRef(null);\n  useEffect5(() => {\n    if (!ref.current)\n      return;\n    const element = ref.current;\n    let phase = 0 /* Idle */;\n    let targets = null;\n    let downPoint = null;\n    let scrollOffsetStart = null;\n    let mouseMoveEvents = [];\n    function onMouseMove(event) {\n      var _a;\n      switch (phase) {\n        case 0 /* Idle */:\n        case 4 /* DragAnimation */:\n        case 3 /* DragLocked */:\n          return;\n      }\n      if (event.metaKey)\n        return;\n      const point = getEventPoint(event);\n      if (!downPoint)\n        return;\n      const offset = Point.subtract(point, downPoint);\n      if (phase === 1 /* TouchDown */ || phase === 5 /* Interrupted */) {\n        const deltaX = Math.abs(offset.x);\n        const deltaY = Math.abs(offset.y);\n        if ((deltaX > scrollThreshold || deltaY > scrollThreshold) && deltaX !== deltaY) {\n          const scrollDirection = deltaX > deltaY ? \"horizontal\" : \"vertical\";\n          const shouldIgnoreBecauseOfDirectionLock = direction === \"horizontal\" && scrollDirection === \"vertical\" || direction === \"vertical\" && scrollDirection === \"horizontal\";\n          if (shouldIgnoreBecauseOfDirectionLock) {\n            phase = 3 /* DragLocked */;\n            return;\n          }\n          phase = 2 /* Drag */;\n          targets == null ? void 0 : targets.forEach(([target]) => setStyle(target, \"pointerEvents\", \"none\"));\n        }\n      }\n      if (isSafariBrowser)\n        event.preventDefault();\n      if (phase !== 2 /* Drag */)\n        return;\n      (_a = safeWindow.getSelection()) == null ? void 0 : _a.empty();\n      mouseMoveEvents = getRecentEvents([...mouseMoveEvents, event]);\n      if (scrollOffsetStart) {\n        if (direction !== \"vertical\")\n          element.scrollLeft = scrollOffsetStart.x - offset.x;\n        if (direction !== \"horizontal\")\n          element.scrollTop = scrollOffsetStart.y - offset.y;\n      }\n    }\n    function onMouseUp(event) {\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove, false);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      if (phase === 2 /* Drag */ && targets) {\n        targets.forEach(\n          ([target, originalPointerEventsValue]) => setStyle(target, \"pointerEvents\", originalPointerEventsValue || \"auto\")\n        );\n      }\n      targets = null;\n      const velocity = calculateVelocity({ mouseMoveEvents, mouseUpEvent: event });\n      downPoint = null;\n      if (phase === 2 /* Drag */) {\n        const shouldAnimateY = direction !== \"horizontal\" && velocity.y !== 0;\n        const shouldAnimateX = direction !== \"vertical\" && velocity.x !== 0;\n        if (!shouldAnimateY && !shouldAnimateX) {\n          phase = 0 /* Idle */;\n          return;\n        }\n        phase = 4 /* DragAnimation */;\n        scrollAnimationControlsRef.current = animatePointWithInertia({\n          from: { x: element.scrollLeft, y: element.scrollTop },\n          velocity: {\n            x: shouldAnimateX ? velocity.x : 0,\n            y: shouldAnimateY ? velocity.y : 0\n          },\n          onUpdate: (position) => {\n            if (shouldAnimateX)\n              element.scrollLeft = position.x;\n            if (shouldAnimateY)\n              element.scrollTop = position.y;\n          },\n          onStop: () => {\n            if (phase !== 5 /* Interrupted */) {\n              phase = 0 /* Idle */;\n            }\n            scrollAnimationControlsRef.current = null;\n          },\n          onComplete: () => {\n            if (phase !== 4 /* DragAnimation */) {\n              throw Error(\"On animation completion we should still be in the animation phase\");\n            }\n            phase = 0 /* Idle */;\n            scrollAnimationControlsRef.current = null;\n          }\n        });\n      } else {\n        phase = 0 /* Idle */;\n      }\n    }\n    function onMouseWheel() {\n      var _a;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    }\n    function onMouseDown(event) {\n      var _a;\n      if (!enabled)\n        return;\n      if (event.metaKey)\n        return;\n      if (!canStartScrollFromElement(event.target, direction)) {\n        if (phase === 4 /* DragAnimation */) {\n          phase = 0 /* Idle */;\n          (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n        }\n        return;\n      }\n      const previousPhase = phase;\n      phase = previousPhase === 4 /* DragAnimation */ ? 5 /* Interrupted */ : 1 /* TouchDown */;\n      downPoint = getEventPoint(event);\n      targets = document.elementsFromPoint(downPoint.x, downPoint.y).filter(\n        (targetEl) => targetEl instanceof HTMLElement || targetEl instanceof SVGElement\n      ).map((targetEl) => [targetEl, getStyle(targetEl, \"pointerEvents\")]);\n      scrollOffsetStart = { x: element.scrollLeft, y: element.scrollTop };\n      mouseMoveEvents = [];\n      if (scrollAnimationControlsRef.current) {\n        if (previousPhase !== 4 /* DragAnimation */) {\n          throw Error(\"When stopping a drag animation we need to be animating\");\n        }\n        scrollAnimationControlsRef.current.stop();\n      }\n      safeWindow.addEventListener(\"mousemove\", onMouseMove);\n      safeWindow.addEventListener(\"mouseup\", onMouseUp);\n      element.addEventListener(\"mousewheel\", onMouseWheel);\n    }\n    element.addEventListener(\"mousedown\", onMouseDown);\n    return () => {\n      var _a;\n      element.removeEventListener(\"mousedown\", onMouseDown);\n      element.removeEventListener(\"mousewheel\", onMouseWheel);\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      phase = 5 /* Interrupted */;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    };\n  }, [ref, direction, enabled]);\n  return React52.useMemo(() => {\n    return {\n      cancelEmulatedTouchScrollAnimation: () => {\n        var _a;\n        (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n      }\n    };\n  }, []);\n}\nvar timeDelta = 4 / 60 * 1e3;\nfunction getRecentEvents(events2) {\n  const currentTime = new CustomEvent(\"getTime\").timeStamp;\n  const maxAge = currentTime - timeDelta;\n  return events2.filter((event) => event.timeStamp > maxAge);\n}\nvar zeroPoint = { x: 0, y: 0 };\nfunction calculateVelocity({\n  mouseMoveEvents,\n  mouseUpEvent\n}) {\n  const recentMouseMoveEvents = getRecentEvents(mouseMoveEvents);\n  const oldestMouseMoveEvent = recentMouseMoveEvents[0];\n  if (!oldestMouseMoveEvent)\n    return zeroPoint;\n  const deltaX = mouseUpEvent.clientX - oldestMouseMoveEvent.clientX;\n  const deltaY = mouseUpEvent.clientY - oldestMouseMoveEvent.clientY;\n  const time2 = mouseUpEvent.timeStamp - oldestMouseMoveEvent.timeStamp;\n  if (time2 === 0)\n    return zeroPoint;\n  return {\n    x: deltaX / time2 * 1e3,\n    y: deltaY / time2 * 1e3\n  };\n}\n\n// ../../library/src/components/utils/useUpdateScrollOffset.ts\nfunction useUpdateScrollOffset(ref, side, offset, cancelEmulatedTouchScrollAnimation) {\n  useIsomorphicLayoutEffect2(\n    () => {\n      if (isMotionValue2(offset)) {\n        const updateScrollLeft = () => {\n          cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n          const element = ref.current;\n          if (element)\n            element[side] = Math.abs(offset.get());\n        };\n        updateScrollLeft();\n        return offset.onChange(updateScrollLeft);\n      } else if (isFiniteNumber(offset)) {\n        const element = ref.current;\n        if (!element)\n          return;\n        cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n        element[side] = Math.abs(offset);\n      }\n    },\n    [offset]\n  );\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nvar NativeScroll = /* @__PURE__ */ React53.forwardRef(function NativeScroll2(props, forwardedRef) {\n  const {\n    direction = \"vertical\",\n    scrollBarVisible = false,\n    dragEnabled = true,\n    contentOffsetX = 0,\n    contentOffsetY = 0,\n    contentWidth,\n    contentHeight,\n    children,\n    resetOffset,\n    onScroll,\n    className,\n    directionLock = false,\n    wheelEnabled = true,\n    scrollAnimate,\n    dragTransition,\n    dragMomentum,\n    dragElastic,\n    overdragEnabled = true,\n    onScrollStart,\n    onScrollEnd,\n    onDragStart,\n    onDrag,\n    onDragEnd,\n    onUpdate,\n    onDirectionLock,\n    layoutId: specificLayoutId,\n    native,\n    ...containerProps\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n  const fallbackRef = React53.useRef(null);\n  const ref = forwardedRef || fallbackRef;\n  const { cancelEmulatedTouchScrollAnimation } = useEmulateTouchScroll(ref, direction, dragEnabled);\n  injectComponentCSSRules();\n  const isInTarget = useIsInCurrentNavigationTarget();\n  const previousIsInTargetRef = React53.useRef(isInTarget);\n  const updateScrollOffsetHandler = () => {\n    if (!resetOffset)\n      return;\n    const previousIsTarget = previousIsInTargetRef.current;\n    previousIsInTargetRef.current = isInTarget;\n    const shouldResetOffset = isInTarget && !previousIsTarget;\n    if (!shouldResetOffset)\n      return;\n    const element = ref.current;\n    if (!element)\n      return;\n    if (direction !== \"vertical\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollLeft = Math.abs(isMotionValue2(contentOffsetX) ? contentOffsetX.get() : contentOffsetX);\n    }\n    if (direction !== \"horizontal\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollTop = Math.abs(isMotionValue2(contentOffsetY) ? contentOffsetY.get() : contentOffsetY);\n    }\n  };\n  useIsomorphicLayoutEffect2(updateScrollOffsetHandler, [isInTarget]);\n  useUpdateScrollOffset(ref, \"scrollLeft\", contentOffsetX, cancelEmulatedTouchScrollAnimation);\n  useUpdateScrollOffset(ref, \"scrollTop\", contentOffsetY, cancelEmulatedTouchScrollAnimation);\n  const size2 = !containerProps.__fromCanvasComponent ? {\n    width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n    height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n  } : {};\n  return /* @__PURE__ */ React53.createElement(\n    FrameWithMotion,\n    {\n      ref,\n      \"data-framer-component-type\": \"NativeScroll\",\n      background: \"none\",\n      ...containerProps,\n      ...size2,\n      onScroll,\n      layoutId,\n      onBeforeLayoutMeasure: updateScrollOffsetHandler,\n      layoutScroll: true,\n      className: cx(className, `direction-${direction}`, !scrollBarVisible && \"scrollbar-hidden\")\n    },\n    /* @__PURE__ */ React53.createElement(\n      EmptyState,\n      {\n        children,\n        size: {\n          width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n          height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n        },\n        insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n        title: \"Scroll\",\n        description: \"Click and drag the connector to any frame on the canvas \\u2192\"\n      }\n    ),\n    children\n  );\n});\n\n// ../../library/src/components/Scroll/Scroll.tsx\nvar Scroll = /* @__PURE__ */ (() => {\n  const ScrollInner = React54.forwardRef(function ScrollInner2(props, forwardedRef) {\n    if (props.native) {\n      return /* @__PURE__ */ React54.createElement(NativeScroll, { ref: forwardedRef, ...props });\n    } else {\n      return /* @__PURE__ */ React54.createElement(EmulatedScroll, { ref: forwardedRef, ...props });\n    }\n  });\n  addPropertyControls(ScrollInner, {\n    native: {\n      type: \"boolean\" /* Boolean */,\n      defaultValue: false\n    },\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      title: \"Direction\",\n      options: [\"vertical\", \"horizontal\", \"both\"],\n      defaultValue: \"vertical\"\n    },\n    contentOffsetX: {\n      type: \"number\" /* Number */,\n      title: \"Offset X\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"vertical\"\n    },\n    contentOffsetY: {\n      type: \"number\" /* Number */,\n      title: \"Offset Y\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"horizontal\"\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    overdragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Overdrag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    scrollBarVisible: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Scroll Bar\",\n      enabledTitle: \"Visible\",\n      disabledTitle: \"Hidden\",\n      defaultValue: false,\n      hidden: ({ native }) => native === false\n    },\n    resetOffset: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Reset\",\n      defaultValue: false\n    }\n  });\n  ScrollInner.supportsConstraints = true;\n  return ScrollInner;\n})();\n\n// ../../library/src/components/useNavigation.ts\nimport { useContext as useContext9 } from \"react\";\nfunction useNavigation() {\n  return useContext9(NavigationContext);\n}\n\n// ../../library/src/data/Data.ts\nvar data = /* @__PURE__ */ (() => {\n  function Data2(initial = {}) {\n    const _data = ObservableObject(initial, false, false);\n    Data2.addData(_data);\n    return _data;\n  }\n  Data2._stores = [];\n  Data2.addData = (_data) => {\n    Data2._stores.push(_data);\n  };\n  Data2.reset = () => {\n    Data2._stores.forEach((target) => ObservableObject.resetObject(target));\n  };\n  Data2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return Data2;\n})();\nvar Data = data;\n\n// ../../library/src/data/PropertyStore.ts\nvar PropertyStore = /* @__PURE__ */ (() => {\n  function PropertyStore2(initial = {}, makeAnimatables = false) {\n    deprecationWarning(\"PropertyStore\", \"1.0.0\", \"Data() or ObservableObject()\");\n    return ObservableObject(initial, makeAnimatables);\n  }\n  PropertyStore2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return PropertyStore2;\n})();\n\n// ../../library/src/data/useData/index.ts\nimport { createContext as createContext3, useContext as useContext10, useEffect as useEffect6, useMemo as useMemo4, useState } from \"react\";\n\n// ../../library/src/data/useData/store.ts\nfunction bindActionsToStore(get, set, actions) {\n  const boundActions = {};\n  for (const key7 in actions) {\n    const action = actions[key7];\n    if (!action)\n      continue;\n    boundActions[key7] = (data2) => set(action(get(), data2));\n  }\n  return boundActions;\n}\nfunction createStore(initialState2, unboundActions) {\n  let state = initialState2;\n  let version2 = 0;\n  const subscribers = /* @__PURE__ */ new Set();\n  const notifySubscriber = (sub) => sub(version2);\n  const get = () => state;\n  const set = (latestState) => {\n    version2++;\n    state = latestState;\n    subscribers.forEach(notifySubscriber);\n  };\n  const actions = unboundActions ? bindActionsToStore(get, set, unboundActions) : set;\n  return {\n    get,\n    set,\n    getVersion: () => version2,\n    getActions: () => actions,\n    subscribe: (sub) => {\n      subscribers.add(sub);\n      return () => subscribers.delete(sub);\n    }\n  };\n}\n\n// ../../library/src/data/useData/index.ts\nvar defaultId = /* @__PURE__ */ Symbol(\"default\");\nvar DataContext = /* @__PURE__ */ createContext3(defaultId);\nfunction createData(defaultState2, actions) {\n  const stores = /* @__PURE__ */ new Map();\n  const useData = (id, initialState2) => {\n    const contextId = useContext10(DataContext);\n    id = id || contextId;\n    const store = useMemo4(() => {\n      if (!stores.has(id)) {\n        stores.set(id, createStore(initialState2 || defaultState2, actions));\n      }\n      return stores.get(id);\n    }, [id]);\n    const [, notifyUpdates] = useState(store.getVersion());\n    const storeValueAtHookCallTime = useMemo4(() => store.get(), [store]);\n    useEffect6(() => {\n      const unsubscribe = store.subscribe(notifyUpdates);\n      if (storeValueAtHookCallTime !== store.get())\n        notifyUpdates(store.getVersion());\n      return unsubscribe;\n    }, [store, storeValueAtHookCallTime]);\n    return [store.get(), store.getActions()];\n  };\n  return useData;\n}\n\n// ../../library/src/deprecated/DataObserver.tsx\nimport React55, { Component as Component10 } from \"react\";\nvar initialState = { update: 0 };\nvar DataObserverContext = /* @__PURE__ */ React55.createContext({ update: NaN });\nfunction useObserveData() {\n  const context = React55.useContext(DataObserverContext);\n  return !isNaN(context.update);\n}\nvar DataObserver = class extends Component10 {\n  constructor() {\n    super(...arguments);\n    this.observers = [];\n    this.state = initialState;\n    this.taskAdded = false;\n    this.frameTask = () => {\n      this.setState({ update: this.state.update + 1 });\n      this.taskAdded = false;\n    };\n    this.observer = () => {\n      if (this.taskAdded)\n        return;\n      this.taskAdded = true;\n      MainLoop.addFrameTask(this.frameTask);\n    };\n  }\n  componentWillUnmount() {\n    this.observers.map((cancel) => cancel());\n    Data.reset();\n  }\n  render() {\n    const { children } = this.props;\n    this.observers.map((cancel) => cancel());\n    this.observers = [];\n    Data._stores.forEach((d) => {\n      const observer = Data.addObserver(d, this.observer);\n      this.observers.push(observer);\n    });\n    return /* @__PURE__ */ React55.createElement(DataObserverContext.Provider, { value: { ...this.state } }, children);\n  }\n};\n\n// ../../library/src/modules/withFX.tsx\nimport React59 from \"react\";\n\n// ../../library/src/modules/hocOptions.ts\nvar prefix = \"__framer__\";\nvar prefixLength = prefix.length;\nfunction extractPrefixedProps(props, keys3) {\n  const result = {};\n  const rest = {};\n  for (const key7 in props) {\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey && keys3.has(strippedKey)) {\n      result[strippedKey] = props[key7];\n      continue;\n    }\n    rest[key7] = props[key7];\n  }\n  return [result, rest];\n}\nfunction stripPrefixFromPrefixedKey(key7) {\n  if (key7.startsWith(prefix)) {\n    return key7.substr(prefixLength);\n  }\n  return void 0;\n}\n\n// ../../library/src/modules/useFXValues.ts\nvar effectValuesKeys = [\n  \"opacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"transformPerspective\"\n];\nvar makeFXValues = (defaults) => {\n  var _a, _b, _c, _d, _e, _f, _g, _h;\n  return {\n    x: motionValue((_a = defaults == null ? void 0 : defaults.x) != null ? _a : 0),\n    y: motionValue((_b = defaults == null ? void 0 : defaults.y) != null ? _b : 0),\n    opacity: motionValue((_c = defaults == null ? void 0 : defaults.opacity) != null ? _c : 1),\n    scale: motionValue((_d = defaults == null ? void 0 : defaults.scale) != null ? _d : 1),\n    rotate: motionValue((_e = defaults == null ? void 0 : defaults.rotate) != null ? _e : 0),\n    rotateX: motionValue((_f = defaults == null ? void 0 : defaults.rotateX) != null ? _f : 0),\n    rotateY: motionValue((_g = defaults == null ? void 0 : defaults.rotateY) != null ? _g : 0),\n    transformPerspective: motionValue((_h = defaults == null ? void 0 : defaults.transformPerspective) != null ? _h : 0)\n  };\n};\n\n// ../../library/src/modules/useParallax.ts\nimport React56 from \"react\";\n\n// ../../library/src/modules/parallaxTransform.ts\nfunction parallaxTransform(scrollY, originalPosition, speed, offset, adjustPosition) {\n  const speedFactor = speed / 100 - 1;\n  const initialPosition = adjustPosition ? (originalPosition - offset) * speedFactor : 0;\n  const scrollOffset = -scrollY * speedFactor;\n  return initialPosition + scrollOffset;\n}\n\n// ../../library/src/modules/useParallax.ts\nvar parallaxOptionsKeys = /* @__PURE__ */ new Set([\n  \"speed\",\n  \"adjustPosition\",\n  \"offset\",\n  \"parallaxTransformEnabled\"\n]);\nfunction useParallax(options, ref, visibilityStyle) {\n  const { speed = 1, offset = 0, adjustPosition = false, parallaxTransformEnabled } = options;\n  const originalPosition = React56.useRef(null);\n  const shouldReduceMotion = useReducedMotionConfig();\n  const transform2 = React56.useCallback(\n    (yValue) => {\n      if (originalPosition.current === null)\n        return 0;\n      if (speed === 1)\n        return 0;\n      return parallaxTransform(yValue, originalPosition.current, speed, offset, adjustPosition);\n    },\n    [originalPosition, speed, offset, adjustPosition]\n  );\n  React56.useLayoutEffect(() => {\n    var _a, _b, _c;\n    originalPosition.current = (_c = (_b = (_a = ref.current) == null ? void 0 : _a.getBoundingClientRect()) == null ? void 0 : _b.top) != null ? _c : 0;\n    parallaxY.set(transform2(scrollY.get()));\n    if (adjustPosition) {\n      visibility.set(visibilityStyle != null ? visibilityStyle : \"initial\");\n    }\n  }, [ref, originalPosition, adjustPosition]);\n  const { scrollY } = useScroll();\n  const parallaxY = useTransform(scrollY, transform2);\n  const visibility = useMotionValue(adjustPosition && originalPosition.current === null ? \"hidden\" : visibilityStyle);\n  const defaultValue = useMotionValue(0);\n  return {\n    values: {\n      y: shouldReduceMotion || !parallaxTransformEnabled ? defaultValue : parallaxY\n    },\n    style: {\n      visibility\n    }\n  };\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nimport React57 from \"react\";\n\n// ../../library/src/modules/calculateOffsetTop.ts\nfunction calcOffsetTop(element, container) {\n  let top = 0;\n  let current = element;\n  while (current && current !== container) {\n    if (!(current instanceof HTMLElement))\n      break;\n    top += current.offsetTop;\n    current = current.offsetParent;\n  }\n  return top;\n}\n\n// ../../library/src/modules/createTransformInputRange.ts\nvar scrollObserverOffset = 1;\nfunction createTransformInputRange(transformTargets, threshold = 0, callback) {\n  var _a, _b, _c;\n  const starts = [];\n  const inputRange = [];\n  for (let index = transformTargets.length; index >= 0; index--) {\n    const { ref: targetRef, offset } = (_a = transformTargets[index]) != null ? _a : {};\n    if (!targetRef || !targetRef.current)\n      continue;\n    const offsetTop = calcOffsetTop(targetRef.current, document.documentElement);\n    const top = offsetTop - scrollObserverOffset - (offset != null ? offset : 0) - threshold;\n    const height = (_c = (_b = targetRef.current) == null ? void 0 : _b.clientHeight) != null ? _c : 0;\n    const previousTop = starts[starts.length - 1];\n    const end = Math.max(top + height, 0);\n    starts.push(top);\n    inputRange.unshift(\n      Math.max(top, 0),\n      previousTop === void 0 ? end : Math.min(end, Math.max(previousTop - 1, 0))\n    );\n    callback == null ? void 0 : callback(index);\n  }\n  return inputRange;\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nvar styleAppearOptionsKeys = /* @__PURE__ */ new Set([\n  \"threshold\",\n  \"animateOnce\",\n  \"opacity\",\n  \"targetOpacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"transition\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"perspective\",\n  \"enter\",\n  \"exit\",\n  \"animate\",\n  \"styleAppearEffectEnabled\",\n  \"targets\"\n]);\nvar defaultOutputRange = [\"animate\", \"animate\"];\nfunction createInputOutputRange(targets, threshold, hasExit) {\n  const inputRange = createTransformInputRange(targets, threshold);\n  const outputRange = [...defaultOutputRange];\n  const firstRange = inputRange[0];\n  assert(typeof firstRange === \"number\", `Invalid inputRange: ${inputRange}`);\n  if (firstRange > 1) {\n    inputRange.unshift(0, firstRange - 1);\n    outputRange.unshift(\"initial\", \"initial\");\n  }\n  if (hasExit) {\n    const idx = inputRange.length - 1;\n    const last = inputRange[idx];\n    assert(typeof last === \"number\", `Invalid inputRange: ${inputRange}`);\n    inputRange.push(last + 1);\n    outputRange.push(\"exit\");\n  }\n  return {\n    inputRange,\n    outputRange\n  };\n}\nvar defaultValues = {\n  x: 0,\n  y: 0,\n  scale: 1,\n  opacity: 1,\n  transformPerspective: 0,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  transition: void 0\n};\nfunction makeStyle(defaults) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n  return {\n    x: (_a = defaults == null ? void 0 : defaults.x) != null ? _a : defaultValues.x,\n    y: (_b = defaults == null ? void 0 : defaults.y) != null ? _b : defaultValues.y,\n    scale: (_c = defaults == null ? void 0 : defaults.scale) != null ? _c : defaultValues.scale,\n    opacity: (_d = defaults == null ? void 0 : defaults.opacity) != null ? _d : defaultValues.opacity,\n    transformPerspective: (_e = defaults == null ? void 0 : defaults.transformPerspective) != null ? _e : defaultValues.transformPerspective,\n    rotate: (_f = defaults == null ? void 0 : defaults.rotate) != null ? _f : defaultValues.rotate,\n    rotateX: (_g = defaults == null ? void 0 : defaults.rotateX) != null ? _g : defaultValues.rotateX,\n    rotateY: (_h = defaults == null ? void 0 : defaults.rotateY) != null ? _h : defaultValues.rotateY,\n    transition: (_i = defaults == null ? void 0 : defaults.transition) != null ? _i : defaultValues.transition\n  };\n}\nfunction useAnimationVariants({\n  opacity,\n  targetOpacity,\n  perspective: transformPerspective,\n  enter,\n  exit,\n  animate: animateVariant,\n  ...defaultStyles\n}) {\n  return React57.useMemo(\n    () => {\n      var _a;\n      return {\n        initial: enter != null ? enter : makeStyle({\n          ...defaultStyles,\n          opacity: (_a = opacity != null ? opacity : targetOpacity) != null ? _a : 1,\n          transformPerspective\n        }),\n        animate: animateVariant != null ? animateVariant : makeStyle({\n          opacity: targetOpacity\n        }),\n        exit: exit != null ? exit : makeStyle()\n      };\n    },\n    [animateVariant, defaultStyles, enter, exit, opacity, targetOpacity, transformPerspective]\n  );\n}\nfunction useStyleAppearEffect(options, ref) {\n  const variants = useAnimationVariants(options);\n  const values = useConstant(() => makeFXValues(variants.initial));\n  const playState = React57.useRef({\n    isPlaying: false,\n    scheduledAppearState: void 0,\n    lastAppearState: false\n  });\n  const animation = React57.useRef();\n  const runAnimation = React57.useCallback(\n    async ({ transition, ...target }, fromInitial) => {\n      var _a;\n      const transitionWithFallback = (_a = transition != null ? transition : variants.animate.transition) != null ? _a : options.transition;\n      await animation.current;\n      animation.current = Promise.all(\n        effectValuesKeys.map((key7) => {\n          var _a2;\n          if (fromInitial)\n            values[key7].set((_a2 = variants.initial[key7]) != null ? _a2 : defaultValues[key7]);\n          return new Promise((resolve) => {\n            var _a3;\n            animate(values[key7], (_a3 = target[key7]) != null ? _a3 : defaultValues[key7], {\n              restDelta: 1e-3,\n              ...transitionWithFallback,\n              onComplete: () => resolve()\n            });\n          });\n        })\n      );\n    },\n    []\n  );\n  const appearEffectOptions = {\n    animateOnce: !!options.animateOnce,\n    threshold: {\n      y: options.threshold\n    }\n  };\n  useAppearEffect(ref, appearEffectOptions, (appears) => {\n    if (options.targets || !options.styleAppearEffectEnabled)\n      return;\n    const { isPlaying, lastAppearState } = playState.current;\n    if (options.animateOnce && playState.current.lastAppearState === true)\n      return;\n    if (isPlaying) {\n      playState.current.scheduledAppearState = appears;\n      return;\n    }\n    playState.current.scheduledAppearState = void 0;\n    playState.current.lastAppearState = appears;\n    if (lastAppearState === appears)\n      return;\n    runAnimation(appears ? variants.animate : variants.exit, appears);\n  });\n  React57.useEffect(() => {\n    if (!options.targets || !options.styleAppearEffectEnabled)\n      return;\n    const playedState = {};\n    let lastVariant = \"initial\";\n    return scroll(({ y: scrollY }) => {\n      var _a;\n      if (!options.targets)\n        return;\n      const { inputRange, outputRange } = createInputOutputRange(\n        options.targets,\n        ((_a = options.threshold) != null ? _a : 0) * scrollY.containerLength,\n        !!options.exit\n      );\n      const variant = transform(scrollY.current, inputRange, outputRange);\n      if (options.animateOnce && playedState[variant])\n        return;\n      playedState[variant] = true;\n      if (lastVariant === variant)\n        return;\n      lastVariant = variant;\n      runAnimation(variants[variant]);\n    });\n  }, []);\n  return {\n    values\n  };\n}\n\n// ../../library/src/modules/useStyleTransformEffect.tsx\nimport React58 from \"react\";\nvar styleTransformOptionsKeys = /* @__PURE__ */ new Set([\n  \"transformViewportThreshold\",\n  \"styleTransformEffectEnabled\",\n  \"transformTargets\",\n  \"spring\",\n  \"transformTrigger\"\n]);\nvar defaultValues2 = (transformTargets, shouldReduceMotion) => {\n  var _a, _b;\n  const initial = (_a = transformTargets == null ? void 0 : transformTargets[0]) == null ? void 0 : _a.target;\n  return makeFXValues(shouldReduceMotion ? { opacity: (_b = initial == null ? void 0 : initial.opacity) != null ? _b : 1 } : initial);\n};\nvar defaultRanges = () => ({\n  opacity: [],\n  x: [],\n  y: [],\n  scale: [],\n  rotate: [],\n  rotateX: [],\n  rotateY: [],\n  transformPerspective: []\n});\nfunction useAttachOptionalSpring(values, spring3) {\n  const springs = React58.useRef({});\n  React58.useEffect(() => {\n    if (spring3 === void 0)\n      return;\n    for (const key7 in values) {\n      const m2 = values[key7];\n      m2.attach((v, set) => {\n        const active = springs.current[key7];\n        if (active)\n          active.stop();\n        springs.current[key7] = animate3({\n          from: m2.get(),\n          to: v,\n          velocity: m2.getVelocity(),\n          ...spring3,\n          restDelta: 1e-3,\n          onUpdate: set\n        });\n        return m2.get();\n      });\n    }\n  }, [JSON.stringify(spring3)]);\n}\nfunction createInputOutputRanges(transformTargets, threshold) {\n  const effectKeyOutputRange = defaultRanges();\n  const inputRange = createTransformInputRange(transformTargets, threshold, (index) => {\n    var _a, _b, _c, _d, _e;\n    const previousTarget = (_a = transformTargets[index - 1]) == null ? void 0 : _a.target;\n    const currentTarget = (_b = transformTargets[index]) == null ? void 0 : _b.target;\n    for (const key7 of effectValuesKeys)\n      (_e = effectKeyOutputRange[key7]) == null ? void 0 : _e.unshift((_c = previousTarget == null ? void 0 : previousTarget[key7]) != null ? _c : 0, (_d = currentTarget == null ? void 0 : currentTarget[key7]) != null ? _d : 0);\n  });\n  return { inputRange, effectKeyOutputRange };\n}\nfunction createPageOutputRange(transformTargets) {\n  var _a;\n  const keyOutputRange = defaultRanges();\n  for (const { target } of transformTargets) {\n    for (const key7 of effectValuesKeys)\n      (_a = keyOutputRange[key7]) == null ? void 0 : _a.push(target[key7]);\n  }\n  return keyOutputRange;\n}\nvar pageInputRange = [0, 1];\nfunction useStyleTransform({\n  transformTrigger,\n  styleTransformEffectEnabled,\n  transformTargets,\n  spring: spring3,\n  transformViewportThreshold = 0\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const values = useConstant(() => defaultValues2(transformTargets, shouldReduceMotion));\n  React58.useLayoutEffect(() => {\n    var _a;\n    if (styleTransformEffectEnabled !== true || !transformTargets)\n      return;\n    if (transformTrigger !== \"onScrollTarget\") {\n      const outputRange = createPageOutputRange(transformTargets);\n      return scroll(\n        ({ y: scrollY }) => {\n          for (const key7 of effectValuesKeys) {\n            if (shouldReduceMotion && key7 !== \"opacity\")\n              continue;\n            values[key7].set(transform(scrollY.progress, pageInputRange, outputRange[key7]));\n          }\n        },\n        transformTrigger === \"onInView\" ? {\n          target: (_a = ref.current) != null ? _a : void 0,\n          offset: [`start end`, `end end`]\n        } : void 0\n      );\n    } else {\n      return scroll(({ y: scrollY }) => {\n        const { inputRange: scrollYInputRange, effectKeyOutputRange } = createInputOutputRanges(\n          transformTargets,\n          transformViewportThreshold * scrollY.containerLength\n        );\n        for (const key7 of effectValuesKeys) {\n          if (shouldReduceMotion && key7 !== \"opacity\")\n            continue;\n          values[key7].set(transform(scrollY.current, scrollYInputRange, effectKeyOutputRange[key7]));\n        }\n      });\n    }\n  }, [\n    shouldReduceMotion,\n    transformTrigger,\n    ref,\n    transformViewportThreshold,\n    styleTransformEffectEnabled,\n    values,\n    transformTargets\n  ]);\n  useAttachOptionalSpring(values, spring3);\n  return { values };\n}\n\n// ../../library/src/modules/withFX.tsx\nvar groups = {\n  parallax: parallaxOptionsKeys,\n  styleAppear: styleAppearOptionsKeys,\n  styleTransform: styleTransformOptionsKeys\n};\nvar groupValues = /* @__PURE__ */ Object.keys(groups);\nfunction backwardsCompatibleEnabledCheck(key7, object) {\n  return !(key7 in object) || object[key7] === true;\n}\nfunction extractFXOptions(props) {\n  const result = {\n    parallax: {},\n    styleAppear: {},\n    styleTransform: {},\n    forwardedProps: {}\n  };\n  for (const key7 in props) {\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey) {\n      for (const group of groupValues) {\n        const keys3 = groups[group];\n        if (keys3.has(strippedKey)) {\n          result[group][strippedKey] = props[key7];\n          break;\n        }\n      }\n    } else {\n      result.forwardedProps[key7] = props[key7];\n    }\n  }\n  result.parallax.parallaxTransformEnabled = backwardsCompatibleEnabledCheck(\n    \"parallaxTransformEnabled\",\n    result.parallax\n  );\n  result.styleAppear.styleAppearEffectEnabled = backwardsCompatibleEnabledCheck(\n    \"styleAppearEffectEnabled\",\n    result.styleAppear\n  );\n  return result;\n}\nvar add2 = (values) => values.reduce((sum, value) => sum += value, 0);\nvar multiply = (values) => values.reduce((sum, value) => sum = sum * value, 1);\nvar withFX = (Component15) => React59.forwardRef((props, forwardedRef) => {\n  if (props.__withFX)\n    return /* @__PURE__ */ React59.createElement(Component15, { ...props, ref: forwardedRef });\n  const fallbackRef = React59.useRef(null);\n  const ref = forwardedRef != null ? forwardedRef : fallbackRef;\n  const { parallax = {}, styleAppear = {}, styleTransform = {}, forwardedProps } = extractFXOptions(props);\n  const values = useConstant(() => {\n    var _a;\n    const defaults = {};\n    if (!isObject2(forwardedProps.initial))\n      return makeFXValues();\n    for (const key7 in forwardedProps.initial) {\n      let value = (_a = forwardedProps.initial) == null ? void 0 : _a[key7];\n      if (isMotionValue(value))\n        value = value.get();\n      if (!isNumber(value))\n        continue;\n      defaults[key7] = value;\n    }\n    return makeFXValues(defaults);\n  });\n  const { values: parallaxValues, style: parallaxStyle } = useParallax(parallax, ref);\n  const { values: transformValues3 } = useStyleTransform(styleTransform, ref);\n  const { values: appearEffectValues } = useStyleAppearEffect(styleAppear, ref);\n  const scale2 = useTransform([values.scale, transformValues3.scale, appearEffectValues.scale], multiply);\n  const opacity = useTransform([values.opacity, transformValues3.opacity, appearEffectValues.opacity], multiply);\n  const x = useTransform([values.x, transformValues3.x, appearEffectValues.x], add2);\n  const y = useTransform([values.y, transformValues3.y, appearEffectValues.y, parallaxValues.y], add2);\n  const rotate = useTransform([values.rotate, transformValues3.rotate, appearEffectValues.rotate], add2);\n  const rotateX = useTransform([values.rotateX, transformValues3.rotateX, appearEffectValues.rotateX], add2);\n  const rotateY = useTransform([values.rotateY, transformValues3.rotateY, appearEffectValues.rotateY], add2);\n  const transformPerspective = useTransform(\n    [\n      values.transformPerspective,\n      transformValues3.transformPerspective,\n      appearEffectValues.transformPerspective\n    ],\n    add2\n  );\n  return /* @__PURE__ */ React59.createElement(\n    Component15,\n    {\n      ...forwardedProps,\n      __withFX: true,\n      style: {\n        ...props.style,\n        ...parallaxStyle,\n        opacity,\n        scale: scale2,\n        x,\n        y,\n        rotate,\n        rotateX,\n        rotateY,\n        transformPerspective\n      },\n      values,\n      ref\n    }\n  );\n});\n\n// ../../library/src/deprecated/deprecatedEffects.ts\nvar withParallaxTransform = withFX;\nvar withStyleAppearEffect = withFX;\n\n// ../../library/src/deprecated/WithOverride.tsx\nvar import_hoist_non_react_statics4 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React60, { useContext as useContext11 } from \"react\";\n\n// ../../library/src/deprecated/convertColorProps.ts\nfunction convertColorObject(prop) {\n  if (typeof prop === \"string\" || isMotionValue2(prop)) {\n    return prop;\n  } else if (LinearGradient.isLinearGradient(prop)) {\n    return LinearGradient.toCSS(prop);\n  } else if (RadialGradient.isRadialGradient(prop)) {\n    return RadialGradient.toCSS(prop);\n  } else if (Color.isColorObject(prop)) {\n    return Color.toRgbString(prop);\n  }\n  return prop;\n}\nfunction convertColorProps(props) {\n  if (props.background || props.color) {\n    const converted = Object.assign({}, props);\n    if (props.background) {\n      converted.background = convertColorObject(props.background);\n    }\n    if (props.color) {\n      converted.color = convertColorObject(props.color);\n    }\n    return converted;\n  }\n  return props;\n}\n\n// ../../library/src/deprecated/WithOverride.tsx\nfunction WithOverride(Component15, override) {\n  const useOverride = typeof override === \"function\" ? (props) => override(convertColorProps(props)) : () => convertColorProps(override);\n  const ComponentWithOverride = function(props) {\n    useContext11(DataObserverContext);\n    const overrideProps = useOverride(props);\n    const { style, ...rest } = props;\n    return /* @__PURE__ */ React60.createElement(Component15, { ...rest, ...overrideProps, _initialStyle: style });\n  };\n  (0, import_hoist_non_react_statics4.default)(ComponentWithOverride, Component15);\n  ComponentWithOverride[\"displayName\"] = `WithOverride(${Component15.displayName || Component15.name})`;\n  return ComponentWithOverride;\n}\n\n// ../../library/src/modules/callEach.ts\nvar callEach = (...fns) => fns.forEach((fn) => fn && fn());\n\n// ../../library/src/modules/Container.tsx\nimport React62 from \"react\";\n\n// ../../library/src/render/utils/withGeneratedLayoutId.tsx\nimport React61 from \"react\";\nvar withGeneratedLayoutId = (Component15) => React61.forwardRef((props, ref) => {\n  const layoutId = useLayoutId(props);\n  return /* @__PURE__ */ React61.createElement(Component15, { layoutId, ...props, layoutIdKey: void 0, duplicatedFrom: void 0, ref });\n});\n\n// ../../library/src/modules/Container.tsx\nvar Providers = /* @__PURE__ */ React62.forwardRef(\n  ({ children, layoutId, ...props }, ref) => {\n    const outerLayoutId = useConstant(() => layoutId ? `${layoutId}-container` : void 0);\n    return /* @__PURE__ */ React62.createElement(motion.div, { layoutId: outerLayoutId, ...props, ref }, /* @__PURE__ */ React62.createElement(ComponentContainerContext.Provider, { value: true }, /* @__PURE__ */ React62.createElement(AutomaticLayoutIds, { enabled: false }, /* @__PURE__ */ React62.createElement(LayoutGroup, { id: layoutId != null ? layoutId : \"\", inherit: \"id\" }, React62.Children.map(children, (child) => {\n      return React62.isValidElement(child) ? React62.cloneElement(child, { layoutId }) : child;\n    })))));\n  }\n);\nvar Container = /* @__PURE__ */ withGeneratedLayoutId(Providers);\n\n// ../../library/src/modules/framerPageLink.ts\nimport React63 from \"react\";\nvar pathVariablesRegExp2 = /:([a-zA-Z][a-zA-Z0-9_]*)/g;\nvar elementKey = \"element\";\nvar collectionKey = \"collection\";\nvar collectionItemIdKey = \"collectionItemId\";\nvar pathVariablesKey = \"pathVariables\";\nvar mediaType = \"framer/page-link,\";\nfunction isFramerPageLink(value) {\n  return isString3(value) && value.startsWith(`data:${mediaType}`);\n}\nfunction createFramerPageLink(targetId = null, options = {}) {\n  const target = targetId ? targetId : \"none\";\n  const link = new URL(`data:${mediaType}${target}`);\n  if (options.element) {\n    link.searchParams.append(elementKey, options.element);\n  }\n  if (options.collectionItem) {\n    link.searchParams.append(collectionKey, options.collectionItem.collection);\n    link.searchParams.append(collectionItemIdKey, options.collectionItem.collectionItemId);\n    link.searchParams.append(pathVariablesKey, new URLSearchParams(options.collectionItem.pathVariables).toString());\n  }\n  return link.href;\n}\nfunction parseFramerPageLink(link) {\n  if (!isFramerPageLink(link))\n    return;\n  try {\n    const url = new URL(link);\n    const target = url.pathname.substring(mediaType.length);\n    const attributes = url.searchParams;\n    const element = attributes.has(elementKey) ? attributes.get(elementKey) : void 0;\n    let collectionItem;\n    const collection = attributes.get(collectionKey);\n    const collectionItemId = attributes.get(collectionItemIdKey);\n    const pathVariablesValue = attributes.get(pathVariablesKey);\n    if (collection && collectionItemId && pathVariablesValue) {\n      const pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesValue).entries());\n      collectionItem = {\n        collection,\n        collectionItemId,\n        pathVariables\n      };\n    }\n    return {\n      target: target === \"none\" ? null : target,\n      element: element === \"none\" ? void 0 : element,\n      collectionItem\n    };\n  } catch {\n    return;\n  }\n}\nfunction shouldOpenLinkInNewTab(link) {\n  return !isFramerPageLink(link);\n}\nvar regex = /(<([a-z]+)(?:\\s+(?!href[\\s=])[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*)(?:(\\s+href\\s*=)(?:'([^']*)'|\"([^\"]*)\"))?((?:\\s+[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*>)/gi;\nvar escapeHTML = (str) => str.replace(\n  /[&<>'\"]/g,\n  (tag) => ({\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    \"'\": \"&#39;\",\n    '\"': \"&quot;\"\n  })[tag] || tag\n);\nfunction replaceFramerPageLinks(rawHTML, getRoute, currentRoute, implicitPathVariables) {\n  return rawHTML.replace(\n    regex,\n    (original, pre1, tag, pre2, value1, value2, post) => {\n      var _a, _b, _c;\n      if (tag.toLowerCase() !== \"a\")\n        return original;\n      const href = value1 || value2;\n      const pageLink = parseFramerPageLink(href.replace(/&amp;/g, \"&\"));\n      if (!pageLink || !pageLink.target)\n        return original;\n      const targetRoute = getRoute(pageLink.target);\n      if (!isRoute(targetRoute) || !isRoute(currentRoute))\n        return original;\n      const targetPath = targetRoute.path;\n      const currentPath = currentRoute.path;\n      if (!targetPath || !currentPath)\n        return original;\n      let attributes = ` ${\"data-framer-page-link-target\" /* Page */}=\"${pageLink.target}\"`;\n      const elementId = getRouteElementId(targetRoute, (_a = pageLink.element) != null ? _a : void 0);\n      if (elementId) {\n        attributes += ` ${\"data-framer-page-link-element\" /* Element */}=\"${pageLink.element}\"`;\n      }\n      if (linkMatchesRoute(currentRoute, pageLink, implicitPathVariables)) {\n        attributes += ` ${\"data-framer-page-link-current\" /* Current */}`;\n      }\n      let relativePath = targetPath;\n      const pathVariables = Object.assign({}, implicitPathVariables, (_b = pageLink.collectionItem) == null ? void 0 : _b.pathVariables);\n      if (Object.keys(pathVariables).length > 0) {\n        relativePath = relativePath.replace(pathVariablesRegExp2, (_, key7) => \"\" + pathVariables[key7]);\n      }\n      if ((_c = pageLink.collectionItem) == null ? void 0 : _c.pathVariables) {\n        const params = new URLSearchParams(pageLink.collectionItem.pathVariables);\n        attributes += ` ${\"data-framer-page-link-path-variables\" /* PathVariables */}=\"${params}\"`;\n      }\n      relativePath = computeRelativePath(currentPath, relativePath);\n      return pre1 + pre2 + `\"${escapeHTML(relativePath + (elementId ? `#${elementId}` : \"\"))}\"` + attributes + post;\n    }\n  );\n}\nfunction navigateFromAttributes(navigate, element, implicitPathVariables) {\n  var _a, _b, _c;\n  let routeId = element.getAttribute(\"data-framer-page-link-target\" /* Page */);\n  let elementId;\n  let pathVariables;\n  if (routeId) {\n    elementId = (_a = element.getAttribute(\"data-framer-page-link-element\" /* Element */)) != null ? _a : void 0;\n    const pathVariablesRaw = element.getAttribute(\"data-framer-page-link-path-variables\" /* PathVariables */);\n    if (pathVariablesRaw) {\n      pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesRaw).entries());\n    }\n  } else {\n    const href = element.getAttribute(\"href\");\n    if (!href)\n      return false;\n    const link = parseFramerPageLink(href);\n    if (!link || !link.target)\n      return false;\n    routeId = link.target;\n    elementId = (_b = link.element) != null ? _b : void 0;\n    pathVariables = (_c = link.collectionItem) == null ? void 0 : _c.pathVariables;\n  }\n  const smoothScroll = elementId ? element.dataset.framerSmoothScroll !== void 0 : void 0;\n  navigate(routeId, elementId, Object.assign({}, implicitPathVariables, pathVariables), smoothScroll);\n  return true;\n}\nvar PathVariablesContext = React63.createContext(void 0);\nfunction linkMatchesRoute(route, link, implicitPathVariables) {\n  var _a;\n  if (link.target !== route.id)\n    return false;\n  if (link.element)\n    return false;\n  if (route.path && route.pathVariables) {\n    const pathVariables = Object.assign({}, implicitPathVariables, (_a = link.collectionItem) == null ? void 0 : _a.pathVariables);\n    for (const [, key7] of route.path.matchAll(pathVariablesRegExp2)) {\n      if (!key7)\n        return false;\n      if (route.pathVariables[key7] !== pathVariables[key7]) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nfunction useLinkMatchesRoute(link) {\n  const route = useCurrentRoute();\n  const contextPathVariables = React63.useContext(PathVariablesContext);\n  if (!route)\n    return false;\n  const pageLink = parseFramerPageLink(link);\n  if (!pageLink)\n    return false;\n  return linkMatchesRoute(route, pageLink, contextPathVariables);\n}\nfunction useImplicitPathVariables() {\n  var _a;\n  const contextPathVariables = React63.useContext(PathVariablesContext);\n  const currentPathVariables = (_a = useCurrentRoute()) == null ? void 0 : _a.pathVariables;\n  const pathVariables = contextPathVariables || currentPathVariables;\n  return pathVariables;\n}\n\n// ../../library/src/modules/GeneratedComponentContext.ts\nimport React64 from \"react\";\nvar GeneratedComponentContext = /* @__PURE__ */ React64.createContext(\n  void 0\n);\n\n// ../../library/src/modules/Link.tsx\nimport React65 from \"react\";\n\n// ../../library/src/render/utils/findAnchorElement.ts\nfunction findAnchorElement(target, withinElement) {\n  if (target instanceof HTMLAnchorElement) {\n    return target;\n  }\n  if (target instanceof Element) {\n    if (target === withinElement) {\n      return null;\n    }\n    return findAnchorElement(target.parentElement, withinElement);\n  }\n  return null;\n}\n\n// ../../library/src/modules/Link.tsx\nfunction isInternalURL(href) {\n  if (href === void 0)\n    return false;\n  if (href.startsWith(\"#\") || href.startsWith(\"/\") || href.startsWith(\".\"))\n    return true;\n  return false;\n}\nfunction isValidURL(href, isInternal) {\n  try {\n    const url = new URL(href);\n    return Boolean(url.protocol);\n  } catch {\n  }\n  return isInternal;\n}\nvar AnchorLinkTarget = /* @__PURE__ */ ((AnchorLinkTarget2) => {\n  AnchorLinkTarget2[\"_blank\"] = \"_blank\";\n  AnchorLinkTarget2[\"_self\"] = \"_self\";\n  return AnchorLinkTarget2;\n})(AnchorLinkTarget || {});\nfunction getTargetAttrValue(openInNewTab, isInternal) {\n  if (openInNewTab !== void 0) {\n    return openInNewTab ? \"_blank\" /* _blank */ : void 0;\n  }\n  return isInternal ? void 0 : \"_blank\" /* _blank */;\n}\nfunction propsForLink(href, openInNewTab = void 0) {\n  const isInternal = isInternalURL(href);\n  const anchorTarget = getTargetAttrValue(openInNewTab, isInternal);\n  return {\n    href: isValidURL(href, isInternal) ? href : `https://${href}`,\n    target: anchorTarget,\n    rel: !isInternal ? \"noreferrer noopener\" : void 0\n  };\n}\nfunction createOnClickLinkHandler(router, routeId, elementId, combinedPathVariables, smoothScroll) {\n  return (event) => {\n    var _a;\n    if (event.metaKey)\n      return;\n    const anchorElement = findAnchorElement(event.target);\n    if (!anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */)\n      return;\n    event.preventDefault();\n    (_a = router.navigate) == null ? void 0 : _a.call(router, routeId, elementId, combinedPathVariables, smoothScroll);\n  };\n}\nfunction propsForRoutePath(href, openInNewTab, router, currentRoute, implicitPathVariables, smoothScroll) {\n  const isInternal = isInternalURL(href);\n  if (!router.routes || !router.getRoute || !currentRoute || !isInternal) {\n    return propsForLink(href, openInNewTab);\n  }\n  try {\n    const [pathname, hash2] = href.split(\"#\", 2);\n    assert(pathname !== void 0, \"A href must have a defined pathname.\");\n    const { routeId, pathVariables } = inferInitialRouteFromPath(router.routes, pathname);\n    const route = router.getRoute(routeId);\n    if (route) {\n      preloadComponent(route.page);\n      const elementId = hash2 || void 0;\n      const combinedPathVariables = Object.assign({}, implicitPathVariables, pathVariables);\n      const path = getPathForRoute(route, {\n        currentRoutePath: currentRoute.path,\n        elementId,\n        pathVariables: combinedPathVariables\n      });\n      const anchorTarget = getTargetAttrValue(openInNewTab, true);\n      return {\n        href: path,\n        target: anchorTarget,\n        onClick: createOnClickLinkHandler(router, routeId, elementId, combinedPathVariables, smoothScroll)\n      };\n    }\n  } catch {\n  }\n  return propsForLink(href, openInNewTab);\n}\nvar Link = /* @__PURE__ */ React65.forwardRef(\n  ({ children, href, openInNewTab, smoothScroll, ...restProps }, forwardedRef) => {\n    const router = useRouter();\n    const currentRoute = useCurrentRoute();\n    const implicitPathVariables = useImplicitPathVariables();\n    const props = React65.useMemo(() => {\n      var _a, _b, _c;\n      if (!href)\n        return {};\n      const pageLink = parseFramerPageLink(href);\n      if (!pageLink) {\n        return propsForRoutePath(href, openInNewTab, router, currentRoute, implicitPathVariables, smoothScroll);\n      }\n      if (!pageLink.target) {\n        return {};\n      }\n      const routeId = pageLink.target;\n      const elementId = (_a = pageLink.element) != null ? _a : void 0;\n      const route = (_b = router.getRoute) == null ? void 0 : _b.call(router, routeId);\n      if (route)\n        preloadComponent(route.page);\n      const pathVariables = Object.assign({}, implicitPathVariables, (_c = pageLink.collectionItem) == null ? void 0 : _c.pathVariables);\n      const anchorTarget = getTargetAttrValue(openInNewTab, true);\n      return {\n        href: getPathForRoute(route, {\n          currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n          elementId,\n          pathVariables\n        }),\n        target: anchorTarget,\n        onClick: createOnClickLinkHandler(router, routeId, elementId, pathVariables, smoothScroll),\n        \"data-framer-page-link-current\": currentRoute && linkMatchesRoute(currentRoute, pageLink, implicitPathVariables) || void 0\n      };\n    }, [currentRoute, href, openInNewTab, implicitPathVariables, router, smoothScroll]);\n    if (!children)\n      return null;\n    const child = React65.Children.only(children);\n    if (!React65.isValidElement(child))\n      return null;\n    return React65.cloneElement(child, { ...restProps, ...props, ref: forwardedRef != null ? forwardedRef : restProps.ref });\n  }\n);\nfunction resolveLink(href, router, implicitPathVariables) {\n  var _a, _b;\n  const pageLink = parseFramerPageLink(href);\n  if (!pageLink || !pageLink.target)\n    return propsForLink(href).href;\n  if (!router.getRoute || !router.currentRouteId)\n    return href;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const routeId = pageLink.target;\n  const elementId = (_a = pageLink.element) != null ? _a : void 0;\n  const route = router.getRoute(routeId);\n  const pathVariables = Object.assign(\n    {},\n    router.currentPathVariables,\n    implicitPathVariables,\n    (_b = pageLink.collectionItem) == null ? void 0 : _b.pathVariables\n  );\n  return getPathForRoute(route, { currentRoutePath: currentRoute == null ? void 0 : currentRoute.path, elementId, pathVariables, relative: false });\n}\n\n// ../../library/src/modules/optimizeAppear.ts\nvar AnimationCollector = class {\n  constructor() {\n    this.entries = /* @__PURE__ */ new Map();\n  }\n  get(routeId) {\n    return this.entries.get(routeId);\n  }\n  set(nodeId, prop, value, variantHash) {\n    const nodeEntry = this.entries.get(nodeId);\n    switch (prop) {\n      case \"transformTemplate\": {\n        assert(typeof value === \"string\", `transformTemplate must be a string, received: ${value}`);\n        if (nodeEntry) {\n          nodeEntry.transformTemplate = value;\n        } else {\n          this.entries.set(nodeId, { transformTemplate: value });\n        }\n        break;\n      }\n      case \"initial\":\n      case \"animate\": {\n        assert(typeof value === \"object\", `${prop} must be a valid object, received: ${value}`);\n        if (nodeEntry) {\n          nodeEntry[prop] = value;\n          if (!nodeEntry.variantHash) {\n            nodeEntry.variantHash = variantHash;\n          }\n        } else {\n          this.entries.set(nodeId, { [prop]: value, variantHash });\n        }\n        break;\n      }\n      default:\n        break;\n    }\n  }\n  clear() {\n    this.entries.clear();\n  }\n  toObject() {\n    return Object.fromEntries(this.entries);\n  }\n};\nvar framerAppearEffects = /* @__PURE__ */ new AnimationCollector();\nvar optimizeAppear = (prop, id, animateTargetAndTransition, variantHash) => {\n  if (!isBrowser2()) {\n    framerAppearEffects.set(id, prop, animateTargetAndTransition, variantHash);\n  }\n  return animateTargetAndTransition;\n};\nvar framerAppearTransformTemplateToken = \"__Appear_Animation_Transform__\";\nvar optimizeAppearTransformTemplate = (id, fn) => {\n  if (!isBrowser2()) {\n    const template = fn == null ? void 0 : fn({}, framerAppearTransformTemplateToken);\n    if (template === void 0)\n      return fn;\n    framerAppearEffects.set(id, \"transformTemplate\", template);\n  }\n  return fn;\n};\nvar framerAppearIdKey = \"data-framer-appear-id\";\nvar framerAppearAnimationScriptKey = \"data-framer-appear-animation\";\n\n// ../../library/src/modules/PageRoot.tsx\nimport React66 from \"react\";\nfunction PageRoot({\n  RootComponent,\n  isWebsite,\n  routeId,\n  pathVariables,\n  routes,\n  notFoundPage,\n  isReducedMotion = false,\n  includeDataObserver = false\n}) {\n  React66.useEffect(() => {\n    if (isWebsite)\n      return;\n    MainLoop.start();\n  }, []);\n  if (isWebsite) {\n    return /* @__PURE__ */ React66.createElement(MotionConfig, { reducedMotion: isReducedMotion ? \"user\" : \"never\" }, /* @__PURE__ */ React66.createElement(\n      Router,\n      {\n        initialRoute: routeId,\n        initialPathVariables: pathVariables,\n        routes,\n        notFoundPage,\n        defaultPageStyle: { minHeight: \"100%\", width: \"auto\" }\n      }\n    ));\n  } else {\n    const Wrapper = includeDataObserver ? DataObserver : React66.Fragment;\n    return /* @__PURE__ */ React66.createElement(Wrapper, null, /* @__PURE__ */ React66.createElement(RoutesProvider, { routes }, /* @__PURE__ */ React66.createElement(NavigationWrapper, null, /* @__PURE__ */ React66.createElement(RootComponent, { key: routeId }))));\n  }\n}\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport React69 from \"react\";\n\n// ../../library/src/modules/withCSS.tsx\nimport React68 from \"react\";\n\n// ../../library/src/render/StyleSheetContext.ts\nimport React67 from \"react\";\nvar StyleSheetContext = /* @__PURE__ */ React67.createContext(void 0);\n\n// ../../library/src/modules/withCSS.tsx\nif (isBrowser2()) {\n  for (const node of document.querySelectorAll(\"style[data-framer-css-ssr]\")) {\n    document.head.appendChild(node);\n  }\n}\nvar styleTagSSRMarker = { \"data-framer-css-ssr\": true };\nvar withCSS = (Component15, escapedCSS) => React68.forwardRef((props, ref) => {\n  var _a;\n  const { sheet, cache: cache3 } = (_a = React68.useContext(StyleSheetContext)) != null ? _a : {};\n  if (!isBrowser2()) {\n    const concatenatedCSS = Array.isArray(escapedCSS) ? escapedCSS.join(\"\\n\") : escapedCSS;\n    return /* @__PURE__ */ React68.createElement(React68.Fragment, null, /* @__PURE__ */ React68.createElement(\"style\", { ...styleTagSSRMarker, dangerouslySetInnerHTML: { __html: concatenatedCSS } }), /* @__PURE__ */ React68.createElement(Component15, { ...props, ref }));\n  }\n  const didInjectStyles = React68.useRef(false);\n  if (!didInjectStyles.current) {\n    const css = Array.isArray(escapedCSS) ? escapedCSS : escapedCSS.split(\"\\n\");\n    css.forEach((rule) => rule && injectCSSRule(rule, sheet, cache3));\n    didInjectStyles.current = true;\n  }\n  return /* @__PURE__ */ React68.createElement(Component15, { ...props, ref });\n});\n\n// ../../library/src/modules/PropertyOverrides.tsx\nvar SSRParentVariantsContext = /* @__PURE__ */ React69.createContext(void 0);\nvar SSRVariantClassName = \"ssr-variant\";\nfunction childrenWithForwardedProps(children, props, ref) {\n  return /* @__PURE__ */ React69.createElement(React69.Fragment, null, React69.Children.map(children, (child) => {\n    var _a;\n    if (!child || !isReactChild(child) || !isReactElement(child))\n      return null;\n    return React69.cloneElement(child, { ...props, ref: (_a = props.ref) != null ? _a : ref });\n  }));\n}\nfunction renderBranchedChildrenFromPropertyOverrides(overrides, children, props, ref, variantClassNames, primaryVariantId, parentVariants, type) {\n  const childrenArray = React69.Children.toArray(children);\n  const child = childrenArray[0];\n  if (childrenArray.length !== 1 || !React69.isValidElement(child)) {\n    console.warn(type + \": expected exactly one React element for a child\", children);\n    return childrenWithForwardedProps(children, props, ref);\n  }\n  const branches = [];\n  const nonOverriddenVariants = [];\n  for (const [variantId] of Object.entries(variantClassNames)) {\n    if (variantId === primaryVariantId)\n      continue;\n    const propOverrides = overrides[variantId];\n    if (!propOverrides || !arePropOverridesEffectivelyDifferent(child.props, propOverrides)) {\n      nonOverriddenVariants.push(variantId);\n      continue;\n    }\n    const effectiveVariants = intersection([variantId], parentVariants);\n    if (effectiveVariants.length)\n      branches.push({ variants: effectiveVariants, propOverrides });\n  }\n  if (branches.length === 0)\n    return React69.cloneElement(child, { ...props, ref });\n  const remainingVariants = [primaryVariantId, ...nonOverriddenVariants];\n  const effectiveRemainingVariants = intersection(remainingVariants, parentVariants);\n  if (effectiveRemainingVariants.length)\n    branches.unshift({ variants: effectiveRemainingVariants });\n  return /* @__PURE__ */ React69.createElement(React69.Fragment, null, !parentVariants && /* @__PURE__ */ React69.createElement(\"style\", { ...styleTagSSRMarker }, `.${SSRVariantClassName} { display: contents }`), branches.map(({ variants, propOverrides }) => {\n    const key7 = variants.join(\"+\");\n    let element = /* @__PURE__ */ React69.createElement(SSRParentVariantsContext.Provider, { key: key7, value: new Set(variants) }, React69.cloneElement(child, { ...props, ...propOverrides, ref }));\n    const hiddenClassNames = generateHiddenClassNames(variants, parentVariants, variantClassNames);\n    if (hiddenClassNames.length) {\n      assert(branches.length > 1, \"Must branch out when there are hiddenClassNames\");\n      element = /* @__PURE__ */ React69.createElement(\"div\", { key: key7, className: `${SSRVariantClassName} ${hiddenClassNames.join(\" \")}` }, element);\n    } else {\n      assert(branches.length === 1, \"Cannot branch out when hiddenClassNames is empty\");\n    }\n    return element;\n  }));\n}\nvar SSRVariants = /* @__PURE__ */ React69.forwardRef(\n  function SSRVariants2({ id: nodeId, children, ...props }, ref) {\n    if (isBrowser2()) {\n      return childrenWithForwardedProps(children, props, ref);\n    }\n    const generatedComponentContext = React69.useContext(GeneratedComponentContext);\n    if (!generatedComponentContext || !generatedComponentContext.variantProps) {\n      console.warn(\"SSRVariants is missing GeneratedComponentContext\");\n      return childrenWithForwardedProps(children, props, ref);\n    }\n    const parentVariants = React69.useContext(SSRParentVariantsContext);\n    const { primaryVariantId, variantClassNames, variantProps } = generatedComponentContext;\n    const overrides = React69.useMemo(() => {\n      const nextOverrides = {};\n      for (const [variant, values] of Object.entries(variantProps)) {\n        nextOverrides[variant] = values[nodeId];\n      }\n      return nextOverrides;\n    }, [nodeId, variantProps]);\n    return renderBranchedChildrenFromPropertyOverrides(\n      overrides,\n      children,\n      props,\n      ref,\n      variantClassNames,\n      primaryVariantId,\n      parentVariants,\n      \"SSRVariants\"\n    );\n  }\n);\nfunction generateHiddenClassNames(showOnlyInVariantIds, parentVariants, variantClassNames) {\n  const classNames = [];\n  for (const [variantId, variantClassName] of Object.entries(variantClassNames)) {\n    const alreadyHiddenInParent = parentVariants && !parentVariants.has(variantId);\n    if (showOnlyInVariantIds.includes(variantId) || alreadyHiddenInParent)\n      continue;\n    const variantHash = variantClassName.split(\"-\")[2];\n    classNames.push(`hidden-${variantHash}`);\n  }\n  return classNames;\n}\nfunction intersection(variants, parentVariants) {\n  if (!parentVariants)\n    return variants;\n  return variants.filter((variant) => parentVariants.has(variant));\n}\nfunction propertyKeyDifferenceShouldBeIgnored(key7) {\n  switch (key7) {\n    case \"transformTemplate\":\n      return false;\n    default:\n      return false;\n  }\n}\nfunction arePropOverridesEffectivelyDifferent(props, propOverrides) {\n  for (const key7 of Object.keys(propOverrides)) {\n    if (propertyKeyDifferenceShouldBeIgnored(key7))\n      continue;\n    if (!isEqual(props[key7], propOverrides[key7], true)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction propsForBreakpoint(variant, props, overrides) {\n  if (!overrides || !variant)\n    return props;\n  return { ...props, ...overrides[variant] };\n}\nvar PropertyOverrides = /* @__PURE__ */ React69.forwardRef(\n  function PropertyOverrides2({ breakpoint, overrides, children, ...props }, ref) {\n    if (isBrowser2()) {\n      return childrenWithForwardedProps(children, propsForBreakpoint(breakpoint, props, overrides), ref);\n    }\n    const generatedComponentContext = React69.useContext(GeneratedComponentContext);\n    if (!generatedComponentContext) {\n      console.warn(\"PropertyOverrides is missing GeneratedComponentContext\");\n      return childrenWithForwardedProps(children, props, ref);\n    }\n    const { primaryVariantId, variantClassNames } = generatedComponentContext;\n    const parentVariants = React69.useContext(SSRParentVariantsContext);\n    return renderBranchedChildrenFromPropertyOverrides(\n      overrides,\n      children,\n      props,\n      ref,\n      variantClassNames,\n      primaryVariantId,\n      parentVariants,\n      \"PropertyOverrides\"\n    );\n  }\n);\n\n// ../../library/src/modules/useActiveVariantCallback.ts\nimport React70 from \"react\";\nfunction rejectPending(pendingTimers, pendingPromises) {\n  pendingTimers.forEach((t) => clearTimeout(t));\n  pendingTimers.clear();\n  pendingPromises.forEach((reject) => reject && reject(\"Callback cancelled by variant change\"));\n  pendingPromises.clear();\n}\nfunction createSet() {\n  return /* @__PURE__ */ new Set();\n}\nfunction useActiveVariantCallback(baseVariant) {\n  const pendingPromises = useConstant(createSet);\n  const pendingTimers = useConstant(createSet);\n  useOnCurrentTargetChange(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  });\n  React70.useEffect(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  }, [pendingPromises, pendingTimers]);\n  React70.useEffect(() => {\n    rejectPending(pendingTimers, pendingPromises);\n  }, [baseVariant, pendingPromises, pendingTimers]);\n  return React70.useRef({\n    activeVariantCallback: (callback) => (...args) => {\n      return new Promise((resolve, reject) => {\n        pendingPromises.add(reject);\n        return callback(...args).then(resolve);\n      }).catch(() => {\n      });\n    },\n    delay: async (callback, msDelay) => {\n      await new Promise((resolve) => pendingTimers.add(globalThis.setTimeout(() => resolve(true), msDelay)));\n      callback();\n    }\n  }).current;\n}\nfunction useActiveTargetCallback() {\n  const value = useActiveVariantCallback(void 0);\n  return React70.useRef({\n    activeTargetCallback: value.activeVariantCallback,\n    delay: value.delay\n  }).current;\n}\n\n// ../../library/src/modules/useAddVariantProps.ts\nimport React71 from \"react\";\nfunction useAddVariantProps(baseVariant, gestureVariant, variantProps) {\n  return React71.useCallback(\n    (id) => {\n      var _a, _b, _c;\n      if (!variantProps)\n        return {};\n      if (!baseVariant)\n        return {};\n      if (gestureVariant) {\n        return Object.assign({}, (_a = variantProps[baseVariant]) == null ? void 0 : _a[id], (_b = variantProps[gestureVariant]) == null ? void 0 : _b[id]);\n      }\n      return ((_c = variantProps[baseVariant]) == null ? void 0 : _c[id]) || {};\n    },\n    [baseVariant, gestureVariant, variantProps]\n  );\n}\n\n// ../../library/src/modules/useBreakpointVariants.ts\nimport { useCallback as useCallback5, useContext as useContext12, useEffect as useEffect7, useRef as useRef9 } from \"react\";\nfunction createMediaQueriesFromBreakpoints(breakpoints) {\n  const mediaQueries = {};\n  for (const [variant, query] of Object.entries(breakpoints)) {\n    const { min = 0, max } = query;\n    const mediaQuery = [];\n    if (min)\n      mediaQuery.push(`(min-width: ${min}px)`);\n    if (max)\n      mediaQuery.push(`(max-width: ${max}px)`);\n    if (mediaQuery.length)\n      mediaQueries[variant] = mediaQuery.join(\" and \");\n  }\n  return mediaQueries;\n}\nfunction activeMediaQueryFromWindow(mediaQueries) {\n  for (const [variant, query] of Object.entries(mediaQueries)) {\n    const mql = safeWindow.matchMedia(query);\n    if (mql.matches)\n      return variant;\n  }\n}\nfunction useHydratedBreakpointVariants(initial, mediaQueries, hydratedWithInitial = true) {\n  var _a;\n  const isInitialNavigation = useContext12(IsInitialNavigationContext);\n  const baseVariant = useRef9(isBrowser2() ? (_a = activeMediaQueryFromWindow(mediaQueries)) != null ? _a : initial : initial);\n  const basePropsVariant = useRef9(hydratedWithInitial && isInitialNavigation ? initial : baseVariant.current);\n  const forceUpdate = useForceUpdate3();\n  const instantTransition = useInstantTransition();\n  const setActiveVariantInstant = useCallback5(\n    (variant) => {\n      if (variant !== baseVariant.current || variant !== basePropsVariant.current)\n        instantTransition(() => {\n          baseVariant.current = basePropsVariant.current = variant;\n          forceUpdate();\n        });\n    },\n    [instantTransition, forceUpdate]\n  );\n  useIsomorphicLayoutEffect2(() => {\n    if (!hydratedWithInitial || isInitialNavigation !== true)\n      return;\n    setActiveVariantInstant(baseVariant.current);\n  }, []);\n  useEffect7(() => {\n    const callbacks2 = [];\n    for (const [variant, query] of Object.entries(mediaQueries)) {\n      const mql = safeWindow.matchMedia(query);\n      const callback = (event) => {\n        if (event.matches)\n          setActiveVariantInstant(variant);\n      };\n      addMQLCallback(mql, callback);\n      callbacks2.push([mql, callback]);\n    }\n    return () => callbacks2.forEach(([mql, callback]) => removeMQLCallback(mql, callback));\n  }, [mediaQueries, setActiveVariantInstant]);\n  return [baseVariant.current, basePropsVariant.current];\n}\nfunction addMQLCallback(mql, callback) {\n  if (mql.addEventListener) {\n    mql.addEventListener(\"change\", callback);\n  } else {\n    mql.addListener(callback);\n  }\n}\nfunction removeMQLCallback(mql, callback) {\n  if (mql.removeEventListener) {\n    mql.removeEventListener(\"change\", callback);\n  } else {\n    mql.removeListener(callback);\n  }\n}\nfunction useBreakpointVariants(initial, _width, breakpoints) {\n  const mediaQueries = useConstant(() => createMediaQueriesFromBreakpoints(breakpoints));\n  const [initialVariant] = useHydratedBreakpointVariants(initial, mediaQueries, true);\n  return initialVariant;\n}\nfunction removeHiddenBreakpointLayers(initial, mediaQueries, variantClassNames) {\n  var _a, _b, _c, _d, _e;\n  const activeVariant = (_a = activeMediaQueryFromWindow(mediaQueries)) != null ? _a : initial;\n  const activeVariantHash = (_b = variantClassNames[activeVariant]) == null ? void 0 : _b.split(\"-\")[2];\n  if (activeVariantHash) {\n    for (const hiddenLayer of document.querySelectorAll(`.hidden-${activeVariantHash}`)) {\n      (_c = hiddenLayer.parentNode) == null ? void 0 : _c.removeChild(hiddenLayer);\n    }\n  }\n  for (const ssrVariant of document.querySelectorAll(`.${SSRVariantClassName}`)) {\n    if (ssrVariant.childElementCount > 1) {\n      console.warn(\"SSR variant was expected to have at most one child at this point\", ssrVariant);\n      continue;\n    } else if (ssrVariant.childElementCount === 1) {\n      (_d = ssrVariant.parentNode) == null ? void 0 : _d.replaceChild(ssrVariant.firstChild, ssrVariant);\n    } else {\n      (_e = ssrVariant.parentNode) == null ? void 0 : _e.removeChild(ssrVariant);\n    }\n  }\n  for (const image of document.querySelectorAll(\"[data-framer-original-sizes]\")) {\n    const originalSizes = image.getAttribute(\"data-framer-original-sizes\");\n    if (originalSizes === \"\") {\n      image.removeAttribute(\"sizes\");\n    } else {\n      image.setAttribute(\"sizes\", originalSizes);\n    }\n    image.removeAttribute(\"data-framer-original-sizes\");\n  }\n}\n\n// ../../library/src/modules/useDataRecord.ts\nimport { useMemo as useMemo5 } from \"react\";\nfunction useDataRecord(collection, variables) {\n  return useMemo5(() => {\n    if (!Array.isArray(collection)) {\n      return null;\n    }\n    if (!variables) {\n      return null;\n    }\n    const pageRecord = collection.find((record) => {\n      return Object.entries(variables).every(([key7, value]) => {\n        const recordValue = record[key7];\n        if (value === void 0 || recordValue === void 0 || isObject2(value) || isObject2(recordValue)) {\n          return false;\n        }\n        return String(value) === String(recordValue);\n      });\n    });\n    return pageRecord != null ? pageRecord : null;\n  }, [collection, variables]);\n}\n\n// ../../library/src/modules/useGamepad.ts\nimport React72 from \"react\";\nfunction isFramerGamepadKeydownData(value) {\n  return isObject2(value) && value.mapping !== void 0;\n}\nfunction gamepadInputsHaveChanged(previous, current) {\n  if (previous.length !== current.length)\n    return true;\n  if (!previous.every((item, i) => current[i] === item))\n    return true;\n  return false;\n}\nfunction createGamepadPoller() {\n  const handlers = /* @__PURE__ */ new Set();\n  let isConnected = false;\n  let isPolling = null;\n  let lastKeys = [];\n  const startPolling = () => {\n    const input = getGamepadInputs();\n    if (!input)\n      return;\n    const { gamepad, inputs } = input;\n    const { mapping, id } = gamepad;\n    if (gamepadInputsHaveChanged(lastKeys, inputs))\n      handlers.forEach((handler) => handler({ inputs, mapping, id }));\n    lastKeys = inputs;\n    isPolling = safeWindow.requestAnimationFrame(startPolling);\n  };\n  const handleConnection = () => {\n    if (isConnected || isPolling)\n      return;\n    startPolling();\n    isConnected = true;\n  };\n  const stopPolling = () => {\n    if (!isPolling)\n      return;\n    safeWindow.cancelAnimationFrame(isPolling);\n    isPolling = null;\n  };\n  const handleDisconnection = () => {\n    if (!isConnected)\n      return;\n    stopPolling();\n    isConnected = false;\n  };\n  const setupAndStartPolling = () => {\n    if (isPolling)\n      return;\n    const gamepad = getGamepadInputs();\n    if (!gamepad) {\n      safeWindow.addEventListener(\"gamepadconnected\", handleConnection);\n      return;\n    }\n    safeWindow.addEventListener(\"gamepaddisconnected\", handleDisconnection);\n    isConnected = true;\n    startPolling();\n  };\n  const cleanupAndStopPolling = () => {\n    if (!isPolling)\n      return;\n    safeWindow.removeEventListener(\"gamepadconnected\", handleConnection);\n    safeWindow.removeEventListener(\"gamepaddisconnected\", handleDisconnection);\n    stopPolling();\n  };\n  return {\n    register(callback) {\n      if (handlers.size === 0)\n        setupAndStartPolling();\n      handlers.add(callback);\n    },\n    unregister(callback) {\n      handlers.delete(callback);\n      if (handlers.size === 0)\n        cleanupAndStopPolling();\n    }\n  };\n}\nvar gamepadPoller = /* @__PURE__ */ createGamepadPoller();\nvar GamepadContext = /* @__PURE__ */ React72.createContext(gamepadPoller);\nfunction getGamepadInputs() {\n  let firstConnectedGamepad = null;\n  const gamepads = navigator.getGamepads();\n  for (const gamepad of gamepads) {\n    if (!gamepad)\n      continue;\n    if (!firstConnectedGamepad)\n      firstConnectedGamepad = gamepad;\n    const inputs = [...scanPressedAxis(gamepad), ...scanPressedButtons(gamepad)];\n    if (inputs.length > 0)\n      return { gamepad, inputs };\n  }\n  if (firstConnectedGamepad)\n    return { gamepad: firstConnectedGamepad, inputs: [] };\n  return null;\n}\nfunction scanPressedAxis(gamepad) {\n  const axes = [];\n  for (const [idx, axis] of gamepad.axes.entries()) {\n    if (idx > 3)\n      continue;\n    if (axis <= -0.5)\n      axes.push(`Axis ${idx}-`);\n    if (axis > 0.5)\n      axes.push(`Axis ${idx}+`);\n  }\n  return axes;\n}\nfunction scanPressedButtons(gamepad) {\n  const buttons = [];\n  for (const [idx, button] of gamepad.buttons.entries()) {\n    if (isButtonPressed(button))\n      buttons.push(`Button ${idx}`);\n  }\n  return buttons;\n}\nfunction isButtonPressed(button) {\n  return button.pressed === true || button.value > 0;\n}\nfunction useGamepad(input, callback, { mapping, on } = {}) {\n  const context = React72.useContext(GamepadContext);\n  const settings = useConstant(() => ({\n    mapping: mapping != null ? mapping : \"standard\",\n    on: on != null ? on : \"keydown\"\n  }));\n  const stateRef = React72.useRef({\n    pressed: false,\n    handler: callback\n  });\n  const cb2 = React72.useCallback(\n    (gamepad) => {\n      const { pressed, handler } = stateRef.current;\n      if (gamepad.inputs.includes(input) && settings.mapping === gamepad.mapping) {\n        settings.on === \"keydown\" && handler();\n        stateRef.current.pressed = true;\n      } else if (pressed) {\n        settings.on === \"keyup\" && handler();\n        stateRef.current.pressed = false;\n      }\n    },\n    [input, settings]\n  );\n  useOnCurrentTargetChange((isInTarget, isOverlayed) => {\n    const isActive = isInTarget && !isOverlayed;\n    if (isActive) {\n      context.register(cb2);\n    } else {\n      context.unregister(cb2);\n    }\n    return () => context.unregister(cb2);\n  }, []);\n  React72.useEffect(() => {\n    return () => context.unregister(cb2);\n  }, [cb2, context]);\n  React72.useEffect(() => {\n    stateRef.current.handler = callback;\n  }, [callback]);\n}\n\n// ../../library/src/modules/useHotkey.ts\nimport React73 from \"react\";\nvar modifierDefaults = {\n  altKey: false,\n  ctrlKey: false,\n  metaKey: false,\n  shiftKey: false\n};\nfunction createShortcutDefinition(shortcut) {\n  const keys3 = shortcut.split(\"+\");\n  const key7 = keys3.pop();\n  if (!key7)\n    return void 0;\n  const modifiers = {};\n  for (const modifier of keys3) {\n    modifiers[`${modifier}Key`] = true;\n  }\n  return {\n    ...modifierDefaults,\n    ...modifiers,\n    key: key7\n  };\n}\nfunction useHotkey(shortcut, callback) {\n  const inTarget = React73.useRef(true);\n  const shortcutDefinition = useConstant(() => createShortcutDefinition(shortcut));\n  useOnCurrentTargetChange((isCurrentTarget, isOverlayed) => {\n    inTarget.current = isCurrentTarget && !isOverlayed;\n    return () => inTarget.current = false;\n  });\n  const eventHandler = React73.useCallback(\n    (event) => {\n      if (!shortcutDefinition)\n        return;\n      if (!inTarget.current)\n        return;\n      if (!Object.keys(shortcutDefinition).every((key7) => shortcutDefinition[key7] === event[key7]))\n        return;\n      event.preventDefault();\n      callback();\n    },\n    [shortcutDefinition, callback]\n  );\n  React73.useEffect(() => {\n    document.addEventListener(\"keydown\", eventHandler);\n    return () => document.removeEventListener(\"keydown\", eventHandler);\n  }, [eventHandler]);\n}\n\n// ../../library/src/modules/useIsOnFramerCanvas.ts\nfunction useIsOnFramerCanvas() {\n  return RenderTarget.current() === \"CANVAS\" /* canvas */;\n}\n\n// ../../library/src/modules/useNavigate.tsx\nfunction useNavigate() {\n  const { navigate } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  if (!navigate)\n    return () => {\n    };\n  return (target) => {\n    if (onCanvas)\n      return;\n    navigate(target);\n    return false;\n  };\n}\n\n// ../../library/src/modules/useOnVariantChange.ts\nimport React74 from \"react\";\nfunction callbackForVariant(map, variant) {\n  if (map[variant])\n    return map[variant];\n  if (variant in map)\n    return void 0;\n  return map.default;\n}\nfunction useOnVariantChange(variant, callbackMap) {\n  const isOnFramerCanvas = useIsOnFramerCanvas();\n  if (isOnFramerCanvas)\n    return;\n  const isActiveScreenRef = React74.useRef(true);\n  const callbackMapRef = React74.useRef(callbackMap);\n  useOnCurrentTargetChange((isCurrent, isOverlayed) => {\n    const isActiveScreen = isCurrent && !isOverlayed;\n    if (!isActiveScreenRef.current && isActiveScreen) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback)\n        callback();\n    }\n    isActiveScreenRef.current = isActiveScreen;\n  }, []);\n  React74.useEffect(() => {\n    if (isActiveScreenRef.current) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback)\n        callback();\n    }\n  }, [variant]);\n}\nfunction useOnAppear(callback) {\n  useOnVariantChange(\"default\", { default: callback });\n}\n\n// ../../library/src/modules/useOverlayState.tsx\nimport React75 from \"react\";\nfunction useOverlayState() {\n  const [showOverlay, setShowOverlay] = React75.useState(false);\n  const callback = React75.useCallback((show) => {\n    if (show) {\n      document.documentElement.style.setProperty(\"overflow\", \"hidden\");\n    } else {\n      document.documentElement.style.removeProperty(\"overflow\");\n    }\n    setShowOverlay(show);\n  }, []);\n  React75.useEffect(\n    () => () => {\n      document.documentElement.style.removeProperty(\"overflow\");\n    },\n    []\n  );\n  return [showOverlay, callback];\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nimport React76 from \"react\";\nasync function componentForRoute(route) {\n  if (!isRoute(route))\n    return;\n  const { page: routeComponent } = route;\n  if (!routeComponent)\n    return;\n  if (React76.isValidElement(routeComponent))\n    return routeComponent;\n  if (withPreload(routeComponent))\n    await routeComponent.preload();\n  return React76.createElement(routeComponent, { key: route.path });\n}\nvar preloadKey2 = \"preload\";\nfunction withPreload(component) {\n  return !!component && isObject2(component) && preloadKey2 in component;\n}\nfunction usePrototypeNavigate({ preload } = {}) {\n  const navigation = useNavigation();\n  const { getRoute } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  React76.useEffect(() => {\n    if (!navigation || onCanvas)\n      return;\n    preload == null ? void 0 : preload.forEach((componentOrRoute) => {\n      let component;\n      if (isString3(componentOrRoute)) {\n        const route = getRoute == null ? void 0 : getRoute(componentOrRoute);\n        if (isRoute(route)) {\n          component = route.page;\n        }\n      } else {\n        component = componentOrRoute;\n      }\n      if (component && withPreload(component))\n        component.preload();\n    });\n  }, []);\n  if (!navigation)\n    return () => {\n    };\n  return async (target, options = {}) => {\n    if (onCanvas)\n      return;\n    if (target === \"previous\") {\n      navigation.goBack();\n      return false;\n    }\n    const Component15 = React76.isValidElement(target) ? target : await componentForRoute(getRoute == null ? void 0 : getRoute(target)).catch(() => {\n    });\n    if (!Component15)\n      return;\n    const { appearsFrom, backdropColor, animation } = options;\n    const transitionType = options.transition || \"instant\";\n    switch (transitionType) {\n      case \"instant\":\n        navigation.instant(Component15);\n        break;\n      case \"fade\":\n        navigation.fade(Component15, { animation });\n        break;\n      case \"push\":\n        navigation.push(Component15, { appearsFrom, animation });\n        break;\n      case \"flip\":\n        navigation.flip(Component15, { appearsFrom, animation });\n        break;\n      case \"magicMotion\":\n        navigation.magicMotion(Component15, { animation });\n        break;\n      case \"modal\":\n        navigation.modal(Component15, { backdropColor, animation });\n        break;\n      case \"overlay\":\n        navigation.overlay(Component15, { appearsFrom, backdropColor, animation });\n        break;\n    }\n    return false;\n  };\n}\n\n// ../../library/src/modules/useVariantState.ts\nimport React77 from \"react\";\nfunction createGestureVariant(variant, type) {\n  return `${variant}-${type}`;\n}\nfunction nextVariant(allVariants, currentVariant) {\n  const index = allVariants.indexOf(currentVariant);\n  let nextIndex = index + 1;\n  if (nextIndex >= allVariants.length) {\n    nextIndex = 0;\n  }\n  const nextVariant2 = allVariants[nextIndex];\n  assert(nextVariant2 !== void 0, \"nextVariant should be defined\");\n  return nextVariant2;\n}\nfunction activeTransition(transitions, variant) {\n  if (!transitions)\n    return void 0;\n  if (variant) {\n    const variantTransition = transitions[variant];\n    if (variantTransition)\n      return variantTransition;\n  }\n  return transitions.default;\n}\nvar VariantSelector = /* @__PURE__ */ ((VariantSelector2) => {\n  VariantSelector2[\"Variant\"] = \"v\";\n  return VariantSelector2;\n})(VariantSelector || {});\nfunction getGesture(enabledGestures, isHovered, isPressed) {\n  const { hover, pressed } = enabledGestures || {};\n  if (pressed && isPressed)\n    return \"pressed\";\n  if (hover && isHovered)\n    return \"hover\";\n}\nfunction createVariantClassName(baseVariant, variantClassNames) {\n  const mappedClassName = variantClassNames[baseVariant];\n  if (mappedClassName)\n    return mappedClassName;\n  return `framer-${\"v\" /* Variant */}-${baseVariant}`;\n}\nfunction safeBaseVariant(targetVariant, fallbackVariant, validBaseVariants) {\n  if (!targetVariant)\n    return fallbackVariant;\n  if (validBaseVariants.has(targetVariant))\n    return targetVariant;\n  return fallbackVariant;\n}\nvar CycleVariantState = /* @__PURE__ */ Symbol(\"cycle\");\nfunction useVariantState({\n  variant,\n  defaultVariant: externalDefaultVariant,\n  transitions: externalTransitions,\n  enabledGestures: externalEnabledGestures,\n  cycleOrder: externalCycleOrder = [],\n  variantProps = {},\n  variantClassNames = {}\n}) {\n  const forceUpdate = useForceUpdate3();\n  const validBaseVariants = useConstant(() => new Set(externalCycleOrder));\n  const internalState = React77.useRef({\n    isHovered: false,\n    isPressed: false,\n    baseVariant: safeBaseVariant(variant, externalDefaultVariant, validBaseVariants),\n    lastVariant: variant,\n    gestureVariant: void 0,\n    defaultVariant: externalDefaultVariant,\n    enabledGestures: externalEnabledGestures,\n    cycleOrder: externalCycleOrder,\n    transitions: externalTransitions\n  });\n  const resolveNextVariant = React77.useCallback(\n    (targetBaseVariant) => {\n      const { isHovered: isHovered2, isPressed: isPressed2, enabledGestures: enabledGestures2, defaultVariant: defaultVariant2 } = internalState.current;\n      const nextBaseVariant = safeBaseVariant(targetBaseVariant, defaultVariant2, validBaseVariants);\n      const gesture = getGesture(enabledGestures2 == null ? void 0 : enabledGestures2[nextBaseVariant], isHovered2, isPressed2);\n      const nextGestureVariant = gesture ? createGestureVariant(nextBaseVariant, gesture) : void 0;\n      return [nextBaseVariant, nextGestureVariant];\n    },\n    [validBaseVariants]\n  );\n  const setGestureState = React77.useCallback(\n    ({ isHovered: isHovered2, isPressed: isPressed2 }) => {\n      if (isHovered2 !== void 0)\n        internalState.current.isHovered = isHovered2;\n      if (isPressed2 !== void 0)\n        internalState.current.isPressed = isPressed2;\n      const { baseVariant: baseVariant2, gestureVariant: gestureVariant2, defaultVariant: defaultVariant2 } = internalState.current;\n      const [nextBase, nextGesture] = resolveNextVariant(baseVariant2);\n      if (nextBase !== baseVariant2 || nextGesture !== gestureVariant2) {\n        internalState.current.baseVariant = nextBase || defaultVariant2;\n        internalState.current.gestureVariant = nextGesture;\n        forceUpdate();\n      }\n    },\n    [resolveNextVariant, forceUpdate]\n  );\n  const setVariant = React77.useCallback(\n    (proposedVariant) => {\n      const { defaultVariant: defaultVariant2, cycleOrder, baseVariant: baseVariant2, gestureVariant: gestureVariant2 } = internalState.current;\n      const nextBaseVariant = proposedVariant === CycleVariantState ? nextVariant(cycleOrder || [], baseVariant2 || defaultVariant2) : proposedVariant;\n      const [nextBase, nextGesture] = resolveNextVariant(nextBaseVariant);\n      if (nextBase !== baseVariant2 || nextGesture !== gestureVariant2) {\n        internalState.current.baseVariant = nextBase || defaultVariant2;\n        internalState.current.gestureVariant = nextGesture;\n        forceUpdate();\n      }\n    },\n    [resolveNextVariant, forceUpdate]\n  );\n  if (variant !== internalState.current.lastVariant) {\n    const [nextBase, nextGesture] = resolveNextVariant(variant);\n    if (nextBase !== internalState.current.baseVariant || nextGesture !== internalState.current.gestureVariant) {\n      internalState.current.baseVariant = nextBase;\n      internalState.current.gestureVariant = nextGesture;\n      internalState.current.lastVariant = variant;\n    }\n  }\n  const { baseVariant, gestureVariant, defaultVariant, enabledGestures, isHovered, isPressed } = internalState.current;\n  const addVariantProps = useAddVariantProps(\n    internalState.current.baseVariant,\n    internalState.current.gestureVariant,\n    variantProps\n  );\n  return React77.useMemo(() => {\n    const variants = [];\n    if (baseVariant !== defaultVariant)\n      variants.push(baseVariant);\n    if (gestureVariant)\n      variants.push(gestureVariant);\n    return {\n      variants,\n      baseVariant,\n      gestureVariant,\n      transition: activeTransition(internalState.current.transitions, baseVariant),\n      setVariant,\n      setGestureState,\n      addVariantProps,\n      classNames: cx(\n        createVariantClassName(baseVariant, variantClassNames),\n        getGesture(enabledGestures == null ? void 0 : enabledGestures[baseVariant], isHovered, isPressed)\n      )\n    };\n  }, [\n    baseVariant,\n    gestureVariant,\n    isHovered,\n    isPressed,\n    addVariantProps,\n    setVariant,\n    defaultVariant,\n    enabledGestures,\n    setGestureState,\n    variantClassNames\n  ]);\n}\n\n// ../../library/src/modules/withVariantAppearEffect.tsx\nimport React78 from \"react\";\nvar keys = /* @__PURE__ */ new Set([\n  \"visibleVariantId\",\n  \"obscuredVariantId\",\n  \"threshold\",\n  \"animateOnce\",\n  \"variantAppearEffectEnabled\",\n  \"targets\"\n]);\nfunction createInputOutputRanges2(transformTargets, threshold) {\n  const outputRange = [];\n  const inputRange = createTransformInputRange(\n    transformTargets,\n    threshold,\n    (index) => outputRange.unshift(index, index)\n  );\n  const firstItem = inputRange[0];\n  assert(typeof firstItem === \"number\", `Invalid inputRange: ${inputRange}`);\n  if (firstItem <= 1)\n    return { inputRange, outputRange };\n  return { inputRange: [0, Math.max(firstItem - 1, 0), ...inputRange], outputRange: [-1, -1, ...outputRange] };\n}\nvar withVariantAppearEffect = (Component15) => React78.forwardRef(\n  (props, forwardedRef) => {\n    var _a;\n    const fallbackRef = React78.useRef(null);\n    const ref = forwardedRef != null ? forwardedRef : fallbackRef;\n    const [options, rest] = extractPrefixedProps(props, keys);\n    const { visibleVariantId, obscuredVariantId, animateOnce, threshold, variantAppearEffectEnabled, targets } = options;\n    const [activeVariant, setVariant] = React78.useState(\n      obscuredVariantId || ((_a = props.variant) != null ? _a : void 0)\n    );\n    const animateState = React78.useRef(false);\n    const appearEffectOptions = {\n      animateOnce,\n      threshold: {\n        y: threshold\n      }\n    };\n    useAppearEffect(ref, appearEffectOptions, (appears) => {\n      if (options.targets)\n        return;\n      if (animateOnce && animateState.current === true)\n        return;\n      if (animateState.current === appears)\n        return;\n      animateState.current = appears;\n      if (appears) {\n        setVariant(visibleVariantId);\n      } else {\n        setVariant(obscuredVariantId);\n      }\n    });\n    React78.useEffect(() => {\n      if (!targets)\n        return;\n      const playedState = {};\n      let currentVariant = props.variant;\n      return scroll(({ y: scrollY }) => {\n        var _a2, _b;\n        const { inputRange, outputRange } = createInputOutputRanges2(\n          targets,\n          (threshold != null ? threshold : 0) * scrollY.containerLength\n        );\n        const index = Math.floor(transform(scrollY.current, inputRange, outputRange));\n        if (animateOnce && playedState[index])\n          return;\n        playedState[index] = true;\n        const variant = (_b = (_a2 = targets[index]) == null ? void 0 : _a2.target) != null ? _b : props.variant;\n        if (variant === currentVariant)\n          return;\n        currentVariant = variant;\n        setVariant(variant);\n      });\n    }, [animateOnce, threshold, targets, props.variant]);\n    if (!(\"variantAppearEffectEnabled\" in options) || variantAppearEffectEnabled === true) {\n      return /* @__PURE__ */ React78.createElement(Component15, { ...rest, variant: activeVariant, ref });\n    } else {\n      return /* @__PURE__ */ React78.createElement(Component15, { ...rest });\n    }\n  }\n);\n\n// ../../library/src/render/assetResolver/serverURL.ts\nfunction parseURL(url, base) {\n  try {\n    return typeof base === \"undefined\" ? new URL(url) : new URL(url, base);\n  } catch (err) {\n    return null;\n  }\n}\nfunction joinPaths(paths) {\n  let res = \"\";\n  for (const path of paths) {\n    if (!path)\n      continue;\n    if (res.length > 0 && !res.endsWith(\"/\")) {\n      res += \"/\";\n    }\n    if (Array.isArray(path)) {\n      res += joinPaths(path);\n    } else {\n      res += encodeURIComponent(path).replace(/%2F/g, \"/\");\n    }\n  }\n  return res;\n}\nfunction serverURL(...paths) {\n  const notEmptyPaths = paths.flat().filter(Boolean);\n  if (notEmptyPaths.length === 1 && notEmptyPaths[0] && parseURL(notEmptyPaths[0])) {\n    return notEmptyPaths[0];\n  }\n  const path = joinPaths(paths);\n  const resolvedAsset = runtime.assetResolver(path, {\n    isFramerResourceURL: true,\n    isExport: RenderTarget.current() === \"EXPORT\" /* export */\n  });\n  return resolvedAsset || \"\";\n}\n\n// ../../library/src/render/componentLoader/definition.ts\nfunction isDesignDefinition(d) {\n  return d.type === \"master\";\n}\nfunction isOverride(d) {\n  return d.type === \"override\";\n}\nfunction isReactDefinition(d) {\n  return d.type !== \"master\";\n}\n\n// ../../library/src/render/componentLoader/package.ts\nvar localPackageFallbackIdentifier = \"|local|\";\n\n// ../../library/src/render/DesignComponentWrapper.tsx\nimport React89, { Component as Component14 } from \"react\";\n\n// ../../library/src/render/presentation/DeprecatedComponentContainer.tsx\nvar import_process6 = __toESM(require_browser(), 1);\nimport React79 from \"react\";\nvar DeprecatedComponentContainer = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      this.state = {};\n      this.setElement = (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      };\n    }\n    componentDidCatch(error, info) {\n      let stack = info.componentStack.split(\"\\n\").filter((line) => line.length !== 0);\n      let currentIndex = 0;\n      for (const line of stack) {\n        if (line.startsWith(`    in ${this.constructor.name}`)) {\n          break;\n        }\n        currentIndex++;\n      }\n      stack = stack.slice(0, currentIndex);\n      this.setState({\n        lastError: {\n          children: this.props.children,\n          name: error.name,\n          message: error.message,\n          componentStack: stack\n        }\n      });\n    }\n    renderErrorPlaceholder(file, error) {\n      const { RenderPlaceholder } = runtime;\n      return /* @__PURE__ */ React79.createElement(FrameWithMotion, { ...this.props, background: null }, /* @__PURE__ */ React79.createElement(RenderPlaceholder, { error: { error, file } }));\n    }\n    render() {\n      var _a2, _b;\n      if (import_process6.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      let { children } = this.props;\n      const { componentIdentifier } = this.props;\n      const { lastError: error } = this.state;\n      const noChildren = !children || Array.isArray(children) && children.filter((c) => c).length === 0;\n      if (noChildren) {\n        const errorComponent = runtime.componentLoader.errorForIdentifier(componentIdentifier);\n        if (errorComponent) {\n          return this.renderErrorPlaceholder(errorComponent.file, errorComponent.error);\n        }\n      }\n      if (error && error.children === children) {\n        const component = runtime.componentLoader.componentForIdentifier(componentIdentifier);\n        const file = component ? component.file : \"???\";\n        return this.renderErrorPlaceholder(file, error.message);\n      }\n      (_b = (_a2 = safeWindow)[\"__checkComponentBudget__\"]) == null ? void 0 : _b.call(_a2);\n      let frameProps = this.props;\n      if (RenderTarget.current() !== \"CANVAS\" /* canvas */) {\n        const {\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          opacity,\n          visible,\n          _constraints,\n          _initialStyle,\n          name,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft,\n          componentIdentifier: originalComponentIdentifier,\n          children: originalChildren,\n          style,\n          duplicatedFrom,\n          widthType,\n          heightType,\n          ...childProps\n        } = frameProps;\n        children = React79.Children.map(originalChildren, (child) => {\n          if (!isReactChild(child) || !isReactElement(child)) {\n            return child;\n          }\n          if (!isPageOrScroll(originalComponentIdentifier)) {\n            return /* @__PURE__ */ React79.createElement(LayoutGroup, { inherit: false, id: this.props.__layoutId }, /* @__PURE__ */ React79.createElement(AutomaticLayoutIds, { enabled: false }, React79.cloneElement(child, childProps)));\n          }\n          return React79.cloneElement(child, childProps);\n        });\n        frameProps = {\n          style,\n          _constraints,\n          _initialStyle,\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          visible,\n          name,\n          duplicatedFrom,\n          id: frameProps.id,\n          layoutId: this.props.__layoutId,\n          widthType,\n          heightType,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft\n        };\n      }\n      return /* @__PURE__ */ React79.createElement(ComponentContainerContext.Provider, { value: true }, /* @__PURE__ */ React79.createElement(\n        FrameWithMotion,\n        {\n          \"data-framer-component-container\": true,\n          background: null,\n          overflow: \"visible\",\n          ref: this.setElement,\n          ...frameProps\n        },\n        children\n      ));\n    }\n  }, _a.supportsConstraints = true, _a.defaultComponentContainerProps = {\n    style: {},\n    visible: true,\n    componentIdentifier: \"\"\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultComponentContainerProps\n  }, _a.contextType = ComponentContainerContext, _a;\n})();\nfunction isPageOrScroll(identifier) {\n  if (!identifier)\n    return false;\n  if (identifier === \"framer/Page\")\n    return true;\n  if (identifier === \"framer/Scroll\")\n    return true;\n  return false;\n}\n\n// ../../library/src/render/presentation/SVG.tsx\nvar import_process7 = __toESM(require_browser(), 1);\nimport React82 from \"react\";\n\n// ../../library/src/render/utils/elementPropertiesForGradient.ts\nfunction elementPropertiesForLinearGradient(gradient, id) {\n  return {\n    id: `id${id}g${LinearGradient.hash(gradient)}`,\n    angle: gradient.angle - 90,\n    stops: gradientColorStops(gradient).map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: stop.position\n    }))\n  };\n}\nfunction elementPropertiesForRadialGradient(gradient, id) {\n  return {\n    id: `id${id}g${RadialGradient.hash(gradient)}`,\n    widthFactor: gradient.widthFactor,\n    heightFactor: gradient.heightFactor,\n    centerAnchorX: gradient.centerAnchorX,\n    centerAnchorY: gradient.centerAnchorY,\n    stops: gradientColorStops(gradient).map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: stop.position\n    }))\n  };\n}\n\n// ../../library/src/render/utils/imagePatternPropsForFill.tsx\nfunction imagePatternPropsForFill(fill, frame2, id) {\n  var _a;\n  fill = Animatable.get(fill, \"#09F\");\n  if (!BackgroundImage.isImageObject(fill))\n    return void 0;\n  if (!fill.pixelWidth || !fill.pixelHeight)\n    return void 0;\n  const imageWidth = fill.pixelWidth;\n  const imageHeight = fill.pixelHeight;\n  let transform2;\n  const { fit } = fill;\n  if (fit === \"fill\" || fit === \"fit\" || !fit) {\n    let scaleX = 1;\n    let scaleY = 1;\n    let offsetX = 0;\n    let offsetY = 0;\n    const imageRatio = imageWidth / imageHeight;\n    const realWidth = frame2.height * imageRatio;\n    const realHeight = frame2.width / imageRatio;\n    const validScaleX = realWidth / frame2.width;\n    const validScaleY = realHeight / frame2.height;\n    if (fit === \"fill\" || !fit ? validScaleY > validScaleX : validScaleY < validScaleX) {\n      scaleY = validScaleY;\n      offsetY = (1 - validScaleY) / 2;\n    } else {\n      scaleX = validScaleX;\n      offsetX = (1 - validScaleX) / 2;\n    }\n    transform2 = `translate(${offsetX}, ${offsetY}) scale(${scaleX}, ${scaleY})`;\n  }\n  const imageId = `id${id}g${\"-fillImage\"}`;\n  return { id: imageId, path: (_a = fill.src) != null ? _a : \"\", transform: transform2 };\n}\n\n// ../../library/src/render/WindowContext.ts\nimport React80 from \"react\";\nvar WindowContext = /* @__PURE__ */ React80.createContext(\n  void 0\n);\nvar useProvidedWindow = () => React80.useContext(WindowContext);\n\n// ../../library/src/render/presentation/ImagePatternElement.tsx\nimport React81, { Component as Component11 } from \"react\";\n\n// ../../library/src/render/utils/imageUrlForAsset.ts\nvar mediaType2 = \"framer/asset-reference,\";\nfunction isAssetReference(value) {\n  return value.startsWith(`data:${mediaType2}`);\n}\nfunction imageUrlForAsset(asset, pixelSize) {\n  var _a;\n  if (/^\\w+:/.test(asset) && !isAssetReference(asset))\n    return asset;\n  if (typeof pixelSize !== \"number\")\n    pixelSize = void 0;\n  else if (pixelSize <= 512)\n    pixelSize = 512;\n  else if (pixelSize <= 1024)\n    pixelSize = 1024;\n  else if (pixelSize <= 2048)\n    pixelSize = 2048;\n  else\n    pixelSize = 4096;\n  const isExport = RenderTarget.current() === \"EXPORT\" /* export */;\n  return (_a = runtime.assetResolver(asset, { pixelSize, isExport })) != null ? _a : \"\";\n}\n\n// ../../library/src/render/presentation/ImagePatternElement.tsx\nvar ImagePatternElement = class extends Component11 {\n  render() {\n    const { id, path, transform: transform2 } = this.props;\n    const xlinkHref = imageUrlForAsset(path);\n    return /* @__PURE__ */ React81.createElement(\"pattern\", { id, width: \"100%\", height: \"100%\", patternContentUnits: \"objectBoundingBox\" }, /* @__PURE__ */ React81.createElement(\n      \"image\",\n      {\n        key: xlinkHref,\n        width: 1,\n        height: 1,\n        xlinkHref,\n        preserveAspectRatio: \"none\",\n        transform: transform2\n      }\n    ));\n  }\n};\n\n// ../../library/src/render/presentation/SharedSVGManager.ts\nvar useDOM = isBrowser2();\nvar SharedSVGEntry = class {\n  constructor(id, svg, innerHTML, viewBox, count = 0) {\n    this.id = id;\n    this.svg = svg;\n    this.innerHTML = innerHTML;\n    this.viewBox = viewBox;\n    this.count = count;\n  }\n};\nvar SharedSVGManager = class {\n  constructor() {\n    this.entries = /* @__PURE__ */ new Map();\n  }\n  debugGetEntries() {\n    return this.entries;\n  }\n  subscribe(svg, generateUniqueIds, contentId) {\n    if (!svg || svg === \"\")\n      return \"\";\n    let entry = this.entries.get(svg);\n    if (!entry) {\n      if (!contentId) {\n        contentId = \"svg\" + String(hash(svg)) + \"_\" + String(svg.length);\n      }\n      let uniqueSVG = svg;\n      let svgSize;\n      const svgDom = parseSVG(svg);\n      if (svgDom) {\n        if (generateUniqueIds) {\n          prefixIdsInSVG(svgDom, contentId);\n        }\n        svgDom.id = contentId;\n        svgSize = getSVGSize(svgDom);\n        uniqueSVG = svgDom.outerHTML;\n      }\n      entry = this.createDOMElementFor(uniqueSVG, contentId, svgSize);\n      this.entries.set(svg, entry);\n    }\n    entry.count += 1;\n    return entry.innerHTML;\n  }\n  getViewBox(svg) {\n    if (!svg || svg === \"\")\n      return;\n    const entry = this.entries.get(svg);\n    return entry == null ? void 0 : entry.viewBox;\n  }\n  unsubscribe(svg) {\n    if (!svg || svg === \"\")\n      return;\n    const entry = this.entries.get(svg);\n    if (!entry)\n      return;\n    entry.count -= 1;\n    if (entry.count > 0)\n      return;\n    setTimeout(() => this.maybeRemoveEntry(svg), 5e3);\n  }\n  maybeRemoveEntry(svg) {\n    const entry = this.entries.get(svg);\n    if (!entry)\n      return;\n    if (entry.count > 0)\n      return;\n    this.entries.delete(svg);\n    this.removeDOMElement(entry);\n  }\n  removeDOMElement(entry) {\n    const containerId = \"container_\" + entry.id;\n    if (useDOM) {\n      const container = document == null ? void 0 : document.querySelector(\"#\" + containerId);\n      container == null ? void 0 : container.remove();\n    }\n  }\n  createDOMElementFor(svg, id, size2) {\n    const containerId = \"container_\" + id;\n    if (useDOM) {\n      let svgTemplates = document.querySelector(\"#svg-templates\");\n      if (!svgTemplates) {\n        svgTemplates = document.createElement(\"div\");\n        svgTemplates.id = \"svg-templates\";\n        svgTemplates.style.position = \"absolute\";\n        svgTemplates.style.top = \"0\";\n        svgTemplates.style.left = \"0\";\n        svgTemplates.style.width = \"0\";\n        svgTemplates.style.height = \"0\";\n        svgTemplates.style.overflow = \"hidden\";\n        document.body.appendChild(svgTemplates);\n      }\n      if (!document.querySelector(\"#\" + containerId)) {\n        const container = document.createElement(\"div\");\n        container.id = containerId;\n        container.innerHTML = svg;\n        if (container.firstElementChild) {\n          container.firstElementChild.id = id;\n        }\n        svgTemplates.appendChild(container);\n      }\n    }\n    const box = size2 ? `0 0 ${size2.width} ${size2.height}` : void 0;\n    const viewBox = box ? ` viewBox=\"${box}\"` : \"\";\n    const innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"width: 100%; height: 100%\"${viewBox}><use href=\"#${id}\"></use></svg>`;\n    return new SharedSVGEntry(id, svg, innerHTML, box);\n  }\n  clear() {\n    this.entries.clear();\n  }\n  generateTemplates() {\n    const output = [];\n    const style = \"position: absolute; overflow: hidden; top: 0; left: 0; width: 0; height: 0\";\n    output.push(`<div id=\"svg-templates\" style=\"${style}\">`);\n    for (const value of this.entries.values()) {\n      const containerId = \"container_\" + value.id;\n      output.push(`  <div id=\"${containerId}\">`);\n      output.push(`    ${value.svg}`);\n      output.push(\"  </div>\");\n    }\n    output.push(\"</div>\");\n    return output.join(\"\\n\");\n  }\n};\nvar sharedSVGManager = /* @__PURE__ */ new SharedSVGManager();\nfunction parseSVG(svg) {\n  if (typeof DOMParser === \"undefined\") {\n    console.warn(\"unable to find DOMParser\");\n    return;\n  }\n  try {\n    const domParser = new DOMParser();\n    const doc = domParser.parseFromString(svg, \"text/html\");\n    const node = doc.getElementsByTagName(\"svg\")[0];\n    if (!node)\n      throw Error(\"no svg element found\");\n    return node;\n  } catch {\n    return;\n  }\n}\nfunction prefixIdsInSVG(svg, prefix2) {\n  const sanitizedPrefix = sanitizeString(prefix2);\n  recursivelyPrefixId(svg, sanitizedPrefix);\n}\nfunction sanitizeString(str) {\n  return str.replace(/[^a-z0-9\\-_:.]|^[^a-z]+/gi, \"\");\n}\nfunction recursivelyPrefixId(el, prefix2) {\n  prefixId(el, prefix2);\n  const childNodes = Array.from(el.children);\n  childNodes.forEach((node) => {\n    recursivelyPrefixId(node, prefix2);\n  });\n}\nfunction prefixId(el, prefix2) {\n  const attributes = el.getAttributeNames();\n  attributes.forEach((attr) => {\n    const value = el.getAttribute(attr);\n    if (!value)\n      return;\n    if (attr === \"id\") {\n      el.setAttribute(attr, `${prefix2}_${value}`);\n    }\n    if (attr === \"href\" || attr === \"xlink:href\") {\n      const [base, fragmentIdentifier] = value.split(\"#\");\n      if (base)\n        return;\n      el.setAttribute(attr, `#${prefix2}_${fragmentIdentifier}`);\n      return;\n    }\n    const URL_REF = \"url(#\";\n    if (value.includes(URL_REF)) {\n      const prefixedValue = value.replace(URL_REF, `${URL_REF}${prefix2}_`);\n      el.setAttribute(attr, prefixedValue);\n    }\n  });\n}\nvar unitsToPixels = {\n  cm: 96 / 2.54,\n  mm: 96 / 2.54 / 10,\n  Q: 96 / 2.54 / 40,\n  in: 96,\n  pc: 96 / 6,\n  pt: 96 / 72,\n  px: 1,\n  em: 16,\n  ex: 8,\n  ch: 8,\n  rem: 16\n};\nfunction parseLength(value) {\n  var _a;\n  if (!value)\n    return;\n  const m2 = /(-?[0-9.]+)([a-z%]*)/.exec(value);\n  if ((m2 == null ? void 0 : m2[1]) === void 0 || (m2 == null ? void 0 : m2[2]) === void 0)\n    return;\n  if ((_a = m2[2]) == null ? void 0 : _a.startsWith(\"%\"))\n    return;\n  return Math.round(parseFloat(m2[1]) * (unitsToPixels[m2[2]] || 1));\n}\nfunction getSVGSize(svg) {\n  const width = parseLength(svg.getAttribute(\"width\"));\n  const height = parseLength(svg.getAttribute(\"height\"));\n  if (typeof width !== \"number\" || typeof height !== \"number\")\n    return;\n  if (width <= 0 || height <= 0)\n    return;\n  return { width, height };\n}\n\n// ../../library/src/render/presentation/SVG.tsx\nfunction SVG(props) {\n  const parentSize = useParentSize();\n  const ariaId = \"svg\" + React82.useId();\n  const layoutId = useLayoutId(props);\n  const layoutRef = React82.useRef(null);\n  const providedWindow = useProvidedWindow();\n  useMeasureLayout(props, layoutRef);\n  return /* @__PURE__ */ React82.createElement(\n    SVGComponent,\n    {\n      ...props,\n      innerRef: layoutRef,\n      parentSize,\n      ariaId,\n      layoutId,\n      providedWindow\n    }\n  );\n}\nvar MAX_BACKGROUND_SVG_TEXT_LENGTH = 5e4;\nfunction containsImageReference(svg) {\n  return svg.indexOf(\"image\") >= 0;\n}\nfunction hasBorderRadius(style) {\n  return !!(style.borderRadius || style.borderBottomLeftRadius || style.borderBottomRightRadius || style.borderTopLeftRadius || style.borderTopRightRadius);\n}\nfunction sizeSVG(container, props) {\n  var _a, _b, _c;\n  const div = container.current;\n  if (!div)\n    return;\n  const localWindow = (_a = props.providedWindow) != null ? _a : safeWindow;\n  const svg = div.firstElementChild;\n  if (!svg || !(svg instanceof localWindow.SVGSVGElement))\n    return;\n  if (!svg.getAttribute(\"viewBox\")) {\n    const viewBox = sharedSVGManager.getViewBox(props.svg);\n    if (viewBox) {\n      svg.setAttribute(\"viewBox\", viewBox);\n    }\n  }\n  const { withExternalLayout, parentSize } = props;\n  const canUseCalculatedOnCanvasSize = !withExternalLayout && constraintsEnabled(props) && parentSize !== 1 /* Disabled */ && parentSize !== 2 /* DisabledForCurrentLevel */;\n  if (canUseCalculatedOnCanvasSize)\n    return;\n  const { intrinsicWidth, intrinsicHeight, _constraints } = props;\n  if (((_b = svg.viewBox.baseVal) == null ? void 0 : _b.width) === 0 && ((_c = svg.viewBox.baseVal) == null ? void 0 : _c.height) === 0 && isFiniteNumber(intrinsicWidth) && isFiniteNumber(intrinsicHeight)) {\n    svg.setAttribute(\"viewBox\", `0 0 ${intrinsicWidth} ${intrinsicHeight}`);\n  }\n  if (_constraints && _constraints.aspectRatio) {\n    svg.setAttribute(\"preserveAspectRatio\", \"\");\n  } else {\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n  }\n  svg.setAttribute(\"width\", \"100%\");\n  svg.setAttribute(\"height\", \"100%\");\n}\nvar SVGComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      this.container = React82.createRef();\n      this.svgElement = null;\n      this.setSVGElement = (element) => {\n        this.svgElement = element;\n        this.setLayerElement(element);\n      };\n      this.previouslyRenderedSVG = \"\";\n    }\n    static frame(props) {\n      return calculateRect(props, props.parentSize || 0 /* Unknown */);\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */);\n    }\n    componentDidMount() {\n      if (this.props.svgContentId)\n        return;\n      sizeSVG(this.container, this.props);\n    }\n    componentWillUnmount() {\n      sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n      this.previouslyRenderedSVG = \"\";\n    }\n    componentDidUpdate(prevProps) {\n      super.componentDidUpdate(prevProps);\n      if (this.props.svgContentId)\n        return;\n      const { fill } = this.props;\n      if (BackgroundImage.isImageObject(fill) && BackgroundImage.isImageObject(prevProps.fill) && fill.src !== prevProps.fill.src) {\n        resetSetStyle(this.svgElement, \"fill\", null, false);\n      }\n      sizeSVG(this.container, this.props);\n    }\n    collectLayout(style, innerStyle) {\n      if (this.props.withExternalLayout) {\n        innerStyle.width = \"100%\";\n        innerStyle.height = \"100%\";\n        innerStyle.aspectRatio = \"inherit\";\n        return;\n      }\n      const frame2 = this.frame;\n      const { rotation, intrinsicWidth, intrinsicHeight, width, height } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      style.opacity = isFiniteNumber(this.props.opacity) ? this.props.opacity : 1;\n      if (RenderTarget.hasRestrictions() && frame2) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          width: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n        if (constraintsEnabled(this.props)) {\n          style.position = \"absolute\";\n        }\n        const xFactor = frame2.width / (intrinsicWidth || 1);\n        const yFactor = frame2.height / (intrinsicHeight || 1);\n        innerStyle.transformOrigin = \"top left\";\n        const { zoom, target } = RenderEnvironment;\n        if (target === \"EXPORT\" /* export */) {\n          const zoomFactor = zoom > 1 ? zoom : 1;\n          innerStyle.transform = `scale(${xFactor * zoomFactor}, ${yFactor * zoomFactor})`;\n          innerStyle.zoom = 1 / zoomFactor;\n        } else {\n          innerStyle.transform = `scale(${xFactor}, ${yFactor})`;\n        }\n        if (intrinsicWidth && intrinsicHeight) {\n          innerStyle.width = intrinsicWidth;\n          innerStyle.height = intrinsicHeight;\n        }\n      } else {\n        const { left, right, top, bottom } = this.props;\n        Object.assign(style, {\n          left,\n          right,\n          top,\n          bottom,\n          width,\n          height,\n          rotate\n        });\n        Object.assign(innerStyle, {\n          left: 0,\n          top: 0,\n          bottom: 0,\n          right: 0,\n          position: \"absolute\"\n        });\n      }\n    }\n    render() {\n      var _a2, _b;\n      if (import_process7.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      const {\n        id,\n        visible,\n        style,\n        fill,\n        svg,\n        intrinsicHeight,\n        intrinsicWidth,\n        ariaId = \"\",\n        title,\n        description,\n        layoutId,\n        className,\n        variants,\n        transition,\n        withExternalLayout,\n        innerRef,\n        svgContentId\n      } = this.props;\n      if (!withExternalLayout && (!visible || !id))\n        return null;\n      const identifier = (_a2 = id != null ? id : layoutId) != null ? _a2 : \"svg\";\n      injectComponentCSSRules();\n      const frame2 = this.frame;\n      const size2 = frame2 || { width: intrinsicWidth || 100, height: intrinsicHeight || 100 };\n      const outerStyle = { ...style, imageRendering: \"pixelated\", flexShrink: 0 };\n      const innerStyle = {};\n      this.collectLayout(outerStyle, innerStyle);\n      collectOpacityFromProps(this.props, outerStyle);\n      collectFiltersFromProps(this.props, outerStyle);\n      Layer.applyWillChange(this.props, outerStyle, false);\n      let fillElement = null;\n      if (typeof fill === \"string\" || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        outerStyle.fill = fillColor;\n        outerStyle.color = fillColor;\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${LinearGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const elementProperties = elementPropertiesForLinearGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ React82.createElement(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            xmlns: \"http://www.w3.org/2000/svg\",\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" }\n          },\n          /* @__PURE__ */ React82.createElement(\n            \"linearGradient\",\n            {\n              id: gradientId,\n              gradientTransform: `rotate(${elementProperties.angle}, 0.5, 0.5)`\n            },\n            elementProperties.stops.map((stop, idx) => {\n              return /* @__PURE__ */ React82.createElement(\n                \"stop\",\n                {\n                  key: idx,\n                  offset: stop.position,\n                  stopColor: stop.color,\n                  stopOpacity: stop.alpha\n                }\n              );\n            })\n          )\n        );\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${RadialGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const elementProperties = elementPropertiesForRadialGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ React82.createElement(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            xmlns: \"http://www.w3.org/2000/svg\",\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" }\n          },\n          /* @__PURE__ */ React82.createElement(\n            \"radialGradient\",\n            {\n              id: gradientId,\n              cy: gradient.centerAnchorY,\n              cx: gradient.centerAnchorX,\n              r: gradient.widthFactor\n            },\n            elementProperties.stops.map((stop, idx) => {\n              return /* @__PURE__ */ React82.createElement(\n                \"stop\",\n                {\n                  key: idx,\n                  offset: stop.position,\n                  stopColor: stop.color,\n                  stopOpacity: stop.alpha\n                }\n              );\n            })\n          )\n        );\n      } else if (BackgroundImage.isImageObject(fill)) {\n        const imagePattern = imagePatternPropsForFill(fill, size2, identifier);\n        if (imagePattern) {\n          outerStyle.fill = `url(#${imagePattern.id})`;\n          fillElement = /* @__PURE__ */ React82.createElement(\n            \"svg\",\n            {\n              ref: this.setSVGElement,\n              xmlns: \"http://www.w3.org/2000/svg\",\n              xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n              width: \"100%\",\n              height: \"100%\",\n              style: { position: \"absolute\" }\n            },\n            /* @__PURE__ */ React82.createElement(\"defs\", null, /* @__PURE__ */ React82.createElement(ImagePatternElement, { ...imagePattern }))\n          );\n        }\n      }\n      const dataProps = {\n        \"data-framer-component-type\": \"SVG\"\n      };\n      const hasTransformTemplate = !frame2;\n      if (hasTransformTemplate) {\n        Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n      }\n      const svgAsBackgroundImage = !fillElement && !outerStyle.fill && !outerStyle.background && !outerStyle.backgroundImage && svg.length < MAX_BACKGROUND_SVG_TEXT_LENGTH && !containsImageReference(svg);\n      let content = null;\n      if (svgAsBackgroundImage) {\n        outerStyle.backgroundSize = \"100% 100%\";\n        outerStyle.backgroundImage = `url('data:image/svg+xml;utf8,${encodeURIComponent(svg)}')`;\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = \"\";\n      } else {\n        const contentid = svgContentId ? \"svg\" + svgContentId : null;\n        const __html = sharedSVGManager.subscribe(svg, !svgContentId, contentid);\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = svg;\n        if (hasBorderRadius(outerStyle)) {\n          outerStyle.overflow = \"hidden\";\n        }\n        content = /* @__PURE__ */ React82.createElement(React82.Fragment, null, fillElement, /* @__PURE__ */ React82.createElement(\n          \"div\",\n          {\n            key: BackgroundImage.isImageObject(fill) ? fill.src : \"\",\n            className: \"svgContainer\",\n            style: innerStyle,\n            ref: this.container,\n            dangerouslySetInnerHTML: { __html }\n          }\n        ));\n      }\n      const MotionComponent = motion[(_b = this.props.as) != null ? _b : \"div\"];\n      const { href, target, rel, onClick } = this.props;\n      const ariaDescriptionId = ariaId + \"desc\";\n      return /* @__PURE__ */ React82.createElement(\n        MotionComponent,\n        {\n          ...dataProps,\n          layoutId,\n          transformTemplate: hasTransformTemplate ? transformTemplate(this.props.center) : void 0,\n          id,\n          ref: innerRef,\n          style: outerStyle,\n          className,\n          variants,\n          transition,\n          tabIndex: this.props.tabIndex,\n          role: title || description ? \"img\" : void 0,\n          \"aria-label\": title,\n          \"aria-describedby\": description ? ariaDescriptionId : void 0,\n          ...{ href, target, rel, onClick }\n        },\n        content,\n        description && /* @__PURE__ */ React82.createElement(\"div\", { style: VISUALLY_HIDDEN_STYLES, id: ariaDescriptionId }, description)\n      );\n    }\n  }, _a.supportsConstraints = true, _a.defaultSVGProps = {\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    style: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    parentSize: 0 /* Unknown */,\n    rotation: 0,\n    visible: true,\n    svg: \"\",\n    shadows: []\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultSVGProps\n  }, _a;\n})();\nvar VISUALLY_HIDDEN_STYLES = {\n  clip: \"rect(1px, 1px, 1px, 1px)\",\n  clipPath: \"inset(50%)\",\n  height: \"1px\",\n  width: \"1px\",\n  margin: \"-1px\",\n  overflow: \"hidden\",\n  padding: 0,\n  position: \"absolute\"\n};\n\n// ../../library/src/render/presentation/Text.tsx\nvar import_process9 = __toESM(require_browser(), 1);\nimport React84, { useEffect as useEffect8, useRef as useRef10 } from \"react\";\n\n// ../../library/src/render/fonts/fontStore.ts\nvar import_process8 = __toESM(require_browser(), 1);\n\n// ../../library/src/render/fonts/types.ts\nvar TypefaceSourceNames = /* @__PURE__ */ ((TypefaceSourceNames2) => {\n  TypefaceSourceNames2[\"Google\"] = \"google\";\n  TypefaceSourceNames2[\"Local\"] = \"local\";\n  TypefaceSourceNames2[\"Custom\"] = \"custom\";\n  return TypefaceSourceNames2;\n})(TypefaceSourceNames || {});\n\n// ../../library/src/render/fonts/CustomFontSource.ts\nvar customFontSelectorPrefix = \"CUSTOM;\";\nfunction getCustomFontName(fileName, properties) {\n  if (!properties)\n    return fileName.substring(0, fileName.lastIndexOf(\".\"));\n  const fontFamily = properties.font.preferredFamily === \"\" ? properties.font.fontFamily : properties.font.preferredFamily;\n  const variant = properties.font.preferredSubFamily === \"\" ? properties.font.fontSubFamily : properties.font.preferredSubFamily;\n  return `${fontFamily} ${variant}`;\n}\nvar CustomFontSource = class {\n  constructor() {\n    this.name = \"custom\" /* Custom */;\n    this.typefaces = [];\n    this.byFamily = /* @__PURE__ */ new Map();\n    this.assetsByFamily = /* @__PURE__ */ new Map();\n  }\n  importFonts(assets) {\n    this.typefaces.length = 0;\n    this.byFamily.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    assets.forEach((asset) => {\n      var _a;\n      if (!this.isValidCustomFontAsset(asset)) {\n        return;\n      }\n      const fontName = getCustomFontName(asset.name, asset.properties);\n      const typeface = this.createTypeface(fontName);\n      const font = {\n        typeface,\n        selector: `${customFontSelectorPrefix}${fontName}`,\n        variant: this.inferVariantName(fontName),\n        postscriptName: (_a = asset.properties) == null ? void 0 : _a.font.postscriptName,\n        file: asset.url\n      };\n      typeface.fonts.push(font);\n      typeface.owner = asset.ownerType === \"team\" ? \"team\" : \"project\";\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(...typeface.fonts);\n    });\n    return fonts;\n  }\n  isValidCustomFontAsset(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\"))\n      return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\")\n      return false;\n    if (!asset.properties.font)\n      return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  inferVariantName(family) {\n    const possibleValues = [\n      \"thin\",\n      \"ultra light\",\n      \"extra light\",\n      \"light\",\n      \"normal\",\n      \"medium\",\n      \"semi bold\",\n      \"bold\",\n      \"extra bold\",\n      \"black\"\n    ];\n    const possibleValuesWithItalics = [...possibleValues.map((value) => `${value} italic`), ...possibleValues];\n    const lowerCaseFamily = family.toLowerCase();\n    const tokens = [...lowerCaseFamily.split(\" \"), ...lowerCaseFamily.split(\"-\"), ...lowerCaseFamily.split(\"_\")];\n    const foundToken = possibleValuesWithItalics.find(\n      (value) => tokens.includes(value) || tokens.includes(value.replace(/\\s+/g, \"\"))\n    );\n    if (foundToken)\n      return foundToken.replace(/(^\\w|\\s\\w)/g, (char) => char.toUpperCase());\n    return \"Regular\";\n  }\n  createTypeface(family) {\n    const existingTypeface = this.byFamily.get(family);\n    if (existingTypeface)\n      return existingTypeface;\n    const typeface = {\n      source: this.name,\n      family,\n      fonts: []\n    };\n    this.addTypeface(typeface);\n    return typeface;\n  }\n  addTypeface(typeface) {\n    this.typefaces.push(typeface);\n    this.byFamily.set(typeface.family, typeface);\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(customFontSelectorPrefix))\n      return null;\n    const tokens = selector.split(customFontSelectorPrefix);\n    if (tokens[1] === void 0)\n      return null;\n    const locator = { source: \"custom\", family: tokens[1] };\n    return locator;\n  }\n  getFontBySelector(selector, createFont = true) {\n    const locator = this.parseSelector(selector);\n    if (!locator)\n      return;\n    if (!createFont && !this.byFamily.get(locator.family))\n      return;\n    return this.getTypefaceByFamily(locator.family).fonts[0];\n  }\n  getTypefaceByFamily(family) {\n    const foundTypeface = this.byFamily.get(family);\n    if (foundTypeface)\n      return foundTypeface;\n    const typeface = {\n      source: \"custom\",\n      family,\n      fonts: []\n    };\n    typeface.fonts.push({\n      selector: `${customFontSelectorPrefix}${family}`,\n      variant: this.inferVariantName(family),\n      typeface\n    });\n    return typeface;\n  }\n};\n\n// ../../library/src/render/fonts/GoogleFontSource.ts\nvar googleFontSelectorPrefix = \"GF;\";\nvar GoogleFontSource = class {\n  constructor() {\n    this.name = \"google\" /* Google */;\n    this.typefaces = [];\n    this.byFamily = /* @__PURE__ */ new Map();\n  }\n  getTypefaceByFamily(family) {\n    var _a;\n    return (_a = this.byFamily.get(family)) != null ? _a : null;\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(googleFontSelectorPrefix))\n      return null;\n    const tokens = selector.split(\"-\");\n    if (tokens.length !== 2)\n      return null;\n    const [family, variant] = tokens;\n    if (!family || !variant)\n      return null;\n    return { family: family.replace(googleFontSelectorPrefix, \"\"), variant, source: this.name };\n  }\n  createTypeface(family) {\n    const typeface = { family, fonts: [], source: this.name };\n    this.addTypeface(typeface);\n    return typeface;\n  }\n  addTypeface(typeface) {\n    this.typefaces.push(typeface);\n    this.byFamily.set(typeface.family, typeface);\n  }\n  importFonts(webFonts) {\n    let fontLocators = [];\n    webFonts.forEach((webFont) => {\n      const locators = webFont.variants.map((variant) => {\n        var _a;\n        return {\n          source: this.name,\n          variant,\n          family: webFont.family,\n          file: (_a = webFont.files[variant]) == null ? void 0 : _a.replace(\"http://\", \"https://\")\n        };\n      });\n      fontLocators = fontLocators.concat(locators);\n    });\n    return fontLocators;\n  }\n};\n\n// ../../library/src/render/fonts/loadFont.ts\nvar import_fontfaceobserver = __toESM(require_fontfaceobserver_standalone(), 1);\nvar FONT_LOADING_TIMEOUT = 5e3;\nvar MAX_RETRIES = 3;\nvar FontLoadingError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"FontLoadingError\";\n  }\n};\nvar fontRequests = /* @__PURE__ */ new Map();\nvar fontReadyPromises = /* @__PURE__ */ new Map();\nvar loadFont = (data2, doc) => loadFontWithRetries(data2, doc);\nasync function loadFontWithRetries(data2, doc, attempt = 0) {\n  const { family, url } = data2;\n  const weight = data2.weight || 500;\n  const style = data2.style || \"normal\";\n  const requestId = `${family}-${style}-${weight}-${url}`;\n  if (!fontRequests.has(requestId) || attempt > 0) {\n    const fontFace = new FontFace(family, `url(${url})`, {\n      weight: weight == null ? void 0 : weight.toString(),\n      style\n    });\n    const readyPromise = fontFace.load().then(() => {\n      doc.fonts.add(fontFace);\n      return isFontReady(family, style, weight);\n    }).catch((e) => {\n      if (e.name !== \"NetworkError\") {\n        throw e;\n      }\n      if (attempt < MAX_RETRIES) {\n        return loadFontWithRetries(data2, doc, attempt + 1);\n      }\n      throw new FontLoadingError(\n        `Font loading failed after ${attempt} retries due to network error: ${JSON.stringify({\n          family,\n          style,\n          weight,\n          url\n        })}`\n      );\n    });\n    fontRequests.set(requestId, readyPromise);\n  }\n  await fontRequests.get(requestId);\n}\nasync function isFontReady(family, style, weight) {\n  const readyPromiseId = `${family}-${style}-${weight}`;\n  if (!fontReadyPromises.has(readyPromiseId)) {\n    const observer = new import_fontfaceobserver.default(family, {\n      style,\n      weight\n    });\n    const readyPromise = observer.load(null, FONT_LOADING_TIMEOUT);\n    fontReadyPromises.set(readyPromiseId, readyPromise);\n  }\n  try {\n    await fontReadyPromises.get(readyPromiseId);\n  } catch (e) {\n    throw new FontLoadingError(\n      `Failed to check if font is ready (${FONT_LOADING_TIMEOUT}ms timeout exceeded): ${JSON.stringify({\n        family,\n        style,\n        weight\n      })}`\n    );\n  }\n}\n\n// ../../library/src/render/fonts/fonts.ts\nvar safeFonts = {\n  Arial: {\n    Regular: { selector: \"Arial\", weight: void 0 },\n    Black: { selector: \"Arial-Black\", weight: void 0 },\n    Narrow: { selector: \"Arial Narrow\", weight: void 0 },\n    \"Rounded Bold\": { selector: \"Arial Rounded MT Bold\", weight: void 0 }\n  },\n  Avenir: {\n    Book: { selector: \"Avenir\", weight: void 0 },\n    Light: { selector: \"Avenir-Light\", weight: void 0 },\n    Medium: { selector: \"Avenir-Medium\", weight: void 0 },\n    Heavy: { selector: \"Avenir-Heavy\", weight: void 0 },\n    Black: { selector: \"Avenir-Black\", weight: void 0 }\n  },\n  \"Avenir Next\": {\n    Regular: { selector: \"Avenir Next\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNext-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNext-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNext-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNext-Heavy\", weight: void 0 }\n  },\n  \"Avenir Next Condensed\": {\n    Regular: { selector: \"Avenir Next Condensed\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNextCondensed-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNextCondensed-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNextCondensed-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNextCondensed-Heavy\", weight: void 0 }\n  },\n  Baskerville: {\n    Regular: { selector: \"Baskerville\", weight: void 0 },\n    \"Semi Bold\": { selector: \"Baskerville-SemiBold\", weight: void 0 }\n  },\n  \"Bodoni 72\": {\n    Book: { selector: \"Bodoni 72\", weight: void 0 },\n    Oldstyle: { selector: \"Bodoni 72 Oldstyle\", weight: void 0 },\n    Smallcaps: { selector: \"Bodoni 72 Smallcaps\", weight: void 0 }\n  },\n  Courier: { Regular: { selector: \"Courier\", weight: void 0 } },\n  \"Courier New\": { Regular: { selector: \"Courier New\", weight: void 0 } },\n  Futura: {\n    Medium: { selector: \"Futura\", weight: void 0 },\n    Condensed: { selector: \"Futura-CondensedMedium\", weight: void 0 },\n    \"Condensed ExtraBold\": { selector: \"Futura-CondensedExtraBold\", weight: void 0 }\n  },\n  Georgia: { Regular: { selector: \"Georgia\", weight: void 0 } },\n  \"Gill Sans\": {\n    Regular: { selector: \"Gill Sans\", weight: void 0 },\n    Light: { selector: \"GillSans-Light\", weight: void 0 },\n    SemiBold: { selector: \"GillSans-SemiBold\", weight: void 0 },\n    UltraBold: { selector: \"GillSans-UltraBold\", weight: void 0 }\n  },\n  Helvetica: {\n    Regular: { selector: \"Helvetica\", weight: void 0 },\n    Light: { selector: \"Helvetica-Light\", weight: void 0 },\n    Bold: { selector: \"Helvetica-Bold\", weight: void 0 },\n    Oblique: { selector: \"Helvetica-Oblique\", weight: void 0 },\n    \"Light Oblique\": { selector: \"Helvetica-LightOblique\", weight: void 0 },\n    \"Bold Oblique\": { selector: \"Helvetica-BoldOblique\", weight: void 0 }\n  },\n  \"Helvetica Neue\": {\n    Regular: { selector: \"Helvetica Neue\", weight: void 0 },\n    UltraLight: { selector: \"HelveticaNeue-UltraLight\", weight: void 0 },\n    Thin: { selector: \"HelveticaNeue-Thin\", weight: void 0 },\n    Light: { selector: \"HelveticaNeue-Light\", weight: void 0 },\n    Medium: { selector: \"HelveticaNeue-Medium\", weight: void 0 },\n    Bold: { selector: \"HelveticaNeue-Bold\", weight: void 0 },\n    Italic: { selector: \"HelveticaNeue-Italic\", weight: void 0 },\n    \"UltraLight Italic\": { selector: \"HelveticaNeue-UltraLightItalic\", weight: void 0 },\n    \"Thin Italic\": { selector: \"HelveticaNeue-ThinItalic\", weight: void 0 },\n    \"Light Italic\": { selector: \"HelveticaNeue-LightItalic\", weight: void 0 },\n    \"Medium Italic\": { selector: \"HelveticaNeue-MediumItalic\", weight: void 0 },\n    \"Bold Italic\": { selector: \"HelveticaNeue-BoldItalic\", weight: void 0 },\n    \"Condensed Bold\": { selector: \"HelveticaNeue-CondensedBold\", weight: void 0 },\n    \"Condensed Black\": { selector: \"HelveticaNeue-CondensedBlack\", weight: void 0 }\n  },\n  \"Hoefler Text\": { Regular: { selector: \"Hoefler Text\", weight: void 0 } },\n  Impact: { Regular: { selector: \"Impact\", weight: void 0 } },\n  \"Lucida Grande\": { Regular: { selector: \"Lucida Grande\", weight: void 0 } },\n  Menlo: { Regular: { selector: \"Menlo\", weight: void 0 } },\n  Monaco: { Regular: { selector: \"Monaco\", weight: void 0 } },\n  Optima: {\n    Regular: { selector: \"Optima\", weight: void 0 },\n    ExtraBlack: { selector: \"Optima-ExtraBlack\", weight: void 0 }\n  },\n  Palatino: { Regular: { selector: \"Palatino\", weight: void 0 } },\n  \"SF Pro Display\": {\n    Regular: { selector: \"__SF-UI-Display-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Black__\", weight: 900 },\n    Italic: { selector: \"__SF-UI-Display-Italic__\", weight: 400 },\n    \"Ultralight Italic\": { selector: \"__SF-UI-Display-Ultralight-Italic__\", weight: 100 },\n    \"Thin Italic\": { selector: \"__SF-UI-Display-Thin-Italic__\", weight: 200 },\n    \"Light Italic\": { selector: \"__SF-UI-Display-Light-Italic__\", weight: 300 },\n    \"Medium Italic\": { selector: \"__SF-UI-Display-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Display-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Display-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Display-Heavy-Italic__\", weight: 800 },\n    \"Black Italic\": { selector: \"__SF-UI-Display-Black-Italic__\", weight: 900 }\n  },\n  \"SF Pro Display Condensed\": {\n    Regular: { selector: \"__SF-UI-Display-Condensed-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Condensed-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Condensed-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Condensed-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Condensed-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Condensed-Black__\", weight: 900 }\n  },\n  \"SF Pro Text\": {\n    Regular: { selector: \"__SF-UI-Text-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Heavy__\", weight: 800 },\n    Italic: { selector: \"__SF-UI-Text-Italic__\", weight: 400 },\n    \"Light Italic\": { selector: \"__SF-UI-Text-Light-Italic__\", weight: 200 },\n    \"Medium Italic\": { selector: \"__SF-UI-Text-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Text-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Text-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Text-Heavy-Italic__\", weight: 800 }\n  },\n  \"SF Pro Text Condensed\": {\n    Regular: { selector: \"__SF-UI-Text-Condensed-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Condensed-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Condensed-Heavy__\", weight: 800 }\n  },\n  Tahoma: { Regular: { selector: \"Tahoma\", weight: void 0 } },\n  Times: { Regular: { selector: \"Times\", weight: void 0 } },\n  \"Times New Roman\": { Regular: { selector: \"Times New Roman\", weight: void 0 } },\n  Trebuchet: { Regular: { selector: \"Trebuchet MS\", weight: void 0 } },\n  Verdana: { Regular: { selector: \"Verdana\", weight: void 0 } }\n};\nvar typefaceAliases = {\n  \"__SF-Compact-Display-Regular__\": \"SFCompactDisplay-Regular|.SFCompactDisplay-Regular\",\n  \"__SF-Compact-Display-Ultralight__\": \"SFCompactDisplay-Ultralight|.SFCompactDisplay-Ultralight\",\n  \"__SF-Compact-Display-Thin__\": \"SFCompactDisplay-Thin|.SFCompactDisplay-Thin\",\n  \"__SF-Compact-Display-Light__\": \"SFCompactDisplay-Light|.SFCompactDisplay-Light\",\n  \"__SF-Compact-Display-Medium__\": \"SFCompactDisplay-Medium|.SFCompactDisplay-Medium\",\n  \"__SF-Compact-Display-Semibold__\": \"SFCompactDisplay-Semibold|.SFCompactDisplay-Semibold\",\n  \"__SF-Compact-Display-Heavy__\": \"SFCompactDisplay-Heavy|.SFCompactDisplay-Heavy\",\n  \"__SF-Compact-Display-Black__\": \"SFCompactDisplay-Black|.SFCompactDisplay-Black\",\n  \"__SF-Compact-Display-Bold__\": \"SFCompactDisplay-Bold|.SFCompactDisplay-Bold\",\n  \"__SF-UI-Text-Regular__\": \".SFNSText|SFProText-Regular|SFUIText-Regular|.SFUIText\",\n  \"__SF-UI-Text-Light__\": \".SFNSText-Light|SFProText-Light|SFUIText-Light|.SFUIText-Light\",\n  \"__SF-UI-Text-Medium__\": \".SFNSText-Medium|SFProText-Medium|SFUIText-Medium|.SFUIText-Medium\",\n  \"__SF-UI-Text-Semibold__\": \".SFNSText-Semibold|SFProText-Semibold|SFUIText-Semibold|.SFUIText-Semibold\",\n  \"__SF-UI-Text-Bold__\": \".SFNSText-Bold|SFProText-Bold|SFUIText-Bold|.SFUIText-Bold\",\n  \"__SF-UI-Text-Heavy__\": \".SFNSText-Heavy|SFProText-Heavy|.SFUIText-Heavy\",\n  \"__SF-UI-Text-Italic__\": \".SFNSText-Italic|SFProText-Italic|SFUIText-Italic|.SFUIText-Italic\",\n  \"__SF-UI-Text-Light-Italic__\": \".SFNSText-LightItalic|SFProText-LightItalic|SFUIText-LightItalic|.SFUIText-LightItalic\",\n  \"__SF-UI-Text-Medium-Italic__\": \".SFNSText-MediumItalic|SFProText-MediumItalic|SFUIText-MediumItalic|.SFUIText-MediumItalic\",\n  \"__SF-UI-Text-Semibold-Italic__\": \".SFNSText-SemiboldItalic|SFProText-SemiboldItalic|SFUIText-SemiboldItalic|.SFUIText-SemiboldItalic\",\n  \"__SF-UI-Text-Bold-Italic__\": \".SFNSText-BoldItalic|SFProText-BoldItalic|SFUIText-BoldItalic|.SFUIText-BoldItalic\",\n  \"__SF-UI-Text-Heavy-Italic__\": \".SFNSText-HeavyItalic|SFProText-HeavyItalic|.SFUIText-HeavyItalic\",\n  \"__SF-Compact-Text-Regular__\": \"SFCompactText-Regular|.SFCompactText-Regular\",\n  \"__SF-Compact-Text-Light__\": \"SFCompactText-Light|.SFCompactText-Light\",\n  \"__SF-Compact-Text-Medium__\": \"SFCompactText-Medium|.SFCompactText-Medium\",\n  \"__SF-Compact-Text-Semibold__\": \"SFCompactText-Semibold|.SFCompactText-Semibold\",\n  \"__SF-Compact-Text-Bold__\": \"SFCompactText-Bold|.SFCompactText-Bold\",\n  \"__SF-Compact-Text-Heavy__\": \"SFCompactText-Heavy|.SFCompactText-Heavy\",\n  \"__SF-Compact-Text-Italic__\": \"SFCompactText-Italic|.SFCompactText-Italic\",\n  \"__SF-Compact-Text-Light-Italic__\": \"SFCompactText-LightItalic|.SFCompactText-LightItalic\",\n  \"__SF-Compact-Text-Medium-Italic__\": \"SFCompactText-MediumItalic|.SFCompactText-MediumItalic\",\n  \"__SF-Compact-Text-Semibold-Italic__\": \"SFCompactText-SemiboldItalic|.SFCompactText-SemiboldItalic\",\n  \"__SF-Compact-Text-Bold-Italic__\": \"SFCompactText-BoldItalic|.SFCompactText-BoldItalic\",\n  \"__SF-Compact-Text-Heavy-Italic__\": \"SFCompactText-HeavyItalic|.SFCompactText-HeavyItalic\",\n  \"__SF-UI-Display-Condensed-Regular__\": \".SFNSDisplayCondensed-Regular|SFUIDisplayCondensed-Regular|.SFUIDisplayCondensed-Regular\",\n  \"__SF-UI-Display-Condensed-Ultralight__\": \".SFNSDisplayCondensed-Ultralight|SFUIDisplayCondensed-Ultralight|.SFUIDisplayCondensed-Ultralight\",\n  \"__SF-UI-Display-Condensed-Thin__\": \".SFNSDisplayCondensed-Thin|SFUIDisplayCondensed-Thin|.SFUIDisplayCondensed-Thin\",\n  \"__SF-UI-Display-Condensed-Light__\": \".SFNSDisplayCondensed-Light|SFUIDisplayCondensed-Light|.SFUIDisplayCondensed-Light\",\n  \"__SF-UI-Display-Condensed-Medium__\": \".SFNSDisplayCondensed-Medium|SFUIDisplayCondensed-Medium|.SFUIDisplayCondensed-Medium\",\n  \"__SF-UI-Display-Condensed-Semibold__\": \".SFNSDisplayCondensed-Semibold|SFUIDisplayCondensed-Semibold|.SFUIDisplayCondensed-Semibold\",\n  \"__SF-UI-Display-Condensed-Bold__\": \".SFNSDisplayCondensed-Bold|SFUIDisplayCondensed-Bold|.SFUIDisplayCondensed-Bold\",\n  \"__SF-UI-Display-Condensed-Heavy__\": \".SFNSDisplayCondensed-Heavy|SFUIDisplayCondensed-Heavy|.SFUIDisplayCondensed-Heavy\",\n  \"__SF-UI-Display-Condensed-Black__\": \".SFNSDisplayCondensed-Black|.SFUIDisplayCondensed-Black\",\n  \"__SF-UI-Display-Regular__\": \".SFNSDisplay|SFProDisplay-Regular|SFUIDisplay-Regular|.SFUIDisplay\",\n  \"__SF-UI-Display-Ultralight__\": \".SFNSDisplay-Ultralight|SFProDisplay-Ultralight|SFUIDisplay-Ultralight|.SFUIDisplay-Ultralight\",\n  \"__SF-UI-Display-Thin__\": \".SFNSDisplay-Thin|SFProDisplay-Thin|SFUIDisplay-Thin|.SFUIDisplay-Thin\",\n  \"__SF-UI-Display-Light__\": \".SFNSDisplay-Light|SFProDisplay-Light|SFUIDisplay-Light|.SFUIDisplay-Light\",\n  \"__SF-UI-Display-Medium__\": \".SFNSDisplay-Medium|SFProDisplay-Medium|SFUIDisplay-Medium|.SFUIDisplay-Medium\",\n  \"__SF-UI-Display-Semibold__\": \".SFNSDisplay-Semibold|SFProDisplay-Semibold|SFUIDisplay-Semibold|.SFUIDisplay-Semibold\",\n  \"__SF-UI-Display-Bold__\": \".SFNSDisplay-Bold|SFProDisplay-Bold|SFUIDisplay-Bold|.SFUIDisplay-Bold\",\n  \"__SF-UI-Display-Heavy__\": \".SFNSDisplay-Heavy|SFProDisplay-Heavy|SFUIDisplay-Heavy|.SFUIDisplay-Heavy\",\n  \"__SF-UI-Display-Black__\": \".SFNSDisplay-Black|SFProDisplay-Black|.SFUIDisplay-Black\",\n  \"__SF-UI-Display-Italic__\": \".SFNSDisplay-Italic|SFProDisplay-Italic|SFUIDisplay-Italic\",\n  \"__SF-UI-Display-Ultralight-Italic__\": \".SFNSDisplay-UltralightItalic|SFProDisplay-UltralightItalic|SFUIDisplay-UltralightItalic|.SFUIDisplay-UltralightItalic\",\n  \"__SF-UI-Display-Thin-Italic__\": \".SFNSDisplay-ThinItalic|SFProDisplay-ThinItalic|SFUIDisplay-ThinItalic|.SFUIDisplay-ThinItalic\",\n  \"__SF-UI-Display-Light-Italic__\": \".SFNSDisplay-LightItalic|SFProDisplay-LightItalic|SFUIDisplay-LightItalic|.SFUIDisplay-LightItalic\",\n  \"__SF-UI-Display-Medium-Italic__\": \".SFNSDisplay-MediumItalic|SFProDisplay-MediumItalic|SFUIDisplay-MediumItalic|.SFUIDisplay-MediumItalic\",\n  \"__SF-UI-Display-Semibold-Italic__\": \".SFNSDisplay-SemiboldItalic|SFProDisplay-SemiboldItalic|SFUIDisplay-SemiboldItalic|.SFUIDisplay-SemiboldItalic\",\n  \"__SF-UI-Display-Bold-Italic__\": \".SFNSDisplay-BoldItalic|SFProDisplay-BoldItalic|SFUIDisplay-BoldItalic|.SFUIDisplay-BoldItalic\",\n  \"__SF-UI-Display-Heavy-Italic__\": \".SFNSDisplay-HeavyItalic|SFProDisplay-HeavyItalic|SFUIDisplay-HeavyItalic|.SFUIDisplay-HeavyItalic\",\n  \"__SF-UI-Display-Black-Italic__\": \".SFNSDisplay-BlackItalic|SFProDisplay-BlackItalic|.SFUIDisplay-BlackItalic\",\n  \"__SF-UI-Text-Condensed-Regular__\": \".SFNSTextCondensed-Regular|SFUITextCondensed-Regular|.SFUITextCondensed-Regular\",\n  \"__SF-UI-Text-Condensed-Light__\": \".SFNSTextCondensed-Light|SFUITextCondensed-Light|.SFUITextCondensed-Light\",\n  \"__SF-UI-Text-Condensed-Medium__\": \".SFNSTextCondensed-Medium|SFUITextCondensed-Medium|.SFUITextCondensed-Medium\",\n  \"__SF-UI-Text-Condensed-Semibold__\": \".SFNSTextCondensed-Semibold|SFUITextCondensed-Semibold|.SFUITextCondensed-Semibold\",\n  \"__SF-UI-Text-Condensed-Bold__\": \".SFNSTextCondensed-Bold|SFUITextCondensed-Bold|.SFUITextCondensed-Bold\",\n  \"__SF-UI-Text-Condensed-Heavy__\": \".SFNSTextCondensed-Heavy|.SFUITextCondensed-Heavy\",\n  \"__SF-Compact-Rounded-Regular__\": \"SFCompactRounded-Regular|.SFCompactRounded-Regular\",\n  \"__SF-Compact-Rounded-Ultralight__\": \"SFCompactRounded-Ultralight|.SFCompactRounded-Ultralight\",\n  \"__SF-Compact-Rounded-Thin__\": \"SFCompactRounded-Thin|.SFCompactRounded-Thin\",\n  \"__SF-Compact-Rounded-Light__\": \"SFCompactRounded-Light|.SFCompactRounded-Light\",\n  \"__SF-Compact-Rounded-Medium__\": \"SFCompactRounded-Medium|.SFCompactRounded-Medium\",\n  \"__SF-Compact-Rounded-Semibold__\": \"SFCompactRounded-Semibold|.SFCompactRounded-Semibold\",\n  \"__SF-Compact-Rounded-Bold__\": \"SFCompactRounded-Bold|.SFCompactRounded-Bold\",\n  \"__SF-Compact-Rounded-Heavy__\": \"SFCompactRounded-Heavy|.SFCompactRounded-Heavy\",\n  \"__SF-Compact-Rounded-Black__\": \"SFCompactRounded-Black|.SFCompactRounded-Black\"\n};\nvar typefaces = safeFonts;\n\n// ../../library/src/render/fonts/LocalFontSource.ts\nvar systemTypefaceName = \"System Default\";\nvar LocalFontSource = class {\n  constructor() {\n    this.name = \"local\" /* Local */;\n    this.typefaces = [];\n    this.byFamily = /* @__PURE__ */ new Map();\n    this.typefaceAliasBySelector = /* @__PURE__ */ new Map();\n    this.typefaceAliases = /* @__PURE__ */ new Map();\n    this.interTypefaceSelectors = /* @__PURE__ */ new Set();\n  }\n  getTypefaceByFamily(family) {\n    var _a;\n    return (_a = this.byFamily.get(family)) != null ? _a : null;\n  }\n  createTypeface(family) {\n    const typeface = { family, fonts: [], source: this.name };\n    this.addTypeface(typeface);\n    return typeface;\n  }\n  addTypeface(typeface) {\n    this.typefaces.push(typeface);\n    this.byFamily.set(typeface.family, typeface);\n  }\n  importFonts() {\n    const fonts = [];\n    for (const family of Object.keys(typefaces)) {\n      const members = typefaces[family];\n      if (!members)\n        continue;\n      const typeface = this.createTypeface(family);\n      for (const variant of Object.keys(members)) {\n        const member = members[variant];\n        if (!member)\n          continue;\n        const { selector, weight } = member;\n        const font = {\n          variant,\n          selector,\n          weight,\n          typeface,\n          status: \"loaded\"\n        };\n        typeface.fonts.push(font);\n      }\n      fonts.push(...typeface.fonts);\n    }\n    for (const [key7, value] of Object.entries(typefaceAliases)) {\n      this.addTypefaceAlias(key7, value);\n    }\n    const { typeface: systemTypeface, aliases } = this.getSystemTypeface();\n    this.addTypeface(systemTypeface);\n    for (const [key7, value] of aliases) {\n      this.addTypefaceAlias(key7, value);\n    }\n    fonts.push(...systemTypeface.fonts);\n    const interTypeface = this.importInterTypeface();\n    fonts.push(...interTypeface.fonts);\n    return fonts;\n  }\n  importInterTypeface() {\n    const inter = [\n      [\"Regular\", \"Inter\", void 0],\n      [\"Thin\", \"Inter-Thin\", 100],\n      [\"Extra Light\", \"Inter-ExtraLight\", 200],\n      [\"Light\", \"Inter-Light\", 300],\n      [\"Medium\", \"Inter-Medium\", 500],\n      [\"Semibold\", \"Inter-SemiBold\", 600],\n      [\"Bold\", \"Inter-Bold\", 700],\n      [\"Extra Bold\", \"Inter-ExtraBold\", 800],\n      [\"Black\", \"Inter-Black\", 900],\n      [\"Thin Italic\", \"Inter-ThinItalic\", 100],\n      [\"Extra Light Italic\", \"Inter-ExtraLightItalic\", 300],\n      [\"Light Italic\", \"Inter-LightItalic\", 300],\n      [\"Italic\", \"Inter-Italic\", void 0],\n      [\"Medium Italic\", \"Inter-MediumItalic\", 500],\n      [\"Semibold Italic\", \"Inter-SemiBoldItalic\", 600],\n      [\"Bold Italic\", \"Inter-BoldItalic\", 700],\n      [\"Extra Bold Italic\", \"Inter-ExtraBoldItalic\", 800],\n      [\"Black Italic\", \"Inter-BlackItalic\", 900]\n    ];\n    const typeface = this.createTypeface(\"Inter\");\n    for (const entry of inter) {\n      const [variant, selector, weight] = entry;\n      const font = {\n        variant,\n        selector,\n        weight,\n        typeface,\n        style: /italic/i.test(selector) ? \"italic\" : void 0\n      };\n      typeface.fonts.push(font);\n    }\n    typeface.fonts.forEach((t) => this.interTypefaceSelectors.add(t.selector));\n    return typeface;\n  }\n  addTypefaceAlias(key7, value) {\n    this.typefaceAliases.set(key7, value);\n    this.typefaceAliasBySelector.set(value, key7);\n  }\n  getSystemTypeface() {\n    const fontFamilies = this.workaroundChrome81and82(\n      \"system-ui|-apple-system|BlinkMacSystemFont|Segoe UI|Roboto|Oxygen|Ubuntu|Cantarell|Fira Sans|Droid Sans|Helvetica Neue|sans-serif\"\n    );\n    const typeface = { family: systemTypefaceName, fonts: [], source: this.name };\n    const aliases = /* @__PURE__ */ new Map();\n    const weights = [400, 100, 200, 300, 500, 600, 700, 800, 900];\n    const styles = [\"normal\", \"italic\"];\n    for (const style of styles) {\n      for (const weight of weights) {\n        const variant = createVariantName(weight, style);\n        const alias = `__SystemDefault-${weight}-${style}__`;\n        const font = {\n          variant,\n          selector: alias,\n          style: style === \"normal\" ? void 0 : style,\n          weight: weight === 400 ? void 0 : weight,\n          typeface,\n          status: \"loaded\"\n        };\n        typeface.fonts.push(font);\n        aliases.set(alias, fontFamilies);\n      }\n    }\n    return { typeface, aliases };\n  }\n  getTypefaceAliasBySelector(selector) {\n    return this.typefaceAliasBySelector.get(selector) || null;\n  }\n  getTypefaceSelectorByAlias(alias) {\n    return this.typefaceAliases.get(alias) || null;\n  }\n  isTypefaceAlias(value) {\n    if (value && value.match(/^__.*__$/))\n      return true;\n    return false;\n  }\n  workaroundChrome81and82(s) {\n    if (safeNavigator) {\n      const userAgent = safeNavigator.userAgent;\n      if (!userAgent.includes(\"Mac OS X 10_15\"))\n        return s;\n      if (!userAgent.includes(\"Chrome/81\") && !userAgent.includes(\"Chrome/82\"))\n        return s;\n    }\n    return `Inter|${s}`;\n  }\n};\nvar fontWeightNames = {\n  \"100\": \"Thin\",\n  \"200\": \"Extra Light\",\n  \"300\": \"Light\",\n  \"400\": \"Normal\",\n  \"500\": \"Medium\",\n  \"600\": \"Semi Bold\",\n  \"700\": \"Bold\",\n  \"800\": \"Extra Bold\",\n  \"900\": \"Black\"\n};\nfunction createVariantName(weight, style) {\n  const friendlyStyle = style === \"normal\" ? \"Regular\" : \"Italic\";\n  if (weight === 400) {\n    return friendlyStyle;\n  }\n  if (style !== \"normal\") {\n    return `${fontWeightNames[weight]} ${friendlyStyle}`;\n  }\n  return `${fontWeightNames[weight]}`;\n}\n\n// ../../library/src/render/fonts/utils.ts\nfunction parseVariant(variant) {\n  if (variant === \"regular\")\n    return { style: \"normal\", weight: 400 };\n  const res = /([0-9]*)([a-z]*)/.exec(variant);\n  if (!res)\n    return null;\n  const weight = parseInt(res[1] || \"400\");\n  const style = res[2] || \"normal\";\n  return { weight, style };\n}\n\n// ../../library/src/render/fonts/fontStore.ts\nvar FontStore = class {\n  constructor() {\n    this.enabled = false;\n    this.bySelector = /* @__PURE__ */ new Map();\n    this.loadedSelectors = /* @__PURE__ */ new Set();\n    this.createGoogleFont = (locator) => {\n      const { source, family, variant, file } = locator;\n      let typeface = this.getTypeface(locator);\n      if (!typeface) {\n        typeface = this[source].createTypeface(family);\n      }\n      const variantInfo = parseVariant(variant) || {};\n      const { weight, style } = variantInfo;\n      const selector = `GF;${family}-${variant}`;\n      const font = {\n        typeface,\n        variant,\n        selector,\n        weight,\n        style,\n        file\n      };\n      typeface.fonts.push(font);\n      return font;\n    };\n    this.local = new LocalFontSource();\n    this.google = new GoogleFontSource();\n    this.custom = new CustomFontSource();\n    this.bySelector = /* @__PURE__ */ new Map();\n    this.importLocalFonts();\n    const defaultFont = this.getFontBySelector(\"Inter\");\n    assert(defaultFont, \"Can\\u2019t find Inter font\");\n    this.defaultFont = defaultFont;\n  }\n  addFont(font) {\n    this.bySelector.set(font.selector, font);\n  }\n  getAvailableFonts() {\n    return Array.from(this.bySelector.values());\n  }\n  importLocalFonts() {\n    this.local.importFonts().forEach((font) => {\n      this.addFont(font);\n      if (!this.local.interTypefaceSelectors.has(font.selector)) {\n        this.loadFont(font);\n      }\n    });\n  }\n  async importGoogleFonts() {\n    if (!this.getGoogleFontsListPromise) {\n      this.getGoogleFontsListPromise = runtime.fetchGoogleFontsList();\n      const googleFonts = await this.getGoogleFontsListPromise;\n      this.google.importFonts(googleFonts).forEach((locator) => {\n        const font = this.createGoogleFont(locator);\n        this.addFont(font);\n      });\n    }\n    return this.getGoogleFontsListPromise;\n  }\n  importCustomFonts(assets) {\n    this.bySelector.forEach((_, key7) => {\n      if (key7.startsWith(customFontSelectorPrefix)) {\n        this.bySelector.delete(key7);\n      }\n    });\n    this.custom.importFonts(assets).forEach((font) => this.addFont(font));\n  }\n  getTypeface(info) {\n    const typeface = this[info.source].getTypefaceByFamily(info.family);\n    return typeface;\n  }\n  getFontBySelector(selector, createFont = true) {\n    if (selector.startsWith(customFontSelectorPrefix)) {\n      return this.custom.getFontBySelector(selector, createFont);\n    }\n    return this.bySelector.get(selector);\n  }\n  getDraftPropertiesBySelector(selector) {\n    const font = this.getFontBySelector(selector);\n    if (font) {\n      return {\n        style: font.style,\n        weight: font.weight,\n        variant: font.variant,\n        family: font.typeface.family,\n        source: font.typeface.source\n      };\n    }\n    const locator = this.google.parseSelector(selector);\n    if (locator) {\n      const fontVariant = parseVariant(locator.variant);\n      if (fontVariant) {\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: locator.variant,\n          family: locator.family,\n          source: \"google\" /* Google */\n        };\n      }\n    }\n    return null;\n  }\n  isSelectorLoaded(selector) {\n    return this.loadedSelectors.has(selector);\n  }\n  async loadTypeface(typeface) {\n    await Promise.all(typeface.fonts.map((f) => this.loadFont(f)));\n  }\n  async loadFont(font) {\n    if (this.isSelectorLoaded(font.selector)) {\n      return 0 /* AlreadyLoaded */;\n    }\n    if (font.typeface.source === \"local\" /* Local */) {\n      if (this.local.interTypefaceSelectors.has(font.selector) && import_process8.default.env.NODE_ENV !== \"test\") {\n        await isFontReady(font.typeface.family, font.style, font.weight);\n      }\n      this.loadedSelectors.add(font.selector);\n      return 1 /* Loaded */;\n    }\n    if (!font.file) {\n      return Promise.reject(`Unable to load font: ${font.selector}`);\n    }\n    await loadFont(\n      {\n        family: font.typeface.family,\n        url: font.file,\n        weight: font.weight,\n        style: font.style\n      },\n      document\n    );\n    this.loadedSelectors.add(font.selector);\n    return 1 /* Loaded */;\n  }\n  async loadWebFontsFromSelectors(selectors) {\n    if (!this.enabled)\n      return [];\n    if (selectors.some((s) => s.startsWith(googleFontSelectorPrefix))) {\n      await this.importGoogleFonts();\n    }\n    const fonts = selectors.map((s) => this.bySelector.get(s)).filter((f) => !!f);\n    return Promise.allSettled(fonts.map((f) => this.loadFont(f)));\n  }\n  async loadMissingFonts(fontSelectors, fontsLoadedCallback) {\n    const selectors = fontSelectors.filter((selector) => {\n      return !fontStore.isSelectorLoaded(selector);\n    });\n    if (selectors.length === 0)\n      return;\n    await fontStore.loadWebFontsFromSelectors(selectors);\n    const isEachFontLoaded = selectors.every((selector) => {\n      return fontStore.isSelectorLoaded(selector);\n    });\n    if (isEachFontLoaded && fontsLoadedCallback)\n      fontsLoadedCallback();\n  }\n};\nvar fontStore = /* @__PURE__ */ new FontStore();\nPromise.allSettled = Promise.allSettled || ((promises) => Promise.all(\n  promises.map(\n    (p) => p.then((v) => ({ status: \"fulfilled\", value: v })).catch((e) => ({ status: \"rejected\", reason: e }))\n  )\n));\n\n// ../../library/src/render/fonts/useFontLoadStatus.tsx\nimport React83 from \"react\";\nfunction useFontLoadStatus(fontSelectors = [], timeout = 5e3) {\n  const missingFontSelectors = fontSelectors.filter((s) => !fontStore.isSelectorLoaded(s));\n  const [fontLoadStatus, setFontLoadStatus] = React83.useState(\n    missingFontSelectors.length ? \"loading\" : \"done\"\n  );\n  React83.useEffect(() => {\n    if (!missingFontSelectors.length)\n      return;\n    setFontLoadStatus(\"loading\");\n    const timer = setTimeout(() => {\n      setFontLoadStatus(\"timeout\");\n    }, timeout);\n    fontStore.loadWebFontsFromSelectors(missingFontSelectors).then(() => {\n      clearTimeout(timer);\n      setFontLoadStatus(\"done\");\n    });\n  }, [fontSelectors.join(\", \"), missingFontSelectors.join(\", \")]);\n  return fontLoadStatus;\n}\n\n// ../../library/src/render/utils/isShallowEqualArray.ts\nfunction isShallowEqualArray(a, b) {\n  return a.length === b.length && a.every((v, i) => v === b[i]);\n}\n\n// ../../library/src/render/presentation/Text.tsx\nvar Text = /* @__PURE__ */ React84.forwardRef(function Text2(props, forwardedRef) {\n  var _a, _b;\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const fallbackLayoutRef = useRef10(null);\n  const layoutRef = forwardedRef != null ? forwardedRef : fallbackLayoutRef;\n  const { navigate, getRoute } = useRouter();\n  const currentRoute = useCurrentRoute();\n  useRoutePreloader((_a = props.preload) != null ? _a : []);\n  const onCanvas = useIsOnFramerCanvas();\n  const matchesCurrentRoute = useLinkMatchesRoute(props.__link);\n  const fontLoadStatus = useFontLoadStatus(props.fonts);\n  useMeasureLayout(props, layoutRef);\n  const { fonts, __fromCanvasComponent } = props;\n  const prevFontsRef = useRef10([]);\n  const fontsDidChange = !isShallowEqualArray((_b = prevFontsRef.current) != null ? _b : [], fonts != null ? fonts : []);\n  prevFontsRef.current = fonts;\n  useEffect8(() => {\n    if (!fontsDidChange || !fonts)\n      return;\n    fontStore.loadWebFontsFromSelectors(fonts).then((results) => {\n      if (!__fromCanvasComponent || !layoutRef.current || RenderTarget.current() !== \"CANVAS\" /* canvas */)\n        return;\n      const didLoadNewFonts = results.some(\n        (result) => result.status === \"fulfilled\" && result.value === 1 /* Loaded */\n      );\n      if (!didLoadNewFonts)\n        return;\n      measureClosestComponentContainer(layoutRef.current);\n    });\n  }, [fonts]);\n  const implicitPathVariables = useImplicitPathVariables();\n  const interceptPageLinks = React84.useCallback(\n    (event) => {\n      const anchorElement = findAnchorElement(event.target, layoutRef.current);\n      if (event.metaKey || !navigate || !anchorElement)\n        return;\n      const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n      if (didNavigate) {\n        event.preventDefault();\n      }\n    },\n    [navigate, implicitPathVariables]\n  );\n  useEffect8(() => {\n    var _a2;\n    (_a2 = layoutRef.current) == null ? void 0 : _a2.addEventListener(\"click\", interceptPageLinks);\n    const ref = layoutRef.current;\n    return () => ref == null ? void 0 : ref.removeEventListener(\"click\", interceptPageLinks);\n  }, [interceptPageLinks]);\n  const rawHTML = React84.useMemo(() => {\n    if (!props.rawHTML || onCanvas || !getRoute || !currentRoute)\n      return props.rawHTML;\n    return replaceFramerPageLinks(props.rawHTML, getRoute, currentRoute, implicitPathVariables);\n  }, [props.rawHTML, getRoute, onCanvas, currentRoute, implicitPathVariables]);\n  return /* @__PURE__ */ React84.createElement(\n    TextComponent,\n    {\n      ...props,\n      innerRef: layoutRef,\n      layoutId,\n      parentSize,\n      fontLoadStatus,\n      rawHTML,\n      matchesCurrentRoute\n    }\n  );\n});\nvar TextComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      this.setElement = (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      };\n      this.renderMain = (inCodeComponent) => {\n        if (import_process9.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n          safeWindow[\"perf\"].nodeRender();\n        const {\n          font,\n          visible,\n          alignment,\n          willChangeTransform,\n          opacity,\n          id,\n          layoutId,\n          className,\n          transition,\n          variants,\n          name,\n          __fromCanvasComponent,\n          _initialStyle,\n          widthType,\n          heightType,\n          _usesDOMRect,\n          autoSize,\n          style: styleProp,\n          fontLoadStatus,\n          matchesCurrentRoute,\n          preload,\n          tabIndex,\n          ...rest\n        } = this.props;\n        if (!visible) {\n          return null;\n        }\n        injectComponentCSSRules();\n        const isHidden2 = this.props.isEditable && this.props.environment() === \"CANVAS\" /* canvas */;\n        const justifyContent = convertVerticalAlignment(this.props.verticalAlignment);\n        const style = {\n          outline: \"none\",\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent,\n          opacity: isHidden2 ? 0 : opacity,\n          flexShrink: 0\n        };\n        if (_initialStyle) {\n          for (const key7 in _initialStyle) {\n            if (key7.startsWith(\"--framer\")) {\n              style[key7] = _initialStyle[key7];\n            }\n          }\n        }\n        const dataProps = {\n          \"data-framer-component-type\": \"Text\",\n          \"data-framer-name\": name\n        };\n        if (autoSize) {\n          dataProps[\"data-framer-component-text-autosized\"] = \"true\";\n        }\n        this.collectLayout(style, inCodeComponent);\n        collectFiltersFromProps(this.props, style);\n        collectTextShadowsForProps(this.props, style);\n        if (style.opacity === 1 || style.opacity === void 0) {\n          delete style.opacity;\n        }\n        if (willChangeTransform) {\n          forceLayerBackingWithCSSProperties(style);\n        }\n        let rawHTML = this.props.rawHTML;\n        const text = this.getOverrideText() || this.props.text;\n        if (isString3(text)) {\n          if (rawHTML) {\n            rawHTML = replaceDraftHTMLWithText(rawHTML, text);\n          } else {\n            rawHTML = `<p style=\"font: ${font}\">${text}</p>`;\n          }\n        }\n        if (this.props.style) {\n          Object.assign(style, this.props.style);\n        }\n        const centeringTransformTemplate = this.transformTemplate;\n        if (centeringTransformTemplate)\n          Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n        if (rawHTML) {\n          style.lineHeight = \"1px\";\n          style.fontSize = \"0px\";\n          if (RenderTarget.current() === \"CANVAS\" /* canvas */ && fontLoadStatus === \"loading\") {\n            style.visibility = \"hidden\";\n          }\n          if (RenderTarget.current() === \"CANVAS\" /* canvas */ && fontLoadStatus === \"timeout\") {\n            style.backgroundColor = \"rgba(255, 0, 0, 0.3)\";\n          }\n          Object.assign(style, styleProp);\n          if (alignment)\n            style[\"--framer-text-alignment\"] = alignment;\n          const tabIndexProps = getTabIndexProps(tabIndex);\n          return /* @__PURE__ */ React84.createElement(\n            motion.div,\n            {\n              layoutId,\n              id,\n              ...tabIndexProps,\n              ...dataProps,\n              ...rest,\n              style,\n              transformTemplate: centeringTransformTemplate,\n              dangerouslySetInnerHTML: { __html: rawHTML },\n              \"data-center\": this.props.center,\n              className: cx(className, matchesCurrentRoute && \"isCurrent\"),\n              transition,\n              variants,\n              ref: this.setElement\n            }\n          );\n        }\n      };\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */, false);\n    }\n    getOverrideText() {\n      const { _forwardedOverrideId, _forwardedOverrides, id } = this.props;\n      const forwardedOverrideId = _forwardedOverrideId != null ? _forwardedOverrideId : id;\n      if (forwardedOverrideId && _forwardedOverrides) {\n        const text = _forwardedOverrides[forwardedOverrideId];\n        if (isString3(text)) {\n          return text;\n        }\n      }\n    }\n    render() {\n      return /* @__PURE__ */ React84.createElement(ComponentContainerContext.Consumer, null, this.renderMain);\n    }\n    collectLayout(style, inCodeComponent) {\n      if (this.props.withExternalLayout)\n        return;\n      const frame2 = this.frame;\n      const {\n        rotation,\n        autoSize,\n        positionSticky,\n        positionStickyTop,\n        positionStickyRight,\n        positionStickyBottom,\n        positionStickyLeft,\n        width: externalWidth,\n        height: externalHeight,\n        _usesDOMRect,\n        positionFixed,\n        positionAbsolute\n      } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      const isDOMLayoutAutoSized = _usesDOMRect && (externalWidth === \"auto\" || externalHeight === \"auto\");\n      if (frame2 && !isDOMLayoutAutoSized && RenderTarget.hasRestrictions()) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          width: autoSize ? \"auto\" : `${frame2.width}px`,\n          minWidth: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n      } else {\n        const { left, right, top, bottom } = this.props;\n        let width;\n        let height;\n        if (autoSize) {\n          width = \"auto\";\n          height = \"auto\";\n        } else {\n          if (!isFiniteNumber(left) || !isFiniteNumber(right)) {\n            width = externalWidth;\n          }\n          if (!isFiniteNumber(top) || !isFiniteNumber(bottom)) {\n            height = externalHeight;\n          }\n        }\n        Object.assign(style, {\n          left,\n          right,\n          top,\n          bottom,\n          width,\n          height,\n          rotate\n        });\n      }\n      const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n      if (positionSticky) {\n        if (!onCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (onCanvas && (positionFixed || positionAbsolute)) {\n        style.position === \"absolute\";\n      }\n    }\n    get transformTemplate() {\n      const { _usesDOMRect, widthType, heightType, __fromCanvasComponent } = this.props;\n      if (this.props.transformTemplate)\n        return this.props.transformTemplate;\n      const frame2 = this.frame;\n      const isDOMLayoutAutoSized = _usesDOMRect && (widthType === 2 /* Auto */ || heightType === 2 /* Auto */);\n      const hasTransformTemplate = !frame2 || !RenderTarget.hasRestrictions() || __fromCanvasComponent || isDOMLayoutAutoSized;\n      if (hasTransformTemplate)\n        return transformTemplate(this.props.center);\n    }\n  }, _a.supportsConstraints = true, _a.defaultTextProps = {\n    opacity: void 0,\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    rotation: 0,\n    visible: true,\n    alignment: void 0,\n    verticalAlignment: \"top\",\n    shadows: [],\n    font: \"16px \" + deviceFont()\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultTextProps,\n    isEditable: false,\n    environment: RenderTarget.current,\n    withExternalLayout: false,\n    fontLoadStatus: \"loading\"\n  }, _a;\n})();\nvar linkTag = \"(?:<a[^>]*>)?\";\nvar linkClosingTag = \"(?:</a>)?\";\nvar outerTag = \"<[^>]+>\";\nvar outerClosingTag = \"</[^>]+>\";\nvar blockTag = \"<(?:div|span)[^>]*>\";\nvar blockClosingTag = \"</(?:div|span)>\";\nvar inlineTag = \"<[^>]+>\";\nvar inlineClosingTag = \"</[^>]+>\";\nvar textContentRegex = new RegExp(\n  `^(${linkTag}${outerTag}${blockTag}${inlineTag}).*?(${inlineClosingTag}).*?(${blockClosingTag}${outerClosingTag}${linkClosingTag})$`,\n  \"s\"\n);\nfunction replaceDraftHTMLWithText(rawHTML, text) {\n  return rawHTML.replace(\n    textContentRegex,\n    (_, openingTags, inlineClosingTag2, closingTags) => openingTags + text + inlineClosingTag2 + \"<br>\" + closingTags\n  );\n}\nfunction convertVerticalAlignment(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction getTabIndexProps(tabIndex) {\n  if (tabIndex === void 0)\n    return {};\n  return { tabIndex };\n}\n\n// ../../library/src/render/presentation/Vector.tsx\nvar import_process10 = __toESM(require_browser(), 1);\nimport React87 from \"react\";\n\n// ../../library/src/utils/internalId.ts\nvar keys2 = /* @__PURE__ */ new Map();\nvar InternalID = class {\n  constructor(id) {\n    this.id = id;\n    this._link = null;\n    this._urllink = null;\n  }\n  add(str) {\n    return InternalID.forKey(this.id + str);\n  }\n  toString() {\n    return this.id;\n  }\n  get link() {\n    const res = this._link;\n    if (res)\n      return res;\n    return this._link = \"#\" + this.id;\n  }\n  get urlLink() {\n    const res = this._urllink;\n    if (res)\n      return res;\n    return this._urllink = \"url(#\" + this.id + \")\";\n  }\n  static forKey(key7) {\n    let res = keys2.get(key7);\n    if (res)\n      return res;\n    res = new InternalID(\"a\" + (1e3 + keys2.size) + \"z\");\n    keys2.set(key7, res);\n    return res;\n  }\n};\n\n// ../../library/src/render/types/PathSegment.ts\nvar PathSegment = class {\n  constructor(value) {\n    this.__class = \"PathSegment\";\n    this.x = 0;\n    this.y = 0;\n    this.handleMirroring = \"straight\";\n    this.handleOutX = 0;\n    this.handleOutY = 0;\n    this.handleInX = 0;\n    this.handleInY = 0;\n    this.radius = 0;\n    if (value) {\n      Object.assign(this, value);\n    }\n  }\n  merge(value) {\n    return Object.assign(Object.create(Object.getPrototypeOf(this)), this, value);\n  }\n};\nPathSegment.displayName = \"WithClassDiscriminatorMixin(PathSegment)\";\nPathSegment.prototype.__class = \"PathSegment\";\n((PathSegment2) => {\n  PathSegment2.point = (pathSegment) => {\n    return { x: pathSegment.x, y: pathSegment.y };\n  };\n  PathSegment2.handleOut = (pathSegment) => {\n    return { x: pathSegment.handleOutX, y: pathSegment.handleOutY };\n  };\n  PathSegment2.handleIn = (pathSegment) => {\n    return { x: pathSegment.handleInX, y: pathSegment.handleInY };\n  };\n  PathSegment2.calculatedHandleOut = (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add((0, PathSegment2.point)(pathSegment), (0, PathSegment2.handleOut)(pathSegment));\n      default:\n        return { x: pathSegment.x, y: pathSegment.y };\n    }\n  };\n  PathSegment2.calculatedHandleIn = (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n        return Point.subtract((0, PathSegment2.point)(pathSegment), (0, PathSegment2.handleOut)(pathSegment));\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add((0, PathSegment2.point)(pathSegment), (0, PathSegment2.handleIn)(pathSegment));\n      default:\n        return (0, PathSegment2.point)(pathSegment);\n    }\n  };\n  PathSegment2.curveDefault = (points, index) => {\n    if (points.length > 2) {\n      let pointBefore;\n      let pointAfter;\n      if (index === 0) {\n        pointBefore = points[points.length - 1];\n      } else {\n        pointBefore = points[index - 1];\n      }\n      if (index === points.length - 1) {\n        pointAfter = points[0];\n      } else {\n        pointAfter = points[index + 1];\n      }\n      assert(pointBefore, \"pointBefore should be defined\");\n      assert(pointAfter, \"pointAfter should be defined\");\n      const delta = Point.subtract((0, PathSegment2.point)(pointAfter), (0, PathSegment2.point)(pointBefore));\n      return { x: delta.x / 4, y: delta.y / 4 };\n    }\n    return { x: 10, y: 10 };\n  };\n})(PathSegment || (PathSegment = {}));\n\n// ../../library/src/render/traits/Path.ts\nvar key5 = \"pathSegments\";\nfunction withPath(target) {\n  return key5 in target;\n}\nvar pathDefaults = {\n  pathSegments: [],\n  pathClosed: false\n};\nfunction toSVGPath(withPaths, translate = { x: 0, y: 0 }, canvasMode = \"CANVAS\" /* canvas */) {\n  let pathElements = [];\n  let paths = [];\n  if (Array.isArray(withPaths)) {\n    paths = withPaths;\n  } else {\n    paths = [withPaths];\n  }\n  paths.forEach((path) => {\n    const { pathClosed, pathSegments } = path;\n    const segmentCount = pathSegments.length;\n    if (segmentCount === 0)\n      return \"\";\n    for (let i = 0; i < segmentCount; i++) {\n      const segment = pathSegments[i];\n      assert(segment, \"Path segment must be defined\");\n      let nextSegment;\n      let prevSegment;\n      const isFirstSegment = i === 0;\n      const isLastSegment = i === segmentCount - 1;\n      if (!isLastSegment) {\n        nextSegment = pathSegments[i + 1];\n      } else if (pathClosed) {\n        nextSegment = pathSegments[0];\n      }\n      if (!isFirstSegment) {\n        prevSegment = pathSegments[i - 1];\n      } else if (pathClosed) {\n        prevSegment = pathSegments[segmentCount - 1];\n      }\n      if (i === 0) {\n        pathElements.push(\"M\");\n      } else if (prevSegment && isStraightCurve(prevSegment, segment)) {\n        pathElements.push(\"L\");\n      }\n      pathElements.push(segment.x + translate.x, segment.y + translate.y);\n      if (nextSegment && !isStraightCurve(segment, nextSegment)) {\n        const handleOut = PathSegment.calculatedHandleOut(segment);\n        const handleIn = PathSegment.calculatedHandleIn(nextSegment);\n        pathElements.push(\n          \"C\",\n          handleOut.x + translate.x,\n          handleOut.y + translate.y,\n          handleIn.x + translate.x,\n          handleIn.y + translate.y\n        );\n      }\n      if (isLastSegment && nextSegment) {\n        if (isStraightCurve(segment, nextSegment)) {\n          pathElements.push(\"Z\");\n        } else {\n          pathElements.push(nextSegment.x + translate.x, nextSegment.y + translate.y, \"Z\");\n        }\n      }\n    }\n  });\n  if (canvasMode === \"EXPORT\" /* export */ || canvasMode === \"PREVIEW\" /* preview */) {\n    pathElements = pathElements.map((value) => isFiniteNumber(value) ? roundedNumberString(value, 3) : value);\n  }\n  return pathElements.join(\" \");\n}\nfunction isStraightCurve(fromSegment, toSegment) {\n  const fromStraight = fromSegment.handleMirroring === \"straight\" || fromSegment.handleOutX === 0 && fromSegment.handleOutY === 0;\n  const toStraight = toSegment.handleMirroring === \"straight\" || toSegment.handleInX === 0 && toSegment.handleInY === 0;\n  return fromStraight && toStraight;\n}\n\n// ../../library/src/render/types/svgElementAttributeDefaults.ts\nvar svgElementAttributeDefaults = {\n  stroke: \"none\",\n  strokeWidth: 1,\n  strokeLinecap: \"butt\",\n  strokeLinejoin: \"miter\",\n  strokeMiterlimit: 4,\n  strokeDasharray: \"0\",\n  strokeDashoffset: 0,\n  strokeOpacity: 1,\n  fill: \"black\",\n  fillRule: \"nonzero\",\n  fillOpacity: 1\n};\n\n// ../../library/src/render/utils/createTransformValues.ts\nfunction createTransformValues(baseTransform, mode) {\n  let { x, y } = baseTransform;\n  const { width, height, rotation } = baseTransform;\n  if (mode === \"resetXYKeepFraction\") {\n    x = x - Math.floor(x);\n    y = y - Math.floor(y);\n  } else if (mode === \"resetXY\") {\n    x = 0;\n    y = 0;\n  }\n  return { x, y, width, height, rotation };\n}\nfunction getTransformMode(isRootVectorNode, includeTransform) {\n  if (includeTransform !== void 0) {\n    if (includeTransform) {\n      return \"asIs\";\n    }\n  } else {\n    if (!isRootVectorNode) {\n      return \"asIs\";\n    }\n  }\n  if (isRootVectorNode) {\n    return \"resetXYKeepFraction\";\n  } else {\n    return \"resetXY\";\n  }\n}\nfunction transformValues2(rect, rotation, isRootVectorNode, includeTransform) {\n  const transformMode = getTransformMode(isRootVectorNode, includeTransform);\n  const baseTransform = { ...rect, rotation };\n  const transform2 = createTransformValues(baseTransform, transformMode);\n  return transform2;\n}\n\n// ../../library/src/render/utils/transformString.ts\nfunction transformString(transform2) {\n  if (transform2 === void 0) {\n    return void 0;\n  }\n  const { x, y, rotation, width, height } = transform2;\n  let result;\n  if (x !== 0 || y !== 0) {\n    result = `translate(${roundedNumberString(x, 3)} ${roundedNumberString(y, 3)})`;\n  }\n  if (rotation !== 0) {\n    const roundedRotation = roundedNumberString(rotation, 4);\n    const roundedWidth = roundedNumberString(width / 2, 3);\n    const roundedHeight = roundedNumberString(height / 2, 3);\n    const rotationString = `rotate(${roundedRotation} ${roundedWidth} ${roundedHeight})`;\n    result = result ? `${result} ${rotationString}` : rotationString;\n  }\n  return result;\n}\n\n// ../../library/src/render/presentation/GradientElement.tsx\nimport React85, { Component as Component12 } from \"react\";\nvar LinearGradientElement = class extends Component12 {\n  render() {\n    const { id, angle, stops } = this.props;\n    return /* @__PURE__ */ React85.createElement(\"linearGradient\", { id, gradientTransform: `rotate(${angle}, 0.5, 0.5)` }, stops.map((stop, idx) => {\n      return /* @__PURE__ */ React85.createElement(\"stop\", { key: idx, offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha });\n    }));\n  }\n};\nvar RadialGradientElement = class extends Component12 {\n  render() {\n    const { centerAnchorX, centerAnchorY, id, widthFactor, heightFactor, stops } = this.props;\n    return /* @__PURE__ */ React85.createElement(\n      \"radialGradient\",\n      {\n        id,\n        cy: centerAnchorY,\n        cx: centerAnchorX,\n        r: widthFactor,\n        gradientTransform: `translate(${centerAnchorX}, ${centerAnchorY}) scale(1 ${heightFactor / widthFactor}) translate(-${centerAnchorX}, -${centerAnchorY})`\n      },\n      stops.map((stop, idx) => {\n        return /* @__PURE__ */ React85.createElement(\"stop\", { key: idx, offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha });\n      })\n    );\n  }\n};\n\n// ../../library/src/render/presentation/SVGRoot.tsx\nimport React86, { Component as Component13 } from \"react\";\nvar SVGRoot = class extends Component13 {\n  render() {\n    const { children, frame: frame2, innerRef } = this.props;\n    const { width, height } = frame2;\n    const fx = Math.floor(frame2.x);\n    const fy = Math.floor(frame2.y);\n    const svgStyle = {\n      position: \"absolute\",\n      width: Math.ceil(width),\n      height: Math.ceil(height),\n      overflow: \"visible\",\n      display: \"block\",\n      transform: `translate(${fx}px, ${fy}px)`\n    };\n    Layer.applyWillChange(this.props, svgStyle, false);\n    return /* @__PURE__ */ React86.createElement(\n      \"svg\",\n      {\n        width: \"100%\",\n        height: \"100%\",\n        xmlns: \"http://www.w3.org/2000/svg\",\n        xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n        style: svgStyle,\n        ref: innerRef\n      },\n      children\n    );\n  }\n};\n\n// ../../library/src/render/presentation/Vector.tsx\nvar Vector = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      var _a2, _b;\n      if (import_process10.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      const {\n        opacity,\n        calculatedPath,\n        d,\n        insideStroke,\n        shapeId,\n        strokeEnabled,\n        strokeClipId,\n        strokeWidth,\n        idAttribute,\n        rect,\n        shadows,\n        strokeAlpha,\n        name,\n        includeTransform,\n        isRootVectorNode,\n        rotation,\n        id,\n        lineCap,\n        lineJoin,\n        strokeColor,\n        strokeMiterLimit,\n        strokeDashArray,\n        strokeDashOffset,\n        fill,\n        variants,\n        transition\n      } = this.props;\n      if (!id || !shapeId || !strokeClipId)\n        return null;\n      const rotate = (_b = (_a2 = this.props.rotate) != null ? _a2 : rotation) != null ? _b : 0;\n      const { target } = RenderEnvironment;\n      const transform2 = transformValues2(rect, rotate, isRootVectorNode, includeTransform);\n      let vectorFill;\n      let fillAlpha = 0;\n      let imagePattern;\n      let linearGradient;\n      let radialGradient;\n      if (typeof fill === \"string\" || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        if (fillColor !== \"transparent\") {\n          vectorFill = fillColor;\n          fillAlpha = ConvertColor.getAlpha(vectorFill);\n        }\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        linearGradient = elementPropertiesForLinearGradient(fill, id);\n        vectorFill = `url(#${linearGradient.id})`;\n        fillAlpha = 1;\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        radialGradient = elementPropertiesForRadialGradient(fill, id);\n        vectorFill = `url(#${radialGradient.id})`;\n        fillAlpha = 1;\n      } else if (BackgroundImage.isImageObject(fill)) {\n        imagePattern = imagePatternPropsForFill(fill, transform2, id);\n        if (imagePattern) {\n          vectorFill = `url(#${imagePattern.id})`;\n          fillAlpha = 1;\n        }\n      }\n      if (vectorFill === svgElementAttributeDefaults.fill) {\n        vectorFill = void 0;\n      }\n      if (vectorFill === void 0) {\n        vectorFill = \"transparent\";\n      }\n      const fillEnabled = vectorFill !== void 0 && vectorFill !== \"transparent\" && fillAlpha !== 0;\n      if (!fillEnabled && !strokeEnabled) {\n        fillAlpha = 1;\n      }\n      let mainElement;\n      let strokeClipPath = null;\n      let shapeReference = null;\n      let strokeElement = null;\n      let pathTranslate;\n      let elementTransform;\n      const translatePaths = target === \"EXPORT\" /* export */;\n      if (transform2.rotation === 0 && translatePaths) {\n        pathTranslate = transform2;\n      } else {\n        pathTranslate = { x: 0, y: 0 };\n        elementTransform = transformString(transform2);\n      }\n      const pathAttributes = {\n        d: d != null ? d : toSVGPath(calculatedPath, pathTranslate, target),\n        transform: elementTransform\n      };\n      const svgStrokeAttributes = {};\n      if (strokeEnabled && strokeWidth !== 0) {\n        svgStrokeAttributes.strokeWidth = strokeWidth;\n        svgStrokeAttributes.stroke = strokeColor;\n        svgStrokeAttributes.strokeLinecap = lineCap;\n        svgStrokeAttributes.strokeLinejoin = lineJoin;\n        if (lineJoin === \"miter\") {\n          svgStrokeAttributes.strokeMiterlimit = strokeMiterLimit;\n        }\n        svgStrokeAttributes.strokeDasharray = strokeDashArray;\n        if (strokeDashOffset !== 0) {\n          svgStrokeAttributes.strokeDashoffset = strokeDashOffset;\n        }\n      }\n      for (const key7 in svgElementAttributeDefaults) {\n        if (svgStrokeAttributes[key7] === svgElementAttributeDefaults[key7]) {\n          svgStrokeAttributes[key7] = void 0;\n        }\n      }\n      const internalShapeId = InternalID.forKey(shapeId);\n      const internalStrokeClipId = InternalID.forKey(strokeClipId);\n      const shadow = shadowForShape(\n        shadows,\n        rect,\n        internalShapeId,\n        fillAlpha,\n        strokeAlpha,\n        strokeWidth,\n        internalStrokeClipId,\n        svgStrokeAttributes\n      );\n      const currentName = target === \"PREVIEW\" /* preview */ ? name || void 0 : void 0;\n      if (shadow.insetElement !== null || shadow.outsetElement !== null || insideStroke) {\n        pathAttributes.id = internalShapeId.id;\n        shapeReference = /* @__PURE__ */ React87.createElement(motion.path, { ...{ ...pathAttributes }, variants, transition });\n        if (shadow.needsStrokeClip || insideStroke) {\n          strokeClipPath = /* @__PURE__ */ React87.createElement(\"clipPath\", { id: internalStrokeClipId.id }, /* @__PURE__ */ React87.createElement(\"use\", { xlinkHref: internalShapeId.link }));\n        }\n        if (shadow.insetElement !== null && strokeEnabled && strokeWidth && strokeWidth > 0) {\n          mainElement = /* @__PURE__ */ React87.createElement(\"use\", { xlinkHref: internalShapeId.link, fill: vectorFill, strokeOpacity: \"0\", name: currentName });\n          strokeElement = /* @__PURE__ */ React87.createElement(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              clipPath: internalStrokeClipId.urlLink,\n              fill: \"transparent\",\n              ...svgStrokeAttributes,\n              strokeWidth\n            }\n          );\n        } else {\n          mainElement = /* @__PURE__ */ React87.createElement(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              clipPath: internalStrokeClipId.urlLink,\n              ...svgStrokeAttributes,\n              strokeWidth,\n              name: currentName\n            }\n          );\n        }\n      } else {\n        pathAttributes.id = idAttribute;\n        mainElement = /* @__PURE__ */ React87.createElement(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            name: currentName,\n            variants,\n            transition\n          }\n        );\n      }\n      const imagePatternElement = imagePattern ? /* @__PURE__ */ React87.createElement(ImagePatternElement, { ...imagePattern }) : void 0;\n      let gradient;\n      if (linearGradient) {\n        gradient = /* @__PURE__ */ React87.createElement(LinearGradientElement, { ...linearGradient });\n      } else if (radialGradient) {\n        gradient = /* @__PURE__ */ React87.createElement(RadialGradientElement, { ...radialGradient });\n      }\n      let defs = null;\n      if (shapeReference || strokeClipPath || shadow.definition && shadow.definition.length || gradient || imagePatternElement) {\n        defs = /* @__PURE__ */ React87.createElement(\"defs\", null, shapeReference, strokeClipPath, shadow.definition, gradient, imagePatternElement);\n      }\n      const opacityValue = opacity != null ? opacity : variants ? 1 : void 0;\n      if (defs === null && shadow.outsetElement === null && shadow.insetElement === null && strokeElement === null) {\n        mainElement = /* @__PURE__ */ React87.createElement(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            opacity: opacityValue,\n            variants,\n            transition,\n            name: currentName\n          }\n        );\n        return this.renderElement(mainElement);\n      } else {\n        return this.renderElement(\n          /* @__PURE__ */ React87.createElement(motion.g, { opacity: opacityValue, variants, transition }, defs, shadow.outsetElement, mainElement, shadow.insetElement, strokeElement)\n        );\n      }\n    }\n    renderElement(element) {\n      var _a2, _b;\n      const { isRootVectorNode, width, height, rect, willChangeTransform, includeTransform } = this.props;\n      const frame2 = (_b = (_a2 = this.props.frame) != null ? _a2 : rect) != null ? _b : { x: 0, y: 0, width: 100, height: 100 };\n      if (!isRootVectorNode)\n        return element;\n      if (includeTransform)\n        return element;\n      return /* @__PURE__ */ React87.createElement(\n        SVGRoot,\n        {\n          frame: frame2,\n          width,\n          height,\n          willChangeTransform,\n          innerRef: this.setLayerElement\n        },\n        element\n      );\n    }\n  }, _a.defaultVectorProps = {\n    isRootVectorNode: false,\n    name: null,\n    includeTransform: void 0,\n    defaultFillColor: void 0,\n    defaultStrokeColor: void 0,\n    defaultStrokeWidth: void 0,\n    defaultStrokeAlignment: \"center\",\n    width: 100,\n    height: 100,\n    rotation: 0,\n    rotate: void 0,\n    frame: void 0,\n    opacity: void 0,\n    calculatedPath: [],\n    d: void 0,\n    shapeId: void 0,\n    insideStroke: false,\n    strokeEnabled: true,\n    strokeClipId: void 0,\n    strokeWidth: void 0,\n    idAttribute: void 0,\n    transition: void 0,\n    shadows: [],\n    strokeAlpha: 1,\n    rect: { x: 0, y: 0, width: 0, height: 0 },\n    lineCap: \"butt\",\n    strokeColor: \"#0AF\",\n    lineJoin: \"miter\",\n    strokeMiterLimit: 4,\n    strokeDashArray: \"0\",\n    strokeDashOffset: 0,\n    fill: \"rgba(0,170,255,0.5)\"\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorProps\n  }, _a;\n})();\n\n// ../../library/src/render/presentation/VectorGroup.tsx\nvar import_process11 = __toESM(require_browser(), 1);\nimport React88 from \"react\";\nvar VectorGroup = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      if (import_process11.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      const {\n        id,\n        name: nameProp,\n        opacity,\n        visible,\n        targetName,\n        defaultName,\n        children,\n        includeTransform,\n        x,\n        y,\n        width,\n        height,\n        rotation,\n        isRootVectorNode\n      } = this.props;\n      if (!visible)\n        return null;\n      const { target } = RenderEnvironment;\n      const rect = { x, y, width, height };\n      const transform2 = transformValues2(rect, rotation, isRootVectorNode, includeTransform);\n      const addNames = target === \"PREVIEW\" /* preview */;\n      let name = void 0;\n      if (addNames) {\n        if (targetName) {\n          name = targetName;\n        } else if (nameProp) {\n          name = nameProp;\n        } else {\n          name = defaultName;\n        }\n      }\n      return this.renderElement(\n        /* @__PURE__ */ React88.createElement(\"g\", { transform: transformString(transform2), ...{ id, name, opacity } }, children)\n      );\n    }\n    renderElement(element) {\n      const { isRootVectorNode, width, height, frame: frame2, willChangeTransform, includeTransform } = this.props;\n      if (!isRootVectorNode)\n        return element;\n      if (includeTransform)\n        return element;\n      return /* @__PURE__ */ React88.createElement(\n        SVGRoot,\n        {\n          frame: frame2,\n          width,\n          height,\n          willChangeTransform,\n          innerRef: this.setLayerElement\n        },\n        element\n      );\n    }\n  }, _a.defaultVectorGroupProps = {\n    name: void 0,\n    opacity: void 0,\n    visible: true,\n    x: 0,\n    y: 0,\n    rotation: 0,\n    width: 100,\n    height: 100,\n    targetName: void 0,\n    defaultName: \"\",\n    isRootVectorNode: false,\n    includeTransform: void 0,\n    frame: { x: 0, y: 0, width: 100, height: 100 }\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorGroupProps\n  }, _a;\n})();\n\n// ../../library/src/render/DesignComponentWrapper.tsx\nvar _CanvasStore = class {\n  constructor() {\n    this.canvas = { children: [] };\n    this.listeners = [];\n    this.ids = [];\n  }\n  static shared(data2) {\n    if (data2) {\n      const store = new _CanvasStore();\n      store.setCanvas(data2);\n      return store;\n    }\n    if (!_CanvasStore.__shared) {\n      _CanvasStore.__shared = new _CanvasStore();\n    }\n    return _CanvasStore.__shared;\n  }\n  updateNode(presentationNode) {\n    const id = presentationNode.props.id;\n    let children = this.canvas.children;\n    if (!children) {\n      this.canvas.children = children = [];\n    }\n    let found = false;\n    for (let i = 0; i < children.length; i++) {\n      const child = children[i];\n      if ((child == null ? void 0 : child.props.id) === id) {\n        found = true;\n        children[i] = presentationNode;\n        break;\n      }\n    }\n    if (!found) {\n      children.push(presentationNode);\n    }\n    this.setCanvas(this.canvas);\n  }\n  setCanvas(canvas) {\n    if (!canvas.children)\n      return;\n    this.canvas = canvas;\n    this.listeners.forEach((l, at) => {\n      const id = this.ids[at];\n      if (!id)\n        return;\n      const data2 = findNodeFor(canvas, id);\n      l.setState({ data: data2 });\n    });\n  }\n  registerListener(listener, idOrName) {\n    this.listeners.push(listener);\n    this.ids.push(idOrName);\n    return findNodeFor(this.canvas, idOrName);\n  }\n  removeListener(listener) {\n    const at = this.listeners.indexOf(listener);\n    if (at === -1)\n      return;\n    this.listeners.splice(at, 1);\n    this.ids.splice(at, 1);\n  }\n};\nvar CanvasStore = _CanvasStore;\nCanvasStore.__shared = null;\nvar builtInComponents = { Frame, Vector, Stack, VectorGroup, SVG, Text, DeprecatedComponentContainer };\nvar DesignComponent = class extends Component14 {\n  _typeForName(name) {\n    const builtIn = builtInComponents[name];\n    if (builtIn)\n      return builtIn;\n    const codeComponent = runtime.componentLoader.componentForIdentifier(name);\n    if (codeComponent && isReactDefinition(codeComponent)) {\n      return codeComponent.class;\n    }\n    return Frame;\n  }\n  _renderData(presentation, componentProps, topLevelProps) {\n    safeWindow[\"__checkBudget__\"]();\n    const { componentClass, name } = presentation;\n    let { props, children } = presentation;\n    props = { ...props, _constraints: { enabled: false } };\n    const type = this._typeForName(componentClass);\n    if (!type)\n      return null;\n    if (topLevelProps) {\n      const { style, ...rest } = props;\n      props = { ...rest, ...topLevelProps, _initialStyle: style };\n    }\n    if (!props.size && props._sizeOfMasterOnCanvas) {\n      if (!props.width) {\n        props.width = props._sizeOfMasterOnCanvas.width;\n      }\n      if (!props.height) {\n        props.height = props._sizeOfMasterOnCanvas.height;\n      }\n    }\n    if (name && componentProps.hasOwnProperty(name)) {\n      if (componentClass === \"Text\") {\n        const text = componentProps[name];\n        if (text) {\n          props = { ...props, text: componentProps[name] };\n        }\n      } else {\n        const orig = props.background;\n        const background = { src: componentProps[name], fit: orig.fit };\n        props = { ...props, background };\n      }\n    }\n    const c = children && children.map((child) => this._renderData(child, componentProps, void 0));\n    children = children ? c : [];\n    return React89.createElement(type, props, children);\n  }\n  render() {\n    safeWindow[\"__checkBudget__\"]();\n    const data2 = this.state.data;\n    if (!data2) {\n      throw new Error(\"Unable to connect to canvas data store.\");\n    }\n    return this._renderData(this.state.data, this.props, this.props);\n  }\n};\nfunction isNode(id, presentation) {\n  const { name, props } = presentation;\n  return props && props.id === id || name === id;\n}\nfunction findNodeFor(presentation, id) {\n  if (!presentation)\n    return null;\n  if (isNode(id, presentation)) {\n    return presentation;\n  }\n  const { children } = presentation;\n  if (!children || !isArray(children))\n    return null;\n  for (const child of children) {\n    if (isNode(id, child)) {\n      return child;\n    }\n  }\n  for (const child of children) {\n    const result = findNodeFor(child, id);\n    if (result)\n      return result;\n  }\n  return null;\n}\nfunction createDesignComponent(canvasStore, id, propertyControls, width = 200, height = 200) {\n  var _a;\n  return _a = class extends DesignComponent {\n    static rect(props) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      const parentSizeInfo = props.parentSize ? { sizing: props.parentSize, positioning: props.parentSize } : null;\n      return ConstraintValues.toRect(constraintValues, parentSizeInfo, null);\n    }\n    static size(props, parentSize, freeSpace) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      return ConstraintValues.toSize(constraintValues, parentSize || null, null, freeSpace);\n    }\n    constructor(props, context) {\n      super(props, context);\n      const data2 = canvasStore.registerListener(this, id);\n      this.state = { data: data2 };\n    }\n    render() {\n      const maybeRenderWithProvider = (renderNode) => {\n        const nodeId = nodeIdFromString(id);\n        if (!this.state.data && renderNode) {\n          safeWindow[\"__checkBudget__\"]();\n          const el = renderNode(nodeId);\n          if (el && React89.isValidElement(el) && typeof el.type !== \"string\") {\n            return React89.createElement(WithOverride(el.type, this.props), el.props);\n          }\n        }\n        return super.render();\n      };\n      return /* @__PURE__ */ React89.createElement(RenderNodeContext.Consumer, null, maybeRenderWithProvider);\n    }\n    componentWillUnmount() {\n      canvasStore.removeListener(this);\n    }\n  }, _a.displayName = `DesignComponent(${id})`, _a.propertyControls = propertyControls, _a.supportsConstraints = true, _a.defaultProps = {\n    _sizeOfMasterOnCanvas: {\n      width,\n      height\n    }\n  }, _a;\n}\nvar RenderNodeContext = React89.createContext(null);\nvar RenderNodeProvider = RenderNodeContext.Provider;\n\n// ../../library/src/render/presentation/Image.tsx\nimport React90 from \"react\";\nvar Image2 = /* @__PURE__ */ React90.forwardRef(function Image3(props, ref) {\n  var _a;\n  const { background, children, alt, ...rest } = props;\n  const style = { ...rest.style };\n  if (background) {\n    delete style.background;\n  }\n  const MotionComponent = motion[(_a = props.as) != null ? _a : \"div\"];\n  return /* @__PURE__ */ React90.createElement(MotionComponent, { ...rest, style, ref }, background && /* @__PURE__ */ React90.createElement(BackgroundImageComponent, { image: background, alt }), children);\n});\n\n// ../../library/src/render/presentation/PresentationTree.ts\nfunction convertPresentationTree(node, converter, componentDefinitionProvider, getCachedNode, skipCodeComponentPropsCache = false) {\n  const cachedNode = getCachedNode && getCachedNode(node);\n  if (cachedNode)\n    return cachedNode;\n  let children;\n  if (isCodeComponentContainerPresentation(node)) {\n    children = convertCodeComponentContainer(\n      componentDefinitionProvider,\n      node,\n      converter,\n      getCachedNode,\n      skipCodeComponentPropsCache\n    );\n  } else if (node.children) {\n    children = node.children.map(\n      (n) => convertPresentationTree(\n        n,\n        converter,\n        componentDefinitionProvider,\n        getCachedNode,\n        skipCodeComponentPropsCache\n      )\n    );\n  }\n  return converter(node, children);\n}\nfunction isCodeComponentContainerPresentation(value) {\n  return !!value.codeComponentIdentifier;\n}\nfunction convertCodeComponentContainer(componentDefinitionProvider, node, converter, getCachedNode, skipCodeComponentPropsCache = false) {\n  var _a;\n  const codeComponentChildren = node.getComponentChildren ? node.getComponentChildren(componentDefinitionProvider) : [];\n  const codeComponentSlots = node.getComponentSlotChildren ? node.getComponentSlotChildren(componentDefinitionProvider) : {};\n  let codeComponentPresentation;\n  const props = node.getCodeComponentProps ? node.getCodeComponentProps(componentDefinitionProvider, { skipCache: skipCodeComponentPropsCache }) : void 0;\n  if (node.cache.codeComponentPresentation) {\n    codeComponentPresentation = node.cache.codeComponentPresentation;\n    if (!isShallowEqualArray(codeComponentPresentation.children, codeComponentChildren)) {\n      codeComponentPresentation.cache.reactElement = null;\n      codeComponentPresentation.children = codeComponentChildren;\n    }\n    if (!isEqual(codeComponentPresentation.props, props)) {\n      codeComponentPresentation.cache.reactElement = null;\n      codeComponentPresentation.cache.props = null;\n      codeComponentPresentation.props = props;\n    }\n  } else {\n    const { id: containerId, codeComponentIdentifier: identifier, codeComponentPackageVersion } = node;\n    node.cache.codeComponentPresentation = codeComponentPresentation = new CodeComponentPresentation(\n      containerId + identifier,\n      identifier,\n      codeComponentPackageVersion,\n      props,\n      codeComponentChildren\n    );\n  }\n  codeComponentPresentation.props.placeholders = node.cache.placeholders;\n  const slotKeys = Object.keys(codeComponentSlots);\n  if (slotKeys.length) {\n    codeComponentPresentation.props = { ...codeComponentPresentation.props };\n    codeComponentPresentation.props.__slotKeys = slotKeys;\n    for (const slotKey of slotKeys) {\n      const slotChildren = (_a = codeComponentSlots[slotKey]) == null ? void 0 : _a.map(\n        (child) => convertPresentationTree(\n          child,\n          converter,\n          componentDefinitionProvider,\n          getCachedNode,\n          skipCodeComponentPropsCache\n        )\n      );\n      codeComponentPresentation.props[slotKey] = slotChildren;\n    }\n  }\n  return [\n    converter(\n      codeComponentPresentation,\n      codeComponentPresentation.children.map(\n        (child) => convertPresentationTree(\n          child,\n          converter,\n          componentDefinitionProvider,\n          getCachedNode,\n          skipCodeComponentPropsCache\n        )\n      )\n    )\n  ];\n}\nvar CodeComponentPresentation = class {\n  constructor(id, componentIdentifier, packageVersion, props, children, codeOverrideIdentifier) {\n    this.id = id;\n    this.componentIdentifier = componentIdentifier;\n    this.packageVersion = packageVersion;\n    this.props = props;\n    this.children = children;\n    this.codeOverrideIdentifier = codeOverrideIdentifier;\n    this.cache = {};\n  }\n  getProps() {\n    return {\n      ...this.props,\n      id: this.id,\n      key: this.id\n    };\n  }\n  rect(_parentSizeInfo) {\n    return { x: 0, y: 0, width: 0, height: 0 };\n  }\n};\n\n// ../../library/src/render/presentation/RichText.tsx\nimport React92, { Children, cloneElement, forwardRef as forwardRef4, isValidElement, useContext as useContext14, useRef as useRef12 } from \"react\";\n\n// ../../library/src/render/presentation/DeprecatedRichText.tsx\nimport * as React91 from \"react\";\nimport { useRef as useRef11 } from \"react\";\nvar htmlEscapes = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#39;\"\n};\nvar reUnescapedHtml = /[&<>\"']/g;\nvar reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\nfunction escapeHTML2(str) {\n  return str && reHasUnescapedHtml.test(str) ? str.replace(reUnescapedHtml, (chr) => htmlEscapes[chr]) : str || \"\";\n}\nvar deprecatedRichTextPlaceholder = \"{{ text-placeholder }}\";\nvar richTextWrapperClassName = \"rich-text-wrapper\";\nvar DeprecatedRichText = /* @__PURE__ */ React91.forwardRef(\n  function Text3(props, forwardedRef) {\n    var _a, _b;\n    const {\n      id,\n      name,\n      html,\n      htmlFromDesign,\n      text,\n      textFromDesign,\n      fonts = [],\n      width,\n      height,\n      left,\n      right,\n      top,\n      bottom,\n      center,\n      className,\n      stylesPresetsClassName,\n      visible = true,\n      opacity,\n      rotation = 0,\n      verticalAlignment = \"top\",\n      isEditable = false,\n      willChangeTransform,\n      environment: environment2 = RenderTarget.current,\n      withExternalLayout = false,\n      positionSticky,\n      positionStickyTop,\n      positionStickyRight,\n      positionStickyBottom,\n      positionStickyLeft,\n      __htmlStructure,\n      __fromCanvasComponent = false,\n      _forwardedOverrideId,\n      _forwardedOverrides,\n      _usesDOMRect,\n      children,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const layoutId = useLayoutId(props);\n    const fallbackLayoutRef = useRef11(null);\n    const layoutRef = forwardedRef != null ? forwardedRef : fallbackLayoutRef;\n    const { navigate, getRoute } = useRouter();\n    const currentRoute = useCurrentRoute();\n    useRoutePreloader((_a = props.preload) != null ? _a : []);\n    useMeasureLayout(props, layoutRef);\n    const inCodeComponent = React91.useContext(ComponentContainerContext);\n    const isOnCanvas = useIsOnFramerCanvas();\n    let textOrOverride = text;\n    const forwardedOverrideId = _forwardedOverrideId != null ? _forwardedOverrideId : id;\n    if (forwardedOverrideId && _forwardedOverrides) {\n      const override = _forwardedOverrides[forwardedOverrideId];\n      if (typeof override === \"string\") {\n        textOrOverride = override;\n      }\n    }\n    let innerHTML = \"\";\n    if (textOrOverride) {\n      const escapedText = escapeHTML2(textOrOverride);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (html) {\n      innerHTML = html;\n    } else if (textFromDesign) {\n      const escapedText = escapeHTML2(textFromDesign);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (htmlFromDesign) {\n      innerHTML = htmlFromDesign;\n    }\n    const implicitPathVariables = useImplicitPathVariables();\n    const innerHTMLWithReplacedFramerPageLinks = React91.useMemo(() => {\n      if (isOnCanvas || !getRoute || !currentRoute)\n        return innerHTML;\n      return replaceFramerPageLinks(innerHTML, getRoute, currentRoute, implicitPathVariables);\n    }, [isOnCanvas, innerHTML, getRoute, currentRoute, implicitPathVariables]);\n    React91.useEffect(() => {\n      const container = layoutRef.current;\n      if (container === null)\n        return;\n      function interceptPageLinks(event) {\n        const anchorElement = findAnchorElement(event.target, layoutRef.current);\n        if (event.metaKey || !navigate || !anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */)\n          return;\n        const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n        if (didNavigate) {\n          event.preventDefault();\n        }\n      }\n      container.addEventListener(\"click\", interceptPageLinks);\n      return () => {\n        container.removeEventListener(\"click\", interceptPageLinks);\n      };\n    }, [navigate, implicitPathVariables]);\n    useLoadFonts(fonts, __fromCanvasComponent, layoutRef);\n    if (!visible)\n      return null;\n    injectComponentCSSRules();\n    const isHidden2 = isEditable && environment2() === \"CANVAS\" /* canvas */;\n    const style = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment2(verticalAlignment),\n      opacity: isHidden2 ? 0 : opacity,\n      flexShrink: 0\n    };\n    const restrictedRenderTarget = RenderTarget.hasRestrictions();\n    const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n    const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n    const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n    const template = hasTransformTemplate ? (_b = props.transformTemplate) != null ? _b : transformTemplate(center) : void 0;\n    if (!withExternalLayout) {\n      if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n        const rotate = Animatable.getNumber(rotation).toFixed(4);\n        style.transform = `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate}deg)`;\n        style.width = frame2.width;\n        style.minWidth = frame2.width;\n        style.height = frame2.height;\n      } else {\n        style.left = left;\n        style.right = right;\n        style.top = top;\n        style.bottom = bottom;\n        style.width = width;\n        style.height = height;\n        style.rotate = rotation;\n      }\n      if (positionSticky) {\n        if (!isOnCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n        style.position = \"absolute\";\n      }\n    }\n    collectFiltersFromProps(props, style);\n    collectTextShadowsForProps(props, style);\n    if (willChangeTransform) {\n      forceLayerBackingWithCSSProperties(style);\n    }\n    Object.assign(style, props.style);\n    return /* @__PURE__ */ React91.createElement(\n      motion.div,\n      {\n        id,\n        ref: layoutRef,\n        ...rest,\n        style,\n        layoutId,\n        \"data-framer-name\": name,\n        \"data-framer-component-type\": \"DeprecatedRichText\",\n        \"data-center\": center,\n        className: cx(className, stylesPresetsClassName, richTextWrapperClassName),\n        transformTemplate: template,\n        dangerouslySetInnerHTML: { __html: innerHTMLWithReplacedFramerPageLinks }\n      }\n    );\n  }\n);\nfunction convertVerticalAlignment2(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction useLoadFonts(fonts, fromCanvasComponent, containerRef) {\n  const prevFontsRef = useRef11([]);\n  if (!isShallowEqualArray(prevFontsRef.current, fonts)) {\n    prevFontsRef.current = fonts;\n    fontStore.loadWebFontsFromSelectors(fonts).then((results) => {\n      if (!fromCanvasComponent || !containerRef.current || RenderTarget.current() !== \"CANVAS\" /* canvas */)\n        return;\n      const didLoadNewFonts = results.some(\n        (result) => result.status === \"fulfilled\" && result.value === 1 /* Loaded */\n      );\n      if (didLoadNewFonts) {\n        measureClosestComponentContainer(containerRef.current);\n      }\n    });\n  }\n}\n\n// ../../library/src/render/presentation/RichText.tsx\nvar RichTextContainer = /* @__PURE__ */ forwardRef4(\n  (props, ref) => {\n    var _a;\n    const {\n      __fromCanvasComponent = false,\n      _forwardedOverrideId,\n      _forwardedOverrides,\n      _usesDOMRect,\n      bottom,\n      center,\n      children,\n      environment: environment2 = RenderTarget.current,\n      fonts = [],\n      height,\n      isEditable = false,\n      left,\n      name,\n      opacity,\n      positionSticky,\n      positionStickyBottom,\n      positionStickyLeft,\n      positionStickyRight,\n      positionStickyTop,\n      right,\n      rotation = 0,\n      style,\n      stylesPresetsClassNames,\n      text: plainText,\n      top,\n      verticalAlignment = \"top\",\n      visible = true,\n      width,\n      willChangeTransform,\n      withExternalLayout = false,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const isOnCanvas = useIsOnFramerCanvas();\n    const inCodeComponent = useContext14(ComponentContainerContext);\n    const layoutId = useLayoutId(props);\n    const fallbackRef = useRef12(null);\n    const containerRef = ref != null ? ref : fallbackRef;\n    useMeasureLayout(props, containerRef);\n    useLoadFonts(fonts, __fromCanvasComponent, containerRef);\n    if (!visible)\n      return null;\n    injectComponentCSSRules();\n    const isHidden2 = isEditable && environment2() === \"CANVAS\" /* canvas */;\n    const containerStyle = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment2(verticalAlignment),\n      opacity: isHidden2 ? 0 : opacity,\n      flexShrink: 0\n    };\n    const restrictedRenderTarget = RenderTarget.hasRestrictions();\n    const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n    const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n    const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n    const template = hasTransformTemplate ? (_a = props.transformTemplate) != null ? _a : transformTemplate(center) : void 0;\n    if (!withExternalLayout) {\n      if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n        const rotate = Animatable.getNumber(rotation).toFixed(4);\n        containerStyle.transform = `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate}deg)`;\n        containerStyle.width = frame2.width;\n        containerStyle.minWidth = frame2.width;\n        containerStyle.height = frame2.height;\n      } else {\n        containerStyle.left = left;\n        containerStyle.right = right;\n        containerStyle.top = top;\n        containerStyle.bottom = bottom;\n        containerStyle.width = width;\n        containerStyle.height = height;\n        containerStyle.rotate = rotation;\n      }\n      if (positionSticky) {\n        if (!isOnCanvas || inCodeComponent) {\n          containerStyle.position = \"sticky\";\n          containerStyle.willChange = \"transform\";\n          containerStyle.zIndex = 1;\n          containerStyle.top = positionStickyTop;\n          containerStyle.right = positionStickyRight;\n          containerStyle.bottom = positionStickyBottom;\n          containerStyle.left = positionStickyLeft;\n        }\n      } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n        containerStyle.position = \"absolute\";\n      }\n    }\n    collectFiltersFromProps(props, containerStyle);\n    collectTextShadowsForProps(props, containerStyle);\n    if (willChangeTransform) {\n      forceLayerBackingWithCSSProperties(containerStyle);\n    }\n    Object.assign(containerStyle, style);\n    if (layoutId) {\n      rest.layout = \"preserve-aspect\";\n    }\n    return /* @__PURE__ */ React92.createElement(\n      motion.div,\n      {\n        ...rest,\n        ref: containerRef,\n        style: containerStyle,\n        layoutId,\n        transformTemplate: template,\n        \"data-framer-name\": name,\n        \"data-framer-component-type\": \"RichTextContainer\"\n      },\n      children && styleRichTextChildren(children, stylesPresetsClassNames, plainText)\n    );\n  }\n);\nfunction styleRichTextChildren(element, stylesPresetsClassNames, plainText) {\n  let children = Children.toArray(element.props.children);\n  if (isString3(plainText)) {\n    children = children.slice(0, 1);\n  }\n  children = children.map((child) => {\n    if (isValidElement(child)) {\n      return styleRichTextChildren(child, stylesPresetsClassNames, plainText);\n    }\n    if (isString3(plainText)) {\n      return plainText;\n    }\n    return child;\n  });\n  const { [\"data-preset-tag\"]: dataPresetTag, ...props } = element.props;\n  if (isString3(element.type) || isMotionComponent(element.type)) {\n    const tag = dataPresetTag || unwrapMotionComponent(element.type) || element.type;\n    const stylesPresetClassName = isString3(tag) ? stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[tag] : void 0;\n    props.className = cx(\"framer-text\", props.className, stylesPresetClassName);\n  }\n  return cloneElement(element, props, ...children);\n}\nvar RichText = /* @__PURE__ */ forwardRef4(\n  ({ children, html, htmlFromDesign, ...props }, ref) => {\n    const content = html || children || htmlFromDesign;\n    if (isString3(content)) {\n      if (!props.stylesPresetsClassName && isObject2(props.stylesPresetsClassNames)) {\n        props.stylesPresetsClassName = Object.values(props.stylesPresetsClassNames).join(\" \");\n      }\n      const contentProp = {\n        [isString3(html) ? \"html\" : \"htmlFromDesign\"]: content\n      };\n      return /* @__PURE__ */ React92.createElement(DeprecatedRichText, { ...props, ...contentProp, ref });\n    }\n    if (isValidElement(content)) {\n      if (!props.stylesPresetsClassNames && isString3(props.stylesPresetsClassName)) {\n        const [h1, h2, h3, p, a] = props.stylesPresetsClassName.split(\" \");\n        if (h1 === void 0 || h2 === void 0 || h3 === void 0 || p === void 0 || a === void 0) {\n          console.warn(`Encountered invalid stylesPresetsClassNames: ${props.stylesPresetsClassNames}`);\n        } else {\n          props.stylesPresetsClassNames = { h1, h2, h3, p, a };\n        }\n      }\n      return /* @__PURE__ */ React92.createElement(RichTextContainer, { ...props, ref }, content);\n    }\n    return null;\n  }\n);\n\n// ../../library/src/render/traits/Shape.ts\nvar key6 = \"calculatedPaths\";\nfunction withShape(target) {\n  return key6 in target;\n}\n\n// ../../library/src/render/types/Line.ts\nvar Line = /* @__PURE__ */ (() => {\n  function Line2(a, b) {\n    return { a, b };\n  }\n  Line2.intersection = (lineA, lineB) => {\n    const x1 = lineA.a.x;\n    const y1 = lineA.a.y;\n    const x2 = lineA.b.x;\n    const y2 = lineA.b.y;\n    const x3 = lineB.a.x;\n    const y3 = lineB.a.y;\n    const x4 = lineB.b.x;\n    const y4 = lineB.b.y;\n    const d = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n    if (d === 0) {\n      return null;\n    }\n    const xi = ((x3 - x4) * (x1 * y2 - y1 * x2) - (x1 - x2) * (x3 * y4 - y3 * x4)) / d;\n    const yi = ((y3 - y4) * (x1 * y2 - y1 * x2) - (y1 - y2) * (x3 * y4 - y3 * x4)) / d;\n    return { x: xi, y: yi };\n  };\n  Line2.isOrthogonal = (line) => {\n    return line.a.x === line.b.x || line.a.y === line.b.y;\n  };\n  Line2.perpendicular = (line, pointOnLine) => {\n    const deltaX = line.a.x - line.b.x;\n    const deltaY = line.a.y - line.b.y;\n    const pointB = Point(pointOnLine.x - deltaY, pointOnLine.y + deltaX);\n    return Line2(pointB, pointOnLine);\n  };\n  Line2.projectPoint = (line, point) => {\n    const perp = Line2.perpendicular(line, point);\n    return Line2.intersection(line, perp);\n  };\n  return Line2;\n})();\n\n// ../../library/src/render/types/Size.ts\nvar Size = /* @__PURE__ */ (() => {\n  function Size2(width, height) {\n    return { width, height };\n  }\n  Size2.equals = (sizeA, sizeB) => {\n    if (sizeA === sizeB)\n      return true;\n    if (!sizeA || !sizeB)\n      return false;\n    return sizeA.width === sizeB.width && sizeA.height === sizeB.height;\n  };\n  Size2.update = (fromSize, toSize, keepAspectRatio = false) => {\n    let { width, height } = fromSize;\n    const sizeRatio = width / height;\n    width = toSize.width !== void 0 ? toSize.width : width;\n    height = toSize.height !== void 0 ? toSize.height : height;\n    if (keepAspectRatio) {\n      if (toSize.width === void 0 && toSize.height !== void 0) {\n        width = toSize.height * sizeRatio;\n      }\n      if (toSize.width !== void 0 && toSize.height === void 0 && sizeRatio !== 0) {\n        height = toSize.width / sizeRatio;\n      }\n    }\n    return { width, height };\n  };\n  Size2.subtract = (sizeA, sizeB) => {\n    return {\n      width: Math.max(0, sizeA.width - sizeB.width),\n      height: Math.max(0, sizeA.height - sizeB.height)\n    };\n  };\n  Size2.zero = Size2(0, 0);\n  Size2.isZero = function(size2) {\n    return size2 === Size2.zero || size2.width === 0 && size2.height === 0;\n  };\n  Size2.defaultIfZero = function(width, height, size2) {\n    if (Size2.isZero(size2)) {\n      return Size2(width, height);\n    }\n    return size2;\n  };\n  return Size2;\n})();\n\n// ../../library/src/render/utils/annotateTypeOnStringify.ts\nfunction annotateTypeOnStringify(ctor, typeName) {\n  const existingToJSON = ctor.prototype.toJSON;\n  ctor.prototype.toJSON = function() {\n    const base = existingToJSON ? existingToJSON.apply(this) : this;\n    return Object.assign({}, base, { __type__: typeName });\n  };\n  return ctor;\n}\nfunction isOfAnnotatedType(object, typeName) {\n  return object && object.__type__ && object.__type__ === typeName;\n}\n\n// ../../library/src/render/utils/dom.ts\nvar frameFromElement = (element) => {\n  const frame2 = Rect.fromRect(element.getBoundingClientRect());\n  frame2.x = frame2.x + safeWindow.scrollX;\n  frame2.y = frame2.y + safeWindow.scrollY;\n  return frame2;\n};\nvar frameFromElements = (elements) => {\n  return Rect.merge(...elements.map(frameFromElement));\n};\nvar convertToPageFrame = (frame2, element) => {\n  const point = convertToPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar convertFromPageFrame = (frame2, element) => {\n  const point = convertFromPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar getPageFrame = (element) => {\n  const rect = element.getBoundingClientRect();\n  return {\n    x: rect.left + safeWindow.scrollX,\n    y: rect.top + safeWindow.scrollY,\n    width: rect.width,\n    height: rect.height\n  };\n};\nvar fromEventForPage = (event) => {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n};\nvar fromEventForClient = (event) => {\n  return {\n    x: event.clientX,\n    y: event.clientY\n  };\n};\nvar convertToPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x + frame2.x,\n    y: point.y + frame2.y\n  };\n};\nvar convertFromPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x - frame2.x,\n    y: point.y - frame2.y\n  };\n};\nvar dispatchKeyDownEvent = (keyCode, options = {}) => {\n  const keyboardEvent = new KeyboardEvent(\"keydown\", {\n    bubbles: true,\n    keyCode,\n    ...options\n  });\n  const activeElement = document.activeElement;\n  if (activeElement) {\n    activeElement.dispatchEvent(keyboardEvent);\n  }\n};\nvar DOM = {\n  frameFromElement,\n  frameFromElements,\n  convertToPageFrame,\n  convertFromPageFrame,\n  getPageFrame,\n  fromEventForPage,\n  fromEventForClient,\n  convertToPagePoint,\n  convertFromPagePoint\n};\n\n// ../../library/src/render/utils/getConfigFromURL.ts\nfunction getConfigFromPreviewURL(windowURLString = safeWindow.location.href) {\n  if (!windowURLString) {\n    throw new Error(\n      `getConfigFromURL() called without url argument (location.href = \"${safeWindow.location.href}\")`\n    );\n  }\n  const params = new URL(windowURLString).searchParams;\n  const imageBaseURL = params.get(\"imageBaseURL\") || \"\";\n  const projectURL = params.get(\"projectURL\") || \"\";\n  const showConsole = params.get(\"console\") === \"1\";\n  const disableDevice = params.get(\"device\") === \"0\";\n  return { imageBaseURL, projectURL, showConsole, disableDevice };\n}\nfunction getConfigFromVekterURL(windowURLString = safeWindow.location.href) {\n  if (!windowURLString) {\n    throw new Error(\n      `getConfigFromURL() called without url argument (location.href = \"${safeWindow.location.href}\")`\n    );\n  }\n  const hash2 = decodeURIComponent(new URL(windowURLString).hash.slice(1));\n  const [documentURL, imageBaseURL, projectURL] = hash2.split(\"#&#\");\n  return { documentURL, imageBaseURL, projectURL };\n}\n\n// ../../library/src/render/utils/gradientForShape.tsx\nfunction gradientForShape(nodeId, node) {\n  if (LinearGradient.isLinearGradient(node.fill)) {\n    return elementPropertiesForLinearGradient(node.fill, nodeId);\n  }\n  if (RadialGradient.isRadialGradient(node.fill)) {\n    return elementPropertiesForRadialGradient(node.fill, nodeId);\n  }\n  return void 0;\n}\n\n// ../../library/src/render/utils/throttle.ts\nfunction throttle(fn, time2) {\n  let previous = 0;\n  let timeout;\n  const later = (...args) => {\n    previous = Date.now();\n    timeout = void 0;\n    fn(...args);\n  };\n  return (...args) => {\n    const now = Date.now();\n    const remaining = time2 - (now - previous);\n    if (remaining <= 0 || remaining > time2) {\n      if (timeout) {\n        safeWindow.clearTimeout(timeout);\n        timeout = void 0;\n      }\n      previous = now;\n      fn(...args);\n    } else if (!timeout) {\n      timeout = safeWindow.setTimeout(later, remaining, ...args);\n    }\n  };\n}\n\n// ../../library/src/utils/addActionControls.ts\nfunction addActionControls(action, title, controls) {\n  runtime.addActionControls(action, title, controls);\n}\n\n// ../../library/src/utils/addFonts.ts\nfunction addFonts(component, fonts) {\n  Object.assign(component, { fonts });\n}\nfunction getFonts(component) {\n  const fonts = component.fonts;\n  return fonts || [];\n}\n\n// ../../library/src/utils/network.ts\nfunction loadJSON(url) {\n  return fetch(url, { mode: \"cors\" }).then((res) => res.json());\n}\n\n// ../../library/src/utils/inspectObjectType.ts\nfunction inspectObjectType(item) {\n  let className;\n  if ((item.constructor !== null ? item.constructor.name : void 0) !== null && (item.constructor !== null ? item.constructor.name : void 0) !== \"Object\") {\n    return item.constructor.name;\n  }\n  const extract = function(str) {\n    if (!str) {\n      return null;\n    }\n    const regex2 = /\\[object (\\w+)\\]/;\n    const match = regex2.exec(str);\n    if (match) {\n      return match[1];\n    }\n    return null;\n  };\n  if (item.toString) {\n    className = extract(item.toString());\n    if (className) {\n      return className;\n    }\n  }\n  if (item.constructor !== null ? item.constructor.toString : void 0) {\n    className = extract(item.constructor !== null ? item.constructor.toString() : void 0);\n    if (className) {\n      return className.replace(\"Constructor\", \"\");\n    }\n  }\n  return \"Object\";\n}\n\n// ../../library/src/utils/inspect.ts\nfunction inspect(item, max, l) {\n  if (max === void 0) {\n    max = 5;\n  }\n  if (l === void 0) {\n    l = 0;\n  }\n  if (item === null) {\n    return \"null\";\n  }\n  if (item === void 0) {\n    return \"undefined\";\n  }\n  if (isFunction(item.toInspect)) {\n    return item.toInspect();\n  }\n  if (isString3(item)) {\n    return `\"${item}\"`;\n  }\n  if (isNumber(item)) {\n    return `${item}`;\n  }\n  if (isFunction(item)) {\n    let code = item.toString().slice(\"function \".length).replace(/\\n/g, \"\").replace(/\\s+/g, \" \");\n    const limit = 50;\n    if (code.length > limit && l > 0) {\n      code = `${code.slice(0, +limit + 1 || void 0).trim()}\\u2026 }`;\n    }\n    return `<Function ${code}>`;\n  }\n  if (isArray(item)) {\n    if (l > max) {\n      return \"[...]\";\n    }\n    return `[${item.map((i) => inspect(i, max, (l || 0) + 1)).join(\", \")}]`;\n  }\n  if (isObject2(item)) {\n    let objectInfo;\n    const objectType = inspectObjectType(item);\n    if (/HTML\\w+?Element/.test(objectType)) {\n      return `<${objectType}>`;\n    }\n    if (l > max) {\n      objectInfo = \"{...}\";\n    } else {\n      const itemKeys = Object.keys(item);\n      objectInfo = `{${itemKeys.map((k) => `${k}:${inspect(item[k], max, (l || 0) + 1)}`).join(\", \")}}`;\n    }\n    if (objectType === \"Object\") {\n      return objectInfo;\n    }\n    return `<${objectType} ${objectInfo}>`;\n  }\n  return `${item}`;\n}\n\n// ../../library/src/utils/print.ts\nfunction print(...args) {\n  const line = args.map((arg) => {\n    return inspect(arg);\n  }).join(\", \");\n  console.log(line);\n}\n\n// ../../library/src/utils/useInitialRouteComponent.ts\nimport { useEffect as useEffect10, useState as useState2 } from \"react\";\nfunction initialRoutComponent(component) {\n  if (!component)\n    return null;\n  if (withPreload(component))\n    return null;\n  return component;\n}\nfunction useInitialRouteComponent(routes, homeNodeId) {\n  var _a;\n  const InitialRouteComponent = (_a = routes[homeNodeId]) == null ? void 0 : _a.page;\n  const [RouteComponent2, setRouteComponent] = useState2(\n    initialRoutComponent(InitialRouteComponent)\n  );\n  useEffect10(() => {\n    if (withPreload(InitialRouteComponent)) {\n      InitialRouteComponent.preload().then(setRouteComponent);\n    }\n  }, []);\n  return RouteComponent2;\n}\n\n// ../../library/package.json\nvar package_default = {\n  name: \"framer\",\n  version: \"2.2.1\",\n  main: \"build/index.js\",\n  type: \"module\",\n  exports: {\n    \".\": \"./build/index.js\",\n    \"./package.json\": \"./package.json\",\n    \"./*\": \"./build/*\"\n  },\n  files: [\n    \"build\",\n    \"CHANGELOG.md\",\n    \"README.md\",\n    \"LICENSE.md\",\n    \"postinstall.cjs\"\n  ],\n  types: \"./build/index.d.ts\",\n  author: \"Framer\",\n  license: \"MIT\",\n  scripts: {\n    prepublishOnly: \"make build\",\n    coverage: \"yarn :jest --coverage\",\n    lint: \"yarn :eslint ./src --ext .ts,.tsx --format codeframe --quiet\",\n    \"lint:fix\": \"yarn lint --fix\",\n    test: \"yarn :jest\",\n    watch: \"yarn :jest --watch\",\n    postinstall: \"node postinstall.cjs\"\n  },\n  dependencies: {\n    \"@juggle/resize-observer\": \"^3.3.1\",\n    eventemitter3: \"^3.1.0\",\n    fontfaceobserver: \"^2.1.0\",\n    \"hoist-non-react-statics\": \"^3.3.2\",\n    hsluv: \"^0.0.3\"\n  },\n  devDependencies: {\n    \"@framerjs/router\": \"workspace:src/router\",\n    \"@testing-library/dom\": \"^8.19.1\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@testing-library/user-event\": \"^14.4.3\",\n    \"@types/google.fonts\": \"1.0.3\",\n    \"@types/hsluv\": \"https://github.com/framer/typed_hsluv#bump\",\n    \"@types/node\": \"^18.11.18\",\n    \"@types/react\": \"^18.0.26\",\n    \"@types/react-dom\": \"^18.0.10\",\n    \"@types/yargs\": \"^17.0.19\",\n    \"@typescript-eslint/eslint-plugin\": \"^5.48.0\",\n    \"@typescript-eslint/parser\": \"^5.48.0\",\n    chalk: \"^4.1.2\",\n    eslint: \"^8.31.0\",\n    immutable: \"^3.8.2\",\n    \"jest-diff\": \"^29.3.1\",\n    \"jest-junit\": \"^15.0.0\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    rollup: \"^3.9.1\",\n    \"rollup-plugin-dts\": \"^5.1.0\",\n    semver: \"^7.3.8\",\n    \"style-value-types\": \"^5.1.2\",\n    typescript: \"^4.9.4\",\n    yargs: \"^17.6.2\"\n  },\n  peerDependencies: {\n    \"framer-motion\": \"^7.6.12\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  tsdoc: {\n    tsdocFlavor: \"AEDoc\"\n  },\n  framer: {\n    components: [\n      {\n        name: \"Scroll\",\n        children: true,\n        properties: [\n          {\n            key: \"direction\",\n            title: \"Direction\",\n            kind: \"enum\",\n            options: [\n              \"horizontal\",\n              \"vertical\",\n              \"both\"\n            ]\n          }\n        ]\n      },\n      {\n        name: \"Page\"\n      }\n    ]\n  }\n};\n\n// ../../library/src/version.ts\nvar { version } = package_default;\n\n// ../../library/src/animation/Motion/addChildHack.ts\nMotionValue.prototype.addChild = function({ transformer = (v) => v }) {\n  const child = motionValue(transformer(this.get()));\n  this.onChange((v) => child.set(transformer(v)));\n  return child;\n};\n\n// ../../library/src/indexInternal.ts\nif (void 0 === \"framer\") {\n  MainLoop.start();\n}\nexport {\n  AnchorLinkTarget,\n  Animatable,\n  AnimatePresence,\n  AnimateSharedLayout,\n  AnimationType,\n  AnyInterpolation,\n  AutomaticLayoutIds,\n  BackgroundImage,\n  BezierAnimator,\n  BoxShadow,\n  CanvasStore,\n  Color,\n  ColorFormat,\n  ColorMixModelType,\n  ComponentContainerContext,\n  ConstraintMask,\n  ConstraintValues,\n  Container,\n  ControlType,\n  ConvertColor,\n  CustomProperties,\n  CustomPropertiesContext,\n  CycleVariantState,\n  DOM,\n  Data,\n  DataContext,\n  DataObserver,\n  DataObserverContext,\n  DeprecatedComponentContainer,\n  DeprecatedFrameWithEvents,\n  DeprecatedLayoutGroupContext,\n  Device,\n  DeviceCodeComponent,\n  DimensionType,\n  DragControls,\n  Draggable,\n  EmptyState,\n  ErrorPlaceholder,\n  FlatTree,\n  Frame,\n  FrameWithMotion,\n  FramerAnimation,\n  FramerEvent,\n  FramerEventListener,\n  FramerEventSession,\n  GamepadContext,\n  GeneratedComponentContext,\n  Image2 as Image,\n  InternalID,\n  Layer,\n  LayoutGroup,\n  DeprecatedLayoutGroupContext as LayoutGroupContext,\n  LayoutIdContext,\n  LazyMotion,\n  Line,\n  LinearGradient,\n  Link,\n  MainLoop,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionSetup,\n  MotionValue,\n  NavigateTo,\n  NavigationWrapper as Navigation,\n  NavigationCallbackProvider,\n  NavigationConsumer,\n  NavigationTransitionType,\n  NotFoundError,\n  ObservableObject,\n  Page3 as Page,\n  PageRoot,\n  ParentSizeState,\n  PathSegment,\n  PathVariablesContext,\n  Point,\n  PresenceContext,\n  PropertyOverrides,\n  PropertyStore,\n  RadialGradient,\n  Rect,\n  RenderNodeProvider,\n  RenderTarget,\n  Reorder,\n  RichText,\n  SSRVariants,\n  SVG,\n  Scroll,\n  Shadow,\n  Size,\n  SpringAnimator,\n  Stack,\n  StyleSheetContext,\n  SwitchLayoutGroupContext,\n  Text,\n  TypefaceSourceNames,\n  ValueInterpolation,\n  VariantSelector,\n  Vector,\n  VectorGroup,\n  VisualElement,\n  WindowContext,\n  WithNavigator,\n  WithOverride,\n  _injectRuntime,\n  addActionControls,\n  addFonts,\n  addPointerEvent,\n  addPointerInfo,\n  addPropertyControls,\n  addScaleCorrector,\n  animate2 as animate,\n  animateVisualElement,\n  animationControls,\n  animations,\n  annotateTypeOnStringify,\n  anticipate,\n  backIn,\n  backInOut,\n  backOut,\n  backgroundImageFromProps,\n  buildTransform,\n  calcLength,\n  calculateRect,\n  callEach,\n  checkTargetForNewValues,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  collectVisualStyleFromProps,\n  combinedCSSRulesForPreview,\n  constraintsEnabled,\n  convertPresentationTree,\n  convertPropsToDeviceOptions,\n  createBox,\n  createData,\n  createDesignComponent,\n  createDomMotionComponent,\n  createFramerPageLink,\n  createMotionComponent,\n  cssBackgroundSize,\n  cubicBezier,\n  cx,\n  debounce,\n  defaultDeviceProps,\n  delay,\n  devicePresets,\n  dispatchKeyDownEvent,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  easeIn,\n  easeInOut,\n  easeOut,\n  environment,\n  executeInRenderEnvironment,\n  filterProps,\n  finiteNumber,\n  fontStore,\n  forceLayerBackingWithCSSProperties,\n  fraction,\n  frameData,\n  frameFromElement,\n  frameFromElements,\n  framerAppearAnimationScriptKey,\n  framerAppearEffects,\n  framerAppearIdKey,\n  framerAppearTransformTemplateToken,\n  getComponentSize,\n  getConfigFromPreviewURL,\n  getConfigFromPreviewURL as getConfigFromURL,\n  getConfigFromVekterURL,\n  getDevicePreset,\n  getFonts,\n  getMeasurableCodeComponentChildren,\n  getMergedConstraintsProps,\n  getPropertyControls,\n  gradientForShape,\n  imagePatternPropsForFill,\n  imageUrlForAsset,\n  inferInitialRouteFromPath,\n  injectComponentCSSRules,\n  installFlexboxGapWorkaroundIfNeeded,\n  isAnimatable,\n  isBrowser,\n  isDesignDefinition,\n  isDragActive,\n  isEqual,\n  isFiniteNumber,\n  isFractionDimension,\n  isFramerGamepadKeydownData,\n  isFramerPageLink,\n  isGapEnabled,\n  isMotionComponent,\n  isMotionValue2 as isMotionValue,\n  isOfAnnotatedType,\n  isOverride,\n  isReactDefinition,\n  isShallowEqualArray,\n  isStraightCurve,\n  isValidMotionProp,\n  lazy,\n  loadFont,\n  loadJSON,\n  localPackageFallbackIdentifier,\n  localShadowFrame,\n  m,\n  makePaddingString,\n  makeUseVisualState,\n  memoize2 as memoize,\n  mix,\n  modulate,\n  motion,\n  motionValue,\n  optimizeAppear,\n  optimizeAppearTransformTemplate,\n  optimizedAppearDataAttribute,\n  paddingFromProps,\n  parseFramerPageLink,\n  parseVariant,\n  pathDefaults,\n  pipe,\n  print,\n  propsForLink,\n  removeHiddenBreakpointLayers,\n  resolveLink,\n  resolveMotionValue,\n  roundWithOffset,\n  roundedNumber,\n  roundedNumberString,\n  serverURL,\n  setGlobalRenderEnvironment,\n  sharedSVGManager,\n  shouldOpenLinkInNewTab,\n  spring,\n  startAnimation,\n  startOptimizedAppearAnimation,\n  sync,\n  systemTypefaceName,\n  throttle,\n  toFlexDirection,\n  toJustifyOrAlignment,\n  toSVGPath,\n  transform,\n  transformString,\n  transformTemplate,\n  unwrapMotionComponent,\n  useActiveTargetCallback,\n  useActiveVariantCallback,\n  useAddVariantProps,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useBreakpointVariants,\n  useCurrentPathVariables,\n  useCurrentRouteId,\n  useCycle,\n  useDataRecord,\n  useAnimatedState as useDeprecatedAnimatedState,\n  useInvertedScale as useDeprecatedInvertedScale,\n  useDomEvent,\n  useDragControls,\n  useElementScroll,\n  useForceUpdate,\n  useGamepad,\n  useHotkey,\n  useHydratedBreakpointVariants,\n  useInView,\n  useInitialRouteComponent,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsInCurrentNavigationTarget,\n  useIsOnFramerCanvas,\n  useIsPresent,\n  useIsomorphicLayoutEffect,\n  useMeasureLayout,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  useNavigate,\n  useNavigation,\n  useObserveData,\n  useOnAppear,\n  useOnCurrentTargetChange,\n  useOnVariantChange,\n  useOverlayState,\n  usePresence,\n  usePrototypeNavigate,\n  useProvidedWindow,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useRenderEnvironment,\n  useResetProjection,\n  useRoute,\n  useRouteAnchor,\n  useRouteElementId,\n  useRouteHandler,\n  useRouter,\n  useScroll,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVariantState,\n  useVelocity,\n  useViewportScroll,\n  useVisualElementContext,\n  useWillChange,\n  valueToDimensionType,\n  version,\n  withCSS,\n  withFX,\n  withGeneratedLayoutId,\n  withMeasuredSize,\n  withOpacity,\n  withParallaxTransform,\n  withPath,\n  withShape,\n  withStyleAppearEffect,\n  withVariantAppearEffect,\n  wrap\n};\n/**\n * @license Emotion v11.0.0\n * MIT License\n *\n * Copyright (c) Emotion team and other contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n/*! Bundled license information:\n\nreact-is/cjs/react-is.production.min.js:\n  (** @license React v16.13.1\n   * react-is.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n*/\n//# sourceMappingURL=framer.SNKC76OU.js.map\n"],
  "mappings": "yDAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,cAAAE,GAAA,cAAAC,GAAA,aAAAC,GAAA,aAAAC,GAAA,kBAAAC,GAAA,eAAAC,GAAA,aAAAC,GAAA,uDAAAC,GAAA,iBAAAC,GAAA,kBAAAC,GAAA,kBAAAC,EAAA,kBAAAC,GAAA,cAAAC,GAAA,YAAAC,EAAA,eAAAC,GAAA,mBAAAC,GAAA,SAAAC,GAAA,SAAAC,GAAA,oBAAAC,GAAA,iBAAAC,GAAA,gBAAAC,GAAA,eAAAC,EAAA,kBAAAC,GAAA,qBAAAC,GAAA,cAAAC,EAAA,UAAAC,GAAA,wBAAAC,GAAA,uBAAAC,GAAA,oBAAAC,GAAA,YAAAC,EAAA,eAAAC,GAAA,WAAAC,EAAA,aAAAC,GAAA,yBAAAC,GAAA,kBAAAC,GAAA,YAAAC,KAAA,IAAIC,EAAE,CAAC,EAAMC,GAAE,OAAO,IAAI,eAAe,EAAEC,GAAE,OAAO,IAAI,cAAc,EAAEC,GAAE,OAAO,IAAI,gBAAgB,EAAEC,GAAE,OAAO,IAAI,mBAAmB,EAAEC,GAAE,OAAO,IAAI,gBAAgB,EAAEC,GAAE,OAAO,IAAI,gBAAgB,EAAEC,GAAE,OAAO,IAAI,eAAe,EAAEC,GAAE,OAAO,IAAI,mBAAmB,EAAEC,GAAE,OAAO,IAAI,gBAAgB,EAAEC,GAAE,OAAO,IAAI,YAAY,EAAEC,GAAE,OAAO,IAAI,YAAY,EAAEC,GAAE,OAAO,SAAS,SAASC,GAAE,EAAE,CAAC,OAAU,IAAP,MAAqB,OAAO,GAAlB,SAA2B,MAAK,EAAED,IAAG,EAAEA,KAAI,EAAE,cAAiC,OAAO,GAApB,WAAsB,EAAE,KAAI,CAAC,IAAIE,GAAE,CAAC,UAAU,UAAU,CAAC,MAAM,EAAE,EAAE,mBAAmB,UAAU,CAAC,EAAE,oBAAoB,UAAU,CAAC,EAAE,gBAAgB,UAAU,CAAC,CAAC,EAAEC,GAAE,OAAO,OAAOC,GAAE,CAAC,EAAE,SAASC,GAAE,EAAE,EAAE,EAAE,CAAC,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAKD,GAAE,KAAK,QAAQ,GAAGF,EAAC,CAACG,GAAE,UAAU,iBAAiB,CAAC,EAAEA,GAAE,UAAU,SAAS,SAAS,EAAE,EAAE,CAAC,GAAc,OAAO,GAAlB,UAAkC,OAAO,GAApB,YAA6B,GAAN,KAAQ,MAAM,MAAM,uHAAuH,EAAE,KAAK,QAAQ,gBAAgB,KAAK,EAAE,EAAE,UAAU,CAAC,EAAEA,GAAE,UAAU,YAAY,SAAS,EAAE,CAAC,KAAK,QAAQ,mBAAmB,KAAK,EAAE,aAAa,CAAC,EAAE,SAASC,IAAG,CAAC,CAACA,GAAE,UAAUD,GAAE,UAAU,SAASE,GAAE,EAAE,EAAE,EAAE,CAAC,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAKH,GAAE,KAAK,QAAQ,GAAGF,EAAC,CAAC,IAAIM,GAAED,GAAE,UAAU,IAAID,GAAEE,GAAE,YAAYD,GAAEJ,GAAEK,GAAEH,GAAE,SAAS,EAAEG,GAAE,qBAAqB,GAAG,IAAIC,GAAE,MAAM,QAAQC,GAAE,OAAO,UAAU,eAAeC,GAAE,CAAC,QAAQ,IAAI,EAAEC,GAAE,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,EAAE,EAAE,SAASC,GAAE,EAAEvB,EAAEC,EAAE,CAAC,IAAIC,EAAEC,EAAE,CAAC,EAAEC,EAAE,KAAKC,EAAE,KAAK,GAASL,GAAN,KAAQ,IAAIE,KAAcF,EAAE,MAAX,SAAiBK,EAAEL,EAAE,KAAcA,EAAE,MAAX,SAAiBI,EAAE,GAAGJ,EAAE,KAAKA,EAAEoB,GAAE,KAAKpB,EAAEE,CAAC,GAAG,CAACoB,GAAE,eAAepB,CAAC,IAAIC,EAAED,GAAGF,EAAEE,IAAI,IAAII,EAAE,UAAU,OAAO,EAAE,GAAOA,IAAJ,EAAMH,EAAE,SAASF,UAAU,EAAEK,EAAE,CAAC,QAAQC,EAAE,MAAMD,CAAC,EAAEE,EAAE,EAAEA,EAAEF,EAAEE,IAAID,EAAEC,GAAG,UAAUA,EAAE,GAAGL,EAAE,SAASI,CAAC,CAAC,GAAG,GAAG,EAAE,aAAa,IAAIL,KAAKI,EAAE,EAAE,aAAaA,EAAWH,EAAED,KAAX,SAAgBC,EAAED,GAAGI,EAAEJ,IAAI,MAAM,CAAC,SAASH,GAAE,KAAK,EAAE,IAAIK,EAAE,IAAIC,EAAE,MAAMF,EAAE,OAAOkB,GAAE,OAAO,CAAC,CAAC,SAASG,GAAE,EAAExB,EAAE,CAAC,MAAM,CAAC,SAASD,GAAE,KAAK,EAAE,KAAK,IAAIC,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,MAAM,OAAO,EAAE,MAAM,CAAC,CAAC,SAASyB,GAAE,EAAE,CAAC,OAAiB,OAAO,GAAlB,UAA4B,IAAP,MAAU,EAAE,WAAW1B,EAAC,CAAC,SAAS2B,GAAO,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,MAAM,IAAI,EAAE,QAAQ,QAAS,SAAS5B,EAAE,CAAC,OAAO,EAAEA,EAAE,CAAE,CAAC,CAAC,IAAI6B,GAAE,OAAO,SAASC,GAAE,EAAE,EAAE,CAAC,OAAiB,OAAO,GAAlB,UAA4B,IAAP,MAAgB,EAAE,KAAR,KAAYF,GAAO,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,SAASG,GAAE,EAAE5B,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAIC,EAAE,OAAO,EAAgBA,IAAd,aAA6BA,IAAZ,YAAgB,EAAE,MAAM,IAAIC,EAAE,GAAG,GAAU,IAAP,KAASA,EAAE,OAAQ,QAAOD,EAAE,CAAC,IAAI,SAAS,IAAI,SAASC,EAAE,GAAG,MAAM,IAAI,SAAS,OAAO,EAAE,SAAS,CAAC,KAAKP,GAAE,KAAKC,GAAEM,EAAE,EAAE,CAAC,CAAC,GAAGA,EAAE,OAAOA,EAAE,EAAEF,EAAEA,EAAEE,CAAC,EAAE,EAAOH,IAAL,GAAO,IAAIyB,GAAEtB,EAAE,CAAC,EAAEH,EAAEgB,GAAEf,CAAC,GAAGF,EAAE,GAAS,GAAN,OAAUA,EAAE,EAAE,QAAQyB,GAAE,KAAK,EAAE,KAAKE,GAAEzB,EAAEH,EAAEC,EAAE,GAAI,SAASJ,EAAE,CAAC,OAAOA,CAAC,CAAE,GAASM,GAAN,OAAUqB,GAAErB,CAAC,IAAIA,EAAEoB,GAAEpB,EAAEF,GAAG,CAACE,EAAE,KAAKE,GAAGA,EAAE,MAAMF,EAAE,IAAI,IAAI,GAAGA,EAAE,KAAK,QAAQuB,GAAE,KAAK,EAAE,KAAK,CAAC,GAAG1B,EAAE,KAAKG,CAAC,GAAG,EAAyB,GAAvBE,EAAE,EAAEH,EAAOA,IAAL,GAAO,IAAIA,EAAE,IAAOgB,GAAE,CAAC,EAAE,QAAQZ,EAAE,EAAEA,EAAE,EAAE,OAAOA,IAAI,CAACF,EAAE,EAAEE,GAAG,IAAIC,EAAEL,EAAEyB,GAAEvB,EAAEE,CAAC,EAAED,GAAGuB,GAAExB,EAAEJ,EAAEC,EAAEM,EAAEJ,CAAC,CAAC,SAASI,EAAEG,GAAE,CAAC,EAAe,OAAOH,GAApB,WAAsB,IAAI,EAAEA,EAAE,KAAK,CAAC,EAAED,EAAE,EAAE,EAAEF,EAAE,EAAE,KAAK,GAAG,MAAMA,EAAEA,EAAE,MAAMG,EAAEL,EAAEyB,GAAEvB,EAAEE,GAAG,EAAED,GAAGuB,GAAExB,EAAEJ,EAAEC,EAAEM,EAAEJ,CAAC,UAAqBC,IAAX,SAAa,MAAMJ,EAAE,OAAO,CAAC,EAAE,MAAM,mDAAuEA,IAApB,kBAAsB,qBAAqB,OAAO,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,IAAIA,GAAG,2EAA2E,EAAE,OAAOK,CAAC,CAAC,SAASwB,GAAE,EAAE,EAAE,EAAE,CAAC,GAAS,GAAN,KAAQ,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE5B,EAAE,EAAE,OAAA2B,GAAE,EAAE,EAAE,GAAG,GAAI,SAAS/B,EAAE,CAAC,OAAO,EAAE,KAAK,EAAEA,EAAEI,GAAG,CAAC,CAAE,EAAS,CAAC,CAAC,SAAS6B,GAAE,EAAE,CAAC,GAAQ,EAAE,UAAP,GAAe,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAM,SAAShC,EAAE,CAAK,EAAE,UAAN,GAAoB,EAAE,UAAP,KAAiB,EAAE,QAAQ,EAAE,EAAE,QAAQA,EAAE,EAAI,SAASA,EAAE,CAAK,EAAE,UAAN,GAAoB,EAAE,UAAP,KAAiB,EAAE,QAAQ,EAAE,EAAE,QAAQA,EAAE,CAAE,EAAO,EAAE,UAAP,KAAiB,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAO,EAAE,UAAN,EAAc,OAAO,EAAE,QAAQ,QAAQ,MAAM,EAAE,OAAO,CAAC,IAAIiC,GAAE,CAAC,QAAQ,IAAI,EAAEC,GAAE,CAAC,WAAW,IAAI,EAAEC,GAAE,CAAC,uBAAuBF,GAAE,wBAAwBC,GAAE,kBAAkBZ,EAAC,EAAEvB,EAAE,SAAS,CAAC,IAAIgC,GAAE,QAAQ,SAAS,EAAE,EAAE,EAAE,CAACA,GAAE,EAAG,UAAU,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,EAAG,CAAC,CAAC,EAAE,MAAM,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,OAAAA,GAAE,EAAG,UAAU,CAAC,GAAG,CAAE,EAAS,CAAC,EAAE,QAAQ,SAAS,EAAE,CAAC,OAAOA,GAAE,EAAG,SAAShC,EAAE,CAAC,OAAOA,CAAC,CAAE,GAAG,CAAC,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC,GAAG,CAAC2B,GAAE,CAAC,EAAE,MAAM,MAAM,uEAAuE,EAAE,OAAO,CAAC,CAAC,EAAE3B,EAAE,UAAUiB,GAAEjB,EAAE,SAASG,GAAEH,EAAE,SAASK,GAAEL,EAAE,cAAcmB,GAAEnB,EAAE,WAAWI,GAAEJ,EAAE,SAASS,GAAET,EAAE,mDAAmDoC,GAAEpC,EAAE,aAAa,SAAS,EAAEE,EAAEC,EAAE,CAAC,GAAU,GAAP,KAAqB,MAAM,MAAM,iFAAiF,EAAE,GAAG,EAAE,IAAIC,EAAEW,GAAE,CAAC,EAAE,EAAE,KAAK,EAAEV,EAAE,EAAE,IAAIC,EAAE,EAAE,IAAIC,EAAE,EAAE,OAAO,GAASL,GAAN,KAAQ,CAAoE,GAA1DA,EAAE,MAAX,SAAiBI,EAAEJ,EAAE,IAAIK,EAAEgB,GAAE,SAAkBrB,EAAE,MAAX,SAAiBG,EAAE,GAAGH,EAAE,KAAQ,EAAE,MAAM,EAAE,KAAK,aAAa,IAAIM,EAAE,EAAE,KAAK,aAAa,IAAIC,KAAKP,EAAEoB,GAAE,KAAKpB,EAAEO,CAAC,GAAG,CAACe,GAAE,eAAef,CAAC,IAAIL,EAAEK,GAAYP,EAAEO,KAAX,QAAwBD,IAAT,OAAWA,EAAEC,GAAGP,EAAEO,GAAG,CAAC,IAAIA,EAAE,UAAU,OAAO,EAAE,GAAOA,IAAJ,EAAML,EAAE,SAASD,UAAU,EAAEM,EAAE,CAACD,EAAE,MAAMC,CAAC,EAAE,QAAQC,EAAE,EAAEA,EAAED,EAAEC,IAAIF,EAAEE,GAAG,UAAUA,EAAE,GAAGN,EAAE,SAASI,CAAC,CAAC,MAAM,CAAC,SAASP,GAAE,KAAK,EAAE,KAAK,IAAII,EAAE,IAAIC,EAAE,MAAMF,EAAE,OAAOG,CAAC,CAAC,EAAEP,EAAE,cAAc,SAAS,EAAE,CAAC,SAAE,CAAC,SAASO,GAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,KAAK,SAAS,KAAK,cAAc,KAAK,YAAY,IAAI,EAAE,EAAE,SAAS,CAAC,SAASD,GAAE,SAAS,CAAC,EAAS,EAAE,SAAS,CAAC,EAAEN,EAAE,cAAcyB,GAAEzB,EAAE,cAAc,SAAS,EAAE,CAAC,IAAI,EAAEyB,GAAE,KAAK,KAAK,CAAC,EAAE,SAAE,KAAK,EAAS,CAAC,EAAEzB,EAAE,UAAU,UAAU,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,EAAEA,EAAE,WAAW,SAAS,EAAE,CAAC,MAAM,CAAC,SAASQ,GAAE,OAAO,CAAC,CAAC,EAAER,EAAE,eAAe2B,GAAE3B,EAAE,KAAK,SAAS,EAAE,CAAC,MAAM,CAAC,SAASW,GAAE,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,MAAMsB,EAAC,CAAC,EAAEjC,EAAE,KAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAASU,GAAE,KAAK,EAAE,QAAiB,IAAT,OAAW,KAAK,CAAC,CAAC,EAAEV,EAAE,gBAAgB,SAAS,EAAE,CAAC,IAAI,EAAEmC,GAAE,WAAWA,GAAE,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,QAAC,CAAQA,GAAE,WAAW,CAAC,CAAC,EAAEnC,EAAE,aAAa,UAAU,CAAC,MAAM,MAAM,0DAA0D,CAAC,EAAEA,EAAE,YAAY,SAAS,EAAE,EAAE,CAAC,OAAOkC,GAAE,QAAQ,YAAY,EAAE,CAAC,CAAC,EAAElC,EAAE,WAAW,SAAS,EAAE,CAAC,OAAOkC,GAAE,QAAQ,WAAW,CAAC,CAAC,EAAElC,EAAE,cAAc,UAAU,CAAC,EAAEA,EAAE,iBAAiB,SAAS,EAAE,CAAC,OAAOkC,GAAE,QAAQ,iBAAiB,CAAC,CAAC,EAAElC,EAAE,UAAU,SAAS,EAAE,EAAE,CAAC,OAAOkC,GAAE,QAAQ,UAAU,EAAE,CAAC,CAAC,EAAElC,EAAE,MAAM,UAAU,CAAC,OAAOkC,GAAE,QAAQ,MAAM,CAAC,EAAElC,EAAE,oBAAoB,SAAS,EAAE,EAAE,EAAE,CAAC,OAAOkC,GAAE,QAAQ,oBAAoB,EAAE,EAAE,CAAC,CAAC,EAAElC,EAAE,mBAAmB,SAAS,EAAE,EAAE,CAAC,OAAOkC,GAAE,QAAQ,mBAAmB,EAAE,CAAC,CAAC,EAAElC,EAAE,gBAAgB,SAAS,EAAE,EAAE,CAAC,OAAOkC,GAAE,QAAQ,gBAAgB,EAAE,CAAC,CAAC,EAAElC,EAAE,QAAQ,SAAS,EAAE,EAAE,CAAC,OAAOkC,GAAE,QAAQ,QAAQ,EAAE,CAAC,CAAC,EAAElC,EAAE,WAAW,SAAS,EAAE,EAAE,EAAE,CAAC,OAAOkC,GAAE,QAAQ,WAAW,EAAE,EAAE,CAAC,CAAC,EAAElC,EAAE,OAAO,SAAS,EAAE,CAAC,OAAOkC,GAAE,QAAQ,OAAO,CAAC,CAAC,EAAElC,EAAE,SAAS,SAAS,EAAE,CAAC,OAAOkC,GAAE,QAAQ,SAAS,CAAC,CAAC,EAAElC,EAAE,qBAAqB,SAAS,EAAE,EAAE,EAAE,CAAC,OAAOkC,GAAE,QAAQ,qBAAqB,EAAE,EAAE,CAAC,CAAC,EAAElC,EAAE,cAAc,UAAU,CAAC,OAAOkC,GAAE,QAAQ,cAAc,CAAC,EAAElC,EAAE,QAAQ,SAAS,IAAMqC,GAAErC,EAAE,SAASsC,GAAEtC,EAAE,UAAUuC,GAAEvC,EAAE,SAASwC,GAAExC,EAAE,SAASyC,GAAEzC,EAAE,cAAc0C,GAAE1C,EAAE,WAAW2C,GAAE3C,EAAE,SAAS4C,GAAE5C,EAAE,mDAAmD6C,GAAE7C,EAAE,aAAa8C,GAAE9C,EAAE,cAAc+C,EAAE/C,EAAE,cAAcgD,GAAEhD,EAAE,cAAciD,GAAEjD,EAAE,UAAUkD,GAAElD,EAAE,WAAWmD,GAAEnD,EAAE,eAAeoD,GAAEpD,EAAE,KAAKqD,GAAErD,EAAE,KAAKsD,GAAEtD,EAAE,gBAAgBuD,GAAGvD,EAAE,aAAawD,GAAGxD,EAAE,YAAYyD,EAAGzD,EAAE,WAAW0D,GAAG1D,EAAE,cAAc2D,GAAG3D,EAAE,iBAAiB4D,EAAG5D,EAAE,UAAU6D,GAAG7D,EAAE,MAAM8D,GAAG9D,EAAE,oBAAoB+D,GAAG/D,EAAE,mBAAmBgE,GAAGhE,EAAE,gBAAgBiE,EAAGjE,EAAE,QAAQkE,GAAGlE,EAAE,WAAWmE,EAAGnE,EAAE,OAAOoE,GAAGpE,EAAE,SAASqE,GAAGrE,EAAE,qBAAqBsE,GAAGtE,EAAE,cAAcuE,GAAGvE,EAAE,QCA15N,IAAIwE,GAAW,OAAO,OAClBC,GAAY,OAAO,eACnBC,GAAmB,OAAO,yBAC1BC,GAAoB,OAAO,oBAC3BC,GAAe,OAAO,eACtBC,GAAe,OAAO,UAAU,eAChCC,GAAa,CAACC,EAAIC,IAAQ,UAAqB,CACjD,OAAOA,MAAWD,EAAGJ,GAAkBI,CAAE,EAAE,MAAMC,EAAM,CAAE,QAAS,CAAC,CAAE,GAAG,QAASA,CAAG,EAAGA,EAAI,OAC7F,EACIC,GAAc,CAACC,EAAIC,EAAMC,EAAQC,IAAS,CAC5C,GAAIF,GAAQ,OAAOA,GAAS,UAAY,OAAOA,GAAS,WACtD,QAASG,KAAOX,GAAkBQ,CAAI,EAChC,CAACN,GAAa,KAAKK,EAAII,CAAG,GAAKA,IAAQF,GACzCX,GAAUS,EAAII,EAAK,CAAE,IAAK,IAAMH,EAAKG,GAAM,WAAY,EAAED,EAAOX,GAAiBS,EAAMG,CAAG,IAAMD,EAAK,UAAW,CAAC,EAEvH,OAAOH,CACT,EACIK,GAAU,CAACP,EAAKQ,EAAYC,KAAYA,EAAST,GAAO,KAAOR,GAASI,GAAaI,CAAG,CAAC,EAAI,CAAC,EAAGC,GACnGO,GAAc,CAACR,GAAO,CAACA,EAAI,WAAaP,GAAUgB,EAAQ,UAAW,CAAE,MAAOT,EAAK,WAAY,EAAK,CAAC,EAAIS,EACzGT,CACF,GACIU,GAAgB,CAACC,EAAKC,EAAQC,IAAQ,CACxC,GAAI,CAACD,EAAO,IAAID,CAAG,EACjB,MAAM,UAAU,UAAYE,CAAG,CACnC,EACIC,GAAe,CAACH,EAAKC,EAAQG,KAC/BL,GAAcC,EAAKC,EAAQ,yBAAyB,EAC7CG,EAASA,EAAO,KAAKJ,CAAG,EAAIC,EAAO,IAAID,CAAG,GAE/CK,GAAe,CAACL,EAAKC,EAAQK,IAAU,CACzC,GAAIL,EAAO,IAAID,CAAG,EAChB,MAAM,UAAU,mDAAmD,EACrEC,aAAkB,QAAUA,EAAO,IAAID,CAAG,EAAIC,EAAO,IAAID,EAAKM,CAAK,CACrE,EACIC,GAAe,CAACP,EAAKC,EAAQK,EAAOE,KACtCT,GAAcC,EAAKC,EAAQ,wBAAwB,EACnDO,EAASA,EAAO,KAAKR,EAAKM,CAAK,EAAIL,EAAO,IAAID,EAAKM,CAAK,EACjDA,GAILG,GAA8BtB,GAAW,CAC3C,qEAAqEuB,EAAS,CAC5E,aACA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,SAASC,EAAQC,EAAI,CACnB,IAAIC,EAAQ,CAAC,EACb,OAAO,SAASC,EAAK,CACnB,OAAID,EAAMC,KAAS,SACjBD,EAAMC,GAAOF,EAAGE,CAAG,GACdD,EAAMC,EACf,CACF,CACAJ,EAAQ,QAAUC,CACpB,CACF,CAAC,EAGGI,GAAoC5B,GAAW,CACjD,iFAAiFuB,EAAS,CACxF,aACA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,SAASM,EAAgBC,EAAI,CAC3B,OAAOA,GAAM,OAAOA,GAAO,UAAY,YAAaA,EAAKA,EAAG,QAAaA,CAC3E,CACA,IAAIN,EAAUK,EAAgBP,GAA4B,CAAC,EACvDS,EAAkB,45HAClBC,EAAQR,EACV,SAASS,EAAM,CACb,OAAOF,EAAgB,KAAKE,CAAI,GAAKA,EAAK,WAAW,CAAC,IAAM,KAAOA,EAAK,WAAW,CAAC,IAAM,KAAOA,EAAK,WAAW,CAAC,EAAI,EACxH,CACF,EACAV,EAAQ,QAAUS,CACpB,CACF,CAAC,EAIGE,GAAsBC,GAAc,CACtC,mBAAqBC,GAAMA,EAC3B,SAAU,GACV,cAAe,OACjB,CAAC,EAIGC,GAAgBF,GAAe,CAAC,CAAC,EACrC,SAASG,IAA0B,CACjC,OAAOC,EAAWF,EAAa,EAAE,aACnC,CAIA,IAAIG,GAAkBL,GAAe,IAAI,EAGrCM,GAAY,OAAO,SAAa,IAIhCC,GAA4BD,GAAYE,GAAkBC,EAI1DC,GAAqBV,GAAe,CAAC,CAAC,EAItCW,GAA2BX,GAAe,CAAC,CAAC,EAW5CY,GAAcZ,GAAe,CAAE,OAAQ,EAAM,CAAC,EAGlD,SAASa,GAAiBC,EAAYC,EAAaC,EAAOC,EAAqB,CAC7E,IAAMC,EAASf,GAAwB,EACjCgB,EAAcf,EAAYQ,EAAW,EACrCQ,EAAkBhB,EAAYC,EAAe,EAC7CgB,EAAsBjB,EAAYL,EAAmB,EAAE,cACvDuB,EAAmBC,EAAO,EAChCN,EAAsBA,GAAuBE,EAAY,SACrD,CAACG,EAAiB,SAAWL,IAC/BK,EAAiB,QAAUL,EAAoBH,EAAY,CACzD,YAAAC,EACA,OAAAG,EACA,MAAAF,EACA,WAAYI,EAAkBA,EAAgB,GAAK,OACnD,sBAAuBA,EAAkBA,EAAgB,UAAY,GAAQ,GAC7E,oBAAAC,CACF,CAAC,GAEH,IAAMG,EAAgBF,EAAiB,QACvC,OAAAf,GAA0B,IAAM,CAC9BiB,GAAiBA,EAAc,OAAO,CACxC,CAAC,GAC+BC,EAAO,uBAAyBlB,GAA4BE,GACpE,IAAM,CACxBe,GAAiBA,EAAc,gBACjCA,EAAc,eAAe,eAAe,CAEhD,CAAC,EACMA,CACT,CAMA,SAASE,GAAYC,EAAK,CACxB,OAAO,OAAOA,GAAQ,UAAY,OAAO,UAAU,eAAe,KAAKA,EAAK,SAAS,CACvF,CAGA,SAASC,GAAab,EAAaS,EAAeK,EAAa,CAC7D,OAAOC,GACJC,GAAa,CACZA,GAAYhB,EAAY,OAASA,EAAY,MAAMgB,CAAQ,EACvDP,IACFO,EAAWP,EAAc,MAAMO,CAAQ,EAAIP,EAAc,QAAQ,GAE/DK,IACE,OAAOA,GAAgB,WACzBA,EAAYE,CAAQ,EACXL,GAAYG,CAAW,IAChCA,EAAY,QAAUE,GAG5B,EACA,CAACP,CAAa,CAChB,CACF,CAMA,SAASQ,GAAeC,EAAG,CACzB,OAAO,OAAOA,GAAM,UAAY,MAAM,QAAQA,CAAC,CACjD,CAGA,SAASC,GAAoBD,EAAG,CAC9B,OAAO,OAAOA,GAAM,UAAY,OAAOA,EAAE,OAAU,UACrD,CAGA,IAAIE,GAAe,CACjB,UACA,UACA,OACA,aACA,YACA,WACA,aACA,aACF,EACA,SAASC,GAAsBpB,EAAO,CACpC,OAAOkB,GAAoBlB,EAAM,OAAO,GAAKmB,GAAa,KAAME,GAASL,GAAehB,EAAMqB,EAAK,CAAC,CACtG,CACA,SAASC,GAActB,EAAO,CAC5B,OAAO,QAAQoB,GAAsBpB,CAAK,GAAKA,EAAM,QAAQ,CAC/D,CAGA,SAASuB,GAAuBvB,EAAOwB,EAAS,CAC9C,GAAIJ,GAAsBpB,CAAK,EAAG,CAChC,GAAM,CAAE,QAAAyB,EAAS,QAASC,CAAS,EAAI1B,EACvC,MAAO,CACL,QAASyB,IAAY,IAAST,GAAeS,CAAO,EAAIA,EAAU,OAClE,QAAST,GAAeU,CAAQ,EAAIA,EAAW,MACjD,CACF,CACA,OAAO1B,EAAM,UAAY,GAAQwB,EAAU,CAAC,CAC9C,CAGA,SAASG,GAAuB3B,EAAO,CACrC,GAAM,CAAE,QAAAyB,EAAS,QAASC,CAAS,EAAIH,GAAuBvB,EAAOZ,EAAYF,EAAa,CAAC,EAC/F,OAAO0C,EAAQ,KAAO,CAAE,QAAAH,EAAS,QAASC,CAAS,GAAI,CAACG,GAA0BJ,CAAO,EAAGI,GAA0BH,CAAQ,CAAC,CAAC,CAClI,CACA,SAASG,GAA0B/C,EAAM,CACvC,OAAO,MAAM,QAAQA,CAAI,EAAIA,EAAK,KAAK,GAAG,EAAIA,CAChD,CAGA,IAAIgD,GAAoBC,IAAe,CACrC,UAAY/B,GAAU+B,EAAU,KAAMV,GAAS,CAAC,CAACrB,EAAMqB,EAAK,CAC9D,GACIW,GAAqB,CACvB,cAAeF,GAAiB,CAAC,SAAU,WAAY,MAAM,CAAC,EAC9D,UAAWA,GAAiB,CAC1B,UACA,OACA,WACA,aACA,WACA,aACA,YACA,aACF,CAAC,EACD,KAAMA,GAAiB,CAAC,MAAM,CAAC,EAC/B,KAAMA,GAAiB,CAAC,OAAQ,cAAc,CAAC,EAC/C,MAAOA,GAAiB,CAAC,YAAY,CAAC,EACtC,MAAOA,GAAiB,CAAC,aAAc,eAAgB,YAAY,CAAC,EACpE,IAAKA,GAAiB,CAAC,WAAY,QAAS,aAAc,aAAa,CAAC,EACxE,IAAKA,GAAiB,CACpB,QACA,aACA,oBACA,UACF,CAAC,EACD,OAAQA,GAAiB,CACvB,cACA,kBACA,iBACF,CAAC,CACH,EAGA,SAASG,GAAaC,EAAU,CAC9B,QAAW7E,KAAO6E,EACZ7E,IAAQ,4BACV2E,GAAmB,0BAA4BE,EAAS7E,GAExD2E,GAAmB3E,GAAK,UAAY6E,EAAS7E,EAGnD,CAIA,SAAS8E,GAAYC,EAAM,CACzB,IAAMzB,EAAMJ,EAAQ,IAAI,EACxB,OAAII,EAAI,UAAY,OAClBA,EAAI,QAAUyB,EAAK,GAEdzB,EAAI,OACb,CAGA,IAAI0B,GAAwB,CAC1B,uBAAwB,GACxB,eAAgB,EAClB,EAGIC,GAAK,EACT,SAASC,IAAkB,CACzB,OAAOJ,GAAY,IAAM,CACvB,GAAIE,GAAsB,eACxB,OAAOC,IAEX,CAAC,CACH,CAIA,IAAIE,GAAuB,cAAcC,EAAe,SAAU,CAChE,yBAA0B,CACxB,GAAM,CAAE,cAAAjC,EAAe,MAAAR,CAAM,EAAI,KAAK,MACtC,OAAIQ,GACFA,EAAc,SAASR,CAAK,EACvB,IACT,CACA,oBAAqB,CACrB,CACA,QAAS,CACP,OAAO,KAAK,MAAM,QACpB,CACF,EAGI0C,GAAwB,OAAO,IAAI,uBAAuB,EAG9D,SAASC,GAAsB,CAAE,kBAAAC,EAAmB,oBAAA3C,EAAqB,0BAAA4C,EAA2B,UAAAC,EAAW,eAAgBC,EAAiB,UAAWjD,CAAW,EAAG,CACvK8C,GAAqBX,GAAaW,CAAiB,EACnD,SAASI,EAAgBhD,EAAOa,EAAa,CAC3C,IAAMoC,EAAiB,CACrB,GAAG7D,EAAYL,EAAmB,EAClC,GAAGiB,EACH,SAAUkD,GAAYlD,CAAK,CAC7B,EACM,CAAE,SAAAmD,CAAS,EAAIF,EACjBf,EAAW,KACTV,EAAUG,GAAuB3B,CAAK,EACtCoD,EAAeD,EAAW,OAASZ,GAAgB,EACnDxC,EAAcgD,EAAgB/C,EAAOmD,CAAQ,EACnD,GAAI,CAACA,GAAY7D,GAAW,CAC1BkC,EAAQ,cAAgB3B,GAAiBC,EAAYC,EAAakD,EAAgBhD,CAAmB,EACrG,IAAMoD,EAAiBjE,EAAYQ,EAAW,EAAE,OAC1C0D,EAA2BlE,EAAYO,EAAwB,EACjE6B,EAAQ,gBACVU,EAAWV,EAAQ,cAAc,aAC/ByB,EACAI,EACAT,EACAQ,EACAP,GAA6Bb,GAAmB,0BAChDsB,CACF,EAEJ,CACA,OAAaC,EACXf,GACA,CAAE,cAAehB,EAAQ,cAAe,MAAOyB,CAAe,EAC9Df,EACMqB,EAAcrE,GAAc,SAAU,CAAE,MAAOsC,CAAQ,EAAGsB,EAAUhD,EAAYE,EAAOoD,EAAcxC,GAAab,EAAayB,EAAQ,cAAeX,CAAW,EAAGd,EAAaoD,EAAU3B,EAAQ,aAAa,CAAC,CACzN,CACF,CACA,IAAMgC,EAAsBC,GAAWT,CAAe,EACtD,OAAAQ,EAAoBd,IAAyB5C,EACtC0D,CACT,CACA,SAASN,GAAY,CAAE,SAAAQ,CAAS,EAAG,CACjC,IAAMC,EAAgBvE,EAAYM,EAAkB,EAAE,GACtD,OAAOiE,GAAiBD,IAAa,OAASC,EAAgB,IAAMD,EAAWA,CACjF,CAGA,IAAIE,GAAkB,CAAC,EACvB,SAASC,GAAkBC,EAAY,CACrC,OAAO,OAAOF,GAAiBE,CAAU,CAC3C,CAGA,IAAIC,GAAiB/F,GAAU,CAAC,CAAgDA,GAAM,YAGlFgG,GAAqB,CACvB,uBACA,IACA,IACA,IACA,aACA,aACA,aACA,QACA,SACA,SACA,SACA,UACA,UACA,UACA,OACA,QACA,OACF,EACIC,GAAiB,IAAI,IAAID,EAAkB,EAG3CE,GAAiB,CACnB,EAAG,aACH,EAAG,aACH,EAAG,aACH,qBAAsB,aACxB,EACIC,GAAqB,CAACC,EAAGC,IAAML,GAAmB,QAAQI,CAAC,EAAIJ,GAAmB,QAAQK,CAAC,EAC/F,SAASC,GAAe,CAAE,UAAWC,EAAY,cAAeC,CAAe,EAAG,CAAE,2BAAAC,EAA6B,GAAM,mBAAAC,EAAqB,EAAK,EAAGC,EAAoBC,EAAmB,CACzL,IAAIC,EAAkB,GACtBL,EAAe,KAAKL,EAAkB,EACtC,QAAW9G,KAAOmH,EAChBK,GAAmB,GAAGX,GAAe7G,IAAQA,KAAOkH,EAAWlH,OAEjE,OAAIoH,GAA8B,CAACF,EAAW,IAC5CM,GAAmB,iBAErBA,EAAkBA,EAAgB,KAAK,EACnCD,EACFC,EAAkBD,EAAkBL,EAAYI,EAAqB,GAAKE,CAAe,EAChFH,GAAsBC,IAC/BE,EAAkB,QAEbA,CACT,CAGA,IAAIC,GAAQ,CAACC,EAAKC,EAAK/D,IAAM,KAAK,IAAI,KAAK,IAAIA,EAAG8D,CAAG,EAAGC,CAAG,EAGvDC,GAAiB,CACnB,UACA,OACA,WACA,aACA,WACA,aACA,YACA,aACF,EACIC,GAAW,CAAC,WAAY,QAAS,aAAc,aAAa,EAC5DC,GAAW,CAAC,QAAS,aAAc,oBAAqB,UAAU,EAClEC,GAAc,CAChB,cACA,kBACA,kBACA,UACF,EACIC,GAAmC,IAAI,IAAI,CAC7C,UACA,QACA,SACA,WACA,aACA,oBACA,kBACA,SACA,UACA,SACA,WACA,mBACA,yBACA,4BACA,kBACA,wBACA,mBACA,sBACA,WACA,cACA,SACA,YACA,2BACA,kBACA,sBACA,OACA,eACA,eACA,kBACA,oBACA,mBACA,SACA,SACA,cACA,eACA,kBACA,iBACA,eACA,aACA,eACA,GAAGD,GACH,GAAGF,GACH,GAAGD,GACH,GAAGE,EACL,CAAC,EACD,SAASG,GAAkBjI,EAAK,CAC9B,OAAOgI,GAAiB,IAAIhI,CAAG,CACjC,CAGA,IAAIkI,GAAiBlI,GAAQ,CAACiI,GAAkBjI,CAAG,EACnD,SAASmI,GAAwBC,EAAa,CACvCA,IAELF,GAAiBlI,GAAQA,EAAI,WAAW,IAAI,EAAI,CAACiI,GAAkBjI,CAAG,EAAIoI,EAAYpI,CAAG,EAC3F,CACA,GAAI,CACFmI,GAAwB/G,GAAkC,EAAE,OAAO,CACrE,MAAE,CACF,CACA,SAASiH,GAAY1F,EAAO2F,EAAOC,EAAoB,CACrD,IAAMC,EAAgB,CAAC,EACvB,QAAWxI,KAAO2C,EACZ3C,IAAQ,UAAY,OAAO2C,EAAM,QAAW,WAE5CuF,GAAclI,CAAG,GAAKuI,IAAuB,IAAQN,GAAkBjI,CAAG,GAAK,CAACsI,GAAS,CAACL,GAAkBjI,CAAG,GAAK2C,EAAM,WAAgB3C,EAAI,WAAW,QAAQ,KACnKwI,EAAcxI,GAAO2C,EAAM3C,IAG/B,OAAOwI,CACT,CAGA,IAAIC,GAAqB7E,GAChB,MAAM,QAAQA,CAAC,EAIpB8E,GAAiB9E,GACZ,QAAQA,GAAK,OAAOA,GAAM,UAAYA,EAAE,KAAOA,EAAE,OAAO,EAE7D+E,GAAgC/E,GAC3B6E,GAAkB7E,CAAC,EAAIA,EAAEA,EAAE,OAAS,IAAM,EAAIA,EAIvD,SAASgF,GAAmBjI,EAAO,CACjC,IAAMkI,EAAiBnC,GAAc/F,CAAK,EAAIA,EAAM,IAAI,EAAIA,EAC5D,OAAO+H,GAAcG,CAAc,EAAIA,EAAe,QAAQ,EAAIA,CACpE,CAMA,SAASC,GAAwBnG,EAAOoG,EAAYC,EAAQC,EAAgB,CAAC,EAAGC,EAAkB,CAAC,EAAG,CACpG,OAAI,OAAOH,GAAe,aACxBA,EAAaA,EAAWC,IAAW,OAASA,EAASrG,EAAM,OAAQsG,EAAeC,CAAe,GAE/F,OAAOH,GAAe,WACxBA,EAAapG,EAAM,UAAYA,EAAM,SAASoG,IAE5C,OAAOA,GAAe,aACxBA,EAAaA,EAAWC,IAAW,OAASA,EAASrG,EAAM,OAAQsG,EAAeC,CAAe,GAE5FH,CACT,CAGA,SAASI,GAAU,CAAE,4BAA6BC,EAA8B,kBAAAC,EAAmB,QAAAC,CAAQ,EAAG3G,EAAOwB,EAASpB,EAAiB,CAC7I,IAAMwG,EAAQ,CACZ,aAAcC,GAAiB7G,EAAOwB,EAASpB,EAAiBqG,CAA4B,EAC5F,YAAaC,EAAkB,CACjC,EACA,OAAIC,IACFC,EAAM,MAAS7F,GAAa4F,EAAQ3G,EAAOe,EAAU6F,CAAK,GAErDA,CACT,CACA,IAAIE,GAAsBC,GAAW,CAAC/G,EAAOmD,IAAa,CACxD,IAAM3B,EAAUpC,EAAYF,EAAa,EACnCkB,EAAkBhB,EAAYC,EAAe,EAC7C2H,EAAO,IAAMR,GAAUO,EAAQ/G,EAAOwB,EAASpB,CAAe,EACpE,OAAO+C,EAAW6D,EAAK,EAAI7E,GAAY6E,CAAI,CAC7C,EACA,SAASH,GAAiB7G,EAAOwB,EAASpB,EAAiB6G,EAAoB,CAC7E,IAAMC,EAAS,CAAC,EACVC,EAAeF,EAAmBjH,EAAO,CAAC,CAAC,EACjD,QAAW3C,KAAO8J,EAChBD,EAAO7J,GAAO4I,GAAmBkB,EAAa9J,EAAI,EAEpD,GAAI,CAAE,QAAAoE,EAAS,QAASC,CAAS,EAAI1B,EAC/BoH,EAA0BhG,GAAsBpB,CAAK,EACrDqH,EAAkB/F,GAActB,CAAK,EACvCwB,GAAW6F,GAAmB,CAACD,GAA2BpH,EAAM,UAAY,KAC1EyB,IAAY,SACdA,EAAUD,EAAQ,SAChBE,IAAa,SACfA,EAAWF,EAAQ,UAEvB,IAAI8F,EAA4BlH,EAAkBA,EAAgB,UAAY,GAAQ,GACtFkH,EAA4BA,GAA6B7F,IAAY,GACrE,IAAM8F,EAAeD,EAA4B5F,EAAWD,EAC5D,OAAI8F,GAAgB,OAAOA,GAAiB,WAAa,CAACrG,GAAoBqG,CAAY,IAC3E,MAAM,QAAQA,CAAY,EAAIA,EAAe,CAACA,CAAY,GAClE,QAASnB,GAAe,CAC3B,IAAMoB,EAAWrB,GAAwBnG,EAAOoG,CAAU,EAC1D,GAAI,CAACoB,EACH,OACF,GAAM,CAAE,cAAAC,EAAe,WAAAC,KAAelK,CAAO,EAAIgK,EACjD,QAAWnK,KAAOG,EAAQ,CACxB,IAAImK,EAAcnK,EAAOH,GACzB,GAAI,MAAM,QAAQsK,CAAW,EAAG,CAC9B,IAAM9I,EAAQyI,EAA4BK,EAAY,OAAS,EAAI,EACnEA,EAAcA,EAAY9I,EAC5B,CACI8I,IAAgB,OAClBT,EAAO7J,GAAOsK,EAElB,CACA,QAAWtK,KAAOoK,EAChBP,EAAO7J,GAAOoK,EAAcpK,EAChC,CAAC,EAEI6J,CACT,CAGA,IAAIU,GACH,SAASC,EAAgB,CACxBA,EAAe,QAAa,UAC5BA,EAAe,MAAW,aAC1BA,EAAe,IAAS,WACxBA,EAAe,KAAU,YACzBA,EAAe,MAAW,aAC1BA,EAAe,OAAY,cAC3BA,EAAe,KAAU,MAC3B,GAAGD,IAAkBA,EAAgB,CAAC,EAAE,EAIxC,SAASE,GAAYtK,EAAQuK,EAAWC,EAASC,EAAU,CAAE,QAAS,EAAK,EAAG,CAC5E,OAAAzK,EAAO,iBAAiBuK,EAAWC,EAASC,CAAO,EAC5C,IAAMzK,EAAO,oBAAoBuK,EAAWC,CAAO,CAC5D,CACA,SAASE,GAAYvH,EAAKoH,EAAWC,EAASC,EAAS,CACrDxI,EAAW,IAAM,CACf,IAAM0I,EAAUxH,EAAI,QACpB,GAAIqH,GAAWG,EACb,OAAOL,GAAYK,EAASJ,EAAWC,EAASC,CAAO,CAE3D,EAAG,CAACtH,EAAKoH,EAAWC,EAASC,CAAO,CAAC,CACvC,CAGA,IAAIG,GAAoBC,GAAUA,EAAM,YAAc,GAGtD,SAASC,GAAiBD,EAAOE,EAAY,OAAQ,CACnD,MAAO,CACL,MAAO,CACL,EAAGF,EAAME,EAAY,KACrB,EAAGF,EAAME,EAAY,IACvB,CACF,CACF,CACA,IAAIC,GAAkBR,GACZK,GAAUD,GAAiBC,CAAK,GAAKL,EAAQK,EAAOC,GAAiBD,CAAK,CAAC,EAIrF,SAASI,GAAgBjL,EAAQuK,EAAWC,EAASC,EAAS,CAC5D,OAAOH,GAAYtK,EAAQuK,EAAWS,GAAeR,CAAO,EAAGC,CAAO,CACxE,CACA,SAASS,GAAgB/H,EAAKoH,EAAWC,EAASC,EAAS,CACzD,OAAOC,GAAYvH,EAAKoH,EAAWC,GAAWQ,GAAeR,CAAO,EAAGC,CAAO,CAChF,CAGA,SAASU,GAAWtH,EAAM,CACxB,IAAIuH,EAAO,KACX,MAAO,IAAM,CACX,IAAMC,EAAW,IAAM,CACrBD,EAAO,IACT,EACA,OAAIA,IAAS,MACXA,EAAOvH,EACAwH,GAEF,EACT,CACF,CACA,IAAIC,GAAuBH,GAAW,gBAAgB,EAClDI,GAAqBJ,GAAW,cAAc,EAClD,SAASK,GAAcC,EAAO,CAC5B,IAAIL,EAAO,GACX,GAAIK,IAAU,IACZL,EAAOG,GAAmB,UACjBE,IAAU,IACnBL,EAAOE,GAAqB,MACvB,CACL,IAAMI,EAAiBJ,GAAqB,EACtCK,EAAeJ,GAAmB,EACpCG,GAAkBC,EACpBP,EAAO,IAAM,CACXM,EAAe,EACfC,EAAa,CACf,GAEID,GACFA,EAAe,EACbC,GACFA,EAAa,EAEnB,CACA,OAAOP,CACT,CACA,SAASQ,IAAe,CACtB,IAAMC,EAAkBL,GAAc,EAAI,EAC1C,OAAKK,GAELA,EAAgB,EACT,IAFE,EAGX,CAIA,SAASC,GAAiBC,EAAU,CAClC,OAAO9J,EAAW,IAAM,IAAM8J,EAAS,EAAG,CAAC,CAAC,CAC9C,CAGA,IAAIC,GAAmB,CAACpF,EAAGC,IAAOpD,GAAMoD,EAAED,EAAEnD,CAAC,CAAC,EAC1CwI,GAAO,IAAIC,IAAiBA,EAAa,OAAOF,EAAgB,EAIpE,SAASG,IAAc,CACrB,IAAMnI,EAAUpC,EAAYC,EAAe,EAC3C,GAAImC,IAAY,KACd,MAAO,CAAC,GAAM,IAAI,EACpB,GAAM,CAAE,UAAWoI,EAAY,eAAAC,EAAgB,SAAAC,CAAS,EAAItI,EACtDuI,EAAMC,GAAM,EAClB,OAAAvK,EAAW,IAAMqK,EAASC,CAAG,EAAG,CAAC,CAAC,EAE3B,CAACH,GAAcC,EAAiB,CAAC,GADnB,IAAMA,GAAkBA,EAAeE,CAAG,CACJ,EAAI,CAAC,EAAI,CACtE,CASA,IAAIE,GAAY,CACd,MAAO,EACP,UAAW,CACb,EAGIC,GAAkB,EAAI,GAAK,IAC3BC,GAAiB,OAAO,YAAgB,IAAc,IAAM,YAAY,IAAI,EAAI,IAAM,KAAK,IAAI,EAC/FC,GAAc,OAAOC,EAAW,IAAeC,GAAaD,EAAO,sBAAsBC,CAAQ,EAAKA,GAAa,WAAW,IAAMA,EAASH,GAAe,CAAC,EAAGD,EAAe,EAGnL,SAASK,GAAiBC,EAAe,CACvC,IAAIC,EAAQ,CAAC,EACTC,EAAiB,CAAC,EAClBC,EAAW,EACXC,EAAgB,GAChBC,EAAiB,GACfC,EAA8B,IAAI,QAClCC,EAAO,CACX,SAAU,CAACT,EAAUU,EAAY,GAAOC,EAAY,KAAU,CAC5D,IAAMC,EAAoBD,GAAaL,EACjCO,EAASD,EAAoBT,EAAQC,EAC3C,OAAIM,GACFF,EAAY,IAAIR,CAAQ,EACtBa,EAAO,QAAQb,CAAQ,IAAM,KAC/Ba,EAAO,KAAKb,CAAQ,EAChBY,GAAqBN,IACvBD,EAAWF,EAAM,SAEdH,CACT,EACA,OAASA,GAAa,CACpB,IAAMc,EAAQV,EAAe,QAAQJ,CAAQ,EACzCc,IAAU,IACZV,EAAe,OAAOU,EAAO,CAAC,EAChCN,EAAY,OAAOR,CAAQ,CAC7B,EACA,QAAUe,GAAe,CACvB,GAAIT,EAAe,CACjBC,EAAiB,GACjB,MACF,CAKA,GAJAD,EAAgB,GAChB,CAACH,EAAOC,CAAc,EAAI,CAACA,EAAgBD,CAAK,EAChDC,EAAe,OAAS,EACxBC,EAAWF,EAAM,OACbE,EACF,QAASW,EAAI,EAAGA,EAAIX,EAAUW,IAAK,CACjC,IAAMhB,EAAWG,EAAMa,GACvBhB,EAASe,CAAU,EACfP,EAAY,IAAIR,CAAQ,IAC1BS,EAAK,SAAST,CAAQ,EACtBE,EAAc,EAElB,CAEFI,EAAgB,GACZC,IACFA,EAAiB,GACjBE,EAAK,QAAQM,CAAU,EAE3B,CACF,EACA,OAAON,CACT,CAGA,IAAIQ,GAAa,GACbC,GAAoB,GACpBC,GAAe,GACfC,GAAe,GACfC,GAAa,CACf,OACA,SACA,YACA,SACA,YACF,EACIC,GAAQD,GAAW,OAAO,CAACE,EAAKC,KAClCD,EAAIC,GAAOvB,GAAiB,IAAMkB,GAAe,EAAI,EAC9CI,GACN,CAAC,CAAC,EACDE,GAAOJ,GAAW,OAAO,CAACE,EAAKC,IAAQ,CACzC,IAAMf,EAAOa,GAAME,GACnB,OAAAD,EAAIC,GAAO,CAACE,EAAUhB,EAAY,GAAOC,EAAY,MAC9CQ,IACHQ,GAAU,EACLlB,EAAK,SAASiB,EAAUhB,EAAWC,CAAS,GAE9CY,CACT,EAAG,CAAC,CAAC,EACDK,GAAaP,GAAW,OAAO,CAACE,EAAKC,KACvCD,EAAIC,GAAOF,GAAME,GAAK,OACfD,GACN,CAAC,CAAC,EACDM,GAAYR,GAAW,OAAO,CAACE,EAAKC,KACtCD,EAAIC,GAAO,IAAMF,GAAME,GAAK,QAAQ7B,EAAS,EACtC4B,GACN,CAAC,CAAC,EACDO,GAAeC,GAAWT,GAAMS,GAAQ,QAAQpC,EAAS,EACzDqC,GAAgBC,GAAc,CAChCd,GAAe,GACfxB,GAAU,MAAQuB,GAAoBtB,GAAkB,KAAK,IAAI,KAAK,IAAIqC,EAAYtC,GAAU,UAAWsB,EAAU,EAAG,CAAC,EACzHtB,GAAU,UAAYsC,EACtBb,GAAe,GACfC,GAAW,QAAQS,EAAW,EAC9BV,GAAe,GACXD,KACFD,GAAoB,GACpBpB,GAAYkC,EAAY,EAE5B,EACIL,GAAY,IAAM,CACpBR,GAAe,GACfD,GAAoB,GACfE,IACHtB,GAAYkC,EAAY,CAC5B,EAGA,SAASE,GAAcC,EAAKC,EAAM,CAC5BD,EAAI,QAAQC,CAAI,IAAM,IACxBD,EAAI,KAAKC,CAAI,CACjB,CACA,SAASC,GAAWF,EAAKC,EAAM,CAC7B,IAAMtB,EAAQqB,EAAI,QAAQC,CAAI,EAC1BtB,EAAQ,IACVqB,EAAI,OAAOrB,EAAO,CAAC,CACvB,CACA,SAASwB,GAAS,IAAIH,CAAG,EAAGI,EAAWC,EAAS,CAC9C,IAAMC,EAAaF,EAAY,EAAIJ,EAAI,OAASI,EAAYA,EAC5D,GAAIE,GAAc,GAAKA,EAAaN,EAAI,OAAQ,CAC9C,IAAMO,EAAWF,EAAU,EAAIL,EAAI,OAASK,EAAUA,EAChD,CAACJ,CAAI,EAAID,EAAI,OAAOI,EAAW,CAAC,EACtCJ,EAAI,OAAOO,EAAU,EAAGN,CAAI,CAC9B,CACA,OAAOD,CACT,CAGA,IAAIQ,GAAsB,KAAM,CAC9B,aAAc,CACZ,KAAK,cAAgB,CAAC,CACxB,CACA,IAAIC,EAAS,CACX,OAAAV,GAAc,KAAK,cAAeU,CAAO,EAClC,IAAMP,GAAW,KAAK,cAAeO,CAAO,CACrD,CACA,OAAOC,EAAGC,EAAGC,EAAG,CACd,IAAMC,EAAmB,KAAK,cAAc,OAC5C,GAAKA,EAEL,GAAIA,IAAqB,EACvB,KAAK,cAAc,GAAGH,EAAGC,EAAGC,CAAC,MAE7B,SAAS,EAAI,EAAG,EAAIC,EAAkB,IAAK,CACzC,IAAMJ,EAAU,KAAK,cAAc,GACnCA,GAAWA,EAAQC,EAAGC,EAAGC,CAAC,CAC5B,CAEJ,CACA,SAAU,CACR,OAAO,KAAK,cAAc,MAC5B,CACA,OAAQ,CACN,KAAK,cAAc,OAAS,CAC9B,CACF,EAGA,SAASE,GAAkBC,EAAUC,EAAe,CAClD,OAAOA,EAAgBD,GAAY,IAAMC,GAAiB,CAC5D,CAGA,IAAIC,GAAWC,GACN,CAAC,MAAM,WAAWA,CAAK,CAAC,EAE7BC,GAAc,KAAM,CACtB,YAAYC,EAAMC,EAAU,CAAC,EAAG,CAC9B,KAAK,QAAU,QACf,KAAK,UAAY,EACjB,KAAK,YAAc,EACnB,KAAK,iBAAmB,GACxB,KAAK,OAAS,CAAC,EACf,KAAK,gBAAkB,CAACC,EAAGC,EAAS,KAAS,CAC3C,KAAK,KAAO,KAAK,QACjB,KAAK,QAAUD,EACf,GAAM,CAAE,MAAAE,EAAO,UAAA1B,CAAU,EAAItC,GACzB,KAAK,cAAgBsC,IACvB,KAAK,UAAY0B,EACjB,KAAK,YAAc1B,EACnBR,GAAK,WAAW,KAAK,qBAAqB,GAExC,KAAK,OAAS,KAAK,SAAW,KAAK,OAAO,QAC5C,KAAK,OAAO,OAAO,OAAO,KAAK,OAAO,EAEpC,KAAK,OAAO,gBACd,KAAK,OAAO,eAAe,OAAO,KAAK,YAAY,CAAC,EAElDiC,GAAU,KAAK,OAAO,eACxB,KAAK,OAAO,cAAc,OAAO,KAAK,OAAO,CAEjD,EACA,KAAK,sBAAwB,IAAMjC,GAAK,WAAW,KAAK,aAAa,EACrE,KAAK,cAAgB,CAAC,CAAE,UAAAQ,CAAU,IAAM,CAClCA,IAAc,KAAK,cACrB,KAAK,KAAO,KAAK,QACb,KAAK,OAAO,gBACd,KAAK,OAAO,eAAe,OAAO,KAAK,YAAY,CAAC,EAG1D,EACA,KAAK,YAAc,GACnB,KAAK,KAAO,KAAK,QAAUsB,EAC3B,KAAK,iBAAmBH,GAAQ,KAAK,OAAO,EAC5C,KAAK,MAAQI,EAAQ,KACvB,CACA,SAASI,EAAc,CACrB,OAAO,KAAK,GAAG,SAAUA,CAAY,CACvC,CACA,GAAGC,EAAW7D,EAAU,CACjB,KAAK,OAAO6D,KACf,KAAK,OAAOA,GAAa,IAAIlB,IAE/B,IAAMmB,EAAc,KAAK,OAAOD,GAAW,IAAI7D,CAAQ,EACvD,OAAI6D,IAAc,SACT,IAAM,CACXC,EAAY,EACZrC,GAAK,KAAK,IAAM,CACT,KAAK,OAAO,OAAO,QAAQ,GAC9B,KAAK,KAAK,CAEd,CAAC,CACH,EAEKqC,CACT,CACA,gBAAiB,CACf,QAAWC,KAAiB,KAAK,OAC/B,KAAK,OAAOA,GAAe,MAAM,CAErC,CACA,OAAOC,EAAeC,EAAmB,CACvC,KAAK,cAAgBD,EACrB,KAAK,kBAAoBC,CAC3B,CACA,IAAIR,EAAGC,EAAS,GAAM,CAChB,CAACA,GAAU,CAAC,KAAK,cACnB,KAAK,gBAAgBD,EAAGC,CAAM,EAE9B,KAAK,cAAcD,EAAG,KAAK,eAAe,CAE9C,CACA,gBAAgBS,EAAMC,EAASR,EAAO,CACpC,KAAK,IAAIQ,CAAO,EAChB,KAAK,KAAOD,EACZ,KAAK,UAAYP,CACnB,CACA,KAAKF,EAAG,CACN,KAAK,gBAAgBA,CAAC,EACtB,KAAK,KAAOA,EACZ,KAAK,KAAK,EACN,KAAK,mBACP,KAAK,kBAAkB,CAC3B,CACA,KAAM,CACJ,OAAO,KAAK,OACd,CACA,aAAc,CACZ,OAAO,KAAK,IACd,CACA,aAAc,CACZ,OAAO,KAAK,iBAAmBR,GAAkB,WAAW,KAAK,OAAO,EAAI,WAAW,KAAK,IAAI,EAAG,KAAK,SAAS,EAAI,CACvH,CACA,MAAMmB,EAAgB,CACpB,YAAK,KAAK,EACH,IAAI,QAASC,GAAY,CAC9B,KAAK,YAAc,GACnB,KAAK,UAAYD,EAAeC,CAAO,GAAK,KACxC,KAAK,OAAO,gBACd,KAAK,OAAO,eAAe,OAAO,CAEtC,CAAC,EAAE,KAAK,IAAM,CACR,KAAK,OAAO,mBACd,KAAK,OAAO,kBAAkB,OAAO,EAEvC,KAAK,eAAe,CACtB,CAAC,CACH,CACA,MAAO,CACD,KAAK,YACP,KAAK,UAAU,KAAK,EAChB,KAAK,OAAO,iBACd,KAAK,OAAO,gBAAgB,OAAO,GAGvC,KAAK,eAAe,CACtB,CACA,aAAc,CACZ,MAAO,CAAC,CAAC,KAAK,SAChB,CACA,gBAAiB,CACf,KAAK,UAAY,IACnB,CACA,SAAU,CACR,KAAK,eAAe,EACpB,KAAK,KAAK,EACN,KAAK,mBACP,KAAK,kBAAkB,CAE3B,CACF,EACA,SAASC,GAAYf,EAAMC,EAAS,CAClC,OAAO,IAAIF,GAAYC,EAAMC,CAAO,CACtC,CAGA,IAAIe,GAAqBd,GAAM,iBAAiB,KAAKA,CAAC,EAGlDe,GAAqBf,GAAM,aAAa,KAAKA,CAAC,EAG9CgB,GAAYhB,GAAM,KAAK,MAAMA,EAAI,GAAG,EAAI,IACxCiB,GAAa,uBACbC,GAAa,8FACbC,GAAmB,+FACvB,SAASC,GAASpB,EAAG,CACnB,OAAO,OAAOA,GAAM,QACtB,CAGA,IAAIqB,GAAS,CACX,KAAOrB,GAAM,OAAOA,GAAM,SAC1B,MAAO,WACP,UAAYA,GAAMA,CACpB,EACIsB,GAAQ,CACV,GAAGD,GACH,UAAYrB,GAAMuB,GAAM,EAAG,EAAGvB,CAAC,CACjC,EACIwB,GAAQ,CACV,GAAGH,GACH,QAAS,CACX,EAGII,GAAgB,CAACC,EAAMC,IAAc3B,GAChC,QAAQoB,GAASpB,CAAC,GAAKmB,GAAiB,KAAKnB,CAAC,GAAKA,EAAE,WAAW0B,CAAI,GAAKC,GAAY,OAAO,UAAU,eAAe,KAAK3B,EAAG2B,CAAQ,CAAC,EAE3IC,GAAa,CAACC,EAAOC,EAAOC,IAAW/B,GAAM,CAC/C,GAAI,CAACoB,GAASpB,CAAC,EACb,OAAOA,EACT,GAAM,CAACZ,EAAGC,EAAGC,EAAG0C,CAAM,EAAIhC,EAAE,MAAMiB,EAAU,EAC5C,MAAO,CACL,CAACY,GAAQ,WAAWzC,CAAC,EACrB,CAAC0C,GAAQ,WAAWzC,CAAC,EACrB,CAAC0C,GAAQ,WAAWzC,CAAC,EACrB,MAAO0C,IAAW,OAAS,WAAWA,CAAM,EAAI,CAClD,CACF,EAGIC,GAAgBjC,GAAMuB,GAAM,EAAG,IAAKvB,CAAC,EACrCkC,GAAU,CACZ,GAAGb,GACH,UAAYrB,GAAM,KAAK,MAAMiC,GAAajC,CAAC,CAAC,CAC9C,EACImC,GAAO,CACT,KAAMV,GAAc,MAAO,KAAK,EAChC,MAAOG,GAAW,MAAO,QAAS,MAAM,EACxC,UAAW,CAAC,CAAE,IAAAQ,EAAK,MAAAC,EAAO,KAAAC,EAAM,MAAOC,EAAU,CAAE,IAAM,QAAUL,GAAQ,UAAUE,CAAG,EAAI,KAAOF,GAAQ,UAAUG,CAAK,EAAI,KAAOH,GAAQ,UAAUI,CAAI,EAAI,KAAOtB,GAASM,GAAM,UAAUiB,CAAO,CAAC,EAAI,GAC7M,EAGA,SAASC,GAASxC,EAAG,CACnB,IAAIyC,EAAI,GACJC,EAAI,GACJrD,EAAI,GACJD,EAAI,GACR,OAAIY,EAAE,OAAS,GACbyC,EAAIzC,EAAE,UAAU,EAAG,CAAC,EACpB0C,EAAI1C,EAAE,UAAU,EAAG,CAAC,EACpBX,EAAIW,EAAE,UAAU,EAAG,CAAC,EACpBZ,EAAIY,EAAE,UAAU,EAAG,CAAC,IAEpByC,EAAIzC,EAAE,UAAU,EAAG,CAAC,EACpB0C,EAAI1C,EAAE,UAAU,EAAG,CAAC,EACpBX,EAAIW,EAAE,UAAU,EAAG,CAAC,EACpBZ,EAAIY,EAAE,UAAU,EAAG,CAAC,EACpByC,GAAKA,EACLC,GAAKA,EACLrD,GAAKA,EACLD,GAAKA,GAEA,CACL,IAAK,SAASqD,EAAG,EAAE,EACnB,MAAO,SAASC,EAAG,EAAE,EACrB,KAAM,SAASrD,EAAG,EAAE,EACpB,MAAOD,EAAI,SAASA,EAAG,EAAE,EAAI,IAAM,CACrC,CACF,CACA,IAAIuD,GAAM,CACR,KAAMlB,GAAc,GAAG,EACvB,MAAOe,GACP,UAAWL,GAAK,SAClB,EAGIS,GAAkBC,IAAU,CAC9B,KAAO7C,GAAMoB,GAASpB,CAAC,GAAKA,EAAE,SAAS6C,CAAI,GAAK7C,EAAE,MAAM,GAAG,EAAE,SAAW,EACxE,MAAO,WACP,UAAYA,GAAM,GAAGA,IAAI6C,GAC3B,GACIC,GAAUF,GAAe,KAAK,EAC9BG,GAAUH,GAAe,GAAG,EAC5BI,EAAKJ,GAAe,IAAI,EACxBK,GAAKL,GAAe,IAAI,EACxBM,GAAKN,GAAe,IAAI,EACxBO,GAAqB,CACvB,GAAGJ,GACH,MAAQ/C,GAAM+C,GAAQ,MAAM/C,CAAC,EAAI,IACjC,UAAYA,GAAM+C,GAAQ,UAAU/C,EAAI,GAAG,CAC7C,EAGIoD,GAAO,CACT,KAAM3B,GAAc,MAAO,KAAK,EAChC,MAAOG,GAAW,MAAO,aAAc,WAAW,EAClD,UAAW,CAAC,CAAE,IAAAyB,EAAK,WAAAC,EAAY,UAAAC,EAAW,MAAOhB,EAAU,CAAE,IACpD,QAAU,KAAK,MAAMc,CAAG,EAAI,KAAON,GAAQ,UAAU/B,GAASsC,CAAU,CAAC,EAAI,KAAOP,GAAQ,UAAU/B,GAASuC,CAAS,CAAC,EAAI,KAAOvC,GAASM,GAAM,UAAUiB,CAAO,CAAC,EAAI,GAEpL,EAGIiB,GAAQ,CACV,KAAOxD,GAAMmC,GAAK,KAAKnC,CAAC,GAAK2C,GAAI,KAAK3C,CAAC,GAAKoD,GAAK,KAAKpD,CAAC,EACvD,MAAQA,GACFmC,GAAK,KAAKnC,CAAC,EACNmC,GAAK,MAAMnC,CAAC,EACVoD,GAAK,KAAKpD,CAAC,EACboD,GAAK,MAAMpD,CAAC,EAEZ2C,GAAI,MAAM3C,CAAC,EAGtB,UAAYA,GACHoB,GAASpB,CAAC,EAAIA,EAAIA,EAAE,eAAe,KAAK,EAAImC,GAAK,UAAUnC,CAAC,EAAIoD,GAAK,UAAUpD,CAAC,CAE3F,EAGIyD,GAAa,OACbC,GAAc,OAClB,SAASC,GAAK3D,EAAG,CACf,IAAI4D,EAAIC,EACR,OAAO,MAAM7D,CAAC,GAAKoB,GAASpB,CAAC,MAAQ4D,EAAK5D,EAAE,MAAMiB,EAAU,KAAO,MAAQ2C,IAAO,OAAS,OAASA,EAAG,SAAW,MAAQC,EAAK7D,EAAE,MAAMkB,EAAU,KAAO,MAAQ2C,IAAO,OAAS,OAASA,EAAG,SAAW,GAAK,CAC9M,CACA,SAASC,GAAoB9D,EAAG,CAC1B,OAAOA,GAAM,WACfA,EAAI,GAAGA,KACT,IAAM+D,EAAS,CAAC,EACZC,EAAY,EACZC,EAAa,EACXC,EAASlE,EAAE,MAAMkB,EAAU,EAC7BgD,IACFF,EAAYE,EAAO,OACnBlE,EAAIA,EAAE,QAAQkB,GAAYuC,EAAU,EACpCM,EAAO,KAAK,GAAGG,EAAO,IAAIV,GAAM,KAAK,CAAC,GAExC,IAAMW,EAAUnE,EAAE,MAAMiB,EAAU,EAClC,OAAIkD,IACFF,EAAaE,EAAQ,OACrBnE,EAAIA,EAAE,QAAQiB,GAAYyC,EAAW,EACrCK,EAAO,KAAK,GAAGI,EAAQ,IAAI9C,GAAO,KAAK,CAAC,GAEnC,CAAE,OAAA0C,EAAQ,UAAAC,EAAW,WAAAC,EAAY,UAAWjE,CAAE,CACvD,CACA,SAASoE,GAAMpE,EAAG,CAChB,OAAO8D,GAAoB9D,CAAC,EAAE,MAChC,CACA,SAASqE,GAAkBC,EAAQ,CACjC,GAAM,CAAE,OAAAP,EAAQ,UAAAC,EAAW,UAAAO,CAAU,EAAIT,GAAoBQ,CAAM,EAC7DE,EAAYT,EAAO,OACzB,OAAQ/D,GAAM,CACZ,IAAIyE,EAASF,EACb,QAAShH,EAAI,EAAGA,EAAIiH,EAAWjH,IAC7BkH,EAASA,EAAO,QAAQlH,EAAIyG,EAAYP,GAAaC,GAAanG,EAAIyG,EAAYR,GAAM,UAAUxD,EAAEzC,EAAE,EAAIyD,GAAShB,EAAEzC,EAAE,CAAC,EAE1H,OAAOkH,CACT,CACF,CACA,IAAIC,GAAwB1E,GAAM,OAAOA,GAAM,SAAW,EAAIA,EAC9D,SAAS2E,GAAkB3E,EAAG,CAC5B,IAAM4E,EAASR,GAAMpE,CAAC,EAEtB,OADoBqE,GAAkBrE,CAAC,EACpB4E,EAAO,IAAIF,EAAoB,CAAC,CACrD,CACA,IAAIG,GAAU,CAAE,KAAAlB,GAAM,MAAAS,GAAO,kBAAAC,GAAmB,kBAAAM,EAAkB,EAG9DG,GAA8B,IAAI,IAAI,CAAC,aAAc,WAAY,WAAY,SAAS,CAAC,EAC3F,SAASC,GAAmB/E,EAAG,CAC7B,GAAM,CAACgF,EAAMpF,CAAK,EAAII,EAAE,MAAM,EAAG,EAAE,EAAE,MAAM,GAAG,EAC9C,GAAIgF,IAAS,cACX,OAAOhF,EACT,GAAM,CAACiF,CAAO,EAAIrF,EAAM,MAAMqB,EAAU,GAAK,CAAC,EAC9C,GAAI,CAACgE,EACH,OAAOjF,EACT,IAAM6C,EAAOjD,EAAM,QAAQqF,EAAS,EAAE,EAClCC,EAAeJ,GAAY,IAAIE,CAAI,EAAI,EAAI,EAC/C,OAAIC,IAAYrF,IACdsF,GAAgB,KACXF,EAAO,IAAME,EAAerC,EAAO,GAC5C,CACA,IAAIsC,GAAgB,oBAChBC,GAAS,CACX,GAAGP,GACH,kBAAoB7E,GAAM,CACxB,IAAMqF,EAAYrF,EAAE,MAAMmF,EAAa,EACvC,OAAOE,EAAYA,EAAU,IAAIN,EAAkB,EAAE,KAAK,GAAG,EAAI/E,CACnE,CACF,EAGIsF,GAAM,CACR,GAAGjE,GACH,UAAW,KAAK,KAClB,EAGIkE,GAAmB,CACrB,YAAavC,EACb,eAAgBA,EAChB,iBAAkBA,EAClB,kBAAmBA,EACnB,gBAAiBA,EACjB,aAAcA,EACd,OAAQA,EACR,oBAAqBA,EACrB,qBAAsBA,EACtB,wBAAyBA,EACzB,uBAAwBA,EACxB,MAAOA,EACP,SAAUA,EACV,OAAQA,EACR,UAAWA,EACX,KAAMA,EACN,IAAKA,EACL,MAAOA,EACP,OAAQA,EACR,KAAMA,EACN,QAASA,EACT,WAAYA,EACZ,aAAcA,EACd,cAAeA,EACf,YAAaA,EACb,OAAQA,EACR,UAAWA,EACX,YAAaA,EACb,aAAcA,EACd,WAAYA,EACZ,OAAQF,GACR,QAASA,GACT,QAASA,GACT,QAASA,GACT,MAAAtB,GACA,OAAQA,GACR,OAAQA,GACR,OAAQA,GACR,KAAMsB,GACN,MAAOA,GACP,MAAOA,GACP,SAAUE,EACV,WAAYA,EACZ,WAAYA,EACZ,WAAYA,EACZ,EAAGA,EACH,EAAGA,EACH,EAAGA,EACH,YAAaA,EACb,qBAAsBA,EACtB,QAAS1B,GACT,QAAS6B,GACT,QAASA,GACT,QAASH,EACT,OAAQsC,GACR,YAAahE,GACb,cAAeA,GACf,WAAYgE,EACd,EAGIE,GAAoB,CACtB,GAAGD,GACH,MAAA/B,GACA,gBAAiBA,GACjB,aAAcA,GACd,KAAMA,GACN,OAAQA,GACR,YAAaA,GACb,eAAgBA,GAChB,iBAAkBA,GAClB,kBAAmBA,GACnB,gBAAiBA,GACjB,OAAA4B,GACA,aAAcA,EAChB,EACIK,GAAuB1H,GAAQyH,GAAkBzH,GAGrD,SAAS2H,GAAmB3H,EAAK6B,EAAO,CACtC,IAAIgE,EACJ,IAAI+B,EAAmBF,GAAoB1H,CAAG,EAC9C,OAAI4H,IAAqBP,KACvBO,EAAmBd,KACbjB,EAAK+B,EAAiB,qBAAuB,MAAQ/B,IAAO,OAAS,OAASA,EAAG,KAAK+B,EAAkB/F,CAAK,CACvH,CAGA,IAAIgG,GAAiB5F,GAAO0B,GAASA,EAAK,KAAK1B,CAAC,EAG5C6F,GAAO,CACT,KAAO7F,GAAMA,IAAM,OACnB,MAAQA,GAAMA,CAChB,EAGI8F,GAAsB,CAACzE,GAAQ2B,EAAID,GAASD,GAASI,GAAID,GAAI4C,EAAI,EACjEE,GAA0B/F,GAAM8F,GAAoB,KAAKF,GAAc5F,CAAC,CAAC,EAGzEgG,GAAa,CAAC,GAAGF,GAAqBtC,GAAOqB,EAAO,EACpDoB,GAAiBjG,GAAMgG,GAAW,KAAKJ,GAAc5F,CAAC,CAAC,EAG3D,SAASkG,GAAWC,EAAe,CACjC,IAAMzF,EAAU,CAAC,EACjB,OAAAyF,EAAc,OAAO,QAAQ,CAACvG,EAAO7B,IAAQ2C,EAAQ3C,GAAO6B,EAAM,IAAI,CAAC,EAChEc,CACT,CACA,SAAS0F,GAAYD,EAAe,CAClC,IAAM1G,EAAW,CAAC,EAClB,OAAA0G,EAAc,OAAO,QAAQ,CAACvG,EAAO7B,IAAQ0B,EAAS1B,GAAO6B,EAAM,YAAY,CAAC,EACzEH,CACT,CACA,SAAS4G,GAAeF,EAAeG,EAAYC,EAAQ,CACzD,IAAMC,EAAQL,EAAc,SAAS,EACrC,OAAOM,GAAwBD,EAAOF,EAAYC,IAAW,OAASA,EAASC,EAAM,OAAQN,GAAWC,CAAa,EAAGC,GAAYD,CAAa,CAAC,CACpJ,CAGA,SAASO,GAAeP,EAAepI,EAAK6B,EAAO,CAC7CuG,EAAc,SAASpI,CAAG,EAC5BoI,EAAc,SAASpI,CAAG,EAAE,IAAI6B,CAAK,EAErCuG,EAAc,SAASpI,EAAK8C,GAAYjB,CAAK,CAAC,CAElD,CACA,SAAS+G,GAAUR,EAAeG,EAAY,CAC5C,IAAMM,EAAWP,GAAeF,EAAeG,CAAU,EACrD,CAAE,cAAAO,EAAgB,CAAC,EAAG,WAAAC,EAAa,CAAC,KAAMC,CAAO,EAAIH,EAAWT,EAAc,qBAAqBS,EAAU,EAAK,EAAI,CAAC,EAC3HG,EAAS,CAAE,GAAGA,EAAQ,GAAGF,CAAc,EACvC,QAAW9I,KAAOgJ,EAAQ,CACxB,IAAMnH,EAAQoH,GAA6BD,EAAOhJ,EAAI,EACtD2I,GAAeP,EAAepI,EAAK6B,CAAK,CAC1C,CACF,CACA,SAASqH,GAAYd,EAAee,EAAe,CAC1B,CAAC,GAAGA,CAAa,EAAE,QAAQ,EACnC,QAASnJ,GAAQ,CAC9B,IAAI6F,EACJ,IAAMuD,EAAUhB,EAAc,WAAWpI,CAAG,EAC5CoJ,GAAWR,GAAUR,EAAegB,CAAO,GAC1CvD,EAAKuC,EAAc,mBAAqB,MAAQvC,IAAO,QAAkBA,EAAG,QAASwD,GAAU,CAC9FH,GAAYG,EAAOF,CAAa,CAClC,CAAC,CACH,CAAC,CACH,CACA,SAASG,GAAUlB,EAAeG,EAAY,CAC5C,GAAI,MAAM,QAAQA,CAAU,EAC1B,OAAOW,GAAYd,EAAeG,CAAU,EACvC,GAAI,OAAOA,GAAe,SAC/B,OAAOW,GAAYd,EAAe,CAACG,CAAU,CAAC,EAE9CK,GAAUR,EAAeG,CAAU,CAEvC,CACA,SAASgB,GAAwBnB,EAAeY,EAAQQ,EAAQ,CAC9D,IAAI3D,EAAIC,EACR,IAAM2D,EAAe,OAAO,KAAKT,CAAM,EAAE,OAAQhJ,GAAQ,CAACoI,EAAc,SAASpI,CAAG,CAAC,EAC/E0J,EAAeD,EAAa,OAClC,GAAKC,EAEL,QAASlK,EAAI,EAAGA,EAAIkK,EAAclK,IAAK,CACrC,IAAMQ,EAAMyJ,EAAajK,GACnBmK,EAAcX,EAAOhJ,GACvB6B,EAAQ,KACR,MAAM,QAAQ8H,CAAW,IAC3B9H,EAAQ8H,EAAY,IAElB9H,IAAU,OACZA,GAASiE,GAAMD,EAAK2D,EAAOxJ,MAAU,MAAQ6F,IAAO,OAASA,EAAKuC,EAAc,UAAUpI,CAAG,KAAO,MAAQ8F,IAAO,OAASA,EAAKkD,EAAOhJ,IAElH6B,GAAU,OAE9B,OAAOA,GAAU,WAAakB,GAAkBlB,CAAK,GAAKmB,GAAkBnB,CAAK,GACnFA,EAAQ,WAAWA,CAAK,EACf,CAACqG,GAAcrG,CAAK,GAAKiF,GAAQ,KAAK6C,CAAW,IAC1D9H,EAAQ8F,GAAmB3H,EAAK2J,CAAW,GAE7CvB,EAAc,SAASpI,EAAK8C,GAAYjB,EAAO,CAAE,MAAOuG,CAAc,CAAC,CAAC,EACpEoB,EAAOxJ,KAAS,SAClBwJ,EAAOxJ,GAAO6B,GAEZA,IAAU,MACZuG,EAAc,cAAcpI,EAAK6B,CAAK,EAC1C,CACF,CACA,SAAS+H,GAAwB5J,EAAK+I,EAAY,CAChD,OAAKA,GAEmBA,EAAW/I,IAAQ+I,EAAW,SAAcA,GAC7C,KAFrB,MAGJ,CACA,SAASc,GAAUb,EAAQD,EAAYX,EAAe,CACpD,IAAIvC,EACJ,IAAM2D,EAAS,CAAC,EAChB,QAAWxJ,KAAOgJ,EAAQ,CACxB,IAAMc,EAAmBF,GAAwB5J,EAAK+I,CAAU,EAChES,EAAOxJ,GAAO8J,IAAqB,OAASA,GAAoBjE,EAAKuC,EAAc,SAASpI,CAAG,KAAO,MAAQ6F,IAAO,OAAS,OAASA,EAAG,IAAI,CAChJ,CACA,OAAO2D,CACT,CAGA,IAAIO,GAAeC,GAAQA,EAAI,QAAQ,kBAAmB,OAAO,EAAE,YAAY,EAG3EC,GAAwB,iBACxBC,GAA+B,QAAUH,GAAYE,EAAqB,EAG1EE,GAAgBC,GAAYC,GAAMA,GAAK,GAAMD,EAAO,EAAIC,CAAC,EAAI,GAAK,EAAID,EAAO,GAAK,EAAIC,EAAE,GAAK,EAG7FC,GAAiBF,GAAYC,GAAM,EAAID,EAAO,EAAIC,CAAC,EAGnDE,GAAUF,GAAMA,EAAIA,EACpBG,GAAUF,GAAcC,EAAM,EAC9BE,GAAYN,GAAaI,EAAM,EAG/BG,GAAM,CAACC,EAAMC,EAAIC,IAAc,CAACA,EAAYF,EAAOE,EAAYD,EAAKD,EAGpEG,GAAQC,GAAQA,EAGhBC,GAAa,CAACC,EAAGC,EAAIC,OAAU,EAAI,EAAIA,EAAK,EAAID,GAAMD,GAAK,EAAIE,EAAK,EAAID,IAAOD,EAAI,EAAIC,GAAMD,EAC7FG,GAAuB,KACvBC,GAA2B,GAC/B,SAASC,GAAgBC,EAAGC,EAAYC,EAAYC,EAAKC,EAAK,CAC5D,IAAIC,EACAC,EACArM,EAAI,EACR,GACEqM,EAAWL,GAAcC,EAAaD,GAAc,EACpDI,EAAWZ,GAAWa,EAAUH,EAAKC,CAAG,EAAIJ,EACxCK,EAAW,EACbH,EAAaI,EAEbL,EAAaK,QAER,KAAK,IAAID,CAAQ,EAAIR,IAAwB,EAAE5L,EAAI6L,IAC5D,OAAOQ,CACT,CACA,SAASC,GAAYJ,EAAKK,EAAKJ,EAAKK,EAAK,CACvC,GAAIN,IAAQK,GAAOJ,IAAQK,EACzB,OAAOlB,GACT,IAAMmB,EAAYC,GAAOZ,GAAgBY,EAAI,EAAG,EAAGR,EAAKC,CAAG,EAC3D,OAAQV,GAAMA,IAAM,GAAKA,IAAM,EAAIA,EAAID,GAAWiB,EAAShB,CAAC,EAAGc,EAAKC,CAAG,CACzE,CAGA,IAAIG,GAAU9B,GAAM,EAAI,KAAK,IAAI,KAAK,KAAKA,CAAC,CAAC,EACzC+B,GAAU9B,GAAc6B,EAAM,EAC9BE,GAAYlC,GAAaiC,EAAO,EAGhCE,GAAUR,GAAY,IAAM,KAAM,IAAM,GAAI,EAC5CS,GAASjC,GAAcgC,EAAO,EAC9BE,GAAYrC,GAAaoC,EAAM,EAG/BE,GAAcpC,IAAOA,GAAK,GAAK,EAAI,GAAMkC,GAAOlC,CAAC,EAAI,IAAO,EAAI,KAAK,IAAI,EAAG,KAAOA,EAAI,EAAE,GAGzFqC,GAAU,UAAW,CACzB,EACIC,GAAY,UAAW,CAC3B,EAeIC,GAAU,KACVC,GAAc,IACdC,GAAc,GACdC,GAAa,IACbC,GAAa,EACjB,SAASC,GAAW,CAAE,SAAAC,EAAW,IAAK,OAAAC,EAAS,IAAM,SAAAzL,EAAW,EAAG,KAAA0L,EAAO,CAAE,EAAG,CAC7E,IAAIC,EACAC,EACJZ,GAAQQ,GAAYJ,GAAc,IAAK,4CAA4C,EACnF,IAAIS,EAAe,EAAIJ,EACvBI,EAAe/J,GAAMuJ,GAAYC,GAAYO,CAAY,EACzDL,EAAW1J,GAAMqJ,GAAaC,GAAaI,EAAW,GAAG,EACrDK,EAAe,GACjBF,EAAYG,GAAkB,CAC5B,IAAMC,EAAmBD,EAAgBD,EACnCpL,EAAQsL,EAAmBP,EAC3B7L,EAAIoM,EAAmB/L,EACvBJ,EAAIoM,GAAgBF,EAAeD,CAAY,EAC/ChM,EAAI,KAAK,IAAI,CAACY,CAAK,EACzB,OAAOyK,GAAUvL,EAAIC,EAAIC,CAC3B,EACA+L,EAAcE,GAAkB,CAE9B,IAAMrL,EADmBqL,EAAgBD,EACRL,EAC3B,EAAI/K,EAAQT,EAAWA,EACvBiM,EAAI,KAAK,IAAIJ,EAAc,CAAC,EAAI,KAAK,IAAIC,EAAe,CAAC,EAAIN,EAC7DU,EAAI,KAAK,IAAI,CAACzL,CAAK,EACnB,EAAIuL,GAAgB,KAAK,IAAIF,EAAe,CAAC,EAAGD,CAAY,EAElE,OADe,CAACF,EAASG,CAAa,EAAIZ,GAAU,EAAI,GAAK,KAC3C,EAAIe,GAAKC,GAAK,CAClC,IAEAP,EAAYG,GAAkB,CAC5B,IAAMnM,EAAI,KAAK,IAAI,CAACmM,EAAgBN,CAAQ,EACtC5L,GAAKkM,EAAgB9L,GAAYwL,EAAW,EAClD,MAAO,CAACN,GAAUvL,EAAIC,CACxB,EACAgM,EAAcE,GAAkB,CAC9B,IAAMnM,EAAI,KAAK,IAAI,CAACmM,EAAgBN,CAAQ,EACtC5L,GAAKI,EAAW8L,IAAkBN,EAAWA,GACnD,OAAO7L,EAAIC,CACb,GAEF,IAAMuM,EAAe,EAAIX,EACnBY,EAAeC,GAAgBV,EAAUC,EAAYO,CAAY,EAEvE,GADAX,EAAWA,EAAW,IAClB,MAAMY,CAAY,EACpB,MAAO,CACL,UAAW,IACX,QAAS,GACT,SAAAZ,CACF,EACK,CACL,IAAMc,EAAY,KAAK,IAAIF,EAAc,CAAC,EAAIV,EAC9C,MAAO,CACL,UAAAY,EACA,QAAST,EAAe,EAAI,KAAK,KAAKH,EAAOY,CAAS,EACtD,SAAAd,CACF,CACF,CACF,CACA,IAAIe,GAAiB,GACrB,SAASF,GAAgBV,EAAUC,EAAYO,EAAc,CAC3D,IAAIK,EAASL,EACb,QAAS,EAAI,EAAG,EAAII,GAAgB,IAClCC,EAASA,EAASb,EAASa,CAAM,EAAIZ,EAAWY,CAAM,EAExD,OAAOA,CACT,CACA,SAASR,GAAgBI,EAAcP,EAAc,CACnD,OAAOO,EAAe,KAAK,KAAK,EAAIP,EAAeA,CAAY,CACjE,CAGA,IAAIY,GAAe,CAAC,WAAY,QAAQ,EACpCC,GAAc,CAAC,YAAa,UAAW,MAAM,EACjD,SAASC,GAAarM,EAASsM,EAAO,CACpC,OAAOA,EAAM,KAAMtO,GAAQgC,EAAQhC,KAAS,MAAM,CACpD,CACA,SAASuO,GAAiBvM,EAAS,CACjC,IAAIwM,EAAgB,CAClB,SAAU,EACV,UAAW,IACX,QAAS,GACT,KAAM,EACN,uBAAwB,GACxB,GAAGxM,CACL,EACA,GAAI,CAACqM,GAAarM,EAASoM,EAAW,GAAKC,GAAarM,EAASmM,EAAY,EAAG,CAC9E,IAAMM,EAAUxB,GAAWjL,CAAO,EAClCwM,EAAgB,CACd,GAAGA,EACH,GAAGC,EACH,SAAU,EACV,KAAM,CACR,EACAD,EAAc,uBAAyB,EACzC,CACA,OAAOA,CACT,CACA,IAAIE,GAAyB,EAC7B,SAASC,GAAO,CAAE,UAAWC,EAAY,UAAAC,EAAY,EAAG,UAAAC,EAAY,OAAS9M,CAAQ,EAAG,CACtF,IAAIwH,EAASoF,EAAW,GACpB5F,EAAS4F,EAAWA,EAAW,OAAS,GACtCG,EAAQ,CAAE,KAAM,GAAO,MAAOvF,CAAO,EACrC,CAAE,UAAAwE,EAAW,QAAAgB,EAAS,KAAA5B,EAAM,SAAA1L,EAAU,SAAAwL,EAAU,uBAAA+B,CAAuB,EAAIV,GAAiBvM,CAAO,EACrGkN,EAAgBC,GAChBC,EAAkB1N,EAAW,EAAEA,EAAW,KAAO,EAC/C6L,EAAeyB,GAAW,EAAI,KAAK,KAAKhB,EAAYZ,CAAI,GAC9D,SAASiC,GAAe,CACtB,IAAMC,EAAetG,EAASQ,EACxB+F,EAAsB,KAAK,KAAKvB,EAAYZ,CAAI,EAAI,IAI1D,GAHI0B,IAAc,SAChBA,EAAY,KAAK,IAAI,KAAK,IAAI9F,EAASQ,CAAM,EAAI,IAAK,EAAG,GAEvD+D,EAAe,EAAG,CACpB,IAAMiC,EAAc9B,GAAgB6B,EAAqBhC,CAAY,EACrE2B,EAAiBjE,GAAM,CACrB,IAAMoC,EAAW,KAAK,IAAI,CAACE,EAAegC,EAAsBtE,CAAC,EACjE,OAAOjC,EAASqE,IAAa+B,EAAkB7B,EAAegC,EAAsBD,GAAgBE,EAAc,KAAK,IAAIA,EAAcvE,CAAC,EAAIqE,EAAe,KAAK,IAAIE,EAAcvE,CAAC,EACvL,CACF,SAAWsC,IAAiB,EAC1B2B,EAAiBjE,GAAMjC,EAAS,KAAK,IAAI,CAACuG,EAAsBtE,CAAC,GAAKqE,GAAgBF,EAAkBG,EAAsBD,GAAgBrE,OACzI,CACL,IAAMwE,EAAoBF,EAAsB,KAAK,KAAKhC,EAAeA,EAAe,CAAC,EACzF2B,EAAiBjE,GAAM,CACrB,IAAMoC,EAAW,KAAK,IAAI,CAACE,EAAegC,EAAsBtE,CAAC,EAC3DyE,EAAW,KAAK,IAAID,EAAoBxE,EAAG,GAAG,EACpD,OAAOjC,EAASqE,IAAa+B,EAAkB7B,EAAegC,EAAsBD,GAAgB,KAAK,KAAKI,CAAQ,EAAID,EAAoBH,EAAe,KAAK,KAAKI,CAAQ,GAAKD,CACtL,CACF,CACF,CACA,OAAAJ,EAAa,EACN,CACL,KAAOpE,GAAM,CACX,IAAMtI,EAAUuM,EAAcjE,CAAC,EAC/B,GAAKgE,EAcHF,EAAM,KAAO9D,GAAKiC,MAdS,CAC3B,IAAIyC,EAAkBP,EACtB,GAAInE,IAAM,EACR,GAAIsC,EAAe,EAAG,CACpB,IAAMqC,EAAQ,KAAK,IAAI,EAAG3E,EAAIyD,EAAsB,EACpDiB,EAAkBlO,GAAkBkB,EAAUuM,EAAcU,CAAK,EAAG3E,EAAI2E,CAAK,CAC/E,MACED,EAAkB,EAGtB,IAAME,EAA2B,KAAK,IAAIF,CAAe,GAAKd,EACxDiB,EAA+B,KAAK,IAAI9G,EAASrG,CAAO,GAAKmM,EACnEC,EAAM,KAAOc,GAA4BC,CAC3C,CAGA,OAAAf,EAAM,MAAQA,EAAM,KAAO/F,EAASrG,EAC7BoM,CACT,EACA,WAAY,IAAM,CAChBK,EAAkB,CAACA,EACnB,CAAC5F,EAAQR,CAAM,EAAI,CAACA,EAAQQ,CAAM,EAClC6F,EAAa,CACf,CACF,CACF,CACAV,GAAO,mBAAqB,CAACtN,EAAGC,IAAM,OAAOD,GAAM,UAAY,OAAOC,GAAM,SAC5E,IAAI6N,GAAQY,GAAO,EAGnB,SAASC,GAAMxR,EAAUyR,EAAS,CAChC,IAAMC,EAAQ,YAAY,IAAI,EACxBC,EAAe,CAAC,CAAE,UAAA1P,CAAU,IAAM,CACtC,IAAM2P,EAAU3P,EAAYyP,EACxBE,GAAWH,IACb7P,GAAW,KAAK+P,CAAY,EAC5B3R,EAAS4R,EAAUH,CAAO,EAE9B,EACA,OAAAhQ,GAAK,KAAKkQ,EAAc,EAAI,EACrB,IAAM/P,GAAW,KAAK+P,CAAY,CAC3C,CAGA,SAASE,GAAwBxO,EAAO,CACtC,OAAO,QAAQyO,GAAczO,CAAK,GAAKA,EAAM,GAAG,CAClD,CAGA,IAAI0O,GAAgB,CAACC,EAAK3O,IAAU,GAAG2O,MAAQ3O,IAG/C,SAAS4O,GAAgCD,EAAKvJ,EAAMpF,EAAO,CACzD,GAAM,CAAE,uBAAA6O,CAAuB,EAAInS,EAC7BoS,EAAcJ,GAAcC,EAAKI,GAAe,IAAI3J,CAAI,EAAI,YAAcA,CAAI,EAC9E4J,EAAYH,GAA0BA,EAAuB,IAAIC,CAAW,EAClF,GAAIE,EAAW,CACb,IAAMC,EAAc,YAAY,IAAI,EACpC,OAAA7Q,GAAK,OAAO,IAAM,CACZ4B,EAAM,YACRA,EAAM,UAAU,YAAc,YAAY,IAAI,EAAIiP,EAEtD,CAAC,EACD7Q,GAAK,OAAO,IAAM,CAChByQ,EAAuB,OAAOC,CAAW,EACzC,GAAI,CACFE,EAAU,OAAO,CACnB,MAAE,CACF,CACF,CAAC,EACMA,EAAU,aAAe,CAClC,KACE,OAAO,EAEX,CAGA,IAAIE,GAAyBC,GAAYA,EAAU,IAG/CC,GAAwB,CAC1B,QAAS,EACX,EAGA,SAASC,GAAS7G,EAAG8G,EAAGlG,EAAG,CAKzB,OAJIA,EAAI,IACNA,GAAK,GACHA,EAAI,IACNA,GAAK,GACHA,EAAI,EAAI,EACHZ,GAAK8G,EAAI9G,GAAK,EAAIY,EACvBA,EAAI,EAAI,EACHkG,EACLlG,EAAI,EAAI,EACHZ,GAAK8G,EAAI9G,IAAM,EAAI,EAAIY,GAAK,EAC9BZ,CACT,CACA,SAAS+G,GAAW,CAAE,IAAA9L,EAAK,WAAAC,EAAY,UAAAC,EAAW,MAAOvB,CAAO,EAAG,CACjEqB,GAAO,IACPC,GAAc,IACdC,GAAa,IACb,IAAInB,EAAM,EACNC,EAAQ,EACRC,EAAO,EACX,GAAI,CAACgB,EACHlB,EAAMC,EAAQC,EAAOiB,MAChB,CACL,IAAM2L,EAAI3L,EAAY,GAAMA,GAAa,EAAID,GAAcC,EAAYD,EAAaC,EAAYD,EAC1F8E,EAAI,EAAI7E,EAAY2L,EAC1B9M,EAAM6M,GAAS7G,EAAG8G,EAAG7L,EAAM,EAAI,CAAC,EAChChB,EAAQ4M,GAAS7G,EAAG8G,EAAG7L,CAAG,EAC1Bf,EAAO2M,GAAS7G,EAAG8G,EAAG7L,EAAM,EAAI,CAAC,CACnC,CACA,MAAO,CACL,IAAK,KAAK,MAAMjB,EAAM,GAAG,EACzB,MAAO,KAAK,MAAMC,EAAQ,GAAG,EAC7B,KAAM,KAAK,MAAMC,EAAO,GAAG,EAC3B,MAAON,CACT,CACF,CAGA,IAAIoN,GAAiB,CAAC1G,EAAMC,EAAI3I,IAAM,CACpC,IAAMqP,EAAW3G,EAAOA,EACxB,OAAO,KAAK,KAAK,KAAK,IAAI,EAAG1I,GAAK2I,EAAKA,EAAK0G,GAAYA,CAAQ,CAAC,CACnE,EACIC,GAAa,CAAC3M,GAAKR,GAAMiB,EAAI,EAC7BmM,GAAgBvP,GAAMsP,GAAW,KAAM5N,GAASA,EAAK,KAAK1B,CAAC,CAAC,EAChE,SAASwP,GAAOC,EAAQ,CACtB,IAAM/N,EAAO6N,GAAaE,CAAM,EAChC/E,GAAU,QAAQhJ,CAAI,EAAG,IAAI+N,uEAA4E,EACzG,IAAIC,EAAQhO,EAAK,MAAM+N,CAAM,EAC7B,OAAI/N,IAAS0B,KACXsM,EAAQP,GAAWO,CAAK,GAEnBA,CACT,CACA,IAAIC,GAAW,CAACjH,EAAMC,IAAO,CAC3B,IAAMiH,EAAWJ,GAAO9G,CAAI,EACtBmH,EAASL,GAAO7G,CAAE,EAClBmH,EAAU,CAAE,GAAGF,CAAS,EAC9B,OAAQ5P,IACN8P,EAAQ,IAAMV,GAAeQ,EAAS,IAAKC,EAAO,IAAK7P,CAAC,EACxD8P,EAAQ,MAAQV,GAAeQ,EAAS,MAAOC,EAAO,MAAO7P,CAAC,EAC9D8P,EAAQ,KAAOV,GAAeQ,EAAS,KAAMC,EAAO,KAAM7P,CAAC,EAC3D8P,EAAQ,MAAQrH,GAAImH,EAAS,MAAOC,EAAO,MAAO7P,CAAC,EAC5CmC,GAAK,UAAU2N,CAAO,EAEjC,EAGA,SAASC,GAASxI,EAAQR,EAAQ,CAChC,OAAI,OAAOQ,GAAW,SACZvH,GAAMyI,GAAIlB,EAAQR,EAAQ/G,CAAC,EAC1BwD,GAAM,KAAK+D,CAAM,EACnBoI,GAASpI,EAAQR,CAAM,EAEvBiJ,GAAWzI,EAAQR,CAAM,CAEpC,CACA,IAAIkJ,GAAW,CAACvH,EAAMC,IAAO,CAC3B,IAAMlE,EAAS,CAAC,GAAGiE,CAAI,EACjBlE,EAAYC,EAAO,OACnByL,EAAaxH,EAAK,IAAI,CAACyH,EAAU5S,IAAMwS,GAASI,EAAUxH,EAAGpL,EAAE,CAAC,EACtE,OAAQyC,GAAM,CACZ,QAASzC,EAAI,EAAGA,EAAIiH,EAAWjH,IAC7BkH,EAAOlH,GAAK2S,EAAW3S,GAAGyC,CAAC,EAE7B,OAAOyE,CACT,CACF,EACI2L,GAAY,CAAC7I,EAAQR,IAAW,CAClC,IAAMtC,EAAS,CAAE,GAAG8C,EAAQ,GAAGR,CAAO,EAChCmJ,EAAa,CAAC,EACpB,QAAWnS,KAAO0G,EACZ8C,EAAOxJ,KAAS,QAAUgJ,EAAOhJ,KAAS,SAC5CmS,EAAWnS,GAAOgS,GAASxI,EAAOxJ,GAAMgJ,EAAOhJ,EAAI,GAGvD,OAAQiC,GAAM,CACZ,QAAWjC,KAAOmS,EAChBzL,EAAO1G,GAAOmS,EAAWnS,GAAKiC,CAAC,EAEjC,OAAOyE,CACT,CACF,EACIuL,GAAa,CAACzI,EAAQR,IAAW,CACnC,IAAMsJ,EAAWxL,GAAQ,kBAAkBkC,CAAM,EAC3CuJ,EAAcxM,GAAoByD,CAAM,EACxCgJ,EAAczM,GAAoBiD,CAAM,EAE9C,OADuBuJ,EAAY,YAAcC,EAAY,WAAaD,EAAY,YAAcC,EAAY,WAEvGC,GAAKP,GAASK,EAAY,OAAQC,EAAY,MAAM,EAAGF,CAAQ,GAEtE5F,GAAQ,GAAM,mBAAmBlD,WAAgBR,2KAAgL,EACzNqB,GAAM,GAAGA,EAAI,EAAIrB,EAASQ,IAEtC,EAGIkJ,GAAW,CAAC/H,EAAMC,EAAI/I,IAAU,CAClC,IAAM8Q,EAAmB/H,EAAKD,EAC9B,OAAOgI,IAAqB,EAAI,GAAK9Q,EAAQ8I,GAAQgI,CACvD,EAGIC,GAAY,CAACjI,EAAMC,IAAQP,GAAMK,GAAIC,EAAMC,EAAIP,CAAC,EACpD,SAASwI,GAAmB5Q,EAAG,CAC7B,OAAI,OAAOA,GAAM,SACR2Q,GACE,OAAO3Q,GAAM,SAClBwD,GAAM,KAAKxD,CAAC,EACP2P,GAEAK,GAEA,MAAM,QAAQhQ,CAAC,EACjBiQ,GACE,OAAOjQ,GAAM,SACfoQ,GAEFO,EACT,CACA,SAASE,GAAapM,EAAQqM,EAAMC,EAAa,CAC/C,IAAMC,EAAS,CAAC,EACVC,EAAeF,GAAeH,GAAmBnM,EAAO,EAAE,EAC1DyM,EAAYzM,EAAO,OAAS,EAClC,QAASlH,EAAI,EAAGA,EAAI2T,EAAW3T,IAAK,CAClC,IAAI4T,EAAQF,EAAaxM,EAAOlH,GAAIkH,EAAOlH,EAAI,EAAE,EACjD,GAAIuT,EAAM,CACR,IAAMM,EAAiB,MAAM,QAAQN,CAAI,EAAIA,EAAKvT,GAAKuT,EACvDK,EAAQX,GAAKY,EAAgBD,CAAK,CACpC,CACAH,EAAO,KAAKG,CAAK,CACnB,CACA,OAAOH,CACT,CACA,SAASK,GAAYC,EAAO7M,EAAQ,CAAE,MAAO8M,EAAU,GAAM,KAAAT,EAAM,MAAAK,CAAM,EAAI,CAAC,EAAG,CAC/E,IAAMK,EAAcF,EAAM,OAC1B5G,GAAU8G,IAAgB/M,EAAO,OAAQ,sDAAsD,EAC/FiG,GAAU,CAACoG,GAAQ,CAAC,MAAM,QAAQA,CAAI,GAAKA,EAAK,SAAWU,EAAc,EAAG,kIAAkI,EAC1MF,EAAM,GAAKA,EAAME,EAAc,KACjCF,EAAQ,CAAC,GAAGA,CAAK,EAAE,QAAQ,EAC3B7M,EAAS,CAAC,GAAGA,CAAM,EAAE,QAAQ,GAE/B,IAAMuM,EAASH,GAAapM,EAAQqM,EAAMK,CAAK,EACzCD,EAAYF,EAAO,OACnBS,EAAgBzR,GAAM,CAC1B,IAAIzC,EAAI,EACR,GAAI2T,EAAY,EACd,KAAO3T,EAAI+T,EAAM,OAAS,GACpB,EAAAtR,EAAIsR,EAAM/T,EAAI,IADSA,IAC3B,CAIJ,IAAMmU,EAAkBjB,GAASa,EAAM/T,GAAI+T,EAAM/T,EAAI,GAAIyC,CAAC,EAC1D,OAAOgR,EAAOzT,GAAGmU,CAAe,CAClC,EACA,OAAOH,EAAWvR,GAAMyR,EAAalQ,GAAM+P,EAAM,GAAIA,EAAME,EAAc,GAAIxR,CAAC,CAAC,EAAIyR,CACrF,CAGA,IAAIE,GAAe,CACjB,OAAQ9I,GACR,OAAAP,GACA,UAAAE,GACA,QAAAD,GACA,OAAA2B,GACA,UAAAE,GACA,QAAAD,GACA,OAAAG,GACA,UAAAC,GACA,QAAAF,GACA,WAAAG,EACF,EACIoH,GAA8BtL,GAAe,CAC/C,GAAI,MAAM,QAAQA,CAAU,EAAG,CAC7BoE,GAAUpE,EAAW,SAAW,EAAG,yDAAyD,EAC5F,GAAM,CAACuL,EAAIC,EAAIC,EAAIC,CAAE,EAAI1L,EACzB,OAAOuD,GAAYgI,EAAIC,EAAIC,EAAIC,CAAE,CACnC,SAAW,OAAO1L,GAAe,SAC/B,OAAAoE,GAAUiH,GAAarL,KAAgB,OAAQ,wBAAwBA,IAAa,EAC7EqL,GAAarL,GAEtB,OAAOA,CACT,EACI2L,GAAiBnB,GACZ,MAAM,QAAQA,CAAI,GAAK,OAAOA,EAAK,IAAO,SAInD,SAASoB,GAAcnO,EAAQoE,EAAQ,CACrC,OAAOpE,EAAO,IAAI,IAAMoE,GAAUK,EAAS,EAAE,OAAO,EAAGzE,EAAO,OAAS,CAAC,CAC1E,CACA,SAASoO,GAAcpO,EAAQ,CAC7B,IAAMS,EAAYT,EAAO,OACzB,OAAOA,EAAO,IAAI,CAACqO,EAAQ7U,IAAMA,IAAM,EAAIA,GAAKiH,EAAY,GAAK,CAAC,CACpE,CACA,SAAS6N,GAAqBC,EAAQrH,EAAU,CAC9C,OAAOqH,EAAO,IAAKC,GAAMA,EAAItH,CAAQ,CACvC,CACA,SAASuH,GAAU,CAAE,UAAWC,EAAgB,KAAA3B,EAAOtI,GAAW,MAAAkK,EAAO,SAAAzH,EAAW,GAAI,EAAG,CACzFwH,EAAiB,CAAC,GAAGA,CAAc,EACnC,IAAME,EAAkBV,GAAcnB,CAAI,EAAIA,EAAK,IAAIc,EAA0B,EAAIA,GAA2Bd,CAAI,EAC9GhE,EAAQ,CACZ,KAAM,GACN,MAAO2F,EAAe,EACxB,EACMG,EAAgBP,GACpBK,GAASA,EAAM,SAAWD,EAAe,OAASC,EAAQP,GAAcM,CAAc,EACtFxH,CACF,EACA,SAAS4H,GAAqB,CAC5B,OAAOxB,GAAYuB,EAAeH,EAAgB,CAChD,KAAM,MAAM,QAAQE,CAAe,EAAIA,EAAkBT,GAAcO,EAAgBE,CAAe,CACxG,CAAC,CACH,CACA,IAAIlB,EAAeoB,EAAmB,EACtC,MAAO,CACL,KAAO7J,IACL8D,EAAM,MAAQ2E,EAAazI,CAAC,EAC5B8D,EAAM,KAAO9D,GAAKiC,EACX6B,GAET,WAAY,IAAM,CAChB2F,EAAe,QAAQ,EACvBhB,EAAeoB,EAAmB,CACpC,CACF,CACF,CAGA,SAASC,GAAM,CACb,UAAWnG,EAAa,CAAC,CAAC,EAC1B,SAAAlN,EAAW,EACX,MAAAsT,EAAQ,GACR,aAAAC,EAAe,IACf,UAAAnG,EAAY,GACZ,aAAAoG,CACF,EAAG,CACD,IAAM1L,EAASoF,EAAW,GACpBG,EAAQ,CAAE,KAAM,GAAO,MAAOvF,CAAO,EACvC2L,EAAYH,EAAQtT,EAClB0T,EAAQ5L,EAAS2L,EACjBnM,EAASkM,IAAiB,OAASE,EAAQF,EAAaE,CAAK,EACnE,OAAIpM,IAAWoM,IACbD,EAAYnM,EAASQ,GAChB,CACL,KAAOyB,GAAM,CACX,IAAM9I,EAAQ,CAACgT,EAAY,KAAK,IAAI,CAAClK,EAAIgK,CAAY,EACrD,OAAAlG,EAAM,KAAO,EAAE5M,EAAQ2M,GAAa3M,EAAQ,CAAC2M,GAC7CC,EAAM,MAAQA,EAAM,KAAO/F,EAASA,EAAS7G,EACtC4M,CACT,EACA,WAAY,IAAM,CAClB,CACF,CACF,CAGA,IAAIsG,GAAQ,CACV,MAAAN,GACA,UAAAN,GACA,MAAOA,GACP,OAAA9F,EACF,EACA,SAAS2G,GAAYlF,EAASlD,EAAUqI,EAAS,EAAG,CAClD,OAAOnF,EAAUlD,EAAWqI,CAC9B,CACA,SAASC,GAAepF,EAASlD,EAAW,EAAGqI,EAAS,EAAGE,EAAoB,GAAM,CACnF,OAAOA,EAAoBH,GAAYpI,EAAW,CAACkD,EAASlD,EAAUqI,CAAM,EAAIrI,GAAYkD,EAAUlD,GAAYqI,CACpH,CACA,SAASG,GAAsBtF,EAASlD,EAAUqI,EAAQE,EAAmB,CAC3E,OAAOA,EAAoBrF,GAAWlD,EAAWqI,EAASnF,GAAW,CAACmF,CACxE,CACA,IAAII,GAAaC,GAAW,CAC1B,IAAMC,EAAgB,CAAC,CAAE,MAAA1T,CAAM,IAAMyT,EAAOzT,CAAK,EACjD,MAAO,CACL,MAAO,IAAMlC,GAAK,OAAO4V,EAAe,EAAI,EAC5C,KAAM,IAAMzV,GAAW,OAAOyV,CAAa,CAC7C,CACF,EACA,SAASC,GAAQ,CAAE,SAAA5I,EAAU,OAAA6I,EAASJ,GAAW,QAAAvF,EAAU,EAAG,OAAQ4F,EAAY,EAAG,WAAAC,EAAa,OAAQ,YAAAC,EAAc,EAAG,UAAWC,EAAa,SAAAC,EAAW,GAAM,OAAAC,EAAQ,OAAAC,EAAQ,WAAAC,EAAY,SAAAC,EAAU,SAAAC,EAAU,KAAA9S,EAAO,eAAgB3B,CAAQ,EAAG,CACpP,IAAI6D,EAAIC,EACR,IAAM4Q,EAAiBtG,EACnBuG,EACAC,EAAc,EACdC,EAAmB3J,EACnB4J,EAAa,GACbrB,EAAoB,GACpBsB,EACEC,EAAW3B,GAAMc,EAAY,OAAS,EAAI,YAAcxS,IAAS8Q,GACjEjL,EAAS2M,EAAY,GACrBnN,EAASmN,EAAYA,EAAY,OAAS,GAC5CpH,EAAQ,CAAE,KAAM,GAAO,MAAOvF,CAAO,EACpC,GAAA1D,GAAMD,EAAKmR,GAAU,sBAAwB,MAAQlR,IAAO,SAAkBA,EAAG,KAAKD,EAAI2D,EAAQR,CAAM,IAC3G+N,EAAwBzD,GAAY,CAAC,EAAG,GAAG,EAAG,CAAC9J,EAAQR,CAAM,EAAG,CAC9D,MAAO,EACT,CAAC,EACDmN,EAAc,CAAC,EAAG,GAAG,GAEvB,IAAMtF,EAAYmG,EAAS,CACzB,GAAGhV,EACH,SAAAkL,EACA,UAAWiJ,CACb,CAAC,EACD,SAASc,GAAS,CAChBL,IACIX,IAAe,WACjBR,EAAoBmB,EAAc,IAAM,EACxCxG,EAAUoF,GAAepF,EAASyG,EAAkBX,EAAaT,CAAiB,IAElFrF,EAAUkF,GAAYlF,EAASyG,EAAkBX,CAAW,EACxDD,IAAe,UACjBpF,EAAU,WAAW,GAEzBiG,EAAa,GACbN,GAAYA,EAAS,CACvB,CACA,SAASU,GAAW,CAClBP,GAAkBA,EAAe,KAAK,EACtCJ,GAAcA,EAAW,CAC3B,CACA,SAASX,EAAOzT,EAAO,CAChBsT,IACHtT,EAAQ,CAACA,GACXiO,GAAWjO,EACN2U,IACH/H,EAAQ8B,EAAU,KAAK,KAAK,IAAI,EAAGT,CAAO,CAAC,EACvC2G,IACFhI,EAAM,MAAQgI,EAAsBhI,EAAM,KAAK,GACjD+H,EAAarB,EAAoB1G,EAAM,KAAOqB,GAAW,GAE3DqG,GAAYA,EAAS1H,EAAM,KAAK,EAC5B+H,IACEF,IAAgB,IAClBC,EAAmBA,IAAqB,OAASA,EAAmBzG,GAElEwG,EAAcZ,EAChBN,GAAsBtF,EAASyG,EAAkBX,EAAaT,CAAiB,GAAKwB,EAAO,EAE3FC,EAAS,EAGf,CACA,SAASC,GAAO,CACdd,GAAUA,EAAO,EACjBM,EAAiBZ,EAAOH,CAAM,EAC9Be,EAAe,MAAM,CACvB,CACA,OAAAP,GAAYe,EAAK,EACV,CACL,KAAM,IAAM,CACVb,GAAUA,EAAO,EACjBK,GAAkBA,EAAe,KAAK,CACxC,EACA,IAAI,YAAY1L,EAAG,CACjBmF,EAAUsG,EACVd,EAAO3K,CAAC,CACV,EACA,OAASA,GAAM,CACbmF,EAAUsG,EACV,IAAMU,EAAmBlK,GAAY,OAAOA,GAAa,SAAW,KAAK,IAAIA,EAAW,GAAK,EAAE,EAAI,GAC/FmK,EAAgB,EAEpB,IADAzB,EAAO,CAAC,EACDyB,GAAiBpM,GAAG,CACzB,IAAMqM,EAAYrM,EAAIoM,EACtBzB,EAAO,KAAK,IAAI0B,EAAWF,CAAgB,CAAC,EAC5CC,GAAiBD,CACnB,CACA,OAAOrI,CACT,CACF,CACF,CAGA,SAASwI,GAAuBnN,EAAQ,CACtC,MAAO,CAACA,GAAU,MAAM,QAAQA,CAAM,GAAK,OAAOA,GAAW,UAAYoN,GAAqBpN,EAChG,CACA,IAAIqN,GAAsB,CAAC,CAACpW,EAAGC,EAAGC,EAAGmW,CAAC,IAAM,gBAAgBrW,MAAMC,MAAMC,MAAMmW,KAC1EF,GAAuB,CACzB,OAAQ,SACR,KAAM,OACN,OAAQ,UACR,QAAS,WACT,UAAW,cACX,OAAQC,GAAoB,CAAC,EAAG,IAAM,IAAM,CAAC,CAAC,EAC9C,QAASA,GAAoB,CAAC,IAAM,EAAG,EAAG,GAAI,CAAC,EAC/C,OAAQA,GAAoB,CAAC,IAAM,IAAM,IAAM,IAAK,CAAC,EACrD,QAASA,GAAoB,CAAC,IAAM,KAAM,IAAM,GAAI,CAAC,CACvD,EACA,SAASE,GAAwBvN,EAAQ,CACvC,GAAKA,EAEL,OAAO,MAAM,QAAQA,CAAM,EAAIqN,GAAoBrN,CAAM,EAAIoN,GAAqBpN,EACpF,CAGA,SAASwN,GAAaC,EAASC,EAAWlJ,EAAY,CAAE,MAAO2G,EAAS,EAAG,SAAArI,EAAU,OAAA+J,EAAS,EAAG,WAAAhB,EAAa,OAAQ,KAAAlD,EAAM,MAAA4B,CAAM,EAAI,CAAC,EAAG,CACxI,OAAOkD,EAAQ,QAAQ,CAAE,CAACC,GAAYlJ,EAAY,OAAQ+F,CAAM,EAAG,CACjE,MAAOY,EACP,SAAArI,EACA,OAAQyK,GAAwB5E,CAAI,EACpC,KAAM,OACN,WAAYkE,EAAS,EACrB,UAAWhB,IAAe,UAAY,YAAc,QACtD,CAAC,CACH,CAGA,IAAI8B,GAAe,CACjB,MAAO,IAAM,OAAO,eAAe,KAAK,QAAQ,UAAW,SAAS,CACtE,EACIC,GAAU,CAAC,EACXC,GAAW,CAAC,EAChB,QAAWjY,KAAO+X,GAChBE,GAASjY,GAAO,KACVgY,GAAQhY,KAAS,SACnBgY,GAAQhY,GAAO+X,GAAa/X,GAAK,GAC5BgY,GAAQhY,IAKnB,SAASkY,GAAiBtJ,EAAY,CAAE,OAAAqI,EAAQ,WAAAhB,EAAa,MAAO,EAAG,CACrE,IAAM3W,EAAQ2X,GAAUhB,IAAe,QAAUgB,EAAS,IAAM,EAAI,EAAIrI,EAAW,OAAS,EAC5F,OAAOA,EAAWtP,EACpB,CAGA,IAAI6Y,GAAoC,IAAI,IAAI,CAAC,SAAS,CAAC,EACvDC,GAAc,GAClB,SAASC,GAA2BxW,EAAOiW,EAAW,CAAE,SAAArB,EAAU,WAAAF,KAAevU,CAAQ,EAAG,CAE1F,GAAI,EAD2BiW,GAAS,MAAM,GAAKE,GAAkB,IAAIL,CAAS,GAAK,CAAC9V,EAAQ,aAAeA,EAAQ,aAAe,UAAYA,EAAQ,UAAY,GAEpK,MAAO,GACT,GAAI,CAAE,UAAW4M,EAAY,SAAA1B,EAAW,IAAK,QAAAkD,EAAU,EAAG,KAAA2C,CAAK,EAAI/Q,EACnE,GAAIA,EAAQ,OAAS,UAAY,CAACuV,GAAuBvV,EAAQ,IAAI,EAAG,CACtE,GAAIA,EAAQ,SAAW,IACrB,OACF,IAAMsW,EAAkBxC,GAAQ,CAAE,GAAG9T,EAAS,QAAS,CAAE,CAAC,EACtD+M,EAAQ,CAAE,KAAM,GAAO,MAAOH,EAAW,EAAG,EAC1C2J,EAAwB,CAAC,EAC3BtN,EAAI,EACR,KAAO,CAAC8D,EAAM,MAAQ9D,EAAI,KACxB8D,EAAQuJ,EAAgB,OAAOrN,CAAC,EAChCsN,EAAsB,KAAKxJ,EAAM,KAAK,EACtC9D,GAAKmN,GAEPxJ,EAAa2J,EACbrL,EAAWjC,EAAImN,GACfrF,EAAO,QACT,CACA,IAAMlC,EAAY+G,GAAa/V,EAAM,MAAM,QAASiW,EAAWlJ,EAAY,CACzE,GAAG5M,EACH,MAAO,CAACoO,EACR,SAAAlD,EACA,KAAA6F,CACF,CAAC,EACD,OAAAlC,EAAU,SAAW,IAAM,CACzBhP,EAAM,IAAIqW,GAAiBtJ,EAAY5M,CAAO,CAAC,EAC/CuU,GAAcA,EAAW,CAC3B,EACO,CACL,IAAI,aAAc,CAChB,OAAO1F,EAAU,aAAe,CAClC,EACA,IAAI,YAAY5F,EAAG,CACjB4F,EAAU,YAAc5F,CAC1B,EACA,KAAM,IAAM,CACV,GAAM,CAAE,YAAAuN,CAAY,EAAI3H,EACxB,GAAI2H,EAAa,CACf,IAAMF,EAAkBxC,GAAQ,CAAE,GAAG9T,EAAS,SAAU,EAAM,CAAC,EAC/DH,EAAM,gBAAgByW,EAAgB,OAAOE,EAAcJ,EAAW,EAAE,MAAOE,EAAgB,OAAOE,CAAW,EAAE,MAAOJ,EAAW,CACvI,CACAnY,GAAK,OAAO,IAAM4Q,EAAU,OAAO,CAAC,CACtC,CACF,CACF,CAGA,SAAS4H,GAAuB,CAAE,UAAW7J,EAAY,QAAAwB,EAAS,SAAAqG,EAAU,WAAAF,CAAW,EAAG,CACxF,IAAMmC,EAAW,IAAM,CACrBjC,GAAYA,EAAS7H,EAAWA,EAAW,OAAS,EAAE,EACtD2H,GAAcA,EAAW,CAC3B,EACA,OAAOnG,EAAU,CAAE,KAAMJ,GAAM0I,EAAU,CAACtI,CAAO,CAAE,EAAIsI,EAAS,CAClE,CAGA,SAASC,GAAQ,CAAE,UAAW/J,EAAY,SAAAlN,EAAW,EAAG,IAAAkX,EAAK,IAAAC,EAAK,MAAA7D,EAAQ,GAAK,aAAAC,EAAe,IAAK,gBAAA6D,EAAkB,IAAK,cAAAC,EAAgB,GAAI,UAAAjK,EAAY,EAAG,aAAAoG,EAAc,OAAAa,EAAQ,SAAAU,EAAU,WAAAF,EAAY,OAAAD,CAAO,EAAG,CACjN,IAAM9M,EAASoF,EAAW,GACtBoK,EACJ,SAASC,EAAchX,EAAG,CACxB,OAAO2W,IAAQ,QAAU3W,EAAI2W,GAAOC,IAAQ,QAAU5W,EAAI4W,CAC5D,CACA,SAASK,EAAoBjX,EAAG,CAC9B,OAAI2W,IAAQ,OACHC,EACLA,IAAQ,QAEL,KAAK,IAAID,EAAM3W,CAAC,EAAI,KAAK,IAAI4W,EAAM5W,CAAC,EADlC2W,EAC4CC,CACvD,CACA,SAASjW,EAAeZ,EAAS,CACqCgX,GAAiB,KAAK,EAC1FA,EAAmBlD,GAAQ,CACzB,UAAW,CAAC,EAAG,CAAC,EAChB,SAAU,EACV,GAAG9T,EACH,OAAA+T,EACA,SAAW9T,GAAM,CACf,IAAI4D,EACgD4Q,IAASxU,CAAC,GAC7D4D,EAAK7D,EAAQ,YAAc,MAAQ6D,IAAO,QAAkBA,EAAG,KAAK7D,EAASC,CAAC,CACjF,EACA,WAAAsU,EACA,OAAAD,CACF,CAAC,CACH,CACA,SAAS6C,EAAYnX,EAAS,CAC5BY,EAAe,CACb,KAAM,SACN,UAAWkW,EACX,QAASC,EACT,UAAAjK,EACA,GAAG9M,CACL,CAAC,CACH,CACA,GAAIiX,EAAczP,CAAM,EACtB2P,EAAY,CACV,SAAAzX,EACA,UAAW,CAAC8H,EAAQ0P,EAAoB1P,CAAM,CAAC,CACjD,CAAC,MACI,CACL,IAAIR,EAASgM,EAAQtT,EAAW8H,EAC5B,OAAO0L,EAAiB,MAC1BlM,EAASkM,EAAalM,CAAM,GAC9B,IAAMoQ,EAAWF,EAAoBlQ,CAAM,EACrCqQ,EAAUD,IAAaR,EAAM,GAAK,EACpClW,EACAC,EACE2W,EAAiBrX,GAAM,CAC3BS,EAAOC,EACPA,EAAUV,EACVP,EAAWD,GAAkBQ,EAAIS,EAAMvE,GAAU,KAAK,GAClDkb,IAAY,GAAKpX,EAAImX,GAAYC,IAAY,IAAMpX,EAAImX,IACzDD,EAAY,CAAE,UAAW,CAAClX,EAAGmX,CAAQ,EAAG,SAAA1X,CAAS,CAAC,CAEtD,EACAkB,EAAe,CACb,KAAM,QACN,UAAW,CAAC4G,EAAQ,CAAC,EACrB,SAAA9H,EACA,aAAAuT,EACA,MAAAD,EACA,UAAAlG,EACA,aAAAoG,EACA,SAAU+D,EAAcjQ,CAAM,EAAIsQ,EAAgB,MACpD,CAAC,CACH,CACA,MAAO,CACL,KAAM,IAA0EN,GAAiB,KAAK,CACxG,CACF,CAGA,IAAIO,GAAoB,KAAO,CAC7B,KAAM,SACN,UAAW,IACX,QAAS,GACT,UAAW,EACb,GACIC,GAA0BxQ,IAAY,CACxC,KAAM,SACN,UAAW,IACX,QAASA,IAAW,EAAI,EAAI,KAAK,KAAK,GAAG,EAAI,GAC7C,UAAW,EACb,GACIyQ,GAAc,KAAO,CACvB,KAAM,YACN,KAAM,SACN,SAAU,EACZ,GACIC,GAAsB,CACxB,KAAM,YACN,SAAU,EACZ,EACIC,GAAqB,CACvB,EAAGJ,GACH,EAAGA,GACH,EAAGA,GACH,OAAQA,GACR,QAASA,GACT,QAASA,GACT,QAASA,GACT,OAAQC,GACR,OAAQA,GACR,MAAOA,GACP,QAASC,GACT,gBAAiBA,GACjB,MAAOA,GACP,QAASD,EACX,EACII,GAAuB,CAACC,EAAU,CAAE,UAAWjL,CAAW,IACxDA,EAAW,OAAS,EACf8K,IAESC,GAAmBE,IAAaF,GAAmB,SACpD/K,EAAW,EAAE,EAK5BkL,GAAe,CAAC9Z,EAAK6B,IACnB7B,IAAQ,SACH,GACL,UAAO6B,GAAU,UAAY,MAAM,QAAQA,CAAK,GAEhD,OAAOA,GAAU,UAAYiF,GAAQ,KAAKjF,CAAK,GAAK,CAACA,EAAM,WAAW,MAAM,GAOlF,SAASkY,GAAoB,CAAE,KAAAC,EAAM,MAAOC,EAAQ,cAAAC,EAAe,gBAAAC,EAAiB,iBAAAC,EAAkB,OAAAnD,EAAQ,WAAAhB,EAAY,YAAAC,EAAa,KAAAvL,EAAM,QAAAyF,KAAYrH,CAAW,EAAG,CACrK,MAAO,CAAC,CAAC,OAAO,KAAKA,CAAU,EAAE,MACnC,CACA,SAASsR,GAAOxY,EAAO,CACrB,OAAOA,IAAU,GAAK,OAAOA,GAAU,UAAY,WAAWA,CAAK,IAAM,GAAKA,EAAM,QAAQ,GAAG,IAAM,EACvG,CACA,SAASyY,GAAYC,EAAmB,CACtC,OAAO,OAAOA,GAAsB,SAAW,EAAI5S,GAAmB,GAAI4S,CAAiB,CAC7F,CACA,SAASC,GAAmBzR,EAAY/I,EAAK,CAC3C,OAAO+I,EAAW/I,IAAQ+I,EAAW,SAAcA,CACrD,CAGA,SAAS0R,GAAa5Y,EAAOiW,EAAW9O,EAAQD,EAAY,CAC1D,IAAM2R,EAAqBZ,GAAahC,EAAW9O,CAAM,EACrDQ,EAAST,EAAW,OAAS,OAASA,EAAW,KAAOlH,EAAM,IAAI,EAQtE,OAPI2H,IAAW,QAAUkR,GAAsB,OAAO1R,GAAW,SAC/DQ,EAAS7B,GAAmBmQ,EAAW9O,CAAM,EACpCqR,GAAO7Q,CAAM,GAAK,OAAOR,GAAW,SAC7CQ,EAAS8Q,GAAYtR,CAAM,EAClB,CAAC,MAAM,QAAQA,CAAM,GAAKqR,GAAOrR,CAAM,GAAK,OAAOQ,GAAW,WACvER,EAASsR,GAAY9Q,CAAM,GAEzB,MAAM,QAAQR,CAAM,GAClBA,EAAO,KAAO,OAChBA,EAAO,GAAKQ,GAEPR,GAEA,CAACQ,EAAQR,CAAM,CAE1B,CAGA,IAAI2R,GAA6B,CAAC7C,EAAWjW,EAAOmH,EAAQD,EAAa,CAAC,IAChEwN,GAAe,CACrB,IAAMqE,EAAkBJ,GAAmBzR,EAAY+O,CAAS,GAAK,CAAC,EAChEvC,EAASqF,EAAgB,OAAS7R,EAAW,OAAS,EACxD,CAAE,QAAAqH,EAAU,CAAE,EAAIrH,EACtBqH,EAAUA,EAAUW,GAAsBwE,CAAM,EAChD,IAAM3G,EAAa6L,GAAa5Y,EAAOiW,EAAW9O,EAAQ4R,CAAe,EACnEC,EAAiBjM,EAAW,GAC5BkM,EAAiBlM,EAAWA,EAAW,OAAS,GAChDmM,EAAqBjB,GAAahC,EAAW+C,CAAc,EAC3DH,EAAqBZ,GAAahC,EAAWgD,CAAc,EACjEpO,GAAQqO,IAAuBL,EAAoB,6BAA6B5C,WAAmB+C,UAAuBC,OAAoBD,+DAA4EA,8BAA2CC,+BAA4C,EACjT,IAAI9Y,EAAU,CACZ,UAAW4M,EACX,SAAU/M,EAAM,YAAY,EAC5B,GAAG+Y,EACH,QAAAxK,EACA,SAAWnO,GAAM,CACfJ,EAAM,IAAII,CAAC,EACX2Y,EAAgB,UAAYA,EAAgB,SAAS3Y,CAAC,CACxD,EACA,WAAY,IAAM,CAChBsU,EAAW,EACXqE,EAAgB,YAAcA,EAAgB,WAAW,CAC3D,CACF,EACA,GAAI,CAACG,GAAsB,CAACL,GAAsBzJ,GAAsB,SAAW2J,EAAgB,OAAS,GAC1G,OAAOnC,GAAuBzW,CAAO,EAChC,GAAI4Y,EAAgB,OAAS,UAClC,OAAOjC,GAAQ3W,CAAO,EAEnB+X,GAAoBa,CAAe,IACtC5Y,EAAU,CACR,GAAGA,EACH,GAAG4X,GAAqB9B,EAAW9V,CAAO,CAC5C,GAEEA,EAAQ,WACVA,EAAQ,SAAW+O,GAAsB/O,EAAQ,QAAQ,GAEvDA,EAAQ,cACVA,EAAQ,YAAc+O,GAAsB/O,EAAQ,WAAW,GAEjE,IAAMoG,EAAgBvG,EAAM,MACtBgW,EAAUzP,GAAiBA,EAAc,QAC/C,GAAIA,GAAiByP,aAAmB,aAAe,CAAgEzP,GAAc,SAAS,EAAE,SAAW,CACzJ,IAAM4S,EAAuB3C,GAA2BxW,EAAOiW,EAAW9V,CAAO,EACjF,GAAIgZ,EACF,OAAOA,CACX,CACA,OAAOlF,GAAQ9T,CAAO,CACxB,EAIF,SAASiZ,GAAqB7S,EAAeG,EAAYvG,EAAU,CAAC,EAAG,CACrEoG,EAAc,OAAO,iBAAkBG,CAAU,EACjD,IAAIsI,EACJ,GAAI,MAAM,QAAQtI,CAAU,EAAG,CAC7B,IAAM2S,EAAc3S,EAAW,IAAKa,GAAY+R,GAAe/S,EAAegB,EAASpH,CAAO,CAAC,EAC/F6O,EAAY,QAAQ,IAAIqK,CAAW,CACrC,SAAW,OAAO3S,GAAe,SAC/BsI,EAAYsK,GAAe/S,EAAeG,EAAYvG,CAAO,MACxD,CACL,IAAMoZ,EAAqB,OAAO7S,GAAe,WAAaD,GAAeF,EAAeG,EAAYvG,EAAQ,MAAM,EAAIuG,EAC1HsI,EAAYwK,GAAcjT,EAAegT,EAAoBpZ,CAAO,CACtE,CACA,OAAO6O,EAAU,KAAK,IAAMzI,EAAc,OAAO,oBAAqBG,CAAU,CAAC,CACnF,CACA,SAAS4S,GAAe/S,EAAegB,EAASpH,EAAU,CAAC,EAAG,CAC5D,IAAI6D,EACJ,IAAMgD,EAAWP,GAAeF,EAAegB,EAASpH,EAAQ,MAAM,EAClE,CAAE,WAAA+G,EAAaX,EAAc,qBAAqB,GAAK,CAAC,CAAE,EAAIS,GAAY,CAAC,EAC3E7G,EAAQ,qBACV+G,EAAa/G,EAAQ,oBAEvB,IAAMsZ,EAAezS,EAAW,IAAMwS,GAAcjT,EAAeS,EAAU7G,CAAO,EAAI,IAAM,QAAQ,QAAQ,EACxGuZ,EAAuB,GAAA1V,EAAKuC,EAAc,mBAAqB,MAAQvC,IAAO,SAAkBA,EAAG,KAAQ,CAAC2V,EAAe,IAAM,CACrI,GAAM,CAAE,cAAAtB,EAAgB,EAAG,gBAAAC,EAAiB,iBAAAC,CAAiB,EAAIrR,EACjE,OAAO0S,GAAgBrT,EAAegB,EAAS8Q,EAAgBsB,EAAcrB,EAAiBC,EAAkBpY,CAAO,CACzH,EAAI,IAAM,QAAQ,QAAQ,EACpB,CAAE,KAAAgY,CAAK,EAAIjR,EACjB,GAAIiR,EAAM,CACR,GAAM,CAAC0B,EAAOC,CAAI,EAAI3B,IAAS,iBAAmB,CAACsB,EAAcC,CAAkB,EAAI,CAACA,EAAoBD,CAAY,EACxH,OAAOI,EAAM,EAAE,KAAKC,CAAI,CAC1B,KACE,QAAO,QAAQ,IAAI,CAACL,EAAa,EAAGC,EAAmBvZ,EAAQ,KAAK,CAAC,CAAC,CAE1E,CACA,SAASqZ,GAAcjT,EAAeG,EAAY,CAAE,MAAOgN,EAAS,EAAG,mBAAAqG,EAAoB,KAAAjY,CAAK,EAAI,CAAC,EAAG,CACtG,IAAIkC,EACJ,GAAI,CAAE,WAAAkD,EAAaX,EAAc,qBAAqB,EAAG,cAAAU,KAAkBE,CAAO,EAAIZ,EAAc,qBAAqBG,CAAU,EAC7HsT,EAAazT,EAAc,SAAS,YAAY,EAClDwT,IACF7S,EAAa6S,GACf,IAAMV,EAAc,CAAC,EACfY,EAAqBnY,KAAUkC,EAAKuC,EAAc,kBAAoB,MAAQvC,IAAO,OAAS,OAASA,EAAG,SAAS,EAAElC,IAC3H,QAAW3D,KAAOgJ,EAAQ,CACxB,IAAMnH,EAAQuG,EAAc,SAASpI,CAAG,EAClC+b,EAAc/S,EAAOhJ,GAC3B,GAAI,CAAC6B,GAASka,IAAgB,QAAUD,GAAsBE,GAAqBF,EAAoB9b,CAAG,EACxG,SAEF,IAAM4a,EAAkB,CAAE,MAAOrF,EAAQ,QAAS,EAAG,GAAGxM,CAAW,EACnE,GAAI,CAAClH,EAAM,YAAa,CACtB,IAAMoa,EAAW7T,EAAc,SAAS,EAAE8B,IACtC+R,IACFrB,EAAgB,QAAUnK,GAAgCwL,EAAUjc,EAAK6B,CAAK,EAElF,CACA,IAAIgP,EAAYhP,EAAM,MAAM8Y,GAA2B3a,EAAK6B,EAAOka,EAAa3T,EAAc,oBAAsBwI,GAAe,IAAI5Q,CAAG,EAAI,CAAE,KAAM,EAAM,EAAI4a,CAAe,CAAC,EAC5KvK,GAAwBwL,CAAU,IACpCA,EAAW,IAAI7b,CAAG,EAClB6Q,EAAYA,EAAU,KAAK,IAAMgL,EAAW,OAAO7b,CAAG,CAAC,GAEzDkb,EAAY,KAAKrK,CAAS,CAC5B,CACA,OAAO,QAAQ,IAAIqK,CAAW,EAAE,KAAK,IAAM,CACzCpS,GAAiBF,GAAUR,EAAeU,CAAa,CACzD,CAAC,CACH,CACA,SAAS2S,GAAgBrT,EAAegB,EAAS8Q,EAAgB,EAAGC,EAAkB,EAAGC,EAAmB,EAAGpY,EAAS,CACtH,IAAMkZ,EAAc,CAAC,EACfgB,GAAsB9T,EAAc,gBAAgB,KAAO,GAAK+R,EAChEgC,EAA0B/B,IAAqB,EAAI,CAAC5a,EAAI,IAAMA,EAAI2a,EAAkB,CAAC3a,EAAI,IAAM0c,EAAqB1c,EAAI2a,EAC9H,aAAM,KAAK/R,EAAc,eAAe,EAAE,KAAKgU,EAAe,EAAE,QAAQ,CAAC/S,EAAO7J,IAAM,CACpF6J,EAAM,OAAO,iBAAkBD,CAAO,EACtC8R,EAAY,KAAKC,GAAe9R,EAAOD,EAAS,CAC9C,GAAGpH,EACH,MAAOkY,EAAgBiC,EAAwB3c,CAAC,CAClD,CAAC,EAAE,KAAK,IAAM6J,EAAM,OAAO,oBAAqBD,CAAO,CAAC,CAAC,CAC3D,CAAC,EACM,QAAQ,IAAI8R,CAAW,CAChC,CACA,SAASmB,GAAcjU,EAAe,CACpCA,EAAc,OAAO,QAASvG,GAAUA,EAAM,KAAK,CAAC,CACtD,CACA,SAASua,GAAgB/a,EAAGC,EAAG,CAC7B,OAAOD,EAAE,iBAAiBC,CAAC,CAC7B,CACA,SAAS0a,GAAqB,CAAE,cAAAM,EAAe,eAAAC,CAAe,EAAGvc,EAAK,CACpE,IAAMwc,EAAcF,EAAc,eAAetc,CAAG,GAAKuc,EAAevc,KAAS,GACjF,OAAAuc,EAAevc,GAAO,GACfwc,CACT,CAMA,SAASC,GAAeC,EAAMha,EAAM,CAClC,GAAI,CAAC,MAAM,QAAQA,CAAI,EACrB,MAAO,GACT,IAAMia,EAAaja,EAAK,OACxB,GAAIia,IAAeD,EAAK,OACtB,MAAO,GACT,QAASld,EAAI,EAAGA,EAAImd,EAAYnd,IAC9B,GAAIkD,EAAKlD,KAAOkd,EAAKld,GACnB,MAAO,GAEX,MAAO,EACT,CAGA,IAAIod,GAAuB,CACzBC,EAAc,QACdA,EAAc,OACdA,EAAc,MACdA,EAAc,MACdA,EAAc,IACdA,EAAc,KACdA,EAAc,IAChB,EACIC,GAAuB,CAAC,GAAGF,EAAoB,EAAE,QAAQ,EACzDG,GAAoBH,GAAqB,OAC7C,SAASI,GAAY5U,EAAe,CAClC,OAAQ8S,GAAgB,QAAQ,IAAIA,EAAY,IAAI,CAAC,CAAE,UAAArK,EAAW,QAAA7O,CAAQ,IAAMiZ,GAAqB7S,EAAeyI,EAAW7O,CAAO,CAAC,CAAC,CAC1I,CACA,SAASib,GAAqB7U,EAAe,CAC3C,IAAI8U,EAAWF,GAAY5U,CAAa,EAClC2G,EAAQoO,GAAY,EACtBC,EAAkB,GAChBC,EAA0B,CAACtd,EAAKwI,IAAe,CACnD,IAAMM,EAAWP,GAAeF,EAAeG,CAAU,EACzD,GAAIM,EAAU,CACZ,GAAM,CAAE,WAAAE,EAAY,cAAAD,KAAkBE,CAAO,EAAIH,EACjD9I,EAAM,CAAE,GAAGA,EAAK,GAAGiJ,EAAQ,GAAGF,CAAc,CAC9C,CACA,OAAO/I,CACT,EACA,SAASud,EAAmBC,EAAc,CACxCL,EAAWK,EAAanV,CAAa,CACvC,CACA,SAASoV,EAAexb,EAASyb,EAAmB,CAClD,IAAMhV,EAAQL,EAAc,SAAS,EAC/BsV,EAAUtV,EAAc,kBAAkB,EAAI,GAAK,CAAC,EACpD8S,EAAc,CAAC,EACfyC,EAA8B,IAAI,IACpCC,EAAkB,CAAC,EACnBC,EAAsB,IAC1B,QAASre,EAAI,EAAGA,EAAIud,GAAmBvd,IAAK,CAC1C,IAAMmE,EAAOmZ,GAAqBtd,GAC5Bse,EAAY/O,EAAMpL,GAClBoa,EAAOtV,EAAM9E,KAAU,OAAS8E,EAAM9E,GAAQ+Z,EAAQ/Z,GACtDqa,EAAgBC,GAAeF,CAAI,EACnCG,EAAcva,IAAS8Z,EAAoBK,EAAU,SAAW,KAClEI,IAAgB,KAClBL,EAAsBre,GACxB,IAAI2e,EAAcJ,IAASL,EAAQ/Z,IAASoa,IAAStV,EAAM9E,IAASqa,EAKpE,GAJIG,GAAef,GAAmBhV,EAAc,yBAClD+V,EAAc,IAEhBL,EAAU,cAAgB,CAAE,GAAGF,CAAgB,EAC3C,CAACE,EAAU,UAAYI,IAAgB,MAAQ,CAACH,GAAQ,CAACD,EAAU,UAAYM,GAAoBL,CAAI,GAAK,OAAOA,GAAS,UAC9H,SAEF,IAAMM,EAAmBC,GAAuBR,EAAU,SAAUC,CAAI,EACpEQ,EAAoBF,GAAoB1a,IAAS8Z,GAAqBK,EAAU,UAAY,CAACK,GAAeH,GAAiBxe,EAAIqe,GAAuBG,EACtJQ,EAAiB,MAAM,QAAQT,CAAI,EAAIA,EAAO,CAACA,CAAI,EACrDU,EAAiBD,EAAe,OAAOnB,EAAyB,CAAC,CAAC,EAClEa,IAAgB,KAClBO,EAAiB,CAAC,GACpB,GAAM,CAAE,mBAAAC,EAAqB,CAAC,CAAE,EAAIZ,EAC9Ba,EAAU,CACd,GAAGD,EACH,GAAGD,CACL,EACMG,EAAiB5e,GAAQ,CAC7Bue,EAAoB,GACpBZ,EAAY,OAAO3d,CAAG,EACtB8d,EAAU,eAAe9d,GAAO,EAClC,EACA,QAAWA,KAAO2e,EAAS,CACzB,IAAMjC,EAAO+B,EAAeze,GACtB0C,EAAOgc,EAAmB1e,GAC5B4d,EAAgB,eAAe5d,CAAG,IAElC0c,IAASha,EACPmc,GAAkBnC,CAAI,GAAKmC,GAAkBnc,CAAI,EAC/C,CAAC+Z,GAAeC,EAAMha,CAAI,GAAK2b,EACjCO,EAAc5e,CAAG,EAEjB8d,EAAU,cAAc9d,GAAO,GAExB0c,IAAS,OAClBkC,EAAc5e,CAAG,EAEjB2d,EAAY,IAAI3d,CAAG,EAEZ0c,IAAS,QAAUiB,EAAY,IAAI3d,CAAG,EAC/C4e,EAAc5e,CAAG,EAEjB8d,EAAU,cAAc9d,GAAO,GAEnC,CACA8d,EAAU,SAAWC,EACrBD,EAAU,mBAAqBW,EAC3BX,EAAU,WACZF,EAAkB,CAAE,GAAGA,EAAiB,GAAGa,CAAe,GAExDrB,GAAmBhV,EAAc,wBACnCmW,EAAoB,IAElBA,GAAqB,CAACJ,GACxBjD,EAAY,KAAK,GAAGsD,EAAe,IAAK3N,IAAe,CACrD,UAAAA,EACA,QAAS,CAAE,KAAAlN,EAAM,GAAG3B,CAAQ,CAC9B,EAAE,CAAC,CAEP,CACA,GAAI2b,EAAY,KAAM,CACpB,IAAMmB,EAAoB,CAAC,EAC3BnB,EAAY,QAAS3d,GAAQ,CAC3B,IAAM+e,EAAiB3W,EAAc,cAAcpI,CAAG,EAClD+e,IAAmB,SACrBD,EAAkB9e,GAAO+e,EAE7B,CAAC,EACD7D,EAAY,KAAK,CAAE,UAAW4D,CAAkB,CAAC,CACnD,CACA,IAAIE,EAAgB,QAAQ9D,EAAY,MAAM,EAC9C,OAAIkC,GAAmB3U,EAAM,UAAY,IAAS,CAACL,EAAc,yBAC/D4W,EAAgB,IAElB5B,EAAkB,GACX4B,EAAgB9B,EAAShC,CAAW,EAAI,QAAQ,QAAQ,CACjE,CACA,SAAS+D,EAAUtb,EAAMub,EAAUld,EAAS,CAC1C,IAAI6D,EACJ,GAAIkJ,EAAMpL,GAAM,WAAaub,EAC3B,OAAO,QAAQ,QAAQ,GACxBrZ,EAAKuC,EAAc,mBAAqB,MAAQvC,IAAO,QAAkBA,EAAG,QAASwD,GAAU,CAC9F,IAAI8V,EACJ,OAAQA,EAAM9V,EAAM,kBAAoB,MAAQ8V,IAAQ,OAAS,OAASA,EAAI,UAAUxb,EAAMub,CAAQ,CACxG,CAAC,EACDnQ,EAAMpL,GAAM,SAAWub,EACvB,IAAMhE,EAAcsC,EAAexb,EAAS2B,CAAI,EAChD,QAAW3D,KAAO+O,EAChBA,EAAM/O,GAAK,cAAgB,CAAC,EAE9B,OAAOkb,CACT,CACA,MAAO,CACL,eAAAsC,EACA,UAAAyB,EACA,mBAAA3B,EACA,SAAU,IAAMvO,CAClB,CACF,CACA,SAASuP,GAAuB5b,EAAMga,EAAM,CAC1C,OAAI,OAAOA,GAAS,SACXA,IAASha,EACP,MAAM,QAAQga,CAAI,EACpB,CAACD,GAAeC,EAAMha,CAAI,EAE5B,EACT,CACA,SAAS0c,GAAgBF,EAAW,GAAO,CACzC,MAAO,CACL,SAAAA,EACA,cAAe,CAAC,EAChB,eAAgB,CAAC,EACjB,mBAAoB,CAAC,CACvB,CACF,CACA,SAAS/B,IAAc,CACrB,MAAO,CACL,CAACN,EAAc,SAAUuC,GAAgB,EAAI,EAC7C,CAACvC,EAAc,QAASuC,GAAgB,EACxC,CAACvC,EAAc,OAAQuC,GAAgB,EACvC,CAACvC,EAAc,KAAMuC,GAAgB,EACrC,CAACvC,EAAc,MAAOuC,GAAgB,EACtC,CAACvC,EAAc,OAAQuC,GAAgB,EACvC,CAACvC,EAAc,MAAOuC,GAAgB,CACxC,CACF,CAGA,IAAIC,GAA2BC,GAAU7W,IACvC6W,EAAK7W,CAAK,EACH,MAIL8W,GAAa,CACf,UAAWF,GAAwB,CAAC,CAAE,cAAAjX,EAAe,QAAS8U,CAAS,IAAM,CAC3E9U,EAAc,iBAAmBA,EAAc,eAAiB6U,GAAqB7U,CAAa,GAC9FgW,GAAoBlB,CAAQ,GAC9BsC,EAAW,IAAMtC,EAAS,UAAU9U,CAAa,EAAG,CAAC8U,CAAQ,CAAC,CAElE,CAAC,EACD,KAAMmC,GAAyB5W,GAAU,CACvC,GAAM,CAAE,OAAAD,EAAQ,cAAAJ,CAAc,EAAIK,EAC5B,CAACgX,EAAYC,CAAY,EAAIC,GAAY,EACzCC,EAAkBC,EAAYC,EAAe,EACnDN,EAAW,IAAM,CACfpX,EAAc,UAAYqX,EAC1B,IAAM5O,EAAYzI,EAAc,gBAAkBA,EAAc,eAAe,UAAUyU,EAAc,KAAM,CAAC4C,EAAY,CACxH,OAAQG,GAAmBA,EAAgB,QAAUpX,CACvD,CAAC,EACGqI,GAAa,CAAC4O,GAChB5O,EAAU,KAAK6O,CAAY,CAE/B,EAAG,CAACD,CAAU,CAAC,CACjB,CAAC,CACH,EAGIM,GAAW,CAAC1e,EAAGC,IAAM,KAAK,IAAID,EAAIC,CAAC,EACvC,SAAS0e,GAAW3e,EAAGC,EAAG,CACxB,IAAM2e,EAASF,GAAS1e,EAAE,EAAGC,EAAE,CAAC,EAC1B4e,EAASH,GAAS1e,EAAE,EAAGC,EAAE,CAAC,EAChC,OAAO,KAAK,KAAK2e,GAAU,EAAIC,GAAU,CAAC,CAC5C,CAGA,SAASC,GAAWC,EAAM,CACxB,OAAOA,EAAK,IAAMA,EAAK,GACzB,CACA,SAASC,GAAOxe,EAAOmH,EAAS,EAAGsX,EAAc,IAAM,CACrD,OAAO,KAAK,IAAIze,EAAQmH,CAAM,GAAKsX,CACrC,CACA,SAASC,GAAcpe,EAAOoE,EAAQyC,EAAQQ,EAAS,GAAK,CAC1DrH,EAAM,OAASqH,EACfrH,EAAM,YAAcuI,GAAInE,EAAO,IAAKA,EAAO,IAAKpE,EAAM,MAAM,EAC5DA,EAAM,MAAQge,GAAWnX,CAAM,EAAImX,GAAW5Z,CAAM,GAChD8Z,GAAOle,EAAM,MAAO,EAAG,IAAI,GAAK,MAAMA,EAAM,KAAK,KACnDA,EAAM,MAAQ,GAChBA,EAAM,UAAYuI,GAAI1B,EAAO,IAAKA,EAAO,IAAK7G,EAAM,MAAM,EAAIA,EAAM,aAChEke,GAAOle,EAAM,SAAS,GAAK,MAAMA,EAAM,SAAS,KAClDA,EAAM,UAAY,EACtB,CACA,SAASqe,GAAare,EAAOoE,EAAQyC,EAAQQ,EAAQ,CACnD+W,GAAcpe,EAAM,EAAGoE,EAAO,EAAGyC,EAAO,EAAmDQ,GAAO,OAAO,EACzG+W,GAAcpe,EAAM,EAAGoE,EAAO,EAAGyC,EAAO,EAAmDQ,GAAO,OAAO,CAC3G,CACA,SAASiX,GAAiBzX,EAAQ0X,EAAUC,EAAQ,CAClD3X,EAAO,IAAM2X,EAAO,IAAMD,EAAS,IACnC1X,EAAO,IAAMA,EAAO,IAAMmX,GAAWO,CAAQ,CAC/C,CACA,SAASE,GAAgB5X,EAAQ0X,EAAUC,EAAQ,CACjDF,GAAiBzX,EAAO,EAAG0X,EAAS,EAAGC,EAAO,CAAC,EAC/CF,GAAiBzX,EAAO,EAAG0X,EAAS,EAAGC,EAAO,CAAC,CACjD,CACA,SAASE,GAAyB7X,EAAQ8X,EAAQH,EAAQ,CACxD3X,EAAO,IAAM8X,EAAO,IAAMH,EAAO,IACjC3X,EAAO,IAAMA,EAAO,IAAMmX,GAAWW,CAAM,CAC7C,CACA,SAASC,GAAqB/X,EAAQ8X,EAAQH,EAAQ,CACpDE,GAAyB7X,EAAO,EAAG8X,EAAO,EAAGH,EAAO,CAAC,EACrDE,GAAyB7X,EAAO,EAAG8X,EAAO,EAAGH,EAAO,CAAC,CACvD,CAGA,IAAIK,GAAkB,KAAO,CAC3B,UAAW,EACX,MAAO,EACP,OAAQ,EACR,YAAa,CACf,GACIC,GAAc,KAAO,CACvB,EAAGD,GAAgB,EACnB,EAAGA,GAAgB,CACrB,GACIE,GAAa,KAAO,CAAE,IAAK,EAAG,IAAK,CAAE,GACrCC,GAAY,KAAO,CACrB,EAAGD,GAAW,EACd,EAAGA,GAAW,CAChB,GAMIE,GAAuB,CAAE,QAAS,IAAK,EACvCC,GAA2B,CAAE,QAAS,EAAM,EAGhD,SAASC,IAA2B,CAElC,GADAD,GAAyB,QAAU,GAC/B,EAACE,GAEL,GAAIhjB,EAAO,WAAY,CACrB,IAAMijB,EAAmBjjB,EAAO,WAAW,0BAA0B,EAC/DkjB,EAA8B,IAAML,GAAqB,QAAUI,EAAiB,QAC1FA,EAAiB,YAAYC,CAA2B,EACxDA,EAA4B,CAC9B,MACEL,GAAqB,QAAU,EAEnC,CAGA,SAASM,GAA4B7J,EAAS6E,EAAMha,EAAM,CACxD,GAAM,CAAE,WAAAmZ,CAAW,EAAIa,EACvB,QAAW1c,KAAO0c,EAAM,CACtB,IAAMiF,EAAYjF,EAAK1c,GACjB4hB,EAAYlf,EAAK1C,GACvB,GAAIsQ,GAAcqR,CAAS,EACzB9J,EAAQ,SAAS7X,EAAK2hB,CAAS,EAC3BtR,GAAwBwL,CAAU,GACpCA,EAAW,IAAI7b,CAAG,UAKXsQ,GAAcsR,CAAS,EAChC/J,EAAQ,SAAS7X,EAAK8C,GAAY6e,EAAW,CAAE,MAAO9J,CAAQ,CAAC,CAAC,EAC5DxH,GAAwBwL,CAAU,GACpCA,EAAW,OAAO7b,CAAG,UAEd4hB,IAAcD,EACvB,GAAI9J,EAAQ,SAAS7X,CAAG,EAAG,CACzB,IAAM6hB,EAAgBhK,EAAQ,SAAS7X,CAAG,EAC1C,CAAC6hB,EAAc,aAAeA,EAAc,IAAIF,CAAS,CAC3D,KAAO,CACL,IAAMG,EAAcjK,EAAQ,eAAe7X,CAAG,EAC9C6X,EAAQ,SAAS7X,EAAK8C,GAAYgf,IAAgB,OAASA,EAAcH,EAAW,CAAE,MAAO9J,CAAQ,CAAC,CAAC,CACzG,CAEJ,CACA,QAAW7X,KAAO0C,EACZga,EAAK1c,KAAS,QAChB6X,EAAQ,YAAY7X,CAAG,EAE3B,OAAO0c,CACT,CAGA,IAAIqF,GAAe,OAAO,KAAKC,EAAkB,EAC7CC,GAAcF,GAAa,OAC3BG,GAAoB,CACtB,iBACA,oBACA,SACA,sBACA,gBACA,uBACA,yBACF,EACIC,GAAgB,KAAM,CACxB,YAAY,CAAE,OAAAxB,EAAQ,MAAAlY,EAAO,oBAAA2Z,EAAqB,YAAAC,CAAY,EAAGrgB,EAAU,CAAC,EAAG,CAC7E,KAAK,QAAU,KACf,KAAK,SAA2B,IAAI,IACpC,KAAK,cAAgB,GACrB,KAAK,sBAAwB,GAC7B,KAAK,mBAAqB,KAC1B,KAAK,OAAyB,IAAI,IAClC,KAAK,UAAY,GACjB,KAAK,mBAAqC,IAAI,IAC9C,KAAK,iBAAmB,CAAC,EACzB,KAAK,OAAS,CAAC,EACf,KAAK,uBAAyB,CAAC,EAC/B,KAAK,aAAe,IAAM,KAAK,OAAO,SAAU,KAAK,YAAY,EACjE,KAAK,OAAS,IAAM,CACb,KAAK,UAEV,KAAK,aAAa,EAClB,KAAK,eAAe,KAAK,QAAS,KAAK,YAAa,KAAK,MAAM,MAAO,KAAK,UAAU,EACvF,EACA,KAAK,eAAiB,IAAM/B,GAAK,OAAO,KAAK,OAAQ,GAAO,EAAI,EAChE,GAAM,CAAE,aAAAqiB,EAAc,YAAAC,CAAY,EAAIF,EACtC,KAAK,aAAeC,EACpB,KAAK,WAAa,CAAE,GAAGA,CAAa,EACpC,KAAK,cAAgB7Z,EAAM,QAAU,CAAE,GAAG6Z,CAAa,EAAI,CAAC,EAC5D,KAAK,YAAcC,EACnB,KAAK,OAAS5B,EACd,KAAK,MAAQlY,EACb,KAAK,MAAQkY,EAASA,EAAO,MAAQ,EAAI,EACzC,KAAK,oBAAsByB,EAC3B,KAAK,QAAUpgB,EACf,KAAK,sBAAwBwgB,GAAsB/Z,CAAK,EACxD,KAAK,cAAgBga,GAAcha,CAAK,EACpC,KAAK,gBACP,KAAK,gBAAkC,IAAI,KAE7C,KAAK,uBAAyB,QAAQkY,GAAUA,EAAO,OAAO,EAC9D,GAAM,CAAE,WAAA9E,KAAe6G,CAAoB,EAAI,KAAK,4BAA4Bja,EAAO,CAAC,CAAC,EACzF,QAAWzI,KAAO0iB,EAAqB,CACrC,IAAM7gB,EAAQ6gB,EAAoB1iB,GAC9BsiB,EAAatiB,KAAS,QAAUsQ,GAAczO,CAAK,IACrDA,EAAM,IAAIygB,EAAatiB,GAAM,EAAK,EAC9BqQ,GAAwBwL,CAAU,GACpCA,EAAW,IAAI7b,CAAG,EAGxB,CACF,CACA,4BAA4B2iB,EAAQC,EAAY,CAC9C,MAAO,CAAC,CACV,CACA,MAAMC,EAAU,CACd,IAAIhd,EACJ,KAAK,QAAUgd,EACX,KAAK,YACP,KAAK,WAAW,MAAMA,CAAQ,EAE5B,KAAK,QAAU,KAAK,eAAiB,CAAC,KAAK,wBAC7C,KAAK,uBAAyBhd,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,gBAAgB,IAAI,GAE9G,KAAK,OAAO,QAAQ,CAAChE,EAAO7B,IAAQ,KAAK,kBAAkBA,EAAK6B,CAAK,CAAC,EACjEwf,GAAyB,SAC5BC,GAAyB,EAE3B,KAAK,mBAAqB,KAAK,sBAAwB,QAAU,GAAQ,KAAK,sBAAwB,SAAW,GAAOF,GAAqB,QAIzI,KAAK,QACP,KAAK,OAAO,SAAS,IAAI,IAAI,EAC/B,KAAK,SAAS,KAAK,KAAK,CAC1B,CACA,SAAU,CACR,IAAIvb,EAAIC,EAAIgd,GACXjd,EAAK,KAAK,cAAgB,MAAQA,IAAO,QAAkBA,EAAG,QAAQ,EACvEzF,GAAW,OAAO,KAAK,YAAY,EACnCA,GAAW,OAAO,KAAK,MAAM,EAC7B,KAAK,mBAAmB,QAAS2iB,GAAWA,EAAO,CAAC,GACnDjd,EAAK,KAAK,yBAA2B,MAAQA,IAAO,QAAkBA,EAAG,KAAK,IAAI,GAClFgd,EAAK,KAAK,UAAY,MAAQA,IAAO,QAAkBA,EAAG,SAAS,OAAO,IAAI,EAC/E,QAAW9iB,KAAO,KAAK,OACrB,KAAK,OAAOA,GAAK,MAAM,EAEzB,KAAK,QAAU,IACjB,CACA,kBAAkBA,EAAK6B,EAAO,CAC5B,IAAMmhB,EAAmBpS,GAAe,IAAI5Q,CAAG,EACzCijB,EAAiBphB,EAAM,GAAG,SAAWigB,GAAgB,CACzD,KAAK,aAAa9hB,GAAO8hB,EACzB,KAAK,MAAM,UAAY7hB,GAAK,OAAO,KAAK,aAAc,GAAO,EAAI,EAC7D+iB,GAAoB,KAAK,aAC3B,KAAK,WAAW,iBAAmB,GAEvC,CAAC,EACKE,EAAwBrhB,EAAM,GAAG,gBAAiB,KAAK,cAAc,EAC3E,KAAK,mBAAmB,IAAI7B,EAAK,IAAM,CACrCijB,EAAe,EACfC,EAAsB,CACxB,CAAC,CACH,CACA,iBAAiBC,EAAO,CACtB,MAAI,CAAC,KAAK,SAAW,CAAC,KAAK,0BAA4B,KAAK,OAASA,EAAM,KAClE,EACF,KAAK,yBAAyB,KAAK,QAASA,EAAM,OAAO,CAClE,CACA,aAAa,CAAE,SAAAC,KAAaC,CAAc,EAAGC,EAAUC,EAAmBC,EAAcC,EAA2BC,EAA0B,CAC3I,IAAMC,EAAW,CAAC,EAIlB,QAASnkB,EAAI,EAAGA,EAAIyiB,GAAaziB,IAAK,CACpC,IAAMyH,EAAO8a,GAAaviB,GACpB,CAAE,UAAAokB,EAAW,UAAWC,CAAW,EAAI7B,GAAmB/a,GAC5D2c,EAAUP,CAAa,GAAKQ,GAC9BF,EAAS,KAAKG,EAAeD,EAAY,CACvC,IAAK5c,EACL,GAAGoc,EACH,cAAe,IACjB,CAAC,CAAC,CAEN,CACA,GAAI,CAAC,KAAK,YAAcI,EAA2B,CACjD,KAAK,WAAa,IAAIA,EAA0BD,EAAc,KAAK,aAAc,KAAK,QAAU,KAAK,OAAO,UAAU,EACtH,GAAM,CAAE,SAAAO,EAAU,OAAAjD,EAAQ,KAAMkD,EAAO,gBAAAC,EAAiB,aAAAC,CAAa,EAAIb,EACzE,KAAK,WAAW,WAAW,CACzB,SAAAU,EACA,OAAAjD,EACA,oBAAqB,QAAQkD,CAAK,GAAKC,GAAmBE,GAAYF,CAAe,EACrF,cAAe,KACf,eAAgB,IAAM,KAAK,eAAe,EAC1C,cAAe,OAAOnD,GAAW,SAAWA,EAAS,OACrD,uBAAwB4C,EACxB,aAAAQ,CACF,CAAC,CACH,CACA,OAAOP,CACT,CACA,cAAe,CACb,KAAK,MAAM,KAAK,YAAa,KAAK,aAAc,KAAK,QAAS,KAAK,KAAK,CAC1E,CACA,oBAAqB,CACnB,OAAO,KAAK,QAAU,KAAK,2BAA2B,KAAK,QAAS,KAAK,KAAK,EAAIxC,GAAU,CAC9F,CACA,eAAenhB,EAAK,CAClB,OAAO,KAAK,aAAaA,EAC3B,CACA,eAAeA,EAAK6B,EAAO,CACzB,KAAK,aAAa7B,GAAO6B,CAC3B,CACA,qBAAqBmH,EAAQob,EAAY,GAAM,CAC7C,OAAO,KAAK,iCAAiCpb,EAAQ,KAAK,MAAOob,CAAS,CAC5E,CACA,SAAS3b,EAAO,EACVA,EAAM,mBAAqB,KAAK,MAAM,oBACxC,KAAK,eAAe,EAEtB,IAAM4b,EAAY,KAAK,MACvB,KAAK,MAAQ5b,EACb,QAASjJ,EAAI,EAAGA,EAAI0iB,GAAkB,OAAQ1iB,IAAK,CACjD,IAAMQ,EAAMkiB,GAAkB1iB,GAC1B,KAAK,uBAAuBQ,KAC9B,KAAK,uBAAuBA,GAAK,EACjC,OAAO,KAAK,uBAAuBA,IAErC,IAAMskB,EAAW7b,EAAM,KAAOzI,GAC1BskB,IACF,KAAK,uBAAuBtkB,GAAO,KAAK,GAAGA,EAAKskB,CAAQ,EAE5D,CACA,KAAK,iBAAmB5C,GAA4B,KAAM,KAAK,4BAA4BjZ,EAAO4b,CAAS,EAAG,KAAK,gBAAgB,EAC/H,KAAK,wBACP,KAAK,uBAAuB,CAEhC,CACA,UAAW,CACT,OAAO,KAAK,KACd,CACA,WAAWpd,EAAM,CACf,IAAIpB,EACJ,OAAQA,EAAK,KAAK,MAAM,YAAc,MAAQA,IAAO,OAAS,OAASA,EAAGoB,EAC5E,CACA,sBAAuB,CACrB,OAAO,KAAK,MAAM,UACpB,CACA,uBAAwB,CACtB,OAAO,KAAK,MAAM,kBACpB,CACA,uBAAwB,CACtB,IAAIpB,EACJ,OAAO,KAAK,cAAgB,MAAQA,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,sBAAsB,CACtH,CACA,kBAAkB0e,EAAgB,GAAO,CACvC,IAAI1e,EAAIC,EACR,GAAIye,EACF,OAAQ1e,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,kBAAkB,EACtF,GAAI,CAAC,KAAK,sBAAuB,CAC/B,IAAM2e,IAAa1e,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,kBAAkB,IAAM,CAAC,EACtG,OAAI,KAAK,MAAM,UAAY,SACzB0e,EAAS,QAAU,KAAK,MAAM,SAEzBA,CACT,CACA,IAAM9G,EAAU,CAAC,EACjB,QAAS,EAAI,EAAG,EAAI+G,GAAiB,IAAK,CACxC,IAAMxd,EAAOyd,GAAc,GACrB3G,EAAO,KAAK,MAAM9W,IACpBgX,GAAeF,CAAI,GAAKA,IAAS,MACnCL,EAAQzW,GAAQ8W,EAEpB,CACA,OAAOL,CACT,CACA,gBAAgBrU,EAAO,CACrB,IAAIxD,EACJ,IAAM8e,EAAqB,KAAK,sBAAsB,EACtD,GAAIA,EACF,OAAC9e,EAAK8e,EAAmB,mBAAqB,MAAQ9e,IAAO,QAAkBA,EAAG,IAAIwD,CAAK,EACpF,IAAMsb,EAAmB,gBAAgB,OAAOtb,CAAK,CAEhE,CACA,SAASrJ,EAAK6B,EAAO,CACfA,IAAU,KAAK,OAAO,IAAI7B,CAAG,IAC/B,KAAK,YAAYA,CAAG,EACpB,KAAK,kBAAkBA,EAAK6B,CAAK,GAEnC,KAAK,OAAO,IAAI7B,EAAK6B,CAAK,EAC1B,KAAK,aAAa7B,GAAO6B,EAAM,IAAI,CACrC,CACA,YAAY7B,EAAK,CACf,IAAI6F,EACJ,KAAK,OAAO,OAAO7F,CAAG,GACrB6F,EAAK,KAAK,mBAAmB,IAAI7F,CAAG,KAAO,MAAQ6F,IAAO,QAAkBA,EAAG,EAChF,KAAK,mBAAmB,OAAO7F,CAAG,EAClC,OAAO,KAAK,aAAaA,GACzB,KAAK,2BAA2BA,EAAK,KAAK,WAAW,CACvD,CACA,SAASA,EAAK,CACZ,OAAO,KAAK,OAAO,IAAIA,CAAG,CAC5B,CACA,SAASA,EAAKmH,EAAc,CAC1B,GAAI,KAAK,MAAM,QAAU,KAAK,MAAM,OAAOnH,GACzC,OAAO,KAAK,MAAM,OAAOA,GAE3B,IAAI6B,EAAQ,KAAK,OAAO,IAAI7B,CAAG,EAC/B,OAAI6B,IAAU,QAAUsF,IAAiB,SACvCtF,EAAQiB,GAAYqE,EAAc,CAAE,MAAO,IAAK,CAAC,EACjD,KAAK,SAASnH,EAAK6B,CAAK,GAEnBA,CACT,CACA,UAAU7B,EAAK,CACb,OAAO,KAAK,aAAaA,KAAS,QAAU,CAAC,KAAK,QAAU,KAAK,aAAaA,GAAO,KAAK,sBAAsB,KAAK,QAASA,EAAK,KAAK,OAAO,CACjJ,CACA,cAAcA,EAAK6B,EAAO,CACxB,KAAK,WAAW7B,GAAO6B,CACzB,CACA,cAAc7B,EAAK,CACjB,IAAI6F,EACJ,GAAM,CAAE,QAAA+e,CAAQ,EAAI,KAAK,MACnBC,EAAmB,OAAOD,GAAY,UAAY,OAAOA,GAAY,UAAY/e,EAAK6C,GAAwB,KAAK,MAAOkc,CAAO,KAAO,MAAQ/e,IAAO,OAAS,OAASA,EAAG7F,GAAO,OACzL,GAAI4kB,GAAWC,IAAqB,OAClC,OAAOA,EAET,IAAM7b,EAAS,KAAK,uBAAuB,KAAK,MAAOhJ,CAAG,EAC1D,OAAIgJ,IAAW,QAAU,CAACsH,GAActH,CAAM,EACrCA,EACF,KAAK,cAAchJ,KAAS,QAAU6kB,IAAqB,OAAS,OAAS,KAAK,WAAW7kB,EACtG,CACA,GAAGqC,EAAW7D,EAAU,CACtB,OAAK,KAAK,OAAO6D,KACf,KAAK,OAAOA,GAAa,IAAIlB,IAExB,KAAK,OAAOkB,GAAW,IAAI7D,CAAQ,CAC5C,CACA,OAAO6D,KAAcyiB,EAAM,CACzB,IAAIjf,GACHA,EAAK,KAAK,OAAOxD,MAAgB,MAAQwD,IAAO,QAAkBA,EAAG,OAAO,GAAGif,CAAI,CACtF,CACF,EACIJ,GAAgB,CAAC,UAAW,GAAG9H,EAAoB,EACnD6H,GAAkBC,GAAc,OAGpC,SAASK,GAASpa,EAAMC,EAAI7B,EAAa,CAAC,EAAG,CAC3C,IAAMlH,EAAQyO,GAAc3F,CAAI,EAAIA,EAAO7H,GAAY6H,CAAI,EAC3D,OAAA9I,EAAM,MAAM8Y,GAA2B,GAAI9Y,EAAO+I,EAAI7B,CAAU,CAAC,EAC1D,CACL,KAAM,IAAMlH,EAAM,KAAK,EACvB,YAAa,IAAMA,EAAM,YAAY,CACvC,CACF,CAGA,IAAImjB,GAAiB,CAAC3jB,EAAGC,IAAMD,EAAE,MAAQC,EAAE,MAGvC2jB,GAAW,KAAM,CACnB,aAAc,CACZ,KAAK,SAAW,CAAC,EACjB,KAAK,QAAU,EACjB,CACA,IAAI5b,EAAO,CACT3I,GAAc,KAAK,SAAU2I,CAAK,EAClC,KAAK,QAAU,EACjB,CACA,OAAOA,EAAO,CACZxI,GAAW,KAAK,SAAUwI,CAAK,EAC/B,KAAK,QAAU,EACjB,CACA,QAAQ7K,EAAU,CAChB,KAAK,SAAW,KAAK,SAAS,KAAKwmB,EAAc,EACjD,KAAK,QAAU,GACf,KAAK,SAAS,QAAQxmB,CAAQ,CAChC,CACF,EAGA,SAAS0mB,GAAkBC,EAAc,CACvC,SAAS3c,EAAOqb,EAAYuB,EAA8B,CAAC,EAAG,CAC5D,OAAOC,GAAsBF,EAAatB,EAAYuB,CAA2B,CAAC,CACpF,CACA,GAAI,OAAO,MAAU,IACnB,OAAO5c,EAET,IAAM8c,EAAiC,IAAI,IAC3C,OAAO,IAAI,MAAM9c,EAAQ,CACvB,IAAK,CAAC+c,EAASvlB,KACRslB,EAAe,IAAItlB,CAAG,GACzBslB,EAAe,IAAItlB,EAAKwI,EAAOxI,CAAG,CAAC,EAE9BslB,EAAe,IAAItlB,CAAG,EAEjC,CAAC,CACH,CAGA,IAAIwlB,GAAuB,CACzB,UACA,SACA,OACA,OACA,UACA,IACA,QACA,OACA,SACA,SACA,OACA,WACA,OACA,UACA,UACA,WACA,OACA,OACA,SACA,SACA,MACA,OACA,QACA,MACA,MACF,EAGA,SAASC,GAAe5B,EAAY,CAClC,OAAI,OAAOA,GAAe,UAAYA,EAAW,SAAS,GAAG,EACpD,GACE,GAAA2B,GAAqB,QAAQ3B,CAAU,EAAI,IAAM,QAAQ,KAAKA,CAAU,EAIrF,CASA,SAAS6B,GAAoB1lB,EAAK,CAAE,OAAA8gB,EAAQ,SAAAiD,CAAS,EAAG,CACtD,OAAOnT,GAAe,IAAI5Q,CAAG,GAAKA,EAAI,WAAW,QAAQ,IAAM8gB,GAAUiD,IAAa,UAAY,CAAC,CAAC4B,GAAgB3lB,IAAQA,IAAQ,UACtI,CAGA,SAAS4lB,GAAc5lB,EAAK,CAC1B,OAAOA,EAAI,WAAW,IAAI,CAC5B,CAGA,IAAI6lB,GAAiB,CAAChkB,EAAO8B,IACpBA,GAAQ,OAAO9B,GAAU,SAAW8B,EAAK,UAAU9B,CAAK,EAAIA,EAIrE,SAASikB,GAAgB/W,EAAOuT,EAActgB,EAAS+jB,EAAmB,CACxE,GAAM,CAAE,MAAAC,EAAO,KAAAC,EAAM,UAAWC,EAAY,cAAeC,EAAgB,gBAAAC,CAAgB,EAAIrX,EAC/FoX,EAAe,OAAS,EACxB,IAAIE,EAAgB,GAChBC,EAAqB,GACrBC,EAAkB,GACtB,QAAWvmB,KAAOsiB,EAAc,CAC9B,IAAMzgB,EAAQygB,EAAatiB,GAC3B,GAAI4lB,GAAc5lB,CAAG,EAAG,CACtBimB,EAAKjmB,GAAO6B,EACZ,QACF,CACA,IAAM2kB,EAAYhf,GAAiBxH,GAC7BymB,EAAcZ,GAAehkB,EAAO2kB,CAAS,EACnD,GAAI5V,GAAe,IAAI5Q,CAAG,EAAG,CAI3B,GAHAqmB,EAAgB,GAChBH,EAAWlmB,GAAOymB,EAClBN,EAAe,KAAKnmB,CAAG,EACnB,CAACumB,EACH,SACE1kB,KAAW2kB,EAAU,SAAW,KAClCD,EAAkB,GACtB,MAAWvmB,EAAI,WAAW,QAAQ,GAChCsmB,EAAqB,GACrBF,EAAgBpmB,GAAOymB,GAEvBT,EAAMhmB,GAAOymB,CAEjB,CAQA,GAPKnE,EAAa,YACZ+D,GAAiBN,EACnBC,EAAM,UAAYU,GAAe3X,EAAO/M,EAASukB,EAAiBR,CAAiB,EAC1EC,EAAM,YACfA,EAAM,UAAY,SAGlBM,EAAoB,CACtB,GAAM,CAAE,QAAAK,EAAU,MAAO,QAAAC,EAAU,MAAO,QAAAC,EAAU,CAAE,EAAIT,EAC1DJ,EAAM,gBAAkB,GAAGW,KAAWC,KAAWC,GACnD,CACF,CAGA,IAAIC,GAAwB,KAAO,CACjC,MAAO,CAAC,EACR,UAAW,CAAC,EACZ,cAAe,CAAC,EAChB,gBAAiB,CAAC,EAClB,KAAM,CAAC,CACT,GAGA,SAASC,GAAkB/d,EAAQzC,EAAQkC,EAAO,CAChD,QAAWzI,KAAOuG,EACZ,CAAC+J,GAAc/J,EAAOvG,EAAI,GAAK,CAAC0lB,GAAoB1lB,EAAKyI,CAAK,IAChEO,EAAOhJ,GAAOuG,EAAOvG,GAG3B,CACA,SAASgnB,GAAuB,CAAE,kBAAAjB,CAAkB,EAAG1D,EAAa4E,EAAU,CAC5E,OAAOC,EAAS,IAAM,CACpB,IAAMnY,EAAQ+X,GAAsB,EACpC,OAAAhB,GAAgB/W,EAAOsT,EAAa,CAAE,2BAA4B,CAAC4E,CAAS,EAAGlB,CAAiB,EACzF,OAAO,OAAO,CAAC,EAAGhX,EAAM,KAAMA,EAAM,KAAK,CAClD,EAAG,CAACsT,CAAW,CAAC,CAClB,CACA,SAAS8E,GAAS1e,EAAO4Z,EAAa4E,EAAU,CAC9C,IAAMG,EAAY3e,EAAM,OAAS,CAAC,EAC5Bud,EAAQ,CAAC,EACf,OAAAe,GAAkBf,EAAOoB,EAAW3e,CAAK,EACzC,OAAO,OAAOud,EAAOgB,GAAuBve,EAAO4Z,EAAa4E,CAAQ,CAAC,EAClExe,EAAM,gBAAkBA,EAAM,gBAAgBud,CAAK,EAAIA,CAChE,CACA,SAASqB,GAAa5e,EAAO4Z,EAAa4E,EAAU,CAClD,IAAMK,EAAY,CAAC,EACbtB,EAAQmB,GAAS1e,EAAO4Z,EAAa4E,CAAQ,EACnD,OAAIxe,EAAM,MAAQA,EAAM,eAAiB,KACvC6e,EAAU,UAAY,GACtBtB,EAAM,WAAaA,EAAM,iBAAmBA,EAAM,mBAAqB,OACvEA,EAAM,YAAcvd,EAAM,OAAS,GAAO,OAAS,OAAOA,EAAM,OAAS,IAAM,IAAM,OAEvF6e,EAAU,MAAQtB,EACXsB,CACT,CAMA,SAASC,GAAW/d,EAAQ+K,EAAQiT,EAAM,CACxC,OAAO,OAAOhe,GAAW,SAAWA,EAASvE,EAAG,UAAUsP,EAASiT,EAAOhe,CAAM,CAClF,CACA,SAASie,GAAuBC,EAAYf,EAASC,EAAS,CAC5D,IAAMe,EAAYJ,GAAWZ,EAASe,EAAW,EAAGA,EAAW,KAAK,EAC9DE,EAAYL,GAAWX,EAASc,EAAW,EAAGA,EAAW,MAAM,EACrE,MAAO,GAAGC,KAAaC,GACzB,CAGA,IAAIC,GAAW,CACb,OAAQ,oBACR,MAAO,kBACT,EACIC,GAAY,CACd,OAAQ,mBACR,MAAO,iBACT,EACA,SAASC,GAAaC,EAAOC,EAAQC,EAAU,EAAG3T,EAAS,EAAG4T,EAAc,GAAM,CAChFH,EAAM,WAAa,EACnB,IAAM1Z,EAAQ6Z,EAAcN,GAAWC,GACvCE,EAAM1Z,EAAM,QAAUrJ,EAAG,UAAU,CAACsP,CAAM,EAC1C,IAAM6T,EAAanjB,EAAG,UAAUgjB,CAAM,EAChCI,EAAcpjB,EAAG,UAAUijB,CAAO,EACxCF,EAAM1Z,EAAM,OAAS,GAAG8Z,KAAcC,GACxC,CAGA,SAASC,GAAcvZ,EAAO,CAC5B,MAAAwZ,EACA,MAAAC,EACA,QAAA7B,EACA,QAAAC,EACA,WAAAwB,EACA,YAAAC,EAAc,EACd,WAAAI,EAAa,KACVC,CACL,EAAG1mB,EAAS2mB,EAAW5C,EAAmB,CAExC,GADAD,GAAgB/W,EAAO2Z,EAAQ1mB,EAAS+jB,CAAiB,EACrD4C,EAAW,CACT5Z,EAAM,MAAM,UACdA,EAAM,MAAM,QAAUA,EAAM,MAAM,SAEpC,MACF,CACAA,EAAM,MAAQA,EAAM,MACpBA,EAAM,MAAQ,CAAC,EACf,GAAM,CAAE,MAAAiZ,EAAO,MAAAhC,EAAO,WAAA0B,CAAW,EAAI3Y,EACjCiZ,EAAM,YACJN,IACF1B,EAAM,UAAYgC,EAAM,WAC1B,OAAOA,EAAM,WAEXN,IAAef,IAAY,QAAUC,IAAY,QAAUZ,EAAM,aACnEA,EAAM,gBAAkByB,GAAuBC,EAAYf,IAAY,OAASA,EAAU,GAAKC,IAAY,OAASA,EAAU,EAAG,GAE/H2B,IAAU,SACZP,EAAM,EAAIO,GACRC,IAAU,SACZR,EAAM,EAAIQ,GACRJ,IAAe,QACjBL,GAAaC,EAAOI,EAAYC,EAAaI,EAAY,EAAK,CAElE,CAGA,IAAIG,GAAuB,KAAO,CAChC,GAAG9B,GAAsB,EACzB,MAAO,CAAC,CACV,GAGI+B,GAAYC,GAAQ,OAAOA,GAAQ,UAAYA,EAAI,YAAY,IAAM,MAGzE,SAASC,GAAYtgB,EAAO4Z,EAAa2G,EAAWnF,EAAY,CAC9D,IAAMoF,EAAc/B,EAAS,IAAM,CACjC,IAAMnY,EAAQ6Z,GAAqB,EACnC,OAAAN,GAAcvZ,EAAOsT,EAAa,CAAE,2BAA4B,EAAM,EAAGwG,GAAShF,CAAU,EAAGpb,EAAM,iBAAiB,EAC/G,CACL,GAAGsG,EAAM,MACT,MAAO,CAAE,GAAGA,EAAM,KAAM,CAC1B,CACF,EAAG,CAACsT,CAAW,CAAC,EAChB,GAAI5Z,EAAM,MAAO,CACf,IAAMygB,EAAY,CAAC,EACnBnC,GAAkBmC,EAAWzgB,EAAM,MAAOA,CAAK,EAC/CwgB,EAAY,MAAQ,CAAE,GAAGC,EAAW,GAAGD,EAAY,KAAM,CAC3D,CACA,OAAOA,CACT,CAGA,SAASE,GAAgBC,EAAqB,GAAO,CAoBnD,MAnBkB,CAACvF,EAAYpb,EAAO+a,EAAc6F,EAAK,CAAE,aAAA/G,CAAa,EAAG2E,IAAa,CAEtF,IAAMgC,GADiBxD,GAAe5B,CAAU,EAAIkF,GAAc1B,IAC/B5e,EAAO6Z,EAAc2E,EAAUpD,CAAU,EAEtEyF,EAAe,CACnB,GAFoBC,GAAY9gB,EAAO,OAAOob,GAAe,SAAUuF,CAAkB,EAGzF,GAAGH,EACH,IAAAI,CACF,EACM,CAAE,SAAAjG,CAAS,EAAI3a,EACf+gB,EAAmBtC,EAAS,IAAM5W,GAAc8S,CAAQ,EAAIA,EAAS,IAAI,EAAIA,EAAU,CAACA,CAAQ,CAAC,EACvG,OAAII,IACF8F,EAAa,sBAAwB9F,GAEhCM,EAAeD,EAAY,CAChC,GAAGyF,EACH,SAAUE,CACZ,CAAC,CACH,CAEF,CAGA,SAASC,GAAW5R,EAAS,CAAE,MAAAmO,EAAO,KAAAC,CAAK,EAAGmB,EAAWsC,EAAY,CACnE,OAAO,OAAO7R,EAAQ,MAAOmO,EAAO0D,GAAcA,EAAW,oBAAoBtC,CAAS,CAAC,EAC3F,QAAWpnB,KAAOimB,EAChBpO,EAAQ,MAAM,YAAY7X,EAAKimB,EAAKjmB,EAAI,CAE5C,CAGA,IAAI2pB,GAAsC,IAAI,IAAI,CAChD,gBACA,kBACA,eACA,mBACA,aACA,WACA,oBACA,eACA,cACA,aACA,UACA,UACA,eACA,mBACA,mBACA,eACA,cACA,UACA,oBACA,aACA,cACA,aACA,cACF,CAAC,EAGD,SAASC,GAAU/R,EAAS0K,EAAasH,EAAYH,EAAY,CAC/DD,GAAW5R,EAAS0K,EAAa,OAAQmH,CAAU,EACnD,QAAW1pB,KAAOuiB,EAAY,MAC5B1K,EAAQ,aAAc8R,GAAoB,IAAI3pB,CAAG,EAAuBA,EAAnB+J,GAAY/J,CAAG,EAASuiB,EAAY,MAAMviB,EAAI,CAEvG,CAGA,SAAS8pB,GAA4BrhB,EAAO4b,EAAW,CACrD,GAAM,CAAE,MAAA2B,CAAM,EAAIvd,EACZshB,EAAY,CAAC,EACnB,QAAW/pB,KAAOgmB,GACZ1V,GAAc0V,EAAMhmB,EAAI,GAAKqkB,EAAU,OAAS/T,GAAc+T,EAAU,MAAMrkB,EAAI,GAAK0lB,GAAoB1lB,EAAKyI,CAAK,KACvHshB,EAAU/pB,GAAOgmB,EAAMhmB,IAG3B,OAAO+pB,CACT,CAGA,SAASC,GAA6BvhB,EAAO4b,EAAW,CACtD,IAAM0F,EAAYD,GAA4BrhB,EAAO4b,CAAS,EAC9D,QAAWrkB,KAAOyI,EAChB,GAAI6H,GAAc7H,EAAMzI,EAAI,GAAKsQ,GAAc+T,EAAUrkB,EAAI,EAAG,CAC9D,IAAMiqB,EAAYjqB,IAAQ,KAAOA,IAAQ,IAAM,OAASA,EAAI,YAAY,EAAIA,EAC5E+pB,EAAUE,GAAaxhB,EAAMzI,EAC/B,CAEF,OAAO+pB,CACT,CAGA,IAAIG,GAAkB,CACpB,eAAgBC,GAAmB,CACjC,4BAA6BH,GAC7B,kBAAmBpB,GACnB,QAAS,CAACngB,EAAOoa,EAAU,CAAE,YAAAN,EAAa,aAAAD,CAAa,IAAM,CAC3D,GAAI,CACFC,EAAY,WAAa,OAAOM,EAAS,SAAY,WAAaA,EAAS,QAAQ,EAAIA,EAAS,sBAAsB,CACxH,MAAE,CACAN,EAAY,WAAa,CACvB,EAAG,EACH,EAAG,EACH,MAAO,EACP,OAAQ,CACV,CACF,CACA+F,GAAc/F,EAAaD,EAAc,CAAE,2BAA4B,EAAM,EAAGuG,GAAShG,EAAS,OAAO,EAAGpa,EAAM,iBAAiB,EACnImhB,GAAU/G,EAAUN,CAAW,CACjC,CACF,CAAC,CACH,EAGI6H,GAAmB,CACrB,eAAgBD,GAAmB,CACjC,4BAAAL,GACA,kBAAmBhD,EACrB,CAAC,CACH,EAGA,SAASuD,GAAsBxG,EAAY,CAAE,mBAAAuF,EAAqB,EAAM,EAAG7F,EAAmB+G,EAAqBC,EAA2B,CAE5I,MAAO,CACL,GAFiB9E,GAAe5B,CAAU,EAAIqG,GAAkBE,GAGhE,kBAAA7G,EACA,UAAW4F,GAAgBC,CAAkB,EAC7C,oBAAAkB,EACA,0BAAAC,EACA,UAAW1G,CACb,CACF,CAIA,SAAS2G,GAAgB,CAAE,WAAAC,EAAY,cAAAriB,CAAc,EAAG,CACtD,GAAM,CAAE,eAAAsiB,CAAe,EAAItiB,EACrBuiB,EAAUC,GAAa,IAAM,CACjCF,GAAkBA,EAAe,UAAU7N,EAAc,MAAO,EAAI,CACtE,EAAG,CAAC6N,CAAc,CAAC,EACbG,EAASD,GAAa,IAAM,CAChCF,GAAkBA,EAAe,UAAU7N,EAAc,MAAO,EAAK,CACvE,EAAG,CAAC6N,CAAc,CAAC,EACnBI,GAAY1iB,EAAe,QAASqiB,EAAaE,EAAU,MAAM,EACjEG,GAAY1iB,EAAe,OAAQqiB,EAAaI,EAAS,MAAM,CACjE,CAIA,SAASE,GAAiB3iB,EAAe8W,EAAU8L,EAAexsB,EAAU,CAC1E,MAAO,CAACysB,EAAOC,IAAS,CAClBD,EAAM,OAAS,SAAWE,GAAa,IAEvCH,GAAiB5iB,EAAc,gBACjCA,EAAc,eAAe,UAAUyU,EAAc,MAAOqC,CAAQ,EAEtE1gB,GAAYA,EAASysB,EAAOC,CAAI,EAClC,CACF,CACA,SAASE,GAAgB,CAAE,aAAAC,EAAc,WAAAC,EAAY,WAAAC,EAAY,cAAAnjB,CAAc,EAAG,CAChFojB,GAAgBpjB,EAAe,eAAgB8e,EAAS,IAC/CmE,GAAgBE,EAAaR,GAAiB3iB,EAAe,GAAM,QAAQmjB,CAAU,EAAGF,CAAY,EAAI,OAC9G,CAACA,EAAc,QAAQE,CAAU,EAAGnjB,CAAa,CAAC,EAAG,CAAE,QAAS,CAACijB,CAAa,CAAC,EAClFG,GAAgBpjB,EAAe,eAAgB8e,EAAS,IAC/CoE,GAAcC,EAAaR,GAAiB3iB,EAAe,GAAO,QAAQmjB,CAAU,EAAGD,CAAU,EAAI,OAC3G,CAACD,EAAc,QAAQE,CAAU,EAAGnjB,CAAa,CAAC,EAAG,CAAE,QAAS,CAACkjB,CAAW,CAAC,CAClF,CAMA,IAAIG,GAAgB,CAAC9K,EAAQtX,IACtBA,EAEMsX,IAAWtX,EACb,GAEAoiB,GAAc9K,EAAQtX,EAAM,aAAa,EAJzC,GASX,SAASqiB,GAAc,CAAE,MAAAC,EAAO,WAAAC,EAAY,YAAAC,EAAa,SAAAC,EAAU,cAAA1jB,KAAkBK,CAAM,EAAG,CAC5F,IAAMsjB,EAAoBJ,GAASC,GAAcC,GAAeC,EAC1DE,EAAaC,EAAQ,EAAK,EAC1BC,EAA4BD,EAAQ,IAAI,EACxCE,EAAe,CACnB,QAAS,EAAEP,GAAcD,GAASE,GAAepjB,EAAM,cACzD,EACA,SAAS2jB,GAA2B,CAClCF,EAA0B,SAAWA,EAA0B,QAAQ,EACvEA,EAA0B,QAAU,IACtC,CACA,SAASG,GAAkB,CACzB,OAAAD,EAAyB,EACzBJ,EAAW,QAAU,GACD5jB,EAAc,SAAS,EAC3B,UAAYA,EAAc,gBACxCA,EAAc,eAAe,UAAUyU,EAAc,IAAK,EAAK,EAE1D,CAACsO,GAAa,CACvB,CACA,SAASmB,EAAYrB,EAAOC,EAAM,CAChC,IAAIrlB,EAAIC,EAAIgd,EAAIyJ,EACXF,EAAgB,IAEpBZ,GAAcrjB,EAAc,QAAS6iB,EAAM,MAAM,GAAwHsB,GAAMzJ,EAAK1a,EAAc,SAAS,GAAG,SAAW,MAAQmkB,IAAO,QAAkBA,EAAG,KAAKzJ,EAAImI,EAAOC,CAAI,GAA3NplB,GAAMD,EAAKuC,EAAc,SAAS,GAAG,eAAiB,MAAQtC,IAAO,QAAkBA,EAAG,KAAKD,EAAIolB,EAAOC,CAAI,EACvK,CACA,SAASsB,EAAgBvB,EAAOC,EAAM,CACpC,IAAIrlB,EAAIC,EACHumB,EAAgB,KAEpBvmB,GAAMD,EAAKuC,EAAc,SAAS,GAAG,eAAiB,MAAQtC,IAAO,QAAkBA,EAAG,KAAKD,EAAIolB,EAAOC,CAAI,EACjH,CACA,IAAMuB,EAAa7B,GAAa,CAACK,EAAOC,IAAS,CAC/C,IAAIrlB,EAEJ,GADAumB,EAAyB,EACrBJ,EAAW,QACb,OACFA,EAAW,QAAU,GACrBE,EAA0B,QAAUzZ,GAAKia,GAAgBnuB,EAAQ,YAAa+tB,EAAaH,CAAY,EAAGO,GAAgBnuB,EAAQ,gBAAiBiuB,EAAiBL,CAAY,CAAC,EACjL,IAAMQ,EAAcvkB,EAAc,SAAS,EACvCukB,EAAY,UAAYvkB,EAAc,gBACxCA,EAAc,eAAe,UAAUyU,EAAc,IAAK,EAAI,GAE/DhX,EAAK8mB,EAAY,cAAgB,MAAQ9mB,IAAO,QAAkBA,EAAG,KAAK8mB,EAAa1B,EAAOC,CAAI,CACrG,EAAG,CAAC,QAAQU,CAAU,EAAGxjB,CAAa,CAAC,EACvCojB,GAAgBpjB,EAAe,cAAe2jB,EAAoBU,EAAa,OAAQN,CAAY,EACnGS,GAAiBR,CAAwB,CAC3C,CAMA,IAAIS,GAAoC,IAAI,QACxCC,GAA4B,IAAI,QAChCC,GAAwBC,GAAU,CACpC,IAAMxuB,EAAWquB,GAAkB,IAAIG,EAAM,MAAM,EACnDxuB,GAAYA,EAASwuB,CAAK,CAC5B,EACIC,GAA4BC,GAAY,CAC1CA,EAAQ,QAAQH,EAAoB,CACtC,EACA,SAASI,GAAyB,CAAE,KAAAC,KAASprB,CAAQ,EAAG,CACtD,IAAMqrB,EAAaD,GAAQ,SACtBN,GAAU,IAAIO,CAAU,GAC3BP,GAAU,IAAIO,EAAY,CAAC,CAAC,EAE9B,IAAMC,EAAgBR,GAAU,IAAIO,CAAU,EACxCrtB,EAAM,KAAK,UAAUgC,CAAO,EAClC,OAAKsrB,EAActtB,KACjBstB,EAActtB,GAAO,IAAI,qBAAqBitB,GAA0B,CAAE,KAAAG,EAAM,GAAGprB,CAAQ,CAAC,GAEvFsrB,EAActtB,EACvB,CACA,SAASutB,GAAoB1V,EAAS7V,EAASxD,EAAU,CACvD,IAAMgvB,EAA4BL,GAAyBnrB,CAAO,EAClE,OAAA6qB,GAAkB,IAAIhV,EAASrZ,CAAQ,EACvCgvB,EAA0B,QAAQ3V,CAAO,EAClC,IAAM,CACXgV,GAAkB,OAAOhV,CAAO,EAChC2V,EAA0B,UAAU3V,CAAO,CAC7C,CACF,CAGA,SAAS4V,GAAY,CAAE,cAAArlB,EAAe,YAAAslB,EAAa,gBAAAC,EAAiB,gBAAAC,EAAiB,SAAAC,EAAW,CAAC,CAAE,EAAG,CACpG,IAAM9e,EAAQkd,EAAQ,CACpB,eAAgB,GAChB,SAAU,EACZ,CAAC,EACG6B,EAAgB,QAAQJ,GAAeC,GAAmBC,CAAe,EACzEC,EAAS,MAAQ9e,EAAM,QAAQ,iBACjC+e,EAAgB,KACE,OAAO,qBAAyB,IAAcC,GAAiCC,IACvFF,EAAe/e,EAAM,QAAS3G,EAAeylB,CAAQ,CACnE,CACA,IAAII,GAAiB,CACnB,KAAM,EACN,IAAK,CACP,EACA,SAASD,GAAwBF,EAAe/e,EAAO3G,EAAe,CAAE,KAAAglB,EAAM,OAAQc,EAAY,OAAAC,EAAS,OAAQ,KAAAC,CAAK,EAAG,CACzH5O,EAAW,IAAM,CACf,GAAI,CAACsO,GAAiB,CAAC1lB,EAAc,QACnC,OACF,IAAMpG,EAAU,CACd,KAAkDorB,GAAK,QACvD,WAAAc,EACA,UAAW,OAAOC,GAAW,SAAWA,EAASF,GAAeE,EAClE,EACME,EAAwBrB,GAAU,CACtC,GAAM,CAAE,eAAAsB,CAAe,EAAItB,EAI3B,GAHIje,EAAM,WAAauf,IAEvBvf,EAAM,SAAWuf,EACbF,GAAQ,CAACE,GAAkBvf,EAAM,gBACnC,OACSuf,IACTvf,EAAM,eAAiB,IAErB3G,EAAc,gBAChBA,EAAc,eAAe,UAAUyU,EAAc,OAAQyR,CAAc,EAE7E,IAAM7lB,EAAQL,EAAc,SAAS,EAC/B5J,EAAW8vB,EAAiB7lB,EAAM,gBAAkBA,EAAM,gBAChEjK,GAAYA,EAASwuB,CAAK,CAC5B,EACA,OAAOO,GAAoBnlB,EAAc,QAASpG,EAASqsB,CAAoB,CACjF,EAAG,CAACP,EAAeV,EAAMc,EAAYC,CAAM,CAAC,CAC9C,CACA,SAASJ,GAA+BD,EAAe/e,EAAO3G,EAAe,CAAE,SAAAmmB,EAAW,EAAK,EAAG,CAChG/O,EAAW,IAAM,CACX,CAACsO,GAAiB,CAACS,GAKvB,sBAAsB,IAAM,CAC1Bxf,EAAM,eAAiB,GACvB,GAAM,CAAE,gBAAA4e,CAAgB,EAAIvlB,EAAc,SAAS,EACnDulB,GAAmBA,EAAgB,IAAI,EACnCvlB,EAAc,gBAChBA,EAAc,eAAe,UAAUyU,EAAc,OAAQ,EAAI,CAErE,CAAC,CACH,EAAG,CAACiR,CAAa,CAAC,CACpB,CAGA,IAAIU,GAAoB,CACtB,OAAQnP,GAAwBoO,EAAW,EAC3C,IAAKpO,GAAwBqM,EAAa,EAC1C,MAAOrM,GAAwBmL,EAAe,EAC9C,MAAOnL,GAAwB+L,EAAe,CAChD,EAMIqD,GAAa,KAAM,CACrB,YAAYxD,EAAOyD,EAAU,CAAE,mBAAAC,CAAmB,EAAI,CAAC,EAAG,CAuCxD,GAtCA,KAAK,WAAa,KAClB,KAAK,cAAgB,KACrB,KAAK,kBAAoB,KACzB,KAAK,SAAW,CAAC,EACjB,KAAK,YAAc,IAAM,CACvB,GAAI,EAAE,KAAK,eAAiB,KAAK,mBAC/B,OACF,IAAMC,EAAQC,GAAW,KAAK,kBAAmB,KAAK,OAAO,EACvDC,EAAe,KAAK,aAAe,KACnCC,EAA0B/O,GAAW4O,EAAM,OAAQ,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,GAAK,EAC5E,GAAI,CAACE,GAAgB,CAACC,EACpB,OACF,GAAM,CAAE,MAAOC,CAAO,EAAIJ,EACpB,CAAE,UAAWK,CAAW,EAAI9wB,GAClC,KAAK,QAAQ,KAAK,CAAE,GAAG6wB,EAAQ,UAAWC,CAAW,CAAC,EACtD,GAAM,CAAE,QAAAC,EAAS,OAAAC,CAAO,EAAI,KAAK,SAC5BL,IACHI,GAAWA,EAAQ,KAAK,cAAeN,CAAK,EAC5C,KAAK,WAAa,KAAK,eAEzBO,GAAUA,EAAO,KAAK,cAAeP,CAAK,CAC5C,EACA,KAAK,kBAAoB,CAACQ,EAAQR,IAAU,CAC1C,KAAK,cAAgBQ,EACrB,KAAK,kBAAoBC,GAAeT,EAAO,KAAK,kBAAkB,EACtE3uB,GAAK,OAAO,KAAK,YAAa,EAAI,CACpC,EACA,KAAK,gBAAkB,CAACmvB,EAAQR,IAAU,CAExC,GADA,KAAK,IAAI,EACL,EAAE,KAAK,eAAiB,KAAK,mBAC/B,OACF,GAAM,CAAE,MAAAU,EAAO,aAAAC,CAAa,EAAI,KAAK,SAC/BC,EAAUX,GAAWO,EAAO,OAAS,gBAAkB,KAAK,kBAAoBC,GAAeT,EAAO,KAAK,kBAAkB,EAAG,KAAK,OAAO,EAC9I,KAAK,YAAcU,GACrBA,EAAMF,EAAQI,CAAO,EAEvBD,GAAgBA,EAAaH,EAAQI,CAAO,CAC9C,EACI,CAACC,GAAiBxE,CAAK,EACzB,OACF,KAAK,SAAWyD,EAChB,KAAK,mBAAqBC,EAC1B,IAAMzD,EAAOwE,GAAiBzE,CAAK,EAC7B0E,EAAcN,GAAenE,EAAM,KAAK,kBAAkB,EAC1D,CAAE,MAAO0E,CAAO,EAAID,EACpB,CAAE,UAAAlvB,CAAU,EAAItC,GACtB,KAAK,QAAU,CAAC,CAAE,GAAGyxB,EAAQ,UAAAnvB,CAAU,CAAC,EACxC,GAAM,CAAE,eAAAovB,CAAe,EAAInB,EAC3BmB,GAAkBA,EAAe5E,EAAO4D,GAAWc,EAAa,KAAK,OAAO,CAAC,EAC7E,KAAK,gBAAkBld,GAAKia,GAAgBnuB,EAAQ,cAAe,KAAK,iBAAiB,EAAGmuB,GAAgBnuB,EAAQ,YAAa,KAAK,eAAe,EAAGmuB,GAAgBnuB,EAAQ,gBAAiB,KAAK,eAAe,CAAC,CACxN,CACA,eAAemwB,EAAU,CACvB,KAAK,SAAWA,CAClB,CACA,KAAM,CACJ,KAAK,iBAAmB,KAAK,gBAAgB,EAC7CtuB,GAAW,OAAO,KAAK,WAAW,CACpC,CACF,EACA,SAASivB,GAAenE,EAAMyD,EAAoB,CAChD,OAAOA,EAAqB,CAAE,MAAOA,EAAmBzD,EAAK,KAAK,CAAE,EAAIA,CAC1E,CACA,SAAS4E,GAAczuB,EAAGC,EAAG,CAC3B,MAAO,CAAE,EAAGD,EAAE,EAAIC,EAAE,EAAG,EAAGD,EAAE,EAAIC,EAAE,CAAE,CACtC,CACA,SAASutB,GAAW,CAAE,MAAOe,CAAO,EAAGG,EAAS,CAC9C,MAAO,CACL,MAAOH,EACP,MAAOE,GAAcF,EAAQI,GAAgBD,CAAO,CAAC,EACrD,OAAQD,GAAcF,EAAQK,GAAiBF,CAAO,CAAC,EACvD,SAAUG,GAAaH,EAAS,EAAG,CACrC,CACF,CACA,SAASE,GAAiBF,EAAS,CACjC,OAAOA,EAAQ,EACjB,CACA,SAASC,GAAgBD,EAAS,CAChC,OAAOA,EAAQA,EAAQ,OAAS,EAClC,CACA,SAASG,GAAaH,EAASI,EAAW,CACxC,GAAIJ,EAAQ,OAAS,EACnB,MAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAEtB,IAAIvwB,EAAIuwB,EAAQ,OAAS,EACrBK,EAAmB,KACjBC,EAAYL,GAAgBD,CAAO,EACzC,KAAOvwB,GAAK,IACV4wB,EAAmBL,EAAQvwB,GACvB,EAAA6wB,EAAU,UAAYD,EAAiB,UAAYrf,GAAsBof,CAAS,KAGtF3wB,IAEF,GAAI,CAAC4wB,EACH,MAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAEtB,IAAME,GAAQD,EAAU,UAAYD,EAAiB,WAAa,IAClE,GAAIE,IAAS,EACX,MAAO,CAAE,EAAG,EAAG,EAAG,CAAE,EAEtB,IAAM3gB,EAAkB,CACtB,GAAI0gB,EAAU,EAAID,EAAiB,GAAKE,EACxC,GAAID,EAAU,EAAID,EAAiB,GAAKE,CAC1C,EACA,OAAI3gB,EAAgB,IAAM,MACxBA,EAAgB,EAAI,GAElBA,EAAgB,IAAM,MACxBA,EAAgB,EAAI,GAEfA,CACT,CAGA,SAAS4gB,GAAiBX,EAAQ,CAAE,IAAAhX,EAAK,IAAAC,CAAI,EAAG2X,EAAS,CACvD,OAAI5X,IAAQ,QAAUgX,EAAShX,EAC7BgX,EAASY,EAAU9lB,GAAIkO,EAAKgX,EAAQY,EAAQ,GAAG,EAAI,KAAK,IAAIZ,EAAQhX,CAAG,EAC9DC,IAAQ,QAAU+W,EAAS/W,IACpC+W,EAASY,EAAU9lB,GAAImO,EAAK+W,EAAQY,EAAQ,GAAG,EAAI,KAAK,IAAIZ,EAAQ/W,CAAG,GAElE+W,CACT,CACA,SAASa,GAA4BrQ,EAAMxH,EAAKC,EAAK,CACnD,MAAO,CACL,IAAKD,IAAQ,OAASwH,EAAK,IAAMxH,EAAM,OACvC,IAAKC,IAAQ,OAASuH,EAAK,IAAMvH,GAAOuH,EAAK,IAAMA,EAAK,KAAO,MACjE,CACF,CACA,SAASsQ,GAAwBC,EAAW,CAAE,IAAAC,EAAK,KAAAC,EAAM,OAAAC,EAAQ,MAAAC,CAAM,EAAG,CACxE,MAAO,CACL,EAAGN,GAA4BE,EAAU,EAAGE,EAAME,CAAK,EACvD,EAAGN,GAA4BE,EAAU,EAAGC,EAAKE,CAAM,CACzD,CACF,CACA,SAASE,GAA4BC,EAAYC,EAAiB,CAChE,IAAItY,EAAMsY,EAAgB,IAAMD,EAAW,IACvCpY,EAAMqY,EAAgB,IAAMD,EAAW,IAC3C,OAAIC,EAAgB,IAAMA,EAAgB,IAAMD,EAAW,IAAMA,EAAW,MAC1E,CAACrY,EAAKC,CAAG,EAAI,CAACA,EAAKD,CAAG,GAEjB,CAAE,IAAAA,EAAK,IAAAC,CAAI,CACpB,CACA,SAASsY,GAAwBR,EAAWS,EAAgB,CAC1D,MAAO,CACL,EAAGJ,GAA4BL,EAAU,EAAGS,EAAe,CAAC,EAC5D,EAAGJ,GAA4BL,EAAU,EAAGS,EAAe,CAAC,CAC9D,CACF,CACA,SAASC,GAAY9qB,EAAQyC,EAAQ,CACnC,IAAIQ,EAAS,GACP8nB,EAAenR,GAAW5Z,CAAM,EAChCgrB,EAAepR,GAAWnX,CAAM,EACtC,OAAIuoB,EAAeD,EACjB9nB,EAASkJ,GAAS1J,EAAO,IAAKA,EAAO,IAAMsoB,EAAc/qB,EAAO,GAAG,EAC1D+qB,EAAeC,IACxB/nB,EAASkJ,GAASnM,EAAO,IAAKA,EAAO,IAAMgrB,EAAcvoB,EAAO,GAAG,GAE9DxF,GAAM,EAAG,EAAGgG,CAAM,CAC3B,CACA,SAASgoB,GAAsB1Q,EAAQ2Q,EAAa,CAClD,IAAMC,EAAsB,CAAC,EAC7B,OAAID,EAAY,MAAQ,SACtBC,EAAoB,IAAMD,EAAY,IAAM3Q,EAAO,KAEjD2Q,EAAY,MAAQ,SACtBC,EAAoB,IAAMD,EAAY,IAAM3Q,EAAO,KAE9C4Q,CACT,CACA,IAAIC,GAAiB,IACrB,SAASC,GAAmBC,EAAcF,GAAgB,CACxD,OAAIE,IAAgB,GAClBA,EAAc,EACLA,IAAgB,KACzBA,EAAcF,IAET,CACL,EAAGG,GAAmBD,EAAa,OAAQ,OAAO,EAClD,EAAGC,GAAmBD,EAAa,MAAO,QAAQ,CACpD,CACF,CACA,SAASC,GAAmBD,EAAaE,EAAUC,EAAU,CAC3D,MAAO,CACL,IAAKC,GAAoBJ,EAAaE,CAAQ,EAC9C,IAAKE,GAAoBJ,EAAaG,CAAQ,CAChD,CACF,CACA,SAASC,GAAoBJ,EAAaK,EAAO,CAC/C,OAAO,OAAOL,GAAgB,SAAWA,EAAcA,EAAYK,IAAU,CAC/E,CAGA,SAASC,GAAS3zB,EAAU,CAC1B,MAAO,CAACA,EAAS,GAAG,EAAGA,EAAS,GAAG,CAAC,CACtC,CAGA,SAAS4zB,GAAwB,CAAE,IAAAxB,EAAK,KAAAC,EAAM,MAAAE,EAAO,OAAAD,CAAO,EAAG,CAC7D,MAAO,CACL,EAAG,CAAE,IAAKD,EAAM,IAAKE,CAAM,EAC3B,EAAG,CAAE,IAAKH,EAAK,IAAKE,CAAO,CAC7B,CACF,CACA,SAASuB,GAAwB,CAAE,EAAA9mB,EAAG,EAAA+mB,CAAE,EAAG,CACzC,MAAO,CAAE,IAAKA,EAAE,IAAK,MAAO/mB,EAAE,IAAK,OAAQ+mB,EAAE,IAAK,KAAM/mB,EAAE,GAAI,CAChE,CACA,SAASgnB,GAAmB3C,EAAQ4C,EAAiB,CACnD,GAAI,CAACA,EACH,OAAO5C,EACT,IAAM6C,EAAUD,EAAgB,CAAE,EAAG5C,EAAO,KAAM,EAAGA,EAAO,GAAI,CAAC,EAC3D8C,EAAcF,EAAgB,CAAE,EAAG5C,EAAO,MAAO,EAAGA,EAAO,MAAO,CAAC,EACzE,MAAO,CACL,IAAK6C,EAAQ,EACb,KAAMA,EAAQ,EACd,OAAQC,EAAY,EACpB,MAAOA,EAAY,CACrB,CACF,CAGA,SAASC,GAAgBC,EAAQ,CAC/B,OAAOA,IAAW,QAAUA,IAAW,CACzC,CACA,SAASC,GAAS,CAAE,MAAOD,EAAQ,OAAAE,EAAQ,OAAAC,CAAO,EAAG,CACnD,MAAO,CAACJ,GAAgBC,CAAM,GAAK,CAACD,GAAgBG,CAAM,GAAK,CAACH,GAAgBI,CAAM,CACxF,CACA,SAASC,GAAahtB,EAAQ,CAC5B,OAAO6sB,GAAS7sB,CAAM,GAAKitB,GAAejtB,CAAM,GAAKA,EAAO,GAAKA,EAAO,QAAUA,EAAO,SAAWA,EAAO,OAC7G,CACA,SAASitB,GAAejtB,EAAQ,CAC9B,OAAOktB,GAAcltB,EAAO,CAAC,GAAKktB,GAAcltB,EAAO,CAAC,CAC1D,CACA,SAASktB,GAAcrxB,EAAO,CAC5B,OAAOA,GAASA,IAAU,IAC5B,CAGA,SAASsxB,GAAWvD,EAAQgD,EAAQQ,EAAa,CAC/C,IAAMC,EAAqBzD,EAASwD,EAC9BE,EAASV,EAASS,EACxB,OAAOD,EAAcE,CACvB,CACA,SAASC,GAAgB3D,EAAQ4D,EAAWZ,EAAQQ,EAAaK,EAAU,CACzE,OAAIA,IAAa,SACf7D,EAASuD,GAAWvD,EAAQ6D,EAAUL,CAAW,GAE5CD,GAAWvD,EAAQgD,EAAQQ,CAAW,EAAII,CACnD,CACA,SAASE,GAAetT,EAAMoT,EAAY,EAAGZ,EAAS,EAAGQ,EAAaK,EAAU,CAC9ErT,EAAK,IAAMmT,GAAgBnT,EAAK,IAAKoT,EAAWZ,EAAQQ,EAAaK,CAAQ,EAC7ErT,EAAK,IAAMmT,GAAgBnT,EAAK,IAAKoT,EAAWZ,EAAQQ,EAAaK,CAAQ,CAC/E,CACA,SAASE,GAAcC,EAAK,CAAE,EAAAroB,EAAG,EAAA+mB,CAAE,EAAG,CACpCoB,GAAeE,EAAI,EAAGroB,EAAE,UAAWA,EAAE,MAAOA,EAAE,WAAW,EACzDmoB,GAAeE,EAAI,EAAGtB,EAAE,UAAWA,EAAE,MAAOA,EAAE,WAAW,CAC3D,CACA,SAASuB,GAAgBD,EAAKE,EAAWC,EAAUC,EAAqB,GAAO,CAC7E,IAAInuB,EAAIC,EACR,IAAMmuB,EAAaF,EAAS,OAC5B,GAAI,CAACE,EACH,OACFH,EAAU,EAAIA,EAAU,EAAI,EAC5B,IAAII,EACA/xB,EACJ,QAAS3C,EAAI,EAAGA,EAAIy0B,EAAYz0B,IAC9B00B,EAAOH,EAASv0B,GAChB2C,EAAQ+xB,EAAK,kBACPpuB,GAAMD,EAAKquB,EAAK,YAAc,MAAQruB,IAAO,OAAS,OAASA,EAAG,SAAW,MAAQC,IAAO,OAAS,OAASA,EAAG,WAAa,aAEhIkuB,GAAsBE,EAAK,QAAQ,cAAgBA,EAAK,QAAUA,IAASA,EAAK,MAClFC,GAAaP,EAAK,CAChB,EAAG,CAACM,EAAK,OAAO,OAAO,EACvB,EAAG,CAACA,EAAK,OAAO,OAAO,CACzB,CAAC,EAEC/xB,IACF2xB,EAAU,GAAK3xB,EAAM,EAAE,MACvB2xB,EAAU,GAAK3xB,EAAM,EAAE,MACvBwxB,GAAcC,EAAKzxB,CAAK,GAEtB6xB,GAAsBhB,GAAakB,EAAK,YAAY,GACtDC,GAAaP,EAAKM,EAAK,YAAY,GAGvCJ,EAAU,EAAIM,GAAcN,EAAU,CAAC,EACvCA,EAAU,EAAIM,GAAcN,EAAU,CAAC,CACzC,CACA,SAASM,GAAcxB,EAAQ,CAC7B,OAAI,OAAO,UAAUA,CAAM,GAEpBA,EAAS,iBAAmBA,EAAS,cADnCA,EAC6D,CACxE,CACA,SAASyB,GAAcjU,EAAMkU,EAAW,CACtClU,EAAK,IAAMA,EAAK,IAAMkU,EACtBlU,EAAK,IAAMA,EAAK,IAAMkU,CACxB,CACA,SAASC,GAAcnU,EAAMoU,EAAY,CAACx0B,EAAKy0B,EAAUC,CAAS,EAAG,CACnE,IAAMC,EAAaH,EAAWE,KAAe,OAASF,EAAWE,GAAa,GACxEtB,EAAc1oB,GAAI0V,EAAK,IAAKA,EAAK,IAAKuU,CAAU,EACtDjB,GAAetT,EAAMoU,EAAWx0B,GAAMw0B,EAAWC,GAAWrB,EAAaoB,EAAW,KAAK,CAC3F,CACA,IAAII,GAAQ,CAAC,IAAK,SAAU,SAAS,EACjCC,GAAQ,CAAC,IAAK,SAAU,SAAS,EACrC,SAASV,GAAaP,EAAK1N,EAAY,CACrCqO,GAAcX,EAAI,EAAG1N,EAAY0O,EAAK,EACtCL,GAAcX,EAAI,EAAG1N,EAAY2O,EAAK,CACxC,CAGA,SAASC,GAAmBjS,EAAU2P,EAAiB,CACrD,OAAOJ,GAAwBG,GAAmB1P,EAAS,sBAAsB,EAAG2P,CAAe,CAAC,CACtG,CACA,SAASuC,GAAeld,EAASmd,EAAqBrG,EAAoB,CACxE,IAAMsG,EAAcH,GAAmBjd,EAAS8W,CAAkB,EAC5D,CAAE,OAAQuG,CAAQ,EAAIF,EAC5B,OAAIE,IACFb,GAAcY,EAAY,EAAGC,EAAQ,OAAO,CAAC,EAC7Cb,GAAcY,EAAY,EAAGC,EAAQ,OAAO,CAAC,GAExCD,CACT,CAGA,IAAIE,GAAsC,IAAI,QAC1CC,GAA4B,KAAM,CACpC,YAAYhtB,EAAe,CACzB,KAAK,eAAiB,KACtB,KAAK,WAAa,GAClB,KAAK,iBAAmB,KACxB,KAAK,YAAc,CAAE,EAAG,EAAG,EAAG,CAAE,EAChC,KAAK,YAAc,GACnB,KAAK,sBAAwB,GAC7B,KAAK,QAAU+Y,GAAU,EACzB,KAAK,cAAgB/Y,CACvB,CACA,MAAMitB,EAAa,CAAE,aAAAC,EAAe,EAAM,EAAI,CAAC,EAAG,CAChD,GAAI,KAAK,cAAc,YAAc,GACnC,OACF,IAAMzF,EAAkB5E,GAAU,CAChC,KAAK,cAAc,EACfqK,GACF,KAAK,aAAa5F,GAAiBzE,EAAO,MAAM,EAAE,KAAK,CAE3D,EACMiE,EAAU,CAACjE,EAAOC,IAAS,CAC/B,IAAIrlB,EACJ,GAAM,CAAE,KAAMme,EAAO,gBAAAuR,EAAiB,YAAAC,CAAY,EAAI,KAAK,SAAS,EAChExR,GAAS,CAACuR,IACR,KAAK,gBACP,KAAK,eAAe,EACtB,KAAK,eAAiBE,GAAczR,CAAK,EACrC,CAAC,KAAK,kBAGZ,KAAK,WAAa,GAClB,KAAK,iBAAmB,KACxB,KAAK,mBAAmB,EACpB,KAAK,cAAc,aACrB,KAAK,cAAc,WAAW,mBAAqB,GACnD,KAAK,cAAc,WAAW,OAAS,QAEzCmO,GAAU/R,GAAS,CACjB,IAAIjB,EAAKrZ,EACT,IAAInD,EAAU,KAAK,mBAAmByd,CAAI,EAAE,IAAI,GAAK,EACrD,GAAIpb,GAAQ,KAAKrC,CAAO,EAAG,CACzB,IAAM+yB,GAAgB5vB,GAAMqZ,EAAM,KAAK,cAAc,cAAgB,MAAQA,IAAQ,OAAS,OAASA,EAAI,UAAY,MAAQrZ,IAAO,OAAS,OAASA,EAAG,UAAUsa,GACjKsV,IAEF/yB,EADewd,GAAWuV,CAAY,GAClB,WAAW/yB,CAAO,EAAI,KAE9C,CACA,KAAK,YAAYyd,GAAQzd,CAC3B,CAAC,EACyD6yB,IAAYvK,EAAOC,CAAI,GAChFrlB,EAAK,KAAK,cAAc,kBAAoB,MAAQA,IAAO,QAAkBA,EAAG,UAAUgX,EAAc,KAAM,EAAI,EACrH,EACMsS,EAAS,CAAClE,EAAOC,IAAS,CAC9B,GAAM,CAAE,gBAAAqK,EAAiB,kBAAAI,EAAmB,gBAAAC,EAAiB,OAAAC,CAAO,EAAI,KAAK,SAAS,EACtF,GAAI,CAACN,GAAmB,CAAC,KAAK,eAC5B,OACF,GAAM,CAAE,OAAAhhB,CAAO,EAAI2W,EACnB,GAAIyK,GAAqB,KAAK,mBAAqB,KAAM,CACvD,KAAK,iBAAmBG,GAAoBvhB,CAAM,EAC9C,KAAK,mBAAqB,MACsCqhB,IAAgB,KAAK,gBAAgB,EAEzG,MACF,CACA,KAAK,WAAW,IAAK1K,EAAK,MAAO3W,CAAM,EACvC,KAAK,WAAW,IAAK2W,EAAK,MAAO3W,CAAM,EACvC,KAAK,cAAc,OAAO,EACsBshB,IAAO5K,EAAOC,CAAI,CACpE,EACMqE,EAAe,CAACtE,EAAOC,IAAS,KAAK,KAAKD,EAAOC,CAAI,EAC3D,KAAK,WAAa,IAAIuD,GAAW4G,EAAa,CAC5C,eAAAxF,EACA,QAAAX,EACA,OAAAC,EACA,aAAAI,CACF,EAAG,CAAE,mBAAoB,KAAK,cAAc,sBAAsB,CAAE,CAAC,CACvE,CACA,KAAKtE,EAAOC,EAAM,CAChB,IAAM6K,EAAa,KAAK,WAExB,GADA,KAAK,OAAO,EACR,CAACA,EACH,OACF,GAAM,CAAE,SAAAr0B,CAAS,EAAIwpB,EACrB,KAAK,eAAexpB,CAAQ,EAC5B,GAAM,CAAE,UAAAs0B,CAAU,EAAI,KAAK,SAAS,EACkBA,IAAU/K,EAAOC,CAAI,CAC7E,CACA,QAAS,CACP,IAAIrlB,EAAIC,EACR,KAAK,WAAa,GACd,KAAK,cAAc,aACrB,KAAK,cAAc,WAAW,mBAAqB,KAEpDD,EAAK,KAAK,cAAgB,MAAQA,IAAO,QAAkBA,EAAG,IAAI,EACnE,KAAK,WAAa,OAClB,GAAM,CAAE,gBAAA0vB,CAAgB,EAAI,KAAK,SAAS,EACtC,CAACA,GAAmB,KAAK,iBAC3B,KAAK,eAAe,EACpB,KAAK,eAAiB,OAEvBzvB,EAAK,KAAK,cAAc,kBAAoB,MAAQA,IAAO,QAAkBA,EAAG,UAAU+W,EAAc,KAAM,EAAK,CACtH,CACA,WAAWuD,EAAM6V,EAAQ1hB,EAAQ,CAC/B,GAAM,CAAE,KAAMyP,CAAM,EAAI,KAAK,SAAS,EACtC,GAAI,CAACzP,GAAU,CAAC2hB,GAAW9V,EAAM4D,EAAO,KAAK,gBAAgB,EAC3D,OACF,IAAMmS,EAAY,KAAK,mBAAmB/V,CAAI,EAC1C1D,EAAO,KAAK,YAAY0D,GAAQ7L,EAAO6L,GACvC,KAAK,aAAe,KAAK,YAAYA,KACvC1D,EAAO6T,GAAiB7T,EAAM,KAAK,YAAY0D,GAAO,KAAK,QAAQA,EAAK,GAE1E+V,EAAU,IAAIzZ,CAAI,CACpB,CACA,oBAAqB,CACnB,GAAM,CAAE,gBAAAuH,EAAiB,YAAA4N,CAAY,EAAI,KAAK,SAAS,EACjD,CAAE,OAAA/Q,CAAO,EAAI,KAAK,cAAc,YAAc,CAAC,EAC/CsV,EAAkB,KAAK,YACzBnS,GAAmBE,GAAYF,CAAe,EAC3C,KAAK,cACR,KAAK,YAAc,KAAK,sBAAsB,GAG5CA,GAAmBnD,EACrB,KAAK,YAAc4P,GAAwB5P,EAAO,UAAWmD,CAAe,EAE5E,KAAK,YAAc,GAGvB,KAAK,QAAU2N,GAAmBC,CAAW,EACzCuE,IAAoB,KAAK,aAAetV,GAAU,KAAK,aAAe,CAAC,KAAK,uBAC9EqR,GAAU/R,GAAS,CACb,KAAK,mBAAmBA,CAAI,IAC9B,KAAK,YAAYA,GAAQoR,GAAsB1Q,EAAO,UAAUV,GAAO,KAAK,YAAYA,EAAK,EAEjG,CAAC,CAEL,CACA,uBAAwB,CACtB,GAAM,CAAE,gBAAiBqR,EAAa,yBAAA4E,CAAyB,EAAI,KAAK,SAAS,EACjF,GAAI,CAAC5E,GAAe,CAACtN,GAAYsN,CAAW,EAC1C,MAAO,GACT,IAAM6E,EAAqB7E,EAAY,QACvC9kB,GAAU2pB,IAAuB,KAAM,wGAAwG,EAC/I,GAAM,CAAE,WAAA5M,CAAW,EAAI,KAAK,cAC5B,GAAI,CAACA,GAAc,CAACA,EAAW,OAC7B,MAAO,GACT,IAAM0H,EAAiB2D,GAAeuB,EAAoB5M,EAAW,KAAM,KAAK,cAAc,sBAAsB,CAAC,EACjH6M,EAAsBpF,GAAwBzH,EAAW,OAAO,UAAW0H,CAAc,EAC7F,GAAIiF,EAA0B,CAC5B,IAAMG,EAAkBH,EAAyBhE,GAAwBkE,CAAmB,CAAC,EAC7F,KAAK,sBAAwB,CAAC,CAACC,EAC3BA,IACFD,EAAsBnE,GAAwBoE,CAAe,EAEjE,CACA,OAAOD,CACT,CACA,eAAe70B,EAAU,CACvB,GAAM,CAAE,KAAMsiB,EAAO,aAAAyS,EAAc,YAAA5E,EAAa,eAAA6E,EAAgB,iBAAAC,EAAkB,oBAAAC,CAAoB,EAAI,KAAK,SAAS,EAClHnF,EAAc,KAAK,aAAe,CAAC,EACnCoF,EAAqB1E,GAAU/R,GAAS,CAC5C,GAAI,CAAC8V,GAAW9V,EAAM4D,EAAO,KAAK,gBAAgB,EAChD,OAEF,IAAIjb,EAAwE0oB,IAAYrR,IAAU,CAAC,EAC/FuW,IACF5tB,EAAa,CAAE,IAAK,EAAG,IAAK,CAAE,GAChC,IAAM+P,EAAkB+Y,EAAc,IAAM,IACtC9Y,EAAgB8Y,EAAc,GAAK,IACnCiF,EAAW,CACf,KAAM,UACN,SAAUL,EAAe/0B,EAAS0e,GAAQ,EAC1C,gBAAAtH,EACA,cAAAC,EACA,aAAc,IACd,UAAW,EACX,UAAW,GACX,GAAG2d,EACH,GAAG3tB,CACL,EACA,OAAO,KAAK,wBAAwBqX,EAAM0W,CAAQ,CACpD,CAAC,EACD,OAAO,QAAQ,IAAID,CAAkB,EAAE,KAAKD,CAAmB,CACjE,CACA,wBAAwBxW,EAAMrX,EAAY,CACxC,IAAMotB,EAAY,KAAK,mBAAmB/V,CAAI,EAC9C,OAAO+V,EAAU,MAAMxb,GAA2ByF,EAAM+V,EAAW,EAAGptB,CAAU,CAAC,CACnF,CACA,eAAgB,CACdopB,GAAU/R,GAAS,KAAK,mBAAmBA,CAAI,EAAE,KAAK,CAAC,CACzD,CACA,mBAAmBA,EAAM,CACvB,IAAIva,EACJ,IAAMkxB,EAAU,QAAU3W,EAAK,YAAY,EACrC4W,EAAsB,KAAK,cAAc,SAAS,EAAED,GAC1D,OAAOC,GAA4C,KAAK,cAAc,SAAS5W,IAAQva,EAAK,KAAK,cAAc,SAAS,EAAE,WAAa,MAAQA,IAAO,OAAS,OAASA,EAAGua,KAAU,CAAC,CACxL,CACA,aAAawP,EAAQ,CACnBuC,GAAU/R,GAAS,CACjB,GAAM,CAAE,KAAM4D,CAAM,EAAI,KAAK,SAAS,EACtC,GAAI,CAACkS,GAAW9V,EAAM4D,EAAO,KAAK,gBAAgB,EAChD,OACF,GAAM,CAAE,WAAA0F,CAAW,EAAI,KAAK,cACtByM,EAAY,KAAK,mBAAmB/V,CAAI,EAC9C,GAAIsJ,GAAcA,EAAW,OAAQ,CACnC,GAAM,CAAE,IAAA9Q,EAAK,IAAAC,CAAI,EAAI6Q,EAAW,OAAO,UAAUtJ,GACjD+V,EAAU,IAAIvG,EAAOxP,GAAQ1V,GAAIkO,EAAKC,EAAK,EAAG,CAAC,CACjD,CACF,CAAC,CACH,CACA,gCAAiC,CAC/B,IAAIhT,EACJ,GAAI,CAAC,KAAK,cAAc,QACtB,OACF,GAAM,CAAE,KAAMme,EAAO,gBAAAC,CAAgB,EAAI,KAAK,SAAS,EACjD,CAAE,WAAAyF,CAAW,EAAI,KAAK,cAC5B,GAAI,CAACvF,GAAYF,CAAe,GAAK,CAACyF,GAAc,CAAC,KAAK,YACxD,OACF,KAAK,cAAc,EACnB,IAAMuN,EAAc,CAAE,EAAG,EAAG,EAAG,CAAE,EACjC9E,GAAU/R,GAAS,CACjB,IAAM+V,EAAY,KAAK,mBAAmB/V,CAAI,EAC9C,GAAI+V,EAAW,CACb,IAAMzN,EAASyN,EAAU,IAAI,EAC7Bc,EAAY7W,GAAQiR,GAAY,CAAE,IAAK3I,EAAQ,IAAKA,CAAO,EAAG,KAAK,YAAYtI,EAAK,CACtF,CACF,CAAC,EACD,GAAM,CAAE,kBAAA2F,CAAkB,EAAI,KAAK,cAAc,SAAS,EAC1D,KAAK,cAAc,QAAQ,MAAM,UAAYA,EAAoBA,EAAkB,CAAC,EAAG,EAAE,EAAI,QAC5FlgB,EAAK6jB,EAAW,QAAU,MAAQ7jB,IAAO,QAAkBA,EAAG,aAAa,EAC5E6jB,EAAW,aAAa,EACxB,KAAK,mBAAmB,EACxByI,GAAU/R,GAAS,CACjB,GAAI,CAAC8V,GAAW9V,EAAM4D,EAAO,IAAI,EAC/B,OACF,IAAMmS,EAAY,KAAK,mBAAmB/V,CAAI,EACxC,CAAE,IAAAxH,EAAK,IAAAC,CAAI,EAAI,KAAK,YAAYuH,GACtC+V,EAAU,IAAIzrB,GAAIkO,EAAKC,EAAKoe,EAAY7W,EAAK,CAAC,CAChD,CAAC,CACH,CACA,cAAe,CACb,IAAIva,EACJ,GAAI,CAAC,KAAK,cAAc,QACtB,OACFsvB,GAAoB,IAAI,KAAK,cAAe,IAAI,EAChD,IAAMtd,EAAU,KAAK,cAAc,QAC7Bqf,EAAsBxK,GAAgB7U,EAAS,cAAgBoT,GAAU,CAC7E,GAAM,CAAE,KAAMjH,EAAO,aAAAmT,EAAe,EAAK,EAAI,KAAK,SAAS,EAC3DnT,GAASmT,GAAgB,KAAK,MAAMlM,CAAK,CAC3C,CAAC,EACKmM,EAAyB,IAAM,CACnC,GAAM,CAAE,gBAAAnT,CAAgB,EAAI,KAAK,SAAS,EACtCE,GAAYF,CAAe,IAC7B,KAAK,YAAc,KAAK,sBAAsB,EAElD,EACM,CAAE,WAAAyF,CAAW,EAAI,KAAK,cACtB2N,EAA4B3N,EAAW,iBAAiB,UAAW0N,CAAsB,EAC3F1N,GAAc,CAACA,EAAW,UAC3B7jB,EAAK6jB,EAAW,QAAU,MAAQ7jB,IAAO,QAAkBA,EAAG,aAAa,EAC5E6jB,EAAW,aAAa,GAE1B0N,EAAuB,EACvB,IAAME,EAAqBC,GAAYh5B,EAAQ,SAAU,IAAM,KAAK,+BAA+B,CAAC,EAC9Fi5B,EAA2B9N,EAAW,iBAAiB,YAAa,CAAC,CAAE,MAAAvnB,EAAO,iBAAAs1B,CAAiB,IAAM,CACrG,KAAK,YAAcA,IACrBtF,GAAU/R,GAAS,CACjB,IAAMsX,EAAe,KAAK,mBAAmBtX,CAAI,EAC5CsX,IAEL,KAAK,YAAYtX,IAASje,EAAMie,GAAM,UACtCsX,EAAa,IAAIA,EAAa,IAAI,EAAIv1B,EAAMie,GAAM,SAAS,EAC7D,CAAC,EACD,KAAK,cAAc,OAAO,EAE9B,CAAC,EACD,MAAO,IAAM,CACXkX,EAAmB,EACnBJ,EAAoB,EACpBG,EAA0B,EAC0DG,IAAyB,CAC/G,CACF,CACA,UAAW,CACT,IAAM/uB,EAAQ,KAAK,cAAc,SAAS,EACpC,CAAE,KAAMub,EAAQ,GAAO,kBAAA2R,EAAoB,GAAO,gBAAAJ,EAAkB,GAAO,gBAAAtR,EAAkB,GAAO,YAAA4N,EAAcF,GAAgB,aAAA8E,EAAe,EAAK,EAAIhuB,EAChK,MAAO,CACL,GAAGA,EACH,KAAMub,EACN,kBAAA2R,EACA,gBAAAJ,EACA,gBAAAtR,EACA,YAAA4N,EACA,aAAA4E,CACF,CACF,CACF,EACA,SAASP,GAAWyB,EAAW3T,EAAO4T,EAAkB,CACtD,OAAQ5T,IAAU,IAAQA,IAAU2T,KAAeC,IAAqB,MAAQA,IAAqBD,EACvG,CACA,SAAS7B,GAAoBvhB,EAAQsjB,EAAgB,GAAI,CACvD,IAAIF,EAAY,KAChB,OAAI,KAAK,IAAIpjB,EAAO,CAAC,EAAIsjB,EACvBF,EAAY,IACH,KAAK,IAAIpjB,EAAO,CAAC,EAAIsjB,IAC9BF,EAAY,KAEPA,CACT,CAGA,SAASG,GAAQrvB,EAAO,CACtB,GAAM,CAAE,aAAcsvB,EAAmB,cAAA3vB,CAAc,EAAIK,EACrDuvB,EAAeC,GAAY,IAAM,IAAI7C,GAA0BhtB,CAAa,CAAC,EACnFoX,EAAW,IAAMuY,GAAqBA,EAAkB,UAAUC,CAAY,EAAG,CAACA,EAAcD,CAAiB,CAAC,EAClHvY,EAAW,IAAMwY,EAAa,aAAa,EAAG,CAACA,CAAY,CAAC,CAC9D,CAIA,SAASE,GAAc,CAAE,MAAAC,EAAO,WAAAC,EAAY,SAAAC,EAAU,kBAAAC,EAAmB,cAAAlwB,CAAc,EAAG,CACxF,IAAMmwB,EAAeJ,GAASC,GAAcC,GAAYC,EAClDE,EAAavM,EAAQ,IAAI,EACzB,CAAE,mBAAA0C,CAAmB,EAAI9O,EAAY4Y,EAAmB,EACxD/J,EAAW,CACf,eAAgB4J,EAChB,QAASF,EACT,OAAQD,EACR,MAAO,CAAClN,EAAOC,IAAS,CACtBsN,EAAW,QAAU,KACrBH,GAAYA,EAASpN,EAAOC,CAAI,CAClC,CACF,EACA1L,EAAW,IAAM,CACXgZ,EAAW,UAAY,MACzBA,EAAW,QAAQ,eAAe9J,CAAQ,CAE9C,CAAC,EACD,SAASgK,EAAczN,EAAO,CAC5BuN,EAAW,QAAU,IAAI/J,GAAWxD,EAAOyD,EAAU,CACnD,mBAAAC,CACF,CAAC,CACH,CACAnD,GAAgBpjB,EAAe,cAAemwB,GAAgBG,CAAa,EAC3E9L,GAAiB,IAAM4L,EAAW,SAAWA,EAAW,QAAQ,IAAI,CAAC,CACvE,CAGA,IAAIG,GAAO,CACT,IAAKtZ,GAAwB6Y,EAAa,EAC1C,KAAM7Y,GAAwByY,EAAO,CACvC,EAGA,SAASc,GAAe/2B,EAAO,CAC7B,OAAO,OAAOA,GAAU,UAAYA,EAAM,WAAW,QAAQ,CAC/D,CACA,IAAIg3B,GAAmB,uDACvB,SAASC,GAAiBn2B,EAAS,CACjC,IAAMo2B,EAAQF,GAAiB,KAAKl2B,CAAO,EAC3C,GAAI,CAACo2B,EACH,MAAO,CAAC,CAAC,EACX,GAAM,CAAC,CAAEC,EAAOzK,CAAQ,EAAIwK,EAC5B,MAAO,CAACC,EAAOzK,CAAQ,CACzB,CACA,IAAI0K,GAAW,EACf,SAASC,GAAiBv2B,EAASkV,EAASshB,EAAQ,EAAG,CACrDxsB,GAAUwsB,GAASF,GAAU,yDAAyDt2B,uDAA6D,EACnJ,GAAM,CAACq2B,EAAOzK,CAAQ,EAAIuK,GAAiBn2B,CAAO,EAClD,GAAI,CAACq2B,EACH,OACF,IAAMnwB,EAAWtK,EAAO,iBAAiBsZ,CAAO,EAAE,iBAAiBmhB,CAAK,EACxE,OAAInwB,EACKA,EAAS,KAAK,EACZ+vB,GAAerK,CAAQ,EACzB2K,GAAiB3K,EAAU1W,EAASshB,EAAQ,CAAC,EAE7C5K,CAEX,CACA,SAAS6K,GAAoBhxB,EAAe,IAAKY,CAAO,EAAGF,EAAe,CACxE,IAAM+O,EAAUzP,EAAc,QAC9B,GAAI,EAAEyP,aAAmB,SACvB,MAAO,CAAE,OAAA7O,EAAQ,cAAAF,CAAc,EAC7BA,IACFA,EAAgB,CAAE,GAAGA,CAAc,GAErCV,EAAc,OAAO,QAASvG,GAAU,CACtC,IAAMc,EAAUd,EAAM,IAAI,EAC1B,GAAI,CAAC+2B,GAAej2B,CAAO,EACzB,OACF,IAAMkG,EAAWqwB,GAAiBv2B,EAASkV,CAAO,EAC9ChP,GACFhH,EAAM,IAAIgH,CAAQ,CACtB,CAAC,EACD,QAAW7I,KAAOgJ,EAAQ,CACxB,IAAMrG,EAAUqG,EAAOhJ,GACvB,GAAI,CAAC44B,GAAej2B,CAAO,EACzB,SACF,IAAMkG,EAAWqwB,GAAiBv2B,EAASkV,CAAO,EAC7ChP,IAELG,EAAOhJ,GAAO6I,EACVC,GAAiBA,EAAc9I,KAAS,SAC1C8I,EAAc9I,GAAO2C,GAEzB,CACA,MAAO,CAAE,OAAAqG,EAAQ,cAAAF,CAAc,CACjC,CAGA,IAAIuwB,GAAiC,IAAI,IAAI,CAC3C,QACA,SACA,MACA,OACA,QACA,SACA,IACA,GACF,CAAC,EACGC,GAAmBt5B,GAAQq5B,GAAe,IAAIr5B,CAAG,EACjDu5B,GAAoBvwB,GACf,OAAO,KAAKA,CAAM,EAAE,KAAKswB,EAAe,EAE7CE,GAAiBv3B,GAAMA,IAAMqB,IAAUrB,IAAMgD,EAC7Cw0B,IACH,SAASC,EAAuB,CAC/BA,EAAsB,MAAW,QACjCA,EAAsB,OAAY,SAClCA,EAAsB,KAAU,OAChCA,EAAsB,MAAW,QACjCA,EAAsB,IAAS,MAC/BA,EAAsB,OAAY,QACpC,GAAGD,KAAyBA,GAAuB,CAAC,EAAE,EACtD,IAAIE,GAAmB,CAACC,EAAQC,IAAQ,WAAWD,EAAO,MAAM,IAAI,EAAEC,EAAI,EACtEC,GAAyB,CAACC,EAAMC,IAAS,CAACC,EAAO,CAAE,UAAW/T,CAAW,IAAM,CACjF,GAAIA,IAAe,QAAU,CAACA,EAC5B,MAAO,GACT,IAAMgU,EAAWhU,EAAW,MAAM,oBAAoB,EACtD,GAAIgU,EACF,OAAOP,GAAiBO,EAAS,GAAIF,CAAI,EACpC,CACL,IAAMJ,EAAS1T,EAAW,MAAM,kBAAkB,EAClD,OAAI0T,EACKD,GAAiBC,EAAO,GAAIG,CAAI,EAEhC,CAEX,CACF,EACII,GAAgC,IAAI,IAAI,CAAC,IAAK,IAAK,GAAG,CAAC,EACvDC,GAAgCC,GAAmB,OAAQr6B,GAAQ,CAACm6B,GAAc,IAAIn6B,CAAG,CAAC,EAC9F,SAASs6B,GAAgClyB,EAAe,CACtD,IAAMmyB,EAAoB,CAAC,EAC3B,OAAAH,GAA8B,QAASp6B,GAAQ,CAC7C,IAAM6B,EAAQuG,EAAc,SAASpI,CAAG,EACpC6B,IAAU,SACZ04B,EAAkB,KAAK,CAACv6B,EAAK6B,EAAM,IAAI,CAAC,CAAC,EACzCA,EAAM,IAAI7B,EAAI,WAAW,OAAO,EAAI,EAAI,CAAC,EAE7C,CAAC,EACGu6B,EAAkB,QACpBnyB,EAAc,OAAO,EAChBmyB,CACT,CACA,IAAIC,GAAmB,CACrB,MAAO,CAAC,CAAE,EAAAjvB,CAAE,EAAG,CAAE,YAAAkvB,EAAc,IAAK,aAAAC,EAAe,GAAI,IAAMnvB,EAAE,IAAMA,EAAE,IAAM,WAAWkvB,CAAW,EAAI,WAAWC,CAAY,EAC9H,OAAQ,CAAC,CAAE,EAAApI,CAAE,EAAG,CAAE,WAAAqI,EAAa,IAAK,cAAAC,EAAgB,GAAI,IAAMtI,EAAE,IAAMA,EAAE,IAAM,WAAWqI,CAAU,EAAI,WAAWC,CAAa,EAC/H,IAAK,CAACX,EAAO,CAAE,IAAArJ,CAAI,IAAM,WAAWA,CAAG,EACvC,KAAM,CAACqJ,EAAO,CAAE,KAAApJ,CAAK,IAAM,WAAWA,CAAI,EAC1C,OAAQ,CAAC,CAAE,EAAAyB,CAAE,EAAG,CAAE,IAAA1B,CAAI,IAAM,WAAWA,CAAG,GAAK0B,EAAE,IAAMA,EAAE,KACzD,MAAO,CAAC,CAAE,EAAA/mB,CAAE,EAAG,CAAE,KAAAslB,CAAK,IAAM,WAAWA,CAAI,GAAKtlB,EAAE,IAAMA,EAAE,KAC1D,EAAGuuB,GAAuB,EAAG,EAAE,EAC/B,EAAGA,GAAuB,EAAG,EAAE,CACjC,EACIe,GAA2B,CAAC7xB,EAAQZ,EAAe0yB,IAAgB,CACrE,IAAMC,EAAa3yB,EAAc,mBAAmB,EAC9CyP,EAAUzP,EAAc,QACxB4yB,EAAuB,iBAAiBnjB,CAAO,EAC/C,CAAE,QAAAojB,CAAQ,EAAID,EACdxxB,EAAS,CAAC,EACZyxB,IAAY,QACd7yB,EAAc,eAAe,UAAWY,EAAO,SAAW,OAAO,EAEnE8xB,EAAY,QAAS96B,GAAQ,CAC3BwJ,EAAOxJ,GAAOw6B,GAAiBx6B,GAAK+6B,EAAYC,CAAoB,CACtE,CAAC,EACD5yB,EAAc,OAAO,EACrB,IAAM8yB,EAAa9yB,EAAc,mBAAmB,EACpD,OAAA0yB,EAAY,QAAS96B,GAAQ,CAC3B,IAAM6B,EAAQuG,EAAc,SAASpI,CAAG,EACxC6B,GAASA,EAAM,KAAK2H,EAAOxJ,EAAI,EAC/BgJ,EAAOhJ,GAAOw6B,GAAiBx6B,GAAKk7B,EAAYF,CAAoB,CACtE,CAAC,EACMhyB,CACT,EACImyB,GAAmC,CAAC/yB,EAAeY,EAAQQ,EAAS,CAAC,EAAGV,EAAgB,CAAC,IAAM,CACjGE,EAAS,CAAE,GAAGA,CAAO,EACrBF,EAAgB,CAAE,GAAGA,CAAc,EACnC,IAAMsyB,EAAuB,OAAO,KAAKpyB,CAAM,EAAE,OAAOswB,EAAe,EACnE+B,EAAyB,CAAC,EAC1BC,EAAsC,GACpCC,EAAuB,CAAC,EAqD9B,GApDAH,EAAqB,QAASp7B,GAAQ,CACpC,IAAM6B,EAAQuG,EAAc,SAASpI,CAAG,EACxC,GAAI,CAACoI,EAAc,SAASpI,CAAG,EAC7B,OACF,IAAI2K,EAAOnB,EAAOxJ,GACdw7B,EAAWxzB,GAAuB2C,CAAI,EACpCC,EAAK5B,EAAOhJ,GACdy7B,EACJ,GAAI5c,GAAkBjU,CAAE,EAAG,CACzB,IAAM8wB,EAAe9wB,EAAG,OAClB7J,EAAY6J,EAAG,KAAO,KAAO,EAAI,EACvCD,EAAOC,EAAG7J,GACVy6B,EAAWxzB,GAAuB2C,CAAI,EACtC,QAASnL,EAAIuB,EAAWvB,EAAIk8B,EAAcl8B,IACnCi8B,EAIH9uB,GAAU3E,GAAuB4C,EAAGpL,EAAE,IAAMi8B,EAAQ,wCAAwC,GAH5FA,EAASzzB,GAAuB4C,EAAGpL,EAAE,EACrCmN,GAAU8uB,IAAWD,GAAYhC,GAAcgC,CAAQ,GAAKhC,GAAciC,CAAM,EAAG,8DAA8D,EAKvJ,MACEA,EAASzzB,GAAuB4C,CAAE,EAEpC,GAAI4wB,IAAaC,EACf,GAAIjC,GAAcgC,CAAQ,GAAKhC,GAAciC,CAAM,EAAG,CACpD,IAAM94B,EAAUd,EAAM,IAAI,EACtB,OAAOc,GAAY,UACrBd,EAAM,IAAI,WAAWc,CAAO,CAAC,EAE3B,OAAOiI,GAAO,SAChB5B,EAAOhJ,GAAO,WAAW4K,CAAE,EAClB,MAAM,QAAQA,CAAE,GAAK6wB,IAAWx2B,IACzC+D,EAAOhJ,GAAO4K,EAAG,IAAI,UAAU,EAEnC,MAAgE4wB,GAAS,WAA+DC,GAAO,YAAe9wB,IAAS,GAAKC,IAAO,GAC7KD,IAAS,EACX9I,EAAM,IAAI45B,EAAO,UAAU9wB,CAAI,CAAC,EAEhC3B,EAAOhJ,GAAOw7B,EAAS,UAAU5wB,CAAE,GAGhC0wB,IACHD,EAAyBf,GAAgClyB,CAAa,EACtEkzB,EAAsC,IAExCC,EAAqB,KAAKv7B,CAAG,EAC7B8I,EAAc9I,GAAO8I,EAAc9I,KAAS,OAAS8I,EAAc9I,GAAOgJ,EAAOhJ,GACjF6B,EAAM,KAAK+I,CAAE,EAGnB,CAAC,EACG2wB,EAAqB,OAAQ,CAC/B,IAAMI,EAAUJ,EAAqB,QAAQ,QAAQ,GAAK,EAAIh9B,EAAO,YAAc,KAC7Eq9B,EAAkBf,GAAyB7xB,EAAQZ,EAAemzB,CAAoB,EAC5F,OAAIF,EAAuB,QACzBA,EAAuB,QAAQ,CAAC,CAACr7B,EAAK6B,CAAK,IAAM,CAC/CuG,EAAc,SAASpI,CAAG,EAAE,IAAI6B,CAAK,CACvC,CAAC,EAEHuG,EAAc,OAAO,EACjBmZ,IAAaoa,IAAY,MAC3Bp9B,EAAO,SAAS,CAAE,IAAKo9B,CAAQ,CAAC,EAE3B,CAAE,OAAQC,EAAiB,cAAA9yB,CAAc,CAClD,KACE,OAAO,CAAE,OAAAE,EAAQ,cAAAF,CAAc,CAEnC,EACA,SAAS+yB,GAAezzB,EAAeY,EAAQQ,EAAQV,EAAe,CACpE,OAAOywB,GAAiBvwB,CAAM,EAAImyB,GAAiC/yB,EAAeY,EAAQQ,EAAQV,CAAa,EAAI,CAAE,OAAAE,EAAQ,cAAAF,CAAc,CAC7I,CAGA,IAAIgzB,GAAkB,CAAC1zB,EAAeY,EAAQQ,EAAQV,IAAkB,CACtE,IAAMD,EAAWuwB,GAAoBhxB,EAAeY,EAAQF,CAAa,EACzE,OAAAE,EAASH,EAAS,OAClBC,EAAgBD,EAAS,cAClBgzB,GAAezzB,EAAeY,EAAQQ,EAAQV,CAAa,CACpE,EAGIizB,GAAmB,cAAc5Z,EAAc,CACjD,yBAAyB9gB,EAAGC,EAAG,CAC7B,OAAOD,EAAE,wBAAwBC,CAAC,EAAI,EAAI,EAAI,EAChD,CACA,uBAAuBmH,EAAOzI,EAAK,CACjC,IAAI6F,EACJ,OAAQA,EAAK4C,EAAM,SAAW,MAAQ5C,IAAO,OAAS,OAASA,EAAG7F,EACpE,CACA,2BAA2BA,EAAK,CAAE,KAAAimB,EAAM,MAAAD,CAAM,EAAG,CAC/C,OAAOC,EAAKjmB,GACZ,OAAOgmB,EAAMhmB,EACf,CACA,iCAAiC,CAAE,WAAA+I,EAAY,cAAAD,KAAkBE,CAAO,EAAG,CAAE,gBAAAgzB,CAAgB,EAAGC,EAAW,CACzG,IAAIzyB,EAASK,GAAUb,EAAQD,GAAc,CAAC,EAAG,IAAI,EASrD,GARIizB,IACElzB,IACFA,EAAgBkzB,EAAgBlzB,CAAa,GAC3CE,IACFA,EAASgzB,EAAgBhzB,CAAM,GAC7BQ,IACFA,EAASwyB,EAAgBxyB,CAAM,IAE/ByyB,EAAW,CACb1yB,GAAwB,KAAMP,EAAQQ,CAAM,EAC5C,IAAM3C,EAASi1B,GAAgB,KAAM9yB,EAAQQ,EAAQV,CAAa,EAClEA,EAAgBjC,EAAO,cACvBmC,EAASnC,EAAO,MAClB,CACA,MAAO,CACL,WAAAkC,EACA,cAAAD,EACA,GAAGE,CACL,CACF,CACF,EAGA,SAASkzB,GAAkBrkB,EAAS,CAClC,OAAOtZ,EAAO,iBAAiBsZ,CAAO,CACxC,CACA,IAAIskB,GAAoB,cAAcJ,EAAiB,CACrD,sBAAsBlZ,EAAU7iB,EAAK,CACnC,GAAI4Q,GAAe,IAAI5Q,CAAG,EAAG,CAC3B,IAAMo8B,EAAc10B,GAAoB1H,CAAG,EAC3C,OAAOo8B,GAAcA,EAAY,SAAW,CAC9C,KAAO,CACL,IAAMC,EAAgBH,GAAkBrZ,CAAQ,EAC1ChhB,GAAS+jB,GAAc5lB,CAAG,EAAIq8B,EAAc,iBAAiBr8B,CAAG,EAAIq8B,EAAcr8B,KAAS,EACjG,OAAO,OAAO6B,GAAU,SAAWA,EAAM,KAAK,EAAIA,CACpD,CACF,CACA,2BAA2BghB,EAAU,CAAE,mBAAA8L,CAAmB,EAAG,CAC3D,OAAOmG,GAAmBjS,EAAU8L,CAAkB,CACxD,CACA,MAAMpM,EAAaD,EAActgB,EAASyG,EAAO,CAC/Cqd,GAAgBvD,EAAaD,EAActgB,EAASyG,EAAM,iBAAiB,CAC7E,CACA,4BAA4BA,EAAO4b,EAAW,CAC5C,OAAOyF,GAA4BrhB,EAAO4b,CAAS,CACrD,CACA,wBAAyB,CACnB,KAAK,oBACP,KAAK,kBAAkB,EACvB,OAAO,KAAK,mBAEd,GAAM,CAAE,SAAAjB,CAAS,EAAI,KAAK,MACtB9S,GAAc8S,CAAQ,IACxB,KAAK,kBAAoBA,EAAS,GAAG,SAAWsF,GAAW,CACrD,KAAK,UACP,KAAK,QAAQ,YAAc,GAAGA,IAClC,CAAC,EAEL,CACA,eAAe7F,EAAUN,EAAa6E,EAAWsC,EAAY,CAC3DD,GAAW5G,EAAUN,EAAa6E,EAAWsC,CAAU,CACzD,CACF,EAGI4S,GAAmB,cAAcP,EAAiB,CACpD,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,SAAW,EAClB,CACA,uBAAuBtzB,EAAOzI,EAAK,CACjC,OAAOyI,EAAMzI,EACf,CACA,sBAAsB6iB,EAAU7iB,EAAK,CACnC,IAAI6F,EACJ,OAAI+K,GAAe,IAAI5Q,CAAG,IACf6F,EAAK6B,GAAoB1H,CAAG,KAAO,MAAQ6F,IAAO,OAAS,OAASA,EAAG,UAAY,GAE9F7F,EAAO2pB,GAAoB,IAAI3pB,CAAG,EAAuBA,EAAnB+J,GAAY/J,CAAG,EAC9C6iB,EAAS,aAAa7iB,CAAG,EAClC,CACA,4BAA6B,CAC3B,OAAOmhB,GAAU,CACnB,CACA,4BAA4B1Y,EAAO4b,EAAW,CAC5C,OAAO2F,GAA6BvhB,EAAO4b,CAAS,CACtD,CACA,MAAM9B,EAAaD,EAActgB,EAASyG,EAAO,CAC/C6f,GAAc/F,EAAaD,EAActgB,EAAS,KAAK,SAAUyG,EAAM,iBAAiB,CAC1F,CACA,eAAeoa,EAAUN,EAAa6E,EAAWsC,EAAY,CAC3DE,GAAU/G,EAAUN,EAAa6E,EAAWsC,CAAU,CACxD,CACA,MAAM7G,EAAU,CACd,KAAK,SAAWgG,GAAShG,EAAS,OAAO,EACzC,MAAM,MAAMA,CAAQ,CACtB,CACF,EAGI0Z,GAAyB,CAAC1Y,EAAY7hB,IACjCyjB,GAAe5B,CAAU,EAAI,IAAIyY,GAAiBt6B,EAAS,CAAE,2BAA4B,EAAM,CAAC,EAAI,IAAIm6B,GAAkBn6B,EAAS,CAAE,2BAA4B,EAAK,CAAC,EAOhL,SAASw6B,GAAgBC,EAAQrc,EAAM,CACrC,OAAIA,EAAK,MAAQA,EAAK,IACb,EACFqc,GAAUrc,EAAK,IAAMA,EAAK,KAAO,GAC1C,CACA,IAAIsc,GAAsB,CACxB,QAAS,CAAChU,EAAQwL,IAAS,CACzB,GAAI,CAACA,EAAK,OACR,OAAOxL,EACT,GAAI,OAAOA,GAAW,SACpB,GAAIzjB,EAAG,KAAKyjB,CAAM,EAChBA,EAAS,WAAWA,CAAM,MAE1B,QAAOA,EAGX,IAAMnd,EAAIixB,GAAgB9T,EAAQwL,EAAK,OAAO,CAAC,EACzC5B,EAAIkK,GAAgB9T,EAAQwL,EAAK,OAAO,CAAC,EAC/C,MAAO,GAAG3oB,MAAM+mB,IAClB,CACF,EAGIqK,GAAW,QACXC,GAAmB,CACrB,QAAS,CAAClU,EAAQ,CAAE,UAAAoL,EAAW,gBAAA+I,CAAgB,IAAM,CACnD,IAAMC,EAAWpU,EACXqU,EAAuBrU,EAAO,SAAS,MAAM,EAC7CsU,EAAe,CAAC,EAClBD,IACFrU,EAASA,EAAO,QAAQmQ,GAAmBE,IACzCiE,EAAa,KAAKjE,CAAK,EAChB4D,GACR,GAEH,IAAMM,EAASn2B,GAAQ,MAAM4hB,CAAM,EACnC,GAAIuU,EAAO,OAAS,EAClB,OAAOH,EACT,IAAMxqB,EAAWxL,GAAQ,kBAAkB4hB,CAAM,EAC3CnU,EAAS,OAAO0oB,EAAO,IAAO,SAAW,EAAI,EAC7CC,EAASL,EAAgB,EAAE,MAAQ/I,EAAU,EAC7CqJ,EAASN,EAAgB,EAAE,MAAQ/I,EAAU,EACnDmJ,EAAO,EAAI1oB,IAAW2oB,EACtBD,EAAO,EAAI1oB,IAAW4oB,EACtB,IAAMC,EAAe1yB,GAAIwyB,EAAQC,EAAQ,EAAG,EACxC,OAAOF,EAAO,EAAI1oB,IAAY,WAChC0oB,EAAO,EAAI1oB,IAAW6oB,GACpB,OAAOH,EAAO,EAAI1oB,IAAY,WAChC0oB,EAAO,EAAI1oB,IAAW6oB,GACxB,IAAI12B,EAAS4L,EAAS2qB,CAAM,EAC5B,GAAIF,EAAsB,CACxB,IAAIv9B,EAAI,EACRkH,EAASA,EAAO,QAAQi2B,GAAU,IAAM,CACtC,IAAMU,EAAcL,EAAax9B,GACjC,OAAAA,IACO69B,CACT,CAAC,CACH,CACA,OAAO32B,CACT,CACF,EAGI42B,GAA2B,cAAc3vB,EAAgB,SAAU,CACrE,mBAAoB,CAClB,GAAM,CAAE,cAAAvF,EAAe,YAAAm1B,EAAa,kBAAAC,EAAmB,SAAAzZ,CAAS,EAAI,KAAK,MACnE,CAAE,WAAA2F,CAAW,EAAIthB,EACvBq1B,GAAkBC,EAAsB,EACpChU,IACE6T,EAAY,OACdA,EAAY,MAAM,IAAI7T,CAAU,EAC9B8T,GAAqBA,EAAkB,UAAYzZ,GACrDyZ,EAAkB,SAAS9T,CAAU,EAEvCA,EAAW,KAAK,UAAU,EAC1BA,EAAW,iBAAiB,oBAAqB,IAAM,CACrD,KAAK,aAAa,CACpB,CAAC,EACDA,EAAW,WAAW,CACpB,GAAGA,EAAW,QACd,eAAgB,IAAM,KAAK,aAAa,CAC1C,CAAC,GAEHiU,GAAsB,eAAiB,EACzC,CACA,wBAAwBtZ,EAAW,CACjC,GAAM,CAAE,iBAAAuZ,EAAkB,cAAAx1B,EAAe,KAAM4b,EAAO,UAAWvE,CAAW,EAAI,KAAK,MAC/EiK,EAAathB,EAAc,WACjC,OAAKshB,IAELA,EAAW,UAAYjK,EACnBuE,GAASK,EAAU,mBAAqBuZ,GAAoBA,IAAqB,OACnFlU,EAAW,WAAW,EAEtB,KAAK,aAAa,EAEhBrF,EAAU,YAAc5E,IACtBA,EACFiK,EAAW,QAAQ,EACTA,EAAW,SAAS,GAC9BzpB,GAAK,WAAW,IAAM,CACpB,IAAI4F,EACG,GAAAA,EAAK6jB,EAAW,SAAS,KAAO,MAAQ7jB,IAAO,SAAkBA,EAAG,QAAQ,QACjF,KAAK,aAAa,CAEtB,CAAC,IAGE,IACT,CACA,oBAAqB,CACnB,GAAM,CAAE,WAAA6jB,CAAW,EAAI,KAAK,MAAM,cAC9BA,IACFA,EAAW,KAAK,UAAU,EACtB,CAACA,EAAW,kBAAoBA,EAAW,OAAO,GACpD,KAAK,aAAa,EAGxB,CACA,sBAAuB,CACrB,GAAM,CAAE,cAAAthB,EAAe,YAAAm1B,EAAa,kBAAmBM,CAAe,EAAI,KAAK,MACzE,CAAE,WAAAnU,CAAW,EAAIthB,EACnBshB,IACFA,EAAW,0BAA0B,EACyB6T,GAAY,OACxEA,EAAY,MAAM,OAAO7T,CAAU,EAC+BmU,GAAe,YACjFA,EAAe,WAAWnU,CAAU,EAE1C,CACA,cAAe,CACb,GAAM,CAAE,aAAAhK,CAAa,EAAI,KAAK,MAC8BA,IAAa,CAC3E,CACA,QAAS,CACP,OAAO,IACT,CACF,EACA,SAASoe,GAAcr1B,EAAO,CAC5B,GAAM,CAACgX,EAAYC,CAAY,EAAIC,GAAY,EACzC4d,EAAc1d,EAAYke,EAAkB,EAClD,OAAOpwB,EAAgB,cAAc2vB,GAA0B,CAAE,GAAG70B,EAAO,YAAA80B,EAAa,kBAAmB1d,EAAYme,EAAwB,EAAG,UAAWve,EAAY,aAAAC,CAAa,CAAC,CACzL,CACA,IAAIge,GAAyB,CAC3B,aAAc,CACZ,GAAGhB,GACH,QAAS,CACP,sBACA,uBACA,yBACA,yBACF,CACF,EACA,oBAAqBA,GACrB,qBAAsBA,GACtB,uBAAwBA,GACxB,wBAAyBA,GACzB,UAAWE,EACb,EAGIqB,GAAiB,CACnB,cAAeH,EACjB,EAGII,GAAU,CAAC,UAAW,WAAY,aAAc,aAAa,EAC7DC,GAAaD,GAAQ,OACrBE,GAAYv8B,GAAU,OAAOA,GAAU,SAAW,WAAWA,CAAK,EAAIA,EACtEw8B,GAAQx8B,GAAU,OAAOA,GAAU,UAAYoD,EAAG,KAAKpD,CAAK,EAChE,SAASy8B,GAAUt1B,EAAQu1B,EAAQC,EAAM3zB,EAAW4zB,EAAwBC,EAAc,CACpFD,GACFz1B,EAAO,QAAU0B,GACf,EACA8zB,EAAK,UAAY,OAASA,EAAK,QAAU,EACzCG,GAAgB9zB,CAAS,CAC3B,EACA7B,EAAO,YAAc0B,GAAI6zB,EAAO,UAAY,OAASA,EAAO,QAAU,EAAG,EAAGK,GAAiB/zB,CAAS,CAAC,GAC9F6zB,IACT11B,EAAO,QAAU0B,GAAI6zB,EAAO,UAAY,OAASA,EAAO,QAAU,EAAGC,EAAK,UAAY,OAASA,EAAK,QAAU,EAAG3zB,CAAS,GAE5H,QAASrL,EAAI,EAAGA,EAAI2+B,GAAY3+B,IAAK,CACnC,IAAMq/B,EAAc,SAASX,GAAQ1+B,WACjCs/B,EAAeC,GAAUR,EAAQM,CAAW,EAC5CG,EAAaD,GAAUP,EAAMK,CAAW,EAC5C,GAAIC,IAAiB,QAAUE,IAAe,OAC5C,SACFF,IAAiBA,EAAe,GAChCE,IAAeA,EAAa,GACbF,IAAiB,GAAKE,IAAe,GAAKX,GAAKS,CAAY,IAAMT,GAAKW,CAAU,GAE7Fh2B,EAAO61B,GAAe,KAAK,IAAIn0B,GAAI0zB,GAASU,CAAY,EAAGV,GAASY,CAAU,EAAGn0B,CAAS,EAAG,CAAC,GAC1F7F,GAAQ,KAAKg6B,CAAU,GAAKh6B,GAAQ,KAAK85B,CAAY,KACvD91B,EAAO61B,IAAgB,MAGzB71B,EAAO61B,GAAeG,CAE1B,EACIT,EAAO,QAAUC,EAAK,UACxBx1B,EAAO,OAAS0B,GAAI6zB,EAAO,QAAU,EAAGC,EAAK,QAAU,EAAG3zB,CAAS,EAEvE,CACA,SAASk0B,GAAU/4B,EAAQi5B,EAAY,CACrC,OAAOj5B,EAAOi5B,KAAgB,OAASj5B,EAAOi5B,GAAcj5B,EAAO,YACrE,CACA,IAAI24B,GAAkBO,GAAS,EAAG,GAAK9yB,EAAO,EAC1CwyB,GAAmBM,GAAS,GAAK,IAAMp0B,EAAI,EAC/C,SAASo0B,GAAStmB,EAAKC,EAAKzO,EAAQ,CAClC,OAAQC,GACFA,EAAIuO,EACC,EACLvO,EAAIwO,EACC,EACFzO,EAAOsI,GAASkG,EAAKC,EAAKxO,CAAC,CAAC,CAEvC,CAGA,SAAS80B,GAAa/e,EAAMgf,EAAY,CACtChf,EAAK,IAAMgf,EAAW,IACtBhf,EAAK,IAAMgf,EAAW,GACxB,CACA,SAASC,GAAYzL,EAAK0L,EAAW,CACnCH,GAAavL,EAAI,EAAG0L,EAAU,CAAC,EAC/BH,GAAavL,EAAI,EAAG0L,EAAU,CAAC,CACjC,CAGA,SAASC,GAAiB3P,EAAQ4D,EAAWZ,EAAQQ,EAAaK,EAAU,CAC1E,OAAA7D,GAAU4D,EACV5D,EAASuD,GAAWvD,EAAQ,EAAIgD,EAAQQ,CAAW,EAC/CK,IAAa,SACf7D,EAASuD,GAAWvD,EAAQ,EAAI6D,EAAUL,CAAW,GAEhDxD,CACT,CACA,SAAS4P,GAAgBpf,EAAMoT,EAAY,EAAGZ,EAAS,EAAGppB,EAAS,GAAKiqB,EAAU2L,EAAahf,EAAMqf,EAAarf,EAAM,CAMtH,GALIpb,GAAQ,KAAKwuB,CAAS,IACxBA,EAAY,WAAWA,CAAS,EAEhCA,EADyB9oB,GAAI+0B,EAAW,IAAKA,EAAW,IAAKjM,EAAY,GAAG,EAC7CiM,EAAW,KAExC,OAAOjM,GAAc,SACvB,OACF,IAAIJ,EAAc1oB,GAAI00B,EAAW,IAAKA,EAAW,IAAK51B,CAAM,EACxD4W,IAASgf,IACXhM,GAAeI,GACjBpT,EAAK,IAAMmf,GAAiBnf,EAAK,IAAKoT,EAAWZ,EAAQQ,EAAaK,CAAQ,EAC9ErT,EAAK,IAAMmf,GAAiBnf,EAAK,IAAKoT,EAAWZ,EAAQQ,EAAaK,CAAQ,CAChF,CACA,SAASiM,GAAqBtf,EAAMoU,EAAY,CAACx0B,EAAKy0B,EAAUC,CAAS,EAAGlrB,EAAQi2B,EAAY,CAC9FD,GAAgBpf,EAAMoU,EAAWx0B,GAAMw0B,EAAWC,GAAWD,EAAWE,GAAYF,EAAW,MAAOhrB,EAAQi2B,CAAU,CAC1H,CACA,IAAIE,GAAS,CAAC,IAAK,SAAU,SAAS,EAClCC,GAAS,CAAC,IAAK,SAAU,SAAS,EACtC,SAASC,GAAoBjM,EAAKY,EAAY8K,EAAWQ,EAAW,CAClEJ,GAAqB9L,EAAI,EAAGY,EAAYmL,GAA8DL,GAAU,EAAyDQ,GAAU,CAAC,EACpLJ,GAAqB9L,EAAI,EAAGY,EAAYoL,GAA8DN,GAAU,EAAyDQ,GAAU,CAAC,CACtL,CAGA,SAASC,GAAgB59B,EAAO,CAC9B,OAAOA,EAAM,YAAc,GAAKA,EAAM,QAAU,CAClD,CACA,SAAS69B,GAAY79B,EAAO,CAC1B,OAAO49B,GAAgB59B,EAAM,CAAC,GAAK49B,GAAgB59B,EAAM,CAAC,CAC5D,CACA,SAAS89B,GAAU5+B,EAAGC,EAAG,CACvB,OAAOD,EAAE,EAAE,MAAQC,EAAE,EAAE,KAAOD,EAAE,EAAE,MAAQC,EAAE,EAAE,KAAOD,EAAE,EAAE,MAAQC,EAAE,EAAE,KAAOD,EAAE,EAAE,MAAQC,EAAE,EAAE,GAC9F,CACA,SAAS4+B,GAAYtM,EAAK,CACxB,OAAOzT,GAAWyT,EAAI,CAAC,EAAIzT,GAAWyT,EAAI,CAAC,CAC7C,CAGA,IAAIuM,GAAY,KAAM,CACpB,aAAc,CACZ,KAAK,QAAU,CAAC,CAClB,CACA,IAAIjM,EAAM,CACRxzB,GAAc,KAAK,QAASwzB,CAAI,EAChCA,EAAK,eAAe,CACtB,CACA,OAAOA,EAAM,CAKX,GAJArzB,GAAW,KAAK,QAASqzB,CAAI,EACzBA,IAAS,KAAK,WAChB,KAAK,SAAW,QAEdA,IAAS,KAAK,KAAM,CACtB,IAAMkM,EAAW,KAAK,QAAQ,KAAK,QAAQ,OAAS,GAChDA,GACF,KAAK,QAAQA,CAAQ,CAEzB,CACF,CACA,SAASlM,EAAM,CACb,IAAMmM,EAAc,KAAK,QAAQ,UAAWC,GAAWpM,IAASoM,CAAM,EACtE,GAAID,IAAgB,EAClB,MAAO,GACT,IAAID,EACJ,QAAS5gC,EAAI6gC,EAAa7gC,GAAK,EAAGA,IAAK,CACrC,IAAM8gC,EAAS,KAAK,QAAQ9gC,GAC5B,GAAI8gC,EAAO,YAAc,GAAO,CAC9BF,EAAWE,EACX,KACF,CACF,CACA,OAAIF,GACF,KAAK,QAAQA,CAAQ,EACd,IAEA,EAEX,CACA,QAAQlM,EAAMqM,EAAuB,CACnC,IAAI16B,EACJ,IAAMu6B,EAAW,KAAK,KACtB,GAAIlM,IAASkM,IAEb,KAAK,SAAWA,EAChB,KAAK,KAAOlM,EACZA,EAAK,KAAK,EACNkM,GAAU,CACZA,EAAS,UAAYA,EAAS,eAAe,EAC7ClM,EAAK,eAAe,EACpBA,EAAK,WAAakM,EACdG,IACFrM,EAAK,WAAW,gBAAkB,IAEhCkM,EAAS,WACXlM,EAAK,SAAWkM,EAAS,SACzBlM,EAAK,SAAS,aAAekM,EAAS,iBAAmBA,EAAS,cAE/D,GAAAv6B,EAAKquB,EAAK,QAAU,MAAQruB,IAAO,SAAkBA,EAAG,aAC3DquB,EAAK,cAAgB,IAEvB,GAAM,CAAE,UAAAsM,CAAU,EAAItM,EAAK,QACvBsM,IAAc,IAChBJ,EAAS,KAAK,CAElB,CACF,CACA,uBAAwB,CACtB,KAAK,QAAQ,QAASlM,GAAS,CAC7B,IAAIruB,EAAIC,EAAIgd,EAAIyJ,EAAIkU,GACnB36B,GAAMD,EAAKquB,EAAK,SAAS,kBAAoB,MAAQpuB,IAAO,QAAkBA,EAAG,KAAKD,CAAE,GACxF46B,GAAM3d,EAAKoR,EAAK,gBAAkB,MAAQpR,IAAO,OAAS,QAAUyJ,EAAKzJ,EAAG,SAAS,kBAAoB,MAAQ2d,IAAO,QAAkBA,EAAG,KAAKlU,CAAE,CACvJ,CAAC,CACH,CACA,gBAAiB,CACf,KAAK,QAAQ,QAAS2H,GAAS,CAC7BA,EAAK,UAAYA,EAAK,eAAe,EAAK,CAC5C,CAAC,CACH,CACA,oBAAqB,CACf,KAAK,MAAQ,KAAK,KAAK,WACzB,KAAK,KAAK,SAAW,OAEzB,CACF,EAGA,SAASwM,GAAyBv+B,EAAO2xB,EAAW6M,EAAiB,CACnE,IAAIza,EAAa,GACX0a,EAAaz+B,EAAM,EAAE,UAAY2xB,EAAU,EAC3C+M,EAAa1+B,EAAM,EAAE,UAAY2xB,EAAU,EAOjD,IANI8M,GAAcC,KAChB3a,EAAa,eAAe0a,QAAiBC,aAE3C/M,EAAU,IAAM,GAAKA,EAAU,IAAM,KACvC5N,GAAc,SAAS,EAAI4N,EAAU,MAAM,EAAIA,EAAU,OAEvD6M,EAAiB,CACnB,GAAM,CAAE,OAAAG,EAAQ,QAAAC,EAAS,QAAAC,CAAQ,EAAIL,EACjCG,IACF5a,GAAc,UAAU4a,UACtBC,IACF7a,GAAc,WAAW6a,UACvBC,IACF9a,GAAc,WAAW8a,SAC7B,CACA,IAAMC,EAAgB9+B,EAAM,EAAE,MAAQ2xB,EAAU,EAC1CoN,EAAgB/+B,EAAM,EAAE,MAAQ2xB,EAAU,EAChD,OAAImN,IAAkB,GAAKC,IAAkB,KAC3Chb,GAAc,SAAS+a,MAAkBC,MAEpChb,GAAc,MACvB,CAGA,IAAIib,GAAgB,CAAC,GAAI,IAAK,IAAK,GAAG,EAClCC,GAAkB,IAClBC,GAAM,EACV,SAASC,GAAqB,CAAE,qBAAAC,EAAsB,cAAAC,EAAe,cAAAC,EAAe,kBAAAC,EAAmB,eAAAC,CAAe,EAAG,CACvH,OAAO,KAAqB,CAC1B,YAAYC,EAAWtf,EAAe,CAAC,EAAG3B,EAAuE6gB,IAAc,EAAG,CAChI,KAAK,GAAKH,KACV,KAAK,YAAc,EACnB,KAAK,SAA2B,IAAI,IACpC,KAAK,QAAU,CAAC,EAChB,KAAK,gBAAkB,GACvB,KAAK,mBAAqB,GAC1B,KAAK,cAAgB,GACrB,KAAK,iBAAmB,GACxB,KAAK,kBAAoB,GACzB,KAAK,sBAAwB,GAC7B,KAAK,sBAAwB,GAC7B,KAAK,WAAa,GAClB,KAAK,MAAQ,GACb,KAAK,WAAa,GAClB,KAAK,qBAAuB,GAC5B,KAAK,UAAY,CAAE,EAAG,EAAG,EAAG,CAAE,EAC9B,KAAK,cAAgC,IAAI,IACzC,KAAK,eAAiC,IAAI,IAC1C,KAAK,kBAAoB,IAAM,CACzB,KAAK,aACP,KAAK,WAAa,GAClB,KAAK,kBAAkB,EAE3B,EACA,KAAK,iBAAmB,IAAM,CAC5B,KAAK,MAAM,QAAQQ,EAAmB,EACtC,KAAK,MAAM,QAAQC,EAAkB,EACrC,KAAK,MAAM,QAAQC,EAAc,CACnC,EACA,KAAK,aAAe,GACpB,KAAK,UAAY,GACjB,KAAK,kBAAoB,EACzB,KAAK,YAA8B,IAAI,IACvC,KAAK,UAAYH,EACjB,KAAK,aAAetf,EACpB,KAAK,KAAO3B,EAASA,EAAO,MAAQA,EAAS,KAC7C,KAAK,KAAOA,EAAS,CAAC,GAAGA,EAAO,KAAMA,CAAM,EAAI,CAAC,EACjD,KAAK,OAASA,EACd,KAAK,MAAQA,EAASA,EAAO,MAAQ,EAAI,EACzCihB,GAAa,KAAK,KAAK,sBAAsBA,EAAW,IAAI,EAC5D,QAASpiC,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IACpC,KAAK,KAAKA,GAAG,qBAAuB,GAElC,KAAK,OAAS,OAChB,KAAK,MAAQ,IAAIylB,GACrB,CACA,iBAAiBhe,EAAM7F,EAAS,CAC9B,OAAK,KAAK,cAAc,IAAI6F,CAAI,GAC9B,KAAK,cAAc,IAAIA,EAAM,IAAI9F,EAAqB,EAEjD,KAAK,cAAc,IAAI8F,CAAI,EAAE,IAAI7F,CAAO,CACjD,CACA,gBAAgB6F,KAAS6d,EAAM,CAC7B,IAAMkd,EAAsB,KAAK,cAAc,IAAI/6B,CAAI,EACmB+6B,GAAoB,OAAO,GAAGld,CAAI,CAC9G,CACA,aAAa7d,EAAM,CACjB,OAAO,KAAK,cAAc,IAAIA,CAAI,CACpC,CACA,sBAAsB26B,EAAW1N,EAAM,CACrC,KAAK,eAAe,IAAI0N,EAAW1N,CAAI,CACzC,CACA,MAAMrR,EAAUof,EAAgB,GAAO,CACrC,IAAIp8B,EACJ,GAAI,KAAK,SACP,OACF,KAAK,MAAQgd,aAAoB,YAAcA,EAAS,UAAY,MACpE,KAAK,SAAWA,EAChB,GAAM,CAAE,SAAAkB,EAAU,OAAAjD,EAAQ,cAAA1Y,CAAc,EAAI,KAAK,QAUjD,GATIA,GAAiB,CAACA,EAAc,SAClCA,EAAc,MAAMya,CAAQ,EAE9B,KAAK,KAAK,MAAM,IAAI,IAAI,GACvBhd,EAAK,KAAK,UAAY,MAAQA,IAAO,QAAkBA,EAAG,SAAS,IAAI,IAAI,EAC5E,KAAK,WAAa,KAAK,KAAK,eAAe,OAAO,KAAK,SAAS,EAC5Do8B,IAAkBnhB,GAAUiD,KAC9B,KAAK,cAAgB,IAEnBwd,EAAsB,CACxB,IAAIW,EACEC,EAAsB,IAAM,KAAK,KAAK,sBAAwB,GACpEZ,EAAqB1e,EAAU,IAAM,CACnC,KAAK,KAAK,sBAAwB,GAClCqf,GAAeA,EAAY,EAC3BA,EAAclyB,GAAMmyB,EAAqB,GAAG,EACxCxE,GAAsB,yBACxBA,GAAsB,uBAAyB,GAC/C,KAAK,MAAM,QAAQyE,EAAe,EAEtC,CAAC,CACH,CACIre,GACF,KAAK,KAAK,mBAAmBA,EAAU,IAAI,EAEzC,KAAK,QAAQ,UAAY,IAAS3b,IAAkB2b,GAAYjD,IAClE,KAAK,iBAAiB,YAAa,CAAC,CAAE,MAAA3e,EAAO,iBAAAs1B,EAAkB,yBAAA4K,EAA0B,OAAQC,CAAU,IAAM,CAC/G,IAAInjB,EAAKrZ,EAAIgd,EAAIyJ,EAAIkU,EACrB,GAAI,KAAK,uBAAuB,EAAG,CACjC,KAAK,OAAS,OACd,KAAK,eAAiB,OACtB,MACF,CACA,IAAM8B,GAAoBz8B,GAAMqZ,EAAM,KAAK,QAAQ,cAAgB,MAAQA,IAAQ,OAASA,EAAM/W,EAAc,qBAAqB,KAAO,MAAQtC,IAAO,OAASA,EAAK08B,GACnK,CAAE,uBAAAC,EAAwB,0BAAAC,CAA0B,EAAIt6B,EAAc,SAAS,EAC/Eu6B,EAAgB,CAAC,KAAK,cAAgB,CAAC1C,GAAU,KAAK,aAAcqC,CAAS,GAAKD,EAClFO,EAA+B,CAACnL,GAAoB4K,EAC1D,GAAM,GAAAvf,EAAK,KAAK,cAAgB,MAAQA,IAAO,SAAkBA,EAAG,UAAa8f,GAAgCnL,IAAqBkL,GAAiB,CAAC,KAAK,kBAAmB,CAC1K,KAAK,aACP,KAAK,aAAe,KAAK,WACzB,KAAK,aAAa,aAAe,QAEnC,KAAK,mBAAmBxgC,EAAOygC,CAA4B,EAC3D,IAAMC,EAAmB,CACvB,GAAGroB,GAAmB+nB,EAAkB,QAAQ,EAChD,OAAQE,EACR,WAAYC,CACd,EACIt6B,EAAc,qBAChBy6B,EAAiB,MAAQ,EACzBA,EAAiB,KAAO,IAE1B,KAAK,eAAeA,CAAgB,CACtC,KACM,CAACpL,GAAoB,KAAK,oBAAsB,GAClD2K,GAAgB,IAAI,EAEtB,KAAK,OAAO,KAAO3B,GAAMlU,EAAK,KAAK,SAAS,kBAAoB,MAAQkU,IAAO,QAAkBA,EAAG,KAAKlU,CAAE,GAE7G,KAAK,aAAe+V,CACtB,CAAC,CAEL,CACA,SAAU,CACR,IAAIz8B,EAAIC,EACR,KAAK,QAAQ,UAAY,KAAK,WAAW,EACzC,KAAK,KAAK,MAAM,OAAO,IAAI,GAC1BD,EAAK,KAAK,SAAS,KAAO,MAAQA,IAAO,QAAkBA,EAAG,OAAO,IAAI,GACzEC,EAAK,KAAK,UAAY,MAAQA,IAAO,QAAkBA,EAAG,SAAS,OAAO,IAAI,EAC/E,KAAK,SAAW,OAChB1F,GAAW,UAAU,KAAK,gBAAgB,CAC5C,CACA,aAAc,CACZ,KAAK,sBAAwB,EAC/B,CACA,eAAgB,CACd,KAAK,sBAAwB,EAC/B,CACA,iBAAkB,CAChB,OAAO,KAAK,uBAAyB,KAAK,qBAC5C,CACA,wBAAyB,CACvB,IAAIyF,EACJ,OAAO,KAAK,sBAAwBA,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,uBAAuB,IAAM,EAC7H,CACA,aAAc,CACZ,IAAIA,EACA,KAAK,gBAAgB,IAEzB,KAAK,WAAa,IACjBA,EAAK,KAAK,SAAW,MAAQA,IAAO,QAAkBA,EAAG,QAAQi9B,EAAa,EAC/E,KAAK,cACP,CACA,WAAWC,EAAwB,GAAM,CACvC,IAAIl9B,EAAIC,EAAIgd,EACZ,GAAI,KAAK,KAAK,gBAAgB,EAAG,EAC9Bhd,GAAMD,EAAK,KAAK,SAAS,kBAAoB,MAAQC,IAAO,QAAkBA,EAAG,KAAKD,CAAE,EACzF,MACF,CAEA,GADA,CAAC,KAAK,KAAK,YAAc,KAAK,KAAK,YAAY,EAC3C,KAAK,cACP,OACF,KAAK,cAAgB,GACrB,QAASrG,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAAK,CACzC,IAAM00B,EAAO,KAAK,KAAK10B,GACvB00B,EAAK,qBAAuB,GAC5BA,EAAK,aAAa,UAAU,CAC9B,CACA,GAAM,CAAE,SAAAnQ,EAAU,OAAAjD,CAAO,EAAI,KAAK,QAClC,GAAIiD,IAAa,QAAU,CAACjD,EAC1B,OACF,IAAMiF,GAAqBjD,EAAK,KAAK,QAAQ,iBAAmB,MAAQA,IAAO,OAAS,OAASA,EAAG,SAAS,EAAE,kBAC/G,KAAK,2BAAmGiD,IAAkB,KAAK,aAAc,EAAE,EAC/I,KAAK,eAAe,EACpBgd,GAAyB,KAAK,gBAAgB,YAAY,CAC5D,CACA,WAAY,CAEV,GADyB,KAAK,gBAAgB,EACxB,CACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,MAAM,QAAQC,EAAiB,EACpC,MACF,CACK,KAAK,aAEV,KAAK,WAAa,GACd,KAAK,eAAe,OACtB,KAAK,eAAe,QAAQC,EAAc,EAC1C,KAAK,eAAe,MAAM,GAE5B,KAAK,MAAM,QAAQC,EAAmB,EACtC,KAAK,MAAM,QAAQC,EAAY,EAC/B,KAAK,MAAM,QAAQC,EAAkB,EACrC,KAAK,kBAAkB,EACvB/iC,GAAU,OAAO,EACjBA,GAAU,UAAU,EACpBA,GAAU,OAAO,EACnB,CACA,mBAAoB,CAClB,KAAK,MAAM,QAAQgjC,EAAa,EAChC,KAAK,YAAY,QAAQC,EAAmB,CAC9C,CACA,0BAA2B,CACzBrjC,GAAK,UAAU,KAAK,iBAAkB,GAAO,EAAI,CACnD,CACA,2BAA4B,CAC1BA,GAAK,WAAW,IAAM,CAChB,KAAK,cACP,KAAK,KAAK,UAAU,EAEpB,KAAK,KAAK,kBAAkB,CAEhC,CAAC,CACH,CACA,gBAAiB,CACX,KAAK,UAAY,CAAC,KAAK,WAE3B,KAAK,SAAW,KAAK,QAAQ,EAC/B,CACA,cAAe,CACb,IAAI4F,EAIJ,GAHI,CAAC,KAAK,WAEV,KAAK,aAAa,EACd,EAAE,KAAK,QAAQ,qBAAuB,KAAK,OAAO,IAAM,CAAC,KAAK,eAChE,OAEF,GAAI,KAAK,YAAc,CAAC,KAAK,WAAW,SACtC,QAASrG,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IACvB,KAAK,KAAKA,GAClB,aAAa,EAGtB,IAAM+jC,EAAa,KAAK,OACxB,KAAK,OAAS,KAAK,QAAQ,EAAK,EAChC,KAAK,gBAAkBpiB,GAAU,EACjC,KAAK,cAAgB,GACrB,KAAK,gBAAkB,OACvB,KAAK,gBAAgB,UAAW,KAAK,OAAO,SAAS,GACpDtb,EAAK,KAAK,QAAQ,iBAAmB,MAAQA,IAAO,QAAkBA,EAAG,OAAO,gBAAiB,KAAK,OAAO,UAAmE09B,GAAW,SAAS,CACvM,CACA,aAAaC,EAAQ,UAAW,CAC9B,IAAIC,EAAmB,QAAQ,KAAK,QAAQ,cAAgB,KAAK,QAAQ,EACrE,KAAK,QAAU,KAAK,OAAO,cAAgB,KAAK,KAAK,aAAe,KAAK,OAAO,QAAUD,IAC5FC,EAAmB,IAEjBA,IACF,KAAK,OAAS,CACZ,YAAa,KAAK,KAAK,YACvB,MAAAD,EACA,OAAQ9B,EAAkB,KAAK,QAAQ,EACvC,OAAQD,EAAc,KAAK,QAAQ,CACrC,EAEJ,CACA,gBAAiB,CACf,IAAI57B,EACJ,GAAI,CAAC87B,EACH,OACF,IAAM+B,EAAmB,KAAK,eAAiB,KAAK,qBAC9CC,EAAgB,KAAK,iBAAmB,CAAC3D,GAAY,KAAK,eAAe,EACzEja,GAAqBlgB,EAAK,KAAK,QAAQ,iBAAmB,MAAQA,IAAO,OAAS,OAASA,EAAG,SAAS,EAAE,kBACzG+9B,EAA+F7d,IAAkB,KAAK,aAAc,EAAE,EACtI8d,EAA8BD,IAA2B,KAAK,2BAChEF,IAAqBC,GAAiB3Q,GAAa,KAAK,YAAY,GAAK6Q,KAC3ElC,EAAe,KAAK,SAAUiC,CAAsB,EACpD,KAAK,qBAAuB,GAC5B,KAAK,eAAe,EAExB,CACA,QAAQE,EAAkB,GAAM,CAC9B,IAAMC,EAAU,KAAK,eAAe,EAChCpT,EAAY,KAAK,oBAAoBoT,CAAO,EAChD,OAAID,IACFnT,EAAY,KAAK,gBAAgBA,CAAS,GAE5CqT,GAASrT,CAAS,EACX,CACL,YAAa,KAAK,KAAK,YACvB,YAAaoT,EACb,UAAApT,EACA,aAAc,CAAC,EACf,OAAQ,KAAK,EACf,CACF,CACA,gBAAiB,CACf,GAAM,CAAE,cAAAvoB,CAAc,EAAI,KAAK,QAC/B,GAAI,CAACA,EACH,OAAO+Y,GAAU,EACnB,IAAMyS,EAAMxrB,EAAc,mBAAmB,EACvC,CAAE,OAAQ8sB,CAAQ,EAAI,KAAK,KACjC,OAAIA,IACFb,GAAcT,EAAI,EAAGsB,EAAQ,OAAO,CAAC,EACrCb,GAAcT,EAAI,EAAGsB,EAAQ,OAAO,CAAC,GAEhCtB,CACT,CACA,oBAAoBA,EAAK,CACvB,IAAMqQ,EAAmB9iB,GAAU,EACnCke,GAAY4E,EAAkBrQ,CAAG,EACjC,QAASp0B,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAAK,CACzC,IAAM00B,EAAO,KAAK,KAAK10B,GACjB,CAAE,OAAQ01B,EAAS,QAAAlzB,CAAQ,EAAIkyB,EACrC,GAAIA,IAAS,KAAK,MAAQgB,GAAWlzB,EAAQ,aAAc,CACzD,GAAIkzB,EAAQ,OAAQ,CAClBmK,GAAY4E,EAAkBrQ,CAAG,EACjC,GAAM,CAAE,OAAQsQ,CAAW,EAAI,KAAK,KAChCA,IACF7P,GAAc4P,EAAiB,EAAG,CAACC,EAAW,OAAO,CAAC,EACtD7P,GAAc4P,EAAiB,EAAG,CAACC,EAAW,OAAO,CAAC,EAE1D,CACA7P,GAAc4P,EAAiB,EAAG/O,EAAQ,OAAO,CAAC,EAClDb,GAAc4P,EAAiB,EAAG/O,EAAQ,OAAO,CAAC,CACpD,CACF,CACA,OAAO+O,CACT,CACA,eAAerQ,EAAKuQ,EAAgB,GAAO,CACzC,IAAMC,EAAiBjjB,GAAU,EACjCke,GAAY+E,EAAgBxQ,CAAG,EAC/B,QAASp0B,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAAK,CACzC,IAAM00B,EAAO,KAAK,KAAK10B,GACnB,CAAC2kC,GAAiBjQ,EAAK,QAAQ,cAAgBA,EAAK,QAAUA,IAASA,EAAK,MAC9EC,GAAaiQ,EAAgB,CAC3B,EAAG,CAAClQ,EAAK,OAAO,OAAO,EACvB,EAAG,CAACA,EAAK,OAAO,OAAO,CACzB,CAAC,EAEElB,GAAakB,EAAK,YAAY,GAEnCC,GAAaiQ,EAAgBlQ,EAAK,YAAY,CAChD,CACA,OAAIlB,GAAa,KAAK,YAAY,GAChCmB,GAAaiQ,EAAgB,KAAK,YAAY,EAEzCA,CACT,CACA,gBAAgBxQ,EAAK,CACnB,IAAI/tB,EACJ,IAAMw+B,EAAsBljB,GAAU,EACtCke,GAAYgF,EAAqBzQ,CAAG,EACpC,QAASp0B,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAAK,CACzC,IAAM00B,EAAO,KAAK,KAAK10B,GAGvB,GAFI,CAAC00B,EAAK,UAEN,CAAClB,GAAakB,EAAK,YAAY,EACjC,SACFrB,GAASqB,EAAK,YAAY,GAAKA,EAAK,eAAe,EACnD,IAAM4L,EAAY3e,GAAU,EACtBmjB,EAAUpQ,EAAK,eAAe,EACpCmL,GAAYS,EAAWwE,CAAO,EAC9BzE,GAAoBwE,EAAqBnQ,EAAK,cAAeruB,EAAKquB,EAAK,YAAc,MAAQruB,IAAO,OAAS,OAASA,EAAG,UAAWi6B,CAAS,CAC/I,CACA,OAAI9M,GAAa,KAAK,YAAY,GAChC6M,GAAoBwE,EAAqB,KAAK,YAAY,EAErDA,CACT,CACA,eAAeliC,EAAO,CACpB,KAAK,YAAcA,EACnB,KAAK,kBAAoB,GACzB,KAAK,KAAK,yBAAyB,CACrC,CACA,WAAWH,EAAS,CAClB,KAAK,QAAU,CACb,GAAG,KAAK,QACR,GAAGA,EACH,UAAWA,EAAQ,YAAc,OAASA,EAAQ,UAAY,EAChE,CACF,CACA,mBAAoB,CAClB,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,SAAW,OAChB,KAAK,2BAA6B,OAClC,KAAK,YAAc,OACnB,KAAK,OAAS,OACd,KAAK,cAAgB,EACvB,CACA,oBAAqB,CACnB,IAAI6D,EACJ,IAAM24B,EAAO,KAAK,QAAQ,EAG1B,GAFA,KAAK,oBAAsB,KAAK,kBAAoBA,EAAK,mBACzD,KAAK,mBAAqB,KAAK,iBAAmBA,EAAK,kBACnD,CAAC,KAAK,mBAAqB,CAAC,KAAK,+BACnC,OACF,GAAM,CAAE,OAAA1d,EAAQ,SAAAiD,CAAS,EAAI,KAAK,QAClC,GAAI,GAAC,KAAK,QAAU,EAAEjD,GAAUiD,IAEhC,IAAI,CAAC,KAAK,aAAe,CAAC,KAAK,eAAgB,CAC7C,IAAMwgB,EAAiB,KAAK,2BAA2B,EACnDA,GAAkBA,EAAe,QACnC,KAAK,eAAiBA,EACtB,KAAK,eAAiBpjB,GAAU,EAChC,KAAK,qBAAuBA,GAAU,EACtCJ,GAAqB,KAAK,qBAAsB,KAAK,OAAO,UAAWwjB,EAAe,OAAO,SAAS,EACtGlF,GAAY,KAAK,eAAgB,KAAK,oBAAoB,GAE1D,KAAK,eAAiB,KAAK,eAAiB,MAEhD,CACA,GAAI,GAAC,KAAK,gBAAkB,CAAC,KAAK,eAE7B,KAAK,SACR,KAAK,OAASle,GAAU,EACxB,KAAK,qBAAuBA,GAAU,GAEpC,KAAK,gBAAkB,KAAK,uBAA0B,GAAAtb,EAAK,KAAK,kBAAoB,MAAQA,IAAO,SAAkBA,EAAG,QAC1H+a,GAAgB,KAAK,OAAQ,KAAK,eAAgB,KAAK,eAAe,MAAM,EACnE,KAAK,aACV,QAAQ,KAAK,YAAY,EAC3B,KAAK,OAAS,KAAK,eAAe,KAAK,OAAO,SAAS,EAEvDye,GAAY,KAAK,OAAQ,KAAK,OAAO,SAAS,EAEhD1L,GAAc,KAAK,OAAQ,KAAK,WAAW,GAE3C0L,GAAY,KAAK,OAAQ,KAAK,OAAO,SAAS,EAE5C,KAAK,gCAAgC,CACvC,KAAK,+BAAiC,GACtC,IAAMkF,EAAiB,KAAK,2BAA2B,EACnDA,GAAkB,QAAQA,EAAe,YAAY,IAAM,QAAQ,KAAK,YAAY,GAAK,CAACA,EAAe,QAAQ,cAAgBA,EAAe,QAClJ,KAAK,eAAiBA,EACtB,KAAK,eAAiBpjB,GAAU,EAChC,KAAK,qBAAuBA,GAAU,EACtCJ,GAAqB,KAAK,qBAAsB,KAAK,OAAQwjB,EAAe,MAAM,EAClFlF,GAAY,KAAK,eAAgB,KAAK,oBAAoB,GAE1D,KAAK,eAAiB,KAAK,eAAiB,MAEhD,EACF,CACA,4BAA6B,CAC3B,GAAI,GAAC,KAAK,QAAUxM,GAAS,KAAK,OAAO,YAAY,GAAKI,GAAe,KAAK,OAAO,YAAY,GAEjG,OAAK,KAAK,OAAO,gBAAkB,KAAK,OAAO,cAAgB,KAAK,OAAO,OAClE,KAAK,OAEL,KAAK,OAAO,2BAA2B,CAElD,CACA,gBAAiB,CACf,IAAIptB,EACJ,GAAM,CAAE,kBAAA2+B,EAAmB,iBAAAC,CAAiB,EAAI,KAChD,KAAK,kBAAoB,KAAK,iBAAmB,GACjD,IAAMjG,EAAO,KAAK,QAAQ,EACpBkG,EAAW,QAAQ,KAAK,YAAY,GAAK,OAASlG,EACpDmG,EAAU,GAKd,GAJIH,IACFG,EAAU,IACRD,GAAYD,IACdE,EAAU,IACRA,EACF,OACF,GAAM,CAAE,OAAA7jB,EAAQ,SAAAiD,CAAS,EAAI,KAAK,QAKlC,GAJA,KAAK,gBAAkB,UAAUle,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,kBAAoB,KAAK,kBAAoB,KAAK,gBAAgB,EACxJ,KAAK,kBACR,KAAK,YAAc,KAAK,eAAiB,QAEvC,CAAC,KAAK,QAAU,EAAEib,GAAUiD,GAC9B,OACFsb,GAAY,KAAK,gBAAiB,KAAK,OAAO,SAAS,EACvDxL,GAAgB,KAAK,gBAAiB,KAAK,UAAW,KAAK,KAAM6Q,CAAQ,EACzE,GAAM,CAAE,OAAA17B,CAAO,EAAIw1B,EACnB,GAAI,CAACx1B,EACH,OACG,KAAK,kBACR,KAAK,gBAAkBiY,GAAY,EACnC,KAAK,6BAA+BA,GAAY,GAElD,IAAM2jB,EAAiB,KAAK,UAAU,EAChCC,EAAiB,KAAK,UAAU,EAChCC,EAA0B,KAAK,oBACrCtkB,GAAa,KAAK,gBAAiB,KAAK,gBAAiBxX,EAAQ,KAAK,YAAY,EAClF,KAAK,oBAAsB03B,GAAyB,KAAK,gBAAiB,KAAK,SAAS,GACpF,KAAK,sBAAwBoE,GAA2B,KAAK,UAAU,IAAMF,GAAkB,KAAK,UAAU,IAAMC,KACtH,KAAK,aAAe,GACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,mBAAoB77B,CAAM,EAEnD,CACA,MAAO,CACL,KAAK,UAAY,EACnB,CACA,MAAO,CACL,KAAK,UAAY,EACnB,CACA,eAAe+7B,EAAa,GAAM,CAChC,IAAIl/B,EAAIC,EAAIgd,GACXhd,GAAMD,EAAK,KAAK,SAAS,kBAAoB,MAAQC,IAAO,QAAkBA,EAAG,KAAKD,CAAE,EACzFk/B,KAAgBjiB,EAAK,KAAK,SAAS,KAAO,MAAQA,IAAO,QAAkBA,EAAG,eAAe,GACzF,KAAK,cAAgB,CAAC,KAAK,aAAa,WAC1C,KAAK,aAAe,OAExB,CACA,mBAAmB3gB,EAAOygC,EAA+B,GAAO,CAC9D,IAAI/8B,EAAIC,EACR,IAAMk/B,EAAW,KAAK,SAChBC,EAA4ED,GAAS,cAAiB,CAAC,EACvGE,EAAc,CAAE,GAAG,KAAK,YAAa,EACrCC,EAAclkB,GAAY,EAChC,KAAK,eAAiB,KAAK,qBAAuB,OAClD,KAAK,+BAAiC,CAAC2hB,EACvC,IAAMwC,EAAiBjkB,GAAU,EAC3BkkB,EAA+EL,GAAS,WAAcn/B,EAAK,KAAK,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,QAChK64B,KAAkB54B,EAAK,KAAK,SAAS,KAAO,MAAQA,IAAO,OAAS,OAASA,EAAG,QAAQ,SAAW,IAAM,EACzG24B,EAAyB,QAAQ4G,GAA2B,CAAC3G,GAAgB,KAAK,QAAQ,YAAc,IAAQ,CAAC,KAAK,KAAK,KAAK4G,EAAmB,CAAC,EAC1J,KAAK,kBAAoB,EACzB,KAAK,eAAkB5c,GAAW,CAChC,IAAIvJ,EACJ,IAAMtU,EAAY6d,EAAS,IAC3B6c,GAAaJ,EAAY,EAAGhjC,EAAM,EAAG0I,CAAS,EAC9C06B,GAAaJ,EAAY,EAAGhjC,EAAM,EAAG0I,CAAS,EAC9C,KAAK,eAAes6B,CAAW,EAC3B,KAAK,gBAAkB,KAAK,sBAAwB,KAAK,SAAY,GAAAhmB,EAAM,KAAK,kBAAoB,MAAQA,IAAQ,SAAkBA,EAAI,UAC5I4B,GAAqBqkB,EAAgB,KAAK,OAAO,UAAW,KAAK,eAAe,OAAO,SAAS,EAChGI,GAAO,KAAK,eAAgB,KAAK,qBAAsBJ,EAAgBv6B,CAAS,GAE9Ew6B,IACF,KAAK,gBAAkBH,EACvB5G,GAAU4G,EAAaD,EAAsB,KAAK,aAAcp6B,EAAW4zB,EAAwBC,CAAY,GAEjH,KAAK,KAAK,yBAAyB,EACnC,KAAK,eAAe,EACpB,KAAK,kBAAoB7zB,CAC3B,EACA,KAAK,eAAe,CAAC,CACvB,CACA,eAAe7I,EAAS,CACtB,IAAI6D,EAAIC,EACR,KAAK,gBAAgB,gBAAgB,GACpCD,EAAK,KAAK,oBAAsB,MAAQA,IAAO,QAAkBA,EAAG,KAAK,EACtE,KAAK,gBACNC,EAAK,KAAK,aAAa,oBAAsB,MAAQA,IAAO,QAAkBA,EAAG,KAAK,GAErF,KAAK,mBACP1F,GAAW,OAAO,KAAK,gBAAgB,EACvC,KAAK,iBAAmB,QAE1B,KAAK,iBAAmBH,GAAK,OAAO,IAAM,CACxC09B,GAAsB,uBAAyB,GAC/C,KAAK,iBAAmB5Y,GAAS,EAAGqc,GAAiB,CACnD,GAAGp/B,EACH,SAAW0mB,GAAW,CACpB,IAAIvJ,EACJ,KAAK,eAAeuJ,CAAM,GACzBvJ,EAAMnd,EAAQ,YAAc,MAAQmd,IAAQ,QAAkBA,EAAI,KAAKnd,EAAS0mB,CAAM,CACzF,EACA,WAAY,IAAM,CAChB,IAAIvJ,GACHA,EAAMnd,EAAQ,cAAgB,MAAQmd,IAAQ,QAAkBA,EAAI,KAAKnd,CAAO,EACjF,KAAK,kBAAkB,CACzB,CACF,CAAC,EACG,KAAK,eACP,KAAK,aAAa,iBAAmB,KAAK,kBAE5C,KAAK,iBAAmB,MAC1B,CAAC,CACH,CACA,mBAAoB,CAClB,IAAI6D,EACA,KAAK,eACP,KAAK,aAAa,iBAAmB,OACrC,KAAK,aAAa,gBAAkB,SAErCA,EAAK,KAAK,SAAS,KAAO,MAAQA,IAAO,QAAkBA,EAAG,sBAAsB,EACrF,KAAK,aAAe,KAAK,iBAAmB,KAAK,gBAAkB,OACnE,KAAK,gBAAgB,mBAAmB,CAC1C,CACA,iBAAkB,CAChB,IAAIA,EACA,KAAK,oBACNA,EAAK,KAAK,kBAAoB,MAAQA,IAAO,QAAkBA,EAAG,KAAK,KAAMu7B,EAAe,EAC7F,KAAK,iBAAiB,KAAK,GAE7B,KAAK,kBAAkB,CACzB,CACA,yBAA0B,CACxB,IAAM5C,EAAO,KAAK,QAAQ,EACtB,CAAE,qBAAAiH,EAAsB,OAAAz8B,EAAQ,OAAA8X,EAAQ,aAAAwB,CAAa,EAAIkc,EAC7D,GAAI,GAACiH,GAAwB,CAACz8B,GAAU,CAAC8X,GAEzC,IAAI,OAAS0d,GAAQ,KAAK,QAAU1d,GAAU4kB,GAA0B,KAAK,QAAQ,cAAe,KAAK,OAAO,UAAW5kB,EAAO,SAAS,EAAG,CAC5I9X,EAAS,KAAK,QAAUmY,GAAU,EAClC,IAAMwkB,EAAUxlB,GAAW,KAAK,OAAO,UAAU,CAAC,EAClDnX,EAAO,EAAE,IAAMw1B,EAAK,OAAO,EAAE,IAC7Bx1B,EAAO,EAAE,IAAMA,EAAO,EAAE,IAAM28B,EAC9B,IAAMC,EAAUzlB,GAAW,KAAK,OAAO,UAAU,CAAC,EAClDnX,EAAO,EAAE,IAAMw1B,EAAK,OAAO,EAAE,IAC7Bx1B,EAAO,EAAE,IAAMA,EAAO,EAAE,IAAM48B,CAChC,CACAvG,GAAYoG,EAAsBz8B,CAAM,EACxCmrB,GAAasR,EAAsBnjB,CAAY,EAC/C9B,GAAa,KAAK,6BAA8B,KAAK,gBAAiBilB,EAAsBnjB,CAAY,EAC1G,CACA,mBAAmByB,EAAUmQ,EAAM,CACjC,IAAIruB,EAAIC,EAAIgd,EACP,KAAK,YAAY,IAAIiB,CAAQ,GAChC,KAAK,YAAY,IAAIA,EAAU,IAAIoc,EAAW,EAElC,KAAK,YAAY,IAAIpc,CAAQ,EACrC,IAAImQ,CAAI,EACdA,EAAK,QAAQ,CACX,YAAaruB,EAAKquB,EAAK,QAAQ,0BAA4B,MAAQruB,IAAO,OAAS,OAASA,EAAG,WAC/F,uBAAwBid,GAAMhd,EAAKouB,EAAK,QAAQ,0BAA4B,MAAQpuB,IAAO,OAAS,OAASA,EAAG,+BAAiC,MAAQgd,IAAO,OAAS,OAASA,EAAG,KAAKhd,EAAIouB,CAAI,CACpM,CAAC,CACH,CACA,QAAS,CACP,IAAM2R,EAAQ,KAAK,SAAS,EAC5B,OAAOA,EAAQA,EAAM,OAAS,KAAO,EACvC,CACA,SAAU,CACR,IAAIhgC,EACJ,GAAM,CAAE,SAAAke,CAAS,EAAI,KAAK,QAC1B,OAAOA,IAAale,EAAK,KAAK,SAAS,KAAO,MAAQA,IAAO,OAAS,OAASA,EAAG,OAAS,KAAO,IACpG,CACA,aAAc,CACZ,IAAIA,EACJ,GAAM,CAAE,SAAAke,CAAS,EAAI,KAAK,QAC1B,OAAOA,GAAYle,EAAK,KAAK,SAAS,KAAO,MAAQA,IAAO,OAAS,OAASA,EAAG,SAAW,MAC9F,CACA,UAAW,CACT,GAAM,CAAE,SAAAke,CAAS,EAAI,KAAK,QAC1B,GAAIA,EACF,OAAO,KAAK,KAAK,YAAY,IAAIA,CAAQ,CAC7C,CACA,QAAQ,CAAE,WAAA+hB,EAAY,WAAA/8B,EAAY,sBAAAw3B,CAAsB,EAAI,CAAC,EAAG,CAC9D,IAAMsF,EAAQ,KAAK,SAAS,EACxBA,GACFA,EAAM,QAAQ,KAAMtF,CAAqB,EACvCuF,IACF,KAAK,gBAAkB,OACvB,KAAK,WAAa,IAEhB/8B,GACF,KAAK,WAAW,CAAE,WAAAA,CAAW,CAAC,CAClC,CACA,UAAW,CACT,IAAM88B,EAAQ,KAAK,SAAS,EAC5B,OAAIA,EACKA,EAAM,SAAS,IAAI,EAEnB,EAEX,CACA,eAAgB,CACd,GAAM,CAAE,cAAAz9B,CAAc,EAAI,KAAK,QAC/B,GAAI,CAACA,EACH,OACF,IAAI29B,EAAY,GACV,CAAE,aAAAzjB,CAAa,EAAIla,EAIzB,IAHIka,EAAa,QAAUA,EAAa,SAAWA,EAAa,SAAWA,EAAa,WACtFyjB,EAAY,IAEV,CAACA,EACH,OACF,IAAMC,EAAc,CAAC,EACrB,QAASxmC,EAAI,EAAGA,EAAI2hC,GAAc,OAAQ3hC,IAAK,CAC7C,IAAMQ,EAAM,SAAWmhC,GAAc3hC,GACjC8iB,EAAatiB,KACfgmC,EAAYhmC,GAAOsiB,EAAatiB,GAChCoI,EAAc,eAAepI,EAAK,CAAC,EAEvC,CAC8DoI,GAAc,OAAO,EACnF,QAAWpI,KAAOgmC,EAChB59B,EAAc,eAAepI,EAAKgmC,EAAYhmC,EAAI,EAEpDoI,EAAc,eAAe,CAC/B,CACA,oBAAoBgf,EAAY,CAAC,EAAG,CAClC,IAAIvhB,EAAIC,EAAIgd,EACZ,IAAMmjB,EAAS,CAAC,EAChB,GAAI,CAAC,KAAK,UAAY,KAAK,MACzB,OAAOA,EACT,GAAK,KAAK,UAGRA,EAAO,WAAa,OAFpB,OAAO,CAAE,WAAY,QAAS,EAIhC,IAAMlgB,GAAqBlgB,EAAK,KAAK,QAAQ,iBAAmB,MAAQA,IAAO,OAAS,OAASA,EAAG,SAAS,EAAE,kBAC/G,GAAI,KAAK,WACP,YAAK,WAAa,GAClBogC,EAAO,QAAU,GACjBA,EAAO,cAAgBC,GAAmB9e,EAAU,aAAa,GAAK,GACtE6e,EAAO,UAAYlgB,EAAoBA,EAAkB,KAAK,aAAc,EAAE,EAAI,OAC3EkgB,EAET,IAAMzH,EAAO,KAAK,QAAQ,EAC1B,GAAI,CAAC,KAAK,iBAAmB,CAAC,KAAK,QAAU,CAACA,EAAK,OAAQ,CACzD,IAAM2H,EAAc,CAAC,EACrB,OAAI,KAAK,QAAQ,WACfA,EAAY,QAAU,KAAK,aAAa,UAAY,OAAS,KAAK,aAAa,QAAU,EACzFA,EAAY,cAAgBD,GAAmB9e,EAAU,aAAa,GAAK,IAEzE,KAAK,cAAgB,CAAC4L,GAAa,KAAK,YAAY,IACtDmT,EAAY,UAAYpgB,EAAoBA,EAAkB,CAAC,EAAG,EAAE,EAAI,OACxE,KAAK,aAAe,IAEfogB,CACT,CACA,IAAMC,EAAiB5H,EAAK,iBAAmBA,EAAK,aACpD,KAAK,wBAAwB,EAC7ByH,EAAO,UAAYvF,GAAyB,KAAK,6BAA8B,KAAK,UAAW0F,CAAc,EACzGrgB,IACFkgB,EAAO,UAAYlgB,EAAkBqgB,EAAgBH,EAAO,SAAS,GAEvE,GAAM,CAAE,EAAA16B,EAAG,EAAA+mB,CAAE,EAAI,KAAK,gBACtB2T,EAAO,gBAAkB,GAAG16B,EAAE,OAAS,QAAQ+mB,EAAE,OAAS,SACtDkM,EAAK,gBACPyH,EAAO,QAAUzH,IAAS,MAAQ1b,GAAMhd,EAAKsgC,EAAe,WAAa,MAAQtgC,IAAO,OAASA,EAAK,KAAK,aAAa,WAAa,MAAQgd,IAAO,OAASA,EAAK,EAAI,KAAK,gBAAkB,KAAK,aAAa,QAAUsjB,EAAe,YAExOH,EAAO,QAAUzH,IAAS,KAAO4H,EAAe,UAAY,OAASA,EAAe,QAAU,GAAKA,EAAe,cAAgB,OAASA,EAAe,YAAc,EAE1K,QAAWpmC,KAAO2lB,GAAiB,CACjC,GAAIygB,EAAepmC,KAAS,OAC1B,SACF,GAAM,CAAE,QAAAqmC,EAAS,QAAAC,CAAQ,EAAI3gB,GAAgB3lB,GACvCumC,EAAYN,EAAO,YAAc,OAASG,EAAepmC,GAAOqmC,EAAQD,EAAepmC,GAAMw+B,CAAI,EACvG,GAAI8H,EAAS,CACX,IAAME,EAAMF,EAAQ,OACpB,QAAS9mC,EAAI,EAAGA,EAAIgnC,EAAKhnC,IACvBymC,EAAOK,EAAQ9mC,IAAM+mC,CAEzB,MACEN,EAAOjmC,GAAOumC,CAElB,CACA,OAAI,KAAK,QAAQ,WACfN,EAAO,cAAgBzH,IAAS,KAAO0H,GAAmB9e,EAAU,aAAa,GAAK,GAAK,QAEtF6e,CACT,CACA,eAAgB,CACd,KAAK,WAAa,KAAK,SAAW,MACpC,CACA,WAAY,CACV,KAAK,KAAK,MAAM,QAAS/R,GAAS,CAChC,IAAIruB,EACJ,OAAQA,EAAKquB,EAAK,oBAAsB,MAAQruB,IAAO,OAAS,OAASA,EAAG,KAAK,CACnF,CAAC,EACD,KAAK,KAAK,MAAM,QAAQm9B,EAAiB,EACzC,KAAK,KAAK,YAAY,MAAM,CAC9B,CACF,CACF,CACA,SAASG,GAAajP,EAAM,CAC1BA,EAAK,aAAa,CACpB,CACA,SAASkP,GAAmBlP,EAAM,CAChC,IAAIruB,EAAIC,EAAIgd,EACZ,IAAMkiB,IAAan/B,EAAKquB,EAAK,cAAgB,MAAQruB,IAAO,OAAS,OAASA,EAAG,WAAaquB,EAAK,SACnG,GAAIA,EAAK,OAAO,GAAKA,EAAK,QAAU8Q,GAAY9Q,EAAK,aAAa,WAAW,EAAG,CAC9E,GAAM,CAAE,UAAWpT,EAAQ,YAAa2lB,CAAe,EAAIvS,EAAK,OAC1D,CAAE,cAAAwS,CAAc,EAAIxS,EAAK,QACzBwQ,EAAWM,EAAS,SAAW9Q,EAAK,OAAO,OAC7CwS,IAAkB,OACpBvU,GAAU/R,GAAS,CACjB,IAAMumB,EAAejC,EAAWM,EAAS,YAAY5kB,GAAQ4kB,EAAS,UAAU5kB,GAC1E6H,EAAS9H,GAAWwmB,CAAY,EACtCA,EAAa,IAAM7lB,EAAOV,GAAM,IAChCumB,EAAa,IAAMA,EAAa,IAAM1e,CACxC,CAAC,EACQyd,GAA0BgB,EAAe1B,EAAS,UAAWlkB,CAAM,GAC5EqR,GAAU/R,GAAS,CACjB,IAAMumB,EAAejC,EAAWM,EAAS,YAAY5kB,GAAQ4kB,EAAS,UAAU5kB,GAC1E6H,EAAS9H,GAAWW,EAAOV,EAAK,EACtCumB,EAAa,IAAMA,EAAa,IAAM1e,CACxC,CAAC,EAEH,IAAM2e,EAAc3lB,GAAY,EAChCT,GAAaomB,EAAa9lB,EAAQkkB,EAAS,SAAS,EACpD,IAAM6B,EAAc5lB,GAAY,EAC5ByjB,EACFlkB,GAAaqmB,EAAa3S,EAAK,eAAeuS,EAAgB,EAAI,EAAGzB,EAAS,WAAW,EAEzFxkB,GAAaqmB,EAAa/lB,EAAQkkB,EAAS,SAAS,EAEtD,IAAMvN,EAAmB,CAACuI,GAAY4G,CAAW,EAC7CvE,EAA2B,GAC/B,GAAI,CAACnO,EAAK,WAAY,CACpB,IAAMqQ,EAAiBrQ,EAAK,2BAA2B,EACvD,GAAIqQ,GAAkB,CAACA,EAAe,WAAY,CAChD,GAAM,CAAE,SAAUuC,EAAgB,OAAQC,CAAa,EAAIxC,EAC3D,GAAIuC,GAAkBC,EAAc,CAClC,IAAMC,EAAmB7lB,GAAU,EACnCJ,GAAqBimB,EAAkBhC,EAAS,UAAW8B,EAAe,SAAS,EACnF,IAAM1B,EAAiBjkB,GAAU,EACjCJ,GAAqBqkB,EAAgBtkB,EAAQimB,EAAa,SAAS,EAC9D9G,GAAU+G,EAAkB5B,CAAc,IAC7C/C,EAA2B,GAE/B,CACF,CACF,CACAnO,EAAK,gBAAgB,YAAa,CAChC,OAAApT,EACA,SAAAkkB,EACA,MAAO6B,EACP,YAAAD,EACA,iBAAAnP,EACA,yBAAA4K,CACF,CAAC,CACH,MAAWnO,EAAK,OAAO,KACpBpR,GAAMhd,EAAKouB,EAAK,SAAS,kBAAoB,MAAQpR,IAAO,QAAkBA,EAAG,KAAKhd,CAAE,GAE3FouB,EAAK,QAAQ,WAAa,MAC5B,CACA,SAAS2N,GAAoB3N,EAAM,CACjCA,EAAK,oBAAsBA,EAAK,kBAAoB,QAAQA,EAAK,QAAUA,EAAK,OAAO,iBAAiB,GACxGA,EAAK,mBAAqBA,EAAK,iBAAmB,QAAQA,EAAK,QAAUA,EAAK,OAAO,gBAAgB,EACvG,CACA,SAASmP,GAAcnP,EAAM,CAC3BA,EAAK,cAAc,CACrB,CACA,SAAS8O,GAAkB9O,EAAM,CAC/BA,EAAK,kBAAkB,CACzB,CACA,SAASgP,GAAoBhP,EAAM,CACjC,GAAM,CAAE,cAAA9rB,CAAc,EAAI8rB,EAAK,QACmC9rB,GAAc,SAAS,EAAE,uBACzFA,EAAc,OAAO,qBAAqB,EAE5C8rB,EAAK,eAAe,CACtB,CACA,SAASkO,GAAgBlO,EAAM,CAC7BA,EAAK,gBAAgB,EACrBA,EAAK,YAAcA,EAAK,eAAiBA,EAAK,OAAS,MACzD,CACA,SAAS4N,GAAmB5N,EAAM,CAChCA,EAAK,mBAAmB,CAC1B,CACA,SAAS6N,GAAe7N,EAAM,CAC5BA,EAAK,eAAe,CACtB,CACA,SAAS4O,GAAc5O,EAAM,CAC3BA,EAAK,cAAc,CACrB,CACA,SAASoP,GAAoBuC,EAAO,CAClCA,EAAM,mBAAmB,CAC3B,CACA,SAASN,GAAa7+B,EAAQvE,EAAOkI,EAAG,CACtC3D,EAAO,UAAYgE,GAAIvI,EAAM,UAAW,EAAGkI,CAAC,EAC5C3D,EAAO,MAAQgE,GAAIvI,EAAM,MAAO,EAAGkI,CAAC,EACpC3D,EAAO,OAASvE,EAAM,OACtBuE,EAAO,YAAcvE,EAAM,WAC7B,CACA,SAAS8kC,GAAQvgC,EAAQiE,EAAMC,EAAIP,EAAG,CACpC3D,EAAO,IAAMgE,GAAIC,EAAK,IAAKC,EAAG,IAAKP,CAAC,EACpC3D,EAAO,IAAMgE,GAAIC,EAAK,IAAKC,EAAG,IAAKP,CAAC,CACtC,CACA,SAASm7B,GAAO9+B,EAAQiE,EAAMC,EAAIP,EAAG,CACnC48B,GAAQvgC,EAAO,EAAGiE,EAAK,EAAGC,EAAG,EAAGP,CAAC,EACjC48B,GAAQvgC,EAAO,EAAGiE,EAAK,EAAGC,EAAG,EAAGP,CAAC,CACnC,CACA,SAASi7B,GAAoBpR,EAAM,CACjC,OAAOA,EAAK,iBAAmBA,EAAK,gBAAgB,cAAgB,MACtE,CACA,IAAIsO,GAA0B,CAC5B,SAAU,IACV,KAAM,CAAC,GAAK,EAAG,GAAK,CAAC,CACvB,EACA,SAASS,GAAe/O,EAAM0N,EAAW,CACvC,IAAIsF,EAAahT,EAAK,KACtB,QAAS10B,EAAI00B,EAAK,KAAK,OAAS,EAAG10B,GAAK,EAAGA,IACzC,GAAI,QAAQ00B,EAAK,KAAK10B,GAAG,QAAQ,EAAG,CAClC0nC,EAAahT,EAAK,KAAK10B,GACvB,KACF,CAGF,IAAMqY,GADgBqvB,GAAcA,IAAehT,EAAK,KAAOgT,EAAW,SAAW,UACvD,cAAc,wBAAwBtF,KAAa,EAC7E/pB,GACFqc,EAAK,MAAMrc,EAAS,EAAI,CAC5B,CACA,SAASsvB,GAAU/mB,EAAM,CACvBA,EAAK,IAAM,KAAK,MAAMA,EAAK,GAAG,EAC9BA,EAAK,IAAM,KAAK,MAAMA,EAAK,GAAG,CAChC,CACA,SAAS4jB,GAASpQ,EAAK,CACrBuT,GAAUvT,EAAI,CAAC,EACfuT,GAAUvT,EAAI,CAAC,CACjB,CACA,SAAS8R,GAA0BgB,EAAe1B,EAAUlkB,EAAQ,CAClE,OAAO4lB,IAAkB,YAAcA,IAAkB,mBAAqB,CAACrmB,GAAO6f,GAAY8E,CAAQ,EAAG9E,GAAYpf,CAAM,EAAG,EAAG,CACvI,CAGA,IAAIsmB,GAAyB9F,GAAqB,CAChD,qBAAsB,CAACjY,EAAKge,IAAY9P,GAAYlO,EAAK,SAAUge,CAAO,EAC1E,cAAe,KAAO,CACpB,EAAG,SAAS,gBAAgB,YAAc,SAAS,KAAK,WACxD,EAAG,SAAS,gBAAgB,WAAa,SAAS,KAAK,SACzD,GACA,kBAAmB,IAAM,EAC3B,CAAC,EAGGC,GAAqB,CACvB,QAAS,MACX,EACIC,GAAqBjG,GAAqB,CAC5C,cAAgBze,IAAc,CAC5B,EAAGA,EAAS,WACZ,EAAGA,EAAS,SACd,GACA,cAAe,IAAM,CACnB,GAAI,CAACykB,GAAmB,QAAS,CAC/B,IAAME,EAAe,IAAIJ,GAAuB,EAAG,CAAC,CAAC,EACrDI,EAAa,MAAMjpC,CAAM,EACzBipC,EAAa,WAAW,CAAE,aAAc,EAAK,CAAC,EAC9CF,GAAmB,QAAUE,CAC/B,CACA,OAAOF,GAAmB,OAC5B,EACA,eAAgB,CAACzkB,EAAUhhB,IAAU,CACnCghB,EAAS,MAAM,UAAYhhB,IAAU,OAASA,EAAQ,MACxD,EACA,kBAAoBghB,GAAa,QAAQtkB,EAAO,iBAAiBskB,CAAQ,EAAE,WAAa,OAAO,CACjG,CAAC,EAGG4kB,GAAgB,CAClB,GAAGloB,GACH,GAAGiP,GACH,GAAGmK,GACH,GAAGsF,EACL,EACIyJ,GAAyBxiB,GAAkB,CAACrB,EAAY8jB,IAAWtd,GAAsBxG,EAAY8jB,EAAQF,GAAelL,GAAwBgL,EAAkB,CAAC,EAM3K,IAAIK,GAAIC,GAAkBC,EAAqB,EAO/C,SAASC,IAAe,CACtB,IAAMC,EAAYC,EAAQ,EAAK,EAC/B,OAAAC,GAA0B,KACxBF,EAAU,QAAU,GACb,IAAM,CACXA,EAAU,QAAU,EACtB,GACC,CAAC,CAAC,EACEA,CACT,CAGA,SAASG,IAAiB,CACxB,IAAMH,EAAYD,GAAa,EACzB,CAACK,EAAmBC,CAAoB,EAAIC,GAAS,CAAC,EACtDC,EAAcC,GAAa,IAAM,CACrCR,EAAU,SAAWK,EAAqBD,EAAoB,CAAC,CACjE,EAAG,CAACA,CAAiB,CAAC,EAEtB,MAAO,CADqBI,GAAa,IAAMC,GAAK,WAAWF,CAAW,EAAG,CAACA,CAAW,CAAC,EAC7DH,CAAiB,CAChD,CAaA,IAAIM,GAAkB,cAAqBC,EAAU,CACnD,wBAAwBC,EAAW,CACjC,IAAMC,EAAU,KAAK,MAAM,SAAS,QACpC,GAAIA,GAAWD,EAAU,WAAa,CAAC,KAAK,MAAM,UAAW,CAC3D,IAAME,EAAO,KAAK,MAAM,QAAQ,QAChCA,EAAK,OAASD,EAAQ,cAAgB,EACtCC,EAAK,MAAQD,EAAQ,aAAe,EACpCC,EAAK,IAAMD,EAAQ,UACnBC,EAAK,KAAOD,EAAQ,UACtB,CACA,OAAO,IACT,CACA,oBAAqB,CACrB,CACA,QAAS,CACP,OAAO,KAAK,MAAM,QACpB,CACF,EACA,SAASE,GAAS,CAAE,SAAAC,EAAU,UAAWC,CAAW,EAAG,CACrD,IAAMC,EAAMC,GAAO,EACbC,EAAMnB,EAAQ,IAAI,EAClBa,EAAOb,EAAQ,CACnB,MAAO,EACP,OAAQ,EACR,IAAK,EACL,KAAM,CACR,CAAC,EACD,OAAAoB,GAAmB,IAAM,CACvB,GAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,IAAAC,EAAK,KAAAC,CAAK,EAAIX,EAAK,QAC1C,GAAIG,GAAc,CAACG,EAAI,SAAW,CAACE,GAAS,CAACC,EAC3C,OACFH,EAAI,QAAQ,QAAQ,YAAcF,EAClC,IAAMQ,EAAQ,SAAS,cAAc,OAAO,EAC5C,gBAAS,KAAK,YAAYA,CAAK,EAC3BA,EAAM,OACRA,EAAM,MAAM,WAAW;AAAA,iCACIR;AAAA;AAAA,qBAEZI;AAAA,sBACCC;AAAA,mBACHC;AAAA,oBACCC;AAAA;AAAA,SAEX,EAEE,IAAM,CACX,SAAS,KAAK,YAAYC,CAAK,CACjC,CACF,EAAG,CAACT,CAAU,CAAC,EACDU,EAAcjB,GAAiB,CAAE,UAAWO,EAAY,SAAUG,EAAK,QAASN,CAAK,EAAUc,GAAaZ,EAAU,CAAE,IAAAI,CAAI,CAAC,CAAC,CAC9I,CAGA,IAAIS,GAAgB,CAAC,CAAE,SAAAb,EAAU,QAAAc,EAAS,UAAWb,EAAY,eAAAc,EAAgB,OAAAC,EAAQ,sBAAAC,EAAuB,KAAAC,CAAK,IAAM,CACzH,IAAMC,EAAmBC,GAAYC,EAAc,EAC7CnB,EAAMC,GAAO,EACbmB,EAAUC,EACd,KAAO,CACL,GAAIrB,EACJ,QAAAY,EACA,UAAWb,EACX,OAAAe,EACA,eAAiBQ,GAAY,CAC3BL,EAAiB,IAAIK,EAAS,EAAI,EAClC,QAAWC,KAAcN,EAAiB,OAAO,EAC/C,GAAI,CAACM,EACH,OAEJV,GAAkBA,EAAe,CACnC,EACA,SAAWS,IACTL,EAAiB,IAAIK,EAAS,EAAK,EAC5B,IAAML,EAAiB,OAAOK,CAAO,EAEhD,GACAP,EAAwB,OAAS,CAAChB,CAAU,CAC9C,EACA,OAAAsB,EAAS,IAAM,CACbJ,EAAiB,QAAQ,CAACO,EAAGC,IAAQR,EAAiB,IAAIQ,EAAK,EAAK,CAAC,CACvE,EAAG,CAAC1B,CAAU,CAAC,EACR2B,EAAU,IAAM,CACrB,CAAC3B,GAAc,CAACkB,EAAiB,MAAQJ,GAAkBA,EAAe,CAC5E,EAAG,CAACd,CAAU,CAAC,EACXiB,IAAS,cACXlB,EAAkBW,EAAcZ,GAAU,CAAE,UAAWE,CAAW,EAAGD,CAAQ,GAEjEW,EAAckB,GAAgB,SAAU,CAAE,MAAOP,CAAQ,EAAGtB,CAAQ,CACpF,EACA,SAASqB,IAAiB,CACxB,OAAuB,IAAI,GAC7B,CAGA,IAAIS,GAAeC,GAAUA,EAAM,KAAO,GAC1C,SAASC,GAAkBhC,EAAUiC,EAAa,CAChDjC,EAAS,QAAS+B,GAAU,CAC1B,IAAMJ,EAAMG,GAAYC,CAAK,EAC7BE,EAAY,IAAIN,EAAKI,CAAK,CAC5B,CAAC,CACH,CACA,SAASG,GAAalC,EAAU,CAC9B,IAAMmC,EAAW,CAAC,EAClB,OAAAC,GAAS,QAAQpC,EAAW+B,GAAU,CAChCM,GAAeN,CAAK,GACtBI,EAAS,KAAKJ,CAAK,CACvB,CAAC,EACMI,CACT,CACA,IAAIG,GAAkB,CAAC,CAAE,SAAAtC,EAAU,OAAAgB,EAAQ,QAAAF,EAAU,GAAM,eAAAC,EAAgB,gBAAAwB,EAAiB,sBAAAtB,EAAwB,GAAM,KAAAC,EAAO,MAAO,IAAM,CACxIqB,IACFrB,EAAO,QAKT,GAAI,CAAC3B,CAAW,EAAIJ,GAAe,EAC7BqD,EAAyBC,EAAaC,EAAkB,EAAE,YAC5DF,IACFjD,EAAciD,GAChB,IAAMxD,EAAYD,GAAa,EACzB4D,EAAmBT,GAAalC,CAAQ,EAC1C4C,EAAmBD,EACjBE,EAA0B,IAAI,IAC9BC,EAAkB7D,EAAQ2D,CAAgB,EAC1CX,EAAchD,EAAwB,IAAI,GAAK,EAAE,QACjD8D,EAAkB9D,EAAQ,EAAI,EAWpC,GAVAC,GAA0B,IAAM,CAC9B6D,EAAgB,QAAU,GAC1Bf,GAAkBW,EAAkBV,CAAW,EAC/Ca,EAAgB,QAAUF,CAC5B,CAAC,EACDI,GAAiB,IAAM,CACrBD,EAAgB,QAAU,GAC1Bd,EAAY,MAAM,EAClBY,EAAQ,MAAM,CAChB,CAAC,EACGE,EAAgB,QAClB,OAAcpC,EAAqBsC,GAAU,KAAML,EAAiB,IAAKb,GAAiBpB,EAAcE,GAAe,CAAE,IAAKiB,GAAYC,CAAK,EAAG,UAAW,GAAM,QAASjB,EAAU,OAAS,GAAO,sBAAAG,EAAuB,KAAAC,CAAK,EAAGa,CAAK,CAAC,CAAC,EAE9Oa,EAAmB,CAAC,GAAGA,CAAgB,EACvC,IAAMM,EAAcJ,EAAgB,QAAQ,IAAIhB,EAAW,EACrDqB,EAAaR,EAAiB,IAAIb,EAAW,EAC7CsB,EAAaF,EAAY,OAC/B,QAASG,EAAI,EAAGA,EAAID,EAAYC,IAAK,CACnC,IAAM1B,EAAMuB,EAAYG,GACpBF,EAAW,QAAQxB,CAAG,IAAM,IAC9BkB,EAAQ,IAAIlB,CAAG,CAEnB,CACA,OAAIT,IAAS,QAAU2B,EAAQ,OAC7BD,EAAmB,CAAC,GAEtBC,EAAQ,QAASlB,GAAQ,CACvB,GAAIwB,EAAW,QAAQxB,CAAG,IAAM,GAC9B,OACF,IAAMI,EAAQE,EAAY,IAAIN,CAAG,EACjC,GAAI,CAACI,EACH,OACF,IAAMuB,EAAiBJ,EAAY,QAAQvB,CAAG,EACxC4B,EAAS,IAAM,CACnBtB,EAAY,OAAON,CAAG,EACtBkB,EAAQ,OAAOlB,CAAG,EAClB,IAAM6B,EAAcV,EAAgB,QAAQ,UAAWW,GAAiBA,EAAa,MAAQ9B,CAAG,EAEhG,GADAmB,EAAgB,QAAQ,OAAOU,EAAa,CAAC,EACzC,CAACX,EAAQ,KAAM,CAEjB,GADAC,EAAgB,QAAUH,EACtB3D,EAAU,UAAY,GACxB,OACFO,EAAY,EACZwB,GAAkBA,EAAe,CACnC,CACF,EACA6B,EAAiB,OAAOU,EAAgB,EAAU3C,EAAcE,GAAe,CAAE,IAAKiB,GAAYC,CAAK,EAAG,UAAW,GAAO,eAAgBwB,EAAQ,OAAAvC,EAAQ,sBAAAC,EAAuB,KAAAC,CAAK,EAAGa,CAAK,CAAC,CACnM,CAAC,EACDa,EAAmBA,EAAiB,IAAKb,GAAU,CACjD,IAAMJ,EAAMI,EAAM,IAClB,OAAOc,EAAQ,IAAIlB,CAAG,EAAII,EAAepB,EAAcE,GAAe,CAAE,IAAKiB,GAAYC,CAAK,EAAG,UAAW,GAAM,sBAAAd,EAAuB,KAAAC,CAAK,EAAGa,CAAK,CACxJ,CAAC,EAIapB,EAAqBsC,GAAU,KAAMJ,EAAQ,KAAOD,EAAmBA,EAAiB,IAAKb,GAAUnB,GAAcmB,CAAK,CAAC,CAAC,CAC5I,EAII2B,GAA+BC,GAAe,IAAI,EAOlDC,GAAUC,GAAS,CAACA,EAAK,eAAiBA,EAAK,WAAW,EAAK,EACnE,SAASC,IAAY,CACnB,IAAMC,EAAwB,IAAI,IAC5BC,EAAgC,IAAI,QACpCC,EAAW,IAAMF,EAAM,QAAQH,EAAM,EAC3C,MAAO,CACL,IAAMC,GAAS,CACbE,EAAM,IAAIF,CAAI,EACdG,EAAc,IAAIH,EAAMA,EAAK,iBAAiB,aAAcI,CAAQ,CAAC,CACvE,EACA,OAASJ,GAAS,CAChB,IAAIK,EACJH,EAAM,OAAOF,CAAI,GAChBK,EAAKF,EAAc,IAAIH,CAAI,KAAO,MAAQK,IAAO,QAAkBA,EAAG,EACvEF,EAAc,OAAOH,CAAI,EACzBI,EAAS,CACX,EACA,MAAOA,CACT,CACF,CAGA,IAAIE,GAAsBC,GAAYA,IAAY,GAC9CC,GAAmBD,GAAYD,GAAmBC,IAAY,EAAI,GAAKA,IAAY,KACnFE,GAAc,CAAC,CAAE,SAAAtE,EAAU,GAAIE,EAAK,UAAAqE,EAAW,QAAAH,EAAU,EAAK,IAAM,CAClEG,IAAc,SAChBH,EAAUG,GACZ,IAAMC,EAAqB/B,EAAaC,EAAkB,EACpD+B,EAA+BhC,EAAaiB,EAA4B,EACxE,CAACnE,EAAaoC,CAAG,EAAIxC,GAAe,EACpCmC,EAAUrC,EAAQ,IAAI,EACtByF,EAAaF,EAAmB,IAAMC,EACxCnD,EAAQ,UAAY,OAClB+C,GAAgBD,CAAO,GAAKM,IAC9BxE,EAAMA,EAAMwE,EAAa,IAAMxE,EAAMwE,GAEvCpD,EAAQ,QAAU,CAChB,GAAIpB,EACJ,MAAOiE,GAAmBC,CAAO,GAAII,EAAmB,OAASV,GAAU,CAC7E,GAEF,IAAMa,EAAkBpD,EAAS,KAAO,CAAE,GAAGD,EAAQ,QAAS,YAAA/B,CAAY,GAAI,CAACoC,CAAG,CAAC,EACnF,OAAchB,EAAc+B,GAAmB,SAAU,CAAE,MAAOiC,CAAgB,EAAG3E,CAAQ,CAC/F,EAeA,SAAS4E,GAAa,CAAE,SAAAC,EAAU,YAAAC,KAAgBC,CAAO,EAAG,CAC1DD,GAAeE,GAAwBF,CAAW,EAClDC,EAAS,CAAE,GAAGE,EAAaC,EAAmB,EAAG,GAAGH,CAAO,EAC3DA,EAAO,SAAWI,GAAY,IAAMJ,EAAO,QAAQ,EACnD,IAAMK,EAAUC,EAAS,IAAMN,EAAQ,CAAC,KAAK,UAAUA,EAAO,UAAU,EAAGA,EAAO,mBAAoBA,EAAO,aAAa,CAAC,EAC3H,OAAcO,EAAcJ,GAAoB,SAAU,CAAE,MAAOE,CAAQ,EAAGP,CAAQ,CACxF,CA8BA,SAASU,GAAeC,EAAS,CAC/B,IAAMC,EAAQC,GAAY,IAAMC,GAAYH,CAAO,CAAC,EAC9C,CAAE,SAAAI,CAAS,EAAIC,EAAaC,EAAmB,EACrD,GAAIF,EAAU,CACZ,GAAM,CAAC,CAAEG,CAAS,EAAIC,GAAUR,CAAO,EACvCS,EAAY,IAAMR,EAAM,GAAG,SAAUM,CAAS,EAAG,CAAC,CAAC,CACrD,CACA,OAAON,CACT,CAGA,IAAIS,GAAqBC,GAChB,OAAOA,GAAM,UAAYA,EAAE,IAEhCC,GAAaD,GAAMD,GAAkBC,CAAC,EAAIA,EAAE,IAAM,OACtD,SAASE,MAAaC,EAAM,CAC1B,IAAMC,EAAe,CAAC,MAAM,QAAQD,EAAK,EAAE,EACrCE,EAAYD,EAAe,EAAI,GAC/BE,EAAaH,EAAK,EAAIE,GACtBE,EAAaJ,EAAK,EAAIE,GACtBG,EAAcL,EAAK,EAAIE,GACvBI,EAAUN,EAAK,EAAIE,GACnBK,EAAeC,GAAYJ,EAAYC,EAAa,CACxD,MAAOP,GAAUO,EAAY,EAAE,EAC/B,GAAGC,CACL,CAAC,EACD,OAAOL,EAAeM,EAAaJ,CAAU,EAAII,CACnD,CAGA,SAASE,GAAuBC,EAAQC,EAAe,CACrD,IAAMxB,EAAQF,GAAe0B,EAAc,CAAC,EACtCC,EAAc,IAAMzB,EAAM,IAAIwB,EAAc,CAAC,EACnD,OAAAC,EAAY,EACZC,GAA0B,IAAM,CAC9B,IAAMC,EAAiB,IAAMC,GAAK,OAAOH,EAAa,GAAO,EAAI,EAC3DI,EAAgBN,EAAO,IAAKb,GAAMA,EAAE,GAAG,SAAUiB,CAAc,CAAC,EACtE,MAAO,IAAM,CACXE,EAAc,QAASC,GAAgBA,EAAY,CAAC,EACpDC,GAAW,OAAON,CAAW,CAC/B,CACF,CAAC,EACMzB,CACT,CAGA,SAASgC,GAAaC,EAAOC,EAAyBhB,EAAaC,EAAS,CAC1E,IAAMgB,EAAc,OAAOD,GAA4B,WAAaA,EAA0BtB,GAAUsB,EAAyBhB,EAAaC,CAAO,EACrJ,OAAO,MAAM,QAAQc,CAAK,EAAIG,GAAiBH,EAAOE,CAAW,EAAIC,GAAiB,CAACH,CAAK,EAAG,CAAC,CAACI,CAAM,IAAMF,EAAYE,CAAM,CAAC,CAClI,CACA,SAASD,GAAiBb,EAAQY,EAAa,CAC7C,IAAME,EAASpC,GAAY,IAAM,CAAC,CAAC,EACnC,OAAOqB,GAAuBC,EAAQ,IAAM,CAC1Cc,EAAO,OAAS,EAChB,IAAMC,EAAYf,EAAO,OACzB,QAAS,EAAI,EAAG,EAAIe,EAAW,IAC7BD,EAAO,GAAKd,EAAO,GAAG,IAAI,EAE5B,OAAOY,EAAYE,CAAM,CAC3B,CAAC,CACH,CAQA,IAAIE,GAAiBC,GAAe,IAAI,EAGxC,SAASC,GAAaC,EAAO1C,EAAO2C,EAAQC,EAAU,CACpD,GAAI,CAACA,EACH,OAAOF,EACT,IAAMG,EAAQH,EAAM,UAAWI,GAAUA,EAAM,QAAU9C,CAAK,EAC9D,GAAI6C,IAAU,GACZ,OAAOH,EACT,IAAMK,EAAaH,EAAW,EAAI,EAAI,GAChCI,EAAWN,EAAMG,EAAQE,GAC/B,GAAI,CAACC,EACH,OAAON,EACT,IAAMO,EAAOP,EAAMG,GACbK,EAAaF,EAAS,OACtBG,EAAiBC,GAAIF,EAAW,IAAKA,EAAW,IAAK,EAAG,EAC9D,OAAIH,IAAe,GAAKE,EAAK,OAAO,IAAMN,EAASQ,GAAkBJ,IAAe,IAAME,EAAK,OAAO,IAAMN,EAASQ,EAC5GE,GAASX,EAAOG,EAAOA,EAAQE,CAAU,EAE3CL,CACT,CAGA,SAASY,GAAa,CAAE,SAAAC,EAAU,GAAAC,EAAK,KAAM,KAAAC,EAAO,IAAK,UAAAC,EAAW,OAAAnC,KAAWoC,CAAM,EAAGC,EAAa,CACnG,IAAMC,EAAa5D,GAAY,IAAM6D,GAAON,CAAE,CAAC,EACzCd,EAAQ,CAAC,EACTqB,EAAeC,EAAS,EAAK,EACnCC,GAAU,QAAQ1C,CAAM,EAAG,8CAA8C,EACzE,IAAM2C,EAAU,CACd,KAAAT,EACA,aAAc,CAACzD,EAAOmE,IAAW,CAC3BA,GAAUzB,EAAM,UAAW0B,GAAUpE,IAAUoE,EAAM,KAAK,IAAM,KAClE1B,EAAM,KAAK,CAAE,MAAA1C,EAAO,OAAQmE,EAAOV,EAAM,CAAC,EAC1Cf,EAAM,KAAK2B,EAAU,EAEzB,EACA,YAAa,CAACC,EAAK3B,EAAQC,IAAa,CACtC,GAAImB,EAAa,QACf,OACF,IAAMQ,EAAW9B,GAAaC,EAAO4B,EAAK3B,EAAQC,CAAQ,EACtDF,IAAU6B,IACZR,EAAa,QAAU,GACvBL,EAAUa,EAAS,IAAIC,EAAQ,EAAE,OAAQxE,GAAUuB,EAAO,QAAQvB,CAAK,IAAM,EAAE,CAAC,EAEpF,CACF,EACA,OAAAQ,EAAY,IAAM,CAChBuD,EAAa,QAAU,EACzB,CAAC,EACaU,EACZZ,EACA,CAAE,GAAGF,EAAO,IAAKC,CAAY,EACtBa,EAAclC,GAAe,SAAU,CAAE,MAAO2B,CAAQ,EAAGX,CAAQ,CAC5E,CACF,CACA,IAAImB,GAAQC,GAAYrB,EAAY,EACpC,SAASkB,GAASvB,EAAM,CACtB,OAAOA,EAAK,KACd,CACA,SAASoB,GAAWO,EAAGC,EAAG,CACxB,OAAOD,EAAE,OAAO,IAAMC,EAAE,OAAO,GACjC,CAKA,SAASC,GAAsB9E,EAAO+E,EAAe,EAAG,CACtD,OAAOC,GAAchF,CAAK,EAAIA,EAAQF,GAAeiF,CAAY,CACnE,CACA,SAASE,GAAY,CAAE,SAAA1B,EAAU,MAAA2B,EAAQ,CAAC,EAAG,MAAAlF,EAAO,GAAAwD,EAAK,KAAM,OAAA2B,EAAQ,OAAAhB,EAAS,MAASR,CAAM,EAAGC,EAAa,CAC7G,IAAMC,EAAa5D,GAAY,IAAM6D,GAAON,CAAE,CAAC,EACzCU,EAAU9D,EAAamC,EAAc,EACrC6C,EAAS,CACb,EAAGN,GAAsBI,EAAM,CAAC,EAChC,EAAGJ,GAAsBI,EAAM,CAAC,CAClC,EACMG,EAASrD,GAAa,CAACoD,EAAO,EAAGA,EAAO,CAAC,EAAG,CAAC,CAACE,EAASC,CAAO,IAAMD,GAAWC,EAAU,EAAI,OAAO,EACpGC,EAAiBxB,EAAS,IAAI,EACpCC,GAAU,QAAQC,CAAO,EAAG,+CAA+C,EAC3E,GAAM,CAAE,KAAAT,EAAM,aAAAgC,EAAc,YAAAC,CAAY,EAAIxB,EAC5C,OAAA1D,EAAY,IAAM,CAChBiF,EAAazF,EAAOwF,EAAe,OAAO,CAC5C,EAAG,CAACtB,CAAO,CAAC,EACGO,EAAcZ,EAAY,CAAE,KAAMJ,EAAM,GAAGE,EAAO,iBAAkB,GAAM,MAAO,CAAE,GAAGuB,EAAO,EAAGE,EAAO,EAAG,EAAGA,EAAO,EAAG,OAAAC,CAAO,EAAG,OAAAlB,EAAQ,OAAQ,CAACwB,EAAOC,IAAiB,CACvL,GAAM,CAAE,SAAAhD,CAAS,EAAIgD,EACrBhD,EAASa,IAASiC,EAAY1F,EAAOoF,EAAO3B,GAAM,IAAI,EAAGb,EAASa,EAAK,EACvE0B,GAAUA,EAAOQ,EAAOC,CAAY,CACtC,EAAG,gBAAkBC,GAAa,CAChCL,EAAe,QAAUK,CAC3B,EAAG,IAAKjC,CAAY,EAAGL,CAAQ,CACjC,CACA,IAAIuC,GAAOnB,GAAYM,EAAW,EASlC,IAAIc,GAAe,CACjB,SAAUC,GACV,GAAGC,GACH,GAAGC,EACL,EAGIC,GAAS,CACX,GAAGJ,GACH,GAAGK,GACH,GAAGC,GACH,0BAA2BC,EAC7B,EAkEA,IAAIC,GAAS,CAACC,EAAKC,EAAKC,IAAM,KAAK,IAAI,KAAK,IAAIA,EAAGF,CAAG,EAAGC,CAAG,EAGxDE,GAAYC,GAAU,OAAOA,GAAU,SAGvCC,GAAgBC,GAAW,MAAM,QAAQA,CAAM,GAAK,CAACH,GAASG,EAAO,EAAE,EAGvEC,GAAO,CAACP,EAAKC,EAAKC,IAAM,CAC1B,IAAMM,EAAYP,EAAMD,EACxB,QAASE,EAAIF,GAAOQ,EAAYA,GAAaA,EAAYR,CAC3D,EAGA,SAASS,GAAoBH,EAAQI,EAAG,CACtC,OAAOL,GAAaC,CAAM,EAAIA,EAAOC,GAAK,EAAGD,EAAO,OAAQI,CAAC,GAAKJ,CACpE,CAGA,IAAIK,GAAO,CAACX,EAAKC,EAAKW,IAAc,CAACA,EAAYZ,EAAMY,EAAYX,EAAMD,EAGrEa,GAAcX,GAAMA,EAGpBY,GAAY,CAACd,EAAKC,EAAKG,IAAUH,EAAMD,IAAQ,EAAI,GAAKI,EAAQJ,IAAQC,EAAMD,GAGlF,SAASe,GAAWC,EAAQC,EAAW,CACrC,IAAMjB,EAAMgB,EAAOA,EAAO,OAAS,GACnC,QAASN,EAAI,EAAGA,GAAKO,EAAWP,IAAK,CACnC,IAAMQ,EAAiBJ,GAAU,EAAGG,EAAWP,CAAC,EAChDM,EAAO,KAAKL,GAAKX,EAAK,EAAGkB,CAAc,CAAC,CAC1C,CACF,CACA,SAASC,GAAeC,EAAQ,CAC9B,IAAMJ,EAAS,CAAC,CAAC,EACjB,OAAAD,GAAWC,EAAQI,EAAS,CAAC,EACtBJ,CACT,CAGA,SAASK,GAAaC,EAAQC,EAAQJ,GAAeG,EAAO,MAAM,EAAGhB,EAASO,GAAY,CACxF,IAAMO,EAASE,EAAO,OAChBE,EAAYJ,EAASG,EAAM,OACjC,OAAAC,EAAY,GAAKT,GAAWQ,EAAOC,CAAS,EACpCC,GAAM,CACZ,IAAIf,EAAI,EACR,KAAOA,EAAIU,EAAS,GACd,EAAAK,EAAIF,EAAMb,EAAI,IADGA,IACrB,CAGF,IAAIgB,EAAkB3B,GAAO,EAAG,EAAGe,GAAUS,EAAMb,GAAIa,EAAMb,EAAI,GAAIe,CAAC,CAAC,EAEvE,OAAAC,EADsBjB,GAAoBH,EAAQI,CAAC,EACnBgB,CAAe,EACxCf,GAAKW,EAAOZ,GAAIY,EAAOZ,EAAI,GAAIgB,CAAe,CACvD,CACF,CAGA,IAAIC,GAAcvB,GAAU,OAAOA,GAAU,WAGzCwB,GAAaxB,GAAU,OAAOA,GAAU,SAG5C,SAASyB,GAAmBC,EAAUC,EAAe,CACnD,OAAOA,EAAgBD,GAAY,IAAMC,GAAiB,CAC5D,CAGA,SAASC,GAAgBC,EAAUC,EAAe,CAChD,IAAIC,EACJ,OAAI,OAAOF,GAAa,SAClBC,IACDC,EAAKD,EAAcD,MAAe,MAAQE,IAAO,SAAcD,EAAcD,GAAY,SAAS,iBAAiBA,CAAQ,GAC5HA,EAAWC,EAAcD,IAEzBA,EAAW,SAAS,iBAAiBA,CAAQ,EAEtCA,aAAoB,UAC7BA,EAAW,CAACA,CAAQ,GAEf,MAAM,KAAKA,GAAY,CAAC,CAAC,CAClC,CAGA,SAASG,GAAOC,EAAGC,EAAG,CACpB,IAAIb,EAAI,CAAC,EACT,QAASc,KAAKF,EACR,OAAO,UAAU,eAAe,KAAKA,EAAGE,CAAC,GAAKD,EAAE,QAAQC,CAAC,EAAI,IAC/Dd,EAAEc,GAAKF,EAAEE,IACb,GAAIF,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WACvD,QAAS,EAAI,EAAGE,EAAI,OAAO,sBAAsBF,CAAC,EAAG,EAAIE,EAAE,OAAQ,IAC7DD,EAAE,QAAQC,EAAE,EAAE,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKF,EAAGE,EAAE,EAAE,IAC3Ed,EAAEc,EAAE,IAAMF,EAAEE,EAAE,KAEpB,OAAOd,CACT,CAGA,IAAIe,GAAa,CACf,IAAK,EACL,IAAK,CACP,EACA,SAASC,GAAOC,EAAmBC,EAAS,CAAE,KAAAC,EAAM,OAAQC,EAAY,OAAAC,EAAS,KAAM,EAAI,CAAC,EAAG,CAC7F,GAAI,OAAO,qBAAyB,IAClC,MAAO,IAAM,CACb,EAEF,IAAMb,EAAWD,GAAgBU,CAAiB,EAC5CK,EAAsC,IAAI,QAC1CC,EAAwBC,GAAY,CACxCA,EAAQ,QAASC,GAAU,CACzB,IAAMC,EAAQJ,EAAoB,IAAIG,EAAM,MAAM,EAClD,GAAIA,EAAM,iBAAmB,QAAQC,CAAK,EAE1C,GAAID,EAAM,eAAgB,CACxB,IAAME,EAAWT,EAAQO,CAAK,EAC1BvB,GAAWyB,CAAQ,EACrBL,EAAoB,IAAIG,EAAM,OAAQE,CAAQ,EAE9CC,EAAU,UAAUH,EAAM,MAAM,CAEpC,MAAWC,IACTA,EAAMD,CAAK,EACXH,EAAoB,OAAOG,EAAM,MAAM,EAE3C,CAAC,CACH,EACMG,EAAY,IAAI,qBAAqBL,EAAsB,CAC/D,KAAAJ,EACA,WAAAC,EACA,UAAW,OAAOC,GAAW,SAAWA,EAASN,GAAWM,EAC9D,CAAC,EACD,OAAAb,EAAS,QAASqB,GAAYD,EAAU,QAAQC,CAAO,CAAC,EACjD,IAAMD,EAAU,WAAW,CACpC,CAGA,IAAIE,GAAiC,IAAI,QACrCC,GACJ,SAASC,GAAeC,EAAQC,EAAe,CAC7C,GAAIA,EAAe,CACjB,GAAM,CAAE,WAAAC,EAAY,UAAAC,CAAU,EAAIF,EAAc,GAChD,MAAO,CAAE,MAAOC,EAAY,OAAQC,CAAU,CAChD,KAAO,QAAIH,aAAkB,YAAc,YAAaA,EAC/CA,EAAO,QAAQ,EAEf,CACL,MAAOA,EAAO,YACd,OAAQA,EAAO,YACjB,CAEJ,CACA,SAASI,GAAa,CAAE,OAAAJ,EAAQ,YAAAK,EAAa,cAAAJ,CAAc,EAAG,CAC5D,IAAIxB,GACHA,EAAKoB,GAAe,IAAIG,CAAM,KAAO,MAAQvB,IAAO,QAAkBA,EAAG,QAAS6B,GAAY,CAC7FA,EAAQ,CACN,OAAAN,EACA,YAAaK,EACb,IAAI,MAAO,CACT,OAAON,GAAeC,EAAQC,CAAa,CAC7C,CACF,CAAC,CACH,CAAC,CACH,CACA,SAASM,GAAUhB,EAAS,CAC1BA,EAAQ,QAAQa,EAAY,CAC9B,CACA,SAASI,IAAuB,CAC1B,OAAO,eAAmB,MAE9BV,GAAW,IAAI,eAAeS,EAAS,EACzC,CACA,SAASE,GAAcT,EAAQM,EAAS,CACjCR,IACHU,GAAqB,EACvB,IAAMjC,EAAWD,GAAgB0B,CAAM,EACvC,OAAAzB,EAAS,QAASqB,GAAY,CAC5B,IAAIc,EAAkBb,GAAe,IAAID,CAAO,EAC3Cc,IACHA,EAAkC,IAAI,IACtCb,GAAe,IAAID,EAASc,CAAe,GAE7CA,EAAgB,IAAIJ,CAAO,EACyBR,IAAS,QAAQF,CAAO,CAC9E,CAAC,EACM,IAAM,CACXrB,EAAS,QAASqB,GAAY,CAC5B,IAAMc,EAAkBb,GAAe,IAAID,CAAO,EACgBc,GAAgB,OAAOJ,CAAO,EACxBI,GAAgB,MAClCZ,IAAS,UAAUF,CAAO,CAElF,CAAC,CACH,CACF,CAGA,IAAIe,GAAkC,IAAI,IACtCC,GACJ,SAASC,IAA4B,CACnCD,GAAsB,IAAM,CAC1B,IAAME,EAAO,CACX,MAAOC,EAAO,WACd,OAAQA,EAAO,WACjB,EACMC,EAAO,CACX,OAAQD,EACR,KAAAD,EACA,YAAaA,CACf,EACAH,GAAgB,QAASM,GAAaA,EAASD,CAAI,CAAC,CACtD,EACAD,EAAO,iBAAiB,SAAUH,EAAmB,CACvD,CACA,SAASM,GAAaD,EAAU,CAC9B,OAAAN,GAAgB,IAAIM,CAAQ,EACvBL,IACHC,GAA0B,EACrB,IAAM,CACXF,GAAgB,OAAOM,CAAQ,EAC3B,CAACN,GAAgB,MAAQC,KAC3BA,GAAsB,OAE1B,CACF,CAGA,SAASO,GAAOC,EAAGC,EAAG,CACpB,OAAOpD,GAAWmD,CAAC,EAAIF,GAAaE,CAAC,EAAIX,GAAcW,EAAGC,CAAC,CAC7D,CAGA,IAAIC,GAAc,GACdC,GAAiB,KAAO,CAC1B,QAAS,EACT,OAAQ,CAAC,EACT,SAAU,EACV,aAAc,EACd,aAAc,EACd,aAAc,EACd,gBAAiB,EACjB,SAAU,CACZ,GACIC,GAAmB,KAAO,CAC5B,KAAM,EACN,EAAGD,GAAe,EAClB,EAAGA,GAAe,CACpB,GACIE,GAAO,CACT,EAAG,CACD,OAAQ,QACR,SAAU,MACZ,EACA,EAAG,CACD,OAAQ,SACR,SAAU,KACZ,CACF,EACA,SAASC,GAAe9B,EAAS+B,EAAUX,EAAMY,EAAM,CACrD,IAAMC,EAAOb,EAAKW,GACZ,CAAE,OAAAjE,EAAQ,SAAAoE,CAAS,EAAIL,GAAKE,GAC5BI,EAAOF,EAAK,QACZG,EAAWhB,EAAK,KACtBa,EAAK,QAAUjC,EAAQ,SAAWkC,GAClCD,EAAK,aAAejC,EAAQ,SAAWlC,GAAUkC,EAAQ,SAAWlC,GACpEmE,EAAK,OAAO,OAAS,EACrBA,EAAK,OAAO,GAAK,EACjBA,EAAK,OAAO,GAAKA,EAAK,aACtBA,EAAK,SAAWzE,GAAU,EAAGyE,EAAK,aAAcA,EAAK,OAAO,EAC5D,IAAMI,EAAUL,EAAOI,EACvBH,EAAK,SAAWI,EAAUX,GAAc,EAAInD,GAAmB0D,EAAK,QAAUE,EAAME,CAAO,CAC7F,CACA,SAASC,GAAiBtC,EAASoB,EAAMY,EAAM,CAC7CF,GAAe9B,EAAS,IAAKoB,EAAMY,CAAI,EACvCF,GAAe9B,EAAS,IAAKoB,EAAMY,CAAI,EACvCZ,EAAK,KAAOY,CACd,CAGA,SAASO,GAAUvC,EAASwC,EAAW,CACrC,IAAIC,EAAQ,CAAE,EAAG,EAAG,EAAG,CAAE,EACrBC,EAAU1C,EACd,KAAO0C,GAAWA,IAAYF,GAC5B,GAAIE,aAAmB,YACrBD,EAAM,GAAKC,EAAQ,WACnBD,EAAM,GAAKC,EAAQ,UACnBA,EAAUA,EAAQ,qBACTA,aAAmB,oBAAsB,YAAaA,EAAS,CACxE,GAAM,CAAE,IAAAC,EAAK,KAAAC,CAAK,EAAIF,EAAQ,QAAQ,EAGtC,IAFAD,EAAM,GAAKG,EACXH,EAAM,GAAKE,EACJD,GAAWA,EAAQ,UAAY,OACpCA,EAAUA,EAAQ,UAEtB,CAEF,OAAOD,CACT,CAGA,IAAII,GAAe,CACjB,MAAO,CACL,CAAC,EAAG,CAAC,EACL,CAAC,EAAG,CAAC,CACP,EACA,KAAM,CACJ,CAAC,EAAG,CAAC,EACL,CAAC,EAAG,CAAC,CACP,EACA,IAAK,CACH,CAAC,EAAG,CAAC,EACL,CAAC,EAAG,CAAC,CACP,EACA,IAAK,CACH,CAAC,EAAG,CAAC,EACL,CAAC,EAAG,CAAC,CACP,CACF,EAGIC,GAAa,CACf,MAAO,EACP,OAAQ,GACR,IAAK,CACP,EACA,SAASC,GAAYC,EAAMlF,EAAQ2E,EAAQ,EAAG,CAC5C,IAAIQ,EAAQ,EAIZ,GAHIH,GAAWE,KAAU,SACvBA,EAAOF,GAAWE,IAEhB1E,GAAU0E,CAAI,EAAG,CACnB,IAAME,EAAY,WAAWF,CAAI,EAC7BA,EAAK,SAAS,IAAI,EACpBC,EAAQC,EACCF,EAAK,SAAS,GAAG,EAC1BA,EAAOE,EAAY,IACVF,EAAK,SAAS,IAAI,EAC3BC,EAAQC,EAAY,IAAM,SAAS,gBAAgB,YAC1CF,EAAK,SAAS,IAAI,EAC3BC,EAAQC,EAAY,IAAM,SAAS,gBAAgB,aAEnDF,EAAOE,CAEX,CACA,OAAIrG,GAASmG,CAAI,IACfC,EAAQnF,EAASkF,GAEZP,EAAQQ,CACjB,CAGA,IAAIE,GAAiB,CAAC,EAAG,CAAC,EAC1B,SAASC,GAAc1F,EAAQ2F,EAAiBC,EAAcC,EAAa,CACzE,IAAIC,EAAmB,MAAM,QAAQ9F,CAAM,EAAIA,EAASyF,GACpDM,EAAc,EACdC,EAAiB,EACrB,OAAI7G,GAASa,CAAM,EACjB8F,EAAmB,CAAC9F,EAAQA,CAAM,EACzBY,GAAUZ,CAAM,IACzBA,EAASA,EAAO,KAAK,EACjBA,EAAO,SAAS,GAAG,EACrB8F,EAAmB9F,EAAO,MAAM,GAAG,EAEnC8F,EAAmB,CAAC9F,EAAQoF,GAAWpF,GAAUA,EAAS,GAAG,GAGjE+F,EAAcV,GAAYS,EAAiB,GAAIF,EAAcC,CAAW,EACxEG,EAAiBX,GAAYS,EAAiB,GAAIH,CAAe,EAC1DI,EAAcC,CACvB,CAGA,IAAIC,GAAQ,CAAE,EAAG,EAAG,EAAG,CAAE,EACzB,SAASC,GAAepB,EAAWpB,EAAMyC,EAAS,CAChD,GAAI,CAAE,OAAQL,EAAmBX,GAAa,GAAI,EAAIgB,EAChD,CAAE,OAAAzD,EAASoC,EAAW,KAAAP,EAAO,GAAI,EAAI4B,EACrCC,EAAc7B,IAAS,IAAM,SAAW,QACxCQ,EAAQrC,IAAWoC,EAAYD,GAAUnC,EAAQoC,CAAS,EAAImB,GAC9DI,EAAa3D,IAAWoC,EAAY,CAAE,MAAOA,EAAU,YAAa,OAAQA,EAAU,YAAa,EAAI,CAAE,MAAOpC,EAAO,YAAa,OAAQA,EAAO,YAAa,EAChK4D,EAAgB,CACpB,MAAOxB,EAAU,YACjB,OAAQA,EAAU,YACpB,EACApB,EAAKa,GAAM,OAAO,OAAS,EAC3B,IAAIgC,EAAa,CAAC7C,EAAKa,GAAM,YACvBiC,EAAaV,EAAiB,OACpC,QAASpG,EAAI,EAAGA,EAAI8G,EAAY9G,IAAK,CACnC,IAAMM,EAAS0F,GAAcI,EAAiBpG,GAAI4G,EAAcF,GAAcC,EAAWD,GAAcrB,EAAMR,EAAK,EAC9G,CAACgC,GAAcvG,IAAW0D,EAAKa,GAAM,oBAAoB7E,KAC3D6G,EAAa,IAEf7C,EAAKa,GAAM,OAAO7E,GAAKM,CACzB,CACIuG,IACF7C,EAAKa,GAAM,YAAclE,GAAaF,GAAeqG,CAAU,EAAG9C,EAAKa,GAAM,MAAM,EACnFb,EAAKa,GAAM,oBAAsB,CAAC,GAAGb,EAAKa,GAAM,MAAM,GAExDb,EAAKa,GAAM,SAAWb,EAAKa,GAAM,YAAYb,EAAKa,GAAM,OAAO,CACjE,CAGA,SAASkC,GAAQ3B,EAAWpC,EAASoC,EAAWpB,EAAM,CAGpD,GAFAA,EAAK,EAAE,aAAe,EACtBA,EAAK,EAAE,aAAe,EAClBhB,IAAWoC,EAAW,CACxB,IAAI4B,EAAOhE,EACX,KAAOgE,GAAQA,GAAQ5B,GACrBpB,EAAK,EAAE,cAAgBgD,EAAK,WAC5BhD,EAAK,EAAE,cAAgBgD,EAAK,UAC5BA,EAAOA,EAAK,YAEhB,CACAhD,EAAK,EAAE,aAAehB,IAAWoC,EAAYpC,EAAO,YAAcA,EAAO,YACzEgB,EAAK,EAAE,aAAehB,IAAWoC,EAAYpC,EAAO,aAAeA,EAAO,aAC1EgB,EAAK,EAAE,gBAAkBoB,EAAU,YACnCpB,EAAK,EAAE,gBAAkBoB,EAAU,YACrC,CACA,SAAS6B,GAAsBrE,EAASsE,EAAUlD,EAAMyC,EAAU,CAAC,EAAG,CACpE,IAAM5B,EAAO4B,EAAQ,MAAQ,IAC7B,MAAO,CACL,QAAS,IAAMM,GAAQnE,EAAS6D,EAAQ,OAAQzC,CAAI,EACpD,OAASY,GAAS,CAChBM,GAAiBtC,EAASoB,EAAMY,CAAI,GAChC6B,EAAQ,QAAUA,EAAQ,SAC5BD,GAAe5D,EAASoB,EAAMyC,CAAO,CAEzC,EACA,OAAQxF,GAAWiG,CAAQ,EAAI,IAAMA,EAASlD,CAAI,EAAImD,GAAeD,EAAUlD,EAAKa,EAAK,CAC3F,CACF,CACA,SAASsC,GAAeC,EAAUC,EAAU,CAC1C,OAAAD,EAAS,MAAM,EACfA,EAAS,cAAc,CAACE,EAAW,CAAE,OAAA1H,CAAO,IAAM,CAChD,IAAI6B,EAAI8F,EACR,GAAID,EAAU,eACP1H,IACH0H,EAAU,OAASnH,IACrBmH,EAAU,eAAe,CAAC,MACrB,CACL,IAAME,EAAgB,CAAE,SAAU,GAAI,EACjC5H,IACH4H,EAAc,OAAS,WACxBD,GAAM9F,EAAK6F,EAAU,UAAY,MAAQ7F,IAAO,OAAS,OAASA,EAAG,gBAAkB,MAAQ8F,IAAO,QAAkBA,EAAG,KAAK9F,EAAI+F,CAAa,CACpJ,CACF,CAAC,EACM,IAAM,CACXJ,EAAS,YAAcC,EAAS,QAClC,CACF,CAGA,IAAII,GAAkC,IAAI,QACtCC,GAAkC,IAAI,QACtCC,GAAmC,IAAI,QACvCC,GAAkBhF,GAAYA,IAAY,SAAS,gBAAkBmB,EAASnB,EAClF,SAASiF,GAAOX,EAAUzF,EAAK,CAAC,EAAG,CACjC,GAAI,CAAE,UAAA2D,EAAY,SAAS,eAAgB,EAAI3D,EAAIgF,EAAU/E,GAAOD,EAAI,CAAC,WAAW,CAAC,EACrF,IAAIqG,EAAoBH,GAAiB,IAAIvC,CAAS,EACjD0C,IACHA,EAAoC,IAAI,IACxCH,GAAiB,IAAIvC,EAAW0C,CAAiB,GAEnD,IAAM9D,EAAOQ,GAAiB,EACxBuD,EAAmBd,GAAsB7B,EAAW8B,EAAUlD,EAAMyC,CAAO,EAEjF,GADAqB,EAAkB,IAAIC,CAAgB,EAClC,CAACN,GAAgB,IAAIrC,CAAS,EAAG,CACnC,IAAM4C,EAAY,IAAM,CACtB,IAAMpD,EAAO,YAAY,IAAI,EAC7B,QAAWtB,KAAWwE,EACpBxE,EAAQ,QAAQ,EAClB,QAAWA,KAAWwE,EACpBxE,EAAQ,OAAOsB,CAAI,EACrB,QAAWtB,KAAWwE,EACpBxE,EAAQ,OAAO,CACnB,EACAmE,GAAgB,IAAIrC,EAAW4C,CAAS,EACxC,IAAMhF,EAAS4E,GAAexC,CAAS,EACvCrB,EAAO,iBAAiB,SAAUiE,EAAW,CAAE,QAAS,EAAK,CAAC,EAC1D5C,IAAc,SAAS,iBACzBsC,GAAgB,IAAItC,EAAWjB,GAAOiB,EAAW4C,CAAS,CAAC,EAE7DhF,EAAO,iBAAiB,SAAUgF,EAAW,CAAE,QAAS,EAAK,CAAC,CAChE,CACA,IAAMC,EAAWR,GAAgB,IAAIrC,CAAS,EACxC8C,EAAiB,sBAAsBD,CAAQ,EACrD,MAAO,IAAM,CACX,IAAIE,EACA,OAAOjB,GAAa,YACtBA,EAAS,KAAK,EAChB,qBAAqBgB,CAAc,EACnC,IAAME,EAAqBT,GAAiB,IAAIvC,CAAS,EAIzD,GAHI,CAACgD,IAELA,EAAmB,OAAOL,CAAgB,EACtCK,EAAmB,MACrB,OACF,IAAMJ,EAAYP,GAAgB,IAAIrC,CAAS,EAC/CqC,GAAgB,OAAOrC,CAAS,EAC5B4C,IACFJ,GAAexC,CAAS,EAAE,oBAAoB,SAAU4C,CAAS,GAChEG,EAAMT,GAAgB,IAAItC,CAAS,KAAO,MAAQ+C,IAAQ,QAAkBA,EAAI,EACjFpE,EAAO,oBAAoB,SAAUiE,CAAS,EAElD,CACF,CAIA,SAASK,GAAWC,EAAMC,EAAK,CAC7BC,GAAQ,QAAQ,CAACD,GAAOA,EAAI,OAAO,EAAG,sBAAsBD,gNAAmN,CACjR,CACA,IAAIG,GAA2B,KAAO,CACpC,QAASC,GAAY,CAAC,EACtB,QAASA,GAAY,CAAC,EACtB,gBAAiBA,GAAY,CAAC,EAC9B,gBAAiBA,GAAY,CAAC,CAChC,GACA,SAASC,GAAU,CAAE,UAAAvD,EAAW,OAAApC,EAAQ,aAAA4F,EAAe,MAASnC,CAAQ,EAAI,CAAC,EAAG,CAC9E,IAAMoC,EAASC,GAAYL,EAAwB,EAEnD,OAD2BG,EAAeG,GAA4BC,GACnD,KACjBX,GAAW,SAAUrF,CAAM,EAC3BqF,GAAW,YAAajD,CAAS,EAC1ByC,GAAO,CAAC,CAAE,EAAAoB,EAAG,EAAAC,CAAE,IAAM,CAC1BL,EAAO,QAAQ,IAAII,EAAE,OAAO,EAC5BJ,EAAO,gBAAgB,IAAII,EAAE,QAAQ,EACrCJ,EAAO,QAAQ,IAAIK,EAAE,OAAO,EAC5BL,EAAO,gBAAgB,IAAIK,EAAE,QAAQ,CACvC,EAAG,CACD,GAAGzC,EACH,UAAkErB,GAAU,SAAY,OACxF,OAAyDpC,GAAO,SAAY,MAC9E,CAAC,GACA,CAAC,CAAC,EACE6F,CACT,CAoBA,SAASM,GAAkBC,EAAU,CACnC,IAAMC,EAAmBC,EAAS,CAAC,EAC7B,CAAE,SAAAC,CAAS,EAAIC,EAAaC,EAAmB,EACrDC,EAAY,IAAM,CAChB,GAAIH,EACF,OACF,IAAMI,EAAwB,CAAC,CAAE,UAAAC,EAAW,MAAAC,CAAM,IAAM,CACjDR,EAAiB,UACpBA,EAAiB,QAAUO,GAC7BR,EAASQ,EAAYP,EAAiB,QAASQ,CAAK,CACtD,EACA,OAAAC,GAAK,OAAOH,EAAuB,EAAI,EAChC,IAAMI,GAAW,OAAOJ,CAAqB,CACtD,EAAG,CAACP,CAAQ,CAAC,CACf,CAwDA,SAASY,IAAmB,CAC1B,CAACC,GAAyB,SAAWC,GAAyB,EAC9D,GAAM,CAACC,CAAkB,EAAIC,GAAUC,GAAqB,OAAO,EAInE,OAAOF,CACT,CAIA,SAASG,IAAyB,CAChC,IAAMC,EAA0BP,GAAiB,EAC3C,CAAE,cAAAQ,CAAc,EAAIC,EAAaC,EAAmB,EAC1D,OAAIF,IAAkB,QACb,GACEA,IAAkB,SACpB,GAEAD,CAEX,CAGA,SAASI,IAAoB,CAC3B,IAAIC,EAAa,GACXC,EAA8B,IAAI,IAClCC,EAAW,CACf,UAAUC,EAAe,CACvB,OAAAF,EAAY,IAAIE,CAAa,EACtB,IAAM,KAAKF,EAAY,OAAOE,CAAa,CACpD,EACA,MAAMC,EAAYC,EAAoB,CACpCC,GAAUN,EAAY,iHAAiH,EACvI,IAAMO,EAAc,CAAC,EACrB,OAAAN,EAAY,QAASE,GAAkB,CACrCI,EAAY,KAAKC,GAAqBL,EAAeC,EAAY,CAC/D,mBAAAC,CACF,CAAC,CAAC,CACJ,CAAC,EACM,QAAQ,IAAIE,CAAW,CAChC,EACA,IAAIH,EAAY,CACd,OAAAE,GAAUN,EAAY,+GAA+G,EAC9HC,EAAY,QAASE,GAAkB,CAC5CM,GAAUN,EAAeC,CAAU,CACrC,CAAC,CACH,EACA,MAAO,CACLH,EAAY,QAASE,GAAkB,CACrCO,GAAcP,CAAa,CAC7B,CAAC,CACH,EACA,OAAQ,CACN,OAAAH,EAAa,GACN,IAAM,CACXA,EAAa,GACbE,EAAS,KAAK,CAChB,CACF,CACF,EACA,OAAOA,CACT,CAGA,SAASS,IAAuB,CAC9B,IAAMT,EAAWU,GAAYb,EAAiB,EAC9C,OAAAc,GAA0BX,EAAS,MAAO,CAAC,CAAC,EACrCA,CACT,CACA,IAAIY,GAAeH,GAyBnB,SAASI,GAAUC,EAAK,CAAE,KAAAC,EAAM,OAAAC,EAAQ,OAAAC,EAAQ,KAAAC,EAAO,EAAM,EAAI,CAAC,EAAG,CACnE,GAAM,CAACC,EAAUC,CAAS,EAAIC,GAAU,EAAK,EAC7C,OAAAC,EAAY,IAAM,CAChB,GAAI,CAACR,EAAI,SAAWI,GAAQC,EAC1B,OACF,IAAMI,EAAU,KACdH,EAAU,EAAI,EACPF,EAAO,OAAS,IAAME,EAAU,EAAK,GAExCI,EAAU,CACd,KAAMT,GAAQA,EAAK,SAAW,OAC9B,OAAAC,EACA,OAAQC,IAAW,OAAS,MAAQA,CACtC,EACA,OAAOQ,GAAOX,EAAI,QAASS,EAASC,CAAO,CAC7C,EAAG,CAACT,EAAMD,EAAKE,EAAQE,CAAI,CAAC,EACrBC,CACT,CAuBA,SAASO,GAAkBC,EAAW,CACpC,OAAOA,IAAc,MAAQ,OAAOA,GAAc,UAAYC,MAAyBD,CACzF,CAGA,SAASE,GAAsBF,EAAW,CACxC,GAAID,GAAkBC,CAAS,EAC7B,OAAOA,EAAUC,GAGrB,CAGA,SAASE,IAA6B,CACpC,OAAOC,EACT,CACA,SAASA,GAAgBC,EAAU,CAC5BC,GAAmB,UAExBA,GAAmB,QAAQ,WAAa,GACxCA,GAAmB,QAAQ,YAAY,EACvCD,GAAYA,EAAS,EACvB,CAIA,SAASE,IAAuB,CAC9B,GAAM,CAACC,EAAaC,CAAiB,EAAIC,GAAe,EAClDC,EAA+BR,GAA2B,EAChE,OAAAS,EAAY,IAAM,CAChBC,GAAK,WAAW,IAAMA,GAAK,WAAW,IAAMC,GAAsB,QAAU,EAAK,CAAC,CACpF,EAAG,CAACL,CAAiB,CAAC,EACdJ,GAAa,CACnBM,EAA6B,IAAM,CACjCG,GAAsB,QAAU,GAChCN,EAAY,EACZH,EAAS,CACX,CAAC,CACH,CACF,CAIA,SAASU,IAAqB,CAO5B,OANsBC,GAAY,IAAM,CACtC,IAAMC,EAAOX,GAAmB,QAC3BW,GAELA,EAAK,UAAU,CACjB,EAAG,CAAC,CAAC,CAEP,CAeA,IAAIC,GAAe,KAAO,CAAC,GAiC3B,IAAIC,GAAiBC,GAAmB,CACtC,4BAA6BC,GAC7B,kBAAmBA,EACrB,CAAC,ECn6OD,IAAIC,GAAgBC,GAAW,CAC7B,uCAAuCC,EAASC,EAAQ,CACtD,IAAIC,EAAQA,GAAS,CAAC,EACtBA,EAAM,SAAW,UAAW,CAC5B,EACAA,EAAM,SAAS,kBAAoB,SAASC,EAAGC,EAAG,CAChD,IAAIC,GAAKF,EAAE,UAAYC,EAAE,YAAcA,EAAE,MAAQD,EAAE,OAC/CG,EAAIH,EAAE,MAAQE,EAAIF,EAAE,UACxB,MAAO,CAAE,EAAAE,EAAG,EAAAC,CAAE,CAChB,EACAJ,EAAM,SAAS,mBAAqB,SAASK,EAAO,CAClD,OAAO,KAAK,KAAK,KAAK,IAAIA,EAAM,EAAG,CAAC,EAAI,KAAK,IAAIA,EAAM,EAAG,CAAC,CAAC,CAC9D,EACAL,EAAM,SAAS,uBAAyB,SAASM,EAAM,CACrD,OAAO,KAAK,IAAIA,EAAK,SAAS,EAAI,KAAK,KAAK,KAAK,IAAIA,EAAK,MAAO,CAAC,EAAI,CAAC,CACzE,EACAN,EAAM,SAAS,0BAA4B,SAASM,EAAMD,EAAO,CAC/D,IAAIE,EAAQ,GAAKD,EAAK,MAClBE,EAAYH,EAAM,EAAIE,EAAQF,EAAM,EACxC,MAAO,CAAE,MAAAE,EAAO,UAAAC,CAAU,CAC5B,EACAR,EAAM,SAAS,gBAAkB,SAASK,EAAO,CAC/C,OAAO,KAAK,MAAMA,EAAM,EAAGA,EAAM,CAAC,CACpC,EACAL,EAAM,SAAS,eAAiB,SAASS,EAAO,CAC9C,IAAIC,EAAK,EAAI,KAAK,GAClB,OAAQD,EAAQC,EAAKA,GAAMA,CAC7B,EACAV,EAAM,SAAS,0BAA4B,SAASW,EAAOL,EAAM,CAC/D,OAAOA,EAAK,WAAa,KAAK,IAAIK,CAAK,EAAIL,EAAK,MAAQ,KAAK,IAAIK,CAAK,EACxE,EACAX,EAAM,MAAQ,UAAW,CACzB,EACAA,EAAM,MAAM,UAAY,SAASY,EAAG,CAKlC,QAJIC,EAAS,CAAC,EACVC,EAAO,KAAK,IAAIF,EAAI,GAAI,CAAC,EAAI,QAC7BG,EAAOD,EAAOd,EAAM,MAAM,QAAUc,EAAOF,EAAIZ,EAAM,MAAM,MAC3DgB,EAAK,EACFA,EAAK,GAMV,QALI,EAAIA,IACJC,EAAKjB,EAAM,MAAM,EAAE,GAAG,GACtBU,EAAKV,EAAM,MAAM,EAAE,GAAG,GACtBkB,EAAKlB,EAAM,MAAM,EAAE,GAAG,GACtBmB,EAAM,EACHA,EAAM,GAAG,CACd,IAAIC,EAAID,IACJE,GAAQ,OAASJ,EAAK,MAAQC,GAAMH,EACpCO,GAAQ,OAASJ,EAAK,OAASR,EAAK,OAASO,GAAML,EAAIG,EAAO,OAASK,EAAIR,EAC3EW,GAAU,OAASL,EAAK,OAASR,GAAMK,EAAO,OAASK,EAC3DP,EAAO,KAAK,CAAE,MAAOQ,EAAOE,EAAQ,UAAWD,EAAOC,CAAO,CAAC,CAChE,CAEF,OAAOV,CACT,EACAb,EAAM,MAAM,kBAAoB,SAASY,EAAG,CAI1C,QAHIY,EAASxB,EAAM,MAAM,UAAUY,CAAC,EAChCa,EAAM,IACNT,EAAK,EACFA,EAAKQ,EAAO,QAAQ,CACzB,IAAIE,EAAQF,EAAOR,GACnB,EAAEA,EACF,IAAIW,EAAS3B,EAAM,SAAS,uBAAuB0B,CAAK,EACxDD,EAAM,KAAK,IAAIA,EAAKE,CAAM,CAC5B,CACA,OAAOF,CACT,EACAzB,EAAM,MAAM,eAAiB,SAASY,EAAGgB,EAAG,CAK1C,QAJIC,EAAOD,EAAI,IAAM,KAAK,GAAK,EAC3BJ,EAASxB,EAAM,MAAM,UAAUY,CAAC,EAChCa,EAAM,IACNT,EAAK,EACFA,EAAKQ,EAAO,QAAQ,CACzB,IAAIE,EAAQF,EAAOR,GACnB,EAAEA,EACF,IAAIW,EAAS3B,EAAM,SAAS,0BAA0B6B,EAAMH,CAAK,EAC7DC,GAAU,IACZF,EAAM,KAAK,IAAIA,EAAKE,CAAM,EAE9B,CACA,OAAOF,CACT,EACAzB,EAAM,MAAM,WAAa,SAASC,EAAGC,EAAG,CAItC,QAHI4B,EAAM,EACNX,EAAM,EACNH,EAAKf,EAAE,OACJkB,EAAMH,GAAI,CACf,IAAIe,EAAIZ,IACRW,GAAO7B,EAAE8B,GAAK7B,EAAE6B,EAClB,CACA,OAAOD,CACT,EACA9B,EAAM,MAAM,WAAa,SAASgC,EAAG,CACnC,OAAIA,GAAK,SACA,MAAQA,EAER,MAAQ,KAAK,IAAIA,EAAG,iBAAkB,EAAI,IAErD,EACAhC,EAAM,MAAM,SAAW,SAASgC,EAAG,CACjC,OAAIA,EAAI,OACC,KAAK,KAAKA,EAAI,MAAS,MAAO,GAAG,EAEjCA,EAAI,KAEf,EACAhC,EAAM,MAAM,SAAW,SAASiC,EAAO,CACrC,MAAO,CAACjC,EAAM,MAAM,WAAWA,EAAM,MAAM,WAAWA,EAAM,MAAM,EAAE,GAAIiC,CAAK,CAAC,EAAGjC,EAAM,MAAM,WAAWA,EAAM,MAAM,WAAWA,EAAM,MAAM,EAAE,GAAIiC,CAAK,CAAC,EAAGjC,EAAM,MAAM,WAAWA,EAAM,MAAM,WAAWA,EAAM,MAAM,EAAE,GAAIiC,CAAK,CAAC,CAAC,CACnO,EACAjC,EAAM,MAAM,SAAW,SAASiC,EAAO,CACrC,IAAIC,EAAO,CAAClC,EAAM,MAAM,SAASiC,EAAM,EAAE,EAAGjC,EAAM,MAAM,SAASiC,EAAM,EAAE,EAAGjC,EAAM,MAAM,SAASiC,EAAM,EAAE,CAAC,EAC1G,MAAO,CAACjC,EAAM,MAAM,WAAWA,EAAM,MAAM,KAAK,GAAIkC,CAAI,EAAGlC,EAAM,MAAM,WAAWA,EAAM,MAAM,KAAK,GAAIkC,CAAI,EAAGlC,EAAM,MAAM,WAAWA,EAAM,MAAM,KAAK,GAAIkC,CAAI,CAAC,CACjK,EACAlC,EAAM,MAAM,KAAO,SAASmC,EAAG,CAC7B,OAAIA,GAAKnC,EAAM,MAAM,QACZmC,EAAInC,EAAM,MAAM,KAAOA,EAAM,MAAM,MAEnC,IAAM,KAAK,IAAImC,EAAInC,EAAM,MAAM,KAAM,iBAAkB,EAAI,EAEtE,EACAA,EAAM,MAAM,KAAO,SAASY,EAAG,CAC7B,OAAIA,GAAK,EACAZ,EAAM,MAAM,KAAOY,EAAIZ,EAAM,MAAM,MAEnCA,EAAM,MAAM,KAAO,KAAK,KAAKY,EAAI,IAAM,IAAK,CAAC,CAExD,EACAZ,EAAM,MAAM,SAAW,SAASiC,EAAO,CACrC,IAAIG,EAAIH,EAAM,GACVE,EAAIF,EAAM,GACVI,EAAIJ,EAAM,GACVK,EAAUF,EAAI,GAAKD,EAAI,EAAIE,EAC3BE,EAAO,EAAIH,EACXI,EAAO,EAAIL,EACXG,GAAW,GACbC,GAAQD,EACRE,GAAQF,IAERC,EAAO,IACPC,EAAO,KAET,IAAI5B,EAAIZ,EAAM,MAAM,KAAKmC,CAAC,EAC1B,GAAIvB,GAAK,EACP,MAAO,CAAC,EAAG,EAAG,CAAC,EAEjB,IAAI6B,EAAI,GAAK7B,GAAK2B,EAAOvC,EAAM,MAAM,MACjC0C,EAAI,GAAK9B,GAAK4B,EAAOxC,EAAM,MAAM,MACrC,MAAO,CAACY,EAAG6B,EAAGC,CAAC,CACjB,EACA1C,EAAM,MAAM,SAAW,SAASiC,EAAO,CACrC,IAAIrB,EAAIqB,EAAM,GACVQ,EAAIR,EAAM,GACVS,EAAIT,EAAM,GACd,GAAIrB,GAAK,EACP,MAAO,CAAC,EAAG,EAAG,CAAC,EAEjB,IAAI2B,EAAOE,GAAK,GAAK7B,GAAKZ,EAAM,MAAM,KAClCwC,EAAOE,GAAK,GAAK9B,GAAKZ,EAAM,MAAM,KAClCmC,EAAInC,EAAM,MAAM,KAAKY,CAAC,EACtBwB,EAAI,EAAI,EAAID,EAAII,IAASA,EAAO,GAAKC,EAAOD,EAAOC,GACnDH,GAAK,EAAIF,EAAI,GAAKK,EAAOL,EAAIK,EAAOJ,IAAM,EAAII,GAClD,MAAO,CAACJ,EAAGD,EAAGE,CAAC,CACjB,EACArC,EAAM,MAAM,SAAW,SAASiC,EAAO,CACrC,IAAIrB,EAAIqB,EAAM,GACVQ,EAAIR,EAAM,GACVS,EAAIT,EAAM,GACVU,EAAI,KAAK,KAAKF,EAAIA,EAAIC,EAAIA,CAAC,EAC3Bd,EACJ,GAAIe,EAAI,KACNf,EAAI,MACC,CACL,IAAIgB,EAAO,KAAK,MAAMF,EAAGD,CAAC,EAC1Bb,EAAIgB,EAAO,IAAM,KAAK,GAClBhB,EAAI,IACNA,EAAI,IAAMA,EAEd,CACA,MAAO,CAAChB,EAAG+B,EAAGf,CAAC,CACjB,EACA5B,EAAM,MAAM,SAAW,SAASiC,EAAO,CACrC,IAAIrB,EAAIqB,EAAM,GACVU,EAAIV,EAAM,GACVL,EAAIK,EAAM,GACVW,EAAOhB,EAAI,IAAM,EAAI,KAAK,GAC1Ba,EAAI,KAAK,IAAIG,CAAI,EAAID,EACrBD,EAAI,KAAK,IAAIE,CAAI,EAAID,EACzB,MAAO,CAAC/B,EAAG6B,EAAGC,CAAC,CACjB,EACA1C,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,IAAIL,EAAIK,EAAM,GACVY,EAAIZ,EAAM,GACVrB,EAAIqB,EAAM,GACd,GAAIrB,EAAI,WACN,MAAO,CAAC,IAAK,EAAGgB,CAAC,EAEnB,GAAIhB,EAAI,KACN,MAAO,CAAC,EAAG,EAAGgB,CAAC,EAEjB,IAAIkB,EAAM9C,EAAM,MAAM,eAAeY,EAAGgB,CAAC,EACrCe,EAAIG,EAAM,IAAMD,EACpB,MAAO,CAACjC,EAAG+B,EAAGf,CAAC,CACjB,EACA5B,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,IAAIrB,EAAIqB,EAAM,GACVU,EAAIV,EAAM,GACVL,EAAIK,EAAM,GACd,GAAIrB,EAAI,WACN,MAAO,CAACgB,EAAG,EAAG,GAAG,EAEnB,GAAIhB,EAAI,KACN,MAAO,CAACgB,EAAG,EAAG,CAAC,EAEjB,IAAIkB,EAAM9C,EAAM,MAAM,eAAeY,EAAGgB,CAAC,EACrCiB,EAAIF,EAAIG,EAAM,IAClB,MAAO,CAAClB,EAAGiB,EAAGjC,CAAC,CACjB,EACAZ,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,IAAIL,EAAIK,EAAM,GACVY,EAAIZ,EAAM,GACVrB,EAAIqB,EAAM,GACd,GAAIrB,EAAI,WACN,MAAO,CAAC,IAAK,EAAGgB,CAAC,EAEnB,GAAIhB,EAAI,KACN,MAAO,CAAC,EAAG,EAAGgB,CAAC,EAEjB,IAAIkB,EAAM9C,EAAM,MAAM,kBAAkBY,CAAC,EACrC+B,EAAIG,EAAM,IAAMD,EACpB,MAAO,CAACjC,EAAG+B,EAAGf,CAAC,CACjB,EACA5B,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,IAAIrB,EAAIqB,EAAM,GACVU,EAAIV,EAAM,GACVL,EAAIK,EAAM,GACd,GAAIrB,EAAI,WACN,MAAO,CAACgB,EAAG,EAAG,GAAG,EAEnB,GAAIhB,EAAI,KACN,MAAO,CAACgB,EAAG,EAAG,CAAC,EAEjB,IAAIkB,EAAM9C,EAAM,MAAM,kBAAkBY,CAAC,EACrCiC,EAAIF,EAAIG,EAAM,IAClB,MAAO,CAAClB,EAAGiB,EAAGjC,CAAC,CACjB,EACAZ,EAAM,MAAM,SAAW,SAASiC,EAAO,CAGrC,QAFIc,EAAI,IACJ/B,EAAK,EACFA,EAAK,GAAG,CACb,IAAIe,EAAIf,IACJgC,EAAOf,EAAMF,GACb,EAAI,KAAK,MAAMiB,EAAO,GAAG,EACzBC,EAAS,EAAI,GACbC,GAAU,EAAID,GAAU,GAAK,EACjCF,GAAK/C,EAAM,MAAM,SAAS,OAAOkD,CAAM,EAAIlD,EAAM,MAAM,SAAS,OAAOiD,CAAM,CAC/E,CACA,OAAOF,CACT,EACA/C,EAAM,MAAM,SAAW,SAASmD,EAAM,CACpCA,EAAOA,EAAK,YAAY,EAGxB,QAFIC,EAAM,CAAC,EACPpC,EAAK,EACFA,EAAK,GAAG,CACb,IAAIe,EAAIf,IACJkC,EAASlD,EAAM,MAAM,SAAS,QAAQmD,EAAK,OAAOpB,EAAI,EAAI,CAAC,CAAC,EAC5DkB,EAASjD,EAAM,MAAM,SAAS,QAAQmD,EAAK,OAAOpB,EAAI,EAAI,CAAC,CAAC,EAC5DsB,EAAIH,EAAS,GAAKD,EACtBG,EAAI,KAAKC,EAAI,GAAG,CAClB,CACA,OAAOD,CACT,EACApD,EAAM,MAAM,SAAW,SAASiC,EAAO,CACrC,OAAOjC,EAAM,MAAM,SAASA,EAAM,MAAM,SAASA,EAAM,MAAM,SAASiC,CAAK,CAAC,CAAC,CAC/E,EACAjC,EAAM,MAAM,SAAW,SAASiC,EAAO,CACrC,OAAOjC,EAAM,MAAM,SAASA,EAAM,MAAM,SAASA,EAAM,MAAM,SAASiC,CAAK,CAAC,CAAC,CAC/E,EACAjC,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,OAAOjC,EAAM,MAAM,SAASA,EAAM,MAAM,WAAWiC,CAAK,CAAC,CAC3D,EACAjC,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,OAAOjC,EAAM,MAAM,WAAWA,EAAM,MAAM,SAASiC,CAAK,CAAC,CAC3D,EACAjC,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,OAAOjC,EAAM,MAAM,SAASA,EAAM,MAAM,WAAWiC,CAAK,CAAC,CAC3D,EACAjC,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,OAAOjC,EAAM,MAAM,WAAWA,EAAM,MAAM,SAASiC,CAAK,CAAC,CAC3D,EACAjC,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,OAAOjC,EAAM,MAAM,SAASA,EAAM,MAAM,WAAWiC,CAAK,CAAC,CAC3D,EACAjC,EAAM,MAAM,WAAa,SAASiC,EAAO,CACvC,OAAOjC,EAAM,MAAM,SAASA,EAAM,MAAM,WAAWiC,CAAK,CAAC,CAC3D,EACAjC,EAAM,MAAM,WAAa,SAASsD,EAAG,CACnC,OAAOtD,EAAM,MAAM,WAAWA,EAAM,MAAM,SAASsD,CAAC,CAAC,CACvD,EACAtD,EAAM,MAAM,WAAa,SAASsD,EAAG,CACnC,OAAOtD,EAAM,MAAM,WAAWA,EAAM,MAAM,SAASsD,CAAC,CAAC,CACvD,EACAtD,EAAM,MAAM,EAAI,CAAC,CAAC,kBAAmB,mBAAoB,cAAe,EAAG,CAAC,iBAAmB,iBAAkB,gBAAiB,EAAG,CAAC,iBAAmB,iBAAmB,iBAAiB,CAAC,EAC9LA,EAAM,MAAM,KAAO,CAAC,CAAC,gBAAkB,gBAAkB,eAAgB,EAAG,CAAC,gBAAkB,gBAAkB,gBAAiB,EAAG,CAAC,iBAAmB,gBAAkB,eAAgB,CAAC,EAC5LA,EAAM,MAAM,KAAO,EACnBA,EAAM,MAAM,KAAO,gBACnBA,EAAM,MAAM,KAAO,gBACnBA,EAAM,MAAM,MAAQ,YACpBA,EAAM,MAAM,QAAU,YACtBA,EAAM,MAAM,SAAW,mBACvB,IAAIuD,EAAO,CACT,WAAcvD,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,WAAcA,EAAM,MAAM,WAC1B,SAAYA,EAAM,MAAM,SACxB,SAAYA,EAAM,MAAM,SACxB,SAAYA,EAAM,MAAM,SACxB,SAAYA,EAAM,MAAM,SACxB,SAAYA,EAAM,MAAM,SACxB,SAAYA,EAAM,MAAM,SACxB,SAAYA,EAAM,MAAM,SACxB,SAAYA,EAAM,MAAM,QAC1B,EACAD,EAAO,QAAUwD,CACnB,CACF,CAAC,EAGGC,GAAwB3D,GAAW,CACrC,+CAA+CC,EAASC,EAAQ,CAC9D,aACA,IAAI0D,EAAM,OAAO,UAAU,eACvBC,EAAU,IACd,SAASC,GAAS,CAClB,CACI,OAAO,SACTA,EAAO,UAA4B,OAAO,OAAO,IAAI,EAChD,IAAIA,EAAO,EAAE,YAChBD,EAAU,KAEd,SAASE,EAAGC,EAAIC,EAASC,EAAM,CAC7B,KAAK,GAAKF,EACV,KAAK,QAAUC,EACf,KAAK,KAAOC,GAAQ,EACtB,CACA,SAASC,EAAYC,EAASC,EAAOL,EAAIC,EAASC,EAAM,CACtD,GAAI,OAAOF,GAAO,WAChB,MAAM,IAAI,UAAU,iCAAiC,EAEvD,IAAIM,EAAW,IAAIP,EAAGC,EAAIC,GAAWG,EAASF,CAAI,EAAGK,EAAMV,EAAUA,EAAUQ,EAAQA,EACvF,OAAKD,EAAQ,QAAQG,GAEXH,EAAQ,QAAQG,GAAK,GAG7BH,EAAQ,QAAQG,GAAO,CAACH,EAAQ,QAAQG,GAAMD,CAAQ,EAFtDF,EAAQ,QAAQG,GAAK,KAAKD,CAAQ,GAFlCF,EAAQ,QAAQG,GAAOD,EAAUF,EAAQ,gBAKpCA,CACT,CACA,SAASI,EAAWJ,EAASG,EAAK,CAC5B,EAAEH,EAAQ,eAAiB,EAC7BA,EAAQ,QAAU,IAAIN,EAEtB,OAAOM,EAAQ,QAAQG,EAC3B,CACA,SAASE,GAAgB,CACvB,KAAK,QAAU,IAAIX,EACnB,KAAK,aAAe,CACtB,CACAW,EAAc,UAAU,WAAa,UAAsB,CACzD,IAAIC,EAAQ,CAAC,EAAGC,EAASC,EACzB,GAAI,KAAK,eAAiB,EACxB,OAAOF,EACT,IAAKE,KAAQD,EAAU,KAAK,QACtBf,EAAI,KAAKe,EAASC,CAAI,GACxBF,EAAM,KAAKb,EAAUe,EAAK,MAAM,CAAC,EAAIA,CAAI,EAE7C,OAAI,OAAO,sBACFF,EAAM,OAAO,OAAO,sBAAsBC,CAAO,CAAC,EAEpDD,CACT,EACAD,EAAc,UAAU,UAAY,SAAmBJ,EAAO,CAC5D,IAAIE,EAAMV,EAAUA,EAAUQ,EAAQA,EAAOQ,EAAW,KAAK,QAAQN,GACrE,GAAI,CAACM,EACH,MAAO,CAAC,EACV,GAAIA,EAAS,GACX,MAAO,CAACA,EAAS,EAAE,EACrB,QAAS3C,EAAI,EAAG4C,EAAID,EAAS,OAAQE,EAAK,IAAI,MAAMD,CAAC,EAAG5C,EAAI4C,EAAG5C,IAC7D6C,EAAG7C,GAAK2C,EAAS3C,GAAG,GAEtB,OAAO6C,CACT,EACAN,EAAc,UAAU,cAAgB,SAAuBJ,EAAO,CACpE,IAAIE,EAAMV,EAAUA,EAAUQ,EAAQA,EAAOW,EAAY,KAAK,QAAQT,GACtE,OAAKS,EAEDA,EAAU,GACL,EACFA,EAAU,OAHR,CAIX,EACAP,EAAc,UAAU,KAAO,SAAcJ,EAAOY,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CACtE,IAAId,EAAMV,EAAUA,EAAUQ,EAAQA,EACtC,GAAI,CAAC,KAAK,QAAQE,GAChB,MAAO,GACT,IAAIS,EAAY,KAAK,QAAQT,GAAMe,EAAM,UAAU,OAAQC,EAAMrD,EACjE,GAAI8C,EAAU,GAAI,CAGhB,OAFIA,EAAU,MACZ,KAAK,eAAeX,EAAOW,EAAU,GAAI,OAAQ,EAAI,EAC/CM,EAAK,CACX,IAAK,GACH,OAAON,EAAU,GAAG,KAAKA,EAAU,OAAO,EAAG,GAC/C,IAAK,GACH,OAAOA,EAAU,GAAG,KAAKA,EAAU,QAASC,CAAE,EAAG,GACnD,IAAK,GACH,OAAOD,EAAU,GAAG,KAAKA,EAAU,QAASC,EAAIC,CAAE,EAAG,GACvD,IAAK,GACH,OAAOF,EAAU,GAAG,KAAKA,EAAU,QAASC,EAAIC,EAAIC,CAAE,EAAG,GAC3D,IAAK,GACH,OAAOH,EAAU,GAAG,KAAKA,EAAU,QAASC,EAAIC,EAAIC,EAAIC,CAAE,EAAG,GAC/D,IAAK,GACH,OAAOJ,EAAU,GAAG,KAAKA,EAAU,QAASC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EAAG,EACrE,CACA,IAAKnD,EAAI,EAAGqD,EAAO,IAAI,MAAMD,EAAM,CAAC,EAAGpD,EAAIoD,EAAKpD,IAC9CqD,EAAKrD,EAAI,GAAK,UAAUA,GAE1B8C,EAAU,GAAG,MAAMA,EAAU,QAASO,CAAI,CAC5C,KAAO,CACL,IAAIzD,EAASkD,EAAU,OAAQQ,EAC/B,IAAKtD,EAAI,EAAGA,EAAIJ,EAAQI,IAGtB,OAFI8C,EAAU9C,GAAG,MACf,KAAK,eAAemC,EAAOW,EAAU9C,GAAG,GAAI,OAAQ,EAAI,EAClDoD,EAAK,CACX,IAAK,GACHN,EAAU9C,GAAG,GAAG,KAAK8C,EAAU9C,GAAG,OAAO,EACzC,MACF,IAAK,GACH8C,EAAU9C,GAAG,GAAG,KAAK8C,EAAU9C,GAAG,QAAS+C,CAAE,EAC7C,MACF,IAAK,GACHD,EAAU9C,GAAG,GAAG,KAAK8C,EAAU9C,GAAG,QAAS+C,EAAIC,CAAE,EACjD,MACF,IAAK,GACHF,EAAU9C,GAAG,GAAG,KAAK8C,EAAU9C,GAAG,QAAS+C,EAAIC,EAAIC,CAAE,EACrD,MACF,QACE,GAAI,CAACI,EACH,IAAKC,EAAI,EAAGD,EAAO,IAAI,MAAMD,EAAM,CAAC,EAAGE,EAAIF,EAAKE,IAC9CD,EAAKC,EAAI,GAAK,UAAUA,GAE5BR,EAAU9C,GAAG,GAAG,MAAM8C,EAAU9C,GAAG,QAASqD,CAAI,CACpD,CAEJ,CACA,MAAO,EACT,EACAd,EAAc,UAAU,GAAK,SAAYJ,EAAOL,EAAIC,EAAS,CAC3D,OAAOE,EAAY,KAAME,EAAOL,EAAIC,EAAS,EAAK,CACpD,EACAQ,EAAc,UAAU,KAAO,SAAcJ,EAAOL,EAAIC,EAAS,CAC/D,OAAOE,EAAY,KAAME,EAAOL,EAAIC,EAAS,EAAI,CACnD,EACAQ,EAAc,UAAU,eAAiB,SAAwBJ,EAAOL,EAAIC,EAASC,EAAM,CACzF,IAAIK,EAAMV,EAAUA,EAAUQ,EAAQA,EACtC,GAAI,CAAC,KAAK,QAAQE,GAChB,OAAO,KACT,GAAI,CAACP,EACH,OAAAQ,EAAW,KAAMD,CAAG,EACb,KAET,IAAIS,EAAY,KAAK,QAAQT,GAC7B,GAAIS,EAAU,GACRA,EAAU,KAAOhB,IAAO,CAACE,GAAQc,EAAU,QAAU,CAACf,GAAWe,EAAU,UAAYf,IACzFO,EAAW,KAAMD,CAAG,MAEjB,CACL,QAASrC,EAAI,EAAGyC,EAAU,CAAC,EAAG7C,EAASkD,EAAU,OAAQ9C,EAAIJ,EAAQI,KAC/D8C,EAAU9C,GAAG,KAAO8B,GAAME,GAAQ,CAACc,EAAU9C,GAAG,MAAQ+B,GAAWe,EAAU9C,GAAG,UAAY+B,IAC9FU,EAAQ,KAAKK,EAAU9C,EAAE,EAGzByC,EAAQ,OACV,KAAK,QAAQJ,GAAOI,EAAQ,SAAW,EAAIA,EAAQ,GAAKA,EAExDH,EAAW,KAAMD,CAAG,CACxB,CACA,OAAO,IACT,EACAE,EAAc,UAAU,mBAAqB,SAA4BJ,EAAO,CAC9E,IAAIE,EACJ,OAAIF,GACFE,EAAMV,EAAUA,EAAUQ,EAAQA,EAC9B,KAAK,QAAQE,IACfC,EAAW,KAAMD,CAAG,IAEtB,KAAK,QAAU,IAAIT,EACnB,KAAK,aAAe,GAEf,IACT,EACAW,EAAc,UAAU,IAAMA,EAAc,UAAU,eACtDA,EAAc,UAAU,YAAcA,EAAc,UAAU,GAC9DA,EAAc,SAAWZ,EACzBY,EAAc,aAAeA,EACT,OAAOvE,EAAvB,MACFA,EAAO,QAAUuE,EAErB,CACF,CAAC,EAGGgB,GAAkBzF,GAAW,CAC/B,2CAA2CC,EAASC,EAAQ,CAC1D,IAAIwF,EAAYxF,EAAO,QAAU,CAAC,EAC9ByF,EACAC,EACJ,SAASC,GAAmB,CAC1B,MAAM,IAAI,MAAM,iCAAiC,CACnD,CACA,SAASC,GAAsB,CAC7B,MAAM,IAAI,MAAM,mCAAmC,CACrD,EACC,UAAW,CACV,GAAI,CACE,OAAO,YAAe,WACxBH,EAAmB,WAEnBA,EAAmBE,CAEvB,MAAE,CACAF,EAAmBE,CACrB,CACA,GAAI,CACE,OAAO,cAAiB,WAC1BD,EAAqB,aAErBA,EAAqBE,CAEzB,MAAE,CACAF,EAAqBE,CACvB,CACF,GAAG,EACH,SAASC,EAAWC,EAAK,CACvB,GAAIL,IAAqB,WACvB,OAAO,WAAWK,EAAK,CAAC,EAE1B,IAAKL,IAAqBE,GAAoB,CAACF,IAAqB,WAClE,OAAAA,EAAmB,WACZ,WAAWK,EAAK,CAAC,EAE1B,GAAI,CACF,OAAOL,EAAiBK,EAAK,CAAC,CAChC,MAAE,CACA,GAAI,CACF,OAAOL,EAAiB,KAAK,KAAMK,EAAK,CAAC,CAC3C,MAAE,CACA,OAAOL,EAAiB,KAAK,KAAMK,EAAK,CAAC,CAC3C,CACF,CACF,CACA,SAASC,EAAgBC,EAAQ,CAC/B,GAAIN,IAAuB,aACzB,OAAO,aAAaM,CAAM,EAE5B,IAAKN,IAAuBE,GAAuB,CAACF,IAAuB,aACzE,OAAAA,EAAqB,aACd,aAAaM,CAAM,EAE5B,GAAI,CACF,OAAON,EAAmBM,CAAM,CAClC,MAAE,CACA,GAAI,CACF,OAAON,EAAmB,KAAK,KAAMM,CAAM,CAC7C,MAAE,CACA,OAAON,EAAmB,KAAK,KAAMM,CAAM,CAC7C,CACF,CACF,CACA,IAAIC,EAAQ,CAAC,EACTC,EAAW,GACXC,EACAC,EAAa,GACjB,SAASC,GAAkB,CACrB,CAACH,GAAY,CAACC,IAGlBD,EAAW,GACPC,EAAa,OACfF,EAAQE,EAAa,OAAOF,CAAK,EAEjCG,EAAa,GAEXH,EAAM,QACRK,EAAW,EAEf,CACA,SAASA,GAAa,CACpB,GAAI,CAAAJ,EAGJ,KAAIK,EAAUV,EAAWQ,CAAe,EACxCH,EAAW,GAEX,QADId,EAAMa,EAAM,OACTb,GAAK,CAGV,IAFAe,EAAeF,EACfA,EAAQ,CAAC,EACF,EAAEG,EAAahB,GAChBe,GACFA,EAAaC,GAAY,IAAI,EAGjCA,EAAa,GACbhB,EAAMa,EAAM,MACd,CACAE,EAAe,KACfD,EAAW,GACXH,EAAgBQ,CAAO,EACzB,CACAf,EAAU,SAAW,SAASM,EAAK,CACjC,IAAIT,EAAO,IAAI,MAAM,UAAU,OAAS,CAAC,EACzC,GAAI,UAAU,OAAS,EACrB,QAASrD,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpCqD,EAAKrD,EAAI,GAAK,UAAUA,GAG5BiE,EAAM,KAAK,IAAIO,EAAKV,EAAKT,CAAI,CAAC,EAC1BY,EAAM,SAAW,GAAK,CAACC,GACzBL,EAAWS,CAAU,CAEzB,EACA,SAASE,EAAKV,EAAKW,EAAO,CACxB,KAAK,IAAMX,EACX,KAAK,MAAQW,CACf,CACAD,EAAK,UAAU,IAAM,UAAW,CAC9B,KAAK,IAAI,MAAM,KAAM,KAAK,KAAK,CACjC,EACAhB,EAAU,MAAQ,UAClBA,EAAU,QAAU,GACpBA,EAAU,IAAM,CAAC,EACjBA,EAAU,KAAO,CAAC,EAClBA,EAAU,QAAU,GACpBA,EAAU,SAAW,CAAC,EACtB,SAASkB,GAAO,CAChB,CACAlB,EAAU,GAAKkB,EACflB,EAAU,YAAckB,EACxBlB,EAAU,KAAOkB,EACjBlB,EAAU,IAAMkB,EAChBlB,EAAU,eAAiBkB,EAC3BlB,EAAU,mBAAqBkB,EAC/BlB,EAAU,KAAOkB,EACjBlB,EAAU,gBAAkBkB,EAC5BlB,EAAU,oBAAsBkB,EAChClB,EAAU,UAAY,SAASd,EAAM,CACnC,MAAO,CAAC,CACV,EACAc,EAAU,QAAU,SAASd,EAAM,CACjC,MAAM,IAAI,MAAM,kCAAkC,CACpD,EACAc,EAAU,IAAM,UAAW,CACzB,MAAO,GACT,EACAA,EAAU,MAAQ,SAASmB,EAAK,CAC9B,MAAM,IAAI,MAAM,gCAAgC,CAClD,EACAnB,EAAU,MAAQ,UAAW,CAC3B,MAAO,EACT,CACF,CACF,CAAC,EAGGoB,GAAkC9G,GAAW,CAC/C,gEAAgEC,EAAS,CACvE,aACA,IAAII,EAAmB,OAAO,QAAtB,YAAgC,OAAO,IAC3C8B,EAAI9B,EAAI,OAAO,IAAI,eAAe,EAAI,MACtC0G,EAAI1G,EAAI,OAAO,IAAI,cAAc,EAAI,MACrC2G,EAAI3G,EAAI,OAAO,IAAI,gBAAgB,EAAI,MACvC4G,EAAI5G,EAAI,OAAO,IAAI,mBAAmB,EAAI,MAC1C6G,EAAI7G,EAAI,OAAO,IAAI,gBAAgB,EAAI,MACvC6C,EAAI7C,EAAI,OAAO,IAAI,gBAAgB,EAAI,MACvC8G,EAAI9G,EAAI,OAAO,IAAI,eAAe,EAAI,MACtCyE,EAAIzE,EAAI,OAAO,IAAI,kBAAkB,EAAI,MACzCQ,EAAKR,EAAI,OAAO,IAAI,uBAAuB,EAAI,MAC/CmD,EAAInD,EAAI,OAAO,IAAI,mBAAmB,EAAI,MAC1C+G,EAAI/G,EAAI,OAAO,IAAI,gBAAgB,EAAI,MACvCgH,EAAIhH,EAAI,OAAO,IAAI,qBAAqB,EAAI,MAC5CiH,EAAIjH,EAAI,OAAO,IAAI,YAAY,EAAI,MACnCkB,EAAIlB,EAAI,OAAO,IAAI,YAAY,EAAI,MACnCkH,EAAIlH,EAAI,OAAO,IAAI,aAAa,EAAI,MACpCmH,EAAInH,EAAI,OAAO,IAAI,mBAAmB,EAAI,MAC1CC,EAAID,EAAI,OAAO,IAAI,iBAAiB,EAAI,MACxC,EAAIA,EAAI,OAAO,IAAI,aAAa,EAAI,MACxC,SAASoH,EAAErH,EAAG,CACZ,GAAiB,OAAOA,GAApB,UAAkCA,IAAT,KAAY,CACvC,IAAIsH,EAAItH,EAAE,SACV,OAAQsH,EAAG,CACT,KAAKvF,EACH,OAAQ/B,EAAIA,EAAE,KAAMA,EAAG,CACrB,KAAK0E,EACL,KAAKjE,EACL,KAAKmG,EACL,KAAKE,EACL,KAAKD,EACL,KAAKG,EACH,OAAOhH,EACT,QACE,OAAQA,EAAIA,GAAKA,EAAE,SAAUA,EAAG,CAC9B,KAAK+G,EACL,KAAK3D,EACL,KAAKjC,EACL,KAAK+F,EACL,KAAKpE,EACH,OAAO9C,EACT,QACE,OAAOsH,CACX,CACJ,CACF,KAAKX,EACH,OAAOW,CACX,CACF,CACF,CACA,SAASC,EAAEvH,EAAG,CACZ,OAAOqH,EAAErH,CAAC,IAAMS,CAClB,CACAZ,EAAQ,UAAY6E,EACpB7E,EAAQ,eAAiBY,EACzBZ,EAAQ,gBAAkBkH,EAC1BlH,EAAQ,gBAAkBiD,EAC1BjD,EAAQ,QAAUkC,EAClBlC,EAAQ,WAAauD,EACrBvD,EAAQ,SAAW+G,EACnB/G,EAAQ,KAAOsB,EACftB,EAAQ,KAAOqH,EACfrH,EAAQ,OAAS8G,EACjB9G,EAAQ,SAAWiH,EACnBjH,EAAQ,WAAagH,EACrBhH,EAAQ,SAAWmH,EACnBnH,EAAQ,YAAc,SAASG,EAAG,CAChC,OAAOuH,EAAEvH,CAAC,GAAKqH,EAAErH,CAAC,IAAM0E,CAC1B,EACA7E,EAAQ,iBAAmB0H,EAC3B1H,EAAQ,kBAAoB,SAASG,EAAG,CACtC,OAAOqH,EAAErH,CAAC,IAAM+G,CAClB,EACAlH,EAAQ,kBAAoB,SAASG,EAAG,CACtC,OAAOqH,EAAErH,CAAC,IAAM8C,CAClB,EACAjD,EAAQ,UAAY,SAASG,EAAG,CAC9B,OAAoB,OAAOA,GAApB,UAAkCA,IAAT,MAAcA,EAAE,WAAa+B,CAC/D,EACAlC,EAAQ,aAAe,SAASG,EAAG,CACjC,OAAOqH,EAAErH,CAAC,IAAMoD,CAClB,EACAvD,EAAQ,WAAa,SAASG,EAAG,CAC/B,OAAOqH,EAAErH,CAAC,IAAM4G,CAClB,EACA/G,EAAQ,OAAS,SAASG,EAAG,CAC3B,OAAOqH,EAAErH,CAAC,IAAMmB,CAClB,EACAtB,EAAQ,OAAS,SAASG,EAAG,CAC3B,OAAOqH,EAAErH,CAAC,IAAMkH,CAClB,EACArH,EAAQ,SAAW,SAASG,EAAG,CAC7B,OAAOqH,EAAErH,CAAC,IAAM2G,CAClB,EACA9G,EAAQ,WAAa,SAASG,EAAG,CAC/B,OAAOqH,EAAErH,CAAC,IAAM8G,CAClB,EACAjH,EAAQ,aAAe,SAASG,EAAG,CACjC,OAAOqH,EAAErH,CAAC,IAAM6G,CAClB,EACAhH,EAAQ,WAAa,SAASG,EAAG,CAC/B,OAAOqH,EAAErH,CAAC,IAAMgH,CAClB,EACAnH,EAAQ,mBAAqB,SAASG,EAAG,CACvC,OAAoB,OAAOA,GAApB,UAAwC,OAAOA,GAAtB,YAA2BA,IAAM4G,GAAK5G,IAAMS,GAAMT,IAAM8G,GAAK9G,IAAM6G,GAAK7G,IAAMgH,GAAKhH,IAAMiH,GAAkB,OAAOjH,GAApB,UAAkCA,IAAT,OAAeA,EAAE,WAAamB,GAAKnB,EAAE,WAAakH,GAAKlH,EAAE,WAAa8C,GAAK9C,EAAE,WAAa+G,GAAK/G,EAAE,WAAaoD,GAAKpD,EAAE,WAAaoH,GAAKpH,EAAE,WAAaE,GAAKF,EAAE,WAAa,GAAKA,EAAE,WAAamH,EACvV,EACAtH,EAAQ,OAASwH,CACnB,CACF,CAAC,EAGGG,GAAmB5H,GAAW,CAChC,0CAA0CC,EAASC,EAAQ,CACzD,aAEEA,EAAO,QAAU4G,GAAgC,CAIrD,CACF,CAAC,EAGGe,GAAsC7H,GAAW,CACnD,oFAAoFC,EAASC,EAAQ,CACnG,aACA,IAAI4H,EAAUF,GAAiB,EAC3BG,EAAgB,CAClB,kBAAmB,GACnB,YAAa,GACb,aAAc,GACd,aAAc,GACd,YAAa,GACb,gBAAiB,GACjB,yBAA0B,GAC1B,yBAA0B,GAC1B,OAAQ,GACR,UAAW,GACX,KAAM,EACR,EACIC,EAAgB,CAClB,KAAM,GACN,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,OAAQ,GACR,UAAW,GACX,MAAO,EACT,EACIC,EAAsB,CACxB,SAAY,GACZ,OAAQ,GACR,aAAc,GACd,YAAa,GACb,UAAW,EACb,EACIC,EAAe,CACjB,SAAY,GACZ,QAAS,GACT,aAAc,GACd,YAAa,GACb,UAAW,GACX,KAAM,EACR,EACIC,EAAe,CAAC,EACpBA,EAAaL,EAAQ,YAAcG,EACnCE,EAAaL,EAAQ,MAAQI,EAC7B,SAASE,EAAWC,EAAW,CAC7B,OAAIP,EAAQ,OAAOO,CAAS,EACnBH,EAEFC,EAAaE,EAAU,WAAgBN,CAChD,CACA,IAAIO,EAAiB,OAAO,eACxBC,EAAsB,OAAO,oBAC7BC,EAAwB,OAAO,sBAC/BC,EAA2B,OAAO,yBAClCC,EAAiB,OAAO,eACxBC,EAAkB,OAAO,UAC7B,SAASC,EAAqBC,EAAiBC,EAAiBC,EAAW,CACzE,GAAI,OAAOD,GAAoB,SAAU,CACvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqBN,EAAeI,CAAe,EACnDE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,CAAS,CAEvE,CACA,IAAIE,EAAQV,EAAoBO,CAAe,EAC3CN,IACFS,EAAQA,EAAM,OAAOT,EAAsBM,CAAe,CAAC,GAI7D,QAFII,EAAgBd,EAAWS,CAAe,EAC1CM,EAAgBf,EAAWU,CAAe,EACrC5G,EAAI,EAAGA,EAAI+G,EAAM,OAAQ,EAAE/G,EAAG,CACrC,IAAIkH,EAAOH,EAAM/G,GACjB,GAAI,CAAC8F,EAAcoB,IAAS,EAAEL,GAAaA,EAAUK,KAAU,EAAED,GAAiBA,EAAcC,KAAU,EAAEF,GAAiBA,EAAcE,IAAQ,CACjJ,IAAIC,EAAaZ,EAAyBK,EAAiBM,CAAI,EAC/D,GAAI,CACFd,EAAeO,EAAiBO,EAAMC,CAAU,CAClD,MAAE,CACF,CACF,CACF,CACF,CACA,OAAOR,CACT,CACA3I,EAAO,QAAU0I,CACnB,CACF,CAAC,EAGGU,GAAsCtJ,GAAW,CACnD,wEAAwEC,EAASC,EAAQ,EACtF,UAAW,CACV,SAAS4E,EAAE1E,EAAGC,EAAG,CACf,SAAS,iBAAmBD,EAAE,iBAAiB,SAAUC,EAAG,EAAK,EAAID,EAAE,YAAY,SAAUC,CAAC,CAChG,CACA,SAASQ,EAAGT,EAAG,CACb,SAAS,KAAOA,EAAE,EAAI,SAAS,iBAAmB,SAAS,iBAAiB,mBAAoB,SAAS+B,GAAI,CAC3G,SAAS,oBAAoB,mBAAoBA,CAAC,EAClD/B,EAAE,CACJ,CAAC,EAAI,SAAS,YAAY,qBAAsB,SAAS+G,GAAI,EACtC,SAAS,YAA1B,eAAsD,SAAS,YAAvB,cAC1C,SAAS,YAAY,qBAAsBA,CAAC,EAAG/G,EAAE,EACrD,CAAC,CACH,CAEA,SAASmB,EAAEnB,EAAG,CACZ,KAAK,EAAI,SAAS,cAAc,KAAK,EACrC,KAAK,EAAE,aAAa,cAAe,MAAM,EACzC,KAAK,EAAE,YAAY,SAAS,eAAeA,CAAC,CAAC,EAC7C,KAAK,EAAI,SAAS,cAAc,MAAM,EACtC,KAAK,EAAI,SAAS,cAAc,MAAM,EACtC,KAAK,EAAI,SAAS,cAAc,MAAM,EACtC,KAAK,EAAI,SAAS,cAAc,MAAM,EACtC,KAAK,EAAI,GACT,KAAK,EAAE,MAAM,QAAU,+GACvB,KAAK,EAAE,MAAM,QAAU,+GACvB,KAAK,EAAE,MAAM,QAAU,+GACvB,KAAK,EAAE,MAAM,QAAU,6EACvB,KAAK,EAAE,YAAY,KAAK,CAAC,EACzB,KAAK,EAAE,YAAY,KAAK,CAAC,EACzB,KAAK,EAAE,YAAY,KAAK,CAAC,EACzB,KAAK,EAAE,YAAY,KAAK,CAAC,CAC3B,CACA,SAASsH,EAAEtH,EAAGC,EAAG,CACfD,EAAE,EAAE,MAAM,QAAU,6LAA+LC,EAAI,GACzN,CACA,SAASoH,EAAErH,EAAG,CACZ,IAAIC,EAAID,EAAE,EAAE,YAAa+B,EAAI9B,EAAI,IACjC,OAAAD,EAAE,EAAE,MAAM,MAAQ+B,EAAI,KACtB/B,EAAE,EAAE,WAAa+B,EACjB/B,EAAE,EAAE,WAAaA,EAAE,EAAE,YAAc,IAC5BA,EAAE,IAAMC,GAAKD,EAAE,EAAIC,EAAG,IAAQ,EACvC,CACA,SAASsH,EAAEvH,EAAGC,EAAG,CACf,SAAS8B,GAAI,CACX,IAAI+C,EAAKiC,EACTM,EAAEvC,CAAE,GAAKA,EAAG,EAAE,YAAc7E,EAAE6E,EAAG,CAAC,CACpC,CACA,IAAIiC,EAAI/G,EACR0E,EAAE1E,EAAE,EAAG+B,CAAC,EACR2C,EAAE1E,EAAE,EAAG+B,CAAC,EACRsF,EAAErH,CAAC,CACL,CAEA,SAASmJ,EAAEnJ,EAAGC,EAAG,CACf,IAAI8B,EAAI9B,GAAK,CAAC,EACd,KAAK,OAASD,EACd,KAAK,MAAQ+B,EAAE,OAAS,SACxB,KAAK,OAASA,EAAE,QAAU,SAC1B,KAAK,QAAUA,EAAE,SAAW,QAC9B,CACA,IAAIW,EAAI,KAAM0G,EAAI,KAAMC,EAAI,KAAMC,EAAI,KACtC,SAASC,GAAI,CACX,GAAaH,IAAT,KACF,GAAII,EAAE,GAAK,QAAQ,KAAKC,EAAO,UAAU,MAAM,EAAG,CAChD,IAAIzJ,EAAI,oDAAoD,KAAKyJ,EAAO,UAAU,SAAS,EAC3FL,EAAI,CAAC,CAACpJ,GAAK,IAAM,SAASA,EAAE,GAAI,EAAE,CACpC,MACEoJ,EAAI,GACR,OAAOA,CACT,CACA,SAASI,GAAI,CACX,OAASF,IAAT,OAAeA,EAAI,CAAC,CAAC,SAAS,OACvBA,CACT,CACA,SAASI,GAAI,CACX,GAAaL,IAAT,KAAY,CACd,IAAIrJ,EAAI,SAAS,cAAc,KAAK,EACpC,GAAI,CACFA,EAAE,MAAM,KAAO,4BACjB,MAAE,CACF,CACAqJ,EAAWrJ,EAAE,MAAM,OAAf,EACN,CACA,OAAOqJ,CACT,CACA,SAAS1I,EAAEX,EAAGC,EAAG,CACf,MAAO,CAACD,EAAE,MAAOA,EAAE,OAAQ0J,EAAE,EAAI1J,EAAE,QAAU,GAAI,QAASC,CAAC,EAAE,KAAK,GAAG,CACvE,CACAkJ,EAAE,UAAU,KAAO,SAASnJ,EAAGC,EAAG,CAChC,IAAI8B,EAAI,KAAMgF,EAAI/G,GAAK,UAAWkH,EAAI,EAAG9D,EAAInD,GAAK,IAAK0B,EAAI,IAAI,KAAK,EAAE,QAAQ,EAC9E,OAAO,IAAI,QAAQ,SAASmD,EAAI6E,EAAI,CAClC,GAAIH,EAAE,GAAK,CAACD,EAAE,EAAG,CACf,IAAIK,EAAI,IAAI,QAAQ,SAAS7E,EAAI8E,EAAI,CACnC,SAASjD,GAAI,CACX,IAAI,KAAK,EAAE,QAAQ,EAAIjF,GAAKyB,EAAIyG,EAAG,MAAM,GAAKzG,EAAI,qBAAqB,CAAC,EAAI,SAAS,MAAM,KAAKzC,EAAEoB,EAAG,IAAMA,EAAE,OAAS,GAAG,EAAGgF,CAAC,EAAE,KAAK,SAAS+C,EAAI,CAC/I,GAAKA,EAAG,OAAS/E,EAAG,EAAI,WAAW6B,EAAG,EAAE,CAC1C,EAAGiD,CAAE,CACP,CACAjD,EAAE,CACJ,CAAC,EAAGmD,EAAI,IAAI,QAAQ,SAAShF,EAAI+E,EAAI,CACnC5C,EAAI,WAAW,UAAW,CACxB4C,EAAG,MAAM,GAAK1G,EAAI,qBAAqB,CAAC,CAC1C,EAAGA,CAAC,CACN,CAAC,EACD,QAAQ,KAAK,CAAC2G,EAAGH,CAAC,CAAC,EAAE,KACnB,UAAW,CACT,aAAa1C,CAAC,EACdpC,EAAG/C,CAAC,CACN,EACA4H,CACF,CACF,MACElJ,EAAG,UAAW,CACZ,SAAS0G,GAAI,CACX,IAAI0C,GACAA,EAAWhD,GAAN,IAAiBC,GAAN,IAAiBD,GAAN,IAAiB/D,GAAN,IAAiBgE,GAAN,IAAiBhE,GAAN,OAC7D+G,EAAKhD,GAAKC,GAAKD,GAAK/D,GAAKgE,GAAKhE,KAAgBJ,IAAT,OAAemH,EAAK,sCAAsC,KAAKJ,EAAO,UAAU,SAAS,EAAG/G,EAAI,CAAC,CAACmH,IAAO,IAAM,SAASA,EAAG,GAAI,EAAE,GAAa,SAASA,EAAG,GAAI,EAAE,IAA1B,KAA+B,IAAM,SAASA,EAAG,GAAI,EAAE,IAAKA,EAAKnH,IAAMmE,GAAKO,GAAKN,GAAKM,GAAKtE,GAAKsE,GAAKP,GAAK3G,GAAK4G,GAAK5G,GAAK4C,GAAK5C,GAAK2G,GAAK1G,IAAK2G,GAAK3G,IAAK2C,GAAK3C,KAAK0J,EAAK,CAACA,GACrVA,IAAOlD,EAAE,YAAcA,EAAE,WAAW,YAAYA,CAAC,EAAG,aAAaO,CAAC,EAAGpC,EAAG/C,CAAC,EAC3E,CACA,SAASiI,GAAI,CACX,GAAI,IAAI,KAAK,EAAE,QAAQ,EAAIrI,GAAKyB,EAC9BuD,EAAE,YAAcA,EAAE,WAAW,YAAYA,CAAC,EAAGgD,EAAG,MAAM,GAAKvG,EAAI,qBAAqB,CAAC,MAClF,CACH,IAAI2B,EAAK,SAAS,QACLA,IAAT,IAA0BA,IAAX,UACjB8B,EAAID,EAAE,EAAE,YAAaE,EAAIE,EAAE,EAAE,YAAalE,EAAImE,EAAE,EAAE,YAAaE,EAAE,GACnED,EAAI,WAAW8C,EAAG,EAAE,CACtB,CACF,CACA,IAAIpD,EAAI,IAAIzF,EAAE4F,CAAC,EAAGC,EAAI,IAAI7F,EAAE4F,CAAC,EAAGE,EAAI,IAAI9F,EAAE4F,CAAC,EAAGF,EAAI,GAAIC,EAAI,GAAIhE,EAAI,GAAIsE,EAAI,GAAIlH,EAAI,GAAIC,GAAI,GAAIwG,EAAI,SAAS,cAAc,KAAK,EAC9HA,EAAE,IAAM,MACRW,EAAEV,EAAGjG,EAAEoB,EAAG,YAAY,CAAC,EACvBuF,EAAEN,EAAGrG,EAAEoB,EAAG,OAAO,CAAC,EAClBuF,EAAEL,EAAGtG,EAAEoB,EAAG,WAAW,CAAC,EACtB4E,EAAE,YAAYC,EAAE,CAAC,EACjBD,EAAE,YAAYK,EAAE,CAAC,EACjBL,EAAE,YAAYM,EAAE,CAAC,EACjB,SAAS,KAAK,YAAYN,CAAC,EAC3BS,EAAIR,EAAE,EAAE,YACR1G,EAAI8G,EAAE,EAAE,YACR7G,GAAI8G,EAAE,EAAE,YACR+C,EAAE,EACFzC,EAAEX,EAAG,SAAS7B,EAAI,CAChB8B,EAAI9B,EACJoC,EAAE,CACJ,CAAC,EACDG,EACEV,EACAjG,EAAEoB,EAAG,IAAMA,EAAE,OAAS,cAAc,CACtC,EACAwF,EAAEP,EAAG,SAASjC,EAAI,CAChB+B,EAAI/B,EACJoC,EAAE,CACJ,CAAC,EACDG,EAAEN,EAAGrG,EAAEoB,EAAG,IAAMA,EAAE,OAAS,SAAS,CAAC,EACrCwF,EAAEN,EAAG,SAASlC,EAAI,CAChBjC,EAAIiC,EACJoC,EAAE,CACJ,CAAC,EACDG,EAAEL,EAAGtG,EAAEoB,EAAG,IAAMA,EAAE,OAAS,aAAa,CAAC,CAC3C,CAAC,CACL,CAAC,CACH,EACa,OAAOjC,GAApB,SAA6BA,EAAO,QAAUqJ,GAAKM,EAAO,iBAAmBN,EAAGM,EAAO,iBAAiB,UAAU,KAAON,EAAE,UAAU,KACvI,GAAG,CACL,CACF,CAAC,EAGD,SAASc,GAAoBC,EAAMC,EAAI,CACrC,GAAI,CAACD,EAAK,WAAW,GAAG,GAAK,CAACC,EAAG,WAAW,GAAG,EAC7C,MAAM,IAAI,MAAM,2CAA2C,EAE7D,GAAM,CAACC,CAAO,EAAIC,GAAcH,CAAI,EAC9B,CAACI,EAAOC,CAAM,EAAIF,GAAcF,CAAE,EACpCK,EAAeC,GAASL,EAASE,CAAK,EAC1C,OAAIE,IAAiB,KACnBA,EAAe,KACb,CAACA,EAAa,WAAW,GAAG,GAAK,CAACA,EAAa,WAAW,GAAG,IAC/DA,EAAe,KAAOA,GAEjBA,EAAe,IAAMD,CAC9B,CACA,SAASF,GAAcK,EAAM,CAC3B,IAAMC,EAAQD,EAAK,YAAY,GAAG,EAClC,MAAO,CAACA,EAAK,UAAU,EAAGC,EAAQ,CAAC,EAAGD,EAAK,UAAUC,EAAQ,CAAC,CAAC,CACjE,CACA,IAAIC,GAAW,GACXC,GAAqB,GACrBC,GAA4B,CAACC,EAAKJ,IAAUI,EAAI,WAAWJ,CAAK,EAChEK,GAA6B,CAACD,EAAKE,IAAiBF,EAAI,YAAYE,CAAY,EAChFC,GAAuB,CAACH,EAAKI,EAAOC,IAAQL,EAAI,MAAMI,EAAOC,CAAG,EACpE,SAASX,GAASP,EAAMC,EAAI,CAK1B,GAJID,IAASC,IAEbD,EAAO,IAAMmB,GAAgBnB,CAAI,EACjCC,EAAK,IAAMkB,GAAgBlB,CAAE,EACzBD,IAASC,GACX,MAAO,GACT,IAAMmB,EAAY,EACZC,EAAUrB,EAAK,OACfsB,EAAUD,EAAUD,EACpBG,EAAU,EACVC,EAAQvB,EAAG,OAASsB,EACpB/J,EAAS8J,EAAUE,EAAQF,EAAUE,EACvCC,EAAgB,GAChB7J,EAAI,EACR,KAAOA,EAAIJ,EAAQI,IAAK,CACtB,IAAM8J,EAAWd,GAA0BZ,EAAMoB,EAAYxJ,CAAC,EAC9D,GAAI8J,IAAad,GAA0BX,EAAIsB,EAAU3J,CAAC,EACxD,MACO8J,IAAaf,KACpBc,EAAgB7J,EACpB,CACA,GAAIA,IAAMJ,EACR,GAAIgK,EAAQhK,EAAQ,CAClB,GAAIoJ,GAA0BX,EAAIsB,EAAU3J,CAAC,IAAM+I,GACjD,OAAOK,GAAqBf,EAAIsB,EAAU3J,EAAI,CAAC,EAEjD,GAAIA,IAAM,EACR,OAAOoJ,GAAqBf,EAAIsB,EAAU3J,CAAC,CAE/C,MAAW0J,EAAU9J,IACfoJ,GAA0BZ,EAAMoB,EAAYxJ,CAAC,IAAM+I,GACrDc,EAAgB7J,EACPA,IAAM,IACf6J,EAAgB,IAItB,IAAIE,EAAM,GACV,IAAK/J,EAAIwJ,EAAYK,EAAgB,EAAG7J,GAAKyJ,EAAS,EAAEzJ,GAClDA,IAAMyJ,GAAWT,GAA0BZ,EAAMpI,CAAC,IAAM+I,MAC1DgB,GAAOA,EAAI,SAAW,EAAI,KAAO,OAGrC,MAAO,GAAGA,IAAMX,GAAqBf,EAAIsB,EAAUE,CAAa,GAClE,CACA,IAAIG,GAAiB,GACjBC,GAAY,IACZC,GAAmBC,GAASA,IAASpB,GACzC,SAASQ,GAAgBX,EAAM,CAC7B,IAAIwB,EAAM,GACNC,EAAoB,EACpBC,EAAY,GACZC,EAAO,EACPJ,EAAO,EACX,QAASnK,EAAI,EAAGA,GAAK4I,EAAK,OAAQ,EAAE5I,EAAG,CACrC,GAAIA,EAAI4I,EAAK,OACXuB,EAAOnB,GAA0BJ,EAAM5I,CAAC,MACrC,IAAIkK,GAAgBC,CAAI,EAC3B,MAEAA,EAAOpB,GACT,GAAImB,GAAgBC,CAAI,EAAG,CACzB,GAAI,EAAAG,IAActK,EAAI,GAAKuK,IAAS,GAC7B,GAAIA,IAAS,EAAG,CACrB,GAAIH,EAAI,OAAS,GAAKC,IAAsB,GAAKrB,GAA0BoB,EAAKA,EAAI,OAAS,CAAC,IAAMtB,IAAYE,GAA0BoB,EAAKA,EAAI,OAAS,CAAC,IAAMtB,IACjK,GAAIsB,EAAI,OAAS,EAAG,CAClB,IAAMI,EAAiBtB,GAA2BkB,EAAKH,EAAS,EAC5DO,IAAmB,IACrBJ,EAAM,GACNC,EAAoB,IAEpBD,EAAMhB,GAAqBgB,EAAK,EAAGI,CAAc,EACjDH,EAAoBD,EAAI,OAAS,EAAIlB,GAA2BkB,EAAKH,EAAS,GAEhFK,EAAYtK,EACZuK,EAAO,EACP,QACF,SAAWH,EAAI,SAAW,EAAG,CAC3BA,EAAM,GACNC,EAAoB,EACpBC,EAAYtK,EACZuK,EAAO,EACP,QACF,EAEEP,KACFI,GAAOA,EAAI,OAAS,EAAI,GAAGH,OAAgB,KAC3CI,EAAoB,EAExB,MACMD,EAAI,OAAS,EACfA,GAAO,GAAGH,KAAYb,GAAqBR,EAAM0B,EAAY,EAAGtK,CAAC,IAEjEoK,EAAMhB,GAAqBR,EAAM0B,EAAY,EAAGtK,CAAC,EACnDqK,EAAoBrK,EAAIsK,EAAY,EAEtCA,EAAYtK,EACZuK,EAAO,CACT,MAAWJ,IAASrB,IAAYyB,IAAS,GACvC,EAAEA,EAEFA,EAAO,EAEX,CACA,OAAOH,CACT,CAUA,SAASK,GAASC,EAAO,CACvB,OAAO,OAAOA,GAAU,UAAYA,IAAU,MAAQ,CAAC,MAAM,QAAQA,CAAK,CAC5E,CACA,SAASC,GAASD,EAAO,CACvB,OAAO,OAAOA,GAAU,QAC1B,CACA,IAAIE,GAAa,UACjB,SAASC,GAAoBC,EAAe,CAC1C,OAAO,OAAOA,GAAkB,UAAYF,MAAcE,CAC5D,CACA,SAASC,GAAKC,EAAS,CACrB,IAAMC,EAAgBnG,EAAM,KAAKkG,CAAO,EACpCE,EACAC,EACEC,EAActG,EAAM,WAAW,SAAyBuG,EAAOC,EAAK,CACxE,OAAOxG,EAAM,cAAcqG,GAA2EF,EAAe,OAAO,OAAOK,EAAM,CAAE,IAAAA,CAAI,EAAI,CAAC,EAAGD,CAAK,CAAC,CAC/J,CAAC,EACD,OAAAD,EAAY,QAAU,KACfF,IACHA,EAAiBF,EAAQ,EAAE,KAAMhN,IAC/BmN,EAAkBnN,EAAO,QAClBmN,EACR,GAEID,GAEFE,CACT,CACA,SAASG,GAAkBC,EAAOC,EAAW,CAC3C,GAAIA,GAAaD,EACf,OAAIA,EAAM,UAAYC,KAAaD,EAAM,SAChCA,EAAM,SAASC,GAEfA,CAIb,CAGA,SAASC,GAAWC,EAAOC,EAAmB,CAAC,EAAG,CAChD,IAAMC,EAAU/G,EAAO,eAAe6G,CAAK,EAAI7G,EAAO,aAAa6G,EAAO,CAAE,MAAOC,CAAiB,CAAC,EAAI9G,EAAO,cAAc6G,EAAO,CAAE,MAAOC,CAAiB,CAAC,EAChK,OAAIf,GAAoBgB,EAAQ,IAAI,EAC3B/G,EAAO,cAAcA,EAAO,SAAU,CAAE,SAAU,IAAK,EAAG+G,CAAO,EAEnEA,CACT,CAGA,IAAIC,GAAgB,cAAc,KAAM,CACxC,EACIC,GAAgB,cAAc7D,EAAU,CAC1C,YAAYmD,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,MAAQ,CAAE,MAAO,OAAQ,eAAgBA,EAAM,cAAe,CACrE,CACA,OAAO,yBAAyBW,EAAO,CACrC,MAAO,CAAE,MAAAA,CAAM,CACjB,CACA,OAAO,yBAAyBC,EAAWC,EAAW,CACpD,GAAID,EAAU,iBAAmBC,EAAU,eAAgB,CACzD,IAAMC,EAAW,CACf,eAAgBF,EAAU,cAC5B,EACA,OAAIC,EAAU,QACZC,EAAS,MAAQ,QAEZA,CACT,CACA,OAAO,IACT,CACA,QAAS,CACP,GAAI,KAAK,MAAM,QAAU,OACvB,OAAO,KAAK,MAAM,SAEpB,GAAI,EAAE,KAAK,MAAM,iBAAiBL,IAChC,MAAM,KAAK,MAAM,MAEnB,GAAM,CAAE,aAAAM,EAAc,iBAAAR,CAAiB,EAAI,KAAK,MAChD,GAAI,CAACQ,EACH,MAAM,KAAK,MAAM,MAEnB,OAAOV,GAAWU,EAAcR,CAAgB,CAClD,CACF,EAMIS,GAAyB,2BACzBC,GAAsB,IAAI,OAAOD,GAAwB,GAAG,EAGhE,SAASE,GAAeC,EAAShB,EAAO,CAAE,iBAAAiB,EAAkB,UAAAhB,EAAW,cAAAiB,CAAc,EAAI,CAAC,EAAG,CAC3F,GAAM,CAAE,KAAA9D,CAAK,EAAI4C,EACjB,GAAI5C,EACF,GAAI,CACF,IAAM+D,EAAUC,GAAgBpB,EAAO,CAAE,iBAAAiB,EAAkB,UAAAhB,EAAW,cAAAiB,CAAc,CAAC,EACrF/E,EAAO,QAAQ,UAAU,CAAE,QAAA6E,EAAS,UAAAf,EAAW,cAAAiB,CAAc,EAAG,GAAIC,CAAO,CAC7E,MAAE,CACF,CAEJ,CACA,SAASE,GAAuB,CAAE,SAAAC,EAAU,QAAAN,EAAS,qBAAAO,CAAqB,EAAG,CAC3EjI,EAAO,UAAU,IAAM,CACjBgI,GAEJnF,EAAO,QAAQ,aAAa,CAAE,QAAA6E,EAAS,cAAeO,CAAqB,EAAG,EAAE,CAClF,EAAG,CAAC,CAAC,CACP,CACA,SAASC,GAAmBC,EAAmB,CAC7C,IAAMC,EAAkBpI,EAAO,YAAY,CAAC,CAAE,MAAAqI,CAAM,IAAM,CACxD,GAAI,CAAC1C,GAAS0C,CAAK,EACjB,OACF,GAAM,CAAE,QAAAX,EAAS,cAAAE,CAAc,EAAIS,EAC9BxC,GAAS6B,CAAO,GAErBS,EAAkBT,EAAS/B,GAASiC,CAAa,EAAIA,EAAgB,MAAM,CAC7E,EAAG,CAACO,CAAiB,CAAC,EACtBnI,EAAO,UAAU,KACf6C,EAAO,iBAAiB,WAAYuF,CAAe,EAC5C,IAAMvF,EAAO,oBAAoB,WAAYuF,CAAe,GAClE,CAACA,CAAe,CAAC,CACtB,CACA,SAASN,GAAgBpB,EAAO,CAAE,iBAAAiB,EAAkB,UAAAhB,EAAW,cAAAiB,EAAe,SAAUU,EAAY,EAAK,EAAG,CAC1G,IAAIC,EACJ,IAAMC,EAAQ/B,GAAkBC,EAAOC,CAAS,EAC1C8B,EAAcd,GAA8E,IAE9F7D,GADgByE,EAAmD7B,GAAM,QAAU,MAAQ6B,IAAO,OAASA,EAAK,IAEpH,OAAIX,IACF9D,EAAOA,EAAK,QAAQ0D,GAAqB,CAAC3N,EAAI6O,IAAO,CACnD,IAAIC,EACJ,OAAO,QAAQA,EAAMf,EAAcc,MAAS,MAAQC,IAAQ,OAASA,EAAM9O,CAAE,CAC/E,CAAC,GAECyO,IACFxE,EAAOT,GAAoBoF,EAAa3E,CAAI,GAEvC0E,EAAQ,GAAG1E,KAAQ0E,IAAU1E,CACtC,CAGA,IAAI8E,GACAC,GACAC,GACJ,SAASC,GAAiBC,EAAQ,CAChC,GAAIF,KAAeE,EAAQ,CACzBJ,GAAiB,CAAC,EAClB,OAAW,CAAClB,EAAS,CAAE,KAAA5D,CAAK,CAAC,IAAK,OAAO,QAAQkF,CAAM,EACjDlF,IACF8E,GAAe9E,GAAQ,CAAE,KAAAA,EAAM,MAAOmF,GAAUnF,CAAI,EAAG,QAAA4D,CAAQ,GAEnEmB,GAAY,OAAO,OAAOD,EAAc,EACxCC,GAAU,KAAK,CAAC,CAAE,MAAOK,CAAO,EAAG,CAAE,MAAOC,CAAO,IAAMA,EAASD,CAAM,EACxEJ,GAAaE,CACf,CACA,MAAO,CAACJ,GAAgBC,EAAS,CACnC,CACA,SAASO,GAA0BJ,EAAQK,EAAqBC,EAAW,GAAM,CAC/E,GAAM,CAACC,EAAYC,CAAK,EAAIT,GAAiBC,CAAM,EAC7CS,EAAaF,EAAWF,GAC9B,GAAII,EAAY,CACd,IAAMC,EAAQC,GAAUN,EAAqBI,EAAW,IAAI,EAC5D,GAAIC,EAAM,QACR,MAAO,CAAE,QAASD,EAAW,QAAS,cAAeC,EAAM,aAAc,CAC7E,CACA,OAAW,CAAE,KAAA5F,EAAM,QAAA4D,CAAQ,IAAK8B,EAAO,CACrC,IAAME,EAAQC,GAAUN,EAAqBvF,CAAI,EACjD,GAAI4F,EAAM,QACR,MAAO,CAAE,QAAAhC,EAAS,cAAegC,EAAM,aAAc,CACzD,CACA,GAAI,CAACJ,EACH,MAAM,IAAI,MAAM,+BAA+B,EACjD,IAAMM,EAAWL,EAAW,KAC5B,GAAIK,EACF,MAAO,CAAE,QAASA,EAAS,OAAQ,EACrC,IAAMC,EAAa,OAAO,KAAKb,CAAM,EAAE,GACvC,GAAI,CAACa,EACH,MAAM,IAAI,MAAM,yCAAyC,EAC3D,MAAO,CAAE,QAASA,CAAW,CAC/B,CACA,SAASZ,GAAUnF,EAAM,CACvB,IAAMgG,EAAyBhG,EAAK,QAAQ,eAAgB,EAAE,EAC9D,OAAIgG,IAA2B,GACtB,EACFA,EAAuB,MAAM,GAAG,EAAE,MAC3C,CACA,SAASH,GAAU7F,EAAMiG,EAAW,CAClC,IAAMC,EAAoB,CAAC,EAErBC,EADgBC,GAAmBH,CAAS,EACN,QAAQvC,GAAqB,CAAC2C,EAAGvM,KAC3EoM,EAAkB,KAAKpM,CAAI,EACpB,UACR,EACKwM,EAAkB,IAAI,OAAOH,EAAwB,GAAG,EACxDI,EAAUvG,EAAK,MAAMsG,CAAe,EAC1C,GAAI,CAACC,EACH,MAAO,CAAE,QAAS,EAAM,EAC1B,GAAIA,EAAQ,SAAW,EACrB,MAAO,CAAE,QAAS,EAAK,EACzB,IAAMzC,EAAgB,CAAC,EACjB0C,EAAsBD,EAAQ,MAAM,CAAC,EAC3C,QAASnP,EAAI,EAAGA,EAAI8O,EAAkB,OAAQ,EAAE9O,EAAG,CACjD,IAAMkH,EAAO4H,EAAkB9O,GAC/B,GAAIkH,IAAS,OACX,SACF,IAAMwD,EAAQ0E,EAAoBpP,GAC5BqP,EAAgB3C,EAAcxF,GACpC,GAAImI,EAAe,CACjB,GAAIA,IAAkB3E,EACpB,MAAO,CAAE,QAAS,EAAM,EAExB,QAEJ,CACA,GAAIA,IAAU,OACZ,MAAM,IAAI,MAAM,0CAA0C,EAE5DgC,EAAcxF,GAAQwD,CACxB,CACA,MAAO,CAAE,QAAS,GAAM,cAAAgC,CAAc,CACxC,CACA,SAASsC,GAAmBM,EAAQ,CAClC,OAAOA,EAAO,QAAQ,sBAAuB,MAAM,EAAE,QAAQ,KAAM,OAAO,CAC5E,CAGA,IAAIC,GAAM,OACV,SAASC,GAAQhE,EAAO,CACtB,OAAOf,GAASe,CAAK,GAAK+D,MAAO/D,GAASA,EAAM,OAAS,MAC3D,CAMA,SAASiE,GAAWvR,EAAGC,EAAG,CACxB,GAAID,EAAE,UAAYC,EAAE,QAClB,MAAO,GACT,GAAID,EAAE,gBAAkBC,EAAE,cACxB,MAAO,GACT,IAAMuR,EAAiBxR,EAAE,eAAiB,CAAC,EACrCyR,EAAiBxR,EAAE,eAAiB,CAAC,EAC3C,OAAOuR,EAAe,SAAWC,EAAe,QAAU,OAAO,KAAKD,CAAc,EAAE,MAAOxI,GAASwI,EAAexI,KAAUyI,EAAezI,EAAK,CACrJ,CAOA,SAAS0I,GAAoB9B,EAAQ,CACnC,OAAOhJ,EAAO,YAAa0H,GAAYsB,EAAOtB,GAAU,CAACsB,CAAM,CAAC,CAClE,CAGA,IAAI+B,GAAgB/K,EAAO,cAAc,CAAC,CAAC,EAC3C,SAASgL,GAAkB,CAAE,IAAAC,EAAK,SAAAC,CAAS,EAAG,CAC5C,OAAOlL,EAAO,cAAc+K,GAAc,SAAU,CAAE,MAAOE,CAAI,EAAGC,CAAQ,CAC9E,CACA,SAASC,IAAY,CACnB,OAAOnL,EAAO,WAAW+K,EAAa,CACxC,CACA,SAASK,GAAe,CAAE,OAAApC,EAAQ,SAAAkC,CAAS,EAAG,CAC5C,IAAMG,EAAWP,GAAoB9B,CAAM,EAC3C,OAAOhJ,EAAO,cAAc+K,GAAc,SAAU,CAAE,MAAO,CAAE,SAAAM,CAAS,CAAE,EAAGH,CAAQ,CACvF,CAIA,SAASI,IAAkB,CACzB,GAAM,CAACnB,EAAGoB,CAAoB,EAAIvL,EAAO,SAAS,CAAC,EACnD,MAAO,CAACmK,EAAGnK,EAAO,YAAY,IAAMuL,EAAsBhL,GAAMA,EAAI,CAAC,EAAG,CAAC,CAAC,CAAC,CAC7E,CAGA,SAASiL,GAAO,CAAE,iBAAA1E,EAAkB,eAAA2E,EAAgB,qBAAAxD,EAAsB,aAAAyD,EAAc,aAAApE,EAAc,OAAA0B,CAAO,EAAG,CAC9GjB,GAAuB,CACrB,SAAU0D,EACV,QAASC,EACT,qBAAAzD,CACF,CAAC,EACD,IAAM0D,EAAkB3L,EAAO,OAAO0L,CAAY,EAC5CE,EAA0B5L,EAAO,OAAOiI,CAAoB,EAC5D4D,EAAiB7L,EAAO,OAAO,EAC/B8L,EAAsB9L,EAAO,OAAO,EACpC,CAAC+L,EAAKC,CAAW,EAAIV,GAAgB,EACrCnD,EAAoBnI,EAAO,YAAY,CAAC0H,EAASE,IAAkB,CACvE+D,EAAgB,QAAUjE,EAC1BkE,EAAwB,QAAUhE,EAClCoE,EAAY,CACd,EAAG,CAACA,CAAW,CAAC,EAChBhM,EAAO,gBAAgB,IAAM,CAC3B,GAAI,CAAC6L,EAAe,QAClB,OACF,IAAM9E,EAAU,SAAS,eAAe8E,EAAe,OAAO,EACzD9E,GAELkF,GAAsBlF,EAAS+E,EAAoB,OAAO,CAC5D,EAAG,CAACC,CAAG,CAAC,EACR7D,GAAmBC,CAAiB,EACpC,IAAM+D,EAAWlM,EAAO,YAAY,CAAC0H,EAASf,EAAWiB,EAAeuE,IAAiB,CACvF,IAAI5D,EAAI6D,EACR,IAAMC,EAAWrD,EAAOtB,GACxB,GAAIE,EAAe,CACjB,IAAM0E,EAAwB,IAAI,IAC5BxI,GAAQyE,EAAyD8D,GAAS,QAAU,MAAQ9D,IAAO,OAASA,EAAK,IACvH,QAAWmB,KAAS5F,EAAK,SAAS0D,EAAmB,EAAG,CACtD,IAAM+E,EAAe7C,EAAM,GAC3B,GAAI6C,IAAiB,OACnB,MAAM,IAAI,MAAM,kDAAkD,EAEpED,EAAM,IAAIC,CAAY,CACxB,CACA3E,EAAgB,OAAO,YAAY,OAAO,QAAQA,CAAa,EAAE,OAAO,CAAC,CAACxF,CAAI,IAAMkK,EAAM,IAAIlK,CAAI,CAAC,CAAC,CACtG,CACA,IAAMoK,EAAiB/F,GAAkB4F,EAAU1F,CAAS,EAC5D,GAAIgE,GAAW,CAAE,QAASgB,EAAgB,QAAS,cAAeC,EAAwB,OAAQ,EAAG,CAAE,QAAAlE,EAAS,cAAAE,CAAc,CAAC,EAAG,CAChI,KAAMwE,EAAKvJ,EAAO,QAAQ,SAAW,MAAQuJ,IAAO,OAAS,OAASA,EAAG,aAAezF,GAClF,CAAC8E,EAAgB,CACnB,IAAM/E,EAAQsC,EAAOtB,GACjBhB,GACFe,GAAeC,EAAShB,EAAO,CAC7B,iBAAkBA,EAAM,KACxB,cAAAkB,EACA,UAAAjB,CACF,CAAC,CAEL,CAIF,GAFAkF,EAAe,QAAU,OACzBC,EAAoB,QAAU,OAC1BU,EAAgB,CAClB,IAAMzF,EAAU,SAAS,eAAeyF,CAAc,EACtD,GAAI,CAACzF,EACH,OACFkF,GAAsBlF,EAASoF,CAAY,CAC7C,MACEtJ,EAAO,SAAS,EAAG,CAAC,EAEtB,MACF,CACA,GAAKwJ,EAEL,IAAI,CAACZ,EAAgB,CACnB,IAAMgB,EAAezD,EAAO2C,EAAgB,SAC5ClE,GAAeC,EAAS2E,EAAU,CAChC,iBAA8EI,GAAa,KAC3F,UAAA9F,EACA,cAAAiB,CACF,CAAC,CACH,CACI4E,GACFX,EAAe,QAAUW,EACzBV,EAAoB,QAAUK,IAE9BtJ,EAAO,SAAS,EAAG,CAAC,EACpBgJ,EAAe,QAAU,OACzBC,EAAoB,QAAU,QAEhC3D,EAAkBT,EAASE,CAAa,EAC1C,EAAG,CAACoB,EAAQyC,EAAgBtD,CAAiB,CAAC,EACxCkD,EAAWP,GAAoB9B,CAAM,EACrC0D,EAAiBf,EAAgB,QACjCgB,EAAuBf,EAAwB,QAC/CX,EAAMjL,EAAO,QAAQ,KAAO,CAAE,SAAAkM,EAAU,SAAAb,EAAU,eAAAqB,EAAgB,qBAAAC,EAAsB,OAAA3D,CAAO,GAAI,CAACkD,EAAUb,EAAUqB,EAAgBC,EAAsB3D,CAAM,CAAC,EACrK4D,EAAU5D,EAAO2C,EAAgB,SACvC,GAAI,CAACiB,EACH,MAAM,IAAI,MAAM,gCAAgCjB,EAAgB,SAAS,EAE3E,OAAO3L,EAAO,cACZgL,GACA,CAAE,IAAAC,CAAI,EACNjL,EAAO,cAAciH,GAAe,CAAE,aAAAK,EAAc,iBAAAR,EAAkB,eAAgBiF,CAAI,EAAGnF,GAAWgG,EAAQ,KAAM9F,CAAgB,CAAC,CACzI,CACF,CACA,SAASmF,GAAsBlF,EAASoF,EAAc,CACpD,IAAMU,EAAwBV,EAAe,CAAE,SAAU,SAAU,MAAO,QAAS,OAAQ,SAAU,EAAI,OACzGpF,EAAQ,eAAe8F,CAAqB,CAC9C,CAIA,IAAIC,GAAsB9M,EAAO,cAAc,MAAM,EACrD,SAAS+M,IAAkB,CACzB,IAAIxE,EACJ,IAAMyE,EAAS7B,GAAU,EACnB8B,EAAWC,EAAWJ,EAAmB,EACzCK,EAAKF,GAAsDD,EAAO,eACxE,GAAI,CAACG,EACH,OACF,IAAMzG,GAAS6B,EAAKyE,EAAO,YAAc,MAAQzE,IAAO,OAAS,OAASA,EAAG,KAAKyE,EAAQG,CAAE,EAC5F,GAAKzG,EAEL,MAAO,CACL,GAAGA,EACH,GAAAyG,EACA,cAAeF,EAAW,OAASD,EAAO,oBAC5C,CACF,CAOA,SAASI,IAA0B,CACjC,IAAIC,EACJ,OAAQA,EAAKC,GAAgB,KAAO,MAAQD,IAAO,OAAS,OAASA,EAAG,aAC1E,CAGA,SAASE,GAASC,EAAS,CACzB,IAAIH,EACJ,IAAMI,EAAYC,GAAU,EAC5B,GAAKF,EAEL,OAAQH,EAAKI,EAAU,YAAc,MAAQJ,IAAO,OAAS,OAASA,EAAG,KAAKI,EAAWD,CAAO,CAClG,CAOA,SAASG,GAAkBC,EAAUC,EAAU,GAAM,CACnD,GAAM,CAAE,SAAAC,CAAS,EAAIJ,GAAU,EAC/BK,EAAO,UAAU,IAAM,CACrB,GAAI,GAACD,GAAY,CAACD,GAElB,QAAWL,KAAWI,EAAU,CAC9B,IAAMI,EAAQF,EAASN,CAAO,EACoBQ,GAAM,MACtDC,GAAiBD,EAAM,IAAI,CAC/B,CACF,EAAG,CAACJ,EAAUE,EAAUD,CAAO,CAAC,CAClC,CACA,SAASI,GAAiBC,EAAW,CAC/BA,GAAa,CAACH,EAAO,eAAeG,CAAS,GAAKC,GAAoBD,CAAS,GAC5EA,EAAU,QAAQ,CAE3B,CAoBA,SAASE,GAAkBC,EAAIC,EAAe,CAC5C,IAAIC,EACJ,IAAMC,EAAeC,GAAgB,EAC/BC,GAASH,EAAKI,GAASL,CAAa,KAAO,MAAQC,IAAO,OAASA,EAAKC,EAC9E,OAAOI,EAAQ,QAAQ,IAAMC,GAAkBH,EAAOL,CAAE,EAAG,CAACA,EAAIK,CAAK,CAAC,CACxE,CAYA,IAAII,GAAkC,IAAI,IAC1C,SAASC,GAASC,KAAeC,EAAM,CACjCH,GAAgB,IAAIE,CAAU,IAElCF,GAAgB,IAAIE,CAAU,EAC9B,QAAQ,KAAKA,EAAY,GAAGC,CAAI,EAClC,CAGA,SAASC,GAAmBC,EAAaC,EAAgBC,EAAa,CACpE,IAAMC,EAAkBD,EAAc,SAASA,YAAwB,GACjEE,EAAc,wBAAwBJ,gCAA0CC,IAAiBE,KACvGP,GAASQ,CAAW,CACtB,CAGA,IAAIC,GAAY,KAAM,CACpB,aAAc,CACZ,KAAK,UAA4B,IAAI,IACrC,KAAK,aAAe,CAAC,CACvB,CACA,IAAIC,EAAU,CACZ,KAAK,UAAU,IAAIA,CAAQ,EAC3B,IAAIC,EAAW,GACf,MAAO,IAAM,CACPA,IAGJA,EAAW,GACX,KAAK,OAAOD,CAAQ,EACtB,CACF,CACA,OAAOA,EAAU,CACf,KAAK,UAAU,OAAOA,CAAQ,CAChC,CACA,OAAOE,EAAQC,EAAa,CAC1B,GAAIA,EAAa,CACf,IAAMC,EAAoB,KAAK,aAAaD,IAAgBD,EAC5DE,EAAkB,MAAQF,EAAO,MACjC,KAAK,aAAaC,GAAeC,CACnC,MACE,KAAK,cAAcF,CAAM,CAE7B,CACA,kBAAkBC,EAAa,CAC7B,IAAMC,EAAoB,KAAK,aAAaD,GAC5C,cAAO,KAAK,aAAaA,GAClB,KAAK,cAAcC,EAAmBD,CAAW,CAC1D,CACA,cAAcD,EAAQC,EAAa,CACjC,IAAME,EAAkB,CAAC,EACzB,WAAI,IAAI,KAAK,SAAS,EAAE,QAASL,GAAa,CACxC,OAAOA,GAAa,WACtBA,EAASE,EAAQC,CAAW,GAE5BH,EAAS,OAAOE,EAAQC,CAAW,EACnCE,EAAgB,KAAKL,EAAS,MAAM,EAExC,CAAC,EACMK,CACT,CACF,EAGIC,IAA8B,IAAM,CACtC,SAASC,EAAYC,EAAO,CAC1B,OAAAf,GAAmB,eAAgB,QAAS,+DAA+D,EACpGgB,GAAaD,CAAK,EAAIA,EAAQ,IAAIE,GAAgBF,CAAK,CAChE,CACA,OAAAD,EAAY,YAAeI,GAAW,CACpC,IAAMC,EAAgB,KAAK,OAAO,EAC5BC,EAAgC,IAAI,IAK1CF,EAJgB,CAACG,EAAYN,IAAU,CACrCM,EAAW,IAAIN,EAAOI,CAAa,EACnCC,EAAc,IAAIC,CAAU,CAC9B,EACgBF,CAAa,EAC7B,IAAMP,EAAkB,CAAC,EACzBQ,EAAc,QAASL,GAAU,CAC/BH,EAAgB,KAAK,GAAGG,EAAM,kBAAkBI,CAAa,CAAC,CAChE,CAAC,EACDP,EAAgB,QAASU,GAAW,CAClCA,EAAOH,CAAa,CACtB,CAAC,CACH,EACAL,EAAY,UAAY,CAACC,EAAOQ,EAAe,IACtCT,EAAY,IAAIC,EAAOQ,CAAY,EAE5CT,EAAY,IAAM,CAACC,EAAOQ,IACAR,GAAU,KACzBQ,EAELP,GAAaD,CAAK,EACbA,EAAM,IAAI,EAEZA,EAETD,EAAY,eAAkBU,GAAW,CACvC,GAAI,CAACA,EACH,OAAOA,EAET,IAAMC,EAAS,CAAC,EAChB,QAAWC,KAAQF,EAAQ,CACzB,IAAMT,EAAQS,EAAOE,GACjBV,GAAaD,CAAK,EACpBU,EAAOC,GAAQX,EAAM,IAAI,EAEzBU,EAAOC,GAAQX,CAEnB,CACA,OAAOU,CACT,EACOX,CACT,GAAG,EACCa,GAAc,WACdC,GAAuB,oBAC3B,SAASZ,GAAaD,EAAO,CAC3B,OAAOA,IAAU,MAAQ,OAAOA,GAAU,UAAYY,MAAeZ,GAASA,EAAMY,cAAwB,UAAYC,MAAwBb,GAASA,EAAMa,cAAiC,QAClM,CACA,SAASC,GAAwBd,EAAOe,EAAsB,CAC5D,MAAO,CACL,YAAYC,EAAMC,EAAI,CACpB,IAAMC,EAAYF,EAAK,IAAI,EACrBG,EAAUF,EAAG,IAAI,EACjBP,EAASZ,GAAWoB,CAAS,EACnC,OAAQE,GAAc,CACpB,IAAMC,EAAIN,EAAqB,YAAYG,EAAWC,CAAO,EAAEC,CAAS,EACxE,OAAAV,EAAO,IAAIW,CAAC,EACLX,CACT,CACF,EACA,WAAWM,EAAMC,EAAI,CACnB,IAAMI,EAAIL,EAAK,IAAI,EACnB,OAAOD,EAAqB,WAAWM,EAAGJ,EAAG,IAAI,CAAC,CACpD,CACF,CACF,CACA,IAAIf,GAAkB,KAAM,CAC1B,YAAYF,EAAO,CACjB,KAAK,MAAQA,EACb,KAAK,UAAY,IAAIT,EACvB,CACA,OAAO,iBAAiBS,EAAOe,EAAsB,CACnD,GAAId,GAAaD,CAAK,EACpB,OAAOc,GAAwBd,EAAOe,CAAoB,CAE9D,CACA,KAAM,CACJ,OAAO,KAAK,KACd,CACA,IAAIf,EAAOL,EAAa,CACtB,IAAM2B,EAAW,KAAK,MAClBrB,GAAaD,CAAK,IACpBA,EAAQA,EAAM,IAAI,GAEpB,KAAK,MAAQA,EACb,IAAMN,EAAS,CACb,MAAAM,EACA,SAAAsB,CACF,EACA,KAAK,UAAU,OAAO5B,EAAQC,CAAW,CAC3C,CACA,kBAAkBA,EAAa,CAC7B,OAAO,KAAK,UAAU,kBAAkBA,CAAW,CACrD,CACA,SAAS4B,EAAS,CAChB,OAAO,KAAK,UAAU,IAAIA,CAAO,CACnC,CACF,EAGIC,GAAkBH,GAAMA,aAAaI,GAGzC,SAASC,GAAc1B,EAAO2B,EAAU,CACtC,IAAMC,EAAI,KAAK,MAAM,KAAK,IAAID,CAAQ,CAAC,EACjCE,EAAa,KAAK,IAAI,GAAID,CAAC,EACjC,OAAO,KAAK,MAAM5B,EAAQ6B,CAAU,EAAIA,CAC1C,CAQA,SAASC,GAAgBC,EAAOC,EAAQ,CACtC,OAAIA,IAAW,EACN,KAAK,MAAMD,CAAK,GAEzBC,GAAUA,EAAS,EACfA,EAAS,IACXA,EAAS,EAAIA,GAER,KAAK,MAAMD,EAAQC,CAAM,EAAIA,EACtC,CAGA,SAASC,GAAMC,EAAGC,EAAG,CACnB,MAAO,CAAE,EAAAD,EAAG,EAAAC,CAAE,CAChB,EACEC,GAAW,CACXA,EAAO,IAAM,IAAIC,IACRA,EAAK,OACV,CAACC,EAAeC,KACP,CAAE,EAAGD,EAAc,EAAIC,EAAa,EAAG,EAAGD,EAAc,EAAIC,EAAa,CAAE,GAEpF,CAAE,EAAG,EAAG,EAAG,CAAE,CACf,EAEFH,EAAO,SAAW,CAACI,EAAGC,KACb,CAAE,EAAGD,EAAE,EAAIC,EAAE,EAAG,EAAGD,EAAE,EAAIC,EAAE,CAAE,GAEtCL,EAAO,SAAW,CAACI,EAAGC,KACb,CAAE,EAAGD,EAAE,EAAIC,EAAG,EAAGD,EAAE,EAAIC,CAAE,GAElCL,EAAO,OAAS,CAACI,EAAGC,KACX,CAAE,EAAGD,EAAE,EAAIC,EAAG,EAAGD,EAAE,EAAIC,CAAE,GAElCL,EAAO,SAAYM,IACV,CACL,EAAG,KAAK,IAAIA,EAAM,CAAC,EACnB,EAAG,KAAK,IAAIA,EAAM,CAAC,CACrB,GAEFN,EAAO,QAAWM,IACT,CACL,EAAGA,EAAM,EAAI,GACb,EAAGA,EAAM,EAAI,EACf,GAEFN,EAAO,aAAe,CAACM,EAAOV,EAAS,CAAE,EAAG,EAAG,EAAG,CAAE,KAC3C,CACL,EAAGF,GAAgBY,EAAM,EAAGV,EAAO,CAAC,EACpC,EAAGF,GAAgBY,EAAM,EAAGV,EAAO,CAAC,CACtC,GAEFI,EAAO,SAAW,CAACI,EAAGC,IAAM,CAC1B,IAAME,EAAS,KAAK,IAAIH,EAAE,EAAIC,EAAE,CAAC,EAC3BG,EAAS,KAAK,IAAIJ,EAAE,EAAIC,EAAE,CAAC,EACjC,OAAO,KAAK,KAAKE,EAASA,EAASC,EAASA,CAAM,CACpD,EACAR,EAAO,MAAQ,CAACI,EAAGC,IACV,KAAK,MAAMA,EAAE,EAAID,EAAE,EAAGC,EAAE,EAAID,EAAE,CAAC,EAAI,IAAM,KAAK,GAAK,GAE5DJ,EAAO,QAAU,CAACI,EAAGC,IACZD,EAAE,IAAMC,EAAE,GAAKD,EAAE,IAAMC,EAAE,EAElCL,EAAO,mBAAqB,IAAM,CAChC,IAAIS,EACJ,OAAQd,GAAU,CACZ,OAAOc,GAAc,WACvBA,EAAYd,GAEd,IAAMe,EAAOD,EAAYd,EACnBgB,EAAU,KAAK,IAAID,CAAI,EAAI,IAC3BE,EAAS,KAAK,MAAMD,EAAU,GAAG,EACvC,OAAID,EAAO,MACTf,GAASiB,EAAS,KAEhBF,EAAO,MACTf,GAASiB,EAAS,KAEpBH,EAAYd,EACLA,CACT,CACF,EACA,SAASkB,EAAOT,EAAGC,EAAG,CACpB,MAAO,CACL,GAAID,EAAE,EAAIC,EAAE,GAAK,EACjB,GAAID,EAAE,EAAIC,EAAE,GAAK,CACnB,CACF,CACAL,EAAO,OAASa,CAClB,GAAGhB,KAAUA,GAAQ,CAAC,EAAE,EAGxB,IAAIiB,GAAiB,CACnB,MAAO,OACP,SAAU,CACZ,EACA,SAASC,GAAsBC,EAAO,CACpC,OAAQA,EAAO,CACb,IAAK,SACH,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,EACpB,IAAK,OACH,MAAO,CAAC,IAAM,GAAK,IAAM,CAAC,EAC5B,IAAK,UACH,MAAO,CAAC,IAAM,EAAG,EAAG,CAAC,EACvB,IAAK,WACH,MAAO,CAAC,EAAG,EAAG,IAAM,CAAC,EACvB,IAAK,cACH,MAAO,CAAC,IAAM,EAAG,IAAM,CAAC,CAC5B,CACF,CACA,IAAIC,GAAiB,KAAM,CACzB,YAAYC,EAASC,EAAe,CAClC,KAAK,cAAgBA,EACrB,KAAK,SAAW,EAChB,KAAK,KAAQC,GAAU,CACrB,GAAM,CAAE,SAAAC,CAAS,EAAI,KAAK,QAC1B,KAAK,UAAYD,EAAQC,EACzB,IAAM1B,EAAQ,KAAK,WAAW,MAAM,KAAK,SAAU,KAAK,aAAa0B,CAAQ,CAAC,EAC9E,YAAK,QAAU,KAAK,aAAa1B,CAAK,EAC/B,KAAK,OACd,EACA,KAAK,QAAU,CAAE,GAAGmB,GAAgB,GAAGI,CAAQ,EAC/C,IAAII,EACA,OAAO,KAAK,QAAQ,OAAU,SAChCA,EAAgBP,GAAsB,KAAK,QAAQ,KAAK,EAExDO,EAAgB,KAAK,QAAQ,MAE/B,GAAM,CAACC,EAAKC,EAAKC,EAAKC,CAAG,EAAIJ,EAC7B,KAAK,WAAa,IAAIK,GAAW9B,GAAM0B,EAAKC,CAAG,EAAG3B,GAAM4B,EAAKC,CAAG,CAAC,CACnE,CACA,QAAQ/B,EAAO,CACb,KAAK,QAAUA,EACf,KAAK,mBAAmB,CAC1B,CACA,MAAMA,EAAO,CACX,KAAK,YAAcA,EACnB,KAAK,mBAAmB,CAC1B,CACA,SAAU,CACR,OAAO,KAAK,eAAiB,MAC/B,CACA,oBAAqB,CACf,KAAK,UAAY,QAAU,KAAK,cAAgB,SAGpD,KAAK,aAAe,KAAK,cAAc,YAAY,KAAK,QAAS,KAAK,WAAW,EACnF,CACA,YAAa,CACX,OAAO,KAAK,UAAY,CAC1B,CACA,aAAa0B,EAAU,CACrB,MAAO,IAAK,IAAMA,EACpB,CACF,EACIM,GAAa,KAAM,CACrB,YAAYC,EAAQC,EAAQ,CAC1B,KAAK,EAAIhC,GAAM,SAAS+B,EAAQ,CAAC,EACjC,KAAK,EAAI/B,GAAM,SAASA,GAAM,SAASA,GAAM,SAASgC,EAAQD,CAAM,EAAG,CAAC,EAAG,KAAK,CAAC,EACjF,KAAK,EAAI/B,GAAM,SAASA,GAAM,SAASA,GAAM,EAAG,CAAC,EAAG,KAAK,CAAC,EAAG,KAAK,CAAC,CACrE,CACA,MAAMC,EAAGgC,EAAU,CACjB,OAAO,KAAK,QAAQ,KAAK,UAAUhC,EAAGgC,CAAQ,CAAC,CACjD,CACA,QAAQC,EAAG,CACT,QAAS,KAAK,EAAE,EAAIA,EAAI,KAAK,EAAE,GAAKA,EAAI,KAAK,EAAE,GAAKA,CACtD,CACA,QAAQA,EAAG,CACT,QAAS,KAAK,EAAE,EAAIA,EAAI,KAAK,EAAE,GAAKA,EAAI,KAAK,EAAE,GAAKA,CACtD,CACA,kBAAkBA,EAAG,CACnB,OAAQ,EAAI,KAAK,EAAE,EAAIA,EAAI,EAAI,KAAK,EAAE,GAAKA,EAAI,KAAK,EAAE,CACxD,CACA,UAAUjC,EAAGgC,EAAU,CACrB,IAAIE,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAExB,IADAH,EAAKpC,EACAuC,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAG,CAEtB,GADAF,EAAK,KAAK,QAAQD,CAAE,EAAIpC,EACpB,KAAK,IAAIqC,CAAE,EAAIL,EACjB,OAAOI,EAET,GADAE,EAAK,KAAK,kBAAkBF,CAAE,EAC1B,KAAK,IAAIE,CAAE,EAAIN,EACjB,MACFI,EAAKA,EAAKC,EAAKC,CACjB,CAIA,GAHAJ,EAAK,EACLC,EAAK,EACLC,EAAKpC,EACDoC,EAAKF,EACP,OAAOA,EACT,GAAIE,EAAKD,EACP,OAAOA,EACT,KAAOD,EAAKC,GAAI,CAEd,GADAE,EAAK,KAAK,QAAQD,CAAE,EAChB,KAAK,IAAIC,EAAKrC,CAAC,EAAIgC,EACrB,OAAOI,EACLpC,EAAIqC,EACNH,EAAKE,EAELD,EAAKC,EACPA,GAAMD,EAAKD,GAAM,GAAMA,CACzB,CACA,OAAOE,CACT,CACF,EAGII,GAAa,KAAM,CACrB,YAAYC,EAAsB,CAChC,KAAK,qBAAuBA,CAC9B,CACA,eAAeC,EAAOC,EAAI,CACxB,IAAMrC,EAAI,KAAK,cAAcoC,CAAK,EAC5BnC,EAAI,KAAK,4BAA4BmC,EAAOC,EAAK,GAAKrC,CAAC,EACvDsC,EAAI,KAAK,4BAA4BF,EAAOC,EAAK,GAAKpC,CAAC,EACvDsC,EAAI,KAAK,4BAA4BH,EAAOC,EAAIC,CAAC,EACjDE,EAAO,EAAI,GAAKxC,EAAE,GAAK,GAAKC,EAAE,GAAKqC,EAAE,IAAMC,EAAE,IAC7CE,EAAO,EAAI,GAAKzC,EAAE,GAAK,GAAKC,EAAE,GAAKqC,EAAE,IAAMC,EAAE,IACnD,OAAAH,EAAM,EAAIA,EAAM,EAAII,EAAOH,EAC3BD,EAAM,EAAIA,EAAM,EAAIK,EAAOJ,EACpBD,CACT,CACA,cAAcM,EAAe,CAC3B,IAAMC,EAAK,KAAK,qBAAqBD,CAAa,EAClD,MAAO,CAAE,GAAIA,EAAc,EAAG,GAAAC,CAAG,CACnC,CACA,4BAA4BD,EAAeL,EAAIO,EAAY,CACzD,IAAMR,EAAQ,CACZ,EAAGM,EAAc,EAAIE,EAAW,GAAKP,EACrC,EAAGK,EAAc,EAAIE,EAAW,GAAKP,CACvC,EAKA,MAJe,CACb,GAAID,EAAM,EACV,GAAI,KAAK,qBAAqBA,CAAK,CACrC,CAEF,CACF,EAyCA,SAASS,GAAiBC,EAAO,CAC/B,OAAO,OAAOA,GAAU,YAAcA,EAAM,kBAAoB,OAAOA,EAAM,kBAAqB,UACpG,CACA,IAAIC,GAAgB,CAClB,gBAAiB,CAACC,EAAMC,KAClBD,IAAS,SACXA,EAAOC,GAELA,IAAO,SACTA,EAAKD,GAEA,CAACA,EAAMC,CAAE,EAEpB,EAGIC,GAAsB,CACxB,YAAYF,EAAMC,EAAI,CAEpB,CAACD,EAAMC,CAAE,EAAIF,GAAc,gBAAgBC,EAAMC,CAAE,EACnD,IAAME,EAAK,CAACH,EACNI,EAAKH,EAAKE,EAChB,OAAQE,GACQF,EAAKC,EAAKC,CAG5B,EACA,WAAWL,EAAMC,EAAI,CACnB,OAAOA,EAAKD,CACd,CACF,EAGIM,GAAU,KACVC,GAAc,IACdC,GAAc,GACdC,GAAa,OAAO,UACpBC,GAAa,EACjB,SAASC,GAAgBC,EAAMC,EAAYC,EAAcC,EAAQ,GAAI,CACnE,IAAIC,EAASF,EACb,QAASG,EAAI,EAAGC,EAAMH,EAAOI,EAAM,GAAKD,EAAKC,EAAMF,EAAIC,EAAMD,EAAIC,EAAKC,EAAMF,IAAMA,IAChFD,EAASA,EAASJ,EAAKI,CAAM,EAAIH,EAAWG,CAAM,EAEpD,OAAOA,CACT,CACA,SAASI,GAAiBC,EAAmBC,EAAc,CACzD,OAAOD,EAAoB,KAAK,KAAK,EAAI,KAAK,IAAIC,EAAc,CAAC,CAAC,CACpE,CACA,IAAIC,GAA4B,CAC9B,oBAAqB,CAACC,EAASC,EAAUC,EAAO,IACvCD,GAAY,EAAI,KAAK,KAAKC,EAAOF,CAAO,GAEjD,gBAAiB,CAACA,EAASC,EAAUE,EAAW,EAAGD,EAAO,IAAM,CAC9D,IAAIE,EACEN,EAAeC,GAA0B,oBAAoBC,EAASC,CAAQ,EAC9EJ,EAAoB,KAAK,KAAKG,EAAUE,CAAI,EAClD,GAAIJ,EAAe,EAAG,CACpB,IAAMO,EAAI,KAAK,KAAK,EAAI,KAAK,IAAIP,EAAc,CAAC,CAAC,EAC3CQ,EAAIH,GAAYE,EAAIR,GACpB,EAAIC,EAAeO,EACnBE,EAAI,GAAGD,EAAI,GAAKxB,IACtB,GAAIyB,GAAK,EACP,OAAO,KAETH,EAAW,KAAK,IAAIG,CAAC,GAAKT,EAAeD,EAC3C,KACE,QAAO,KAET,OAAOO,CACT,EACA,2BAA4B,CAACN,EAAcM,EAAUD,EAAW,EAAGD,EAAO,IAAM,CAC9E,IAAIb,EAAYmB,EAChBV,EAAe,KAAK,IAAI,KAAK,IAAIA,EAAcZ,EAAU,EAAGD,EAAU,EACtEmB,EAAW,KAAK,IAAI,KAAK,IAAIA,EAAUpB,EAAW,EAAGD,EAAW,EAC5De,EAAe,GACjBU,EAAW,SAASC,EAA2B,CAC7C,IAAMC,EAAmBD,EAA4BX,EAC/Ca,EAAsBD,EAAmBN,EACzCC,EAAIK,EAAmBP,EACvBG,EAAIV,GAAiBa,EAA2BX,CAAY,EAC5Dc,EAAI,KAAK,IAAI,CAACD,CAAmB,EACvC,OAAO7B,GAAUuB,EAAIC,EAAIM,CAC3B,EACAvB,EAAa,SAASwB,EAA6B,CAEjD,IAAMF,EADmBE,EAA8Bf,EACRM,EACzC,EAAIO,EAAsBR,EAAWA,EACrCW,EAAI,KAAK,IAAIhB,EAAc,CAAC,EAAI,KAAK,IAAIe,EAA6B,CAAC,EAAIT,EAC3EW,EAAI,KAAK,IAAI,CAACJ,CAAmB,EACjC,EAAIf,GAAiB,KAAK,IAAIiB,EAA6B,CAAC,EAAGf,CAAY,EAEjF,OADe,CAACU,EAASK,CAA2B,EAAI/B,GAAU,EAAI,GAAK,KACzD,EAAIgC,GAAKC,GAAK,CAClC,IAEAP,EAAW,SAASC,EAA2B,CAC7C,IAAMJ,EAAI,KAAK,IAAI,CAACI,EAA4BL,CAAQ,EAClDE,GAAKG,EAA4BN,GAAYC,EAAW,EAC9D,MAAO,CAACtB,GAAUuB,EAAIC,CACxB,EACAjB,EAAa,SAASwB,EAA6B,CACjD,IAAMR,EAAI,KAAK,IAAI,CAACQ,EAA8BT,CAAQ,EACpDE,GAAKH,EAAWU,GAA+B,KAAK,IAAIT,EAAU,CAAC,EACzE,OAAOC,EAAIC,CACb,GAEF,IAAMd,EAAS,CACb,QAAS,IACT,SAAU,GACV,SAAAW,CACF,EACMb,EAAe,EAAIc,EACnBP,EAAoBV,GAAgBqB,EAAUnB,EAAYC,CAAY,EAC5E,OAAK,MAAMO,CAAiB,IAC1BL,EAAO,QAAU,KAAK,IAAIK,EAAmB,CAAC,EAAIK,EAClDV,EAAO,SAAWM,EAAe,EAAI,KAAK,KAAKI,EAAOV,EAAO,OAAO,GAE/DA,CACT,CACF,EAGIwB,GAAgC,CAClC,QAAS,IACT,SAAU,GACV,UAAW,EAAI,IACf,SAAU,CACZ,EACIC,GAAgC,CAClC,aAAc,EACd,SAAU,EACV,SAAU,EACV,KAAM,CACR,EACA,SAASC,GAA+BC,EAAS,CAC/C,OAAKA,EAGE,OAAOA,EAAQ,cAAiB,UAAY,OAAOA,EAAQ,UAAa,UAAY,OAAOA,EAAQ,MAAS,SAF1G,EAGX,CACA,IAAIC,GAAiB,KAAM,CACzB,YAAYD,EAASE,EAAe,CAClC,KAAK,cAAgBA,EACrB,IAAIC,EACJ,GAAIJ,GAA+BC,CAAO,EAAG,CAC3C,IAAMI,EAAS,CAAE,GAAGN,GAA+B,GAAGE,CAAQ,EAC9DG,EAAOvB,GAA0B,2BAC/BwB,EAAO,aACPA,EAAO,SACPA,EAAO,SACPA,EAAO,IACT,CACF,MACED,EAAOH,EAET,KAAK,QAAU,CAAE,GAAGH,GAA+B,GAAGM,CAAK,EAC3D,KAAK,MAAQ,CACX,EAAG,EACH,EAAG,KAAK,QAAQ,QAClB,EACA,KAAK,WAAa,IAAIE,GAAYC,GAAU,CAAC,KAAK,QAAQ,QAAUA,EAAM,EAAI,KAAK,QAAQ,SAAWA,EAAM,CAAC,CAC/G,CACA,SAAU,CACR,OAAO,KAAK,eAAiB,QAAU,KAAK,aAAe,MAC7D,CACA,KAAKC,EAAO,CACV,YAAK,MAAQ,KAAK,WAAW,eAAe,KAAK,MAAOA,CAAK,EAC/C,KAAK,aAAa,KAAK,SAAS,CAAC,CAEjD,CACA,YAAa,CACX,IAAMC,EAAmB,KAAK,IAAI,KAAK,MAAM,CAAC,EAAI,KAAK,QAAQ,UACzDC,EAAmB,KAAK,IAAI,KAAK,MAAM,CAAC,EAAI,KAAK,QAAQ,UAC/D,OAAOD,GAAoBC,CAC7B,CACA,QAAQtD,EAAO,CACb,KAAK,QAAUA,EACf,KAAK,mBAAmB,CAC1B,CACA,YAAY6B,EAAU,CACpB,KAAK,MAAM,EAAIA,CACjB,CACA,UAAW,CACT,MAAO,GAAI,KAAK,MAAM,EAAI,KAAK,UACjC,CACA,MAAM7B,EAAO,CACX,KAAK,YAAcA,EACnB,KAAK,WAAa,KAAK,cAAc,WAAW,KAAK,YAAa,KAAK,OAAO,EAC9E,KAAK,MAAM,EAAI,KAAK,WACpB,KAAK,mBAAmB,CAC1B,CACA,UAAW,CACT,OAAO,KAAK,KACd,CACA,oBAAqB,CACf,KAAK,UAAY,QAAU,KAAK,cAAgB,SAGpD,KAAK,aAAe,KAAK,cAAc,YAAY,KAAK,QAAS,KAAK,WAAW,EACnF,CACF,EA6HA,IAAIuD,GAAeC,GAAQC,GAAc,EAAG,CAAC,EAGzCC,GAAW,CACb,UAAW,SACX,aAAc,SACd,KAAM,MACN,WAAY,SACZ,MAAO,SACP,MAAO,SACP,OAAQ,SACR,MAAO,MACP,eAAgB,SAChB,KAAM,MACN,WAAY,SACZ,MAAO,SACP,UAAW,SACX,YAAa,SACb,UAAW,SACX,WAAY,SACZ,UAAW,SACX,MAAO,SACP,eAAgB,SAChB,SAAU,SACV,QAAS,SACT,KAAM,MACN,SAAU,SACV,SAAU,SACV,cAAe,SACf,SAAU,SACV,UAAW,SACX,SAAU,SACV,UAAW,SACX,YAAa,SACb,eAAgB,SAChB,WAAY,SACZ,WAAY,SACZ,QAAS,SACT,WAAY,SACZ,aAAc,SACd,cAAe,SACf,cAAe,SACf,cAAe,SACf,cAAe,SACf,WAAY,SACZ,SAAU,SACV,YAAa,SACb,QAAS,SACT,QAAS,SACT,WAAY,SACZ,UAAW,SACX,YAAa,SACb,YAAa,SACb,QAAS,MACT,UAAW,SACX,WAAY,SACZ,KAAM,SACN,UAAW,SACX,KAAM,SACN,MAAO,SACP,YAAa,SACb,KAAM,SACN,SAAU,SACV,QAAS,SACT,UAAW,SACX,OAAQ,SACR,MAAO,SACP,MAAO,SACP,SAAU,SACV,cAAe,SACf,UAAW,SACX,aAAc,SACd,UAAW,SACX,WAAY,SACZ,UAAW,SACX,qBAAsB,SACtB,UAAW,SACX,WAAY,SACZ,UAAW,SACX,UAAW,SACX,YAAa,SACb,cAAe,SACf,aAAc,SACd,eAAgB,MAChB,eAAgB,MAChB,eAAgB,SAChB,YAAa,SACb,KAAM,MACN,UAAW,SACX,MAAO,SACP,QAAS,MACT,OAAQ,SACR,iBAAkB,SAClB,WAAY,SACZ,aAAc,SACd,aAAc,SACd,eAAgB,SAChB,gBAAiB,SACjB,kBAAmB,SACnB,gBAAiB,SACjB,gBAAiB,SACjB,aAAc,SACd,UAAW,SACX,UAAW,SACX,SAAU,SACV,YAAa,SACb,KAAM,SACN,QAAS,SACT,MAAO,SACP,UAAW,SACX,OAAQ,SACR,UAAW,SACX,OAAQ,SACR,cAAe,SACf,UAAW,SACX,cAAe,SACf,cAAe,SACf,WAAY,SACZ,UAAW,SACX,KAAM,SACN,KAAM,SACN,KAAM,SACN,WAAY,SACZ,OAAQ,SACR,cAAe,SACf,IAAK,MACL,UAAW,SACX,UAAW,SACX,YAAa,SACb,OAAQ,SACR,WAAY,SACZ,SAAU,SACV,SAAU,SACV,OAAQ,SACR,OAAQ,SACR,QAAS,SACT,UAAW,SACX,UAAW,SACX,UAAW,SACX,KAAM,SACN,YAAa,SACb,UAAW,SACX,IAAK,SACL,KAAM,SACN,QAAS,SACT,OAAQ,SACR,UAAW,SACX,OAAQ,SACR,MAAO,SACP,MAAO,MACP,WAAY,SACZ,OAAQ,MACR,YAAa,QACf,EAqBA,SAASC,GAASC,EAAOC,EAAQC,EAAQC,EAAQ,GAAO,CACtD,GAAM,CAACC,EAASC,CAAQ,EAAIJ,EACtB,CAACK,EAAOC,CAAM,EAAIL,EAClBM,EAAYH,EAAWD,EAC7B,GAAII,IAAc,EAChB,OAAQD,EAASD,GAAS,EAC5B,IAAMG,EAAUF,EAASD,EACzB,GAAIG,IAAY,EACd,OAAOH,EACT,IAAMI,EAASJ,GAASN,EAAQI,GAAWI,EAAYC,EACvD,GAAIN,IAAU,GACZ,GAAIG,EAAQC,EAAQ,CAClB,GAAIG,EAASJ,EACX,OAAOA,EAET,GAAII,EAASH,EACX,OAAOA,CAEX,KAAO,CACL,GAAIG,EAASJ,EACX,OAAOA,EAET,GAAII,EAASH,EACX,OAAOA,CAEX,CAEF,OAAOG,CACT,CACA,SAASC,GAAUX,EAAO,CACxB,MAAO,CAAC,MAAMA,CAAK,GAAK,SAASA,CAAK,CACxC,CACA,SAASY,GAAkBC,EAAK,CAC9B,IAAMC,EAASC,GAAiBF,CAAG,EACnC,OAAIC,IAAW,OACTD,EAAI,SAAS,GAAG,EACXC,EAAS,IAEXA,EAEF,CACT,CACA,SAASC,GAAiBC,EAAO,CAC/B,IAAMC,EAAQD,EAAM,MAAM,WAAW,EACrC,OAAOC,EAAQ,OAAOA,EAAM,EAAE,EAAI,MACpC,CAGA,GAAI,CAAE,WAAAC,GAAY,WAAYC,EAAmB,EAAIC,GAAa,QAClE,SAASC,GAAWC,EAAGC,EAAGC,EAAG,CAC3B,GAAM,CAACC,EAAGC,EAAGC,CAAC,EAAIR,GAAmB,CAACG,EAAI,IAAKC,EAAI,IAAKC,EAAI,GAAG,CAAC,EAChE,MAAO,CAAE,EAAAC,EAAG,EAAAC,EAAG,EAAAC,CAAE,CACnB,CACA,SAASC,GAAaH,EAAGC,EAAGC,EAAGE,EAAI,EAAG,CACpC,IAAMC,EAAMZ,GAAW,CAACO,EAAGC,EAAGC,CAAC,CAAC,EAChC,MAAO,CACL,EAAGG,EAAI,GAAK,IACZ,EAAGA,EAAI,GAAK,IACZ,EAAGA,EAAI,GAAK,IACZ,EAAAD,CACF,CACF,CACA,SAASE,GAASN,EAAGC,EAAGM,EAAGH,EAAG,CAC5B,IAAMI,EAAK,KAAK,MAAMR,CAAC,EACjBS,EAAK,KAAK,MAAMR,EAAI,GAAG,EACvBS,EAAK,KAAK,MAAMH,EAAI,GAAG,EAC7B,OAAOH,IAAM,QAAUA,IAAM,EAAI,OAASI,EAAK,KAAOC,EAAK,MAAQC,EAAK,KAAO,QAAUF,EAAK,KAAOC,EAAK,MAAQC,EAAK,MAAQN,EAAI,GACrI,CACA,SAASO,GAASd,EAAGC,EAAGC,EAAG,CACzB,MAAO,CACL,EAAGb,GAAUW,CAAC,EAAIe,GAAQf,EAAG,GAAG,EAAI,IAAM,EAC1C,EAAGX,GAAUY,CAAC,EAAIc,GAAQd,EAAG,GAAG,EAAI,IAAM,EAC1C,EAAGZ,GAAUa,CAAC,EAAIa,GAAQb,EAAG,GAAG,EAAI,IAAM,CAC5C,CACF,CACA,SAASc,GAAShB,EAAGC,EAAGC,EAAGe,EAAY,CACrC,IAAMC,EAAO,CACXC,GAAK,KAAK,MAAMnB,CAAC,EAAE,SAAS,EAAE,CAAC,EAC/BmB,GAAK,KAAK,MAAMlB,CAAC,EAAE,SAAS,EAAE,CAAC,EAC/BkB,GAAK,KAAK,MAAMjB,CAAC,EAAE,SAAS,EAAE,CAAC,CACjC,EACA,OAAIe,GAAcC,EAAK,GAAG,OAAO,CAAC,IAAMA,EAAK,GAAG,OAAO,CAAC,GAAKA,EAAK,GAAG,OAAO,CAAC,IAAMA,EAAK,GAAG,OAAO,CAAC,GAAKA,EAAK,GAAG,OAAO,CAAC,IAAMA,EAAK,GAAG,OAAO,CAAC,EACrIA,EAAK,GAAG,OAAO,CAAC,EAAIA,EAAK,GAAG,OAAO,CAAC,EAAIA,EAAK,GAAG,OAAO,CAAC,EAE1DA,EAAK,KAAK,EAAE,CACrB,CACA,SAASE,GAASpB,EAAGC,EAAGC,EAAG,CACzB,IAAIG,EACAD,EACEiB,EAAKN,GAAQf,EAAG,GAAG,EACnBsB,EAAKP,GAAQd,EAAG,GAAG,EACnBsB,EAAKR,GAAQb,EAAG,GAAG,EACnBsB,EAAM,KAAK,IAAIH,EAAIC,EAAIC,CAAE,EACzBE,EAAM,KAAK,IAAIJ,EAAIC,EAAIC,CAAE,EAC3BpB,EAAIC,EAAIC,GAAKmB,EAAMC,GAAO,EAC9B,GAAID,IAAQC,EACVtB,EAAIC,EAAI,MACH,CACL,IAAMsB,EAAIF,EAAMC,EAEhB,OADArB,EAAIC,EAAI,GAAMqB,GAAK,EAAIF,EAAMC,GAAOC,GAAKF,EAAMC,GACvCD,EAAK,CACX,KAAKH,EACHlB,GAAKmB,EAAKC,GAAMG,GAAKJ,EAAKC,EAAK,EAAI,GACnC,MACF,KAAKD,EACHnB,GAAKoB,EAAKF,GAAMK,EAAI,EACpB,MACF,KAAKH,EACHpB,GAAKkB,EAAKC,GAAMI,EAAI,EACpB,KACJ,CACAvB,GAAK,CACP,CACA,MAAO,CAAE,EAAGA,EAAI,IAAK,EAAAC,EAAG,EAAAC,CAAE,CAC5B,CACA,SAASsB,GAAQC,EAAGC,EAAGC,EAAG,CAOxB,OANIA,EAAI,IACNA,GAAK,GAEHA,EAAI,IACNA,GAAK,GAEHA,EAAI,EAAI,EACHF,GAAKC,EAAID,GAAK,EAAIE,EAEvBA,EAAI,EAAI,EACHD,EAELC,EAAI,EAAI,EACHF,GAAKC,EAAID,IAAM,EAAI,EAAIE,GAAK,EAE9BF,CACT,CACA,SAASG,GAAS5B,EAAGC,EAAGC,EAAG,CACzB,IAAIL,EACAC,EACAC,EAIJ,GAHAC,EAAIY,GAAQZ,EAAG,GAAG,EAClBC,EAAIW,GAAQX,EAAI,IAAK,GAAG,EACxBC,EAAIU,GAAQV,EAAI,IAAK,GAAG,EACpBD,IAAM,EACRJ,EAAIC,EAAIC,EAAIG,MACP,CACL,IAAMwB,EAAIxB,EAAI,GAAMA,GAAK,EAAID,GAAKC,EAAID,EAAIC,EAAID,EACxCwB,EAAI,EAAIvB,EAAIwB,EAClB7B,EAAI2B,GAAQC,EAAGC,EAAG1B,EAAI,EAAI,CAAC,EAC3BF,EAAI0B,GAAQC,EAAGC,EAAG1B,CAAC,EACnBD,EAAIyB,GAAQC,EAAGC,EAAG1B,EAAI,EAAI,CAAC,CAC7B,CACA,MAAO,CAAE,EAAGH,EAAI,IAAK,EAAGC,EAAI,IAAK,EAAGC,EAAI,GAAI,CAC9C,CACA,SAAS8B,GAAShC,EAAGC,EAAGC,EAAG,CACzBF,EAAIe,GAAQf,EAAG,GAAG,EAClBC,EAAIc,GAAQd,EAAG,GAAG,EAClBC,EAAIa,GAAQb,EAAG,GAAG,EAClB,IAAMsB,EAAM,KAAK,IAAIxB,EAAGC,EAAGC,CAAC,EACtBuB,EAAM,KAAK,IAAIzB,EAAGC,EAAGC,CAAC,EACtBwB,EAAIF,EAAMC,EACZtB,EACE,EAAIqB,IAAQ,EAAI,EAAIE,EAAIF,EACxBd,EAAIc,EACV,GAAIA,IAAQC,EACVtB,EAAI,MACC,CACL,OAAQqB,EAAK,CACX,KAAKxB,EACHG,GAAKF,EAAIC,GAAKwB,GAAKzB,EAAIC,EAAI,EAAI,GAC/B,MACF,KAAKD,EACHE,GAAKD,EAAIF,GAAK0B,EAAI,EAClB,MACF,KAAKxB,EACHC,GAAKH,EAAIC,GAAKyB,EAAI,EAClB,KACJ,CACAvB,GAAK,CACP,CACA,MAAO,CAAE,EAAAA,EAAG,EAAG,EAAAO,CAAE,CACnB,CACA,SAASuB,GAAS9B,EAAGC,EAAGM,EAAG,CACzBP,EAAIY,GAAQZ,EAAG,GAAG,EAAI,EACtBC,EAAIW,GAAQX,EAAI,IAAK,GAAG,EACxBM,EAAIK,GAAQL,EAAI,IAAK,GAAG,EACxB,IAAMwB,EAAI,KAAK,MAAM/B,CAAC,EAChBgC,EAAIhC,EAAI+B,EACRN,EAAIlB,GAAK,EAAIN,GACbyB,EAAInB,GAAK,EAAIyB,EAAI/B,GACjB0B,EAAIpB,GAAK,GAAK,EAAIyB,GAAK/B,GACvBgC,EAAMF,EAAI,EACVlC,EAAI,CAACU,EAAGmB,EAAGD,EAAGA,EAAGE,EAAGpB,CAAC,EAAE0B,GACvBnC,EAAI,CAAC6B,EAAGpB,EAAGA,EAAGmB,EAAGD,EAAGA,CAAC,EAAEQ,GACvBlC,EAAI,CAAC0B,EAAGA,EAAGE,EAAGpB,EAAGA,EAAGmB,CAAC,EAAEO,GAC7B,MAAO,CAAE,EAAGpC,EAAI,IAAK,EAAGC,EAAI,IAAK,EAAGC,EAAI,GAAI,CAC9C,CACA,SAASa,GAAQsB,EAAGb,EAAK,CACvB,IAAIc,EACAC,EAKJ,GAJI,OAAOf,GAAQ,SACjBc,EAAO,WAAWd,CAAG,EAErBc,EAAOd,EACL,OAAOa,GAAM,SAAU,CACrBG,GAAeH,CAAC,IAClBA,EAAI,QAEN,IAAMI,EAAiBC,GAAaL,CAAC,EACrCE,EAAK,KAAK,IAAID,EAAM,KAAK,IAAI,EAAG,WAAWD,CAAC,CAAC,CAAC,EAC1CI,IACFF,EAAK,KAAK,MAAMA,EAAKD,CAAI,EAAI,IAEjC,MACEC,EAAKF,EAEP,OAAI,KAAK,IAAIE,EAAKD,CAAI,EAAI,KACjB,EAEFC,EAAKD,EAAOA,CACrB,CACA,SAASE,GAAeH,EAAG,CACzB,OAAO,OAAOA,GAAM,UAAYA,EAAE,SAAS,GAAG,GAAK,WAAWA,CAAC,IAAM,CACvE,CACA,SAASK,GAAaL,EAAG,CACvB,OAAO,OAAOA,GAAM,UAAYA,EAAE,SAAS,GAAG,CAChD,CACA,SAASlB,GAAKwB,EAAM,CAClB,OAAIA,EAAK,SAAW,EACX,IAAMA,EAEN,GAAKA,CAEhB,CACA,IAAIC,GAAW,UAAW,CACxB,IAAMC,EAAa,gBAEbC,EAAU,MADE,uBACkB,QAAUD,EAAa,IACrDE,EAAmB,cAAgBD,EAAU,aAAeA,EAAU,aAAeA,EAAU,YAC/FE,EAAmB,cAAgBF,EAAU,aAAeA,EAAU,aAAeA,EAAU,aAAeA,EAAU,YAC9H,MAAO,CACL,IAAK,IAAI,OAAO,MAAQC,CAAgB,EACxC,KAAM,IAAI,OAAO,OAASC,CAAgB,EAC1C,IAAK,IAAI,OAAO,MAAQD,CAAgB,EACxC,KAAM,IAAI,OAAO,OAASC,CAAgB,EAC1C,IAAK,IAAI,OAAO,MAAQD,CAAgB,EACxC,KAAM,IAAI,OAAO,OAASC,CAAgB,EAC1C,KAAM,qDACN,KAAM,qDACN,KAAM,uEACN,KAAM,sEACR,CACF,EAAE,EACF,SAASC,GAAeC,EAAY,CAClC,IAAIC,EAAI5B,EAAI6B,EAAIC,EAAIC,EAAIC,EAAIjC,EAAIX,EAAI6C,EAAIC,EAAIC,EAAIC,EAAIC,EAAIrB,EAAIsB,EAAIC,EAAIC,EAAI1C,EAAIT,EAAIoD,EAAIC,EAAIpD,EAAIqD,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAGhH,GAFIrB,EAAW,SAAS,WAAW,GAE/BA,EAAW,SAAS,MAAM,EAC5B,MAAO,GACT,IAAMsB,EAAW,WACXC,EAAY,OACdC,EAASxB,EAAW,QAAQsB,EAAU,EAAE,EAAE,QAAQC,EAAW,EAAE,EAAE,YAAY,EAC7EE,EAAQ,GAKZ,GAJIC,GAASF,KACXA,EAASE,GAASF,GAClBC,EAAQ,IAEND,IAAW,cACb,MAAO,CACL,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,OAAQ,MACV,EAEF,IAAI/E,EACJ,OAAIA,EAAQiD,GAAS,IAAI,KAAK8B,CAAM,GAC3B,CACL,EAAG,UAAUvB,EAAKxD,EAAM,KAAO,KAAOwD,EAAK,EAAE,EAC7C,EAAG,UAAU5B,EAAK5B,EAAM,KAAO,KAAO4B,EAAK,EAAE,EAC7C,EAAG,UAAU6B,EAAKzD,EAAM,KAAO,KAAOyD,EAAK,EAAE,EAC7C,EAAG,EACH,OAAQ,KACV,GAEEzD,EAAQiD,GAAS,KAAK,KAAK8B,CAAM,GAC5B,CACL,EAAG,UAAUrB,EAAK1D,EAAM,KAAO,KAAO0D,EAAK,EAAE,EAC7C,EAAG,UAAUC,EAAK3D,EAAM,KAAO,KAAO2D,EAAK,EAAE,EAC7C,EAAG,UAAUC,EAAK5D,EAAM,KAAO,KAAO4D,EAAK,EAAE,EAC7C,EAAG,YAAYjC,EAAK3B,EAAM,KAAO,KAAO2B,EAAK,EAAE,EAC/C,OAAQ,KACV,GAEE3B,EAAQiD,GAAS,IAAI,KAAK8B,CAAM,GAC3B,CACL,EAAG,UAAU/D,EAAKhB,EAAM,KAAO,KAAOgB,EAAK,EAAE,EAC7C,EAAGrB,IAAmBkE,EAAK7D,EAAM,KAAO,KAAO6D,EAAK,EAAE,EACtD,EAAGlE,IAAmBmE,EAAK9D,EAAM,KAAO,KAAO8D,EAAK,EAAE,EACtD,EAAG,EACH,OAAQ,KACV,GAEE9D,EAAQiD,GAAS,KAAK,KAAK8B,CAAM,GAC5B,CACL,EAAG,UAAUhB,EAAK/D,EAAM,KAAO,KAAO+D,EAAK,EAAE,EAC7C,EAAGpE,IAAmBqE,EAAKhE,EAAM,KAAO,KAAOgE,EAAK,EAAE,EACtD,EAAGrE,IAAmBsE,EAAKjE,EAAM,KAAO,KAAOiE,EAAK,EAAE,EACtD,EAAG,YAAYrB,EAAK5C,EAAM,KAAO,KAAO4C,EAAK,EAAE,EAC/C,OAAQ,KACV,GAEE5C,EAAQiD,GAAS,IAAI,KAAK8B,CAAM,GAC3B,CACL,EAAG,UAAUb,EAAKlE,EAAM,KAAO,KAAOkE,EAAK,EAAE,EAC7C,EAAGvE,IAAmBwE,EAAKnE,EAAM,KAAO,KAAOmE,EAAK,EAAE,EACtD,EAAGxE,IAAmByE,EAAKpE,EAAM,KAAO,KAAOoE,EAAK,EAAE,EACtD,EAAG,EACH,OAAQ,KACV,GAEEpE,EAAQiD,GAAS,KAAK,KAAK8B,CAAM,GAC5B,CACL,EAAG,UAAUrD,EAAK1B,EAAM,KAAO,KAAO0B,EAAK,EAAE,EAC7C,EAAG/B,IAAmBsB,EAAKjB,EAAM,KAAO,KAAOiB,EAAK,EAAE,EACtD,EAAGtB,IAAmB0E,EAAKrE,EAAM,KAAO,KAAOqE,EAAK,EAAE,EACtD,EAAG,YAAYC,EAAKtE,EAAM,KAAO,KAAOsE,EAAK,EAAE,EAC/C,OAAQ,KACV,GAEEtE,EAAQiD,GAAS,KAAK,KAAK8B,CAAM,GAC5B,CACL,EAAGG,IAAiBhE,EAAKlB,EAAM,KAAO,KAAOkB,EAAK,EAAE,EACpD,EAAGgE,IAAiBX,EAAKvE,EAAM,KAAO,KAAOuE,EAAK,EAAE,EACpD,EAAGW,IAAiBV,EAAKxE,EAAM,KAAO,KAAOwE,EAAK,EAAE,EACpD,EAAGW,IAAqBV,EAAKzE,EAAM,KAAO,KAAOyE,EAAK,EAAE,EACxD,OAAQO,EAAQ,OAAoB,KACtC,GAEEhF,EAAQiD,GAAS,KAAK,KAAK8B,CAAM,GAC5B,CACL,EAAGG,IAAiBR,EAAK1E,EAAM,KAAO,KAAO0E,EAAK,EAAE,EACpD,EAAGQ,IAAiBP,EAAK3E,EAAM,KAAO,KAAO2E,EAAK,EAAE,EACpD,EAAGO,IAAiBN,EAAK5E,EAAM,KAAO,KAAO4E,EAAK,EAAE,EACpD,EAAG,EACH,OAAQI,EAAQ,OAAoB,KACtC,GAEEhF,EAAQiD,GAAS,KAAK,KAAK8B,CAAM,GAC5B,CACL,EAAGG,GAAgB,GAAGlF,EAAM,KAAKA,EAAM,IAAI,EAC3C,EAAGkF,GAAgB,GAAGlF,EAAM,KAAKA,EAAM,IAAI,EAC3C,EAAGkF,GAAgB,GAAGlF,EAAM,KAAKA,EAAM,IAAI,EAC3C,EAAGmF,GAAoBnF,EAAM,GAAK,GAAKA,EAAM,EAAE,EAC/C,OAAQgF,EAAQ,OAAoB,KACtC,GAEEhF,EAAQiD,GAAS,KAAK,KAAK8B,CAAM,GAC5B,CACL,EAAGG,GAAgB,GAAGlF,EAAM,KAAKA,EAAM,IAAI,EAC3C,EAAGkF,GAAgB,GAAGlF,EAAM,KAAKA,EAAM,IAAI,EAC3C,EAAGkF,GAAgB,GAAGlF,EAAM,KAAKA,EAAM,IAAI,EAC3C,EAAG,EACH,OAAQgF,EAAQ,OAAoB,KACtC,EAEO,EAEX,CACA,SAASE,GAAgB3D,EAAM,CAC7B,OAAO,SAASA,EAAM,EAAE,CAC1B,CACA,SAAS4D,GAAoB3E,EAAG,CAC9B,OAAO0E,GAAgB1E,CAAC,EAAI,GAC9B,CAGA,IAAI4E,GAAwB,IAAI,IAC5BC,GAAyB,IAAM,CACjC,SAASC,EAAOP,EAAQ1E,EAAGC,EAAGC,EAAG,CAC/B,GAAI,OAAOwE,GAAW,SAAU,CAC9B,IAAIQ,EAAIH,GAAM,IAAIL,CAAM,EACxB,OAAIQ,IAEJA,EAAIC,EAAYT,CAAM,EAClBQ,IAAM,OACD,CAAE,GAAGD,EAAO,OAAO,EAAG,QAAS,EAAM,GAC9CF,GAAM,IAAIL,EAAQQ,CAAC,EACZA,GACT,CACA,IAAME,EAAUD,EAAYT,EAAQ1E,EAAGC,EAAGC,CAAC,EAC3C,OAAOkF,IAAY,OAASA,EAAU,CAAE,GAAGH,EAAO,OAAO,EAAG,QAAS,EAAM,CAC7E,CACA,SAASE,EAAYT,EAAQ1E,EAAGC,EAAGC,EAAG,CACpC,GAAIwE,IAAW,GACb,OACF,IAAMW,EAAYC,GAAyBZ,EAAQ1E,EAAGC,EAAGC,CAAC,EAC1D,GAAImF,EAAW,CACb,IAAME,EAAW,CACf,EAAGF,EAAU,EACb,EAAGA,EAAU,EACb,EAAGA,EAAU,EACb,EAAGA,EAAU,EACb,EAAGA,EAAU,EACb,EAAGA,EAAU,EACb,EAAGA,EAAU,EACb,aAAc,OAAOX,GAAW,UAAYW,EAAU,SAAW,MAAkBX,EAAS,OAC5F,OAAQ,KAAK,MAAM,IAAMW,EAAU,CAAC,EAAI,IACxC,OAAQA,EAAU,OAClB,IAAKJ,EAAO,IACZ,QAAS,IAAMA,EAAO,YAAYM,CAAQ,CAC5C,EACA,OAAOA,CACT,KACE,OAEJ,CACA,IAAMC,EAAgB,CACpB,MAAMC,EAAY,CAChB,OAAOA,IAAe,OAAmBA,IAAe,MAC1D,EACA,MAAMA,EAAY,CAChB,OAAOA,IAAe,OAAmBA,IAAe,MAC1D,CACF,EACA,OAAAR,EAAO,QAAU,CAACP,EAAQgB,IACpBhB,EAAO,SAAW,MACb,IAAIA,EAAO,YAAY,UAAUA,EAAO,OAAOA,EAAO,OAAOA,EAAO,OAAOA,EAAO,KAChFA,EAAO,SAAW,OAAmBA,EAAO,SAAW,OACzD,IAAIA,EAAO,YAAY,SAASgB,MAEhC,IAAIhB,EAAO,YAAY,UAAUA,EAAO,OAAOA,EAAO,OAAOA,EAAO,OAAOA,EAAO,KAG7FO,EAAO,QAAWP,GACZ,OAAOA,GAAW,SACbO,EAAO,cAAcP,CAAM,EAE3BO,EAAO,cAAcP,CAAM,EAGtCO,EAAO,cAAiBU,GAClB,OAAOA,GAAgB,SAClB1C,GAAe0C,CAAW,IAAM,GAElC,GAETV,EAAO,cAAiBP,GACfA,GAAU,OAAOA,GAAW,UAAY,OAAOA,EAAO,GAAM,UAAY,OAAOA,EAAO,GAAM,UAAY,OAAOA,EAAO,GAAM,UAAY,OAAOA,EAAO,GAAM,UAAY,OAAOA,EAAO,GAAM,UAAY,OAAOA,EAAO,GAAM,UAAY,OAAOA,EAAO,GAAM,UAAY,OAAOA,EAAO,QAAW,UAAY,OAAOA,EAAO,QAAW,SAE/UO,EAAO,SAAYP,GACVO,EAAO,YAAYP,CAAM,EAElCO,EAAO,MAAQ,CAACP,EAAQzD,EAAa,KAC5BD,GAAS0D,EAAO,EAAGA,EAAO,EAAGA,EAAO,EAAGzD,CAAU,EAE1DgE,EAAO,YAAc,CAACP,EAAQzD,EAAa,KAClC,IAAIgE,EAAO,MAAMP,EAAQzD,CAAU,IAE5CgE,EAAO,YAAeP,GACbA,EAAO,IAAM,EAAI,OAAS,KAAK,MAAMA,EAAO,CAAC,EAAI,KAAO,KAAK,MAAMA,EAAO,CAAC,EAAI,KAAO,KAAK,MAAMA,EAAO,CAAC,EAAI,IAAM,QAAU,KAAK,MAAMA,EAAO,CAAC,EAAI,KAAO,KAAK,MAAMA,EAAO,CAAC,EAAI,KAAO,KAAK,MAAMA,EAAO,CAAC,EAAI,KAAOA,EAAO,OAAS,IAEhPO,EAAO,OAAUP,IACR,CACL,GAAG3E,GAAW2E,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,EAC1C,EAAGA,EAAO,MACZ,GAEFO,EAAO,YAAeP,GAAW,CAC/B,IAAMkB,EAAMX,EAAO,MAAMP,CAAM,EACzBvE,EAAI,KAAK,MAAMyF,EAAI,CAAC,EACpBxF,EAAI,KAAK,MAAMwF,EAAI,EAAI,GAAG,EAC1BvF,EAAI,KAAK,MAAMuF,EAAI,EAAI,GAAG,EAChC,OAAOlB,EAAO,IAAM,EAAI,OAASvE,EAAI,KAAOC,EAAI,MAAQC,EAAI,KAAO,QAAUF,EAAI,KAAOC,EAAI,MAAQC,EAAI,MAAQqE,EAAO,OAAS,GAClI,EACAO,EAAO,MAASP,GAAW,CACzB,IAAMmB,EAAM7D,GAAS0C,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,EACjD,MAAO,CAAE,EAAGmB,EAAI,EAAI,IAAK,EAAGA,EAAI,EAAG,EAAGA,EAAI,EAAG,EAAGnB,EAAO,CAAE,CAC3D,EACAO,EAAO,YAAeP,GAAW,CAC/B,IAAMmB,EAAM7D,GAAS0C,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,EAC3CvE,EAAI,KAAK,MAAM0F,EAAI,EAAI,GAAG,EAC1BzF,EAAI,KAAK,MAAMyF,EAAI,EAAI,GAAG,EAC1BnF,EAAI,KAAK,MAAMmF,EAAI,EAAI,GAAG,EAChC,OAAOnB,EAAO,IAAM,EAAI,OAASvE,EAAI,KAAOC,EAAI,MAAQM,EAAI,KAAO,QAAUP,EAAI,KAAOC,EAAI,MAAQM,EAAI,MAAQgE,EAAO,OAAS,GAClI,EACAO,EAAO,OAAUP,GAAW,CAC1B,GAAIA,EAAO,IAAM,EACf,MAAO,cAET,GAAIA,EAAO,EAAI,EACb,MAAO,GAET,IAAMxD,EAAOF,GAAS0D,EAAO,EAAGA,EAAO,EAAGA,EAAO,EAAG,EAAI,EACxD,QAAWoB,KAAQ,OAAO,KAAKlB,EAAQ,EAErC,GADcA,GAASkB,KACT5E,EACZ,OAAO4E,EAGX,MAAO,EACT,EACAb,EAAO,MAASP,IACP,CACL,EAAG,KAAK,MAAMA,EAAO,CAAC,EACtB,EAAGA,EAAO,EACV,EAAGA,EAAO,EACV,EAAGA,EAAO,CACZ,GAEFO,EAAO,MAASP,IACP,CACL,EAAG,KAAK,MAAMA,EAAO,CAAC,EACtB,EAAG,KAAK,MAAMA,EAAO,CAAC,EACtB,EAAG,KAAK,MAAMA,EAAO,CAAC,EACtB,EAAGA,EAAO,CACZ,GAEFO,EAAO,SAAW,CAACP,EAAQqB,EAAS,KAAO,CACzC,IAAMvF,EAAMyE,EAAO,MAAMP,CAAM,EAC/B,OAAAlE,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,IAAKA,EAAI,EAAI,KAAK,MAAM,IAAM,EAAEuF,EAAS,IAAI,CAAC,CAAC,EAC5EvF,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,IAAKA,EAAI,EAAI,KAAK,MAAM,IAAM,EAAEuF,EAAS,IAAI,CAAC,CAAC,EAC5EvF,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,IAAKA,EAAI,EAAI,KAAK,MAAM,IAAM,EAAEuF,EAAS,IAAI,CAAC,CAAC,EACrEd,EAAOzE,CAAG,CACnB,EACAyE,EAAO,QAAU,CAACP,EAAQqB,EAAS,KAAO,CACxC,IAAMH,EAAMX,EAAO,MAAMP,CAAM,EAC/B,OAAAkB,EAAI,GAAKG,EAAS,IAClBH,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,EAAI,CAAC,CAAC,EAC/BX,EAAOW,CAAG,CACnB,EACAX,EAAO,OAAS,CAACP,EAAQqB,EAAS,KAAO,CACvC,IAAMH,EAAMX,EAAO,MAAMP,CAAM,EAC/B,OAAAkB,EAAI,GAAKG,EAAS,IAClBH,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,EAAI,CAAC,CAAC,EAC/BX,EAAOW,CAAG,CACnB,EACAX,EAAO,SAAW,CAACP,EAAQqB,EAAS,KAAO,CACzC,IAAMH,EAAMX,EAAO,MAAMP,CAAM,EAC/B,OAAAkB,EAAI,GAAKG,EAAS,IAClBH,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,EAAI,CAAC,CAAC,EAC/BX,EAAOW,CAAG,CACnB,EACAX,EAAO,WAAa,CAACP,EAAQqB,EAAS,KAAO,CAC3C,IAAMH,EAAMX,EAAO,MAAMP,CAAM,EAC/B,OAAAkB,EAAI,GAAKG,EAAS,IAClBH,EAAI,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,EAAI,CAAC,CAAC,EAC/BX,EAAOW,CAAG,CACnB,EACAX,EAAO,UAAaP,GACXO,EAAO,WAAWP,EAAQ,GAAG,EAEtCO,EAAO,UAAY,CAACP,EAAQsB,IAAU,CACpC,IAAMJ,EAAMX,EAAO,MAAMP,CAAM,EAC/B,OAAAkB,EAAI,GAAKI,EACTJ,EAAI,EAAIA,EAAI,EAAI,IAAMA,EAAI,EAAI,IAAMA,EAAI,EACjCX,EAAOW,CAAG,CACnB,EACAX,EAAO,MAAQ,CAACP,EAAQnE,EAAI,IACnB0E,EAAO,CACZ,EAAGP,EAAO,EACV,EAAGA,EAAO,EACV,EAAGA,EAAO,EACV,EAAAnE,CACF,CAAC,EAEH0E,EAAO,YAAeP,GACbO,EAAO,MAAMP,EAAQ,CAAC,EAE/BO,EAAO,cAAgB,CAACP,EAAQuB,EAAa,IACpChB,EAAO,CACZ,EAAGP,EAAO,EACV,EAAGA,EAAO,EACV,EAAGA,EAAO,EACV,EAAGA,EAAO,EAAIuB,CAChB,CAAC,EAEHhB,EAAO,YAAc,CAACiB,EAAQC,EAAQC,EAAQ,QAAoB,CAChE,GAAI,CAACnB,EAAO,cAAciB,CAAM,GAAK,CAACjB,EAAO,cAAckB,CAAM,EAC/D,MAAM,IAAI,UAAU,4DAA4D,EAElF,OAAQE,GACSpB,EAAO,WAAWiB,EAAQC,EAAQE,EAAW,GAAOD,CAAK,CAG5E,EACAnB,EAAO,IAAM,CAACqB,EAAMC,EAAS,CAAE,MAAAH,EAAQ,KAAgB,EAAI,CAAC,IAAM,CAChE,IAAMI,EAAY,OAAOF,GAAS,SAAWrB,EAAOqB,CAAI,EAAIA,EACtDG,EAAQxB,EAAO,YAAYuB,EAAWD,EAASH,CAAK,EAC1D,OAAQxE,GAAMqD,EAAO,YAAYwB,EAAM7E,CAAC,CAAC,CAC3C,EACAqD,EAAO,WAAa,CAACiB,EAAQC,EAAQO,EAAY,GAAK7H,EAAQ,GAAOuH,EAAQ,QAAoB,CAC/F,IAAIhH,EAAS,KACb,GAAIoG,EAAc,MAAMY,CAAK,EAC3BhH,EAAS6F,EAAO,CACd,EAAGxG,GAASiI,EAAW,CAAC,EAAG,CAAC,EAAG,CAACR,EAAO,EAAGC,EAAO,CAAC,EAAGtH,CAAK,EAC1D,EAAGJ,GAASiI,EAAW,CAAC,EAAG,CAAC,EAAG,CAACR,EAAO,EAAGC,EAAO,CAAC,EAAGtH,CAAK,EAC1D,EAAGJ,GAASiI,EAAW,CAAC,EAAG,CAAC,EAAG,CAACR,EAAO,EAAGC,EAAO,CAAC,EAAGtH,CAAK,EAC1D,EAAGJ,GAASiI,EAAW,CAAC,EAAG,CAAC,EAAG,CAACR,EAAO,EAAGC,EAAO,CAAC,EAAGtH,CAAK,CAC5D,CAAC,MACI,CACL,IAAI8H,EAAMC,EACNpB,EAAc,MAAMY,CAAK,GAC3BO,EAAO1B,EAAO,MAAMiB,CAAM,EAC1BU,EAAO3B,EAAO,MAAMkB,CAAM,IAE1BQ,EAAO1B,EAAO,OAAOiB,CAAM,EAC3BU,EAAO3B,EAAO,OAAOkB,CAAM,GAEzBQ,EAAK,IAAM,EACbA,EAAK,EAAIC,EAAK,EACLA,EAAK,IAAM,IACpBA,EAAK,EAAID,EAAK,GAEhB,IAAME,EAAQF,EAAK,EACbG,EAAMF,EAAK,EACbG,EAASD,EAAMD,EACfE,EAAS,IACXA,EAASD,EAAM,IAAMD,EACZE,EAAS,OAClBA,EAASD,EAAM,IAAMD,GAEvB,IAAMG,EAAQ,CACZ,EAAGvI,GAASiI,EAAW,CAAC,EAAG,CAAC,EAAG,CAACG,EAAOA,EAAQE,CAAM,EAAGlI,CAAK,EAC7D,EAAGJ,GAASiI,EAAW,CAAC,EAAG,CAAC,EAAG,CAACC,EAAK,EAAGC,EAAK,CAAC,EAAG/H,CAAK,EACtD,EAAGJ,GAASiI,EAAW,CAAC,EAAG,CAAC,EAAG,CAACC,EAAK,EAAGC,EAAK,CAAC,EAAG/H,CAAK,EACtD,EAAGJ,GAASiI,EAAW,CAAC,EAAG,CAAC,EAAG,CAACR,EAAO,EAAGC,EAAO,CAAC,EAAGtH,CAAK,CAC5D,EACI2G,EAAc,MAAMY,CAAK,EAC3BhH,EAAS6F,EAAO+B,CAAK,EAErB5H,EAAS6F,EAAO3E,GAAa0G,EAAM,EAAGA,EAAM,EAAGA,EAAM,EAAGA,EAAM,CAAC,CAAC,CAEpE,CACA,OAAO5H,CACT,EACA6F,EAAO,OAAS,CAACgB,EAAa,IAAM,CAClC,SAASgB,GAAM,CACb,OAAO,KAAK,MAAM,KAAK,OAAO,EAAI,GAAG,CACvC,CACA,OAAOhC,EAAO,QAAUgC,EAAI,EAAI,KAAOA,EAAI,EAAI,KAAOA,EAAI,EAAI,KAAOhB,EAAa,GAAG,CACvF,EACAhB,EAAO,KAAO,CAACc,EAAS,GAAKE,EAAa,KACxCF,EAAS,KAAK,MAAMA,EAAS,GAAG,EACzBd,EAAO,QAAUc,EAAS,KAAOA,EAAS,KAAOA,EAAS,KAAOE,EAAa,GAAG,GAE1FhB,EAAO,KAAOA,EAAO,KACrBA,EAAO,SAAW,CAACjF,EAAGC,EAAGC,IAChBkB,GAASpB,EAAGC,EAAGC,CAAC,EAEzB+E,EAAO,qBAAuB,CAACiC,EAAMxI,IAE/B,IADewI,EAAK,YAAY,EAAE,MAAM,EAAE,IAAM,SAAWA,IAAS,QAAUA,IAAS,WACzE,OAAOxI,GAAU,UAAYuG,EAAO,cAAcvG,CAAK,GAK3EuG,EAAO,WAAa,CAACiB,EAAQC,IAAW,CACtC,IAAM9E,GAAM6E,EAAO,EAAIC,EAAO,GAAK,EAC7BgB,EAASjB,EAAO,EAAIC,EAAO,EAC3BiB,EAASlB,EAAO,EAAIC,EAAO,EAC3BkB,EAASnB,EAAO,EAAIC,EAAO,EAC3BmB,EAAU,KAAK,IAAIH,EAAQ,CAAC,EAC5BI,EAAU,KAAK,IAAIH,EAAQ,CAAC,EAC5BI,EAAU,KAAK,IAAIH,EAAQ,CAAC,EAClC,OAAO,KAAK,KAAK,EAAIC,EAAU,EAAIC,EAAU,EAAIC,EAAUnG,GAAMiG,EAAUE,GAAW,GAAG,CAC3F,EACAvC,EAAO,MAAQ,CAACiB,EAAQC,EAAQsB,EAAY,KACtC,OAAK,IAAIvB,EAAO,EAAIC,EAAO,CAAC,GAAKsB,GAGjC,KAAK,IAAIvB,EAAO,EAAIC,EAAO,CAAC,GAAKsB,GAGjC,KAAK,IAAIvB,EAAO,EAAIC,EAAO,CAAC,GAAKsB,GAGjC,KAAK,IAAIvB,EAAO,EAAIC,EAAO,CAAC,EAAI,KAAOsB,GAKtCxC,CACT,GAAG,EACH,SAASK,GAAyBoC,EAAUzH,EAAGC,EAAGK,EAAI,EAAG,CACvD,IAAIoH,EACJ,OAAI,OAAOD,GAAa,UAAY,CAAC,OAAO,MAAMA,CAAQ,GAAK,OAAOzH,GAAM,UAAY,CAAC,OAAO,MAAMA,CAAC,GAAK,OAAOC,GAAM,UAAY,CAAC,OAAO,MAAMA,CAAC,EAKlJyH,EAAgBC,GAAwB,CAAE,EAJ/BF,EAIsC,EAHtCzH,EAG6C,EAF7CC,EAEoD,EADpDK,CAC0D,CAAC,EAC7D,OAAOmH,GAAa,SAC7BC,EAAgBE,GAA2BH,CAAQ,EAC1C,OAAOA,GAAa,WACzBA,EAAS,eAAe,GAAG,GAAKA,EAAS,eAAe,GAAG,GAAKA,EAAS,eAAe,GAAG,EAC7FC,EAAgBC,GAAwBF,CAAQ,EAEhDC,EAAgBG,GAAwBJ,CAAQ,GAG7CC,CACT,CACA,SAASE,GAA2BnD,EAAQ,CAC1C,IAAMtF,EAAS6D,GAAeyB,CAAM,EACpC,GAAItF,EACF,OAAIA,EAAO,SAAW,MACb0I,GAAwB1I,CAAM,EAC5BA,EAAO,SAAW,MACpB2I,GAAwB3I,CAAM,EAE9BwI,GAAwBxI,CAAM,CAG3C,CACA,SAAS2I,GAAwBrD,EAAQ,CACvC,IAAMlE,EAAMyB,GAASyC,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,EAEjD,MAAO,CACL,GAFUtD,GAASZ,EAAI,EAAGA,EAAI,EAAGA,EAAI,CAAC,EAGtC,GAAGA,EACH,OAAQ,MACR,EAAGkE,EAAO,IAAM,OAASsD,GAAatD,EAAO,CAAC,EAAI,CACpD,CACF,CACA,SAASkD,GAAwBlD,EAAQ,CACvC,IAAMlE,EAAMM,GAAS4D,EAAO,EAAGA,EAAO,EAAGA,EAAO,CAAC,EAEjD,MAAO,CACL,GAFUtD,GAASZ,EAAI,EAAGA,EAAI,EAAGA,EAAI,CAAC,EAGtC,GAAGA,EACH,OAAQ,MACR,EAAGkE,EAAO,IAAM,OAASsD,GAAatD,EAAO,CAAC,EAAI,CACpD,CACF,CACA,SAASoD,GAAwBpD,EAAQ,CACvC,IAAIvE,EACAC,EACAC,EACAG,EAAM,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EACzBoF,EAAM,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC7B,OAAAzF,EAAId,GAAUqF,EAAO,CAAC,EAAIA,EAAO,EAAI,EACrCvE,GAAKA,EAAI,KAAO,IAChBC,EAAIf,GAAUqF,EAAO,CAAC,EAAIA,EAAO,EAAI,EACjC,OAAOA,EAAO,GAAM,WACtBtE,EAAIX,GAAiBiF,EAAO,CAAC,GAE/BrE,EAAIhB,GAAUqF,EAAO,CAAC,EAAIA,EAAO,EAAI,GACjC,OAAOA,EAAO,GAAM,WACtBrE,EAAIZ,GAAiBiF,EAAO,CAAC,GAE/BlE,EAAMuB,GAAS5B,EAAGC,EAAGC,CAAC,EACtBuF,EAAM,CACJ,EAAAzF,EACA,EAAAC,EACA,EAAAC,CACF,EACO,CACL,GAAGG,EACH,GAAGoF,EACH,EAAGlB,EAAO,IAAM,OAAS,EAAIA,EAAO,EACpC,OAAQ,KACV,CACF,CACA,SAASsD,GAAa/B,EAAY,CAChC,OAAAA,EAAa,WAAWA,CAAU,EAC9BA,EAAa,IACfA,EAAa,IAEX,MAAMA,CAAU,GAAKA,EAAa,KACpCA,EAAa,GAERA,CACT,CAGA,IAAIgC,GAAqB,CAACC,EAAO,UACxB,CACL,YAAY5B,EAAM6B,EAAI,CAEpB,OAAC7B,EAAM6B,CAAE,EAAIC,GAAc,gBAAgB9B,EAAM6B,CAAE,EAC5CnD,EAAM,YAAYA,EAAMsB,CAAI,EAAGtB,EAAMmD,CAAE,EAAGD,CAAI,CACvD,EACA,WAAW5B,EAAM6B,EAAI,CACnB,OAAOnD,EAAM,WAAWA,EAAMsB,CAAI,EAAGtB,EAAMmD,CAAE,CAAC,CAChD,CACF,GAIEE,GAAkB,CACpB,YAAY/B,EAAM6B,EAAI,CAEpB,OAAC7B,EAAM6B,CAAE,EAAIC,GAAc,gBAAgB9B,EAAM6B,CAAE,EAC3C9B,GACCA,EAAY,GAAMC,EAAO6B,CAEpC,EACA,WAAW7B,EAAM6B,EAAI,CACnB,OAAO7B,IAAS6B,EAAK,EAAI,CAC3B,CACF,EAGIG,GAAuBC,IAClB,CACL,YAAYjC,EAAM6B,EAAI,CAEpB,CAAC7B,EAAM6B,CAAE,EAAIC,GAAc,gBAAgB9B,EAAM6B,CAAE,EACnD,IAAM/I,EAAS,OAAO,OAAO,CAAC,EAAGkH,CAAI,EAC/BkC,EAAiB,CAAC,EAClBC,EAAwB,IAAI,IAClC,QAAW3C,KAAQQ,EACjBkC,EAAe1C,GAAQyC,EAAmB,YAAYjC,EAAKR,GAAOqC,EAAGrC,EAAK,EAC1E2C,EAAM,IAAI3C,CAAI,EAEhB,QAAWA,KAAQqC,EACZM,EAAM,IAAI3C,CAAI,IACjB0C,EAAe1C,GAAQyC,EAAmB,YAAYjC,EAAKR,GAAOqC,EAAGrC,EAAK,EAC1E2C,EAAM,IAAI3C,CAAI,GAGlB,OAAQO,GAAc,CACpB,QAAWP,KAAQ0C,EACjBpJ,EAAO0G,GAAQ0C,EAAe1C,GAAMO,CAAS,EAE/C,OAAOjH,CACT,CACF,EACA,WAAWkH,EAAM6B,EAAI,CACnB,IAAIO,EAAM,EACV,QAAW5C,KAAQQ,EAAM,CACvB,IAAMqC,EAAaJ,EAAmB,WAAWjC,EAAKR,GAAOqC,EAAGrC,EAAK,EACrE4C,GAAO,KAAK,IAAIC,EAAY,CAAC,CAC/B,CACA,OAAO,KAAK,KAAKD,CAAG,CACtB,CACF,GAIEE,GAA8B,CAChC,WAAY,MACd,EACIC,GAAqB,KAAM,CAC7B,YAAYC,EAAUF,GAA6B,CACjD,KAAK,YAAc,CAACtC,EAAM6B,KAExB,CAAC7B,EAAM6B,CAAE,EAAIC,GAAc,gBAAgB9B,EAAM6B,CAAE,EAC5C,KAAK,sBAAsB7B,CAAI,EAAE,YAAYA,EAAM6B,CAAE,GAE9D,KAAK,WAAa,CAAC7B,EAAM6B,IACD,KAAK,sBAAsB7B,CAAI,EAChC,WAAWA,EAAM6B,CAAE,EAE1C,KAAK,QAAU,CAAE,GAAGS,GAA6B,GAAGE,CAAQ,CAC9D,CACA,sBAAsBpK,EAAO,CAC3B,IAAMwJ,EAAO,OAAOxJ,EACpB,GAAIwJ,IAAS,SACX,OAAOa,GACF,GAAIb,IAAS,WAAaA,IAAS,WACxC,OAAOG,GACF,GAAIrD,EAAM,QAAQtG,CAAK,EAC5B,OAAOuJ,GAAmB,KAAK,QAAQ,UAAU,EAC5C,GAAIC,IAAS,SAAU,CAC5B,GAAIxJ,IAAU,KACZ,OAAO2J,GAET,IAAMW,EAActK,EAAM,YAC1B,GAAIsK,GAAeC,GAAiBD,CAAW,EAAG,CAChD,IAAME,EAAgBF,EAAY,iBAAiBtK,EAAO,IAAI,EAC9D,GAAIwK,GAAiBA,IAAkB,MAAQA,EAAc,cAAgBL,GAC3E,OAAOK,CAEX,CACA,OAAOZ,GAAoB,IAAI,CACjC,CACA,eAAQ,KAAK,gCAAgC5J,GAAO,EAC7C2J,EACT,CACF,EAIA,IAAIc,GAAY,CACd,MAAO,EAAI,GACX,UAAW,GACb,EACIC,GAAwB,KAAM,CAChC,YAAYC,EAAS,CACnB,KAAK,YAAc,EACnB,KAAK,QAAU,CAAE,GAAGF,GAAW,GAAGE,CAAQ,EAC1C,KAAK,SAAWA,EAAQ,QAC1B,CACA,cAAe,CACb,GAAI,CAAC,KAAK,SAAS,QAAQ,EACzB,OAEF,GAAM,CAAE,MAAAC,CAAM,EAAI,KAAK,QAEvB,IADA,KAAK,OAAS,CAAC,EACR,CAAC,KAAK,SAAS,WAAW,GAAK,KAAK,OAAO,OAAS,KAAK,QAAQ,WAAW,CACjF,IAAIC,EAAQ,KAAK,SAAS,KAAK,KAAK,QAAQ,KAAK,EAC7C,OAAOA,GAAU,UAAYA,IAG/BA,EADa,CAAE,GADAA,CACU,GAG3B,KAAK,OAAO,KAAKA,CAAK,CACxB,CACA,KAAK,UAAY,KAAK,OAAO,OAASD,CACxC,CACA,aAAaE,EAAO,CAClB,OAAO,KAAK,IACV,EACA,KAAK,IAAI,KAAK,OAAO,OAAS,EAAG,KAAK,MAAM,KAAK,OAAO,QAAUA,EAAQ,KAAK,UAAU,EAAI,CAAC,CAChG,CACF,CACA,aAAaA,EAAO,CAClB,IAAMC,EAAQ,KAAK,aAAaD,CAAK,EAErC,OADc,KAAK,OAAOC,EAE5B,CACA,QAAQF,EAAO,CACb,KAAK,SAAS,QAAQA,CAAK,EAC3B,KAAK,aAAa,CACpB,CACA,MAAMG,EAAK,CACT,KAAK,SAAS,MAAMA,CAAG,EACvB,KAAK,aAAa,CACpB,CACA,SAAU,CACR,OAAO,KAAK,SAAW,QAAU,KAAK,OAAO,OAAS,GAAK,KAAK,UAAY,CAC9E,CACA,KAAKJ,EAAO,CACV,YAAK,aAAeA,EACb,KAAK,aAAa,KAAK,WAAW,CAC3C,CACA,YAAa,CACX,OAAO,KAAK,YAAc,GAAK,KAAK,aAAe,KAAK,SAC1D,CACA,IAAI,UAAW,CACb,KAAK,aAAa,EAClB,IAAMC,EAAQ,KAAK,aAAa,KAAK,SAAS,EAC9C,OAAO,KAAK,OAAO,OAAS,EAAIA,EAAQ,KAAK,SAAS,KAAK,CAAC,CAC9D,CACF,EAGII,GAAa,CACf,iBAAkB,IAAM,CACxB,EACA,oBAAqB,IAAM,CAC3B,EACA,cAAe,IAAM,GACrB,eAAgB,OAChB,cAAe,GACf,cAAe,GACf,YAAa,GACb,aAAc,GACd,YAAa,GACb,WAAY,GACZ,YAAa,GACb,YAAa,GACb,UAAW,GACX,iBAAkB,EAClB,QAAS,EACT,QAAS,EACT,SAAU,CACR,KAAM,EACR,EACA,WAAY,IAAM,EAClB,aAAc,IAAM,CACpB,EACA,YAAa,IAAM,EACnB,cAAe,IAAM,CACrB,EACA,sBAAuB,IAAM,EAC7B,qBAAsB,IAAM,CAC5B,EACA,aAAc,IAAM,KACpB,WAAaC,IACJ,CACL,QAAS,GACT,MAAOA,EACP,SAAU,IAAM,CAChB,EACA,iBAAkB,IAAM,CACxB,EACA,oBAAqB,IAAM,CAC3B,EACA,YAAa,IAAM,CACnB,EACA,eAAgB,IAAM,CACtB,EACA,cAAe,IAAM,EACvB,GAEF,YAAa,EACb,cAAe,CAAC,CAClB,EACIC,GAAa,OAAOC,EAAW,IAAcH,GAAaG,EAG1DC,GAAQC,GAAM,CAChB,WAAWA,EAAG,EAAI,EAAE,CACtB,EACIC,GAAQJ,GAAW,uBAA4BE,GAC/CG,GAAOF,GAAMC,GAAMD,CAAC,EAGpBG,GAAuBC,GAAQC,GAAsB,EAAG,CAAC,EACzD,CAAE,aAAcC,EAAc,EAAIH,GAAqB,QACvDI,GAAe,KAAM,CACvB,aAAc,CACZ,KAAK,SAAW,IAAID,EACtB,CACA,YAAa,CACX,OAAO,KAAK,SAAS,WAAW,CAClC,CACA,gBAAiB,CACf,IAAME,EAAY,CAAC,EACnB,QAAWC,KAAa,KAAK,SAAS,WAAW,EAC/CD,EAAUC,GAAa,KAAK,SAAS,UAAUA,CAAS,EAE1D,OAAOD,CACT,CACA,GAAGC,EAAWC,EAAI,CAChB,KAAK,iBAAiBD,EAAWC,EAAI,GAAO,GAAO,IAAI,CACzD,CACA,IAAID,EAAWC,EAAI,CACjB,KAAK,qBAAqBD,EAAWC,CAAE,CACzC,CACA,KAAKD,EAAWC,EAAI,CAClB,KAAK,iBAAiBD,EAAWC,EAAI,GAAM,GAAO,IAAI,CACxD,CACA,OAAOD,EAAWC,EAAI,CACpB,KAAK,iBAAiBD,EAAWC,EAAI,GAAO,GAAM,IAAI,CACxD,CACA,iBAAiBD,EAAWC,EAAIC,EAAMC,EAAQC,EAAS,CACrD,GAAID,GACF,QAAWE,KAAQ,KAAK,SAAS,WAAW,EAC1C,GAAIJ,IAAO,KAAK,SAAS,UAAUI,CAAI,EACrC,OAIFH,IAAS,GACX,KAAK,SAAS,KAAKF,EAAWC,EAAIG,CAAO,EAEzC,KAAK,SAAS,YAAYJ,EAAWC,EAAIG,CAAO,CAEpD,CACA,qBAAqBJ,EAAWC,EAAI,CAC9BD,EACF,KAAK,SAAS,eAAeA,EAAWC,CAAE,EAE1C,KAAK,wBAAwB,CAEjC,CACA,yBAA0B,CACxB,KAAK,SAAS,mBAAmB,CACnC,CACA,oBAAoBD,EAAWM,EAAS,CACtC,GAAIN,EACF,OAAO,KAAK,SAAS,UAAUA,CAAS,EAAE,OACrC,CACL,IAAIO,EAAQ,EACZ,QAAWF,KAAQ,KAAK,SAAS,WAAW,EAC1CE,GAAS,KAAK,SAAS,UAAUF,CAAI,EAAE,OAEzC,OAAOE,CACT,CACF,CACA,KAAKP,KAAcQ,EAAM,CACvB,KAAK,SAAS,KAAKR,EAAW,GAAGQ,CAAI,CACvC,CACF,EAGIC,GAAe,EAAI,GACnBC,GAAO,cAAcZ,EAAa,CACpC,YAAYa,EAAQ,GAAO,CACzB,MAAM,EACN,KAAK,SAAW,GAChB,KAAK,OAAS,EACd,KAAK,YAAc,CAAC,EACpB,KAAK,KAAO,IAAM,CACX,KAAK,WAEVlB,GAAI,KAAK,IAAI,EACb,KAAK,KAAK,SAAU,KAAK,OAAQgB,EAAY,EAC7C,KAAK,KAAK,SAAU,KAAK,OAAQA,EAAY,EAC7C,KAAK,mBAAmB,EACxB,KAAK,SACP,EACIE,GACF,KAAK,MAAM,CAEf,CACA,aAAaC,EAAM,CACjB,KAAK,YAAY,KAAKA,CAAI,CAC5B,CACA,oBAAqB,CACnB,IAAIC,EACJ,IAAMC,EAAiB,KAAK,YACtBC,EAASD,EAAe,OAC9B,GAAIC,IAAW,EAEf,SAASC,EAAI,EAAGA,EAAID,EAAQC,KACzBH,EAAKC,EAAeE,KAAO,MAAgBH,EAAG,KAAKC,CAAc,EAEpEA,EAAe,OAAS,EAC1B,CACA,WAAW,SAAShC,EAAO,CACzB2B,GAAe3B,CACjB,CACA,WAAW,UAAW,CACpB,OAAO2B,EACT,CACA,OAAQ,CACN,OAAI,KAAK,SACA,MACT,KAAK,OAAS,EACd,KAAK,SAAW,GAChBhB,GAAI,KAAK,IAAI,EACN,KACT,CACA,MAAO,CACL,YAAK,SAAW,GACT,IACT,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,MACd,CACA,IAAI,MAAO,CACT,OAAO,KAAK,OAASgB,EACvB,CACF,EACIQ,GAAW,IAAIP,GAGfQ,IAAiCC,IACnCA,EAAc,OAAY,SAC1BA,EAAc,OAAY,SAC1BA,EAAc,UAAe,YAC7BA,EAAc,QAAa,UACpBA,IACND,IAAgB,CAAC,CAAC,EACjBE,GAAoB,CACtB,aAAc,GACd,OAAQ,UACR,KAAM,CACR,GA0BEC,GAAkB,CAClB,SAASC,GAAU,CACjB,OAAOC,GAAkB,MAC3B,CACAF,EAAc,QAAUC,EACxB,SAASE,GAAkB,CACzB,IAAMC,EAASF,GAAkB,OAGjC,OAFIE,IAAW,UAEXA,IAAW,QAGjB,CACAJ,EAAc,gBAAkBG,CAClC,GAAGE,KAAiBA,GAAe,CAAC,EAAE,EAGtC,IAAIC,GAAkB,KAAM,CAC1B,YAAYC,EAAUC,EAAgBC,EAAkB,CACtD,KAAK,SAAWF,EAChB,KAAK,eAAiBC,EACtB,KAAK,iBAAmBC,EACxB,KAAK,OAAS,CAACC,EAAQC,IAAY,CACjC,GAAI,KAAK,SAAS,WAAW,EAC3B,KAAK,OAAO,MACP,CACL,IAAMC,EAAQ,KAAK,SAAS,KAAKD,CAAO,EACxC,KAAK,eAAeC,CAAK,CAC3B,CACF,EACK,KAAK,SAAS,QAAQ,GACzB,QAAQ,KAAK,4DAA4D,CAE7E,CACA,QAAS,CACH,KAAK,kBACP,KAAK,iBAAiB,KAAK,SAAS,WAAW,CAAC,CAEpD,CACA,YAAa,CACX,OAAO,KAAK,SAAS,WAAW,CAClC,CACF,EAGIC,GAA0B,cAAcP,EAAgB,CAC1D,MAAO,CACL,GAAIJ,GAAkB,SAAW,UAAyB,CACxD,KAAK,kBAAoB,KAAK,iBAAiB,EAAK,EACpD,MACF,CACAY,GAAS,GAAG,SAAU,KAAK,MAAM,CACnC,CACA,QAAS,CACPA,GAAS,IAAI,SAAU,KAAK,MAAM,CACpC,CACA,QAAS,CACPA,GAAS,IAAI,SAAU,KAAK,MAAM,EAClC,MAAM,OAAO,CACf,CACF,EAGIC,GAAoC,CACtC,aAAc,GACd,WAAY,MACd,EACIC,GAAkB,KAAM,CAC1B,YAAYZ,EAAQa,EAAMC,EAAIC,EAAeC,EAASC,EAAcR,GAAyB,CAC3F,KAAK,gBAAkB,OACvB,KAAK,aAAe,QAAQ,QAAQ,EACpC,KAAK,qBAAqB,EAC1B,IAAMS,EAA6B,CAAE,GAAGP,EAAkC,EACpEQ,EAAkB,CAAC,EACrBH,IACF,OAAO,OAAOE,EAA4BF,CAAO,EACjD,OAAO,OAAOG,EAAiBH,CAAO,GAExC,IAAII,EACAF,EAA2B,oBAC7BE,EAAgBF,EAA2B,oBAE3CE,EAAgB,IAAIC,GAAmBL,CAAO,EAEhD,IAAIb,EACCY,EAGHZ,EAAW,IAAIY,EAAcI,EAAiBC,CAAa,EAF3DjB,EAAW,IAAImB,GAAe,CAAC,EAAGF,CAAa,EAI7CF,EAA2B,eAC7Bf,EAAW,IAAIoB,GAAsB,CAAE,SAAApB,CAAS,CAAC,GAEnDA,EAAS,QAAQU,CAAI,EACrBV,EAAS,MAAMW,CAAE,EACjB,IAAMV,EAAkBI,GAAU,CAChCI,GAAgB,sBAAsBZ,EAAQQ,CAAK,CACrD,EACMH,EAAoBmB,GAAe,CACnCA,IACFZ,GAAgB,sBAAsBZ,EAAQc,CAAE,EAC5C,KAAK,kBAAoB,YAC3B,KAAK,eAAiB,YAG5B,EACA,KAAK,OAAS,IAAIG,EAAYd,EAAUC,EAAgBC,CAAgB,CAC1E,CACA,OAAO,sBAAsBL,EAAQQ,EAAO,CAC1C,GAAIiB,GAAazB,CAAM,GAAK0B,GAAe1B,CAAM,EAC/CA,EAAO,IAAIQ,CAAK,MACX,CACL,IAAMmB,EAAe3B,EACrB4B,GAAW,YAAaC,GAAW,CACjC,QAAWC,KAAQH,EAAc,CAC/B,IAAMI,EAAcJ,EAAaG,GAC7BL,GAAaM,CAAW,EAC1BF,EAAOE,EAAavB,EAAMsB,EAAK,EAE/BH,EAAaG,GAAQtB,EAAMsB,EAE/B,CACF,CAAC,CACH,CACF,CACA,IAAI,gBAAiB,CACnB,OAAO,KAAK,eACd,CACA,IAAI,eAAetB,EAAO,CACxB,GAAIA,IAAU,KAAK,gBAAiB,CAClC,IAAMwB,EAAWxB,EAEjB,OADA,KAAK,gBAAkBA,EACfA,EAAO,CACb,IAAK,OACCwB,IAAa,WACf,KAAK,UAAY,KAAK,SAAS,EAEjC,KAAK,cAAgB,KAAK,aAAa,EACvC,KAAK,kBAAkB,EACvB,MACF,IAAK,WACH,GAAIA,IAAa,OAAQ,CACvB,QAAQ,KAAK,sBAAsB,EACnC,KACF,CACA,KAAK,UAAY,KAAK,SAAS,EAC/B,KAAK,iBAAmB,KAAK,gBAAgB,EAC7C,MACF,IAAK,UACH,KAAK,kBAAkB,EACvB,KACJ,CACIA,IAAa,YACf,KAAK,qBAAqB,EAExBxB,IAAU,aACZ,KAAK,eAAiB,OAE1B,CACF,CACA,IAAI,WAAY,CACd,OAAO,KAAK,cACd,CACA,mBAAoB,CAClB,KAAK,aAAe,KACpB,KAAK,aAAe,IAAI,QAAQ,CAACyB,EAASC,IAAW,CACnD,KAAK,aAAeD,CACtB,CAAC,CACH,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,YACd,CACA,sBAAuB,CACrB,KAAK,gBAAkB,KACvB,KAAK,eAAiB,KACtB,KAAK,gBAAkB,IAAI,QAAQ,CAACA,EAASC,IAAW,CACtD,KAAK,gBAAkBD,EACvB,KAAK,eAAiBC,CACxB,CAAC,EACD,KAAK,gBAAgB,MAAOC,GAAW,CACvC,CAAC,CACH,CACA,IAAI,UAAW,CACb,OAAO,KAAK,eACd,CACA,MAAO,CACL,KAAK,eAAiB,UACtB,KAAK,OAAO,KAAK,CACnB,CACA,QAAS,CACP,GAAI,KAAK,iBAAmB,UAI5B,IADA,KAAK,OAAO,OAAO,EACf,KAAK,YAAc,OAAQ,CAC7B,IAAMA,EAAS,aACf,KAAK,gBAAkB,KAAK,eAAeA,CAAM,CACnD,CACA,KAAK,eAAiB,OACxB,CACA,QAAS,CACH,KAAK,kBAAoB,YAC3B,KAAK,eAAiB,WACtB,KAAK,OAAO,OAAO,EAEvB,CACA,YAAa,CACX,OAAO,KAAK,iBAAmB,UACjC,CACF,EAGA,SAASC,GAAkBvB,EAAMC,EAAIX,EAAUa,EAAS,CACtDqB,GAAmB,YAAa,QAAS,+DAA+D,EACxG,IAAMrC,EAASa,EACXyB,EACAb,GAAaZ,CAAI,GAAKa,GAAeb,CAAI,EAC3CyB,EAAYzB,EAAK,IAAI,EAErByB,EAAYV,GAAW,eAAef,CAAI,EAE5C,IAAM0B,EAAY,IAAI3B,GAAgBZ,EAAQsC,EAAWxB,EAAIX,EAAUa,CAAO,EAC9E,OAAAuB,EAAU,KAAK,EACRA,CACT,CACA,IAAIC,IAA4B,IAAM,CACpC,SAASC,EAAS5B,EAAMC,EAAI4B,EAAsB1B,EAAS,CACzD,OAAOS,GAAaZ,CAAI,EAAIuB,GAAkBvB,EAAMC,EAAI4B,EAAsB1B,CAAO,EAAIwB,GAAQ3B,EAAMC,EAAI4B,CAAoB,CACjI,CACA,OAAAD,EAAS,OAAS,CAAC5B,EAAMC,EAAIE,IACpByB,EAAS5B,EAAMC,EAAI6B,GAAgB3B,CAAO,EAEnDyB,EAAS,OAAS,CAAC5B,EAAMC,EAAIE,IACpByB,EAAS5B,EAAMC,EAAIQ,GAAgBN,CAAO,EAEnDyB,EAAS,OAAS,CAAC5B,EAAMC,EAAIE,IACpByB,EAAS,OAAO5B,EAAMC,EAAI,CAAE,GAAGE,EAAS,MAAO,QAAsB,CAAC,EAE/EyB,EAAS,KAAO,CAAC5B,EAAMC,EAAIE,IAClByB,EAAS,OAAO5B,EAAMC,EAAI,CAAE,GAAGE,EAAS,MAAO,MAAkB,CAAC,EAE3EyB,EAAS,OAAS,CAAC5B,EAAMC,EAAIE,IACpByB,EAAS,OAAO5B,EAAMC,EAAI,CAAE,GAAGE,EAAS,MAAO,SAAuB,CAAC,EAEhFyB,EAAS,QAAU,CAAC5B,EAAMC,EAAIE,IACrByB,EAAS,OAAO5B,EAAMC,EAAI,CAAE,GAAGE,EAAS,MAAO,UAAyB,CAAC,EAElFyB,EAAS,UAAY,CAAC5B,EAAMC,EAAIE,IACvByB,EAAS,OAAO5B,EAAMC,EAAI,CAAE,GAAGE,EAAS,MAAO,aAA8B,CAAC,EAEhFyB,CACT,GAAG,EAMCG,GAAsBC,IAAU,CAClC,QAAS,CAACC,EAAQ,CAAE,MAAAC,EAAO,UAAAC,CAAU,IAAM,CAGzC,GAFI,OAAOF,GAAW,WACpBA,EAAS,WAAWA,CAAM,GACxBA,IAAW,EACb,MAAO,MACT,IAAIG,EAAYH,EAChB,OAAIC,GAASC,IACXC,EAAY,KAAK,MAAMH,EAASC,EAAMF,GAAM,MAAQG,EAAUH,EAAK,EACnEI,EAAY,KAAK,IAAIA,EAAW,CAAC,GAE5BA,EAAY,IACrB,CACF,GAGAC,GAAkB,CAChB,eAAgBN,GAAmB,GAAG,EACtC,gBAAiBA,GAAmB,GAAG,EACvC,iBAAkBA,GAAmB,GAAG,EACxC,kBAAmBA,GAAmB,GAAG,CAC3C,CAAC,EAsBD,SAASO,GAAOC,KAAcC,EAAM,CAClC,IAAIC,EAAIC,EACR,GAAIH,EACF,OACF,IAAMI,EAAI,MAAM,mBAAqBH,EAAK,OAAS,EAAI,KAAOA,EAAK,KAAK,GAAG,EAAI,GAAG,EAClF,GAAIG,EAAE,MACJ,GAAI,CACF,IAAMC,EAAQD,EAAE,MAAM,MAAM;AAAA,CAAI,GAC3BF,EAAKG,EAAM,KAAO,MAAgBH,EAAG,SAAS,QAAQ,GACzDG,EAAM,OAAO,EAAG,CAAC,EACjBD,EAAE,MAAQC,EAAM,KAAK;AAAA,CAAI,IACfF,EAAKE,EAAM,KAAO,MAAgBF,EAAG,SAAS,QAAQ,IAChEE,EAAM,OAAO,EAAG,CAAC,EACjBD,EAAE,MAAQC,EAAM,KAAK;AAAA,CAAI,EAE7B,MAAE,CACF,CAEF,MAAMD,CACR,CACA,SAASE,GAAYC,EAAGC,EAAO,CAC7B,MAAMA,GAAS,IAAI,MAAMD,EAAI,qBAAqBA,IAAM,mCAAmC,CAC7F,CAGA,IAAIE,GAAkBL,EAAQ,cAAc,CAC1C,YAAcM,GAAS,KACvB,qBAAsB,IAAM,CAC5B,EACA,IAAK,GACL,QAAS,EACX,CAAC,EACD,SAASC,GAAiB,CAAE,SAAAC,CAAS,EAAG,CAEtC,GADgBC,EAAYJ,EAAe,EAC/B,IACV,OAAuBL,EAAQ,cAAcA,EAAQ,SAAU,KAAMQ,CAAQ,EAC/E,IAAME,EAASC,EAAO,CACpB,KAAM,CAAC,EACP,OAAQ,CAAC,EACT,SAAU,CAAC,EACX,aAAc,CAAC,EACf,WAAY,CAAC,EACb,WAAY,CAAC,EACb,MAAO,CACL,KAAM,CAAC,EACP,OAAQ,CAAC,CACX,CACF,CAAC,EACKC,EAASD,EAAO,CACpB,KAAM,CAAC,EACP,OAAQ,CAAC,EACT,SAAU,CAAC,EACX,aAAc,CAAC,EACf,WAAY,CAAC,EACb,WAAY,CAAC,CACf,CAAC,EACKE,EAAUF,EAAuB,IAAI,GAAK,EAAE,QAC5CG,EAAcC,GAAY,CAAC,CAAE,GAAAC,EAAI,KAAAC,EAAM,eAAAC,CAAe,IAAM,CAChE,GAAI,CAACF,EACH,OAAO,KACT,IAAMG,EAAWF,EAAO,SAAW,OAC7BG,EAAaV,EAAO,QAAQS,GAAUH,GAC5C,GAAII,EACF,OAAOA,EACT,IAAMC,EAAiBJ,GAAQD,EAC/B,GAAI,CAACE,GAAkB,CAACL,EAAQ,IAAIQ,CAAc,IAAM,CAACX,EAAO,QAAQ,WAAWW,IAAmBX,EAAO,QAAQ,WAAWW,KAAoBA,GAClJ,OAAIX,EAAO,QAAQ,MAAMS,GAAUE,KAAoB,SACrDX,EAAO,QAAQ,MAAMS,GAAUE,GAAkB,EACjDX,EAAO,QAAQ,WAAWW,GAAkBA,EAC5CT,EAAO,QAAQO,GAAUH,GAAMK,GAEjCR,EAAQ,IAAIQ,CAAc,EACnBA,EAET,IAAIC,EACJ,GAAsCJ,GAAe,OACnD,QAASK,EAAQL,EAAe,OAAS,EAAGK,GAAS,EAAGA,IAAS,CAC/D,IAAMC,EAAeN,EAAeK,GACpC5B,GAAO,CAAC,CAAC6B,EAAc,8BAA8B,EACrD,IAAMC,EAAQf,EAAO,QAAQS,GAAUK,GACjCE,EAAgBhB,EAAO,QAAQ,SAASc,GAC9C,GAAIE,GAAiB,CAACJ,EAAe,CACnC,IAAMK,EAAkBjB,EAAO,QAAQ,WAAWgB,GAC5CE,EAA4B,CAACD,GAAmBA,IAAoBV,EACtES,GAAiB,CAACb,EAAQ,IAAIa,CAAa,IAAM,CAAAT,GAAOW,KAC1DN,EAAgB,CAACI,EAAeF,CAAY,EAEhD,CACA,IAAMK,EAAmBnB,EAAO,QAAQ,WAAWe,GAC7CK,EAAsB,CAACD,GAAoBA,IAAqBZ,EACtE,GAAIQ,GAAS,CAACZ,EAAQ,IAAIY,CAAK,IAAM,CAAAR,GAAOa,GAC1C,OAAAlB,EAAO,QAAQO,GAAUH,GAAMS,EAC/Bb,EAAO,QAAQ,SAASY,GAAgBC,EACxCZ,EAAQ,IAAIY,CAAK,EACVA,CAEX,CAEF,IAAMM,EAAOrB,EAAO,QAAQ,SAASM,GACrC,GAAIe,GAAQ,CAAClB,EAAQ,IAAIkB,CAAI,EAC3B,OAAAlB,EAAQ,IAAIkB,CAAI,EAChBnB,EAAO,QAAQ,KAAKI,GAAMe,EACnBA,EAET,GAAIT,EAAe,CACjB,GAAM,CAACG,EAAOD,CAAY,EAAIF,EAC9B,OAAAV,EAAO,QAAQO,GAAUH,GAAMS,EAC/Bb,EAAO,QAAQ,SAASY,GAAgBC,EACxCZ,EAAQ,IAAIY,CAAK,EACVA,CACT,CACA,IAAMO,EAAWtB,EAAO,QAAQ,aAAaM,GAC7C,GAAIgB,GAAY,CAACnB,EAAQ,IAAImB,CAAQ,EACnC,OAAAnB,EAAQ,IAAImB,CAAQ,EACpBpB,EAAO,QAAQ,KAAKI,GAAMgB,EACnBA,EAET,IAAMC,EAAqDf,IAAe,GACpEgB,EAAajB,GAAQgB,GAAoBjB,EACzCmB,EAAQzB,EAAO,QAAQ,MAAMS,GAAUe,GAAc,GAAK,EAC1D,CAAE,SAAAE,EAAU,MAAOC,CAAU,EAAIC,GAAaJ,EAAYC,EAAOtB,CAAO,EAG9E,GAFAH,EAAO,QAAQ,MAAMS,GAAUe,GAAcG,EAC7CzB,EAAO,QAAQO,GAAUH,GAAMoB,EACOlB,GAAe,QAC/C,CAACD,EAAM,CACT,IAAMsB,EAASrB,EAAeA,EAAe,OAAS,GAItD,GAHIqB,IACF3B,EAAO,QAAQ,SAAS2B,GAAUH,GAEhClB,EAAe,OAAS,EAC1B,QAASK,EAAQ,EAAGA,EAAQL,EAAe,OAAS,EAAGK,IAAS,CAC9D,IAAMiB,EAAatB,EAAeK,GAC9BiB,IAAe,SAEd5B,EAAO,QAAQ,aAAa4B,KAC/B5B,EAAO,QAAQ,aAAa4B,GAAcJ,GAE9C,CAEJ,CAEF,OAAAxB,EAAO,QAAQ,WAAWwB,GAAYf,EACtCR,EAAQ,IAAIuB,CAAQ,EACbA,CACT,EAAG,CAAC,CAAC,EACCK,EAAuB1B,GAAY,IAAM,CAC7CL,EAAO,QAAU,CACf,KAAM,CACJ,GAAGA,EAAO,QAAQ,KAClB,GAAGE,EAAO,QAAQ,IACpB,EACA,SAAU,CACR,GAAGF,EAAO,QAAQ,SAClB,GAAGE,EAAO,QAAQ,QACpB,EACA,aAAc,CACZ,GAAGF,EAAO,QAAQ,aAClB,GAAGE,EAAO,QAAQ,YACpB,EACA,OAAQ,CACN,GAAGF,EAAO,QAAQ,OAClB,GAAGE,EAAO,QAAQ,MACpB,EACA,WAAY,CAAE,GAAGF,EAAO,QAAQ,WAAY,GAAGE,EAAO,QAAQ,UAAW,EACzE,WAAY,CAAE,GAAGF,EAAO,QAAQ,WAAY,GAAGE,EAAO,QAAQ,UAAW,EACzE,MAAO,CACL,GAAGF,EAAO,QAAQ,MAClB,OAAQ,CAAC,CACX,CACF,EACAE,EAAO,QAAU,CACf,KAAM,CAAC,EACP,OAAQ,CAAC,EACT,SAAU,CAAC,EACX,aAAc,CAAC,EACf,WAAY,CAAC,EACb,WAAY,CAAC,CACf,EACAC,EAAQ,MAAM,CAChB,EAAG,CAAC,CAAC,EACC6B,EAAe/B,EAAO,CAC1B,YAAAG,EACA,qBAAA2B,EACA,IAAK,GACL,QAAS,EACX,CAAC,EAAE,QACH,OAAuBzC,EAAQ,cAAcK,GAAgB,SAAU,CAAE,MAAOqC,CAAa,EAAGlC,CAAQ,CAC1G,CACA,SAAS8B,GAAaJ,EAAYS,EAAc9B,EAAS,CACvD,IAAIsB,EAAQQ,EACRP,EAAWD,EAAQ,GAAGD,KAAcC,IAAUD,EAClD,KAAOrB,EAAQ,IAAIuB,CAAQ,GACzBD,IACAC,EAAW,GAAGF,KAAcC,IAE9B,MAAO,CAAE,SAAAC,EAAU,MAAAD,CAAM,CAC3B,CACA,SAASS,GAAmB,CAAE,QAAAC,EAAU,MAASC,CAAM,EAAG,CACxD,IAAMC,EAAUtC,EAAYJ,EAAe,EACrCqC,EAAeM,EAAQ,KACpB,CACL,GAAGD,EACH,QAAAF,CACF,GACC,CAACA,CAAO,CAAC,EACZ,OAAuB7C,EAAQ,cAAcK,GAAgB,SAAU,CAAE,GAAGyC,EAAO,MAAOJ,CAAa,CAAC,CAC1G,CAOA,SAASO,GAAYC,EAAM,CACzB,IAAMC,EAAMxC,EAAQ,IAAI,EACxB,OAAIwC,EAAI,UAAY,OAClBA,EAAI,QAAUD,EAAK,GAEdC,EAAI,OACb,CAIA,IAAIC,GAAY,CACd,WAAY,OACZ,QAAS,OACT,cAAe,SACf,eAAgB,SAChB,WAAY,SACZ,WAAY,QACZ,aAAc,WACd,SAAU,SACV,UAAW,EACX,MAAO,OACP,OAAQ,MACV,EACIC,GAAa,CACf,GAAGD,GACH,OAAQ,sCACR,aAAc,EACd,SAAU,OACV,gBAAiB,2BACjB,MAAO,SACT,EACIE,GAAY,CACd,SAAU,SACV,WAAY,SACZ,aAAc,WACd,SAAU,OACV,WAAY,EACZ,QAAS,QACX,EACIC,GAAa,CACf,GAAGD,GACH,WAAY,GACd,EACIE,GAAe,CACjB,GAAGF,GACH,WAAY,MACZ,UAAW,8FACX,gBAAiB,yDACnB,EACA,SAASG,GAAiBX,EAAO,CAC/B,GAAM,CAAE,MAAA1C,EAAO,KAAAsD,CAAK,EAAIZ,EAClBa,EAAQD,EAAO,YAAYE,GAAWF,CAAI,IAAM,QAChDG,EAAUzD,aAAiB,MAAQA,EAAM,QAAU,GAAKA,EAC9D,OAAuBJ,EAAQ,cAAc,MAAO,CAAE,MAAOqD,EAAW,EAAmBrD,EAAQ,cAAc,MAAO,CAAE,UAAW,OAAQ,MAAOuD,EAAW,EAAGI,CAAK,EAAGE,GAA2B7D,EAAQ,cAAc,MAAO,CAAE,UAAW,OAAQ,MAAOwD,EAAa,EAAGK,CAAO,CAAC,CACxR,CACA,SAASD,GAAWD,EAAO,CACzB,OAAIA,EAAM,WAAW,IAAI,EAChBA,EAAM,QAAQ,KAAM,EAAE,EAExBA,CACT,CA4KA,IAAIG,GAAsB,IAAM,EA8HhC,SAASC,EAAeC,EAAO,CAC7B,OAAO,OAAOA,GAAU,UAAY,SAASA,CAAK,CACpD,CAMA,SAASC,GAAQC,EAAK,CACpB,MAAO,CAACA,GAAO,CAAC,OAAO,KAAKA,CAAG,EAAE,QAAUA,EAAI,cAAgB,MACjE,CACA,SAASC,GAAeC,EAAO,CAC7B,OAAO,OAAOA,GAAU,UAAY,OAAOA,GAAU,QACvD,CACA,SAASC,GAAaD,EAAO,CAC3B,OAAOA,IAAU,MAAQ,OAAOA,EAAU,KAAe,OAAOA,GAAU,WAAa,CAACH,GAAQG,CAAK,CACvG,CAGA,IAAIE,IACFC,GAAU,CACV,SAASC,EAAOC,EAAMC,EAAO,CAC3B,OAAID,IAASC,EACJ,GACL,CAACD,GAAQ,CAACC,EACL,GACFD,EAAK,IAAMC,EAAM,GAAKD,EAAK,IAAMC,EAAM,GAAKD,EAAK,QAAUC,EAAM,OAASD,EAAK,SAAWC,EAAM,MACzG,CACAH,EAAM,OAASC,EACfD,EAAM,SAAYI,IACT,CAAE,GAAGA,EAAO,EAAG,EAAG,EAAG,CAAE,GAEhCJ,EAAM,cAAgB,CAACK,EAAGC,KACjB,CACL,EAAG,KAAK,IAAID,EAAE,EAAGC,EAAE,CAAC,EACpB,EAAG,KAAK,IAAID,EAAE,EAAGC,EAAE,CAAC,EACpB,MAAO,KAAK,IAAID,EAAE,EAAIC,EAAE,CAAC,EACzB,OAAQ,KAAK,IAAID,EAAE,EAAIC,EAAE,CAAC,CAC5B,GAEFN,EAAM,SAAYE,IACT,CACL,EAAGA,EAAK,KACR,EAAGA,EAAK,IACR,MAAOA,EAAK,MAAQA,EAAK,KACzB,OAAQA,EAAK,OAASA,EAAK,GAC7B,GAEFF,EAAM,SAAW,CAACE,EAAMK,KACf,CACL,EAAGL,EAAK,EAAIK,EACZ,EAAGL,EAAK,EAAIK,EACZ,MAAOL,EAAK,MAAQK,EACpB,OAAQL,EAAK,OAASK,CACxB,GAEFP,EAAM,OAAS,CAACE,EAAMK,OACTP,EAAM,UAAUE,EAAM,EAAIK,CAAC,EAExCP,EAAM,OAAS,CAACE,EAAMM,IAAU,CAC9B,IAAMC,EAAU,OAAOD,EAAM,GAAM,SAAWA,EAAM,EAAI,EAClDE,EAAU,OAAOF,EAAM,GAAM,SAAWA,EAAM,EAAI,EACxD,MAAO,CACL,GAAGN,EACH,EAAGA,EAAK,EAAIO,EACZ,EAAGP,EAAK,EAAIQ,CACd,CACF,EACA,SAASC,EAAQT,EAAMU,EAAO,CAC5B,GAAIA,IAAU,EACZ,OAAOV,EACT,IAAMW,EAAc,EAAID,EACxB,MAAO,CACL,EAAGV,EAAK,EAAIU,EACZ,EAAGV,EAAK,EAAIU,EACZ,MAAOV,EAAK,MAAQW,EACpB,OAAQX,EAAK,OAASW,CACxB,CACF,CACAb,EAAM,QAAUW,EAChBX,EAAM,aAAgBE,GAAS,CAC7B,IAAMY,EAAI,KAAK,MAAMZ,EAAK,CAAC,EACrBa,EAAI,KAAK,MAAMb,EAAK,CAAC,EACrBc,EAAW,KAAK,MAAMd,EAAK,EAAIA,EAAK,KAAK,EACzCe,EAAW,KAAK,MAAMf,EAAK,EAAIA,EAAK,MAAM,EAC1CgB,EAAQ,KAAK,IAAIF,EAAWF,EAAG,CAAC,EAChCK,EAAS,KAAK,IAAIF,EAAWF,EAAG,CAAC,EACvC,MAAO,CAAE,EAAAD,EAAG,EAAAC,EAAG,MAAAG,EAAO,OAAAC,CAAO,CAC/B,EACAnB,EAAM,iBAAoBE,GAAS,CACjC,IAAMY,EAAI,KAAK,MAAMZ,EAAK,EAAI,CAAC,EAAI,EAC7Ba,EAAI,KAAK,MAAMb,EAAK,EAAI,CAAC,EAAI,EAC7Bc,EAAW,KAAK,OAAOd,EAAK,EAAIA,EAAK,OAAS,CAAC,EAAI,EACnDe,EAAW,KAAK,OAAOf,EAAK,EAAIA,EAAK,QAAU,CAAC,EAAI,EACpDgB,EAAQ,KAAK,IAAIF,EAAWF,EAAG,CAAC,EAChCK,EAAS,KAAK,IAAIF,EAAWF,EAAG,CAAC,EACvC,MAAO,CAAE,EAAAD,EAAG,EAAAC,EAAG,MAAAG,EAAO,OAAAC,CAAO,CAC/B,EACAnB,EAAM,MAAQ,CAACE,EAAMkB,EAAW,IAAM,CACpC,IAAMN,EAAIO,GAAcnB,EAAK,EAAGkB,CAAQ,EAClCL,EAAIM,GAAcnB,EAAK,EAAGkB,CAAQ,EAClCF,EAAQG,GAAcnB,EAAK,MAAOkB,CAAQ,EAC1CD,EAASE,GAAcnB,EAAK,OAAQkB,CAAQ,EAClD,MAAO,CAAE,EAAAN,EAAG,EAAAC,EAAG,MAAAG,EAAO,OAAAC,CAAO,CAC/B,EACAnB,EAAM,eAAkBE,GAAS,CAC/B,IAAMY,EAAI,KAAK,MAAMZ,EAAK,CAAC,EACrBa,EAAI,KAAK,MAAMb,EAAK,CAAC,EACrBc,EAAW,KAAK,KAAKd,EAAK,EAAIA,EAAK,KAAK,EACxCe,EAAW,KAAK,KAAKf,EAAK,EAAIA,EAAK,MAAM,EACzCgB,EAAQ,KAAK,IAAIF,EAAWF,EAAG,CAAC,EAChCK,EAAS,KAAK,IAAIF,EAAWF,EAAG,CAAC,EACvC,MAAO,CAAE,EAAAD,EAAG,EAAAC,EAAG,MAAAG,EAAO,OAAAC,CAAO,CAC/B,EACAnB,EAAM,KAAQE,GACLA,EAAK,EAEdF,EAAM,KAAQE,GACLA,EAAK,EAAIA,EAAK,MAEvBF,EAAM,KAAQE,GACLA,EAAK,EAEdF,EAAM,KAAQE,GACLA,EAAK,EAAIA,EAAK,OAEvBF,EAAM,UAAaE,IACV,CACL,KAAMA,EAAK,EACX,KAAMA,EAAK,EAAIA,EAAK,MAAQ,EAC5B,QAAUF,EAAM,MAAME,CAAI,EAC1B,KAAMA,EAAK,EACX,KAAMA,EAAK,EAAIA,EAAK,OAAS,EAC7B,QAAUF,EAAM,MAAME,CAAI,CAC5B,GAEFF,EAAM,OAAUE,IACP,CACL,EAAGA,EAAK,EAAIA,EAAK,MAAQ,EACzB,EAAGA,EAAK,EAAIA,EAAK,OAAS,CAC5B,GAEFF,EAAM,WAAcsB,GAAO,CACzB,IAAMC,EAAUD,EAAG,IAAKE,GAAUA,EAAM,CAAC,EACnCC,EAAUH,EAAG,IAAKE,GAAUA,EAAM,CAAC,EACnCV,EAAI,KAAK,IAAI,GAAGS,CAAO,EACvBR,EAAI,KAAK,IAAI,GAAGU,CAAO,EACvBP,EAAQ,KAAK,IAAI,GAAGK,CAAO,EAAIT,EAC/BK,EAAS,KAAK,IAAI,GAAGM,CAAO,EAAIV,EACtC,MAAO,CAAE,EAAAD,EAAG,EAAAC,EAAG,MAAAG,EAAO,OAAAC,CAAO,CAC/B,EACAnB,EAAM,MAAQ,IAAIE,IAAS,CACzB,IAAMwB,EAAM,CACV,EAAG,KAAK,IAAI,GAAGxB,EAAK,IAAIF,EAAM,IAAI,CAAC,EACnC,EAAG,KAAK,IAAI,GAAGE,EAAK,IAAIF,EAAM,IAAI,CAAC,CACrC,EACM2B,EAAM,CACV,EAAG,KAAK,IAAI,GAAGzB,EAAK,IAAIF,EAAM,IAAI,CAAC,EACnC,EAAG,KAAK,IAAI,GAAGE,EAAK,IAAIF,EAAM,IAAI,CAAC,CACrC,EACA,SAAWA,EAAM,eAAe0B,EAAKC,CAAG,CAC1C,EACA3B,EAAM,aAAe,CAAC4B,EAAOC,IAAU,CACrC,IAAMf,EAAI,KAAK,IAAIc,EAAM,EAAGC,EAAM,CAAC,EAC7BC,EAAK,KAAK,IAAIF,EAAM,EAAIA,EAAM,MAAOC,EAAM,EAAIA,EAAM,KAAK,EAC1Dd,EAAI,KAAK,IAAIa,EAAM,EAAGC,EAAM,CAAC,EAC7BE,EAAK,KAAK,IAAIH,EAAM,EAAIA,EAAM,OAAQC,EAAM,EAAIA,EAAM,MAAM,EAClE,MAAO,CAAE,EAAAf,EAAG,EAAAC,EAAG,MAAOe,EAAKhB,EAAG,OAAQiB,EAAKhB,CAAE,CAC/C,EACAf,EAAM,OAAUE,GACP,CACL,CAAE,KAAOF,EAAM,MAAME,CAAI,EAAG,KAAOF,EAAM,MAAME,CAAI,CAAE,EACrD,CAAE,KAAOF,EAAM,MAAME,CAAI,EAAG,KAAOF,EAAM,MAAME,CAAI,CAAE,EACrD,CAAE,KAAOF,EAAM,MAAME,CAAI,EAAG,KAAOF,EAAM,MAAME,CAAI,CAAE,EACrD,CAAE,KAAOF,EAAM,MAAME,CAAI,EAAG,KAAOF,EAAM,MAAME,CAAI,CAAE,CACvD,EAEFF,EAAM,UAAY,CAACE,EAAM8B,IAAW,CAClC,GAAM,CAAE,EAAGC,EAAI,EAAGC,CAAG,EAAIF,EAAO,eAAe,CAAE,EAAG9B,EAAK,EAAG,EAAGA,EAAK,CAAE,CAAC,EACjE,CAAE,EAAG4B,EAAI,EAAGC,CAAG,EAAIC,EAAO,eAAe,CAAE,EAAG9B,EAAK,EAAIA,EAAK,MAAO,EAAGA,EAAK,CAAE,CAAC,EAC9E,CAAE,EAAGiC,EAAI,EAAGC,CAAG,EAAIJ,EAAO,eAAe,CAAE,EAAG9B,EAAK,EAAIA,EAAK,MAAO,EAAGA,EAAK,EAAIA,EAAK,MAAO,CAAC,EAC5F,CAAE,EAAGmC,EAAI,EAAGC,CAAG,EAAIN,EAAO,eAAe,CAAE,EAAG9B,EAAK,EAAG,EAAGA,EAAK,EAAIA,EAAK,MAAO,CAAC,EAC/EY,EAAI,KAAK,IAAImB,EAAIH,EAAIK,EAAIE,CAAE,EAC3BnB,EAAQ,KAAK,IAAIe,EAAIH,EAAIK,EAAIE,CAAE,EAAIvB,EACnCC,EAAI,KAAK,IAAImB,EAAIH,EAAIK,EAAIE,CAAE,EAC3BnB,EAAS,KAAK,IAAIe,EAAIH,EAAIK,EAAIE,CAAE,EAAIvB,EAC1C,MAAO,CAAE,EAAAD,EAAG,EAAAC,EAAG,MAAAG,EAAO,OAAAC,CAAO,CAC/B,EACAnB,EAAM,cAAgB,CAACE,EAAMsB,IACvB,EAAAA,EAAM,KAAQxB,EAAM,MAAME,CAAI,GAG9BsB,EAAM,KAAQxB,EAAM,MAAME,CAAI,GAG9BsB,EAAM,KAAQxB,EAAM,MAAME,CAAI,GAG9BsB,EAAM,KAAQxB,EAAM,MAAME,CAAI,GAG9B,MAAMA,EAAK,CAAC,GAGZ,MAAMA,EAAK,CAAC,GAKlBF,EAAM,aAAe,CAACuC,EAAOC,IAAU,CACrC,QAAWhB,OAAaxB,EAAM,QAAQwC,CAAK,EACzC,GAAI,IAAKxC,EAAM,eAAeuC,EAAOf,CAAK,EACxC,MAAO,GAGX,MAAO,EACT,EACAxB,EAAM,MAASE,IACN,CACL,QAAS,QACT,UAAW,aAAaA,EAAK,QAAQA,EAAK,OAC1C,MAAO,GAAGA,EAAK,UACf,OAAQ,GAAGA,EAAK,UAClB,GAEFF,EAAM,MAAQ,CAACE,EAAMK,KACZ,CACL,EAAGL,EAAK,EAAIK,EACZ,EAAGL,EAAK,EAAIK,EACZ,MAAO,KAAK,IAAI,EAAGL,EAAK,MAAQ,EAAIK,CAAC,EACrC,OAAQ,KAAK,IAAI,EAAGL,EAAK,OAAS,EAAIK,CAAC,CACzC,GAEFP,EAAM,WAAa,CAACuC,EAAOC,IAClB,EAAEA,EAAM,MAASxC,EAAM,MAAMuC,CAAK,MAASvC,EAAM,MAAMwC,CAAK,GAAKD,EAAM,GAAKC,EAAM,MAASxC,EAAM,MAAMuC,CAAK,MAASvC,EAAM,MAAMwC,CAAK,GAAKD,EAAM,GAE1JvC,EAAM,oBAAsB,CAACuC,EAAOC,IAAU,CAC5C,IAAMC,EAAOzC,EAAM,KAAKuC,CAAK,EACvBG,EAAO1C,EAAM,KAAKwC,CAAK,EAC7B,OAAOC,EAAOD,EAAM,GAAKE,EAAOH,EAAM,CACxC,EACAvC,EAAM,kBAAoB,CAACuC,EAAOC,IAAU,CAC1C,IAAMC,EAAOzC,EAAM,KAAKuC,CAAK,EACvBG,EAAO1C,EAAM,KAAKwC,CAAK,EAC7B,OAAOC,EAAOD,EAAM,GAAKE,EAAOH,EAAM,CACxC,EACAvC,EAAM,iBAAmB,CAACE,EAAMyC,IACvBA,EAAM,KAAMC,GACV5C,EAAM,WAAW4C,EAAe1C,CAAI,CAC5C,IAAM,OAETF,EAAM,QAAU,CAACuC,EAAOC,IAAU,CAChC,GAAID,GAASC,EAAO,CAClB,GAAM,CAAE,EAAA1B,EAAG,EAAAC,EAAG,MAAAG,EAAO,OAAAC,CAAO,EAAIoB,EAChC,OAAOC,EAAM,IAAM1B,GAAK0B,EAAM,IAAMzB,GAAKyB,EAAM,QAAUtB,GAASsB,EAAM,SAAWrB,CACrF,KACE,QAAOoB,IAAUC,CAErB,EACAxC,EAAM,aAAgBE,GAAS,CAC7B,IAAM2C,EAAW3C,EAAK,EAChBc,EAAWd,EAAK,EAAIA,EAAK,MACzB4C,EAAW5C,EAAK,EAChBe,EAAWf,EAAK,EAAIA,EAAK,OAK/B,MAAO,CAJS,CAAE,EAAG2C,EAAU,EAAGC,CAAS,EAC3B,CAAE,EAAG9B,EAAU,EAAG8B,CAAS,EAC3B,CAAE,EAAG9B,EAAU,EAAGC,CAAS,EAC3B,CAAE,EAAG4B,EAAU,EAAG5B,CAAS,CACD,CAC5C,EACAjB,EAAM,UAAaE,GAAS,CAC1B,IAAM2C,EAAW3C,EAAK,EAChB6C,EAAW7C,EAAK,EAAIA,EAAK,MAAQ,EACjCc,EAAWd,EAAK,EAAIA,EAAK,MACzB4C,EAAW5C,EAAK,EAChB8C,EAAW9C,EAAK,EAAIA,EAAK,OAAS,EAClCe,EAAWf,EAAK,EAAIA,EAAK,OAK/B,MAAO,CAJS,CAAE,EAAG6C,EAAU,EAAGD,CAAS,EAC3B,CAAE,EAAG9B,EAAU,EAAGgC,CAAS,EAC3B,CAAE,EAAGD,EAAU,EAAG9B,CAAS,EAC3B,CAAE,EAAG4B,EAAU,EAAGG,CAAS,CACD,CAC5C,EACAhD,EAAM,cAAgB,CAACE,EAAMsB,IAAU,CACrC,IAAIV,EAAI,EACJC,EAAI,EACR,OAAIS,EAAM,EAAItB,EAAK,EACjBY,EAAIZ,EAAK,EAAIsB,EAAM,EACVA,EAAM,EAAIxB,EAAM,KAAKE,CAAI,IAClCY,EAAIU,EAAM,EAAIxB,EAAM,KAAKE,CAAI,GAE3BsB,EAAM,EAAItB,EAAK,EACjBa,EAAIb,EAAK,EAAIsB,EAAM,EACVA,EAAM,EAAIxB,EAAM,KAAKE,CAAI,IAClCa,EAAIS,EAAM,EAAIxB,EAAM,KAAKE,CAAI,GAExB+C,GAAM,SAAS,CAAE,EAAAnC,EAAG,EAAAC,CAAE,EAAG,CAAE,EAAG,EAAG,EAAG,CAAE,CAAC,CAChD,EACA,IAAMmC,EAAkB,CACtB,EAAG,EACH,EAAG,EACH,MAAO,EACP,OAAQ,CACV,EACAlD,EAAM,QAAU,CAACE,EAAMiD,EAAWD,KACzB,CACL,EAAGhD,EAAK,GAAKiD,EAAS,EACtB,EAAGjD,EAAK,GAAKiD,EAAS,EACtB,MAAOjD,EAAK,OAASiD,EAAS,MAC9B,OAAQjD,EAAK,QAAUiD,EAAS,MAClC,EAEJ,GAAGpD,KAASA,GAAO,CAAC,EAAE,EA6BtB,IAAIqD,IACFC,GAAoB,CACpBA,EAAgB,SAAYC,KACtBA,EAAY,YAAc,GAAgBA,EAAY,aAAe,KACvEA,EAAY,YAAc,MAExBC,EAAeD,EAAY,WAAW,IACpCA,EAAY,MAAQA,EAAY,QAClCA,EAAY,UAAY,GAEtBA,EAAY,KAAOA,EAAY,SACjCA,EAAY,WAAa,GAEvBA,EAAY,MAAQA,EAAY,OAASA,EAAY,KAAOA,EAAY,SAC1EA,EAAY,OAAS,IAEnBA,EAAY,YAAc,GAAuBA,EAAY,aAAe,IAC9EA,EAAY,WAAa,IAGzBA,EAAY,MAAQA,EAAY,SAC9BA,EAAY,WAAaA,EAAY,YAAc,GAAgBC,EAAeD,EAAY,QAAQ,KACxGA,EAAY,MAAQ,IAEtBA,EAAY,UAAY,GAEtBA,EAAY,KAAOA,EAAY,UAC7BA,EAAY,WAAaA,EAAY,aAAe,GAAgBC,EAAeD,EAAY,SAAS,KAC1GA,EAAY,OAAS,IAEvBA,EAAY,WAAa,GAEpBA,EAEX,GAAGF,KAAmBA,GAAiB,CAAC,EAAE,EAC1C,SAASI,GAAqBC,EAAO,CACnC,GAAI,OAAOA,GAAU,SAAU,CAC7B,IAAMC,EAAeD,EAAM,KAAK,EAChC,GAAIC,IAAiB,OACnB,MAAO,GACT,GAAIA,EAAa,SAAS,IAAI,EAC5B,MAAO,GACT,GAAIA,EAAa,SAAS,GAAG,EAC3B,MAAO,GACT,GAAIA,EAAa,SAAS,IAAI,GAAKA,EAAa,SAAS,IAAI,EAC3D,MAAO,EACX,CACA,MAAO,EACT,CACA,IAAIC,IACFC,GAAsB,CACtBA,EAAkB,eAAkBC,GAAU,CAC5C,GAAM,CAAE,KAAAC,EAAM,MAAAC,EAAO,IAAAC,EAAK,OAAAC,EAAQ,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,EAAS,QAAAC,EAAS,YAAAC,EAAa,SAAAC,CAAS,EAAIV,EACvFP,EAAcF,GAAe,SAAS,CAC1C,KAAMG,EAAeO,CAAI,GAAKU,GAAaV,CAAI,EAC/C,MAAOP,EAAeQ,CAAK,GAAKS,GAAaT,CAAK,EAClD,IAAKR,EAAeS,CAAG,GAAKQ,GAAaR,CAAG,EAC5C,OAAQT,EAAeU,CAAM,GAAKO,GAAaP,CAAM,EACrD,UAAWT,GAAqBU,CAAK,EACrC,WAAYV,GAAqBW,CAAM,EACvC,YAAaG,GAAe,KAC5B,UAAWC,IAAa,EAC1B,CAAC,EACGE,EAAa,KACbC,EAAc,KACdC,EAAY,EACZC,EAAa,EACjB,GAAItB,EAAY,YAAc,GAAuB,OAAOY,GAAU,SAAU,CAC9E,IAAMW,EAAc,WAAWX,CAAK,EAChCA,EAAM,SAAS,IAAI,GACrBS,EAAY,EACZF,EAAaI,GACJX,IAAU,OACnBS,EAAY,GAEZA,EAAY,EACZF,EAAaI,EAAc,IAE/B,MAAWX,IAAU,QAAU,OAAOA,GAAU,WAC9CO,EAAaK,GAAW,UAAUZ,CAAK,GAEzC,GAAIZ,EAAY,aAAe,GAAuB,OAAOa,GAAW,SAAU,CAChF,IAAMY,EAAe,WAAWZ,CAAM,EAClCA,EAAO,SAAS,IAAI,GACtBS,EAAa,EACbF,EAAcK,GACLZ,IAAW,OACpBS,EAAa,GAEbA,EAAa,EACbF,EAAc,WAAWP,CAAM,EAAI,IAEvC,MAAWA,IAAW,QAAU,OAAOA,GAAW,WAChDO,EAAcI,GAAW,UAAUX,CAAM,GAE3C,IAAIa,EAAgB,GAChBC,EAAgB,GACpB,OAAIb,IACFY,EAAgB,WAAWZ,CAAO,EAAI,KAEpCC,IACFY,EAAgB,WAAWZ,CAAO,EAAI,KAEjC,CACL,KAAMf,EAAY,KAAOwB,GAAW,UAAUhB,CAAI,EAAI,KACtD,MAAOR,EAAY,MAAQwB,GAAW,UAAUf,CAAK,EAAI,KACzD,IAAKT,EAAY,IAAMwB,GAAW,UAAUd,CAAG,EAAI,KACnD,OAAQV,EAAY,OAASwB,GAAW,UAAUb,CAAM,EAAI,KAC5D,UAAAU,EACA,WAAAC,EACA,MAAOH,EACP,OAAQC,EACR,YAAapB,EAAY,aAAe,KACxC,cAAA0B,EACA,cAAAC,CACF,CACF,EACArB,EAAkB,OAAS,CAACsB,EAAQC,EAAYZ,EAAUa,IAAc,CACtE,IAAIlB,EAAQ,KACRC,EAAS,KACPkB,EAAcF,EAAaL,GAAW,UAAUK,EAAW,KAAK,EAAI,KACpEG,EAAeH,EAAaL,GAAW,UAAUK,EAAW,MAAM,EAAI,KACtEI,EAAsBC,GAAaN,EAAO,KAAMA,EAAO,KAAK,EAClE,GAAIG,GAAe9B,EAAegC,CAAmB,EACnDrB,EAAQmB,EAAcE,UACbhB,GAAYW,EAAO,YAAc,EAC1ChB,EAAQK,EAAS,cACRhB,EAAe2B,EAAO,KAAK,EACpC,OAAQA,EAAO,UAAW,CACxB,IAAK,GACHhB,EAAQgB,EAAO,MACf,MACF,IAAK,GACHhB,EAAQkB,EAAYA,EAAU,kBAAkB,MAAQA,EAAU,qBAAqB,MAAQF,EAAO,MAAQ,KAC9G,MACF,IAAK,GACL,IAAK,GACCG,IACFnB,EAAQmB,EAAcH,EAAO,OAE/B,MACF,IAAK,GACH,MACF,QACEO,GAAYP,EAAO,SAAS,CAChC,CAEF,IAAMQ,EAAsBF,GAAaN,EAAO,IAAKA,EAAO,MAAM,EAClE,GAAII,GAAgB/B,EAAemC,CAAmB,EACpDvB,EAASmB,EAAeI,UACfnB,GAAYW,EAAO,aAAe,EAC3Cf,EAASI,EAAS,eACThB,EAAe2B,EAAO,MAAM,EACrC,OAAQA,EAAO,WAAY,CACzB,IAAK,GACHf,EAASe,EAAO,OAChB,MACF,IAAK,GACHf,EAASiB,EAAYA,EAAU,kBAAkB,OAASA,EAAU,qBAAqB,OAASF,EAAO,OAAS,KAClH,MACF,IAAK,GACL,IAAK,GACCI,IACFnB,EAASmB,EAAeJ,EAAO,QAEjC,MACF,IAAK,GACH,MACF,QACEO,GAAYP,EAAO,UAAU,CACjC,CAEF,OAAOS,GAAwCzB,EAAOC,EAAQe,EAAQ,CACpE,OAAQI,GAAsC,EAC9C,MAAOD,GAAoC,CAC7C,CAAC,CACH,EACAzB,EAAkB,OAAS,CAACsB,EAAQU,EAAiB,KAAMrB,EAAW,KAAMsB,EAAa,GAAOT,EAAY,OAAS,CACnH,IAAIU,EAAIC,EACR,IAAIC,EAAId,EAAO,MAAQ,EACnBe,EAAIf,EAAO,KAAO,EAChBgB,GAAuBJ,EAAuCF,GAAe,SAAW,KAAOE,EAAK,KACpGK,GAA4BJ,EAAuCH,GAAe,cAAgB,KAAOG,EAAK,KAC9G,CAAE,MAAA7B,EAAO,OAAAC,CAAO,EAAIP,EAAkB,OAAOsB,EAAQgB,EAAqB3B,EAAUa,CAAS,EAC7FgB,EAAyBD,EAA2BrB,GAAW,UAAUqB,EAAyB,KAAK,EAAI,KAC3GE,EAA0BF,EAA2BrB,GAAW,UAAUqB,EAAyB,MAAM,EAAI,KAC/GjB,EAAO,OAAS,KAClBc,EAAId,EAAO,KACFkB,GAA0BlB,EAAO,QAAU,KACpDc,EAAII,EAAyBlB,EAAO,MAAQhB,EACnCkC,IACTJ,EAAId,EAAO,cAAgBkB,EAAyBlC,EAAQ,GAE1DgB,EAAO,MAAQ,KACjBe,EAAIf,EAAO,IACFmB,GAA2BnB,EAAO,SAAW,KACtDe,EAAII,EAA0BnB,EAAO,OAASf,EACrCkC,IACTJ,EAAIf,EAAO,cAAgBmB,EAA0BlC,EAAS,GAEhE,IAAMmC,EAAI,CAAE,EAAAN,EAAG,EAAAC,EAAG,MAAA/B,EAAO,OAAAC,CAAO,EAChC,OAAI0B,EACKU,GAAK,aAAaD,CAAC,EAErBA,CACT,CACF,GAAG3C,KAAqBA,GAAmB,CAAC,EAAE,EAC9C,IAAI6C,GAAe,IACfC,GAAgB,IACpB,SAASC,GAAmBC,EAAYlD,EAAO0B,EAAY,CACzD,GAAI,OAAO1B,GAAU,SAAU,CAC7B,GAAIA,EAAM,SAAS,GAAG,GAAK0B,EACzB,OAAQwB,EAAY,CAClB,IAAK,WACL,IAAK,WACH,OAAO,WAAWlD,CAAK,EAAI,IAAM0B,EAAW,MAC9C,IAAK,YACL,IAAK,YACH,OAAO,WAAW1B,CAAK,EAAI,IAAM0B,EAAW,OAC9C,QACE,KACJ,CAEF,OAAO,WAAW1B,CAAK,CACzB,CACA,OAAOA,CACT,CACA,SAASmD,GAAgBzC,EAAQe,EAAQC,EAAY,CACnD,OAAID,EAAO,YACTf,EAAS,KAAK,IAAIuC,GAAmB,YAAaxB,EAAO,UAAWC,CAAU,EAAGhB,CAAM,GAErFe,EAAO,YACTf,EAAS,KAAK,IAAIuC,GAAmB,YAAaxB,EAAO,UAAWC,CAAU,EAAGhB,CAAM,GAElFA,CACT,CACA,SAAS0C,GAAe3C,EAAOgB,EAAQC,EAAY,CACjD,OAAID,EAAO,WACThB,EAAQ,KAAK,IAAIwC,GAAmB,WAAYxB,EAAO,SAAUC,CAAU,EAAGjB,CAAK,GAEjFgB,EAAO,WACThB,EAAQ,KAAK,IAAIwC,GAAmB,WAAYxB,EAAO,SAAUC,CAAU,EAAGjB,CAAK,GAE9EA,CACT,CACA,SAASyB,GAAwCzB,EAAOC,EAAQe,EAAQC,EAAY,CAClF,IAAI2B,EAAID,GAAetD,EAAeW,CAAK,EAAIA,EAAQsC,GAActB,EAAQC,CAAU,EACnF4B,EAAIH,GAAgBrD,EAAeY,CAAM,EAAIA,EAASsC,GAAevB,EAAQC,CAAU,EAC3F,OAAI5B,EAAe2B,EAAO,WAAW,GAAKA,EAAO,YAAc,IACzD3B,EAAe2B,EAAO,IAAI,GAAK3B,EAAe2B,EAAO,KAAK,EAC5D6B,EAAID,EAAI5B,EAAO,YACN3B,EAAe2B,EAAO,GAAG,GAAK3B,EAAe2B,EAAO,MAAM,EACnE4B,EAAIC,EAAI7B,EAAO,YACNA,EAAO,YAAc,EAC9B6B,EAAID,EAAI5B,EAAO,YAEf4B,EAAIC,EAAI7B,EAAO,aAGZ,CACL,MAAO4B,EACP,OAAQC,CACV,CACF,CACA,SAASvB,GAAawB,EAAOC,EAAK,CAChC,MAAI,CAAC1D,EAAeyD,CAAK,GAAK,CAACzD,EAAe0D,CAAG,EACxC,KACFD,EAAQC,CACjB,CAYA,SAASC,GAAUC,EAAG,CACpB,OAAO,OAAOA,GAAM,QACtB,CACA,SAASC,GAA4BC,EAAO,CAC1C,GAAM,CAAE,KAAAC,EAAM,MAAAC,EAAO,IAAAC,EAAK,OAAAC,EAAQ,OAAAC,CAAO,EAAIL,EAO7C,MANI,IAACE,EAAOE,CAAM,EAAE,KAAKP,EAAS,GAG9BA,GAAUI,CAAI,IAAM,CAACI,GAAUA,IAAW,MAG1CR,GAAUM,CAAG,IAAM,CAACE,GAAUA,IAAW,KAI/C,CACA,SAASC,GAAmBN,EAAO,CACjC,GAAM,CAAE,aAAAO,CAAa,EAAIP,EAIzB,MAHI,CAACO,GAGDR,GAA4BC,CAAK,EAC5B,GAEFO,EAAa,OACtB,CACA,SAASC,GAA0BR,EAAO,CACxC,GAAM,CAAE,KAAMS,CAAM,EAAIT,EACpB,CAAE,MAAAU,EAAO,OAAAC,CAAO,EAAIX,EASxB,OARIY,EAAeH,CAAK,IAClBC,IAAU,SACZA,EAAQD,GAENE,IAAW,SACbA,EAASF,IAGTG,EAAeF,CAAK,GAAKE,EAAeD,CAAM,EACzC,CACL,MAAAD,EACA,OAAAC,CACF,EAEK,IACT,CACA,SAASE,GAA0Bb,EAAO,CACxC,IAAMS,EAAQD,GAA0BR,CAAK,EAC7C,GAAIS,IAAU,KACZ,OAAO,KAET,GAAM,CAAE,KAAAR,EAAM,IAAAE,CAAI,EAAIH,EACtB,OAAIY,EAAeX,CAAI,GAAKW,EAAeT,CAAG,EACrC,CACL,EAAGF,EACH,EAAGE,EACH,GAAGM,CACL,EAEK,IACT,CACA,SAASK,GAAcd,EAAOe,EAAYC,EAAa,GAAM,CAC3D,GAAIhB,EAAM,eAAiBA,EAAM,iBAC/B,OAAO,KACT,IAAMiB,EAAqBF,IAAeG,GAAgB,UAAYH,IAAeG,GAAgB,wBACrG,GAAI,CAACZ,GAAmBN,CAAK,GAAKiB,EAChC,OAAOJ,GAA0Bb,CAAK,EAExC,IAAMmB,EAAmBC,GAAoBpB,CAAK,EAC5CqB,EAAoBC,GAAqBP,CAAU,EACnDQ,EAAiBF,EAAoB,CAAE,OAAQA,EAAmB,YAAaA,CAAkB,EAAI,KAC3G,OAAOG,GAAiB,OAAOL,EAAkBI,EAAgB,KAAMP,EAAY,IAAI,CACzF,CACA,SAASI,GAAoBpB,EAAO,CAClC,GAAM,CAAE,KAAAC,EAAM,MAAAC,EAAO,IAAAC,EAAK,OAAAC,EAAQ,OAAAC,EAAQ,aAAAE,EAAc,KAAME,CAAM,EAAIT,EACpE,CAAE,MAAAU,EAAO,OAAAC,CAAO,EAAIX,EACpBU,IAAU,SACZA,EAAQD,GAENE,IAAW,SACbA,EAASF,GAEX,GAAM,CAAE,YAAAgB,EAAa,SAAAC,CAAS,EAAInB,EAC5BoB,EAAiBC,GAAe,SAAS,CAC7C,KAAMhB,EAAeX,CAAI,EACzB,MAAOW,EAAeV,CAAK,EAC3B,IAAKU,EAAeT,CAAG,EACvB,OAAQS,EAAeR,CAAM,EAC7B,UAAWyB,GAAqBnB,CAAK,EACrC,WAAYmB,GAAqBlB,CAAM,EACvC,YAAac,GAAe,KAC5B,UAAWC,IAAa,EAC1B,CAAC,EACGI,EAAa,KACbC,EAAc,KACdC,EAAY,EACZC,EAAa,EACjB,GAAIN,EAAe,YAAc,GAAuB,OAAOjB,GAAU,SAAU,CACjF,IAAMwB,EAAc,WAAWxB,CAAK,EAChCA,EAAM,SAAS,IAAI,GACrBsB,EAAY,EACZF,EAAaI,GACJxB,IAAU,OACnBsB,EAAY,GAEZA,EAAY,EACZF,EAAaI,EAAc,IAE/B,MAAWxB,IAAU,QAAU,OAAOA,GAAU,WAC9CoB,EAAapB,GAEf,GAAIiB,EAAe,aAAe,GAAuB,OAAOhB,GAAW,SAAU,CACnF,IAAMwB,EAAe,WAAWxB,CAAM,EAClCA,EAAO,SAAS,IAAI,GACtBsB,EAAa,EACbF,EAAcI,GACLxB,IAAW,OACpBsB,EAAa,GAEbA,EAAa,EACbF,EAAc,WAAWpB,CAAM,EAAI,IAEvC,MAAWA,IAAW,QAAU,OAAOA,GAAW,WAChDoB,EAAcpB,GAEhB,IAAIyB,EAAgB,GAChBC,EAAgB,GACpB,OAAIhC,IAAW,IAAQA,IAAW,OAChCsB,EAAe,KAAO,GAClB,OAAO1B,GAAS,WAClBmC,EAAgB,WAAWnC,CAAI,EAAI,OAGnCI,IAAW,IAAQA,IAAW,OAChCsB,EAAe,IAAM,GACjB,OAAOxB,GAAQ,WACjBkC,EAAgB,WAAWlC,CAAG,EAAI,MAG/B,CACL,KAAMwB,EAAe,KAAO1B,EAAO,KACnC,MAAO0B,EAAe,MAAQzB,EAAQ,KACtC,IAAKyB,EAAe,IAAMxB,EAAM,KAChC,OAAQwB,EAAe,OAASvB,EAAS,KACzC,UAAA4B,EACA,WAAAC,EACA,MAAOH,EACP,OAAQC,EACR,YAAaJ,EAAe,aAAe,KAC3C,cAAAS,EACA,cAAAC,EACA,UAAWrC,EAAM,UACjB,UAAWA,EAAM,UACjB,SAAUA,EAAM,SAChB,SAAUA,EAAM,QAClB,CACF,CACA,IAAIkB,IAAoCoB,IACtCA,EAAiBA,EAAiB,QAAa,GAAK,UACpDA,EAAiBA,EAAiB,SAAc,GAAK,WACrDA,EAAiBA,EAAiB,wBAA6B,GAAK,0BAC7DA,IACNpB,IAAmB,CAAC,CAAC,EACpBqB,GAAqBC,EAAQ,cAAc,CAC7C,WAAY,CACd,CAAC,EACD,SAASlB,GAAqBP,EAAY,CACxC,OAAIA,IAAe,GAAmBA,IAAe,GAAoBA,IAAe,EAC/E,KAEFA,CACT,CACA,SAAS0B,IAAgB,CACvB,OAAOD,EAAQ,WAAWD,EAAkB,EAAE,UAChD,CACA,SAASG,GAAOC,EAAG,CACjB,OAAO,OAAOA,GAAM,QACtB,CACA,IAAIC,GAAqB5C,GAAU,CACjC,IAAM6C,EAAoBJ,GAAc,EAClC,CAAE,WAAA1B,EAAY,SAAA+B,CAAS,EAAI9C,EAC3B+C,EAAQP,EAAQ,QACpB,KAAO,CAAE,WAAAzB,CAAW,GACpB,CAACiC,GAAejC,CAAU,EAAGkC,GAAgBlC,CAAU,CAAC,CAC1D,EACA,OAAI8B,IAAsB,EACjBC,EAA2BN,EAAQ,cAAcA,EAAQ,SAAU,KAAMM,CAAQ,EAAI,KAEvEN,EAAQ,cAAcD,GAAmB,SAAU,CAAE,MAAAQ,CAAM,EAAGD,CAAQ,CAC/F,EACA,SAASE,GAAejC,EAAY,CAClC,OAAO2B,GAAO3B,CAAU,EAAIA,EAAW,MAAQA,CACjD,CACA,SAASkC,GAAgBlC,EAAY,CACnC,OAAO2B,GAAO3B,CAAU,EAAIA,EAAW,OAASA,CAClD,CACA,IAAImC,GAAoBX,GAAmB,SAC3C,SAASY,GAAqBC,EAAMrC,EAAY,CAC9C,OAAuByB,EAAQ,cAAcI,GAAmB,CAAE,WAAA7B,CAAW,EAAGqC,CAAI,CACtF,CACA,SAASC,GAAerD,EAAO,CAC7B,IAAMe,EAAa0B,GAAc,EAEjC,OADuB3B,GAAcd,EAAOe,EAAY,EAAI,CAE9D,CAGA,IAAIuC,IAAgCC,IAClCA,EAAa,QAAa,UAC1BA,EAAa,OAAY,SACzBA,EAAa,OAAY,SACzBA,EAAa,SAAc,WAC3BA,EAAa,YAAiB,cAC9BA,EAAa,KAAU,OACvBA,EAAa,cAAmB,gBAChCA,EAAa,MAAW,QACxBA,EAAa,MAAW,QACxBA,EAAa,gBAAqB,kBAClCA,EAAa,KAAU,OACvBA,EAAa,kBAAuB,oBACpCA,EAAa,MAAW,QACxBA,EAAa,aAAkB,eAC/BA,EAAa,WAAgB,aAC7BA,EAAa,KAAU,OACvBA,EAAa,KAAU,OACvBA,EAAa,OAAY,SAClBA,IACND,IAAe,CAAC,CAAC,EAGhBE,GACJ,SAASC,IAAwB,CAC/B,GAAID,KAAgC,OAClC,OAAOA,GAET,IAAME,EAAO,SAAS,cAAc,KAAK,EACzC,OAAO,OAAOA,EAAK,MAAO,CACxB,SAAU,WACV,QAAS,OACT,cAAe,SACf,OAAQ,KACV,CAAC,EACDA,EAAK,YAAY,SAAS,cAAc,KAAK,CAAC,EAC9CA,EAAK,YAAY,SAAS,cAAc,KAAK,CAAC,EAC9C,SAAS,KAAK,YAAYA,CAAI,EAC9B,IAAMC,EAAcD,EAAK,eAAiB,EAC1C,OAAIA,EAAK,YACPA,EAAK,WAAW,YAAYA,CAAI,EAElCF,GAA8BG,EACvBA,CACT,CAGA,IAAIC,GAA8B,4BAC9BC,GAAc,GAClB,SAASC,IAAsC,CACzCD,KAEJA,GAAc,GACV,CAAAJ,GAAsB,GAE1B,SAAS,KAAK,UAAU,IAAIG,EAA2B,EACzD,CAGA,IAAIG,GAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBrBC,GAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAerCC,GAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnCC,GAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYzBC,GAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAY9BC,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYhCC,GAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYrCC,GAAyB;AAAA;AAAA;AAAA;AAAA,EAKzBC,GAA2B;AAAA;AAAA;AAAA;AAAA,EAK3BC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpBC,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAahCC,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAchCC,GAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASrBC,GAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOzBC,GAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUnCC,GAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASnCC,GAA6B,CAC/B,yEACAL,GACAD,GACAV,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAG,GACAC,GACAC,GACAC,EACF,EAGIE,GAAmB,CACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAeA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAyBA;AAAA;AAAA;AAAA;AAAA,MAKA;AAAA;AAAA;AAAA;AAAA,MAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAeA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAcA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA;AAAA;AAAA;AAAA;AAAA,MAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAUF,EAGIC,GAA+B,IAAI,IACnCC,GACJ,SAASC,GAAcC,EAASC,EAAOC,EAASL,GAAc,CAC5D,GAAI,GAACG,GAAWE,EAAO,IAAIF,CAAO,GAAK,OAAO,SAAa,KAG3D,IADAE,EAAO,IAAIF,CAAO,EACd,CAACC,EAAO,CACV,GAAI,CAACH,GAAc,CACjB,IAAMK,EAAe,SAAS,cAAc,OAAO,EAGnD,GAFAA,EAAa,aAAa,OAAQ,UAAU,EAC5CA,EAAa,aAAa,kBAAmB,MAAM,EAC/C,CAAC,SAAS,KAAM,CAClB,QAAQ,KAAK,6DAA6D,EAC1E,MACF,CAEA,GADA,SAAS,KAAK,YAAYA,CAAY,EAClCA,EAAa,MACfL,GAAeK,EAAa,UACvB,CACL,QAAQ,KAAK,oEAAqEA,CAAY,EAC9F,MACF,CACF,CACAF,EAAQH,EACV,CACA,GAAI,CACFG,EAAM,WAAWD,EAASC,EAAM,SAAS,MAAM,CACjD,MAAE,CACF,EACF,CAGA,IAAIG,GAAoB,CAAC,sDAAsD,EAC3EC,GAAoB;AAAA;AAAA;AAAA,GAIpBC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWpBC,GAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWrBC,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAsBvBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAsBjBC,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmBjBC,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmBtBC,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmBxBC,GAAe,CACjB,2DACA,iEACAR,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EACF,EACIE,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOpBC,GAAsB,CACxB;AAAA;AAAA;AAAA,OAIA,IAAIvC;AAAA;AAAA;AAAA,MAIN,EACIwC,GAAe;AAAA,GAChBxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOCyC,GAA6B;AAAA,GAC9BzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUC0C,GAA+B;AAAA,GAChC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUC2C,GAAgB,CAClBL,GACAE,GACA,GAAGD,GACHE,GACAC,EACF,EACIE,GAAqB,CACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMF,EACIC,GAAiB,CACnB,8EACA,iFACF,EACIC,GAAuB,CACzB,qFACA,0EACA,yGACA,6GACA,+GACA,iGACA,oGACA,oGACF,EACIC,GAA0B,CAC5B,mHACF,EACIC,GAAoC,CACtC,iKACF,EACIC,GAAc,CAChB,6FACF,EACIC,GAAY,CACd,sDACA,gDACA,0DACF,EACIC,GAAW,CACb,2GACA,qDACF,EACIC,GAAW,CACb;AAAA;AAAA;AAAA,EAIF,EACIC,GAAiBC,GACZA,EAAYH,GAAW,CAAC,EAE7BI,GAAc,CAAC,uCAAuC,EACtDC,GAAmBF,GAAc,CACnC,GAAG1B,GACH,GAAGS,GACH,GAAGjB,GACH,GAAGD,GACH,GAAGwB,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACH,GAAGE,GACH,GAAGD,GACH,GAAGE,GACH,GAAGC,GACH,GAAGG,GAAcC,CAAS,EAC1B,GAAGC,GACH,GAAGH,EACL,EACIK,GAAmBD,GAAgB,EAAK,EACxCE,GAA6BF,GAAgB,EAAI,EACjDG,GAA0B,CAAClC,EAAOC,IAAW,CAC/C,IAAMkC,EAASC,GAAa,QAAQ,IAAM,UAA0BH,GAA6BD,GACjG,QAAWK,KAAQF,EACjBrC,GAAcuC,EAAK,KAAK,EAAGrC,EAAOC,CAAM,CAC5C,EAGA,SAASqC,GAAoBC,EAAWC,EAAkB,CACxD,OAAO,OAAOD,EAAW,CAAE,iBAAAC,CAAiB,CAAC,CAC/C,CACA,SAASC,GAAoBF,EAAW,CACtC,OAAOA,EAAU,gBACnB,CAIA,IAAIG,GAAc,CAChB,UAAW,CACT,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GAAK,EACxB,EACA,QAAS,CACP,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GAAK,GACxB,EACA,QAAS,CACP,aAAc,GACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GAAK,EACxB,EACA,QAAS,CACP,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,EACnB,CACF,EACIC,GAAgB,CAClB,CACE,GAAI,YACJ,MAAO,YACP,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,gBAAiB,GACjB,iBAAkB,EACpB,EACA,WAAY,8pBACZ,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,EACnD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,MAAO,MAAO,MAAO,WAAY,SAAU,CACnD,EACA,WAAY,CAAE,KAAM,GAAI,MAAO,GAAI,OAAQ,EAAG,CAChD,CACF,EACA,CACE,GAAI,iBACJ,MAAO,iBACP,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,gBAAiB,GACjB,iBAAkB,EACpB,EACA,WAAY,0YACZ,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,EACnD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,MAAO,MAAO,MAAO,WAAY,SAAU,CACnD,EACA,WAAY,CAAE,KAAM,KAAM,MAAO,KAAM,OAAQ,EAAG,CACpD,CACF,EACA,CACE,GAAI,gBACJ,MAAO,gBACP,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,gBAAiB,GACjB,iBAAkB,EACpB,EACA,WAAY,8pBACZ,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,WAAY,MAAO,WAAY,WAAY,SAAU,EAC3D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,eAAgB,MAAO,eAAgB,WAAY,SAAU,EACnE,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,CACrD,EACA,WAAY,CAAE,KAAM,GAAI,MAAO,GAAI,OAAQ,EAAG,CAChD,CACF,EACA,CACE,GAAI,oBACJ,MAAO,oBACP,aAAc,GACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,KACR,gBAAiB,GACjB,iBAAkB,EACpB,EACA,WAAY,yRACZ,eAAgB,CACd,MAAO,IACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,WAAY,MAAO,WAAY,WAAY,SAAU,EAC3D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,eAAgB,MAAO,eAAgB,WAAY,SAAU,EACnE,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,CACrD,EACA,WAAY,CAAE,KAAM,KAAM,MAAO,GAAI,OAAQ,EAAG,CAClD,CACF,EACA,CACE,GAAI,YACJ,MAAO,YACP,aAAc,EACd,cAAe,KACf,eAAgB,KAChB,aAAc,KACd,gBAAiB,KACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,KACR,gBAAiB,GACjB,iBAAkB,EACpB,EACA,WAAY,0gBACZ,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,MAAO,MAAO,MAAO,WAAY,SAAU,EACjD,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,CACzD,EACA,WAAY,CAAE,KAAM,KAAM,MAAO,KAAM,OAAQ,IAAK,CACtD,CACF,EACA,CACE,GAAI,gBACJ,MAAO,gBACP,GAAGD,GAAY,UACf,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,gBAAiB,GACjB,iBAAkB,EACpB,EACA,WAAY,4TACZ,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,EACnD,CAAE,GAAI,iBAAkB,MAAO,iBAAkB,WAAY,SAAU,CACzE,EACA,WAAY,CAAE,KAAM,KAAM,MAAO,KAAM,OAAQ,IAAK,CACtD,CACF,EACA,CACE,GAAI,oBACJ,MAAO,oBACP,GAAGA,GAAY,UACf,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,KACR,gBAAiB,GACjB,iBAAkB,EACpB,EACA,WAAY,+tBACZ,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,EACnD,CAAE,GAAI,iBAAkB,MAAO,iBAAkB,WAAY,SAAU,CACzE,EACA,WAAY,CAAE,KAAM,KAAM,MAAO,KAAM,OAAQ,EAAG,CACpD,CACF,EACA,CACE,GAAI,WACJ,MAAO,WACP,GAAGA,GAAY,QACf,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,IACjB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,CACrD,EACA,WAAY,CAAE,KAAM,GAAI,MAAO,GAAI,OAAQ,IAAK,CAClD,CACF,EACA,CACE,GAAI,gBACJ,MAAO,gBACP,GAAGA,GAAY,QACf,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,IACjB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,CACrD,EACA,WAAY,CAAE,KAAM,GAAI,MAAO,KAAM,OAAQ,EAAG,CAClD,CACF,EACA,CACE,GAAI,YACJ,MAAO,YACP,YAAa,IACb,aAAc,IACd,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,IACd,gBAAiB,IACjB,gBAAiB,GAAK,IACtB,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,IACjB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,EACnD,CAAE,GAAI,YAAa,MAAO,YAAa,WAAY,SAAU,CAC/D,EACA,WAAY,CAAE,KAAM,GAAI,MAAO,GAAI,OAAQ,IAAK,CAClD,CACF,EACA,CACE,GAAI,oBACJ,MAAO,oBACP,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,gBAAiB,IACjB,iBAAkB,EACpB,EACA,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,IACjB,gBAAiB,CACf,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,CACrD,EACA,WAAY,CAAE,KAAM,GAAI,MAAO,KAAM,OAAQ,EAAG,CAClD,CACF,EACA,CACE,GAAI,kBACJ,MAAO,kBACP,YAAa,IACb,aAAc,IACd,aAAc,GACd,cAAe,EACf,eAAgB,EAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,EACnB,EACA,CACE,GAAI,UACJ,MAAO,iBACP,aAAc,GACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,gBAAiB,GACjB,iBAAkB,EACpB,EACA,eAAgB,CACd,MAAO,IAAM,EACb,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,EACvB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,CACjE,EACA,WAAY,CAAE,KAAM,KAAM,MAAO,GAAI,OAAQ,EAAG,CAClD,CACF,EACA,CACE,GAAI,UACJ,MAAO,iBACP,YAAa,IACb,aAAc,IACd,aAAc,GACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,gBAAiB,MAAO,gBAAiB,WAAY,SAAU,EACrE,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,eAAgB,MAAO,eAAgB,WAAY,SAAU,CACrE,EACA,WAAY,CAAE,KAAM,KAAM,MAAO,KAAM,OAAQ,EAAG,CACpD,CACF,EACA,CACE,GAAI,cACJ,MAAO,cACP,YAAa,KACb,aAAc,IACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,IAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,EACvB,gBAAiB,CACf,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,CACrD,CACF,CACF,EACA,CACE,GAAI,iBACJ,MAAO,kBACP,YAAa,KACb,aAAc,IACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,IAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,EACvB,gBAAiB,CACf,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,CACjE,CACF,CACF,EACA,CACE,GAAI,iBACJ,MAAO,kBACP,YAAa,KACb,aAAc,IACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,IAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,EACvB,gBAAiB,CACf,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,CACjE,CACF,CACF,EACA,CACE,GAAI,YACJ,MAAO,aACP,YAAa,KACb,aAAc,KACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,IAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,CACzB,CACF,EACA,CACE,GAAI,UACJ,MAAO,WACP,YAAa,KACb,aAAc,KACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,IAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,EACvB,gBAAiB,CACf,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,MAAO,MAAO,MAAO,WAAY,SAAU,CACnD,CACF,CACF,EACA,CACE,GAAI,kBACJ,MAAO,kBACP,YAAa,KACb,aAAc,KACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,CACzB,CACF,EACA,CACE,GAAI,WACJ,MAAO,WACP,YAAa,KACb,aAAc,KACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,IAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,CACzB,CACF,EACA,CACE,GAAI,eACJ,MAAO,yBACP,YAAa,KACb,aAAc,IACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,IAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,CACzB,CACF,EACA,CACE,GAAI,OACJ,MAAO,OACP,aAAc,EACd,YAAa,IACb,aAAc,KACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,EACjB,aAAc,CACZ,MAAO,IACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,GAClB,gBAAiB,IACjB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,CACrD,CACF,CACF,EACA,CACE,GAAI,YACJ,MAAO,YACP,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,KACd,aAAc,CACZ,MAAO,IACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,EACvB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,CACrD,CACF,CACF,EACA,CACE,GAAI,WACJ,MAAO,WACP,aAAc,GACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,KACd,aAAc,CACZ,MAAO,IACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,EACvB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,YAAa,MAAO,YAAa,WAAY,SAAU,EAC7D,CAAE,GAAI,OAAQ,MAAO,OAAQ,WAAY,SAAU,EACnD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,CACvD,CACF,CACF,EACA,CACE,GAAI,cACJ,MAAO,oBACP,aAAc,GACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,KACd,aAAc,CACZ,MAAO,IACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,CACzD,CACF,CACF,EACA,CACE,GAAI,gBACJ,MAAO,sBACP,GAAGA,GAAY,QACf,aAAc,GACd,YAAa,KACb,aAAc,KACd,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,GAClB,gBAAiB,GACjB,gBAAiB,CACf,CAAE,GAAI,aAAc,MAAO,aAAc,WAAY,SAAU,EAC/D,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,CACzD,CACF,CACF,EACA,CACE,GAAI,YACJ,MAAO,sBACP,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,IACb,aAAc,IACd,aAAc,CACZ,MAAO,KACP,OAAQ,IACR,iBAAkB,IAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,CACzB,CACF,EACA,CACE,GAAI,gBACJ,MAAO,0BACP,aAAc,EACd,cAAe,GACf,eAAgB,GAChB,aAAc,GACd,gBAAiB,GACjB,gBAAiB,GACjB,YAAa,KACb,aAAc,IACd,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,IAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,CACzB,CACF,EACA,CACE,GAAI,iBACJ,MAAO,mBACP,aAAc,GACd,YAAa,IACb,aAAc,IACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,IAAM,EACb,OAAQ,IAAM,EACd,iBAAkB,GAAK,EACvB,gBAAiB,IAAM,EACvB,gBAAiB,CACf,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,CACzD,CACF,CACF,EACA,CACE,GAAI,iBACJ,MAAO,mBACP,aAAc,GACd,YAAa,IACb,aAAc,IACd,gBAAiB,GACjB,aAAc,CACZ,MAAO,IACP,OAAQ,IACR,iBAAkB,GAClB,gBAAiB,GACnB,EACA,eAAgB,CACd,MAAO,IAAM,EACb,OAAQ,IAAM,EACd,iBAAkB,GAAK,EACvB,gBAAiB,IAAM,EACvB,gBAAiB,CACf,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,QAAS,MAAO,QAAS,WAAY,SAAU,EACrD,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,EACvD,CAAE,GAAI,SAAU,MAAO,SAAU,WAAY,SAAU,CACzD,CACF,CACF,EACA,CACE,GAAI,aACJ,MAAO,UACP,aAAc,EACd,YAAa,KACb,aAAc,KACd,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,CACzB,CACF,EACA,CACE,GAAI,QACJ,MAAO,KACP,aAAc,EACd,YAAa,KACb,aAAc,KACd,aAAc,CACZ,MAAO,KACP,OAAQ,KACR,iBAAkB,GAClB,gBAAiB,EACnB,EACA,eAAgB,CACd,MAAO,KAAO,EACd,OAAQ,KAAO,EACf,iBAAkB,IAAM,EACxB,gBAAiB,IAAM,CACzB,CACF,EACA,CACE,GAAI,OACJ,MAAO,OACP,GAAGA,GAAY,QACf,YAAa,IACb,aAAc,IAChB,EACA,CACE,GAAI,OACJ,MAAO,OACP,GAAGA,GAAY,QACf,YAAa,IACb,aAAc,IAChB,EACA,CACE,GAAI,QACJ,MAAO,QACP,GAAGA,GAAY,QACf,YAAa,KACb,aAAc,IAChB,EACA,CACE,GAAI,QACJ,MAAO,QACP,GAAGA,GAAY,QACf,YAAa,KACb,aAAc,IAChB,EACA,CACE,GAAI,KACJ,MAAO,KACP,GAAGA,GAAY,QACf,YAAa,KACb,aAAc,IAChB,CACF,EAsBA,IAAIE,GAAmBC,GAAc,OAAO,CAACC,EAAKC,KAChDD,EAAIC,EAAO,IAAMA,EACVD,GACN,CAAC,CAAC,EAgWL,IAAIE,GAAkBC,GAAQC,GAAgB,EAAG,CAAC,EAIlD,SAASC,GAAQC,EAAI,CACnB,IAAMC,EAAyB,OAAO,OAAO,IAAI,EACjD,OAAQC,IACFD,EAAOC,KAAS,SAClBD,EAAOC,GAAOF,EAAGE,CAAG,GACfD,EAAOC,GAElB,CACA,IAAIC,GAAkB,o9HAClBC,GAA8BL,GAC/BM,GAASF,GAAgB,KAAKE,CAAI,GAAKA,EAAK,WAAW,CAAC,IAAM,KAAOA,EAAK,WAAW,CAAC,IAAM,KAAOA,EAAK,WAAW,CAAC,EAAI,EAC3H,EAOIC,GAA6B,OAAO,SAAa,IAAcC,GAAkBC,EAGjFC,GAAmBC,GACd,IAAM,CACXC,GAASD,CAAO,CAClB,EAEEE,GAAiB,CACnB,eAAeC,EAAO,CACpB,IAAIC,EACJ,OAAQA,EAAKD,EAAM,MAAQ,KAAOC,EAAK,EACzC,EACA,gBAAgBD,EAAOE,EAAMC,EAAQ,CACnC,IAAMC,EAAU,IAAI,MACpB,OAAAA,EAAQ,IAAMC,GAAQ,eAAeL,EAAOE,EAAMC,CAAM,EACpDH,EAAM,SACRI,EAAQ,OAASJ,EAAM,QAClBI,CACT,CACF,EACIE,GAAoB,GACpBC,GAAe,CACjB,IAAIC,EAAQC,EAAMC,EAAU,CAC1B,OAAI,QAAQ,IAAIF,EAAQC,CAAI,EACnB,QAAQ,IAAID,EAAQC,EAAMC,CAAQ,EAGlCd,GADLU,GACqB,GAAG,OAAOG,CAAI,gDAEd,GAAG,OAAOA,CAAI,+DAF+C,CAIxF,CACF,EACIJ,GAAU,IAAI,MAAMN,GAAgBQ,EAAY,EAOpD,SAASI,GAAWC,EAAO,CACzB,OAAOA,aAAiB,QAC1B,CACA,SAASC,GAAUD,EAAO,CACxB,OAAO,OAAOA,GAAU,QAC1B,CACA,SAASE,GAASF,EAAO,CACvB,OAAO,OAAOA,GAAU,QAC1B,CACA,SAASG,GAAQH,EAAO,CACtB,OAAOA,aAAiB,KAC1B,CACA,SAASI,GAAUJ,EAAO,CACxB,OAAO,OAAOA,GAAU,QAC1B,CAGA,SAASK,GAAkCC,EAAOC,EAAeC,EAAoB,EAAG,CACtF,IAAIC,EAAIC,EAAIC,EAAIC,EAChB,GAAI,CAAE,MAAOC,EAAY,OAAQC,CAAY,EAAIP,EAC3CQ,GAAcL,GAAMD,EAAKH,EAAM,aAAe,KAAOG,EAAKH,EAAM,iBAAmB,KAAOI,EAAK,EAC/FM,GAAeJ,GAAMD,EAAKL,EAAM,cAAgB,KAAOK,EAAKL,EAAM,kBAAoB,KAAOM,EAAK,EACxG,GAAIC,EAAa,GAAKC,EAAc,GAAKC,EAAa,GAAKC,EAAc,EACvE,OAEFH,GAAcL,EACdM,GAAeN,EACf,IAAMS,EAAmBJ,EAAaC,EAChCI,EAAmBH,EAAaC,EACtC,OAAQV,EAAM,IAAK,CACjB,IAAK,OACH,OAAIY,EAAmBD,EACdD,EAAcF,EAEdC,EAAaF,EAExB,IAAK,MACL,IAAK,UACH,OAAO,KAAK,IAAIE,EAAaF,EAAYG,EAAcF,CAAW,CACtE,CACF,CACA,SAASK,GAAsBC,EAAMC,EAAkB,CACrD,OAAIA,GAAoB,KAAK,IAAI,EAAGD,CAAI,EAAIC,EACnC,YAEF,MACT,CAGA,IAAIC,GAAe,CACjB,SAAU,WACV,cAAe,OACf,WAAY,OACZ,aAAc,UACd,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,CACR,EACIC,GAAmB,CACrB,eAAgB,YAChB,gBAAiB,uJACjB,OAAQ,mBACV,EACA,SAASC,GAAaC,EAAU,CAC9B,OAAQA,EAAU,CAChB,IAAK,MACH,MAAO,UACT,IAAK,UACH,MAAO,OACT,QACE,MAAO,OACX,CACF,CACA,SAASC,GAAkBpB,EAAOC,EAAe,CAC/C,GAAI,CAACA,EACH,MAAO,OACT,IAAMC,EAAoBmB,GAAa,QAAQ,IAAM,SAAwBC,GAAW,iBAAmB,EACrGP,EAAmBhB,GAAkCC,EAAOC,EAAeC,CAAiB,EAClG,OAAImB,GAAa,QAAQ,IAAM,SACtBR,GAAsB,EAAGE,CAAgB,EAEzCF,GAAsBU,GAAkB,KAAMR,CAAgB,CAEzE,CACA,SAASS,GAAcxB,EAAOC,EAAe,CAC3C,MAAO,CACL,cAAe,OACf,WAAY,OACZ,QAAS,QACT,MAAO,OACP,OAAQ,OACR,aAAc,UACd,eAAgB,SAChB,UAAWiB,GAAalB,EAAM,GAAG,EACjC,eAAgBoB,GAAkBpB,EAAOC,CAAa,CACxD,CACF,CACA,SAASwB,GAAW,CAAE,MAAAzB,EAAO,cAAAC,EAAe,OAAAyB,EAAQ,IAAAC,CAAI,EAAG,CACzD,IAAMC,EAAaC,EAAQ,OAAO,IAAI,EAChCC,EAAoBT,GAAa,QAAQ,IAAM,SAC/CU,EAASC,GAAQ,eAAehC,EAAOC,EAAeyB,CAAM,EAC5DO,EAAaT,GAAcxB,EAAOC,CAAa,EACrD,GAAI,CAAC6B,EAAmB,CACtB,IAAMI,EAAeF,GAAQ,gBAAgBhC,EAAOC,EAAeyB,CAAM,EACzES,GAA2B,IAAM,CAC/B,IAAMC,EAAUR,EAAW,QAC3B,GAAIQ,IAAY,KAEhB,OAAAA,EAAQ,YAAYF,CAAY,EACzB,IAAM,CACXE,EAAQ,YAAYF,CAAY,CAClC,CACF,EAAG,CAACA,CAAY,CAAC,EACjB,OAAO,OAAOA,EAAa,MAAOD,CAAU,CAC9C,CACA,OAAuBJ,EAAQ,cAAc,MAAO,CAAE,IAAKD,EAAY,MAAO,CAAE,QAAS,WAAY,aAAc,UAAW,cAAe,MAAO,CAAE,EAAGE,EAAoCD,EAAQ,cACnM,MACA,CACE,IAAKE,EACL,IAAKJ,GAAoB3B,EAAM,IAC/B,OAAQA,EAAM,OACd,MAAOA,EAAM,MACb,MAAOiC,EACP,QAASjC,EAAM,OACjB,CACF,EAAI,IAAI,CACV,CACA,SAASqC,GAAyB,CAAE,SAAAC,EAAU,MAAAtC,KAAUuC,CAAM,EAAG,CAC3DD,IACFA,EAAWA,EAAW,eAExB,IAAME,EAAW7C,GAAUK,EAAM,GAAG,EAC9ByC,EAAiB,CAACD,EACxB,OAAuBX,EAAQ,cAC7Ba,GAAO,IACP,CACE,SAAAJ,EACA,MAAOG,EAAiB,CAAE,GAAGzB,GAAc,GAAGC,EAAiB,EAAID,GACnE,uCAAwC,EAC1C,EACAwB,GAA4BX,EAAQ,cAAcJ,GAAY,CAAE,MAAAzB,EAAO,GAAGuC,CAAM,CAAC,CACnF,CACF,CAGA,IAAII,GAAO,MACPC,IACFC,GAAqB,CACrBA,EAAiB,cAAgB,SAAS7C,EAAO,CAC/C,MAAI,CAACA,GAAS,OAAOA,GAAU,SACtB,GACF2C,MAAQ3C,CACjB,CACF,GAAG4C,KAAoBA,GAAkB,CAAC,EAAE,EAG5C,SAASE,GAAsBC,EAAYR,EAAO,CAChD,GAAM,CAAE,qBAAAS,EAAsB,oBAAAC,EAAqB,GAAAC,CAAG,EAAIX,EACpDY,EAAsBH,GAAsDE,EAC5EE,EAAMH,GAAuBE,EAAsBF,EAAoBE,GAAuB,OACpG,OAAIC,GAAO,OAAOA,GAAQ,WACxBL,EAAa,CAAE,GAAGA,EAAY,IAAAK,CAAI,GAE7BL,CACT,CACA,SAASM,GAAyBd,EAAO,CACvC,GAAM,CAAE,WAAAQ,EAAY,MAAA/C,CAAM,EAAIuC,EAC9B,GAAIvC,IAAU,QAAU+C,GAAc,CAACH,GAAgB,cAAcG,CAAU,EAC7E,OAEF,IAAIO,EAAkB,KAMtB,GALI3D,GAAUK,CAAK,EACjBsD,EAAkB,CAAE,IAAK,GAAI,IAAKtD,CAAM,EAExCsD,EAAkBC,GAAW,IAAIR,EAAY,IAAI,EAE/C,EAACH,GAAgB,cAAcU,CAAe,EAGlD,OAAOR,GAAsBQ,EAAiBf,CAAK,CACrD,CAIA,SAASiB,GAA2BjB,EAAOkB,EAAOC,EAAuB,GAAM,CAC7E,GAAM,CAAE,YAAAC,EAAa,YAAAC,EAAa,YAAAC,CAAY,EAAItB,EAClD,GAAI,CAACoB,EACH,OAEF,IAAIG,EACAC,EACAC,EACAC,EASJ,GARI,OAAON,GAAgB,SACzBG,EAAYC,EAAeC,EAAaC,EAAcN,GAEtDG,EAAYH,EAAY,KAAO,EAC/BI,EAAeJ,EAAY,QAAU,EACrCK,EAAaL,EAAY,MAAQ,EACjCM,EAAcN,EAAY,OAAS,GAEjC,EAAAG,IAAc,GAAKC,IAAiB,GAAKC,IAAe,GAAKC,IAAgB,GAGjF,IAAIP,GAAwBI,IAAcC,GAAgBD,IAAcE,GAAcF,IAAcG,EAAa,CAC/GR,EAAM,OAAS,GAAGK,OAAeF,KAAeC,IAChD,MACF,CACAJ,EAAM,YAAclB,EAAM,YAC1BkB,EAAM,YAAclB,EAAM,YAC1BkB,EAAM,eAAiB,GAAGK,MAC1BL,EAAM,kBAAoB,GAAGM,MAC7BN,EAAM,gBAAkB,GAAGO,MAC3BP,EAAM,iBAAmB,GAAGQ,MAC9B,CACA,SAASC,GAAO3B,EAAO,CACrB,IAAMD,EAAWC,EAAM,SAAW,GAAGA,EAAM,kBAAoB,OAC/D,GAAI,CAACA,EAAM,YACT,OAAO,KAET,IAAMkB,EAAQ,CACZ,SAAU,WACV,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,EACR,aAAc,UACd,cAAe,MACjB,EACA,OAAIlB,EAAM,QAERkB,EAAM,OAASlB,EAAM,OACEV,EAAQ,cAAca,GAAO,IAAK,CAAE,MAAAe,CAAM,CAAC,IAEpED,GAA2BjB,EAAOkB,EAAO,EAAK,EACvB5B,EAAQ,cAAca,GAAO,IAAK,CAAE,oBAAqB,GAAM,MAAAe,EAAO,SAAAnB,CAAS,CAAC,EACzG,CAGA,IAAI6B,GAAiBC,GAAQC,GAAgB,EAAG,CAAC,EAG7CC,GAAgB,OAAOC,GAAc,IAAcA,GAAY,OAG/DC,GAAa,IAAM,OAAO,UAAa,SAc3C,IAAIC,GAAgB,IAAM,CACxB,IAAIC,EAAW,GAETC,EAASC,IADA,oBACwB,KAAKA,GAAc,SAAS,EACnE,OAAID,GAAUA,EAAO,KACnBD,EAAW,WAAWC,EAAO,EAAE,GAE1BD,CACT,EACIG,GAAW,IAAMD,IAAiB,SAAS,KAAKA,GAAc,SAAS,GAAK,aAAa,KAAKA,GAAc,MAAM,GAAK,CAACE,GAAO,EAC/HC,GAAW,IAAMH,IAAiB,SAAS,KAAKA,GAAc,SAAS,GAAK,iBAAiB,KAAKA,GAAc,MAAM,EAE1H,IAAII,GAAY,IAAMC,IAAiB,UAAU,KAAKA,GAAc,SAAS,EACzEC,GAAS,IAAMD,IAAiB,QAAQ,KAAKA,GAAc,SAAS,EAYxE,IAAIE,GAAS,IAAMC,GAAe,QAAQ,IAAI,WAAa,OAiG3D,IAAIC,GAAYC,GAAS,EACzB,SAASC,GAA6BC,EAAQ,CAC5C,IAAMC,EAAQ,CAAC,EACf,MAAI,CAACJ,IAAaK,GAAa,QAAQ,IAAM,YAGzCF,IAAW,IAAQA,IAAW,OAChCC,EAAM,oCAAsC,KAE1CD,IAAW,IAAQA,IAAW,OAChCC,EAAM,oCAAsC,KAEvCA,CACT,CAGA,SAASE,GAAiBC,EAAK,CAC7B,OAAOA,EAAI,QAAQ,OAAQ,EAAE,EAAE,QAAQ,MAAO,EAAE,CAClD,CAIA,SAASC,GAA0BJ,EAAOK,EAAU,CAClD,GAAI,CAACA,IACHA,EAAWL,EAAM,SACb,CAACK,GACH,MAAO,CAAE,MAAAL,EAAO,SAAAK,CAAS,EAE7B,IAAIC,EAAsBN,EAAM,oBAC1BO,EAAcP,EAAM,+BAC1B,GAAIO,EAAa,CACfD,EAAsB,OACtB,QAAWE,KAAQD,EAAa,CAC9B,IAAME,EAAWF,EAAYC,GACfR,EAAMS,KACN,SACPH,IACHA,EAAsB,CAAC,EACvBN,EAAQ,CAAE,GAAGA,CAAM,GAErBM,EAAoBE,GAAQR,EAAMS,GAClC,OAAOT,EAAMS,GAEjB,CACF,CACA,OAAKH,GAELD,EAAWK,EAAQ,SAAS,IAAIL,EAAWM,GACpCD,EAAQ,eAAeC,CAAK,EAE1BD,EAAQ,aAAaC,EAAO,CAAE,oBAAAL,CAAoB,CAAC,EADjDK,CAEV,EACM,CAAE,MAAAX,EAAO,SAAAK,CAAS,GANhB,CAAE,MAAAL,EAAO,SAAAK,CAAS,CAO7B,CAGA,IAAIO,GAAS,CAACC,EAAKC,IAASC,GAAM,KAAK,IAAI,KAAK,IAAIA,EAAGD,CAAG,EAAGD,CAAG,EAC5DG,GAAYD,GAAMA,EAAI,EAAI,OAAOA,EAAE,QAAQ,CAAC,CAAC,EAAIA,EACjDE,GAAa,uBACbC,GAAa,+HACbC,GAAmB,mHACvB,SAASC,GAAUL,EAAG,CACpB,OAAO,OAAOA,GAAM,QACtB,CAGA,IAAIM,GAAS,CACX,KAAON,GAAM,OAAOA,GAAM,SAC1B,MAAO,WACP,UAAYA,GAAMA,CACpB,EACIO,GAAQ,OAAO,OAAO,OAAO,OAAO,CAAC,EAAGD,EAAM,EAAG,CAAE,UAAWT,GAAO,EAAG,CAAC,CAAE,CAAC,EAC5EW,GAAQ,OAAO,OAAO,OAAO,OAAO,CAAC,EAAGF,EAAM,EAAG,CAAE,QAAS,CAAE,CAAC,EAG/DG,GAAkBC,IAAU,CAC9B,KAAOV,GAAMK,GAAUL,CAAC,GAAKA,EAAE,SAASU,CAAI,GAAKV,EAAE,MAAM,GAAG,EAAE,SAAW,EACzE,MAAO,WACP,UAAYA,GAAM,GAAGA,IAAIU,GAC3B,GACIC,GAAUF,GAAe,KAAK,EAC9BG,GAAUH,GAAe,GAAG,EAC5BI,GAAKJ,GAAe,IAAI,EACxBK,GAAKL,GAAe,IAAI,EACxBM,GAAKN,GAAe,IAAI,EACxBO,GAAqB,OAAO,OAAO,OAAO,OAAO,CAAC,EAAGJ,EAAO,EAAG,CAAE,MAAQZ,GAAMY,GAAQ,MAAMZ,CAAC,EAAI,IAAK,UAAYA,GAAMY,GAAQ,UAAUZ,EAAI,GAAG,CAAE,CAAC,EAGrJiB,GAAgB,CAACC,EAAMC,IAAcnB,GAChC,QAAQK,GAAUL,CAAC,GAAKI,GAAiB,KAAKJ,CAAC,GAAKA,EAAE,WAAWkB,CAAI,GAAKC,GAAY,OAAO,UAAU,eAAe,KAAKnB,EAAGmB,CAAQ,CAAC,EAE5IC,GAAa,CAACC,EAAOC,EAAOC,IAAWvB,GAAM,CAC/C,GAAI,CAACK,GAAUL,CAAC,EACd,OAAOA,EACT,GAAM,CAACwB,EAAGC,EAAGC,EAAGC,CAAM,EAAI3B,EAAE,MAAME,EAAU,EAC5C,MAAO,CACL,CAACmB,GAAQ,WAAWG,CAAC,EACrB,CAACF,GAAQ,WAAWG,CAAC,EACrB,CAACF,GAAQ,WAAWG,CAAC,EACrB,MAAOC,IAAW,OAAS,WAAWA,CAAM,EAAI,CAClD,CACF,EAGIC,GAAO,CACT,KAAMX,GAAc,MAAO,KAAK,EAChC,MAAOG,GAAW,MAAO,aAAc,WAAW,EAClD,UAAW,CAAC,CAAE,IAAAS,EAAK,WAAAC,EAAY,UAAAC,EAAW,MAAOC,EAAU,CAAE,IACpD,QAAU,KAAK,MAAMH,CAAG,EAAI,KAAOjB,GAAQ,UAAUX,GAAS6B,CAAU,CAAC,EAAI,KAAOlB,GAAQ,UAAUX,GAAS8B,CAAS,CAAC,EAAI,KAAO9B,GAASM,GAAM,UAAUyB,CAAO,CAAC,EAAI,GAEpL,EAGIC,GAAepC,GAAO,EAAG,GAAG,EAC5BqC,GAAU,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG5B,EAAM,EAAG,CAAE,UAAYN,GAAM,KAAK,MAAMiC,GAAajC,CAAC,CAAC,CAAE,CAAC,EACpGmC,GAAO,CACT,KAAMlB,GAAc,MAAO,KAAK,EAChC,MAAOG,GAAW,MAAO,QAAS,MAAM,EACxC,UAAW,CAAC,CAAE,IAAAgB,EAAK,MAAAC,EAAO,KAAAC,EAAM,MAAON,EAAU,CAAE,IAAM,QAAUE,GAAQ,UAAUE,CAAG,EAAI,KAAOF,GAAQ,UAAUG,CAAK,EAAI,KAAOH,GAAQ,UAAUI,CAAI,EAAI,KAAOrC,GAASM,GAAM,UAAUyB,CAAO,CAAC,EAAI,GAC7M,EAGA,SAASO,GAASvC,EAAG,CACnB,IAAIwC,EAAI,GACJC,EAAI,GACJhB,EAAI,GACJD,EAAI,GACR,OAAIxB,EAAE,OAAS,GACbwC,EAAIxC,EAAE,OAAO,EAAG,CAAC,EACjByC,EAAIzC,EAAE,OAAO,EAAG,CAAC,EACjByB,EAAIzB,EAAE,OAAO,EAAG,CAAC,EACjBwB,EAAIxB,EAAE,OAAO,EAAG,CAAC,IAEjBwC,EAAIxC,EAAE,OAAO,EAAG,CAAC,EACjByC,EAAIzC,EAAE,OAAO,EAAG,CAAC,EACjByB,EAAIzB,EAAE,OAAO,EAAG,CAAC,EACjBwB,EAAIxB,EAAE,OAAO,EAAG,CAAC,EACjBwC,GAAKA,EACLC,GAAKA,EACLhB,GAAKA,EACLD,GAAKA,GAEA,CACL,IAAK,SAASgB,EAAG,EAAE,EACnB,MAAO,SAASC,EAAG,EAAE,EACrB,KAAM,SAAShB,EAAG,EAAE,EACpB,MAAOD,EAAI,SAASA,EAAG,EAAE,EAAI,IAAM,CACrC,CACF,CACA,IAAIkB,GAAM,CACR,KAAMzB,GAAc,GAAG,EACvB,MAAOsB,GACP,UAAWJ,GAAK,SAClB,EAGIQ,GAAQ,CACV,KAAO3C,GAAMmC,GAAK,KAAKnC,CAAC,GAAK0C,GAAI,KAAK1C,CAAC,GAAK4B,GAAK,KAAK5B,CAAC,EACvD,MAAQA,GACFmC,GAAK,KAAKnC,CAAC,EACNmC,GAAK,MAAMnC,CAAC,EACV4B,GAAK,KAAK5B,CAAC,EACb4B,GAAK,MAAM5B,CAAC,EAEZ0C,GAAI,MAAM1C,CAAC,EAGtB,UAAYA,GACHK,GAAUL,CAAC,EAAIA,EAAIA,EAAE,eAAe,KAAK,EAAImC,GAAK,UAAUnC,CAAC,EAAI4B,GAAK,UAAU5B,CAAC,CAE5F,EAGI4C,GAAa,OACbC,GAAc,OAClB,SAASC,GAAK9C,EAAG,CACf,IAAI+C,EAAIC,EAAIC,EAAIC,EAChB,OAAO,MAAMlD,CAAC,GAAKK,GAAUL,CAAC,KAAOgD,GAAMD,EAAK/C,EAAE,MAAME,EAAU,KAAO,MAAQ6C,IAAO,OAAS,OAASA,EAAG,UAAY,MAAQC,IAAO,OAASA,EAAK,KAAOE,GAAMD,EAAKjD,EAAE,MAAMG,EAAU,KAAO,MAAQ8C,IAAO,OAAS,OAASA,EAAG,UAAY,MAAQC,IAAO,OAASA,EAAK,GAAK,CACrR,CACA,SAASC,GAAQnD,EAAG,CACd,OAAOA,GAAM,WACfA,EAAI,GAAGA,KACT,IAAMoD,EAAS,CAAC,EACZC,EAAY,EACVC,EAAStD,EAAE,MAAMG,EAAU,EAC7BmD,IACFD,EAAYC,EAAO,OACnBtD,EAAIA,EAAE,QAAQG,GAAYyC,EAAU,EACpCQ,EAAO,KAAK,GAAGE,EAAO,IAAIX,GAAM,KAAK,CAAC,GAExC,IAAMY,EAAUvD,EAAE,MAAME,EAAU,EAClC,OAAIqD,IACFvD,EAAIA,EAAE,QAAQE,GAAY2C,EAAW,EACrCO,EAAO,KAAK,GAAGG,EAAQ,IAAIjD,GAAO,KAAK,CAAC,GAEnC,CAAE,OAAA8C,EAAQ,UAAAC,EAAW,UAAWrD,CAAE,CAC3C,CACA,SAASwD,GAAMxD,EAAG,CAChB,OAAOmD,GAAQnD,CAAC,EAAE,MACpB,CACA,SAASyD,GAAkBzD,EAAG,CAC5B,GAAM,CAAE,OAAAoD,EAAQ,UAAAC,EAAW,UAAAK,CAAU,EAAIP,GAAQnD,CAAC,EAC5C2D,EAAYP,EAAO,OACzB,OAAQQ,GAAO,CACb,IAAIC,EAASH,EACb,QAASI,EAAI,EAAGA,EAAIH,EAAWG,IAC7BD,EAASA,EAAO,QAAQC,EAAIT,EAAYT,GAAaC,GAAaiB,EAAIT,EAAYV,GAAM,UAAUiB,EAAGE,EAAE,EAAI7D,GAAS2D,EAAGE,EAAE,CAAC,EAE5H,OAAOD,CACT,CACF,CACA,IAAIE,GAAwB/D,GAAM,OAAOA,GAAM,SAAW,EAAIA,EAC9D,SAASgE,GAAkBhE,EAAG,CAC5B,IAAMiE,EAAST,GAAMxD,CAAC,EAEtB,OADoByD,GAAkBzD,CAAC,EACpBiE,EAAO,IAAIF,EAAoB,CAAC,CACrD,CACA,IAAIG,GAAU,CAAE,KAAApB,GAAM,MAAAU,GAAO,kBAAAC,GAAmB,kBAAAO,EAAkB,EAG9DG,GAAiBnE,GACZ,QAAQA,GAAK,OAAOA,GAAM,UAAYA,EAAE,KAAOA,EAAE,OAAO,EAE7DoE,GAAe3E,GAASA,IAAS,cAAgBA,EAAK,SAAS,OAAO,GAAKA,EAAK,SAAS,OAAO,EAChG4E,GAA2B,CAAC5E,EAAMO,IAChCA,GAAK,OAAOA,GAAM,UACpBsE,GACEH,GAAcnE,CAAC,EACf,4FACF,EACOA,EAAE,QAAQ,GACRoE,GAAY3E,CAAI,GAAK,OAAOO,GAAM,UAAYuE,EAAM,QAAQvE,CAAC,EAC/DuE,EAAMvE,CAAC,EAAE,QAAQ,EAEnBA,EAELwE,GAAsB,CAAC/E,EAAMO,IAAM,CACrC,GAAI,MAAM,QAAQA,CAAC,EAAG,CACpB,IAAM2D,EAAY3D,EAAE,OACdyE,EAAW,CAAC,EAClB,QAAS,EAAI,EAAG,EAAId,EAAW,IAC7Bc,EAAS,KAAKJ,GAAyB5E,EAAMO,EAAE,EAAE,CAAC,EAEpD,OAAOyE,CACT,KACE,QAAOJ,GAAyB5E,EAAMO,CAAC,CAE3C,EACI0E,GAAsB,CACxB,KAAM,CACJ,IAAK,CAACC,EAAaC,EAAcC,IAAU,CACrCF,EAAY,SAAW,SACzBC,EAAa,OAASC,GAEpBF,EAAY,QAAU,SACxBC,EAAa,MAAQC,EAEzB,EACA,KAAMhE,EACR,EACA,OAAQ,CACN,IAAK,CAAC8D,EAAaC,EAAcC,IAAU,CACzCD,EAAa,aAAeC,CAC9B,EACA,KAAMhE,EACR,EACA,OAAQ,CACN,IAAK,CAAC8D,EAAaC,EAAcC,IAAU,CACzCD,EAAa,UAAYC,CAC3B,EACA,KAAMX,EACR,CACF,EACIY,GAAmB1B,GAAW,CAChC,IAAM2B,EAAoB,CAAC,EAC3B,QAAWtF,KAAQ2D,EAAQ,CACzB,IAAMqB,EAAWD,GAAoB/E,EAAM2D,EAAO3D,EAAK,EACjDuF,EAAeN,GAAoBjF,GACzC,GAAIuF,EAAc,CAEhB,IAAMH,EADgBG,EAAa,MAAQ,OAAO5B,EAAO3D,IAAU,SACrCuF,EAAa,KAAK,UAAU5B,EAAO3D,EAAK,EAAI2D,EAAO3D,GACjFuF,EAAa,IAAI5B,EAAQ2B,EAAmBF,CAAK,CACnD,MACEE,EAAkBtF,GAAQgF,CAE9B,CACA,OAAOM,CACT,EAGA,SAASE,GAAkBjG,EAAQ,CACjC,MAAO,CAACkG,EAAGC,IACLnG,IAAW,GACN,yBAAyBmG,IAE5BnG,IAAW,IACN,oBAAoBmG,IAClBnG,IAAW,IACb,oBAAoBmG,IAGxBA,GAAa,MAExB,CAIA,SAASC,GAAYnG,EAAO,CAAE,iBAAAoG,EAAkB,QAAAC,CAAQ,EAAI,CAAC,EAAG,CAC9D,GAAM,CAAE,KAAAC,EAAM,YAAAC,EAAa,eAAAC,EAAgB,wBAAAC,EAA0B,GAAO,KAAAC,CAAK,EAAI1G,EAC/E,CAAE,YAAA2G,EAAa,QAAAC,CAAQ,EAAIC,EAAYC,EAAe,EAC5D,OAAOC,EAAS,IAAM,CACpB,GAAI,CAACH,EACH,OAAO5G,EAAM,SACf,IAAMgH,EAAmBZ,GAAoBpG,EAAM,SACnD,GAAI,CAACgH,IACCN,GAAQ,CAACH,GAAeE,GAC1B,OAEJ,IAAMQ,EAAoBD,GAAoBL,EAAY,CAAE,GAAIJ,EAAa,KAAAD,EAAM,eAAAE,CAAe,CAAC,EACnG,GAAKS,EAEL,OAAOZ,EAAU,GAAGY,KAAqBZ,IAAYY,CACvD,EAAG,CAACL,CAAO,CAAC,CACd,CAOA,IAAIM,GAA4BxG,EAAQ,cAAc,EAAK,EAGvDyG,GAAkB,CAAC,EAGnBC,GAAwB,UAAW,CACrC,OAAOD,GAAgB,KAAK,SAASE,EAAI,CACvC,OAAOA,EAAG,cAAc,OAAS,CACnC,CAAC,CACH,EAGIC,GAAyB,UAAW,CACtC,OAAOH,GAAgB,KAAK,SAASE,EAAI,CACvC,OAAOA,EAAG,eAAe,OAAS,CACpC,CAAC,CACH,EAGIE,GAAM,gEACNC,GAAyB,UAAW,CACtC,IAAIC,EACA,OAAO,YAAe,WACxBA,EAAQ,IAAI,WAAW,QAAS,CAC9B,QAASF,EACX,CAAC,GAEDE,EAAQ,SAAS,YAAY,OAAO,EACpCA,EAAM,UAAU,QAAS,GAAO,EAAK,EACrCA,EAAM,QAAUF,IAElBG,EAAO,cAAcD,CAAK,CAC5B,EAGIE,IACH,SAASC,EAA2B,CACnCA,EAA0B,WAAgB,aAC1CA,EAA0B,YAAiB,cAC3CA,EAA0B,yBAA8B,0BAC1D,GAAGD,KAA6BA,GAA2B,CAAC,EAAE,EAG9D,IAAIE,GAAS,SAASC,EAAK,CACzB,OAAO,OAAO,OAAOA,CAAG,CAC1B,EAGIC,GAAqB,UAAW,CAClC,SAASC,EAAoBC,EAAYC,EAAW,CAClD,KAAK,WAAaD,EAClB,KAAK,UAAYC,EACjBL,GAAO,IAAI,CACb,CACA,OAAOG,CACT,EAAE,EAGEG,GAAkB,UAAW,CAC/B,SAASC,EAAiBC,EAAGC,EAAGC,EAAOC,EAAQ,CAC7C,YAAK,EAAIH,EACT,KAAK,EAAIC,EACT,KAAK,MAAQC,EACb,KAAK,OAASC,EACd,KAAK,IAAM,KAAK,EAChB,KAAK,KAAO,KAAK,EACjB,KAAK,OAAS,KAAK,IAAM,KAAK,OAC9B,KAAK,MAAQ,KAAK,KAAO,KAAK,MACvBX,GAAO,IAAI,CACpB,CACA,OAAAO,EAAiB,UAAU,OAAS,UAAW,CAC7C,IAAItE,EAAK,KAAMuE,EAAIvE,EAAG,EAAGwE,EAAIxE,EAAG,EAAG2E,EAAM3E,EAAG,IAAK4E,EAAQ5E,EAAG,MAAO6E,EAAS7E,EAAG,OAAQ8E,EAAO9E,EAAG,KAAMyE,EAAQzE,EAAG,MAAO0E,EAAS1E,EAAG,OACrI,MAAO,CAAE,EAAAuE,EAAG,EAAAC,EAAG,IAAAG,EAAK,MAAAC,EAAO,OAAAC,EAAQ,KAAAC,EAAM,MAAAL,EAAO,OAAAC,CAAO,CACzD,EACAJ,EAAiB,SAAW,SAASS,EAAW,CAC9C,OAAO,IAAIT,EAAiBS,EAAU,EAAGA,EAAU,EAAGA,EAAU,MAAOA,EAAU,MAAM,CACzF,EACOT,CACT,EAAE,EAGEU,GAAQ,SAASC,EAAQ,CAC3B,OAAOA,aAAkB,YAAc,YAAaA,CACtD,EACIC,GAAW,SAASD,EAAQ,CAC9B,GAAID,GAAMC,CAAM,EAAG,CACjB,IAAIjF,EAAKiF,EAAO,QAAQ,EAAGR,EAAQzE,EAAG,MAAO0E,EAAS1E,EAAG,OACzD,MAAO,CAACyE,GAAS,CAACC,CACpB,CACA,IAAIzE,EAAKgF,EAAQE,EAAclF,EAAG,YAAamF,EAAenF,EAAG,aACjE,MAAO,EAAEkF,GAAeC,GAAgBH,EAAO,eAAe,EAAE,OAClE,EACII,GAAY,SAASrB,EAAK,CAC5B,IAAIhE,EAAIC,EACR,GAAI+D,aAAe,QACjB,MAAO,GAET,IAAIsB,GAASrF,GAAMD,EAAKgE,KAAS,MAAQhE,IAAO,OAAS,OAASA,EAAG,iBAAmB,MAAQC,IAAO,OAAS,OAASA,EAAG,YAC5H,MAAO,CAAC,EAAEqF,GAAStB,aAAesB,EAAM,QAC1C,EACIC,GAAoB,SAASN,EAAQ,CACvC,OAAQA,EAAO,QAAS,CACtB,IAAK,QACH,GAAIA,EAAO,OAAS,QAClB,MAEJ,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,MACH,MAAO,EACX,CACA,MAAO,EACT,EAGIO,GAAS,OAAO5B,EAAW,IAAcA,EAAS,CAAC,EAGnD6B,GAAyB,IAAI,QAC7BC,GAAe,cACfC,GAAiB,eACjBC,GAAK,gBAAgB,KAAKJ,GAAO,WAAaA,GAAO,UAAU,SAAS,EACxEK,GAAiB,SAASC,EAAO,CACnC,OAAO,WAAWA,GAAS,GAAG,CAChC,EACIC,GAAO,SAAS5B,EAAYC,EAAW4B,EAAa,CACtD,OAAI7B,IAAe,SACjBA,EAAa,GAEXC,IAAc,SAChBA,EAAY,GAEV4B,IAAgB,SAClBA,EAAc,IAET,IAAI/B,IAAoB+B,EAAc5B,EAAYD,IAAe,GAAI6B,EAAc7B,EAAaC,IAAc,CAAC,CACxH,EACI6B,GAAYlC,GAAO,CACrB,0BAA2BgC,GAAK,EAChC,cAAeA,GAAK,EACpB,eAAgBA,GAAK,EACrB,YAAa,IAAI1B,GAAgB,EAAG,EAAG,EAAG,CAAC,CAC7C,CAAC,EACG6B,GAAoB,SAASjB,EAAQkB,EAAoB,CAI3D,GAHIA,IAAuB,SACzBA,EAAqB,IAEnBV,GAAO,IAAIR,CAAM,GAAK,CAACkB,EACzB,OAAOV,GAAO,IAAIR,CAAM,EAE1B,GAAIC,GAASD,CAAM,EACjB,OAAAQ,GAAO,IAAIR,EAAQgB,EAAS,EACrBA,GAET,IAAIG,EAAK,iBAAiBnB,CAAM,EAC5BoB,EAAMrB,GAAMC,CAAM,GAAKA,EAAO,iBAAmBA,EAAO,QAAQ,EAChEqB,EAAgB,CAACV,IAAMQ,EAAG,YAAc,aACxCJ,EAAcL,GAAe,KAAKS,EAAG,aAAe,EAAE,EACtDG,EAAsB,CAACF,GAAOX,GAAa,KAAKU,EAAG,WAAa,EAAE,EAClEI,EAAwB,CAACH,GAAOX,GAAa,KAAKU,EAAG,WAAa,EAAE,EACpEK,EAAaJ,EAAM,EAAIR,GAAeO,EAAG,UAAU,EACnDM,EAAeL,EAAM,EAAIR,GAAeO,EAAG,YAAY,EACvDO,EAAgBN,EAAM,EAAIR,GAAeO,EAAG,aAAa,EACzDQ,EAAcP,EAAM,EAAIR,GAAeO,EAAG,WAAW,EACrDS,EAAYR,EAAM,EAAIR,GAAeO,EAAG,cAAc,EACtDU,EAAcT,EAAM,EAAIR,GAAeO,EAAG,gBAAgB,EAC1DW,EAAeV,EAAM,EAAIR,GAAeO,EAAG,iBAAiB,EAC5DY,EAAaX,EAAM,EAAIR,GAAeO,EAAG,eAAe,EACxDa,EAAoBL,EAAcF,EAClCQ,EAAkBT,EAAaE,EAC/BQ,EAAuBH,EAAaF,EACpCM,EAAqBP,EAAYE,EACjCM,EAAgCb,EAA4BvB,EAAO,aAAemC,EAAqBnC,EAAO,aAAtD,EACxDqC,EAA8Bf,EAA0BtB,EAAO,YAAckC,EAAuBlC,EAAO,YAAvD,EACpDsC,EAAiBjB,EAAgBW,EAAoBE,EAAuB,EAC5EK,EAAkBlB,EAAgBY,EAAkBE,EAAqB,EACzEK,EAAepB,EAAMA,EAAI,MAAQR,GAAeO,EAAG,KAAK,EAAImB,EAAiBD,EAC7EI,EAAgBrB,EAAMA,EAAI,OAASR,GAAeO,EAAG,MAAM,EAAIoB,EAAkBH,EACjFM,EAAiBF,EAAeR,EAAoBK,EAA6BH,EACjFS,EAAkBF,EAAgBR,EAAkBG,EAA+BD,EACnFS,EAAQ9D,GAAO,CACjB,0BAA2BgC,GAAK,KAAK,MAAM0B,EAAe,gBAAgB,EAAG,KAAK,MAAMC,EAAgB,gBAAgB,EAAG1B,CAAW,EACtI,cAAeD,GAAK4B,EAAgBC,EAAiB5B,CAAW,EAChE,eAAgBD,GAAK0B,EAAcC,EAAe1B,CAAW,EAC7D,YAAa,IAAI3B,GAAgBuC,EAAaH,EAAYgB,EAAcC,CAAa,CACvF,CAAC,EACD,OAAAjC,GAAO,IAAIR,EAAQ4C,CAAK,EACjBA,CACT,EACIC,GAAmB,SAAS7C,EAAQ8C,EAAa5B,EAAoB,CACvE,IAAInG,EAAKkG,GAAkBjB,EAAQkB,CAAkB,EAAG6B,EAAgBhI,EAAG,cAAeiI,EAAiBjI,EAAG,eAAgBkI,EAA4BlI,EAAG,0BAC7J,OAAQ+H,EAAa,CACnB,KAAKlE,GAAyB,yBAC5B,OAAOqE,EACT,KAAKrE,GAAyB,WAC5B,OAAOmE,EACT,QACE,OAAOC,CACX,CACF,EAGIE,GAAsB,UAAW,CACnC,SAASC,EAAqBnD,EAAQ,CACpC,IAAI4C,EAAQ3B,GAAkBjB,CAAM,EACpC,KAAK,OAASA,EACd,KAAK,YAAc4C,EAAM,YACzB,KAAK,cAAgB9D,GAAO,CAAC8D,EAAM,aAAa,CAAC,EACjD,KAAK,eAAiB9D,GAAO,CAAC8D,EAAM,cAAc,CAAC,EACnD,KAAK,0BAA4B9D,GAAO,CAAC8D,EAAM,yBAAyB,CAAC,CAC3E,CACA,OAAOO,CACT,EAAE,EAGEC,GAAwB,SAASC,EAAM,CACzC,GAAIpD,GAASoD,CAAI,EACf,MAAO,KAIT,QAFIC,EAAQ,EACRC,EAASF,EAAK,WACXE,GACLD,GAAS,EACTC,EAASA,EAAO,WAElB,OAAOD,CACT,EAGIE,GAA8B,UAAW,CAC3C,IAAIC,EAAkB,IAClBC,EAAa,CAAC,EAClBtF,GAAgB,QAAQ,SAAyBE,EAAI,CACnD,GAAIA,EAAG,cAAc,SAAW,EAGhC,KAAIqF,EAAU,CAAC,EACfrF,EAAG,cAAc,QAAQ,SAAuBsF,EAAI,CAClD,IAAIC,EAAQ,IAAIX,GAAoBU,EAAG,MAAM,EACzCE,EAAcV,GAAsBQ,EAAG,MAAM,EACjDD,EAAQ,KAAKE,CAAK,EAClBD,EAAG,iBAAmBf,GAAiBe,EAAG,OAAQA,EAAG,WAAW,EAC5DE,EAAcL,IAChBA,EAAkBK,EAEtB,CAAC,EACDJ,EAAW,KAAK,UAAkC,CAChDpF,EAAG,SAAS,KAAKA,EAAG,SAAUqF,EAASrF,EAAG,QAAQ,CACpD,CAAC,EACDA,EAAG,cAAc,OAAO,EAAGA,EAAG,cAAc,MAAM,EACpD,CAAC,EACD,QAASyF,EAAK,EAAGC,EAAcN,EAAYK,EAAKC,EAAY,OAAQD,IAAM,CACxE,IAAIE,EAAWD,EAAYD,GAC3BE,EAAS,CACX,CACA,OAAOR,CACT,EAGIS,GAAkC,SAASZ,EAAO,CACpDlF,GAAgB,QAAQ,SAAyBE,EAAI,CACnDA,EAAG,cAAc,OAAO,EAAGA,EAAG,cAAc,MAAM,EAClDA,EAAG,eAAe,OAAO,EAAGA,EAAG,eAAe,MAAM,EACpDA,EAAG,mBAAmB,QAAQ,SAAuBsF,EAAI,CACnDA,EAAG,SAAS,IACVR,GAAsBQ,EAAG,MAAM,EAAIN,EACrChF,EAAG,cAAc,KAAKsF,CAAE,EAExBtF,EAAG,eAAe,KAAKsF,CAAE,EAG/B,CAAC,CACH,CAAC,CACH,EAGIO,GAAW,UAAW,CACxB,IAAIb,EAAQ,EAEZ,IADAY,GAAgCZ,CAAK,EAC9BjF,GAAsB,GAC3BiF,EAAQE,GAA4B,EACpCU,GAAgCZ,CAAK,EAEvC,OAAI/E,GAAuB,GACzBE,GAAuB,EAElB6E,EAAQ,CACjB,EAGIc,GACAC,GAAY,CAAC,EACbC,GAAS,UAAW,CACtB,OAAOD,GAAU,OAAO,CAAC,EAAE,QAAQ,SAASE,EAAK,CAC/C,OAAOA,EAAI,CACb,CAAC,CACH,EACIC,GAAiB,SAASP,EAAU,CACtC,GAAI,CAACG,GAAS,CACZ,IAAIK,EAAW,EACXC,EAAO,SAAS,eAAe,EAAE,EACjCC,EAAS,CAAE,cAAe,EAAK,EACnC,IAAI,iBAAiB,UAAW,CAC9B,OAAOL,GAAO,CAChB,CAAC,EAAE,QAAQI,EAAMC,CAAM,EACvBP,GAAU,UAAW,CACnBM,EAAK,YAAc,IAAMD,EAAWA,IAAaA,IACnD,CACF,CACAJ,GAAU,KAAKJ,CAAQ,EACvBG,GAAQ,CACV,EAGIQ,GAAsB,SAASL,EAAK,CACtCC,GAAe,UAA2B,CACxC,sBAAsBD,CAAG,CAC3B,CAAC,CACH,EAGIM,GAAW,EACXC,GAAa,UAAW,CAC1B,MAAO,CAAC,CAACD,EACX,EACIE,GAAe,IACfC,GAAiB,CAAE,WAAY,GAAM,cAAe,GAAM,UAAW,GAAM,QAAS,EAAK,EACzFC,GAAS,CACX,SACA,OACA,gBACA,eACA,iBACA,qBACA,QACA,UACA,UACA,YACA,YACA,WACA,OACA,OACF,EACIC,GAAO,SAASC,EAAS,CAC3B,OAAIA,IAAY,SACdA,EAAU,GAEL,KAAK,IAAI,EAAIA,CACtB,EACIC,GAAY,GACZC,GAAY,UAAW,CACzB,SAASC,GAAa,CACpB,IAAIC,EAAQ,KACZ,KAAK,QAAU,GACf,KAAK,SAAW,UAAW,CACzB,OAAOA,EAAM,SAAS,CACxB,CACF,CACA,OAAAD,EAAW,UAAU,IAAM,SAASH,EAAS,CAC3C,IAAII,EAAQ,KAIZ,GAHIJ,IAAY,SACdA,EAAUJ,IAER,CAAAK,GAGJ,CAAAA,GAAY,GACZ,IAAII,EAAQN,GAAKC,CAAO,EACxBP,GAAoB,UAAW,CAC7B,IAAIa,EAAsB,GAC1B,GAAI,CACFA,EAAsBtB,GAAS,CACjC,QAAE,CAGA,GAFAiB,GAAY,GACZD,EAAUK,EAAQN,GAAK,EACnB,CAACJ,GAAW,EACd,OAEEW,EACFF,EAAM,IAAI,GAAG,EACJJ,EAAU,EACnBI,EAAM,IAAIJ,CAAO,EAEjBI,EAAM,MAAM,CAEhB,CACF,CAAC,EACH,EACAD,EAAW,UAAU,SAAW,UAAW,CACzC,KAAK,KAAK,EACV,KAAK,IAAI,CACX,EACAA,EAAW,UAAU,QAAU,UAAW,CACxC,IAAIC,EAAQ,KACRhB,EAAM,UAAW,CACnB,OAAOgB,EAAM,UAAYA,EAAM,SAAS,QAAQ,SAAS,KAAMP,EAAc,CAC/E,EACA,SAAS,KAAOT,EAAI,EAAIhE,GAAO,iBAAiB,mBAAoBgE,CAAG,CACzE,EACAe,EAAW,UAAU,MAAQ,UAAW,CACtC,IAAIC,EAAQ,KACR,KAAK,UACP,KAAK,QAAU,GACf,KAAK,SAAW,IAAI,iBAAiB,KAAK,QAAQ,EAClD,KAAK,QAAQ,EACbN,GAAO,QAAQ,SAAS1H,EAAM,CAC5B,OAAOgD,GAAO,iBAAiBhD,EAAMgI,EAAM,SAAU,EAAI,CAC3D,CAAC,EAEL,EACAD,EAAW,UAAU,KAAO,UAAW,CACrC,IAAIC,EAAQ,KACP,KAAK,UACR,KAAK,UAAY,KAAK,SAAS,WAAW,EAC1CN,GAAO,QAAQ,SAAS1H,EAAM,CAC5B,OAAOgD,GAAO,oBAAoBhD,EAAMgI,EAAM,SAAU,EAAI,CAC9D,CAAC,EACD,KAAK,QAAU,GAEnB,EACOD,CACT,EAAE,EACEI,GAAY,IAAIL,GAChBM,GAAc,SAASC,EAAG,CAC5B,CAACf,IAAYe,EAAI,GAAKF,GAAU,MAAM,EACtCb,IAAYe,EACZ,CAACf,IAAYa,GAAU,KAAK,CAC9B,EAGIG,GAAsB,SAAS7F,EAAQ,CACzC,MAAO,CAACD,GAAMC,CAAM,GAAK,CAACM,GAAkBN,CAAM,GAAK,iBAAiBA,CAAM,EAAE,UAAY,QAC9F,EACI8F,GAAoB,UAAW,CACjC,SAASC,EAAmB/F,EAAQ8C,EAAa,CAC/C,KAAK,OAAS9C,EACd,KAAK,YAAc8C,GAAelE,GAAyB,YAC3D,KAAK,iBAAmB,CACtB,WAAY,EACZ,UAAW,CACb,CACF,CACA,OAAAmH,EAAmB,UAAU,SAAW,UAAW,CACjD,IAAIC,EAAQnD,GAAiB,KAAK,OAAQ,KAAK,YAAa,EAAI,EAIhE,OAHIgD,GAAoB,KAAK,MAAM,IACjC,KAAK,iBAAmBG,GAEtB,KAAK,iBAAiB,aAAeA,EAAM,YAAc,KAAK,iBAAiB,YAAcA,EAAM,SAIzG,EACOD,CACT,EAAE,EAGEE,GAAuB,UAAW,CACpC,SAASC,EAAsBC,EAAgBlC,EAAU,CACvD,KAAK,cAAgB,CAAC,EACtB,KAAK,eAAiB,CAAC,EACvB,KAAK,mBAAqB,CAAC,EAC3B,KAAK,SAAWkC,EAChB,KAAK,SAAWlC,CAClB,CACA,OAAOiC,CACT,EAAE,EAGEE,GAA8B,IAAI,QAClCC,GAAsB,SAASC,EAAoBtG,EAAQ,CAC7D,QAASlE,EAAI,EAAGA,EAAIwK,EAAmB,OAAQxK,GAAK,EAClD,GAAIwK,EAAmBxK,GAAG,SAAWkE,EACnC,OAAOlE,EAGX,MAAO,EACT,EACIyK,GAA2B,UAAW,CACxC,SAASC,GAA4B,CACrC,CACA,OAAAA,EAA0B,QAAU,SAASL,EAAgBlC,EAAU,CACrE,IAAIwC,EAAS,IAAIR,GAAqBE,EAAgBlC,CAAQ,EAC9DmC,GAAY,IAAID,EAAgBM,CAAM,CACxC,EACAD,EAA0B,QAAU,SAASL,EAAgBnG,EAAQ0G,EAAS,CAC5E,IAAID,EAASL,GAAY,IAAID,CAAc,EACvCQ,EAAmBF,EAAO,mBAAmB,SAAW,EACxDJ,GAAoBI,EAAO,mBAAoBzG,CAAM,EAAI,IAC3D2G,GAAoBvI,GAAgB,KAAKqI,CAAM,EAC/CA,EAAO,mBAAmB,KAAK,IAAIX,GAAkB9F,EAAQ0G,GAAWA,EAAQ,GAAG,CAAC,EACpFf,GAAY,CAAC,EACbD,GAAU,SAAS,EAEvB,EACAc,EAA0B,UAAY,SAASL,EAAgBnG,EAAQ,CACrE,IAAIyG,EAASL,GAAY,IAAID,CAAc,EACvCS,EAAQP,GAAoBI,EAAO,mBAAoBzG,CAAM,EAC7D6G,EAAkBJ,EAAO,mBAAmB,SAAW,EACvDG,GAAS,IACXC,GAAmBzI,GAAgB,OAAOA,GAAgB,QAAQqI,CAAM,EAAG,CAAC,EAC5EA,EAAO,mBAAmB,OAAOG,EAAO,CAAC,EACzCjB,GAAY,EAAE,EAElB,EACAa,EAA0B,WAAa,SAASL,EAAgB,CAC9D,IAAIZ,EAAQ,KACRkB,EAASL,GAAY,IAAID,CAAc,EAC3CM,EAAO,mBAAmB,MAAM,EAAE,QAAQ,SAAS7C,EAAI,CACrD,OAAO2B,EAAM,UAAUY,EAAgBvC,EAAG,MAAM,CAClD,CAAC,EACD6C,EAAO,cAAc,OAAO,EAAGA,EAAO,cAAc,MAAM,CAC5D,EACOD,CACT,EAAE,EAGEM,GAAiB,UAAW,CAC9B,SAASC,EAAgB9C,EAAU,CACjC,GAAI,UAAU,SAAW,EACvB,MAAM,IAAI,UAAU,gFAAgF,EAEtG,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,UAAU,+FAA+F,EAErHsC,GAAyB,QAAQ,KAAMtC,CAAQ,CACjD,CACA,OAAA8C,EAAgB,UAAU,QAAU,SAAS/G,EAAQ0G,EAAS,CAC5D,GAAI,UAAU,SAAW,EACvB,MAAM,IAAI,UAAU,2FAA2F,EAEjH,GAAI,CAACtG,GAAUJ,CAAM,EACnB,MAAM,IAAI,UAAU,sFAAsF,EAE5GuG,GAAyB,QAAQ,KAAMvG,EAAQ0G,CAAO,CACxD,EACAK,EAAgB,UAAU,UAAY,SAAS/G,EAAQ,CACrD,GAAI,UAAU,SAAW,EACvB,MAAM,IAAI,UAAU,6FAA6F,EAEnH,GAAI,CAACI,GAAUJ,CAAM,EACnB,MAAM,IAAI,UAAU,wFAAwF,EAE9GuG,GAAyB,UAAU,KAAMvG,CAAM,CACjD,EACA+G,EAAgB,UAAU,WAAa,UAAW,CAChDR,GAAyB,WAAW,IAAI,CAC1C,EACAQ,EAAgB,SAAW,UAAW,CACpC,MAAO,gDACT,EACOA,CACT,EAAE,EAOF,SAASC,IAAkB,CACzB,GAAM,CAAC9J,EAAG+J,CAAoB,EAAItP,EAAQ,SAAS,CAAC,EACpD,OAAOA,EAAQ,YAAY,IAAMsP,EAAsBjP,GAAMA,EAAI,CAAC,EAAG,CAAC,CAAC,CACzE,CAIA,IAAIkP,GAAuBC,GACvBC,GAAiB,KAAM,CACzB,aAAc,CACZC,GAAa,KAAMH,GAAuB,MAAM,EAChDG,GAAa,KAAMF,GAA4B,IAAI,OAAS,EAC5D,IAAIG,EACJ,IAAMC,GAAmBD,EAAKE,GAAW,iBAAmB,KAAOF,EAAKG,GACxEC,GAAa,KAAMR,GAAuB,IAAIK,EAAgB,KAAK,sBAAsB,KAAK,IAAI,CAAC,CAAC,CACtG,CACA,sBAAsBI,EAAS,CAC7B,QAAWC,KAASD,EAAS,CAC3B,IAAME,EAAqBC,GAAa,KAAMX,EAAU,EAAE,IAAIS,EAAM,MAAM,EACtEC,GACFA,EAAmBD,EAAM,WAAW,CACxC,CACF,CACA,2BAA2BG,EAASC,EAAU,CAC5CF,GAAa,KAAMZ,EAAqB,EAAE,QAAQa,CAAO,EACzDD,GAAa,KAAMX,EAAU,EAAE,IAAIY,EAASC,CAAQ,CACtD,CACA,UAAUD,EAAS,CACjBD,GAAa,KAAMZ,EAAqB,EAAE,UAAUa,CAAO,EAC3DD,GAAa,KAAMX,EAAU,EAAE,OAAOY,CAAO,CAC/C,CACF,EACAb,GAAwB,IAAI,QAC5BC,GAAa,IAAI,QACjB,IAAIc,GAAuBC,GAAW,EAAI,IAAId,GAAmB,OA6BjE,IAAIe,GAAuC,yCAoB3C,SAASC,GAAmCC,EAAS,CAEnD,MAAO,CAAC,GADmBA,EAAQ,mBAAqBA,EAAQ,kBAAkB,aAAaC,EAAoC,EAAID,EAAQ,kBAAkB,SAAWA,EAAQ,QACvJ,EAAE,OAAOE,EAAY,EAAE,IAAIC,EAA4B,CACtF,CACA,SAASD,GAAaF,EAAS,CAC7B,OAAIA,aAAmB,iBAAmBA,aAAmB,iBAAmBA,aAAmB,iBAAmBA,aAAmB,iBAAmBA,aAAmB,mBAAqBA,aAAmB,kBAAoBA,aAAmB,iBACrP,GAEFA,aAAmB,aAAeA,aAAmB,UAC9D,CACA,SAASG,GAA6BH,EAAS,CAK7C,GAJI,EAAEA,aAAmB,cAErBA,EAAQ,SAAS,SAAW,GAE5BA,EAAQ,MAAM,UAAY,WAC5B,OAAOA,EACT,IAAMI,EAAuB,CAAC,GAAGJ,EAAQ,QAAQ,EAAE,KAAKE,EAAY,EACpE,OAAIE,EACKD,GAA6BC,CAAoB,EAEnDJ,CACT,CAGA,SAASK,GAAiBC,EAAOC,EAAKC,EAAc,IAAM,CAAC,EAAGC,EAAU,CAAC,EAAG,CAC1E,GAAM,CAAE,GAAAC,EAAI,QAAAC,EAAS,cAAAC,CAAc,EAAIN,EACjC,CAAE,SAAAO,EAAW,EAAM,EAAIJ,EACvBK,EAAkB,QAAQC,EAAYC,EAAyB,CAAC,EAChEC,EAAWC,GAAa,QAAQ,IAAM,SAC5CC,GAA2B,IAAM,CAC3B,CAACF,GAAYH,GAAmBD,GAG9BN,EAAI,SAAWG,GAAMC,GAAWC,GAGtCQ,GAAQ,oBAAoBC,GAAiBX,CAAE,EAAGH,EAAI,QAASC,EAAYD,EAAI,OAAO,CAAC,CACzF,CAAC,CACH,CACA,SAASe,GAAiCtB,EAAS,CACjD,IAAMuB,EAAYvB,EAAQ,QAAQ,mCAAmC,EAChEuB,GAELH,GAAQ,oBACNC,GAAiBE,EAAU,EAAE,EAC7BA,EACAxB,GAAmCwB,CAAS,CAC9C,CACF,CAMA,SAASC,GAAQC,EAAGC,EAAM,CACxB,OAAO,OAAO,UAAU,eAAe,KAAKD,EAAGC,CAAI,CACrD,CACA,SAASC,GAAWF,EAAG,CACrB,OAAKD,GAAQC,EAAG,QAAQ,EAEjB,OAAOA,EAAE,QAAW,WADlB,EAEX,CACA,SAASG,GAAMC,EAAGC,EAAGC,EAAM,CACzB,IAAMC,EAAW,MAAM,QACjBC,EAAU,OAAO,KACvB,GAAIJ,IAAMC,EACR,MAAO,GACT,GAAID,GAAKC,GAAK,OAAOD,GAAM,UAAY,OAAOC,GAAM,SAAU,CAC5D,IAAMI,EAAOF,EAASH,CAAC,EACjBM,EAAOH,EAASF,CAAC,EACnBM,EAAGC,EACP,GAAIH,GAAQC,EAAM,CAEhB,GADAE,EAASR,EAAE,OACPQ,IAAWP,EAAE,OACf,MAAO,GACT,IAAKM,EAAIC,EAAQD,MAAQ,GAGvB,GAFI,CAACL,GAAQF,EAAEO,KAAON,EAAEM,IAEpBL,GAAQ,CAACH,GAAMC,EAAEO,GAAIN,EAAEM,GAAI,EAAI,EACjC,MAAO,GAEX,MAAO,EACT,CACA,GAAIF,IAASC,EACX,MAAO,GACT,IAAMG,EAAQT,aAAa,KACrBU,EAAQT,aAAa,KAC3B,GAAIQ,IAAUC,EACZ,MAAO,GACT,GAAID,GAASC,EACX,OAAOV,EAAE,QAAQ,IAAMC,EAAE,QAAQ,EACnC,IAAMU,EAAUX,aAAa,OACvBY,EAAUX,aAAa,OAC7B,GAAIU,IAAYC,EACd,MAAO,GACT,GAAID,GAAWC,EACb,OAAOZ,EAAE,SAAS,IAAMC,EAAE,SAAS,EACrC,GAAID,aAAa,KAAOC,aAAa,IAAK,CACxC,GAAID,EAAE,OAASC,EAAE,KACf,MAAO,GACT,QAAWY,KAASb,EAClB,GAAI,CAACC,EAAE,IAAIY,CAAK,EACd,MAAO,GACX,MAAO,EACT,CACA,GAAIf,GAAWE,CAAC,GAAKF,GAAWG,CAAC,EAC/B,OAAOD,EAAE,OAAOC,CAAC,EAEnB,IAAMa,EAAQV,EAAQJ,CAAC,EAEvB,GADAQ,EAASM,EAAM,OACXN,IAAWJ,EAAQH,CAAC,EAAE,OACxB,MAAO,GACT,QAAWc,KAAQD,EAAO,CACxB,GAAI,CAACnB,GAAQM,EAAGc,CAAI,EAClB,MAAO,GACT,GAAI,EAAAA,IAAS,UAAYpB,GAAQK,EAAG,UAAU,GAAKA,EAAE,YAGjD,CAACE,GAAQF,EAAEe,KAAUd,EAAEc,IAEvBb,GAAQ,CAACH,GAAMC,EAAEe,GAAOd,EAAEc,GAAO,EAAI,GACvC,MAAO,EACX,CACA,MAAO,EACT,CACA,OAAOf,IAAMA,GAAKC,IAAMA,CAC1B,CACA,SAASe,GAAQhB,EAAGC,EAAGC,EAAO,GAAM,CAClC,GAAI,CACF,OAAOH,GAAMC,EAAGC,EAAGC,CAAI,CACzB,OAASe,EAAP,CACA,GAAIA,aAAiB,OAASA,EAAM,QAAQ,MAAM,kBAAkB,EAClE,eAAQ,KAAK,wDAAyDA,EAAM,KAAMA,EAAM,OAAO,EACxF,GAET,MAAMA,CACR,CACF,CAGA,IAAIC,GAAa,aACbC,GAAa,eAAeD,MAC5BE,GAAoBC,GAAU,GAAKC,GAAS,GAAKC,GAAO,EAC5D,SAASC,GAAiCC,EAAa,CACrDA,EAAY,WAAa,YACzB,IAAMrC,EAAWC,GAAa,QAAQ,IAAM,SACxC+B,IAAqBhC,IACvBqC,EAAY,WAAaP,GAE7B,CACA,SAASQ,GAAmCC,EAAe,CACzDA,EAAc,WAAa,YAC3BC,GAAkBD,EAAe,EAAI,CACvC,CACA,SAASC,GAAkBC,EAAOC,EAAS,CACzC,IAAM1C,EAAWC,GAAa,QAAQ,IAAM,SAC5C,GAAI,CAAC+B,IAAqB,CAAChC,EACzB,OAEF,IAAM2C,EAAaF,EAAM,WAAa,GAClCC,EACoBC,EAAW,SAASZ,EAAU,IAElDU,EAAM,UAAYE,EAAaZ,IAGjCU,EAAM,UAAYE,EAAW,QAAQZ,GAAY,EAAE,CAEvD,CAIA,SAASa,GAAc7D,EAAS4C,EAAMkB,EAASC,EAAY,GAAM,CAC/D,GAAI,CAAC/D,EACH,OAEF,IAAMgE,EAAQF,GAAoB9D,EAAQ,MAAM4C,GAC1CqB,EAAQ,IAAM,CAClBjE,EAAQ,MAAM4C,GAAQoB,CACxB,EACAhE,EAAQ,MAAM4C,GAAQ,KAClBmB,EACG,QAAQ,QAAQ,EAAE,KAAKE,CAAK,EAEjC,WAAWA,EAAO,CAAC,CAEvB,CAGA,IAAIC,GAAQ,cAAcC,EAAW,CACnC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,aAAe,KACpB,KAAK,gBAAmBnE,GAAY,CAClC,KAAK,aAAeA,CACtB,CACF,CACA,OAAO,gBAAgBM,EAAOoD,EAAOU,EAAkB,CACjD9D,EAAM,sBACJ8D,EACFf,GAAiCK,CAAK,EAEtCH,GAAmCG,CAAK,EAG9C,CACA,sBAAsBW,EAAWC,EAAW,CAC1C,OAAOD,EAAU,eAAiB,KAAK,QAAUC,GAAa,CAACzB,GAAQ,KAAK,MAAOwB,CAAS,CAC9F,CACA,mBAAmBE,EAAW,CACxB,KAAK,MAAM,MAAW,KAAK,MAAM,SAAc,GAAKA,EAAU,SAAc,GAC9EV,GAAc,KAAK,aAAc,WAAY,SAAU,EAAK,CAEhE,CACF,EACAK,GAAM,aAAe,CAAC,EAGtB,SAASM,GAAYC,EAAQC,EAAY,CAEvC,GADcD,EAAO,KACTC,EACV,OACF,IAAItC,EAAI,KAAK,MAAM,KAAK,OAAO,CAAC,EAChC,QAAWQ,KAAQ6B,EAAO,KAAK,GACxB,EAAErC,EAAI,KAAO,GAElBqC,EAAO,OAAO7B,CAAI,CAEtB,CACA,SAAS+B,GAASD,EAAYD,EAAQ7B,EAAMgC,EAAQ,CAClD,IAAMC,EAAIJ,EAAO,IAAI7B,CAAI,EACzB,GAAIiC,EACF,OAAOA,EACTL,GAAYC,EAAQC,CAAU,EAC9B,IAAMI,EAAIF,EAAOhC,CAAI,EACrB,OAAA6B,EAAO,IAAI7B,EAAMkC,CAAC,EACXA,CACT,CAGA,IAAIC,GAAQf,GAAU,CACpB,IAAIgB,EAAS,EAAG5C,EAAG6C,EACnB,GAAIjB,EAAM,SAAW,EACnB,OAAOgB,EACT,IAAK5C,EAAI,EAAGA,EAAI4B,EAAM,OAAQ5B,IAC5B6C,EAAMjB,EAAM,WAAW5B,CAAC,EACxB4C,GAAUA,GAAU,GAAKA,EAASC,EAClCD,GAAU,EAEZ,OAAOA,CACT,EAGIE,GAAe,CACjB,UAAW,CAACC,EAAQC,IACXC,EAAM,YAAYA,EAAM,UAAUA,EAAMF,CAAM,EAAGC,CAAK,CAAC,EAEhE,SAAU,CAACD,EAAQG,IACVD,EAAM,YAAYA,EAAM,MAAMA,EAAMF,CAAM,EAAGG,CAAM,CAAC,EAE7D,SAAWH,GAAW,CACpB,IAAMI,EAAMC,GAAeL,CAAM,EACjC,OAAOI,EAAMA,EAAI,EAAI,CACvB,EACA,cAAe,CAACJ,EAAQG,IACfD,EAAM,YAAYA,EAAM,cAAcA,EAAMF,CAAM,EAAGG,CAAM,CAAC,EAErE,MAAQH,GACCE,EAAM,YAAYA,EAAMF,CAAM,CAAC,EAAE,YAAY,EAEtD,MAAQA,GACCE,EAAM,MAAMA,EAAMF,CAAM,CAAC,EAElC,YAAcA,GACLE,EAAM,YAAYA,EAAMF,CAAM,CAAC,EAExC,MAAQA,GACCE,EAAM,MAAMA,EAAMF,CAAM,CAAC,EAElC,MAAQA,GACCE,EAAM,MAAMA,EAAMF,CAAM,CAAC,EAElC,YAAcA,GACLE,EAAM,YAAYA,EAAMF,CAAM,CAAC,EAExC,YAAcA,GACLE,EAAM,YAAYA,EAAMF,CAAM,CAAC,EAExC,eAAiBM,GACRJ,EAAM,YAAYA,EAAMK,GAASD,EAAI,EAAGA,EAAI,EAAGA,EAAI,EAAGA,EAAI,CAAC,CAAC,CAAC,EAEtE,YAAcA,GACLC,GAASD,EAAI,EAAGA,EAAI,EAAGA,EAAI,CAAC,EAErC,aAAeN,GACNE,EAAM,YAAYA,EAAMF,CAAM,CAAC,EAExC,YAAcQ,GACLN,EAAM,YAAYA,EAAMM,CAAG,CAAC,EAErC,oBAAsBC,GACbP,EAAM,YAAYA,EAAM,CAAE,EAAAO,EAAG,EAAG,EAAG,EAAG,GAAK,EAAG,CAAE,CAAC,CAAC,EAE3D,QAAUT,GACDE,EAAMF,CAAM,EAAE,UAAY,GAEnC,OAAQ,CAACtD,EAAGC,KACN,OAAOD,GAAM,WACfA,EAAIwD,EAAMxD,CAAC,GAET,OAAOC,GAAM,WACfA,EAAIuD,EAAMvD,CAAC,GAENuD,EAAM,MAAMxD,EAAGC,CAAC,GAEzB,kBAAoB+D,GAAU,CAC5B,IAAMV,EAASE,EAAMQ,CAAK,EAC1B,OAAOV,EAAO,IAAM,EAAIE,EAAM,YAAYF,CAAM,EAAIE,EAAM,YAAYF,CAAM,CAC9E,CACF,EAGIW,GAAoB,YACpBC,GAA6B,IAAI,IACrC,SAASC,GAAoBC,EAAGpE,EAAG,CACjC,IAAMe,EAAO,CAACqD,EAAGpE,CAAC,EAClB,OAAIiE,GAAkB,KAAKG,CAAC,EACnBA,EAEFtB,GAAS,IAAKoB,GAAYnD,EAAM,IAAMsC,GAAa,cAAce,EAAGpE,CAAC,CAAC,CAC/E,CACA,SAASqE,GAAmBC,EAAUb,EAAS,EAAG,CAChD,IAAIc,EASJ,MARI,UAAWD,EACbC,EAAQD,EAAS,MAEjBC,EAAQ,CACN,CAAE,MAAOD,EAAS,MAAO,SAAU,CAAE,EACrC,CAAE,MAAOA,EAAS,IAAK,SAAU,CAAE,CACrC,EAEEb,IAAW,EACNc,EAEAA,EAAM,IAAKC,IAAU,CAAE,GAAGA,EAAM,MAAOL,GAAoBK,EAAK,MAAOf,CAAM,CAAE,EAAE,CAE5F,CACA,SAASgB,GAAuBH,EAAUb,EAAQ,CAChD,IAAIiB,EAAS,EACb,OAAAL,GAAmBC,EAAUb,CAAM,EAAE,QAASe,GAAS,CACrDE,GAAUxB,GAAKsB,EAAK,KAAK,EAAIA,EAAK,QACpC,CAAC,EACME,CACT,CAGA,IAAIC,GAAwB,CAAC,OAAO,EACpC,SAASC,GAAoBzC,EAAO,CAClC,OAAOA,GAASwC,GAAsB,MAAO5D,GAASA,KAAQoB,CAAK,CACrE,CAGA,IAAI0C,GAAqB,CAAC,QAAS,KAAK,EACxC,SAASC,GAAiB3C,EAAO,CAC/B,OAAOA,GAAS0C,GAAmB,MAAO9D,GAASA,KAAQoB,CAAK,CAClE,CAGA,IAAI4C,GAAqB,CAAC,QAAS,OAAO,EACtCC,GAAiB,CACnB,iBAAmB7C,GACVA,GAAS4C,GAAmB,MAAOhE,GAASA,KAAQoB,CAAK,IAAM2C,GAAiB3C,CAAK,GAAKyC,GAAoBzC,CAAK,GAE5H,KAAO8C,GACEA,EAAe,MAAQR,GAAuBQ,EAAgBA,EAAe,KAAK,EAE3F,MAAO,CAACA,EAAgBC,IAAkB,CACxC,IAAMX,EAAQF,GAAmBY,EAAgBA,EAAe,KAAK,EAC/D1B,EAAQ2B,IAAkB,OAASA,EAAgBD,EAAe,MAClEE,EAAWZ,EAAM,IAAKC,GAAS,GAAGA,EAAK,SAASA,EAAK,SAAW,MAAM,EAC5E,MAAO,mBAAmBjB,SAAa4B,EAAS,KAAK,IAAI,IAC3D,CACF,EAGIC,GAAqB,CACvB,cACA,eACA,gBACA,gBACA,OACF,EACIC,GAAiB,CACnB,iBAAmBlD,GACVA,GAASiD,GAAmB,MAAOrE,GAASA,KAAQoB,CAAK,IAAM2C,GAAiB3C,CAAK,GAAKyC,GAAoBzC,CAAK,GAE5H,KAAOmD,GACEA,EAAe,cAAgBA,EAAe,cAAgBA,EAAe,YAAcA,EAAe,aAAeb,GAAuBa,EAAgBA,EAAe,KAAK,EAE7L,MAAQA,GAAmB,CACzB,GAAM,CAAE,MAAO7B,EAAQ,YAAA8B,EAAa,aAAAC,EAAc,cAAAC,EAAe,cAAAC,CAAc,EAAIJ,EAE7EH,EADQd,GAAmBiB,EAAgB7B,CAAM,EAChC,IAAKe,GAAS,GAAGA,EAAK,SAASA,EAAK,SAAW,MAAM,EAC5E,MAAO,mBAAmBe,EAAc,QAAQC,EAAe,WAAWC,EAAgB,QAAQC,EAAgB,SAASP,EAAS,KAAK,IAAI,IAC/I,CACF,EAGA,SAASQ,GAA2B,CAAE,WAAAC,EAAY,gBAAAC,CAAgB,EAAGhE,EAAO,CACtEgE,EACE,OAAOA,GAAoB,UAAYC,GAAeD,CAAe,EACvEhE,EAAM,gBAAkBgE,EACfrC,EAAM,cAAcoC,CAAU,IACvC/D,EAAM,gBAAkB+D,EAAW,cAAgBpC,EAAM,YAAYoC,CAAU,GAExEA,IACTA,EAAaG,GAAW,IAAIH,EAAY,IAAI,EACxC,OAAOA,GAAe,UAAYE,GAAeF,CAAU,EAC7D/D,EAAM,WAAa+D,EACVZ,GAAe,iBAAiBY,CAAU,EACnD/D,EAAM,WAAamD,GAAe,MAAMY,CAAU,EACzCP,GAAe,iBAAiBO,CAAU,EACnD/D,EAAM,WAAawD,GAAe,MAAMO,CAAU,EACzCpC,EAAM,cAAcoC,CAAU,IACvC/D,EAAM,gBAAkB+D,EAAW,cAAgBpC,EAAM,YAAYoC,CAAU,GAGrF,CAGA,SAASI,EAAsBvH,EAAOwH,EAAMC,EAAUC,EAAM,CAI1D,GAHIA,IAAS,SACXA,EAAOF,GAELxH,EAAMwH,KAAU,OAAQ,CAC1BC,EAASC,GAAQ1H,EAAMwH,GACvB,MACF,CACF,CAGA,SAASG,GAAgBvE,EAAO,CAC9B,OAAKA,EAEEA,EAAM,OAAS,QAAUA,EAAM,QAAU,OADvC,EAEX,CACA,SAASwE,GAAgBxE,EAAO,CAC9B,OAAKA,EAEEA,EAAM,MAAQ,QAAUA,EAAM,SAAW,OADvC,EAEX,CACA,SAASyE,GAAsB7H,EAAO,CACpC,GAAI,CAACA,EACH,MAAO,CAAC,EAEV,IAAMoD,EAAQ,CAAC,EACf,OAAIpD,EAAM,aAAe,GACvBoD,EAAM,eAAiB,cACdpD,EAAM,aAAe,KAC9BoD,EAAM,eAAiB,QAErBpD,EAAM,kBAAoB,GAC5BoD,EAAM,mBAAqB,UAClBpD,EAAM,kBAAoB,KACnCoD,EAAM,mBAAqB,UAEzBA,EAAM,qBACRA,EAAM,yBAA2BA,EAAM,oBAErCpD,EAAM,cAAgB,SACxBoD,EAAM,YAAcA,EAAM,kBAAoBpD,EAAM,aAEjDA,EAAM,wBACLA,EAAM,SAAW,IACnBoD,EAAM,KAAO,MACbA,EAAM,IAAM,OAERpD,EAAM,SAAW,IACnBoD,EAAM,KAAO,MACJpD,EAAM,SAAW,MAC1BoD,EAAM,IAAM,QAIlBmE,EAAsBvH,EAAO,OAAQoD,CAAK,EAC1CmE,EAAsBvH,EAAO,QAASoD,CAAK,EAC3CmE,EAAsBvH,EAAO,SAAUoD,CAAK,EAC5CmE,EAAsBvH,EAAO,WAAYoD,CAAK,EAC9CmE,EAAsBvH,EAAO,YAAaoD,CAAK,EAC/CmE,EAAsBvH,EAAO,MAAOoD,CAAK,EACzCmE,EAAsBvH,EAAO,QAASoD,CAAK,EAC3CmE,EAAsBvH,EAAO,SAAUoD,CAAK,EAC5CmE,EAAsBvH,EAAO,OAAQoD,CAAK,EAC1CmE,EAAsBvH,EAAO,WAAYoD,CAAK,EAC9CmE,EAAsBvH,EAAO,WAAYoD,CAAK,EAC9CmE,EAAsBvH,EAAO,UAAWoD,CAAK,GACzC,CAACpD,EAAM,SAAW,CAACA,EAAM,QAAQ,cACnCuH,EAAsBvH,EAAO,SAAUoD,CAAK,EAC9CmE,EAAsBvH,EAAO,eAAgBoD,CAAK,EAClDmE,EAAsBvH,EAAO,SAAUoD,EAAO,cAAc,EAC5DmE,EAAsBvH,EAAO,QAASoD,CAAK,EAC3CmE,EAAsBvH,EAAO,SAAUoD,EAAO,WAAW,EACzDmE,EAAsBvH,EAAO,IAAKoD,CAAK,EACvCmE,EAAsBvH,EAAO,IAAKoD,CAAK,EACvCmE,EAAsBvH,EAAO,IAAKoD,CAAK,EACvCmE,EAAsBvH,EAAO,SAAUoD,CAAK,EAC5CmE,EAAsBvH,EAAO,UAAWoD,CAAK,EAC7CmE,EAAsBvH,EAAO,UAAWoD,CAAK,EAC7CmE,EAAsBvH,EAAO,UAAWoD,CAAK,EAC7CmE,EAAsBvH,EAAO,QAASoD,CAAK,EAC3CmE,EAAsBvH,EAAO,SAAUoD,CAAK,EAC5CmE,EAAsBvH,EAAO,SAAUoD,CAAK,EAC5CmE,EAAsBvH,EAAO,OAAQoD,CAAK,EAC1CmE,EAAsBvH,EAAO,QAASoD,CAAK,EAC3CmE,EAAsBvH,EAAO,QAASoD,CAAK,EAC3CmE,EAAsBvH,EAAO,UAAWoD,CAAK,EAC7CmE,EAAsBvH,EAAO,UAAWoD,CAAK,EAC7CmE,EAAsBvH,EAAO,UAAWoD,CAAK,EAC7C8D,GAA2BlH,EAAOoD,CAAK,EAChCA,CACT,CAGA,SAAS0E,GAAU9H,EAAO,CACxB,QAAWsC,KAAQtC,EACjB,GAAIsC,IAAS,QAAUA,EAAK,WAAW,OAAO,GAAK,OAAOtC,EAAMsC,IAAU,YAAcA,EAAK,WAAW,IAAI,GAAK,CAACA,EAAK,SAAS,WAAW,EACzI,MAAO,GAGX,MAAO,EACT,CACA,IAAIyF,GAAgB,CAClB,UACA,gBACA,UACA,cACA,YACA,YACA,QACA,UACA,YACA,gBACA,cACA,UACA,cACA,WACF,EACIC,GAAmC,IAAI,IAAI,CAC7C,GAAGD,GACH,GAAGA,GAAc,IAAKE,GAAU,GAAGA,UAAc,CACnD,CAAC,EACD,SAASC,GAAoBlI,EAAO,CAClC,GAAIA,EAAM,KACR,MAAO,OAET,QAAWsC,KAAQtC,EACjB,GAAIgI,GAAiB,IAAI1F,CAAI,EAC3B,MAAO,SAIb,CACA,IAAI6F,GAAc,WAClB,SAASC,GAAqBpI,EAAO,CACnC,OAAIqI,GAAqBrI,CAAK,EACrB,GACJA,EAAM,MAEP,EAAAqI,GAAqBrI,EAAM,KAAK,EAD3B,EAIX,CACA,SAASqI,GAAqBrI,EAAO,CACnC,OAAImI,MAAenI,IAAUA,EAAMmI,MAAiB,UAAYnI,EAAMmI,MAAiB,OAGzF,CACA,SAASG,GAAiBC,EAAY,CACpC,GAAM,CACJ,KAAAC,EACA,IAAAC,EACA,OAAAC,EACA,MAAAC,EACA,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,aAAAC,EACA,KAAMC,EACN,UAAAC,EACA,WAAAC,EACA,cAAAC,EACA,iBAAAC,CACF,EAAIb,EACEc,EAAWC,GAAmBf,EAAW,QAAQ,EACjDgB,EAAYD,GAAmBf,EAAW,SAAS,EACnDiB,EAAWF,GAAmBf,EAAW,QAAQ,EACjDkB,EAAYH,GAAmBf,EAAW,SAAS,EAoBzD,MAnBwB,CACtB,IAAKe,GAAmBb,CAAG,EAC3B,KAAMa,GAAmBd,CAAI,EAC7B,OAAQc,GAAmBZ,CAAM,EACjC,MAAOY,GAAmBX,CAAK,EAC/B,MAAOW,GAAmBV,CAAK,EAC/B,OAAQU,GAAmBT,CAAM,EACjC,KAAMS,GAAmBN,CAAK,EAC9B,OAAAF,EACA,aAAAC,EACA,UAAAE,EACA,WAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,UAAAE,EACA,SAAAC,EACA,UAAAC,CACF,CAEF,CACA,IAAIC,GAAmB,CAAE,EAAG,EAAG,EAAG,EAAG,MAAO,IAAK,OAAQ,GAAI,EAC7D,SAASC,GAAgB3J,EAAO,CAC9B,IAAI4J,EACJC,GAAwB,EACxB,IAAMrJ,EAAkB,QAAQC,EAAYC,EAAyB,CAAC,EAChE,CAAE,MAAA0C,EAAO,cAAA0G,EAAe,sBAAAC,EAAuB,KAAMf,CAAM,EAAIhJ,EAC/DgK,EAAiB1B,GAAiBtI,CAAK,EACvCiK,EAAkBC,GAAeF,CAAc,EAC/CG,EAAe,CACnB,QAAS,QACT,WAAY,EACZ,WAAYvJ,GAAa,QAAQ,IAAM,UAA0B,OAAS,MAC5E,EACKZ,EAAM,wBACTmK,EAAa,gBAAkBnK,EAAM,aAAe,OAAS,yBAA2B,QAEvD,CAAC8H,GAAU9H,CAAK,GAAK,CAACA,EAAM,uBAAyB,CAACoI,GAAqBpI,CAAK,GAAK,GAAG4J,EAAK5J,EAAM,QAAU,MAAgB4J,EAAG,iBAEjKO,EAAa,cAAgB,QAK/B,IAAMC,EAHmBC,EAAQ,SAAS,MAAMrK,EAAM,QAAQ,EAAI,GAAKqK,EAAQ,SAAS,QAAQrK,EAAM,QAAQ,EAAE,MAAOsK,GAC9G,OAAOA,GAAU,UAAY,OAAOA,GAAU,QACtD,GAC2C,CAC1C,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,UAAW,QACb,EACMC,EAAa1C,GAAsB7H,CAAK,EAC1CgJ,IAAU,QAAU,CAACe,IAClBpC,GAAgB4C,CAAU,IAC7BJ,EAAa,MAAQT,GAAiB,OAEnC9B,GAAgB2C,CAAU,IAC7BJ,EAAa,OAAST,GAAiB,SAGvCM,EAAe,WAAa,SAC9BG,EAAa,SAAWH,EAAe,UAErCA,EAAe,YAAc,SAC/BG,EAAa,UAAYH,EAAe,WAE1C,IAAIQ,EAAmB,CAAC,EACpBC,GAAmBT,CAAc,GAC/BC,GAAmB,CAACS,GAAY1K,CAAK,IACvCwK,EAAmB,CACjB,KAAMP,EAAgB,EACtB,IAAKA,EAAgB,EACrB,MAAOA,EAAgB,MACvB,OAAQA,EAAgB,OACxB,MAAO,OACP,OAAQ,MACV,GAGJ,OAAO,OAAOE,EAAcC,EAAiBN,EAAeS,EAAYC,EAAkBpH,CAAK,EAC/FQ,GAAM,gBAAgB5D,EAAOmK,EAAc,EAAI,EAC/C,IAAIQ,EAAcR,EACbA,EAAa,YAChBQ,EAAc,CAAE,EAAG,EAAG,EAAG,EAAG,GAAGR,CAAa,GAE9C,IAAMxJ,EAAWC,GAAa,QAAQ,IAAM,SAC5C,OAAIZ,EAAM,gBACJ,CAACW,GAAYH,KACfmK,EAAY,SAAW,SACvBA,EAAY,WAAa,YACzBA,EAAY,OAAS,EACrBA,EAAY,IAAM3K,EAAM,kBACxB2K,EAAY,MAAQ3K,EAAM,oBAC1B2K,EAAY,OAAS3K,EAAM,qBAC3B2K,EAAY,KAAO3K,EAAM,oBAElBW,IAAaX,EAAM,eAAiBA,EAAM,oBACnD2K,EAAY,SAAW,YAErB,WAAYA,GAAeA,EAAY,SAAW,QACpD,OAAOA,EAAY,OAEd,CAACA,EAAaV,CAAe,CACtC,CACA,IAAIW,GAAgC,IAAI,IAAI,CAC1C,QACA,SACA,UACA,WACA,SACA,aACA,QACA,IACA,IACA,IACA,SACA,UACA,UACA,UACA,QACA,SACA,SACA,OACA,QACA,QACA,UACA,UACA,SACF,CAAC,EACD,SAASC,GAAe7K,EAAO,CAC7B,IAAM8K,EAAc,CAAC,EACrB,QAAWxI,KAAQtC,GACD+K,GAAkBzI,CAAI,GAAK0I,GAAY1I,CAAI,IAC5C,CAACsI,GAAc,IAAItI,CAAI,EACpCwI,EAAYxI,GAAQtC,EAAMsC,IACjBA,IAAS,sBAAwBA,IAAS,sBACnDwI,EAAY,OAAY,GACpB,OAAO9K,EAAMsC,IAAU,WAAa,CAACtC,EAAM,aAC7C8K,EAAY,WAAgB9K,EAAMsC,KAIxC,OAAOwI,CACT,CACA,SAASG,GAAkBjL,EAAO,CAChC,MAAO,qBAAsBA,CAC/B,CACA,IAAIkL,GAA+BC,GAAW,SAAuBnL,EAAOoL,EAAc,CACxF,IAAIxB,EAAIyB,EACR,GAAM,CAAE,KAAA7D,EAAM,OAAAsB,EAAQ,OAAAwC,EAAQ,QAAAC,EAAS,SAAAC,CAAS,EAAIxL,EAC9C,CAAE,MAAOyL,EAAoB,SAAAC,CAAS,EAAIC,GAA0B3L,CAAK,EACzE8K,EAAcD,GAAeY,CAAkB,EAC/CG,EAAWC,GAAY7L,CAAK,EAC5B8L,EAAS5D,GAAoBlI,CAAK,EAClC+L,EAAcC,EAAQ,IAAI,EAC1B/L,EAAMmL,GAAsCW,EAC5CE,EAAY,CAChB,6BAA8B,QAC9B,qBAAsBH,EACtB,wBAAyBA,IAAW,UAAY,GAAO,OACvD,gBAAiBF,CACnB,EACI,CAACX,GAAkBjL,CAAK,GAAKwH,IAC/ByE,EAAU,oBAAsBzE,GAElC,GAAM,CAAC0E,EAAcC,CAAI,EAAIxC,GAAgB8B,CAAkB,EACzDzB,EAAiB1B,GAAiBmD,CAAkB,EACpDW,EAAY1B,GAAYV,CAAc,EACxClB,GAAU,EAAEqD,GAAQ,CAACC,GAAa3B,GAAmBT,CAAc,IAChEc,EAAY,oBACfA,EAAY,kBAAoBuB,GAAkBvD,CAAM,GAC1D,OAAO,OAAOmD,EAAWK,GAA6BxD,CAAM,CAAC,GACnDgC,EAAY,oBACtBA,EAAY,kBAAoB,QAElC/K,GAAiBC,EAAOC,CAAG,EAC3B,IAAMsM,EAAkBC,GAAyBxM,CAAK,EAChDQ,EAAkB,QAAQC,EAAYC,EAAyB,CAAC,EAChE+L,EAAaC,GAAkBjB,EAAoBzB,EAAgBmC,EAAM3L,CAAe,EACxFmM,EAAiBC,GACLvC,EAAQ,cAAcA,EAAQ,SAAU,KAAMkC,EAAkClC,EAAQ,cACtGwC,GACA,CACE,KAAMjD,EAAK5J,EAAM,MAAQ,KAAO4J,EAAK,GACrC,MAAO2C,EACP,cAAeJ,GAAsB,OACrC,OAAQnM,EAAM,IAAMe,GAAiBf,EAAM,EAAE,EAC7C,SAAA4L,CACF,CACF,EAAI,KAAMF,EAA0BrB,EAAQ,cAAcyC,GAAQ,CAAE,GAAGvB,EAAS,OAAAD,EAAQ,SAAAM,CAAS,CAAC,CAAC,EACnGa,CACF,EACMM,EAAkBC,IAAQ3B,EAAKrL,EAAM,KAAO,KAAOqL,EAAK,OAC9D,OAAuBhB,EAAQ,cAC7B0C,EACA,CACE,GAAGd,EACH,GAAGnB,EACH,SAAAc,EACA,MAAOM,EACP,IAAAjM,EACA,gBAAAgN,EACF,EACAN,EACAnB,CACF,CACF,CAAC,EACG0B,GAAkC/B,GAAW,SAA0BnL,EAAOC,EAAK,CACjFkN,GAAgB,QAAQ,IAAI,WAAa,cAAgBC,GAAW,MACtEA,GAAW,KAAQ,WAAW,EAChC,GAAM,CAAE,QAAA/M,EAAU,EAAK,EAAIL,EAC3B,OAAKK,EAEkBgK,EAAQ,cAAca,GAAc,CAAE,GAAGlL,EAAO,IAAAC,CAAI,CAAC,EADnE,IAEX,CAAC,EACD,SAASyM,GAAkB1M,EAAOgK,EAAgBmC,EAAM3L,EAAiB,CACvE,GAAIA,EAEF,OADmB2L,EAAO,CAAE,MAAOA,EAAK,MAAO,OAAQA,EAAK,MAAO,EAAI,EAGzE,GAAM,CAAE,aAAAkB,CAAa,EAAIrN,EACnB,CACJ,UAAAiJ,EAAY,EACZ,WAAAC,EAAa,EACb,MAAAN,EACA,OAAAC,CACF,EAAImB,EACJ,OAAImC,GAAQ,CAACkB,EACJlB,EAELlD,IAAc,GAAuBC,IAAe,GAAuB,OAAON,GAAU,UAAY,OAAOC,GAAW,SACrH,CAAE,MAAAD,EAAO,OAAAC,CAAO,EAErBwE,GAAgBrN,EAAM,eAAiBA,EAAM,iBACxC,EAEF,CACT,CACA,SAAS0K,GAAY,CACnB,MAAA9B,EACA,OAAAC,CACF,EAAG,CACD,OAAOD,IAAU,QAAUA,IAAU,eAAiBC,IAAW,QAAUA,IAAW,aACxF,CAmGA,IAAIyE,GAAiCC,GAAQC,GAAoC,EAAG,CAAC,EAuBrF,IAAIC,GAAgB,KAAM,CACxB,aAAc,CACZ,KAAK,QAAU,IAAM,CACnBC,GAAS,+EAA+E,CAC1F,EACA,KAAK,OAAS,IAAM,KAAK,QAAQ,EACjC,KAAK,QAAU,IAAM,KAAK,QAAQ,EAClC,KAAK,KAAO,IAAM,KAAK,QAAQ,EAC/B,KAAK,KAAO,IAAM,KAAK,QAAQ,EAC/B,KAAK,MAAQ,IAAM,KAAK,QAAQ,EAChC,KAAK,QAAU,IAAM,KAAK,QAAQ,EAClC,KAAK,KAAO,IAAM,KAAK,QAAQ,EAC/B,KAAK,iBAAmB,IAAM,KAAK,QAAQ,EAC3C,KAAK,YAAc,IAAM,KAAK,QAAQ,CACxC,CACF,EACIC,GAAgB,IAAIF,GAGpBG,GAAoBC,GAAcF,EAAa,EA+EnD,IAAIG,GAAkCC,GAAQC,GAAoC,EAAG,CAAC,EAgGtF,IAAIC,GAAkCC,GAAQC,GAAoC,EAAG,CAAC,EAiBtF,IAAIC,GAAkBC,EAAQ,cAAc,CAAE,SAAU,EAAM,CAAC,EA8jB/D,IAAIC,GAAa,CACf,aAAc,aACd,aAAc,YAChB,EACIC,GAAiB,OAAO,KAAKD,EAAU,EAuG3C,IAAIE,GAAkBC,GAAQC,GAAgB,EAAG,CAAC,EAI9CC,GAAiB,CAACC,EAAKC,IAAS,OAAO,UAAU,eAAe,KAAKD,EAAKC,CAAI,EAC9EC,IAAoC,IAAM,CAC5C,SAASC,EAAkBC,EAAU,CAAC,EAAGC,EAAkB,GAAOC,EAAqB,GAAM,CAC3F,IAAMC,EAAiB,CAAC,EACxBA,EAAeC,IAAY,CACzB,gBAAAH,EACA,mBAAAC,EACA,UAAW,IAAIG,GACf,OAAQ,CACN,QAAWC,KAAQC,EACbZ,GAAeY,EAAOD,CAAI,IAC5BC,EAAMD,GAAQX,GAAeK,EAASM,CAAI,EAAIN,EAAQM,GAAQ,OAGpE,EACA,aAA8B,IAAI,GACpC,EACA,IAAMC,EAAQ,IAAI,MAAMJ,EAAgBK,EAAkB,EAC1D,cAAO,OAAOD,EAAOP,CAAO,EACrBO,CACT,CACA,OAAAR,EAAkB,YAAeU,GACxBA,EAAOL,IAAU,MAAM,EAEhCL,EAAkB,YAAc,CAACU,EAAQC,IAChCD,EAAOL,IAAU,UAAU,IAAIM,CAAQ,EAEzCX,CACT,GAAG,EACCY,GAA+B,KAAM,CACvC,aAAc,CACZ,KAAK,IAAM,CAACF,EAAQH,EAAMM,EAAOC,IAAa,CAC5C,GAAIP,IAASF,GACX,MAAO,GAET,IAAMU,EAAgBL,EAAOL,IACzBW,EACAC,EAUJ,GATIC,GAAaL,CAAK,GACpBG,EAAaH,EACbI,EAAWD,EAAW,IAAI,GAE1BC,EAAWJ,EAETE,EAAc,iBAAmB,OAAOF,GAAU,YAAc,OAAOA,GAAU,UAAY,CAACG,IAChGA,EAAaG,GAAWN,CAAK,GAE3BE,EAAc,oBAAsBC,EAAY,CAClD,IAAMI,EAAeL,EAAc,aACnCC,EAAW,SAAS,CAClB,OAAQ,CAACK,EAAQC,IAAgB,CAC3BA,GACFF,EAAa,IAAIE,CAAW,EAE9BP,EAAc,UAAU,OAAO,CAAE,MAAOD,CAAS,EAAGQ,CAAW,CACjE,EACA,OAASA,GAAgB,CACnBF,EAAa,OAAOE,CAAW,GACjCP,EAAc,UAAU,kBAAkBO,CAAW,CAEzD,CACF,CAAC,CACH,CACA,IAAIC,EAAS,GACTC,EAAU,GACd,GAAId,EAAOH,KAAU,OAAQ,CACvBW,GAAaR,EAAOH,EAAK,GAC3BiB,EAAUd,EAAOH,GAAM,IAAI,IAAMU,EACjCP,EAAOH,GAAM,IAAIU,CAAQ,IAEzBO,EAAUd,EAAOH,KAAUU,EAC3BP,EAAOH,GAAQU,GAEjB,IAAMQ,EAAmBR,IAAa,MAAQ,OAAOA,GAAa,UAC9D,MAAM,QAAQA,CAAQ,GAAKQ,KAC7BD,EAAU,IACZD,EAAS,EACX,MACMP,IACFH,EAAQG,GAEVO,EAAS,QAAQ,IAAIb,EAAQH,EAAMM,CAAK,EAE1C,OAAIW,GACFT,EAAc,UAAU,OAAO,CAAE,MAAOD,CAAS,CAAC,EAE7CS,CACT,EACA,KAAK,IAAM,CAACb,EAAQH,EAAMO,IAAa,CACrC,GAAIP,IAASF,GACX,OAAOK,EAAOH,GAEhB,IAAMM,EAAQ,QAAQ,IAAIH,EAAQH,EAAMO,CAAQ,EAChD,OAAO,OAAOD,GAAU,WAAaA,EAAM,KAAKC,CAAQ,EAAID,CAC9D,CACF,CACA,eAAeH,EAAQH,EAAM,CAC3B,IAAMgB,EAAS,QAAQ,eAAeb,EAAQH,CAAI,EAClD,OAAAG,EAAOL,IAAU,UAAU,OAAO,CAAE,MAAOK,CAAO,CAAC,EAC5Ca,CACT,CACA,QAAQb,EAAQ,CACd,IAAMgB,EAAQ,QAAQ,QAAQhB,CAAM,EAC9BiB,EAAeD,EAAM,QAAQrB,EAAQ,EAC3C,OAAIsB,IAAiB,IACnBD,EAAM,OAAOC,EAAc,CAAC,EAEvBD,CACT,CACA,yBAAyBhB,EAAQH,EAAM,CACrC,GAAIA,IAASF,GAGb,OAAO,QAAQ,yBAAyBK,EAAQH,CAAI,CACtD,CACF,EACIE,GAAqC,IAAIG,GACzCP,GAA2B,OAAO,SAAS,EAU/C,IAAIuB,GAAO,UACX,SAASC,GAAYC,EAAQ,CAC3B,OAAOF,MAAQE,CACjB,CACA,SAASC,GAAwBC,EAAOC,EAAO,CAC7C,GAAI,CAACJ,GAAYG,CAAK,EACpB,OACF,IAAME,EAAUC,GAAW,UAAUH,EAAM,OAAO,EAC9CE,IAAY,IAEhBD,EAAM,QAAUC,EAClB,CA4DA,SAASE,GAAOC,EAAGC,EAAG,CACpB,IAAIC,EAAI,CAAC,EACT,QAASC,KAAKH,EACR,OAAO,UAAU,eAAe,KAAKA,EAAGG,CAAC,GAAKF,EAAE,QAAQE,CAAC,EAAI,IAC/DD,EAAEC,GAAKH,EAAEG,IACb,GAAIH,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WACvD,QAAS,EAAI,EAAGG,EAAI,OAAO,sBAAsBH,CAAC,EAAG,EAAIG,EAAE,OAAQ,IAC7DF,EAAE,QAAQE,EAAE,EAAE,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKH,EAAGG,EAAE,EAAE,IAC3ED,EAAEC,EAAE,IAAMH,EAAEG,EAAE,KAEpB,OAAOD,CACT,CAGA,IAAIE,GAAS,CAACC,EAAKC,EAAKC,IAAM,KAAK,IAAI,KAAK,IAAIA,EAAGF,CAAG,EAAGC,CAAG,EAGxDE,GAAU,KACVC,GAAe,IACfC,GAAe,GACfC,GAAc,IACdC,GAAc,EAClB,SAASC,GAAW,CAAE,SAAAC,EAAW,IAAK,OAAAC,EAAS,IAAM,SAAAC,EAAW,EAAG,KAAAC,EAAO,CAAE,EAAG,CAC7E,IAAIC,EACAC,EACJC,GAAQN,GAAYJ,GAAe,IAAK,4CAA4C,EACpF,IAAIW,EAAe,EAAIN,EACvBM,EAAejB,GAAOO,GAAaC,GAAaS,CAAY,EAC5DP,EAAWV,GAAOK,GAAcC,GAAcI,EAAW,GAAG,EACxDO,EAAe,GACjBH,EAAYI,GAAkB,CAC5B,IAAMC,EAAmBD,EAAgBD,EACnCG,EAAQD,EAAmBT,EAC3BW,EAAIF,EAAmBP,EACvBU,EAAIC,GAAgBL,EAAeD,CAAY,EAC/CO,EAAI,KAAK,IAAI,CAACJ,CAAK,EACzB,OAAOhB,GAAUiB,EAAIC,EAAIE,CAC3B,EACAT,EAAcG,GAAkB,CAE9B,IAAME,EADmBF,EAAgBD,EACRP,EAC3B,EAAIU,EAAQR,EAAWA,EACvBf,EAAI,KAAK,IAAIoB,EAAc,CAAC,EAAI,KAAK,IAAIC,EAAe,CAAC,EAAIR,EAC7De,EAAI,KAAK,IAAI,CAACL,CAAK,EACnB,EAAIG,GAAgB,KAAK,IAAIL,EAAe,CAAC,EAAGD,CAAY,EAElE,OADe,CAACH,EAASI,CAAa,EAAId,GAAU,EAAI,GAAK,KAC3C,EAAIP,GAAK4B,GAAK,CAClC,IAEAX,EAAYI,GAAkB,CAC5B,IAAMG,EAAI,KAAK,IAAI,CAACH,EAAgBR,CAAQ,EACtCY,GAAKJ,EAAgBN,GAAYF,EAAW,EAClD,MAAO,CAACN,GAAUiB,EAAIC,CACxB,EACAP,EAAcG,GAAkB,CAC9B,IAAMG,EAAI,KAAK,IAAI,CAACH,EAAgBR,CAAQ,EACtCY,GAAKV,EAAWM,IAAkBR,EAAWA,GACnD,OAAOW,EAAIC,CACb,GAEF,IAAMI,EAAe,EAAIhB,EACnBiB,EAAeC,GAAiBd,EAAUC,EAAYW,CAAY,EAExE,GADAhB,EAAWA,EAAW,IAClB,MAAMiB,CAAY,EACpB,MAAO,CACL,UAAW,IACX,QAAS,GACT,SAAAjB,CACF,EACK,CACL,IAAMmB,EAAY,KAAK,IAAIF,EAAc,CAAC,EAAId,EAC9C,MAAO,CACL,UAAAgB,EACA,QAASZ,EAAe,EAAI,KAAK,KAAKJ,EAAOgB,CAAS,EACtD,SAAAnB,CACF,CACF,CACF,CACA,IAAIoB,GAAiB,GACrB,SAASF,GAAiBd,EAAUC,EAAYW,EAAc,CAC5D,IAAIK,EAASL,EACb,QAAS,EAAI,EAAG,EAAII,GAAgB,IAClCC,EAASA,EAASjB,EAASiB,CAAM,EAAIhB,EAAWgB,CAAM,EAExD,OAAOA,CACT,CACA,SAASR,GAAgBI,EAAcV,EAAc,CACnD,OAAOU,EAAe,KAAK,KAAK,EAAIV,EAAeA,CAAY,CACjE,CAGA,IAAIe,GAAe,CAAC,WAAY,QAAQ,EACpCC,GAAc,CAAC,YAAa,UAAW,MAAM,EACjD,SAASC,GAAaC,EAASC,EAAO,CACpC,OAAOA,EAAM,KAAMC,GAASF,EAAQE,KAAU,MAAM,CACtD,CACA,SAASC,GAAiBH,EAAS,CACjC,IAAII,EAAgB,OAAO,OAAO,CAAE,SAAU,EAAG,UAAW,IAAK,QAAS,GAAI,KAAM,EAAG,uBAAwB,EAAM,EAAGJ,CAAO,EAC/H,GAAI,CAACD,GAAaC,EAASF,EAAW,GAAKC,GAAaC,EAASH,EAAY,EAAG,CAC9E,IAAMQ,EAAU/B,GAAW0B,CAAO,EAClCI,EAAgB,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,CAAC,EAAGA,CAAa,EAAGC,CAAO,EAAG,CAAE,SAAU,EAAG,KAAM,CAAE,CAAC,EAChHD,EAAc,uBAAyB,EACzC,CACA,OAAOA,CACT,CACA,SAASE,GAAQC,EAAI,CACnB,GAAI,CAAE,KAAAC,EAAO,EAAG,GAAAC,EAAK,EAAG,UAAAC,EAAY,EAAG,UAAAC,CAAU,EAAIJ,EAAIP,EAAUxC,GAAO+C,EAAI,CAAC,OAAQ,KAAM,YAAa,WAAW,CAAC,EACtH,IAAMK,EAAQ,CAAE,KAAM,GAAO,MAAOJ,CAAK,EACrC,CAAE,UAAAd,EAAW,QAAAmB,EAAS,KAAAnC,EAAM,SAAAD,EAAU,SAAAF,EAAU,uBAAAuC,CAAuB,EAAIX,GAAiBH,CAAO,EACnGe,EAAgBC,GAChBC,EAAkBD,GACtB,SAASE,GAAe,CACtB,IAAMC,EAAkB1C,EAAW,EAAEA,EAAW,KAAO,EACjD2C,EAAeX,EAAKD,EACpB1B,EAAe+B,GAAW,EAAI,KAAK,KAAKnB,EAAYhB,CAAI,GACxD2C,EAAsB,KAAK,KAAK3B,EAAYhB,CAAI,EAAI,IAI1D,GAHIiC,IAAc,SAChBA,EAAY,KAAK,IAAI,KAAK,IAAIF,EAAKD,CAAI,EAAI,IAAK,EAAG,GAEjD1B,EAAe,EAAG,CACpB,IAAMwC,EAAclC,GAAgBiC,EAAqBvC,CAAY,EACrEiC,EAAiBpD,GAAM,CACrB,IAAMgB,EAAW,KAAK,IAAI,CAACG,EAAeuC,EAAsB1D,CAAC,EACjE,OAAO8C,EAAK9B,IAAawC,EAAkBrC,EAAeuC,EAAsBD,GAAgBE,EAAc,KAAK,IAAIA,EAAc3D,CAAC,EAAIyD,EAAe,KAAK,IAAIE,EAAc3D,CAAC,EACnL,EACAsD,EAAmBtD,GAAM,CACvB,IAAMgB,EAAW,KAAK,IAAI,CAACG,EAAeuC,EAAsB1D,CAAC,EACjE,OAAOmB,EAAeuC,EAAsB1C,GAAY,KAAK,IAAI2C,EAAc3D,CAAC,GAAKwD,EAAkBrC,EAAeuC,EAAsBD,GAAgBE,EAAcF,EAAe,KAAK,IAAIE,EAAc3D,CAAC,GAAKgB,GAAY,KAAK,IAAI2C,EAAc3D,CAAC,GAAKwD,EAAkBrC,EAAeuC,EAAsBD,GAAgBE,EAAcF,EAAe,KAAK,IAAIE,EAAc3D,CAAC,EAC7X,CACF,SAAWmB,IAAiB,EAC1BiC,EAAiBpD,GAAM8C,EAAK,KAAK,IAAI,CAACY,EAAsB1D,CAAC,GAAKyD,GAAgBD,EAAkBE,EAAsBD,GAAgBzD,OACrI,CACL,IAAM4D,EAAoBF,EAAsB,KAAK,KAAKvC,EAAeA,EAAe,CAAC,EACzFiC,EAAiBpD,GAAM,CACrB,IAAMgB,EAAW,KAAK,IAAI,CAACG,EAAeuC,EAAsB1D,CAAC,EAC3D6D,EAAW,KAAK,IAAID,EAAoB5D,EAAG,GAAG,EACpD,OAAO8C,EAAK9B,IAAawC,EAAkBrC,EAAeuC,EAAsBD,GAAgB,KAAK,KAAKI,CAAQ,EAAID,EAAoBH,EAAe,KAAK,KAAKI,CAAQ,GAAKD,CAClL,CACF,CACF,CACA,OAAAL,EAAa,EACN,CACL,KAAOvD,GAAM,CACX,IAAM8D,EAAUV,EAAcpD,CAAC,EAC/B,GAAKmD,EAMHF,EAAM,KAAOjD,GAAKY,MANS,CAC3B,IAAMmD,EAAkBT,EAAgBtD,CAAC,EAAI,IACvCgE,EAA2B,KAAK,IAAID,CAAe,GAAKhB,EACxDkB,EAA+B,KAAK,IAAInB,EAAKgB,CAAO,GAAKd,EAC/DC,EAAM,KAAOe,GAA4BC,CAC3C,CAGA,OAAAhB,EAAM,MAAQA,EAAM,KAAOH,EAAKgB,EACzBb,CACT,EACA,WAAY,IAAM,CAChBnC,EAAW,CAACA,EACZ,CAAC+B,EAAMC,CAAE,EAAI,CAACA,EAAID,CAAI,EACtBU,EAAa,CACf,CACF,CACF,CACAZ,GAAQ,mBAAqB,CAACpB,EAAGC,IAAM,OAAOD,GAAM,UAAY,OAAOC,GAAM,SAC7E,IAAI6B,GAAQa,GAAO,EAGfC,GAAW,CAACtB,EAAMC,EAAIsB,IAAU,CAClC,IAAMC,EAAmBvB,EAAKD,EAC9B,OAAOwB,IAAqB,EAAI,GAAKD,EAAQvB,GAAQwB,CACvD,EAGIC,GAAO,CAACzB,EAAMC,EAAIyB,IAAc,CAACA,EAAY1B,EAAO0B,EAAYzB,EAAKD,EAGzE,SAAS2B,GAASvE,EAAGwE,EAAGzE,EAAG,CAKzB,OAJIA,EAAI,IACNA,GAAK,GACHA,EAAI,IACNA,GAAK,GACHA,EAAI,EAAI,EACHC,GAAKwE,EAAIxE,GAAK,EAAID,EACvBA,EAAI,EAAI,EACHyE,EACLzE,EAAI,EAAI,EACHC,GAAKwE,EAAIxE,IAAM,EAAI,EAAID,GAAK,EAC9BC,CACT,CACA,SAASyE,GAAW,CAAE,IAAAC,EAAK,WAAAC,EAAY,UAAAC,EAAW,MAAOC,CAAO,EAAG,CACjEH,GAAO,IACPC,GAAc,IACdC,GAAa,IACb,IAAIE,EAAM,EACNC,EAAQ,EACRC,EAAO,EACX,GAAI,CAACL,EACHG,EAAMC,EAAQC,EAAOJ,MAChB,CACL,IAAMJ,EAAII,EAAY,GAAMA,GAAa,EAAID,GAAcC,EAAYD,EAAaC,EAAYD,EAC1F3E,EAAI,EAAI4E,EAAYJ,EAC1BM,EAAMP,GAASvE,EAAGwE,EAAGE,EAAM,EAAI,CAAC,EAChCK,EAAQR,GAASvE,EAAGwE,EAAGE,CAAG,EAC1BM,EAAOT,GAASvE,EAAGwE,EAAGE,EAAM,EAAI,CAAC,CACnC,CACA,MAAO,CACL,IAAK,KAAK,MAAMI,EAAM,GAAG,EACzB,MAAO,KAAK,MAAMC,EAAQ,GAAG,EAC7B,KAAM,KAAK,MAAMC,EAAO,GAAG,EAC3B,MAAOH,CACT,CACF,CAGA,IAAII,GAAiB,CAACrC,EAAMC,EAAIzC,IAAM,CACpC,IAAM8E,EAAWtC,EAAOA,EAClBuC,EAAStC,EAAKA,EACpB,OAAO,KAAK,KAAK,KAAK,IAAI,EAAGzC,GAAK+E,EAASD,GAAYA,CAAQ,CAAC,CAClE,EACIE,GAAa,CAACC,GAAKC,GAAMC,EAAI,EAC7BC,GAAgBpF,GAAMgF,GAAW,KAAMK,GAASA,EAAK,KAAKrF,CAAC,CAAC,EAC5DsF,GAAiBC,GAAW,IAAIA,wEAChCC,GAAW,CAAChD,EAAMC,IAAO,CAC3B,IAAIgD,EAAgBL,GAAa5C,CAAI,EACjCkD,EAAcN,GAAa3C,CAAE,EACjCkD,GAAU,CAAC,CAACF,EAAeH,GAAc9C,CAAI,CAAC,EAC9CmD,GAAU,CAAC,CAACD,EAAaJ,GAAc7C,CAAE,CAAC,EAC1C,IAAImD,EAAYH,EAAc,MAAMjD,CAAI,EACpCqD,EAAUH,EAAY,MAAMjD,CAAE,EAC9BgD,IAAkBN,KACpBS,EAAYvB,GAAWuB,CAAS,EAChCH,EAAgBP,IAEdQ,IAAgBP,KAClBU,EAAUxB,GAAWwB,CAAO,EAC5BH,EAAcR,IAEhB,IAAMY,EAAU,OAAO,OAAO,CAAC,EAAGF,CAAS,EAC3C,OAAQ5F,GAAM,CACZ,QAAWkC,KAAQ4D,EACb5D,IAAS,UACX4D,EAAQ5D,GAAQ2C,GAAee,EAAU1D,GAAO2D,EAAQ3D,GAAOlC,CAAC,GAGpE,OAAA8F,EAAQ,MAAQ7B,GAAK2B,EAAU,MAAOC,EAAQ,MAAO7F,CAAC,EAC/CyF,EAAc,UAAUK,CAAO,CACxC,CACF,EAGIC,GAAS/F,GAAM,OAAOA,GAAM,SAG5BgG,GAAmB,CAAC9E,EAAGC,IAAOnB,GAAMmB,EAAED,EAAElB,CAAC,CAAC,EAC1CiG,GAAQ,IAAIC,IAAiBA,EAAa,OAAOF,EAAgB,EAGrE,SAASG,GAASC,EAAQC,EAAQ,CAChC,OAAIN,GAAMK,CAAM,EACNpG,GAAMiE,GAAKmC,EAAQC,EAAQrG,CAAC,EAC3BsG,GAAM,KAAKF,CAAM,EACnBZ,GAASY,EAAQC,CAAM,EAEvBE,GAAWH,EAAQC,CAAM,CAEpC,CACA,IAAIG,GAAW,CAAChE,EAAMC,IAAO,CAC3B,IAAMgE,EAAS,CAAC,GAAGjE,CAAI,EACjBkE,EAAYD,EAAO,OACnBE,EAAanE,EAAK,IAAI,CAACoE,EAAUC,IAAMV,GAASS,EAAUnE,EAAGoE,EAAE,CAAC,EACtE,OAAQ7G,GAAM,CACZ,QAAS6G,EAAI,EAAGA,EAAIH,EAAWG,IAC7BJ,EAAOI,GAAKF,EAAWE,GAAG7G,CAAC,EAE7B,OAAOyG,CACT,CACF,EACIK,GAAY,CAACV,EAAQC,IAAW,CAClC,IAAMI,EAAS,OAAO,OAAO,OAAO,OAAO,CAAC,EAAGL,CAAM,EAAGC,CAAM,EACxDM,EAAa,CAAC,EACpB,QAAWzE,KAAQuE,EACbL,EAAOlE,KAAU,QAAUmE,EAAOnE,KAAU,SAC9CyE,EAAWzE,GAAQiE,GAASC,EAAOlE,GAAOmE,EAAOnE,EAAK,GAG1D,OAAQlC,GAAM,CACZ,QAAWkC,KAAQyE,EACjBF,EAAOvE,GAAQyE,EAAWzE,GAAMlC,CAAC,EAEnC,OAAOyG,CACT,CACF,EACA,SAASM,GAAShD,EAAO,CACvB,IAAMiD,EAASC,GAAQ,MAAMlD,CAAK,EAC5B2C,EAAYM,EAAO,OACrBE,EAAa,EACbC,EAAS,EACTC,EAAS,EACb,QAASP,EAAI,EAAGA,EAAIH,EAAWG,IACzBK,GAAc,OAAOF,EAAOH,IAAO,SACrCK,IAEIF,EAAOH,GAAG,MAAQ,OACpBO,IAEAD,IAIN,MAAO,CAAE,OAAAH,EAAQ,WAAAE,EAAY,OAAAC,EAAQ,OAAAC,CAAO,CAC9C,CACA,IAAIb,GAAa,CAACH,EAAQC,IAAW,CACnC,IAAMgB,EAAWJ,GAAQ,kBAAkBZ,CAAM,EAC3CiB,EAAcP,GAASX,CAAM,EAC7BmB,EAAcR,GAASV,CAAM,EAEnC,OADuBiB,EAAY,SAAWC,EAAY,QAAUD,EAAY,SAAWC,EAAY,QAAUD,EAAY,YAAcC,EAAY,WAE9ItB,GAAMO,GAASc,EAAY,OAAQC,EAAY,MAAM,EAAGF,CAAQ,GAEvExG,GAAQ,GAAM,mBAAmBuF,WAAgBC,2KAAgL,EACzNzG,GAAM,GAAGA,EAAI,EAAIyG,EAASD,IAEtC,EAGIoB,GAAY,CAAChF,EAAMC,IAAQ7C,GAAMqE,GAAKzB,EAAMC,EAAI7C,CAAC,EACrD,SAAS6H,GAAmBzH,EAAG,CAC7B,GAAI,OAAOA,GAAM,SACf,OAAOwH,GACF,GAAI,OAAOxH,GAAM,SACtB,OAAIsG,GAAM,KAAKtG,CAAC,EACPwF,GAEAe,GAEJ,GAAI,MAAM,QAAQvG,CAAC,EACxB,OAAOwG,GACF,GAAI,OAAOxG,GAAM,SACtB,OAAO8G,EAEX,CACA,SAASY,GAAajB,EAAQkB,EAAMC,EAAa,CAC/C,IAAMC,EAAS,CAAC,EACVC,EAAeF,GAAeH,GAAmBhB,EAAO,EAAE,EAC1DsB,EAAYtB,EAAO,OAAS,EAClC,QAASI,EAAI,EAAGA,EAAIkB,EAAWlB,IAAK,CAClC,IAAImB,EAAQF,EAAarB,EAAOI,GAAIJ,EAAOI,EAAI,EAAE,EACjD,GAAIc,EAAM,CACR,IAAMM,EAAiB,MAAM,QAAQN,CAAI,EAAIA,EAAKd,GAAKc,EACvDK,EAAQ/B,GAAMgC,EAAgBD,CAAK,CACrC,CACAH,EAAO,KAAKG,CAAK,CACnB,CACA,OAAOH,CACT,CACA,SAASK,GAAgB,CAAC1F,EAAMC,CAAE,EAAG,CAACuF,CAAK,EAAG,CAC5C,OAAQhI,GAAMgI,EAAMlE,GAAStB,EAAMC,EAAIzC,CAAC,CAAC,CAC3C,CACA,SAASmI,GAAgBC,EAAOP,EAAQ,CACtC,IAAMQ,EAAcD,EAAM,OACpBE,EAAiBD,EAAc,EACrC,OAAQrI,GAAM,CACZ,IAAIuI,EAAa,EACbC,EAAkB,GAOtB,GANIxI,GAAKoI,EAAM,GACbI,EAAkB,GACTxI,GAAKoI,EAAME,KACpBC,EAAaD,EAAiB,EAC9BE,EAAkB,IAEhB,CAACA,EAAiB,CACpB,IAAI3B,EAAI,EACR,KAAOA,EAAIwB,GACL,EAAAD,EAAMvB,GAAK7G,GAAK6G,IAAMyB,GADJzB,IACtB,CAIF0B,EAAa1B,EAAI,CACnB,CACA,IAAM4B,EAAkB3E,GAASsE,EAAMG,GAAaH,EAAMG,EAAa,GAAIvI,CAAC,EAC5E,OAAO6H,EAAOU,GAAYE,CAAe,CAC3C,CACF,CACA,SAASC,GAAYN,EAAO3B,EAAQ,CAAE,MAAOkC,EAAU,GAAM,KAAAhB,EAAM,MAAAK,CAAM,EAAI,CAAC,EAAG,CAC/E,IAAMK,EAAcD,EAAM,OAC1BzC,GAAU0C,IAAgB5B,EAAO,OAAQ,sDAAsD,EAC/Fd,GAAU,CAACgC,GAAQ,CAAC,MAAM,QAAQA,CAAI,GAAKA,EAAK,SAAWU,EAAc,EAAG,kIAAkI,EAC1MD,EAAM,GAAKA,EAAMC,EAAc,KACjCD,EAAQ,CAAC,EAAE,OAAOA,CAAK,EACvB3B,EAAS,CAAC,EAAE,OAAOA,CAAM,EACzB2B,EAAM,QAAQ,EACd3B,EAAO,QAAQ,GAEjB,IAAMoB,EAASH,GAAajB,EAAQkB,EAAMK,CAAK,EACzCY,EAAeP,IAAgB,EAAIH,GAAgBE,EAAOP,CAAM,EAAIM,GAAgBC,EAAOP,CAAM,EACvG,OAAOc,EAAW3I,GAAM4I,EAAa/I,GAAOuI,EAAM,GAAIA,EAAMC,EAAc,GAAIrI,CAAC,CAAC,EAAI4I,CACtF,CAGA,IAAIC,GAAiBC,GAAYlJ,GAAM,EAAIkJ,EAAO,EAAIlJ,CAAC,EACnDmJ,GAAgBD,GAAYlJ,GAAMA,GAAK,GAAMkJ,EAAO,EAAIlJ,CAAC,EAAI,GAAK,EAAIkJ,EAAO,GAAK,EAAIlJ,EAAE,GAAK,EAC7FoJ,GAAgBC,GAAWrJ,GAAM,KAAK,IAAIA,EAAGqJ,CAAK,EAClDC,GAAgBD,GAAWrJ,GAAMA,EAAIA,IAAMqJ,EAAQ,GAAKrJ,EAAIqJ,GAC5DE,GAAoBF,GAAU,CAChC,IAAMG,EAAaF,GAAaD,CAAK,EACrC,OAAQrJ,IAAOA,GAAK,GAAK,EAAI,GAAMwJ,EAAWxJ,CAAC,EAAI,IAAO,EAAI,KAAK,IAAI,EAAG,KAAOA,EAAI,EAAE,EACzF,EAGIyJ,GAA6B,MAC7BC,GAAyB,EAAI,GAC7BC,GAA0B,EAAI,GAC9BC,GAAyB,EAAI,GAC7BC,GAAUT,GAAa,CAAC,EACxBU,GAAWb,GAAcY,EAAO,EAChCE,GAAaZ,GAAaU,EAAO,EACjCG,GAAWhK,GAAM,EAAI,KAAK,IAAI,KAAK,KAAKA,CAAC,CAAC,EAC1CiK,GAAWhB,GAAce,EAAO,EAChCE,GAAaf,GAAac,EAAQ,EAClCE,GAAUb,GAAaG,EAA0B,EACjDW,GAAWnB,GAAckB,EAAO,EAChCE,GAAalB,GAAagB,EAAO,EACjCG,GAAcf,GAAiBE,EAA0B,EACzDc,GAAK,KAAO,IACZC,GAAK,MAAQ,KACbC,GAAK,MAAQ,KACbC,GAAa1K,GAAM,CACrB,GAAIA,IAAM,GAAKA,IAAM,EACnB,OAAOA,EACT,IAAM2K,EAAK3K,EAAIA,EACf,OAAOA,EAAI0J,GAAyB,OAASiB,EAAK3K,EAAI2J,GAA0B,MAAQgB,EAAK,IAAM3K,EAAI,IAAMA,EAAI4J,GAAyBW,GAAKI,EAAKH,GAAKxK,EAAIyK,GAAK,KAAOzK,EAAIA,EAAI,MAAQA,EAAI,KAC/L,EACI4K,GAAW3B,GAAcyB,EAAS,EAGtC,SAASG,GAAcC,EAAQ5B,EAAQ,CACrC,OAAO4B,EAAO,IAAI,IAAM5B,GAAUa,EAAU,EAAE,OAAO,EAAGe,EAAO,OAAS,CAAC,CAC3E,CACA,SAASC,GAAcD,EAAQ,CAC7B,IAAMhE,EAAYgE,EAAO,OACzB,OAAOA,EAAO,IAAI,CAACE,EAAQ/D,IAAMA,IAAM,EAAIA,GAAKH,EAAY,GAAK,CAAC,CACpE,CACA,SAASmE,GAAqBC,EAAQvK,EAAU,CAC9C,OAAOuK,EAAO,IAAKC,GAAMA,EAAIxK,CAAQ,CACvC,CACA,SAASyK,GAAU,CAAE,KAAAxI,EAAO,EAAG,GAAAC,EAAK,EAAG,KAAAkF,EAAM,OAAAmD,EAAQ,SAAAvK,EAAW,GAAI,EAAG,CACrE,IAAMqC,EAAQ,CAAE,KAAM,GAAO,MAAOJ,CAAK,EACnCkI,EAAS,MAAM,QAAQjI,CAAE,EAAIA,EAAK,CAACD,EAAMC,CAAE,EAC3CwI,EAAQJ,GAAqBC,GAAUA,EAAO,SAAWJ,EAAO,OAASI,EAASH,GAAcD,CAAM,EAAGnK,CAAQ,EACvH,SAAS2K,GAAqB,CAC5B,OAAOxC,GAAYuC,EAAOP,EAAQ,CAChC,KAAM,MAAM,QAAQ/C,CAAI,EAAIA,EAAO8C,GAAcC,EAAQ/C,CAAI,CAC/D,CAAC,CACH,CACA,IAAIiB,EAAesC,EAAmB,EACtC,MAAO,CACL,KAAOvL,IACLiD,EAAM,MAAQgG,EAAajJ,CAAC,EAC5BiD,EAAM,KAAOjD,GAAKY,EACXqC,GAET,WAAY,IAAM,CAChB8H,EAAO,QAAQ,EACf9B,EAAesC,EAAmB,CACpC,CACF,CACF,CAGA,SAASC,GAAM,CAAE,SAAA1K,EAAW,EAAG,KAAA+B,EAAO,EAAG,MAAAyG,EAAQ,GAAK,aAAcmC,EAAgB,IAAK,UAAAzI,EAAY,GAAK,aAAA0I,CAAa,EAAG,CACxH,IAAMzI,EAAQ,CAAE,KAAM,GAAO,MAAOJ,CAAK,EACrC8I,EAAYrC,EAAQxI,EAClB8K,EAAQ/I,EAAO8I,EACfjF,EAASgF,IAAiB,OAASE,EAAQF,EAAaE,CAAK,EACnE,OAAIlF,IAAWkF,IACbD,EAAYjF,EAAS7D,GAChB,CACL,KAAO7C,GAAM,CACX,IAAMsB,EAAQ,CAACqK,EAAY,KAAK,IAAI,CAAC3L,EAAIyL,CAAa,EACtD,OAAAxI,EAAM,KAAO,EAAE3B,EAAQ0B,GAAa1B,EAAQ,CAAC0B,GAC7CC,EAAM,MAAQA,EAAM,KAAOyD,EAASA,EAASpF,EACtC2B,CACT,EACA,WAAY,IAAM,CAClB,CACF,CACF,CAGA,IAAI4I,GAAQ,CAAE,UAAAR,GAAW,OAAQ1I,GAAS,MAAA6I,EAAM,EAChD,SAASM,GAA2BC,EAAQ,CAC1C,GAAI,MAAM,QAAQA,EAAO,EAAE,EACzB,OAAOV,GACF,GAAIQ,GAAME,EAAO,MACtB,OAAOF,GAAME,EAAO,MAEtB,IAAMzJ,EAAQ,IAAI,IAAI,OAAO,KAAKyJ,CAAM,CAAC,EACzC,OAAIzJ,EAAM,IAAI,MAAM,GAAKA,EAAM,IAAI,UAAU,GAAK,CAACA,EAAM,IAAI,cAAc,EAClE+I,GACE/I,EAAM,IAAI,cAAc,GAAKA,EAAM,IAAI,WAAW,GAAKA,EAAM,IAAI,MAAM,GAAKA,EAAM,IAAI,SAAS,GAAKA,EAAM,IAAI,WAAW,GAAKA,EAAM,IAAI,WAAW,EACrJK,GAEF0I,EACT,CAGA,IAAIW,GAAkB,EAAI,GAAK,IAC3BC,GAAiB,OAAO,YAAgB,IAAc,IAAM,YAAY,IAAI,EAAI,IAAM,KAAK,IAAI,EAC/FC,GAAc,OAAOC,EAAW,IAAeC,GAAaD,EAAO,sBAAsBC,CAAQ,EAAKA,GAAa,WAAW,IAAMA,EAASH,GAAe,CAAC,EAAGD,EAAe,EAGnL,SAASK,GAAiBC,EAAe,CACvC,IAAIC,EAAQ,CAAC,EACTC,EAAiB,CAAC,EAClBC,EAAW,EACXC,EAAgB,GAChBC,EAAiB,GACfC,EAA8B,IAAI,QAClCC,EAAO,CACX,SAAU,CAACT,EAAUU,EAAY,GAAOC,EAAY,KAAU,CAC5D,IAAMC,EAAoBD,GAAaL,EACjCO,EAASD,EAAoBT,EAAQC,EAC3C,OAAIM,GACFF,EAAY,IAAIR,CAAQ,EACtBa,EAAO,QAAQb,CAAQ,IAAM,KAC/Ba,EAAO,KAAKb,CAAQ,EAChBY,GAAqBN,IACvBD,EAAWF,EAAM,SAEdH,CACT,EACA,OAASA,GAAa,CACpB,IAAMc,EAAQV,EAAe,QAAQJ,CAAQ,EACzCc,IAAU,IACZV,EAAe,OAAOU,EAAO,CAAC,EAChCN,EAAY,OAAOR,CAAQ,CAC7B,EACA,QAAUe,GAAe,CACvB,GAAIT,EAAe,CACjBC,EAAiB,GACjB,MACF,CAKA,GAJAD,EAAgB,GAChB,CAACH,EAAOC,CAAc,EAAI,CAACA,EAAgBD,CAAK,EAChDC,EAAe,OAAS,EACxBC,EAAWF,EAAM,OACbE,EACF,QAASvF,EAAI,EAAGA,EAAIuF,EAAUvF,IAAK,CACjC,IAAMkF,EAAWG,EAAMrF,GACvBkF,EAASe,CAAU,EACfP,EAAY,IAAIR,CAAQ,IAC1BS,EAAK,SAAST,CAAQ,EACtBE,EAAc,EAElB,CAEFI,EAAgB,GACZC,IACFA,EAAiB,GACjBE,EAAK,QAAQM,CAAU,EAE3B,CACF,EACA,OAAON,CACT,CAGA,IAAIO,GAAa,GACbC,GAAoB,GACpBC,GAAe,GACfC,GAAe,GACfC,GAAQ,CACV,MAAO,EACP,UAAW,CACb,EACIC,GAAa,CACf,OACA,SACA,YACA,SACA,YACF,EACIC,GAAQD,GAAW,OAAO,CAACE,EAAKpL,KAClCoL,EAAIpL,GAAQ8J,GAAiB,IAAMiB,GAAe,EAAI,EAC/CK,GACN,CAAC,CAAC,EACDC,GAAQH,GAAW,OAAO,CAACE,EAAKpL,IAAS,CAC3C,IAAMsK,EAAOa,GAAMnL,GACnB,OAAAoL,EAAIpL,GAAQ,CAACsL,EAAWf,EAAY,GAAOC,EAAY,MAChDO,IACHQ,GAAU,EACLjB,EAAK,SAASgB,EAAWf,EAAWC,CAAS,GAE/CY,CACT,EAAG,CAAC,CAAC,EACDI,GAAaN,GAAW,OAAO,CAACE,EAAKpL,KACvCoL,EAAIpL,GAAQmL,GAAMnL,GAAM,OACjBoL,GACN,CAAC,CAAC,EACDK,GAAYP,GAAW,OAAO,CAACE,EAAKpL,KACtCoL,EAAIpL,GAAQ,IAAMmL,GAAMnL,GAAM,QAAQiL,EAAK,EACpCG,GACN,CAAC,CAAC,EACDM,GAAeC,GAAWR,GAAMQ,GAAQ,QAAQV,EAAK,EACrDW,GAAgBC,GAAc,CAChCd,GAAe,GACfE,GAAM,MAAQH,GAAoBrB,GAAkB,KAAK,IAAI,KAAK,IAAIoC,EAAYZ,GAAM,UAAWJ,EAAU,EAAG,CAAC,EACjHI,GAAM,UAAYY,EAClBb,GAAe,GACfE,GAAW,QAAQQ,EAAW,EAC9BV,GAAe,GACXD,KACFD,GAAoB,GACpBnB,GAAYiC,EAAY,EAE5B,EACIL,GAAY,IAAM,CACpBR,GAAe,GACfD,GAAoB,GACfE,IACHrB,GAAYiC,EAAY,CAC5B,EAEA,IAAIE,GAAaC,GAGjB,SAASC,GAAYC,EAASC,EAAUC,EAAS,EAAG,CAClD,OAAOF,EAAUC,EAAWC,CAC9B,CACA,SAASC,GAAeH,EAASC,EAAUC,EAAS,EAAGE,EAAoB,GAAM,CAC/E,OAAOA,EAAoBL,GAAYE,EAAW,CAACD,EAASC,EAAUC,CAAM,EAAID,GAAYD,EAAUC,GAAYC,CACpH,CACA,SAASG,GAAsBL,EAASC,EAAUC,EAAQE,EAAmB,CAC3E,OAAOA,EAAoBJ,GAAWC,EAAWC,EAASF,GAAW,CAACE,CACxE,CAGA,IAAII,GAAaC,GAAW,CAC1B,IAAMC,EAAgB,CAAC,CAAE,MAAAC,CAAM,IAAMF,EAAOE,CAAK,EACjD,MAAO,CACL,MAAO,IAAMZ,GAAW,OAAOW,EAAe,EAAI,EAClD,KAAM,IAAME,GAAW,OAAOF,CAAa,CAC7C,CACF,EACA,SAASG,GAASC,EAAI,CACpB,IAAIC,EAAIC,EACJ,CAAE,KAAAC,EAAM,SAAAC,EAAW,GAAM,OAAAC,EAASX,GAAW,QAAAN,EAAU,EAAG,OAAQkB,EAAY,EAAG,WAAAC,EAAa,OAAQ,YAAAC,EAAc,EAAG,OAAAC,EAAQ,OAAAC,EAAQ,WAAAC,EAAY,SAAAC,EAAU,SAAAC,CAAS,EAAIb,EAAIc,EAAUC,GAAOf,EAAI,CAAC,OAAQ,WAAY,SAAU,UAAW,SAAU,aAAc,cAAe,SAAU,SAAU,aAAc,WAAY,UAAU,CAAC,EACjV,GAAI,CAAE,GAAAgB,CAAG,EAAIF,EACTG,EACAC,EAAc,EACdC,EAAmBL,EAAQ,SAC3BM,EACAC,EAAa,GACb7B,EAAoB,GACpB8B,EACEC,EAAWC,GAA2BV,CAAO,EAC9C,GAAAZ,GAAMD,EAAKsB,GAAU,sBAAwB,MAAQrB,IAAO,SAAkBA,EAAG,KAAKD,EAAIE,EAAMa,CAAE,IACrGM,EAAwBG,GAAY,CAAC,EAAG,GAAG,EAAG,CAACtB,EAAMa,CAAE,EAAG,CACxD,MAAO,EACT,CAAC,EACDb,EAAO,EACPa,EAAK,KAEP,IAAMU,EAAYH,EAAS,OAAO,OAAO,OAAO,OAAO,CAAC,EAAGT,CAAO,EAAG,CAAE,KAAAX,EAAM,GAAAa,CAAG,CAAC,CAAC,EAClF,SAASW,GAAS,CAChBT,IACIX,IAAe,WACjBf,EAAoB0B,EAAc,IAAM,EACxC9B,EAAUG,GAAeH,EAAS+B,EAAkBX,EAAahB,CAAiB,IAElFJ,EAAUD,GAAYC,EAAS+B,EAAkBX,CAAW,EACxDD,IAAe,UACjBmB,EAAU,WAAW,GAEzBL,EAAa,GACbT,GAAYA,EAAS,CACvB,CACA,SAASgB,GAAW,CAClBX,EAAe,KAAK,EACpBN,GAAcA,EAAW,CAC3B,CACA,SAAShB,EAAOE,EAAO,CAIrB,GAHKL,IACHK,EAAQ,CAACA,GACXT,GAAWS,EACP,CAACwB,EAAY,CACf,IAAMQ,EAAQH,EAAU,KAAK,KAAK,IAAI,EAAGtC,CAAO,CAAC,EACjDgC,EAASS,EAAM,MACXP,IACFF,EAASE,EAAsBF,CAAM,GACvCC,EAAa7B,EAAoBqC,EAAM,KAAOzC,GAAW,CAC3D,CACoDyB,IAASO,CAAM,EAC/DC,IACEH,IAAgB,IAClBC,IAA8EA,EAAmB/B,IAC/F8B,EAAcZ,EAChBb,GAAsBL,EAAS+B,EAAkBX,EAAahB,CAAiB,GAAKmC,EAAO,EAE3FC,EAAS,EAGf,CACA,SAASE,GAAO,CACkCrB,IAAO,EACvDQ,EAAiBZ,EAAOV,CAAM,EAC9BsB,EAAe,MAAM,CACvB,CACA,OAAAb,GAAY0B,EAAK,EACV,CACL,KAAM,IAAM,CACsCpB,IAAO,EACvDO,EAAe,KAAK,CACtB,CACF,CACF,CAkIA,SAASc,GAAgBC,EAAS,CAChC,IAAMC,EAAU,CAAC,EACjB,GAAID,GAAWA,EAAQ,OAAQ,CAC7B,IAAME,EAAcF,EAAQ,IAAKG,GACxB,eAAeA,EAAW,OAAOA,EAAW,OAAOA,EAAW,UAAUA,EAAW,QAC3F,EACDF,EAAQ,KAAK,GAAGC,CAAW,CAC7B,CACA,OAAOD,CACT,CACA,SAASG,GAA2BC,EAAOC,EAAO,CAChD,GAAI,CAACD,EAAM,SAAWA,EAAM,QAAQ,SAAW,EAC7C,OACF,IAAME,EAAaF,EAAM,QAAQ,IAAKG,GAC7B,GAAGA,EAAO,OAAOA,EAAO,OAAOA,EAAO,UAAUA,EAAO,OAC/D,EAAE,KAAK,IAAI,EACPD,IAELD,EAAM,WAAaC,EACrB,CAkSA,SAASE,GAAoBC,EAAOC,EAAO,CACzC,IAAMC,EAAU,CAAC,EACbC,EAAeH,EAAM,UAAU,GACjCE,EAAQ,KAAK,cAAcF,EAAM,WAAa,MAAM,EAElDG,EAAeH,EAAM,QAAQ,GAC/BE,EAAQ,KAAK,YAAYF,EAAM,SAAW,MAAM,EAE9CG,EAAeH,EAAM,SAAS,GAChCE,EAAQ,KAAK,aAAaF,EAAM,UAAY,MAAM,EAEhDG,EAAeH,EAAM,SAAS,GAChCE,EAAQ,KAAK,cAAcF,EAAM,eAAe,EAE9CG,EAAeH,EAAM,MAAM,GAC7BE,EAAQ,KAAK,UAAUF,EAAM,OAAS,MAAM,EAE1CG,EAAeH,EAAM,QAAQ,GAC/BE,EAAQ,KAAK,YAAYF,EAAM,SAAW,MAAM,EAE9CG,EAAeH,EAAM,KAAK,GAC5BE,EAAQ,KAAK,SAASF,EAAM,MAAQ,MAAM,EAExCG,EAAeH,EAAM,IAAI,GAC3BE,EAAQ,KAAK,QAAQF,EAAM,SAAS,EAElCA,EAAM,aACRE,EAAQ,KAAK,GAAGE,GAAgBJ,EAAM,WAAW,CAAC,EAEhDE,EAAQ,SAAW,IAEvBD,EAAM,OAASA,EAAM,aAAeC,EAAQ,KAAK,GAAG,EACtD,CACA,SAASG,GAAyBL,EAAOC,EAAO,CAC1CE,EAAeH,EAAM,cAAc,IACrCC,EAAM,eAAiBA,EAAM,qBAAuB,QAAQD,EAAM,oBAEtE,CACA,SAASM,GAAwBN,EAAOC,EAAO,CAC7CI,GAAyBL,EAAOC,CAAK,EACrCF,GAAoBC,EAAOC,CAAK,CAClC,CAmBA,GAAI,CAAE,UAAAM,EAAU,EAAIC,GA6cpB,IAAIC,GAAe,qBACfC,GAAsCC,EAAQ,cAAc,CAC9D,oBAAqB,IAAM,CAC3B,EACA,4BAA6B,IAAM,CACnC,EACA,SAAU,IAAM,CAChB,CACF,CAAC,EACGC,GAAmB,cAAcC,EAAW,CAC9C,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,cAAgB,GACrB,KAAK,mBAAqB,GAC1B,KAAK,mBAAqB,GAC1B,KAAK,4BAA8B,IAAM,CACvC,KAAK,mBAAqB,EAC5B,EACA,KAAK,oBAAsB,CAACC,EAAMC,EAAYC,IAAkB,CAC9D,KAAK,OAAS,KAAK,KACnB,KAAK,cAAgBA,EACrB,KAAK,KAAOF,EACZ,KAAK,WAAaC,EAClB,KAAK,mBAAqB,EAC5B,EACA,KAAK,SAAW,CAACD,EAAME,IAAkB,CACvC,KAAK,OAAS,KAAK,KACnB,KAAK,KAAOF,EACR,KAAK,QAAUE,IACjB,KAAK,OAAO,mBAAqB,GAErC,EACA,KAAK,oBAAsB,CACzB,oBAAqB,KAAK,oBAC1B,4BAA6B,KAAK,4BAClC,SAAU,KAAK,QACjB,CACF,CACA,yBAA0B,CACxB,IAAIC,EACJ,GAAI,CAAC,KAAK,oBAAsB,CAAC,KAAK,MAAQ,CAAC,KAAK,OAClD,OAAO,KACT,IAAMC,EAAa,CAAC,GAAGD,EAAK,KAAK,OAAS,MAAgBA,EAAG,qBAAuB,CAAC,KAAK,cAC1F,YAAK,KAAK,gBAAgB,QAASE,GAAmB,CACpD,IAAIC,EAC8BD,GAAe,QAAQ,CACvD,WAAAD,EACA,WAAY,KAAK,cAAgB,KAAK,WAAa,OACnD,sBAAuBC,EAAe,QAAQ,WAAaV,IAAgB,GAAGW,EAAM,KAAK,SAAW,MAAgBA,EAAI,UAC1H,CAAC,CACH,CAAC,EACG,KAAK,cACP,KAAK,OAAO,mBAAqB,GAEjC,KAAK,4BAA4B,EAEnC,KAAK,KAAK,mBAAqB,GAC/B,KAAK,WAAa,OAClB,KAAK,mBAAqB,GACnB,IACT,CACA,oBAAqB,CACnB,IAAIH,EAAII,EACR,GAAI,CAAC,KAAK,KACR,OAAO,KACL,KAAK,sBACNA,GAAMJ,EAAK,KAAK,KAAK,qBAAuB,KAAO,OAASA,EAAG,OAAS,MAAgBI,EAAG,UAAU,EACtG,KAAK,mBAAqB,GAE9B,CACA,QAAS,CACP,OAAuBV,EAAQ,cAAcD,GAAoB,SAAU,CAAE,MAAO,KAAK,mBAAoB,EAAG,KAAK,MAAM,QAAQ,CACrI,CACF,EAIIY,GAAa,CACf,MAAO,OACP,OAAQ,OACR,gBAAiB,OACjB,cAAe,MACjB,EACA,SAASC,GAAyBC,EAAO,CACvC,OAAuBb,EAAQ,cAAcc,GAAO,IAAK,CAAE,SAAUhB,GAAc,MAAOa,EAAW,EAAGE,EAAM,QAAQ,CACxH,CAOA,IAAIE,GAA6BC,GAC7BC,GAA6B,KAAM,CACrC,YAAYC,EAAS,CACnBC,GAAa,KAAMJ,GAA6B,MAAM,EACtDI,GAAa,KAAMH,GAA6B,IAAI,OAAS,EACxD,UAELI,GAAa,KAAML,GAA6B,IAAI,qBAAqB,KAAK,uBAAuB,KAAK,IAAI,EAAGG,CAAO,CAAC,CAC3H,CACA,uBAAuBG,EAASC,EAAU,CACxC,QAAWC,KAASF,EAAS,CAC3B,IAAMG,EAAqBC,GAAa,KAAMT,EAAW,EAAE,IAAIO,EAAM,MAAM,EACvEC,GACFA,EAAmB,CAACD,CAAK,EAAGD,CAAQ,CACxC,CACF,CACA,2BAA2BI,EAASC,EAAU,CACvCF,GAAa,KAAMV,EAA2B,IAEnDU,GAAa,KAAMV,EAA2B,EAAE,QAAQW,CAAO,EAC/DD,GAAa,KAAMT,EAAW,EAAE,IAAIU,EAASC,CAAQ,EACvD,CACA,UAAUD,EAAS,CACZD,GAAa,KAAMV,EAA2B,IAEnDU,GAAa,KAAMV,EAA2B,EAAE,UAAUW,CAAO,EACjED,GAAa,KAAMT,EAAW,EAAE,OAAOU,CAAO,EAChD,CACA,IAAI,MAAO,CACT,IAAIpB,EACJ,OAAQA,EAAKmB,GAAa,KAAMV,EAA2B,IAAM,KAAO,OAAST,EAAG,IACtF,CACF,EACAS,GAA8B,IAAI,QAClCC,GAAc,IAAI,QAClB,IAAIY,GAAoD5B,EAAQ,cAA8B,IAAI,GAAK,EACvG,SAAS6B,GAA8BC,EAAKH,EAAUT,EAAS,CAC7D,IAAMa,EAAOC,GAAY,IAAM,GAAGd,EAAQ,YAAY,EAChDe,EAAYjC,EAAQ,WAAW4B,EAAiC,EACtE5B,EAAQ,UAAU,IAAM,CACtB,IAAIM,EACJ,GAAI,OAAO,qBAAyB,IAClC,OACF,IAAMoB,EAAUI,EAAI,QACpB,GAAI,CAACJ,EACH,OACF,IAAIJ,EAAWW,EAAU,IAAIF,CAAI,EACjC,GAAI,CAACT,GAAYA,EAAS,SAAWhB,EAAKY,EAAQ,OAAS,KAAO,OAASZ,EAAG,SAAU,CACtF,GAAM,CAAE,KAAA4B,KAASC,CAAK,EAAIjB,EAC1BI,EAAW,IAAIL,GAA2B,CAAE,GAAGkB,EAAM,KAA8BD,GAAK,OAAQ,CAAC,EACjGD,EAAU,IAAIF,EAAMT,CAAQ,CAC9B,CACA,OAAAA,EAAS,2BAA2BI,EAASC,CAAQ,EAC9C,IAAkCL,GAAS,UAAUI,CAAO,CACrE,EAAG,CAAC,CAAC,CACP,CACA,IAAIU,GAA6B,IAAI,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,IAAI,CAACC,EAAGC,IAAMA,EAAI,GAAI,EAC/EC,GAAkCvC,EAAQ,cAAc,IAAI,EAChE,SAASwC,GAAgBV,EAAKZ,EAASuB,EAAgB,CACrD,IAAMC,EAAgB1C,EAAQ,OAAO,CACnC,SAAU,GACV,gBAAiB,EACnB,CAAC,EACK,CAAE,YAAA2C,EAAa,UAAAC,EAAW,WAAAC,EAAa,iBAAkB,EAAI3B,EAC7DS,EAAW3B,EAAQ,YACvB,CAAC,CAACuB,CAAK,IAAM,CACX,IAAIjB,EACJ,GAAI,CAACiB,EACH,OACF,GAAM,CAAE,SAAAuB,EAAU,gBAAAC,CAAgB,EAAIL,EAAc,QAC9CM,EAAiBC,GAA4B1B,GAAQjB,EAAkCsC,GAAU,IAAM,KAAOtC,EAAK,CAAC,EAC1H,GAAI0C,GAAkB,CAACF,EAAU,CAC/B,GAAIH,GAAeI,EACjB,OACFL,EAAc,QAAQ,gBAAkB,GACxCA,EAAc,QAAQ,SAAW,GACjCD,EAAe,EAAI,EACnB,MACF,CACA,GAAI,CAACO,GAAkBF,EAAU,CAE/B,GADAJ,EAAc,QAAQ,SAAW,GAC7BC,EACF,OACFF,EAAe,EAAK,EACpB,MACF,CACF,EACA,CAACE,EAA0CC,GAAU,EAAGH,CAAc,CACxE,EACAZ,GAA8BC,EAAKH,EAAU,CAC3C,UAAWS,GACX,WAAAS,CACF,CAAC,CACH,CACA,SAASK,GAAuBC,EAAkBC,EAAoB,CACpE,OAAIA,EAAmB,SAAW,EACzB,EACFD,EAAiB,OAAS,KAAK,IAAIC,EAAmB,OAAQC,GAAW,WAAW,CAC7F,CACA,SAASJ,GAA4B,CAAE,mBAAAG,EAAoB,iBAAAD,EAAkB,eAAAH,CAAe,EAAGJ,EAAW,CACxG,OAAIQ,EAAmB,SAAW,EACzBJ,EACFA,GAAkBE,GAAuBC,EAAkBC,CAAkB,GAAKR,CAC3F,CAIA,IAAIU,GAAa,cAAcpD,EAAW,CACxC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,gBAAkC,IAAI,IAC3C,KAAK,4BAA+BqD,GAC3BA,EAAM,QAAQ,WAAazD,IAAgB,CAAC,KAAK,MAAM,UAEhE,KAAK,yBAA2B,CAC9B,SAAWyD,GAAU,KAAK,SAASA,CAAK,EACxC,WAAaA,GAAU,KAAK,YAAYA,CAAK,EAC7C,WAAY,KAAK,MAAM,SAAW,QAAU,KAAK,MAAM,eAAiB,KAAK,MAAM,WAAa,OAChG,4BAA6B,KAAK,2BACpC,CACF,CACA,mBAAoB,CACd,KAAK,MAAM,QACb,KAAK,MAAM,oBAAoB,SAAS,KAAM,CAAC,CAAC,KAAK,MAAM,cAAc,CAE7E,CACA,sBAAsBC,EAAW,CAC/B,GAAM,CAAE,OAAAC,EAAQ,UAAAC,EAAW,YAAAC,EAAa,eAAAC,EAAgB,WAAAxD,EAAY,oBAAAyD,CAAoB,EAAIL,EAE5F,GADA,KAAK,UAAYE,EACbD,IAAW,OACb,MAAO,GACT,IAAMK,EAAgB,CAAC,KAAK,MAAM,QAAU,CAAC,CAACL,EACxCM,EAAuB,KAAK,MAAM,WAAa,CAACL,EAChDM,EAAgBF,GAAiBC,EACjCE,EAAe,CAAC,CAAC,KAAK,MAAM,QAAU,CAACR,EACvCS,EAAiB,KAAK,MAAM,cAAgBP,EAClD,OAAIK,GAAiBC,IACnB,KAAK,gBAAgB,QAASE,GAA6CA,GAAW,WAAW,CAAC,EAEhGH,EACFH,EAAoB,oBAAoB,KAAMzD,EAAY,CAAC,CAACwD,CAAc,EACjEM,GACTL,EAAoB,4BAA4B,EAE3C,CAAC,CAACG,GAAiB,CAAC,CAACJ,CAC9B,CACA,SAASL,EAAO,CACd,IAAMa,EAAWb,EAAM,QAAQ,SAC3Ba,IACF,KAAK,gBAAgB,IAAIA,EAAUb,CAAK,EACxC,KAAK,aAAaA,CAAK,EAE3B,CACA,aAAaA,EAAO,CAClB,GAAI,CAAC,KAAK,mBACR,OAAO,KAAK,mBAAqBA,EACnC,KAAK,mBAAqB,KAAK,mBAAmB,MAAQA,EAAM,MAAQ,KAAK,mBAAqBA,CACpG,CACA,YAAYA,EAAO,CACjB,IAAMa,EAAWb,EAAM,QAAQ,SAC3Ba,GACF,KAAK,gBAAgB,OAAOA,CAAQ,CAExC,CACA,QAAS,CACP,OAAuBpE,EAAQ,cAAcqE,GAAyB,SAAU,CAAE,MAAO,KAAK,wBAAyB,EAAG,KAAK,MAAM,QAAQ,CAC/I,CACF,EACIC,GAAoBzD,GAAU,CAChC,IAAMgD,EAAsB7D,EAAQ,WAAWD,EAAmB,EAClE,OAAuBC,EAAQ,cAAcsD,GAAY,CAAE,GAAGzC,EAAO,oBAAAgD,CAAoB,CAAC,CAC5F,EAIIU,GAA6BvE,EAAQ,cAAc,EAAI,EAC3D,SAASwE,IAAiC,CAExC,OADoCC,EAAYF,EAA0B,CAE5E,CAMA,SAASG,IAAS,CAChB,OAAuB,IAAI,GAC7B,CACA,SAASC,IAAS,CAChB,OAAO3C,GAAY0C,EAAM,CAC3B,CAGA,IAAIE,GAA0CC,GAAe,CAAE,SAAU,IAAM,CAC/E,EAAG,WAAY,IAAM,CACrB,CAAE,CAAC,EACCC,GAA0B,CAAC,CAAE,UAAAC,EAAW,YAAApB,EAAa,SAAAqB,CAAS,IAAM,CACtE,IAAMC,EAAaN,GAAO,EACpBO,EAAWC,GACdC,GAAO,CACN,GAAIH,EAAW,IAAIG,CAAE,EAAG,CACtB,QAAQ,KAAK,6CAA6C,EAC1D,MACF,CACAH,EAAW,IAAIG,EAAI,MAAM,CAC3B,EACA,CAACH,CAAU,CACb,EACMI,EAAaF,GAChBC,GAAO,CACN,IAAME,EAAUL,EAAW,IAAIG,CAAE,EACNE,IAAQ,EACnCL,EAAW,OAAOG,CAAE,CACtB,EACA,CAACH,CAAU,CACb,EACMM,EAAQC,EAAQ,CAAE,SAAAN,EAAU,WAAAG,CAAW,CAAC,EAAE,QAChD,OAAAI,EAAW,KACTR,EAAW,QAAQ,CAAC5C,EAAGqD,IAAQ,CAC7B,IAAMC,EAAaD,EAAIX,EAAWpB,CAAW,EAC7CsB,EAAW,IAAIS,EAAKE,GAAWD,CAAU,EAAIA,EAAa,MAAM,CAClE,CAAC,EACM,IAAM,CACXV,EAAW,QAAQ,CAACK,EAASI,IAAQ,CAC9BJ,IAELA,EAAQ,EACRL,EAAW,IAAIS,EAAK,MAAM,EAC5B,CAAC,CACH,GACC,CAACX,EAAWpB,EAAasB,CAAU,CAAC,EAChBjF,EAAQ,cAAc4E,GAAwB,SAAU,CAAE,MAAAW,CAAM,EAAGP,CAAQ,CACpG,EACA,SAASa,GAAyBlE,EAAUmE,EAAO,CAAC,EAAG,CACrD,GAAM,CAAE,SAAAZ,EAAU,WAAAG,CAAW,EAAIZ,EAAYG,EAAuB,EACpEa,EAAW,IAAM,CACf,GAAK9D,EAEL,OAAAuD,EAASvD,CAAQ,EACV,IAAM0D,EAAW1D,CAAQ,CAClC,EAAG,CAACuD,EAAUG,EAAY,GAAGS,CAAI,CAAC,CACpC,CAGA,IAAIC,GAAsC/F,EAAQ,KAChD,SAA8B,CAC5B,mBAAAgG,EACA,UAAAjB,EACA,WAAAkB,EACA,YAAAtC,EAAc,GACd,QAAAuC,EACA,gBAAAC,EACA,SAAAnB,EACA,cAAAoB,EACA,cAAAC,EACA,gBAAAC,EACA,oBAAAC,EACA,UAAAC,EACA,cAAAC,EACA,QAAAC,EACA,aAAAC,EACA,UAAAC,EACA,SAAAC,EAAW,CAAE,IAAK,EAAG,MAAO,EAAG,OAAQ,EAAG,KAAM,CAAE,EAClD,gBAAAC,EACA,MAAAC,EACA,4BAAAC,EACA,GAAAC,EACA,UAAAC,CACF,EAAG,CACD,IAAMC,EAAWC,GAAa,EACxBC,EAAW5C,EAAY6C,EAAe,EACtC,CAAE,qBAAAC,CAAqB,EAAI9C,EAAY+C,EAAe,EACtDC,EAAgBjC,EAAQ,CAC5B,WAAY,OACZ,YAAa,GACb,gBAAiB,GACjB,SAAU,GACV,QAASkC,GAAe,CAAC,EAAGf,EAAcR,CAAe,CAC3D,CAAC,EACKwB,EAAcnC,EAAQ,IAAI,EAC1BoC,EAAiBP,IAAa,MAAQ,CAACA,EAAS,UAClDtC,GAAa0C,EAAc,QAAQ,aAAe,QACpDF,EAAqB,EACvB9B,EAAW,IAAM,CACf,GAAIO,GAAsB,CAACmB,EACzB,OACF,GAAIS,EAAgB,CAClBH,EAAc,QAAU,CACtB,GAAGA,EAAc,QACjB,gBAAiBG,CACnB,EACA,MACF,CACA,GAAM,CAAE,YAAAC,EAAa,WAAAC,CAAW,EAAIL,EAAc,QAC5CM,EAAkBhD,GAAa,CAAC+C,GAAc,CAACF,GAAkBH,EAAc,QAAQ,iBAAmB1C,EAC1GiD,GAAmB/B,GAAc,CAAC4B,EAClCI,GAAUP,GAAeD,EAAc,QAAQ,QAASd,EAAcR,CAAe,EACvF+B,GAAWT,EAAc,QAAQ,SACjCM,GAAmBC,IACrBb,EAAS,KAAK,EACdA,EAAS,MAAM,CACb,OAAQJ,EACR,GAAGkB,GACH,GAAG9B,CACL,CAAC,EACD+B,GAAW,IACFA,KAAa,KACtBf,EAAS,KAAK,EACdA,EAAS,IAAI,CAAE,OAAQJ,EAAO,GAAGoB,GAAyB,QAAS,CAAE,CAAC,EACtED,GAAW,IAEbT,EAAc,QAAU,CACtB,WAAY,CAAC,CAAC1C,EACd,YAAa,CAAC,CAACkB,EACf,gBAAiB,GACjB,SAAAiC,GACA,QAAAD,EACF,CACF,EAAG,CAAClD,EAAWkB,EAAY2B,CAAc,CAAC,EAC1C,IAAMxH,EAAasG,EAAU,CAAE,KAAM,EAAM,EAAI,aAAcF,EAAY,CAAE,GAAGA,EAAW,SAAU,CAAE,EAAIA,EACnG4B,EAAiB1B,EAAU,CAAE,KAAM,EAAM,EAAID,GAAiBD,EAC9D6B,EAAS,CAAE,GAAGxB,CAAS,GACzBwB,EAAO,OAAS,QAAUA,EAAO,QAAU,UAC7CA,EAAO,MAAQ,SACbA,EAAO,MAAQ,QAAUA,EAAO,SAAW,UAC7CA,EAAO,OAAS,QAElB,IAAMC,GADmBC,GAAgBpC,CAAe,GAAKoC,GAAgB5B,CAAY,KAChDX,GAAsBjB,GAAakB,GAAc,KAAO,OAC3FuC,EAAW,CAAE,GAAGL,GAAyB,GAAGV,EAAc,QAAQ,OAAQ,EAC1EgB,EAAczC,EAAqB,CACvC,QAAS,CAAE,GAAGwC,EAAU,GAAG7B,CAAa,EACxC,QAAS,CAAE,GAAG6B,EAAU,GAAGrC,EAAiB,WAAA/F,CAAW,EACvD,KAAM,CAAE,GAAGoI,EAAU,GAAG5B,EAAW,WAAYJ,CAAU,CAC3D,EAAI,CACF,QAASW,EACT,KAAM,CAAE,GAAGqB,EAAU,GAAG5B,EAAW,WAAYwB,CAAe,CAChE,EACMM,EAAY,EAAAd,GAAkBZ,IAAgC,IAC9D2B,EAAkB,CAAC,CAAC5D,GAAa2D,EACjCE,GAAe7D,GAAamC,EAClC,OAAuBlH,EAAQ,cAC7B6I,GACA,CACE,MAAO,OACP,OAAQ,OACR,MAAO,CACL,SAAU,WACV,eAAgB,OAChB,gBAAiB,cACjB,SAAU,SACV,OAAQ7C,GAAsB4B,GAAkB7C,GAAa+B,EAAkBC,EAAQ,OACvF,cAAe,OACf,WAAYb,EAAU,UAAY,SAClC,YAAAoC,CACF,CACF,EACAtC,GAAsChG,EAAQ,cAC5C6I,GACA,CACE,MAAO,OACP,OAAQ,OACR,WAAYrC,EACZ,QAAS,CAAE,QAASE,GAAWR,EAAU,EAAI,CAAE,EAC/C,QAAS,CAAE,QAAS,CAAE,EACtB,KAAM,CAAE,QAAS,CAAE,EACnB,gBAAiBE,GAAgC,cACjD,MAAQwB,EAAiC,OAAhBvB,CAC3B,CACF,EACgBrG,EAAQ,cACtB6I,GACA,CACE,GAAGR,EACH,GAAGI,EACH,WAAY,CACV,QAASrI,EACT,QAAS,CAAE,KAAM,EAAM,EACvB,QAAS,CAAE,KAAM,EAAM,EACvB,QAAS,CAAE,KAAM,EAAM,CACzB,EACA,gBAAiB,cACjB,gBAAkBwH,EAAmCrB,EAAlBD,EACnC,6BAA8B,sBAC9B,2CAA4C,CAAC,CAACvB,EAC9C,MAAO,CACL,cAAe,UACf,QAAS6D,IAAgB5C,GAAsBjB,GAAa+B,EAAkB,EAAI,CACpF,EACA,kBAAmB4B,EAAY,OAAS,GACxC,IAAKf,CACP,EACgB3H,EAAQ,cAAcuC,GAAgB,SAAU,CAAE,MAAOoF,CAAY,EAAmB3H,EAAQ,cAAcuE,GAA2B,SAAU,CAAE,MAAOoE,CAAgB,EAAmB3I,EAAQ,cAAc8E,GAAyB,CAAE,UAAW6D,EAAiB,YAAAhF,CAAY,EAAmB3D,EAAQ,cACjUsE,GACA,CACE,OAAQS,EACR,eAAgB,CAAC,CAAC+B,EAClB,WAAA1G,EACA,UAAW,CAACsI,EACZ,YAAA/E,EACA,GAAAsD,CACF,EACAjC,CACF,CAAC,CAAC,CAAC,CACL,CACF,CACF,EACA8D,EACF,EACA,SAASA,GAAuBC,EAAWvF,EAAW,CAOpD,MANI,EAAAA,EAAU,YAAc,QAExBuF,EAAU,YAAcvF,EAAU,WAElCuF,EAAU,aAAevF,EAAU,YAEnCA,EAAU,WAAauF,EAAU,cAAgBvF,EAAU,YAGjE,CACA,SAASkE,GAAesB,EAAoBrC,EAAcR,EAAiB,CACzE,IAAM8C,EAAS,CAAE,GAAGD,CAAmB,EACvC,OAAIrC,IACEuC,EAAevC,EAAa,OAAO,IACrCsC,EAAO,QAAUtC,EAAa,SAC5BuC,EAAevC,EAAa,OAAO,IACrCsC,EAAO,QAAUtC,EAAa,SAC5BuC,EAAevC,EAAa,OAAO,IACrCsC,EAAO,QAAUtC,EAAa,UAE9BR,IACE+C,EAAe/C,EAAgB,OAAO,IACxC8C,EAAO,QAAU9C,EAAgB,SAC/B+C,EAAe/C,EAAgB,OAAO,IACxC8C,EAAO,QAAU9C,EAAgB,SAC/B+C,EAAe/C,EAAgB,OAAO,IACxC8C,EAAO,QAAU9C,EAAgB,UAE9B8C,CACT,CACA,SAASV,GAAgBY,EAAgB,CACvC,IAAI7I,EAAII,EAAI0I,EAIZ,GAHI,CAACD,GAGD,EADkB,YAAaA,GAAkB,YAAaA,GAAkB,MAAOA,GAEzF,MAAO,GACT,IAAME,EAAmBF,EAAe,UAAY,GAAKA,EAAe,UAAY,GAAKA,EAAe,IAAM,EACxGG,IAAuBhJ,EAAuC6I,GAAe,aAAe,KAAO,OAAS7I,EAAG,QAAQ,QAAU,KAAOI,EAAuCyI,GAAe,aAAe,KAAO,OAASzI,EAAG,QAAQ,QAAU,KAAO0I,EAAuCD,GAAe,aAAe,KAAO,OAASC,EAAG,EAAE,QAAU,EACnW,OAAOC,GAAoBC,CAC7B,CACA,IAAInB,GAA0B,CAC5B,EAAG,EACH,EAAG,EACH,EAAG,EACH,OAAQ,EACR,QAAS,EACT,QAAS,EACT,QAAS,EACT,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,OAAQ,EACR,KAAM,EACN,MAAO,EACP,MAAO,EACP,QAAS,GACT,QAAS,GACT,QAAS,EACT,QAAS,CACX,EAGIoB,GAAqB,CACvB,KAAM,CACJ,KAAM,CAAE,QAAS,CAAE,EACnB,MAAO,CAAE,QAAS,CAAE,CACtB,EACA,SAAU,CACR,KAAM,CAAE,EAAG,MAAO,EAClB,MAAO,CAAE,EAAG,MAAO,CACrB,EACA,UAAW,CACT,KAAM,CAAE,EAAG,KAAM,EACjB,MAAO,CAAE,EAAG,OAAQ,CACtB,EACA,OAAQ,CACN,KAAM,CAAE,EAAG,MAAO,EAClB,MAAO,CAAE,EAAG,MAAO,CACrB,EACA,SAAU,CACR,KAAM,CAAE,EAAG,KAAM,EACjB,MAAO,CAAE,EAAG,OAAQ,CACtB,EACA,QAAS,CACP,UAAW,CAAE,KAAM,EAAM,EACzB,MAAO,CAAE,QAAS,CAAE,CACtB,EACA,MAAO,CACL,mBAAoB,GACpB,mBAAoB,GACpB,SAAU,CAAE,OAAQ,EAAK,EACzB,MAAO,CAAE,QAAS,EAAG,MAAO,GAAI,CAClC,EACA,YAAa,CACX,mBAAoB,GACpB,mBAAoB,GACpB,SAAU,CAAE,MAAO,EAAG,IAAK,EAAG,OAAQ,CAAE,EACxC,MAAO,CAAE,EAAG,MAAO,CACrB,EACA,aAAc,CACZ,mBAAoB,GACpB,mBAAoB,GACpB,SAAU,CAAE,KAAM,EAAG,IAAK,EAAG,OAAQ,CAAE,EACvC,MAAO,CAAE,EAAG,OAAQ,CACtB,EACA,UAAW,CACT,mBAAoB,GACpB,mBAAoB,GACpB,SAAU,CAAE,OAAQ,EAAG,KAAM,EAAG,MAAO,CAAE,EACzC,MAAO,CAAE,EAAG,MAAO,CACrB,EACA,YAAa,CACX,mBAAoB,GACpB,mBAAoB,GACpB,SAAU,CAAE,IAAK,EAAG,KAAM,EAAG,MAAO,CAAE,EACtC,MAAO,CAAE,EAAG,OAAQ,CACtB,EACA,SAAU,CACR,gBAAiB,GACjB,KAAM,CAAE,QAAS,IAAK,EACtB,MAAO,CAAE,QAAS,GAAI,CACxB,EACA,UAAW,CACT,gBAAiB,GACjB,KAAM,CAAE,QAAS,GAAI,EACrB,MAAO,CAAE,QAAS,IAAK,CACzB,EACA,OAAQ,CACN,gBAAiB,GACjB,KAAM,CAAE,QAAS,GAAI,EACrB,MAAO,CAAE,QAAS,IAAK,CACzB,EACA,SAAU,CACR,gBAAiB,GACjB,KAAM,CAAE,QAAS,IAAK,EACtB,MAAO,CAAE,QAAS,GAAI,CACxB,EACA,YAAa,CACX,gBAAiB,EACnB,CACF,EACA,SAASC,GAAetI,EAAS,CAE/B,OADaA,GAAWA,EAAQ,YAAcA,EAAQ,YAAc,QACtD,CACZ,IAAK,QACH,OAAOqI,GAAmB,SAC5B,IAAK,OACH,OAAOA,GAAmB,UAC5B,IAAK,SACH,OAAOA,GAAmB,OAC5B,IAAK,MACH,OAAOA,GAAmB,QAC9B,CACF,CACA,SAASE,GAAkBvI,EAAS,CAElC,OADaA,GAAWA,EAAQ,YAAcA,EAAQ,YAAc,SACtD,CACZ,IAAK,QACH,OAAOqI,GAAmB,YAC5B,IAAK,OACH,OAAOA,GAAmB,aAC5B,IAAK,SACH,OAAOA,GAAmB,UAC5B,IAAK,MACH,OAAOA,GAAmB,WAC9B,CACF,CACA,SAASG,GAAexI,EAAS,CAE/B,OADaA,GAAWA,EAAQ,YAAcA,EAAQ,YAAc,SACtD,CACZ,IAAK,QACH,OAAOqI,GAAmB,SAC5B,IAAK,OACH,OAAOA,GAAmB,UAC5B,IAAK,SACH,OAAOA,GAAmB,OAC5B,IAAK,MACH,OAAOA,GAAmB,QAC9B,CACF,CAGA,IAAII,GAAe,KAAO,CACxB,QAAS,GACT,SAAU,GACV,eAAgB,GAChB,gBAAiB,GACjB,YAAa,EACb,cAAe,EACf,cAAe,EACf,QAAS,CAAC,EACV,aAAc,CAAC,EACf,WAAY,CAAC,EACb,eAAgB,CAAC,EACjB,qBAAsB,CAAC,EACvB,mBAAoB,CAAC,EACrB,uBAAwB,CAAC,EACzB,mBAAoB,IACtB,GACA,SAASC,GAA+BC,EAAOC,EAAQ,CACrD,OAAQA,EAAO,KAAM,CACnB,IAAK,aACH,OAAOC,GAAWF,EAAOC,EAAO,WAAYA,EAAO,SAAS,EAC9D,IAAK,gBACH,OAAOE,GAAcH,CAAK,EAC5B,IAAK,MACH,OAAOI,GAAIJ,EAAOC,EAAO,IAAKA,EAAO,WAAYA,EAAO,SAAS,EACnE,IAAK,SACH,OAAOI,GAAOL,CAAK,EACrB,IAAK,SACH,OAAOM,GAAgBN,EAAOC,EAAO,IAAKA,EAAO,SAAS,EAC5D,IAAK,OACH,OAAOM,GAAKP,CAAK,EACnB,IAAK,UACH,OAAOQ,GAAQR,CAAK,EACtB,QACE,MACJ,CACF,CACA,SAASM,GAAgBG,EAAcvI,EAAMwI,EAAW,CACtD,MAAO,CACL,GAAGD,EACH,WAAY,CACV,GAAGA,EAAa,WAChB,CAACvI,GAAOwI,CACV,CACF,CACF,CACA,SAASR,GAAWO,EAAclK,EAAYmK,EAAW,CACvD,IAAMC,EAAiBF,EAAa,aAAaA,EAAa,gBAC9D,GAAIE,GAAkBA,EAAe,YAAcD,EACjD,OACF,IAAME,EAAgBH,EAAa,cAAgB,EAC7CI,EAAe,CACnB,GAAGJ,EAAa,aAChB,CACE,IAAK,SAASG,IACd,UAAAF,EACA,WAAAnK,CACF,CACF,EACA,MAAO,CACL,GAAGkK,EACH,aAAAI,EACA,cAAAD,EACA,eAAgB,KAAK,IAAI,EAAG,KAAK,IAAIH,EAAa,eAAiB,EAAGI,EAAa,OAAS,CAAC,CAAC,EAC9F,gBAAiBJ,EAAa,cAChC,CACF,CACA,SAASN,GAAcM,EAAc,CACnC,MAAO,CACL,GAAGA,EACH,aAAc,CAAC,EACf,eAAgB,GAChB,gBAAiBA,EAAa,cAChC,CACF,CACA,SAASL,GAAIK,EAAcvI,EAAM3B,EAAYmK,EAAW,CACjDD,EAAa,WAAWvI,KAC3BuI,EAAa,WAAWvI,GAAQwI,GAClCD,EAAa,QAAUA,EAAa,QAAQ,MAAM,EAAGA,EAAa,QAAU,CAAC,EAC7EA,EAAa,YAAc,KAAK,IAAIA,EAAa,QAAQ,OAAQ,CAAC,EAClE,IAAMK,EAAcL,EAAa,QAAQA,EAAa,QAAQ,OAAS,GACjEM,EAAkBD,GAAeA,EAAY,MAAQ5I,EAE3D,GADAuI,EAAa,aAAe,CAAC,EACzBM,GAAmBN,EAAa,eAAiB,GACnD,MAAO,CACL,GAAGA,EACH,eAAgB,GAChB,gBAAiBA,EAAa,cAChC,EAEF,GAAIM,EACF,OACF,IAAMC,EAAYP,EAAa,qBAAqBvI,GAC9C+I,EAAUR,EAAa,mBAAmBvI,GAC1CgJ,EAAoDJ,GAAY,KAAQvK,EAAW,gBAAkB4K,GAAoBjJ,EAAM8I,EAAWC,EAASR,EAAa,OAAO,EAAI,GACjLA,EAAa,QAAQ,KAAK,CACxB,IAAKvI,EACL,WAAA3B,EACA,YAAa2K,EAAoB,KAAK,IAAIT,EAAa,YAAa,CAAC,EAAIA,EAAa,qBAAqBvI,EAC7G,CAAC,EACD,IAAMkJ,EAAUX,EAAa,QAAU,EACjCY,EAAWZ,EAAa,QAC9B,QAAWa,KAAgBb,EAAa,eAClCA,EAAa,eAAea,KAAkBF,IAChDX,EAAa,eAAea,GAAgBC,GAAuBD,EAAcb,EAAa,OAAO,GAGzGA,EAAa,eAAevI,GAAQkJ,EACpC,GAAM,CAAE,qBAAAI,EAAsB,mBAAAC,CAAmB,EAAIC,GAAuBjB,EAAcvI,EAAMgJ,CAAiB,EAC3GS,EAAyBC,GAC7BR,EACAC,EACAZ,EAAa,QACbA,EAAa,eACbA,EAAa,sBACf,EACA,MAAO,CACL,GAAGA,EACH,QAAAW,EACA,SAAAC,EACA,qBAAAG,EACA,mBAAAC,EACA,uBAAAE,EACA,mBAAoB,KACpB,eAAgB,GAChB,cAAelB,EAAa,cAAgB,EAC5C,gBAAiBA,EAAa,cAChC,CACF,CACA,SAASF,GAAKE,EAAc,CAC1B,IAAMoB,EAAa,CAAE,GAAGpB,EAAa,UAAW,EAC1CqB,EAAYzB,GAAOI,CAAY,EACrC,GAAKqB,EAEL,OAAAA,EAAU,WAAaD,EAChBC,CACT,CACA,SAAStB,GAAQC,EAAc,CAC7B,IAAMsB,EAAWtB,EAAa,QAAQA,EAAa,QAAU,GAC7D,GAAI,CAACsB,EACH,OACF,GAAM,CAAE,IAAK7J,EAAM,WAAA3B,EAAY,UAAAmK,CAAU,EAAIqB,EACvCC,EAAU,CAAC,GAAGvB,EAAa,OAAO,EAClCqB,EAAY1B,GAAIK,EAAcvI,EAAM3B,EAAYmK,CAAS,EAC/D,GAAKoB,EAEL,OAAAA,EAAU,QAAUE,EACbF,CACT,CACA,SAASzB,GAAOI,EAAc,CAC5B,IAAMuB,EAAU,CAAC,GAAGvB,EAAa,QAAQ,MAAM,EAAGA,EAAa,QAAU,CAAC,CAAC,EAC3E,GAAIuB,EAAQ,SAAW,EACrB,OACF,IAAMlB,EAAckB,EAAQ,IAAI,EAChC,GAAI,CAAClB,EACH,OACF,IAAMmB,EAASD,EAAQA,EAAQ,OAAS,GACxCE,GAAOD,EAAQ,yDAAyD,EACxExB,EAAa,eAAewB,EAAO,KAAOD,EAAQ,OAAS,EAC7BA,EAAQ,MAAOG,GAASA,EAAK,MAAQrB,EAAY,GAAG,GAEhF,OAAOL,EAAa,WAAWK,EAAY,KAE7C,IAAMM,EAAUX,EAAa,QAAU,EACjCY,EAAWZ,EAAa,QACxB,CAAE,mBAAAgB,EAAoB,qBAAAD,EAAsB,mBAAAY,EAAoB,YAAAC,CAAY,EAAIC,GACpF7B,EACAwB,EACAnB,CACF,EACMa,EAAyBC,GAC7BR,EACAC,EACAZ,EAAa,QACbA,EAAa,eACbA,EAAa,sBACf,EACA,MAAO,CACL,GAAGA,EACH,QAAAW,EACA,SAAAC,EACA,mBAAAI,EACA,qBAAAD,EACA,mBAAAY,EACA,YAAAC,EACA,uBAAAV,CACF,CACF,CACA,SAASD,GAAuBjB,EAAc8B,EAASrB,EAAmB,CACxE,IAAMsB,EAAS,CACb,qBAAsB,CAAE,GAAG/B,EAAa,oBAAqB,EAC7D,mBAAoB,CAAE,GAAGA,EAAa,kBAAmB,CAC3D,EACA,GAAIS,EACFsB,EAAO,qBAAqBD,GAAW9B,EAAa,QAAQ,OAAS,EACrE+B,EAAO,mBAAmBD,GAAW,OAChC,CACL,IAAME,EAAkBhC,EAAa,qBAAqB8B,GAC1D,OAAW,CAACrK,EAAMmK,CAAW,IAAK,OAAO,QAAQ5B,EAAa,oBAAoB,EAC5EgC,IAAoB,QAAUJ,EAAcI,IAC9CD,EAAO,mBAAmBtK,GAAQ,GAGxC,CACA,OAAOsK,CACT,CACA,SAASF,GAA0B7B,EAAcwB,EAAQnB,EAAa,CACpE,IAAM4B,EAAe,CAACT,EAAO,IAAKnB,EAAY,GAAG,EAC3C6B,EAAkBlC,EAAa,QAAQA,EAAa,QAAQ,OAAS,GACrE2B,EAAqB3B,EAAa,qBAAuB,KAAO,KAAO,CAAE,GAAGA,EAAa,kBAAmB,EAC5G+B,EAAS,CACb,mBAAoB,CAAE,GAAG/B,EAAa,kBAAmB,EACzD,qBAAsB,CAAE,GAAGA,EAAa,oBAAqB,EAC7D,mBAAA2B,EACA,YAAa3B,EAAa,WAC5B,EACIkC,GACFD,EAAa,KAAKC,EAAgB,GAAG,EACvC,IAAMC,EAAoBnC,EAAa,qBAAqBwB,EAAO,KAC7DY,EAAqBpC,EAAa,qBAAqBK,EAAY,KACnEgC,EAAsBF,IAAsB,QAAUC,IAAuB,QAAUD,GAAqBC,GAAsBZ,EAAO,cAAgB,QAAUA,EAAO,YAAcxB,EAAa,QAAQ,OAAS,EACtNO,EAAYiB,EAAO,YACzB,OAAIa,GACFN,EAAO,mBAAmB1B,EAAY,KAAO,GAC7C0B,EAAO,qBAAqBP,EAAO,KAAOjB,IAAc,OAASA,EAAYP,EAAa,QAAQ,OAAS,IAE3G+B,EAAO,YAAc/B,EAAa,YAAc,EAChD+B,EAAO,qBAAqBP,EAAO,KAAOxB,EAAa,YAAc,GAEnEK,EAAY,WAAW,kBACzB0B,EAAO,mBAAqB1B,EAAY,YAAc,MACxDL,EAAa,mBAAmBwB,EAAO,KAAO,GACvCO,CACT,CACA,SAASjB,GAAuBrJ,EAAM8J,EAAS,CAC7C,IAAIvL,EACJ,QAASyG,EAAQ8E,EAAQ,OAAQ9E,EAAQ8E,EAAQ,OAAQ9E,IACvD,KAAMzG,EAAKuL,EAAQ9E,KAAW,KAAO,OAASzG,EAAG,OAASyB,EACxD,OAAOgF,EAEX,MAAO,EACT,CACA,SAAS0E,GAAkBR,EAASC,EAAUW,EAASe,EAAgBpB,EAAwB,CAC7F,IAAMqB,EAAc,CAAE,GAAGrB,CAAuB,EAChD,OAAW,CAACzJ,EAAM+K,CAAW,IAAK,OAAO,QAAQF,CAAc,EAAG,CAChE,IAAMxM,EAAa2M,GAAoBD,EAAa,CAAE,QAAA7B,EAAS,SAAAC,EAAU,QAAAW,CAAQ,CAAC,EAC9EzL,IACFyM,EAAY9K,GAAQ3B,EAExB,CACA,OAAOyM,CACT,CACA,SAAS7B,GAAoBjJ,EAAMgF,EAAO+D,EAASe,EAAS,CAC1D,OAAIf,GAAW/D,IAAU,OAChB,GACLA,IAAU,EACL,GACc8E,EAAQ,MAAM9E,EAAO8E,EAAQ,MAAM,EACvC,UAAWG,GAASA,EAAK,MAAQjK,CAAI,EAAI,GACnD,GAEL,EADqB8J,EAAQ,MAAM,EAAG9E,EAAQ,CAAC,EAC9B,UAAWiF,GAASA,EAAK,MAAQjK,CAAI,EAAI,GAGhE,CACA,SAASgL,GAAoBD,EAAaE,EAAY,CACpD,GAAM,CAAE,QAAA/B,EAAS,SAAAC,EAAU,QAAAW,CAAQ,EAAImB,EACvC,GAAI,EAAAF,IAAgB7B,GAAW6B,IAAgB5B,GAE/C,IAAI4B,IAAgB7B,GAAWA,EAAUC,EAAU,CACjD,IAAMc,EAAOH,EAAQiB,GACrB,OAAOG,GAAS,QAAiCjB,GAAK,WAAW,MAA+BA,GAAK,WAAW,SAAS,CAC3H,CACA,GAAIc,IAAgB5B,GAAYD,EAAUC,EAAU,CAClD,IAAMc,EAAOH,EAAQiB,EAAc,GACnC,OAAOG,GAAS,OAAgCjB,GAAK,WAAW,KAA8BA,GAAK,WAAW,SAAS,CACzH,CACA,GAAIc,IAAgB7B,GAAWA,EAAUC,EAAU,CACjD,IAAMc,EAAOH,EAAQiB,EAAc,GACnC,OAAOG,GAAS,QAAiCjB,GAAK,WAAW,KAA8BA,GAAK,WAAW,SAAS,CAC1H,CACA,GAAIc,IAAgB5B,GAAYD,EAAUC,EAAU,CAClD,IAAMc,EAAOH,EAAQiB,GACrB,OAAOG,GAAS,OAAgCjB,GAAK,WAAW,MAA+BA,GAAK,WAAW,SAAS,CAC1H,EACF,CACA,IAAIkB,GAAoB,OAAO,KAAK/E,EAAuB,EAC3D,SAAS8E,GAASE,EAAW/M,EAAYoG,EAAW,CAClD,IAAMjB,EAAQ,CAAC,EACT6H,EAAO,CAAC,EACd,OAAAF,GAAkB,QAASG,GAAa,CACtC9H,EAAM8H,GAAYlF,GAAwBkF,GAC1CD,EAAKC,GAAY,CACf,GAAG7G,EACH,KAAM2B,GAAwBkF,EAChC,CACF,CAAC,EACGjN,GACF,OAAO,KAAKA,CAAU,EAAE,QAASiN,GAAa,CAC5C,GAAIjN,EAAWiN,KAAc,OAC3B,OACF,IAAMC,EAAelN,EAAWiN,GAC1BE,EAAiB,OAAOnN,EAAWiN,IAAc,SAAW,GAAGlF,GAAwBkF,MAAelF,GAAwBkF,GACpI9H,EAAM8H,GAAYF,IAAc,QAAUI,EAAiBD,EAC3DF,EAAKC,GAAY,CACf,GAAG7G,EACH,KAAM2G,IAAc,QAAUG,EAAeC,EAC7C,SAAU,CACZ,CACF,CAAC,EAEI,CACL,GAAGhI,EACH,WAAY,CACV,GAAG6H,CACL,CACF,CACF,CAGA,IAAII,GAAqBC,GAAkB,SACvCC,GAA4B1N,EAAQ,cAAc,MAAM,EACxD2N,GAA6BD,GAA0B,SACvDE,GAA6B5N,EAAQ,cAAc,MAAM,EACzD6N,GAAa,cAAc3N,EAAW,CACxC,YAAYW,EAAO,CACjB,IAAIP,EACJ,MAAMO,CAAK,EACX,KAAK,mBAAqB,KAC1B,KAAK,MAAQ8I,GAAa,EAC1B,KAAK,iBAAoBG,GAAW,CAClC,GAAI,CAAC,KAAK,MAAM,SAAW,KAAK,MAAM,QAAQ,OAAS,EACrD,OACF,IAAMgE,EAAWlE,GAA+B,KAAK,MAAOE,CAAM,EAClE,GAAI,CAACgE,EACH,OACF,GAAM,CAAE,oBAAAC,CAAoB,EAAI,KAAK,MAC/BC,EAAcF,EAAS,QAAQA,EAAS,SACxChH,EAAkBgD,EAAO,OAAS,OAASA,EAAO,WAAW,iBAAmBA,EAAO,OAAS,WAA6CkE,GAAY,WAAW,iBAAoBlE,EAAO,OAAS,UAAY,CAAC,CAACgE,EAAS,mBAC/NG,EAAc,IAAM,CACxB,IAAI3N,EACJ,KAAK,SAASwN,CAAQ,EACaE,GAAY,OAC5C1N,EAAK,KAAK,UAAY,MAAgBA,EAAG,KAAK,KAAM0N,EAAY,GAAG,EAExE,EACID,GAAuB,CAACjH,EAC1BiH,EAAoBE,CAAW,EAE/BA,EAAY,CAEhB,EACA,KAAK,OAAS,IAAM,CAClB,IAAI3N,EACJ,GAAI,MAAK,sBAAsB,EAG/B,OADA,KAAK,qBAAuBA,EAAK,WAAW,QAAU,KAAO,OAASA,EAAG,YAAc,KACnF,KAAK,MAAM,iBAAmB,GACzB,KAAK,iBAAiB,CAAE,KAAM,eAAgB,CAAC,EACjD,KAAK,iBAAiB,CAAE,KAAM,QAAS,CAAC,CACjD,EACA,IAAMiK,EAAY,KAAK,MAAM,SAC7B,GAAI,CAACA,GAAa,CAAC2D,GAAa3D,CAAS,GAAK,CAAC4D,GAAe5D,CAAS,EACrE,OACF,IAAMnK,EAAa,CAAE,GAAGmJ,GAAmB,OAAQ,EAE7CO,EAAS,CAAE,KAAM,MAAO,MADfxJ,EAAKiK,EAAU,MAAQ,KAAO,OAASjK,EAAG,SAAS,IAAM,SAAS,KAAK,MAAM,cAAgB,IACnE,WAAAF,EAAY,UAAAmK,CAAU,EACzDuD,EAAWlE,GAA+B,KAAK,MAAOE,CAAM,EAC7DgE,IAEL,KAAK,MAAQA,EACf,CACA,mBAAoB,CAClB,IAAIxN,EACJ8N,GAAwB,EACxB,IAAMJ,EAAc,KAAK,MAAM,QAAQ,KAAK,MAAM,SAC7CA,KAEJ1N,EAAK,KAAK,UAAY,MAAgBA,EAAG,KAAK,KAAM0N,EAAY,GAAG,EACtE,CACA,iCAAiCnN,EAAO,CACtC,IAAIP,EACJ,IAAMiK,EAAY1J,EAAM,SACxB,GAAI,CAACqN,GAAa3D,CAAS,GAAK,CAAC4D,GAAe5D,CAAS,EACvD,OACF,IAAMxI,GAAQzB,EAAKiK,EAAU,MAAQ,KAAO,OAASjK,EAAG,SAAS,EAC5DyB,IAED,KAAK,MAAM,QAAQ,SAAW,EAChC,KAAK,WAAWwI,EAAWhB,GAAmB,OAAO,EAErD,KAAK,iBAAiB,CAAE,KAAM,SAAU,IAAKxH,EAAM,UAAAwI,CAAU,CAAC,EAElE,CACA,sBAAuB,CACrB,IAAIjK,EAAII,GACPA,GAAMJ,EAAK,KAAK,OAAO,kBAAoB,MAAgBI,EAAG,KAAKJ,CAAE,CACxE,CACA,cAAcY,EAAS,CACrB,GAAM,CAAE,QAAA+J,EAAS,SAAAC,EAAU,eAAAV,EAAgB,gBAAA6D,CAAgB,EAAI,KAAK,MACpE,OAAInN,EAAQ,mBACH,CACL,QAASsJ,EACT,SAAU6D,EACV,QAAS,KAAK,MAAM,YACtB,EAEK,CACL,QAAApD,EACA,SAAAC,EACA,QAAS,KAAK,MAAM,OACtB,CACF,CACA,uBAAwB,CACtB,OAAK,WAAW,MAET,KAAK,qBAAuB,WAAW,MAAM,UAD3C,EAEX,CACA,WAAWX,EAAW+D,EAAkBC,EAAmB,CACzD,IAAIjO,EAAII,EAIR,GAHI,KAAK,sBAAsB,IAE/B,KAAK,qBAAuBJ,EAAK,WAAW,QAAU,KAAO,OAASA,EAAG,YAAc,KACnF,CAACiK,GAAa,CAAC2D,GAAa3D,CAAS,GAAK,CAAC4D,GAAe5D,CAAS,GACrE,OACF,IAAMnK,EAAa,CAAE,GAAGkO,EAAkB,GAAGC,CAAkB,EAE/D,GAD2B,CAAC,CAACnO,EAAW,mBAEtC,OAAO,KAAK,iBAAiB,CAAE,KAAM,aAAc,WAAAA,EAAY,UAAAmK,CAAU,CAAC,EAC5E,IAAMxI,IAASrB,EAAK6J,EAAU,MAAQ,KAAO,OAAS7J,EAAG,SAAS,IAAM,SAAS,KAAK,MAAM,cAAgB,IAC5G,KAAK,iBAAiB,CAAE,KAAM,MAAO,IAAKqB,EAAM,WAAA3B,EAAY,UAAAmK,CAAU,CAAC,CACzE,CACA,QAAQA,EAAW,CACjB,KAAK,WAAWA,EAAWhB,GAAmB,QAAS,MAAM,CAC/D,CACA,KAAKgB,EAAWrJ,EAAS,CACvB,KAAK,WAAWqJ,EAAWhB,GAAmB,KAAMrI,CAAO,CAC7D,CACA,KAAKqJ,EAAWrJ,EAAS,CACvB,KAAK,WAAWqJ,EAAWf,GAAetI,CAAO,EAAGA,CAAO,CAC7D,CACA,MAAMqJ,EAAWrJ,EAAS,CACxB,KAAK,WAAWqJ,EAAWhB,GAAmB,MAAOrI,CAAO,CAC9D,CACA,QAAQqJ,EAAWrJ,EAAS,CAC1B,KAAK,WAAWqJ,EAAWd,GAAkBvI,CAAO,EAAGA,CAAO,CAChE,CACA,KAAKqJ,EAAWrJ,EAAS,CACvB,KAAK,WAAWqJ,EAAWb,GAAexI,CAAO,EAAGA,CAAO,CAC7D,CACA,YAAYqJ,EAAWrJ,EAAS,CAC9B,KAAK,WAAWqJ,EAAWhB,GAAmB,YAAarI,CAAO,CACpE,CACA,iBAAiBqJ,EAAWnK,EAAY,CACtC,KAAK,WAAWmK,EAAWnK,CAAU,CACvC,CACA,QAAS,CACP,IAAIE,EAAII,EAAI0I,EAAIoF,EAAIC,EACpB,IAAMzB,EAAa,KAAK,cAAc,CAAE,mBAAoB,EAAM,CAAC,EAC7D0B,EAAoB,KAAK,cAAc,CAAE,mBAAoB,EAAK,CAAC,EACnEC,EAAgBC,GAAkBF,CAAiB,EACnDG,EAAmBH,EAAkB,QAAU,GAC/CxH,EAAY,KAAK,MAAM,QAAQ,SAAW,EAC1C4H,EAAoB,CAAC,EAC3B,OAAW,CAAC/M,EAAMwI,CAAS,IAAK,OAAO,QAAQ,KAAK,MAAM,UAAU,EAAG,CACrE,IAAMxD,EAAQ,KAAK,MAAM,eAAehF,GACxCgK,GAAOhF,IAAU,OAAQ,sCAAsC,EAC/D,IAAMmF,EAAc,KAAK,MAAM,qBAAqBnK,GACpDgK,GAAOG,IAAgB,OAAQ,6CAA6C,EAC5E,IAAMpB,EAAU,KAAK,MAAM,mBAAmB/I,GACxCiM,EAAc,KAAK,MAAM,QAAQjH,GACjCZ,EAAkB,KAAK,MAAM,uBAAuBpE,GACpDgD,EAAYgC,IAAU,KAAK,MAAM,QACjCd,EAAac,IAAU,KAAK,MAAM,SAClCC,EAA8BjC,EAAY,GAAQ+F,EAClDhE,IAAoBxG,EAAoC0N,GAAY,aAAe,KAAO,OAAS1N,EAAG,kBAAoByE,GAAa,CAAC,CAAC,KAAK,MAAM,mBAC1J+J,EAAkB,KACA9O,EAAQ,cACtB+F,GACA,CACE,IAAKhE,EACL,GAAIA,EACJ,MAAOmK,EACP,UAAAhF,EACA,UAAAnC,EACA,WAAAkB,EACA,YAAa4I,EACb,QAAS9J,GAAakB,EACtB,UAAWvF,EAAoCsN,GAAY,aAAe,KAAO,OAAStN,EAAG,SAC7F,QAASqO,GAA6BhI,EAAOiG,CAAU,EACvD,gBAAA7G,EACA,UAAW6I,GAA2BjI,EAAOiG,CAAU,EACvD,gBAAiBiC,GAA4BlI,EAAOiG,CAAU,EAC9D,eAAgB5D,EAAoC4E,GAAY,aAAe,KAAO,OAAS5E,EAAG,UAClG,qBAAsBoF,EAAoCR,GAAY,aAAe,KAAO,OAASQ,EAAG,gBACxG,WAAYC,EAAoCT,GAAY,aAAe,KAAO,OAASS,EAAG,MAC9F,gBAAA3H,EACA,4BAA6BE,EAA8B,GAAQ,MACrE,EACgBhH,EAAQ,cAAcY,GAA0B,KAAMsO,GAAiB,CACrF,UAAA3E,EACA,WAA2CyD,GAAY,UACzD,CAAC,CAAC,CACJ,CACF,CACF,CACA,IAAMmB,EAAoB,KAAK,MAAM,aAAa,IAAI,CAACnD,EAAMoD,IACpCpP,EAAQ,cAC7B+F,GACA,CACE,mBAAoB,GACpB,IAAKiG,EAAK,IACV,UAAWoD,IAAe,KAAK,MAAM,eACrC,SAAUpD,EAAK,WAAW,SAC1B,aAAcqD,GAAuBD,EAAYV,CAAiB,EAClE,gBAAiBY,GAA0BF,EAAYV,CAAiB,EACxE,QAASK,GAA6BK,EAAYV,EAAmB,EAAI,EACzE,UAAWM,GAA2BI,EAAYV,CAAiB,EACnE,UAAW1C,EAAK,WAAW,MAC3B,QAASuD,GAAmBH,EAAYV,CAAiB,EACzD,cAAec,GAA2BxD,EAAK,UAAU,EACzD,gBAAiByD,GAA6BL,EAAYV,CAAiB,EAC3E,cAAegB,GAAkB1D,EAAK,WAAY,KAAK,MAAM,EAC7D,MAAO,KAAK,MAAM,QAAU,EAAIoD,CAClC,EACAF,GAAiB,CACf,UAAWlD,EAAK,UAChB,WAAYA,EAAK,UACnB,CAAC,CACH,CACD,EACD,OAAuBhM,EAAQ,cAC7B6I,GACA,CACE,IAAK,EACL,KAAM,EACN,MAAO,OACP,OAAQ,OACR,SAAU,WACV,MAAO,CAAE,SAAU,SAAU,gBAAiB,QAAS,GAAG,KAAK,MAAM,KAAM,CAC7E,EACgB7I,EAAQ,cAAcyN,GAAkB,SAAU,CAAE,MAAO,IAAK,EAAmBzN,EAAQ,cAAc4N,GAA2B,SAAU,CAAE,MAAO1G,CAAU,EAAmBlH,EAAQ,cAC1M+F,GACA,CACE,mBAAoB,GACpB,SAAU,OACV,aAAc,CAAC,EACf,QAAS,GACT,gBAAiB4J,GAA+BhB,CAAa,EAC7D,UAAWiB,GAAyBjB,CAAa,EACjD,gBAAiBkB,GAA+BlB,CAAa,EAC7D,QAAS,GACT,cAAe,OACf,cAAe,OACf,MAAO,CACT,EACgB3O,EAAQ,cAAc8P,GAAkB,KAAsB9P,EAAQ,cAAcC,GAAkB,KAAsBD,EAAQ,cAAc+P,GAAiB,CAAE,sBAAuB,EAAM,EAAGjB,CAAiB,CAAC,CAAC,CAC1O,EAAmB9O,EAAQ,cAAc+P,GAAiB,KAAMZ,CAAiB,CAAC,CAAC,CACrF,CACF,CACF,EACAtB,GAAW,aAAe,CACxB,QAAS,EACX,EACAA,GAAW,YAAcH,GACzB,IAAIsC,GAAmB,CACrB,UAAW,IACX,QAAS,GACT,UAAW,EACX,KAAM,QACR,EACA,SAASpB,GAAkBlE,EAAc,CACvC,IAAIuF,EACAC,EACJ,OAAIxF,EAAa,UAAY,GAC3BuF,EAAqBvF,EAAa,QAAQA,EAAa,SAEvDwF,EAAsBxF,EAAa,QAAQA,EAAa,UAEnD,CAAE,mBAAAuF,EAAoB,oBAAAC,CAAoB,CACnD,CACA,SAASP,GAA+B,CAAE,mBAAAM,CAAmB,EAAG,CAC9D,OAAOA,GAAsBA,EAAmB,WAAW,IAC7D,CACA,SAASL,GAAyB,CAAE,mBAAAK,EAAoB,oBAAAC,CAAoB,EAAG,CAC7E,OAAID,GAAsBA,EAAmB,WAAW,UAC/CA,EAAmB,WAAW,UAEnCC,GAAuBA,EAAoB,WAAW,UACjDA,EAAoB,WAAW,UAEjCF,EACT,CACA,SAASH,GAA+B,CAAE,mBAAAI,EAAoB,oBAAAC,CAAoB,EAAG,CACnF,OAAID,EACKA,EAAmB,WAAW,gBAChCC,GAAuBA,EAAoB,WAAW,eAC/D,CACA,SAASV,GAA2BpP,EAAY,CAC9C,GAAIA,EAAW,cACb,OAAOA,EAAW,cACpB,GAAIA,EAAW,mBACb,MAAO,iBAEX,CACA,SAASqP,GAA6B7C,EAAgBI,EAAY,CAChE,GAAM,CAAE,QAAA/B,EAAS,QAAAY,CAAQ,EAAImB,EAC7B,GAAIJ,IAAmB3B,EAAS,CAC9B,IAAMkF,EAAiBtE,EAAQe,GAC/B,OAAIuD,GAAkBA,EAAe,WAC5BA,EAAe,WAAW,gBAE5B,EACT,SAAWvD,EAAiB3B,EAAS,CACnC,IAAMkF,EAAiBtE,EAAQe,EAAiB,GAChD,OAAIuD,GAAkBA,EAAe,WAC5BA,EAAe,WAAW,gBAE5B,EACT,KAAO,CACL,IAAMA,EAAiBtE,EAAQe,GAC/B,OAAIuD,GAAkBA,EAAe,WAC5BA,EAAe,WAAW,gBAE5B,EACT,CACF,CACA,SAASd,GAAuBzC,EAAgBI,EAAY,CAC1D,IAAMmD,EAAiBnD,EAAW,QAAQJ,GAC1C,GAAIuD,EACF,OAAOA,EAAe,WAAW,KACrC,CACA,SAASlB,GAA4BnC,EAAaE,EAAY,CAC5D,IAAI1M,EAAII,EAAI0I,EAAIoF,EAChB,GAAM,CAAE,QAAAvD,EAAS,SAAAC,EAAU,QAAAW,CAAQ,EAAImB,EACvC,OAAIF,IAAgB5B,GAAYD,EAAUC,GAAY4B,IAAgB7B,GAAWA,EAAUC,GACjFxK,GAAMJ,EAAKuL,EAAQiB,EAAc,KAAO,KAAO,OAASxM,EAAG,aAAe,KAAO,OAASI,EAAG,iBAE/F8N,GAAMpF,EAAKyC,EAAQiB,KAAiB,KAAO,OAAS1D,EAAG,aAAe,KAAO,OAASoF,EAAG,eACnG,CACA,SAASc,GAA0Bc,EAAcpD,EAAY,CAC3D,GAAM,CAAE,QAAA/B,EAAS,QAAAY,CAAQ,EAAImB,EAC7B,GAAIoD,IAAiBnF,EAEd,GAAImF,EAAenF,EAAS,CACjC,IAAMkF,EAAiBtE,EAAQuE,EAAe,GAC9C,GAAID,GAAkBA,EAAe,WACnC,OAAOA,EAAe,WAAW,IAErC,KAAO,CACL,IAAMA,EAAiBtE,EAAQuE,GAC/B,GAAID,GAAkBA,EAAe,WACnC,OAAOA,EAAe,WAAW,KAErC,CACF,CACA,SAASnB,GAA2BpC,EAAgBI,EAAY,CAC9D,GAAM,CAAE,QAAA/B,EAAS,SAAAC,EAAU,QAAAW,CAAQ,EAAImB,EACjCqD,EAAmBnF,EAAWD,EAAUC,EAAWD,EACzD,GAAI2B,EAAiByD,EAAkB,CACrC,IAAMF,EAAiBtE,EAAQe,EAAiB,GAChD,GAAIuD,GAAkBA,EAAe,WAAW,UAC9C,OAAOA,EAAe,WAAW,SAErC,SAAWvD,IAAmByD,EAAkB,CAC9C,IAAMF,EAAiBtE,EAAQe,GAC/B,GAAIuD,GAAkBA,EAAe,WAAW,UAC9C,OAAOA,EAAe,WAAW,SAErC,KAAO,CACL,IAAMA,EAAiBtE,EAAQe,GAC/B,GAAsCuD,GAAe,WAAW,UAC9D,OAAOA,EAAe,WAAW,SAErC,CACA,OAAOH,EACT,CACA,SAASjB,GAA6BnC,EAAgBI,EAAYsD,EAAoB,CACpF,GAAM,CAAE,QAAArF,EAAS,SAAAC,EAAU,QAAAW,CAAQ,EAAImB,EAKvC,MAJI,GAAAsD,GAAsBzE,EAAQ,OAAS,GAEvCe,IAAmB1B,GAAY0B,IAAmB3B,GAElDA,IAAYC,EAGlB,CACA,SAASqE,GAAmB3C,EAAgBI,EAAY,CACtD,GAAM,CAAE,QAAA/B,EAAS,SAAAC,CAAS,EAAI8B,EAC9B,OAAIJ,EAAiB3B,GAAW2B,EAAiB1B,EACxC,GACL0B,IAAmB3B,CAGzB,CACA,SAASiE,GAAiBlD,EAAM,CAgC9B,OA/BgBhM,EAAQ,SAAS,IAC/BgM,EAAK,UACJzI,GAAU,CACT,IAAIjD,EAAII,EACR,GAAI,CAACwN,GAAa3K,CAAK,GAAK,CAAC4K,GAAe5K,CAAK,GAAK,CAACA,EAAM,MAC3D,OAAOA,EAET,IAAM1C,EAAQ,CACZ,OAAQP,EAAKiD,EAAM,MAAM,QAAU,KAAOjD,EAAK,CAAC,CAClD,EACMuG,GAAYnG,EAA6BsL,GAAK,aAAe,KAAO,OAAStL,EAAG,SAChF6P,EAAqB,CAAC1J,GAAYA,EAAS,OAAS,QAAUA,EAAS,QAAU,OACjF2J,EAAsB,CAAC3J,GAAYA,EAAS,MAAQ,QAAUA,EAAS,SAAW,OAClF4J,EAAkB,UAAWlN,EAAM,MAAQmN,GAAUnN,EAAM,MAAM,KAAK,EAAI,GAChF,OAAIgN,IACsB,UAAWhN,EAAM,QAEvC1C,EAAM,MAAQ,QACZ4P,IACF5P,EAAM,MAAM,MAAQ,SAEpB2P,IACuB,WAAYjN,EAAM,QAEzC1C,EAAM,OAAS,QACb4P,IACF5P,EAAM,MAAM,OAAS,SAElBb,EAAQ,aAAauD,EAAO1C,CAAK,CAC1C,CACF,CAEF,CACA,SAAS6O,GAAkBtP,EAAYuQ,EAAc,CACnD,GAAIvQ,EAAW,qBAAuB,GACpC,OAAOuQ,CACX,CACA,SAASC,GAAkB/P,EAAO,CAChC,IAAMgQ,EAAkBC,GAAmB,EACrC/C,EAAsBgD,GAA2B,EACvD,OAAuB/Q,EAAQ,cAAc6N,GAAY,CAAE,GAAGhN,EAAO,gBAAAgQ,EAAiB,oBAAA9C,CAAoB,EAAGlN,EAAM,QAAQ,CAC7H,CAGA,IAAImQ,GAAkBC,GAAQC,GAAgB,EAAG,CAAC,EAiGlD,SAASC,GAAkBC,EAAO,CAChC,GAAM,CAAE,eAAAC,EAAgB,WAAAC,EAAY,cAAAC,EAAe,YAAAC,EAAa,aAAAC,CAAa,EAAIL,EACjF,OAAOC,IAAmB,KAAUC,IAAe,QAAUC,IAAkB,QAAUC,IAAgB,QAAUC,IAAiB,OACtI,CACA,SAASC,GAAiBN,EAAO,CAC/B,GAAM,CAAE,QAAAO,EAAU,EAAG,WAAAL,EAAY,cAAAC,EAAe,YAAAC,EAAa,aAAAC,CAAa,EAAIL,EAC9E,OAAID,GAAkBC,CAAK,EAClB,CACL,IAAKE,IAAe,OAASA,EAAaK,EAC1C,OAAQJ,IAAkB,OAASA,EAAgBI,EACnD,KAAMH,IAAgB,OAASA,EAAcG,EAC7C,MAAOF,IAAiB,OAASA,EAAeE,CAClD,EAEK,CACL,IAAKA,EACL,OAAQA,EACR,KAAMA,EACN,MAAOA,CACT,CACF,CACA,SAASC,GAAkB,CACzB,IAAAC,EACA,KAAAC,EACA,OAAAC,EACA,MAAAC,CACF,EAAG,CACD,MAAO,GAAGH,OAASG,OAAWD,OAAYD,KAC5C,CAUA,SAASG,GAAmBC,EAASC,EAAS,CACvCD,IAELA,EAAQ,MAAM,QAAU,OACnBA,EAAQ,aACbA,EAAQ,MAAM,QAAUC,EAC1B,CACA,IAAIC,GAAmB,QAAQC,GAAS,GAAKC,GAAc,EAAI,IAAI,EACnE,SAASC,GAAgBC,EAAKC,EAAKN,EAAS,CAC1C,GAAI,CAACC,GACH,OACF,IAAMM,EAAkBC,EAAQ,OAAO,EAAI,EACrCC,EAAqBD,EAAQ,OAAO,EAAK,EACzCE,EAAeF,EAAQ,OAAOH,CAAG,EACvC,OAAAI,EAAmB,QAAU,GAC7BD,EAAQ,gBAAgB,IAAM,CAE5B,GADAE,EAAa,QAAUL,EACnBE,EAAgB,QAAS,CAC3BA,EAAgB,QAAU,GAC1B,MACF,CACKE,EAAmB,UACtBX,GAAmBQ,EAAI,QAASN,CAAO,EACvCS,EAAmB,QAAU,GAEjC,EAAG,CAACJ,EAAKC,EAAKI,EAAcV,CAAO,CAAC,EAC7BQ,EAAQ,YAAY,IAAM,CAC3BE,EAAa,UAAYL,IAExBI,EAAmB,SACtBX,GAAmBQ,EAAI,QAASN,CAAO,EACzCS,EAAmB,QAAU,GAC/B,EAAG,CAACJ,EAAKC,CAAG,CAAC,CACf,CAGA,IAAIK,IAAyB,IAAM,CACjC,IAAMC,EAAaJ,EAAQ,KACzBA,EAAQ,WAAW,SAAqBK,EAAYC,EAAc,CAChE,IAAIC,EAAIC,EACR,GAAM,CACJ,GAAAC,EAAK,MACL,UAAAC,EAAY,WACZ,aAAAC,EAAe,QACf,UAAAC,EAAY,SACZ,IAAAf,EAAM,GACN,KAAMgB,EAAQ,GACd,cAAeC,EAAwB,GACvC,SAAAC,EACA,MAAOC,EACP,UAAAC,EACA,oBAAAC,EACA,wBAAAC,EACA,WAAAC,EACA,sBAAAC,KACGC,CACL,EAAIjB,EACEkB,EAAgB,QAAQT,GAAyBD,CAAK,EACtDW,EAAWxB,EAAQ,OAAO,IAAI,EAC9ByB,EAAwB7B,GAAgBC,EAAK2B,EAAU,MAAM,EAC7DE,EAAgBC,GAAgBjB,CAAS,EACzCkB,EAAYC,GAAmBH,CAAa,EAC5CI,EAAiBC,GAAqBpB,CAAY,EAClD3B,EAAUR,GAAkB8C,CAAc,GAAKA,EAAe,QAAUrC,GAAkBF,GAAiBuC,CAAc,CAAC,EAAI,OAC9HU,EAAQ,CAAE,GAAGhB,CAAU,EAC7BiB,GAAM,gBAAgB,CAAE,oBAAAf,CAAoB,EAAGc,EAAO,EAAI,EACtDb,GAA2B,CAACe,GAAmBC,GAAiBb,CAAc,CAAC,IACjFA,EAAe,MAAQ,OACvBA,EAAe,OAAS,OACxBA,EAAe,aAAe,CAAE,QAAS,EAAK,GAEhD,IAAMc,EAAWC,GAAYhC,CAAU,EACjC,CAAE,SAAUiC,EAAW,MAAA7D,CAAM,EAAI8D,GAA0BjB,EAAgBP,CAAQ,EACnFyB,GAAajC,EAAKe,EAAe,YAAc,KAAOf,EAAKe,EAAe,QAAU,OAAS,EAAe,EAC5GmB,GAAcjC,EAAKc,EAAe,aAAe,KAAOd,EAAKc,EAAe,SAAW,OAAS,EAAe,EAC/GoB,EAAmBC,GAAeL,EAAW5B,EAAW8B,EAAWC,CAAU,EAC7EG,EAAcC,GAClBH,EACA7C,EACA6B,EACAI,EACAP,EACAV,CACF,EACMiC,EAAUC,GAAqBH,EAAaxB,GAAkC,CAAgB,EAC9F4B,EAAa,CACjB,6BAA8B,OAChC,EACMC,GAAsB3B,EAAe,sBACvC2B,KACFD,EAAW,yBAA2B,IACxC,IAAME,EAAanB,GAAqBnB,CAAS,EAC3CuC,EAAsB,CAC1B,QAAS,OACT,cAAAzB,EACA,SAAUb,EAAQ,OAAS,SAC3B,eAAAiB,EACA,WAAAoB,EACA,aAAcA,EACd,QAAAlE,EACA,GAAGqC,CACL,EACM+B,EAAaC,GAAaxD,EAAKiC,EAAgBjB,CAAK,EAC1D,GAAIU,GAAiB6B,EAAY,CAC/B,IAAME,GAAyBC,GAAyBzB,CAAc,GAClEwB,IAA0B5C,IAAc,gBAC1CyC,EAAoB,6BAA+B,GAAGtD,QAEpDyD,IAA0B5C,IAAc,cAC1CyC,EAAoB,0BAA4B,GAAGtD,MAEvD,CACA,OAAIsD,EAAoB,QAAU,SAChCA,EAAoB,MAAQX,IAAc,EAAe,cAAgB,QAEvEW,EAAoB,SAAW,SACjCA,EAAoB,OAASV,IAAe,EAAe,cAAgB,QAEzEQ,KAC+BjC,GAAU,QACzCmC,EAAoB,MAAqCnC,GAAU,OACpCA,GAAU,SACzCmC,EAAoB,OAAsCnC,GAAU,SAEjDhB,EAAQ,cAC7BwD,GACA,CACE,GAAA/C,EACA,WAAYwC,GAAsB,OAAS,OAC3C,GAAGxE,EACH,SAAA2D,EACA,IAAKqB,GAAgBnD,EAAckB,CAAQ,EAC3C,GAAGwB,EACH,MAAAhB,EACA,UAAAf,EACA,aAAc,EAChB,EACgBjB,EAAQ,cACtB0D,GAAO,IACP,CACE,oCAAqC,GACrC,sCAAuC9B,EACvC,gCAAiCwB,EACjC,MAAOD,EACP,sBAAA1B,CACF,EACAqB,CACF,CACF,CACF,CAAC,CACH,EACA,OAAA1C,EAAW,YAAc,QACzBuD,GAAoBvD,EAAY,CAC9B,UAAW,CACT,KAAM,gBACN,QAAS,CAAC,aAAc,UAAU,EAClC,MAAO,YACP,aAAc,UAChB,EACA,aAAc,CACZ,KAAM,OACN,QAAS,CAAC,QAAS,SAAU,MAAO,gBAAiB,eAAgB,cAAc,EACnF,aAAc,CAAC,QAAS,SAAU,MAAO,gBAAiB,eAAgB,cAAc,EACxF,MAAO,aACP,aAAc,cAChB,EACA,UAAW,CACT,KAAM,gBACN,QAAS,CAAC,QAAS,SAAU,KAAK,EAClC,MAAO,QACP,aAAc,QAChB,EACA,IAAK,CACH,KAAM,SACN,IAAK,EACL,MAAO,MACP,OAAS3B,GACAA,EAAM,eAAiB,QAAU,CAAC,gBAAiB,eAAgB,cAAc,EAAE,SAASA,EAAM,YAAY,EAEvH,aAAc,EAChB,EACA,QAAS,CACP,KAAM,cACN,UAAW,iBACX,aAAc,CAAC,UAAW,kBAAkB,EAC5C,UAAW,CAAC,aAAc,eAAgB,gBAAiB,aAAa,EACxE,YAAa,CAAC,IAAK,IAAK,IAAK,GAAG,EAChC,IAAK,EACL,MAAO,UACP,aAAc,CAChB,CACF,CAAC,EACM2B,CACT,GAAG,EACH,SAASwD,GAAoBC,EAAW,CACtC,OAAO,OAAOA,GAAc,UAAYA,EAAU,SAAS,IAAI,CACjE,CACA,SAASC,GAASD,EAAW,CAC3B,IAAME,EAAQ,WAAWF,CAAS,EAClC,OAAOG,EAAeD,CAAK,EAAIA,EAAQ,CACzC,CACA,SAASpB,GAAe5B,EAAUL,EAAW8B,EAAWC,EAAY,CAClE,OAAOzC,EAAQ,SAAS,IAAIe,EAAWkD,GAAU,CAC/C,GAAI,CAACC,GAAaD,CAAK,GAAK,CAACE,GAAeF,CAAK,EAC/C,OACF,IAAMG,EAAa1D,IAAc,WAC3BsB,EAAQ,CAAC,EACXqC,EAAc,GACZ,CAAE,MAAOC,EAAY,KAAMC,CAAM,EAAIN,EAAM,MAC7C,CAAE,MAAAO,EAAO,OAAAC,CAAO,EAAIR,EAAM,MAC1BM,IAAU,SACRC,IAAU,SACZA,EAAQD,GACNE,IAAW,SACbA,EAASF,IAEb,IAAIG,EAAWF,EACXG,EAAYF,EAkChB,GAjCIb,GAAoBY,CAAK,IAC3BH,EAAc,GACdA,EAAc,GACVD,EACE5B,IAAc,GAChBR,EAAM,UAAY,UAClB0C,EAAW,QAEXA,EAAW,GAAGZ,GAASU,CAAK,EAAI,QAGlCE,EAAW,EACX1C,EAAM,SAAW8B,GAASU,CAAK,EAC/BxC,EAAM,UAAY,GAEpBA,EAAM,MAAQ0C,GAEZd,GAAoBa,CAAM,IAC5BJ,EAAc,GACVD,GACFO,EAAY,EACZ3C,EAAM,SAAW8B,GAASW,CAAM,EAChCzC,EAAM,UAAY,GAEdS,IAAe,GACjBT,EAAM,UAAY,UAClB2C,EAAY,QAEZA,EAAY,GAAGb,GAASW,CAAM,EAAI,OAGtCzC,EAAM,OAAS2C,GAEb,CAACN,EACH,OAAOJ,EACT,IAAMW,EAAY,CAAE,GAAGN,EAAY,GAAGtC,CAAM,EAC5C,OAAOhC,EAAQ,aAAaiE,EAAO,CACjC,MAAOS,EACP,OAAQC,EACR,MAAOC,CACT,CAAC,CACH,CAAC,CACH,CACA,SAASrB,GAAyBzB,EAAgB,CAChD,OAAKA,EAEE,CAAC,CAAC,gBAAiB,eAAgB,eAAgB,SAAS,EAAE,SAASA,CAAc,EADnF,EAEX,CACA,SAASuB,GAAaxD,EAAKiC,EAAgBjB,EAAO,CAIhD,MAHI,GAAChB,GAGD,CAACgB,GAAS,CAAC0C,GAAyBzB,CAAc,EAIxD,CACA,SAASe,GAA6B9B,EAAUlB,EAAKa,EAAWoB,EAAgBP,EAAeV,EAAO,CACpG,IAAMgE,EAAW,CACf,QAAS,UACX,EACMzB,EAAaC,GAAaxD,EAAKiC,EAAgBjB,CAAK,EAC1D,GAAIuC,EAAY,CACd,IAAMgB,EAAaU,GAAoBpE,CAAS,EAChDmE,EAAS,iBAAmB,GAAGT,EAAa,EAAIvE,MAChDgF,EAAS,iBAAmB,GAAGT,EAAavE,EAAM,KACpD,CACA,OAAuBG,EAAQ,cAC7B,MACA,CACE,uCAAwCoD,EACxC,gCAAiC7B,EACjC,MAAOsD,CACT,EACA9D,CACF,CACF,CACA,SAASY,GAAgBjB,EAAW,CAClC,OAAQA,EAAW,CACjB,IAAK,WACH,MAAO,SACT,IAAK,aACH,MAAO,MACT,QACE,OAAOA,CACX,CACF,CACA,SAASoE,GAAoBpE,EAAW,CACtC,OAAOA,IAAc,UAAYA,IAAc,gBACjD,CACA,SAASmB,GAAmBnB,EAAW,CACrC,OAAQA,EAAW,CACjB,IAAK,iBACL,IAAK,cACH,MAAO,GACT,QACE,MAAO,EACX,CACF,CACA,SAASqB,GAAqBpB,EAAc,CAC1C,OAAQA,EAAc,CACpB,IAAK,QACH,MAAO,aACT,IAAK,MACH,MAAO,WACT,QACE,OAAOA,CACX,CACF,CACA,SAAS8C,GAAgBnD,EAAcyE,EAAU,CAC/C,OAAQxF,GAAY,CAClBwF,EAAS,QAAUxF,EACf,OAAOe,GAAiB,WAC1BA,EAAaf,CAAO,EACXe,IACTA,EAAa,QAAUf,EAE3B,CACF,CA6mDA,SAASyF,MAAMC,EAAY,CACzB,OAAOA,EAAW,OAAO,OAAO,EAAE,KAAK,GAAG,CAC5C,CAyJA,IAAIC,GAAc,CAAC,EACnB,OAAO,OAAOA,EAAW,EAiKzB,IAAIC,GAAY,EAAI,GAAK,IAkPzB,IAAIC,IAAwB,IAAM,CAChC,SAASC,EAAMC,EAAU,CAAC,EAAG,CAC3B,IAAMC,EAAQC,GAAiBF,EAAS,GAAO,EAAK,EACpD,OAAAD,EAAM,QAAQE,CAAK,EACZA,CACT,CACA,OAAAF,EAAM,QAAU,CAAC,EACjBA,EAAM,QAAWE,GAAU,CACzBF,EAAM,QAAQ,KAAKE,CAAK,CAC1B,EACAF,EAAM,MAAQ,IAAM,CAClBA,EAAM,QAAQ,QAASI,GAAWD,GAAiB,YAAYC,CAAM,CAAC,CACxE,EACAJ,EAAM,YAAc,CAACI,EAAQC,IACpBF,GAAiB,YAAYC,EAAQC,CAAQ,EAE/CL,CACT,GAAG,EACCM,GAAOP,GAiFX,IAAIQ,GAAe,CAAE,OAAQ,CAAE,EAC3BC,GAAsCC,EAAQ,cAAc,CAAE,OAAQ,GAAI,CAAC,EAK/E,IAAIC,GAAe,cAAcC,EAAY,CAC3C,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,UAAY,CAAC,EAClB,KAAK,MAAQC,GACb,KAAK,UAAY,GACjB,KAAK,UAAY,IAAM,CACrB,KAAK,SAAS,CAAE,OAAQ,KAAK,MAAM,OAAS,CAAE,CAAC,EAC/C,KAAK,UAAY,EACnB,EACA,KAAK,SAAW,IAAM,CAChB,KAAK,YAET,KAAK,UAAY,GACjBC,GAAS,aAAa,KAAK,SAAS,EACtC,CACF,CACA,sBAAuB,CACrB,KAAK,UAAU,IAAKC,GAAWA,EAAO,CAAC,EACvCC,GAAK,MAAM,CACb,CACA,QAAS,CACP,GAAM,CAAE,SAAAC,CAAS,EAAI,KAAK,MAC1B,YAAK,UAAU,IAAKF,GAAWA,EAAO,CAAC,EACvC,KAAK,UAAY,CAAC,EAClBC,GAAK,QAAQ,QAASE,GAAM,CAC1B,IAAMC,EAAWH,GAAK,YAAYE,EAAG,KAAK,QAAQ,EAClD,KAAK,UAAU,KAAKC,CAAQ,CAC9B,CAAC,EACsBC,EAAQ,cAAcC,GAAoB,SAAU,CAAE,MAAO,CAAE,GAAG,KAAK,KAAM,CAAE,EAAGJ,CAAQ,CACnH,CACF,EAMIK,GAAS,aACTC,GAAeD,GAAO,OAc1B,SAASE,GAA2BC,EAAM,CACxC,GAAIA,EAAK,WAAWC,EAAM,EACxB,OAAOD,EAAK,OAAOE,EAAY,CAGnC,CAGA,IAAIC,GAAmB,CACrB,UACA,IACA,IACA,QACA,SACA,UACA,UACA,sBACF,EACIC,GAAgBC,GAAa,CAC/B,IAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAChC,MAAO,CACL,EAAGC,IAAaR,EAAiCD,GAAS,IAAM,KAAOC,EAAK,CAAC,EAC7E,EAAGQ,IAAaP,EAAiCF,GAAS,IAAM,KAAOE,EAAK,CAAC,EAC7E,QAASO,IAAaN,EAAiCH,GAAS,UAAY,KAAOG,EAAK,CAAC,EACzF,MAAOM,IAAaL,EAAiCJ,GAAS,QAAU,KAAOI,EAAK,CAAC,EACrF,OAAQK,IAAaJ,EAAiCL,GAAS,SAAW,KAAOK,EAAK,CAAC,EACvF,QAASI,IAAaH,EAAiCN,GAAS,UAAY,KAAOM,EAAK,CAAC,EACzF,QAASG,IAAaF,EAAiCP,GAAS,UAAY,KAAOO,EAAK,CAAC,EACzF,qBAAsBE,IAAaD,EAAiCR,GAAS,uBAAyB,KAAOQ,EAAK,CAAC,CACrH,CACF,EAMA,SAASE,GAAkBC,EAASC,EAAkBC,EAAOC,EAAQC,EAAgB,CACnF,IAAMC,EAAcH,EAAQ,IAAM,EAC5BI,EAAkBF,GAAkBH,EAAmBE,GAAUE,EAAc,EAC/EE,EAAe,CAACP,EAAUK,EAChC,OAAOC,EAAkBC,CAC3B,CAGA,IAAIC,GAAsC,IAAI,IAAI,CAChD,QACA,iBACA,SACA,0BACF,CAAC,EACD,SAASC,GAAYC,EAASC,EAAKC,EAAiB,CAClD,GAAM,CAAE,MAAAV,EAAQ,EAAG,OAAAC,EAAS,EAAG,eAAAC,EAAiB,GAAO,yBAAAS,CAAyB,EAAIH,EAC9ET,EAAmBa,EAAQ,OAAO,IAAI,EACtCC,EAAqBC,GAAuB,EAC5CC,EAAaH,EAAQ,YACxBI,GACKjB,EAAiB,UAAY,MAE7BC,IAAU,EACL,EACFH,GAAkBmB,EAAQjB,EAAiB,QAASC,EAAOC,EAAQC,CAAc,EAE1F,CAACH,EAAkBC,EAAOC,EAAQC,CAAc,CAClD,EACAU,EAAQ,gBAAgB,IAAM,CAC5B,IAAIxB,EAAIC,EAAIC,EACZS,EAAiB,SAAWT,GAAMD,GAAMD,EAAKqB,EAAI,UAAY,KAAO,OAASrB,EAAG,sBAAsB,IAAM,KAAO,OAASC,EAAG,MAAQ,KAAOC,EAAK,EACnJ2B,EAAU,IAAIF,EAAWjB,EAAQ,IAAI,CAAC,CAAC,EACnCI,GACFgB,EAAW,IAAIR,GAA4C,SAAS,CAExE,EAAG,CAACD,EAAKV,EAAkBG,CAAc,CAAC,EAC1C,GAAM,CAAE,QAAAJ,CAAQ,EAAIqB,GAAU,EACxBF,EAAYG,GAAatB,EAASiB,CAAU,EAC5CG,EAAaG,GAAenB,GAAkBH,EAAiB,UAAY,KAAO,SAAWW,CAAe,EAC5GY,EAAeD,GAAe,CAAC,EACrC,MAAO,CACL,OAAQ,CACN,EAAGR,GAAsB,CAACF,EAA2BW,EAAeL,CACtE,EACA,MAAO,CACL,WAAAC,CACF,CACF,CACF,CAMA,SAASK,GAAcC,EAASC,EAAW,CACzC,IAAIC,EAAM,EACNC,EAAUH,EACd,KAAOG,GAAWA,IAAYF,GACtBE,aAAmB,aAEzBD,GAAOC,EAAQ,UACfA,EAAUA,EAAQ,aAEpB,OAAOD,CACT,CAGA,IAAIE,GAAuB,EAC3B,SAASC,GAA0BC,EAAkBC,EAAY,EAAGC,EAAU,CAC5E,IAAI5C,EAAIC,EAAIC,EACZ,IAAM2C,EAAS,CAAC,EACVC,EAAa,CAAC,EACpB,QAASC,EAAQL,EAAiB,OAAQK,GAAS,EAAGA,IAAS,CAC7D,GAAM,CAAE,IAAKC,EAAW,OAAAnC,CAAO,GAAKb,EAAK0C,EAAiBK,KAAW,KAAO/C,EAAK,CAAC,EAClF,GAAI,CAACgD,GAAa,CAACA,EAAU,QAC3B,SAEF,IAAMV,EADYH,GAAca,EAAU,QAAS,SAAS,eAAe,EACnDR,IAAwB3B,GAA0B,GAAK8B,EACzEM,GAAU/C,GAAMD,EAAK+C,EAAU,UAAY,KAAO,OAAS/C,EAAG,eAAiB,KAAOC,EAAK,EAC3FgD,EAAcL,EAAOA,EAAO,OAAS,GACrCM,EAAM,KAAK,IAAIb,EAAMW,EAAQ,CAAC,EACpCJ,EAAO,KAAKP,CAAG,EACfQ,EAAW,QACT,KAAK,IAAIR,EAAK,CAAC,EACfY,IAAgB,OAASC,EAAM,KAAK,IAAIA,EAAK,KAAK,IAAID,EAAc,EAAG,CAAC,CAAC,CAC3E,EAC4BN,IAASG,CAAK,CAC5C,CACA,OAAOD,CACT,CAGA,IAAIM,GAAyC,IAAI,IAAI,CACnD,YACA,cACA,UACA,gBACA,IACA,IACA,QACA,aACA,SACA,UACA,UACA,cACA,QACA,OACA,UACA,2BACA,SACF,CAAC,EACGC,GAAqB,CAAC,UAAW,SAAS,EAC9C,SAASC,GAAuBC,EAASZ,EAAWa,EAAS,CAC3D,IAAMV,EAAaL,GAA0Bc,EAASZ,CAAS,EACzDc,EAAc,CAAC,GAAGJ,EAAkB,EACpCK,EAAaZ,EAAW,GAM9B,GALAa,GAAO,OAAOD,GAAe,SAAU,uBAAuBZ,GAAY,EACtEY,EAAa,IACfZ,EAAW,QAAQ,EAAGY,EAAa,CAAC,EACpCD,EAAY,QAAQ,UAAW,SAAS,GAEtCD,EAAS,CACX,IAAMI,EAAMd,EAAW,OAAS,EAC1Be,EAAOf,EAAWc,GACxBD,GAAO,OAAOE,GAAS,SAAU,uBAAuBf,GAAY,EACpEA,EAAW,KAAKe,EAAO,CAAC,EACxBJ,EAAY,KAAK,MAAM,CACzB,CACA,MAAO,CACL,WAAAX,EACA,YAAAW,CACF,CACF,CACA,IAAIK,GAAgB,CAClB,EAAG,EACH,EAAG,EACH,MAAO,EACP,QAAS,EACT,qBAAsB,EACtB,OAAQ,EACR,QAAS,EACT,QAAS,EACT,WAAY,MACd,EACA,SAASC,GAAUhE,EAAU,CAC3B,IAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIyD,EACpC,MAAO,CACL,GAAIhE,EAAiCD,GAAS,IAAM,KAAOC,EAAK8D,GAAc,EAC9E,GAAI7D,EAAiCF,GAAS,IAAM,KAAOE,EAAK6D,GAAc,EAC9E,OAAQ5D,EAAiCH,GAAS,QAAU,KAAOG,EAAK4D,GAAc,MACtF,SAAU3D,EAAiCJ,GAAS,UAAY,KAAOI,EAAK2D,GAAc,QAC1F,sBAAuB1D,EAAiCL,GAAS,uBAAyB,KAAOK,EAAK0D,GAAc,qBACpH,QAASzD,EAAiCN,GAAS,SAAW,KAAOM,EAAKyD,GAAc,OACxF,SAAUxD,EAAiCP,GAAS,UAAY,KAAOO,EAAKwD,GAAc,QAC1F,SAAUvD,EAAiCR,GAAS,UAAY,KAAOQ,EAAKuD,GAAc,QAC1F,YAAaE,EAAiCjE,GAAS,aAAe,KAAOiE,EAAKF,GAAc,UAClG,CACF,CACA,SAASG,GAAqB,CAC5B,QAAAC,EACA,cAAAC,EACA,YAAaC,EACb,MAAAC,EACA,KAAAC,EACA,QAASC,KACNC,CACL,EAAG,CACD,OAAOhD,EAAQ,QACb,IAAM,CACJ,IAAIxB,EACJ,MAAO,CACL,QAASqE,GAAwBN,GAAU,CACzC,GAAGS,EACH,SAAUxE,EAAKkE,GAA4BC,IAAkB,KAAOnE,EAAK,EACzE,qBAAAoE,CACF,CAAC,EACD,QAASG,GAA0CR,GAAU,CAC3D,QAASI,CACX,CAAC,EACD,KAAMG,GAAsBP,GAAU,CACxC,CACF,EACA,CAACQ,EAAgBC,EAAeH,EAAOC,EAAMJ,EAASC,EAAeC,CAAoB,CAC3F,CACF,CACA,SAASK,GAAqBrD,EAASC,EAAK,CAC1C,IAAMqD,EAAWT,GAAqB7C,CAAO,EACvCuD,EAASC,GAAY,IAAM9E,GAAa4E,EAAS,OAAO,CAAC,EACzDG,EAAYrD,EAAQ,OAAO,CAC/B,UAAW,GACX,qBAAsB,OACtB,gBAAiB,EACnB,CAAC,EACKsD,EAAYtD,EAAQ,OAAO,EAC3BuD,EAAevD,EAAQ,YAC3B,MAAO,CAAE,WAAAwD,KAAeC,CAAO,EAAGC,IAAgB,CAChD,IAAIlF,EACJ,IAAMmF,GAA0BnF,EAAKgF,GAAkCN,EAAS,QAAQ,aAAe,KAAO1E,EAAKoB,EAAQ,WAC3H,MAAM0D,EAAU,QAChBA,EAAU,QAAU,QAAQ,IAC1BjF,GAAiB,IAAKH,GAAS,CAC7B,IAAI0F,EACJ,OAAIF,GACFP,EAAOjF,GAAM,KAAK0F,EAAMV,EAAS,QAAQhF,KAAU,KAAO0F,EAAMtB,GAAcpE,EAAK,EAC9E,IAAI,QAAS2F,GAAY,CAC9B,IAAIC,EACJC,GAAQZ,EAAOjF,IAAQ4F,EAAML,EAAOvF,KAAU,KAAO4F,EAAMxB,GAAcpE,GAAO,CAC9E,UAAW,KACX,GAAGyF,EACH,WAAY,IAAME,EAAQ,CAC5B,CAAC,CACH,CAAC,CACH,CAAC,CACH,CACF,EACA,CAAC,CACH,EACMG,EAAsB,CAC1B,YAAa,CAAC,CAACpE,EAAQ,YACvB,UAAW,CACT,EAAGA,EAAQ,SACb,CACF,EACA,OAAAqE,GAAgBpE,EAAKmE,EAAsBE,GAAY,CACrD,GAAItE,EAAQ,SAAW,CAACA,EAAQ,yBAC9B,OACF,GAAM,CAAE,UAAAuE,EAAW,gBAAAC,CAAgB,EAAIf,EAAU,QACjD,GAAI,EAAAzD,EAAQ,aAAeyD,EAAU,QAAQ,kBAAoB,IAEjE,IAAIc,EAAW,CACbd,EAAU,QAAQ,qBAAuBa,EACzC,MACF,CACAb,EAAU,QAAQ,qBAAuB,OACzCA,EAAU,QAAQ,gBAAkBa,EAChCE,IAAoBF,GAExBX,EAAaW,EAAUhB,EAAS,QAAUA,EAAS,KAAMgB,CAAO,EAClE,CAAC,EACDlE,EAAQ,UAAU,IAAM,CACtB,GAAI,CAACJ,EAAQ,SAAW,CAACA,EAAQ,yBAC/B,OACF,IAAMyE,EAAc,CAAC,EACjBC,EAAc,UAClB,OAAOC,GAAO,CAAC,CAAE,EAAGrF,CAAQ,IAAM,CAChC,IAAIV,EACJ,GAAI,CAACoB,EAAQ,QACX,OACF,GAAM,CAAE,WAAA0B,EAAY,YAAAW,CAAY,EAAIH,GAClClC,EAAQ,UACNpB,EAAKoB,EAAQ,YAAc,KAAOpB,EAAK,GAAKU,EAAQ,gBACtD,CAAC,CAACU,EAAQ,IACZ,EACM4E,EAAUC,GAAUvF,EAAQ,QAASoC,EAAYW,CAAW,EAC9DrC,EAAQ,aAAeyE,EAAYG,KAEvCH,EAAYG,GAAW,GACnBF,IAAgBE,IAEpBF,EAAcE,EACdjB,EAAaL,EAASsB,EAAQ,GAChC,CAAC,CACH,EAAG,CAAC,CAAC,EACE,CACL,OAAArB,CACF,CACF,CAIA,IAAIuB,GAA4C,IAAI,IAAI,CACtD,6BACA,8BACA,mBACA,SACA,kBACF,CAAC,EACGC,GAAiB,CAACzD,EAAkBjB,IAAuB,CAC7D,IAAIzB,EAAIC,EACR,IAAMmG,GAAWpG,EAAyC0C,IAAiB,KAAO,KAAO,OAAS1C,EAAG,OACrG,OAAOF,GAAa2B,EAAqB,CAAE,SAAUxB,EAAgCmG,GAAQ,UAAY,KAAOnG,EAAK,CAAE,EAAImG,CAAO,CACpI,EACIC,GAAgB,KAAO,CACzB,QAAS,CAAC,EACV,EAAG,CAAC,EACJ,EAAG,CAAC,EACJ,MAAO,CAAC,EACR,OAAQ,CAAC,EACT,QAAS,CAAC,EACV,QAAS,CAAC,EACV,qBAAsB,CAAC,CACzB,GACA,SAASC,GAAwB3B,EAAQ4B,EAAS,CAChD,IAAMC,EAAUhF,EAAQ,OAAO,CAAC,CAAC,EACjCA,EAAQ,UAAU,IAAM,CACtB,GAAI+E,IAAY,OAEhB,QAAW7G,KAAQiF,EAAQ,CACzB,IAAM8B,EAAK9B,EAAOjF,GAClB+G,EAAG,OAAO,CAACC,EAAGC,IAAQ,CACpB,IAAMC,EAASJ,EAAQ,QAAQ9G,GAC/B,OAAIkH,GACFA,EAAO,KAAK,EACdJ,EAAQ,QAAQ9G,GAAQmH,GAAS,CAC/B,KAAMJ,EAAG,IAAI,EACb,GAAIC,EACJ,SAAUD,EAAG,YAAY,EACzB,GAAGF,EACH,UAAW,KACX,SAAUI,CACZ,CAAC,EACMF,EAAG,IAAI,CAChB,CAAC,CACH,CACF,EAAG,CAAC,KAAK,UAAUF,CAAO,CAAC,CAAC,CAC9B,CACA,SAASO,GAAwBpE,EAAkBC,EAAW,CAC5D,IAAMoE,EAAuBV,GAAc,EAQ3C,MAAO,CAAE,WAPU5D,GAA0BC,EAAkBC,EAAYI,GAAU,CACnF,IAAI/C,EAAIC,EAAIC,EAAIC,EAAIC,EACpB,IAAM4G,GAAkBhH,EAAK0C,EAAiBK,EAAQ,KAAO,KAAO,OAAS/C,EAAG,OAC1EiH,GAAiBhH,EAAKyC,EAAiBK,KAAW,KAAO,OAAS9C,EAAG,OAC3E,QAAWP,KAAQG,IAChBO,EAAK2G,EAAqBrH,KAAU,MAAgBU,EAAG,SAASF,EAAuC8G,IAAetH,KAAU,KAAOQ,EAAK,GAAIC,EAAsC8G,IAAcvH,KAAU,KAAOS,EAAK,CAAC,CAChO,CAAC,EACoB,qBAAA4G,CAAqB,CAC5C,CACA,SAASG,GAAsBxE,EAAkB,CAC/C,IAAI1C,EACJ,IAAMmH,EAAiBd,GAAc,EACrC,OAAW,CAAE,OAAApB,CAAO,IAAKvC,EACvB,QAAWhD,KAAQG,IAChBG,EAAKmH,EAAezH,KAAU,MAAgBM,EAAG,KAAKiF,EAAOvF,EAAK,EAEvE,OAAOyH,CACT,CACA,IAAIC,GAAiB,CAAC,EAAG,CAAC,EAC1B,SAASC,GAAkB,CACzB,iBAAAC,EACA,4BAAAC,EACA,iBAAA7E,EACA,OAAQ6D,EACR,2BAAAiB,EAA6B,CAC/B,EAAGnG,EAAK,CACN,IAAMI,EAAqBC,GAAuB,EAC5CiD,EAASC,GAAY,IAAMuB,GAAezD,EAAkBjB,CAAkB,CAAC,EACrF,OAAAD,EAAQ,gBAAgB,IAAM,CAC5B,IAAIxB,EACJ,GAAI,EAAAuH,IAAgC,IAAQ,CAAC7E,GAE7C,GAAI4E,IAAqB,iBAAkB,CACzC,IAAM7D,EAAcyD,GAAsBxE,CAAgB,EAC1D,OAAOqD,GACL,CAAC,CAAE,EAAGrF,CAAQ,IAAM,CAClB,QAAWhB,KAAQG,GACb4B,GAAsB/B,IAAS,WAEnCiF,EAAOjF,GAAM,IAAIuG,GAAUvF,EAAQ,SAAU0G,GAAgB3D,EAAY/D,EAAK,CAAC,CAEnF,EACA4H,IAAqB,WAAa,CAChC,QAAStH,EAAKqB,EAAI,UAAY,KAAOrB,EAAK,OAC1C,OAAQ,CAAC,YAAa,SAAS,CACjC,EAAI,MACN,CACF,KACE,QAAO+F,GAAO,CAAC,CAAE,EAAGrF,CAAQ,IAAM,CAChC,GAAM,CAAE,WAAY+G,EAAmB,qBAAAV,CAAqB,EAAID,GAC9DpE,EACA8E,EAA6B9G,EAAQ,eACvC,EACA,QAAWhB,KAAQG,GACb4B,GAAsB/B,IAAS,WAEnCiF,EAAOjF,GAAM,IAAIuG,GAAUvF,EAAQ,QAAS+G,EAAmBV,EAAqBrH,EAAK,CAAC,CAE9F,CAAC,CAEL,EAAG,CACD+B,EACA6F,EACAjG,EACAmG,EACAD,EACA5C,EACAjC,CACF,CAAC,EACD4D,GAAwB3B,EAAQ4B,CAAO,EAChC,CAAE,OAAA5B,CAAO,CAClB,CAGA,IAAI+C,GAAS,CACX,SAAUxG,GACV,YAAakC,GACb,eAAgB8C,EAClB,EACIyB,GAA8B,OAAO,KAAKD,EAAM,EACpD,SAASE,GAAgClI,EAAMmI,EAAQ,CACrD,MAAO,EAAEnI,KAAQmI,IAAWA,EAAOnI,KAAU,EAC/C,CACA,SAASoI,GAAiBC,EAAO,CAC/B,IAAMC,EAAS,CACb,SAAU,CAAC,EACX,YAAa,CAAC,EACd,eAAgB,CAAC,EACjB,eAAgB,CAAC,CACnB,EACA,QAAWtI,KAAQqI,EAAO,CACxB,IAAME,EAAcxI,GAA2BC,CAAI,EACnD,GAAIuI,GACF,QAAWC,KAASP,GAElB,GADcD,GAAOQ,GACX,IAAID,CAAW,EAAG,CAC1BD,EAAOE,GAAOD,GAAeF,EAAMrI,GACnC,KACF,OAGFsI,EAAO,eAAetI,GAAQqI,EAAMrI,EAExC,CACA,OAAAsI,EAAO,SAAS,yBAA2BJ,GACzC,2BACAI,EAAO,QACT,EACAA,EAAO,YAAY,yBAA2BJ,GAC5C,2BACAI,EAAO,WACT,EACOA,CACT,CACA,IAAIG,GAAQxD,GAAWA,EAAO,OAAO,CAACyD,EAAKC,IAAUD,GAAOC,EAAO,CAAC,EAChEC,GAAY3D,GAAWA,EAAO,OAAO,CAACyD,EAAKC,IAAUD,EAAMA,EAAMC,EAAO,CAAC,EACzEE,GAAUC,GAAgBhH,EAAQ,WAAW,CAACuG,EAAOU,IAAiB,CACxE,GAAIV,EAAM,SACR,OAAuBvG,EAAQ,cAAcgH,EAAa,CAAE,GAAGT,EAAO,IAAKU,CAAa,CAAC,EAC3F,IAAMC,EAAclH,EAAQ,OAAO,IAAI,EACjCH,EAAMoH,GAAsCC,EAC5C,CAAE,SAAAC,EAAW,CAAC,EAAG,YAAAC,EAAc,CAAC,EAAG,eAAAC,EAAiB,CAAC,EAAG,eAAAC,CAAe,EAAIhB,GAAiBC,CAAK,EACjGpD,EAASC,GAAY,IAAM,CAC/B,IAAI5E,EACJ,IAAMD,EAAW,CAAC,EAClB,GAAI,CAACgJ,GAAUD,EAAe,OAAO,EACnC,OAAOhJ,GAAa,EACtB,QAAWJ,KAAQoJ,EAAe,QAAS,CACzC,IAAIT,GAASrI,EAAK8I,EAAe,UAAY,KAAO,OAAS9I,EAAGN,GAC5DsJ,GAAcX,CAAK,IACrBA,EAAQA,EAAM,IAAI,GACfY,GAASZ,CAAK,IAEnBtI,EAASL,GAAQ2I,EACnB,CACA,OAAOvI,GAAaC,CAAQ,CAC9B,CAAC,EACK,CAAE,OAAQmJ,EAAgB,MAAOC,CAAc,EAAIhI,GAAYwH,EAAUtH,CAAG,EAC5E,CAAE,OAAQ+H,CAAiB,EAAI/B,GAAkBwB,EAAgBxH,CAAG,EACpE,CAAE,OAAQgI,CAAmB,EAAI5E,GAAqBmE,EAAavH,CAAG,EACtEiI,EAAStH,GAAa,CAAC2C,EAAO,MAAOyE,EAAiB,MAAOC,EAAmB,KAAK,EAAGf,EAAQ,EAChGpE,EAAUlC,GAAa,CAAC2C,EAAO,QAASyE,EAAiB,QAASC,EAAmB,OAAO,EAAGf,EAAQ,EACvGiB,EAAIvH,GAAa,CAAC2C,EAAO,EAAGyE,EAAiB,EAAGC,EAAmB,CAAC,EAAGlB,EAAI,EAC3EqB,EAAIxH,GAAa,CAAC2C,EAAO,EAAGyE,EAAiB,EAAGC,EAAmB,EAAGH,EAAe,CAAC,EAAGf,EAAI,EAC7FsB,EAASzH,GAAa,CAAC2C,EAAO,OAAQyE,EAAiB,OAAQC,EAAmB,MAAM,EAAGlB,EAAI,EAC/FuB,EAAU1H,GAAa,CAAC2C,EAAO,QAASyE,EAAiB,QAASC,EAAmB,OAAO,EAAGlB,EAAI,EACnGwB,EAAU3H,GAAa,CAAC2C,EAAO,QAASyE,EAAiB,QAASC,EAAmB,OAAO,EAAGlB,EAAI,EACnG/D,EAAuBpC,GAC3B,CACE2C,EAAO,qBACPyE,EAAiB,qBACjBC,EAAmB,oBACrB,EACAlB,EACF,EACA,OAAuB3G,EAAQ,cAC7BgH,EACA,CACE,GAAGM,EACH,SAAU,GACV,MAAO,CACL,GAAGf,EAAM,MACT,GAAGoB,EACH,QAAAjF,EACA,MAAOoF,EACP,EAAAC,EACA,EAAAC,EACA,OAAAC,EACA,QAAAC,EACA,QAAAC,EACA,qBAAAvF,CACF,EACA,OAAAO,EACA,IAAAtD,CACF,CACF,CACF,CAAC,EAID,IAAIuI,GAAwBC,GAGxBC,GAAkCC,GAAQC,GAAoC,EAAG,CAAC,EAoDtF,IAAIC,GAAyBC,GAAgBC,EAAQ,WAAW,CAACC,EAAOC,IAAQ,CAC9E,IAAMC,EAAWC,GAAYH,CAAK,EAClC,OAAuBD,EAAQ,cAAcD,EAAa,CAAE,SAAAI,EAAU,GAAGF,EAAO,YAAa,OAAQ,eAAgB,OAAQ,IAAAC,CAAI,CAAC,CACpI,CAAC,EAGGG,GAA4BL,EAAQ,WACtC,CAAC,CAAE,SAAAM,EAAU,SAAAH,KAAaF,CAAM,EAAGC,IAAQ,CACzC,IAAMK,EAAgBC,GAAY,IAAML,EAAW,GAAGA,cAAuB,MAAM,EACnF,OAAuBH,EAAQ,cAAcS,GAAO,IAAK,CAAE,SAAUF,EAAe,GAAGN,EAAO,IAAAC,CAAI,EAAmBF,EAAQ,cAAcU,GAA0B,SAAU,CAAE,MAAO,EAAK,EAAmBV,EAAQ,cAAcW,GAAoB,CAAE,QAAS,EAAM,EAAmBX,EAAQ,cAAcY,GAAa,CAAE,GAAIT,GAA8B,GAAI,QAAS,IAAK,EAAGH,EAAQ,SAAS,IAAIM,EAAWO,GACjZb,EAAQ,eAAea,CAAK,EAAIb,EAAQ,aAAaa,EAAO,CAAE,SAAAV,CAAS,CAAC,EAAIU,CACpF,CAAC,CAAC,CAAC,CAAC,CACP,CACF,EACIC,GAA4BhB,GAAsBO,EAAS,EAI3DU,GAAuB,4BACvBC,GAAa,UACbC,GAAgB,aAChBC,GAAsB,mBACtBC,GAAmB,gBACnBC,GAAY,oBAChB,SAASC,GAAiBC,EAAO,CAC/B,OAAOC,GAAUD,CAAK,GAAKA,EAAM,WAAW,QAAQF,IAAW,CACjE,CAcA,SAASI,GAAoBC,EAAM,CACjC,GAAKC,GAAiBD,CAAI,EAE1B,GAAI,CACF,IAAME,EAAM,IAAI,IAAIF,CAAI,EAClBG,EAASD,EAAI,SAAS,UAAUE,GAAU,MAAM,EAChDC,EAAaH,EAAI,aACjBI,EAAUD,EAAW,IAAIE,EAAU,EAAIF,EAAW,IAAIE,EAAU,EAAI,OACtEC,EACEC,EAAaJ,EAAW,IAAIK,EAAa,EACzCC,EAAmBN,EAAW,IAAIO,EAAmB,EACrDC,EAAqBR,EAAW,IAAIS,EAAgB,EAC1D,GAAIL,GAAcE,GAAoBE,EAAoB,CACxD,IAAME,EAAgB,OAAO,YAAY,IAAI,gBAAgBF,CAAkB,EAAE,QAAQ,CAAC,EAC1FL,EAAiB,CACf,WAAAC,EACA,iBAAAE,EACA,cAAAI,CACF,CACF,CACA,MAAO,CACL,OAAQZ,IAAW,OAAS,KAAOA,EACnC,QAASG,IAAY,OAAS,OAASA,EACvC,eAAAE,CACF,CACF,MAAE,CACA,MACF,CACF,CAIA,IAAIQ,GAAQ,+IACRC,GAAcC,GAAQA,EAAI,QAC5B,WACCC,IAAS,CACR,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACP,GAAGA,IAAQA,CACb,EACA,SAASC,GAAuBC,EAASC,EAAUC,EAAcC,EAAuB,CACtF,OAAOH,EAAQ,QACbL,GACA,CAACS,EAAUC,EAAMP,EAAKQ,EAAMC,EAAQC,EAAQC,IAAS,CACnD,IAAIC,EAAIC,EAAIC,EACZ,GAAId,EAAI,YAAY,IAAM,IACxB,OAAOM,EAET,IAAMS,EAAWC,IADJP,GAAUC,GACmB,QAAQ,SAAU,GAAG,CAAC,EAChE,GAAI,CAACK,GAAY,CAACA,EAAS,OACzB,OAAOT,EACT,IAAMW,EAAcd,EAASY,EAAS,MAAM,EAC5C,GAAI,CAACG,GAAQD,CAAW,GAAK,CAACC,GAAQd,CAAY,EAChD,OAAOE,EACT,IAAMa,EAAaF,EAAY,KACzBG,EAAchB,EAAa,KACjC,GAAI,CAACe,GAAc,CAACC,EAClB,OAAOd,EACT,IAAIe,EAAa,kCAAkDN,EAAS,UACtEO,EAAYC,GAAkBN,GAAcL,EAAKG,EAAS,UAAY,KAAOH,EAAK,MAAM,EAC1FU,IACFD,GAAc,mCAAsDN,EAAS,YAE3ES,GAAiBpB,EAAcW,EAAUV,CAAqB,IAChEgB,GAAc,kCAEhB,IAAII,EAAeN,EACbO,EAAgB,OAAO,OAAO,CAAC,EAAGrB,GAAwBQ,EAAKE,EAAS,iBAAmB,KAAO,OAASF,EAAG,aAAa,EAIjI,GAHI,OAAO,KAAKa,CAAa,EAAE,OAAS,IACtCD,EAAeA,EAAa,QAAQE,GAAsB,CAACC,EAAGC,IAAS,GAAKH,EAAcG,EAAK,IAE5Ff,EAAKC,EAAS,iBAAmB,MAAgBD,EAAG,cAAe,CACtE,IAAMgB,EAAS,IAAI,gBAAgBf,EAAS,eAAe,aAAa,EACxEM,GAAc,0CAAmES,IACnF,CACA,OAAAL,EAAeM,GAAoBX,EAAaK,CAAY,EACrDlB,EAAOC,EAAO,IAAIV,GAAW2B,GAAgBH,EAAY,IAAIA,IAAc,GAAG,KAAOD,EAAaV,CAC3G,CACF,CACF,CACA,SAASqB,GAAuBC,EAAUC,EAAS7B,EAAuB,CACxE,IAAIO,EAAIC,EAAIC,EACZ,IAAIqB,EAAUD,EAAQ,aAAa,8BAAyC,EACxEZ,EACAI,EACJ,GAAIS,EAAS,CACXb,GAAaV,EAAKsB,EAAQ,aAAa,+BAA6C,IAAM,KAAOtB,EAAK,OACtG,IAAMwB,EAAmBF,EAAQ,aAAa,sCAA0D,EACpGE,IACFV,EAAgB,OAAO,YAAY,IAAI,gBAAgBU,CAAgB,EAAE,QAAQ,CAAC,EAEtF,KAAO,CACL,IAAMC,EAAOH,EAAQ,aAAa,MAAM,EACxC,GAAI,CAACG,EACH,MAAO,GACT,IAAMC,EAAOtB,GAAoBqB,CAAI,EACrC,GAAI,CAACC,GAAQ,CAACA,EAAK,OACjB,MAAO,GACTH,EAAUG,EAAK,OACfhB,GAAaT,EAAKyB,EAAK,UAAY,KAAOzB,EAAK,OAC/Ca,GAAiBZ,EAAKwB,EAAK,iBAAmB,KAAO,OAASxB,EAAG,aACnE,CACA,IAAMyB,EAAejB,EAAYY,EAAQ,QAAQ,qBAAuB,OAAS,OACjF,OAAAD,EAASE,EAASb,EAAW,OAAO,OAAO,CAAC,EAAGjB,EAAuBqB,CAAa,EAAGa,CAAY,EAC3F,EACT,CACA,IAAIC,GAAuBC,EAAQ,cAAc,MAAM,EACvD,SAASjB,GAAiBkB,EAAOJ,EAAMjC,EAAuB,CAC5D,IAAIO,EAGJ,GAFI0B,EAAK,SAAWI,EAAM,IAEtBJ,EAAK,QACP,MAAO,GACT,GAAII,EAAM,MAAQA,EAAM,cAAe,CACrC,IAAMhB,EAAgB,OAAO,OAAO,CAAC,EAAGrB,GAAwBO,EAAK0B,EAAK,iBAAmB,KAAO,OAAS1B,EAAG,aAAa,EAC7H,OAAW,CAAC,CAAEiB,CAAI,IAAKa,EAAM,KAAK,SAASf,EAAoB,EAG7D,GAFI,CAACE,GAEDa,EAAM,cAAcb,KAAUH,EAAcG,GAC9C,MAAO,EAGb,CACA,MAAO,EACT,CAWA,SAASc,IAA2B,CAClC,IAAIC,EACJ,IAAMC,EAAuBC,EAAQ,WAAWC,EAAoB,EAC9DC,GAAwBJ,EAAKK,GAAgB,IAAM,KAAO,OAASL,EAAG,cAE5E,OADsBC,GAAwBG,CAEhD,CAIA,IAAIE,GAA4CJ,EAAQ,cACtD,MACF,EAMA,SAASK,GAAkBC,EAAQC,EAAe,CAChD,OAAID,aAAkB,kBACbA,EAELA,aAAkB,QAChBA,IAAWC,EACN,KAEFF,GAAkBC,EAAO,cAAeC,CAAa,EAEvD,IACT,CAGA,SAASC,GAAcC,EAAM,CAC3B,OAAIA,IAAS,OACJ,GACL,GAAAA,EAAK,WAAW,GAAG,GAAKA,EAAK,WAAW,GAAG,GAAKA,EAAK,WAAW,GAAG,EAGzE,CACA,SAASC,GAAWD,EAAME,EAAY,CACpC,GAAI,CACF,IAAMC,EAAM,IAAI,IAAIH,CAAI,EACxB,OAAO,QAAQG,EAAI,QAAQ,CAC7B,MAAE,CACF,CACA,OAAOD,CACT,CAMA,SAASE,GAAmBC,EAAcC,EAAY,CACpD,OAAID,IAAiB,OACZA,EAAe,SAAwB,OAEzCC,EAAa,OAAS,QAC/B,CACA,SAASC,GAAaC,EAAMH,EAAe,OAAQ,CACjD,IAAMC,EAAaG,GAAcD,CAAI,EAC/BE,EAAeN,GAAmBC,EAAcC,CAAU,EAChE,MAAO,CACL,KAAMK,GAAWH,EAAMF,CAAU,EAAIE,EAAO,WAAWA,IACvD,OAAQE,EACR,IAAMJ,EAAqC,OAAxB,qBACrB,CACF,CACA,SAASM,GAAyBC,EAAQC,EAASC,EAAWC,EAAuBC,EAAc,CACjG,OAAQC,GAAU,CAChB,IAAIC,EACJ,GAAID,EAAM,QACR,OACF,IAAME,EAAgBC,GAAkBH,EAAM,MAAM,EAChD,CAACE,GAAiBA,EAAc,aAAa,QAAQ,IAAM,WAE/DF,EAAM,eAAe,GACpBC,EAAKN,EAAO,WAAa,MAAgBM,EAAG,KAAKN,EAAQC,EAASC,EAAWC,EAAuBC,CAAY,EACnH,CACF,CACA,SAASK,GAAkBd,EAAMH,EAAcQ,EAAQU,EAAcC,EAAuBP,EAAc,CACxG,IAAMX,EAAaG,GAAcD,CAAI,EACrC,GAAI,CAACK,EAAO,QAAU,CAACA,EAAO,UAAY,CAACU,GAAgB,CAACjB,EAC1D,OAAOC,GAAaC,EAAMH,CAAY,EAExC,GAAI,CACF,GAAM,CAACoB,EAAUC,CAAK,EAAIlB,EAAK,MAAM,IAAK,CAAC,EAC3CmB,GAAOF,IAAa,OAAQ,sCAAsC,EAClE,GAAM,CAAE,QAAAX,EAAS,cAAAc,CAAc,EAAIC,GAA0BhB,EAAO,OAAQY,CAAQ,EAC9EK,EAAQjB,EAAO,SAASC,CAAO,EACrC,GAAIgB,EAAO,CACTC,GAAiBD,EAAM,IAAI,EAC3B,IAAMf,EAAYW,GAAS,OACrBV,EAAwB,OAAO,OAAO,CAAC,EAAGQ,EAAuBI,CAAa,EAC9EI,EAAOC,GAAgBH,EAAO,CAClC,iBAAkBP,EAAa,KAC/B,UAAAR,EACA,cAAeC,CACjB,CAAC,EACKN,EAAeN,GAAmBC,EAAc,EAAI,EAC1D,MAAO,CACL,KAAM2B,EACN,OAAQtB,EACR,QAASE,GAAyBC,EAAQC,EAASC,EAAWC,EAAuBC,CAAY,CACnG,CACF,CACF,MAAE,CACF,CACA,OAAOV,GAAaC,EAAMH,CAAY,CACxC,CACA,IAAI6B,GAAuBC,EAAQ,WACjC,CAAC,CAAE,SAAAC,EAAU,KAAA5B,EAAM,aAAAH,EAAc,aAAAY,KAAiBoB,CAAU,EAAGC,IAAiB,CAC9E,IAAMzB,EAAS0B,GAAU,EACnBhB,EAAeiB,GAAgB,EAC/BhB,EAAwBiB,GAAyB,EACjDC,EAAQP,EAAQ,QAAQ,IAAM,CAClC,IAAIhB,EAAIwB,EAAIC,EACZ,GAAI,CAACpC,EACH,MAAO,CAAC,EACV,IAAMqC,EAAWC,GAAoBtC,CAAI,EACzC,GAAI,CAACqC,EACH,OAAOvB,GAAkBd,EAAMH,EAAcQ,EAAQU,EAAcC,EAAuBP,CAAY,EAExG,GAAI,CAAC4B,EAAS,OACZ,MAAO,CAAC,EAEV,IAAM/B,EAAU+B,EAAS,OACnB9B,GAAaI,EAAK0B,EAAS,UAAY,KAAO1B,EAAK,OACnDW,GAASa,EAAK9B,EAAO,WAAa,KAAO,OAAS8B,EAAG,KAAK9B,EAAQC,CAAO,EAC3EgB,GACFC,GAAiBD,EAAM,IAAI,EAC7B,IAAMF,EAAgB,OAAO,OAAO,CAAC,EAAGJ,GAAwBoB,EAAKC,EAAS,iBAAmB,KAAO,OAASD,EAAG,aAAa,EAC3HlC,EAAeN,GAAmBC,EAAc,EAAI,EAC1D,MAAO,CACL,KAAM4B,GAAgBH,EAAO,CAC3B,iBAAkDP,GAAa,KAC/D,UAAAR,EACA,cAAAa,CACF,CAAC,EACD,OAAQlB,EACR,QAASE,GAAyBC,EAAQC,EAASC,EAAWa,EAAeX,CAAY,EACzF,gCAAiCM,GAAgBwB,GAAiBxB,EAAcsB,EAAUrB,CAAqB,GAAK,MACtH,CACF,EAAG,CAACD,EAAcf,EAAMH,EAAcmB,EAAuBX,EAAQI,CAAY,CAAC,EAClF,GAAI,CAACmB,EACH,OAAO,KACT,IAAMY,EAAQb,EAAQ,SAAS,KAAKC,CAAQ,EAC5C,OAAKD,EAAQ,eAAea,CAAK,EAE1Bb,EAAQ,aAAaa,EAAO,CAAE,GAAGX,EAAW,GAAGK,EAAO,IAAKJ,GAAsCD,EAAU,GAAI,CAAC,EAD9G,IAEX,CACF,EACA,SAASY,GAAYzC,EAAMK,EAAQW,EAAuB,CACxD,IAAIL,EAAIwB,EACR,IAAME,EAAWC,GAAoBtC,CAAI,EACzC,GAAI,CAACqC,GAAY,CAACA,EAAS,OACzB,OAAOtC,GAAaC,CAAI,EAAE,KAC5B,GAAI,CAACK,EAAO,UAAY,CAACA,EAAO,eAC9B,OAAOL,EACT,IAAMe,EAAeV,EAAO,SAASA,EAAO,cAAc,EACpDC,EAAU+B,EAAS,OACnB9B,GAAaI,EAAK0B,EAAS,UAAY,KAAO1B,EAAK,OACnDW,EAAQjB,EAAO,SAASC,CAAO,EAC/Bc,EAAgB,OAAO,OAC3B,CAAC,EACDf,EAAO,qBACPW,GACCmB,EAAKE,EAAS,iBAAmB,KAAO,OAASF,EAAG,aACvD,EACA,OAAOV,GAAgBH,EAAO,CAAE,iBAAkDP,GAAa,KAAM,UAAAR,EAAW,cAAAa,EAAe,SAAU,EAAM,CAAC,CAClJ,CAGA,IAAIsB,GAAqB,KAAM,CAC7B,aAAc,CACZ,KAAK,QAA0B,IAAI,GACrC,CACA,IAAIpC,EAAS,CACX,OAAO,KAAK,QAAQ,IAAIA,CAAO,CACjC,CACA,IAAIqC,EAAQC,EAAMC,EAAOC,EAAa,CACpC,IAAMC,EAAY,KAAK,QAAQ,IAAIJ,CAAM,EACzC,OAAQC,EAAM,CACZ,IAAK,oBAAqB,CACxBzB,GAAO,OAAO0B,GAAU,SAAU,iDAAiDA,GAAO,EACtFE,EACFA,EAAU,kBAAoBF,EAE9B,KAAK,QAAQ,IAAIF,EAAQ,CAAE,kBAAmBE,CAAM,CAAC,EAEvD,KACF,CACA,IAAK,UACL,IAAK,UAAW,CACd1B,GAAO,OAAO0B,GAAU,SAAU,GAAGD,uCAA0CC,GAAO,EAClFE,GACFA,EAAUH,GAAQC,EACbE,EAAU,cACbA,EAAU,YAAcD,IAG1B,KAAK,QAAQ,IAAIH,EAAQ,CAAE,CAACC,GAAOC,EAAO,YAAAC,CAAY,CAAC,EAEzD,KACF,CACA,QACE,KACJ,CACF,CACA,OAAQ,CACN,KAAK,QAAQ,MAAM,CACrB,CACA,UAAW,CACT,OAAO,OAAO,YAAY,KAAK,OAAO,CACxC,CACF,EACIE,GAAsC,IAAIN,GAO9C,IAAIO,GAAqC,iCAUzC,IAAIC,GAAoB,wBACpBC,GAAiC,+BAIrC,SAASC,GAAS,CAChB,cAAAC,EACA,UAAAC,EACA,QAAAC,EACA,cAAAC,EACA,OAAAC,EACA,aAAAC,EACA,gBAAAC,EAAkB,GAClB,oBAAAC,EAAsB,EACxB,EAAG,CAMD,GALAC,EAAQ,UAAU,IAAM,CAClBP,GAEJQ,GAAS,MAAM,CACjB,EAAG,CAAC,CAAC,EACDR,EACF,OAAuBO,EAAQ,cAAcE,GAAc,CAAE,cAAeJ,EAAkB,OAAS,OAAQ,EAAmBE,EAAQ,cACxIG,GACA,CACE,aAAcT,EACd,qBAAsBC,EACtB,OAAAC,EACA,aAAAC,EACA,iBAAkB,CAAE,UAAW,OAAQ,MAAO,MAAO,CACvD,CACF,CAAC,EACI,CACL,IAAMO,EAAUL,EAAsBM,GAAeL,EAAQ,SAC7D,OAAuBA,EAAQ,cAAcI,EAAS,KAAsBJ,EAAQ,cAAcM,GAAgB,CAAE,OAAAV,CAAO,EAAmBI,EAAQ,cAAcO,GAAmB,KAAsBP,EAAQ,cAAcR,EAAe,CAAE,IAAKE,CAAQ,CAAC,CAAC,CAAC,CAAC,CACvQ,CACF,CAUA,IAAIc,GAAoCR,EAAQ,cAAc,MAAM,EAGpE,GAAIS,GAAW,EACb,QAAWC,KAAQ,SAAS,iBAAiB,4BAA4B,EACvE,SAAS,KAAK,YAAYA,CAAI,EAGlC,IAAIC,GAAoB,CAAE,sBAAuB,EAAK,EAClDC,GAAU,CAACC,EAAaC,IAAed,EAAQ,WAAW,CAACe,EAAOC,IAAQ,CAC5E,IAAIC,EACJ,GAAM,CAAE,MAAAC,EAAO,MAAOC,CAAO,GAAKF,EAAKjB,EAAQ,WAAWQ,EAAiB,IAAM,KAAOS,EAAK,CAAC,EAC9F,GAAI,CAACR,GAAW,EAAG,CACjB,IAAMW,EAAkB,MAAM,QAAQN,CAAU,EAAIA,EAAW,KAAK;AAAA,CAAI,EAAIA,EAC5E,OAAuBd,EAAQ,cAAcA,EAAQ,SAAU,KAAsBA,EAAQ,cAAc,QAAS,CAAE,GAAGW,GAAmB,wBAAyB,CAAE,OAAQS,CAAgB,CAAE,CAAC,EAAmBpB,EAAQ,cAAca,EAAa,CAAE,GAAGE,EAAO,IAAAC,CAAI,CAAC,CAAC,CAC5Q,CACA,IAAMK,EAAkBrB,EAAQ,OAAO,EAAK,EAC5C,OAAKqB,EAAgB,WACP,MAAM,QAAQP,CAAU,EAAIA,EAAaA,EAAW,MAAM;AAAA,CAAI,GACtE,QAASQ,GAASA,GAAQC,GAAcD,EAAMJ,EAAOC,CAAM,CAAC,EAChEE,EAAgB,QAAU,IAELrB,EAAQ,cAAca,EAAa,CAAE,GAAGE,EAAO,IAAAC,CAAI,CAAC,CAC7E,CAAC,EAGGQ,GAA2CxB,EAAQ,cAAc,MAAM,EACvEyB,GAAsB,cAC1B,SAASC,GAA2BC,EAAUZ,EAAOC,EAAK,CACxD,OAAuBhB,EAAQ,cAAcA,EAAQ,SAAU,KAAMA,EAAQ,SAAS,IAAI2B,EAAWC,GAAU,CAC7G,IAAIX,EACJ,MAAI,CAACW,GAAS,CAACC,GAAaD,CAAK,GAAK,CAACE,GAAeF,CAAK,EAClD,KACF5B,EAAQ,aAAa4B,EAAO,CAAE,GAAGb,EAAO,KAAME,EAAKF,EAAM,MAAQ,KAAOE,EAAKD,CAAI,CAAC,CAC3F,CAAC,CAAC,CACJ,CACA,SAASe,GAA4CC,EAAWL,EAAUZ,EAAOC,EAAKiB,EAAmBC,EAAkBC,EAAgBC,EAAM,CAC/I,IAAMC,EAAgBrC,EAAQ,SAAS,QAAQ2B,CAAQ,EACjDC,EAAQS,EAAc,GAC5B,GAAIA,EAAc,SAAW,GAAK,CAACrC,EAAQ,eAAe4B,CAAK,EAC7D,eAAQ,KAAKQ,EAAO,mDAAoDT,CAAQ,EACzED,GAA2BC,EAAUZ,EAAOC,CAAG,EAExD,IAAMsB,EAAW,CAAC,EACZC,EAAwB,CAAC,EAC/B,OAAW,CAACC,CAAS,IAAK,OAAO,QAAQP,CAAiB,EAAG,CAC3D,GAAIO,IAAcN,EAChB,SACF,IAAMO,EAAgBT,EAAUQ,GAChC,GAAI,CAACC,GAAiB,CAACC,GAAqCd,EAAM,MAAOa,CAAa,EAAG,CACvFF,EAAsB,KAAKC,CAAS,EACpC,QACF,CACA,IAAMG,EAAoBC,GAAa,CAACJ,CAAS,EAAGL,CAAc,EAC9DQ,EAAkB,QACpBL,EAAS,KAAK,CAAE,SAAUK,EAAmB,cAAAF,CAAc,CAAC,CAChE,CACA,GAAIH,EAAS,SAAW,EACtB,OAAOtC,EAAQ,aAAa4B,EAAO,CAAE,GAAGb,EAAO,IAAAC,CAAI,CAAC,EACtD,IAAM6B,EAAoB,CAACX,EAAkB,GAAGK,CAAqB,EAC/DO,EAA6BF,GAAaC,EAAmBV,CAAc,EACjF,OAAIW,EAA2B,QAC7BR,EAAS,QAAQ,CAAE,SAAUQ,CAA2B,CAAC,EACpC9C,EAAQ,cAAcA,EAAQ,SAAU,KAAM,CAACmC,GAAkCnC,EAAQ,cAAc,QAAS,CAAE,GAAGW,EAAkB,EAAG,IAAIc,0BAA2C,EAAGa,EAAS,IAAI,CAAC,CAAE,SAAAS,EAAU,cAAAN,CAAc,IAAM,CAC/P,IAAMO,EAAOD,EAAS,KAAK,GAAG,EAC1BE,EAA0BjD,EAAQ,cAAcwB,GAAyB,SAAU,CAAE,IAAKwB,EAAM,MAAO,IAAI,IAAID,CAAQ,CAAE,EAAG/C,EAAQ,aAAa4B,EAAO,CAAE,GAAGb,EAAO,GAAG0B,EAAe,IAAAzB,CAAI,CAAC,CAAC,EAC1LkC,EAAmBC,GAAyBJ,EAAUZ,EAAgBF,CAAiB,EAC7F,OAAIiB,EAAiB,QACnBE,GAAOd,EAAS,OAAS,EAAG,iDAAiD,EAC7EW,EAA0BjD,EAAQ,cAAc,MAAO,CAAE,IAAKgD,EAAM,UAAW,GAAGvB,MAAuByB,EAAiB,KAAK,GAAG,GAAI,EAAGD,CAAO,GAEhJG,GAAOd,EAAS,SAAW,EAAG,kDAAkD,EAE3EW,CACT,CAAC,CAAC,CACJ,CAgCA,SAASI,GAAyBC,EAAsBC,EAAgBC,EAAmB,CACzF,IAAMC,EAAa,CAAC,EACpB,OAAW,CAACC,EAAWC,CAAgB,IAAK,OAAO,QAAQH,CAAiB,EAAG,CAC7E,IAAMI,EAAwBL,GAAkB,CAACA,EAAe,IAAIG,CAAS,EAC7E,GAAIJ,EAAqB,SAASI,CAAS,GAAKE,EAC9C,SACF,IAAMC,EAAcF,EAAiB,MAAM,GAAG,EAAE,GAChDF,EAAW,KAAK,UAAUI,GAAa,CACzC,CACA,OAAOJ,CACT,CACA,SAASK,GAAaC,EAAUR,EAAgB,CAC9C,OAAKA,EAEEQ,EAAS,OAAQC,GAAYT,EAAe,IAAIS,CAAO,CAAC,EADtDD,CAEX,CACA,SAASE,GAAqCC,EAAM,CAClD,OAAQA,EAAM,CACZ,IAAK,oBACH,MAAO,GACT,QACE,MAAO,EACX,CACF,CACA,SAASC,GAAqCC,EAAOC,EAAe,CAClE,QAAWH,KAAQ,OAAO,KAAKG,CAAa,EAC1C,GAAI,CAAAJ,GAAqCC,CAAI,GAEzC,CAACI,GAAQF,EAAMF,GAAOG,EAAcH,GAAO,EAAI,EACjD,MAAO,GAGX,MAAO,EACT,CACA,SAASK,GAAmBP,EAASI,EAAOI,EAAW,CACrD,MAAI,CAACA,GAAa,CAACR,EACVI,EACF,CAAE,GAAGA,EAAO,GAAGI,EAAUR,EAAS,CAC3C,CACA,IAAIS,GAAoCC,EAAQ,WAC9C,SAA4B,CAAE,WAAAC,EAAY,UAAAH,EAAW,SAAAI,KAAaR,CAAM,EAAGS,EAAK,CAC9E,GAAIC,GAAW,EACb,OAAOC,GAA2BH,EAAUL,GAAmBI,EAAYP,EAAOI,CAAS,EAAGK,CAAG,EAEnG,IAAMG,EAA4BN,EAAQ,WAAWO,EAAyB,EAC9E,GAAI,CAACD,EACH,eAAQ,KAAK,wDAAwD,EAC9DD,GAA2BH,EAAUR,EAAOS,CAAG,EAExD,GAAM,CAAE,iBAAAK,EAAkB,kBAAA1B,CAAkB,EAAIwB,EAC1CzB,EAAiBmB,EAAQ,WAAWS,EAAwB,EAClE,OAAOC,GACLZ,EACAI,EACAR,EACAS,EACArB,EACA0B,EACA3B,EACA,mBACF,CACF,CACF,EAIA,SAAS8B,GAAcC,EAAeC,EAAiB,CACrDD,EAAc,QAASE,GAAM,aAAaA,CAAC,CAAC,EAC5CF,EAAc,MAAM,EACpBC,EAAgB,QAASE,GAAWA,GAAUA,EAAO,sCAAsC,CAAC,EAC5FF,EAAgB,MAAM,CACxB,CACA,SAASG,IAAY,CACnB,OAAuB,IAAI,GAC7B,CACA,SAASC,GAAyBC,EAAa,CAC7C,IAAML,EAAkBM,GAAYH,EAAS,EACvCJ,EAAgBO,GAAYH,EAAS,EAC3C,OAAAI,GAAyB,IAChB,IAAMT,GAAcC,EAAeC,CAAe,CAC1D,EACDb,EAAQ,UAAU,IACT,IAAMW,GAAcC,EAAeC,CAAe,EACxD,CAACA,EAAiBD,CAAa,CAAC,EACnCZ,EAAQ,UAAU,IAAM,CACtBW,GAAcC,EAAeC,CAAe,CAC9C,EAAG,CAACK,EAAaL,EAAiBD,CAAa,CAAC,EACzCZ,EAAQ,OAAO,CACpB,sBAAwBqB,GAAa,IAAIC,IAChC,IAAI,QAAQ,CAACC,EAASR,KAC3BF,EAAgB,IAAIE,CAAM,EACnBM,EAAS,GAAGC,CAAI,EAAE,KAAKC,CAAO,EACtC,EAAE,MAAM,IAAM,CACf,CAAC,EAEH,MAAO,MAAOF,EAAUG,IAAY,CAClC,MAAM,IAAI,QAASD,GAAYX,EAAc,IAAI,WAAW,WAAW,IAAMW,EAAQ,EAAI,EAAGC,CAAO,CAAC,CAAC,EACrGH,EAAS,CACX,CACF,CAAC,EAAE,OACL,CAWA,SAASI,GAAmBC,EAAaC,EAAgBC,EAAc,CACrE,OAAOC,EAAQ,YACZC,GAAO,CACN,IAAIC,EAAIC,EAAIC,EACZ,OAAKL,EAEAF,EAEDC,EACK,OAAO,OAAO,CAAC,GAAII,EAAKH,EAAaF,KAAiB,KAAO,OAASK,EAAGD,IAAME,EAAKJ,EAAaD,KAAoB,KAAO,OAASK,EAAGF,EAAG,IAE3IG,EAAKL,EAAaF,KAAiB,KAAO,OAASO,EAAGH,KAAQ,CAAC,EAJ/D,CAAC,EAFD,CAAC,CAOZ,EACA,CAACJ,EAAaC,EAAgBC,CAAY,CAC5C,CACF,CAkBA,SAASM,GAA2BC,EAAc,CAChD,OAAW,CAACC,EAASC,CAAK,IAAK,OAAO,QAAQF,CAAY,EAExD,GADYG,GAAW,WAAWD,CAAK,EAC/B,QACN,OAAOD,CAEb,CACA,SAASG,GAA8BC,EAASL,EAAcM,EAAsB,GAAM,CACxF,IAAIC,EACJ,IAAMC,EAAsBC,EAAaC,EAA0B,EAC7DC,EAAcC,EAAQC,GAAW,IAAKN,EAAKR,GAA2BC,CAAY,IAAM,KAAOO,EAAeF,CAAO,EACrHS,EAAmBF,EAAQN,GAAuBE,EAAsBH,EAAUM,EAAY,OAAO,EACrGI,EAAcC,GAAgB,EAC9BC,EAAoBC,GAAqB,EACzCC,EAA0BC,GAC7BnB,GAAY,EACPA,IAAYU,EAAY,SAAWV,IAAYa,EAAiB,UAClEG,EAAkB,IAAM,CACtBN,EAAY,QAAUG,EAAiB,QAAUb,EACjDc,EAAY,CACd,CAAC,CACL,EACA,CAACE,EAAmBF,CAAW,CACjC,EACA,OAAAM,GAA2B,IAAM,CAC3B,CAACf,GAAuBE,IAAwB,IAEpDW,EAAwBR,EAAY,OAAO,CAC7C,EAAG,CAAC,CAAC,EACLW,EAAW,IAAM,CACf,IAAMC,EAAa,CAAC,EACpB,OAAW,CAACtB,EAASC,CAAK,IAAK,OAAO,QAAQF,CAAY,EAAG,CAC3D,IAAMwB,EAAMrB,GAAW,WAAWD,CAAK,EACjCuB,EAAYC,GAAU,CACtBA,EAAM,SACRP,EAAwBlB,CAAO,CACnC,EACA0B,GAAeH,EAAKC,CAAQ,EAC5BF,EAAW,KAAK,CAACC,EAAKC,CAAQ,CAAC,CACjC,CACA,MAAO,IAAMF,EAAW,QAAQ,CAAC,CAACC,EAAKC,CAAQ,IAAMG,GAAkBJ,EAAKC,CAAQ,CAAC,CACvF,EAAG,CAACzB,EAAcmB,CAAuB,CAAC,EACnC,CAACR,EAAY,QAASG,EAAiB,OAAO,CACvD,CACA,SAASa,GAAeH,EAAKC,EAAU,CACjCD,EAAI,iBACNA,EAAI,iBAAiB,SAAUC,CAAQ,EAEvCD,EAAI,YAAYC,CAAQ,CAE5B,CACA,SAASG,GAAkBJ,EAAKC,EAAU,CACpCD,EAAI,oBACNA,EAAI,oBAAoB,SAAUC,CAAQ,EAE1CD,EAAI,eAAeC,CAAQ,CAE/B,CAMA,SAASI,GAA6BC,EAASC,EAAcC,EAAmB,CAC9E,IAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACpB,IAAMC,GAAiBL,EAAKM,GAA2BR,CAAY,IAAM,KAAOE,EAAKH,EAC/EU,GAAqBN,EAAKF,EAAkBM,KAAmB,KAAO,OAASJ,EAAG,MAAM,GAAG,EAAE,GACnG,GAAIM,EACF,QAAWC,KAAe,SAAS,iBAAiB,WAAWD,GAAmB,GAC/EL,EAAKM,EAAY,aAAe,MAAgBN,EAAG,YAAYM,CAAW,EAG/E,QAAWC,KAAc,SAAS,iBAAiB,IAAIC,IAAqB,EAC1E,GAAID,EAAW,kBAAoB,EAAG,CACpC,QAAQ,KAAK,mEAAoEA,CAAU,EAC3F,QACF,MAAWA,EAAW,oBAAsB,GACzCN,EAAKM,EAAW,aAAe,MAAgBN,EAAG,aAAaM,EAAW,WAAYA,CAAU,GAEhGL,EAAKK,EAAW,aAAe,MAAgBL,EAAG,YAAYK,CAAU,EAG7E,QAAWE,KAAS,SAAS,iBAAiB,8BAA8B,EAAG,CAC7E,IAAMC,EAAgBD,EAAM,aAAa,4BAA4B,EACjEC,IAAkB,GACpBD,EAAM,gBAAgB,OAAO,EAE7BA,EAAM,aAAa,QAASC,CAAa,EAE3CD,EAAM,gBAAgB,4BAA4B,CACpD,CACF,CAIA,SAASE,GAAcC,EAAYC,EAAW,CAC5C,OAAOC,EAAS,IAAM,CAIpB,GAHI,CAAC,MAAM,QAAQF,CAAU,GAGzB,CAACC,EACH,OAAO,KAET,IAAME,EAAaH,EAAW,KAAMI,GAC3B,OAAO,QAAQH,CAAS,EAAE,MAAM,CAAC,CAACI,EAAMC,CAAK,IAAM,CACxD,IAAMC,EAAcH,EAAOC,GAC3B,OAAIC,IAAU,QAAUC,IAAgB,QAAUC,GAAUF,CAAK,GAAKE,GAAUD,CAAW,EAClF,GAEF,OAAOD,CAAK,IAAM,OAAOC,CAAW,CAC7C,CAAC,CACF,EACD,OAAOJ,GAAkC,IAC3C,EAAG,CAACH,EAAYC,CAAS,CAAC,CAC5B,CAmNA,SAASQ,IAAsB,CAC7B,OAAOC,GAAa,QAAQ,IAAM,QACpC,CAmBA,SAASC,GAAmBC,EAAKC,EAAS,CACxC,GAAID,EAAIC,GACN,OAAOD,EAAIC,GACb,GAAI,EAAAA,KAAWD,GAEf,OAAOA,EAAI,OACb,CACA,SAASE,GAAmBD,EAASE,EAAa,CAEhD,GADyBC,GAAoB,EAE3C,OACF,IAAMC,EAAoBC,EAAQ,OAAO,EAAI,EACvCC,EAAiBD,EAAQ,OAAOH,CAAW,EACjDK,GAAyB,CAACC,EAAWC,IAAgB,CACnD,IAAMC,EAAiBF,GAAa,CAACC,EACrC,GAAI,CAACL,EAAkB,SAAWM,EAAgB,CAChD,IAAMC,EAAWb,GAAmBQ,EAAe,QAASN,CAAO,EAC/DW,GACFA,EAAS,CACb,CACAP,EAAkB,QAAUM,CAC9B,EAAG,CAAC,CAAC,EACLL,EAAQ,UAAU,IAAM,CACtB,GAAID,EAAkB,QAAS,CAC7B,IAAMO,EAAWb,GAAmBQ,EAAe,QAASN,CAAO,EAC/DW,GACFA,EAAS,CACb,CACF,EAAG,CAACX,CAAO,CAAC,CACd,CAOA,SAASY,IAAkB,CACzB,GAAM,CAACC,EAAaC,CAAc,EAAIC,EAAQ,SAAS,EAAK,EACtDC,EAAWD,EAAQ,YAAaE,GAAS,CACzCA,EACF,SAAS,gBAAgB,MAAM,YAAY,WAAY,QAAQ,EAE/D,SAAS,gBAAgB,MAAM,eAAe,UAAU,EAE1DH,EAAeG,CAAI,CACrB,EAAG,CAAC,CAAC,EACL,OAAAF,EAAQ,UACN,IAAM,IAAM,CACV,SAAS,gBAAgB,MAAM,eAAe,UAAU,CAC1D,EACA,CAAC,CACH,EACO,CAACF,EAAaG,CAAQ,CAC/B,CAsFA,SAASE,GAAqBC,EAASC,EAAM,CAC3C,MAAO,GAAGD,KAAWC,GACvB,CACA,SAASC,GAAYC,EAAaC,EAAgB,CAEhD,IAAIC,EADUF,EAAY,QAAQC,CAAc,EACxB,EACpBC,GAAaF,EAAY,SAC3BE,EAAY,GAEd,IAAMC,EAAeH,EAAYE,GACjC,OAAAE,GAAOD,IAAiB,OAAQ,+BAA+B,EACxDA,CACT,CACA,SAASE,GAAiBC,EAAaT,EAAS,CAC9C,GAAKS,EAEL,IAAIT,EAAS,CACX,IAAMU,EAAoBD,EAAYT,GACtC,GAAIU,EACF,OAAOA,CACX,CACA,OAAOD,EAAY,QACrB,CAKA,SAASE,GAAWC,EAAiBC,EAAWC,EAAW,CACzD,GAAM,CAAE,MAAAC,EAAO,QAAAC,CAAQ,EAAIJ,GAAmB,CAAC,EAC/C,GAAII,GAAWF,EACb,MAAO,UACT,GAAIC,GAASF,EACX,MAAO,OACX,CACA,SAASI,GAAuBC,EAAaC,EAAmB,CAC9D,IAAMC,EAAkBD,EAAkBD,GAC1C,OAAIE,GAEG,YAA+BF,GACxC,CACA,SAASG,GAAgBC,EAAeC,EAAiBC,EAAmB,CAC1E,OAAKF,GAEDE,EAAkB,IAAIF,CAAa,EAC9BA,EAFAC,CAIX,CACA,IAAIE,GAAoC,OAAO,OAAO,EACtD,SAASC,GAAgB,CACvB,QAAAC,EACA,eAAgBC,EAChB,YAAaC,EACb,gBAAiBC,EACjB,WAAYC,EAAqB,CAAC,EAClC,aAAAC,EAAe,CAAC,EAChB,kBAAAb,EAAoB,CAAC,CACvB,EAAG,CACD,IAAMc,EAAcC,GAAgB,EAC9BV,EAAoBW,GAAY,IAAM,IAAI,IAAIJ,CAAkB,CAAC,EACjEK,EAAgBC,EAAQ,OAAO,CACnC,UAAW,GACX,UAAW,GACX,YAAahB,GAAgBM,EAASC,EAAwBJ,CAAiB,EAC/E,YAAaG,EACb,eAAgB,OAChB,eAAgBC,EAChB,gBAAiBE,EACjB,WAAYC,EACZ,YAAaF,CACf,CAAC,EACKS,EAAqBD,EAAQ,YAChCE,GAAsB,CACrB,GAAM,CAAE,UAAWC,EAAY,UAAWC,EAAY,gBAAiBC,EAAkB,eAAgBC,CAAgB,EAAIP,EAAc,QACrIQ,EAAkBvB,GAAgBkB,EAAmBI,EAAiBnB,CAAiB,EACvFqB,EAAUlC,GAA+C+B,IAAiBE,GAAkBJ,EAAYC,CAAU,EAClHK,EAAqBD,EAAUE,GAAqBH,EAAiBC,CAAO,EAAI,OACtF,MAAO,CAACD,EAAiBE,CAAkB,CAC7C,EACA,CAACtB,CAAiB,CACpB,EACMwB,EAAkBX,EAAQ,YAC9B,CAAC,CAAE,UAAWG,EAAY,UAAWC,CAAW,IAAM,CAChDD,IAAe,SACjBJ,EAAc,QAAQ,UAAYI,GAChCC,IAAe,SACjBL,EAAc,QAAQ,UAAYK,GACpC,GAAM,CAAE,YAAaQ,EAAc,eAAgBC,EAAiB,eAAgBP,CAAgB,EAAIP,EAAc,QAChH,CAACe,EAAUC,CAAW,EAAId,EAAmBW,CAAY,GAC3DE,IAAaF,GAAgBG,IAAgBF,KAC/Cd,EAAc,QAAQ,YAAce,GAAYR,EAChDP,EAAc,QAAQ,eAAiBgB,EACvCnB,EAAY,EAEhB,EACA,CAACK,EAAoBL,CAAW,CAClC,EACMoB,EAAahB,EAAQ,YACxBiB,GAAoB,CACnB,GAAM,CAAE,eAAgBX,EAAiB,WAAAY,EAAY,YAAaN,EAAc,eAAgBC,CAAgB,EAAId,EAAc,QAC5HQ,EAAkBU,IAAoB7B,GAAoB+B,GAAYD,GAAc,CAAC,EAAGN,GAAgBN,CAAe,EAAIW,EAC3H,CAACH,EAAUC,CAAW,EAAId,EAAmBM,CAAe,GAC9DO,IAAaF,GAAgBG,IAAgBF,KAC/Cd,EAAc,QAAQ,YAAce,GAAYR,EAChDP,EAAc,QAAQ,eAAiBgB,EACvCnB,EAAY,EAEhB,EACA,CAACK,EAAoBL,CAAW,CAClC,EACA,GAAIN,IAAYS,EAAc,QAAQ,YAAa,CACjD,GAAM,CAACe,EAAUC,CAAW,EAAId,EAAmBX,CAAO,GACtDwB,IAAaf,EAAc,QAAQ,aAAegB,IAAgBhB,EAAc,QAAQ,kBAC1FA,EAAc,QAAQ,YAAce,EACpCf,EAAc,QAAQ,eAAiBgB,EACvChB,EAAc,QAAQ,YAAcT,EAExC,CACA,GAAM,CAAE,YAAAT,EAAa,eAAAuC,EAAgB,eAAAC,EAAgB,gBAAA9C,EAAiB,UAAAC,EAAW,UAAAC,CAAU,EAAIsB,EAAc,QACvGuB,EAAkBC,GACtBxB,EAAc,QAAQ,YACtBA,EAAc,QAAQ,eACtBJ,CACF,EACA,OAAOK,EAAQ,QAAQ,IAAM,CAC3B,IAAMwB,EAAW,CAAC,EAClB,OAAI3C,IAAgBwC,GAClBG,EAAS,KAAK3C,CAAW,EACvBuC,GACFI,EAAS,KAAKJ,CAAc,EACvB,CACL,SAAAI,EACA,YAAA3C,EACA,eAAAuC,EACA,WAAYK,GAAiB1B,EAAc,QAAQ,YAAalB,CAAW,EAC3E,WAAAmC,EACA,gBAAAL,EACA,gBAAAW,EACA,WAAYI,GACV9C,GAAuBC,EAAaC,CAAiB,EACrDR,GAA8CC,IAAgBM,GAAcL,EAAWC,CAAS,CAClG,CACF,CACF,EAAG,CACDI,EACAuC,EACA5C,EACAC,EACA6C,EACAN,EACAK,EACA9C,EACAoC,EACA7B,CACF,CAAC,CACH,CA6IA,IAAI6C,GAAkBC,GAAQC,GAAgB,EAAG,CAAC,EAkKlD,IAAIC,GAAkBC,GAAQC,GAAgB,EAAG,CAAC,EAIlD,SAASC,GAAmCC,EAAUC,EAAI,CACxD,MAAO,CACL,GAAI,KAAKA,KAAMC,GAAe,KAAKF,CAAQ,IAC3C,MAAOA,EAAS,MAAQ,GACxB,MAAOG,GAAmBH,CAAQ,EAAE,IAAKI,IAAU,CACjD,MAAOA,EAAK,MACZ,MAAOC,GAAa,SAASD,EAAK,KAAK,EAAIJ,EAAS,MACpD,SAAUI,EAAK,QACjB,EAAE,CACJ,CACF,CACA,SAASE,GAAmCN,EAAUC,EAAI,CACxD,MAAO,CACL,GAAI,KAAKA,KAAMM,GAAe,KAAKP,CAAQ,IAC3C,YAAaA,EAAS,YACtB,aAAcA,EAAS,aACvB,cAAeA,EAAS,cACxB,cAAeA,EAAS,cACxB,MAAOG,GAAmBH,CAAQ,EAAE,IAAKI,IAAU,CACjD,MAAOA,EAAK,MACZ,MAAOC,GAAa,SAASD,EAAK,KAAK,EAAIJ,EAAS,MACpD,SAAUI,EAAK,QACjB,EAAE,CACJ,CACF,CAGA,SAASI,GAAyBC,EAAMC,EAAQT,EAAI,CAClD,IAAIU,EAIJ,GAHAF,EAAOG,GAAW,IAAIH,EAAM,MAAM,EAC9B,CAACI,GAAgB,cAAcJ,CAAI,GAEnC,CAACA,EAAK,YAAc,CAACA,EAAK,YAC5B,OACF,IAAMK,EAAaL,EAAK,WAClBM,EAAcN,EAAK,YACrBO,EACE,CAAE,IAAAC,CAAI,EAAIR,EAChB,GAAIQ,IAAQ,QAAUA,IAAQ,OAAS,CAACA,EAAK,CAC3C,IAAIC,EAAS,EACTC,EAAS,EACTC,EAAU,EACVC,EAAU,EACRC,EAAaR,EAAaC,EAC1BQ,EAAYb,EAAO,OAASY,EAC5BE,EAAad,EAAO,MAAQY,EAC5BG,EAAcF,EAAYb,EAAO,MACjCgB,EAAcF,EAAad,EAAO,QACpCO,IAAQ,QAAU,CAACA,EAAMS,EAAcD,EAAcC,EAAcD,IACrEN,EAASO,EACTL,GAAW,EAAIK,GAAe,IAE9BR,EAASO,EACTL,GAAW,EAAIK,GAAe,GAEhCT,EAAa,aAAaI,MAAYC,YAAkBH,MAAWC,IACrE,CAEA,MAAO,CAAE,GADO,KAAKlB,eACC,MAAOU,EAAKF,EAAK,MAAQ,KAAOE,EAAK,GAAI,UAAWK,CAAW,CACvF,CAIA,IAAIW,GAAgCC,EAAQ,cAC1C,MACF,EACIC,GAAoB,IAAMD,EAAQ,WAAWD,EAAa,EAM1DG,GAAa,0BACjB,SAASC,GAAiBC,EAAO,CAC/B,OAAOA,EAAM,WAAW,QAAQF,IAAY,CAC9C,CACA,SAASG,GAAiBC,EAAOC,EAAW,CAC1C,IAAIxB,EACJ,GAAI,QAAQ,KAAKuB,CAAK,GAAK,CAACH,GAAiBG,CAAK,EAChD,OAAOA,EACL,OAAOC,GAAc,SACvBA,EAAY,OACLA,GAAa,IACpBA,EAAY,IACLA,GAAa,KACpBA,EAAY,KACLA,GAAa,KACpBA,EAAY,KAEZA,EAAY,KACd,IAAMC,EAAWC,GAAa,QAAQ,IAAM,SAC5C,OAAQ1B,EAAK2B,GAAQ,cAAcJ,EAAO,CAAE,UAAAC,EAAW,SAAAC,CAAS,CAAC,IAAM,KAAOzB,EAAK,EACrF,CAGA,IAAI4B,GAAsB,cAAcC,EAAY,CAClD,QAAS,CACP,GAAM,CAAE,GAAAvC,EAAI,KAAAwC,EAAM,UAAWzB,CAAW,EAAI,KAAK,MAC3C0B,EAAYT,GAAiBQ,CAAI,EACvC,OAAuBb,EAAQ,cAAc,UAAW,CAAE,GAAA3B,EAAI,MAAO,OAAQ,OAAQ,OAAQ,oBAAqB,mBAAoB,EAAmB2B,EAAQ,cAC/J,QACA,CACE,IAAKc,EACL,MAAO,EACP,OAAQ,EACR,UAAAA,EACA,oBAAqB,OACrB,UAAW1B,CACb,CACF,CAAC,CACH,CACF,EAGI2B,GAASC,GAAW,EACpBC,GAAiB,KAAM,CACzB,YAAY5C,EAAI6C,EAAKC,EAAWC,EAASC,EAAQ,EAAG,CAClD,KAAK,GAAKhD,EACV,KAAK,IAAM6C,EACX,KAAK,UAAYC,EACjB,KAAK,QAAUC,EACf,KAAK,MAAQC,CACf,CACF,EACIC,GAAmB,KAAM,CAC3B,aAAc,CACZ,KAAK,QAA0B,IAAI,GACrC,CACA,iBAAkB,CAChB,OAAO,KAAK,OACd,CACA,UAAUJ,EAAKK,EAAmBC,EAAW,CAC3C,GAAI,CAACN,GAAOA,IAAQ,GAClB,MAAO,GACT,IAAIO,EAAQ,KAAK,QAAQ,IAAIP,CAAG,EAChC,GAAI,CAACO,EAAO,CACLD,IACHA,EAAY,MAAQ,OAAOE,GAAKR,CAAG,CAAC,EAAI,IAAM,OAAOA,EAAI,MAAM,GAEjE,IAAIS,EAAYT,EACZU,EACEC,EAASC,GAASZ,CAAG,EACvBW,IACEN,GACFQ,GAAeF,EAAQL,CAAS,EAElCK,EAAO,GAAKL,EACZI,EAAUI,GAAWH,CAAM,EAC3BF,EAAYE,EAAO,WAErBJ,EAAQ,KAAK,oBAAoBE,EAAWH,EAAWI,CAAO,EAC9D,KAAK,QAAQ,IAAIV,EAAKO,CAAK,CAC7B,CACA,OAAAA,EAAM,OAAS,EACRA,EAAM,SACf,CACA,WAAWP,EAAK,CACd,GAAI,CAACA,GAAOA,IAAQ,GAClB,OACF,IAAMO,EAAQ,KAAK,QAAQ,IAAIP,CAAG,EAClC,OAAgCO,GAAM,OACxC,CACA,YAAYP,EAAK,CACf,GAAI,CAACA,GAAOA,IAAQ,GAClB,OACF,IAAMO,EAAQ,KAAK,QAAQ,IAAIP,CAAG,EAC7BO,IAELA,EAAM,OAAS,EACX,EAAAA,EAAM,MAAQ,IAElB,WAAW,IAAM,KAAK,iBAAiBP,CAAG,EAAG,GAAG,EAClD,CACA,iBAAiBA,EAAK,CACpB,IAAMO,EAAQ,KAAK,QAAQ,IAAIP,CAAG,EAC7BO,IAEDA,EAAM,MAAQ,IAElB,KAAK,QAAQ,OAAOP,CAAG,EACvB,KAAK,iBAAiBO,CAAK,GAC7B,CACA,iBAAiBA,EAAO,CACtB,IAAMQ,EAAc,aAAeR,EAAM,GACzC,GAAIV,GAAQ,CACV,IAAMmB,EAAwC,UAAS,cAAc,IAAMD,CAAW,EACzDC,GAAU,OAAO,CAChD,CACF,CACA,oBAAoBhB,EAAK7C,EAAI8D,EAAO,CAClC,IAAMF,EAAc,aAAe5D,EACnC,GAAI0C,GAAQ,CACV,IAAIqB,EAAe,SAAS,cAAc,gBAAgB,EAY1D,GAXKA,IACHA,EAAe,SAAS,cAAc,KAAK,EAC3CA,EAAa,GAAK,gBAClBA,EAAa,MAAM,SAAW,WAC9BA,EAAa,MAAM,IAAM,IACzBA,EAAa,MAAM,KAAO,IAC1BA,EAAa,MAAM,MAAQ,IAC3BA,EAAa,MAAM,OAAS,IAC5BA,EAAa,MAAM,SAAW,SAC9B,SAAS,KAAK,YAAYA,CAAY,GAEpC,CAAC,SAAS,cAAc,IAAMH,CAAW,EAAG,CAC9C,IAAMC,EAAY,SAAS,cAAc,KAAK,EAC9CA,EAAU,GAAKD,EACfC,EAAU,UAAYhB,EAClBgB,EAAU,oBACZA,EAAU,kBAAkB,GAAK7D,GAEnC+D,EAAa,YAAYF,CAAS,CACpC,CACF,CACA,IAAMG,EAAMF,EAAQ,OAAOA,EAAM,SAASA,EAAM,SAAW,OAErDhB,EAAY,uHADFkB,EAAM,aAAaA,KAAS,kBACoHhE,kBAChK,OAAO,IAAI4C,GAAe5C,EAAI6C,EAAKC,EAAWkB,CAAG,CACnD,CACA,OAAQ,CACN,KAAK,QAAQ,MAAM,CACrB,CACA,mBAAoB,CAClB,IAAMC,EAAS,CAAC,EACVC,EAAQ,6EACdD,EAAO,KAAK,kCAAkCC,KAAS,EACvD,QAAWnC,KAAS,KAAK,QAAQ,OAAO,EAAG,CACzC,IAAM6B,EAAc,aAAe7B,EAAM,GACzCkC,EAAO,KAAK,cAAcL,KAAe,EACzCK,EAAO,KAAK,OAAOlC,EAAM,KAAK,EAC9BkC,EAAO,KAAK,UAAU,CACxB,CACA,OAAAA,EAAO,KAAK,QAAQ,EACbA,EAAO,KAAK;AAAA,CAAI,CACzB,CACF,EACIE,GAAmC,IAAIlB,GAC3C,SAASQ,GAASZ,EAAK,CACrB,GAAI,OAAO,UAAc,IAAa,CACpC,QAAQ,KAAK,0BAA0B,EACvC,MACF,CACA,GAAI,CAGF,IAAMuB,EAFY,IAAI,UAAU,EACV,gBAAgBvB,EAAK,WAAW,EACrC,qBAAqB,KAAK,EAAE,GAC7C,GAAI,CAACuB,EACH,MAAM,MAAM,sBAAsB,EACpC,OAAOA,CACT,MAAE,CACA,MACF,CACF,CACA,SAASV,GAAeb,EAAKwB,EAAS,CACpC,IAAMC,EAAkBC,GAAeF,CAAO,EAC9CG,GAAoB3B,EAAKyB,CAAe,CAC1C,CACA,SAASC,GAAeE,EAAK,CAC3B,OAAOA,EAAI,QAAQ,4BAA6B,EAAE,CACpD,CACA,SAASD,GAAoBE,EAAIL,EAAS,CACxCM,GAASD,EAAIL,CAAO,EACD,MAAM,KAAKK,EAAG,QAAQ,EAC9B,QAASN,GAAS,CAC3BI,GAAoBJ,EAAMC,CAAO,CACnC,CAAC,CACH,CACA,SAASM,GAASD,EAAIL,EAAS,CACVK,EAAG,kBAAkB,EAC7B,QAASE,GAAS,CAC3B,IAAM7C,EAAQ2C,EAAG,aAAaE,CAAI,EAClC,GAAI,CAAC7C,EACH,OAIF,GAHI6C,IAAS,MACXF,EAAG,aAAaE,EAAM,GAAGP,KAAWtC,GAAO,EAEzC6C,IAAS,QAAUA,IAAS,aAAc,CAC5C,GAAM,CAACC,EAAMC,CAAkB,EAAI/C,EAAM,MAAM,GAAG,EAClD,GAAI8C,EACF,OACFH,EAAG,aAAaE,EAAM,IAAIP,KAAWS,GAAoB,EACzD,MACF,CACA,IAAMC,EAAU,QAChB,GAAIhD,EAAM,SAASgD,CAAO,EAAG,CAC3B,IAAMC,EAAgBjD,EAAM,QAAQgD,EAAS,GAAGA,IAAUV,IAAU,EACpEK,EAAG,aAAaE,EAAMI,CAAa,CACrC,CACF,CAAC,CACH,CACA,IAAIC,GAAgB,CAClB,GAAI,GAAK,KACT,GAAI,GAAK,KAAO,GAChB,EAAG,GAAK,KAAO,GACf,GAAI,GACJ,GAAI,GAAK,EACT,GAAI,GAAK,GACT,GAAI,EACJ,GAAI,GACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACP,EACA,SAASC,GAAYnD,EAAO,CAC1B,IAAIrB,EACJ,GAAI,CAACqB,EACH,OACF,IAAMoD,EAAK,uBAAuB,KAAKpD,CAAK,EAC5C,GAAK,EAAsBoD,IAAG,KAAQ,QAAiCA,IAAG,KAAQ,SAE7E,GAAAzE,EAAKyE,EAAG,KAAO,MAAgBzE,EAAG,WAAW,GAAG,GAErD,OAAO,KAAK,MAAM,WAAWyE,EAAG,EAAE,GAAKF,GAAcE,EAAG,KAAO,EAAE,CACnE,CACA,SAASxB,GAAWd,EAAK,CACvB,IAAMuC,EAAQF,GAAYrC,EAAI,aAAa,OAAO,CAAC,EAC7CwC,EAASH,GAAYrC,EAAI,aAAa,QAAQ,CAAC,EACrD,GAAI,SAAOuC,GAAU,UAAY,OAAOC,GAAW,WAE/C,EAAAD,GAAS,GAAKC,GAAU,GAE5B,MAAO,CAAE,MAAAD,EAAO,OAAAC,CAAO,CACzB,CAGA,SAASC,GAAIC,EAAO,CAClB,IAAMC,EAAaC,GAAc,EAC3BC,EAAS,MAAQ/D,EAAQ,MAAM,EAC/BgE,EAAWC,GAAYL,CAAK,EAC5BM,EAAYlE,EAAQ,OAAO,IAAI,EAC/BmE,EAAiBlE,GAAkB,EACzC,OAAAmE,GAAiBR,EAAOM,CAAS,EACVlE,EAAQ,cAC7BqE,GACA,CACE,GAAGT,EACH,SAAUM,EACV,WAAAL,EACA,OAAAE,EACA,SAAAC,EACA,eAAAG,CACF,CACF,CACF,CACA,IAAIG,GAAiC,IACrC,SAASC,GAAuBrD,EAAK,CACnC,OAAOA,EAAI,QAAQ,OAAO,GAAK,CACjC,CACA,SAASsD,GAAgBjC,EAAO,CAC9B,MAAO,CAAC,EAAEA,EAAM,cAAgBA,EAAM,wBAA0BA,EAAM,yBAA2BA,EAAM,qBAAuBA,EAAM,qBACtI,CACA,SAASkC,GAAQvC,EAAW0B,EAAO,CACjC,IAAI7E,EAAI2F,EAAIC,EACZ,IAAMC,EAAM1C,EAAU,QACtB,GAAI,CAAC0C,EACH,OACF,IAAMC,GAAe9F,EAAK6E,EAAM,iBAAmB,KAAO7E,EAAK+F,GACzD5D,EAAM0D,EAAI,kBAChB,GAAI,CAAC1D,GAAO,EAAEA,aAAe2D,EAAY,eACvC,OACF,GAAI,CAAC3D,EAAI,aAAa,SAAS,EAAG,CAChC,IAAME,EAAUoB,GAAiB,WAAWoB,EAAM,GAAG,EACjDxC,GACFF,EAAI,aAAa,UAAWE,CAAO,CAEvC,CACA,GAAM,CAAE,mBAAA2D,EAAoB,WAAAlB,CAAW,EAAID,EAE3C,GADqC,CAACmB,GAAsBC,GAAmBpB,CAAK,GAAKC,IAAe,GAAoBA,IAAe,EAEzI,OACF,GAAM,CAAE,eAAAoB,EAAgB,gBAAAC,EAAiB,aAAAC,CAAa,EAAIvB,IACpDc,EAAKxD,EAAI,QAAQ,UAAY,KAAO,OAASwD,EAAG,SAAW,KAAOC,EAAKzD,EAAI,QAAQ,UAAY,KAAO,OAASyD,EAAG,UAAY,GAAKS,EAAeH,CAAc,GAAKG,EAAeF,CAAe,GACvMhE,EAAI,aAAa,UAAW,OAAO+D,KAAkBC,GAAiB,EAEpEC,GAAgBA,EAAa,YAC/BjE,EAAI,aAAa,sBAAuB,EAAE,EAE1CA,EAAI,aAAa,sBAAuB,MAAM,EAEhDA,EAAI,aAAa,QAAS,MAAM,EAChCA,EAAI,aAAa,SAAU,MAAM,CACnC,CACA,IAAImD,IAAgC,IAAM,CACxC,IAAItF,EACJ,OAAOA,EAAK,cAAcsG,EAAM,CAC9B,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,UAAYrF,EAAQ,UAAU,EACnC,KAAK,WAAa,KAClB,KAAK,cAAiBsF,GAAY,CAChC,KAAK,WAAaA,EAClB,KAAK,gBAAgBA,CAAO,CAC9B,EACA,KAAK,sBAAwB,EAC/B,CACA,OAAO,MAAM1B,EAAO,CAClB,OAAO2B,GAAc3B,EAAOA,EAAM,YAAc,CAAe,CACjE,CACA,IAAI,OAAQ,CACV,OAAO2B,GAAc,KAAK,MAAO,KAAK,MAAM,YAAc,CAAe,CAC3E,CACA,mBAAoB,CACd,KAAK,MAAM,cAEfd,GAAQ,KAAK,UAAW,KAAK,KAAK,CACpC,CACA,sBAAuB,CACrBjC,GAAiB,YAAY,KAAK,qBAAqB,EACvD,KAAK,sBAAwB,EAC/B,CACA,mBAAmBgD,EAAW,CAE5B,GADA,MAAM,mBAAmBA,CAAS,EAC9B,KAAK,MAAM,aACb,OACF,GAAM,CAAE,KAAA3G,CAAK,EAAI,KAAK,MAClBI,GAAgB,cAAcJ,CAAI,GAAKI,GAAgB,cAAcuG,EAAU,IAAI,GAAK3G,EAAK,MAAQ2G,EAAU,KAAK,KACtHC,GAAc,KAAK,WAAY,OAAQ,KAAM,EAAK,EAEpDhB,GAAQ,KAAK,UAAW,KAAK,KAAK,CACpC,CACA,cAAclC,EAAOmD,EAAY,CAC/B,GAAI,KAAK,MAAM,mBAAoB,CACjCA,EAAW,MAAQ,OACnBA,EAAW,OAAS,OACpBA,EAAW,YAAc,UACzB,MACF,CACA,IAAM5G,EAAS,KAAK,MACd,CAAE,SAAA6G,EAAU,eAAAV,EAAgB,gBAAAC,EAAiB,MAAAzB,EAAO,OAAAC,CAAO,EAAI,KAAK,MACpEkC,EAAS5G,GAAW,UAAU2G,CAAQ,EAE5C,GADApD,EAAM,QAAU6C,EAAe,KAAK,MAAM,OAAO,EAAI,KAAK,MAAM,QAAU,EACtE3E,GAAa,gBAAgB,GAAK3B,EAAQ,CAC5C,OAAO,OAAOyD,EAAO,CACnB,UAAW,aAAazD,EAAO,QAAQA,EAAO,eAAe8G,EAAO,QAAQ,CAAC,QAC7E,MAAO,GAAG9G,EAAO,UACjB,OAAQ,GAAGA,EAAO,UACpB,CAAC,EACGkG,GAAmB,KAAK,KAAK,IAC/BzC,EAAM,SAAW,YAEnB,IAAMsD,EAAU/G,EAAO,OAASmG,GAAkB,GAC5Ca,EAAUhH,EAAO,QAAUoG,GAAmB,GACpDQ,EAAW,gBAAkB,WAC7B,GAAM,CAAE,KAAAK,EAAM,OAAAC,CAAO,EAAIC,GACzB,GAAID,IAAW,SAAuB,CACpC,IAAME,EAAaH,EAAO,EAAIA,EAAO,EACrCL,EAAW,UAAY,SAASG,EAAUK,MAAeJ,EAAUI,KACnER,EAAW,KAAO,EAAIQ,CACxB,MACER,EAAW,UAAY,SAASG,MAAYC,KAE1Cb,GAAkBC,IACpBQ,EAAW,MAAQT,EACnBS,EAAW,OAASR,EAExB,KAAO,CACL,GAAM,CAAE,KAAAiB,EAAM,MAAAC,EAAO,IAAAC,EAAK,OAAAC,CAAO,EAAI,KAAK,MAC1C,OAAO,OAAO/D,EAAO,CACnB,KAAA4D,EACA,MAAAC,EACA,IAAAC,EACA,OAAAC,EACA,MAAA7C,EACA,OAAAC,EACA,OAAAkC,CACF,CAAC,EACD,OAAO,OAAOF,EAAY,CACxB,KAAM,EACN,IAAK,EACL,OAAQ,EACR,MAAO,EACP,SAAU,UACZ,CAAC,CACH,CACF,CACA,QAAS,CACP,IAAIa,EAAK7B,EACL1G,GAAgB,QAAQ,IAAI,WAAa,cAAgB8G,GAAW,MACtEA,GAAW,KAAQ,WAAW,EAChC,GAAM,CACJ,GAAAzG,EACA,QAAAmI,EACA,MAAAjE,EACA,KAAA1D,EACA,IAAAqC,EACA,gBAAAgE,EACA,eAAAD,EACA,OAAAlB,EAAS,GACT,MAAA0C,EACA,YAAAC,EACA,SAAA1C,EACA,UAAA2C,EACA,SAAAC,EACA,WAAAC,EACA,mBAAA9B,EACA,SAAA+B,EACA,aAAAC,CACF,EAAI,KAAK,MACT,GAAI,CAAChC,IAAuB,CAACyB,GAAW,CAACnI,GACvC,OAAO,KACT,IAAM2I,GAAcT,EAAMlI,GAAkB2F,IAAa,KAAOuC,EAAM,MACtEU,GAAwB,EACxB,IAAMnI,EAAS,KAAK,MACdqD,EAAQrD,GAAU,CAAE,MAAOmG,GAAkB,IAAK,OAAQC,GAAmB,GAAI,EACjFgC,EAAa,CAAE,GAAG3E,EAAO,eAAgB,YAAa,WAAY,CAAE,EACpEmD,EAAa,CAAC,EACpB,KAAK,cAAcwB,EAAYxB,CAAU,EACzCyB,GAAwB,KAAK,MAAOD,CAAU,EAC9CE,GAAwB,KAAK,MAAOF,CAAU,EAC9C7B,GAAM,gBAAgB,KAAK,MAAO6B,EAAY,EAAK,EACnD,IAAIG,EAAc,KAClB,GAAI,OAAOxI,GAAS,UAAYyI,EAAM,cAAczI,CAAI,EAAG,CACzD,IAAM0I,EAAYD,EAAM,cAAczI,CAAI,EAAIA,EAAK,cAAgByI,EAAM,YAAYzI,CAAI,EAAIA,EAC7FqI,EAAW,KAAOK,EAClBL,EAAW,MAAQK,CACrB,SAAWjJ,GAAe,iBAAiBO,CAAI,EAAG,CAChD,IAAMT,EAAWS,EACX2I,EAAa,GAAG,UAAUnJ,GAAM,EAAE,KAAKC,GAAe,KAAKF,CAAQ,IACzE8I,EAAW,KAAO,QAAQM,KAC1B,IAAMC,GAAoBtJ,GAAmCC,EAAU4I,CAAU,EACjFK,EAA8BrH,EAAQ,cACpC,MACA,CACE,IAAK,KAAK,cACV,MAAO,6BACP,MAAO,OACP,OAAQ,OACR,MAAO,CAAE,SAAU,UAAW,CAChC,EACgBA,EAAQ,cACtB,iBACA,CACE,GAAIwH,EACJ,kBAAmB,UAAUC,GAAkB,kBACjD,EACAA,GAAkB,MAAM,IAAI,CAACjJ,EAAMkJ,IACV1H,EAAQ,cAC7B,OACA,CACE,IAAK0H,EACL,OAAQlJ,EAAK,SACb,UAAWA,EAAK,MAChB,YAAaA,EAAK,KACpB,CACF,CACD,CACH,CACF,CACF,SAAWG,GAAe,iBAAiBE,CAAI,EAAG,CAChD,IAAMT,EAAWS,EACX2I,EAAa,GAAG,UAAUnJ,GAAM,EAAE,KAAKM,GAAe,KAAKP,CAAQ,IACzE8I,EAAW,KAAO,QAAQM,KAC1B,IAAMC,GAAoB/I,GAAmCN,EAAU4I,CAAU,EACjFK,EAA8BrH,EAAQ,cACpC,MACA,CACE,IAAK,KAAK,cACV,MAAO,6BACP,MAAO,OACP,OAAQ,OACR,MAAO,CAAE,SAAU,UAAW,CAChC,EACgBA,EAAQ,cACtB,iBACA,CACE,GAAIwH,EACJ,GAAIpJ,EAAS,cACb,GAAIA,EAAS,cACb,EAAGA,EAAS,WACd,EACAqJ,GAAkB,MAAM,IAAI,CAACjJ,EAAMkJ,IACV1H,EAAQ,cAC7B,OACA,CACE,IAAK0H,EACL,OAAQlJ,EAAK,SACb,UAAWA,EAAK,MAChB,YAAaA,EAAK,KACpB,CACF,CACD,CACH,CACF,CACF,SAAWS,GAAgB,cAAcJ,CAAI,EAAG,CAC9C,IAAM8I,EAAe/I,GAAyBC,EAAMsD,EAAO6E,CAAU,EACjEW,IACFT,EAAW,KAAO,QAAQS,EAAa,MACvCN,EAA8BrH,EAAQ,cACpC,MACA,CACE,IAAK,KAAK,cACV,MAAO,6BACP,WAAY,+BACZ,MAAO,OACP,OAAQ,OACR,MAAO,CAAE,SAAU,UAAW,CAChC,EACgBA,EAAQ,cAAc,OAAQ,KAAsBA,EAAQ,cAAcW,GAAqB,CAAE,GAAGgH,CAAa,CAAC,CAAC,CACrI,EAEJ,CACA,IAAMC,EAAY,CAChB,6BAA8B,KAChC,EACMC,EAAuB,CAAC/I,EAC1B+I,GACF,OAAO,OAAOD,EAAWE,GAA6B,KAAK,MAAM,MAAM,CAAC,EAE1E,IAAMC,EAAuB,CAACV,GAAe,CAACH,EAAW,MAAQ,CAACA,EAAW,YAAc,CAACA,EAAW,iBAAmBhG,EAAI,OAASoD,IAAkC,CAACC,GAAuBrD,CAAG,EAChM8G,EAAU,KACd,GAAID,EACFb,EAAW,eAAiB,YAC5BA,EAAW,gBAAkB,gCAAgC,mBAAmBhG,CAAG,MACnFsB,GAAiB,YAAY,KAAK,qBAAqB,EACvD,KAAK,sBAAwB,OACxB,CACL,IAAMyF,EAAYlB,EAAe,MAAQA,EAAe,KAClDmB,EAAS1F,GAAiB,UAAUtB,EAAK,CAAC6F,EAAckB,CAAS,EACvEzF,GAAiB,YAAY,KAAK,qBAAqB,EACvD,KAAK,sBAAwBtB,EACzBsD,GAAgB0C,CAAU,IAC5BA,EAAW,SAAW,UAExBc,EAA0BhI,EAAQ,cAAcA,EAAQ,SAAU,KAAMqH,EAA6BrH,EAAQ,cAC3G,MACA,CACE,IAAKf,GAAgB,cAAcJ,CAAI,EAAIA,EAAK,IAAM,GACtD,UAAW,eACX,MAAO6G,EACP,IAAK,KAAK,UACV,wBAAyB,CAAE,OAAAwC,CAAO,CACpC,CACF,CAAC,CACH,CACA,IAAMC,EAAkBC,IAAQ1D,EAAK,KAAK,MAAM,KAAO,KAAOA,EAAK,OAC7D,CAAE,KAAA2D,EAAM,OAAArC,EAAQ,IAAAsC,EAAK,QAAAC,CAAQ,EAAI,KAAK,MACtCC,EAAoBzE,EAAS,OACnC,OAAuB/D,EAAQ,cAC7BmI,EACA,CACE,GAAGP,EACH,SAAA5D,EACA,kBAAmB6D,EAAuBY,GAAkB,KAAK,MAAM,MAAM,EAAI,OACjF,GAAApK,EACA,IAAKyI,EACL,MAAOI,EACP,UAAAP,EACA,SAAAC,EACA,WAAAC,EACA,SAAU,KAAK,MAAM,SACrB,KAAMJ,GAASC,EAAc,MAAQ,OACrC,aAAcD,EACd,mBAAoBC,EAAc8B,EAAoB,OACjD,KAAAH,EAAM,OAAArC,EAAQ,IAAAsC,EAAK,QAAAC,CAC1B,EACAP,EACAtB,GAA+B1G,EAAQ,cAAc,MAAO,CAAE,MAAO0I,GAAwB,GAAIF,CAAkB,EAAG9B,CAAW,CACnI,CACF,CACF,EAAG3H,EAAG,oBAAsB,GAAMA,EAAG,gBAAkB,CACrD,KAAM,OACN,MAAO,OACP,IAAK,OACL,OAAQ,OACR,MAAO,OACP,aAAc,CACZ,QAAS,GACT,YAAa,IACf,EACA,WAAY,EACZ,SAAU,EACV,QAAS,GACT,IAAK,GACL,QAAS,CAAC,CACZ,EAAGA,EAAG,aAAe,CACnB,GAAGsG,GAAM,aACT,GAAGtG,EAAG,eACR,EAAGA,CACL,GAAG,EACC2J,GAAyB,CAC3B,KAAM,2BACN,SAAU,aACV,OAAQ,MACR,MAAO,MACP,OAAQ,OACR,SAAU,SACV,QAAS,EACT,SAAU,UACZ,EAGIC,GAAkB1K,GAAQC,GAAgB,EAAG,CAAC,EAI9C0K,GAAkB3K,GAAQC,GAAgB,EAAG,CAAC,EAWlD,IAAI2K,GAA2B,UAC/B,SAASC,GAAkBC,EAAUC,EAAY,CAC/C,GAAI,CAACA,EACH,OAAOD,EAAS,UAAU,EAAGA,EAAS,YAAY,GAAG,CAAC,EACxD,IAAME,EAAaD,EAAW,KAAK,kBAAoB,GAAKA,EAAW,KAAK,WAAaA,EAAW,KAAK,gBACnGE,EAAUF,EAAW,KAAK,qBAAuB,GAAKA,EAAW,KAAK,cAAgBA,EAAW,KAAK,mBAC5G,MAAO,GAAGC,KAAcC,GAC1B,CACA,IAAIC,GAAmB,KAAM,CAC3B,aAAc,CACZ,KAAK,KAAO,SACZ,KAAK,UAAY,CAAC,EAClB,KAAK,SAA2B,IAAI,IACpC,KAAK,eAAiC,IAAI,GAC5C,CACA,YAAYC,EAAQ,CAClB,KAAK,UAAU,OAAS,EACxB,KAAK,SAAS,MAAM,EACpB,KAAK,eAAe,MAAM,EAC1B,IAAMC,EAAQ,CAAC,EACf,OAAAD,EAAO,QAASE,GAAU,CACxB,IAAIC,EACJ,GAAI,CAAC,KAAK,uBAAuBD,CAAK,EACpC,OAEF,IAAME,EAAWV,GAAkBQ,EAAM,KAAMA,EAAM,UAAU,EACzDG,EAAW,KAAK,eAAeD,CAAQ,EACvCE,EAAO,CACX,SAAAD,EACA,SAAU,GAAGZ,KAA2BW,IACxC,QAAS,KAAK,iBAAiBA,CAAQ,EACvC,gBAAiBD,EAAKD,EAAM,aAAe,KAAO,OAASC,EAAG,KAAK,eACnE,KAAMD,EAAM,GACd,EACAG,EAAS,MAAM,KAAKC,CAAI,EACxBD,EAAS,MAAQH,EAAM,YAAc,OAAS,OAAS,UACvD,KAAK,eAAe,IAAIE,EAAUF,CAAK,EACvCD,EAAM,KAAK,GAAGI,EAAS,KAAK,CAC9B,CAAC,EACMJ,CACT,CACA,uBAAuBC,EAAO,CAC5B,IAAIC,EAKJ,MAJI,CAACD,EAAM,SAAS,WAAW,OAAO,KAEhCC,EAAKD,EAAM,aAAe,KAAO,OAASC,EAAG,QAAU,QAEzD,CAACD,EAAM,WAAW,KACb,GACF,eAAgBA,EAAM,WAAW,IAC1C,CACA,iBAAiBK,EAAQ,CACvB,IAAMC,EAAiB,CACrB,OACA,cACA,cACA,QACA,SACA,SACA,YACA,OACA,aACA,OACF,EACMC,EAA4B,CAAC,GAAGD,EAAe,IAAKE,GAAU,GAAGA,UAAc,EAAG,GAAGF,CAAc,EACnGG,EAAkBJ,EAAO,YAAY,EACrCK,EAAS,CAAC,GAAGD,EAAgB,MAAM,GAAG,EAAG,GAAGA,EAAgB,MAAM,GAAG,EAAG,GAAGA,EAAgB,MAAM,GAAG,CAAC,EACrGE,EAAaJ,EAA0B,KAC1CC,GAAUE,EAAO,SAASF,CAAK,GAAKE,EAAO,SAASF,EAAM,QAAQ,OAAQ,EAAE,CAAC,CAChF,EACA,OAAIG,EACKA,EAAW,QAAQ,cAAgBC,GAASA,EAAK,YAAY,CAAC,EAChE,SACT,CACA,eAAeP,EAAQ,CACrB,IAAMQ,EAAmB,KAAK,SAAS,IAAIR,CAAM,EACjD,GAAIQ,EACF,OAAOA,EACT,IAAMV,EAAW,CACf,OAAQ,KAAK,KACb,OAAAE,EACA,MAAO,CAAC,CACV,EACA,YAAK,YAAYF,CAAQ,EAClBA,CACT,CACA,YAAYA,EAAU,CACpB,KAAK,UAAU,KAAKA,CAAQ,EAC5B,KAAK,SAAS,IAAIA,EAAS,OAAQA,CAAQ,CAC7C,CACA,cAAcW,EAAU,CACtB,GAAI,CAACA,EAAS,WAAWvB,EAAwB,EAC/C,OAAO,KACT,IAAMmB,EAASI,EAAS,MAAMvB,EAAwB,EACtD,OAAImB,EAAO,KAAO,OACT,KACO,CAAE,OAAQ,SAAU,OAAQA,EAAO,EAAG,CAExD,CACA,kBAAkBI,EAAUC,EAAa,GAAM,CAC7C,IAAMC,EAAU,KAAK,cAAcF,CAAQ,EAC3C,GAAKE,GAED,GAACD,GAAc,CAAC,KAAK,SAAS,IAAIC,EAAQ,MAAM,GAEpD,OAAO,KAAK,oBAAoBA,EAAQ,MAAM,EAAE,MAAM,EACxD,CACA,oBAAoBX,EAAQ,CAC1B,IAAMY,EAAgB,KAAK,SAAS,IAAIZ,CAAM,EAC9C,GAAIY,EACF,OAAOA,EACT,IAAMd,EAAW,CACf,OAAQ,SACR,OAAAE,EACA,MAAO,CAAC,CACV,EACA,OAAAF,EAAS,MAAM,KAAK,CAClB,SAAU,GAAGZ,KAA2Bc,IACxC,QAAS,KAAK,iBAAiBA,CAAM,EACrC,SAAAF,CACF,CAAC,EACMA,CACT,CACF,EAGIe,GAA2B,MAC3BC,GAAmB,KAAM,CAC3B,aAAc,CACZ,KAAK,KAAO,SACZ,KAAK,UAAY,CAAC,EAClB,KAAK,SAA2B,IAAI,GACtC,CACA,oBAAoBd,EAAQ,CAC1B,IAAIJ,EACJ,OAAQA,EAAK,KAAK,SAAS,IAAII,CAAM,IAAM,KAAOJ,EAAK,IACzD,CACA,cAAca,EAAU,CACtB,GAAI,CAACA,EAAS,WAAWI,EAAwB,EAC/C,OAAO,KACT,IAAMR,EAASI,EAAS,MAAM,GAAG,EACjC,GAAIJ,EAAO,SAAW,EACpB,OAAO,KACT,GAAM,CAACL,EAAQT,CAAO,EAAIc,EAC1B,MAAI,CAACL,GAAU,CAACT,EACP,KACF,CAAE,OAAQS,EAAO,QAAQa,GAA0B,EAAE,EAAG,QAAAtB,EAAS,OAAQ,KAAK,IAAK,CAC5F,CACA,eAAeS,EAAQ,CACrB,IAAMF,EAAW,CAAE,OAAAE,EAAQ,MAAO,CAAC,EAAG,OAAQ,KAAK,IAAK,EACxD,YAAK,YAAYF,CAAQ,EAClBA,CACT,CACA,YAAYA,EAAU,CACpB,KAAK,UAAU,KAAKA,CAAQ,EAC5B,KAAK,SAAS,IAAIA,EAAS,OAAQA,CAAQ,CAC7C,CACA,YAAYiB,EAAU,CACpB,IAAIC,EAAe,CAAC,EACpB,OAAAD,EAAS,QAASE,GAAY,CAC5B,IAAMC,EAAWD,EAAQ,SAAS,IAAK1B,GAAY,CACjD,IAAIK,EACJ,MAAO,CACL,OAAQ,KAAK,KACb,QAAAL,EACA,OAAQ0B,EAAQ,OAChB,MAAOrB,EAAKqB,EAAQ,MAAM1B,KAAa,KAAO,OAASK,EAAG,QAAQ,UAAW,UAAU,CACzF,CACF,CAAC,EACDoB,EAAeA,EAAa,OAAOE,CAAQ,CAC7C,CAAC,EACMF,CACT,CACF,EAGIG,GAA0BC,GAAQC,GAAoC,EAAG,CAAC,EAC1EC,GAAuB,IACvBC,GAAc,EACdC,GAAmB,cAAc,KAAM,CACzC,YAAYC,EAAS,CACnB,MAAMA,CAAO,EACb,KAAK,KAAO,kBACd,CACF,EACIC,GAA+B,IAAI,IACnCC,GAAoC,IAAI,IACxCC,GAAW,CAACC,EAAOC,IAAQC,GAAoBF,EAAOC,CAAG,EAC7D,eAAeC,GAAoBF,EAAOC,EAAKE,EAAU,EAAG,CAC1D,GAAM,CAAE,OAAAhC,EAAQ,IAAAiC,CAAI,EAAIJ,EAClBK,EAASL,EAAM,QAAU,IACzBM,EAAQN,EAAM,OAAS,SACvBO,EAAY,GAAGpC,KAAUmC,KAASD,KAAUD,IAClD,GAAI,CAACP,GAAa,IAAIU,CAAS,GAAKJ,EAAU,EAAG,CAC/C,IAAMK,EAAW,IAAI,SAASrC,EAAQ,OAAOiC,KAAQ,CACnD,OAAkCC,GAAO,SAAS,EAClD,MAAAC,CACF,CAAC,EACKG,EAAeD,EAAS,KAAK,EAAE,KAAK,KACxCP,EAAI,MAAM,IAAIO,CAAQ,EACfE,GAAYvC,EAAQmC,EAAOD,CAAM,EACzC,EAAE,MAAOM,GAAM,CACd,GAAIA,EAAE,OAAS,eACb,MAAMA,EAER,GAAIR,EAAUT,GACZ,OAAOQ,GAAoBF,EAAOC,EAAKE,EAAU,CAAC,EAEpD,MAAM,IAAIR,GACR,6BAA6BQ,mCAAyC,KAAK,UAAU,CACnF,OAAAhC,EACA,MAAAmC,EACA,OAAAD,EACA,IAAAD,CACF,CAAC,GACH,CACF,CAAC,EACDP,GAAa,IAAIU,EAAWE,CAAY,CAC1C,CACA,MAAMZ,GAAa,IAAIU,CAAS,CAClC,CACA,eAAeG,GAAYvC,EAAQmC,EAAOD,EAAQ,CAChD,IAAMO,EAAiB,GAAGzC,KAAUmC,KAASD,IAC7C,GAAI,CAACP,GAAkB,IAAIc,CAAc,EAAG,CAK1C,IAAMH,EAJW,IAAInB,GAAwB,QAAQnB,EAAQ,CAC3D,MAAAmC,EACA,OAAAD,CACF,CAAC,EAC6B,KAAK,KAAMZ,EAAoB,EAC7DK,GAAkB,IAAIc,EAAgBH,CAAY,CACpD,CACA,GAAI,CACF,MAAMX,GAAkB,IAAIc,CAAc,CAC5C,MAAE,CACA,MAAM,IAAIjB,GACR,qCAAqCF,2BAA6C,KAAK,UAAU,CAC/F,OAAAtB,EACA,MAAAmC,EACA,OAAAD,CACF,CAAC,GACH,CACF,CACF,CAGA,IAAIQ,GAAY,CACd,MAAO,CACL,QAAS,CAAE,SAAU,QAAS,OAAQ,MAAO,EAC7C,MAAO,CAAE,SAAU,cAAe,OAAQ,MAAO,EACjD,OAAQ,CAAE,SAAU,eAAgB,OAAQ,MAAO,EACnD,eAAgB,CAAE,SAAU,wBAAyB,OAAQ,MAAO,CACtE,EACA,OAAQ,CACN,KAAM,CAAE,SAAU,SAAU,OAAQ,MAAO,EAC3C,MAAO,CAAE,SAAU,eAAgB,OAAQ,MAAO,EAClD,OAAQ,CAAE,SAAU,gBAAiB,OAAQ,MAAO,EACpD,MAAO,CAAE,SAAU,eAAgB,OAAQ,MAAO,EAClD,MAAO,CAAE,SAAU,eAAgB,OAAQ,MAAO,CACpD,EACA,cAAe,CACb,QAAS,CAAE,SAAU,cAAe,OAAQ,MAAO,EACnD,cAAe,CAAE,SAAU,wBAAyB,OAAQ,MAAO,EACnE,OAAQ,CAAE,SAAU,oBAAqB,OAAQ,MAAO,EACxD,YAAa,CAAE,SAAU,sBAAuB,OAAQ,MAAO,EAC/D,MAAO,CAAE,SAAU,mBAAoB,OAAQ,MAAO,CACxD,EACA,wBAAyB,CACvB,QAAS,CAAE,SAAU,wBAAyB,OAAQ,MAAO,EAC7D,cAAe,CAAE,SAAU,iCAAkC,OAAQ,MAAO,EAC5E,OAAQ,CAAE,SAAU,6BAA8B,OAAQ,MAAO,EACjE,YAAa,CAAE,SAAU,+BAAgC,OAAQ,MAAO,EACxE,MAAO,CAAE,SAAU,4BAA6B,OAAQ,MAAO,CACjE,EACA,YAAa,CACX,QAAS,CAAE,SAAU,cAAe,OAAQ,MAAO,EACnD,YAAa,CAAE,SAAU,uBAAwB,OAAQ,MAAO,CAClE,EACA,YAAa,CACX,KAAM,CAAE,SAAU,YAAa,OAAQ,MAAO,EAC9C,SAAU,CAAE,SAAU,qBAAsB,OAAQ,MAAO,EAC3D,UAAW,CAAE,SAAU,sBAAuB,OAAQ,MAAO,CAC/D,EACA,QAAS,CAAE,QAAS,CAAE,SAAU,UAAW,OAAQ,MAAO,CAAE,EAC5D,cAAe,CAAE,QAAS,CAAE,SAAU,cAAe,OAAQ,MAAO,CAAE,EACtE,OAAQ,CACN,OAAQ,CAAE,SAAU,SAAU,OAAQ,MAAO,EAC7C,UAAW,CAAE,SAAU,yBAA0B,OAAQ,MAAO,EAChE,sBAAuB,CAAE,SAAU,4BAA6B,OAAQ,MAAO,CACjF,EACA,QAAS,CAAE,QAAS,CAAE,SAAU,UAAW,OAAQ,MAAO,CAAE,EAC5D,YAAa,CACX,QAAS,CAAE,SAAU,YAAa,OAAQ,MAAO,EACjD,MAAO,CAAE,SAAU,iBAAkB,OAAQ,MAAO,EACpD,SAAU,CAAE,SAAU,oBAAqB,OAAQ,MAAO,EAC1D,UAAW,CAAE,SAAU,qBAAsB,OAAQ,MAAO,CAC9D,EACA,UAAW,CACT,QAAS,CAAE,SAAU,YAAa,OAAQ,MAAO,EACjD,MAAO,CAAE,SAAU,kBAAmB,OAAQ,MAAO,EACrD,KAAM,CAAE,SAAU,iBAAkB,OAAQ,MAAO,EACnD,QAAS,CAAE,SAAU,oBAAqB,OAAQ,MAAO,EACzD,gBAAiB,CAAE,SAAU,yBAA0B,OAAQ,MAAO,EACtE,eAAgB,CAAE,SAAU,wBAAyB,OAAQ,MAAO,CACtE,EACA,iBAAkB,CAChB,QAAS,CAAE,SAAU,iBAAkB,OAAQ,MAAO,EACtD,WAAY,CAAE,SAAU,2BAA4B,OAAQ,MAAO,EACnE,KAAM,CAAE,SAAU,qBAAsB,OAAQ,MAAO,EACvD,MAAO,CAAE,SAAU,sBAAuB,OAAQ,MAAO,EACzD,OAAQ,CAAE,SAAU,uBAAwB,OAAQ,MAAO,EAC3D,KAAM,CAAE,SAAU,qBAAsB,OAAQ,MAAO,EACvD,OAAQ,CAAE,SAAU,uBAAwB,OAAQ,MAAO,EAC3D,oBAAqB,CAAE,SAAU,iCAAkC,OAAQ,MAAO,EAClF,cAAe,CAAE,SAAU,2BAA4B,OAAQ,MAAO,EACtE,eAAgB,CAAE,SAAU,4BAA6B,OAAQ,MAAO,EACxE,gBAAiB,CAAE,SAAU,6BAA8B,OAAQ,MAAO,EAC1E,cAAe,CAAE,SAAU,2BAA4B,OAAQ,MAAO,EACtE,iBAAkB,CAAE,SAAU,8BAA+B,OAAQ,MAAO,EAC5E,kBAAmB,CAAE,SAAU,+BAAgC,OAAQ,MAAO,CAChF,EACA,eAAgB,CAAE,QAAS,CAAE,SAAU,eAAgB,OAAQ,MAAO,CAAE,EACxE,OAAQ,CAAE,QAAS,CAAE,SAAU,SAAU,OAAQ,MAAO,CAAE,EAC1D,gBAAiB,CAAE,QAAS,CAAE,SAAU,gBAAiB,OAAQ,MAAO,CAAE,EAC1E,MAAO,CAAE,QAAS,CAAE,SAAU,QAAS,OAAQ,MAAO,CAAE,EACxD,OAAQ,CAAE,QAAS,CAAE,SAAU,SAAU,OAAQ,MAAO,CAAE,EAC1D,OAAQ,CACN,QAAS,CAAE,SAAU,SAAU,OAAQ,MAAO,EAC9C,WAAY,CAAE,SAAU,oBAAqB,OAAQ,MAAO,CAC9D,EACA,SAAU,CAAE,QAAS,CAAE,SAAU,WAAY,OAAQ,MAAO,CAAE,EAC9D,iBAAkB,CAChB,QAAS,CAAE,SAAU,4BAA6B,OAAQ,GAAI,EAC9D,WAAY,CAAE,SAAU,+BAAgC,OAAQ,GAAI,EACpE,KAAM,CAAE,SAAU,yBAA0B,OAAQ,GAAI,EACxD,MAAO,CAAE,SAAU,0BAA2B,OAAQ,GAAI,EAC1D,OAAQ,CAAE,SAAU,2BAA4B,OAAQ,GAAI,EAC5D,SAAU,CAAE,SAAU,6BAA8B,OAAQ,GAAI,EAChE,KAAM,CAAE,SAAU,yBAA0B,OAAQ,GAAI,EACxD,MAAO,CAAE,SAAU,0BAA2B,OAAQ,GAAI,EAC1D,MAAO,CAAE,SAAU,0BAA2B,OAAQ,GAAI,EAC1D,OAAQ,CAAE,SAAU,2BAA4B,OAAQ,GAAI,EAC5D,oBAAqB,CAAE,SAAU,sCAAuC,OAAQ,GAAI,EACpF,cAAe,CAAE,SAAU,gCAAiC,OAAQ,GAAI,EACxE,eAAgB,CAAE,SAAU,iCAAkC,OAAQ,GAAI,EAC1E,gBAAiB,CAAE,SAAU,kCAAmC,OAAQ,GAAI,EAC5E,kBAAmB,CAAE,SAAU,oCAAqC,OAAQ,GAAI,EAChF,cAAe,CAAE,SAAU,gCAAiC,OAAQ,GAAI,EACxE,eAAgB,CAAE,SAAU,iCAAkC,OAAQ,GAAI,EAC1E,eAAgB,CAAE,SAAU,iCAAkC,OAAQ,GAAI,CAC5E,EACA,2BAA4B,CAC1B,QAAS,CAAE,SAAU,sCAAuC,OAAQ,GAAI,EACxE,WAAY,CAAE,SAAU,yCAA0C,OAAQ,GAAI,EAC9E,KAAM,CAAE,SAAU,mCAAoC,OAAQ,GAAI,EAClE,MAAO,CAAE,SAAU,oCAAqC,OAAQ,GAAI,EACpE,OAAQ,CAAE,SAAU,qCAAsC,OAAQ,GAAI,EACtE,SAAU,CAAE,SAAU,uCAAwC,OAAQ,GAAI,EAC1E,KAAM,CAAE,SAAU,mCAAoC,OAAQ,GAAI,EAClE,MAAO,CAAE,SAAU,oCAAqC,OAAQ,GAAI,EACpE,MAAO,CAAE,SAAU,oCAAqC,OAAQ,GAAI,CACtE,EACA,cAAe,CACb,QAAS,CAAE,SAAU,yBAA0B,OAAQ,GAAI,EAC3D,MAAO,CAAE,SAAU,uBAAwB,OAAQ,GAAI,EACvD,OAAQ,CAAE,SAAU,wBAAyB,OAAQ,GAAI,EACzD,SAAU,CAAE,SAAU,0BAA2B,OAAQ,GAAI,EAC7D,KAAM,CAAE,SAAU,sBAAuB,OAAQ,GAAI,EACrD,MAAO,CAAE,SAAU,uBAAwB,OAAQ,GAAI,EACvD,OAAQ,CAAE,SAAU,wBAAyB,OAAQ,GAAI,EACzD,eAAgB,CAAE,SAAU,8BAA+B,OAAQ,GAAI,EACvE,gBAAiB,CAAE,SAAU,+BAAgC,OAAQ,GAAI,EACzE,kBAAmB,CAAE,SAAU,iCAAkC,OAAQ,GAAI,EAC7E,cAAe,CAAE,SAAU,6BAA8B,OAAQ,GAAI,EACrE,eAAgB,CAAE,SAAU,8BAA+B,OAAQ,GAAI,CACzE,EACA,wBAAyB,CACvB,QAAS,CAAE,SAAU,mCAAoC,OAAQ,GAAI,EACrE,MAAO,CAAE,SAAU,iCAAkC,OAAQ,GAAI,EACjE,OAAQ,CAAE,SAAU,kCAAmC,OAAQ,GAAI,EACnE,SAAU,CAAE,SAAU,oCAAqC,OAAQ,GAAI,EACvE,KAAM,CAAE,SAAU,gCAAiC,OAAQ,GAAI,EAC/D,MAAO,CAAE,SAAU,iCAAkC,OAAQ,GAAI,CACnE,EACA,OAAQ,CAAE,QAAS,CAAE,SAAU,SAAU,OAAQ,MAAO,CAAE,EAC1D,MAAO,CAAE,QAAS,CAAE,SAAU,QAAS,OAAQ,MAAO,CAAE,EACxD,kBAAmB,CAAE,QAAS,CAAE,SAAU,kBAAmB,OAAQ,MAAO,CAAE,EAC9E,UAAW,CAAE,QAAS,CAAE,SAAU,eAAgB,OAAQ,MAAO,CAAE,EACnE,QAAS,CAAE,QAAS,CAAE,SAAU,UAAW,OAAQ,MAAO,CAAE,CAC9D,EACIC,GAAkB,CACpB,iCAAkC,qDAClC,oCAAqC,2DACrC,8BAA+B,+CAC/B,+BAAgC,iDAChC,gCAAiC,mDACjC,kCAAmC,uDACnC,+BAAgC,iDAChC,+BAAgC,iDAChC,8BAA+B,+CAC/B,yBAA0B,yDAC1B,uBAAwB,iEACxB,wBAAyB,qEACzB,0BAA2B,6EAC3B,sBAAuB,6DACvB,uBAAwB,kDACxB,wBAAyB,qEACzB,8BAA+B,yFAC/B,+BAAgC,6FAChC,iCAAkC,qGAClC,6BAA8B,qFAC9B,8BAA+B,oEAC/B,8BAA+B,+CAC/B,4BAA6B,2CAC7B,6BAA8B,6CAC9B,+BAAgC,iDAChC,2BAA4B,yCAC5B,4BAA6B,2CAC7B,6BAA8B,6CAC9B,mCAAoC,uDACpC,oCAAqC,yDACrC,sCAAuC,6DACvC,kCAAmC,qDACnC,mCAAoC,uDACpC,sCAAuC,2FACvC,yCAA0C,oGAC1C,mCAAoC,kFACpC,oCAAqC,qFACrC,qCAAsC,wFACtC,uCAAwC,8FACxC,mCAAoC,kFACpC,oCAAqC,qFACrC,oCAAqC,0DACrC,4BAA6B,qEAC7B,+BAAgC,iGAChC,yBAA0B,yEAC1B,0BAA2B,6EAC3B,2BAA4B,iFAC5B,6BAA8B,yFAC9B,yBAA0B,yEAC1B,0BAA2B,6EAC3B,0BAA2B,2DAC3B,2BAA4B,6DAC5B,sCAAuC,yHACvC,gCAAiC,iGACjC,iCAAkC,qGAClC,kCAAmC,yGACnC,oCAAqC,iHACrC,gCAAiC,iGACjC,iCAAkC,qGAClC,iCAAkC,6EAClC,mCAAoC,kFACpC,iCAAkC,4EAClC,kCAAmC,+EACnC,oCAAqC,qFACrC,gCAAiC,yEACjC,iCAAkC,oDAClC,iCAAkC,qDAClC,oCAAqC,2DACrC,8BAA+B,+CAC/B,+BAAgC,iDAChC,gCAAiC,mDACjC,kCAAmC,uDACnC,8BAA+B,+CAC/B,+BAAgC,iDAChC,+BAAgC,gDAClC,EACIC,GAAYF,GAGZG,GAAqB,iBACrBC,GAAkB,KAAM,CAC1B,aAAc,CACZ,KAAK,KAAO,QACZ,KAAK,UAAY,CAAC,EAClB,KAAK,SAA2B,IAAI,IACpC,KAAK,wBAA0C,IAAI,IACnD,KAAK,gBAAkC,IAAI,IAC3C,KAAK,uBAAyC,IAAI,GACpD,CACA,oBAAoB9C,EAAQ,CAC1B,IAAIJ,EACJ,OAAQA,EAAK,KAAK,SAAS,IAAII,CAAM,IAAM,KAAOJ,EAAK,IACzD,CACA,eAAeI,EAAQ,CACrB,IAAMF,EAAW,CAAE,OAAAE,EAAQ,MAAO,CAAC,EAAG,OAAQ,KAAK,IAAK,EACxD,YAAK,YAAYF,CAAQ,EAClBA,CACT,CACA,YAAYA,EAAU,CACpB,KAAK,UAAU,KAAKA,CAAQ,EAC5B,KAAK,SAAS,IAAIA,EAAS,OAAQA,CAAQ,CAC7C,CACA,aAAc,CACZ,IAAMJ,EAAQ,CAAC,EACf,QAAWM,KAAU,OAAO,KAAK4C,EAAS,EAAG,CAC3C,IAAMG,EAAUH,GAAU5C,GAC1B,GAAI,CAAC+C,EACH,SACF,IAAMjD,EAAW,KAAK,eAAeE,CAAM,EAC3C,QAAWT,KAAW,OAAO,KAAKwD,CAAO,EAAG,CAC1C,IAAMC,EAASD,EAAQxD,GACvB,GAAI,CAACyD,EACH,SACF,GAAM,CAAE,SAAAvC,EAAU,OAAAyB,CAAO,EAAIc,EACvBjD,EAAO,CACX,QAAAR,EACA,SAAAkB,EACA,OAAAyB,EACA,SAAApC,EACA,OAAQ,QACV,EACAA,EAAS,MAAM,KAAKC,CAAI,CAC1B,CACAL,EAAM,KAAK,GAAGI,EAAS,KAAK,CAC9B,CACA,OAAW,CAACmD,EAAM9C,CAAK,IAAK,OAAO,QAAQwC,EAAe,EACxD,KAAK,iBAAiBM,EAAM9C,CAAK,EAEnC,GAAM,CAAE,SAAU+C,EAAgB,QAAAC,CAAQ,EAAI,KAAK,kBAAkB,EACrE,KAAK,YAAYD,CAAc,EAC/B,OAAW,CAACD,EAAM9C,CAAK,IAAKgD,EAC1B,KAAK,iBAAiBF,EAAM9C,CAAK,EAEnCT,EAAM,KAAK,GAAGwD,EAAe,KAAK,EAClC,IAAME,EAAgB,KAAK,oBAAoB,EAC/C,OAAA1D,EAAM,KAAK,GAAG0D,EAAc,KAAK,EAC1B1D,CACT,CACA,qBAAsB,CACpB,IAAM2D,EAAQ,CACZ,CAAC,UAAW,QAAS,MAAM,EAC3B,CAAC,OAAQ,aAAc,GAAG,EAC1B,CAAC,cAAe,mBAAoB,GAAG,EACvC,CAAC,QAAS,cAAe,GAAG,EAC5B,CAAC,SAAU,eAAgB,GAAG,EAC9B,CAAC,WAAY,iBAAkB,GAAG,EAClC,CAAC,OAAQ,aAAc,GAAG,EAC1B,CAAC,aAAc,kBAAmB,GAAG,EACrC,CAAC,QAAS,cAAe,GAAG,EAC5B,CAAC,cAAe,mBAAoB,GAAG,EACvC,CAAC,qBAAsB,yBAA0B,GAAG,EACpD,CAAC,eAAgB,oBAAqB,GAAG,EACzC,CAAC,SAAU,eAAgB,MAAM,EACjC,CAAC,gBAAiB,qBAAsB,GAAG,EAC3C,CAAC,kBAAmB,uBAAwB,GAAG,EAC/C,CAAC,cAAe,mBAAoB,GAAG,EACvC,CAAC,oBAAqB,wBAAyB,GAAG,EAClD,CAAC,eAAgB,oBAAqB,GAAG,CAC3C,EACMvD,EAAW,KAAK,eAAe,OAAO,EAC5C,QAAWwD,KAASD,EAAO,CACzB,GAAM,CAAC9D,EAASkB,EAAUyB,CAAM,EAAIoB,EAC9BvD,EAAO,CACX,QAAAR,EACA,SAAAkB,EACA,OAAAyB,EACA,SAAApC,EACA,MAAO,UAAU,KAAKW,CAAQ,EAAI,SAAW,MAC/C,EACAX,EAAS,MAAM,KAAKC,CAAI,CAC1B,CACA,OAAAD,EAAS,MAAM,QAASyD,GAAM,KAAK,uBAAuB,IAAIA,EAAE,QAAQ,CAAC,EAClEzD,CACT,CACA,iBAAiBmD,EAAM9C,EAAO,CAC5B,KAAK,gBAAgB,IAAI8C,EAAM9C,CAAK,EACpC,KAAK,wBAAwB,IAAIA,EAAO8C,CAAI,CAC9C,CACA,mBAAoB,CAClB,IAAMO,EAAe,KAAK,wBACxB,mIACF,EACM1D,EAAW,CAAE,OAAQ+C,GAAoB,MAAO,CAAC,EAAG,OAAQ,KAAK,IAAK,EACtEM,EAA0B,IAAI,IAC9BM,EAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACtDC,EAAS,CAAC,SAAU,QAAQ,EAClC,QAAWvB,KAASuB,EAClB,QAAWxB,KAAUuB,EAAS,CAC5B,IAAMlE,EAAUoE,GAAkBzB,EAAQC,CAAK,EACzCyB,EAAQ,mBAAmB1B,KAAUC,MACrCpC,EAAO,CACX,QAAAR,EACA,SAAUqE,EACV,MAAOzB,IAAU,SAAW,OAASA,EACrC,OAAQD,IAAW,IAAM,OAASA,EAClC,SAAApC,EACA,OAAQ,QACV,EACAA,EAAS,MAAM,KAAKC,CAAI,EACxBoD,EAAQ,IAAIS,EAAOJ,CAAY,CACjC,CAEF,MAAO,CAAE,SAAA1D,EAAU,QAAAqD,CAAQ,CAC7B,CACA,2BAA2B1C,EAAU,CACnC,OAAO,KAAK,wBAAwB,IAAIA,CAAQ,GAAK,IACvD,CACA,2BAA2BmD,EAAO,CAChC,OAAO,KAAK,gBAAgB,IAAIA,CAAK,GAAK,IAC5C,CACA,gBAAgBzD,EAAO,CACrB,MAAI,GAAAA,GAASA,EAAM,MAAM,UAAU,EAGrC,CACA,wBAAwB0D,EAAG,CACzB,GAAIC,GAAe,CACjB,IAAMC,EAAYD,GAAc,UAGhC,GAFI,CAACC,EAAU,SAAS,gBAAgB,GAEpC,CAACA,EAAU,SAAS,WAAW,GAAK,CAACA,EAAU,SAAS,WAAW,EACrE,OAAOF,CACX,CACA,MAAO,SAASA,GAClB,CACF,EACIG,GAAkB,CACpB,IAAO,OACP,IAAO,cACP,IAAO,QACP,IAAO,SACP,IAAO,SACP,IAAO,YACP,IAAO,OACP,IAAO,aACP,IAAO,OACT,EACA,SAASL,GAAkBzB,EAAQC,EAAO,CACxC,IAAM8B,EAAgB9B,IAAU,SAAW,UAAY,SACvD,OAAID,IAAW,IACN+B,EAEL9B,IAAU,SACL,GAAG6B,GAAgB9B,MAAW+B,IAEhC,GAAGD,GAAgB9B,IAC5B,CAGA,SAASgC,GAAa3E,EAAS,CAC7B,GAAIA,IAAY,UACd,MAAO,CAAE,MAAO,SAAU,OAAQ,GAAI,EACxC,IAAM4E,EAAM,mBAAmB,KAAK5E,CAAO,EAC3C,GAAI,CAAC4E,EACH,OAAO,KACT,IAAMjC,EAAS,SAASiC,EAAI,IAAM,KAAK,EACjChC,EAAQgC,EAAI,IAAM,SACxB,MAAO,CAAE,OAAAjC,EAAQ,MAAAC,CAAM,CACzB,CAGA,IAAIiC,GAAY,KAAM,CACpB,aAAc,CACZ,KAAK,QAAU,GACf,KAAK,WAA6B,IAAI,IACtC,KAAK,gBAAkC,IAAI,IAC3C,KAAK,iBAAoBzD,GAAY,CACnC,GAAM,CAAE,OAAA0D,EAAQ,OAAArE,EAAQ,QAAAT,EAAS,KAAA+E,CAAK,EAAI3D,EACtCb,EAAW,KAAK,YAAYa,CAAO,EAClCb,IACHA,EAAW,KAAKuE,GAAQ,eAAerE,CAAM,GAE/C,IAAMuE,EAAcL,GAAa3E,CAAO,GAAK,CAAC,EACxC,CAAE,OAAA2C,EAAQ,MAAAC,CAAM,EAAIoC,EACpB9D,EAAW,MAAMT,KAAUT,IAC3BQ,EAAO,CACX,SAAAD,EACA,QAAAP,EACA,SAAAkB,EACA,OAAAyB,EACA,MAAAC,EACA,KAAAmC,CACF,EACA,OAAAxE,EAAS,MAAM,KAAKC,CAAI,EACjBA,CACT,EACA,KAAK,MAAQ,IAAI+C,GACjB,KAAK,OAAS,IAAIhC,GAClB,KAAK,OAAS,IAAItB,GAClB,KAAK,WAA6B,IAAI,IACtC,KAAK,iBAAiB,EACtB,IAAMgF,EAAc,KAAK,kBAAkB,OAAO,EAClDC,GAAOD,EAAa,4BAA4B,EAChD,KAAK,YAAcA,CACrB,CACA,QAAQzE,EAAM,CACZ,KAAK,WAAW,IAAIA,EAAK,SAAUA,CAAI,CACzC,CACA,mBAAoB,CAClB,OAAO,MAAM,KAAK,KAAK,WAAW,OAAO,CAAC,CAC5C,CACA,kBAAmB,CACjB,KAAK,MAAM,YAAY,EAAE,QAASA,GAAS,CACzC,KAAK,QAAQA,CAAI,EACZ,KAAK,MAAM,uBAAuB,IAAIA,EAAK,QAAQ,GACtD,KAAK,SAASA,CAAI,CAEtB,CAAC,CACH,CACA,MAAM,mBAAoB,CACxB,GAAI,CAAC,KAAK,0BAA2B,CACnC,KAAK,0BAA4B2E,GAAQ,qBAAqB,EAC9D,IAAMC,EAAc,MAAM,KAAK,0BAC/B,KAAK,OAAO,YAAYA,CAAW,EAAE,QAAShE,GAAY,CACxD,IAAMZ,EAAO,KAAK,iBAAiBY,CAAO,EAC1C,KAAK,QAAQZ,CAAI,CACnB,CAAC,CACH,CACA,OAAO,KAAK,yBACd,CACA,kBAAkBN,EAAQ,CACxB,KAAK,WAAW,QAAQ,CAACmF,EAAG3B,IAAS,CAC/BA,EAAK,WAAW/D,EAAwB,GAC1C,KAAK,WAAW,OAAO+D,CAAI,CAE/B,CAAC,EACD,KAAK,OAAO,YAAYxD,CAAM,EAAE,QAASM,GAAS,KAAK,QAAQA,CAAI,CAAC,CACtE,CACA,YAAY8E,EAAM,CAEhB,OADiB,KAAKA,EAAK,QAAQ,oBAAoBA,EAAK,MAAM,CAEpE,CACA,kBAAkBpE,EAAUC,EAAa,GAAM,CAC7C,OAAID,EAAS,WAAWvB,EAAwB,EACvC,KAAK,OAAO,kBAAkBuB,EAAUC,CAAU,EAEpD,KAAK,WAAW,IAAID,CAAQ,CACrC,CACA,6BAA6BA,EAAU,CACrC,IAAMV,EAAO,KAAK,kBAAkBU,CAAQ,EAC5C,GAAIV,EACF,MAAO,CACL,MAAOA,EAAK,MACZ,OAAQA,EAAK,OACb,QAASA,EAAK,QACd,OAAQA,EAAK,SAAS,OACtB,OAAQA,EAAK,SAAS,MACxB,EAEF,IAAMY,EAAU,KAAK,OAAO,cAAcF,CAAQ,EAClD,GAAIE,EAAS,CACX,IAAMmE,EAAcZ,GAAavD,EAAQ,OAAO,EAChD,GAAImE,EACF,MAAO,CACL,MAAOA,EAAY,MACnB,OAAQA,EAAY,OACpB,QAASnE,EAAQ,QACjB,OAAQA,EAAQ,OAChB,OAAQ,QACV,CAEJ,CACA,OAAO,IACT,CACA,iBAAiBF,EAAU,CACzB,OAAO,KAAK,gBAAgB,IAAIA,CAAQ,CAC1C,CACA,MAAM,aAAaX,EAAU,CAC3B,MAAM,QAAQ,IAAIA,EAAS,MAAM,IAAKiF,GAAM,KAAK,SAASA,CAAC,CAAC,CAAC,CAC/D,CACA,MAAM,SAAShF,EAAM,CACnB,OAAI,KAAK,iBAAiBA,EAAK,QAAQ,EAC9B,EAELA,EAAK,SAAS,SAAW,SACvB,KAAK,MAAM,uBAAuB,IAAIA,EAAK,QAAQ,GAAKiF,GAAgB,QAAQ,IAAI,WAAa,QACnG,MAAMzC,GAAYxC,EAAK,SAAS,OAAQA,EAAK,MAAOA,EAAK,MAAM,EAEjE,KAAK,gBAAgB,IAAIA,EAAK,QAAQ,EAC/B,GAEJA,EAAK,MAGV,MAAM6B,GACJ,CACE,OAAQ7B,EAAK,SAAS,OACtB,IAAKA,EAAK,KACV,OAAQA,EAAK,OACb,MAAOA,EAAK,KACd,EACA,QACF,EACA,KAAK,gBAAgB,IAAIA,EAAK,QAAQ,EAC/B,GAZE,QAAQ,OAAO,wBAAwBA,EAAK,UAAU,CAajE,CACA,MAAM,0BAA0BkF,EAAW,CACzC,GAAI,CAAC,KAAK,QACR,MAAO,CAAC,EACNA,EAAU,KAAMpB,GAAMA,EAAE,WAAWhD,EAAwB,CAAC,GAC9D,MAAM,KAAK,kBAAkB,EAE/B,IAAMnB,EAAQuF,EAAU,IAAKpB,GAAM,KAAK,WAAW,IAAIA,CAAC,CAAC,EAAE,OAAQkB,GAAM,CAAC,CAACA,CAAC,EAC5E,OAAO,QAAQ,WAAWrF,EAAM,IAAKqF,GAAM,KAAK,SAASA,CAAC,CAAC,CAAC,CAC9D,CACA,MAAM,iBAAiBG,EAAeC,EAAqB,CACzD,IAAMF,EAAYC,EAAc,OAAQzE,GAC/B,CAAC2E,GAAU,iBAAiB3E,CAAQ,CAC5C,EACD,GAAIwE,EAAU,SAAW,EACvB,OACF,MAAMG,GAAU,0BAA0BH,CAAS,EAC1BA,EAAU,MAAOxE,GACjC2E,GAAU,iBAAiB3E,CAAQ,CAC3C,GACuB0E,GACtBA,EAAoB,CACxB,CACF,EACIC,GAA4B,IAAIhB,GACpC,QAAQ,WAAa,QAAQ,aAAgBiB,GAAa,QAAQ,IAChEA,EAAS,IACNC,GAAMA,EAAE,KAAMC,IAAO,CAAE,OAAQ,YAAa,MAAOA,CAAE,EAAE,EAAE,MAAO/C,IAAO,CAAE,OAAQ,WAAY,OAAQA,CAAE,EAAE,CAC5G,CACF,GAyBA,SAASgD,GAAoBC,EAAGC,EAAG,CACjC,OAAOD,EAAE,SAAWC,EAAE,QAAUD,EAAE,MAAM,CAACE,EAAGC,IAAMD,IAAMD,EAAEE,EAAE,CAC9D,CA0TA,IAAIC,GAAU,gBACVC,GAAiB,YACjBC,GAAW,UACXC,GAAkB,WAClBC,GAAW,sBACXC,GAAkB,kBAClBC,GAAY,UACZC,GAAmB,WACnBC,GAAmB,IAAI,OACzB,KAAKR,KAAUE,KAAWE,KAAWE,UAAiBC,UAAwBF,KAAkBF,KAAkBF,OAClH,GACF,EAwBA,IAAIQ,GAAmBC,GAAQC,GAAgB,EAAG,CAAC,EAwCnD,IAAIC,GAAc,KAAM,CACtB,YAAYC,EAAO,CACjB,KAAK,QAAU,cACf,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,gBAAkB,WACvB,KAAK,WAAa,EAClB,KAAK,WAAa,EAClB,KAAK,UAAY,EACjB,KAAK,UAAY,EACjB,KAAK,OAAS,EACVA,GACF,OAAO,OAAO,KAAMA,CAAK,CAE7B,CACA,MAAMA,EAAO,CACX,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,eAAe,IAAI,CAAC,EAAG,KAAMA,CAAK,CAC9E,CACF,EACAD,GAAY,YAAc,2CAC1BA,GAAY,UAAU,QAAU,eAC9BE,GAAiB,CACjBA,EAAa,MAASC,IACb,CAAE,EAAGA,EAAY,EAAG,EAAGA,EAAY,CAAE,GAE9CD,EAAa,UAAaC,IACjB,CAAE,EAAGA,EAAY,WAAY,EAAGA,EAAY,UAAW,GAEhED,EAAa,SAAYC,IAChB,CAAE,EAAGA,EAAY,UAAW,EAAGA,EAAY,SAAU,GAE9DD,EAAa,oBAAuBC,GAAgB,CAClD,OAAQA,EAAY,gBAAiB,CACnC,IAAK,YACL,IAAK,eACL,IAAK,aACH,OAAOC,GAAM,OAAQF,EAAa,OAAOC,CAAW,KAAOD,EAAa,WAAWC,CAAW,CAAC,EACjG,QACE,MAAO,CAAE,EAAGA,EAAY,EAAG,EAAGA,EAAY,CAAE,CAChD,CACF,EACAD,EAAa,mBAAsBC,GAAgB,CACjD,OAAQA,EAAY,gBAAiB,CACnC,IAAK,YACH,OAAOC,GAAM,YAAaF,EAAa,OAAOC,CAAW,KAAOD,EAAa,WAAWC,CAAW,CAAC,EACtG,IAAK,eACL,IAAK,aACH,OAAOC,GAAM,OAAQF,EAAa,OAAOC,CAAW,KAAOD,EAAa,UAAUC,CAAW,CAAC,EAChG,QACE,SAAWD,EAAa,OAAOC,CAAW,CAC9C,CACF,EACAD,EAAa,aAAe,CAACG,EAAQC,IAAU,CAC7C,GAAID,EAAO,OAAS,EAAG,CACrB,IAAIE,EACAC,EACAF,IAAU,EACZC,EAAcF,EAAOA,EAAO,OAAS,GAErCE,EAAcF,EAAOC,EAAQ,GAE3BA,IAAUD,EAAO,OAAS,EAC5BG,EAAaH,EAAO,GAEpBG,EAAaH,EAAOC,EAAQ,GAE9BG,GAAOF,EAAa,+BAA+B,EACnDE,GAAOD,EAAY,8BAA8B,EACjD,IAAME,EAAQN,GAAM,YAAaF,EAAa,OAAOM,CAAU,KAAON,EAAa,OAAOK,CAAW,CAAC,EACtG,MAAO,CAAE,EAAGG,EAAM,EAAI,EAAG,EAAGA,EAAM,EAAI,CAAE,CAC1C,CACA,MAAO,CAAE,EAAG,GAAI,EAAG,EAAG,CACxB,CACF,GAAGV,KAAgBA,GAAc,CAAC,EAAE,EA6dpC,IAAIW,GAAmBC,GAAQC,GAAgB,EAAG,CAAC,EAmFnD,IAAIC,GAAe,KAAM,CACvB,aAAc,CACZ,KAAK,OAAS,CAAE,SAAU,CAAC,CAAE,EAC7B,KAAK,UAAY,CAAC,EAClB,KAAK,IAAM,CAAC,CACd,CACA,OAAO,OAAOC,EAAO,CACnB,GAAIA,EAAO,CACT,IAAMC,EAAQ,IAAIF,GAClB,OAAAE,EAAM,UAAUD,CAAK,EACdC,CACT,CACA,OAAKF,GAAa,WAChBA,GAAa,SAAW,IAAIA,IAEvBA,GAAa,QACtB,CACA,WAAWG,EAAkB,CAC3B,IAAMC,EAAKD,EAAiB,MAAM,GAC9BE,EAAW,KAAK,OAAO,SACtBA,IACH,KAAK,OAAO,SAAWA,EAAW,CAAC,GAErC,IAAIC,EAAQ,GACZ,QAAS,EAAI,EAAG,EAAID,EAAS,OAAQ,IAAK,CACxC,IAAME,EAAQF,EAAS,GACvB,GAA8BE,GAAM,MAAM,KAAQH,EAAI,CACpDE,EAAQ,GACRD,EAAS,GAAKF,EACd,KACF,CACF,CACKG,GACHD,EAAS,KAAKF,CAAgB,EAEhC,KAAK,UAAU,KAAK,MAAM,CAC5B,CACA,UAAUK,EAAQ,CACXA,EAAO,WAEZ,KAAK,OAASA,EACd,KAAK,UAAU,QAAQ,CAACC,EAAGC,IAAO,CAChC,IAAMN,EAAK,KAAK,IAAIM,GACpB,GAAI,CAACN,EACH,OACF,IAAMH,EAAQU,GAAYH,EAAQJ,CAAE,EACpCK,EAAE,SAAS,CAAE,KAAMR,CAAM,CAAC,CAC5B,CAAC,EACH,CACA,iBAAiBW,EAAUC,EAAU,CACnC,YAAK,UAAU,KAAKD,CAAQ,EAC5B,KAAK,IAAI,KAAKC,CAAQ,EACfF,GAAY,KAAK,OAAQE,CAAQ,CAC1C,CACA,eAAeD,EAAU,CACvB,IAAMF,EAAK,KAAK,UAAU,QAAQE,CAAQ,EACtCF,IAAO,KAEX,KAAK,UAAU,OAAOA,EAAI,CAAC,EAC3B,KAAK,IAAI,OAAOA,EAAI,CAAC,EACvB,CACF,EACII,GAAcd,GAClBc,GAAY,SAAW,KA0DvB,SAASC,GAAOC,EAAIC,EAAc,CAChC,GAAM,CAAE,KAAAC,EAAM,MAAAC,CAAM,EAAIF,EACxB,OAAOE,GAASA,EAAM,KAAOH,GAAME,IAASF,CAC9C,CACA,SAASI,GAAYH,EAAcD,EAAI,CACrC,GAAI,CAACC,EACH,OAAO,KACT,GAAIF,GAAOC,EAAIC,CAAY,EACzB,OAAOA,EAET,GAAM,CAAE,SAAAI,CAAS,EAAIJ,EACrB,GAAI,CAACI,GAAY,CAACC,GAAQD,CAAQ,EAChC,OAAO,KACT,QAAWE,KAASF,EAClB,GAAIN,GAAOC,EAAIO,CAAK,EAClB,OAAOA,EAGX,QAAWA,KAASF,EAAU,CAC5B,IAAMG,EAASJ,GAAYG,EAAOP,CAAE,EACpC,GAAIQ,EACF,OAAOA,CACX,CACA,OAAO,IACT,CA0CA,IAAIC,GAAoBC,EAAQ,cAAc,IAAI,EAC9CC,GAAqBF,GAAkB,SAIvCG,GAAyBF,EAAQ,WAAW,SAAgBG,EAAOC,EAAK,CAC1E,IAAIC,EACJ,GAAM,CAAE,WAAAC,EAAY,SAAAC,EAAU,IAAAC,KAAQC,CAAK,EAAIN,EACzCO,EAAQ,CAAE,GAAGD,EAAK,KAAM,EAC1BH,GACF,OAAOI,EAAM,WAEf,IAAMC,EAAkBC,IAAQP,EAAKF,EAAM,KAAO,KAAOE,EAAK,OAC9D,OAAuBL,EAAQ,cAAcW,EAAiB,CAAE,GAAGF,EAAM,MAAAC,EAAO,IAAAN,CAAI,EAAGE,GAA8BN,EAAQ,cAAca,GAA0B,CAAE,MAAOP,EAAY,IAAAE,CAAI,CAAC,EAAGD,CAAQ,CAC5M,CAAC,EAwHD,IAAIO,GAAc,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,OACP,EACIC,GAAkB,WAClBC,GAAqB,OAAOD,GAAgB,MAAM,EACtD,SAASE,GAAYC,EAAK,CACxB,OAAOA,GAAOF,GAAmB,KAAKE,CAAG,EAAIA,EAAI,QAAQH,GAAkBI,GAAQL,GAAYK,EAAI,EAAID,GAAO,EAChH,CACA,IAAIE,GAAgC,yBAChCC,GAA2B,oBAC3BC,GAA6CC,GAC/C,SAAeC,EAAOC,EAAc,CAClC,IAAIC,EAAIC,EACR,GAAM,CACJ,GAAAC,EACA,KAAAC,EACA,KAAAC,EACA,eAAAC,EACA,KAAAC,EACA,eAAAC,EACA,MAAAC,EAAQ,CAAC,EACT,MAAAC,EACA,OAAAC,EACA,KAAAC,EACA,MAAAC,EACA,IAAAC,EACA,OAAAC,EACA,OAAAC,EACA,UAAAC,EACA,uBAAAC,EACA,QAAAC,EAAU,GACV,QAAAC,EACA,SAAAC,EAAW,EACX,kBAAAC,EAAoB,MACpB,WAAAC,EAAa,GACb,oBAAAC,EACA,YAAaC,EAAeC,GAAa,QACzC,mBAAAC,EAAqB,GACrB,eAAAC,EACA,kBAAAC,EACA,oBAAAC,EACA,qBAAAC,EACA,mBAAAC,EACA,gBAAAC,EACA,sBAAAC,EAAwB,GACxB,qBAAAC,EACA,oBAAAC,EACA,aAAAC,GACA,SAAAC,KACGC,CACL,EAAIxC,EACEyC,EAAaC,GAAc,EAC3BC,GAAWC,GAAY5C,CAAK,EAC5B6C,GAAoBC,EAAS,IAAI,EACjCC,GAAY9C,GAAsC4C,GAClD,CAAE,SAAAG,GAAU,SAAAC,EAAS,EAAIC,GAAU,EACnCC,GAAeC,GAAgB,EACrCC,IAAmBnD,EAAKF,EAAM,UAAY,KAAOE,EAAK,CAAC,CAAC,EACxDoD,GAAiBtD,EAAO+C,EAAS,EACjC,IAAMQ,GAA0BC,EAAWC,EAAyB,EAC9DC,GAAaC,GAAoB,EACnCC,GAAiBpD,EACfqD,GAAsBzB,GAAsDhC,EAClF,GAAIyD,IAAuBxB,EAAqB,CAC9C,IAAMyB,GAAWzB,EAAoBwB,IACjC,OAAOC,IAAa,WACtBF,GAAiBE,GAErB,CACA,IAAIC,GAAY,GAChB,GAAIH,GAAgB,CAClB,IAAMI,GAAcvE,GAAYmE,EAAc,EAC9CG,GAAY7B,EAAkBA,EAAgB,QAAQtC,GAA+BoE,EAAW,EAAI,MAAMA,QAC5G,SAAW1D,EACTyD,GAAYzD,UACHG,EAAgB,CACzB,IAAMuD,GAAcvE,GAAYgB,CAAc,EAC9CsD,GAAY7B,EAAkBA,EAAgB,QAAQtC,GAA+BoE,EAAW,EAAI,MAAMA,QAC5G,MAAWzD,IACTwD,GAAYxD,GAEd,IAAM0D,GAAwBC,GAAyB,EACjDC,GAA+CC,EAAQ,IACvDV,IAAc,CAACT,IAAY,CAACE,GACvBY,GACFM,GAAuBN,GAAWd,GAAUE,GAAcc,EAAqB,EACrF,CAACP,GAAYK,GAAWd,GAAUE,GAAcc,EAAqB,CAAC,EAoBzE,GAnBQK,EAAU,IAAM,CACtB,IAAMC,GAAYxB,GAAU,QAC5B,GAAIwB,KAAc,KAChB,OACF,SAASC,GAAmBC,GAAO,CACjC,IAAMC,GAAgBC,GAAkBF,GAAM,OAAQ1B,GAAU,OAAO,EACvE,GAAI0B,GAAM,SAAW,CAACzB,IAAY,CAAC0B,IAAiBA,GAAc,aAAa,QAAQ,IAAM,SAC3F,OACkBE,GAAuB5B,GAAU0B,GAAeT,EAAqB,GAEvFQ,GAAM,eAAe,CAEzB,CACA,OAAAF,GAAU,iBAAiB,QAASC,EAAkB,EAC/C,IAAM,CACXD,GAAU,oBAAoB,QAASC,EAAkB,CAC3D,CACF,EAAG,CAACxB,GAAUiB,EAAqB,CAAC,EACpCY,GAAanE,EAAOyB,EAAuBY,EAAS,EAChD,CAAC3B,EACH,OAAO,KACT0D,GAAwB,EACxB,IAAMC,GAAYvD,GAAcE,EAAa,IAAM,SAC7CsD,EAAQ,CACZ,QAAS,OACT,QAAS,OACT,cAAe,SACf,eAAgBC,GAA0B1D,CAAiB,EAC3D,QAASwD,GAAY,EAAI1D,EACzB,WAAY,CACd,EACM6D,GAAyBvD,GAAa,gBAAgB,EACtDwD,GAASC,GAAcpF,EAAOyC,GAAc,EAAiB,EAAK,EAClE4C,GAAe/C,KAAiB3B,IAAU,QAAUC,IAAW,QAE/D0E,GADuB,CAAC,CAACtF,EAAM,mBAAqB,CAACmF,IAAU,CAACD,IAA0B/C,GAAyBkD,IAChFlF,EAAKH,EAAM,oBAAsB,KAAOG,EAAKoF,GAAkBtE,CAAM,EAAI,OAClH,GAAI,CAACW,EAAoB,CACvB,GAAIuD,IAAUD,IAA0B,CAACG,GAAc,CACrD,IAAMG,GAASC,GAAW,UAAUnE,CAAQ,EAAE,QAAQ,CAAC,EACvD0D,EAAM,UAAY,aAAaG,GAAO,QAAQA,GAAO,eAAeK,SACpER,EAAM,MAAQG,GAAO,MACrBH,EAAM,SAAWG,GAAO,MACxBH,EAAM,OAASG,GAAO,MACxB,MACEH,EAAM,KAAOnE,EACbmE,EAAM,MAAQlE,EACdkE,EAAM,IAAMjE,EACZiE,EAAM,OAAShE,EACfgE,EAAM,MAAQrE,EACdqE,EAAM,OAASpE,EACfoE,EAAM,OAAS1D,EAEbO,GACE,CAAC6B,IAAcH,MACjByB,EAAM,SAAW,SACjBA,EAAM,WAAa,YACnBA,EAAM,OAAS,EACfA,EAAM,IAAMlD,EACZkD,EAAM,MAAQjD,EACdiD,EAAM,OAAShD,EACfgD,EAAM,KAAO/C,GAENyB,KAAe1D,EAAM,eAAiBA,EAAM,oBACrDgF,EAAM,SAAW,WAErB,CACA,OAAAU,GAAwB1F,EAAOgF,CAAK,EACpCW,GAA2B3F,EAAOgF,CAAK,EACnCvD,GACFmE,GAAmCZ,CAAK,EAE1C,OAAO,OAAOA,EAAOhF,EAAM,KAAK,EACD6F,EAC7BC,GAAO,IACP,CACE,GAAA1F,EACA,IAAK2C,GACL,GAAGP,EACH,MAAAwC,EACA,SAAArC,GACA,mBAAoBtC,EACpB,6BAA8B,qBAC9B,cAAeY,EACf,UAAW8E,GAAG7E,EAAWC,EAAwBtB,EAAwB,EACzE,kBAAmByF,GACnB,wBAAyB,CAAE,OAAQnB,EAAqC,CAC1E,CACF,CACF,CACF,EACA,SAASc,GAA0B1D,EAAmB,CACpD,OAAQA,EAAmB,CACzB,IAAK,MACH,MAAO,aACT,IAAK,SACH,MAAO,SACT,IAAK,SACH,MAAO,UACX,CACF,CACA,SAASsD,GAAanE,EAAOsF,EAAqBC,EAAc,CAC9D,IAAMC,EAAepD,EAAS,CAAC,CAAC,EAC3BqD,GAAoBD,EAAa,QAASxF,CAAK,IAClDwF,EAAa,QAAUxF,EACvB0F,GAAU,0BAA0B1F,CAAK,EAAE,KAAM2F,GAAY,CAC3D,GAAI,CAACL,GAAuB,CAACC,EAAa,SAAWtE,GAAa,QAAQ,IAAM,SAC9E,OACsB0E,EAAQ,KAC7BC,GAAWA,EAAO,SAAW,aAAeA,EAAO,QAAU,CAChE,GAEEC,GAAiCN,EAAa,OAAO,CAEzD,CAAC,EAEL,CAGA,IAAIO,GAAoCzG,GACtC,CAACC,EAAOyG,IAAQ,CACd,IAAIvG,EACJ,GAAM,CACJ,sBAAAiC,EAAwB,GACxB,qBAAAC,EACA,oBAAAC,EACA,aAAAC,EACA,OAAAtB,EACA,OAAAC,EACA,SAAAsB,EACA,YAAab,EAAeC,GAAa,QACzC,MAAAjB,EAAQ,CAAC,EACT,OAAAE,EACA,WAAAY,EAAa,GACb,KAAAX,EACA,KAAAR,EACA,QAAAgB,EACA,eAAAQ,EACA,qBAAAG,EACA,mBAAAC,EACA,oBAAAF,EACA,kBAAAD,EACA,MAAAhB,EACA,SAAAQ,EAAW,EACX,MAAA0D,EACA,wBAAA0B,EACA,KAAMC,EACN,IAAA5F,EACA,kBAAAQ,EAAoB,MACpB,QAAAH,EAAU,GACV,MAAAT,EACA,oBAAAc,EACA,mBAAAG,EAAqB,MAClBY,CACL,EAAIxC,EACEyC,EAAaC,GAAc,EAC3BgB,EAAaC,GAAoB,EACjCJ,EAAkBC,EAAaC,EAAyB,EACxDd,EAAWC,GAAY5C,CAAK,EAC5B4G,GAAc9D,EAAS,IAAI,EAC3BmD,EAAeQ,GAAoBG,GAGzC,GAFAtD,GAAiBtD,EAAOiG,CAAY,EACpCpB,GAAanE,EAAOyB,EAAuB8D,CAAY,EACnD,CAAC7E,EACH,OAAO,KACT0D,GAAwB,EACxB,IAAMC,EAAYvD,GAAcE,EAAa,IAAM,SAC7CmF,EAAiB,CACrB,QAAS,OACT,QAAS,OACT,cAAe,SACf,eAAgB5B,GAA0B1D,CAAiB,EAC3D,QAASwD,EAAY,EAAI1D,EACzB,WAAY,CACd,EACM6D,GAAyBvD,GAAa,gBAAgB,EACtDwD,GAASC,GAAcpF,EAAOyC,GAAc,EAAiB,EAAK,EAClE4C,GAAe/C,IAAiB3B,IAAU,QAAUC,IAAW,QAE/D0E,GADuB,CAAC,CAACtF,EAAM,mBAAqB,CAACmF,IAAU,CAACD,IAA0B/C,GAAyBkD,IAChFnF,EAAKF,EAAM,oBAAsB,KAAOE,EAAKqF,GAAkBtE,CAAM,EAAI,OAClH,GAAI,CAACW,EAAoB,CACvB,GAAIuD,IAAUD,IAA0B,CAACG,GAAc,CACrD,IAAMG,GAASC,GAAW,UAAUnE,CAAQ,EAAE,QAAQ,CAAC,EACvDuF,EAAe,UAAY,aAAa1B,GAAO,QAAQA,GAAO,eAAeK,SAC7EqB,EAAe,MAAQ1B,GAAO,MAC9B0B,EAAe,SAAW1B,GAAO,MACjC0B,EAAe,OAAS1B,GAAO,MACjC,MACE0B,EAAe,KAAOhG,EACtBgG,EAAe,MAAQ/F,EACvB+F,EAAe,IAAM9F,EACrB8F,EAAe,OAAS7F,EACxB6F,EAAe,MAAQlG,EACvBkG,EAAe,OAASjG,EACxBiG,EAAe,OAASvF,EAEtBO,GACE,CAAC6B,GAAcH,KACjBsD,EAAe,SAAW,SAC1BA,EAAe,WAAa,YAC5BA,EAAe,OAAS,EACxBA,EAAe,IAAM/E,EACrB+E,EAAe,MAAQ9E,EACvB8E,EAAe,OAAS7E,EACxB6E,EAAe,KAAO5E,GAEfyB,IAAe1D,EAAM,eAAiBA,EAAM,oBACrD6G,EAAe,SAAW,WAE9B,CACA,OAAAnB,GAAwB1F,EAAO6G,CAAc,EAC7ClB,GAA2B3F,EAAO6G,CAAc,EAC5CpF,GACFmE,GAAmCiB,CAAc,EAEnD,OAAO,OAAOA,EAAgB7B,CAAK,EAC/BrC,IACFH,EAAK,OAAS,mBAEOsE,EAAQ,cAC7BhB,GAAO,IACP,CACE,GAAGtD,EACH,IAAKyD,EACL,MAAOY,EACP,SAAAlE,EACA,kBAAmB2C,GACnB,mBAAoBjF,EACpB,6BAA8B,mBAChC,EACAkC,GAAYwE,GAAsBxE,EAAUmE,EAAyBC,CAAS,CAChF,CACF,CACF,EACA,SAASI,GAAsBC,EAASN,EAAyBC,EAAW,CAC1E,IAAIpE,EAAW0E,GAAS,QAAQD,EAAQ,MAAM,QAAQ,EAClDE,GAAUP,CAAS,IACrBpE,EAAWA,EAAS,MAAM,EAAG,CAAC,GAEhCA,EAAWA,EAAS,IAAK4E,GACnBC,GAAeD,CAAK,EACfJ,GAAsBI,EAAOT,EAAyBC,CAAS,EAEpEO,GAAUP,CAAS,EACdA,EAEFQ,CACR,EACD,GAAM,EAAG,mBAAoBE,KAAkBrH,CAAM,EAAIgH,EAAQ,MACjE,GAAIE,GAAUF,EAAQ,IAAI,GAAKM,GAAkBN,EAAQ,IAAI,EAAG,CAC9D,IAAMO,EAAMF,GAAiBG,GAAsBR,EAAQ,IAAI,GAAKA,EAAQ,KACtES,EAAwBP,GAAUK,CAAG,EAA+Cb,IAAwBa,GAAO,OACzHvH,EAAM,UAAY+F,GAAG,cAAe/F,EAAM,UAAWyH,CAAqB,CAC5E,CACA,OAAOC,GAAaV,EAAShH,EAAO,GAAGuC,CAAQ,CACjD,CACA,IAAIoF,GAA2B5H,GAC7B,CAAC,CAAE,SAAAwC,EAAU,KAAAjC,EAAM,eAAAC,KAAmBP,CAAM,EAAGyG,IAAQ,CACrD,IAAMmB,EAAUtH,GAAQiC,GAAYhC,EACpC,GAAI2G,GAAUU,CAAO,EAAG,CAClB,CAAC5H,EAAM,wBAA0B6H,GAAU7H,EAAM,uBAAuB,IAC1EA,EAAM,uBAAyB,OAAO,OAAOA,EAAM,uBAAuB,EAAE,KAAK,GAAG,GAEtF,IAAM8H,EAAc,CAClB,CAACZ,GAAU5G,CAAI,EAAI,OAAS,kBAAmBsH,CACjD,EACA,OAAuBd,EAAQ,cAAchH,GAAoB,CAAE,GAAGE,EAAO,GAAG8H,EAAa,IAAArB,CAAI,CAAC,CACpG,CACA,GAAIW,GAAeQ,CAAO,EAAG,CAC3B,GAAI,CAAC5H,EAAM,yBAA2BkH,GAAUlH,EAAM,sBAAsB,EAAG,CAC7E,GAAM,CAAC+H,EAAIC,EAAIC,EAAIC,EAAGC,CAAC,EAAInI,EAAM,uBAAuB,MAAM,GAAG,EAC7D+H,IAAO,QAAUC,IAAO,QAAUC,IAAO,QAAUC,IAAM,QAAUC,IAAM,OAC3E,QAAQ,KAAK,gDAAgDnI,EAAM,yBAAyB,EAE5FA,EAAM,wBAA0B,CAAE,GAAA+H,EAAI,GAAAC,EAAI,GAAAC,EAAI,EAAAC,EAAG,EAAAC,CAAE,CAEvD,CACA,OAAuBrB,EAAQ,cAAcN,GAAmB,CAAE,GAAGxG,EAAO,IAAAyG,CAAI,EAAGmB,CAAO,CAC5F,CACA,OAAO,IACT,CACF,EAkQA,SAASQ,GAASC,EAAWC,EAAO,CAClC,OAAO,OAAOD,EAAW,CAAE,MAAAC,CAAM,CAAC,CACpC,CACA,SAASC,GAASF,EAAW,CAE3B,OADcA,EAAU,OACR,CAAC,CACnB,CAgIA,IAAIG,GAAkB,CACpB,KAAM,SACN,QAAS,QACT,KAAM,iBACN,KAAM,SACN,QAAS,CACP,IAAK,mBACL,iBAAkB,iBAClB,MAAO,WACT,EACA,MAAO,CACL,QACA,eACA,YACA,aACA,iBACF,EACA,MAAO,qBACP,OAAQ,SACR,QAAS,MACT,QAAS,CACP,eAAgB,aAChB,SAAU,wBACV,KAAM,+DACN,WAAY,kBACZ,KAAM,aACN,MAAO,qBACP,YAAa,sBACf,EACA,aAAc,CACZ,0BAA2B,SAC3B,cAAe,SACf,iBAAkB,SAClB,0BAA2B,SAC3B,MAAO,QACT,EACA,gBAAiB,CACf,mBAAoB,uBACpB,uBAAwB,UACxB,4BAA6B,UAC7B,yBAA0B,UAC1B,8BAA+B,UAC/B,sBAAuB,QACvB,eAAgB,6CAChB,cAAe,YACf,eAAgB,WAChB,mBAAoB,WACpB,eAAgB,WAChB,mCAAoC,UACpC,4BAA6B,UAC7B,MAAO,SACP,OAAQ,UACR,UAAW,SACX,YAAa,UACb,aAAc,UACd,MAAO,UACP,YAAa,UACb,OAAQ,SACR,oBAAqB,SACrB,OAAQ,SACR,oBAAqB,SACrB,WAAY,SACZ,MAAO,SACT,EACA,iBAAkB,CAChB,gBAAiB,UACjB,MAAO,UACP,YAAa,SACf,EACA,MAAO,CACL,YAAa,OACf,EACA,OAAQ,CACN,WAAY,CACV,CACE,KAAM,SACN,SAAU,GACV,WAAY,CACV,CACE,IAAK,YACL,MAAO,YACP,KAAM,OACN,QAAS,CACP,aACA,WACA,MACF,CACF,CACF,CACF,EACA,CACE,KAAM,MACR,CACF,CACF,CACF,EAGI,CAAE,QAAAC,EAAQ,EAAID,GAGlBE,GAAY,UAAU,SAAW,SAAS,CAAE,YAAAC,EAAeC,GAAMA,CAAE,EAAG,CACpE,IAAMC,EAAQC,GAAYH,EAAY,KAAK,IAAI,CAAC,CAAC,EACjD,YAAK,SAAUC,GAAMC,EAAM,IAAIF,EAAYC,CAAC,CAAC,CAAC,EACvCC,CACT,EAGI,SAAW,UACbE,GAAS,MAAM",
  "names": ["npm_react_18_1_exports", "__export", "j", "I", "x", "P", "D", "V", "L", "U", "q", "z", "B", "H", "W", "e", "Y", "J", "K", "X", "Z", "ee", "te", "re", "ne", "oe", "ue", "ae", "ce", "ie", "fe", "se", "le", "pe", "ye", "de", "_e", "me", "e", "t", "r", "n", "o", "u", "a", "c", "i", "f", "s", "l", "p", "A", "y", "d", "_", "E", "F", "G", "m", "h", "v", "b", "C", "M", "N", "O", "escape", "w", "Q", "R", "S", "T", "$", "k", "g", "j", "I", "x", "P", "D", "V", "L", "U", "q", "z", "B", "H", "W", "Y", "J", "K", "X", "Z", "ee", "te", "re", "ne", "oe", "ue", "ae", "ce", "ie", "fe", "se", "le", "pe", "ye", "de", "_e", "me", "__create", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__getProtoOf", "__hasOwnProp", "__commonJS", "cb", "mod", "__copyProps", "to", "from", "except", "desc", "key", "__toESM", "isNodeMode", "target", "__accessCheck", "obj", "member", "msg", "__privateGet", "getter", "__privateAdd", "value", "__privateSet", "setter", "require_memoize_browser_cjs", "exports", "memoize", "fn", "cache", "arg", "require_is_prop_valid_browser_cjs", "_interopDefault", "ex", "reactPropsRegex", "index", "prop", "MotionConfigContext", "z", "p", "MotionContext", "useVisualElementContext", "re", "PresenceContext", "isBrowser", "useIsomorphicLayoutEffect", "fe", "ue", "LayoutGroupContext", "SwitchLayoutGroupContext", "LazyContext", "useVisualElement", "Component2", "visualState", "props", "createVisualElement", "parent", "lazyContext", "presenceContext", "reducedMotionConfig", "visualElementRef", "pe", "visualElement", "window", "isRefObject", "ref", "useMotionRef", "externalRef", "te", "instance", "isVariantLabel", "v", "isAnimationControls", "variantProps", "isControllingVariants", "name", "isVariantNode", "getCurrentTreeVariants", "context", "initial", "animate3", "useCreateMotionContext", "se", "variantLabelsAsDependency", "createDefinition", "propNames", "featureDefinitions", "loadFeatures", "features", "useConstant", "init", "globalProjectionState", "id", "useProjectionId", "VisualElementHandler", "e", "motionComponentSymbol", "createMotionComponent", "preloadedFeatures", "projectionNodeConstructor", "useRender", "useVisualState2", "MotionComponent", "configAndProps", "useLayoutId", "isStatic", "projectionId", "lazyStrictMode", "initialLayoutGroupConfig", "B", "ForwardRefComponent", "Y", "layoutId", "layoutGroupId", "scaleCorrectors", "addScaleCorrector", "correctors", "isMotionValue", "transformPropOrder", "transformProps", "translateAlias", "sortTransformProps", "a", "b", "buildTransform", "transform2", "transformKeys2", "enableHardwareAcceleration", "allowTransformNone", "transformIsDefault", "transformTemplate", "transformString", "clamp", "min", "max", "animationProps", "tapProps", "panProps", "inViewProps", "validMotionProps", "isValidMotionProp", "shouldForward", "loadExternalIsValidProp", "isValidProp", "filterProps", "isDom", "forwardMotionProps", "filteredProps", "isKeyframesTarget", "isCustomValue", "resolveFinalValueInKeyframes", "resolveMotionValue", "unwrappedValue", "resolveVariantFromProps", "definition", "custom", "currentValues", "currentVelocity", "makeState", "scrapeMotionValuesFromProps3", "createRenderState", "onMount", "state", "makeLatestValues", "makeUseVisualState", "config", "make", "scrapeMotionValues", "values", "motionValues", "isControllingVariants$1", "isVariantNode$1", "isInitialAnimationBlocked", "variantToSet", "resolved", "transitionEnd", "transition", "valueTarget", "AnimationType", "AnimationType2", "addDomEvent", "eventName", "handler", "options", "useDomEvent", "element", "isPrimaryPointer", "event", "extractEventInfo", "pointType", "addPointerInfo", "addPointerEvent", "usePointerEvent", "createLock", "lock", "openLock", "globalHorizontalLock", "globalVerticalLock", "getGlobalLock", "drag2", "openHorizontal", "openVertical", "isDragActive", "openGestureLock", "useUnmountEffect", "callback", "combineFunctions", "pipe", "transformers", "usePresence", "isPresent2", "onExitComplete", "register", "id4", "ae", "frameData", "defaultTimestep", "getCurrentTime", "onNextFrame", "window", "callback", "createRenderStep", "runNextFrame2", "toRun", "toRunNextFrame", "numToRun", "isProcessing2", "flushNextFrame", "toKeepAlive", "step", "keepAlive", "immediate", "addToCurrentFrame", "buffer", "index", "frameData2", "i", "maxElapsed", "useDefaultElapsed", "runNextFrame", "isProcessing", "stepsOrder", "steps", "acc", "key", "sync", "process2", "startLoop", "cancelSync", "flushSync", "processStep", "stepId", "processFrame", "timestamp", "addUniqueItem", "arr", "item", "removeItem", "moveItem", "fromIndex", "toIndex", "startIndex", "endIndex", "SubscriptionManager", "handler", "a", "b", "c", "numSubscriptions", "velocityPerSecond", "velocity", "frameDuration", "isFloat", "value", "MotionValue", "init", "options", "v", "render", "delta", "subscription", "eventName", "unsubscribe", "eventManagers", "passiveEffect", "stopPassiveEffect", "prev", "current", "startAnimation", "resolve", "motionValue", "isNumericalString", "isZeroValueString", "sanitize", "floatRegex", "colorRegex", "singleColorRegex", "isString", "number", "alpha", "clamp", "scale", "isColorString", "type", "testProp", "splitColor", "aName", "bName", "cName", "alpha2", "clampRgbUnit", "rgbUnit", "rgba", "red", "green", "blue", "alpha$1", "parseHex", "r", "g", "hex", "createUnitType", "unit", "degrees", "percent", "px", "vh", "vw", "progressPercentage", "hsla", "hue", "saturation", "lightness", "color", "colorToken", "numberToken", "test", "_a", "_b", "analyseComplexValue", "values", "numColors", "numNumbers", "colors", "numbers", "parse", "createTransformer", "source", "tokenised", "numValues", "output", "convertNumbersToZero", "getAnimatableNone", "parsed", "complex", "maxDefaults", "applyDefaultFilter", "name", "number2", "defaultValue", "functionRegex", "filter", "functions", "int", "numberValueTypes", "defaultValueTypes", "getDefaultValueType", "getAnimatableNone2", "defaultValueType", "testValueType", "auto", "dimensionValueTypes", "findDimensionValueType", "valueTypes", "findValueType", "getCurrent", "visualElement", "getVelocity", "resolveVariant", "definition", "custom", "props", "resolveVariantFromProps", "setMotionValue", "setTarget", "resolved", "transitionEnd", "transition", "target", "resolveFinalValueInKeyframes", "setVariants", "variantLabels", "variant", "child", "setValues", "checkTargetForNewValues", "origin", "newValueKeys", "numNewValues", "targetValue", "getOriginFromTransition", "getOrigin", "transitionOrigin", "camelToDash", "str", "optimizedAppearDataId", "optimizedAppearDataAttribute", "mirrorEasing", "easing", "p", "reverseEasing", "easeIn", "easeOut", "easeInOut", "mix", "from", "to", "progress3", "noop", "any", "calcBezier", "t", "a1", "a2", "subdivisionPrecision", "subdivisionMaxIterations", "binarySubdivide", "x", "lowerBound", "upperBound", "mX1", "mX2", "currentX", "currentT", "cubicBezier", "mY1", "mY2", "getTForX", "aX", "circIn", "circOut", "circInOut", "backOut", "backIn", "backInOut", "anticipate", "warning", "invariant", "safeMin", "minDuration", "maxDuration", "minDamping", "maxDamping", "findSpring", "duration", "bounce", "mass", "envelope", "derivative", "dampingRatio", "undampedFreq2", "exponentialDecay", "calcAngularFreq", "e", "f", "initialGuess", "undampedFreq", "approximateRoot", "stiffness", "rootIterations", "result", "durationKeys", "physicsKeys", "isSpringType", "keys2", "getSpringOptions", "springOptions", "derived", "velocitySampleDuration", "spring", "keyframes2", "restSpeed", "restDelta", "state", "damping", "isResolvedFromDuration", "resolveSpring", "zero", "initialVelocity", "createSpring", "initialDelta", "undampedAngularFreq", "angularFreq", "dampedAngularFreq", "freqForT", "currentVelocity", "prevT", "isBelowVelocityThreshold", "isBelowDisplacementThreshold", "_t", "delay", "timeout", "start", "checkElapsed", "elapsed", "isWillChangeMotionValue", "isMotionValue", "appearStoreId", "id4", "handoffOptimizedAppearAnimation", "MotionAppearAnimations", "animationId", "transformProps", "animation", "sampledTime", "secondsToMilliseconds", "seconds", "instantAnimationState", "hueToRgb", "q", "hslaToRgba", "mixLinearColor", "fromExpo", "colorTypes", "getColorType", "asRGBA", "color2", "model", "mixColor", "fromRGBA", "toRGBA", "blended", "getMixer", "mixComplex", "mixArray", "blendValue", "fromThis", "mixObject", "template", "originStats", "targetStats", "pipe", "progress", "toFromDifference", "mixNumber", "detectMixerFactory", "createMixers", "ease", "customMixer", "mixers", "mixerFactory", "numMixers", "mixer", "easingFunction", "interpolate", "input", "isClamp", "inputLength", "interpolator", "progressInRange", "easingLookup", "easingDefinitionToFunction", "x1", "y1", "x2", "y2", "isEasingArray", "defaultEasing", "defaultOffset", "_value", "convertOffsetToTimes", "offset", "o", "keyframes", "keyframeValues", "times", "easingFunctions", "absoluteTimes", "createInterpolator", "decay", "power", "timeConstant", "modifyTarget", "amplitude", "ideal", "types", "loopElapsed", "delay2", "reverseElapsed", "isForwardPlayback", "hasRepeatDelayElapsed", "framesync", "update", "passTimestamp", "animate", "driver", "repeatMax", "repeatType", "repeatDelay", "keyframes$1", "autoplay", "onPlay", "onStop", "onComplete", "onRepeat", "onUpdate", "initialElapsed", "driverControls", "repeatCount", "computedDuration", "isComplete", "interpolateFromNumber", "animator", "repeat", "complete", "play", "sampleResolution", "sampleElapsed", "remaining", "isWaapiSupportedEasing", "supportedWaapiEasing", "cubicBezierAsString", "d", "mapEasingToNativeEasing", "animateStyle", "element", "valueName", "featureTests", "results", "supports", "getFinalKeyframe", "acceleratedValues", "sampleDelta", "createAcceleratedAnimation", "sampleAnimation", "pregeneratedKeyframes", "currentTime", "createInstantAnimation", "setValue", "inertia", "min", "max", "bounceStiffness", "bounceDamping", "currentAnimation", "isOutOfBounds", "findNearestBoundary", "startSpring", "boundary", "heading", "checkBoundary", "underDampedSpring", "criticallyDampedSpring", "linearTween", "keyframesTransition", "defaultTransitions", "getDefaultTransition", "valueKey", "isAnimatable", "isTransitionDefined", "when", "_delay", "delayChildren", "staggerChildren", "staggerDirection", "isZero", "getZeroUnit", "potentialUnitType", "getValueTransition", "getKeyframes", "isTargetAnimatable", "createMotionValueAnimation", "valueTransition", "originKeyframe", "targetKeyframe", "isOriginAnimatable", "acceleratedAnimation", "animateVisualElement", "animations2", "animateVariant", "resolvedDefinition", "animateTarget", "getAnimation", "getChildAnimations", "forwardDelay", "animateChildren", "first", "last", "transitionOverride", "willChange", "animationTypeState", "valueTarget", "shouldBlockAnimation", "appearId", "maxStaggerDuration", "generateStaggerDuration", "sortByTreeOrder", "stopAnimation", "protectedKeys", "needsAnimating", "shouldBlock", "shallowCompare", "next", "prevLength", "variantPriorityOrder", "AnimationType", "reversePriorityOrder", "numAnimationTypes", "animateList", "createAnimationState", "animate3", "createState", "isInitialRender", "buildResolvedTypeValues", "setAnimateFunction", "makeAnimator", "animateChanges", "changedActiveType", "context", "removedKeys", "encounteredKeys", "removedVariantIndex", "typeState", "prop", "propIsVariant", "isVariantLabel", "activeDelta", "isInherited", "isAnimationControls", "variantDidChange", "checkVariantsDidChange", "shouldAnimateType", "definitionList", "resolvedValues", "prevResolvedValues", "allKeys", "markToAnimate", "isKeyframesTarget", "fallbackAnimation", "fallbackTarget", "shouldAnimate", "setActive", "isActive", "_a2", "createTypeState", "makeRenderlessComponent", "hook", "animations", "ue", "isPresent2", "safeToRemove", "usePresence", "presenceContext", "re", "PresenceContext", "distance", "distance2D", "xDelta", "yDelta", "calcLength", "axis", "isNear", "maxDistance", "calcAxisDelta", "calcBoxDelta", "calcRelativeAxis", "relative", "parent", "calcRelativeBox", "calcRelativeAxisPosition", "layout", "calcRelativePosition", "createAxisDelta", "createDelta", "createAxis", "createBox", "prefersReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "isBrowser", "motionMediaQuery", "setReducedMotionPreferences", "updateMotionValuesFromProps", "nextValue", "prevValue", "existingValue", "latestValue", "featureNames", "featureDefinitions", "numFeatures", "propEventHandlers", "VisualElement", "reducedMotionConfig", "visualState", "latestValues", "renderState", "isControllingVariants", "isVariantNode", "initialMotionValues", "_props", "_prevProps", "instance", "_c", "remove", "valueIsTransform", "removeOnChange", "removeOnRenderRequest", "other", "children", "renderedProps", "isStrict", "preloadedFeatures", "projectionId", "ProjectionNodeConstructor", "initialLayoutGroupConfig", "features", "isEnabled", "Component2", "B", "layoutId", "drag2", "dragConstraints", "layoutScroll", "isRefObject", "canMutate", "prevProps", "listener", "startAtParent", "context2", "numVariantProps", "variantProps2", "closestVariantNode", "initial", "valueFromInitial", "args", "animate2", "compareByDepth", "FlatTree", "createMotionProxy", "createConfig", "customMotionComponentConfig", "createMotionComponent", "componentCache", "_target", "lowercaseSVGElements", "isSVGComponent", "isForcedMotionValue", "scaleCorrectors", "isCSSVariable", "getValueAsType", "buildHTMLStyles", "transformTemplate", "style", "vars", "transform2", "transformKeys2", "transformOrigin", "hasTransform2", "hasTransformOrigin", "transformIsNone", "valueType", "valueAsType", "buildTransform", "originX", "originY", "originZ", "createHtmlRenderState", "copyRawValuesOnly", "useInitialMotionValues", "isStatic", "se", "useStyle", "styleProp", "useHTMLProps", "htmlProps", "calcOrigin", "size", "calcSVGTransformOrigin", "dimensions", "pxOriginX", "pxOriginY", "dashKeys", "camelKeys", "buildSVGPath", "attrs", "length", "spacing", "useDashCase", "pathLength", "pathSpacing", "buildSVGAttrs", "attrX", "attrY", "pathOffset", "latest", "isSVGTag2", "createSvgRenderState", "isSVGTag", "tag", "useSVGProps", "_isStatic", "visualProps", "rawStyles", "createUseRender", "forwardMotionProps", "ref", "elementProps", "filterProps", "renderedChildren", "renderHTML", "projection", "camelCaseAttributes", "renderSVG", "_styleProp", "scrapeMotionValuesFromProps", "newValues", "scrapeMotionValuesFromProps2", "targetKey", "svgMotionConfig", "makeUseVisualState", "htmlMotionConfig", "createDomMotionConfig", "createVisualElement", "projectionNodeConstructor", "useFocusGesture", "whileFocus", "animationState", "onFocus", "te", "onBlur", "useDomEvent", "createHoverEvent", "applyVariants", "event", "info", "isDragActive", "useHoverGesture", "onHoverStart", "onHoverEnd", "whileHover", "usePointerEvent", "isNodeOrChild", "useTapGesture", "onTap", "onTapStart", "onTapCancel", "whileTap", "hasPressListeners", "isPressing", "pe", "cancelPointerEndListeners", "eventOptions", "removePointerEndListener", "checkPointerEnd", "onPointerUp", "_d", "onPointerCancel", "startPress", "addPointerEvent", "latestProps", "useUnmountEffect", "observerCallbacks", "observers", "fireObserverCallback", "entry", "fireAllObserverCallbacks", "entries", "initIntersectionObserver", "root", "lookupRoot", "rootObservers", "observeIntersection", "rootInteresectionObserver", "useViewport", "whileInView", "onViewportEnter", "onViewportLeave", "viewport", "shouldObserve", "useMissingIntersectionObserver", "useIntersectionObserver", "thresholdNames", "rootMargin", "amount", "once", "intersectionCallback", "isIntersecting", "fallback", "gestureAnimations", "PanSession", "handlers", "transformPagePoint", "info2", "getPanInfo", "isPanStarted", "isDistancePastThreshold", "point3", "timestamp2", "onStart", "onMove", "event2", "transformPoint", "onEnd", "onSessionEnd", "panInfo", "isPrimaryPointer", "extractEventInfo", "initialInfo", "point2", "onSessionStart", "subtractPoint", "history", "lastDevicePoint", "startDevicePoint", "getVelocity2", "timeDelta", "timestampedPoint", "lastPoint", "time", "applyConstraints", "elastic", "calcRelativeAxisConstraints", "calcRelativeConstraints", "layoutBox", "top", "left", "bottom", "right", "calcViewportAxisConstraints", "layoutAxis", "constraintsAxis", "calcViewportConstraints", "constraintsBox", "calcOrigin2", "sourceLength", "targetLength", "rebaseAxisConstraints", "constraints", "relativeConstraints", "defaultElastic", "resolveDragElastic", "dragElastic", "resolveAxisElastic", "minLabel", "maxLabel", "resolvePointElastic", "label", "eachAxis", "convertBoundingBoxToBox", "convertBoxToBoundingBox", "y", "transformBoxPoints", "transformPoint2", "topLeft", "bottomRight", "isIdentityScale", "scale2", "hasScale", "scaleX", "scaleY", "hasTransform", "has2DTranslate", "is2DTranslate", "scalePoint", "originPoint", "distanceFromOrigin", "scaled", "applyPointDelta", "translate", "boxScale", "applyAxisDelta", "applyBoxDelta", "box", "applyTreeDeltas", "treeScale", "treePath", "isSharedTransition", "treeLength", "node", "transformBox", "snapToDefault", "translateAxis", "distance2", "transformAxis", "transforms", "scaleKey", "originKey", "axisOrigin", "xKeys", "yKeys", "measureViewportBox", "measurePageBox", "rootProjectionNode2", "viewportBox", "scroll2", "elementDragControls", "VisualElementDragControls", "originEvent", "snapToCursor", "dragPropagation", "onDragStart", "getGlobalLock", "measuredAxis", "dragDirectionLock", "onDirectionLock", "onDrag", "getCurrentDirection", "isDragging", "onDragEnd", "_point", "shouldDrag", "axisValue", "prevConstraints", "onMeasureDragConstraints", "constraintsElement", "measuredConstraints", "userConstraints", "dragMomentum", "dragTransition", "dragSnapToOrigin", "onDragTransitionEnd", "momentumAnimations", "inertia2", "dragKey", "externalMotionValue", "boxProgress", "stopPointerListener", "dragListener", "measureDragConstraints", "stopMeasureLayoutListener", "stopResizeListener", "addDomEvent", "stopLayoutUpdateListener", "hasLayoutChanged", "motionValue2", "direction", "currentDirection", "lockThreshold", "useDrag", "groupDragControls", "dragControls", "useConstant", "usePanGesture", "onPan", "onPanStart", "onPanEnd", "onPanSessionStart", "hasPanEvents", "panSession", "MotionConfigContext", "onPointerDown", "drag", "isCSSVariable2", "cssVariableRegex", "parseCSSVariable", "match", "token", "maxDepth", "getVariableValue", "depth", "resolveCSSVariables", "positionalKeys", "isPositionalKey", "hasPositionalKey", "isNumOrPxType", "BoundingBoxDimension", "BoundingBoxDimension2", "getPosFromMatrix", "matrix", "pos", "getTranslateFromMatrix", "pos2", "pos3", "_bbox", "matrix3d", "transformKeys", "nonTranslationalTransformKeys", "transformPropOrder", "removeNonTranslationalTransform", "removedTransforms", "positionalValues", "paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "convertChangedValueTypes", "changedKeys", "originBbox", "elementComputedStyle", "display", "targetBbox", "checkAndConvertChangedValueTypes", "targetPositionalKeys", "removedTransformValues", "hasAttemptedToRemoveTransformValues", "changedValueTypeKeys", "fromType", "toType", "numKeyframes", "scrollY", "convertedTarget", "unitConversion", "parseDomVariant", "DOMVisualElement", "transformValues", "isMounted", "getComputedStyle2", "HTMLVisualElement", "defaultType", "computedStyle", "SVGVisualElement", "createDomVisualElement", "pixelsToPercent", "pixels", "correctBorderRadius", "varToken", "correctBoxShadow", "projectionDelta", "original", "containsCSSVariables", "cssVariables", "shadow", "xScale", "yScale", "averageScale", "cssVariable", "MeasureLayoutWithContext", "layoutGroup", "switchLayoutGroup", "addScaleCorrector", "defaultScaleCorrectors", "globalProjectionState", "layoutDependency", "promoteContext", "MeasureLayout", "LayoutGroupContext", "SwitchLayoutGroupContext", "layoutFeatures", "borders", "numBorders", "asNumber", "isPx", "mixValues", "follow", "lead", "shouldCrossfadeOpacity", "isOnlyMember", "easeCrossfadeIn", "easeCrossfadeOut", "borderLabel", "followRadius", "getRadius", "leadRadius", "radiusName", "compress", "copyAxisInto", "originAxis", "copyBoxInto", "originBox", "removePointDelta", "removeAxisDelta", "sourceAxis", "removeAxisTransforms", "xKeys2", "yKeys2", "removeBoxTransforms", "sourceBox", "isAxisDeltaZero", "isDeltaZero", "boxEquals", "aspectRatio", "NodeStack", "prevLead", "indexOfNode", "member", "preserveFollowOpacity", "crossfade", "_e", "buildProjectionTransform", "latestTransform", "xTranslate", "yTranslate", "rotate", "rotateX", "rotateY", "elementScaleX", "elementScaleY", "transformAxes", "animationTarget", "id2", "createProjectionNode", "attachResizeListener", "defaultParent", "measureScroll", "checkIsScrollRoot", "resetTransform", "elementId", "propagateDirtyNodes", "resolveTargetDelta", "calcProjection", "subscriptionManager", "isLayoutDirty", "cancelDelay", "resizeUnblockUpdate", "finishAnimation", "hasRelativeTargetChanged", "newLayout", "layoutTransition", "defaultLayoutTransition", "onLayoutAnimationStart", "onLayoutAnimationComplete", "targetChanged", "hasOnlyRelativeTargetChanged", "animationOptions", "resetRotation", "shouldNotifyListeners", "clearMeasurements", "mountNodeEarly", "resetTransformStyle", "updateLayout", "notifyLayoutUpdate", "clearSnapshot", "removeLeadSnapshots", "prevLayout", "phase", "needsMeasurement", "isResetRequested", "hasProjection", "transformTemplateValue", "transformTemplateHasChanged", "removeTransform", "pageBox", "roundBox", "boxWithoutScroll", "rootScroll", "transformOnly", "withTransforms", "boxWithoutTransform", "nodeBox", "relativeParent", "isProjectionDirty", "isTransformDirty", "isShared", "canSkip", "prevTreeScaleX", "prevTreeScaleY", "prevProjectionTransform", "notifyAll2", "snapshot", "snapshotLatestValues", "mixedValues", "targetDelta", "relativeLayout", "isSharedLayoutAnimation", "hasOpacityCrossfade", "mixAxisDelta", "mixBox", "targetWithTransforms", "shouldAnimatePositionOnly", "xLength", "yLength", "stack", "needsReset", "hasRotate", "resetValues", "styles", "resolveMotionValue", "emptyStyles", "valuesToRender", "correct", "applyTo", "corrected", "num", "measuredLayout", "animationType", "axisSnapshot", "layoutDelta", "visualDelta", "parentSnapshot", "parentLayout", "relativeSnapshot", "mixAxis", "searchNode", "roundAxis", "DocumentProjectionNode", "notify2", "rootProjectionNode", "HTMLProjectionNode", "documentNode", "featureBundle", "motion", "config", "m", "createMotionProxy", "createDomMotionConfig", "useIsMounted", "isMounted", "pe", "useIsomorphicLayoutEffect", "useForceUpdate", "forcedRenderCount", "setForcedRenderCount", "ye", "forceRender", "te", "sync", "PopChildMeasure", "I", "prevProps", "element", "size", "PopChild", "children", "isPresent2", "id4", "ae", "ref", "ie", "width", "height", "top", "left", "style", "B", "q", "PresenceChild", "initial", "onExitComplete", "custom", "presenceAffectsLayout", "mode", "presenceChildren", "useConstant", "newChildrenMap", "context", "se", "childId", "isComplete", "_", "key", "ue", "PresenceContext", "getChildKey", "child", "updateChildLookup", "allChildren", "onlyElements", "filtered", "j", "J", "AnimatePresence", "exitBeforeEnter", "forceRenderLayoutGroup", "re", "LayoutGroupContext", "filteredChildren", "childrenToRender", "exiting", "presentChildren", "isInitialRender", "useUnmountEffect", "x", "presentKeys", "targetKeys", "numPresent", "i", "insertionIndex", "onExit", "removeIndex", "presentChild", "DeprecatedLayoutGroupContext", "z", "notify", "node", "nodeGroup", "nodes", "subscriptions", "dirtyAll", "_a", "shouldInheritGroup", "inherit", "shouldInheritId", "LayoutGroup", "inheritId", "layoutGroupContext", "deprecatedLayoutGroupContext", "upstreamId", "memoizedContext", "MotionConfig", "children", "isValidProp", "config", "loadExternalIsValidProp", "re", "MotionConfigContext", "useConstant", "context", "se", "B", "useMotionValue", "initial", "value", "useConstant", "motionValue", "isStatic", "re", "MotionConfigContext", "setLatest", "ye", "ue", "isCustomValueType", "v", "getMixer2", "transform", "args", "useImmediate", "argOffset", "inputValue", "inputRange", "outputRange", "options", "interpolator", "interpolate", "useCombineMotionValues", "values", "combineValues", "updateValue", "useIsomorphicLayoutEffect", "scheduleUpdate", "sync", "subscriptions", "unsubscribe", "cancelSync", "useTransform", "input", "inputRangeOrTransformer", "transformer", "useListTransform", "latest", "numValues", "ReorderContext", "z", "checkReorder", "order", "offset", "velocity", "index", "item2", "nextOffset", "nextItem", "item", "nextLayout", "nextItemCenter", "mix", "moveItem", "ReorderGroup", "children", "as", "axis", "onReorder", "props", "externalRef", "Component2", "motion", "isReordering", "pe", "invariant", "context", "layout", "entry", "compareMin", "id4", "newOrder", "getValue", "B", "Group", "Y", "a", "b", "useDefaultMotionValue", "defaultValue", "isMotionValue", "ReorderItem", "style", "onDrag", "point2", "zIndex", "latestX", "latestY", "measuredLayout", "registerItem", "updateOrder", "event", "gesturePoint", "measured", "Item", "domAnimation", "createDomVisualElement", "animations", "gestureAnimations", "domMax", "drag", "layoutFeatures", "HTMLProjectionNode", "clamp2", "min", "max", "v", "isNumber", "value", "isEasingList", "easing", "wrap", "rangeSize", "getEasingForSegment", "i", "mix2", "progress3", "noopReturn", "progress2", "fillOffset", "offset", "remaining", "offsetProgress", "defaultOffset2", "length", "interpolate2", "output", "input", "remainder", "t", "progressInRange", "isFunction", "isString2", "velocityPerSecond2", "velocity", "frameDuration", "resolveElements", "elements", "selectorCache", "_a", "__rest", "s", "e", "p", "thresholds", "inView", "elementOrSelector", "onStart", "root", "rootMargin", "amount", "activeIntersections", "onIntersectionChange", "entries", "entry", "onEnd", "newOnEnd", "observer2", "element", "resizeHandlers", "observer", "getElementSize", "target", "borderBoxSize", "inlineSize", "blockSize", "notifyTarget", "contentRect", "handler", "notifyAll", "createResizeObserver", "resizeElement", "elementHandlers", "windowCallbacks", "windowResizeHandler", "createWindowResizeHandler", "size", "window", "info", "callback", "resizeWindow", "resize", "a", "b", "maxElapsed2", "createAxisInfo", "createScrollInfo", "keys", "updateAxisInfo", "axisName", "time", "axis", "position", "prev", "prevTime", "elapsed", "updateScrollInfo", "calcInset", "container", "inset", "current", "top", "left", "ScrollOffset", "namedEdges", "resolveEdge", "edge", "delta", "asNumber2", "defaultOffset3", "resolveOffset", "containerLength", "targetLength", "targetInset", "offsetDefinition", "targetPoint", "containerPoint", "point", "resolveOffsets", "options", "lengthLabel", "targetSize", "containerSize", "hasChanged", "numOffsets", "measure", "node", "createOnScrollHandler", "onScroll", "scrubAnimation", "controls", "axisInfo", "animation", "_b", "timingOptions", "scrollListeners", "resizeListeners", "onScrollHandlers", "getEventTarget", "scroll", "containerHandlers", "containerHandler", "listener2", "listener", "onLoadProcesss", "_a2", "containerHandlers2", "refWarning", "name", "ref", "warning", "createScrollMotionValues", "motionValue", "useScroll", "layoutEffect", "values", "useConstant", "useIsomorphicLayoutEffect", "ue", "x", "y", "useAnimationFrame", "callback", "initialTimestamp", "pe", "isStatic", "re", "MotionConfigContext", "ue", "provideTimeSinceStart", "timestamp", "delta", "sync", "cancelSync", "useReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "shouldReduceMotion", "ye", "prefersReducedMotion", "useReducedMotionConfig", "reducedMotionPreference", "reducedMotion", "re", "MotionConfigContext", "animationControls", "hasMounted", "subscribers", "controls", "visualElement", "definition", "transitionOverride", "invariant", "animations2", "animateVisualElement", "setValues", "stopAnimation", "useAnimationControls", "useConstant", "useIsomorphicLayoutEffect", "useAnimation", "useInView", "ref", "root", "margin", "amount", "once", "isInView", "setInView", "ye", "ue", "onEnter", "options", "inView", "isMotionComponent", "component", "motionComponentSymbol", "unwrapMotionComponent", "useInstantLayoutTransition", "startTransition", "callback", "rootProjectionNode", "useInstantTransition", "forceUpdate", "forcedRenderCount", "useForceUpdate", "startInstantLayoutTransition", "ue", "sync", "instantAnimationState", "useResetProjection", "te", "root", "createObject", "useVisualState", "makeUseVisualState", "createObject", "require_hsluv", "__commonJS", "exports", "module", "hsluv", "a", "b", "x", "y", "point", "line", "slope", "intercept", "angle", "m2", "theta", "L", "result", "sub1", "sub2", "_g", "m1", "m3", "_g1", "t", "top1", "top2", "bottom", "bounds", "min", "bound", "length", "H", "hrad", "sum", "i", "c", "tuple", "rgbl", "Y", "X", "Z", "divider", "varU", "varV", "U", "V", "C", "Hrad", "S", "max", "h", "chan", "digit2", "digit1", "hex2", "ret", "n", "s", "root", "require_eventemitter3", "has", "prefix2", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter2", "names", "events2", "name", "handlers", "l", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "j", "require_browser", "process13", "cachedSetTimeout", "cachedClearTimeout", "defaultSetTimout", "defaultClearTimeout", "runTimeout", "fun", "runClearTimeout", "marker", "queue", "draining", "currentQueue", "queueIndex", "cleanUpNextTick", "drainQueue", "timeout", "Item", "array", "noop", "dir", "require_react_is_production_min", "d", "e", "f", "g", "k", "p", "q", "r", "v", "w", "z", "u", "A", "require_react_is", "require_hoist_non_react_statics_cjs", "reactIs", "REACT_STATICS", "KNOWN_STATICS", "FORWARD_REF_STATICS", "MEMO_STATICS", "TYPE_STATICS", "getStatics", "component", "defineProperty", "getOwnPropertyNames", "getOwnPropertySymbols", "getOwnPropertyDescriptor", "getPrototypeOf", "objectPrototype", "hoistNonReactStatics", "targetComponent", "sourceComponent", "blacklist", "inheritedComponent", "keys3", "targetStatics", "sourceStatics", "key7", "descriptor", "require_fontfaceobserver_standalone", "B", "D", "E", "F", "G", "J", "window", "K", "b2", "M", "b3", "c2", "N", "I", "computeRelativePath", "from", "to", "fromDir", "getDirAndFile", "toDir", "toFile", "relativePath", "relative", "path", "index", "CHAR_DOT", "CHAR_FORWARD_SLASH", "StringPrototypeCharCodeAt", "str", "StringPrototypeLastIndexOf", "searchString", "StringPrototypeSlice", "start", "end", "normalizeString", "fromStart", "fromEnd", "fromLen", "toStart", "toLen", "lastCommonSep", "fromCode", "out", "allowAboveRoot", "separator", "isPathSeparator", "code", "res", "lastSegmentLength", "lastSlash", "dots", "lastSlashIndex", "isObject", "value", "isString", "preloadKey", "isLazyComponentType", "componentType", "lazy", "factory", "LazyComponent", "factoryPromise", "LoadedComponent", "Component15", "props", "ref", "getRouteElementId", "route", "elementId", "renderPage", "Page4", "defaultPageStyle", "element", "NotFoundError", "ErrorBoundary", "error", "nextProps", "prevState", "newState", "notFoundPage", "pathVariablesRegExpRaw", "pathVariablesRegExp", "pushRouteState", "routeId", "currentRoutePath", "pathVariables", "newPath", "getPathForRoute", "useReplaceInitialState", "disabled", "initialPathVariables", "usePopStateHandler", "setCurrentRouteId", "popStateHandler", "state", "relative2", "_a", "hash2", "currentPath", "p1", "_a2", "memoPathRoutes", "memoPaths", "lastRoutes", "getRouteInfoMemo", "routes", "pathDepth", "depth1", "depth2", "inferInitialRouteFromPath", "decodedLocationPath", "fallback", "pathRoutes", "paths", "exactMatch", "match", "matchPath", "rootPath", "firstRoute", "pathWithTrimmedSlashes", "routePath", "pathVariablesKeys", "routePathRegExpString", "escapeStringRegExp", "_", "routePathRegExp", "matches", "pathVariablesValues", "existingValue", "string", "key", "isRoute", "isSamePage", "aPathVariables", "bPathVariables", "useGetRouteCallback", "RouterContext", "RouterAPIProvider", "api", "children", "useRouter", "RoutesProvider", "getRoute", "useForceUpdate2", "setForcedRenderCount", "Router", "disableHistory", "initialRoute", "currentRouteRef", "currentPathVariablesRef", "nextElementRef", "nextSmoothScrollRef", "dep", "forceUpdate", "scrollElementIntoView", "navigate", "smoothScroll", "_b", "newRoute", "inUse", "usedVariable", "routeElementId", "currentRoute", "currentRouteId", "currentPathVariables", "current", "scrollIntoViewOptions", "CurrentRouteContext", "useCurrentRoute", "router", "override", "re", "id", "useCurrentPathVariables", "_a", "useCurrentRoute", "useRoute", "routeId", "routerAPI", "useRouter", "useRoutePreloader", "routeIds", "enabled", "getRoute", "e", "route", "preloadComponent", "component", "isLazyComponentType", "useRouteElementId", "id", "targetRouteId", "_a", "currentRoute", "useCurrentRoute", "route", "useRoute", "e", "getRouteElementId", "warningMessages", "warnOnce", "keyMessage", "rest", "deprecationWarning", "removedItem", "removalVersion", "replacement", "replacementText", "warningText", "Observers", "observer", "isCalled", "change", "transaction", "accumulatedChange", "finishObservers", "Animatable", "Animatable2", "value", "isAnimatable", "AnimatableValue", "update", "transactionId", "updatedValues", "animatable", "finish", "defaultValue", "object", "result", "key7", "onUpdateKey", "finishTransactionKey", "animatableInterpolation", "currentInterpolation", "from", "to", "fromValue", "toValue", "progress2", "v", "oldValue", "handler", "isMotionValue2", "MotionValue", "roundedNumber", "decimals", "d", "multiplier", "roundWithOffset", "value", "offset", "Point", "x", "y", "Point3", "args", "previousValue", "currentValue", "a", "b", "point", "deltaX", "deltaY", "lastValue", "diff", "maxDiff", "nTimes", "center", "BezierDefaults", "controlPointsForCurve", "curve", "BezierAnimator", "options", "interpolation", "delta", "duration", "controlPoints", "p1x", "p1y", "p2x", "p2y", "UnitBezier", "point1", "point2", "epsilon2", "t", "t0", "t1", "t2", "x2", "d2", "i", "Integrator", "accelerationFunction", "state", "dt", "c", "d", "dxdt", "dvdt", "initialState2", "dv", "derivative", "isInterpolatable", "value", "Interpolation", "from", "to", "NumberInterpolation", "a1", "b1", "progress2", "epsilon", "minDuration", "maxDuration", "minDamping", "maxDamping", "approximateRoot", "func", "derivative", "initialGuess", "times", "result", "i", "end", "asc", "angularFrequency", "undampedFrequency", "dampingRatio", "SpringCurveValueConverter", "tension", "friction", "mass", "velocity", "duration", "a", "b", "d", "envelope", "envelopeUndampedFrequency", "exponentialDecay", "currentDisplacement", "c", "derivativeUndampedFrequency", "e", "f", "SpringTensionFrictionDefaults", "SpringDampingDurationDefaults", "isDampingDurationSpringOptions", "options", "SpringAnimator", "interpolation", "_opt", "toPass", "Integrator", "state", "delta", "positionNearZero", "velocityNearZero", "import_hsluv", "__toESM", "require_hsluv", "cssNames", "modulate", "value", "rangeA", "rangeB", "limit", "fromLow", "fromHigh", "toLow", "toHigh", "fromDelta", "toDelta", "result", "isNumeric", "percentToFraction", "val", "digits", "numberFromString", "input", "match", "hsluvToRgb", "rgbToHsluvExternal", "import_hsluv", "rgbToHsluv", "r", "g", "b", "h", "s", "l", "rgbaFromHusl", "a", "rgb", "hsvToStr", "v", "_h", "_s", "_v", "rgbToRgb", "bound01", "rgbToHex", "allow3Char", "hex2", "pad2", "rgbToHsl", "_r", "_g", "_b", "max", "min", "d", "hue2rgb", "p", "q", "t", "hslToRgb", "rgbToHsv", "hsvToRgb", "i", "f", "mod", "n", "_max", "_n", "isOnePointZero", "processPercent", "isPercentage", "char", "matchers", "cssInteger", "cssUnit", "permissiveMatch3", "permissiveMatch4", "stringToObject", "inputColor", "_a", "_c", "_d", "_e", "_f", "_i", "_j", "_k", "_l", "_m", "_o", "_p", "_q", "_t", "_u", "_w", "_x", "_y", "_z", "_A", "_B", "trimLeft", "trimRight", "color2", "named", "cssNames", "parseIntFromHex", "convertHexToDecimal", "cache", "Color", "Color2", "c", "createColor", "created", "colorData", "getCompleteColorStrategy", "newColor", "ColorMixModel", "colorModel", "initialValue", "colorString", "hsl", "hsv", "key7", "amount", "angle", "alphaValue", "colorA", "colorB", "model", "progress2", "from", "toColor", "fromColor", "mixer", "fraction2", "hslA", "hslB", "fromH", "toH", "deltaH", "tween", "gen", "name", "deltaR", "deltaG", "deltaB", "deltaR2", "deltaG2", "deltaB2", "tolerance", "colorOrR", "completeColor", "getCompleteColorFromRGB", "getCompleteColorFromString", "getCompleteColorFromHSL", "getCompleteColorFromHSV", "correctAlpha", "ColorInterpolation", "type", "to", "Interpolation", "NoInterpolation", "ObjectInterpolation", "valueInterpolation", "interpolations", "keys3", "sum", "difference", "DefaultInterpolationOptions", "ValueInterpolation", "options", "NumberInterpolation", "constructor", "isInterpolatable", "interpolation", "Defaults2", "PrecalculatedAnimator", "options", "delta", "value", "time2", "index", "end", "mockWindow", "query", "safeWindow", "window", "_raf", "f", "__raf", "raf", "import_eventemitter3", "__toESM", "require_eventemitter3", "EventEmitter3", "EventEmitter", "listeners", "eventName", "fn", "once", "unique", "context", "name", "handler", "count", "args", "LoopTimeStep", "Loop", "start", "task", "_a", "postEventTasks", "length", "i", "MainLoop", "RenderTarget", "RenderTarget2", "RenderEnvironment", "RenderTarget2", "current", "RenderEnvironment", "hasRestrictions", "target", "RenderTarget", "AnimationDriver", "animator", "updateCallback", "finishedCallback", "frame2", "elapsed", "value", "MainLoopAnimationDriver", "MainLoop", "DefaultDeprecatedAnimationOptions", "FramerAnimation", "from", "to", "animatorClass", "options", "driverClass", "deprecatedAnimationOptions", "animatorOptions", "interpolation", "ValueInterpolation", "BezierAnimator", "PrecalculatedAnimator", "isFinished", "isAnimatable", "isMotionValue2", "targetObject", "Animatable", "update", "key7", "targetValue", "oldValue", "resolve", "reject", "reason", "deprecatedAnimate", "deprecationWarning", "fromValue", "animation", "animate2", "animate4", "animatorOrTransition", "SpringAnimator", "correctBorderScale", "axis", "latest", "delta", "treeScale", "corrected", "addScaleCorrector", "assert", "condition", "msg2", "_a", "_b", "e", "lines", "assertNever", "x", "error", "LayoutIdContext", "args", "LayoutIdProvider", "children", "re", "cache3", "pe", "screen", "usedIds", "getLayoutId", "te", "id", "name", "duplicatedFrom", "cacheKey", "previousId", "nodeIdentifier", "possibleMatch", "index", "duplicatedId", "match", "byLastIdMatch", "matchedLayoutId", "shouldUseNamedLastIdMatch", "previousLayoutId", "shouldUseNamedMatch", "last", "possible", "rootDuplicatedId", "identifier", "value", "layoutId", "nextValue", "nextLayoutId", "lastId", "possibleId", "persistLayoutIdCache", "contextValue", "initialValue", "AutomaticLayoutIds", "enabled", "props", "context", "se", "useConstant", "init", "ref", "baseStyle", "errorStyle", "textStyle", "titleStyle", "messageStyle", "ErrorPlaceholder", "file", "title", "stripSlash", "message", "HAND_IMG_GAP_BOTTOM", "isFiniteNumber", "value", "isEmpty", "obj", "isReactElement", "test2", "isReactChild", "Rect", "Rect2", "equals", "rect", "other", "size2", "a", "b", "n", "delta", "xOffset", "yOffset", "inflate", "value", "doubleValue", "x", "y", "rectMaxX", "rectMaxY", "width", "height", "decimals", "roundedNumber", "ps", "xValues", "point", "yValues", "min", "max", "rect1", "rect2", "x2", "y2", "matrix", "x1", "y1", "x3", "y3", "x4", "y4", "rectA", "rectB", "aMax", "bMax", "rects", "comparingRect", "rectMinX", "rectMinY", "rectMidX", "rectMidY", "Point", "fromAnyDefaults", "defaults", "ConstraintMask", "ConstraintMask2", "constraints", "isFiniteNumber", "valueToDimensionType", "value", "trimmedValue", "ConstraintValues", "ConstraintValues2", "props", "left", "right", "top", "bottom", "width", "height", "centerX", "centerY", "aspectRatio", "autoSize", "isAnimatable", "widthValue", "heightValue", "widthType", "heightType", "parsedWidth", "Animatable", "parsedHeight", "centerAnchorX", "centerAnchorY", "values", "parentSize", "freeSpace", "parentWidth", "parentHeight", "hOpposingPinsOffset", "pinnedOffset", "assertNever", "vOpposingPinsOffset", "sizeAfterApplyingDefaultsAndAspectRatio", "parentSizeInfo", "pixelAlign", "_a", "_b", "x", "y", "parentSizeForSizing", "parentSizeForPositioning", "positioningParentWidth", "positioningParentHeight", "f", "Rect", "defaultWidth", "defaultHeight", "getConstraintValue", "constraint", "constrainHeight", "constrainWidth", "w", "h", "start", "end", "isString2", "t", "containsInvalidStringValues", "props", "left", "right", "top", "bottom", "center", "constraintsEnabled", "_constraints", "sizeFromFiniteNumberProps", "size2", "width", "height", "isFiniteNumber", "rectFromFiniteNumberProps", "calculateRect", "parentSize", "pixelAlign", "parentSizeDisabled", "ParentSizeState", "constraintValues", "getConstraintValues", "enabledParentSize", "deprecatedParentSize", "parentSizeInfo", "ConstraintValues", "aspectRatio", "autoSize", "constraintMask", "ConstraintMask", "valueToDimensionType", "widthValue", "heightValue", "widthType", "heightType", "parsedWidth", "parsedHeight", "centerAnchorX", "centerAnchorY", "ParentSizeState2", "ConstraintsContext", "e", "useParentSize", "isSize", "o", "ProvideParentSize", "currentParentSize", "children", "value", "getParentWidth", "getParentHeight", "ConsumeParentSize", "useProvideParentSize", "node", "useConstraints", "ControlType", "ControlType2", "isFlexboxGapSupportedCached", "isFlexboxGapSupported", "flex", "isSupported", "flexboxGapNotSupportedClass", "initialized", "installFlexboxGapWorkaroundIfNeeded", "richTextStylesRule", "richTextParagraphSpacingStylesRule", "richTextBackgroundMaskStylesRule", "richTextLinkStylesRule", "richTextLinkHoverStylesRule", "richTextLinkCurrentStylesRule", "richTextLinkCurrentHoverStylesRule", "richTextBoldStylesRule", "richTextItalicStylesRule", "richTextImageRule", "richTextBlockElementResetRule", "richTextStylesPresetResetRule", "richTextStylesList", "richTextStylesListItem", "richTextStylesNumberedListMarker", "richTextStylesBulletedListMarker", "deprecatedRichTextCSSRules", "richTextCSSRules", "defaultCache", "defaultSheet", "injectCSSRule", "cssRule", "sheet", "cache3", "styleElement", "componentCSSRules", "textAlignmentRule", "textBlockSpanRule", "textInlineSpanRule", "renderTextStylesRule", "textStylesRule", "linkStylesRule", "linkHoverStylesRule", "linkCurrentStylesRule", "textCSSRules", "stackPositionRule", "nativeStackGapRules", "stackGapRule", "stackDirectionRuleVertical", "stackDirectionRuleHorizontal", "stackCSSRules", "navigationCSSRules", "scrollCSSRules", "nativeScrollCSSRules", "deviceComponentCSSRules", "pageContentWrapperWrapperCSSRules", "presenceCSS", "cursorCSS", "frameCSS", "resetCSS", "frameCSSRules", "isPreview", "svgCSSRules", "combineCSSRules", "combinedCSSRules", "combinedCSSRulesForPreview", "injectComponentCSSRules", "styles", "RenderTarget", "rule", "addPropertyControls", "component", "propertyControls", "getPropertyControls", "presetsBase", "devicePresets", "devicePresetsMap", "devicePresets", "map", "preset", "import_process3", "__toESM", "require_browser", "memoize", "fn", "cache3", "arg", "reactPropsRegex", "isPropValid", "prop", "useIsomorphicLayoutEffect2", "fe", "ue", "mockWithWarning", "message", "warnOnce", "implementation", "image", "_a", "rect", "nodeId", "element", "runtime", "isRuntimeInjected", "runtimeProxy", "target", "key7", "reciever", "isFunction", "value", "isString3", "isNumber", "isArray", "isObject2", "minZoomForPixelatedImageRendering", "image", "containerSize", "devicePixelRatio3", "_a", "_b", "_c", "_d", "frameWidth", "frameHeight", "imageWidth", "imageHeight", "frameAspectRatio", "imageAspectRatio", "imageRenderingForZoom", "zoom", "minPixelatedZoom", "wrapperStyle", "placeholderStyle", "cssObjectFit", "imageFit", "cssImageRendering", "RenderTarget", "safeWindow", "RenderEnvironment", "getImageStyle", "InnerImage", "nodeId", "alt", "wrapperRef", "e", "isStaticRendering", "source", "runtime", "imageStyle", "imageElement", "useIsomorphicLayoutEffect2", "wrapper", "BackgroundImageComponent", "layoutId", "props", "hasImage", "hasPlaceholder", "motion", "key2", "BackgroundImage", "BackgroundImage2", "applyForwardOverrides", "background", "_forwardedOverrideId", "_forwardedOverrides", "id", "forwardedOverrideId", "src", "backgroundImageFromProps", "backgroundImage", "Animatable", "collectBorderStyleForProps", "style", "collapseEqualBorders", "borderWidth", "borderStyle", "borderColor", "borderTop", "borderBottom", "borderLeft", "borderRight", "Border", "import_process", "__toESM", "require_browser", "safeNavigator", "navigator", "isBrowser2", "safariVersion", "version2", "result", "safeNavigator", "isChrome", "isEdge", "isSafari", "isFramerX", "safeNavigator", "isEdge", "isTest", "import_process", "isChrome2", "isChrome", "layoutHintDataPropsForCenter", "center", "props", "RenderTarget", "nodeIdFromString", "str", "processOverrideForwarding", "children", "_forwardedOverrides", "extractions", "key7", "propName", "e", "child", "clamp2", "min", "max", "v", "sanitize", "floatRegex", "colorRegex", "singleColorRegex", "isString4", "number", "alpha", "scale", "createUnitType", "unit", "degrees", "percent", "px", "vh", "vw", "progressPercentage", "isColorString", "type", "testProp", "splitColor", "aName", "bName", "cName", "a", "b", "c", "alpha2", "hsla", "hue", "saturation", "lightness", "alpha$1", "clampRgbUnit", "rgbUnit", "rgba", "red", "green", "blue", "parseHex", "r", "g", "hex", "color", "colorToken", "numberToken", "test", "_a", "_b", "_c", "_d", "analyse", "values", "numColors", "colors", "numbers", "parse", "createTransformer", "tokenised", "numValues", "v2", "output", "i", "convertNumbersToZero", "getAnimatableNone", "parsed", "complex", "isCustomValue", "isColorProp", "resolveSingleCustomValue", "invariant", "Color", "resolveCustomValues", "resolved", "customValueHandlers", "inputValues", "outputValues", "value", "transformValues", "transformedValues", "valueHandler", "transformTemplate", "_", "generated", "useLayoutId", "specificLayoutId", "postfix", "name", "layoutIdKey", "duplicatedFrom", "__fromCodeComponentNode", "drag", "getLayoutId", "enabled", "re", "LayoutIdContext", "se", "existingLayoutId", "layoutIdCandidate", "ComponentContainerContext", "resizeObservers", "hasActiveObservations", "ro", "hasSkippedObservations", "msg", "deliverResizeLoopError", "event", "window", "ResizeObserverBoxOptions", "ResizeObserverBoxOptions2", "freeze", "obj", "ResizeObserverSize", "ResizeObserverSize2", "inlineSize", "blockSize", "DOMRectReadOnly", "DOMRectReadOnly2", "x", "y", "width", "height", "top", "right", "bottom", "left", "rectangle", "isSVG", "target", "isHidden", "offsetWidth", "offsetHeight", "isElement", "scope", "isReplacedElement", "global", "cache2", "scrollRegexp", "verticalRegexp", "IE", "parseDimension", "pixel", "size", "switchSizes", "zeroBoxes", "calculateBoxSizes", "forceRecalculation", "cs", "svg", "removePadding", "canScrollVertically", "canScrollHorizontally", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "borderTop", "borderRight", "borderBottom", "borderLeft", "horizontalPadding", "verticalPadding", "horizontalBorderArea", "verticalBorderArea", "horizontalScrollbarThickness", "verticalScrollbarThickness", "widthReduction", "heightReduction", "contentWidth", "contentHeight", "borderBoxWidth", "borderBoxHeight", "boxes", "calculateBoxSize", "observedBox", "borderBoxSize", "contentBoxSize", "devicePixelContentBoxSize", "ResizeObserverEntry", "ResizeObserverEntry2", "calculateDepthForNode", "node", "depth", "parent", "broadcastActiveObservations", "shallowestDepth", "callbacks2", "entries", "ot", "entry", "targetDepth", "_i", "callbacks_1", "callback", "gatherActiveObservationsAtDepth", "process3", "trigger", "callbacks", "notify", "cb2", "queueMicroTask", "toggle_1", "el_1", "config", "queueResizeObserver", "watching", "isWatching", "CATCH_PERIOD", "observerConfig", "events", "time", "timeout", "scheduled", "Scheduler", "Scheduler2", "_this", "until", "elementsHaveResized", "scheduler", "updateCount", "n", "skipNotifyOnElement", "ResizeObservation", "ResizeObservation2", "size2", "ResizeObserverDetail", "ResizeObserverDetail2", "resizeObserver", "observerMap", "getObservationIndex", "observationTargets", "ResizeObserverController", "ResizeObserverController2", "detail", "options", "firstObservation", "index", "lastObservation", "ResizeObserver", "ResizeObserver2", "useForceUpdate3", "setForcedRenderCount", "_sharedResizeObserver", "_callbacks", "SharedObserver", "__privateAdd", "_a", "ResizeObserver2", "safeWindow", "ResizeObserver", "__privateSet", "entries", "entry", "callbackForElement", "__privateGet", "element", "callback", "sharedResizeObserver", "isBrowser2", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "getMeasurableCodeComponentChildren", "element", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "isMeasurable", "unwrapInlinedDisplayContents", "firstMeasurableChild", "useMeasureLayout", "props", "ref", "getChildren", "options", "id", "visible", "_needsMeasure", "skipHook", "inCodeComponent", "re", "ComponentContainerContext", "onCanvas", "RenderTarget", "useIsomorphicLayoutEffect2", "runtime", "nodeIdFromString", "measureClosestComponentContainer", "container", "hasProp", "o", "prop", "withEquals", "equal", "a", "b", "deep", "isArray2", "keyList", "arrA", "arrB", "i", "length", "dateA", "dateB", "regexpA", "regexpB", "aItem", "keys3", "key7", "isEqual", "error", "smallValue", "translateZ", "useTranslateZHack", "isFramerX", "isSafari", "isTest", "forceLayerBackingWithMotionStyle", "motionStyle", "forceLayerBackingWithCSSProperties", "cssProperties", "setTranslateZHack", "style", "enabled", "transform2", "resetSetStyle", "toValue", "microtask", "value", "reset", "Layer", "I", "usingMotionStyle", "nextProps", "nextState", "prevProps", "manageCache", "cache3", "maxEntries", "memoize2", "create", "r", "g", "hash", "hasher", "chr", "ConvertColor", "color2", "angle", "Color", "alpha2", "obj", "stringToObject", "hsv", "hsvToStr", "hsl", "h", "input", "CSSVariableRegExp", "colorCache", "cachedMultiplyAlpha", "s", "gradientColorStops", "gradient", "stops", "stop", "gradientColorStopsHash", "result", "multiStopGradientKeys", "isMultiStopGradient", "simpleGradientKeys", "isSimpleGradient", "linearGradientKeys", "LinearGradient", "linearGradient", "overrideAngle", "cssStops", "radialGradientKeys", "RadialGradient", "radialGradient", "widthFactor", "heightFactor", "centerAnchorX", "centerAnchorY", "collectBackgroundFromProps", "background", "backgroundColor", "isMotionValue2", "Animatable", "extractStyleFromProps", "name", "styleRef", "into", "hasLeftAndRight", "hasTopAndBottom", "getStyleForFrameProps", "hasEvents", "pointerEvents", "pointerEventsSet", "event", "getCursorFromEvents", "overflowKey", "hasScrollableContent", "hasScrollingOverflow", "unwrapFrameProps", "frameProps", "left", "top", "bottom", "right", "width", "height", "center", "_constraints", "size2", "widthType", "heightType", "positionFixed", "positionAbsolute", "minWidth", "resolveMotionValue", "minHeight", "maxWidth", "maxHeight", "defaultFrameRect", "useStyleAndRect", "_a", "injectComponentCSSRules", "_initialStyle", "__fromCanvasComponent", "unwrappedProps", "constraintsRect", "useConstraints", "defaultStyle", "centerTextStyle", "e", "child", "propsStyle", "constraintsStyle", "constraintsEnabled", "isAutoSized", "resultStyle", "filteredProps", "getMotionProps", "motionProps", "isValidMotionProp", "isPropValid", "hasDataFramerName", "VisibleFrame", "Y", "forwardedRef", "_b", "border", "_border", "__portal", "propsWithOverrides", "children", "processOverrideForwarding", "layoutId", "useLayoutId", "cursor", "fallbackRef", "pe", "dataProps", "currentStyle", "rect", "autoSized", "transformTemplate", "layoutHintDataPropsForCenter", "backgroundImage", "backgroundImageFromProps", "parentSize", "resolveParentSize", "wrappedContent", "useProvideParentSize", "BackgroundImageComponent", "Border", "MotionComponent", "motion", "transformValues", "FrameWithMotion", "import_process3", "safeWindow", "_usesDOMRect", "import_hoist_non_react_statics", "__toESM", "require_hoist_non_react_statics_cjs", "NavigatorMock", "warnOnce", "navigatorMock", "NavigationContext", "z", "import_hoist_non_react_statics3", "__toESM", "require_hoist_non_react_statics_cjs", "import_hoist_non_react_statics2", "__toESM", "require_hoist_non_react_statics_cjs", "DraggingContext", "e", "hoverProps", "hoverEventKeys", "import_process4", "__toESM", "require_browser", "hasOwnProperty", "obj", "prop", "ObservableObject", "ObservableObject2", "initial", "makeAnimatables", "observeAnimatables", "unproxiedState", "$private", "Observers", "key7", "state", "sharedProxyHandler", "target", "observer", "ObservableObjectProxyHandler", "value", "receiver", "privateObject", "animatable", "rawValue", "isAnimatable", "Animatable", "transactions", "change", "transaction", "result", "changed", "rawValueIsObject", "keys3", "privateIndex", "key3", "withOpacity", "target", "collectOpacityFromProps", "props", "style", "opacity", "Animatable", "__rest", "s", "e", "t", "p", "clamp4", "min", "max", "v", "safeMin", "minDuration2", "maxDuration2", "minDamping2", "maxDamping2", "findSpring", "duration", "bounce", "velocity", "mass", "envelope", "derivative", "warning", "dampingRatio", "undampedFreq2", "exponentialDecay", "delta", "a", "b", "calcAngularFreq", "c", "f", "initialGuess", "undampedFreq", "approximateRoot2", "stiffness", "rootIterations", "result", "durationKeys", "physicsKeys", "isSpringType", "options", "keys3", "key7", "getSpringOptions", "springOptions", "derived", "spring2", "_a", "from", "to", "restSpeed", "restDelta", "state", "damping", "isResolvedFromDuration", "resolveSpring", "zero", "resolveVelocity", "createSpring", "initialVelocity", "initialDelta", "undampedAngularFreq", "angularFreq", "dampedAngularFreq", "freqForT", "current", "currentVelocity", "isBelowVelocityThreshold", "isBelowDisplacementThreshold", "_t", "progress", "value", "toFromDifference", "mix2", "progress2", "hueToRgb", "q", "hslaToRgba", "hue", "saturation", "lightness", "alpha2", "red", "green", "blue", "mixLinearColor", "fromExpo", "toExpo", "colorTypes", "hex", "rgba", "hsla", "getColorType", "type", "notAnimatable", "color2", "mixColor", "fromColorType", "toColorType", "invariant", "fromColor", "toColor", "blended", "isNum", "combineFunctions", "pipe2", "transformers", "getMixer", "origin", "target", "color", "mixComplex", "mixArray", "output", "numValues", "blendValue", "fromThis", "i", "mixObject", "analyse2", "parsed", "complex", "numNumbers", "numRGB", "numHSL", "template", "originStats", "targetStats", "mixNumber", "detectMixerFactory", "createMixers", "ease", "customMixer", "mixers", "mixerFactory", "numMixers", "mixer", "easingFunction", "fastInterpolate", "slowInterpolate", "input", "inputLength", "lastInputIndex", "mixerIndex", "foundMixerIndex", "progressInRange", "interpolate", "isClamp", "interpolator", "reverseEasing", "easing", "mirrorEasing", "createExpoIn", "power", "createBackIn", "createAnticipate", "backEasing", "DEFAULT_OVERSHOOT_STRENGTH", "BOUNCE_FIRST_THRESHOLD", "BOUNCE_SECOND_THRESHOLD", "BOUNCE_THIRD_THRESHOLD", "easeIn2", "easeOut2", "easeInOut2", "circIn2", "circOut2", "circInOut2", "backIn2", "backOut2", "backInOut2", "anticipate2", "ca", "cb", "cc", "bounceOut", "p2", "bounceIn", "defaultEasing", "values", "defaultOffset", "_value", "convertOffsetToTimes", "offset", "o", "keyframes", "times", "createInterpolator", "decay", "timeConstant2", "modifyTarget", "amplitude", "ideal", "types", "detectAnimationFromOptions", "config", "defaultTimestep", "getCurrentTime", "onNextFrame", "window", "callback", "createRenderStep", "runNextFrame2", "toRun", "toRunNextFrame", "numToRun", "isProcessing2", "flushNextFrame", "toKeepAlive", "step", "keepAlive", "immediate", "addToCurrentFrame", "buffer", "index", "frameData2", "maxElapsed", "useDefaultElapsed", "runNextFrame", "isProcessing", "frame", "stepsOrder", "steps", "acc", "sync2", "process13", "startLoop", "cancelSync", "flushSync", "processStep", "stepId", "processFrame", "timestamp", "es_default", "sync2", "loopElapsed", "elapsed", "duration", "delay2", "reverseElapsed", "isForwardPlayback", "hasRepeatDelayElapsed", "framesync", "update", "passTimestamp", "delta", "cancelSync", "animate3", "_a", "_b", "_c", "from", "autoplay", "driver", "repeatMax", "repeatType", "repeatDelay", "onPlay", "onStop", "onComplete", "onRepeat", "onUpdate", "options", "__rest", "to", "driverControls", "repeatCount", "computedDuration", "latest", "isComplete", "interpolateFromNumber", "animator", "detectAnimationFromOptions", "interpolate", "animation", "repeat", "complete", "state", "play", "shadowsAsFilter", "shadows", "filters", "dropShadows", "shadowItem", "collectTextShadowsForProps", "props", "style", "textShadow", "shadow", "collectLayerFilters", "props", "style", "filters", "isFiniteNumber", "shadowsAsFilter", "collectBackgroundFilters", "collectFiltersFromProps", "getNumber", "Animatable", "TREE_ROOT_ID", "SharedLayoutContext", "e", "SharedLayoutRoot", "I", "tree", "transition", "shouldAnimate", "_a", "needsReset", "projectionNode", "_a2", "_b", "rootStyles", "MagicMotionCrossfadeRoot", "props", "motion", "_sharedIntersectionObserver", "_callbacks2", "SharedIntersectionObserver", "options", "__privateAdd", "__privateSet", "entries", "observer", "entry", "callbackForElement", "__privateGet", "element", "callback", "SharedIntersectionObserverContext", "useSharedIntersectionObserver", "ref", "key7", "useConstant", "observers", "root", "rest", "thresholds", "_", "i", "ViewportContext", "useAppearEffect", "appearCallback", "internalState", "animateOnce", "threshold", "rootMargin", "isInView", "hasAnimatedOnce", "isIntersecting", "isIntersectingWithThreshold", "calculatedIntersection", "intersectionRect", "boundingClientRect", "safeWindow", "LayoutTree", "child", "nextProps", "isLead", "isExiting", "isOverlayed", "animatesLayout", "sharedLayoutContext", "hasBecomeLead", "hasExitBeenCancelled", "shouldPromote", "shouldDemote", "overlayChanged", "projection", "layoutId", "SwitchLayoutGroupContext", "SharedLayoutTree", "NavigationContainerContext", "useIsInCurrentNavigationTarget", "re", "newMap", "useMap", "NavigationTargetContext", "z", "NavigationTargetWrapper", "isCurrent", "children", "callbacks2", "register", "te", "fn", "deregister", "cleanup", "value", "pe", "ue", "cb2", "newCleanup", "isFunction", "useOnCurrentTargetChange", "deps", "NavigationContainer", "isLayeredContainer", "isPrevious", "visible", "transitionProps", "backdropColor", "onTapBackdrop", "backfaceVisible", "exitBackfaceVisible", "animation", "exitAnimation", "instant", "initialProps", "exitProps", "position", "withMagicMotion", "index", "areMagicMotionLayersPresent", "id", "isInitial", "animate4", "useAnimation", "presence", "PresenceContext", "persistLayoutIdCache", "LayoutIdContext", "previousState", "getOriginProps", "viewportRef", "isBeingRemoved", "wasPrevious", "wasCurrent", "shouldAnimateIn", "shouldAnimateOut", "origins", "wasReset", "allAnimatableProperties", "exitTransition", "layout", "perspective", "contains3Dprops", "identity", "animations2", "isPresent", "isCurrentTarget", "forceOpacity", "FrameWithMotion", "shouldUsePreviousValue", "prevProps", "currentOriginProps", "result", "isFiniteNumber", "containerProps", "_c", "toPropsContain3d", "fromPropsContain3d", "TransitionDefaults", "pushTransition", "overlayTransition", "flipTransition", "defaultState", "reduceNavigationStateForAction", "state", "action", "addOverlay", "removeOverlay", "add", "remove", "updateComponent", "back", "forward", "currentState", "component", "currentOverlay", "overlayItemId", "overlayStack", "currentItem", "isCurrentScreen", "nextIndex", "removed", "shouldMoveForward", "isNextTargetForward", "current", "previous", "containerKey", "findLatestHistoryIndex", "containerVisualIndex", "containerIsRemoved", "magicMotionPropsForAdd", "transitionForContainer", "updateTransitions", "containers", "nextState", "nextItem", "history", "target", "assert", "item", "previousTransition", "visualIndex", "magicMotionPropsForRemove", "nextKey", "update", "nextVisualIndex", "validTargets", "nextValidTarget", "targetVisualIndex", "currentVisualIndex", "shouldRemoveLastKey", "containerIndex", "transitions", "screenIndex", "transitionForScreen", "stackState", "sequence", "allAnimatableKeys", "direction", "from", "property", "transitionTo", "transitionFrom", "NavigationConsumer", "NavigationContext", "NavigationCallbackContext", "NavigationCallbackProvider", "IsInitialNavigationContext", "Navigation", "newState", "skipLayoutAnimation", "historyItem", "updateState", "isReactChild", "isReactElement", "injectComponentCSSRules", "previousOverlay", "transitionTraits", "transitionOptions", "_d", "_e", "overlayStackState", "activeOverlay", "activeOverlayItem", "isOverlayVisible", "contentContainers", "isInstantContainerTransition", "animationPropsForContainer", "getBackfaceVisibleForScreen", "containerContent", "overlayContainers", "stackIndex", "initialPropsForOverlay", "transitionPropsForOverlay", "containerIsVisible", "backdropColorForTransition", "getBackfaceVisibleForOverlay", "backdropTapAction", "transitionPropsForStackWrapper", "animationForStackWrapper", "backfaceVisibleForStackWrapper", "LayoutIdProvider", "AnimatePresence", "animationDefault", "currentOverlayItem", "previousOverlayItem", "navigationItem", "overlayIndex", "containerCurrent", "overCurrentContext", "shouldStretchWidth", "shouldStretchHeight", "canStretchStyle", "isObject2", "goBackAction", "NavigationWrapper", "resetProjection", "useResetProjection", "useInstantLayoutTransition", "import_process5", "__toESM", "require_browser", "hasPaddingPerSide", "props", "paddingPerSide", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight", "paddingFromProps", "padding", "makePaddingString", "top", "left", "bottom", "right", "triggerStackReflow", "element", "display", "requiresPolyfill", "isSafari", "safariVersion", "useSafariGapFix", "gap", "ref", "isInitialRender", "e", "hasTriggeredReflow", "prevGapValue", "Stack", "StackInner", "stackProps", "forwardedRef", "_a", "_b", "as", "direction", "distribution", "alignment", "wrap2", "externalUseFlexboxGap", "children", "styleProp", "className", "willChangeTransform", "__fromCodeComponentNode", "parentSize", "__contentWrapperStyle", "containerProps", "useFlexboxGap", "stackRef", "onBeforeLayoutMeasure", "flexDirection", "toFlexDirection", "isReverse", "isReverseDirection", "justifyContent", "toJustifyOrAlignment", "style", "Layer", "constraintsEnabled", "unwrapFrameProps", "layoutId", "useLayoutId", "_children", "processOverrideForwarding", "widthType", "heightType", "fractionChildren", "handleFraction", "gapChildren", "wrapInGapElementForLegacyGap", "content", "useProvideParentSize", "attributes", "fromCanvasComponent", "alignItems", "contentWrapperStyle", "gapEnabled", "isGapEnabled", "gapSupportedInMainAxis", "isGapSupportedInMainAxis", "FrameWithMotion", "useForwardedRef", "motion", "addPropertyControls", "isFractionDimension", "dimension", "fraction", "value", "isFiniteNumber", "child", "isReactChild", "isReactElement", "isVertical", "hasFraction", "propsStyle", "size2", "width", "height", "newWidth", "newHeight", "nextStyle", "gapStyle", "isVerticalDirection", "innerRef", "cx", "classNames", "emptyObject", "timeDelta", "data", "Data2", "initial", "_data", "ObservableObject", "target", "observer", "Data", "initialState", "DataObserverContext", "e", "DataObserver", "I", "initialState", "MainLoop", "cancel", "Data", "children", "d", "observer", "e", "DataObserverContext", "prefix", "prefixLength", "stripPrefixFromPrefixedKey", "key7", "prefix", "prefixLength", "effectValuesKeys", "makeFXValues", "defaults", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "motionValue", "parallaxTransform", "scrollY", "originalPosition", "speed", "offset", "adjustPosition", "speedFactor", "initialPosition", "scrollOffset", "parallaxOptionsKeys", "useParallax", "options", "ref", "visibilityStyle", "parallaxTransformEnabled", "e", "shouldReduceMotion", "useReducedMotionConfig", "transform2", "yValue", "parallaxY", "visibility", "useScroll", "useTransform", "useMotionValue", "defaultValue", "calcOffsetTop", "element", "container", "top", "current", "scrollObserverOffset", "createTransformInputRange", "transformTargets", "threshold", "callback", "starts", "inputRange", "index", "targetRef", "height", "previousTop", "end", "styleAppearOptionsKeys", "defaultOutputRange", "createInputOutputRange", "targets", "hasExit", "outputRange", "firstRange", "assert", "idx", "last", "defaultValues", "makeStyle", "_i", "useAnimationVariants", "opacity", "targetOpacity", "transformPerspective", "enter", "exit", "animateVariant", "defaultStyles", "useStyleAppearEffect", "variants", "values", "useConstant", "playState", "animation", "runAnimation", "transition", "target", "fromInitial", "transitionWithFallback", "_a2", "resolve", "_a3", "animate2", "appearEffectOptions", "useAppearEffect", "appears", "isPlaying", "lastAppearState", "playedState", "lastVariant", "scroll", "variant", "transform", "styleTransformOptionsKeys", "defaultValues2", "initial", "defaultRanges", "useAttachOptionalSpring", "spring3", "springs", "m2", "v", "set", "active", "animate3", "createInputOutputRanges", "effectKeyOutputRange", "previousTarget", "currentTarget", "createPageOutputRange", "keyOutputRange", "pageInputRange", "useStyleTransform", "transformTrigger", "styleTransformEffectEnabled", "transformViewportThreshold", "scrollYInputRange", "groups", "groupValues", "backwardsCompatibleEnabledCheck", "object", "extractFXOptions", "props", "result", "strippedKey", "group", "add2", "sum", "value", "multiply", "withFX", "Component15", "forwardedRef", "fallbackRef", "parallax", "styleAppear", "styleTransform", "forwardedProps", "isObject2", "isMotionValue", "isNumber", "parallaxValues", "parallaxStyle", "transformValues3", "appearEffectValues", "scale2", "x", "y", "rotate", "rotateX", "rotateY", "withStyleAppearEffect", "withFX", "import_hoist_non_react_statics4", "__toESM", "require_hoist_non_react_statics_cjs", "withGeneratedLayoutId", "Component15", "e", "props", "ref", "layoutId", "useLayoutId", "Providers", "children", "outerLayoutId", "useConstant", "motion", "ComponentContainerContext", "AutomaticLayoutIds", "LayoutGroup", "child", "Container", "pathVariablesRegExp2", "elementKey", "collectionKey", "collectionItemIdKey", "pathVariablesKey", "mediaType", "isFramerPageLink", "value", "isString3", "parseFramerPageLink", "link", "isFramerPageLink", "url", "target", "mediaType", "attributes", "element", "elementKey", "collectionItem", "collection", "collectionKey", "collectionItemId", "collectionItemIdKey", "pathVariablesValue", "pathVariablesKey", "pathVariables", "regex", "escapeHTML", "str", "tag", "replaceFramerPageLinks", "rawHTML", "getRoute", "currentRoute", "implicitPathVariables", "original", "pre1", "pre2", "value1", "value2", "post", "_a", "_b", "_c", "pageLink", "parseFramerPageLink", "targetRoute", "isRoute", "targetPath", "currentPath", "attributes", "elementId", "getRouteElementId", "linkMatchesRoute", "relativePath", "pathVariables", "pathVariablesRegExp2", "_", "key7", "params", "computeRelativePath", "navigateFromAttributes", "navigate", "element", "routeId", "pathVariablesRaw", "href", "link", "smoothScroll", "PathVariablesContext", "e", "route", "useImplicitPathVariables", "_a", "contextPathVariables", "e", "PathVariablesContext", "currentPathVariables", "useCurrentRoute", "GeneratedComponentContext", "findAnchorElement", "target", "withinElement", "isInternalURL", "href", "isValidURL", "isInternal", "url", "getTargetAttrValue", "openInNewTab", "isInternal", "propsForLink", "href", "isInternalURL", "anchorTarget", "isValidURL", "createOnClickLinkHandler", "router", "routeId", "elementId", "combinedPathVariables", "smoothScroll", "event", "_a", "anchorElement", "findAnchorElement", "propsForRoutePath", "currentRoute", "implicitPathVariables", "pathname", "hash2", "assert", "pathVariables", "inferInitialRouteFromPath", "route", "preloadComponent", "path", "getPathForRoute", "Link", "e", "children", "restProps", "forwardedRef", "useRouter", "useCurrentRoute", "useImplicitPathVariables", "props", "_b", "_c", "pageLink", "parseFramerPageLink", "linkMatchesRoute", "child", "resolveLink", "AnimationCollector", "nodeId", "prop", "value", "variantHash", "nodeEntry", "framerAppearEffects", "framerAppearTransformTemplateToken", "framerAppearIdKey", "framerAppearAnimationScriptKey", "PageRoot", "RootComponent", "isWebsite", "routeId", "pathVariables", "routes", "notFoundPage", "isReducedMotion", "includeDataObserver", "e", "MainLoop", "MotionConfig", "Router", "Wrapper", "DataObserver", "RoutesProvider", "NavigationWrapper", "StyleSheetContext", "isBrowser2", "node", "styleTagSSRMarker", "withCSS", "Component15", "escapedCSS", "props", "ref", "_a", "sheet", "cache3", "concatenatedCSS", "didInjectStyles", "rule", "injectCSSRule", "SSRParentVariantsContext", "SSRVariantClassName", "childrenWithForwardedProps", "children", "child", "isReactChild", "isReactElement", "renderBranchedChildrenFromPropertyOverrides", "overrides", "variantClassNames", "primaryVariantId", "parentVariants", "type", "childrenArray", "branches", "nonOverriddenVariants", "variantId", "propOverrides", "arePropOverridesEffectivelyDifferent", "effectiveVariants", "intersection", "remainingVariants", "effectiveRemainingVariants", "variants", "key7", "element", "hiddenClassNames", "generateHiddenClassNames", "assert", "generateHiddenClassNames", "showOnlyInVariantIds", "parentVariants", "variantClassNames", "classNames", "variantId", "variantClassName", "alreadyHiddenInParent", "variantHash", "intersection", "variants", "variant", "propertyKeyDifferenceShouldBeIgnored", "key7", "arePropOverridesEffectivelyDifferent", "props", "propOverrides", "isEqual", "propsForBreakpoint", "overrides", "PropertyOverrides", "e", "breakpoint", "children", "ref", "isBrowser2", "childrenWithForwardedProps", "generatedComponentContext", "GeneratedComponentContext", "primaryVariantId", "SSRParentVariantsContext", "renderBranchedChildrenFromPropertyOverrides", "rejectPending", "pendingTimers", "pendingPromises", "t", "reject", "createSet", "useActiveVariantCallback", "baseVariant", "useConstant", "useOnCurrentTargetChange", "callback", "args", "resolve", "msDelay", "useAddVariantProps", "baseVariant", "gestureVariant", "variantProps", "e", "id", "_a", "_b", "_c", "activeMediaQueryFromWindow", "mediaQueries", "variant", "query", "safeWindow", "useHydratedBreakpointVariants", "initial", "hydratedWithInitial", "_a", "isInitialNavigation", "re", "IsInitialNavigationContext", "baseVariant", "pe", "isBrowser2", "basePropsVariant", "forceUpdate", "useForceUpdate3", "instantTransition", "useInstantTransition", "setActiveVariantInstant", "te", "useIsomorphicLayoutEffect2", "ue", "callbacks2", "mql", "callback", "event", "addMQLCallback", "removeMQLCallback", "removeHiddenBreakpointLayers", "initial", "mediaQueries", "variantClassNames", "_a", "_b", "_c", "_d", "_e", "activeVariant", "activeMediaQueryFromWindow", "activeVariantHash", "hiddenLayer", "ssrVariant", "SSRVariantClassName", "image", "originalSizes", "useDataRecord", "collection", "variables", "se", "pageRecord", "record", "key7", "value", "recordValue", "isObject2", "useIsOnFramerCanvas", "RenderTarget", "callbackForVariant", "map", "variant", "useOnVariantChange", "callbackMap", "useIsOnFramerCanvas", "isActiveScreenRef", "e", "callbackMapRef", "useOnCurrentTargetChange", "isCurrent", "isOverlayed", "isActiveScreen", "callback", "useOverlayState", "showOverlay", "setShowOverlay", "e", "callback", "show", "createGestureVariant", "variant", "type", "nextVariant", "allVariants", "currentVariant", "nextIndex", "nextVariant2", "assert", "activeTransition", "transitions", "variantTransition", "getGesture", "enabledGestures", "isHovered", "isPressed", "hover", "pressed", "createVariantClassName", "baseVariant", "variantClassNames", "mappedClassName", "safeBaseVariant", "targetVariant", "fallbackVariant", "validBaseVariants", "CycleVariantState", "useVariantState", "variant", "externalDefaultVariant", "externalTransitions", "externalEnabledGestures", "externalCycleOrder", "variantProps", "forceUpdate", "useForceUpdate3", "useConstant", "internalState", "e", "resolveNextVariant", "targetBaseVariant", "isHovered2", "isPressed2", "enabledGestures2", "defaultVariant2", "nextBaseVariant", "gesture", "nextGestureVariant", "createGestureVariant", "setGestureState", "baseVariant2", "gestureVariant2", "nextBase", "nextGesture", "setVariant", "proposedVariant", "cycleOrder", "nextVariant", "gestureVariant", "defaultVariant", "addVariantProps", "useAddVariantProps", "variants", "activeTransition", "cx", "import_process6", "__toESM", "require_browser", "import_process7", "__toESM", "require_browser", "elementPropertiesForLinearGradient", "gradient", "id", "LinearGradient", "gradientColorStops", "stop", "ConvertColor", "elementPropertiesForRadialGradient", "RadialGradient", "imagePatternPropsForFill", "fill", "frame2", "_a", "Animatable", "BackgroundImage", "imageWidth", "imageHeight", "transform2", "fit", "scaleX", "scaleY", "offsetX", "offsetY", "imageRatio", "realWidth", "realHeight", "validScaleX", "validScaleY", "WindowContext", "e", "useProvidedWindow", "mediaType2", "isAssetReference", "value", "imageUrlForAsset", "asset", "pixelSize", "isExport", "RenderTarget", "runtime", "ImagePatternElement", "I", "path", "xlinkHref", "useDOM", "isBrowser2", "SharedSVGEntry", "svg", "innerHTML", "viewBox", "count", "SharedSVGManager", "generateUniqueIds", "contentId", "entry", "hash", "uniqueSVG", "svgSize", "svgDom", "parseSVG", "prefixIdsInSVG", "getSVGSize", "containerId", "container", "size2", "svgTemplates", "box", "output", "style", "sharedSVGManager", "node", "prefix2", "sanitizedPrefix", "sanitizeString", "recursivelyPrefixId", "str", "el", "prefixId", "attr", "base", "fragmentIdentifier", "URL_REF", "prefixedValue", "unitsToPixels", "parseLength", "m2", "width", "height", "SVG", "props", "parentSize", "useParentSize", "ariaId", "layoutId", "useLayoutId", "layoutRef", "providedWindow", "useMeasureLayout", "SVGComponent", "MAX_BACKGROUND_SVG_TEXT_LENGTH", "containsImageReference", "hasBorderRadius", "sizeSVG", "_b", "_c", "div", "localWindow", "safeWindow", "withExternalLayout", "constraintsEnabled", "intrinsicWidth", "intrinsicHeight", "_constraints", "isFiniteNumber", "Layer", "element", "calculateRect", "prevProps", "resetSetStyle", "innerStyle", "rotation", "rotate", "xFactor", "yFactor", "zoom", "target", "RenderEnvironment", "zoomFactor", "left", "right", "top", "bottom", "_a2", "visible", "title", "description", "className", "variants", "transition", "innerRef", "svgContentId", "identifier", "injectComponentCSSRules", "outerStyle", "collectOpacityFromProps", "collectFiltersFromProps", "fillElement", "Color", "fillColor", "gradientId", "elementProperties", "idx", "imagePattern", "dataProps", "hasTransformTemplate", "layoutHintDataPropsForCenter", "svgAsBackgroundImage", "content", "contentid", "__html", "MotionComponent", "motion", "href", "rel", "onClick", "ariaDescriptionId", "transformTemplate", "VISUALLY_HIDDEN_STYLES", "import_process9", "import_process8", "customFontSelectorPrefix", "getCustomFontName", "fileName", "properties", "fontFamily", "variant", "CustomFontSource", "assets", "fonts", "asset", "_a", "fontName", "typeface", "font", "family", "possibleValues", "possibleValuesWithItalics", "value", "lowerCaseFamily", "tokens", "foundToken", "char", "existingTypeface", "selector", "createFont", "locator", "foundTypeface", "googleFontSelectorPrefix", "GoogleFontSource", "webFonts", "fontLocators", "webFont", "locators", "import_fontfaceobserver", "__toESM", "require_fontfaceobserver_standalone", "FONT_LOADING_TIMEOUT", "MAX_RETRIES", "FontLoadingError", "message", "fontRequests", "fontReadyPromises", "loadFont", "data2", "doc", "loadFontWithRetries", "attempt", "url", "weight", "style", "requestId", "fontFace", "readyPromise", "isFontReady", "e", "readyPromiseId", "safeFonts", "typefaceAliases", "typefaces", "systemTypefaceName", "LocalFontSource", "members", "member", "key7", "systemTypeface", "aliases", "interTypeface", "inter", "entry", "t", "fontFamilies", "weights", "styles", "createVariantName", "alias", "s", "safeNavigator", "userAgent", "fontWeightNames", "friendlyStyle", "parseVariant", "res", "FontStore", "source", "file", "variantInfo", "defaultFont", "assert", "runtime", "googleFonts", "_", "info", "fontVariant", "f", "import_process8", "selectors", "fontSelectors", "fontsLoadedCallback", "fontStore", "promises", "p", "v", "isShallowEqualArray", "a", "b", "v", "i", "linkTag", "linkClosingTag", "outerTag", "outerClosingTag", "blockTag", "blockClosingTag", "inlineTag", "inlineClosingTag", "textContentRegex", "import_process10", "__toESM", "require_browser", "PathSegment", "value", "PathSegment2", "pathSegment", "Point", "points", "index", "pointBefore", "pointAfter", "assert", "delta", "import_process11", "__toESM", "require_browser", "_CanvasStore", "data2", "store", "presentationNode", "id", "children", "found", "child", "canvas", "l", "at", "findNodeFor", "listener", "idOrName", "CanvasStore", "isNode", "id", "presentation", "name", "props", "findNodeFor", "children", "isArray", "child", "result", "RenderNodeContext", "e", "RenderNodeProvider", "Image2", "props", "ref", "_a", "background", "children", "alt", "rest", "style", "MotionComponent", "motion", "BackgroundImageComponent", "htmlEscapes", "reUnescapedHtml", "reHasUnescapedHtml", "escapeHTML2", "str", "chr", "deprecatedRichTextPlaceholder", "richTextWrapperClassName", "DeprecatedRichText", "Y", "props", "forwardedRef", "_a", "_b", "id", "name", "html", "htmlFromDesign", "text", "textFromDesign", "fonts", "width", "height", "left", "right", "top", "bottom", "center", "className", "stylesPresetsClassName", "visible", "opacity", "rotation", "verticalAlignment", "isEditable", "willChangeTransform", "environment2", "RenderTarget", "withExternalLayout", "positionSticky", "positionStickyTop", "positionStickyRight", "positionStickyBottom", "positionStickyLeft", "__htmlStructure", "__fromCanvasComponent", "_forwardedOverrideId", "_forwardedOverrides", "_usesDOMRect", "children", "rest", "parentSize", "useParentSize", "layoutId", "useLayoutId", "fallbackLayoutRef", "pe", "layoutRef", "navigate", "getRoute", "useRouter", "currentRoute", "useCurrentRoute", "useRoutePreloader", "useMeasureLayout", "inCodeComponent", "re", "ComponentContainerContext", "isOnCanvas", "useIsOnFramerCanvas", "textOrOverride", "forwardedOverrideId", "override", "innerHTML", "escapedText", "implicitPathVariables", "useImplicitPathVariables", "innerHTMLWithReplacedFramerPageLinks", "se", "replaceFramerPageLinks", "ue", "container", "interceptPageLinks", "event", "anchorElement", "findAnchorElement", "navigateFromAttributes", "useLoadFonts", "injectComponentCSSRules", "isHidden2", "style", "convertVerticalAlignment2", "restrictedRenderTarget", "frame2", "calculateRect", "isAutoSized2", "template", "transformTemplate", "rotate", "Animatable", "collectFiltersFromProps", "collectTextShadowsForProps", "forceLayerBackingWithCSSProperties", "B", "motion", "cx", "fromCanvasComponent", "containerRef", "prevFontsRef", "isShallowEqualArray", "fontStore", "results", "result", "measureClosestComponentContainer", "RichTextContainer", "ref", "stylesPresetsClassNames", "plainText", "fallbackRef", "containerStyle", "e", "styleRichTextChildren", "element", "j", "isString3", "child", "J", "dataPresetTag", "isMotionComponent", "tag", "unwrapMotionComponent", "stylesPresetClassName", "q", "RichText", "content", "isObject2", "contentProp", "h1", "h2", "h3", "p", "a", "addFonts", "component", "fonts", "getFonts", "package_default", "version", "MotionValue", "transformer", "v", "child", "motionValue", "MainLoop"]
}
