{
  "version": 3,
  "sources": ["ssg:https://ga.jspm.io/npm:react@18.2.0/index.js", "ssg:https://ga.jspm.io/npm:react@18.2.0/jsx-runtime.js", "ssg:https://app.framerstatic.com/chunk-A6RUM2JZ.mjs", "ssg:https://ga.jspm.io/npm:react-dom@18.2.0/index.js", "ssg:https://ga.jspm.io/npm:scheduler@0.23.0/index.js", "ssg:https://app.framerstatic.com/framer.3BZ7SNNF.mjs"],
  "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.2.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", "import*as r from\"react\";var e=\"default\"in r?r.default:r;var t={};var o=e,a=Symbol.for(\"react.element\"),f=Symbol.for(\"react.fragment\"),n=Object.prototype.hasOwnProperty,s=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function q(r,e,t){var o,f={},l=null,p=null;void 0!==t&&(l=\"\"+t);void 0!==e.key&&(l=\"\"+e.key);void 0!==e.ref&&(p=e.ref);for(o in e)n.call(e,o)&&!_.hasOwnProperty(o)&&(f[o]=e[o]);if(r&&r.defaultProps)for(o in e=r.defaultProps,e)void 0===f[o]&&(f[o]=e[o]);return{$$typeof:a,type:r,key:l,ref:p,props:f,_owner:s.current}}t.Fragment=f;t.jsx=q;t.jsxs=q;const l=t.Fragment,p=t.jsx,u=t.jsxs;export{l as Fragment,t as default,p as jsx,u as jsxs};\n\n//# sourceMappingURL=jsx-runtime.js.map", "import {\n  __commonJS,\n  __export\n} from \"./chunk-YNHG2PI6.mjs\";\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) 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|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|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      /* Z+1 */\n    );\n    exports.default = index;\n  }\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs\nimport { createContext } from \"react\";\nvar LayoutGroupContext = createContext({});\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-browser.mjs\nvar isBrowser = typeof window !== \"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/PresenceContext.mjs\nimport { createContext as createContext2 } from \"react\";\nvar PresenceContext = /* @__PURE__ */ createContext2(null);\n\n// ../../../node_modules/motion-utils/dist/es/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/motion-utils/dist/es/clamp.mjs\nvar clamp = (min, max, v) => {\n  if (v > max)\n    return max;\n  if (v < min)\n    return min;\n  return v;\n};\n\n// ../../../node_modules/motion-utils/dist/es/errors.mjs\nvar warning = () => {\n};\nvar invariant = () => {\n};\nif (false) {\n  warning = (check, message) => {\n    if (!check && typeof console !== \"undefined\") {\n      console.warn(message);\n    }\n  };\n  invariant = (check, message) => {\n    if (!check) {\n      throw new Error(message);\n    }\n  };\n}\n\n// ../../../node_modules/motion-utils/dist/es/global-config.mjs\nvar MotionGlobalConfig = {};\n\n// ../../../node_modules/motion-utils/dist/es/is-numerical-string.mjs\nvar isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\n// ../../../node_modules/motion-utils/dist/es/is-object.mjs\nfunction isObject(value) {\n  return typeof value === \"object\" && value !== null;\n}\n\n// ../../../node_modules/motion-utils/dist/es/is-zero-value-string.mjs\nvar isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\n// ../../../node_modules/motion-utils/dist/es/memo.mjs\n// @__NO_SIDE_EFFECTS__\nfunction memo(callback) {\n  let result;\n  return () => {\n    if (result === void 0)\n      result = callback();\n    return result;\n  };\n}\n\n// ../../../node_modules/motion-utils/dist/es/noop.mjs\nvar noop = /* @__NO_SIDE_EFFECTS__ */ (any) => any;\n\n// ../../../node_modules/motion-utils/dist/es/pipe.mjs\nvar combineFunctions = (a, b) => (v) => b(a(v));\nvar pipe = (...transformers) => transformers.reduce(combineFunctions);\n\n// ../../../node_modules/motion-utils/dist/es/progress.mjs\nvar progress = /* @__NO_SIDE_EFFECTS__ */ (from, to, value) => {\n  const toFromDifference = to - from;\n  return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\n// ../../../node_modules/motion-utils/dist/es/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/motion-utils/dist/es/time-conversion.mjs\nvar secondsToMilliseconds = /* @__NO_SIDE_EFFECTS__ */ (seconds) => seconds * 1e3;\nvar millisecondsToSeconds = /* @__NO_SIDE_EFFECTS__ */ (milliseconds) => milliseconds / 1e3;\n\n// ../../../node_modules/motion-utils/dist/es/velocity-per-second.mjs\nfunction velocityPerSecond(velocity, frameDuration) {\n  return frameDuration ? velocity * (1e3 / frameDuration) : 0;\n}\n\n// ../../../node_modules/motion-utils/dist/es/warn-once.mjs\nvar warned = /* @__PURE__ */ new Set();\nfunction hasWarned(message) {\n  return warned.has(message);\n}\nfunction warnOnce(condition, message, element) {\n  if (condition || warned.has(message))\n    return;\n  console.warn(message);\n  if (element)\n    console.warn(element);\n  warned.add(message);\n}\n\n// ../../../node_modules/motion-utils/dist/es/wrap.mjs\nvar wrap = (min, max, v) => {\n  const rangeSize = max - min;\n  return ((v - min) % rangeSize + rangeSize) % rangeSize + min;\n};\n\n// ../../../node_modules/motion-utils/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/motion-utils/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/motion-utils/dist/es/easing/modifiers/reverse.mjs\nvar reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\n// ../../../node_modules/motion-utils/dist/es/easing/back.mjs\nvar backOut = /* @__PURE__ */ cubicBezier(0.33, 1.53, 0.69, 0.99);\nvar backIn = /* @__PURE__ */ reverseEasing(backOut);\nvar backInOut = /* @__PURE__ */ mirrorEasing(backIn);\n\n// ../../../node_modules/motion-utils/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/motion-utils/dist/es/easing/circ.mjs\nvar circIn = (p) => 1 - Math.sin(Math.acos(p));\nvar circOut = reverseEasing(circIn);\nvar circInOut = mirrorEasing(circIn);\n\n// ../../../node_modules/motion-utils/dist/es/easing/ease.mjs\nvar easeIn = /* @__PURE__ */ cubicBezier(0.42, 0, 1, 1);\nvar easeOut = /* @__PURE__ */ cubicBezier(0, 0, 0.58, 1);\nvar easeInOut = /* @__PURE__ */ cubicBezier(0.42, 0, 0.58, 1);\n\n// ../../../node_modules/motion-utils/dist/es/easing/steps.mjs\nfunction steps(numSteps, direction = \"end\") {\n  return (progress2) => {\n    progress2 = direction === \"end\" ? Math.min(progress2, 0.999) : Math.max(progress2, 1e-3);\n    const expanded = progress2 * numSteps;\n    const rounded = direction === \"end\" ? Math.floor(expanded) : Math.ceil(expanded);\n    return clamp(0, 1, rounded / numSteps);\n  };\n}\n\n// ../../../node_modules/motion-utils/dist/es/easing/utils/is-easing-array.mjs\nvar isEasingArray = (ease2) => {\n  return Array.isArray(ease2) && typeof ease2[0] !== \"number\";\n};\n\n// ../../../node_modules/motion-utils/dist/es/easing/utils/get-easing-for-segment.mjs\nfunction getEasingForSegment(easing, i) {\n  return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\n// ../../../node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.mjs\nvar isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\n// ../../../node_modules/motion-utils/dist/es/easing/utils/map.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 isValidEasing = (easing) => {\n  return typeof easing === \"string\";\n};\nvar easingDefinitionToFunction = (definition) => {\n  if (isBezierDefinition(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 (isValidEasing(definition)) {\n    invariant(easingLookup[definition] !== void 0, `Invalid easing type '${definition}'`);\n    return easingLookup[definition];\n  }\n  return definition;\n};\n\n// ../../../node_modules/motion-dom/dist/es/stats/buffer.mjs\nvar statsBuffer = {\n  value: null,\n  addProjectionMetrics: null\n};\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/order.mjs\nvar stepsOrder = [\n  \"setup\",\n  // Compute\n  \"read\",\n  // Read\n  \"resolveKeyframes\",\n  // Write/Read/Write/Read\n  \"preUpdate\",\n  // Compute\n  \"update\",\n  // Compute\n  \"preRender\",\n  // Compute\n  \"render\",\n  // Write\n  \"postRender\"\n  // Compute\n];\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/render-step.mjs\nfunction createRenderStep(runNextFrame, stepName) {\n  let thisFrame = /* @__PURE__ */ new Set();\n  let nextFrame = /* @__PURE__ */ new Set();\n  let isProcessing = false;\n  let flushNextFrame = false;\n  const toKeepAlive = /* @__PURE__ */ new WeakSet();\n  let latestFrameData = {\n    delta: 0,\n    timestamp: 0,\n    isProcessing: false\n  };\n  let numCalls = 0;\n  function triggerCallback(callback) {\n    if (toKeepAlive.has(callback)) {\n      step.schedule(callback);\n      runNextFrame();\n    }\n    numCalls++;\n    callback(latestFrameData);\n  }\n  const step = {\n    /**\n     * Schedule a process to run on the next frame.\n     */\n    schedule: (callback, keepAlive = false, immediate = false) => {\n      const addToCurrentFrame = immediate && isProcessing;\n      const queue = addToCurrentFrame ? thisFrame : nextFrame;\n      if (keepAlive)\n        toKeepAlive.add(callback);\n      if (!queue.has(callback))\n        queue.add(callback);\n      return callback;\n    },\n    /**\n     * Cancel the provided callback from running on the next frame.\n     */\n    cancel: (callback) => {\n      nextFrame.delete(callback);\n      toKeepAlive.delete(callback);\n    },\n    /**\n     * Execute all schedule callbacks.\n     */\n    process: (frameData2) => {\n      latestFrameData = frameData2;\n      if (isProcessing) {\n        flushNextFrame = true;\n        return;\n      }\n      isProcessing = true;\n      [thisFrame, nextFrame] = [nextFrame, thisFrame];\n      thisFrame.forEach(triggerCallback);\n      if (stepName && statsBuffer.value) {\n        statsBuffer.value.frameloop[stepName].push(numCalls);\n      }\n      numCalls = 0;\n      thisFrame.clear();\n      isProcessing = false;\n      if (flushNextFrame) {\n        flushNextFrame = false;\n        step.process(frameData2);\n      }\n    }\n  };\n  return step;\n}\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/batcher.mjs\nvar maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n  let runNextFrame = false;\n  let useDefaultElapsed = true;\n  const state = {\n    delta: 0,\n    timestamp: 0,\n    isProcessing: false\n  };\n  const flagRunNextFrame = () => runNextFrame = true;\n  const steps2 = stepsOrder.reduce((acc, key) => {\n    acc[key] = createRenderStep(flagRunNextFrame, allowKeepAlive ? key : void 0);\n    return acc;\n  }, {});\n  const { setup, read, resolveKeyframes, preUpdate, update, preRender, render, postRender } = steps2;\n  const processBatch = () => {\n    const timestamp = MotionGlobalConfig.useManualTiming ? state.timestamp : performance.now();\n    runNextFrame = false;\n    if (!MotionGlobalConfig.useManualTiming) {\n      state.delta = useDefaultElapsed ? 1e3 / 60 : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n    }\n    state.timestamp = timestamp;\n    state.isProcessing = true;\n    setup.process(state);\n    read.process(state);\n    resolveKeyframes.process(state);\n    preUpdate.process(state);\n    update.process(state);\n    preRender.process(state);\n    render.process(state);\n    postRender.process(state);\n    state.isProcessing = false;\n    if (runNextFrame && allowKeepAlive) {\n      useDefaultElapsed = false;\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const wake = () => {\n    runNextFrame = true;\n    useDefaultElapsed = true;\n    if (!state.isProcessing) {\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const schedule = stepsOrder.reduce((acc, key) => {\n    const step = steps2[key];\n    acc[key] = (process2, keepAlive = false, immediate = false) => {\n      if (!runNextFrame)\n        wake();\n      return step.schedule(process2, keepAlive, immediate);\n    };\n    return acc;\n  }, {});\n  const cancel = (process2) => {\n    for (let i = 0; i < stepsOrder.length; i++) {\n      steps2[stepsOrder[i]].cancel(process2);\n    }\n  };\n  return { schedule, cancel, state, steps: steps2 };\n}\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/frame.mjs\nvar { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps } = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/sync-time.mjs\nvar now;\nfunction clearTime() {\n  now = void 0;\n}\nvar time = {\n  now: () => {\n    if (now === void 0) {\n      time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming ? frameData.timestamp : performance.now());\n    }\n    return now;\n  },\n  set: (newTime) => {\n    now = newTime;\n    queueMicrotask(clearTime);\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/stats/animation-count.mjs\nvar activeAnimations = {\n  layout: 0,\n  mainThread: 0,\n  waapi: 0\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/is-css-variable.mjs\nvar checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nvar isCSSVariableName = /* @__PURE__ */ checkStringStartsWith(\"--\");\nvar startsAsVariableToken = /* @__PURE__ */ checkStringStartsWith(\"var(--\");\nvar isCSSVariableToken = (value) => {\n  const startsWithToken = startsAsVariableToken(value);\n  if (!startsWithToken)\n    return false;\n  return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nvar singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n\n// ../../../node_modules/motion-dom/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/motion-dom/dist/es/value/types/utils/sanitize.mjs\nvar sanitize = (v) => Math.round(v * 1e5) / 1e5;\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/float-regex.mjs\nvar floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/is-nullish.mjs\nfunction isNullish(v) {\n  return v == null;\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.mjs\nvar singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\n\n// ../../../node_modules/motion-dom/dist/es/value/types/color/utils.mjs\nvar isColorString = (type, testProp) => (v) => {\n  return Boolean(typeof v === \"string\" && singleColorRegex.test(v) && v.startsWith(type) || testProp && !isNullish(v) && Object.prototype.hasOwnProperty.call(v, testProp));\n};\nvar splitColor = (aName, bName, cName) => (v) => {\n  if (typeof v !== \"string\")\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/motion-dom/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: /* @__PURE__ */ isColorString(\"rgb\", \"red\"),\n  parse: /* @__PURE__ */ 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/motion-dom/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: /* @__PURE__ */ isColorString(\"#\"),\n  parse: parseHex,\n  transform: rgba.transform\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/numbers/units.mjs\nvar createUnitType = /* @__NO_SIDE_EFFECTS__ */ (unit) => ({\n  test: (v) => typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1,\n  parse: parseFloat,\n  transform: (v) => `${v}${unit}`\n});\nvar degrees = /* @__PURE__ */ createUnitType(\"deg\");\nvar percent = /* @__PURE__ */ createUnitType(\"%\");\nvar px = /* @__PURE__ */ createUnitType(\"px\");\nvar vh = /* @__PURE__ */ createUnitType(\"vh\");\nvar vw = /* @__PURE__ */ createUnitType(\"vw\");\nvar progressPercentage = /* @__PURE__ */ (() => ({\n  ...percent,\n  parse: (v) => percent.parse(v) / 100,\n  transform: (v) => percent.transform(v * 100)\n}))();\n\n// ../../../node_modules/motion-dom/dist/es/value/types/color/hsla.mjs\nvar hsla = {\n  test: /* @__PURE__ */ isColorString(\"hsl\", \"hue\"),\n  parse: /* @__PURE__ */ 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/motion-dom/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 typeof v === \"string\" ? v : v.hasOwnProperty(\"red\") ? rgba.transform(v) : hsla.transform(v);\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/color-regex.mjs\nvar colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\n\n// ../../../node_modules/motion-dom/dist/es/value/types/complex/index.mjs\nfunction test(v) {\n  var _a, _b;\n  return isNaN(v) && typeof v === \"string\" && (((_a = v.match(floatRegex)) == null ? void 0 : _a.length) || 0) + (((_b = v.match(colorRegex)) == null ? void 0 : _b.length) || 0) > 0;\n}\nvar NUMBER_TOKEN = \"number\";\nvar COLOR_TOKEN = \"color\";\nvar VAR_TOKEN = \"var\";\nvar VAR_FUNCTION_TOKEN = \"var(\";\nvar SPLIT_TOKEN = \"${}\";\nvar complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n  const originalValue = value.toString();\n  const values = [];\n  const indexes = {\n    color: [],\n    number: [],\n    var: []\n  };\n  const types = [];\n  let i = 0;\n  const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n    if (color.test(parsedValue)) {\n      indexes.color.push(i);\n      types.push(COLOR_TOKEN);\n      values.push(color.parse(parsedValue));\n    } else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n      indexes.var.push(i);\n      types.push(VAR_TOKEN);\n      values.push(parsedValue);\n    } else {\n      indexes.number.push(i);\n      types.push(NUMBER_TOKEN);\n      values.push(parseFloat(parsedValue));\n    }\n    ++i;\n    return SPLIT_TOKEN;\n  });\n  const split = tokenised.split(SPLIT_TOKEN);\n  return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n  return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n  const { split, types } = analyseComplexValue(source);\n  const numSections = split.length;\n  return (v) => {\n    let output = \"\";\n    for (let i = 0; i < numSections; i++) {\n      output += split[i];\n      if (v[i] !== void 0) {\n        const type = types[i];\n        if (type === NUMBER_TOKEN) {\n          output += sanitize(v[i]);\n        } else if (type === COLOR_TOKEN) {\n          output += color.transform(v[i]);\n        } else {\n          output += v[i];\n        }\n      }\n    }\n    return output;\n  };\n}\nvar convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n  const parsed = parseComplexValue(v);\n  const transformer = createTransformer(v);\n  return transformer(parsed.map(convertNumbersToZero));\n}\nvar complex = {\n  test,\n  parse: parseComplexValue,\n  createTransformer,\n  getAnimatableNone\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/color/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/motion-dom/dist/es/utils/mix/immediate.mjs\nfunction mixImmediate(a, b) {\n  return (p) => p > 0 ? b : a;\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/number.mjs\nvar mixNumber = (from, to, progress2) => {\n  return from + (to - from) * progress2;\n};\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/color.mjs\nvar mixLinearColor = (from, to, v) => {\n  const fromExpo = from * from;\n  const expo = v * (to * to - fromExpo) + fromExpo;\n  return expo < 0 ? 0 : Math.sqrt(expo);\n};\nvar colorTypes = [hex, rgba, hsla];\nvar getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color2) {\n  const type = getColorType(color2);\n  warning(Boolean(type), `'${color2}' is not an animatable color. Use the equivalent color code instead.`);\n  if (!Boolean(type))\n    return false;\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  if (!fromRGBA || !toRGBA) {\n    return mixImmediate(from, to);\n  }\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 = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n    return rgba.transform(blended);\n  };\n};\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/visibility.mjs\nvar invisibleValues = /* @__PURE__ */ new Set([\"none\", \"hidden\"]);\nfunction mixVisibility(origin, target) {\n  if (invisibleValues.has(origin)) {\n    return (p) => p <= 0 ? origin : target;\n  } else {\n    return (p) => p >= 1 ? target : origin;\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/complex.mjs\nfunction mixNumber2(a, b) {\n  return (p) => mixNumber(a, b, p);\n}\nfunction getMixer(a) {\n  if (typeof a === \"number\") {\n    return mixNumber2;\n  } else if (typeof a === \"string\") {\n    return isCSSVariableToken(a) ? mixImmediate : color.test(a) ? mixColor : mixComplex;\n  } else if (Array.isArray(a)) {\n    return mixArray;\n  } else if (typeof a === \"object\") {\n    return color.test(a) ? mixColor : mixObject;\n  }\n  return mixImmediate;\n}\nfunction mixArray(a, b) {\n  const output = [...a];\n  const numValues = output.length;\n  const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n  return (p) => {\n    for (let i = 0; i < numValues; i++) {\n      output[i] = blendValue[i](p);\n    }\n    return output;\n  };\n}\nfunction mixObject(a, b) {\n  const output = { ...a, ...b };\n  const blendValue = {};\n  for (const key in output) {\n    if (a[key] !== void 0 && b[key] !== void 0) {\n      blendValue[key] = getMixer(a[key])(a[key], b[key]);\n    }\n  }\n  return (v) => {\n    for (const key in blendValue) {\n      output[key] = blendValue[key](v);\n    }\n    return output;\n  };\n}\nfunction matchOrder(origin, target) {\n  const orderedOrigin = [];\n  const pointers = { color: 0, var: 0, number: 0 };\n  for (let i = 0; i < target.values.length; i++) {\n    const type = target.types[i];\n    const originIndex = origin.indexes[type][pointers[type]];\n    const originValue = origin.values[originIndex] ?? 0;\n    orderedOrigin[i] = originValue;\n    pointers[type]++;\n  }\n  return orderedOrigin;\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.indexes.var.length === targetStats.indexes.var.length && originStats.indexes.color.length === targetStats.indexes.color.length && originStats.indexes.number.length >= targetStats.indexes.number.length;\n  if (canInterpolate) {\n    if (invisibleValues.has(origin) && !targetStats.values.length || invisibleValues.has(target) && !originStats.values.length) {\n      return mixVisibility(origin, target);\n    }\n    return pipe(mixArray(matchOrder(originStats, targetStats), 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 mixImmediate(origin, target);\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/utils/mix/index.mjs\nfunction mix(from, to, p) {\n  if (typeof from === \"number\" && typeof to === \"number\" && typeof p === \"number\") {\n    return mixNumber(from, to, p);\n  }\n  const mixer = getMixer(from);\n  return mixer(from, to);\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs\nvar generateLinearEasing = (easing, duration, resolution = 10) => {\n  let points = \"\";\n  const numPoints = Math.max(Math.round(duration / resolution), 2);\n  for (let i = 0; i < numPoints; i++) {\n    points += easing(i / (numPoints - 1)) + \", \";\n  }\n  return `linear(${points.substring(0, points.length - 2)})`;\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs\nvar maxGeneratorDuration = 2e4;\nfunction calcGeneratorDuration(generator) {\n  let duration = 0;\n  const timeStep = 50;\n  let state = generator.next(duration);\n  while (!state.done && duration < maxGeneratorDuration) {\n    duration += timeStep;\n    state = generator.next(duration);\n  }\n  return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.mjs\nfunction createGeneratorEasing(options, scale2 = 100, createGenerator) {\n  const generator = createGenerator({ ...options, keyframes: [0, scale2] });\n  const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n  return {\n    type: \"keyframes\",\n    ease: (progress2) => {\n      return generator.next(duration * progress2).value / scale2;\n    },\n    duration: millisecondsToSeconds(duration)\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/utils/velocity.mjs\nvar velocitySampleDuration = 5;\nfunction calcGeneratorVelocity(resolveValue, t, current2) {\n  const prevT = Math.max(t - velocitySampleDuration, 0);\n  return velocityPerSecond(current2 - resolveValue(prevT), t - prevT);\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/spring/defaults.mjs\nvar springDefaults = {\n  // Default spring physics\n  stiffness: 100,\n  damping: 10,\n  mass: 1,\n  velocity: 0,\n  // Default duration/bounce-based options\n  duration: 800,\n  // in ms\n  bounce: 0.3,\n  visualDuration: 0.3,\n  // in seconds\n  // Rest thresholds\n  restSpeed: {\n    granular: 0.01,\n    default: 2\n  },\n  restDelta: {\n    granular: 5e-3,\n    default: 0.5\n  },\n  // Limits\n  minDuration: 0.01,\n  // in seconds\n  maxDuration: 10,\n  // in seconds\n  minDamping: 0.05,\n  maxDamping: 1\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/spring/find.mjs\nvar safeMin = 1e-3;\nfunction findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, velocity = springDefaults.velocity, mass = springDefaults.mass }) {\n  let envelope;\n  let derivative;\n  warning(duration <= secondsToMilliseconds(springDefaults.maxDuration), \"Spring duration must be 10 seconds or less\");\n  let dampingRatio = 1 - bounce;\n  dampingRatio = clamp(springDefaults.minDamping, springDefaults.maxDamping, dampingRatio);\n  duration = clamp(springDefaults.minDuration, springDefaults.maxDuration, millisecondsToSeconds(duration));\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 = secondsToMilliseconds(duration);\n  if (isNaN(undampedFreq)) {\n    return {\n      stiffness: springDefaults.stiffness,\n      damping: springDefaults.damping,\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/motion-dom/dist/es/animation/generators/spring/index.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: springDefaults.velocity,\n    stiffness: springDefaults.stiffness,\n    damping: springDefaults.damping,\n    mass: springDefaults.mass,\n    isResolvedFromDuration: false,\n    ...options\n  };\n  if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {\n    if (options.visualDuration) {\n      const visualDuration = options.visualDuration;\n      const root = 2 * Math.PI / (visualDuration * 1.2);\n      const stiffness = root * root;\n      const damping = 2 * clamp(0.05, 1, 1 - (options.bounce || 0)) * Math.sqrt(stiffness);\n      springOptions = {\n        ...springOptions,\n        mass: springDefaults.mass,\n        stiffness,\n        damping\n      };\n    } else {\n      const derived = findSpring(options);\n      springOptions = {\n        ...springOptions,\n        ...derived,\n        mass: springDefaults.mass\n      };\n      springOptions.isResolvedFromDuration = true;\n    }\n  }\n  return springOptions;\n}\nfunction spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) {\n  const options = typeof optionsOrVisualDuration !== \"object\" ? {\n    visualDuration: optionsOrVisualDuration,\n    keyframes: [0, 1],\n    bounce\n  } : optionsOrVisualDuration;\n  let { restSpeed, restDelta } = options;\n  const origin = options.keyframes[0];\n  const target = options.keyframes[options.keyframes.length - 1];\n  const state = { done: false, value: origin };\n  const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration } = getSpringOptions({\n    ...options,\n    velocity: -millisecondsToSeconds(options.velocity || 0)\n  });\n  const initialVelocity = velocity || 0;\n  const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n  const initialDelta = target - origin;\n  const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n  const isGranularScale = Math.abs(initialDelta) < 5;\n  restSpeed || (restSpeed = isGranularScale ? springDefaults.restSpeed.granular : springDefaults.restSpeed.default);\n  restDelta || (restDelta = isGranularScale ? springDefaults.restDelta.granular : springDefaults.restDelta.default);\n  let resolveSpring;\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  const generator = {\n    calculatedDuration: isResolvedFromDuration ? duration || null : null,\n    next: (t) => {\n      const current2 = resolveSpring(t);\n      if (!isResolvedFromDuration) {\n        let currentVelocity = t === 0 ? initialVelocity : 0;\n        if (dampingRatio < 1) {\n          currentVelocity = t === 0 ? secondsToMilliseconds(initialVelocity) : calcGeneratorVelocity(resolveSpring, t, current2);\n        }\n        const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n        const isBelowDisplacementThreshold = Math.abs(target - current2) <= restDelta;\n        state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;\n      } else {\n        state.done = t >= duration;\n      }\n      state.value = state.done ? target : current2;\n      return state;\n    },\n    toString: () => {\n      const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n      const easing = generateLinearEasing((progress2) => generator.next(calculatedDuration * progress2).value, calculatedDuration, 30);\n      return calculatedDuration + \"ms \" + easing;\n    },\n    toTransition: () => {\n    }\n  };\n  return generator;\n}\nspring.applyToOptions = (options) => {\n  const generatorOptions = createGeneratorEasing(options, 100, spring);\n  options.ease = generatorOptions.ease;\n  options.duration = secondsToMilliseconds(generatorOptions.duration);\n  options.type = \"keyframes\";\n  return options;\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/inertia.mjs\nfunction inertia({ keyframes: keyframes2, velocity = 0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed }) {\n  const origin = keyframes2[0];\n  const state = {\n    done: false,\n    value: origin\n  };\n  const isOutOfBounds = (v) => min !== void 0 && v < min || max !== void 0 && v > max;\n  const nearestBoundary = (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  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  const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n  const calcLatest = (t) => target + calcDelta(t);\n  const applyFriction = (t) => {\n    const delta = calcDelta(t);\n    const latest = calcLatest(t);\n    state.done = Math.abs(delta) <= restDelta;\n    state.value = state.done ? target : latest;\n  };\n  let timeReachedBoundary;\n  let spring$1;\n  const checkCatchBoundary = (t) => {\n    if (!isOutOfBounds(state.value))\n      return;\n    timeReachedBoundary = t;\n    spring$1 = spring({\n      keyframes: [state.value, nearestBoundary(state.value)],\n      velocity: calcGeneratorVelocity(calcLatest, t, state.value),\n      // TODO: This should be passing * 1000\n      damping: bounceDamping,\n      stiffness: bounceStiffness,\n      restDelta,\n      restSpeed\n    });\n  };\n  checkCatchBoundary(0);\n  return {\n    calculatedDuration: null,\n    next: (t) => {\n      let hasUpdatedFrame = false;\n      if (!spring$1 && timeReachedBoundary === void 0) {\n        hasUpdatedFrame = true;\n        applyFriction(t);\n        checkCatchBoundary(t);\n      }\n      if (timeReachedBoundary !== void 0 && t >= timeReachedBoundary) {\n        return spring$1.next(t - timeReachedBoundary);\n      } else {\n        !hasUpdatedFrame && applyFriction(t);\n        return state;\n      }\n    }\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/interpolate.mjs\nfunction createMixers(output, ease2, customMixer) {\n  const mixers = [];\n  const mixerFactory = customMixer || MotionGlobalConfig.mix || mix;\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 (ease2) {\n      const easingFunction = Array.isArray(ease2) ? ease2[i] || noop : ease2;\n      mixer = pipe(easingFunction, mixer);\n    }\n    mixers.push(mixer);\n  }\n  return mixers;\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease: ease2, mixer } = {}) {\n  const inputLength = input.length;\n  invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n  if (inputLength === 1)\n    return () => output[0];\n  if (inputLength === 2 && output[0] === output[1])\n    return () => output[1];\n  const isZeroDeltaRange = input[0] === input[1];\n  if (input[0] > input[inputLength - 1]) {\n    input = [...input].reverse();\n    output = [...output].reverse();\n  }\n  const mixers = createMixers(output, ease2, mixer);\n  const numMixers = mixers.length;\n  const interpolator = (v) => {\n    if (isZeroDeltaRange && v < input[0])\n      return output[0];\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/motion-dom/dist/es/animation/keyframes/offsets/fill.mjs\nfunction fillOffset(offset, remaining) {\n  const min = offset[offset.length - 1];\n  for (let i = 1; i <= remaining; i++) {\n    const offsetProgress = progress(0, remaining, i);\n    offset.push(mixNumber(min, 1, offsetProgress));\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.mjs\nfunction defaultOffset(arr) {\n  const offset = [0];\n  fillOffset(offset, arr.length - 1);\n  return offset;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.mjs\nfunction convertOffsetToTimes(offset, duration) {\n  return offset.map((o) => o * duration);\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/keyframes.mjs\nfunction defaultEasing(values, easing) {\n  return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease: ease2 = \"easeInOut\" }) {\n  const easingFunctions = isEasingArray(ease2) ? ease2.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease2);\n  const state = {\n    done: false,\n    value: keyframeValues[0]\n  };\n  const absoluteTimes = convertOffsetToTimes(\n    // Only use the provided offsets if they're the correct length\n    // TODO Maybe we should warn here if there's a length mismatch\n    times && times.length === keyframeValues.length ? times : defaultOffset(keyframeValues),\n    duration\n  );\n  const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n    ease: Array.isArray(easingFunctions) ? easingFunctions : defaultEasing(keyframeValues, easingFunctions)\n  });\n  return {\n    calculatedDuration: duration,\n    next: (t) => {\n      state.value = mapTimeToKeyframe(t);\n      state.done = t >= duration;\n      return state;\n    }\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/drivers/frame.mjs\nvar frameloopDriver = (update) => {\n  const passTimestamp = ({ timestamp }) => update(timestamp);\n  return {\n    start: (keepAlive = true) => frame.update(passTimestamp, keepAlive),\n    stop: () => cancelFrame(passTimestamp),\n    /**\n     * If we're processing this frame we can use the\n     * framelocked timestamp to keep things in sync.\n     */\n    now: () => frameData.isProcessing ? frameData.timestamp : time.now()\n  };\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/get-final.mjs\nvar isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes2, { repeat, repeatType = \"loop\" }, finalKeyframe, speed = 1) {\n  const resolvedKeyframes = keyframes2.filter(isNotNull);\n  const useFirstKeyframe = speed < 0 || repeat && repeatType !== \"loop\" && repeat % 2 === 1;\n  const index = useFirstKeyframe ? 0 : resolvedKeyframes.length - 1;\n  return !index || finalKeyframe === void 0 ? resolvedKeyframes[index] : finalKeyframe;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.mjs\nvar transitionTypeMap = {\n  decay: inertia,\n  inertia,\n  tween: keyframes,\n  keyframes,\n  spring\n};\nfunction replaceTransitionType(transition) {\n  if (typeof transition.type === \"string\") {\n    transition.type = transitionTypeMap[transition.type];\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/WithPromise.mjs\nvar WithPromise = class {\n  constructor() {\n    this.updateFinished();\n  }\n  get finished() {\n    return this._finished;\n  }\n  updateFinished() {\n    this._finished = new Promise((resolve) => {\n      this.resolve = resolve;\n    });\n  }\n  notifyFinished() {\n    this.resolve();\n  }\n  /**\n   * Allows the animation to be awaited.\n   *\n   * @deprecated Use `finished` instead.\n   */\n  then(onResolve, onReject) {\n    return this.finished.then(onResolve, onReject);\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/JSAnimation.mjs\nvar percentToProgress = (percent2) => percent2 / 100;\nvar JSAnimation = class extends WithPromise {\n  constructor(options) {\n    super();\n    this.state = \"idle\";\n    this.startTime = null;\n    this.isStopped = false;\n    this.currentTime = 0;\n    this.holdTime = null;\n    this.playbackSpeed = 1;\n    this.stop = () => {\n      var _a, _b;\n      const { motionValue: motionValue2 } = this.options;\n      if (motionValue2 && motionValue2.updatedAt !== time.now()) {\n        this.tick(time.now());\n      }\n      this.isStopped = true;\n      if (this.state === \"idle\")\n        return;\n      this.teardown();\n      (_b = (_a = this.options).onStop) == null ? void 0 : _b.call(_a);\n    };\n    activeAnimations.mainThread++;\n    this.options = options;\n    this.initAnimation();\n    this.play();\n    if (options.autoplay === false)\n      this.pause();\n  }\n  initAnimation() {\n    const { options } = this;\n    replaceTransitionType(options);\n    const { type = keyframes, repeat = 0, repeatDelay = 0, repeatType, velocity = 0 } = options;\n    let { keyframes: keyframes$1 } = options;\n    const generatorFactory = type || keyframes;\n    if (false) {\n      invariant(keyframes$1.length <= 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);\n    }\n    if (generatorFactory !== keyframes && typeof keyframes$1[0] !== \"number\") {\n      this.mixKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n      keyframes$1 = [0, 100];\n    }\n    const generator = generatorFactory({ ...options, keyframes: keyframes$1 });\n    if (repeatType === \"mirror\") {\n      this.mirroredGenerator = generatorFactory({\n        ...options,\n        keyframes: [...keyframes$1].reverse(),\n        velocity: -velocity\n      });\n    }\n    if (generator.calculatedDuration === null) {\n      generator.calculatedDuration = calcGeneratorDuration(generator);\n    }\n    const { calculatedDuration } = generator;\n    this.calculatedDuration = calculatedDuration;\n    this.resolvedDuration = calculatedDuration + repeatDelay;\n    this.totalDuration = this.resolvedDuration * (repeat + 1) - repeatDelay;\n    this.generator = generator;\n  }\n  updateTime(timestamp) {\n    const animationTime = Math.round(timestamp - this.startTime) * this.playbackSpeed;\n    if (this.holdTime !== null) {\n      this.currentTime = this.holdTime;\n    } else {\n      this.currentTime = animationTime;\n    }\n  }\n  tick(timestamp, sample = false) {\n    const { generator, totalDuration, mixKeyframes, mirroredGenerator, resolvedDuration, calculatedDuration } = this;\n    if (this.startTime === null)\n      return generator.next(0);\n    const { delay: delay2 = 0, keyframes: keyframes2, repeat, repeatType, repeatDelay, type, onUpdate, finalKeyframe } = this.options;\n    if (this.speed > 0) {\n      this.startTime = Math.min(this.startTime, timestamp);\n    } else if (this.speed < 0) {\n      this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n    }\n    if (sample) {\n      this.currentTime = timestamp;\n    } else {\n      this.updateTime(timestamp);\n    }\n    const timeWithoutDelay = this.currentTime - delay2 * (this.playbackSpeed >= 0 ? 1 : -1);\n    const isInDelayPhase = this.playbackSpeed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;\n    this.currentTime = Math.max(timeWithoutDelay, 0);\n    if (this.state === \"finished\" && this.holdTime === null) {\n      this.currentTime = totalDuration;\n    }\n    let elapsed = this.currentTime;\n    let frameGenerator = generator;\n    if (repeat) {\n      const progress2 = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n      let currentIteration = Math.floor(progress2);\n      let iterationProgress = progress2 % 1;\n      if (!iterationProgress && progress2 >= 1) {\n        iterationProgress = 1;\n      }\n      iterationProgress === 1 && currentIteration--;\n      currentIteration = Math.min(currentIteration, repeat + 1);\n      const isOddIteration = Boolean(currentIteration % 2);\n      if (isOddIteration) {\n        if (repeatType === \"reverse\") {\n          iterationProgress = 1 - iterationProgress;\n          if (repeatDelay) {\n            iterationProgress -= repeatDelay / resolvedDuration;\n          }\n        } else if (repeatType === \"mirror\") {\n          frameGenerator = mirroredGenerator;\n        }\n      }\n      elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n    }\n    const state = isInDelayPhase ? { done: false, value: keyframes2[0] } : frameGenerator.next(elapsed);\n    if (mixKeyframes) {\n      state.value = mixKeyframes(state.value);\n    }\n    let { done } = state;\n    if (!isInDelayPhase && calculatedDuration !== null) {\n      done = this.playbackSpeed >= 0 ? this.currentTime >= totalDuration : this.currentTime <= 0;\n    }\n    const isAnimationFinished = this.holdTime === null && (this.state === \"finished\" || this.state === \"running\" && done);\n    if (isAnimationFinished && type !== inertia) {\n      state.value = getFinalKeyframe(keyframes2, this.options, finalKeyframe, this.speed);\n    }\n    if (onUpdate) {\n      onUpdate(state.value);\n    }\n    if (isAnimationFinished) {\n      this.finish();\n    }\n    return state;\n  }\n  /**\n   * Allows the returned animation to be awaited or promise-chained. Currently\n   * resolves when the animation finishes at all but in a future update could/should\n   * reject if its cancels.\n   */\n  then(resolve, reject) {\n    return this.finished.then(resolve, reject);\n  }\n  get duration() {\n    return millisecondsToSeconds(this.calculatedDuration);\n  }\n  get time() {\n    return millisecondsToSeconds(this.currentTime);\n  }\n  set time(newTime) {\n    var _a;\n    newTime = secondsToMilliseconds(newTime);\n    this.currentTime = newTime;\n    if (this.startTime === null || this.holdTime !== null || this.playbackSpeed === 0) {\n      this.holdTime = newTime;\n    } else if (this.driver) {\n      this.startTime = this.driver.now() - newTime / this.playbackSpeed;\n    }\n    (_a = this.driver) == null ? void 0 : _a.start(false);\n  }\n  get speed() {\n    return this.playbackSpeed;\n  }\n  set speed(newSpeed) {\n    this.updateTime(time.now());\n    const hasChanged = this.playbackSpeed !== newSpeed;\n    this.playbackSpeed = newSpeed;\n    if (hasChanged) {\n      this.time = millisecondsToSeconds(this.currentTime);\n    }\n  }\n  play() {\n    var _a, _b;\n    if (this.isStopped)\n      return;\n    const { driver = frameloopDriver, startTime } = this.options;\n    if (!this.driver) {\n      this.driver = driver((timestamp) => this.tick(timestamp));\n    }\n    (_b = (_a = this.options).onPlay) == null ? void 0 : _b.call(_a);\n    const now2 = this.driver.now();\n    if (this.state === \"finished\") {\n      this.updateFinished();\n      this.startTime = now2;\n    } else if (this.holdTime !== null) {\n      this.startTime = now2 - this.holdTime;\n    } else if (!this.startTime) {\n      this.startTime = startTime ?? now2;\n    }\n    if (this.state === \"finished\" && this.speed < 0) {\n      this.startTime += this.calculatedDuration;\n    }\n    this.holdTime = null;\n    this.state = \"running\";\n    this.driver.start();\n  }\n  pause() {\n    this.state = \"paused\";\n    this.updateTime(time.now());\n    this.holdTime = this.currentTime;\n  }\n  complete() {\n    if (this.state !== \"running\") {\n      this.play();\n    }\n    this.state = \"finished\";\n    this.holdTime = null;\n  }\n  finish() {\n    var _a, _b;\n    this.notifyFinished();\n    this.teardown();\n    this.state = \"finished\";\n    (_b = (_a = this.options).onComplete) == null ? void 0 : _b.call(_a);\n  }\n  cancel() {\n    var _a, _b;\n    this.holdTime = null;\n    this.startTime = 0;\n    this.tick(0);\n    this.teardown();\n    (_b = (_a = this.options).onCancel) == null ? void 0 : _b.call(_a);\n  }\n  teardown() {\n    this.state = \"idle\";\n    this.stopDriver();\n    this.startTime = this.holdTime = null;\n    activeAnimations.mainThread--;\n  }\n  stopDriver() {\n    if (!this.driver)\n      return;\n    this.driver.stop();\n    this.driver = void 0;\n  }\n  sample(sampleTime) {\n    this.startTime = 0;\n    return this.tick(sampleTime, true);\n  }\n  attachTimeline(timeline) {\n    var _a;\n    if (this.options.allowFlatten) {\n      this.options.type = \"keyframes\";\n      this.options.ease = \"linear\";\n      this.initAnimation();\n    }\n    (_a = this.driver) == null ? void 0 : _a.stop();\n    return timeline.observe(this);\n  }\n};\nfunction animateValue(options) {\n  return new JSAnimation(options);\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.mjs\nfunction fillWildcards(keyframes2) {\n  for (let i = 1; i < keyframes2.length; i++) {\n    keyframes2[i] ?? (keyframes2[i] = keyframes2[i - 1]);\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/parse-transform.mjs\nvar radToDeg = (rad) => rad * 180 / Math.PI;\nvar rotate = (v) => {\n  const angle = radToDeg(Math.atan2(v[1], v[0]));\n  return rebaseAngle(angle);\n};\nvar matrix2dParsers = {\n  x: 4,\n  y: 5,\n  translateX: 4,\n  translateY: 5,\n  scaleX: 0,\n  scaleY: 3,\n  scale: (v) => (Math.abs(v[0]) + Math.abs(v[3])) / 2,\n  rotate,\n  rotateZ: rotate,\n  skewX: (v) => radToDeg(Math.atan(v[1])),\n  skewY: (v) => radToDeg(Math.atan(v[2])),\n  skew: (v) => (Math.abs(v[1]) + Math.abs(v[2])) / 2\n};\nvar rebaseAngle = (angle) => {\n  angle = angle % 360;\n  if (angle < 0)\n    angle += 360;\n  return angle;\n};\nvar rotateZ = rotate;\nvar scaleX = (v) => Math.sqrt(v[0] * v[0] + v[1] * v[1]);\nvar scaleY = (v) => Math.sqrt(v[4] * v[4] + v[5] * v[5]);\nvar matrix3dParsers = {\n  x: 12,\n  y: 13,\n  z: 14,\n  translateX: 12,\n  translateY: 13,\n  translateZ: 14,\n  scaleX,\n  scaleY,\n  scale: (v) => (scaleX(v) + scaleY(v)) / 2,\n  rotateX: (v) => rebaseAngle(radToDeg(Math.atan2(v[6], v[5]))),\n  rotateY: (v) => rebaseAngle(radToDeg(Math.atan2(-v[2], v[0]))),\n  rotateZ,\n  rotate: rotateZ,\n  skewX: (v) => radToDeg(Math.atan(v[4])),\n  skewY: (v) => radToDeg(Math.atan(v[1])),\n  skew: (v) => (Math.abs(v[1]) + Math.abs(v[4])) / 2\n};\nfunction defaultTransformValue(name) {\n  return name.includes(\"scale\") ? 1 : 0;\n}\nfunction parseValueFromTransform(transform2, name) {\n  if (!transform2 || transform2 === \"none\") {\n    return defaultTransformValue(name);\n  }\n  const matrix3dMatch = transform2.match(/^matrix3d\\(([-\\d.e\\s,]+)\\)$/u);\n  let parsers;\n  let match;\n  if (matrix3dMatch) {\n    parsers = matrix3dParsers;\n    match = matrix3dMatch;\n  } else {\n    const matrix2dMatch = transform2.match(/^matrix\\(([-\\d.e\\s,]+)\\)$/u);\n    parsers = matrix2dParsers;\n    match = matrix2dMatch;\n  }\n  if (!match) {\n    return defaultTransformValue(name);\n  }\n  const valueParser = parsers[name];\n  const values = match[1].split(\",\").map(convertTransformToNumber);\n  return typeof valueParser === \"function\" ? valueParser(values) : values[valueParser];\n}\nvar readTransformValue = (instance, name) => {\n  const { transform: transform2 = \"none\" } = getComputedStyle(instance);\n  return parseValueFromTransform(transform2, name);\n};\nfunction convertTransformToNumber(value) {\n  return parseFloat(value.trim());\n}\n\n// ../../../node_modules/motion-dom/dist/es/render/utils/keys-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 = /* @__PURE__ */ (() => new Set(transformPropOrder))();\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.mjs\nvar isNumOrPxType = (v) => v === number || v === px;\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  return removedTransforms;\n}\nvar positionalValues = {\n  // Dimensions\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  // Transform\n  x: (_bbox, { transform: transform2 }) => parseValueFromTransform(transform2, \"x\"),\n  y: (_bbox, { transform: transform2 }) => parseValueFromTransform(transform2, \"y\")\n};\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.mjs\nvar toResolve = /* @__PURE__ */ new Set();\nvar isScheduled = false;\nvar anyNeedsMeasurement = false;\nvar isForced = false;\nfunction measureAllKeyframes() {\n  if (anyNeedsMeasurement) {\n    const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n    const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n    const transformsToRestore = /* @__PURE__ */ new Map();\n    elementsToMeasure.forEach((element) => {\n      const removedTransforms = removeNonTranslationalTransform(element);\n      if (!removedTransforms.length)\n        return;\n      transformsToRestore.set(element, removedTransforms);\n      element.render();\n    });\n    resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n    elementsToMeasure.forEach((element) => {\n      element.render();\n      const restore = transformsToRestore.get(element);\n      if (restore) {\n        restore.forEach(([key, value]) => {\n          var _a;\n          (_a = element.getValue(key)) == null ? void 0 : _a.set(value);\n        });\n      }\n    });\n    resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n    resolversToMeasure.forEach((resolver) => {\n      if (resolver.suspendedScrollY !== void 0) {\n        window.scrollTo(0, resolver.suspendedScrollY);\n      }\n    });\n  }\n  anyNeedsMeasurement = false;\n  isScheduled = false;\n  toResolve.forEach((resolver) => resolver.complete(isForced));\n  toResolve.clear();\n}\nfunction readAllKeyframes() {\n  toResolve.forEach((resolver) => {\n    resolver.readKeyframes();\n    if (resolver.needsMeasurement) {\n      anyNeedsMeasurement = true;\n    }\n  });\n}\nfunction flushKeyframeResolvers() {\n  isForced = true;\n  readAllKeyframes();\n  measureAllKeyframes();\n  isForced = false;\n}\nvar KeyframeResolver = class {\n  constructor(unresolvedKeyframes, onComplete, name, motionValue2, element, isAsync = false) {\n    this.state = \"pending\";\n    this.isAsync = false;\n    this.needsMeasurement = false;\n    this.unresolvedKeyframes = [...unresolvedKeyframes];\n    this.onComplete = onComplete;\n    this.name = name;\n    this.motionValue = motionValue2;\n    this.element = element;\n    this.isAsync = isAsync;\n  }\n  scheduleResolve() {\n    this.state = \"scheduled\";\n    if (this.isAsync) {\n      toResolve.add(this);\n      if (!isScheduled) {\n        isScheduled = true;\n        frame.read(readAllKeyframes);\n        frame.resolveKeyframes(measureAllKeyframes);\n      }\n    } else {\n      this.readKeyframes();\n      this.complete();\n    }\n  }\n  readKeyframes() {\n    const { unresolvedKeyframes, name, element, motionValue: motionValue2 } = this;\n    if (unresolvedKeyframes[0] === null) {\n      const currentValue = motionValue2 == null ? void 0 : motionValue2.get();\n      const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n      if (currentValue !== void 0) {\n        unresolvedKeyframes[0] = currentValue;\n      } else if (element && name) {\n        const valueAsRead = element.readValue(name, finalKeyframe);\n        if (valueAsRead !== void 0 && valueAsRead !== null) {\n          unresolvedKeyframes[0] = valueAsRead;\n        }\n      }\n      if (unresolvedKeyframes[0] === void 0) {\n        unresolvedKeyframes[0] = finalKeyframe;\n      }\n      if (motionValue2 && currentValue === void 0) {\n        motionValue2.set(unresolvedKeyframes[0]);\n      }\n    }\n    fillWildcards(unresolvedKeyframes);\n  }\n  setFinalKeyframe() {\n  }\n  measureInitialState() {\n  }\n  renderEndStyles() {\n  }\n  measureEndState() {\n  }\n  complete(isForcedComplete = false) {\n    this.state = \"complete\";\n    this.onComplete(this.unresolvedKeyframes, this.finalKeyframe, isForcedComplete);\n    toResolve.delete(this);\n  }\n  cancel() {\n    if (this.state === \"scheduled\") {\n      toResolve.delete(this);\n      this.state = \"pending\";\n    }\n  }\n  resume() {\n    if (this.state === \"pending\")\n      this.scheduleResolve();\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/is-css-var.mjs\nvar isCSSVar = (name) => name.startsWith(\"--\");\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/style-set.mjs\nfunction setStyle(element, name, value) {\n  isCSSVar(name) ? element.style.setProperty(name, value) : element.style[name] = value;\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs\nvar supportsScrollTimeline = /* @__PURE__ */ memo(() => window.ScrollTimeline !== void 0);\n\n// ../../../node_modules/motion-dom/dist/es/utils/supports/flags.mjs\nvar supportsFlags = {};\n\n// ../../../node_modules/motion-dom/dist/es/utils/supports/memo.mjs\nfunction memoSupports(callback, supportsFlag) {\n  const memoized = memo(callback);\n  return () => supportsFlags[supportsFlag] ?? memoized();\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs\nvar supportsLinearEasing = /* @__PURE__ */ memoSupports(() => {\n  try {\n    document.createElement(\"div\").animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n  } catch (e) {\n    return false;\n  }\n  return true;\n}, \"linearEasing\");\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.mjs\nvar cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/easing/supported.mjs\nvar supportedWaapiEasing = {\n  linear: \"linear\",\n  ease: \"ease\",\n  easeIn: \"ease-in\",\n  easeOut: \"ease-out\",\n  easeInOut: \"ease-in-out\",\n  circIn: /* @__PURE__ */ cubicBezierAsString([0, 0.65, 0.55, 1]),\n  circOut: /* @__PURE__ */ cubicBezierAsString([0.55, 0, 1, 0.45]),\n  backIn: /* @__PURE__ */ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n  backOut: /* @__PURE__ */ cubicBezierAsString([0.33, 1.53, 0.69, 0.99])\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs\nfunction mapEasingToNativeEasing(easing, duration) {\n  if (!easing) {\n    return void 0;\n  } else if (typeof easing === \"function\") {\n    return supportsLinearEasing() ? generateLinearEasing(easing, duration) : \"ease-out\";\n  } else if (isBezierDefinition(easing)) {\n    return cubicBezierAsString(easing);\n  } else if (Array.isArray(easing)) {\n    return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) || supportedWaapiEasing.easeOut);\n  } else {\n    return supportedWaapiEasing[easing];\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs\nfunction startWaapiAnimation(element, valueName, keyframes2, { delay: delay2 = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease: ease2 = \"easeOut\", times } = {}, pseudoElement = void 0) {\n  const keyframeOptions = {\n    [valueName]: keyframes2\n  };\n  if (times)\n    keyframeOptions.offset = times;\n  const easing = mapEasingToNativeEasing(ease2, duration);\n  if (Array.isArray(easing))\n    keyframeOptions.easing = easing;\n  if (statsBuffer.value) {\n    activeAnimations.waapi++;\n  }\n  const options = {\n    delay: delay2,\n    duration,\n    easing: !Array.isArray(easing) ? easing : \"linear\",\n    fill: \"both\",\n    iterations: repeat + 1,\n    direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\"\n  };\n  if (pseudoElement)\n    options.pseudoElement = pseudoElement;\n  const animation = element.animate(keyframeOptions, options);\n  if (statsBuffer.value) {\n    animation.finished.finally(() => {\n      activeAnimations.waapi--;\n    });\n  }\n  return animation;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs\nfunction isGenerator(type) {\n  return typeof type === \"function\" && \"applyToOptions\" in type;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs\nfunction applyGeneratorOptions({ type, ...options }) {\n  if (isGenerator(type) && supportsLinearEasing()) {\n    return type.applyToOptions(options);\n  } else {\n    options.duration ?? (options.duration = 300);\n    options.ease ?? (options.ease = \"easeOut\");\n  }\n  return options;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/NativeAnimation.mjs\nvar NativeAnimation = class extends WithPromise {\n  constructor(options) {\n    super();\n    this.finishedTime = null;\n    this.isStopped = false;\n    if (!options)\n      return;\n    const { element, name, keyframes: keyframes2, pseudoElement, allowFlatten = false, finalKeyframe, onComplete } = options;\n    this.isPseudoElement = Boolean(pseudoElement);\n    this.allowFlatten = allowFlatten;\n    this.options = options;\n    invariant(typeof options.type !== \"string\", `animateMini doesn't support \"type\" as a string. Did you mean to import { spring } from \"motion\"?`);\n    const transition = applyGeneratorOptions(options);\n    this.animation = startWaapiAnimation(element, name, keyframes2, transition, pseudoElement);\n    if (transition.autoplay === false) {\n      this.animation.pause();\n    }\n    this.animation.onfinish = () => {\n      this.finishedTime = this.time;\n      if (!pseudoElement) {\n        const keyframe = getFinalKeyframe(keyframes2, this.options, finalKeyframe, this.speed);\n        if (this.updateMotionValue) {\n          this.updateMotionValue(keyframe);\n        } else {\n          setStyle(element, name, keyframe);\n        }\n        this.animation.cancel();\n      }\n      onComplete == null ? void 0 : onComplete();\n      this.notifyFinished();\n    };\n  }\n  play() {\n    if (this.isStopped)\n      return;\n    this.animation.play();\n    if (this.state === \"finished\") {\n      this.updateFinished();\n    }\n  }\n  pause() {\n    this.animation.pause();\n  }\n  complete() {\n    var _a, _b;\n    (_b = (_a = this.animation).finish) == null ? void 0 : _b.call(_a);\n  }\n  cancel() {\n    try {\n      this.animation.cancel();\n    } catch (e) {\n    }\n  }\n  stop() {\n    if (this.isStopped)\n      return;\n    this.isStopped = true;\n    const { state } = this;\n    if (state === \"idle\" || state === \"finished\") {\n      return;\n    }\n    if (this.updateMotionValue) {\n      this.updateMotionValue();\n    } else {\n      this.commitStyles();\n    }\n    if (!this.isPseudoElement)\n      this.cancel();\n  }\n  /**\n   * WAAPI doesn't natively have any interruption capabilities.\n   *\n   * In this method, we commit styles back to the DOM before cancelling\n   * the animation.\n   *\n   * This is designed to be overridden by NativeAnimationExtended, which\n   * will create a renderless JS animation and sample it twice to calculate\n   * its current value, \"previous\" value, and therefore allow\n   * Motion to also correctly calculate velocity for any subsequent animation\n   * while deferring the commit until the next animation frame.\n   */\n  commitStyles() {\n    var _a, _b;\n    if (!this.isPseudoElement) {\n      (_b = (_a = this.animation).commitStyles) == null ? void 0 : _b.call(_a);\n    }\n  }\n  get duration() {\n    var _a, _b;\n    const duration = ((_b = (_a = this.animation.effect) == null ? void 0 : _a.getComputedTiming) == null ? void 0 : _b.call(_a).duration) || 0;\n    return millisecondsToSeconds(Number(duration));\n  }\n  get time() {\n    return millisecondsToSeconds(Number(this.animation.currentTime) || 0);\n  }\n  set time(newTime) {\n    this.finishedTime = null;\n    this.animation.currentTime = secondsToMilliseconds(newTime);\n  }\n  /**\n   * The playback speed of the animation.\n   * 1 = normal speed, 2 = double speed, 0.5 = half speed.\n   */\n  get speed() {\n    return this.animation.playbackRate;\n  }\n  set speed(newSpeed) {\n    if (newSpeed < 0)\n      this.finishedTime = null;\n    this.animation.playbackRate = newSpeed;\n  }\n  get state() {\n    return this.finishedTime !== null ? \"finished\" : this.animation.playState;\n  }\n  get startTime() {\n    return Number(this.animation.startTime);\n  }\n  set startTime(newStartTime) {\n    this.animation.startTime = newStartTime;\n  }\n  /**\n   * Attaches a timeline to the animation, for instance the `ScrollTimeline`.\n   */\n  attachTimeline({ timeline, observe }) {\n    var _a;\n    if (this.allowFlatten) {\n      (_a = this.animation.effect) == null ? void 0 : _a.updateTiming({ easing: \"linear\" });\n    }\n    this.animation.onfinish = null;\n    if (timeline && supportsScrollTimeline()) {\n      this.animation.timeline = timeline;\n      return noop;\n    } else {\n      return observe(this);\n    }\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.mjs\nvar unsupportedEasingFunctions = {\n  anticipate,\n  backInOut,\n  circInOut\n};\nfunction isUnsupportedEase(key) {\n  return key in unsupportedEasingFunctions;\n}\nfunction replaceStringEasing(transition) {\n  if (typeof transition.ease === \"string\" && isUnsupportedEase(transition.ease)) {\n    transition.ease = unsupportedEasingFunctions[transition.ease];\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.mjs\nvar sampleDelta = 10;\nvar NativeAnimationExtended = class extends NativeAnimation {\n  constructor(options) {\n    replaceStringEasing(options);\n    replaceTransitionType(options);\n    super(options);\n    if (options.startTime) {\n      this.startTime = options.startTime;\n    }\n    this.options = options;\n  }\n  /**\n   * WAAPI doesn't natively have any interruption capabilities.\n   *\n   * Rather than read commited styles back out of the DOM, we can\n   * create a renderless JS animation and sample it twice to calculate\n   * its current value, \"previous\" value, and therefore allow\n   * Motion to calculate velocity for any subsequent animation.\n   */\n  updateMotionValue(value) {\n    const { motionValue: motionValue2, onUpdate, onComplete, element, ...options } = this.options;\n    if (!motionValue2)\n      return;\n    if (value !== void 0) {\n      motionValue2.set(value);\n      return;\n    }\n    const sampleAnimation = new JSAnimation({\n      ...options,\n      autoplay: false\n    });\n    const sampleTime = secondsToMilliseconds(this.finishedTime ?? this.time);\n    motionValue2.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n    sampleAnimation.stop();\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/utils/is-html-element.mjs\nfunction isHTMLElement(element) {\n  return isObject(element) && \"offsetHeight\" in element;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.mjs\nvar acceleratedValues = /* @__PURE__ */ new Set([\n  \"opacity\",\n  \"clipPath\",\n  \"filter\",\n  \"transform\"\n  // TODO: Could be re-enabled now we have support for linear() easing\n  // \"background-color\"\n]);\nvar supportsWaapi = /* @__PURE__ */ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\nfunction supportsBrowserAnimation(options) {\n  var _a;\n  const { motionValue: motionValue2, name, repeatDelay, repeatType, damping, type } = options;\n  if (!isHTMLElement((_a = motionValue2 == null ? void 0 : motionValue2.owner) == null ? void 0 : _a.current)) {\n    return false;\n  }\n  const { onUpdate, transformTemplate } = motionValue2.owner.getProps();\n  return supportsWaapi() && name && acceleratedValues.has(name) && (name !== \"transform\" || !transformTemplate) && /**\n   * If we're outputting values to onUpdate then we can't use WAAPI as there's\n   * no way to read the value from WAAPI every frame.\n   */\n  !onUpdate && !repeatDelay && repeatType !== \"mirror\" && damping !== 0 && type !== \"inertia\";\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/is-animatable.mjs\nvar isAnimatable = (value, name) => {\n  if (name === \"zIndex\")\n    return false;\n  if (typeof value === \"number\" || Array.isArray(value))\n    return true;\n  if (typeof value === \"string\" && // It's animatable if we have a string\n  (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n  !value.startsWith(\"url(\")) {\n    return true;\n  }\n  return false;\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/can-animate.mjs\nfunction hasKeyframesChanged(keyframes2) {\n  const current2 = keyframes2[0];\n  if (keyframes2.length === 1)\n    return true;\n  for (let i = 0; i < keyframes2.length; i++) {\n    if (keyframes2[i] !== current2)\n      return true;\n  }\n}\nfunction canAnimate(keyframes2, name, type, velocity) {\n  const originKeyframe = keyframes2[0];\n  if (originKeyframe === null)\n    return false;\n  if (name === \"display\" || name === \"visibility\")\n    return true;\n  const targetKeyframe = keyframes2[keyframes2.length - 1];\n  const isOriginAnimatable = isAnimatable(originKeyframe, name);\n  const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n  warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} 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  if (!isOriginAnimatable || !isTargetAnimatable) {\n    return false;\n  }\n  return hasKeyframesChanged(keyframes2) || (type === \"spring\" || isGenerator(type)) && velocity;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs\nvar MAX_RESOLVE_DELAY = 40;\nvar AsyncMotionValueAnimation = class extends WithPromise {\n  constructor({ autoplay = true, delay: delay2 = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", keyframes: keyframes2, name, motionValue: motionValue2, element, ...options }) {\n    var _a;\n    super();\n    this.stop = () => {\n      var _a2, _b;\n      if (this._animation) {\n        this._animation.stop();\n        (_a2 = this.stopTimeline) == null ? void 0 : _a2.call(this);\n      }\n      (_b = this.keyframeResolver) == null ? void 0 : _b.cancel();\n    };\n    this.createdAt = time.now();\n    const optionsWithDefaults = {\n      autoplay,\n      delay: delay2,\n      type,\n      repeat,\n      repeatDelay,\n      repeatType,\n      name,\n      motionValue: motionValue2,\n      element,\n      ...options\n    };\n    const KeyframeResolver$1 = (element == null ? void 0 : element.KeyframeResolver) || KeyframeResolver;\n    this.keyframeResolver = new KeyframeResolver$1(keyframes2, (resolvedKeyframes, finalKeyframe, forced) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe, optionsWithDefaults, !forced), name, motionValue2, element);\n    (_a = this.keyframeResolver) == null ? void 0 : _a.scheduleResolve();\n  }\n  onKeyframesResolved(keyframes2, finalKeyframe, options, sync2) {\n    this.keyframeResolver = void 0;\n    const { name, type, velocity, delay: delay2, isHandoff, onUpdate } = options;\n    this.resolvedAt = time.now();\n    if (!canAnimate(keyframes2, name, type, velocity)) {\n      if (MotionGlobalConfig.instantAnimations || !delay2) {\n        onUpdate == null ? void 0 : onUpdate(getFinalKeyframe(keyframes2, options, finalKeyframe));\n      }\n      keyframes2[0] = keyframes2[keyframes2.length - 1];\n      options.duration = 0;\n      options.repeat = 0;\n    }\n    const startTime = sync2 ? !this.resolvedAt ? this.createdAt : this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY ? this.resolvedAt : this.createdAt : void 0;\n    const resolvedOptions = {\n      startTime,\n      finalKeyframe,\n      ...options,\n      keyframes: keyframes2\n    };\n    const animation = !isHandoff && supportsBrowserAnimation(resolvedOptions) ? new NativeAnimationExtended({\n      ...resolvedOptions,\n      element: resolvedOptions.motionValue.owner.current\n    }) : new JSAnimation(resolvedOptions);\n    animation.finished.then(() => this.notifyFinished()).catch(noop);\n    if (this.pendingTimeline) {\n      this.stopTimeline = animation.attachTimeline(this.pendingTimeline);\n      this.pendingTimeline = void 0;\n    }\n    this._animation = animation;\n  }\n  get finished() {\n    if (!this._animation) {\n      return this._finished;\n    } else {\n      return this.animation.finished;\n    }\n  }\n  then(onResolve, _onReject) {\n    return this.finished.finally(onResolve).then(() => {\n    });\n  }\n  get animation() {\n    var _a;\n    if (!this._animation) {\n      (_a = this.keyframeResolver) == null ? void 0 : _a.resume();\n      flushKeyframeResolvers();\n    }\n    return this._animation;\n  }\n  get duration() {\n    return this.animation.duration;\n  }\n  get time() {\n    return this.animation.time;\n  }\n  set time(newTime) {\n    this.animation.time = newTime;\n  }\n  get speed() {\n    return this.animation.speed;\n  }\n  get state() {\n    return this.animation.state;\n  }\n  set speed(newSpeed) {\n    this.animation.speed = newSpeed;\n  }\n  get startTime() {\n    return this.animation.startTime;\n  }\n  attachTimeline(timeline) {\n    if (this._animation) {\n      this.stopTimeline = this.animation.attachTimeline(timeline);\n    } else {\n      this.pendingTimeline = timeline;\n    }\n    return () => this.stop();\n  }\n  play() {\n    this.animation.play();\n  }\n  pause() {\n    this.animation.pause();\n  }\n  complete() {\n    this.animation.complete();\n  }\n  cancel() {\n    var _a;\n    if (this._animation) {\n      this.animation.cancel();\n    }\n    (_a = this.keyframeResolver) == null ? void 0 : _a.cancel();\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/GroupAnimation.mjs\nvar GroupAnimation = class {\n  constructor(animations2) {\n    this.stop = () => this.runAll(\"stop\");\n    this.animations = animations2.filter(Boolean);\n  }\n  get finished() {\n    return Promise.all(this.animations.map((animation) => animation.finished));\n  }\n  /**\n   * TODO: Filter out cancelled or stopped animations before returning\n   */\n  getAll(propName) {\n    return this.animations[0][propName];\n  }\n  setAll(propName, newValue) {\n    for (let i = 0; i < this.animations.length; i++) {\n      this.animations[i][propName] = newValue;\n    }\n  }\n  attachTimeline(timeline) {\n    const subscriptions = this.animations.map((animation) => animation.attachTimeline(timeline));\n    return () => {\n      subscriptions.forEach((cancel, i) => {\n        cancel && cancel();\n        this.animations[i].stop();\n      });\n    };\n  }\n  get time() {\n    return this.getAll(\"time\");\n  }\n  set time(time2) {\n    this.setAll(\"time\", time2);\n  }\n  get speed() {\n    return this.getAll(\"speed\");\n  }\n  set speed(speed) {\n    this.setAll(\"speed\", speed);\n  }\n  get state() {\n    return this.getAll(\"state\");\n  }\n  get startTime() {\n    return this.getAll(\"startTime\");\n  }\n  get duration() {\n    let max = 0;\n    for (let i = 0; i < this.animations.length; i++) {\n      max = Math.max(max, this.animations[i].duration);\n    }\n    return max;\n  }\n  runAll(methodName) {\n    this.animations.forEach((controls) => controls[methodName]());\n  }\n  play() {\n    this.runAll(\"play\");\n  }\n  pause() {\n    this.runAll(\"pause\");\n  }\n  cancel() {\n    this.runAll(\"cancel\");\n  }\n  complete() {\n    this.runAll(\"complete\");\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/GroupAnimationWithThen.mjs\nvar GroupAnimationWithThen = class extends GroupAnimation {\n  then(onResolve, _onReject) {\n    return this.finished.finally(onResolve).then(() => {\n    });\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/NativeAnimationWrapper.mjs\nvar NativeAnimationWrapper = class extends NativeAnimation {\n  constructor(animation) {\n    super();\n    this.animation = animation;\n    animation.onfinish = () => {\n      this.finishedTime = this.time;\n      this.notifyFinished();\n    };\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/active-animations.mjs\nvar animationMaps = /* @__PURE__ */ new WeakMap();\nvar animationMapKey = (name, pseudoElement = \"\") => `${name}:${pseudoElement}`;\nfunction getAnimationMap(element) {\n  const map = animationMaps.get(element) || /* @__PURE__ */ new Map();\n  animationMaps.set(element, map);\n  return map;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.mjs\nvar splitCSSVariableRegex = (\n  // eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n  /^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u\n);\nfunction parseCSSVariable(current2) {\n  const match = splitCSSVariableRegex.exec(current2);\n  if (!match)\n    return [,];\n  const [, token1, token2, fallback] = match;\n  return [`--${token1 ?? token2}`, fallback];\n}\nvar maxDepth = 4;\nfunction getVariableValue(current2, element, depth = 1) {\n  invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current2}\". This may indicate a circular fallback dependency.`);\n  const [token, fallback] = parseCSSVariable(current2);\n  if (!token)\n    return;\n  const resolved = window.getComputedStyle(element).getPropertyValue(token);\n  if (resolved) {\n    const trimmed = resolved.trim();\n    return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n  }\n  return isCSSVariableToken(fallback) ? getVariableValue(fallback, element, depth + 1) : fallback;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs\nfunction getValueTransition(transition, key) {\n  return (transition == null ? void 0 : transition[key]) ?? (transition == null ? void 0 : transition[\"default\"]) ?? transition;\n}\n\n// ../../../node_modules/motion-dom/dist/es/render/utils/keys-position.mjs\nvar positionalKeys = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"top\",\n  \"left\",\n  \"right\",\n  \"bottom\",\n  ...transformPropOrder\n]);\n\n// ../../../node_modules/motion-dom/dist/es/value/types/test.mjs\nvar testValueType = (v) => (type) => type.test(v);\n\n// ../../../node_modules/motion-dom/dist/es/value/types/auto.mjs\nvar auto = {\n  test: (v) => v === \"auto\",\n  parse: (v) => v\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/dimensions.mjs\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\nvar findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\n// ../../../node_modules/motion-dom/dist/es/value/types/maps/transform.mjs\nvar transformValueTypes = {\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};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/int.mjs\nvar int = {\n  ...number,\n  transform: Math.round\n};\n\n// ../../../node_modules/motion-dom/dist/es/value/types/maps/number.mjs\nvar numberValueTypes = {\n  // Border props\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  // Positioning props\n  width: px,\n  maxWidth: px,\n  height: px,\n  maxHeight: px,\n  top: px,\n  right: px,\n  bottom: px,\n  left: px,\n  // Spacing props\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  // Misc\n  backgroundPositionX: px,\n  backgroundPositionY: px,\n  ...transformValueTypes,\n  zIndex: int,\n  // SVG\n  fillOpacity: alpha,\n  strokeOpacity: alpha,\n  numOctaves: int\n};\n\n// ../../../node_modules/motion-dom/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 = /\\b([a-z-]*)\\(.*?\\)/gu;\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/motion-dom/dist/es/value/types/maps/defaults.mjs\nvar defaultValueTypes = {\n  ...numberValueTypes,\n  // Color props\n  color,\n  backgroundColor: color,\n  outlineColor: color,\n  fill: color,\n  stroke: color,\n  // Border props\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/motion-dom/dist/es/value/types/utils/animatable-none.mjs\nfunction getAnimatableNone2(key, value) {\n  let defaultValueType = getDefaultValueType(key);\n  if (defaultValueType !== filter)\n    defaultValueType = complex;\n  return defaultValueType.getAnimatableNone ? defaultValueType.getAnimatableNone(value) : void 0;\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.mjs\nfunction isNone(value) {\n  if (typeof value === \"number\") {\n    return value === 0;\n  } else if (value !== null) {\n    return value === \"none\" || value === \"0\" || isZeroValueString(value);\n  } else {\n    return true;\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.mjs\nvar invalidTemplates = /* @__PURE__ */ new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n  let i = 0;\n  let animatableTemplate = void 0;\n  while (i < unresolvedKeyframes.length && !animatableTemplate) {\n    const keyframe = unresolvedKeyframes[i];\n    if (typeof keyframe === \"string\" && !invalidTemplates.has(keyframe) && analyseComplexValue(keyframe).values.length) {\n      animatableTemplate = unresolvedKeyframes[i];\n    }\n    i++;\n  }\n  if (animatableTemplate && name) {\n    for (const noneIndex of noneKeyframeIndexes) {\n      unresolvedKeyframes[noneIndex] = getAnimatableNone2(name, animatableTemplate);\n    }\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.mjs\nvar DOMKeyframesResolver = class extends KeyframeResolver {\n  constructor(unresolvedKeyframes, onComplete, name, motionValue2, element) {\n    super(unresolvedKeyframes, onComplete, name, motionValue2, element, true);\n  }\n  readKeyframes() {\n    const { unresolvedKeyframes, element, name } = this;\n    if (!element || !element.current)\n      return;\n    super.readKeyframes();\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      let keyframe = unresolvedKeyframes[i];\n      if (typeof keyframe === \"string\") {\n        keyframe = keyframe.trim();\n        if (isCSSVariableToken(keyframe)) {\n          const resolved = getVariableValue(keyframe, element.current);\n          if (resolved !== void 0) {\n            unresolvedKeyframes[i] = resolved;\n          }\n          if (i === unresolvedKeyframes.length - 1) {\n            this.finalKeyframe = keyframe;\n          }\n        }\n      }\n    }\n    this.resolveNoneKeyframes();\n    if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n      return;\n    }\n    const [origin, target] = unresolvedKeyframes;\n    const originType = findDimensionValueType(origin);\n    const targetType = findDimensionValueType(target);\n    if (originType === targetType)\n      return;\n    if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n      for (let i = 0; i < unresolvedKeyframes.length; i++) {\n        const value = unresolvedKeyframes[i];\n        if (typeof value === \"string\") {\n          unresolvedKeyframes[i] = parseFloat(value);\n        }\n      }\n    } else if (positionalValues[name]) {\n      this.needsMeasurement = true;\n    }\n  }\n  resolveNoneKeyframes() {\n    const { unresolvedKeyframes, name } = this;\n    const noneKeyframeIndexes = [];\n    for (let i = 0; i < unresolvedKeyframes.length; i++) {\n      if (unresolvedKeyframes[i] === null || isNone(unresolvedKeyframes[i])) {\n        noneKeyframeIndexes.push(i);\n      }\n    }\n    if (noneKeyframeIndexes.length) {\n      makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n    }\n  }\n  measureInitialState() {\n    const { element, unresolvedKeyframes, name } = this;\n    if (!element || !element.current)\n      return;\n    if (name === \"height\") {\n      this.suspendedScrollY = window.pageYOffset;\n    }\n    this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n    unresolvedKeyframes[0] = this.measuredOrigin;\n    const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n    if (measureKeyframe !== void 0) {\n      element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n    }\n  }\n  measureEndState() {\n    var _a;\n    const { element, name, unresolvedKeyframes } = this;\n    if (!element || !element.current)\n      return;\n    const value = element.getValue(name);\n    value && value.jump(this.measuredOrigin, false);\n    const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n    const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n    unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n    if (finalKeyframe !== null && this.finalKeyframe === void 0) {\n      this.finalKeyframe = finalKeyframe;\n    }\n    if ((_a = this.removedTransforms) == null ? void 0 : _a.length) {\n      this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n        element.getValue(unsetTransformName).set(unsetTransformValue);\n      });\n    }\n    this.resolveNoneKeyframes();\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/px-values.mjs\nvar pxValues = /* @__PURE__ */ new Set([\n  // Border props\n  \"borderWidth\",\n  \"borderTopWidth\",\n  \"borderRightWidth\",\n  \"borderBottomWidth\",\n  \"borderLeftWidth\",\n  \"borderRadius\",\n  \"radius\",\n  \"borderTopLeftRadius\",\n  \"borderTopRightRadius\",\n  \"borderBottomRightRadius\",\n  \"borderBottomLeftRadius\",\n  // Positioning props\n  \"width\",\n  \"maxWidth\",\n  \"height\",\n  \"maxHeight\",\n  \"top\",\n  \"right\",\n  \"bottom\",\n  \"left\",\n  // Spacing props\n  \"padding\",\n  \"paddingTop\",\n  \"paddingRight\",\n  \"paddingBottom\",\n  \"paddingLeft\",\n  \"margin\",\n  \"marginTop\",\n  \"marginRight\",\n  \"marginBottom\",\n  \"marginLeft\",\n  // Misc\n  \"backgroundPositionX\",\n  \"backgroundPositionY\"\n]);\n\n// ../../../node_modules/motion-dom/dist/es/animation/keyframes/utils/apply-px-defaults.mjs\nfunction applyPxDefaults(keyframes2, name) {\n  for (let i = 0; i < keyframes2.length; i++) {\n    if (typeof keyframes2[i] === \"number\" && pxValues.has(name)) {\n      keyframes2[i] = keyframes2[i] + \"px\";\n    }\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/easing/is-supported.mjs\nfunction isWaapiSupportedEasing(easing) {\n  return Boolean(typeof easing === \"function\" && supportsLinearEasing() || !easing || typeof easing === \"string\" && (easing in supportedWaapiEasing || supportsLinearEasing()) || isBezierDefinition(easing) || Array.isArray(easing) && easing.every(isWaapiSupportedEasing));\n}\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/supports/partial-keyframes.mjs\nvar supportsPartialKeyframes = /* @__PURE__ */ memo(() => {\n  try {\n    document.createElement(\"div\").animate({ opacity: [1] });\n  } catch (e) {\n    return false;\n  }\n  return true;\n});\n\n// ../../../node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.mjs\nvar acceleratedValues2 = /* @__PURE__ */ new Set([\n  \"opacity\",\n  \"clipPath\",\n  \"filter\",\n  \"transform\"\n  // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n  // or until we implement support for linear() easing.\n  // \"background-color\"\n]);\n\n// ../../../node_modules/motion-dom/dist/es/utils/resolve-elements.mjs\nfunction resolveElements(elementOrSelector, scope, selectorCache) {\n  if (elementOrSelector instanceof EventTarget) {\n    return [elementOrSelector];\n  } else if (typeof elementOrSelector === \"string\") {\n    let root = document;\n    if (scope) {\n      root = scope.current;\n    }\n    const elements = (selectorCache == null ? void 0 : selectorCache[elementOrSelector]) ?? root.querySelectorAll(elementOrSelector);\n    return elements ? Array.from(elements) : [];\n  }\n  return Array.from(elementOrSelector);\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/get-as-type.mjs\nvar getValueAsType = (value, type) => {\n  return type && typeof value === \"number\" ? type.transform(value) : value;\n};\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.mjs\nfunction camelToDash(str) {\n  return str.replace(/([A-Z])/g, (match) => `-${match.toLowerCase()}`);\n}\n\n// ../../../node_modules/motion-dom/dist/es/effects/utils/create-dom-effect.mjs\nfunction createSelectorEffect(subjectEffect) {\n  return (subject, values) => {\n    const elements = resolveElements(subject);\n    const subscriptions = [];\n    for (const element of elements) {\n      const remove = subjectEffect(element, values);\n      subscriptions.push(remove);\n    }\n    return () => {\n      for (const remove of subscriptions)\n        remove();\n    };\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/effects/MotionValueState.mjs\nvar MotionValueState = class {\n  constructor() {\n    this.latest = {};\n    this.values = /* @__PURE__ */ new Map();\n  }\n  set(name, value, render, computed, useDefaultValueType = true) {\n    const existingValue = this.values.get(name);\n    if (existingValue) {\n      existingValue.onRemove();\n    }\n    const onChange = () => {\n      const v = value.get();\n      if (useDefaultValueType) {\n        this.latest[name] = getValueAsType(v, numberValueTypes[name]);\n      } else {\n        this.latest[name] = v;\n      }\n      render && frame.render(render);\n    };\n    onChange();\n    const cancelOnChange = value.on(\"change\", onChange);\n    computed && value.addDependent(computed);\n    const remove = () => {\n      cancelOnChange();\n      render && cancelFrame(render);\n      this.values.delete(name);\n      computed && value.removeDependent(computed);\n    };\n    this.values.set(name, { value, onRemove: remove });\n    return remove;\n  }\n  get(name) {\n    var _a;\n    return (_a = this.values.get(name)) == null ? void 0 : _a.value;\n  }\n  destroy() {\n    for (const value of this.values.values()) {\n      value.onRemove();\n    }\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/effects/utils/create-effect.mjs\nfunction createEffect(addValue) {\n  const stateCache = /* @__PURE__ */ new WeakMap();\n  const subscriptions = [];\n  return (subject, values) => {\n    const state = stateCache.get(subject) ?? new MotionValueState();\n    stateCache.set(subject, state);\n    for (const key in values) {\n      const value = values[key];\n      const remove = addValue(subject, state, key, value);\n      subscriptions.push(remove);\n    }\n    return () => {\n      for (const cancel of subscriptions)\n        cancel();\n    };\n  };\n}\n\n// ../../../node_modules/motion-dom/dist/es/effects/attr/index.mjs\nfunction canSetAsProperty(element, name) {\n  if (!(name in element))\n    return false;\n  const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(element), name) || Object.getOwnPropertyDescriptor(element, name);\n  return descriptor && typeof descriptor.set === \"function\";\n}\nvar addAttrValue = (element, state, key, value) => {\n  const isProp = canSetAsProperty(element, key);\n  const name = isProp ? key : key.startsWith(\"data\") || key.startsWith(\"aria\") ? camelToDash(key) : key;\n  const render = isProp ? () => {\n    element[name] = state.latest[key];\n  } : () => {\n    const v = state.latest[key];\n    if (v === null || v === void 0) {\n      element.removeAttribute(name);\n    } else {\n      element.setAttribute(name, String(v));\n    }\n  };\n  return state.set(key, value, render);\n};\nvar attrEffect = /* @__PURE__ */ createSelectorEffect(\n  /* @__PURE__ */ createEffect(addAttrValue)\n);\n\n// ../../../node_modules/motion-dom/dist/es/effects/prop/index.mjs\nvar propEffect = /* @__PURE__ */ createEffect((subject, state, key, value) => {\n  return state.set(key, value, () => {\n    subject[key] = state.latest[key];\n  }, void 0, false);\n});\n\n// ../../../node_modules/motion-dom/dist/es/value/index.mjs\nvar MAX_VELOCITY_DELTA = 30;\nvar isFloat = (value) => {\n  return !isNaN(parseFloat(value));\n};\nvar collectMotionValues = {\n  current: void 0\n};\nvar MotionValue = class {\n  /**\n   * @param init - The initiating value\n   * @param config - Optional configuration options\n   *\n   * -  `transformer`: A function to transform incoming values with.\n   */\n  constructor(init, options = {}) {\n    this.canTrackVelocity = null;\n    this.events = {};\n    this.updateAndNotify = (v, render = true) => {\n      var _a, _b;\n      const currentTime = time.now();\n      if (this.updatedAt !== currentTime) {\n        this.setPrevFrameValue();\n      }\n      this.prev = this.current;\n      this.setCurrent(v);\n      if (this.current !== this.prev) {\n        (_a = this.events.change) == null ? void 0 : _a.notify(this.current);\n        if (this.dependents) {\n          for (const dependent of this.dependents) {\n            dependent.dirty();\n          }\n        }\n      }\n      if (render) {\n        (_b = this.events.renderRequest) == null ? void 0 : _b.notify(this.current);\n      }\n    };\n    this.hasAnimated = false;\n    this.setCurrent(init);\n    this.owner = options.owner;\n  }\n  setCurrent(current2) {\n    this.current = current2;\n    this.updatedAt = time.now();\n    if (this.canTrackVelocity === null && current2 !== void 0) {\n      this.canTrackVelocity = isFloat(this.current);\n    }\n  }\n  setPrevFrameValue(prevFrameValue = this.current) {\n    this.prevFrameValue = prevFrameValue;\n    this.prevUpdatedAt = this.updatedAt;\n  }\n  /**\n   * Adds a function that will be notified when the `MotionValue` is updated.\n   *\n   * It returns a function that, when called, will cancel the subscription.\n   *\n   * When calling `onChange` inside a React component, it should be wrapped with the\n   * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n   * from the `useEffect` function to ensure you don't add duplicate subscribers..\n   *\n   * ```jsx\n   * export const MyComponent = () => {\n   *   const x = useMotionValue(0)\n   *   const y = useMotionValue(0)\n   *   const opacity = useMotionValue(1)\n   *\n   *   useEffect(() => {\n   *     function updateOpacity() {\n   *       const maxXY = Math.max(x.get(), y.get())\n   *       const newOpacity = transform(maxXY, [0, 100], [1, 0])\n   *       opacity.set(newOpacity)\n   *     }\n   *\n   *     const unsubscribeX = x.on(\"change\", updateOpacity)\n   *     const unsubscribeY = y.on(\"change\", updateOpacity)\n   *\n   *     return () => {\n   *       unsubscribeX()\n   *       unsubscribeY()\n   *     }\n   *   }, [])\n   *\n   *   return <motion.div style={{ x }} />\n   * }\n   * ```\n   *\n   * @param subscriber - A function that receives the latest value.\n   * @returns A function that, when called, will cancel this subscription.\n   *\n   * @deprecated\n   */\n  onChange(subscription) {\n    if (false) {\n      warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n    }\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        frame.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  /**\n   * Attaches a passive effect to the `MotionValue`.\n   */\n  attach(passiveEffect, stopPassiveEffect) {\n    this.passiveEffect = passiveEffect;\n    this.stopPassiveEffect = stopPassiveEffect;\n  }\n  /**\n   * Sets the state of the `MotionValue`.\n   *\n   * @remarks\n   *\n   * ```jsx\n   * const x = useMotionValue(0)\n   * x.set(10)\n   * ```\n   *\n   * @param latest - Latest value to set.\n   * @param render - Whether to notify render subscribers. Defaults to `true`\n   *\n   * @public\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, current2, delta) {\n    this.set(current2);\n    this.prev = void 0;\n    this.prevFrameValue = prev;\n    this.prevUpdatedAt = this.updatedAt - delta;\n  }\n  /**\n   * Set the state of the `MotionValue`, stopping any active animations,\n   * effects, and resets velocity to `0`.\n   */\n  jump(v, endAnimation = true) {\n    this.updateAndNotify(v);\n    this.prev = v;\n    this.prevUpdatedAt = this.prevFrameValue = void 0;\n    endAnimation && this.stop();\n    if (this.stopPassiveEffect)\n      this.stopPassiveEffect();\n  }\n  dirty() {\n    var _a;\n    (_a = this.events.change) == null ? void 0 : _a.notify(this.current);\n  }\n  addDependent(dependent) {\n    if (!this.dependents) {\n      this.dependents = /* @__PURE__ */ new Set();\n    }\n    this.dependents.add(dependent);\n  }\n  removeDependent(dependent) {\n    if (this.dependents) {\n      this.dependents.delete(dependent);\n    }\n  }\n  /**\n   * Returns the latest state of `MotionValue`\n   *\n   * @returns - The latest state of `MotionValue`\n   *\n   * @public\n   */\n  get() {\n    if (collectMotionValues.current) {\n      collectMotionValues.current.push(this);\n    }\n    return this.current;\n  }\n  /**\n   * @public\n   */\n  getPrevious() {\n    return this.prev;\n  }\n  /**\n   * Returns the latest velocity of `MotionValue`\n   *\n   * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n   *\n   * @public\n   */\n  getVelocity() {\n    const currentTime = time.now();\n    if (!this.canTrackVelocity || this.prevFrameValue === void 0 || currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n      return 0;\n    }\n    const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n    return velocityPerSecond(parseFloat(this.current) - parseFloat(this.prevFrameValue), delta);\n  }\n  /**\n   * Registers a new animation to control this `MotionValue`. Only one\n   * animation can drive a `MotionValue` at one time.\n   *\n   * ```jsx\n   * value.start()\n   * ```\n   *\n   * @param animation - A function that starts the provided animation\n   */\n  start(startAnimation) {\n    this.stop();\n    return new Promise((resolve) => {\n      this.hasAnimated = true;\n      this.animation = startAnimation(resolve);\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  /**\n   * Stop the currently active animation.\n   *\n   * @public\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  /**\n   * Returns `true` if this value is currently animating.\n   *\n   * @public\n   */\n  isAnimating() {\n    return !!this.animation;\n  }\n  clearAnimation() {\n    delete this.animation;\n  }\n  /**\n   * Destroy and clean up subscribers to this `MotionValue`.\n   *\n   * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n   * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n   * created a `MotionValue` via the `motionValue` function.\n   *\n   * @public\n   */\n  destroy() {\n    var _a, _b;\n    (_a = this.dependents) == null ? void 0 : _a.clear();\n    (_b = this.events.destroy) == null ? void 0 : _b.notify();\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/motion-dom/dist/es/effects/style/transform.mjs\nvar translateAlias = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\",\n  transformPerspective: \"perspective\"\n};\nfunction buildTransform(state) {\n  let transform2 = \"\";\n  let transformIsDefault = true;\n  for (let i = 0; i < transformPropOrder.length; i++) {\n    const key = transformPropOrder[i];\n    const value = state.latest[key];\n    if (value === void 0)\n      continue;\n    let valueIsDefault = true;\n    if (typeof value === \"number\") {\n      valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n    } else {\n      valueIsDefault = parseFloat(value) === 0;\n    }\n    if (!valueIsDefault) {\n      transformIsDefault = false;\n      const transformName = translateAlias[key] || key;\n      const valueToRender = state.latest[key];\n      transform2 += `${transformName}(${valueToRender}) `;\n    }\n  }\n  return transformIsDefault ? \"none\" : transform2.trim();\n}\n\n// ../../../node_modules/motion-dom/dist/es/effects/style/index.mjs\nvar originProps = /* @__PURE__ */ new Set([\"originX\", \"originY\", \"originZ\"]);\nvar addStyleValue = (element, state, key, value) => {\n  let render = void 0;\n  let computed = void 0;\n  if (transformProps.has(key)) {\n    if (!state.get(\"transform\")) {\n      if (!isHTMLElement(element) && !state.get(\"transformBox\")) {\n        addStyleValue(element, state, \"transformBox\", new MotionValue(\"fill-box\"));\n      }\n      state.set(\"transform\", new MotionValue(\"none\"), () => {\n        element.style.transform = buildTransform(state);\n      });\n    }\n    computed = state.get(\"transform\");\n  } else if (originProps.has(key)) {\n    if (!state.get(\"transformOrigin\")) {\n      state.set(\"transformOrigin\", new MotionValue(\"\"), () => {\n        const originX = state.latest.originX ?? \"50%\";\n        const originY = state.latest.originY ?? \"50%\";\n        const originZ = state.latest.originZ ?? 0;\n        element.style.transformOrigin = `${originX} ${originY} ${originZ}`;\n      });\n    }\n    computed = state.get(\"transformOrigin\");\n  } else if (isCSSVar(key)) {\n    render = () => {\n      element.style.setProperty(key, state.latest[key]);\n    };\n  } else {\n    render = () => {\n      element.style[key] = state.latest[key];\n    };\n  }\n  return state.set(key, value, render, computed);\n};\nvar styleEffect = /* @__PURE__ */ createSelectorEffect(\n  /* @__PURE__ */ createEffect(addStyleValue)\n);\n\n// ../../../node_modules/motion-dom/dist/es/effects/svg/index.mjs\nvar toPx = px.transform;\nfunction addSVGPathValue(element, state, key, value) {\n  frame.render(() => element.setAttribute(\"pathLength\", \"1\"));\n  if (key === \"pathOffset\") {\n    return state.set(key, value, () => element.setAttribute(\"stroke-dashoffset\", toPx(-state.latest[key])));\n  } else {\n    if (!state.get(\"stroke-dasharray\")) {\n      state.set(\"stroke-dasharray\", new MotionValue(\"1 1\"), () => {\n        const { pathLength = 1, pathSpacing } = state.latest;\n        element.setAttribute(\"stroke-dasharray\", `${toPx(pathLength)} ${toPx(pathSpacing ?? 1 - Number(pathLength))}`);\n      });\n    }\n    return state.set(key, value, void 0, state.get(\"stroke-dasharray\"));\n  }\n}\nvar addSVGValue = (element, state, key, value) => {\n  if (key.startsWith(\"path\")) {\n    return addSVGPathValue(element, state, key, value);\n  } else if (key.startsWith(\"attr\")) {\n    return addAttrValue(element, state, convertAttrKey(key), value);\n  }\n  const handler = key in element.style ? addStyleValue : addAttrValue;\n  return handler(element, state, key, value);\n};\nvar svgEffect = /* @__PURE__ */ createSelectorEffect(\n  /* @__PURE__ */ createEffect(addSVGValue)\n);\nfunction convertAttrKey(key) {\n  return key.replace(/^attr([A-Z])/, (_, firstChar) => firstChar.toLowerCase());\n}\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/microtask.mjs\nvar { schedule: microtask, cancel: cancelMicrotask } = /* @__PURE__ */ createRenderBatcher(queueMicrotask, false);\n\n// ../../../node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs\nvar isDragging = {\n  x: false,\n  y: false\n};\nfunction isDragActive() {\n  return isDragging.x || isDragging.y;\n}\n\n// ../../../node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs\nfunction setDragLock(axis) {\n  if (axis === \"x\" || axis === \"y\") {\n    if (isDragging[axis]) {\n      return null;\n    } else {\n      isDragging[axis] = true;\n      return () => {\n        isDragging[axis] = false;\n      };\n    }\n  } else {\n    if (isDragging.x || isDragging.y) {\n      return null;\n    } else {\n      isDragging.x = isDragging.y = true;\n      return () => {\n        isDragging.x = isDragging.y = false;\n      };\n    }\n  }\n}\n\n// ../../../node_modules/motion-dom/dist/es/gestures/utils/setup.mjs\nfunction setupGesture(elementOrSelector, options) {\n  const elements = resolveElements(elementOrSelector);\n  const gestureAbortController = new AbortController();\n  const eventOptions = {\n    passive: true,\n    ...options,\n    signal: gestureAbortController.signal\n  };\n  const cancel = () => gestureAbortController.abort();\n  return [elements, eventOptions, cancel];\n}\n\n// ../../../node_modules/motion-dom/dist/es/gestures/hover.mjs\nfunction isValidHover(event) {\n  return !(event.pointerType === \"touch\" || isDragActive());\n}\nfunction hover(elementOrSelector, onHoverStart, options = {}) {\n  const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options);\n  const onPointerEnter = (enterEvent) => {\n    if (!isValidHover(enterEvent))\n      return;\n    const { target } = enterEvent;\n    const onHoverEnd = onHoverStart(target, enterEvent);\n    if (typeof onHoverEnd !== \"function\" || !target)\n      return;\n    const onPointerLeave = (leaveEvent) => {\n      if (!isValidHover(leaveEvent))\n        return;\n      onHoverEnd(leaveEvent);\n      target.removeEventListener(\"pointerleave\", onPointerLeave);\n    };\n    target.addEventListener(\"pointerleave\", onPointerLeave, eventOptions);\n  };\n  elements.forEach((element) => {\n    element.addEventListener(\"pointerenter\", onPointerEnter, eventOptions);\n  });\n  return cancel;\n}\n\n// ../../../node_modules/motion-dom/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/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs\nvar isPrimaryPointer = (event) => {\n  if (event.pointerType === \"mouse\") {\n    return typeof event.button !== \"number\" || event.button <= 0;\n  } else {\n    return event.isPrimary !== false;\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs\nvar focusableElements = /* @__PURE__ */ new Set([\n  \"BUTTON\",\n  \"INPUT\",\n  \"SELECT\",\n  \"TEXTAREA\",\n  \"A\"\n]);\nfunction isElementKeyboardAccessible(element) {\n  return focusableElements.has(element.tagName) || element.tabIndex !== -1;\n}\n\n// ../../../node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs\nvar isPressing = /* @__PURE__ */ new WeakSet();\n\n// ../../../node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs\nfunction filterEvents(callback) {\n  return (event) => {\n    if (event.key !== \"Enter\")\n      return;\n    callback(event);\n  };\n}\nfunction firePointerEvent(target, type) {\n  target.dispatchEvent(new PointerEvent(\"pointer\" + type, { isPrimary: true, bubbles: true }));\n}\nvar enableKeyboardPress = (focusEvent, eventOptions) => {\n  const element = focusEvent.currentTarget;\n  if (!element)\n    return;\n  const handleKeydown = filterEvents(() => {\n    if (isPressing.has(element))\n      return;\n    firePointerEvent(element, \"down\");\n    const handleKeyup = filterEvents(() => {\n      firePointerEvent(element, \"up\");\n    });\n    const handleBlur = () => firePointerEvent(element, \"cancel\");\n    element.addEventListener(\"keyup\", handleKeyup, eventOptions);\n    element.addEventListener(\"blur\", handleBlur, eventOptions);\n  });\n  element.addEventListener(\"keydown\", handleKeydown, eventOptions);\n  element.addEventListener(\"blur\", () => element.removeEventListener(\"keydown\", handleKeydown), eventOptions);\n};\n\n// ../../../node_modules/motion-dom/dist/es/gestures/press/index.mjs\nfunction isValidPressEvent(event) {\n  return isPrimaryPointer(event) && !isDragActive();\n}\nfunction press(targetOrSelector, onPressStart, options = {}) {\n  const [targets, eventOptions, cancelEvents] = setupGesture(targetOrSelector, options);\n  const startPress = (startEvent) => {\n    const target = startEvent.currentTarget;\n    if (!isValidPressEvent(startEvent))\n      return;\n    isPressing.add(target);\n    const onPressEnd = onPressStart(target, startEvent);\n    const onPointerEnd = (endEvent, success) => {\n      window.removeEventListener(\"pointerup\", onPointerUp);\n      window.removeEventListener(\"pointercancel\", onPointerCancel);\n      if (isPressing.has(target)) {\n        isPressing.delete(target);\n      }\n      if (!isValidPressEvent(endEvent)) {\n        return;\n      }\n      if (typeof onPressEnd === \"function\") {\n        onPressEnd(endEvent, { success });\n      }\n    };\n    const onPointerUp = (upEvent) => {\n      onPointerEnd(upEvent, target === window || target === document || options.useGlobalTarget || isNodeOrChild(target, upEvent.target));\n    };\n    const onPointerCancel = (cancelEvent) => {\n      onPointerEnd(cancelEvent, false);\n    };\n    window.addEventListener(\"pointerup\", onPointerUp, eventOptions);\n    window.addEventListener(\"pointercancel\", onPointerCancel, eventOptions);\n  };\n  targets.forEach((target) => {\n    const pointerDownTarget = options.useGlobalTarget ? window : target;\n    pointerDownTarget.addEventListener(\"pointerdown\", startPress, eventOptions);\n    if (isHTMLElement(target)) {\n      target.addEventListener(\"focus\", (event) => enableKeyboardPress(event, eventOptions));\n      if (!isElementKeyboardAccessible(target) && !target.hasAttribute(\"tabindex\")) {\n        target.tabIndex = 0;\n      }\n    }\n  });\n  return cancelEvents;\n}\n\n// ../../../node_modules/motion-dom/dist/es/render/dom/style-computed.mjs\nfunction getComputedStyle2(element, name) {\n  const computedStyle = window.getComputedStyle(element);\n  return isCSSVar(name) ? computedStyle.getPropertyValue(name) : computedStyle[name];\n}\n\n// ../../../node_modules/motion-dom/dist/es/scroll/observe.mjs\nfunction observeTimeline(update, timeline) {\n  let prevProgress;\n  const onFrame = () => {\n    const { currentTime } = timeline;\n    const percentage = currentTime === null ? 0 : currentTime.value;\n    const progress2 = percentage / 100;\n    if (prevProgress !== progress2) {\n      update(progress2);\n    }\n    prevProgress = progress2;\n  };\n  frame.preUpdate(onFrame, true);\n  return () => cancelFrame(onFrame);\n}\n\n// ../../../node_modules/motion-dom/dist/es/stats/index.mjs\nfunction record() {\n  const { value } = statsBuffer;\n  if (value === null) {\n    cancelFrame(record);\n    return;\n  }\n  value.frameloop.rate.push(frameData.delta);\n  value.animations.mainThread.push(activeAnimations.mainThread);\n  value.animations.waapi.push(activeAnimations.waapi);\n  value.animations.layout.push(activeAnimations.layout);\n}\nfunction mean(values) {\n  return values.reduce((acc, value) => acc + value, 0) / values.length;\n}\nfunction summarise(values, calcAverage = mean) {\n  if (values.length === 0) {\n    return {\n      min: 0,\n      max: 0,\n      avg: 0\n    };\n  }\n  return {\n    min: Math.min(...values),\n    max: Math.max(...values),\n    avg: calcAverage(values)\n  };\n}\nvar msToFps = (ms) => Math.round(1e3 / ms);\nfunction clearStatsBuffer() {\n  statsBuffer.value = null;\n  statsBuffer.addProjectionMetrics = null;\n}\nfunction reportStats() {\n  const { value } = statsBuffer;\n  if (!value) {\n    throw new Error(\"Stats are not being measured\");\n  }\n  clearStatsBuffer();\n  cancelFrame(record);\n  const summary = {\n    frameloop: {\n      setup: summarise(value.frameloop.setup),\n      rate: summarise(value.frameloop.rate),\n      read: summarise(value.frameloop.read),\n      resolveKeyframes: summarise(value.frameloop.resolveKeyframes),\n      preUpdate: summarise(value.frameloop.preUpdate),\n      update: summarise(value.frameloop.update),\n      preRender: summarise(value.frameloop.preRender),\n      render: summarise(value.frameloop.render),\n      postRender: summarise(value.frameloop.postRender)\n    },\n    animations: {\n      mainThread: summarise(value.animations.mainThread),\n      waapi: summarise(value.animations.waapi),\n      layout: summarise(value.animations.layout)\n    },\n    layoutProjection: {\n      nodes: summarise(value.layoutProjection.nodes),\n      calculatedTargetDeltas: summarise(value.layoutProjection.calculatedTargetDeltas),\n      calculatedProjections: summarise(value.layoutProjection.calculatedProjections)\n    }\n  };\n  const { rate } = summary.frameloop;\n  rate.min = msToFps(rate.min);\n  rate.max = msToFps(rate.max);\n  rate.avg = msToFps(rate.avg);\n  [rate.min, rate.max] = [rate.max, rate.min];\n  return summary;\n}\nfunction recordStats() {\n  if (statsBuffer.value) {\n    clearStatsBuffer();\n    throw new Error(\"Stats are already being measured\");\n  }\n  const newStatsBuffer = statsBuffer;\n  newStatsBuffer.value = {\n    frameloop: {\n      setup: [],\n      rate: [],\n      read: [],\n      resolveKeyframes: [],\n      preUpdate: [],\n      update: [],\n      preRender: [],\n      render: [],\n      postRender: []\n    },\n    animations: {\n      mainThread: [],\n      waapi: [],\n      layout: []\n    },\n    layoutProjection: {\n      nodes: [],\n      calculatedTargetDeltas: [],\n      calculatedProjections: []\n    }\n  };\n  newStatsBuffer.addProjectionMetrics = (metrics2) => {\n    const { layoutProjection } = newStatsBuffer.value;\n    layoutProjection.nodes.push(metrics2.nodes);\n    layoutProjection.calculatedTargetDeltas.push(metrics2.calculatedTargetDeltas);\n    layoutProjection.calculatedProjections.push(metrics2.calculatedProjections);\n  };\n  frame.postRender(record, true);\n  return reportStats;\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/is-svg-element.mjs\nfunction isSVGElement(element) {\n  return isObject(element) && \"ownerSVGElement\" in element;\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/is-svg-svg-element.mjs\nfunction isSVGSVGElement(element) {\n  return isSVGElement(element) && element.tagName === \"svg\";\n}\n\n// ../../../node_modules/motion-dom/dist/es/utils/transform.mjs\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, options);\n  return useImmediate ? interpolator(inputValue) : interpolator;\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/subscribe-value.mjs\nfunction subscribeValue(inputValues, outputValue, getLatest) {\n  const update = () => outputValue.set(getLatest());\n  const scheduleUpdate = () => frame.preRender(update, false, true);\n  const subscriptions = inputValues.map((v) => v.on(\"change\", scheduleUpdate));\n  outputValue.on(\"destroy\", () => {\n    subscriptions.forEach((unsubscribe) => unsubscribe());\n    cancelFrame(update);\n  });\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/transform-value.mjs\nfunction transformValue(transform2) {\n  const collectedValues = [];\n  collectMotionValues.current = collectedValues;\n  const initialValue = transform2();\n  collectMotionValues.current = void 0;\n  const value = motionValue(initialValue);\n  subscribeValue(collectedValues, value, transform2);\n  return value;\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/map-value.mjs\nfunction mapValue(inputValue, inputRange, outputRange, options) {\n  const map = transform(inputRange, outputRange, options);\n  return transformValue(() => map(inputValue.get()));\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/utils/is-motion-value.mjs\nvar isMotionValue = (value) => Boolean(value && value.getVelocity);\n\n// ../../../node_modules/motion-dom/dist/es/value/spring-value.mjs\nfunction springValue(source, options) {\n  const initialValue = isMotionValue(source) ? source.get() : source;\n  const value = motionValue(initialValue);\n  attachSpring(value, source, options);\n  return value;\n}\nfunction attachSpring(value, source, options) {\n  const initialValue = value.get();\n  let activeAnimation = null;\n  let latestValue = initialValue;\n  let latestSetter;\n  const unit = typeof initialValue === \"string\" ? initialValue.replace(/[\\d.-]/g, \"\") : void 0;\n  const stopAnimation2 = () => {\n    if (activeAnimation) {\n      activeAnimation.stop();\n      activeAnimation = null;\n    }\n  };\n  const startAnimation = () => {\n    stopAnimation2();\n    activeAnimation = new JSAnimation({\n      keyframes: [asNumber(value.get()), asNumber(latestValue)],\n      velocity: value.getVelocity(),\n      type: \"spring\",\n      restDelta: 1e-3,\n      restSpeed: 0.01,\n      ...options,\n      onUpdate: latestSetter\n    });\n  };\n  value.attach((v, set) => {\n    latestValue = v;\n    latestSetter = (latest) => set(parseValue(latest, unit));\n    frame.postRender(startAnimation);\n    return value.get();\n  }, stopAnimation2);\n  let unsubscribe = void 0;\n  if (isMotionValue(source)) {\n    unsubscribe = source.on(\"change\", (v) => value.set(parseValue(v, unit)));\n    value.on(\"destroy\", unsubscribe);\n  }\n  return unsubscribe;\n}\nfunction parseValue(v, unit) {\n  return unit ? v + unit : v;\n}\nfunction asNumber(v) {\n  return typeof v === \"number\" ? v : parseFloat(v);\n}\n\n// ../../../node_modules/motion-dom/dist/es/value/types/utils/find.mjs\nvar valueTypes = [...dimensionValueTypes, color, complex];\nvar findValueType = (v) => valueTypes.find(testValueType(v));\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/choose-layer-type.mjs\nfunction chooseLayerType(valueName) {\n  if (valueName === \"layout\")\n    return \"group\";\n  if (valueName === \"enter\" || valueName === \"new\")\n    return \"new\";\n  if (valueName === \"exit\" || valueName === \"old\")\n    return \"old\";\n  return \"group\";\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/css.mjs\nvar pendingRules = {};\nvar style = null;\nvar css = {\n  set: (selector, values) => {\n    pendingRules[selector] = values;\n  },\n  commit: () => {\n    if (!style) {\n      style = document.createElement(\"style\");\n      style.id = \"motion-view\";\n    }\n    let cssText = \"\";\n    for (const selector in pendingRules) {\n      const rule = pendingRules[selector];\n      cssText += `${selector} {\n`;\n      for (const [property, value] of Object.entries(rule)) {\n        cssText += `  ${property}: ${value};\n`;\n      }\n      cssText += \"}\\n\";\n    }\n    style.textContent = cssText;\n    document.head.appendChild(style);\n    pendingRules = {};\n  },\n  remove: () => {\n    if (style && style.parentElement) {\n      style.parentElement.removeChild(style);\n    }\n  }\n};\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/get-layer-name.mjs\nfunction getLayerName(pseudoElement) {\n  const match = pseudoElement.match(/::view-transition-(old|new|group|image-pair)\\((.*?)\\)/);\n  if (!match)\n    return null;\n  return { layer: match[2], type: match[1] };\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/get-view-animations.mjs\nfunction filterViewAnimations(animation) {\n  var _a;\n  const { effect } = animation;\n  if (!effect)\n    return false;\n  return effect.target === document.documentElement && ((_a = effect.pseudoElement) == null ? void 0 : _a.startsWith(\"::view-transition\"));\n}\nfunction getViewAnimations() {\n  return document.getAnimations().filter(filterViewAnimations);\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/utils/has-target.mjs\nfunction hasTarget(target, targets) {\n  return targets.has(target) && Object.keys(targets.get(target)).length > 0;\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/start.mjs\nvar definitionNames = [\"layout\", \"enter\", \"exit\", \"new\", \"old\"];\nfunction startViewAnimation(builder) {\n  const { update, targets, options: defaultOptions } = builder;\n  if (!document.startViewTransition) {\n    return new Promise(async (resolve) => {\n      await update();\n      resolve(new GroupAnimation([]));\n    });\n  }\n  if (!hasTarget(\"root\", targets)) {\n    css.set(\":root\", {\n      \"view-transition-name\": \"none\"\n    });\n  }\n  css.set(\"::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*)\", { \"animation-timing-function\": \"linear !important\" });\n  css.commit();\n  const transition = document.startViewTransition(async () => {\n    await update();\n  });\n  transition.finished.finally(() => {\n    css.remove();\n  });\n  return new Promise((resolve) => {\n    transition.ready.then(() => {\n      const generatedViewAnimations = getViewAnimations();\n      const animations2 = [];\n      targets.forEach((definition, target) => {\n        for (const key of definitionNames) {\n          if (!definition[key])\n            continue;\n          const { keyframes: keyframes2, options } = definition[key];\n          for (let [valueName, valueKeyframes] of Object.entries(keyframes2)) {\n            if (!valueKeyframes)\n              continue;\n            const valueOptions = {\n              ...getValueTransition(defaultOptions, valueName),\n              ...getValueTransition(options, valueName)\n            };\n            const type = chooseLayerType(key);\n            if (valueName === \"opacity\" && !Array.isArray(valueKeyframes)) {\n              const initialValue = type === \"new\" ? 0 : 1;\n              valueKeyframes = [initialValue, valueKeyframes];\n            }\n            if (typeof valueOptions.delay === \"function\") {\n              valueOptions.delay = valueOptions.delay(0, 1);\n            }\n            valueOptions.duration && (valueOptions.duration = secondsToMilliseconds(valueOptions.duration));\n            valueOptions.delay && (valueOptions.delay = secondsToMilliseconds(valueOptions.delay));\n            const animation = new NativeAnimation({\n              ...valueOptions,\n              element: document.documentElement,\n              name: valueName,\n              pseudoElement: `::view-transition-${type}(${target})`,\n              keyframes: valueKeyframes\n            });\n            animations2.push(animation);\n          }\n        }\n      });\n      for (const animation of generatedViewAnimations) {\n        if (animation.playState === \"finished\")\n          continue;\n        const { effect } = animation;\n        if (!effect || !(effect instanceof KeyframeEffect))\n          continue;\n        const { pseudoElement } = effect;\n        if (!pseudoElement)\n          continue;\n        const name = getLayerName(pseudoElement);\n        if (!name)\n          continue;\n        const targetDefinition = targets.get(name.layer);\n        if (!targetDefinition) {\n          const transitionName = name.type === \"group\" ? \"layout\" : \"\";\n          let animationTransition = {\n            ...getValueTransition(defaultOptions, transitionName)\n          };\n          animationTransition.duration && (animationTransition.duration = secondsToMilliseconds(animationTransition.duration));\n          animationTransition = applyGeneratorOptions(animationTransition);\n          const easing = mapEasingToNativeEasing(animationTransition.ease, animationTransition.duration);\n          effect.updateTiming({\n            delay: secondsToMilliseconds(animationTransition.delay ?? 0),\n            duration: animationTransition.duration,\n            easing\n          });\n          animations2.push(new NativeAnimationWrapper(animation));\n        } else if (hasOpacity(targetDefinition, \"enter\") && hasOpacity(targetDefinition, \"exit\") && effect.getKeyframes().some((keyframe) => keyframe.mixBlendMode)) {\n          animations2.push(new NativeAnimationWrapper(animation));\n        } else {\n          animation.cancel();\n        }\n      }\n      resolve(new GroupAnimation(animations2));\n    });\n  });\n}\nfunction hasOpacity(target, key) {\n  var _a;\n  return (_a = target == null ? void 0 : target[key]) == null ? void 0 : _a.keyframes.opacity;\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/queue.mjs\nvar builders = [];\nvar current = null;\nfunction next() {\n  current = null;\n  const [nextBuilder] = builders;\n  if (nextBuilder)\n    start(nextBuilder);\n}\nfunction start(builder) {\n  removeItem(builders, builder);\n  current = builder;\n  startViewAnimation(builder).then((animation) => {\n    builder.notifyReady(animation);\n    animation.finished.finally(next);\n  });\n}\nfunction processQueue() {\n  var _a;\n  for (let i = builders.length - 1; i >= 0; i--) {\n    const builder = builders[i];\n    const { interrupt } = builder.options;\n    if (interrupt === \"immediate\") {\n      const batchedUpdates = builders.slice(0, i + 1).map((b) => b.update);\n      const remaining = builders.slice(i + 1);\n      builder.update = () => {\n        batchedUpdates.forEach((update) => update());\n      };\n      builders = [builder, ...remaining];\n      break;\n    }\n  }\n  if (!current || ((_a = builders[0]) == null ? void 0 : _a.options.interrupt) === \"immediate\") {\n    next();\n  }\n}\nfunction addToQueue(builder) {\n  builders.push(builder);\n  microtask.render(processQueue);\n}\n\n// ../../../node_modules/motion-dom/dist/es/view/index.mjs\nvar ViewTransitionBuilder = class {\n  constructor(update, options = {}) {\n    this.currentTarget = \"root\";\n    this.targets = /* @__PURE__ */ new Map();\n    this.notifyReady = noop;\n    this.readyPromise = new Promise((resolve) => {\n      this.notifyReady = resolve;\n    });\n    this.update = update;\n    this.options = {\n      interrupt: \"wait\",\n      ...options\n    };\n    addToQueue(this);\n  }\n  get(selector) {\n    this.currentTarget = selector;\n    return this;\n  }\n  layout(keyframes2, options) {\n    this.updateTarget(\"layout\", keyframes2, options);\n    return this;\n  }\n  new(keyframes2, options) {\n    this.updateTarget(\"new\", keyframes2, options);\n    return this;\n  }\n  old(keyframes2, options) {\n    this.updateTarget(\"old\", keyframes2, options);\n    return this;\n  }\n  enter(keyframes2, options) {\n    this.updateTarget(\"enter\", keyframes2, options);\n    return this;\n  }\n  exit(keyframes2, options) {\n    this.updateTarget(\"exit\", keyframes2, options);\n    return this;\n  }\n  crossfade(options) {\n    this.updateTarget(\"enter\", { opacity: 1 }, options);\n    this.updateTarget(\"exit\", { opacity: 0 }, options);\n    return this;\n  }\n  updateTarget(target, keyframes2, options = {}) {\n    const { currentTarget, targets } = this;\n    if (!targets.has(currentTarget)) {\n      targets.set(currentTarget, {});\n    }\n    const targetData = targets.get(currentTarget);\n    targetData[target] = { keyframes: keyframes2, options };\n  }\n  then(resolve, reject) {\n    return this.readyPromise.then(resolve, reject);\n  }\n};\nfunction animateView(update, defaultOptions = {}) {\n  return new ViewTransitionBuilder(update, defaultOptions);\n}\n\n// ../../../node_modules/motion-dom/dist/es/frameloop/index-legacy.mjs\nvar sync = frame;\nvar cancelSync = stepsOrder.reduce((acc, key) => {\n  acc[key] = (process2) => cancelFrame(process2);\n  return acc;\n}, {});\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs\nimport { createContext as createContext3 } from \"react\";\nvar MotionConfigContext = createContext3({\n  transformPagePoint: (p) => p,\n  isStatic: false,\n  reducedMotion: \"never\"\n});\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs\nimport { useContext, useId, useEffect as useEffect2, useCallback } from \"react\";\nfunction usePresence(subscribe = true) {\n  const context = useContext(PresenceContext);\n  if (context === null)\n    return [true, null];\n  const { isPresent: isPresent2, onExitComplete, register } = context;\n  const id4 = useId();\n  useEffect2(() => {\n    if (subscribe) {\n      return register(id4);\n    }\n  }, [subscribe]);\n  const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id4), [id4, onExitComplete, subscribe]);\n  return !isPresent2 && onExitComplete ? [false, safeToRemove] : [true];\n}\nfunction useIsPresent() {\n  return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n  return context === null ? true : context.isPresent;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nimport { jsx as jsx3, Fragment } from \"react/jsx-runtime\";\nimport { useMemo as useMemo2, useRef as useRef3, useState, useContext as useContext3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-constant.mjs\nimport { useRef } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nimport * as React2 from \"react\";\nimport { useId as useId3, useMemo } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs\nimport { jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { useId as useId2, useRef as useRef2, useContext as useContext2, useInsertionEffect } from \"react\";\nvar PopChildMeasure = class extends React.Component {\n  getSnapshotBeforeUpdate(prevProps) {\n    const element = this.props.childRef.current;\n    if (element && prevProps.isPresent && !this.props.isPresent) {\n      const parent = element.offsetParent;\n      const parentWidth = isHTMLElement(parent) ? parent.offsetWidth || 0 : 0;\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      size.right = parentWidth - size.width - size.left;\n    }\n    return null;\n  }\n  /**\n   * Required with getSnapshotBeforeUpdate to stop React complaining.\n   */\n  componentDidUpdate() {\n  }\n  render() {\n    return this.props.children;\n  }\n};\nfunction PopChild({ children, isPresent: isPresent2, anchorX }) {\n  const id4 = useId2();\n  const ref = useRef2(null);\n  const size = useRef2({\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0,\n    right: 0\n  });\n  const { nonce } = useContext2(MotionConfigContext);\n  useInsertionEffect(() => {\n    const { width, height, top, left, right } = size.current;\n    if (isPresent2 || !ref.current || !width || !height)\n      return;\n    const x = anchorX === \"left\" ? `left: ${left}` : `right: ${right}`;\n    ref.current.dataset.motionPopId = id4;\n    const style2 = document.createElement(\"style\");\n    if (nonce)\n      style2.nonce = nonce;\n    document.head.appendChild(style2);\n    if (style2.sheet) {\n      style2.sheet.insertRule(`\n          [data-motion-pop-id=\"${id4}\"] {\n            position: absolute !important;\n            width: ${width}px !important;\n            height: ${height}px !important;\n            ${x}px !important;\n            top: ${top}px !important;\n          }\n        `);\n    }\n    return () => {\n      if (document.head.contains(style2)) {\n        document.head.removeChild(style2);\n      }\n    };\n  }, [isPresent2]);\n  return jsx(PopChildMeasure, { isPresent: isPresent2, childRef: ref, sizeRef: size, children: React.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, anchorX }) => {\n  const presenceChildren = useConstant(newChildrenMap);\n  const id4 = useId3();\n  let isReusedContext = true;\n  let context = useMemo(() => {\n    isReusedContext = false;\n    return {\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  }, [isPresent2, presenceChildren, onExitComplete]);\n  if (presenceAffectsLayout && isReusedContext) {\n    context = { ...context };\n  }\n  useMemo(() => {\n    presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n  }, [isPresent2]);\n  React2.useEffect(() => {\n    !isPresent2 && !presenceChildren.size && onExitComplete && onExitComplete();\n  }, [isPresent2]);\n  if (mode === \"popLayout\") {\n    children = jsx2(PopChild, { isPresent: isPresent2, anchorX, children });\n  }\n  return jsx2(PresenceContext.Provider, { value: context, children });\n};\nfunction newChildrenMap() {\n  return /* @__PURE__ */ new Map();\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs\nimport { Children, isValidElement } from \"react\";\nvar getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n  const filtered = [];\n  Children.forEach(children, (child) => {\n    if (isValidElement(child))\n      filtered.push(child);\n  });\n  return filtered;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nvar AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", propagate = false, anchorX = \"left\" }) => {\n  const [isParentPresent, safeToRemove] = usePresence(propagate);\n  const presentChildren = useMemo2(() => onlyElements(children), [children]);\n  const presentKeys = propagate && !isParentPresent ? [] : presentChildren.map(getChildKey);\n  const isInitialRender = useRef3(true);\n  const pendingPresentChildren = useRef3(presentChildren);\n  const exitComplete = useConstant(() => /* @__PURE__ */ new Map());\n  const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n  const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n  useIsomorphicLayoutEffect(() => {\n    isInitialRender.current = false;\n    pendingPresentChildren.current = presentChildren;\n    for (let i = 0; i < renderedChildren.length; i++) {\n      const key = getChildKey(renderedChildren[i]);\n      if (!presentKeys.includes(key)) {\n        if (exitComplete.get(key) !== true) {\n          exitComplete.set(key, false);\n        }\n      } else {\n        exitComplete.delete(key);\n      }\n    }\n  }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n  const exitingChildren = [];\n  if (presentChildren !== diffedChildren) {\n    let nextChildren = [...presentChildren];\n    for (let i = 0; i < renderedChildren.length; i++) {\n      const child = renderedChildren[i];\n      const key = getChildKey(child);\n      if (!presentKeys.includes(key)) {\n        nextChildren.splice(i, 0, child);\n        exitingChildren.push(child);\n      }\n    }\n    if (mode === \"wait\" && exitingChildren.length) {\n      nextChildren = exitingChildren;\n    }\n    setRenderedChildren(onlyElements(nextChildren));\n    setDiffedChildren(presentChildren);\n    return null;\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  const { forceRender } = useContext3(LayoutGroupContext);\n  return jsx3(Fragment, { children: renderedChildren.map((child) => {\n    const key = getChildKey(child);\n    const isPresent2 = propagate && !isParentPresent ? false : presentChildren === renderedChildren || presentKeys.includes(key);\n    const onExit = () => {\n      if (exitComplete.has(key)) {\n        exitComplete.set(key, true);\n      } else {\n        return;\n      }\n      let isEveryExitComplete = true;\n      exitComplete.forEach((isExitComplete) => {\n        if (!isExitComplete)\n          isEveryExitComplete = false;\n      });\n      if (isEveryExitComplete) {\n        forceRender == null ? void 0 : forceRender();\n        setRenderedChildren(pendingPresentChildren.current);\n        propagate && (safeToRemove == null ? void 0 : safeToRemove());\n        onExitComplete && onExitComplete();\n      }\n    };\n    return jsx3(PresenceChild, { isPresent: isPresent2, initial: !isInitialRender.current || initial ? void 0 : false, custom, presenceAffectsLayout, mode, onExitComplete: isPresent2 ? void 0 : onExit, anchorX, children: child }, key);\n  }) });\n};\n\n// ../../../node_modules/framer-motion/dist/es/context/DeprecatedLayoutGroupContext.mjs\nimport { createContext as createContext4 } from \"react\";\nvar DeprecatedLayoutGroupContext = createContext4(null);\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nimport { useState as useState2, useCallback as useCallback2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs\nimport { useRef as useRef4 } from \"react\";\nfunction useIsMounted() {\n  const isMounted = useRef4(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] = useState2(0);\n  const forceRender = useCallback2(() => {\n    isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n  }, [forcedRenderCount]);\n  const deferredForceRender = useCallback2(() => frame.postRender(forceRender), [forceRender]);\n  return [deferredForceRender, forcedRenderCount];\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nimport { jsx as jsx4 } from \"react/jsx-runtime\";\nimport { useContext as useContext4, useRef as useRef5, useMemo as useMemo3 } 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      nodes.delete(node);\n      const unsubscribe = subscriptions.get(node);\n      if (unsubscribe) {\n        unsubscribe();\n        subscriptions.delete(node);\n      }\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, inherit = true }) => {\n  const layoutGroupContext = useContext4(LayoutGroupContext);\n  const deprecatedLayoutGroupContext = useContext4(DeprecatedLayoutGroupContext);\n  const [forceRender, key] = useForceUpdate();\n  const context = useRef5(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 = useMemo3(() => ({ ...context.current, forceRender }), [key]);\n  return jsx4(LayoutGroupContext.Provider, { value: memoizedContext, children });\n};\n\n// ../../../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\nimport { jsx as jsx5 } from \"react/jsx-runtime\";\nimport { useState as useState3, useRef as useRef6, useEffect as useEffect4 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/LazyContext.mjs\nimport { createContext as createContext5 } from \"react\";\nvar LazyContext = createContext5({ strict: false });\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs\nvar featureProps = {\n  animation: [\n    \"animate\",\n    \"variants\",\n    \"whileHover\",\n    \"whileTap\",\n    \"exit\",\n    \"whileInView\",\n    \"whileFocus\",\n    \"whileDrag\"\n  ],\n  exit: [\"exit\"],\n  drag: [\"drag\", \"dragControls\"],\n  focus: [\"whileFocus\"],\n  hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n  tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n  pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n  inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n  layout: [\"layout\", \"layoutId\"]\n};\nvar featureDefinitions = {};\nfor (const key in featureProps) {\n  featureDefinitions[key] = {\n    isEnabled: (props) => featureProps[key].some((name) => !!props[name])\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    featureDefinitions[key] = {\n      ...featureDefinitions[key],\n      ...features[key]\n    };\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\nfunction LazyMotion({ children, features, strict = false }) {\n  const [, setIsLoaded] = useState3(!isLazyBundle(features));\n  const loadedRenderer = useRef6(void 0);\n  if (!isLazyBundle(features)) {\n    const { renderer, ...loadedFeatures } = features;\n    loadedRenderer.current = renderer;\n    loadFeatures(loadedFeatures);\n  }\n  useEffect4(() => {\n    if (isLazyBundle(features)) {\n      features().then(({ renderer, ...loadedFeatures }) => {\n        loadFeatures(loadedFeatures);\n        loadedRenderer.current = renderer;\n        setIsLoaded(true);\n      });\n    }\n  }, []);\n  return jsx5(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/motion/utils/valid-prop.mjs\nvar validMotionProps = /* @__PURE__ */ new Set([\n  \"animate\",\n  \"exit\",\n  \"variants\",\n  \"initial\",\n  \"style\",\n  \"values\",\n  \"variants\",\n  \"transition\",\n  \"transformTemplate\",\n  \"custom\",\n  \"inherit\",\n  \"onBeforeLayoutMeasure\",\n  \"onAnimationStart\",\n  \"onAnimationComplete\",\n  \"onUpdate\",\n  \"onDragStart\",\n  \"onDrag\",\n  \"onDragEnd\",\n  \"onMeasureDragConstraints\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"_dragX\",\n  \"_dragY\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"onViewportEnter\",\n  \"onViewportLeave\",\n  \"globalTapTarget\",\n  \"ignoreStrict\",\n  \"viewport\"\n]);\nfunction isValidMotionProp(key) {\n  return key.startsWith(\"while\") || key.startsWith(\"drag\") && key !== \"draggable\" || key.startsWith(\"layout\") || key.startsWith(\"onTap\") || key.startsWith(\"onPan\") || key.startsWith(\"onLayout\") || 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 {\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) || // If trying to use native HTML drag events, forward drag listeners\n    props[\"draggable\"] && key.startsWith(\"onDrag\")) {\n      filteredProps[key] = props[key];\n    }\n  }\n  return filteredProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs\nimport { jsx as jsx6 } from \"react/jsx-runtime\";\nimport { useContext as useContext5, useMemo as useMemo4 } from \"react\";\nfunction MotionConfig({ children, isValidProp, ...config }) {\n  isValidProp && loadExternalIsValidProp(isValidProp);\n  config = { ...useContext5(MotionConfigContext), ...config };\n  config.isStatic = useConstant(() => config.isStatic);\n  const context = useMemo4(() => config, [\n    JSON.stringify(config.transition),\n    config.transformPagePoint,\n    config.reducedMotion\n  ]);\n  return jsx6(MotionConfigContext.Provider, { value: context, children });\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs\nimport { createContext as createContext6 } from \"react\";\nvar MotionContext = /* @__PURE__ */ createContext6({});\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs\nvar camelToDash2 = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs\nvar optimizedAppearDataId = \"framerAppearId\";\nvar optimizedAppearDataAttribute = \"data-\" + camelToDash2(optimizedAppearDataId);\n\n// ../../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs\nimport { createContext as createContext7 } from \"react\";\nvar SwitchLayoutGroupContext = createContext7({});\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nimport { jsxs, jsx as jsx7 } from \"react/jsx-runtime\";\nimport { forwardRef, useContext as useContext8 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nimport { useContext as useContext6, useMemo as useMemo5 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs\nfunction isAnimationControls(v) {\n  return v !== null && typeof v === \"object\" && typeof v.start === \"function\";\n}\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/render/utils/variant-props.mjs\nvar variantPriorityOrder = [\n  \"animate\",\n  \"whileInView\",\n  \"whileFocus\",\n  \"whileHover\",\n  \"whileTap\",\n  \"whileDrag\",\n  \"exit\"\n];\nvar variantProps = [\"initial\", ...variantPriorityOrder];\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs\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: animate2 } = props;\n    return {\n      initial: initial === false || isVariantLabel(initial) ? initial : void 0,\n      animate: isVariantLabel(animate2) ? animate2 : 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: animate2 } = getCurrentTreeVariants(props, useContext6(MotionContext));\n  return useMemo5(() => ({ initial, animate: animate2 }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate2)]);\n}\nfunction variantLabelsAsDependency(prop) {\n  return Array.isArray(prop) ? prop.join(\" \") : prop;\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/utils/use-motion-ref.mjs\nimport { useCallback as useCallback3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs\nfunction isRefObject(ref) {\n  return ref && 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 useCallback3(\n    (instance) => {\n      if (instance) {\n        visualState.onMount && visualState.onMount(instance);\n      }\n      if (visualElement) {\n        if (instance) {\n          visualElement.mount(instance);\n        } else {\n          visualElement.unmount();\n        }\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    /**\n     * Only pass a new ref callback to React if we've received a visual element\n     * factory. Otherwise we'll be mounting/remounting every time externalRef\n     * or other dependencies change.\n     */\n    [visualElement]\n  );\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nimport { useContext as useContext7, useRef as useRef7, useInsertionEffect as useInsertionEffect2, useEffect as useEffect5 } from \"react\";\nfunction useVisualElement(Component3, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n  var _a, _b;\n  const { visualElement: parent } = useContext7(MotionContext);\n  const lazyContext = useContext7(LazyContext);\n  const presenceContext = useContext7(PresenceContext);\n  const reducedMotionConfig = useContext7(MotionConfigContext).reducedMotion;\n  const visualElementRef = useRef7(null);\n  createVisualElement = createVisualElement || lazyContext.renderer;\n  if (!visualElementRef.current && createVisualElement) {\n    visualElementRef.current = createVisualElement(Component3, {\n      visualState,\n      parent,\n      props,\n      presenceContext,\n      blockInitialAnimation: presenceContext ? presenceContext.initial === false : false,\n      reducedMotionConfig\n    });\n  }\n  const visualElement = visualElementRef.current;\n  const initialLayoutGroupConfig = useContext7(SwitchLayoutGroupContext);\n  if (visualElement && !visualElement.projection && ProjectionNodeConstructor && (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n    createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n  }\n  const isMounted = useRef7(false);\n  useInsertionEffect2(() => {\n    if (visualElement && isMounted.current) {\n      visualElement.update(props, presenceContext);\n    }\n  });\n  const optimisedAppearId = props[optimizedAppearDataAttribute];\n  const wantsHandoff = useRef7(Boolean(optimisedAppearId) && !((_a = window.MotionHandoffIsComplete) == null ? void 0 : _a.call(window, optimisedAppearId)) && ((_b = window.MotionHasOptimisedAnimation) == null ? void 0 : _b.call(window, optimisedAppearId)));\n  useIsomorphicLayoutEffect(() => {\n    if (!visualElement)\n      return;\n    isMounted.current = true;\n    window.MotionIsMounted = true;\n    visualElement.updateFeatures();\n    microtask.render(visualElement.render);\n    if (wantsHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n  });\n  useEffect5(() => {\n    if (!visualElement)\n      return;\n    if (!wantsHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n    if (wantsHandoff.current) {\n      queueMicrotask(() => {\n        var _a2;\n        (_a2 = window.MotionHandoffMarkAsComplete) == null ? void 0 : _a2.call(window, optimisedAppearId);\n      });\n      wantsHandoff.current = false;\n    }\n  });\n  return visualElement;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n  const { layoutId, layout: layout2, drag: drag2, dragConstraints, layoutScroll, layoutRoot, layoutCrossfade } = props;\n  visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"] ? void 0 : getClosestProjectingNode(visualElement.parent));\n  visualElement.projection.setOptions({\n    layoutId,\n    layout: layout2,\n    alwaysMeasureLayout: Boolean(drag2) || dragConstraints && isRefObject(dragConstraints),\n    visualElement,\n    /**\n     * TODO: Update options in an effect. This could be tricky as it'll be too late\n     * to update by the time layout animations run.\n     * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n     * ensuring it gets called if there's no potential layout animations.\n     *\n     */\n    animationType: typeof layout2 === \"string\" ? layout2 : \"both\",\n    initialPromotionConfig,\n    crossfade: layoutCrossfade,\n    layoutScroll,\n    layoutRoot\n  });\n}\nfunction getClosestProjectingNode(visualElement) {\n  if (!visualElement)\n    return void 0;\n  return visualElement.options.allowProjection !== false ? visualElement.projection : getClosestProjectingNode(visualElement.parent);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nfunction createRendererMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState: useVisualState2, Component: Component3 }) {\n  preloadedFeatures && loadFeatures(preloadedFeatures);\n  function MotionComponent(props, externalRef) {\n    let MeasureLayout2;\n    const configAndProps = {\n      ...useContext8(MotionConfigContext),\n      ...props,\n      layoutId: useLayoutId(props)\n    };\n    const { isStatic } = configAndProps;\n    const context = useCreateMotionContext(props);\n    const visualState = useVisualState2(props, isStatic);\n    if (!isStatic && isBrowser) {\n      useStrictMode(configAndProps, preloadedFeatures);\n      const layoutProjection = getProjectionFunctionality(configAndProps);\n      MeasureLayout2 = layoutProjection.MeasureLayout;\n      context.visualElement = useVisualElement(Component3, visualState, configAndProps, createVisualElement, layoutProjection.ProjectionNode);\n    }\n    return jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout2 && context.visualElement ? jsx7(MeasureLayout2, { visualElement: context.visualElement, ...configAndProps }) : null, useRender(Component3, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] });\n  }\n  MotionComponent.displayName = `motion.${typeof Component3 === \"string\" ? Component3 : `create(${Component3.displayName ?? Component3.name ?? \"\"})`}`;\n  const ForwardRefMotionComponent = forwardRef(MotionComponent);\n  ForwardRefMotionComponent[motionComponentSymbol] = Component3;\n  return ForwardRefMotionComponent;\n}\nfunction useLayoutId({ layoutId }) {\n  const layoutGroupId = useContext8(LayoutGroupContext).id;\n  return layoutGroupId && layoutId !== void 0 ? layoutGroupId + \"-\" + layoutId : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n  const isStrict = useContext8(LazyContext).strict;\n  if (false) {\n    const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n    configAndProps.ignoreStrict ? warning(false, strictMessage) : invariant(false, strictMessage);\n  }\n}\nfunction getProjectionFunctionality(props) {\n  const { drag: drag2, layout: layout2 } = featureDefinitions;\n  if (!drag2 && !layout2)\n    return {};\n  const combined = { ...drag2, ...layout2 };\n  return {\n    MeasureLayout: (drag2 == null ? void 0 : drag2.isEnabled(props)) || (layout2 == null ? void 0 : layout2.isEnabled(props)) ? combined.MeasureLayout : void 0,\n    ProjectionNode: combined.ProjectionNode\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs\nvar scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n  for (const key in correctors) {\n    scaleCorrectors[key] = correctors[key];\n    if (isCSSVariableName(key)) {\n      scaleCorrectors[key].isCSSVariable = true;\n    }\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs\nvar translateAlias2 = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\",\n  transformPerspective: \"perspective\"\n};\nvar numTransforms = transformPropOrder.length;\nfunction buildTransform2(latestValues, transform2, transformTemplate) {\n  let transformString = \"\";\n  let transformIsDefault = true;\n  for (let i = 0; i < numTransforms; i++) {\n    const key = transformPropOrder[i];\n    const value = latestValues[key];\n    if (value === void 0)\n      continue;\n    let valueIsDefault = true;\n    if (typeof value === \"number\") {\n      valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n    } else {\n      valueIsDefault = parseFloat(value) === 0;\n    }\n    if (!valueIsDefault || transformTemplate) {\n      const valueAsType = getValueAsType(value, numberValueTypes[key]);\n      if (!valueIsDefault) {\n        transformIsDefault = false;\n        const transformName = translateAlias2[key] || key;\n        transformString += `${transformName}(${valueAsType}) `;\n      }\n      if (transformTemplate) {\n        transform2[key] = valueAsType;\n      }\n    }\n  }\n  transformString = transformString.trim();\n  if (transformTemplate) {\n    transformString = transformTemplate(transform2, transformIsDefault ? \"\" : transformString);\n  } else if (transformIsDefault) {\n    transformString = \"none\";\n  }\n  return transformString;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs\nfunction resolveMotionValue(value) {\n  return isMotionValue(value) ? value.get() : value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nimport { useContext as useContext9 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs\nfunction getValueState(visualElement) {\n  const state = [{}, {}];\n  visualElement == null ? void 0 : visualElement.values.forEach((value, key) => {\n    state[0][key] = value.get();\n    state[1][key] = value.getVelocity();\n  });\n  return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n  if (typeof definition === \"function\") {\n    const [current2, velocity] = getValueState(visualElement);\n    definition = definition(custom !== void 0 ? custom : props.custom, current2, velocity);\n  }\n  if (typeof definition === \"string\") {\n    definition = props.variants && props.variants[definition];\n  }\n  if (typeof definition === \"function\") {\n    const [current2, velocity] = getValueState(visualElement);\n    definition = definition(custom !== void 0 ? custom : props.custom, current2, velocity);\n  }\n  return definition;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nfunction makeState({ scrapeMotionValuesFromProps: scrapeMotionValuesFromProps3, createRenderState }, props, context, presenceContext) {\n  const state = {\n    latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps3),\n    renderState: createRenderState()\n  };\n  return state;\n}\nvar makeUseVisualState = (config) => (props, isStatic) => {\n  const context = useContext9(MotionContext);\n  const presenceContext = useContext9(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: animate2 } = 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 (animate2 === void 0)\n      animate2 = context.animate;\n  }\n  let isInitialAnimationBlocked = presenceContext ? presenceContext.initial === false : false;\n  isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n  const variantToSet = isInitialAnimationBlocked ? animate2 : initial;\n  if (variantToSet && typeof variantToSet !== \"boolean\" && !isAnimationControls(variantToSet)) {\n    const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n    for (let i = 0; i < list.length; i++) {\n      const resolved = resolveVariantFromProps(props, list[i]);\n      if (resolved) {\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    }\n  }\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/components/create-proxy.mjs\nfunction createDOMMotionComponentProxy(componentFactory) {\n  if (typeof Proxy === \"undefined\") {\n    return componentFactory;\n  }\n  const componentCache = /* @__PURE__ */ new Map();\n  const deprecatedFactoryFunction = (...args) => {\n    if (false) {\n      warnOnce(false, \"motion() is deprecated. Use motion.create() instead.\");\n    }\n    return componentFactory(...args);\n  };\n  return new Proxy(deprecatedFactoryFunction, {\n    /**\n     * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n     * The prop name is passed through as `key` and we can use that to generate a `motion`\n     * DOM component with that name.\n     */\n    get: (_target, key) => {\n      if (key === \"create\")\n        return componentFactory;\n      if (!componentCache.has(key)) {\n        componentCache.set(key, componentFactory(key));\n      }\n      return componentCache.get(key);\n    }\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nimport { Fragment as Fragment2, useMemo as useMemo8, createElement } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs\nimport { useMemo as useMemo6 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs\nfunction isForcedMotionValue(key, { layout: layout2, layoutId }) {\n  return transformProps.has(key) || key.startsWith(\"origin\") || (layout2 || layoutId !== void 0) && (!!scaleCorrectors[key] || key === \"opacity\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs\nfunction buildHTMLStyles(state, latestValues, transformTemplate) {\n  const { style: style2, vars, transformOrigin } = state;\n  let hasTransform2 = false;\n  let hasTransformOrigin = false;\n  for (const key in latestValues) {\n    const value = latestValues[key];\n    if (transformProps.has(key)) {\n      hasTransform2 = true;\n      continue;\n    } else if (isCSSVariableName(key)) {\n      vars[key] = value;\n      continue;\n    } else {\n      const valueAsType = getValueAsType(value, numberValueTypes[key]);\n      if (key.startsWith(\"origin\")) {\n        hasTransformOrigin = true;\n        transformOrigin[key] = valueAsType;\n      } else {\n        style2[key] = valueAsType;\n      }\n    }\n  }\n  if (!latestValues.transform) {\n    if (hasTransform2 || transformTemplate) {\n      style2.transform = buildTransform2(latestValues, state.transform, transformTemplate);\n    } else if (style2.transform) {\n      style2.transform = \"none\";\n    }\n  }\n  if (hasTransformOrigin) {\n    const { originX = \"50%\", originY = \"50%\", originZ = 0 } = transformOrigin;\n    style2.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  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) {\n  return useMemo6(() => {\n    const state = createHtmlRenderState();\n    buildHTMLStyles(state, visualState, transformTemplate);\n    return Object.assign({}, state.vars, state.style);\n  }, [visualState]);\n}\nfunction useStyle(props, visualState) {\n  const styleProp = props.style || {};\n  const style2 = {};\n  copyRawValuesOnly(style2, styleProp, props);\n  Object.assign(style2, useInitialMotionValues(props, visualState));\n  return style2;\n}\nfunction useHTMLProps(props, visualState) {\n  const htmlProps = {};\n  const style2 = useStyle(props, visualState);\n  if (props.drag && props.dragListener !== false) {\n    htmlProps.draggable = false;\n    style2.userSelect = style2.WebkitUserSelect = style2.WebkitTouchCallout = \"none\";\n    style2.touchAction = props.drag === true ? \"none\" : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n  }\n  if (props.tabIndex === void 0 && (props.onTap || props.onTapStart || props.whileTap)) {\n    htmlProps.tabIndex = 0;\n  }\n  htmlProps.style = style2;\n  return htmlProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs\nimport { useMemo as useMemo7 } from \"react\";\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  attrScale,\n  pathLength,\n  pathSpacing = 1,\n  pathOffset = 0,\n  // This is object creation, which we try to avoid per-frame.\n  ...latest\n}, isSVGTag2, transformTemplate, styleProp) {\n  buildHTMLStyles(state, latest, 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: style2 } = state;\n  if (attrs.transform) {\n    style2.transform = attrs.transform;\n    delete attrs.transform;\n  }\n  if (style2.transform || attrs.transformOrigin) {\n    style2.transformOrigin = attrs.transformOrigin ?? \"50% 50%\";\n    delete attrs.transformOrigin;\n  }\n  if (style2.transform) {\n    style2.transformBox = (styleProp == null ? void 0 : styleProp.transformBox) ?? \"fill-box\";\n    delete attrs.transformBox;\n  }\n  if (attrX !== void 0)\n    attrs.x = attrX;\n  if (attrY !== void 0)\n    attrs.y = attrY;\n  if (attrScale !== void 0)\n    attrs.scale = attrScale;\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, Component3) {\n  const visualProps = useMemo7(() => {\n    const state = createSvgRenderState();\n    buildSVGAttrs(state, visualState, isSVGTag(Component3), props.transformTemplate, props.style);\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/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(Component3) {\n  if (\n    /**\n     * If it's not a string, it's a custom React component. Currently we only support\n     * HTML custom React components.\n     */\n    typeof Component3 !== \"string\" || /**\n     * If it contains a dash, the element is a custom HTML webcomponent.\n     */\n    Component3.includes(\"-\")\n  ) {\n    return false;\n  } else if (\n    /**\n     * If it's in our list of lowercase SVG tags, it's an SVG component\n     */\n    lowercaseSVGElements.indexOf(Component3) > -1 || /**\n     * If it contains a capital letter, it's an SVG component\n     */\n    /[A-Z]/u.test(Component3)\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nfunction createUseRender(forwardMotionProps = false) {\n  const useRender = (Component3, props, ref, { latestValues }, isStatic) => {\n    const useVisualProps = isSVGComponent(Component3) ? useSVGProps : useHTMLProps;\n    const visualProps = useVisualProps(props, latestValues, isStatic, Component3);\n    const filteredProps = filterProps(props, typeof Component3 === \"string\", forwardMotionProps);\n    const elementProps = Component3 !== Fragment2 ? { ...filteredProps, ...visualProps, ref } : {};\n    const { children } = props;\n    const renderedChildren = useMemo8(() => isMotionValue(children) ? children.get() : children, [children]);\n    return createElement(Component3, {\n      ...elementProps,\n      children: renderedChildren\n    });\n  };\n  return useRender;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n  var _a;\n  const { style: style2 } = props;\n  const newValues = {};\n  for (const key in style2) {\n    if (isMotionValue(style2[key]) || prevProps.style && isMotionValue(prevProps.style[key]) || isForcedMotionValue(key, props) || ((_a = visualElement == null ? void 0 : visualElement.getValue(key)) == null ? void 0 : _a.liveStyle) !== void 0) {\n      newValues[key] = style2[key];\n    }\n  }\n  return newValues;\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/svg/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps2(props, prevProps, visualElement) {\n  const newValues = scrapeMotionValuesFromProps(props, prevProps, visualElement);\n  for (const key in props) {\n    if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {\n      const targetKey = transformPropOrder.indexOf(key) !== -1 ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1) : 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  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/components/create-factory.mjs\nfunction createMotionComponentFactory(preloadedFeatures, createVisualElement) {\n  return function createMotionComponent2(Component3, { forwardMotionProps } = { forwardMotionProps: false }) {\n    const baseConfig = isSVGComponent(Component3) ? svgMotionConfig : htmlMotionConfig;\n    const config = {\n      ...baseConfig,\n      preloadedFeatures,\n      useRender: createUseRender(forwardMotionProps),\n      createVisualElement,\n      Component: Component3\n    };\n    return createRendererMotionComponent(config);\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/components/m/create.mjs\nvar createMinimalMotionComponent = /* @__PURE__ */ createMotionComponentFactory();\n\n// ../../../node_modules/framer-motion/dist/es/render/components/m/proxy.mjs\nvar m = /* @__PURE__ */ createDOMMotionComponentProxy(createMinimalMotionComponent);\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs\nfunction resolveVariant(visualElement, definition, custom) {\n  const props = visualElement.getProps();\n  return resolveVariantFromProps(props, definition, custom !== void 0 ? custom : props.custom, visualElement);\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/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 resolveFinalValueInKeyframes(v) {\n  return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n}\nfunction setTarget(visualElement, definition) {\n  const resolved = resolveVariant(visualElement, definition);\n  let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n  target = { ...target, ...transitionEnd };\n  for (const key in target) {\n    const value = resolveFinalValueInKeyframes(target[key]);\n    setMotionValue(visualElement, key, value);\n  }\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/value/use-will-change/add-will-change.mjs\nfunction addValueToWillChange(visualElement, key) {\n  const willChange = visualElement.getValue(\"willChange\");\n  if (isWillChangeMotionValue(willChange)) {\n    return willChange.add(key);\n  } else if (!willChange && MotionGlobalConfig.WillChange) {\n    const newWillChange = new MotionGlobalConfig.WillChange(\"auto\");\n    visualElement.addValue(\"willChange\", newWillChange);\n    newWillChange.add(key);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs\nfunction getOptimisedAppearId(visualElement) {\n  return visualElement.props[optimizedAppearDataAttribute];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs\nvar isNotNull2 = (value) => value !== null;\nfunction getFinalKeyframe2(keyframes2, { repeat, repeatType = \"loop\" }, finalKeyframe) {\n  const resolvedKeyframes = keyframes2.filter(isNotNull2);\n  const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1 ? 0 : resolvedKeyframes.length - 1;\n  return !index || finalKeyframe === void 0 ? resolvedKeyframes[index] : finalKeyframe;\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 keyframesTransition = {\n  type: \"keyframes\",\n  duration: 0.8\n};\nvar ease = {\n  type: \"keyframes\",\n  ease: [0.25, 0.1, 0.35, 1],\n  duration: 0.3\n};\nvar getDefaultTransition = (valueKey, { keyframes: keyframes2 }) => {\n  if (keyframes2.length > 2) {\n    return keyframesTransition;\n  } else if (transformProps.has(valueKey)) {\n    return valueKey.startsWith(\"scale\") ? criticallyDampedSpring(keyframes2[1]) : underDampedSpring;\n  }\n  return ease;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n  return !!Object.keys(transition).length;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs\nvar animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n  const valueTransition = getValueTransition(transition, name) || {};\n  const delay2 = valueTransition.delay || transition.delay || 0;\n  let { elapsed = 0 } = transition;\n  elapsed = elapsed - secondsToMilliseconds(delay2);\n  const options = {\n    keyframes: Array.isArray(target) ? target : [null, target],\n    ease: \"easeOut\",\n    velocity: value.getVelocity(),\n    ...valueTransition,\n    delay: -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    name,\n    motionValue: value,\n    element: isHandoff ? void 0 : element\n  };\n  if (!isTransitionDefined(valueTransition)) {\n    Object.assign(options, getDefaultTransition(name, options));\n  }\n  options.duration && (options.duration = secondsToMilliseconds(options.duration));\n  options.repeatDelay && (options.repeatDelay = secondsToMilliseconds(options.repeatDelay));\n  if (options.from !== void 0) {\n    options.keyframes[0] = options.from;\n  }\n  let shouldSkip = false;\n  if (options.type === false || options.duration === 0 && !options.repeatDelay) {\n    options.duration = 0;\n    if (options.delay === 0) {\n      shouldSkip = true;\n    }\n  }\n  if (MotionGlobalConfig.instantAnimations || MotionGlobalConfig.skipAnimations) {\n    shouldSkip = true;\n    options.duration = 0;\n    options.delay = 0;\n  }\n  options.allowFlatten = !valueTransition.type && !valueTransition.ease;\n  if (shouldSkip && !isHandoff && value.get() !== void 0) {\n    const finalKeyframe = getFinalKeyframe2(options.keyframes, valueTransition);\n    if (finalKeyframe !== void 0) {\n      frame.update(() => {\n        options.onUpdate(finalKeyframe);\n        options.onComplete();\n      });\n      return;\n    }\n  }\n  return valueTransition.isSync ? new JSAnimation(options) : new AsyncMotionValueAnimation(options);\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n  const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n  needsAnimating[key] = false;\n  return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay: delay2 = 0, transitionOverride, type } = {}) {\n  let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n  if (transitionOverride)\n    transition = transitionOverride;\n  const animations2 = [];\n  const animationTypeState = type && visualElement.animationState && visualElement.animationState.getState()[type];\n  for (const key in target) {\n    const value = visualElement.getValue(key, visualElement.latestValues[key] ?? null);\n    const valueTarget = target[key];\n    if (valueTarget === void 0 || animationTypeState && shouldBlockAnimation(animationTypeState, key)) {\n      continue;\n    }\n    const valueTransition = {\n      delay: delay2,\n      ...getValueTransition(transition || {}, key)\n    };\n    const currentValue = value.get();\n    if (currentValue !== void 0 && !value.isAnimating && !Array.isArray(valueTarget) && valueTarget === currentValue && !valueTransition.velocity) {\n      continue;\n    }\n    let isHandoff = false;\n    if (window.MotionHandoffAnimation) {\n      const appearId = getOptimisedAppearId(visualElement);\n      if (appearId) {\n        const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n        if (startTime !== null) {\n          valueTransition.startTime = startTime;\n          isHandoff = true;\n        }\n      }\n    }\n    addValueToWillChange(visualElement, key);\n    value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && positionalKeys.has(key) ? { type: false } : valueTransition, visualElement, isHandoff));\n    const animation = value.animation;\n    if (animation) {\n      animations2.push(animation);\n    }\n  }\n  if (transitionEnd) {\n    Promise.all(animations2).then(() => {\n      frame.update(() => {\n        transitionEnd && setTarget(visualElement, transitionEnd);\n      });\n    });\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs\nfunction animateVariant(visualElement, variant, options = {}) {\n  var _a;\n  const resolved = resolveVariant(visualElement, variant, options.type === \"exit\" ? (_a = visualElement.presenceContext) == null ? void 0 : _a.custom : void 0);\n  let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n  if (options.transitionOverride) {\n    transition = options.transitionOverride;\n  }\n  const getAnimation = resolved ? () => Promise.all(animateTarget(visualElement, resolved, options)) : () => Promise.resolve();\n  const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.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 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 sortByTreeOrder(a, b) {\n  return a.sortNodePosition(b);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.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 = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n  }\n  return animation.then(() => {\n    visualElement.notify(\"AnimationComplete\", definition);\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs\nfunction shallowCompare(next2, prev) {\n  if (!Array.isArray(prev))\n    return false;\n  const prevLength = prev.length;\n  if (prevLength !== next2.length)\n    return false;\n  for (let i = 0; i < prevLength; i++) {\n    if (prev[i] !== next2[i])\n      return false;\n  }\n  return true;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs\nvar numVariantProps = variantProps.length;\nfunction getVariantContext(visualElement) {\n  if (!visualElement)\n    return void 0;\n  if (!visualElement.isControllingVariants) {\n    const context2 = visualElement.parent ? getVariantContext(visualElement.parent) || {} : {};\n    if (visualElement.props.initial !== void 0) {\n      context2.initial = visualElement.props.initial;\n    }\n    return context2;\n  }\n  const context = {};\n  for (let i = 0; i < numVariantProps; i++) {\n    const name = variantProps[i];\n    const prop = visualElement.props[name];\n    if (isVariantLabel(prop) || prop === false) {\n      context[name] = prop;\n    }\n  }\n  return context;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs\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 animate2 = animateList(visualElement);\n  let state = createState();\n  let isInitialRender = true;\n  const buildResolvedTypeValues = (type) => (acc, definition) => {\n    var _a;\n    const resolved = resolveVariant(visualElement, definition, type === \"exit\" ? (_a = visualElement.presenceContext) == null ? void 0 : _a.custom : void 0);\n    if (resolved) {\n      const { transition, transitionEnd, ...target } = resolved;\n      acc = { ...acc, ...target, ...transitionEnd };\n    }\n    return acc;\n  };\n  function setAnimateFunction(makeAnimator) {\n    animate2 = makeAnimator(visualElement);\n  }\n  function animateChanges(changedActiveType) {\n    const { props } = visualElement;\n    const context = getVariantContext(visualElement.parent) || {};\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 (\n        // If it isn't active and hasn't *just* been set as inactive\n        !typeState.isActive && activeDelta === null || // If we didn't and don't have any defined prop for this animation type\n        !prop && !typeState.prevProp || // Or if the prop doesn't define an animation\n        isAnimationControls(prop) || typeof prop === \"boolean\"\n      ) {\n        continue;\n      }\n      const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n      let shouldAnimateType = variantDidChange || // If we're making this variant active, we want to always make it active\n      type === changedActiveType && typeState.isActive && !isInherited && propIsVariant || // If we removed a higher-priority variant (i is in reverse order)\n      i > removedVariantIndex && propIsVariant;\n      let handledRemovedValues = false;\n      const definitionList = Array.isArray(prop) ? prop : [prop];\n      let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});\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        if (removedKeys.has(key)) {\n          handledRemovedValues = true;\n          removedKeys.delete(key);\n        }\n        typeState.needsAnimating[key] = true;\n        const motionValue2 = visualElement.getValue(key);\n        if (motionValue2)\n          motionValue2.liveStyle = false;\n      };\n      for (const key in allKeys) {\n        const next2 = resolvedValues[key];\n        const prev = prevResolvedValues[key];\n        if (encounteredKeys.hasOwnProperty(key))\n          continue;\n        let valueHasChanged = false;\n        if (isKeyframesTarget(next2) && isKeyframesTarget(prev)) {\n          valueHasChanged = !shallowCompare(next2, prev);\n        } else {\n          valueHasChanged = next2 !== prev;\n        }\n        if (valueHasChanged) {\n          if (next2 !== void 0 && next2 !== null) {\n            markToAnimate(key);\n          } else {\n            removedKeys.add(key);\n          }\n        } else if (next2 !== 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      const willAnimateViaParent = isInherited && variantDidChange;\n      const needsAnimating = !willAnimateViaParent || handledRemovedValues;\n      if (shouldAnimateType && needsAnimating) {\n        animations2.push(...definitionList.map((animation) => ({\n          animation,\n          options: { type }\n        })));\n      }\n    }\n    if (removedKeys.size) {\n      const fallbackAnimation = {};\n      if (typeof props.initial !== \"boolean\") {\n        const initialTransition = resolveVariant(visualElement, Array.isArray(props.initial) ? props.initial[0] : props.initial);\n        if (initialTransition && initialTransition.transition) {\n          fallbackAnimation.transition = initialTransition.transition;\n        }\n      }\n      removedKeys.forEach((key) => {\n        const fallbackTarget = visualElement.getBaseTarget(key);\n        const motionValue2 = visualElement.getValue(key);\n        if (motionValue2)\n          motionValue2.liveStyle = true;\n        fallbackAnimation[key] = fallbackTarget ?? null;\n      });\n      animations2.push({ animation: fallbackAnimation });\n    }\n    let shouldAnimate = Boolean(animations2.length);\n    if (isInitialRender && (props.initial === false || props.initial === props.animate) && !visualElement.manuallyAnimateOnMount) {\n      shouldAnimate = false;\n    }\n    isInitialRender = false;\n    return shouldAnimate ? animate2(animations2) : Promise.resolve();\n  }\n  function setActive(type, isActive) {\n    var _a;\n    if (state[type].isActive === isActive)\n      return Promise.resolve();\n    (_a = visualElement.variantChildren) == null ? void 0 : _a.forEach((child) => {\n      var _a2;\n      return (_a2 = child.animationState) == null ? void 0 : _a2.setActive(type, isActive);\n    });\n    state[type].isActive = isActive;\n    const animations2 = animateChanges(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    reset: () => {\n      state = createState();\n      isInitialRender = true;\n    }\n  };\n}\nfunction checkVariantsDidChange(prev, next2) {\n  if (typeof next2 === \"string\") {\n    return next2 !== prev;\n  } else if (Array.isArray(next2)) {\n    return !shallowCompare(next2, 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    animate: createTypeState(true),\n    whileInView: createTypeState(),\n    whileHover: createTypeState(),\n    whileTap: createTypeState(),\n    whileDrag: createTypeState(),\n    whileFocus: createTypeState(),\n    exit: createTypeState()\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/Feature.mjs\nvar Feature = class {\n  constructor(node) {\n    this.isMounted = false;\n    this.node = node;\n  }\n  update() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs\nvar AnimationFeature = class extends Feature {\n  /**\n   * We dynamically generate the AnimationState manager as it contains a reference\n   * to the underlying animation library. We only want to load that if we load this,\n   * so people can optionally code split it out using the `m` component.\n   */\n  constructor(node) {\n    super(node);\n    node.animationState || (node.animationState = createAnimationState(node));\n  }\n  updateAnimationControlsSubscription() {\n    const { animate: animate2 } = this.node.getProps();\n    if (isAnimationControls(animate2)) {\n      this.unmountControls = animate2.subscribe(this.node);\n    }\n  }\n  /**\n   * Subscribe any provided AnimationControls to the component's VisualElement\n   */\n  mount() {\n    this.updateAnimationControlsSubscription();\n  }\n  update() {\n    const { animate: animate2 } = this.node.getProps();\n    const { animate: prevAnimate } = this.node.prevProps || {};\n    if (animate2 !== prevAnimate) {\n      this.updateAnimationControlsSubscription();\n    }\n  }\n  unmount() {\n    var _a;\n    this.node.animationState.reset();\n    (_a = this.unmountControls) == null ? void 0 : _a.call(this);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs\nvar id = 0;\nvar ExitAnimationFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.id = id++;\n  }\n  update() {\n    if (!this.node.presenceContext)\n      return;\n    const { isPresent: isPresent2, onExitComplete } = this.node.presenceContext;\n    const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n    if (!this.node.animationState || isPresent2 === prevIsPresent) {\n      return;\n    }\n    const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent2);\n    if (onExitComplete && !isPresent2) {\n      exitAnimation.then(() => {\n        onExitComplete(this.id);\n      });\n    }\n  }\n  mount() {\n    const { register, onExitComplete } = this.node.presenceContext || {};\n    if (onExitComplete) {\n      onExitComplete(this.id);\n    }\n    if (register) {\n      this.unmount = register(this.id);\n    }\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animations.mjs\nvar animations = {\n  animation: {\n    Feature: AnimationFeature\n  },\n  exit: {\n    Feature: ExitAnimationFeature\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/event-info.mjs\nfunction extractEventInfo(event) {\n  return {\n    point: {\n      x: event.pageX,\n      y: event.pageY\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/add-dom-event.mjs\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n  target.addEventListener(eventName, handler, options);\n  return () => target.removeEventListener(eventName, handler);\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs\nfunction addPointerEvent(target, eventName, handler, options) {\n  return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs\nvar SCALE_PRECISION = 1e-4;\nvar SCALE_MIN = 1 - SCALE_PRECISION;\nvar SCALE_MAX = 1 + SCALE_PRECISION;\nvar TRANSLATE_PRECISION = 0.01;\nvar TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nvar TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n  return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n  return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n  delta.origin = origin;\n  delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n  delta.scale = calcLength(target) / calcLength(source);\n  delta.translate = mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n  if (delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX || isNaN(delta.scale)) {\n    delta.scale = 1;\n  }\n  if (delta.translate >= TRANSLATE_MIN && delta.translate <= TRANSLATE_MAX || isNaN(delta.translate)) {\n    delta.translate = 0;\n  }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n  calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : void 0);\n  calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : void 0);\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, layout2, parent) {\n  target.min = layout2.min - parent.min;\n  target.max = target.min + calcLength(layout2);\n}\nfunction calcRelativePosition(target, layout2, parent) {\n  calcRelativeAxisPosition(target.x, layout2.x, parent.x);\n  calcRelativeAxisPosition(target.y, layout2.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/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/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/utils/delay.mjs\nfunction delay(callback, timeout) {\n  const start2 = time.now();\n  const checkElapsed = ({ timestamp }) => {\n    const elapsed = timestamp - start2;\n    if (elapsed >= timeout) {\n      cancelFrame(checkElapsed);\n      callback(elapsed - timeout);\n    }\n  };\n  frame.setup(checkElapsed, true);\n  return () => cancelFrame(checkElapsed);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/store.mjs\nvar visualElementStore = /* @__PURE__ */ new WeakMap();\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, next2, prev) {\n  for (const key in next2) {\n    const nextValue = next2[key];\n    const prevValue = prev[key];\n    if (isMotionValue(nextValue)) {\n      element.addValue(key, nextValue);\n    } else if (isMotionValue(prevValue)) {\n      element.addValue(key, motionValue(nextValue, { owner: element }));\n    } else if (prevValue !== nextValue) {\n      if (element.hasValue(key)) {\n        const existingValue = element.getValue(key);\n        if (existingValue.liveStyle === true) {\n          existingValue.jump(nextValue);\n        } else if (!existingValue.hasAnimated) {\n          existingValue.set(nextValue);\n        }\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 (next2[key] === void 0)\n      element.removeValue(key);\n  }\n  return next2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/VisualElement.mjs\nvar propEventHandlers = [\n  \"AnimationStart\",\n  \"AnimationComplete\",\n  \"Update\",\n  \"BeforeLayoutMeasure\",\n  \"LayoutMeasure\",\n  \"LayoutAnimationStart\",\n  \"LayoutAnimationComplete\"\n];\nvar VisualElement = class {\n  /**\n   * This method takes React props and returns found MotionValues. For example, HTML\n   * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n   *\n   * This isn't an abstract method as it needs calling in the constructor, but it is\n   * intended to be one.\n   */\n  scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {\n    return {};\n  }\n  constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, 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.KeyframeResolver = KeyframeResolver;\n    this.features = {};\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.renderScheduledAt = 0;\n    this.scheduleRender = () => {\n      const now2 = time.now();\n      if (this.renderScheduledAt < now2) {\n        this.renderScheduledAt = now2;\n        frame.render(this.render, false, true);\n      }\n    };\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.presenceContext = presenceContext;\n    this.depth = parent ? parent.depth + 1 : 0;\n    this.reducedMotionConfig = reducedMotionConfig;\n    this.options = options;\n    this.blockInitialAnimation = Boolean(blockInitialAnimation);\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, {}, this);\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      }\n    }\n  }\n  mount(instance) {\n    this.current = instance;\n    visualElementStore.set(instance, this);\n    if (this.projection && !this.projection.instance) {\n      this.projection.mount(instance);\n    }\n    if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n      this.removeFromVariantTree = this.parent.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.update(this.props, this.presenceContext);\n  }\n  unmount() {\n    this.projection && this.projection.unmount();\n    cancelFrame(this.notifyUpdate);\n    cancelFrame(this.render);\n    this.valueSubscriptions.forEach((remove) => remove());\n    this.valueSubscriptions.clear();\n    this.removeFromVariantTree && this.removeFromVariantTree();\n    this.parent && this.parent.children.delete(this);\n    for (const key in this.events) {\n      this.events[key].clear();\n    }\n    for (const key in this.features) {\n      const feature = this.features[key];\n      if (feature) {\n        feature.unmount();\n        feature.isMounted = false;\n      }\n    }\n    this.current = null;\n  }\n  bindToMotionValue(key, value) {\n    if (this.valueSubscriptions.has(key)) {\n      this.valueSubscriptions.get(key)();\n    }\n    const valueIsTransform = transformProps.has(key);\n    if (valueIsTransform && this.onBindTransform) {\n      this.onBindTransform();\n    }\n    const removeOnChange = value.on(\"change\", (latestValue) => {\n      this.latestValues[key] = latestValue;\n      this.props.onUpdate && frame.preRender(this.notifyUpdate);\n      if (valueIsTransform && this.projection) {\n        this.projection.isTransformDirty = true;\n      }\n    });\n    const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n    let removeSyncCheck;\n    if (window.MotionCheckAppearSync) {\n      removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n    }\n    this.valueSubscriptions.set(key, () => {\n      removeOnChange();\n      removeOnRenderRequest();\n      if (removeSyncCheck)\n        removeSyncCheck();\n      if (value.owner)\n        value.stop();\n    });\n  }\n  sortNodePosition(other) {\n    if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type) {\n      return 0;\n    }\n    return this.sortInstanceNodePosition(this.current, other.current);\n  }\n  updateFeatures() {\n    let key = \"animation\";\n    for (key in featureDefinitions) {\n      const featureDefinition = featureDefinitions[key];\n      if (!featureDefinition)\n        continue;\n      const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n      if (!this.features[key] && FeatureConstructor && isEnabled(this.props)) {\n        this.features[key] = new FeatureConstructor(this);\n      }\n      if (this.features[key]) {\n        const feature = this.features[key];\n        if (feature.isMounted) {\n          feature.update();\n        } else {\n          feature.mount();\n          feature.isMounted = true;\n        }\n      }\n    }\n  }\n  triggerBuild() {\n    this.build(this.renderState, this.latestValues, this.props);\n  }\n  /**\n   * Measure the current viewport box with or without transforms.\n   * Only measures axis-aligned boxes, rotate and skew must be manually\n   * removed with a re-render to work.\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  /**\n   * Update the provided props. Ensure any newly-added motion values are\n   * added to our map, old ones removed, and listeners updated.\n   */\n  update(props, presenceContext) {\n    if (props.transformTemplate || this.props.transformTemplate) {\n      this.scheduleRender();\n    }\n    this.prevProps = this.props;\n    this.props = props;\n    this.prevPresenceContext = this.presenceContext;\n    this.presenceContext = presenceContext;\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 listenerName = \"on\" + key;\n      const listener = props[listenerName];\n      if (listener) {\n        this.propEventSubscriptions[key] = this.on(key, listener);\n      }\n    }\n    this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);\n    if (this.handleChildMotionValue) {\n      this.handleChildMotionValue();\n    }\n  }\n  getProps() {\n    return this.props;\n  }\n  /**\n   * Returns the variant definition with a given name.\n   */\n  getVariant(name) {\n    return this.props.variants ? this.props.variants[name] : void 0;\n  }\n  /**\n   * Returns the defined default transition on this component.\n   */\n  getDefaultTransition() {\n    return this.props.transition;\n  }\n  getTransformPagePoint() {\n    return this.props.transformPagePoint;\n  }\n  getClosestVariantNode() {\n    return this.isVariantNode ? this : this.parent ? this.parent.getClosestVariantNode() : void 0;\n  }\n  /**\n   * Add a child visual element to our set of children.\n   */\n  addVariantChild(child) {\n    const closestVariantNode = this.getClosestVariantNode();\n    if (closestVariantNode) {\n      closestVariantNode.variantChildren && closestVariantNode.variantChildren.add(child);\n      return () => closestVariantNode.variantChildren.delete(child);\n    }\n  }\n  /**\n   * Add a motion value and bind it to this visual element.\n   */\n  addValue(key, value) {\n    const existingValue = this.values.get(key);\n    if (value !== existingValue) {\n      if (existingValue)\n        this.removeValue(key);\n      this.bindToMotionValue(key, value);\n      this.values.set(key, value);\n      this.latestValues[key] = value.get();\n    }\n  }\n  /**\n   * Remove a motion value and unbind any active subscriptions.\n   */\n  removeValue(key) {\n    this.values.delete(key);\n    const unsubscribe = this.valueSubscriptions.get(key);\n    if (unsubscribe) {\n      unsubscribe();\n      this.valueSubscriptions.delete(key);\n    }\n    delete this.latestValues[key];\n    this.removeValueFromRenderState(key, this.renderState);\n  }\n  /**\n   * Check whether we have a motion value for this key\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 === null ? void 0 : defaultValue, { owner: this });\n      this.addValue(key, value);\n    }\n    return value;\n  }\n  /**\n   * If we're trying to animate to a previously unencountered value,\n   * we need to check for it in our state and as a last resort read it\n   * directly from the instance (which might have performance implications).\n   */\n  readValue(key, target) {\n    let value = this.latestValues[key] !== void 0 || !this.current ? this.latestValues[key] : this.getBaseTargetFromProps(this.props, key) ?? this.readValueFromInstance(this.current, key, this.options);\n    if (value !== void 0 && value !== null) {\n      if (typeof value === \"string\" && (isNumericalString(value) || isZeroValueString(value))) {\n        value = parseFloat(value);\n      } else if (!findValueType(value) && complex.test(target)) {\n        value = getAnimatableNone2(key, target);\n      }\n      this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n    }\n    return isMotionValue(value) ? value.get() : value;\n  }\n  /**\n   * Set the base target to later animate back to. This is currently\n   * only hydrated on creation and when we first read a value.\n   */\n  setBaseTarget(key, value) {\n    this.baseTarget[key] = value;\n  }\n  /**\n   * Find the base target for a value thats been removed from all animation\n   * props.\n   */\n  getBaseTarget(key) {\n    var _a;\n    const { initial } = this.props;\n    let valueFromInitial;\n    if (typeof initial === \"string\" || typeof initial === \"object\") {\n      const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) == null ? void 0 : _a.custom);\n      if (variant) {\n        valueFromInitial = variant[key];\n      }\n    }\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    if (this.events[eventName]) {\n      this.events[eventName].notify(...args);\n    }\n  }\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/each-axis.mjs\nfunction eachAxis(callback) {\n  return [callback(\"x\"), callback(\"y\")];\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: scaleX2, scaleY: scaleY2 }) {\n  return !isIdentityScale(scale2) || !isIdentityScale(scaleX2) || !isIdentityScale(scaleY2);\n}\nfunction hasTransform(values) {\n  return hasScale(values) || has2DTranslate(values) || values.z || values.rotate || values.rotateX || values.rotateY || values.skewX || values.skewY;\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}\nvar TREE_SCALE_SNAP_MIN = 0.999999999999;\nvar TREE_SCALE_SNAP_MAX = 1.0000000000001;\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\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    const { visualElement } = node.options;\n    if (visualElement && visualElement.props.style && visualElement.props.style.display === \"contents\") {\n      continue;\n    }\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  if (treeScale.x < TREE_SCALE_SNAP_MAX && treeScale.x > TREE_SCALE_SNAP_MIN) {\n    treeScale.x = 1;\n  }\n  if (treeScale.y < TREE_SCALE_SNAP_MAX && treeScale.y > TREE_SCALE_SNAP_MIN) {\n    treeScale.y = 1;\n  }\n}\nfunction translateAxis(axis, distance2) {\n  axis.min = axis.min + distance2;\n  axis.max = axis.max + distance2;\n}\nfunction transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n  const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n  applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\nfunction transformBox(box, transform2) {\n  transformAxis(box.x, transform2.x, transform2.scaleX, transform2.scale, transform2.originX);\n  transformAxis(box.y, transform2.y, transform2.scaleY, transform2.scale, transform2.originY);\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/utils/get-context-window.mjs\nvar getContextWindow = ({ current: current2 }) => {\n  return current2 ? current2.ownerDocument.defaultView : null;\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs\nvar PanSession = class {\n  constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n    this.startEvent = null;\n    this.lastMoveEvent = null;\n    this.lastMoveEventInfo = null;\n    this.handlers = {};\n    this.contextWindow = window;\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      frame.update(this.updatePoint, true);\n    };\n    this.handlePointerUp = (event2, info2) => {\n      this.end();\n      const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n      if (this.dragSnapToOrigin)\n        resumeAnimation && resumeAnimation();\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\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.dragSnapToOrigin = dragSnapToOrigin;\n    this.handlers = handlers;\n    this.transformPagePoint = transformPagePoint;\n    this.contextWindow = contextWindow || window;\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(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n  }\n  updateHandlers(handlers) {\n    this.handlers = handlers;\n  }\n  end() {\n    this.removeListeners && this.removeListeners();\n    cancelFrame(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: getVelocity(history, 0.1)\n  };\n}\nfunction startDevicePoint(history) {\n  return history[0];\n}\nfunction lastDevicePoint(history) {\n  return history[history.length - 1];\n}\nfunction getVelocity(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 time2 = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n  if (time2 === 0) {\n    return { x: 0, y: 0 };\n  }\n  const currentVelocity = {\n    x: (lastPoint.x - timestampedPoint.x) / time2,\n    y: (lastPoint.y - timestampedPoint.y) / time2\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 ? mixNumber(min, point2, elastic.min) : Math.max(point2, min);\n  } else if (max !== void 0 && point2 > max) {\n    point2 = elastic ? mixNumber(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 calcOrigin(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(layout2, constraints) {\n  const relativeConstraints = {};\n  if (constraints.min !== void 0) {\n    relativeConstraints.min = constraints.min - layout2.min;\n  }\n  if (constraints.max !== void 0) {\n    relativeConstraints.max = constraints.max - layout2.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/gestures/drag/VisualElementDragControls.mjs\nvar elementDragControls = /* @__PURE__ */ new WeakMap();\nvar VisualElementDragControls = class {\n  constructor(visualElement) {\n    this.openDragLock = 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    const { presenceContext } = this.visualElement;\n    if (presenceContext && presenceContext.isPresent === false)\n      return;\n    const onSessionStart = (event) => {\n      const { dragSnapToOrigin: dragSnapToOrigin2 } = this.getProps();\n      dragSnapToOrigin2 ? this.pauseAnimation() : this.stopAnimation();\n      if (snapToCursor) {\n        this.snapToCursor(extractEventInfo(event).point);\n      }\n    };\n    const onStart = (event, info) => {\n      const { drag: drag2, dragPropagation, onDragStart } = this.getProps();\n      if (drag2 && !dragPropagation) {\n        if (this.openDragLock)\n          this.openDragLock();\n        this.openDragLock = setDragLock(drag2);\n        if (!this.openDragLock)\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        let current2 = this.getAxisMotionValue(axis).get() || 0;\n        if (percent.test(current2)) {\n          const { projection } = this.visualElement;\n          if (projection && projection.layout) {\n            const measuredAxis = projection.layout.layoutBox[axis];\n            if (measuredAxis) {\n              const length = calcLength(measuredAxis);\n              current2 = length * (parseFloat(current2) / 100);\n            }\n          }\n        }\n        this.originPoint[axis] = current2;\n      });\n      if (onDragStart) {\n        frame.postRender(() => onDragStart(event, info));\n      }\n      addValueToWillChange(this.visualElement, \"transform\");\n      const { animationState } = this.visualElement;\n      animationState && animationState.setActive(\"whileDrag\", true);\n    };\n    const onMove = (event, info) => {\n      const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag } = this.getProps();\n      if (!dragPropagation && !this.openDragLock)\n        return;\n      const { offset } = info;\n      if (dragDirectionLock && this.currentDirection === null) {\n        this.currentDirection = getCurrentDirection(offset);\n        if (this.currentDirection !== null) {\n          onDirectionLock && 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 && onDrag(event, info);\n    };\n    const onSessionEnd = (event, info) => this.stop(event, info);\n    const resumeAnimation = () => eachAxis((axis) => {\n      var _a;\n      return this.getAnimationState(axis) === \"paused\" && ((_a = this.getAxisMotionValue(axis).animation) == null ? void 0 : _a.play());\n    });\n    const { dragSnapToOrigin } = this.getProps();\n    this.panSession = new PanSession(originEvent, {\n      onSessionStart,\n      onStart,\n      onMove,\n      onSessionEnd,\n      resumeAnimation\n    }, {\n      transformPagePoint: this.visualElement.getTransformPagePoint(),\n      dragSnapToOrigin,\n      contextWindow: getContextWindow(this.visualElement)\n    });\n  }\n  stop(event, info) {\n    const isDragging2 = this.isDragging;\n    this.cancel();\n    if (!isDragging2)\n      return;\n    const { velocity } = info;\n    this.startAnimation(velocity);\n    const { onDragEnd } = this.getProps();\n    if (onDragEnd) {\n      frame.postRender(() => onDragEnd(event, info));\n    }\n  }\n  cancel() {\n    this.isDragging = false;\n    const { projection, animationState } = this.visualElement;\n    if (projection) {\n      projection.isAnimationBlocked = false;\n    }\n    this.panSession && this.panSession.end();\n    this.panSession = void 0;\n    const { dragPropagation } = this.getProps();\n    if (!dragPropagation && this.openDragLock) {\n      this.openDragLock();\n      this.openDragLock = null;\n    }\n    animationState && animationState.setActive(\"whileDrag\", 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 next2 = this.originPoint[axis] + offset[axis];\n    if (this.constraints && this.constraints[axis]) {\n      next2 = applyConstraints(next2, this.constraints[axis], this.elastic[axis]);\n    }\n    axisValue.set(next2);\n  }\n  resolveConstraints() {\n    var _a;\n    const { dragConstraints, dragElastic } = this.getProps();\n    const layout2 = this.visualElement.projection && !this.visualElement.projection.layout ? this.visualElement.projection.measure(false) : (_a = this.visualElement.projection) == null ? void 0 : _a.layout;\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 && layout2) {\n        this.constraints = calcRelativeConstraints(layout2.layoutBox, dragConstraints);\n      } else {\n        this.constraints = false;\n      }\n    }\n    this.elastic = resolveDragElastic(dragElastic);\n    if (prevConstraints !== this.constraints && layout2 && this.constraints && !this.hasMutatedConstraints) {\n      eachAxis((axis) => {\n        if (this.constraints !== false && this.getAxisMotionValue(axis)) {\n          this.constraints[axis] = rebaseAxisConstraints(layout2.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 && 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    addValueToWillChange(this.visualElement, axis);\n    return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false));\n  }\n  stopAnimation() {\n    eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n  }\n  pauseAnimation() {\n    eachAxis((axis) => {\n      var _a;\n      return (_a = this.getAxisMotionValue(axis).animation) == null ? void 0 : _a.pause();\n    });\n  }\n  getAnimationState(axis) {\n    var _a;\n    return (_a = this.getAxisMotionValue(axis).animation) == null ? void 0 : _a.state;\n  }\n  /**\n   * Drag works differently depending on which props are provided.\n   *\n   * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n   * - Otherwise, we apply the delta to the x/y motion values.\n   */\n  getAxisMotionValue(axis) {\n    const dragKey = `_drag${axis.toUpperCase()}`;\n    const props = this.visualElement.getProps();\n    const externalMotionValue = props[dragKey];\n    return externalMotionValue ? externalMotionValue : this.visualElement.getValue(axis, (props.initial ? props.initial[axis] : void 0) || 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] - mixNumber(min, max, 0.5));\n      }\n    });\n  }\n  /**\n   * When the viewport resizes we want to check if the measured constraints\n   * have changed and, if so, reposition the element within those new constraints\n   * relative to where it was before the resize.\n   */\n  scalePositionWithinConstraints() {\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 && this.constraints !== false) {\n        const latest = axisValue.get();\n        boxProgress[axis] = calcOrigin({ 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    projection.root && projection.root.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(mixNumber(min, max, boxProgress[axis]));\n    });\n  }\n  addListeners() {\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) && dragConstraints.current) {\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      projection.root && projection.root.updateScroll();\n      projection.updateLayout();\n    }\n    frame.read(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 && 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/index.mjs\nvar DragGesture = class extends Feature {\n  constructor(node) {\n    super(node);\n    this.removeGroupControls = noop;\n    this.removeListeners = noop;\n    this.controls = new VisualElementDragControls(node);\n  }\n  mount() {\n    const { dragControls } = this.node.getProps();\n    if (dragControls) {\n      this.removeGroupControls = dragControls.subscribe(this.controls);\n    }\n    this.removeListeners = this.controls.addListeners() || noop;\n  }\n  unmount() {\n    this.removeGroupControls();\n    this.removeListeners();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/index.mjs\nvar asyncHandler = (handler) => (event, info) => {\n  if (handler) {\n    frame.postRender(() => handler(event, info));\n  }\n};\nvar PanGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.removePointerDownListener = noop;\n  }\n  onPointerDown(pointerDownEvent) {\n    this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n      transformPagePoint: this.node.getTransformPagePoint(),\n      contextWindow: getContextWindow(this.node)\n    });\n  }\n  createPanHandlers() {\n    const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n    return {\n      onSessionStart: asyncHandler(onPanSessionStart),\n      onStart: asyncHandler(onPanStart),\n      onMove: onPan,\n      onEnd: (event, info) => {\n        delete this.session;\n        if (onPanEnd) {\n          frame.postRender(() => onPanEnd(event, info));\n        }\n      }\n    };\n  }\n  mount() {\n    this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n  }\n  update() {\n    this.session && this.session.updateHandlers(this.createPanHandlers());\n  }\n  unmount() {\n    this.removePointerDownListener();\n    this.session && this.session.end();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nimport { jsx as jsx8 } from \"react/jsx-runtime\";\nimport { useContext as useContext10, Component as Component2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/state.mjs\nvar globalProjectionState = {\n  /**\n   * Global flag as to whether the tree has animated since the last time\n   * we resized the window\n   */\n  hasAnimatedSinceResize: true,\n  /**\n   * We set this to true once, on the first update. Any nodes added to the tree beyond that\n   * update will be given a `data-projection-id` attribute.\n   */\n  hasEverUpdated: false\n};\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 correctBoxShadow = {\n  correct: (latest, { treeScale, projectionDelta }) => {\n    const original = latest;\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 = mixNumber(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    return template(shadow);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nvar MeasureLayoutWithContext = class extends Component2 {\n  /**\n   * This only mounts projection nodes for components that\n   * need measuring, we might want to do it for all components\n   * in order to incorporate transforms\n   */\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;\n    if (!projection)\n      return null;\n    projection.isPresent = isPresent2;\n    if (drag2 || prevProps.layoutDependency !== layoutDependency || layoutDependency === void 0 || prevProps.isPresent !== isPresent2) {\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        frame.postRender(() => {\n          const stack = projection.getStack();\n          if (!stack || !stack.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      microtask.postRender(() => {\n        if (!projection.currentAnimation && projection.isLead()) {\n          this.safeToRemove();\n        }\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 && layoutGroup.group)\n        layoutGroup.group.remove(projection);\n      if (promoteContext && promoteContext.deregister)\n        promoteContext.deregister(projection);\n    }\n  }\n  safeToRemove() {\n    const { safeToRemove } = this.props;\n    safeToRemove && safeToRemove();\n  }\n  render() {\n    return null;\n  }\n};\nfunction MeasureLayout(props) {\n  const [isPresent2, safeToRemove] = usePresence();\n  const layoutGroup = useContext10(LayoutGroupContext);\n  return jsx8(MeasureLayoutWithContext, { ...props, layoutGroup, switchLayoutGroup: useContext10(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/animation/animate/single-value.mjs\nfunction animateSingleValue(value, keyframes2, options) {\n  const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n  motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes2, options));\n  return motionValue$1.animation;\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 asNumber2 = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nvar isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress2, shouldCrossfadeOpacity, isOnlyMember) {\n  if (shouldCrossfadeOpacity) {\n    target.opacity = mixNumber(0, lead.opacity ?? 1, easeCrossfadeIn(progress2));\n    target.opacityExit = mixNumber(follow.opacity ?? 1, 0, easeCrossfadeOut(progress2));\n  } else if (isOnlyMember) {\n    target.opacity = mixNumber(follow.opacity ?? 1, lead.opacity ?? 1, progress2);\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(mixNumber(asNumber2(followRadius), asNumber2(leadRadius), progress2), 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 = mixNumber(follow.rotate || 0, lead.rotate || 0, progress2);\n  }\n}\nfunction getRadius(values, radiusName) {\n  return values[radiusName] !== void 0 ? values[radiusName] : values.borderRadius;\n}\nvar easeCrossfadeIn = /* @__PURE__ */ compress(0, 0.5, circOut);\nvar easeCrossfadeOut = /* @__PURE__ */ 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}\nfunction copyAxisDeltaInto(delta, originDelta) {\n  delta.translate = originDelta.translate;\n  delta.scale = originDelta.scale;\n  delta.originPoint = originDelta.originPoint;\n  delta.origin = originDelta.origin;\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 = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n    translate = relativeProgress - sourceAxis.min;\n  }\n  if (typeof translate !== \"number\")\n    return;\n  let originPoint = mixNumber(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 xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n  removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : void 0, sourceBox ? sourceBox.x : void 0);\n  removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : void 0, sourceBox ? sourceBox.y : void 0);\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 axisEquals(a, b) {\n  return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n  return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n  return Math.round(a.min) === Math.round(b.min) && Math.round(a.max) === Math.round(b.max);\n}\nfunction boxEqualsRounded(a, b) {\n  return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n  return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n  return a.translate === b.translate && a.scale === b.scale && a.originPoint === b.originPoint;\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    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 (node.root && node.root.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      const { options, resumingFrom } = node;\n      options.onExitComplete && options.onExitComplete();\n      if (resumingFrom) {\n        resumingFrom.options.onExitComplete && resumingFrom.options.onExitComplete();\n      }\n    });\n  }\n  scheduleRender() {\n    this.members.forEach((node) => {\n      node.instance && node.scheduleRender(false);\n    });\n  }\n  /**\n   * Clear any leads that have been removed this render to prevent them from being\n   * used in future animations and to prevent memory leaks\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  const zTranslate = (latestTransform == null ? void 0 : latestTransform.z) || 0;\n  if (xTranslate || yTranslate || zTranslate) {\n    transform2 = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n  }\n  if (treeScale.x !== 1 || treeScale.y !== 1) {\n    transform2 += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n  }\n  if (latestTransform) {\n    const { transformPerspective, rotate: rotate2, rotateX, rotateY, skewX, skewY } = latestTransform;\n    if (transformPerspective)\n      transform2 = `perspective(${transformPerspective}px) ${transform2}`;\n    if (rotate2)\n      transform2 += `rotate(${rotate2}deg) `;\n    if (rotateX)\n      transform2 += `rotateX(${rotateX}deg) `;\n    if (rotateY)\n      transform2 += `rotateY(${rotateY}deg) `;\n    if (skewX)\n      transform2 += `skewX(${skewX}deg) `;\n    if (skewY)\n      transform2 += `skewY(${skewY}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 metrics = {\n  nodes: 0,\n  calculatedTargetDeltas: 0,\n  calculatedProjections: 0\n};\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nvar hiddenVisibility = { visibility: \"hidden\" };\nvar animationTarget = 1e3;\nvar id2 = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n  const { latestValues } = visualElement;\n  if (latestValues[key]) {\n    values[key] = latestValues[key];\n    visualElement.setStaticValue(key, 0);\n    if (sharedAnimationValues) {\n      sharedAnimationValues[key] = 0;\n    }\n  }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n  projectionNode.hasCheckedOptimisedAppear = true;\n  if (projectionNode.root === projectionNode)\n    return;\n  const { visualElement } = projectionNode.options;\n  if (!visualElement)\n    return;\n  const appearId = getOptimisedAppearId(visualElement);\n  if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n    const { layout: layout2, layoutId } = projectionNode.options;\n    window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout2 || layoutId));\n  }\n  const { parent } = projectionNode;\n  if (parent && !parent.hasCheckedOptimisedAppear) {\n    cancelTreeOptimisedTransformAnimations(parent);\n  }\n}\nfunction createProjectionNode2({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform }) {\n  return class ProjectionNode {\n    constructor(latestValues = {}, parent = defaultParent == null ? 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.isProjectionDirty = false;\n      this.isSharedProjectionDirty = false;\n      this.isTransformDirty = 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.hasCheckedOptimisedAppear = false;\n      this.treeScale = { x: 1, y: 1 };\n      this.eventHandlers = /* @__PURE__ */ new Map();\n      this.hasTreeAnimated = false;\n      this.updateScheduled = false;\n      this.scheduleUpdate = () => this.update();\n      this.projectionUpdateScheduled = false;\n      this.checkUpdateFailed = () => {\n        if (this.isUpdating) {\n          this.isUpdating = false;\n          this.clearAllSnapshots();\n        }\n      };\n      this.updateProjection = () => {\n        this.projectionUpdateScheduled = false;\n        if (statsBuffer.value) {\n          metrics.nodes = metrics.calculatedTargetDeltas = metrics.calculatedProjections = 0;\n        }\n        this.nodes.forEach(propagateDirtyNodes);\n        this.nodes.forEach(resolveTargetDelta);\n        this.nodes.forEach(calcProjection);\n        this.nodes.forEach(cleanDirtyNodes);\n        if (statsBuffer.addProjectionMetrics) {\n          statsBuffer.addProjectionMetrics(metrics);\n        }\n      };\n      this.resolvedRelativeTargetAt = 0;\n      this.hasProjected = false;\n      this.isVisible = true;\n      this.animationProgress = 0;\n      this.sharedNodes = /* @__PURE__ */ new Map();\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      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 && subscriptionManager.notify(...args);\n    }\n    hasListeners(name) {\n      return this.eventHandlers.has(name);\n    }\n    /**\n     * Lifecycles\n     */\n    mount(instance) {\n      if (this.instance)\n        return;\n      this.isSVG = isSVGElement(instance) && !isSVGSVGElement(instance);\n      this.instance = instance;\n      const { layoutId, layout: layout2, visualElement } = this.options;\n      if (visualElement && !visualElement.current) {\n        visualElement.mount(instance);\n      }\n      this.root.nodes.add(this);\n      this.parent && this.parent.children.add(this);\n      if (this.root.hasTreeAnimated && (layout2 || 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 || layout2)) {\n        this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeLayoutChanged, layout: newLayout }) => {\n          if (this.isTreeAnimationBlocked()) {\n            this.target = void 0;\n            this.relativeTarget = void 0;\n            return;\n          }\n          const layoutTransition = this.options.transition || visualElement.getDefaultTransition() || defaultLayoutTransition;\n          const { onLayoutAnimationStart, onLayoutAnimationComplete } = visualElement.getProps();\n          const hasTargetChanged = !this.targetLayout || !boxEqualsRounded(this.targetLayout, newLayout);\n          const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeLayoutChanged;\n          if (this.options.layoutRoot || this.resumeFrom || hasOnlyRelativeTargetChanged || hasLayoutChanged && (hasTargetChanged || !this.currentAnimation)) {\n            if (this.resumeFrom) {\n              this.resumingFrom = this.resumeFrom;\n              this.resumingFrom.resumingFrom = void 0;\n            }\n            const animationOptions = {\n              ...getValueTransition(layoutTransition, \"layout\"),\n              onPlay: onLayoutAnimationStart,\n              onComplete: onLayoutAnimationComplete\n            };\n            if (visualElement.shouldReduceMotion || this.options.layoutRoot) {\n              animationOptions.delay = 0;\n              animationOptions.type = false;\n            }\n            this.startAnimation(animationOptions);\n            this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n          } else {\n            if (!hasLayoutChanged) {\n              finishAnimation(this);\n            }\n            if (this.isLead() && this.options.onExitComplete) {\n              this.options.onExitComplete();\n            }\n          }\n          this.targetLayout = newLayout;\n        });\n      }\n    }\n    unmount() {\n      this.options.layoutId && this.willUpdate();\n      this.root.nodes.remove(this);\n      const stack = this.getStack();\n      stack && stack.remove(this);\n      this.parent && this.parent.children.delete(this);\n      this.instance = void 0;\n      this.eventHandlers.clear();\n      cancelFrame(this.updateProjection);\n    }\n    // only on the root\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      return this.isAnimationBlocked || this.parent && this.parent.isTreeAnimationBlocked() || false;\n    }\n    // Note: currently only running on root node\n    startUpdate() {\n      if (this.isUpdateBlocked())\n        return;\n      this.isUpdating = true;\n      this.nodes && this.nodes.forEach(resetSkewAndRotation);\n      this.animationId++;\n    }\n    getTransformTemplate() {\n      const { visualElement } = this.options;\n      return visualElement && visualElement.getProps().transformTemplate;\n    }\n    willUpdate(shouldNotifyListeners = true) {\n      this.root.hasTreeAnimated = true;\n      if (this.root.isUpdateBlocked()) {\n        this.options.onExitComplete && this.options.onExitComplete();\n        return;\n      }\n      if (window.MotionCancelOptimisedAnimation && !this.hasCheckedOptimisedAppear) {\n        cancelTreeOptimisedTransformAnimations(this);\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        if (node.options.layoutRoot) {\n          node.willUpdate(false);\n        }\n      }\n      const { layoutId, layout: layout2 } = this.options;\n      if (layoutId === void 0 && !layout2)\n        return;\n      const transformTemplate = this.getTransformTemplate();\n      this.prevTransformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      this.updateSnapshot();\n      shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n    }\n    update() {\n      this.updateScheduled = false;\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        this.nodes.forEach(clearIsLayoutDirty);\n      }\n      this.isUpdating = false;\n      this.nodes.forEach(resetTransformStyle);\n      this.nodes.forEach(updateLayout);\n      this.nodes.forEach(notifyLayoutUpdate);\n      this.clearAllSnapshots();\n      const now2 = time.now();\n      frameData.delta = clamp(0, 1e3 / 60, now2 - frameData.timestamp);\n      frameData.timestamp = now2;\n      frameData.isProcessing = true;\n      frameSteps.update.process(frameData);\n      frameSteps.preRender.process(frameData);\n      frameSteps.render.process(frameData);\n      frameData.isProcessing = false;\n    }\n    didUpdate() {\n      if (!this.updateScheduled) {\n        this.updateScheduled = true;\n        microtask.read(this.scheduleUpdate);\n      }\n    }\n    clearAllSnapshots() {\n      this.nodes.forEach(clearSnapshot);\n      this.sharedNodes.forEach(removeLeadSnapshots);\n    }\n    scheduleUpdateProjection() {\n      if (!this.projectionUpdateScheduled) {\n        this.projectionUpdateScheduled = true;\n        frame.preRender(this.updateProjection, false, true);\n      }\n    }\n    scheduleCheckAfterUnmount() {\n      frame.postRender(() => {\n        if (this.isLayoutDirty) {\n          this.root.didUpdate();\n        } else {\n          this.root.checkUpdateFailed();\n        }\n      });\n    }\n    /**\n     * Update measurements\n     */\n    updateSnapshot() {\n      if (this.snapshot || !this.instance)\n        return;\n      this.snapshot = this.measure();\n      if (this.snapshot && !calcLength(this.snapshot.measuredBox.x) && !calcLength(this.snapshot.measuredBox.y)) {\n        this.snapshot = void 0;\n      }\n    }\n    updateLayout() {\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      const { visualElement } = this.options;\n      visualElement && visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : void 0);\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 && this.instance) {\n        const isRoot = checkIsScrollRoot(this.instance);\n        this.scroll = {\n          animationId: this.root.animationId,\n          phase,\n          isRoot,\n          offset: measureScroll(this.instance),\n          wasRoot: this.scroll ? this.scroll.isRoot : isRoot\n        };\n      }\n    }\n    resetTransform() {\n      if (!resetTransform)\n        return;\n      const isResetRequested = this.isLayoutDirty || this.shouldResetTransform || this.options.alwaysMeasureLayout;\n      const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n      const transformTemplate = this.getTransformTemplate();\n      const transformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n      if (isResetRequested && this.instance && (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      var _a;\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return createBox();\n      const box = visualElement.measureViewportBox();\n      const wasInScrollRoot = ((_a = this.scroll) == null ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n      if (!wasInScrollRoot) {\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      }\n      return box;\n    }\n    removeElementScroll(box) {\n      var _a;\n      const boxWithoutScroll = createBox();\n      copyBoxInto(boxWithoutScroll, box);\n      if ((_a = this.scroll) == null ? void 0 : _a.wasRoot) {\n        return boxWithoutScroll;\n      }\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.wasRoot) {\n            copyBoxInto(boxWithoutScroll, box);\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      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, node.snapshot ? node.snapshot.layoutBox : void 0, 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.root.scheduleUpdateProjection();\n      this.isProjectionDirty = true;\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    forceRelativeParentToResolveTarget() {\n      if (!this.relativeParent)\n        return;\n      if (this.relativeParent.resolvedRelativeTargetAt !== frameData.timestamp) {\n        this.relativeParent.resolveTargetDelta(true);\n      }\n    }\n    resolveTargetDelta(forceRecalculation = false) {\n      var _a;\n      const lead = this.getLead();\n      this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n      this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n      this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      const canSkip = !(forceRecalculation || isShared && this.isSharedProjectionDirty || this.isProjectionDirty || ((_a = this.parent) == null ? void 0 : _a.isProjectionDirty) || this.attemptToResolveRelativeTarget || this.root.updateBlockedByResize);\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      this.resolvedRelativeTargetAt = frameData.timestamp;\n      if (!this.targetDelta && !this.relativeTarget) {\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && relativeParent.layout && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\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 && this.relativeParent && this.relativeParent.target) {\n        this.forceRelativeParentToResolveTarget();\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 && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\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      if (statsBuffer.value) {\n        metrics.calculatedTargetDeltas++;\n      }\n    }\n    getClosestProjectingParent() {\n      if (!this.parent || hasScale(this.parent.latestValues) || has2DTranslate(this.parent.latestValues)) {\n        return void 0;\n      }\n      if (this.parent.isProjecting()) {\n        return this.parent;\n      } else {\n        return this.parent.getClosestProjectingParent();\n      }\n    }\n    isProjecting() {\n      return Boolean((this.relativeTarget || this.targetDelta || this.options.layoutRoot) && this.layout);\n    }\n    calcProjection() {\n      var _a;\n      const lead = this.getLead();\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      let canSkip = true;\n      if (this.isProjectionDirty || ((_a = this.parent) == null ? void 0 : _a.isProjectionDirty)) {\n        canSkip = false;\n      }\n      if (isShared && (this.isSharedProjectionDirty || this.isTransformDirty)) {\n        canSkip = false;\n      }\n      if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n        canSkip = false;\n      }\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      this.isTreeAnimating = Boolean(this.parent && this.parent.isTreeAnimating || this.currentAnimation || this.pendingAnimation);\n      if (!this.isTreeAnimating) {\n        this.targetDelta = this.relativeTarget = void 0;\n      }\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n      const prevTreeScaleX = this.treeScale.x;\n      const prevTreeScaleY = this.treeScale.y;\n      applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n      if (lead.layout && !lead.target && (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n        lead.target = lead.layout.layoutBox;\n        lead.targetWithTransforms = createBox();\n      }\n      const { target } = lead;\n      if (!target) {\n        if (this.prevProjectionDelta) {\n          this.createProjectionDeltas();\n          this.scheduleRender();\n        }\n        return;\n      }\n      if (!this.projectionDelta || !this.prevProjectionDelta) {\n        this.createProjectionDeltas();\n      } else {\n        copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n        copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n      }\n      calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n      if (this.treeScale.x !== prevTreeScaleX || this.treeScale.y !== prevTreeScaleY || !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) || !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n        this.hasProjected = true;\n        this.scheduleRender();\n        this.notifyListeners(\"projectionUpdate\", target);\n      }\n      if (statsBuffer.value) {\n        metrics.calculatedProjections++;\n      }\n    }\n    hide() {\n      this.isVisible = false;\n    }\n    show() {\n      this.isVisible = true;\n    }\n    scheduleRender(notifyAll2 = true) {\n      var _a;\n      (_a = this.options.visualElement) == null ? void 0 : _a.scheduleRender();\n      if (notifyAll2) {\n        const stack = this.getStack();\n        stack && stack.scheduleRender();\n      }\n      if (this.resumingFrom && !this.resumingFrom.instance) {\n        this.resumingFrom = void 0;\n      }\n    }\n    createProjectionDeltas() {\n      this.prevProjectionDelta = createDelta();\n      this.projectionDelta = createDelta();\n      this.projectionDeltaWithTransform = createDelta();\n    }\n    setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n      const snapshot = this.snapshot;\n      const snapshotLatestValues = snapshot ? snapshot.latestValues : {};\n      const mixedValues = { ...this.latestValues };\n      const targetDelta = createDelta();\n      if (!this.relativeParent || !this.relativeParent.options.layoutRoot) {\n        this.relativeTarget = this.relativeTargetOrigin = void 0;\n      }\n      this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n      const relativeLayout = createBox();\n      const snapshotSource = snapshot ? snapshot.source : void 0;\n      const layoutSource = this.layout ? this.layout.source : void 0;\n      const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n      const stack = this.getStack();\n      const isOnlyMember = !stack || stack.members.length <= 1;\n      const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation && !isOnlyMember && this.options.crossfade === true && !this.path.some(hasOpacityCrossfade));\n      this.animationProgress = 0;\n      let prevRelativeTarget;\n      this.mixTargetDelta = (latest) => {\n        const progress2 = latest / 1e3;\n        mixAxisDelta(targetDelta.x, delta.x, progress2);\n        mixAxisDelta(targetDelta.y, delta.y, progress2);\n        this.setTargetDelta(targetDelta);\n        if (this.relativeTarget && this.relativeTargetOrigin && this.layout && this.relativeParent && this.relativeParent.layout) {\n          calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n          mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress2);\n          if (prevRelativeTarget && boxEquals(this.relativeTarget, prevRelativeTarget)) {\n            this.isProjectionDirty = false;\n          }\n          if (!prevRelativeTarget)\n            prevRelativeTarget = createBox();\n          copyBoxInto(prevRelativeTarget, this.relativeTarget);\n        }\n        if (isSharedLayoutAnimation) {\n          this.animationValues = mixedValues;\n          mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress2, shouldCrossfadeOpacity, isOnlyMember);\n        }\n        this.root.scheduleUpdateProjection();\n        this.scheduleRender();\n        this.animationProgress = progress2;\n      };\n      this.mixTargetDelta(this.options.layoutRoot ? 1e3 : 0);\n    }\n    startAnimation(options) {\n      var _a, _b, _c;\n      this.notifyListeners(\"animationStart\");\n      (_a = this.currentAnimation) == null ? void 0 : _a.stop();\n      (_c = (_b = this.resumingFrom) == null ? void 0 : _b.currentAnimation) == null ? void 0 : _c.stop();\n      if (this.pendingAnimation) {\n        cancelFrame(this.pendingAnimation);\n        this.pendingAnimation = void 0;\n      }\n      this.pendingAnimation = frame.update(() => {\n        globalProjectionState.hasAnimatedSinceResize = true;\n        activeAnimations.layout++;\n        this.motionValue || (this.motionValue = motionValue(0));\n        this.currentAnimation = animateSingleValue(this.motionValue, [0, 1e3], {\n          ...options,\n          isSync: true,\n          onUpdate: (latest) => {\n            this.mixTargetDelta(latest);\n            options.onUpdate && options.onUpdate(latest);\n          },\n          onStop: () => {\n            activeAnimations.layout--;\n          },\n          onComplete: () => {\n            activeAnimations.layout--;\n            options.onComplete && options.onComplete();\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      if (this.resumingFrom) {\n        this.resumingFrom.currentAnimation = void 0;\n        this.resumingFrom.preserveOpacity = void 0;\n      }\n      const stack = this.getStack();\n      stack && stack.exitAnimationComplete();\n      this.resumingFrom = this.currentAnimation = this.animationValues = void 0;\n      this.notifyListeners(\"animationComplete\");\n    }\n    finishAnimation() {\n      if (this.currentAnimation) {\n        this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n        this.currentAnimation.stop();\n      }\n      this.completeAnimation();\n    }\n    applyTransformsToTarget() {\n      const lead = this.getLead();\n      let { targetWithTransforms, target, layout: layout2, latestValues } = lead;\n      if (!targetWithTransforms || !target || !layout2)\n        return;\n      if (this !== lead && this.layout && layout2 && shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout2.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      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      const config = node.options.initialPromotionConfig;\n      node.promote({\n        transition: config ? config.transition : void 0,\n        preserveFollowOpacity: config && config.shouldPreserveFollowOpacity ? config.shouldPreserveFollowOpacity(node) : void 0\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 ? void 0 : _a.lead) || this : this;\n    }\n    getPrevLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? (_a = this.getStack()) == null ? 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    resetSkewAndRotation() {\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return;\n      let hasDistortingTransform = false;\n      const { latestValues } = visualElement;\n      if (latestValues.z || latestValues.rotate || latestValues.rotateX || latestValues.rotateY || latestValues.rotateZ || latestValues.skewX || latestValues.skewY) {\n        hasDistortingTransform = true;\n      }\n      if (!hasDistortingTransform)\n        return;\n      const resetValues = {};\n      if (latestValues.z) {\n        resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n      }\n      for (let i = 0; i < transformAxes.length; i++) {\n        resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n        resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n      }\n      visualElement.render();\n      for (const key in resetValues) {\n        visualElement.setStaticValue(key, resetValues[key]);\n        if (this.animationValues) {\n          this.animationValues[key] = resetValues[key];\n        }\n      }\n      visualElement.scheduleRender();\n    }\n    getProjectionStyles(styleProp) {\n      if (!this.instance || this.isSVG)\n        return void 0;\n      if (!this.isVisible) {\n        return hiddenVisibility;\n      }\n      const styles = {\n        visibility: \"\"\n      };\n      const transformTemplate = this.getTransformTemplate();\n      if (this.needsReset) {\n        this.needsReset = false;\n        styles.opacity = \"\";\n        styles.pointerEvents = resolveMotionValue(styleProp == null ? void 0 : 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 == null ? void 0 : 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 ? valuesToRender.opacity ?? this.latestValues.opacity ?? 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, isCSSVariable } = 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          if (isCSSVariable) {\n            this.options.visualElement.renderState.vars[key] = corrected;\n          } else {\n            styles[key] = corrected;\n          }\n        }\n      }\n      if (this.options.layoutId) {\n        styles.pointerEvents = lead === this ? resolveMotionValue(styleProp == null ? void 0 : styleProp.pointerEvents) || \"\" : \"none\";\n      }\n      return styles;\n    }\n    clearSnapshot() {\n      this.resumeFrom = this.snapshot = void 0;\n    }\n    // Only run on root\n    resetTree() {\n      this.root.nodes.forEach((node) => {\n        var _a;\n        return (_a = node.currentAnimation) == null ? 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;\n  const snapshot = ((_a = node.resumeFrom) == null ? void 0 : _a.snapshot) || node.snapshot;\n  if (node.isLead() && node.layout && snapshot && node.hasListeners(\"didUpdate\")) {\n    const { layoutBox: layout2, 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 = layout2[axis].min;\n        axisSnapshot.max = axisSnapshot.min + length;\n      });\n    } else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout2)) {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(layout2[axis]);\n        axisSnapshot.max = axisSnapshot.min + length;\n        if (node.relativeTarget && !node.currentAnimation) {\n          node.isProjectionDirty = true;\n          node.relativeTarget[axis].max = node.relativeTarget[axis].min + length;\n        }\n      });\n    }\n    const layoutDelta = createDelta();\n    calcBoxDelta(layoutDelta, layout2, snapshot.layoutBox);\n    const visualDelta = createDelta();\n    if (isShared) {\n      calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n    } else {\n      calcBoxDelta(visualDelta, layout2, snapshot.layoutBox);\n    }\n    const hasLayoutChanged = !isDeltaZero(layoutDelta);\n    let hasRelativeLayoutChanged = 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, layout2, parentLayout.layoutBox);\n          if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n            hasRelativeLayoutChanged = true;\n          }\n          if (relativeParent.options.layoutRoot) {\n            node.relativeTarget = relativeLayout;\n            node.relativeTargetOrigin = relativeSnapshot;\n            node.relativeParent = relativeParent;\n          }\n        }\n      }\n    }\n    node.notifyListeners(\"didUpdate\", {\n      layout: layout2,\n      snapshot,\n      delta: visualDelta,\n      layoutDelta,\n      hasLayoutChanged,\n      hasRelativeLayoutChanged\n    });\n  } else if (node.isLead()) {\n    const { onExitComplete } = node.options;\n    onExitComplete && onExitComplete();\n  }\n  node.options.transition = void 0;\n}\nfunction propagateDirtyNodes(node) {\n  if (statsBuffer.value) {\n    metrics.nodes++;\n  }\n  if (!node.parent)\n    return;\n  if (!node.isProjecting()) {\n    node.isProjectionDirty = node.parent.isProjectionDirty;\n  }\n  node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty || node.parent.isProjectionDirty || node.parent.isSharedProjectionDirty));\n  node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n  node.isProjectionDirty = node.isSharedProjectionDirty = node.isTransformDirty = false;\n}\nfunction clearSnapshot(node) {\n  node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n  node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n  node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n  const { visualElement } = node.options;\n  if (visualElement && 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  node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n  node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n  node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n  node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n  stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n  output.translate = mixNumber(delta.translate, 0, p);\n  output.scale = mixNumber(delta.scale, 1, p);\n  output.origin = delta.origin;\n  output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n  output.min = mixNumber(from.min, to.min, p);\n  output.max = mixNumber(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};\nvar userAgentContains = (string) => typeof navigator !== \"undefined\" && navigator.userAgent && navigator.userAgent.toLowerCase().includes(string);\nvar roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\") ? Math.round : noop;\nfunction roundAxis(axis) {\n  axis.min = roundPoint(axis.min);\n  axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n  roundAxis(box.x);\n  roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout2) {\n  return animationType === \"position\" || animationType === \"preserve-aspect\" && !isNear(aspectRatio(snapshot), aspectRatio(layout2), 0.2);\n}\nfunction checkNodeWasScrollRoot(node) {\n  var _a;\n  return node !== node.root && ((_a = node.scroll) == null ? void 0 : _a.wasRoot);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs\nvar DocumentProjectionNode = createProjectionNode2({\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 = createProjectionNode2({\n  measureScroll: (instance) => ({\n    x: instance.scrollLeft,\n    y: instance.scrollTop\n  }),\n  defaultParent: () => {\n    if (!rootProjectionNode.current) {\n      const documentNode = new DocumentProjectionNode({});\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/motion/features/drag.mjs\nvar drag = {\n  pan: {\n    Feature: PanGesture\n  },\n  drag: {\n    Feature: DragGesture,\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/hover.mjs\nfunction handleHoverEvent(node, event, lifecycle) {\n  const { props } = node;\n  if (node.animationState && props.whileHover) {\n    node.animationState.setActive(\"whileHover\", lifecycle === \"Start\");\n  }\n  const eventName = \"onHover\" + lifecycle;\n  const callback = props[eventName];\n  if (callback) {\n    frame.postRender(() => callback(event, extractEventInfo(event)));\n  }\n}\nvar HoverGesture = class extends Feature {\n  mount() {\n    const { current: current2 } = this.node;\n    if (!current2)\n      return;\n    this.unmount = hover(current2, (_element, startEvent) => {\n      handleHoverEvent(this.node, startEvent, \"Start\");\n      return (endEvent) => handleHoverEvent(this.node, endEvent, \"End\");\n    });\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/focus.mjs\nvar FocusGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.isActive = false;\n  }\n  onFocus() {\n    let isFocusVisible = false;\n    try {\n      isFocusVisible = this.node.current.matches(\":focus-visible\");\n    } catch (e) {\n      isFocusVisible = true;\n    }\n    if (!isFocusVisible || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", true);\n    this.isActive = true;\n  }\n  onBlur() {\n    if (!this.isActive || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", false);\n    this.isActive = false;\n  }\n  mount() {\n    this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/press.mjs\nfunction handlePressEvent(node, event, lifecycle) {\n  const { props } = node;\n  if (node.current instanceof HTMLButtonElement && node.current.disabled) {\n    return;\n  }\n  if (node.animationState && props.whileTap) {\n    node.animationState.setActive(\"whileTap\", lifecycle === \"Start\");\n  }\n  const eventName = \"onTap\" + (lifecycle === \"End\" ? \"\" : lifecycle);\n  const callback = props[eventName];\n  if (callback) {\n    frame.postRender(() => callback(event, extractEventInfo(event)));\n  }\n}\nvar PressGesture = class extends Feature {\n  mount() {\n    const { current: current2 } = this.node;\n    if (!current2)\n      return;\n    this.unmount = press(current2, (_element, startEvent) => {\n      handlePressEvent(this.node, startEvent, \"Start\");\n      return (endEvent, { success }) => handlePressEvent(this.node, endEvent, success ? \"End\" : \"Cancel\");\n    }, { useGlobalTarget: this.node.props.globalTapTarget });\n  }\n  unmount() {\n  }\n};\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/index.mjs\nvar thresholdNames = {\n  some: 0,\n  all: 1\n};\nvar InViewFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.hasEnteredView = false;\n    this.isInView = false;\n  }\n  startObserver() {\n    this.unmount();\n    const { viewport = {} } = this.node.getProps();\n    const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n    const options = {\n      root: root ? root.current : void 0,\n      rootMargin,\n      threshold: typeof amount === \"number\" ? amount : thresholdNames[amount]\n    };\n    const onIntersectionUpdate = (entry) => {\n      const { isIntersecting } = entry;\n      if (this.isInView === isIntersecting)\n        return;\n      this.isInView = isIntersecting;\n      if (once && !isIntersecting && this.hasEnteredView) {\n        return;\n      } else if (isIntersecting) {\n        this.hasEnteredView = true;\n      }\n      if (this.node.animationState) {\n        this.node.animationState.setActive(\"whileInView\", isIntersecting);\n      }\n      const { onViewportEnter, onViewportLeave } = this.node.getProps();\n      const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n      callback && callback(entry);\n    };\n    return observeIntersection(this.node.current, options, onIntersectionUpdate);\n  }\n  mount() {\n    this.startObserver();\n  }\n  update() {\n    if (typeof IntersectionObserver === \"undefined\")\n      return;\n    const { props, prevProps } = this.node;\n    const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n    if (hasOptionsChanged) {\n      this.startObserver();\n    }\n  }\n  unmount() {\n  }\n};\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n  return (name) => viewport[name] !== prevViewport[name];\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs\nvar gestureAnimations = {\n  inView: {\n    Feature: InViewFeature\n  },\n  tap: {\n    Feature: PressGesture\n  },\n  focus: {\n    Feature: FocusGesture\n  },\n  hover: {\n    Feature: HoverGesture\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout.mjs\nvar layout = {\n  layout: {\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs\nimport { Fragment as Fragment3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs\nvar DOMVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.KeyframeResolver = DOMKeyframesResolver;\n  }\n  sortInstanceNodePosition(a, b) {\n    return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props.style ? props.style[key] : void 0;\n  }\n  removeValueFromRenderState(key, { vars, style: style2 }) {\n    delete vars[key];\n    delete style2[key];\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  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs\nfunction renderHTML(element, { style: style2, vars }, styleProp, projection) {\n  Object.assign(element.style, style2, 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/html/HTMLVisualElement.mjs\nfunction getComputedStyle3(element) {\n  return window.getComputedStyle(element);\n}\nvar HTMLVisualElement = class extends DOMVisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"html\";\n    this.renderInstance = renderHTML;\n  }\n  readValueFromInstance(instance, key) {\n    var _a;\n    if (transformProps.has(key)) {\n      return ((_a = this.projection) == null ? void 0 : _a.isProjecting) ? defaultTransformValue(key) : readTransformValue(instance, key);\n    } else {\n      const computedStyle = getComputedStyle3(instance);\n      const value = (isCSSVariableName(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, props) {\n    buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n  }\n  scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    return scrapeMotionValuesFromProps(props, prevProps, visualElement);\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) ? camelToDash2(key) : key, renderState.attrs[key]);\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.type = \"svg\";\n    this.isSVGTag = false;\n    this.measureInstanceViewportBox = createBox;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props[key];\n  }\n  readValueFromInstance(instance, key) {\n    if (transformProps.has(key)) {\n      const defaultType = getDefaultValueType(key);\n      return defaultType ? defaultType.default || 0 : 0;\n    }\n    key = !camelCaseAttributes.has(key) ? camelToDash2(key) : key;\n    return instance.getAttribute(key);\n  }\n  scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n    return scrapeMotionValuesFromProps2(props, prevProps, visualElement);\n  }\n  build(renderState, latestValues, props) {\n    buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate, props.style);\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 = (Component3, options) => {\n  return isSVGComponent(Component3) ? new SVGVisualElement(options) : new HTMLVisualElement(options, {\n    allowProjection: Component3 !== Fragment3\n  });\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/components/motion/create.mjs\nvar createMotionComponent = /* @__PURE__ */ createMotionComponentFactory({\n  ...animations,\n  ...gestureAnimations,\n  ...drag,\n  ...layout\n}, createDomVisualElement);\n\n// ../../../node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs\nvar motion = /* @__PURE__ */ createDOMMotionComponentProxy(createMotionComponent);\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs\nimport { useEffect as useEffect6 } from \"react\";\nfunction useUnmountEffect(callback) {\n  return useEffect6(() => () => callback(), []);\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  ...layout\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-min.mjs\nvar domMin = {\n  renderer: createDomVisualElement,\n  ...animations\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/render/dom/resize/handle-element.mjs\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 (isSVGElement(target) && \"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 ? 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 ? void 0 : observer.observe(element);\n  });\n  return () => {\n    elements.forEach((element) => {\n      const elementHandlers = resizeHandlers.get(element);\n      elementHandlers == null ? void 0 : elementHandlers.delete(handler);\n      if (!(elementHandlers == null ? void 0 : elementHandlers.size)) {\n        observer == null ? void 0 : observer.unobserve(element);\n      }\n    });\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/handle-window.mjs\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/framer-motion/dist/es/render/dom/resize/index.mjs\nfunction resize(a, b) {\n  return typeof a === \"function\" ? resizeWindow(a) : resizeElement(a, b);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs\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, time2) {\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 = progress(0, axis.scrollLength, axis.current);\n  const elapsed = time2 - prevTime;\n  axis.velocity = elapsed > maxElapsed2 ? 0 : velocityPerSecond(axis.current - prev, elapsed);\n}\nfunction updateScrollInfo(element, info, time2) {\n  updateAxisInfo(element, \"x\", info, time2);\n  updateAxisInfo(element, \"y\", info, time2);\n  info.time = time2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs\nfunction calcInset(element, container) {\n  const inset = { x: 0, y: 0 };\n  let current2 = element;\n  while (current2 && current2 !== container) {\n    if (isHTMLElement(current2)) {\n      inset.x += current2.offsetLeft;\n      inset.y += current2.offsetTop;\n      current2 = current2.offsetParent;\n    } else if (current2.tagName === \"svg\") {\n      const svgBoundingBox = current2.getBoundingClientRect();\n      current2 = current2.parentElement;\n      const parentBoundingBox = current2.getBoundingClientRect();\n      inset.x += svgBoundingBox.left - parentBoundingBox.left;\n      inset.y += svgBoundingBox.top - parentBoundingBox.top;\n    } else if (current2 instanceof SVGGraphicsElement) {\n      const { x, y } = current2.getBBox();\n      inset.x += x;\n      inset.y += y;\n      let svg = null;\n      let parent = current2.parentNode;\n      while (!svg) {\n        if (parent.tagName === \"svg\") {\n          svg = parent;\n        }\n        parent = current2.parentNode;\n      }\n      current2 = svg;\n    } else {\n      break;\n    }\n  }\n  return inset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs\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 (edge in namedEdges) {\n    edge = namedEdges[edge];\n  }\n  if (typeof edge === \"string\") {\n    const asNumber3 = parseFloat(edge);\n    if (edge.endsWith(\"px\")) {\n      delta = asNumber3;\n    } else if (edge.endsWith(\"%\")) {\n      edge = asNumber3 / 100;\n    } else if (edge.endsWith(\"vw\")) {\n      delta = asNumber3 / 100 * document.documentElement.clientWidth;\n    } else if (edge.endsWith(\"vh\")) {\n      delta = asNumber3 / 100 * document.documentElement.clientHeight;\n    } else {\n      edge = asNumber3;\n    }\n  }\n  if (typeof edge === \"number\") {\n    delta = length * edge;\n  }\n  return inset + delta;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs\nvar defaultOffset2 = [0, 0];\nfunction resolveOffset(offset, containerLength, targetLength, targetInset) {\n  let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset2;\n  let targetPoint = 0;\n  let containerPoint = 0;\n  if (typeof offset === \"number\") {\n    offsetDefinition = [offset, offset];\n  } else if (typeof offset === \"string\") {\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/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs\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/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs\nvar point = { x: 0, y: 0 };\nfunction getTargetSize(target) {\n  return \"getBBox\" in target && target.tagName !== \"svg\" ? target.getBBox() : { width: target.clientWidth, height: target.clientHeight };\n}\nfunction resolveOffsets(container, info, options) {\n  const { 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 } : getTargetSize(target);\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 = interpolate(info[axis].offset, defaultOffset(offsetDefinition), { clamp: false });\n    info[axis].interpolatorOffsets = [...info[axis].offset];\n  }\n  info[axis].progress = clamp(0, 1, info[axis].interpolate(info[axis].current));\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs\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  if (false) {\n    if (container && target && target !== container) {\n      warnOnce(getComputedStyle(container).position !== \"static\", \"Please ensure that the container has a non-static position, like 'relative', 'fixed', or 'absolute' to ensure scroll offset is calculated correctly.\");\n    }\n  }\n}\nfunction createOnScrollHandler(element, onScroll, info, options = {}) {\n  return {\n    measure: (time2) => {\n      measure(element, options.target, info);\n      updateScrollInfo(element, info, time2);\n      if (options.offset || options.target) {\n        resolveOffsets(element, info, options);\n      }\n    },\n    notify: () => onScroll(info)\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs\nvar scrollListeners = /* @__PURE__ */ new WeakMap();\nvar resizeListeners = /* @__PURE__ */ new WeakMap();\nvar onScrollHandlers = /* @__PURE__ */ new WeakMap();\nvar getEventTarget = (element) => element === document.scrollingElement ? window : element;\nfunction scrollInfo(onScroll, { container = document.scrollingElement, ...options } = {}) {\n  if (!container)\n    return noop;\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 measureAll = () => {\n      for (const handler of containerHandlers) {\n        handler.measure(frameData.timestamp);\n      }\n      frame.preUpdate(notifyAll2);\n    };\n    const notifyAll2 = () => {\n      for (const handler of containerHandlers) {\n        handler.notify();\n      }\n    };\n    const listener2 = () => frame.read(measureAll);\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    listener2();\n  }\n  const listener = scrollListeners.get(container);\n  frame.read(listener, false, true);\n  return () => {\n    var _a;\n    cancelFrame(listener);\n    const currentHandlers = onScrollHandlers.get(container);\n    if (!currentHandlers)\n      return;\n    currentHandlers.delete(containerHandler);\n    if (currentHandlers.size)\n      return;\n    const scrollListener = scrollListeners.get(container);\n    scrollListeners.delete(container);\n    if (scrollListener) {\n      getEventTarget(container).removeEventListener(\"scroll\", scrollListener);\n      (_a = resizeListeners.get(container)) == null ? void 0 : _a();\n      window.removeEventListener(\"resize\", scrollListener);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/utils/get-timeline.mjs\nvar timelineCache = /* @__PURE__ */ new Map();\nfunction scrollTimelineFallback(options) {\n  const currentTime = { value: 0 };\n  const cancel = scrollInfo((info) => {\n    currentTime.value = info[options.axis].progress * 100;\n  }, options);\n  return { currentTime, cancel };\n}\nfunction getTimeline({ source, container, ...options }) {\n  const { axis } = options;\n  if (source)\n    container = source;\n  const containerCache = timelineCache.get(container) ?? /* @__PURE__ */ new Map();\n  timelineCache.set(container, containerCache);\n  const targetKey = options.target ?? \"self\";\n  const targetCache = containerCache.get(targetKey) ?? {};\n  const axisKey = axis + (options.offset ?? []).join(\",\");\n  if (!targetCache[axisKey]) {\n    targetCache[axisKey] = !options.target && supportsScrollTimeline() ? new ScrollTimeline({ source: container, axis }) : scrollTimelineFallback({ container, ...options });\n  }\n  return targetCache[axisKey];\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/attach-animation.mjs\nfunction attachToAnimation(animation, options) {\n  const timeline = getTimeline(options);\n  return animation.attachTimeline({\n    timeline: options.target ? void 0 : timeline,\n    observe: (valueAnimation) => {\n      valueAnimation.pause();\n      return observeTimeline((progress2) => {\n        valueAnimation.time = valueAnimation.duration * progress2;\n      }, timeline);\n    }\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/attach-function.mjs\nfunction isOnScrollWithInfo(onScroll) {\n  return onScroll.length === 2;\n}\nfunction attachToFunction(onScroll, options) {\n  if (isOnScrollWithInfo(onScroll)) {\n    return scrollInfo((info) => {\n      onScroll(info[options.axis].progress, info);\n    }, options);\n  } else {\n    return observeTimeline(onScroll, getTimeline(options));\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs\nfunction scroll(onScroll, { axis = \"y\", container = document.scrollingElement, ...options } = {}) {\n  if (!container)\n    return noop;\n  const optionsWithDefaults = { axis, container, ...options };\n  return typeof onScroll === \"function\" ? attachToFunction(onScroll, optionsWithDefaults) : attachToAnimation(onScroll, optionsWithDefaults);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-scroll.mjs\nimport { useEffect as useEffect7 } 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 : useEffect7;\n  useLifecycleEffect(() => {\n    refWarning(\"target\", target);\n    refWarning(\"container\", container);\n    return scroll((_progress, { 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 ? void 0 : container.current) || void 0,\n      target: (target == null ? void 0 : target.current) || void 0\n    });\n  }, [container, target, JSON.stringify(options.offset)]);\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/value/use-motion-value.mjs\nimport { useContext as useContext11, useState as useState4, useEffect as useEffect8 } from \"react\";\nfunction useMotionValue(initial) {\n  const value = useConstant(() => motionValue(initial));\n  const { isStatic } = useContext11(MotionConfigContext);\n  if (isStatic) {\n    const [, setLatest] = useState4(initial);\n    useEffect8(() => value.on(\"change\", setLatest), []);\n  }\n  return value;\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 = () => frame.preRender(updateValue, false, true);\n    const subscriptions = values.map((v) => v.on(\"change\", scheduleUpdate));\n    return () => {\n      subscriptions.forEach((unsubscribe) => unsubscribe());\n      cancelFrame(updateValue);\n    };\n  });\n  return value;\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-computed.mjs\nfunction useComputed(compute) {\n  collectMotionValues.current = [];\n  compute();\n  const value = useCombineMotionValues(collectMotionValues.current, compute);\n  collectMotionValues.current = void 0;\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-transform.mjs\nfunction useTransform(input, inputRangeOrTransformer, outputRange, options) {\n  if (typeof input === \"function\") {\n    return useComputed(input);\n  }\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/value/use-spring.mjs\nimport { useContext as useContext12, useInsertionEffect as useInsertionEffect4 } from \"react\";\nfunction useSpring(source, options = {}) {\n  const { isStatic } = useContext12(MotionConfigContext);\n  const getFromSource = () => isMotionValue(source) ? source.get() : source;\n  if (isStatic) {\n    return useTransform(getFromSource);\n  }\n  const value = useMotionValue(getFromSource());\n  useInsertionEffect4(() => {\n    return attachSpring(value, source, options);\n  }, [value, JSON.stringify(options)]);\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-animation-frame.mjs\nimport { useRef as useRef8, useContext as useContext13, useEffect as useEffect9 } from \"react\";\nfunction useAnimationFrame(callback) {\n  const initialTimestamp = useRef8(0);\n  const { isStatic } = useContext13(MotionConfigContext);\n  useEffect9(() => {\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    frame.update(provideTimeSinceStart, true);\n    return () => cancelFrame(provideTimeSinceStart);\n  }, [callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-time.mjs\nfunction useTime() {\n  const time2 = useMotionValue(0);\n  useAnimationFrame((t) => time2.set(t));\n  return time2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-velocity.mjs\nfunction useVelocity(value) {\n  const velocity = useMotionValue(value.getVelocity());\n  const updateVelocity = () => {\n    const latest = value.getVelocity();\n    velocity.set(latest);\n    if (latest)\n      frame.update(updateVelocity);\n  };\n  useMotionValueEvent(value, \"change\", () => {\n    frame.update(updateVelocity, false, true);\n  });\n  return velocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/WillChangeMotionValue.mjs\nvar WillChangeMotionValue = class extends MotionValue {\n  constructor() {\n    super(...arguments);\n    this.isEnabled = false;\n  }\n  add(name) {\n    if (transformProps.has(name) || acceleratedValues2.has(name)) {\n      this.isEnabled = true;\n      this.update();\n    }\n  }\n  update() {\n    this.set(this.isEnabled ? \"transform\" : \"auto\");\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/index.mjs\nfunction useWillChange() {\n  return useConstant(() => new WillChangeMotionValue(\"auto\"));\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.mjs\nimport { useState as useState5 } from \"react\";\nfunction useReducedMotion() {\n  !hasReducedMotionListener.current && initPrefersReducedMotion();\n  const [shouldReduceMotion] = useState5(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 useContext14 } from \"react\";\nfunction useReducedMotionConfig() {\n  const reducedMotionPreference = useReducedMotion();\n  const { reducedMotion } = useContext14(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 stopAnimation(visualElement) {\n  visualElement.values.forEach((value) => value.stop());\n}\nfunction setVariants(visualElement, variantLabels) {\n  const reversedLabels = [...variantLabels].reverse();\n  reversedLabels.forEach((key) => {\n    const variant = visualElement.getVariant(key);\n    variant && setTarget(visualElement, variant);\n    if (visualElement.variantChildren) {\n      visualElement.variantChildren.forEach((child) => {\n        setVariants(child, variantLabels);\n      });\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 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/utils/is-dom-keyframes.mjs\nfunction isDOMKeyframes(keyframes2) {\n  return typeof keyframes2 === \"object\" && !Array.isArray(keyframes2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs\nfunction resolveSubjects(subject, keyframes2, scope, selectorCache) {\n  if (typeof subject === \"string\" && isDOMKeyframes(keyframes2)) {\n    return resolveElements(subject, scope, selectorCache);\n  } else if (subject instanceof NodeList) {\n    return Array.from(subject);\n  } else if (Array.isArray(subject)) {\n    return subject;\n  } else {\n    return [subject];\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/calc-repeat-duration.mjs\nfunction calculateRepeatDuration(duration, repeat, _repeatDelay) {\n  return duration * (repeat + 1);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs\nfunction calcNextTime(current2, next2, prev, labels) {\n  if (typeof next2 === \"number\") {\n    return next2;\n  } else if (next2.startsWith(\"-\") || next2.startsWith(\"+\")) {\n    return Math.max(0, current2 + parseFloat(next2));\n  } else if (next2 === \"<\") {\n    return prev;\n  } else {\n    return labels.get(next2) ?? current2;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs\nfunction eraseKeyframes(sequence, startTime, endTime) {\n  for (let i = 0; i < sequence.length; i++) {\n    const keyframe = sequence[i];\n    if (keyframe.at > startTime && keyframe.at < endTime) {\n      removeItem(sequence, keyframe);\n      i--;\n    }\n  }\n}\nfunction addKeyframes(sequence, keyframes2, easing, offset, startTime, endTime) {\n  eraseKeyframes(sequence, startTime, endTime);\n  for (let i = 0; i < keyframes2.length; i++) {\n    sequence.push({\n      value: keyframes2[i],\n      at: mixNumber(startTime, endTime, offset[i]),\n      easing: getEasingForSegment(easing, i)\n    });\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/normalize-times.mjs\nfunction normalizeTimes(times, repeat) {\n  for (let i = 0; i < times.length; i++) {\n    times[i] = times[i] / (repeat + 1);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs\nfunction compareByTime(a, b) {\n  if (a.at === b.at) {\n    if (a.value === null)\n      return 1;\n    if (b.value === null)\n      return -1;\n    return 0;\n  } else {\n    return a.at - b.at;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/create.mjs\nvar defaultSegmentEasing = \"easeInOut\";\nvar MAX_REPEAT = 20;\nfunction createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope, generators) {\n  const defaultDuration = defaultTransition.duration || 0.3;\n  const animationDefinitions = /* @__PURE__ */ new Map();\n  const sequences = /* @__PURE__ */ new Map();\n  const elementCache = {};\n  const timeLabels = /* @__PURE__ */ new Map();\n  let prevTime = 0;\n  let currentTime = 0;\n  let totalDuration = 0;\n  for (let i = 0; i < sequence.length; i++) {\n    const segment = sequence[i];\n    if (typeof segment === \"string\") {\n      timeLabels.set(segment, currentTime);\n      continue;\n    } else if (!Array.isArray(segment)) {\n      timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));\n      continue;\n    }\n    let [subject, keyframes2, transition = {}] = segment;\n    if (transition.at !== void 0) {\n      currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);\n    }\n    let maxDuration = 0;\n    const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numSubjects = 0) => {\n      const valueKeyframesAsList = keyframesAsList(valueKeyframes);\n      const { delay: delay2 = 0, times = defaultOffset(valueKeyframesAsList), type = \"keyframes\", repeat, repeatType, repeatDelay = 0, ...remainingTransition } = valueTransition;\n      let { ease: ease2 = defaultTransition.ease || \"easeOut\", duration } = valueTransition;\n      const calculatedDelay = typeof delay2 === \"function\" ? delay2(elementIndex, numSubjects) : delay2;\n      const numKeyframes = valueKeyframesAsList.length;\n      const createGenerator = isGenerator(type) ? type : generators == null ? void 0 : generators[type];\n      if (numKeyframes <= 2 && createGenerator) {\n        let absoluteDelta = 100;\n        if (numKeyframes === 2 && isNumberKeyframesArray(valueKeyframesAsList)) {\n          const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];\n          absoluteDelta = Math.abs(delta);\n        }\n        const springTransition = { ...remainingTransition };\n        if (duration !== void 0) {\n          springTransition.duration = secondsToMilliseconds(duration);\n        }\n        const springEasing = createGeneratorEasing(springTransition, absoluteDelta, createGenerator);\n        ease2 = springEasing.ease;\n        duration = springEasing.duration;\n      }\n      duration ?? (duration = defaultDuration);\n      const startTime = currentTime + calculatedDelay;\n      if (times.length === 1 && times[0] === 0) {\n        times[1] = 1;\n      }\n      const remainder = times.length - valueKeyframesAsList.length;\n      remainder > 0 && fillOffset(times, remainder);\n      valueKeyframesAsList.length === 1 && valueKeyframesAsList.unshift(null);\n      if (repeat) {\n        invariant(repeat < MAX_REPEAT, \"Repeat count too high, must be less than 20\");\n        duration = calculateRepeatDuration(duration, repeat);\n        const originalKeyframes = [...valueKeyframesAsList];\n        const originalTimes = [...times];\n        ease2 = Array.isArray(ease2) ? [...ease2] : [ease2];\n        const originalEase = [...ease2];\n        for (let repeatIndex = 0; repeatIndex < repeat; repeatIndex++) {\n          valueKeyframesAsList.push(...originalKeyframes);\n          for (let keyframeIndex = 0; keyframeIndex < originalKeyframes.length; keyframeIndex++) {\n            times.push(originalTimes[keyframeIndex] + (repeatIndex + 1));\n            ease2.push(keyframeIndex === 0 ? \"linear\" : getEasingForSegment(originalEase, keyframeIndex - 1));\n          }\n        }\n        normalizeTimes(times, repeat);\n      }\n      const targetTime = startTime + duration;\n      addKeyframes(valueSequence, valueKeyframesAsList, ease2, times, startTime, targetTime);\n      maxDuration = Math.max(calculatedDelay + duration, maxDuration);\n      totalDuration = Math.max(targetTime, totalDuration);\n    };\n    if (isMotionValue(subject)) {\n      const subjectSequence = getSubjectSequence(subject, sequences);\n      resolveValueSequence(keyframes2, transition, getValueSequence(\"default\", subjectSequence));\n    } else {\n      const subjects = resolveSubjects(subject, keyframes2, scope, elementCache);\n      const numSubjects = subjects.length;\n      for (let subjectIndex = 0; subjectIndex < numSubjects; subjectIndex++) {\n        keyframes2 = keyframes2;\n        transition = transition;\n        const thisSubject = subjects[subjectIndex];\n        const subjectSequence = getSubjectSequence(thisSubject, sequences);\n        for (const key in keyframes2) {\n          resolveValueSequence(keyframes2[key], getValueTransition2(transition, key), getValueSequence(key, subjectSequence), subjectIndex, numSubjects);\n        }\n      }\n    }\n    prevTime = currentTime;\n    currentTime += maxDuration;\n  }\n  sequences.forEach((valueSequences, element) => {\n    for (const key in valueSequences) {\n      const valueSequence = valueSequences[key];\n      valueSequence.sort(compareByTime);\n      const keyframes2 = [];\n      const valueOffset = [];\n      const valueEasing = [];\n      for (let i = 0; i < valueSequence.length; i++) {\n        const { at, value, easing } = valueSequence[i];\n        keyframes2.push(value);\n        valueOffset.push(progress(0, totalDuration, at));\n        valueEasing.push(easing || \"easeOut\");\n      }\n      if (valueOffset[0] !== 0) {\n        valueOffset.unshift(0);\n        keyframes2.unshift(keyframes2[0]);\n        valueEasing.unshift(defaultSegmentEasing);\n      }\n      if (valueOffset[valueOffset.length - 1] !== 1) {\n        valueOffset.push(1);\n        keyframes2.push(null);\n      }\n      if (!animationDefinitions.has(element)) {\n        animationDefinitions.set(element, {\n          keyframes: {},\n          transition: {}\n        });\n      }\n      const definition = animationDefinitions.get(element);\n      definition.keyframes[key] = keyframes2;\n      definition.transition[key] = {\n        ...defaultTransition,\n        duration: totalDuration,\n        ease: valueEasing,\n        times: valueOffset,\n        ...sequenceTransition\n      };\n    }\n  });\n  return animationDefinitions;\n}\nfunction getSubjectSequence(subject, sequences) {\n  !sequences.has(subject) && sequences.set(subject, {});\n  return sequences.get(subject);\n}\nfunction getValueSequence(name, sequences) {\n  if (!sequences[name])\n    sequences[name] = [];\n  return sequences[name];\n}\nfunction keyframesAsList(keyframes2) {\n  return Array.isArray(keyframes2) ? keyframes2 : [keyframes2];\n}\nfunction getValueTransition2(transition, key) {\n  return transition && transition[key] ? {\n    ...transition,\n    ...transition[key]\n  } : { ...transition };\n}\nvar isNumber = (keyframe) => typeof keyframe === \"number\";\nvar isNumberKeyframesArray = (keyframes2) => keyframes2.every(isNumber);\n\n// ../../../node_modules/framer-motion/dist/es/render/object/ObjectVisualElement.mjs\nfunction isObjectKey(key, object) {\n  return key in object;\n}\nvar ObjectVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.type = \"object\";\n  }\n  readValueFromInstance(instance, key) {\n    if (isObjectKey(key, instance)) {\n      const value = instance[key];\n      if (typeof value === \"string\" || typeof value === \"number\") {\n        return value;\n      }\n    }\n    return void 0;\n  }\n  getBaseTargetFromProps() {\n    return void 0;\n  }\n  removeValueFromRenderState(key, renderState) {\n    delete renderState.output[key];\n  }\n  measureInstanceViewportBox() {\n    return createBox();\n  }\n  build(renderState, latestValues) {\n    Object.assign(renderState.output, latestValues);\n  }\n  renderInstance(instance, { output }) {\n    Object.assign(instance, output);\n  }\n  sortInstanceNodePosition() {\n    return 0;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/create-visual-element.mjs\nfunction createDOMVisualElement(element) {\n  const options = {\n    presenceContext: null,\n    props: {},\n    visualState: {\n      renderState: {\n        transform: {},\n        transformOrigin: {},\n        style: {},\n        vars: {},\n        attrs: {}\n      },\n      latestValues: {}\n    }\n  };\n  const node = isSVGElement(element) && !isSVGSVGElement(element) ? new SVGVisualElement(options) : new HTMLVisualElement(options);\n  node.mount(element);\n  visualElementStore.set(element, node);\n}\nfunction createObjectVisualElement(subject) {\n  const options = {\n    presenceContext: null,\n    props: {},\n    visualState: {\n      renderState: {\n        output: {}\n      },\n      latestValues: {}\n    }\n  };\n  const node = new ObjectVisualElement(options);\n  node.mount(subject);\n  visualElementStore.set(subject, node);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/subject.mjs\nfunction isSingleValue(subject, keyframes2) {\n  return isMotionValue(subject) || typeof subject === \"number\" || typeof subject === \"string\" && !isDOMKeyframes(keyframes2);\n}\nfunction animateSubject(subject, keyframes2, options, scope) {\n  const animations2 = [];\n  if (isSingleValue(subject, keyframes2)) {\n    animations2.push(animateSingleValue(subject, isDOMKeyframes(keyframes2) ? keyframes2.default || keyframes2 : keyframes2, options ? options.default || options : options));\n  } else {\n    const subjects = resolveSubjects(subject, keyframes2, scope);\n    const numSubjects = subjects.length;\n    invariant(Boolean(numSubjects), \"No valid elements provided.\");\n    for (let i = 0; i < numSubjects; i++) {\n      const thisSubject = subjects[i];\n      const createVisualElement = thisSubject instanceof Element ? createDOMVisualElement : createObjectVisualElement;\n      if (!visualElementStore.has(thisSubject)) {\n        createVisualElement(thisSubject);\n      }\n      const visualElement = visualElementStore.get(thisSubject);\n      const transition = { ...options };\n      if (\"delay\" in transition && typeof transition.delay === \"function\") {\n        transition.delay = transition.delay(i, numSubjects);\n      }\n      animations2.push(...animateTarget(visualElement, { ...keyframes2, transition }, {}));\n    }\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/sequence.mjs\nfunction animateSequence(sequence, options, scope) {\n  const animations2 = [];\n  const animationDefinitions = createAnimationsFromSequence(sequence, options, scope, { spring });\n  animationDefinitions.forEach(({ keyframes: keyframes2, transition }, subject) => {\n    animations2.push(...animateSubject(subject, keyframes2, transition));\n  });\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate/index.mjs\nfunction isSequence(value) {\n  return Array.isArray(value) && value.some(Array.isArray);\n}\nfunction createScopedAnimate(scope) {\n  function scopedAnimate(subjectOrSequence, optionsOrKeyframes, options) {\n    let animations2 = [];\n    if (isSequence(subjectOrSequence)) {\n      animations2 = animateSequence(subjectOrSequence, optionsOrKeyframes, scope);\n    } else {\n      animations2 = animateSubject(subjectOrSequence, optionsOrKeyframes, options, scope);\n    }\n    const animation = new GroupAnimationWithThen(animations2);\n    if (scope) {\n      scope.animations.push(animation);\n    }\n    return animation;\n  }\n  return scopedAnimate;\n}\nvar animate = createScopedAnimate();\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animate.mjs\nfunction useAnimate() {\n  const scope = useConstant(() => ({\n    current: null,\n    // Will be hydrated by React\n    animations: []\n  }));\n  const animate2 = useConstant(() => createScopedAnimate(scope));\n  useUnmountEffect(() => {\n    scope.animations.forEach((animation) => animation.stop());\n  });\n  return [scope, animate2];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs\nfunction animateElements(elementOrSelector, keyframes2, options, scope) {\n  const elements = resolveElements(elementOrSelector, scope);\n  const numElements = elements.length;\n  invariant(Boolean(numElements), \"No valid element provided.\");\n  const animationDefinitions = [];\n  for (let i = 0; i < numElements; i++) {\n    const element = elements[i];\n    const elementTransition = { ...options };\n    if (typeof elementTransition.delay === \"function\") {\n      elementTransition.delay = elementTransition.delay(i, numElements);\n    }\n    for (const valueName in keyframes2) {\n      let valueKeyframes = keyframes2[valueName];\n      if (!Array.isArray(valueKeyframes)) {\n        valueKeyframes = [valueKeyframes];\n      }\n      const valueOptions = {\n        ...getValueTransition(elementTransition, valueName)\n      };\n      valueOptions.duration && (valueOptions.duration = secondsToMilliseconds(valueOptions.duration));\n      valueOptions.delay && (valueOptions.delay = secondsToMilliseconds(valueOptions.delay));\n      const map = getAnimationMap(element);\n      const key = animationMapKey(valueName, valueOptions.pseudoElement || \"\");\n      const currentAnimation = map.get(key);\n      currentAnimation && currentAnimation.stop();\n      animationDefinitions.push({\n        map,\n        key,\n        unresolvedKeyframes: valueKeyframes,\n        options: {\n          ...valueOptions,\n          element,\n          name: valueName,\n          allowFlatten: !elementTransition.type && !elementTransition.ease\n        }\n      });\n    }\n  }\n  for (let i = 0; i < animationDefinitions.length; i++) {\n    const { unresolvedKeyframes, options: animationOptions } = animationDefinitions[i];\n    const { element, name, pseudoElement } = animationOptions;\n    if (!pseudoElement && unresolvedKeyframes[0] === null) {\n      unresolvedKeyframes[0] = getComputedStyle2(element, name);\n    }\n    fillWildcards(unresolvedKeyframes);\n    applyPxDefaults(unresolvedKeyframes, name);\n    if (!pseudoElement && unresolvedKeyframes.length < 2) {\n      unresolvedKeyframes.unshift(getComputedStyle2(element, name));\n    }\n    animationOptions.keyframes = unresolvedKeyframes;\n  }\n  const animations2 = [];\n  for (let i = 0; i < animationDefinitions.length; i++) {\n    const { map, key, options: animationOptions } = animationDefinitions[i];\n    const animation = new NativeAnimation(animationOptions);\n    map.set(key, animation);\n    animation.finished.finally(() => map.delete(key));\n    animations2.push(animation);\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs\nvar createScopedWaapiAnimate = (scope) => {\n  function scopedAnimate(elementOrSelector, keyframes2, options) {\n    return new GroupAnimationWithThen(animateElements(elementOrSelector, keyframes2, options, scope));\n  }\n  return scopedAnimate;\n};\nvar animateMini = /* @__PURE__ */ createScopedWaapiAnimate();\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animate-style.mjs\nfunction useAnimateMini() {\n  const scope = useConstant(() => ({\n    current: null,\n    // Will be hydrated by React\n    animations: []\n  }));\n  const animate2 = useConstant(() => createScopedWaapiAnimate(scope));\n  useUnmountEffect(() => {\n    scope.animations.forEach((animation) => animation.stop());\n  });\n  return [scope, animate2];\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/components/AnimatePresence/use-presence-data.mjs\nimport { useContext as useContext15 } from \"react\";\nfunction usePresenceData() {\n  const context = useContext15(PresenceContext);\n  return context ? context.custom : void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/use-dom-event.mjs\nimport { useEffect as useEffect10 } from \"react\";\nfunction useDomEvent(ref, eventName, handler, options) {\n  useEffect10(() => {\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/gestures/drag/use-drag-controls.mjs\nvar DragControls = class {\n  constructor() {\n    this.componentControls = /* @__PURE__ */ new Set();\n  }\n  /**\n   * Subscribe a component's internal `VisualElementDragControls` to the user-facing API.\n   *\n   * @internal\n   */\n  subscribe(controls) {\n    this.componentControls.add(controls);\n    return () => this.componentControls.delete(controls);\n  }\n  /**\n   * Start a drag gesture on every `motion` component that has this set of drag controls\n   * passed into it via the `dragControls` prop.\n   *\n   * ```jsx\n   * dragControls.start(e, {\n   *   snapToCursor: true\n   * })\n   * ```\n   *\n   * @param event - PointerEvent\n   * @param options - Options\n   *\n   * @public\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/projection/use-reset-projection.mjs\nimport { useCallback as useCallback4 } from \"react\";\nfunction useResetProjection() {\n  const reset = useCallback4(() => {\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/utils/use-cycle.mjs\nimport { useRef as useRef9, useState as useState6, useCallback as useCallback5 } from \"react\";\nfunction useCycle(...items) {\n  const index = useRef9(0);\n  const [item, setItem] = useState6(items[index.current]);\n  const runCycle = useCallback5(\n    (next2) => {\n      index.current = typeof next2 !== \"number\" ? wrap(0, items.length, index.current + 1) : next2;\n      setItem(items[index.current]);\n    },\n    // The array will change on each call, but by putting items.length at\n    // the front of this array, we guarantee the dependency comparison will match up\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [items.length, ...items]\n  );\n  return [item, runCycle];\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs\nvar thresholds = {\n  some: 0,\n  all: 1\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"some\" } = {}) {\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.target, entry);\n        if (typeof newOnEnd === \"function\") {\n          activeIntersections.set(entry.target, newOnEnd);\n        } else {\n          observer2.unobserve(entry.target);\n        }\n      } else if (typeof onEnd === \"function\") {\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/framer-motion/dist/es/utils/use-in-view.mjs\nimport { useState as useState7, useEffect as useEffect11 } from \"react\";\nfunction useInView(ref, { root, margin, amount, once = false, initial = false } = {}) {\n  const [isInView, setInView] = useState7(initial);\n  useEffect11(() => {\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\n    };\n    return inView(ref.current, onEnter, options);\n  }, [root, ref, margin, once, amount]);\n  return isInView;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition.mjs\nimport { useRef as useRef10, useEffect as useEffect12 } from \"react\";\nfunction useInstantTransition() {\n  const [forceUpdate, forcedRenderCount] = useForceUpdate();\n  const startInstantLayoutTransition = useInstantLayoutTransition();\n  const unlockOnFrameRef = useRef10(-1);\n  useEffect12(() => {\n    frame.postRender(() => frame.postRender(() => {\n      if (forcedRenderCount !== unlockOnFrameRef.current)\n        return;\n      MotionGlobalConfig.instantAnimations = false;\n    }));\n  }, [forcedRenderCount]);\n  return (callback) => {\n    startInstantLayoutTransition(() => {\n      MotionGlobalConfig.instantAnimations = true;\n      forceUpdate();\n      callback();\n      unlockOnFrameRef.current = forcedRenderCount + 1;\n    });\n  };\n}\nfunction disableInstantTransitions() {\n  MotionGlobalConfig.instantAnimations = false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store.mjs\nvar appearAnimationStore = /* @__PURE__ */ new Map();\nvar appearComplete = /* @__PURE__ */ new Map();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store-id.mjs\nvar appearStoreId = (elementId, valueName) => {\n  const key = transformProps.has(valueName) ? \"transform\" : valueName;\n  return `${elementId}: ${key}`;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/handoff.mjs\nfunction handoffOptimizedAppearAnimation(elementId, valueName, frame2) {\n  var _a;\n  const storeId = appearStoreId(elementId, valueName);\n  const optimisedAnimation = appearAnimationStore.get(storeId);\n  if (!optimisedAnimation) {\n    return null;\n  }\n  const { animation, startTime } = optimisedAnimation;\n  function cancelAnimation() {\n    var _a2;\n    (_a2 = window.MotionCancelOptimisedAnimation) == null ? void 0 : _a2.call(window, elementId, valueName, frame2);\n  }\n  animation.onfinish = cancelAnimation;\n  if (startTime === null || ((_a = window.MotionHandoffIsComplete) == null ? void 0 : _a.call(window, elementId))) {\n    cancelAnimation();\n    return null;\n  } else {\n    return startTime;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/start.mjs\nvar startFrameTime;\nvar readyAnimation;\nvar suspendedAnimations = /* @__PURE__ */ new Set();\nfunction resumeSuspendedAnimations() {\n  suspendedAnimations.forEach((data) => {\n    data.animation.play();\n    data.animation.startTime = data.startTime;\n  });\n  suspendedAnimations.clear();\n}\nfunction startOptimizedAppearAnimation(element, name, keyframes2, options, onReady) {\n  if (window.MotionIsMounted) {\n    return;\n  }\n  const id4 = element.dataset[optimizedAppearDataId];\n  if (!id4)\n    return;\n  window.MotionHandoffAnimation = handoffOptimizedAppearAnimation;\n  const storeId = appearStoreId(id4, name);\n  if (!readyAnimation) {\n    readyAnimation = startWaapiAnimation(\n      element,\n      name,\n      [keyframes2[0], keyframes2[0]],\n      /**\n       * 10 secs is basically just a super-safe duration to give Chrome\n       * long enough to get the animation ready.\n       */\n      { duration: 1e4, ease: \"linear\" }\n    );\n    appearAnimationStore.set(storeId, {\n      animation: readyAnimation,\n      startTime: null\n    });\n    window.MotionHandoffAnimation = handoffOptimizedAppearAnimation;\n    window.MotionHasOptimisedAnimation = (elementId, valueName) => {\n      if (!elementId)\n        return false;\n      if (!valueName) {\n        return appearComplete.has(elementId);\n      }\n      const animationId = appearStoreId(elementId, valueName);\n      return Boolean(appearAnimationStore.get(animationId));\n    };\n    window.MotionHandoffMarkAsComplete = (elementId) => {\n      if (appearComplete.has(elementId)) {\n        appearComplete.set(elementId, true);\n      }\n    };\n    window.MotionHandoffIsComplete = (elementId) => {\n      return appearComplete.get(elementId) === true;\n    };\n    window.MotionCancelOptimisedAnimation = (elementId, valueName, frame2, canResume) => {\n      const animationId = appearStoreId(elementId, valueName);\n      const data = appearAnimationStore.get(animationId);\n      if (!data)\n        return;\n      if (frame2 && canResume === void 0) {\n        frame2.postRender(() => {\n          frame2.postRender(() => {\n            data.animation.cancel();\n          });\n        });\n      } else {\n        data.animation.cancel();\n      }\n      if (frame2 && canResume) {\n        suspendedAnimations.add(data);\n        frame2.render(resumeSuspendedAnimations);\n      } else {\n        appearAnimationStore.delete(animationId);\n        if (!appearAnimationStore.size) {\n          window.MotionCancelOptimisedAnimation = void 0;\n        }\n      }\n    };\n    window.MotionCheckAppearSync = (visualElement, valueName, value) => {\n      var _a, _b;\n      const appearId = getOptimisedAppearId(visualElement);\n      if (!appearId)\n        return;\n      const valueIsOptimised = (_a = window.MotionHasOptimisedAnimation) == null ? void 0 : _a.call(window, appearId, valueName);\n      const externalAnimationValue = (_b = visualElement.props.values) == null ? void 0 : _b[valueName];\n      if (!valueIsOptimised || !externalAnimationValue)\n        return;\n      const removeSyncCheck = value.on(\"change\", (latestValue) => {\n        var _a2;\n        if (externalAnimationValue.get() !== latestValue) {\n          (_a2 = window.MotionCancelOptimisedAnimation) == null ? void 0 : _a2.call(window, appearId, valueName);\n          removeSyncCheck();\n        }\n      });\n      return removeSyncCheck;\n    };\n  }\n  const startAnimation = () => {\n    readyAnimation.cancel();\n    const appearAnimation = startWaapiAnimation(element, name, keyframes2, options);\n    if (startFrameTime === void 0) {\n      startFrameTime = performance.now();\n    }\n    appearAnimation.startTime = startFrameTime;\n    appearAnimationStore.set(storeId, {\n      animation: appearAnimation,\n      startTime: startFrameTime\n    });\n    if (onReady)\n      onReady(appearAnimation);\n  };\n  appearComplete.set(id4, false);\n  if (readyAnimation.ready) {\n    readyAnimation.ready.then(startAnimation).catch(noop);\n  } else {\n    startAnimation();\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animated-state.mjs\nimport { useState as useState8, useLayoutEffect as useLayoutEffect2 } from \"react\";\nvar createObject = () => ({});\nvar StateVisualElement = class extends VisualElement {\n  constructor() {\n    super(...arguments);\n    this.measureInstanceViewportBox = createBox;\n  }\n  build() {\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};\nvar useVisualState = makeUseVisualState({\n  scrapeMotionValuesFromProps: createObject,\n  createRenderState: createObject\n});\nfunction useAnimatedState(initialState) {\n  const [animationState, setAnimationState] = useState8(initialState);\n  const visualState = useVisualState({}, false);\n  const element = useConstant(() => {\n    return new StateVisualElement({\n      props: {\n        onUpdate: (v) => {\n          setAnimationState({ ...v });\n        }\n      },\n      visualState,\n      presenceContext: null\n    }, { initialState });\n  });\n  useLayoutEffect2(() => {\n    element.mount({});\n    return () => element.unmount();\n  }, [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/components/AnimateSharedLayout.mjs\nimport { jsx as jsx9 } from \"react/jsx-runtime\";\nimport * as React3 from \"react\";\nvar id3 = 0;\nvar AnimateSharedLayout = ({ children }) => {\n  React3.useEffect(() => {\n    invariant(false, \"AnimateSharedLayout is deprecated: https://www.framer.com/docs/guide-upgrade/##shared-layout-animations\");\n  }, []);\n  return jsx9(LayoutGroup, { id: useConstant(() => `asl-${id3++}`), children });\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-inverted-scale.mjs\nimport { useContext as useContext16 } from \"react\";\nvar maxScale = 1e5;\nvar invertScale = (scale2) => scale2 > 1e-3 ? 1 / scale2 : maxScale;\nvar hasWarned2 = false;\nfunction useInvertedScale(scale2) {\n  let parentScaleX = useMotionValue(1);\n  let parentScaleY = useMotionValue(1);\n  const { visualElement } = useContext16(MotionContext);\n  invariant(!!(scale2 || visualElement), \"If no scale values are provided, useInvertedScale must be used within a child of another motion component.\");\n  warning(hasWarned2, \"useInvertedScale is deprecated and will be removed in 3.0. Use the layout prop instead.\");\n  hasWarned2 = 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 scaleX2 = useTransform(parentScaleX, invertScale);\n  const scaleY2 = useTransform(parentScaleY, invertScale);\n  return { scaleX: scaleX2, scaleY: scaleY2 };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/namespace.mjs\nvar namespace_exports = {};\n__export(namespace_exports, {\n  Group: () => ReorderGroup,\n  Item: () => ReorderItem\n});\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nimport { jsx as jsx10 } from \"react/jsx-runtime\";\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 = mixNumber(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 ReorderGroupComponent({ children, as = \"ul\", axis = \"y\", onReorder, values, ...props }, externalRef) {\n  const Component3 = 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, layout2) => {\n      const idx = order.findIndex((entry) => value === entry.value);\n      if (idx !== -1) {\n        order[idx].layout = layout2[axis];\n      } else {\n        order.push({ value, layout: layout2[axis] });\n      }\n      order.sort(compareMin);\n    },\n    updateOrder: (item, offset, velocity) => {\n      if (isReordering.current)\n        return;\n      const newOrder = checkReorder(order, item, 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 jsx10(Component3, { ...props, ref: externalRef, ignoreStrict: true, children: jsx10(ReorderContext.Provider, { value: context, children }) });\n}\nvar ReorderGroup = /* @__PURE__ */ forwardRef2(ReorderGroupComponent);\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 { jsx as jsx11 } from \"react/jsx-runtime\";\nimport { forwardRef as forwardRef3, useContext as useContext17 } from \"react\";\nfunction useDefaultMotionValue(value, defaultValue = 0) {\n  return isMotionValue(value) ? value : useMotionValue(defaultValue);\n}\nfunction ReorderItemComponent({ children, style: style2 = {}, value, as = \"li\", onDrag, layout: layout2 = true, ...props }, externalRef) {\n  const Component3 = useConstant(() => motion[as]);\n  const context = useContext17(ReorderContext);\n  const point2 = {\n    x: useDefaultMotionValue(style2.x),\n    y: useDefaultMotionValue(style2.y)\n  };\n  const zIndex = useTransform([point2.x, point2.y], ([latestX, latestY]) => latestX || latestY ? 1 : \"unset\");\n  invariant(Boolean(context), \"Reorder.Item must be a child of Reorder.Group\");\n  const { axis, registerItem, updateOrder } = context;\n  return jsx11(Component3, { drag: axis, ...props, dragSnapToOrigin: true, style: { ...style2, x: point2.x, y: point2.y, zIndex }, layout: layout2, 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) => registerItem(value, measured), ref: externalRef, ignoreStrict: true, children });\n}\nvar ReorderItem = /* @__PURE__ */ forwardRef3(ReorderItemComponent);\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/stagger.mjs\nfunction getOriginIndex(from, total) {\n  if (from === \"first\") {\n    return 0;\n  } else {\n    const lastIndex = total - 1;\n    return from === \"last\" ? lastIndex : lastIndex / 2;\n  }\n}\nfunction stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2 } = {}) {\n  return (i, total) => {\n    const fromIndex = typeof from === \"number\" ? from : getOriginIndex(from, total);\n    const distance2 = Math.abs(fromIndex - i);\n    let delay2 = duration * distance2;\n    if (ease2) {\n      const maxDelay = total * duration;\n      const easingFunction = easingDefinitionToFunction(ease2);\n      delay2 = easingFunction(delay2 / maxDelay) * maxDelay;\n    }\n    return startDelay + delay2;\n  };\n}\n\nexport {\n  LayoutGroupContext,\n  isBrowser,\n  useIsomorphicLayoutEffect,\n  PresenceContext,\n  addUniqueItem,\n  removeItem,\n  moveItem,\n  clamp,\n  warning,\n  invariant,\n  MotionGlobalConfig,\n  isNumericalString,\n  isObject,\n  isZeroValueString,\n  memo,\n  noop,\n  pipe,\n  progress,\n  SubscriptionManager,\n  secondsToMilliseconds,\n  millisecondsToSeconds,\n  velocityPerSecond,\n  hasWarned,\n  warnOnce,\n  wrap,\n  cubicBezier,\n  mirrorEasing,\n  reverseEasing,\n  backOut,\n  backIn,\n  backInOut,\n  anticipate,\n  circIn,\n  circOut,\n  circInOut,\n  easeIn,\n  easeOut,\n  easeInOut,\n  steps,\n  isEasingArray,\n  getEasingForSegment,\n  isBezierDefinition,\n  easingDefinitionToFunction,\n  statsBuffer,\n  createRenderBatcher,\n  frame,\n  cancelFrame,\n  frameData,\n  frameSteps,\n  time,\n  activeAnimations,\n  isCSSVariableName,\n  isCSSVariableToken,\n  number,\n  alpha,\n  scale,\n  rgbUnit,\n  rgba,\n  hex,\n  degrees,\n  percent,\n  px,\n  vh,\n  vw,\n  progressPercentage,\n  hsla,\n  color,\n  analyseComplexValue,\n  complex,\n  hslaToRgba,\n  mixImmediate,\n  mixNumber,\n  mixLinearColor,\n  mixColor,\n  invisibleValues,\n  mixVisibility,\n  getMixer,\n  mixArray,\n  mixObject,\n  mixComplex,\n  mix,\n  generateLinearEasing,\n  maxGeneratorDuration,\n  calcGeneratorDuration,\n  createGeneratorEasing,\n  spring,\n  inertia,\n  interpolate,\n  fillOffset,\n  defaultOffset,\n  convertOffsetToTimes,\n  defaultEasing,\n  keyframes,\n  JSAnimation,\n  animateValue,\n  fillWildcards,\n  defaultTransformValue,\n  parseValueFromTransform,\n  readTransformValue,\n  transformPropOrder,\n  transformProps,\n  flushKeyframeResolvers,\n  KeyframeResolver,\n  setStyle,\n  supportsScrollTimeline,\n  supportsFlags,\n  supportsLinearEasing,\n  cubicBezierAsString,\n  supportedWaapiEasing,\n  mapEasingToNativeEasing,\n  startWaapiAnimation,\n  isGenerator,\n  NativeAnimation,\n  NativeAnimationExtended,\n  isHTMLElement,\n  supportsBrowserAnimation,\n  AsyncMotionValueAnimation,\n  GroupAnimation,\n  GroupAnimationWithThen,\n  NativeAnimationWrapper,\n  animationMapKey,\n  getAnimationMap,\n  parseCSSVariable,\n  getVariableValue,\n  getValueTransition,\n  positionalKeys,\n  testValueType,\n  dimensionValueTypes,\n  findDimensionValueType,\n  transformValueTypes,\n  numberValueTypes,\n  defaultValueTypes,\n  getDefaultValueType,\n  getAnimatableNone2 as getAnimatableNone,\n  DOMKeyframesResolver,\n  applyPxDefaults,\n  isWaapiSupportedEasing,\n  supportsPartialKeyframes,\n  acceleratedValues2 as acceleratedValues,\n  resolveElements,\n  getValueAsType,\n  addAttrValue,\n  attrEffect,\n  propEffect,\n  collectMotionValues,\n  MotionValue,\n  motionValue,\n  addStyleValue,\n  styleEffect,\n  svgEffect,\n  microtask,\n  cancelMicrotask,\n  isDragging,\n  isDragActive,\n  setDragLock,\n  hover,\n  isNodeOrChild,\n  isPrimaryPointer,\n  press,\n  getComputedStyle2 as getComputedStyle,\n  observeTimeline,\n  recordStats,\n  isSVGElement,\n  isSVGSVGElement,\n  transform,\n  transformValue,\n  mapValue,\n  isMotionValue,\n  springValue,\n  attachSpring,\n  findValueType,\n  ViewTransitionBuilder,\n  animateView,\n  sync,\n  cancelSync,\n  MotionConfigContext,\n  usePresence,\n  useIsPresent,\n  AnimatePresence,\n  DeprecatedLayoutGroupContext,\n  useForceUpdate,\n  LayoutGroup,\n  LazyMotion,\n  isValidMotionProp,\n  filterProps,\n  MotionConfig,\n  MotionContext,\n  optimizedAppearDataAttribute,\n  SwitchLayoutGroupContext,\n  createRendererMotionComponent,\n  addScaleCorrector,\n  buildTransform2 as buildTransform,\n  resolveMotionValue,\n  makeUseVisualState,\n  m,\n  animateVisualElement,\n  animations,\n  addPointerInfo,\n  addPointerEvent,\n  calcLength,\n  createBox,\n  distance,\n  distance2D,\n  FlatTree,\n  delay,\n  visualElementStore,\n  VisualElement,\n  motion,\n  useUnmountEffect,\n  domAnimation,\n  domMax,\n  domMin,\n  useMotionValueEvent,\n  scrollInfo,\n  scroll,\n  useScroll,\n  useElementScroll,\n  useViewportScroll,\n  useMotionValue,\n  useMotionTemplate,\n  useTransform,\n  useSpring,\n  useAnimationFrame,\n  useTime,\n  useVelocity,\n  WillChangeMotionValue,\n  useWillChange,\n  useReducedMotion,\n  useReducedMotionConfig,\n  animationControls,\n  createScopedAnimate,\n  animate,\n  useAnimate,\n  animateMini,\n  useAnimateMini,\n  useAnimationControls,\n  useAnimation,\n  usePresenceData,\n  useDomEvent,\n  DragControls,\n  useDragControls,\n  isMotionComponent,\n  unwrapMotionComponent,\n  useInstantLayoutTransition,\n  useResetProjection,\n  useCycle,\n  inView,\n  useInView,\n  useInstantTransition,\n  disableInstantTransitions,\n  startOptimizedAppearAnimation,\n  useAnimatedState,\n  AnimateSharedLayout,\n  useInvertedScale,\n  namespace_exports,\n  stagger\n};\n//# sourceMappingURL=chunk-A6RUM2JZ.mjs.map\n", "import*as a from\"react\";import*as i from\"scheduler\";var u=\"default\"in a?a.default:a;var o=\"default\"in i?i.default:i;var s={};var w=u,x=o;function p(a){for(var i=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,u=1;u<arguments.length;u++)i+=\"&args[]=\"+encodeURIComponent(arguments[u]);return\"Minified React error #\"+a+\"; visit \"+i+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var C=new Set,z={};function fa(a,i){ha(a,i);ha(a+\"Capture\",i)}function ha(a,i){z[a]=i;for(a=0;a<i.length;a++)C.add(i[a])}var N=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),_=Object.prototype.hasOwnProperty,j=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,P={},T={};function oa(a){if(_.call(T,a))return!0;if(_.call(P,a))return!1;if(j.test(a))return T[a]=!0;P[a]=!0;return!1}function pa(a,i,u,o){if(null!==u&&0===u.type)return!1;switch(typeof i){case\"function\":case\"symbol\":return!0;case\"boolean\":if(o)return!1;if(null!==u)return!u.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}function qa(a,i,u,o){if(null===i||\"undefined\"===typeof i||pa(a,i,u,o))return!0;if(o)return!1;if(null!==u)switch(u.type){case 3:return!i;case 4:return!1===i;case 5:return isNaN(i);case 6:return isNaN(i)||1>i}return!1}function v(a,i,u,o,s,w,x){this.acceptsBooleans=2===i||3===i||4===i;this.attributeName=o;this.attributeNamespace=s;this.mustUseProperty=u;this.propertyName=a;this.type=i;this.sanitizeURL=w;this.removeEmptyString=x}var M={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(a){M[a]=new v(a,0,!1,a,null,!1,!1)}));[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(a){var i=a[0];M[i]=new v(i,1,!1,a[1],null,!1,!1)}));[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(a){M[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)}));[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(a){M[a]=new v(a,2,!1,a,null,!1,!1)}));\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(a){M[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)}));[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(a){M[a]=new v(a,3,!0,a,null,!1,!1)}));[\"capture\",\"download\"].forEach((function(a){M[a]=new v(a,4,!1,a,null,!1,!1)}));[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(a){M[a]=new v(a,6,!1,a,null,!1,!1)}));[\"rowSpan\",\"start\"].forEach((function(a){M[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)}));var F=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,null,!1,!1)}));\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)}));[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(a){var i=a.replace(F,sa);M[i]=new v(i,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)}));[\"tabIndex\",\"crossOrigin\"].forEach((function(a){M[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)}));M.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(a){M[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)}));function ta(a,i,u,o){var s=M.hasOwnProperty(i)?M[i]:null;(null!==s?0!==s.type:o||!(2<i.length)||\"o\"!==i[0]&&\"O\"!==i[0]||\"n\"!==i[1]&&\"N\"!==i[1])&&(qa(i,u,s,o)&&(u=null),o||null===s?oa(i)&&(null===u?a.removeAttribute(i):a.setAttribute(i,\"\"+u)):s.mustUseProperty?a[s.propertyName]=null===u?3!==s.type&&\"\":u:(i=s.attributeName,o=s.attributeNamespace,null===u?a.removeAttribute(i):(s=s.type,u=3===s||4===s&&!0===u?\"\":\"\"+u,o?a.setAttributeNS(o,i,u):a.setAttribute(i,u))))}var R=w.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,O=Symbol.for(\"react.element\"),I=Symbol.for(\"react.portal\"),U=Symbol.for(\"react.fragment\"),V=Symbol.for(\"react.strict_mode\"),A=Symbol.for(\"react.profiler\"),B=Symbol.for(\"react.provider\"),H=Symbol.for(\"react.context\"),$=Symbol.for(\"react.forward_ref\"),K=Symbol.for(\"react.suspense\"),Y=Symbol.for(\"react.suspense_list\"),Z=Symbol.for(\"react.memo\"),X=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");var ee=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var le=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=le&&a[le]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var ae,ie=Object.assign;function Ma(a){if(void 0===ae)try{throw Error()}catch(a){var i=a.stack.trim().match(/\\n( *(at )?)/);ae=i&&i[1]||\"\"}return\"\\n\"+ae+a}var ce=!1;function Oa(a,i){if(!a||ce)return\"\";ce=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(i)if(i=function(){throw Error()},Object.defineProperty(i.prototype,\"props\",{set:function(){throw Error()}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(i,[])}catch(a){var o=a}Reflect.construct(a,[],i)}else{try{i.call()}catch(a){o=a}a.call(i.prototype)}else{try{throw Error()}catch(a){o=a}a()}}catch(i){if(i&&o&&\"string\"===typeof i.stack){for(var s=i.stack.split(\"\\n\"),w=o.stack.split(\"\\n\"),x=s.length-1,C=w.length-1;1<=x&&0<=C&&s[x]!==w[C];)C--;for(;1<=x&&0<=C;x--,C--)if(s[x]!==w[C]){if(1!==x||1!==C)do{if(x--,C--,0>C||s[x]!==w[C]){var z=\"\\n\"+s[x].replace(\" at new \",\" at \");a.displayName&&z.includes(\"<anonymous>\")&&(z=z.replace(\"<anonymous>\",a.displayName));return z}}while(1<=x&&0<=C);break}}}finally{ce=!1,Error.prepareStackTrace=u}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}function Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}function Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case U:return\"Fragment\";case I:return\"Portal\";case A:return\"Profiler\";case V:return\"StrictMode\";case K:return\"Suspense\";case Y:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case H:return(a.displayName||\"Context\")+\".Consumer\";case B:return(a._context.displayName||\"Context\")+\".Provider\";case $:var i=a.render;a=a.displayName;a||(a=i.displayName||i.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Z:return i=a.displayName||null,null!==i?i:Qa(a.type)||\"Memo\";case X:i=a._payload;a=a._init;try{return Qa(a(i))}catch(a){}}return null}function Ra(a){var i=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(i.displayName||\"Context\")+\".Consumer\";case 10:return(i._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=i.render,a=a.displayName||a.name||\"\",i.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return i;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(i);case 8:return i===V?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof i)return i.displayName||i.name||null;if(\"string\"===typeof i)return i}return null}function Sa(a){switch(typeof a){case\"boolean\":case\"number\":case\"string\":case\"undefined\":return a;case\"object\":return a;default:return\"\"}}function Ta(a){var i=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===i||\"radio\"===i)}function Ua(a){var i=Ta(a)?\"checked\":\"value\",u=Object.getOwnPropertyDescriptor(a.constructor.prototype,i),o=\"\"+a[i];if(!a.hasOwnProperty(i)&&\"undefined\"!==typeof u&&\"function\"===typeof u.get&&\"function\"===typeof u.set){var s=u.get,w=u.set;Object.defineProperty(a,i,{configurable:!0,get:function(){return s.call(this)},set:function(a){o=\"\"+a;w.call(this,a)}});Object.defineProperty(a,i,{enumerable:u.enumerable});return{getValue:function(){return o},setValue:function(a){o=\"\"+a},stopTracking:function(){a._valueTracker=null;delete a[i]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var i=a._valueTracker;if(!i)return!0;var u=i.getValue();var o=\"\";a&&(o=Ta(a)?a.checked?\"true\":\"false\":a.value);a=o;return a!==u&&(i.setValue(a),!0)}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(i){return a.body}}function Ya(a,i){var u=i.checked;return ie({},i,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=u?u:a._wrapperState.initialChecked})}function Za(a,i){var u=null==i.defaultValue?\"\":i.defaultValue,o=null!=i.checked?i.checked:i.defaultChecked;u=Sa(null!=i.value?i.value:u);a._wrapperState={initialChecked:o,initialValue:u,controlled:\"checkbox\"===i.type||\"radio\"===i.type?null!=i.checked:null!=i.value}}function ab(a,i){i=i.checked;null!=i&&ta(a,\"checked\",i,!1)}function bb(a,i){ab(a,i);var u=Sa(i.value),o=i.type;if(null!=u)\"number\"===o?(0===u&&\"\"===a.value||a.value!=u)&&(a.value=\"\"+u):a.value!==\"\"+u&&(a.value=\"\"+u);else if(\"submit\"===o||\"reset\"===o){a.removeAttribute(\"value\");return}i.hasOwnProperty(\"value\")?cb(a,i.type,u):i.hasOwnProperty(\"defaultValue\")&&cb(a,i.type,Sa(i.defaultValue));null==i.checked&&null!=i.defaultChecked&&(a.defaultChecked=!!i.defaultChecked)}function db(a,i,u){if(i.hasOwnProperty(\"value\")||i.hasOwnProperty(\"defaultValue\")){var o=i.type;if(!(\"submit\"!==o&&\"reset\"!==o||void 0!==i.value&&null!==i.value))return;i=\"\"+a._wrapperState.initialValue;u||i===a.value||(a.value=i);a.defaultValue=i}u=a.name;\"\"!==u&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==u&&(a.name=u)}function cb(a,i,u){\"number\"===i&&Xa(a.ownerDocument)===a||(null==u?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+u&&(a.defaultValue=\"\"+u))}var fe=Array.isArray;function fb(a,i,u,o){a=a.options;if(i){i={};for(var s=0;s<u.length;s++)i[\"$\"+u[s]]=!0;for(u=0;u<a.length;u++)s=i.hasOwnProperty(\"$\"+a[u].value),a[u].selected!==s&&(a[u].selected=s),s&&o&&(a[u].defaultSelected=!0)}else{u=\"\"+Sa(u);i=null;for(s=0;s<a.length;s++){if(a[s].value===u){a[s].selected=!0;o&&(a[s].defaultSelected=!0);return}null!==i||a[s].disabled||(i=a[s])}null!==i&&(i.selected=!0)}}function gb(a,i){if(null!=i.dangerouslySetInnerHTML)throw Error(p(91));return ie({},i,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,i){var u=i.value;if(null==u){u=i.children;i=i.defaultValue;if(null!=u){if(null!=i)throw Error(p(92));if(fe(u)){if(1<u.length)throw Error(p(93));u=u[0]}i=u}null==i&&(i=\"\");u=i}a._wrapperState={initialValue:Sa(u)}}function ib(a,i){var u=Sa(i.value),o=Sa(i.defaultValue);null!=u&&(u=\"\"+u,u!==a.value&&(a.value=u),null==i.defaultValue&&a.defaultValue!==u&&(a.defaultValue=u));null!=o&&(a.defaultValue=\"\"+o)}function jb(a){var i=a.textContent;i===a._wrapperState.initialValue&&\"\"!==i&&null!==i&&(a.value=i)}function kb(a){switch(a){case\"svg\":return\"http://www.w3.org/2000/svg\";case\"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function lb(a,i){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(i):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===i?\"http://www.w3.org/1999/xhtml\":a}var de,pe=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(i,u,o,s){MSApp.execUnsafeLocalFunction((function(){return a(i,u,o,s)}))}:a}((function(a,i){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=i;else{de=de||document.createElement(\"div\");de.innerHTML=\"<svg>\"+i.valueOf().toString()+\"</svg>\";for(i=de.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;i.firstChild;)a.appendChild(i.firstChild)}}));function ob(a,i){if(i){var u=a.firstChild;if(u&&u===a.lastChild&&3===u.nodeType){u.nodeValue=i;return}}a.textContent=i}var be={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(be).forEach((function(a){ye.forEach((function(i){i=i+a.charAt(0).toUpperCase()+a.substring(1);be[i]=be[a]}))}));function rb(a,i,u){return null==i||\"boolean\"===typeof i||\"\"===i?\"\":u||\"number\"!==typeof i||0===i||be.hasOwnProperty(a)&&be[a]?(\"\"+i).trim():i+\"px\"}function sb(a,i){a=a.style;for(var u in i)if(i.hasOwnProperty(u)){var o=0===u.indexOf(\"--\"),s=rb(u,i[u],o);\"float\"===u&&(u=\"cssFloat\");o?a.setProperty(u,s):a[u]=s}}var we=ie({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ub(a,i){if(i){if(we[a]&&(null!=i.children||null!=i.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=i.dangerouslySetInnerHTML){if(null!=i.children)throw Error(p(60));if(\"object\"!==typeof i.dangerouslySetInnerHTML||!(\"__html\"in i.dangerouslySetInnerHTML))throw Error(p(61))}if(null!=i.style&&\"object\"!==typeof i.style)throw Error(p(62))}}function vb(a,i){if(-1===a.indexOf(\"-\"))return\"string\"===typeof i.is;switch(a){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var Se=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var xe=null,ze=null,_e=null;function Bb(a){if(a=Cb(a)){if(\"function\"!==typeof xe)throw Error(p(280));var i=a.stateNode;i&&(i=Db(i),xe(a.stateNode,a.type,i))}}function Eb(a){ze?_e?_e.push(a):_e=[a]:ze=a}function Fb(){if(ze){var a=ze,i=_e;_e=ze=null;Bb(a);if(i)for(a=0;a<i.length;a++)Bb(i[a])}}function Gb(a,i){return a(i)}function Hb(){}var Pe=!1;function Jb(a,i,u){if(Pe)return a(i,u);Pe=!0;try{return Gb(a,i,u)}finally{(Pe=!1,null!==ze||null!==_e)&&(Hb(),Fb())}}function Kb(a,i){var u=a.stateNode;if(null===u)return null;var o=Db(u);if(null===o)return null;u=o[i];e:switch(i){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(o=!o.disabled)||(a=a.type,o=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!o;break e;default:a=!1}if(a)return null;if(u&&\"function\"!==typeof u)throw Error(p(231,i,typeof u));return u}var Te=!1;if(N)try{var Re={};Object.defineProperty(Re,\"passive\",{get:function(){Te=!0}});window.addEventListener(\"test\",Re,Re);window.removeEventListener(\"test\",Re,Re)}catch(a){Te=!1}function Nb(a,i,u,o,s,w,x,C,z){var N=Array.prototype.slice.call(arguments,3);try{i.apply(u,N)}catch(a){this.onError(a)}}var We=!1,Qe=null,He=!1,$e=null,Ye={onError:function(a){We=!0;Qe=a}};function Tb(a,i,u,o,s,w,x,C,z){We=!1;Qe=null;Nb.apply(Ye,arguments)}function Ub(a,i,u,o,s,w,x,C,z){Tb.apply(this,arguments);if(We){if(!We)throw Error(p(198));var N=Qe;We=!1;Qe=null;He||(He=!0,$e=N)}}function Vb(a){var i=a,u=a;if(a.alternate)for(;i.return;)i=i.return;else{a=i;do{i=a,0!==(4098&i.flags)&&(u=i.return),a=i.return}while(a)}return 3===i.tag?u:null}function Wb(a){if(13===a.tag){var i=a.memoizedState;null===i&&(a=a.alternate,null!==a&&(i=a.memoizedState));if(null!==i)return i.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188))}function Yb(a){var i=a.alternate;if(!i){i=Vb(a);if(null===i)throw Error(p(188));return i!==a?null:a}for(var u=a,o=i;;){var s=u.return;if(null===s)break;var w=s.alternate;if(null===w){o=s.return;if(null!==o){u=o;continue}break}if(s.child===w.child){for(w=s.child;w;){if(w===u)return Xb(s),a;if(w===o)return Xb(s),i;w=w.sibling}throw Error(p(188))}if(u.return!==o.return)u=s,o=w;else{for(var x=!1,C=s.child;C;){if(C===u){x=!0;u=s;o=w;break}if(C===o){x=!0;o=s;u=w;break}C=C.sibling}if(!x){for(C=w.child;C;){if(C===u){x=!0;u=w;o=s;break}if(C===o){x=!0;o=w;u=s;break}C=C.sibling}if(!x)throw Error(p(189))}}if(u.alternate!==o)throw Error(p(190))}if(3!==u.tag)throw Error(p(188));return u.stateNode.current===u?a:i}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var i=$b(a);if(null!==i)return i;a=a.sibling}return null}var qe=x.unstable_scheduleCallback,Xe=x.unstable_cancelCallback,en=x.unstable_shouldYield,nn=x.unstable_requestPaint,tn=x.unstable_now,rn=x.unstable_getCurrentPriorityLevel,ln=x.unstable_ImmediatePriority,an=x.unstable_UserBlockingPriority,un=x.unstable_NormalPriority,on=x.unstable_LowPriority,sn=x.unstable_IdlePriority,cn=null,fn=null;function mc(a){if(fn&&\"function\"===typeof fn.onCommitFiberRoot)try{fn.onCommitFiberRoot(cn,a,void 0,128===(128&a.current.flags))}catch(a){}}var dn=Math.clz32?Math.clz32:nc,pn=Math.log,hn=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pn(a)/hn|0)|0}var gn=64,mn=4194304;function tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&a;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&a;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return a}}function uc(a,i){var u=a.pendingLanes;if(0===u)return 0;var o=0,s=a.suspendedLanes,w=a.pingedLanes,x=268435455&u;if(0!==x){var C=x&~s;0!==C?o=tc(C):(w&=x,0!==w&&(o=tc(w)))}else x=u&~s,0!==x?o=tc(x):0!==w&&(o=tc(w));if(0===o)return 0;if(0!==i&&i!==o&&0===(i&s)&&(s=o&-o,w=i&-i,s>=w||16===s&&0!==(4194240&w)))return i;0!==(4&o)&&(o|=16&u);i=a.entangledLanes;if(0!==i)for(a=a.entanglements,i&=o;0<i;)u=31-dn(i),s=1<<u,o|=a[u],i&=~s;return o}function vc(a,i){switch(a){case 1:case 2:case 4:return i+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function wc(a,i){for(var u=a.suspendedLanes,o=a.pingedLanes,s=a.expirationTimes,w=a.pendingLanes;0<w;){var x=31-dn(w),C=1<<x,z=s[x];-1===z?0!==(C&u)&&0===(C&o)||(s[x]=vc(C,i)):z<=i&&(a.expiredLanes|=C);w&=~C}}function xc(a){a=-1073741825&a.pendingLanes;return 0!==a?a:1073741824&a?1073741824:0}function yc(){var a=gn;gn<<=1;0===(4194240&gn)&&(gn=64);return a}function zc(a){for(var i=[],u=0;31>u;u++)i.push(a);return i}function Ac(a,i,u){a.pendingLanes|=i;536870912!==i&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;i=31-dn(i);a[i]=u}function Bc(a,i){var u=a.pendingLanes&~i;a.pendingLanes=i;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=i;a.mutableReadLanes&=i;a.entangledLanes&=i;i=a.entanglements;var o=a.eventTimes;for(a=a.expirationTimes;0<u;){var s=31-dn(u),w=1<<s;i[s]=0;o[s]=-1;a[s]=-1;u&=~w}}function Cc(a,i){var u=a.entangledLanes|=i;for(a=a.entanglements;u;){var o=31-dn(u),s=1<<o;s&i|a[o]&i&&(a[o]|=i);u&=~s}}var vn=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(268435455&a)?16:536870912:4:1}var bn,yn,kn,wn,Sn,En=!1,xn=[],Cn=null,zn=null,Nn=null,Ln=new Map,_n=new Map,jn=[],Pn=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");function Sc(a,i){switch(a){case\"focusin\":case\"focusout\":Cn=null;break;case\"dragenter\":case\"dragleave\":zn=null;break;case\"mouseover\":case\"mouseout\":Nn=null;break;case\"pointerover\":case\"pointerout\":Ln.delete(i.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":_n.delete(i.pointerId)}}function Tc(a,i,u,o,s,w){if(null===a||a.nativeEvent!==w)return a={blockedOn:i,domEventName:u,eventSystemFlags:o,nativeEvent:w,targetContainers:[s]},null!==i&&(i=Cb(i),null!==i&&yn(i)),a;a.eventSystemFlags|=o;i=a.targetContainers;null!==s&&-1===i.indexOf(s)&&i.push(s);return a}function Uc(a,i,u,o,s){switch(i){case\"focusin\":return Cn=Tc(Cn,a,i,u,o,s),!0;case\"dragenter\":return zn=Tc(zn,a,i,u,o,s),!0;case\"mouseover\":return Nn=Tc(Nn,a,i,u,o,s),!0;case\"pointerover\":var w=s.pointerId;Ln.set(w,Tc(Ln.get(w)||null,a,i,u,o,s));return!0;case\"gotpointercapture\":return w=s.pointerId,_n.set(w,Tc(_n.get(w)||null,a,i,u,o,s)),!0}return!1}function Vc(a){var i=Wc(a.target);if(null!==i){var u=Vb(i);if(null!==u)if(i=u.tag,13===i){if(i=Wb(u),null!==i){a.blockedOn=i;Sn(a.priority,(function(){kn(u)}));return}}else if(3===i&&u.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===u.tag?u.stateNode.containerInfo:null;return}}a.blockedOn=null}function Xc(a){if(null!==a.blockedOn)return!1;for(var i=a.targetContainers;0<i.length;){var u=Yc(a.domEventName,a.eventSystemFlags,i[0],a.nativeEvent);if(null!==u)return i=Cb(u),null!==i&&yn(i),a.blockedOn=u,!1;u=a.nativeEvent;var o=new u.constructor(u.type,u);Se=o;u.target.dispatchEvent(o);Se=null;i.shift()}return!0}function Zc(a,i,u){Xc(a)&&u.delete(i)}function $c(){En=!1;null!==Cn&&Xc(Cn)&&(Cn=null);null!==zn&&Xc(zn)&&(zn=null);null!==Nn&&Xc(Nn)&&(Nn=null);Ln.forEach(Zc);_n.forEach(Zc)}function ad(a,i){a.blockedOn===i&&(a.blockedOn=null,En||(En=!0,x.unstable_scheduleCallback(x.unstable_NormalPriority,$c)))}function bd(a){function b(i){return ad(i,a)}if(0<xn.length){ad(xn[0],a);for(var i=1;i<xn.length;i++){var u=xn[i];u.blockedOn===a&&(u.blockedOn=null)}}null!==Cn&&ad(Cn,a);null!==zn&&ad(zn,a);null!==Nn&&ad(Nn,a);Ln.forEach(b);_n.forEach(b);for(i=0;i<jn.length;i++)u=jn[i],u.blockedOn===a&&(u.blockedOn=null);for(;0<jn.length&&(i=jn[0],null===i.blockedOn);)Vc(i),null===i.blockedOn&&jn.shift()}var Tn=R.ReactCurrentBatchConfig,Dn=!0;function ed(a,i,u,o){var s=vn,w=Tn.transition;Tn.transition=null;try{vn=1,fd(a,i,u,o)}finally{vn=s,Tn.transition=w}}function gd(a,i,u,o){var s=vn,w=Tn.transition;Tn.transition=null;try{vn=4,fd(a,i,u,o)}finally{vn=s,Tn.transition=w}}function fd(a,i,u,o){if(Dn){var s=Yc(a,i,u,o);if(null===s)hd(a,i,o,Mn,u),Sc(a,o);else if(Uc(s,a,i,u,o))o.stopPropagation();else if(Sc(a,o),4&i&&-1<Pn.indexOf(a)){for(;null!==s;){var w=Cb(s);null!==w&&bn(w);w=Yc(a,i,u,o);null===w&&hd(a,i,o,Mn,u);if(w===s)break;s=w}null!==s&&o.stopPropagation()}else hd(a,i,o,null,u)}}var Mn=null;function Yc(a,i,u,o){Mn=null;a=xb(o);a=Wc(a);if(null!==a)if(i=Vb(a),null===i)a=null;else if(u=i.tag,13===u){a=Wb(i);if(null!==a)return a;a=null}else if(3===u){if(i.stateNode.current.memoizedState.isDehydrated)return 3===i.tag?i.stateNode.containerInfo:null;a=null}else i!==a&&(a=null);Mn=a;return null}function jd(a){switch(a){case\"cancel\":case\"click\":case\"close\":case\"contextmenu\":case\"copy\":case\"cut\":case\"auxclick\":case\"dblclick\":case\"dragend\":case\"dragstart\":case\"drop\":case\"focusin\":case\"focusout\":case\"input\":case\"invalid\":case\"keydown\":case\"keypress\":case\"keyup\":case\"mousedown\":case\"mouseup\":case\"paste\":case\"pause\":case\"play\":case\"pointercancel\":case\"pointerdown\":case\"pointerup\":case\"ratechange\":case\"reset\":case\"resize\":case\"seeked\":case\"submit\":case\"touchcancel\":case\"touchend\":case\"touchstart\":case\"volumechange\":case\"change\":case\"selectionchange\":case\"textInput\":case\"compositionstart\":case\"compositionend\":case\"compositionupdate\":case\"beforeblur\":case\"afterblur\":case\"beforeinput\":case\"blur\":case\"fullscreenchange\":case\"focus\":case\"hashchange\":case\"popstate\":case\"select\":case\"selectstart\":return 1;case\"drag\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"mousemove\":case\"mouseout\":case\"mouseover\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"scroll\":case\"toggle\":case\"touchmove\":case\"wheel\":case\"mouseenter\":case\"mouseleave\":case\"pointerenter\":case\"pointerleave\":return 4;case\"message\":switch(rn()){case ln:return 1;case an:return 4;case un:case on:return 16;case sn:return 536870912;default:return 16}default:return 16}}var Fn=null,Rn=null,On=null;function nd(){if(On)return On;var a,i,u=Rn,o=u.length,s=\"value\"in Fn?Fn.value:Fn.textContent,w=s.length;for(a=0;a<o&&u[a]===s[a];a++);var x=o-a;for(i=1;i<=x&&u[o-i]===s[w-i];i++);return On=s.slice(a,1<i?1-i:void 0)}function od(a){var i=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===i&&(a=13)):a=i;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}function rd(a){function b(i,u,o,s,w){this._reactName=i;this._targetInst=o;this.type=u;this.nativeEvent=s;this.target=w;this.currentTarget=null;for(var x in a)a.hasOwnProperty(x)&&(i=a[x],this[x]=i?i(s):s[x]);this.isDefaultPrevented=(null!=s.defaultPrevented?s.defaultPrevented:!1===s.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}ie(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}var In,Un,Vn,Wn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Qn=rd(Wn),An=ie({},Wn,{view:0,detail:0}),Bn=rd(An),Hn=ie({},An,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in a)return a.movementX;a!==Vn&&(Vn&&\"mousemove\"===a.type?(In=a.screenX-Vn.screenX,Un=a.screenY-Vn.screenY):Un=In=0,Vn=a);return In},movementY:function(a){return\"movementY\"in a?a.movementY:Un}}),$n=rd(Hn),Kn=ie({},Hn,{dataTransfer:0}),Yn=rd(Kn),Zn=ie({},An,{relatedTarget:0}),Gn=rd(Zn),qn=ie({},Wn,{animationName:0,elapsedTime:0,pseudoElement:0}),Xn=rd(qn),Jn=ie({},Wn,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),et=rd(Jn),nt=ie({},Wn,{data:0}),tt=rd(nt),rt={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},lt={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},at={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var i=this.nativeEvent;return i.getModifierState?i.getModifierState(a):!!(a=at[a])&&!!i[a]}function zd(){return Pd}var it=ie({},An,{key:function(a){if(a.key){var i=rt[a.key]||a.key;if(\"Unidentified\"!==i)return i}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?lt[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),ut=rd(it),ot=ie({},Hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),st=rd(ot),ct=ie({},An,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),ft=rd(ct),dt=ie({},Wn,{propertyName:0,elapsedTime:0,pseudoElement:0}),pt=rd(dt),ht=ie({},Hn,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),gt=rd(ht),mt=[9,13,27,32],vt=N&&\"CompositionEvent\"in window,bt=null;N&&\"documentMode\"in document&&(bt=document.documentMode);var yt=N&&\"TextEvent\"in window&&!bt,kt=N&&(!vt||bt&&8<bt&&11>=bt),wt=String.fromCharCode(32),St=!1;function ge(a,i){switch(a){case\"keyup\":return-1!==mt.indexOf(i.keyCode);case\"keydown\":return 229!==i.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Et=!1;function je(a,i){switch(a){case\"compositionend\":return he(i);case\"keypress\":if(32!==i.which)return null;St=!0;return wt;case\"textInput\":return a=i.data,a===wt&&St?null:a;default:return null}}function ke(a,i){if(Et)return\"compositionend\"===a||!vt&&ge(a,i)?(a=nd(),On=Rn=Fn=null,Et=!1,a):null;switch(a){case\"paste\":return null;case\"keypress\":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1<i.char.length)return i.char;if(i.which)return String.fromCharCode(i.which)}return null;case\"compositionend\":return kt&&\"ko\"!==i.locale?null:i.data;default:return null}}var xt={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===i?!!xt[a.type]:\"textarea\"===i}function ne(a,i,u,o){Eb(o);i=oe(i,\"onChange\");0<i.length&&(u=new Qn(\"onChange\",\"change\",null,u,o),a.push({event:u,listeners:i}))}var Ct=null,zt=null;function re(a){se(a,0)}function te(a){var i=ue(a);if(Wa(i))return a}function ve(a,i){if(\"change\"===a)return i}var Nt=!1;if(N){var Lt;if(N){var _t=\"oninput\"in document;if(!_t){var jt=document.createElement(\"div\");jt.setAttribute(\"oninput\",\"return;\");_t=\"function\"===typeof jt.oninput}Lt=_t}else Lt=!1;Nt=Lt&&(!document.documentMode||9<document.documentMode)}function Ae(){Ct&&(Ct.detachEvent(\"onpropertychange\",Be),zt=Ct=null)}function Be(a){if(\"value\"===a.propertyName&&te(zt)){var i=[];ne(i,zt,a,xb(a));Jb(re,i)}}function Ce(a,i,u){\"focusin\"===a?(Ae(),Ct=i,zt=u,Ct.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(zt)}function Ee(a,i){if(\"click\"===a)return te(i)}function Fe(a,i){if(\"input\"===a||\"change\"===a)return te(i)}function Ge(a,i){return a===i&&(0!==a||1/a===1/i)||a!==a&&i!==i}var Pt=\"function\"===typeof Object.is?Object.is:Ge;function Ie(a,i){if(Pt(a,i))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof i||null===i)return!1;var u=Object.keys(a),o=Object.keys(i);if(u.length!==o.length)return!1;for(o=0;o<u.length;o++){var s=u[o];if(!_.call(i,s)||!Pt(a[s],i[s]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function Ke(a,i){var u=Je(a);a=0;for(var o;u;){if(3===u.nodeType){o=a+u.textContent.length;if(a<=i&&o>=i)return{node:u,offset:i-a};a=o}e:{for(;u;){if(u.nextSibling){u=u.nextSibling;break e}u=u.parentNode}u=void 0}u=Je(u)}}function Le(a,i){return!(!a||!i)&&(a===i||(!a||3!==a.nodeType)&&(i&&3===i.nodeType?Le(a,i.parentNode):\"contains\"in a?a.contains(i):!!a.compareDocumentPosition&&!!(16&a.compareDocumentPosition(i))))}function Me(){for(var a=window,i=Xa();i instanceof a.HTMLIFrameElement;){try{var u=\"string\"===typeof i.contentWindow.location.href}catch(a){u=!1}if(!u)break;a=i.contentWindow;i=Xa(a.document)}return i}function Ne(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return i&&(\"input\"===i&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===i||\"true\"===a.contentEditable)}function Oe(a){var i=Me(),u=a.focusedElem,o=a.selectionRange;if(i!==u&&u&&u.ownerDocument&&Le(u.ownerDocument.documentElement,u)){if(null!==o&&Ne(u))if(i=o.start,a=o.end,void 0===a&&(a=i),\"selectionStart\"in u)u.selectionStart=i,u.selectionEnd=Math.min(a,u.value.length);else if(a=(i=u.ownerDocument||document)&&i.defaultView||window,a.getSelection){a=a.getSelection();var s=u.textContent.length,w=Math.min(o.start,s);o=void 0===o.end?w:Math.min(o.end,s);!a.extend&&w>o&&(s=o,o=w,w=s);s=Ke(u,w);var x=Ke(u,o);s&&x&&(1!==a.rangeCount||a.anchorNode!==s.node||a.anchorOffset!==s.offset||a.focusNode!==x.node||a.focusOffset!==x.offset)&&(i=i.createRange(),i.setStart(s.node,s.offset),a.removeAllRanges(),w>o?(a.addRange(i),a.extend(x.node,x.offset)):(i.setEnd(x.node,x.offset),a.addRange(i)))}i=[];for(a=u;a=a.parentNode;)1===a.nodeType&&i.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof u.focus&&u.focus();for(u=0;u<i.length;u++)a=i[u],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}var Tt=N&&\"documentMode\"in document&&11>=document.documentMode,Dt=null,Mt=null,Ft=null,Rt=!1;function Ue(a,i,u){var o=u.window===u?u.document:9===u.nodeType?u:u.ownerDocument;Rt||null==Dt||Dt!==Xa(o)||(o=Dt,\"selectionStart\"in o&&Ne(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Ft&&Ie(Ft,o)||(Ft=o,o=oe(Mt,\"onSelect\"),0<o.length&&(i=new Qn(\"onSelect\",\"select\",null,i,u),a.push({event:i,listeners:o}),i.target=Dt)))}function Ve(a,i){var u={};u[a.toLowerCase()]=i.toLowerCase();u[\"Webkit\"+a]=\"webkit\"+i;u[\"Moz\"+a]=\"moz\"+i;return u}var Ot={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},It={},Ut={};N&&(Ut=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ot.animationend.animation,delete Ot.animationiteration.animation,delete Ot.animationstart.animation),\"TransitionEvent\"in window||delete Ot.transitionend.transition);function Ze(a){if(It[a])return It[a];if(!Ot[a])return a;var i,u=Ot[a];for(i in u)if(u.hasOwnProperty(i)&&i in Ut)return It[a]=u[i];return a}var Vt=Ze(\"animationend\"),Wt=Ze(\"animationiteration\"),Qt=Ze(\"animationstart\"),At=Ze(\"transitionend\"),Bt=new Map,Ht=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function ff(a,i){Bt.set(a,i);fa(i,[a])}for(var $t=0;$t<Ht.length;$t++){var Kt=Ht[$t],Yt=Kt.toLowerCase(),Zt=Kt[0].toUpperCase()+Kt.slice(1);ff(Yt,\"on\"+Zt)}ff(Vt,\"onAnimationEnd\");ff(Wt,\"onAnimationIteration\");ff(Qt,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(At,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Gt=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),qt=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Gt));function nf(a,i,u){var o=a.type||\"unknown-event\";a.currentTarget=u;Ub(o,i,void 0,a);a.currentTarget=null}function se(a,i){i=0!==(4&i);for(var u=0;u<a.length;u++){var o=a[u],s=o.event;o=o.listeners;e:{var w=void 0;if(i)for(var x=o.length-1;0<=x;x--){var C=o[x],z=C.instance,N=C.currentTarget;C=C.listener;if(z!==w&&s.isPropagationStopped())break e;nf(s,C,N);w=z}else for(x=0;x<o.length;x++){C=o[x];z=C.instance;N=C.currentTarget;C=C.listener;if(z!==w&&s.isPropagationStopped())break e;nf(s,C,N);w=z}}}if(He)throw a=$e,He=!1,$e=null,a}function D(a,i){var u=i[fr];void 0===u&&(u=i[fr]=new Set);var o=a+\"__bubble\";u.has(o)||(pf(i,a,2,!1),u.add(o))}function qf(a,i,u){var o=0;i&&(o|=4);pf(u,a,o,i)}var Xt=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[Xt]){a[Xt]=!0;C.forEach((function(i){\"selectionchange\"!==i&&(qt.has(i)||qf(i,!1,a),qf(i,!0,a))}));var i=9===a.nodeType?a:a.ownerDocument;null===i||i[Xt]||(i[Xt]=!0,qf(\"selectionchange\",!1,i))}}function pf(a,i,u,o){switch(jd(i)){case 1:var s=ed;break;case 4:s=gd;break;default:s=fd}u=s.bind(null,i,u,a);s=void 0;!Te||\"touchstart\"!==i&&\"touchmove\"!==i&&\"wheel\"!==i||(s=!0);o?void 0!==s?a.addEventListener(i,u,{capture:!0,passive:s}):a.addEventListener(i,u,!0):void 0!==s?a.addEventListener(i,u,{passive:s}):a.addEventListener(i,u,!1)}function hd(a,i,u,o,s){var w=o;if(0===(1&i)&&0===(2&i)&&null!==o)e:for(;;){if(null===o)return;var x=o.tag;if(3===x||4===x){var C=o.stateNode.containerInfo;if(C===s||8===C.nodeType&&C.parentNode===s)break;if(4===x)for(x=o.return;null!==x;){var z=x.tag;if((3===z||4===z)&&(z=x.stateNode.containerInfo,z===s||8===z.nodeType&&z.parentNode===s))return;x=x.return}for(;null!==C;){x=Wc(C);if(null===x)return;z=x.tag;if(5===z||6===z){o=w=x;continue e}C=C.parentNode}}o=o.return}Jb((function(){var o=w,s=xb(u),x=[];e:{var C=Bt.get(a);if(void 0!==C){var z=Qn,N=a;switch(a){case\"keypress\":if(0===od(u))break e;case\"keydown\":case\"keyup\":z=ut;break;case\"focusin\":N=\"focus\";z=Gn;break;case\"focusout\":N=\"blur\";z=Gn;break;case\"beforeblur\":case\"afterblur\":z=Gn;break;case\"click\":if(2===u.button)break e;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":z=$n;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":z=Yn;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":z=ft;break;case Vt:case Wt:case Qt:z=Xn;break;case At:z=pt;break;case\"scroll\":z=Bn;break;case\"wheel\":z=gt;break;case\"copy\":case\"cut\":case\"paste\":z=et;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":z=st}var _=0!==(4&i),j=!_&&\"scroll\"===a,P=_?null!==C?C+\"Capture\":null:C;_=[];for(var T,M=o;null!==M;){T=M;var F=T.stateNode;5===T.tag&&null!==F&&(T=F,null!==P&&(F=Kb(M,P),null!=F&&_.push(tf(M,F,T))));if(j)break;M=M.return}0<_.length&&(C=new z(C,N,null,u,s),x.push({event:C,listeners:_}))}}if(0===(7&i)){C=\"mouseover\"===a||\"pointerover\"===a;z=\"mouseout\"===a||\"pointerout\"===a;if((!C||u===Se||!(N=u.relatedTarget||u.fromElement)||!Wc(N)&&!N[cr])&&(z||C)){C=s.window===s?s:(C=s.ownerDocument)?C.defaultView||C.parentWindow:window;z?(N=u.relatedTarget||u.toElement,z=o,N=N?Wc(N):null,null!==N&&(j=Vb(N),N!==j||5!==N.tag&&6!==N.tag))&&(N=null):(z=null,N=o);if(z!==N){_=$n;F=\"onMouseLeave\";P=\"onMouseEnter\";M=\"mouse\";\"pointerout\"!==a&&\"pointerover\"!==a||(_=st,F=\"onPointerLeave\",P=\"onPointerEnter\",M=\"pointer\");j=null==z?C:ue(z);T=null==N?C:ue(N);C=new _(F,M+\"leave\",z,u,s);C.target=j;C.relatedTarget=T;F=null;Wc(s)===o&&(_=new _(P,M+\"enter\",N,u,s),_.target=T,_.relatedTarget=j,F=_);j=F;if(z&&N)e:{_=z;P=N;M=0;for(T=_;T;T=vf(T))M++;T=0;for(F=P;F;F=vf(F))T++;for(;0<M-T;)_=vf(_),M--;for(;0<T-M;)P=vf(P),T--;for(;M--;){if(_===P||null!==P&&_===P.alternate)break e;_=vf(_);P=vf(P)}_=null}else _=null;null!==z&&wf(x,C,z,_,!1);null!==N&&null!==j&&wf(x,j,N,_,!0)}}C=o?ue(o):window;z=C.nodeName&&C.nodeName.toLowerCase();if(\"select\"===z||\"input\"===z&&\"file\"===C.type)var R=ve;else if(me(C))if(Nt)R=Fe;else{R=De;var O=Ce}else(z=C.nodeName)&&\"input\"===z.toLowerCase()&&(\"checkbox\"===C.type||\"radio\"===C.type)&&(R=Ee);if(R&&(R=R(a,o)))ne(x,R,u,s);else{O&&O(a,C,o);\"focusout\"===a&&(O=C._wrapperState)&&O.controlled&&\"number\"===C.type&&cb(C,\"number\",C.value)}O=o?ue(o):window;switch(a){case\"focusin\":(me(O)||\"true\"===O.contentEditable)&&(Dt=O,Mt=o,Ft=null);break;case\"focusout\":Ft=Mt=Dt=null;break;case\"mousedown\":Rt=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":Rt=!1;Ue(x,u,s);break;case\"selectionchange\":if(Tt)break;case\"keydown\":case\"keyup\":Ue(x,u,s)}var I;if(vt)e:{switch(a){case\"compositionstart\":var U=\"onCompositionStart\";break e;case\"compositionend\":U=\"onCompositionEnd\";break e;case\"compositionupdate\":U=\"onCompositionUpdate\";break e}U=void 0}else Et?ge(a,u)&&(U=\"onCompositionEnd\"):\"keydown\"===a&&229===u.keyCode&&(U=\"onCompositionStart\");U&&(kt&&\"ko\"!==u.locale&&(Et||\"onCompositionStart\"!==U?\"onCompositionEnd\"===U&&Et&&(I=nd()):(Fn=s,Rn=\"value\"in Fn?Fn.value:Fn.textContent,Et=!0)),O=oe(o,U),0<O.length&&(U=new tt(U,a,null,u,s),x.push({event:U,listeners:O}),I?U.data=I:(I=he(u),null!==I&&(U.data=I))));(I=yt?je(a,u):ke(a,u))&&(o=oe(o,\"onBeforeInput\"),0<o.length&&(s=new tt(\"onBeforeInput\",\"beforeinput\",null,u,s),x.push({event:s,listeners:o}),s.data=I))}se(x,i)}))}function tf(a,i,u){return{instance:a,listener:i,currentTarget:u}}function oe(a,i){for(var u=i+\"Capture\",o=[];null!==a;){var s=a,w=s.stateNode;5===s.tag&&null!==w&&(s=w,w=Kb(a,u),null!=w&&o.unshift(tf(a,w,s)),w=Kb(a,i),null!=w&&o.push(tf(a,w,s)));a=a.return}return o}function vf(a){if(null===a)return null;do{a=a.return}while(a&&5!==a.tag);return a||null}function wf(a,i,u,o,s){for(var w=i._reactName,x=[];null!==u&&u!==o;){var C=u,z=C.alternate,N=C.stateNode;if(null!==z&&z===o)break;5===C.tag&&null!==N&&(C=N,s?(z=Kb(u,w),null!=z&&x.unshift(tf(u,z,C))):s||(z=Kb(u,w),null!=z&&x.push(tf(u,z,C))));u=u.return}0!==x.length&&a.push({event:i,listeners:x})}var Jt=/\\r\\n?/g,er=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(Jt,\"\\n\").replace(er,\"\")}function Af(a,i,u){i=zf(i);if(zf(a)!==i&&u)throw Error(p(425))}function Bf(){}var nr=null,tr=null;function Ef(a,i){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof i.children||\"number\"===typeof i.children||\"object\"===typeof i.dangerouslySetInnerHTML&&null!==i.dangerouslySetInnerHTML&&null!=i.dangerouslySetInnerHTML.__html}var rr=\"function\"===typeof setTimeout?setTimeout:void 0,lr=\"function\"===typeof clearTimeout?clearTimeout:void 0,ar=\"function\"===typeof Promise?Promise:void 0,ir=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof ar?function(a){return ar.resolve(null).then(a).catch(If)}:rr;function If(a){setTimeout((function(){throw a}))}function Kf(a,i){var u=i,o=0;do{var s=u.nextSibling;a.removeChild(u);if(s&&8===s.nodeType)if(u=s.data,\"/$\"===u){if(0===o){a.removeChild(s);bd(i);return}o--}else\"$\"!==u&&\"$?\"!==u&&\"$!\"!==u||o++;u=s}while(u);bd(i)}function Lf(a){for(;null!=a;a=a.nextSibling){var i=a.nodeType;if(1===i||3===i)break;if(8===i){i=a.data;if(\"$\"===i||\"$!\"===i||\"$?\"===i)break;if(\"/$\"===i)return null}}return a}function Mf(a){a=a.previousSibling;for(var i=0;a;){if(8===a.nodeType){var u=a.data;if(\"$\"===u||\"$!\"===u||\"$?\"===u){if(0===i)return a;i--}else\"/$\"===u&&i++}a=a.previousSibling}return null}var ur=Math.random().toString(36).slice(2),or=\"__reactFiber$\"+ur,sr=\"__reactProps$\"+ur,cr=\"__reactContainer$\"+ur,fr=\"__reactEvents$\"+ur,dr=\"__reactListeners$\"+ur,pr=\"__reactHandles$\"+ur;function Wc(a){var i=a[or];if(i)return i;for(var u=a.parentNode;u;){if(i=u[cr]||u[or]){u=i.alternate;if(null!==i.child||null!==u&&null!==u.child)for(a=Mf(a);null!==a;){if(u=a[or])return u;a=Mf(a)}return i}a=u;u=a.parentNode}return null}function Cb(a){a=a[or]||a[cr];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33))}function Db(a){return a[sr]||null}var hr=[],gr=-1;function Uf(a){return{current:a}}function E(a){0>gr||(a.current=hr[gr],hr[gr]=null,gr--)}function G(a,i){gr++;hr[gr]=a.current;a.current=i}var mr={},vr=Uf(mr),br=Uf(!1),yr=mr;function Yf(a,i){var u=a.type.contextTypes;if(!u)return mr;var o=a.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===i)return o.__reactInternalMemoizedMaskedChildContext;var s,w={};for(s in u)w[s]=i[s];o&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=i,a.__reactInternalMemoizedMaskedChildContext=w);return w}function Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(br);E(vr)}function ag(a,i,u){if(vr.current!==mr)throw Error(p(168));G(vr,i);G(br,u)}function bg(a,i,u){var o=a.stateNode;i=i.childContextTypes;if(\"function\"!==typeof o.getChildContext)return u;o=o.getChildContext();for(var s in o)if(!(s in i))throw Error(p(108,Ra(a)||\"Unknown\",s));return ie({},u,o)}function cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||mr;yr=vr.current;G(vr,a);G(br,br.current);return!0}function dg(a,i,u){var o=a.stateNode;if(!o)throw Error(p(169));u?(a=bg(a,i,yr),o.__reactInternalMemoizedMergedChildContext=a,E(br),E(vr),G(vr,a)):E(br);G(br,u)}var kr=null,wr=!1,Sr=!1;function hg(a){null===kr?kr=[a]:kr.push(a)}function ig(a){wr=!0;hg(a)}function jg(){if(!Sr&&null!==kr){Sr=!0;var a=0,i=vn;try{var u=kr;for(vn=1;a<u.length;a++){var o=u[a];do{o=o(!0)}while(null!==o)}kr=null;wr=!1}catch(i){throw null!==kr&&(kr=kr.slice(a+1)),qe(ln,jg),i}finally{vn=i,Sr=!1}}return null}var Er=[],xr=0,Cr=null,zr=0,Nr=[],Lr=0,_r=null,jr=1,Pr=\"\";function tg(a,i){Er[xr++]=zr;Er[xr++]=Cr;Cr=a;zr=i}function ug(a,i,u){Nr[Lr++]=jr;Nr[Lr++]=Pr;Nr[Lr++]=_r;_r=a;var o=jr;a=Pr;var s=32-dn(o)-1;o&=~(1<<s);u+=1;var w=32-dn(i)+s;if(30<w){var x=s-s%5;w=(o&(1<<x)-1).toString(32);o>>=x;s-=x;jr=1<<32-dn(i)+s|u<<s|o;Pr=w+a}else jr=1<<w|u<<s|o,Pr=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===Cr;)Cr=Er[--xr],Er[xr]=null,zr=Er[--xr],Er[xr]=null;for(;a===_r;)_r=Nr[--Lr],Nr[Lr]=null,Pr=Nr[--Lr],Nr[Lr]=null,jr=Nr[--Lr],Nr[Lr]=null}var Tr=null,Dr=null,Mr=!1,Fr=null;function Ag(a,i){var u=Bg(5,null,null,0);u.elementType=\"DELETED\";u.stateNode=i;u.return=a;i=a.deletions;null===i?(a.deletions=[u],a.flags|=16):i.push(u)}function Cg(a,i){switch(a.tag){case 5:var u=a.type;i=1!==i.nodeType||u.toLowerCase()!==i.nodeName.toLowerCase()?null:i;return null!==i&&(a.stateNode=i,Tr=a,Dr=Lf(i.firstChild),!0);case 6:return i=\"\"===a.pendingProps||3!==i.nodeType?null:i,null!==i&&(a.stateNode=i,Tr=a,Dr=null,!0);case 13:return i=8!==i.nodeType?null:i,null!==i&&(u=null!==_r?{id:jr,overflow:Pr}:null,a.memoizedState={dehydrated:i,treeContext:u,retryLane:1073741824},u=Bg(18,null,null,0),u.stateNode=i,u.return=a,a.child=u,Tr=a,Dr=null,!0);default:return!1}}function Dg(a){return 0!==(1&a.mode)&&0===(128&a.flags)}function Eg(a){if(Mr){var i=Dr;if(i){var u=i;if(!Cg(a,i)){if(Dg(a))throw Error(p(418));i=Lf(u.nextSibling);var o=Tr;i&&Cg(a,i)?Ag(o,u):(a.flags=-4097&a.flags|2,Mr=!1,Tr=a)}}else{if(Dg(a))throw Error(p(418));a.flags=-4097&a.flags|2;Mr=!1;Tr=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Tr=a}function Gg(a){if(a!==Tr)return!1;if(!Mr)return Fg(a),Mr=!0,!1;var i;(i=3!==a.tag)&&!(i=5!==a.tag)&&(i=a.type,i=\"head\"!==i&&\"body\"!==i&&!Ef(a.type,a.memoizedProps));if(i&&(i=Dr)){if(Dg(a))throw Hg(),Error(p(418));for(;i;)Ag(a,i),i=Lf(i.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));e:{a=a.nextSibling;for(i=0;a;){if(8===a.nodeType){var u=a.data;if(\"/$\"===u){if(0===i){Dr=Lf(a.nextSibling);break e}i--}else\"$\"!==u&&\"$!\"!==u&&\"$?\"!==u||i++}a=a.nextSibling}Dr=null}}else Dr=Tr?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=Dr;a;)a=Lf(a.nextSibling)}function Ig(){Dr=Tr=null;Mr=!1}function Jg(a){null===Fr?Fr=[a]:Fr.push(a)}var Rr=R.ReactCurrentBatchConfig;function Lg(a,i){if(a&&a.defaultProps){i=ie({},i);a=a.defaultProps;for(var u in a)void 0===i[u]&&(i[u]=a[u]);return i}return i}var Or=Uf(null),Ir=null,Ur=null,Vr=null;function Qg(){Vr=Ur=Ir=null}function Rg(a){var i=Or.current;E(Or);a._currentValue=i}function Sg(a,i,u){for(;null!==a;){var o=a.alternate;(a.childLanes&i)!==i?(a.childLanes|=i,null!==o&&(o.childLanes|=i)):null!==o&&(o.childLanes&i)!==i&&(o.childLanes|=i);if(a===u)break;a=a.return}}function Tg(a,i){Ir=a;Vr=Ur=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&i)&&(Tl=!0),a.firstContext=null)}function Vg(a){var i=a._currentValue;if(Vr!==a)if(a={context:a,memoizedValue:i,next:null},null===Ur){if(null===Ir)throw Error(p(308));Ur=a;Ir.dependencies={lanes:0,firstContext:a}}else Ur=Ur.next=a;return i}var Wr=null;function Xg(a){null===Wr?Wr=[a]:Wr.push(a)}function Yg(a,i,u,o){var s=i.interleaved;null===s?(u.next=u,Xg(i)):(u.next=s.next,s.next=u);i.interleaved=u;return Zg(a,o)}function Zg(a,i){a.lanes|=i;var u=a.alternate;null!==u&&(u.lanes|=i);u=a;for(a=a.return;null!==a;)a.childLanes|=i,u=a.alternate,null!==u&&(u.childLanes|=i),u=a,a=a.return;return 3===u.tag?u.stateNode:null}var Qr=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function bh(a,i){a=a.updateQueue;i.updateQueue===a&&(i.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,i){return{eventTime:a,lane:i,tag:0,payload:null,callback:null,next:null}}function dh(a,i,u){var o=a.updateQueue;if(null===o)return null;o=o.shared;if(0!==(2&Zl)){var s=o.pending;null===s?i.next=i:(i.next=s.next,s.next=i);o.pending=i;return Zg(a,u)}s=o.interleaved;null===s?(i.next=i,Xg(o)):(i.next=s.next,s.next=i);o.interleaved=i;return Zg(a,u)}function eh(a,i,u){i=i.updateQueue;if(null!==i&&(i=i.shared,0!==(4194240&u))){var o=i.lanes;o&=a.pendingLanes;u|=o;i.lanes=u;Cc(a,u)}}function fh(a,i){var u=a.updateQueue,o=a.alternate;if(null===o||(o=o.updateQueue,u!==o)){a=u.lastBaseUpdate;null===a?u.firstBaseUpdate=i:a.next=i;u.lastBaseUpdate=i}else{var s=null,w=null;u=u.firstBaseUpdate;if(null!==u){do{var x={eventTime:u.eventTime,lane:u.lane,tag:u.tag,payload:u.payload,callback:u.callback,next:null};null===w?s=w=x:w=w.next=x;u=u.next}while(null!==u);null===w?s=w=i:w=w.next=i}else s=w=i;u={baseState:o.baseState,firstBaseUpdate:s,lastBaseUpdate:w,shared:o.shared,effects:o.effects};a.updateQueue=u}}function gh(a,i,u,o){var s=a.updateQueue;Qr=!1;var w=s.firstBaseUpdate,x=s.lastBaseUpdate,C=s.shared.pending;if(null!==C){s.shared.pending=null;var z=C,N=z.next;z.next=null;null===x?w=N:x.next=N;x=z;var _=a.alternate;null!==_&&(_=_.updateQueue,C=_.lastBaseUpdate,C!==x&&(null===C?_.firstBaseUpdate=N:C.next=N,_.lastBaseUpdate=z))}if(null!==w){var j=s.baseState;x=0;_=N=z=null;C=w;do{var P=C.lane,T=C.eventTime;if((o&P)===P){null!==_&&(_=_.next={eventTime:T,lane:0,tag:C.tag,payload:C.payload,callback:C.callback,next:null});e:{var M=a,F=C;P=i;T=u;switch(F.tag){case 1:M=F.payload;if(\"function\"===typeof M){j=M.call(T,j,P);break e}j=M;break e;case 3:M.flags=-65537&M.flags|128;case 0:M=F.payload;P=\"function\"===typeof M?M.call(T,j,P):M;if(null===P||void 0===P)break e;j=ie({},j,P);break e;case 2:Qr=!0}}null!==C.callback&&0!==C.lane&&(a.flags|=64,P=s.effects,null===P?s.effects=[C]:P.push(C))}else T={eventTime:T,lane:P,tag:C.tag,payload:C.payload,callback:C.callback,next:null},null===_?(N=_=T,z=j):_=_.next=T,x|=P;C=C.next;if(null===C){if(C=s.shared.pending,null===C)break;P=C,C=P.next,P.next=null,s.lastBaseUpdate=P,s.shared.pending=null}}while(1);null===_&&(z=j);s.baseState=z;s.firstBaseUpdate=N;s.lastBaseUpdate=_;i=s.shared.interleaved;if(null!==i){s=i;do{x|=s.lane,s=s.next}while(s!==i)}else null===w&&(s.shared.lanes=0);aa|=x;a.lanes=x;a.memoizedState=j}}function ih(a,i,u){a=i.effects;i.effects=null;if(null!==a)for(i=0;i<a.length;i++){var o=a[i],s=o.callback;if(null!==s){o.callback=null;o=u;if(\"function\"!==typeof s)throw Error(p(191,s));s.call(o)}}}var Ar=(new w.Component).refs;function kh(a,i,u,o){i=a.memoizedState;u=u(o,i);u=null===u||void 0===u?i:ie({},i,u);a.memoizedState=u;0===a.lanes&&(a.updateQueue.baseState=u)}var Br={isMounted:function(a){return!!(a=a._reactInternals)&&Vb(a)===a},enqueueSetState:function(a,i,u){a=a._reactInternals;var o=L(),s=lh(a),w=ch(o,s);w.payload=i;void 0!==u&&null!==u&&(w.callback=u);i=dh(a,w,s);null!==i&&(mh(i,a,s,o),eh(i,a,s))},enqueueReplaceState:function(a,i,u){a=a._reactInternals;var o=L(),s=lh(a),w=ch(o,s);w.tag=1;w.payload=i;void 0!==u&&null!==u&&(w.callback=u);i=dh(a,w,s);null!==i&&(mh(i,a,s,o),eh(i,a,s))},enqueueForceUpdate:function(a,i){a=a._reactInternals;var u=L(),o=lh(a),s=ch(u,o);s.tag=2;void 0!==i&&null!==i&&(s.callback=i);i=dh(a,s,o);null!==i&&(mh(i,a,o,u),eh(i,a,o))}};function oh(a,i,u,o,s,w,x){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(o,w,x):!i.prototype||!i.prototype.isPureReactComponent||(!Ie(u,o)||!Ie(s,w))}function ph(a,i,u){var o=!1,s=mr;var w=i.contextType;\"object\"===typeof w&&null!==w?w=Vg(w):(s=Zf(i)?yr:vr.current,o=i.contextTypes,w=(o=null!==o&&void 0!==o)?Yf(a,s):mr);i=new i(u,w);a.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;i.updater=Br;a.stateNode=i;i._reactInternals=a;o&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=s,a.__reactInternalMemoizedMaskedChildContext=w);return i}function qh(a,i,u,o){a=i.state;\"function\"===typeof i.componentWillReceiveProps&&i.componentWillReceiveProps(u,o);\"function\"===typeof i.UNSAFE_componentWillReceiveProps&&i.UNSAFE_componentWillReceiveProps(u,o);i.state!==a&&Br.enqueueReplaceState(i,i.state,null)}function rh(a,i,u,o){var s=a.stateNode;s.props=u;s.state=a.memoizedState;s.refs=Ar;ah(a);var w=i.contextType;\"object\"===typeof w&&null!==w?s.context=Vg(w):(w=Zf(i)?yr:vr.current,s.context=Yf(a,w));s.state=a.memoizedState;w=i.getDerivedStateFromProps;\"function\"===typeof w&&(kh(a,i,w,u),s.state=a.memoizedState);\"function\"===typeof i.getDerivedStateFromProps||\"function\"===typeof s.getSnapshotBeforeUpdate||\"function\"!==typeof s.UNSAFE_componentWillMount&&\"function\"!==typeof s.componentWillMount||(i=s.state,\"function\"===typeof s.componentWillMount&&s.componentWillMount(),\"function\"===typeof s.UNSAFE_componentWillMount&&s.UNSAFE_componentWillMount(),i!==s.state&&Br.enqueueReplaceState(s,s.state,null),gh(a,u,s,o),s.state=a.memoizedState);\"function\"===typeof s.componentDidMount&&(a.flags|=4194308)}function sh(a,i,u){a=u.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(u._owner){u=u._owner;if(u){if(1!==u.tag)throw Error(p(309));var o=u.stateNode}if(!o)throw Error(p(147,a));var s=o,w=\"\"+a;if(null!==i&&null!==i.ref&&\"function\"===typeof i.ref&&i.ref._stringRef===w)return i.ref;i=function(a){var i=s.refs;i===Ar&&(i=s.refs={});null===a?delete i[w]:i[w]=a};i._stringRef=w;return i}if(\"string\"!==typeof a)throw Error(p(284));if(!u._owner)throw Error(p(290,a))}return a}function th(a,i){a=Object.prototype.toString.call(i);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(i).join(\", \")+\"}\":a))}function uh(a){var i=a._init;return i(a._payload)}function vh(a){function b(i,u){if(a){var o=i.deletions;null===o?(i.deletions=[u],i.flags|=16):o.push(u)}}function c(i,u){if(!a)return null;for(;null!==u;)b(i,u),u=u.sibling;return null}function d(a,i){for(a=new Map;null!==i;)null!==i.key?a.set(i.key,i):a.set(i.index,i),i=i.sibling;return a}function e(a,i){a=wh(a,i);a.index=0;a.sibling=null;return a}function f(i,u,o){i.index=o;if(!a)return i.flags|=1048576,u;o=i.alternate;if(null!==o)return o=o.index,o<u?(i.flags|=2,u):o;i.flags|=2;return u}function g(i){a&&null===i.alternate&&(i.flags|=2);return i}function h(a,i,u,o){if(null===i||6!==i.tag)return i=xh(u,a.mode,o),i.return=a,i;i=e(i,u);i.return=a;return i}function k(a,i,u,o){var s=u.type;if(s===U)return m(a,i,u.props.children,o,u.key);if(null!==i&&(i.elementType===s||\"object\"===typeof s&&null!==s&&s.$$typeof===X&&uh(s)===i.type))return o=e(i,u.props),o.ref=sh(a,i,u),o.return=a,o;o=yh(u.type,u.key,u.props,null,a.mode,o);o.ref=sh(a,i,u);o.return=a;return o}function l(a,i,u,o){if(null===i||4!==i.tag||i.stateNode.containerInfo!==u.containerInfo||i.stateNode.implementation!==u.implementation)return i=zh(u,a.mode,o),i.return=a,i;i=e(i,u.children||[]);i.return=a;return i}function m(a,i,u,o,s){if(null===i||7!==i.tag)return i=Ah(u,a.mode,o,s),i.return=a,i;i=e(i,u);i.return=a;return i}function q(a,i,u){if(\"string\"===typeof i&&\"\"!==i||\"number\"===typeof i)return i=xh(\"\"+i,a.mode,u),i.return=a,i;if(\"object\"===typeof i&&null!==i){switch(i.$$typeof){case O:return u=yh(i.type,i.key,i.props,null,a.mode,u),u.ref=sh(a,null,i),u.return=a,u;case I:return i=zh(i,a.mode,u),i.return=a,i;case X:var o=i._init;return q(a,o(i._payload),u)}if(fe(i)||Ka(i))return i=Ah(i,a.mode,u,null),i.return=a,i;th(a,i)}return null}function r(a,i,u,o){var s=null!==i?i.key:null;if(\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u)return null!==s?null:h(a,i,\"\"+u,o);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case O:return u.key===s?k(a,i,u,o):null;case I:return u.key===s?l(a,i,u,o):null;case X:return s=u._init,r(a,i,s(u._payload),o)}if(fe(u)||Ka(u))return null!==s?null:m(a,i,u,o,null);th(a,u)}return null}function y(a,i,u,o,s){if(\"string\"===typeof o&&\"\"!==o||\"number\"===typeof o)return a=a.get(u)||null,h(i,a,\"\"+o,s);if(\"object\"===typeof o&&null!==o){switch(o.$$typeof){case O:return a=a.get(null===o.key?u:o.key)||null,k(i,a,o,s);case I:return a=a.get(null===o.key?u:o.key)||null,l(i,a,o,s);case X:var w=o._init;return y(a,i,u,w(o._payload),s)}if(fe(o)||Ka(o))return a=a.get(u)||null,m(i,a,o,s,null);th(i,o)}return null}function n(i,u,o,s){for(var w=null,x=null,C=u,z=u=0,N=null;null!==C&&z<o.length;z++){C.index>z?(N=C,C=null):N=C.sibling;var _=r(i,C,o[z],s);if(null===_){null===C&&(C=N);break}a&&C&&null===_.alternate&&b(i,C);u=f(_,u,z);null===x?w=_:x.sibling=_;x=_;C=N}if(z===o.length)return c(i,C),Mr&&tg(i,z),w;if(null===C){for(;z<o.length;z++)C=q(i,o[z],s),null!==C&&(u=f(C,u,z),null===x?w=C:x.sibling=C,x=C);Mr&&tg(i,z);return w}for(C=d(i,C);z<o.length;z++)N=y(C,i,z,o[z],s),null!==N&&(a&&null!==N.alternate&&C.delete(null===N.key?z:N.key),u=f(N,u,z),null===x?w=N:x.sibling=N,x=N);a&&C.forEach((function(a){return b(i,a)}));Mr&&tg(i,z);return w}function t(i,u,o,s){var w=Ka(o);if(\"function\"!==typeof w)throw Error(p(150));o=w.call(o);if(null==o)throw Error(p(151));for(var x=w=null,C=u,z=u=0,N=null,_=o.next();null!==C&&!_.done;z++,_=o.next()){C.index>z?(N=C,C=null):N=C.sibling;var j=r(i,C,_.value,s);if(null===j){null===C&&(C=N);break}a&&C&&null===j.alternate&&b(i,C);u=f(j,u,z);null===x?w=j:x.sibling=j;x=j;C=N}if(_.done)return c(i,C),Mr&&tg(i,z),w;if(null===C){for(;!_.done;z++,_=o.next())_=q(i,_.value,s),null!==_&&(u=f(_,u,z),null===x?w=_:x.sibling=_,x=_);Mr&&tg(i,z);return w}for(C=d(i,C);!_.done;z++,_=o.next())_=y(C,i,z,_.value,s),null!==_&&(a&&null!==_.alternate&&C.delete(null===_.key?z:_.key),u=f(_,u,z),null===x?w=_:x.sibling=_,x=_);a&&C.forEach((function(a){return b(i,a)}));Mr&&tg(i,z);return w}function J(a,i,u,o){\"object\"===typeof u&&null!==u&&u.type===U&&null===u.key&&(u=u.props.children);if(\"object\"===typeof u&&null!==u){switch(u.$$typeof){case O:e:{for(var s=u.key,w=i;null!==w;){if(w.key===s){s=u.type;if(s===U){if(7===w.tag){c(a,w.sibling);i=e(w,u.props.children);i.return=a;a=i;break e}}else if(w.elementType===s||\"object\"===typeof s&&null!==s&&s.$$typeof===X&&uh(s)===w.type){c(a,w.sibling);i=e(w,u.props);i.ref=sh(a,w,u);i.return=a;a=i;break e}c(a,w);break}b(a,w);w=w.sibling}u.type===U?(i=Ah(u.props.children,a.mode,o,u.key),i.return=a,a=i):(o=yh(u.type,u.key,u.props,null,a.mode,o),o.ref=sh(a,i,u),o.return=a,a=o)}return g(a);case I:e:{for(w=u.key;null!==i;){if(i.key===w){if(4===i.tag&&i.stateNode.containerInfo===u.containerInfo&&i.stateNode.implementation===u.implementation){c(a,i.sibling);i=e(i,u.children||[]);i.return=a;a=i;break e}c(a,i);break}b(a,i);i=i.sibling}i=zh(u,a.mode,o);i.return=a;a=i}return g(a);case X:return w=u._init,J(a,i,w(u._payload),o)}if(fe(u))return n(a,i,u,o);if(Ka(u))return t(a,i,u,o);th(a,u)}return\"string\"===typeof u&&\"\"!==u||\"number\"===typeof u?(u=\"\"+u,null!==i&&6===i.tag?(c(a,i.sibling),i=e(i,u),i.return=a,a=i):(c(a,i),i=xh(u,a.mode,o),i.return=a,a=i),g(a)):c(a,i)}return J}var Hr=vh(!0),$r=vh(!1),Kr={},Yr=Uf(Kr),Zr=Uf(Kr),Gr=Uf(Kr);function Hh(a){if(a===Kr)throw Error(p(174));return a}function Ih(a,i){G(Gr,i);G(Zr,a);G(Yr,Kr);a=i.nodeType;switch(a){case 9:case 11:i=(i=i.documentElement)?i.namespaceURI:lb(null,\"\");break;default:a=8===a?i.parentNode:i,i=a.namespaceURI||null,a=a.tagName,i=lb(i,a)}E(Yr);G(Yr,i)}function Jh(){E(Yr);E(Zr);E(Gr)}function Kh(a){Hh(Gr.current);var i=Hh(Yr.current);var u=lb(i,a.type);i!==u&&(G(Zr,a),G(Yr,u))}function Lh(a){Zr.current===a&&(E(Yr),E(Zr))}var qr=Uf(0);function Mh(a){for(var i=a;null!==i;){if(13===i.tag){var u=i.memoizedState;if(null!==u&&(u=u.dehydrated,null===u||\"$?\"===u.data||\"$!\"===u.data))return i}else if(19===i.tag&&void 0!==i.memoizedProps.revealOrder){if(0!==(128&i.flags))return i}else if(null!==i.child){i.child.return=i;i=i.child;continue}if(i===a)break;for(;null===i.sibling;){if(null===i.return||i.return===a)return null;i=i.return}i.sibling.return=i.return;i=i.sibling}return null}var Xr=[];function Oh(){for(var a=0;a<Xr.length;a++)Xr[a]._workInProgressVersionPrimary=null;Xr.length=0}var Jr=R.ReactCurrentDispatcher,tl=R.ReactCurrentBatchConfig,ll=0,ul=null,vl=null,yl=null,wl=!1,Sl=!1,El=0,xl=0;function Q(){throw Error(p(321))}function Wh(a,i){if(null===i)return!1;for(var u=0;u<i.length&&u<a.length;u++)if(!Pt(a[u],i[u]))return!1;return!0}function Xh(a,i,u,o,s,w){ll=w;ul=i;i.memoizedState=null;i.updateQueue=null;i.lanes=0;Jr.current=null===a||null===a.memoizedState?zl:Nl;a=u(o,s);if(Sl){w=0;do{Sl=!1;El=0;if(25<=w)throw Error(p(301));w+=1;yl=vl=null;i.updateQueue=null;Jr.current=Ll;a=u(o,s)}while(Sl)}Jr.current=Cl;i=null!==vl&&null!==vl.next;ll=0;yl=vl=ul=null;wl=!1;if(i)throw Error(p(300));return a}function bi(){var a=0!==El;El=0;return a}function ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===yl?ul.memoizedState=yl=a:yl=yl.next=a;return yl}function di(){if(null===vl){var a=ul.alternate;a=null!==a?a.memoizedState:null}else a=vl.next;var i=null===yl?ul.memoizedState:yl.next;if(null!==i)yl=i,vl=a;else{if(null===a)throw Error(p(310));vl=a;a={memoizedState:vl.memoizedState,baseState:vl.baseState,baseQueue:vl.baseQueue,queue:vl.queue,next:null};null===yl?ul.memoizedState=yl=a:yl=yl.next=a}return yl}function ei(a,i){return\"function\"===typeof i?i(a):i}function fi(a){var i=di(),u=i.queue;if(null===u)throw Error(p(311));u.lastRenderedReducer=a;var o=vl,s=o.baseQueue,w=u.pending;if(null!==w){if(null!==s){var x=s.next;s.next=w.next;w.next=x}o.baseQueue=s=w;u.pending=null}if(null!==s){w=s.next;o=o.baseState;var C=x=null,z=null,N=w;do{var _=N.lane;if((ll&_)===_)null!==z&&(z=z.next={lane:0,action:N.action,hasEagerState:N.hasEagerState,eagerState:N.eagerState,next:null}),o=N.hasEagerState?N.eagerState:a(o,N.action);else{var j={lane:_,action:N.action,hasEagerState:N.hasEagerState,eagerState:N.eagerState,next:null};null===z?(C=z=j,x=o):z=z.next=j;ul.lanes|=_;aa|=_}N=N.next}while(null!==N&&N!==w);null===z?x=o:z.next=C;Pt(o,i.memoizedState)||(Tl=!0);i.memoizedState=o;i.baseState=x;i.baseQueue=z;u.lastRenderedState=o}a=u.interleaved;if(null!==a){s=a;do{w=s.lane,ul.lanes|=w,aa|=w,s=s.next}while(s!==a)}else null===s&&(u.lanes=0);return[i.memoizedState,u.dispatch]}function gi(a){var i=di(),u=i.queue;if(null===u)throw Error(p(311));u.lastRenderedReducer=a;var o=u.dispatch,s=u.pending,w=i.memoizedState;if(null!==s){u.pending=null;var x=s=s.next;do{w=a(w,x.action),x=x.next}while(x!==s);Pt(w,i.memoizedState)||(Tl=!0);i.memoizedState=w;null===i.baseQueue&&(i.baseState=w);u.lastRenderedState=w}return[w,o]}function hi(){}function ii(a,i){var u=ul,o=di(),s=i(),w=!Pt(o.memoizedState,s);w&&(o.memoizedState=s,Tl=!0);o=o.queue;ji(ki.bind(null,u,o,a),[a]);if(o.getSnapshot!==i||w||null!==yl&&1&yl.memoizedState.tag){u.flags|=2048;li(9,mi.bind(null,u,o,s,i),void 0,null);if(null===Gl)throw Error(p(349));0!==(30&ll)||ni(u,i,s)}return s}function ni(a,i,u){a.flags|=16384;a={getSnapshot:i,value:u};i=ul.updateQueue;null===i?(i={lastEffect:null,stores:null},ul.updateQueue=i,i.stores=[a]):(u=i.stores,null===u?i.stores=[a]:u.push(a))}function mi(a,i,u,o){i.value=u;i.getSnapshot=o;oi(i)&&pi(a)}function ki(a,i,u){return u((function(){oi(i)&&pi(a)}))}function oi(a){var i=a.getSnapshot;a=a.value;try{var u=i();return!Pt(a,u)}catch(a){return!0}}function pi(a){var i=Zg(a,1);null!==i&&mh(i,a,1,-1)}function qi(a){var i=ci();\"function\"===typeof a&&(a=a());i.memoizedState=i.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};i.queue=a;a=a.dispatch=ri.bind(null,ul,a);return[i.memoizedState,a]}function li(a,i,u,o){a={tag:a,create:i,destroy:u,deps:o,next:null};i=ul.updateQueue;null===i?(i={lastEffect:null,stores:null},ul.updateQueue=i,i.lastEffect=a.next=a):(u=i.lastEffect,null===u?i.lastEffect=a.next=a:(o=u.next,u.next=a,a.next=o,i.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,i,u,o){var s=ci();ul.flags|=a;s.memoizedState=li(1|i,u,void 0,void 0===o?null:o)}function ui(a,i,u,o){var s=di();o=void 0===o?null:o;var w=void 0;if(null!==vl){var x=vl.memoizedState;w=x.destroy;if(null!==o&&Wh(o,x.deps)){s.memoizedState=li(i,u,w,o);return}}ul.flags|=a;s.memoizedState=li(1|i,u,w,o)}function vi(a,i){return ti(8390656,8,a,i)}function ji(a,i){return ui(2048,8,a,i)}function wi(a,i){return ui(4,2,a,i)}function xi(a,i){return ui(4,4,a,i)}function yi(a,i){return\"function\"===typeof i?(a=a(),i(a),function(){i(null)}):null!==i&&void 0!==i?(a=a(),i.current=a,function(){i.current=null}):void 0}function zi(a,i,u){u=null!==u&&void 0!==u?u.concat([a]):null;return ui(4,4,yi.bind(null,i,a),u)}function Ai(){}function Bi(a,i){var u=di();i=void 0===i?null:i;var o=u.memoizedState;if(null!==o&&null!==i&&Wh(i,o[1]))return o[0];u.memoizedState=[a,i];return a}function Ci(a,i){var u=di();i=void 0===i?null:i;var o=u.memoizedState;if(null!==o&&null!==i&&Wh(i,o[1]))return o[0];a=a();u.memoizedState=[a,i];return a}function Di(a,i,u){if(0===(21&ll))return a.baseState&&(a.baseState=!1,Tl=!0),a.memoizedState=u;Pt(u,i)||(u=yc(),ul.lanes|=u,aa|=u,a.baseState=!0);return i}function Ei(a,i){var u=vn;vn=0!==u&&4>u?u:4;a(!0);var o=tl.transition;tl.transition={};try{a(!1),i()}finally{vn=u,tl.transition=o}}function Fi(){return di().memoizedState}function Gi(a,i,u){var o=lh(a);u={lane:o,action:u,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(i,u);else if(u=Yg(a,i,u,o),null!==u){var s=L();mh(u,a,o,s);Ji(u,i,o)}}function ri(a,i,u){var o=lh(a),s={lane:o,action:u,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(i,s);else{var w=a.alternate;if(0===a.lanes&&(null===w||0===w.lanes)&&(w=i.lastRenderedReducer,null!==w))try{var x=i.lastRenderedState,C=w(x,u);s.hasEagerState=!0;s.eagerState=C;if(Pt(C,x)){var z=i.interleaved;null===z?(s.next=s,Xg(i)):(s.next=z.next,z.next=s);i.interleaved=s;return}}catch(a){}u=Yg(a,i,s,o);null!==u&&(s=L(),mh(u,a,o,s),Ji(u,i,o))}}function Hi(a){var i=a.alternate;return a===ul||null!==i&&i===ul}function Ii(a,i){Sl=wl=!0;var u=a.pending;null===u?i.next=i:(i.next=u.next,u.next=i);a.pending=i}function Ji(a,i,u){if(0!==(4194240&u)){var o=i.lanes;o&=a.pendingLanes;u|=o;i.lanes=u;Cc(a,u)}}var Cl={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},zl={readContext:Vg,useCallback:function(a,i){ci().memoizedState=[a,void 0===i?null:i];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,i,u){u=null!==u&&void 0!==u?u.concat([a]):null;return ti(4194308,4,yi.bind(null,i,a),u)},useLayoutEffect:function(a,i){return ti(4194308,4,a,i)},useInsertionEffect:function(a,i){return ti(4,2,a,i)},useMemo:function(a,i){var u=ci();i=void 0===i?null:i;a=a();u.memoizedState=[a,i];return a},useReducer:function(a,i,u){var o=ci();i=void 0!==u?u(i):i;o.memoizedState=o.baseState=i;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:i};o.queue=a;a=a.dispatch=Gi.bind(null,ul,a);return[o.memoizedState,a]},useRef:function(a){var i=ci();a={current:a};return i.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),i=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[i,a]},useMutableSource:function(){},useSyncExternalStore:function(a,i,u){var o=ul,s=ci();if(Mr){if(void 0===u)throw Error(p(407));u=u()}else{u=i();if(null===Gl)throw Error(p(349));0!==(30&ll)||ni(o,i,u)}s.memoizedState=u;var w={value:u,getSnapshot:i};s.queue=w;vi(ki.bind(null,o,w,a),[a]);o.flags|=2048;li(9,mi.bind(null,o,w,u,i),void 0,null);return u},useId:function(){var a=ci(),i=Gl.identifierPrefix;if(Mr){var u=Pr;var o=jr;u=(o&~(1<<32-dn(o)-1)).toString(32)+u;i=\":\"+i+\"R\"+u;u=El++;0<u&&(i+=\"H\"+u.toString(32));i+=\":\"}else u=xl++,i=\":\"+i+\"r\"+u.toString(32)+\":\";return a.memoizedState=i},unstable_isNewReconciler:!1},Nl={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var i=di();return Di(i,vl.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],i=di().memoizedState;return[a,i]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},Ll={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var i=di();return null===vl?i.memoizedState=a:Di(i,vl.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],i=di().memoizedState;return[a,i]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,i){try{var u=\"\",o=i;do{u+=Pa(o),o=o.return}while(o);var s=u}catch(a){s=\"\\nError generating stack: \"+a.message+\"\\n\"+a.stack}return{value:a,source:i,stack:s,digest:null}}function Li(a,i,u){return{value:a,source:null,stack:null!=u?u:null,digest:null!=i?i:null}}function Mi(a,i){try{console.error(i.value)}catch(a){setTimeout((function(){throw a}))}}var _l=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,i,u){u=ch(-1,u);u.tag=3;u.payload={element:null};var o=i.value;u.callback=function(){ba||(ba=!0,ya=o);Mi(a,i)};return u}function Ri(a,i,u){u=ch(-1,u);u.tag=3;var o=a.type.getDerivedStateFromError;if(\"function\"===typeof o){var s=i.value;u.payload=function(){return o(s)};u.callback=function(){Mi(a,i)}}var w=a.stateNode;null!==w&&\"function\"===typeof w.componentDidCatch&&(u.callback=function(){Mi(a,i);\"function\"!==typeof o&&(null===ka?ka=new Set([this]):ka.add(this));var u=i.stack;this.componentDidCatch(i.value,{componentStack:null!==u?u:\"\"})});return u}function Ti(a,i,u){var o=a.pingCache;if(null===o){o=a.pingCache=new _l;var s=new Set;o.set(i,s)}else s=o.get(i),void 0===s&&(s=new Set,o.set(i,s));s.has(u)||(s.add(u),a=Ui.bind(null,a,i,u),i.then(a,a))}function Vi(a){do{var i;(i=13===a.tag)&&(i=a.memoizedState,i=null===i||null!==i.dehydrated);if(i)return a;a=a.return}while(null!==a);return null}function Wi(a,i,u,o,s){if(0===(1&a.mode))return a===i?a.flags|=65536:(a.flags|=128,u.flags|=131072,u.flags&=-52805,1===u.tag&&(null===u.alternate?u.tag=17:(i=ch(-1,1),i.tag=2,dh(u,i,1))),u.lanes|=1),a;a.flags|=65536;a.lanes=s;return a}var Pl=R.ReactCurrentOwner,Tl=!1;function Yi(a,i,u,o){i.child=null===a?$r(i,null,u,o):Hr(i,a.child,u,o)}function Zi(a,i,u,o,s){u=u.render;var w=i.ref;Tg(i,s);o=Xh(a,i,u,o,w,s);u=bi();if(null!==a&&!Tl)return i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~s,$i(a,i,s);Mr&&u&&vg(i);i.flags|=1;Yi(a,i,o,s);return i.child}function aj(a,i,u,o,s){if(null===a){var w=u.type;if(\"function\"===typeof w&&!bj(w)&&void 0===w.defaultProps&&null===u.compare&&void 0===u.defaultProps)return i.tag=15,i.type=w,cj(a,i,w,o,s);a=yh(u.type,null,o,i,i.mode,s);a.ref=i.ref;a.return=i;return i.child=a}w=a.child;if(0===(a.lanes&s)){var x=w.memoizedProps;u=u.compare;u=null!==u?u:Ie;if(u(x,o)&&a.ref===i.ref)return $i(a,i,s)}i.flags|=1;a=wh(w,o);a.ref=i.ref;a.return=i;return i.child=a}function cj(a,i,u,o,s){if(null!==a){var w=a.memoizedProps;if(Ie(w,o)&&a.ref===i.ref){if(Tl=!1,i.pendingProps=o=w,0===(a.lanes&s))return i.lanes=a.lanes,$i(a,i,s);0!==(131072&a.flags)&&(Tl=!0)}}return dj(a,i,u,o,s)}function ej(a,i,u){var o=i.pendingProps,s=o.children,w=null!==a?a.memoizedState:null;if(\"hidden\"===o.mode)if(0===(1&i.mode))i.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(na,ea),ea|=u;else{if(0===(1073741824&u))return a=null!==w?w.baseLanes|u:u,i.lanes=i.childLanes=1073741824,i.memoizedState={baseLanes:a,cachePool:null,transitions:null},i.updateQueue=null,G(na,ea),ea|=a,null;i.memoizedState={baseLanes:0,cachePool:null,transitions:null};o=null!==w?w.baseLanes:u;G(na,ea);ea|=o}else null!==w?(o=w.baseLanes|u,i.memoizedState=null):o=u,G(na,ea),ea|=o;Yi(a,i,s,u);return i.child}function hj(a,i){var u=i.ref;(null===a&&null!==u||null!==a&&a.ref!==u)&&(i.flags|=512,i.flags|=2097152)}function dj(a,i,u,o,s){var w=Zf(u)?yr:vr.current;w=Yf(i,w);Tg(i,s);u=Xh(a,i,u,o,w,s);o=bi();if(null!==a&&!Tl)return i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~s,$i(a,i,s);Mr&&o&&vg(i);i.flags|=1;Yi(a,i,u,s);return i.child}function ij(a,i,u,o,s){if(Zf(u)){var w=!0;cg(i)}else w=!1;Tg(i,s);if(null===i.stateNode)jj(a,i),ph(i,u,o),rh(i,u,o,s),o=!0;else if(null===a){var x=i.stateNode,C=i.memoizedProps;x.props=C;var z=x.context,N=u.contextType;\"object\"===typeof N&&null!==N?N=Vg(N):(N=Zf(u)?yr:vr.current,N=Yf(i,N));var _=u.getDerivedStateFromProps,j=\"function\"===typeof _||\"function\"===typeof x.getSnapshotBeforeUpdate;j||\"function\"!==typeof x.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof x.componentWillReceiveProps||(C!==o||z!==N)&&qh(i,x,o,N);Qr=!1;var P=i.memoizedState;x.state=P;gh(i,o,x,s);z=i.memoizedState;C!==o||P!==z||br.current||Qr?(\"function\"===typeof _&&(kh(i,u,_,o),z=i.memoizedState),(C=Qr||oh(i,u,C,o,P,z,N))?(j||\"function\"!==typeof x.UNSAFE_componentWillMount&&\"function\"!==typeof x.componentWillMount||(\"function\"===typeof x.componentWillMount&&x.componentWillMount(),\"function\"===typeof x.UNSAFE_componentWillMount&&x.UNSAFE_componentWillMount()),\"function\"===typeof x.componentDidMount&&(i.flags|=4194308)):(\"function\"===typeof x.componentDidMount&&(i.flags|=4194308),i.memoizedProps=o,i.memoizedState=z),x.props=o,x.state=z,x.context=N,o=C):(\"function\"===typeof x.componentDidMount&&(i.flags|=4194308),o=!1)}else{x=i.stateNode;bh(a,i);C=i.memoizedProps;N=i.type===i.elementType?C:Lg(i.type,C);x.props=N;j=i.pendingProps;P=x.context;z=u.contextType;\"object\"===typeof z&&null!==z?z=Vg(z):(z=Zf(u)?yr:vr.current,z=Yf(i,z));var T=u.getDerivedStateFromProps;(_=\"function\"===typeof T||\"function\"===typeof x.getSnapshotBeforeUpdate)||\"function\"!==typeof x.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof x.componentWillReceiveProps||(C!==j||P!==z)&&qh(i,x,o,z);Qr=!1;P=i.memoizedState;x.state=P;gh(i,o,x,s);var M=i.memoizedState;C!==j||P!==M||br.current||Qr?(\"function\"===typeof T&&(kh(i,u,T,o),M=i.memoizedState),(N=Qr||oh(i,u,N,o,P,M,z)||!1)?(_||\"function\"!==typeof x.UNSAFE_componentWillUpdate&&\"function\"!==typeof x.componentWillUpdate||(\"function\"===typeof x.componentWillUpdate&&x.componentWillUpdate(o,M,z),\"function\"===typeof x.UNSAFE_componentWillUpdate&&x.UNSAFE_componentWillUpdate(o,M,z)),\"function\"===typeof x.componentDidUpdate&&(i.flags|=4),\"function\"===typeof x.getSnapshotBeforeUpdate&&(i.flags|=1024)):(\"function\"!==typeof x.componentDidUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=4),\"function\"!==typeof x.getSnapshotBeforeUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=1024),i.memoizedProps=o,i.memoizedState=M),x.props=o,x.state=M,x.context=z,o=N):(\"function\"!==typeof x.componentDidUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=4),\"function\"!==typeof x.getSnapshotBeforeUpdate||C===a.memoizedProps&&P===a.memoizedState||(i.flags|=1024),o=!1)}return kj(a,i,u,o,w,s)}function kj(a,i,u,o,s,w){hj(a,i);var x=0!==(128&i.flags);if(!o&&!x)return s&&dg(i,u,!1),$i(a,i,w);o=i.stateNode;Pl.current=i;var C=x&&\"function\"!==typeof u.getDerivedStateFromError?null:o.render();i.flags|=1;null!==a&&x?(i.child=Hr(i,a.child,null,w),i.child=Hr(i,null,C,w)):Yi(a,i,C,w);i.memoizedState=o.state;s&&dg(i,u,!0);return i.child}function lj(a){var i=a.stateNode;i.pendingContext?ag(a,i.pendingContext,i.pendingContext!==i.context):i.context&&ag(a,i.context,!1);Ih(a,i.containerInfo)}function mj(a,i,u,o,s){Ig();Jg(s);i.flags|=256;Yi(a,i,u,o);return i.child}var Dl={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}function pj(a,i,u){var o,s=i.pendingProps,w=qr.current,x=!1,C=0!==(128&i.flags);(o=C)||(o=(null===a||null!==a.memoizedState)&&0!==(2&w));o?(x=!0,i.flags&=-129):null!==a&&null===a.memoizedState||(w|=1);G(qr,1&w);if(null===a){Eg(i);a=i.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(1&i.mode)?i.lanes=1:\"$!\"===a.data?i.lanes=8:i.lanes=1073741824,null;C=s.children;a=s.fallback;return x?(s=i.mode,x=i.child,C={mode:\"hidden\",children:C},0===(1&s)&&null!==x?(x.childLanes=0,x.pendingProps=C):x=qj(C,s,0,null),a=Ah(a,s,u,null),x.return=i,a.return=i,x.sibling=a,i.child=x,i.child.memoizedState=oj(u),i.memoizedState=Dl,a):rj(i,C)}w=a.memoizedState;if(null!==w&&(o=w.dehydrated,null!==o))return sj(a,i,C,s,o,w,u);if(x){x=s.fallback;C=i.mode;w=a.child;o=w.sibling;var z={mode:\"hidden\",children:s.children};0===(1&C)&&i.child!==w?(s=i.child,s.childLanes=0,s.pendingProps=z,i.deletions=null):(s=wh(w,z),s.subtreeFlags=14680064&w.subtreeFlags);null!==o?x=wh(o,x):(x=Ah(x,C,u,null),x.flags|=2);x.return=i;s.return=i;s.sibling=x;i.child=s;s=x;x=i.child;C=a.child.memoizedState;C=null===C?oj(u):{baseLanes:C.baseLanes|u,cachePool:null,transitions:C.transitions};x.memoizedState=C;x.childLanes=a.childLanes&~u;i.memoizedState=Dl;return s}x=a.child;a=x.sibling;s=wh(x,{mode:\"visible\",children:s.children});0===(1&i.mode)&&(s.lanes=u);s.return=i;s.sibling=null;null!==a&&(u=i.deletions,null===u?(i.deletions=[a],i.flags|=16):u.push(a));i.child=s;i.memoizedState=null;return s}function rj(a,i){i=qj({mode:\"visible\",children:i},a.mode,0,null);i.return=a;return a.child=i}function tj(a,i,u,o){null!==o&&Jg(o);Hr(i,a.child,null,u);a=rj(i,i.pendingProps.children);a.flags|=2;i.memoizedState=null;return a}function sj(a,i,u,o,s,w,x){if(u){if(256&i.flags)return i.flags&=-257,o=Li(Error(p(422))),tj(a,i,x,o);if(null!==i.memoizedState)return i.child=a.child,i.flags|=128,null;w=o.fallback;s=i.mode;o=qj({mode:\"visible\",children:o.children},s,0,null);w=Ah(w,s,x,null);w.flags|=2;o.return=i;w.return=i;o.sibling=w;i.child=o;0!==(1&i.mode)&&Hr(i,a.child,null,x);i.child.memoizedState=oj(x);i.memoizedState=Dl;return w}if(0===(1&i.mode))return tj(a,i,x,null);if(\"$!\"===s.data){o=s.nextSibling&&s.nextSibling.dataset;if(o)var C=o.dgst;o=C;w=Error(p(419));o=Li(w,o,void 0);return tj(a,i,x,o)}C=0!==(x&a.childLanes);if(Tl||C){o=Gl;if(null!==o){switch(x&-x){case 4:s=2;break;case 16:s=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:s=32;break;case 536870912:s=268435456;break;default:s=0}s=0!==(s&(o.suspendedLanes|x))?0:s;0!==s&&s!==w.retryLane&&(w.retryLane=s,Zg(a,s),mh(o,a,s,-1))}uj();o=Li(Error(p(421)));return tj(a,i,x,o)}if(\"$?\"===s.data)return i.flags|=128,i.child=a.child,i=vj.bind(null,a),s._reactRetry=i,null;a=w.treeContext;Dr=Lf(s.nextSibling);Tr=i;Mr=!0;Fr=null;null!==a&&(Nr[Lr++]=jr,Nr[Lr++]=Pr,Nr[Lr++]=_r,jr=a.id,Pr=a.overflow,_r=i);i=rj(i,o.children);i.flags|=4096;return i}function wj(a,i,u){a.lanes|=i;var o=a.alternate;null!==o&&(o.lanes|=i);Sg(a.return,i,u)}function xj(a,i,u,o,s){var w=a.memoizedState;null===w?a.memoizedState={isBackwards:i,rendering:null,renderingStartTime:0,last:o,tail:u,tailMode:s}:(w.isBackwards=i,w.rendering=null,w.renderingStartTime=0,w.last=o,w.tail=u,w.tailMode=s)}function yj(a,i,u){var o=i.pendingProps,s=o.revealOrder,w=o.tail;Yi(a,i,o.children,u);o=qr.current;if(0!==(2&o))o=1&o|2,i.flags|=128;else{if(null!==a&&0!==(128&a.flags))e:for(a=i.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,u,i);else if(19===a.tag)wj(a,u,i);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===i)break e;for(;null===a.sibling;){if(null===a.return||a.return===i)break e;a=a.return}a.sibling.return=a.return;a=a.sibling}o&=1}G(qr,o);if(0===(1&i.mode))i.memoizedState=null;else switch(s){case\"forwards\":u=i.child;for(s=null;null!==u;)a=u.alternate,null!==a&&null===Mh(a)&&(s=u),u=u.sibling;u=s;null===u?(s=i.child,i.child=null):(s=u.sibling,u.sibling=null);xj(i,!1,s,u,w);break;case\"backwards\":u=null;s=i.child;for(i.child=null;null!==s;){a=s.alternate;if(null!==a&&null===Mh(a)){i.child=s;break}a=s.sibling;s.sibling=u;u=s;s=a}xj(i,!0,u,null,w);break;case\"together\":xj(i,!1,null,null,void 0);break;default:i.memoizedState=null}return i.child}function jj(a,i){0===(1&i.mode)&&null!==a&&(a.alternate=null,i.alternate=null,i.flags|=2)}function $i(a,i,u){null!==a&&(i.dependencies=a.dependencies);aa|=i.lanes;if(0===(u&i.childLanes))return null;if(null!==a&&i.child!==a.child)throw Error(p(153));if(null!==i.child){a=i.child;u=wh(a,a.pendingProps);i.child=u;for(u.return=i;null!==a.sibling;)a=a.sibling,u=u.sibling=wh(a,a.pendingProps),u.return=i;u.sibling=null}return i.child}function zj(a,i,u){switch(i.tag){case 3:lj(i);Ig();break;case 5:Kh(i);break;case 1:Zf(i.type)&&cg(i);break;case 4:Ih(i,i.stateNode.containerInfo);break;case 10:var o=i.type._context,s=i.memoizedProps.value;G(Or,o._currentValue);o._currentValue=s;break;case 13:o=i.memoizedState;if(null!==o){if(null!==o.dehydrated)return G(qr,1&qr.current),i.flags|=128,null;if(0!==(u&i.child.childLanes))return pj(a,i,u);G(qr,1&qr.current);a=$i(a,i,u);return null!==a?a.sibling:null}G(qr,1&qr.current);break;case 19:o=0!==(u&i.childLanes);if(0!==(128&a.flags)){if(o)return yj(a,i,u);i.flags|=128}s=i.memoizedState;null!==s&&(s.rendering=null,s.tail=null,s.lastEffect=null);G(qr,qr.current);if(o)break;return null;case 22:case 23:return i.lanes=0,ej(a,i,u)}return $i(a,i,u)}var Ml,Fl,Rl,Ol;Ml=function(a,i){for(var u=i.child;null!==u;){if(5===u.tag||6===u.tag)a.appendChild(u.stateNode);else if(4!==u.tag&&null!==u.child){u.child.return=u;u=u.child;continue}if(u===i)break;for(;null===u.sibling;){if(null===u.return||u.return===i)return;u=u.return}u.sibling.return=u.return;u=u.sibling}};Fl=function(){};Rl=function(a,i,u,o){var s=a.memoizedProps;if(s!==o){a=i.stateNode;Hh(Yr.current);var w=null;switch(u){case\"input\":s=Ya(a,s);o=Ya(a,o);w=[];break;case\"select\":s=ie({},s,{value:void 0});o=ie({},o,{value:void 0});w=[];break;case\"textarea\":s=gb(a,s);o=gb(a,o);w=[];break;default:\"function\"!==typeof s.onClick&&\"function\"===typeof o.onClick&&(a.onclick=Bf)}ub(u,o);var x;u=null;for(_ in s)if(!o.hasOwnProperty(_)&&s.hasOwnProperty(_)&&null!=s[_])if(\"style\"===_){var C=s[_];for(x in C)C.hasOwnProperty(x)&&(u||(u={}),u[x]=\"\")}else\"dangerouslySetInnerHTML\"!==_&&\"children\"!==_&&\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&\"autoFocus\"!==_&&(z.hasOwnProperty(_)?w||(w=[]):(w=w||[]).push(_,null));for(_ in o){var N=o[_];C=null!=s?s[_]:void 0;if(o.hasOwnProperty(_)&&N!==C&&(null!=N||null!=C))if(\"style\"===_)if(C){for(x in C)!C.hasOwnProperty(x)||N&&N.hasOwnProperty(x)||(u||(u={}),u[x]=\"\");for(x in N)N.hasOwnProperty(x)&&C[x]!==N[x]&&(u||(u={}),u[x]=N[x])}else u||(w||(w=[]),w.push(_,u)),u=N;else\"dangerouslySetInnerHTML\"===_?(N=N?N.__html:void 0,C=C?C.__html:void 0,null!=N&&C!==N&&(w=w||[]).push(_,N)):\"children\"===_?\"string\"!==typeof N&&\"number\"!==typeof N||(w=w||[]).push(_,\"\"+N):\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&(z.hasOwnProperty(_)?(null!=N&&\"onScroll\"===_&&D(\"scroll\",a),w||C===N||(w=[])):(w=w||[]).push(_,N))}u&&(w=w||[]).push(\"style\",u);var _=w;(i.updateQueue=_)&&(i.flags|=4)}};Ol=function(a,i,u,o){u!==o&&(i.flags|=4)};function Ej(a,i){if(!Mr)switch(a.tailMode){case\"hidden\":i=a.tail;for(var u=null;null!==i;)null!==i.alternate&&(u=i),i=i.sibling;null===u?a.tail=null:u.sibling=null;break;case\"collapsed\":u=a.tail;for(var o=null;null!==u;)null!==u.alternate&&(o=u),u=u.sibling;null===o?i||null===a.tail?a.tail=null:a.tail.sibling=null:o.sibling=null}}function S(a){var i=null!==a.alternate&&a.alternate.child===a.child,u=0,o=0;if(i)for(var s=a.child;null!==s;)u|=s.lanes|s.childLanes,o|=14680064&s.subtreeFlags,o|=14680064&s.flags,s.return=a,s=s.sibling;else for(s=a.child;null!==s;)u|=s.lanes|s.childLanes,o|=s.subtreeFlags,o|=s.flags,s.return=a,s=s.sibling;a.subtreeFlags|=o;a.childLanes=u;return i}function Fj(a,i,u){var o=i.pendingProps;wg(i);switch(i.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(i),null;case 1:return Zf(i.type)&&$f(),S(i),null;case 3:o=i.stateNode;Jh();E(br);E(vr);Oh();o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null);null!==a&&null!==a.child||(Gg(i)?i.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(256&i.flags)||(i.flags|=1024,null!==Fr&&(Gj(Fr),Fr=null)));Fl(a,i);S(i);return null;case 5:Lh(i);var s=Hh(Gr.current);u=i.type;if(null!==a&&null!=i.stateNode)Rl(a,i,u,o,s),a.ref!==i.ref&&(i.flags|=512,i.flags|=2097152);else{if(!o){if(null===i.stateNode)throw Error(p(166));S(i);return null}a=Hh(Yr.current);if(Gg(i)){o=i.stateNode;u=i.type;var w=i.memoizedProps;o[or]=i;o[sr]=w;a=0!==(1&i.mode);switch(u){case\"dialog\":D(\"cancel\",o);D(\"close\",o);break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",o);break;case\"video\":case\"audio\":for(s=0;s<Gt.length;s++)D(Gt[s],o);break;case\"source\":D(\"error\",o);break;case\"img\":case\"image\":case\"link\":D(\"error\",o);D(\"load\",o);break;case\"details\":D(\"toggle\",o);break;case\"input\":Za(o,w);D(\"invalid\",o);break;case\"select\":o._wrapperState={wasMultiple:!!w.multiple};D(\"invalid\",o);break;case\"textarea\":hb(o,w),D(\"invalid\",o)}ub(u,w);s=null;for(var x in w)if(w.hasOwnProperty(x)){var C=w[x];\"children\"===x?\"string\"===typeof C?o.textContent!==C&&(!0!==w.suppressHydrationWarning&&Af(o.textContent,C,a),s=[\"children\",C]):\"number\"===typeof C&&o.textContent!==\"\"+C&&(!0!==w.suppressHydrationWarning&&Af(o.textContent,C,a),s=[\"children\",\"\"+C]):z.hasOwnProperty(x)&&null!=C&&\"onScroll\"===x&&D(\"scroll\",o)}switch(u){case\"input\":Va(o);db(o,w,!0);break;case\"textarea\":Va(o);jb(o);break;case\"select\":case\"option\":break;default:\"function\"===typeof w.onClick&&(o.onclick=Bf)}o=s;i.updateQueue=o;null!==o&&(i.flags|=4)}else{x=9===s.nodeType?s:s.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(u));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===u?(a=x.createElement(\"div\"),a.innerHTML=\"<script><\\/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof o.is?a=x.createElement(u,{is:o.is}):(a=x.createElement(u),\"select\"===u&&(x=a,o.multiple?x.multiple=!0:o.size&&(x.size=o.size))):a=x.createElementNS(a,u);a[or]=i;a[sr]=o;Ml(a,i,!1,!1);i.stateNode=a;e:{x=vb(u,o);switch(u){case\"dialog\":D(\"cancel\",a);D(\"close\",a);s=o;break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",a);s=o;break;case\"video\":case\"audio\":for(s=0;s<Gt.length;s++)D(Gt[s],a);s=o;break;case\"source\":D(\"error\",a);s=o;break;case\"img\":case\"image\":case\"link\":D(\"error\",a);D(\"load\",a);s=o;break;case\"details\":D(\"toggle\",a);s=o;break;case\"input\":Za(a,o);s=Ya(a,o);D(\"invalid\",a);break;case\"option\":s=o;break;case\"select\":a._wrapperState={wasMultiple:!!o.multiple};s=ie({},o,{value:void 0});D(\"invalid\",a);break;case\"textarea\":hb(a,o);s=gb(a,o);D(\"invalid\",a);break;default:s=o}ub(u,s);C=s;for(w in C)if(C.hasOwnProperty(w)){var N=C[w];\"style\"===w?sb(a,N):\"dangerouslySetInnerHTML\"===w?(N=N?N.__html:void 0,null!=N&&pe(a,N)):\"children\"===w?\"string\"===typeof N?(\"textarea\"!==u||\"\"!==N)&&ob(a,N):\"number\"===typeof N&&ob(a,\"\"+N):\"suppressContentEditableWarning\"!==w&&\"suppressHydrationWarning\"!==w&&\"autoFocus\"!==w&&(z.hasOwnProperty(w)?null!=N&&\"onScroll\"===w&&D(\"scroll\",a):null!=N&&ta(a,w,N,x))}switch(u){case\"input\":Va(a);db(a,o,!1);break;case\"textarea\":Va(a);jb(a);break;case\"option\":null!=o.value&&a.setAttribute(\"value\",\"\"+Sa(o.value));break;case\"select\":a.multiple=!!o.multiple;w=o.value;null!=w?fb(a,!!o.multiple,w,!1):null!=o.defaultValue&&fb(a,!!o.multiple,o.defaultValue,!0);break;default:\"function\"===typeof s.onClick&&(a.onclick=Bf)}switch(u){case\"button\":case\"input\":case\"select\":case\"textarea\":o=!!o.autoFocus;break e;case\"img\":o=!0;break e;default:o=!1}}o&&(i.flags|=4)}null!==i.ref&&(i.flags|=512,i.flags|=2097152)}S(i);return null;case 6:if(a&&null!=i.stateNode)Ol(a,i,a.memoizedProps,o);else{if(\"string\"!==typeof o&&null===i.stateNode)throw Error(p(166));u=Hh(Gr.current);Hh(Yr.current);if(Gg(i)){o=i.stateNode;u=i.memoizedProps;o[or]=i;if((w=o.nodeValue!==u)&&(a=Tr,null!==a))switch(a.tag){case 3:Af(o.nodeValue,u,0!==(1&a.mode));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(o.nodeValue,u,0!==(1&a.mode))}w&&(i.flags|=4)}else o=(9===u.nodeType?u:u.ownerDocument).createTextNode(o),o[or]=i,i.stateNode=o}S(i);return null;case 13:E(qr);o=i.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(Mr&&null!==Dr&&0!==(1&i.mode)&&0===(128&i.flags))Hg(),Ig(),i.flags|=98560,w=!1;else if(w=Gg(i),null!==o&&null!==o.dehydrated){if(null===a){if(!w)throw Error(p(318));w=i.memoizedState;w=null!==w?w.dehydrated:null;if(!w)throw Error(p(317));w[or]=i}else Ig(),0===(128&i.flags)&&(i.memoizedState=null),i.flags|=4;S(i);w=!1}else null!==Fr&&(Gj(Fr),Fr=null),w=!0;if(!w)return 65536&i.flags?i:null}if(0!==(128&i.flags))return i.lanes=u,i;o=null!==o;o!==(null!==a&&null!==a.memoizedState)&&o&&(i.child.flags|=8192,0!==(1&i.mode)&&(null===a||0!==(1&qr.current)?0===ra&&(ra=3):uj()));null!==i.updateQueue&&(i.flags|=4);S(i);return null;case 4:return Jh(),Fl(a,i),null===a&&sf(i.stateNode.containerInfo),S(i),null;case 10:return Rg(i.type._context),S(i),null;case 17:return Zf(i.type)&&$f(),S(i),null;case 19:E(qr);w=i.memoizedState;if(null===w)return S(i),null;o=0!==(128&i.flags);x=w.rendering;if(null===x)if(o)Ej(w,!1);else{if(0!==ra||null!==a&&0!==(128&a.flags))for(a=i.child;null!==a;){x=Mh(a);if(null!==x){i.flags|=128;Ej(w,!1);o=x.updateQueue;null!==o&&(i.updateQueue=o,i.flags|=4);i.subtreeFlags=0;o=u;for(u=i.child;null!==u;)w=u,a=o,w.flags&=14680066,x=w.alternate,null===x?(w.childLanes=0,w.lanes=a,w.child=null,w.subtreeFlags=0,w.memoizedProps=null,w.memoizedState=null,w.updateQueue=null,w.dependencies=null,w.stateNode=null):(w.childLanes=x.childLanes,w.lanes=x.lanes,w.child=x.child,w.subtreeFlags=0,w.deletions=null,w.memoizedProps=x.memoizedProps,w.memoizedState=x.memoizedState,w.updateQueue=x.updateQueue,w.type=x.type,a=x.dependencies,w.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),u=u.sibling;G(qr,1&qr.current|2);return i.child}a=a.sibling}null!==w.tail&&tn()>ma&&(i.flags|=128,o=!0,Ej(w,!1),i.lanes=4194304)}else{if(!o)if(a=Mh(x),null!==a){if(i.flags|=128,o=!0,u=a.updateQueue,null!==u&&(i.updateQueue=u,i.flags|=4),Ej(w,!0),null===w.tail&&\"hidden\"===w.tailMode&&!x.alternate&&!Mr)return S(i),null}else 2*tn()-w.renderingStartTime>ma&&1073741824!==u&&(i.flags|=128,o=!0,Ej(w,!1),i.lanes=4194304);w.isBackwards?(x.sibling=i.child,i.child=x):(u=w.last,null!==u?u.sibling=x:i.child=x,w.last=x)}if(null!==w.tail)return i=w.tail,w.rendering=i,w.tail=i.sibling,w.renderingStartTime=tn(),i.sibling=null,u=qr.current,G(qr,o?1&u|2:1&u),i;S(i);return null;case 22:case 23:return Ij(),o=null!==i.memoizedState,null!==a&&null!==a.memoizedState!==o&&(i.flags|=8192),o&&0!==(1&i.mode)?0!==(1073741824&ea)&&(S(i),6&i.subtreeFlags&&(i.flags|=8192)):S(i),null;case 24:return null;case 25:return null}throw Error(p(156,i.tag))}function Jj(a,i){wg(i);switch(i.tag){case 1:return Zf(i.type)&&$f(),a=i.flags,65536&a?(i.flags=-65537&a|128,i):null;case 3:return Jh(),E(br),E(vr),Oh(),a=i.flags,0!==(65536&a)&&0===(128&a)?(i.flags=-65537&a|128,i):null;case 5:return Lh(i),null;case 13:E(qr);a=i.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===i.alternate)throw Error(p(340));Ig()}a=i.flags;return 65536&a?(i.flags=-65537&a|128,i):null;case 19:return E(qr),null;case 4:return Jh(),null;case 10:return Rg(i.type._context),null;case 22:case 23:return Ij(),null;case 24:return null;default:return null}}var Il=!1,Ul=!1,Vl=\"function\"===typeof WeakSet?WeakSet:Set,Wl=null;function Mj(a,i){var u=a.ref;if(null!==u)if(\"function\"===typeof u)try{u(null)}catch(u){W(a,i,u)}else u.current=null}function Nj(a,i,u){try{u()}catch(u){W(a,i,u)}}var Ql=!1;function Pj(a,i){nr=Dn;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var u={start:a.selectionStart,end:a.selectionEnd};else e:{u=(u=a.ownerDocument)&&u.defaultView||window;var o=u.getSelection&&u.getSelection();if(o&&0!==o.rangeCount){u=o.anchorNode;var s=o.anchorOffset,w=o.focusNode;o=o.focusOffset;try{u.nodeType,w.nodeType}catch(a){u=null;break e}var x=0,C=-1,z=-1,N=0,_=0,j=a,P=null;n:for(;;){for(var T;;){j!==u||0!==s&&3!==j.nodeType||(C=x+s);j!==w||0!==o&&3!==j.nodeType||(z=x+o);3===j.nodeType&&(x+=j.nodeValue.length);if(null===(T=j.firstChild))break;P=j;j=T}for(;;){if(j===a)break n;P===u&&++N===s&&(C=x);P===w&&++_===o&&(z=x);if(null!==(T=j.nextSibling))break;j=P;P=j.parentNode}j=T}u=-1===C||-1===z?null:{start:C,end:z}}else u=null}u=u||{start:0,end:0}}else u=null;tr={focusedElem:a,selectionRange:u};Dn=!1;for(Wl=i;null!==Wl;)if(i=Wl,a=i.child,0!==(1028&i.subtreeFlags)&&null!==a)a.return=i,Wl=a;else for(;null!==Wl;){i=Wl;try{var M=i.alternate;if(0!==(1024&i.flags))switch(i.tag){case 0:case 11:case 15:break;case 1:if(null!==M){var F=M.memoizedProps,R=M.memoizedState,O=i.stateNode,I=O.getSnapshotBeforeUpdate(i.elementType===i.type?F:Lg(i.type,F),R);O.__reactInternalSnapshotBeforeUpdate=I}break;case 3:var U=i.stateNode.containerInfo;1===U.nodeType?U.textContent=\"\":9===U.nodeType&&U.documentElement&&U.removeChild(U.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163))}}catch(a){W(i,i.return,a)}a=i.sibling;if(null!==a){a.return=i.return;Wl=a;break}Wl=i.return}M=Ql;Ql=!1;return M}function Qj(a,i,u){var o=i.updateQueue;o=null!==o?o.lastEffect:null;if(null!==o){var s=o=o.next;do{if((s.tag&a)===a){var w=s.destroy;s.destroy=void 0;void 0!==w&&Nj(i,u,w)}s=s.next}while(s!==o)}}function Rj(a,i){i=i.updateQueue;i=null!==i?i.lastEffect:null;if(null!==i){var u=i=i.next;do{if((u.tag&a)===a){var o=u.create;u.destroy=o()}u=u.next}while(u!==i)}}function Sj(a){var i=a.ref;if(null!==i){var u=a.stateNode;switch(a.tag){case 5:a=u;break;default:a=u}\"function\"===typeof i?i(a):i.current=a}}function Tj(a){var i=a.alternate;null!==i&&(a.alternate=null,Tj(i));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(i=a.stateNode,null!==i&&(delete i[or],delete i[sr],delete i[fr],delete i[dr],delete i[pr]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}function Vj(a){e:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(2&a.flags)continue e;if(null===a.child||4===a.tag)continue e;a.child.return=a,a=a.child}if(!(2&a.flags))return a.stateNode}}function Wj(a,i,u){var o=a.tag;if(5===o||6===o)a=a.stateNode,i?8===u.nodeType?u.parentNode.insertBefore(a,i):u.insertBefore(a,i):(8===u.nodeType?(i=u.parentNode,i.insertBefore(a,u)):(i=u,i.appendChild(a)),u=u._reactRootContainer,null!==u&&void 0!==u||null!==i.onclick||(i.onclick=Bf));else if(4!==o&&(a=a.child,null!==a))for(Wj(a,i,u),a=a.sibling;null!==a;)Wj(a,i,u),a=a.sibling}function Xj(a,i,u){var o=a.tag;if(5===o||6===o)a=a.stateNode,i?u.insertBefore(a,i):u.appendChild(a);else if(4!==o&&(a=a.child,null!==a))for(Xj(a,i,u),a=a.sibling;null!==a;)Xj(a,i,u),a=a.sibling}var Al=null,Bl=!1;function Zj(a,i,u){for(u=u.child;null!==u;)ak(a,i,u),u=u.sibling}function ak(a,i,u){if(fn&&\"function\"===typeof fn.onCommitFiberUnmount)try{fn.onCommitFiberUnmount(cn,u)}catch(a){}switch(u.tag){case 5:Ul||Mj(u,i);case 6:var o=Al,s=Bl;Al=null;Zj(a,i,u);Al=o;Bl=s;null!==Al&&(Bl?(a=Al,u=u.stateNode,8===a.nodeType?a.parentNode.removeChild(u):a.removeChild(u)):Al.removeChild(u.stateNode));break;case 18:null!==Al&&(Bl?(a=Al,u=u.stateNode,8===a.nodeType?Kf(a.parentNode,u):1===a.nodeType&&Kf(a,u),bd(a)):Kf(Al,u.stateNode));break;case 4:o=Al;s=Bl;Al=u.stateNode.containerInfo;Bl=!0;Zj(a,i,u);Al=o;Bl=s;break;case 0:case 11:case 14:case 15:if(!Ul&&(o=u.updateQueue,null!==o&&(o=o.lastEffect,null!==o))){s=o=o.next;do{var w=s,x=w.destroy;w=w.tag;void 0!==x&&(0!==(2&w)||0!==(4&w))&&Nj(u,i,x);s=s.next}while(s!==o)}Zj(a,i,u);break;case 1:if(!Ul&&(Mj(u,i),o=u.stateNode,\"function\"===typeof o.componentWillUnmount))try{o.props=u.memoizedProps,o.state=u.memoizedState,o.componentWillUnmount()}catch(a){W(u,i,a)}Zj(a,i,u);break;case 21:Zj(a,i,u);break;case 22:1&u.mode?(Ul=(o=Ul)||null!==u.memoizedState,Zj(a,i,u),Ul=o):Zj(a,i,u);break;default:Zj(a,i,u)}}function bk(a){var i=a.updateQueue;if(null!==i){a.updateQueue=null;var u=a.stateNode;null===u&&(u=a.stateNode=new Vl);i.forEach((function(i){var o=ck.bind(null,a,i);u.has(i)||(u.add(i),i.then(o,o))}))}}function dk(a,i){var u=i.deletions;if(null!==u)for(var o=0;o<u.length;o++){var s=u[o];try{var w=a,x=i,C=x;e:for(;null!==C;){switch(C.tag){case 5:Al=C.stateNode;Bl=!1;break e;case 3:Al=C.stateNode.containerInfo;Bl=!0;break e;case 4:Al=C.stateNode.containerInfo;Bl=!0;break e}C=C.return}if(null===Al)throw Error(p(160));ak(w,x,s);Al=null;Bl=!1;var z=s.alternate;null!==z&&(z.return=null);s.return=null}catch(a){W(s,i,a)}}if(12854&i.subtreeFlags)for(i=i.child;null!==i;)ek(i,a),i=i.sibling}function ek(a,i){var u=a.alternate,o=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(i,a);fk(a);if(4&o){try{Qj(3,a,a.return),Rj(3,a)}catch(i){W(a,a.return,i)}try{Qj(5,a,a.return)}catch(i){W(a,a.return,i)}}break;case 1:dk(i,a);fk(a);512&o&&null!==u&&Mj(u,u.return);break;case 5:dk(i,a);fk(a);512&o&&null!==u&&Mj(u,u.return);if(32&a.flags){var s=a.stateNode;try{ob(s,\"\")}catch(i){W(a,a.return,i)}}if(4&o&&(s=a.stateNode,null!=s)){var w=a.memoizedProps,x=null!==u?u.memoizedProps:w,C=a.type,z=a.updateQueue;a.updateQueue=null;if(null!==z)try{\"input\"===C&&\"radio\"===w.type&&null!=w.name&&ab(s,w);vb(C,x);var N=vb(C,w);for(x=0;x<z.length;x+=2){var _=z[x],j=z[x+1];\"style\"===_?sb(s,j):\"dangerouslySetInnerHTML\"===_?pe(s,j):\"children\"===_?ob(s,j):ta(s,_,j,N)}switch(C){case\"input\":bb(s,w);break;case\"textarea\":ib(s,w);break;case\"select\":var P=s._wrapperState.wasMultiple;s._wrapperState.wasMultiple=!!w.multiple;var T=w.value;null!=T?fb(s,!!w.multiple,T,!1):P!==!!w.multiple&&(null!=w.defaultValue?fb(s,!!w.multiple,w.defaultValue,!0):fb(s,!!w.multiple,w.multiple?[]:\"\",!1))}s[sr]=w}catch(i){W(a,a.return,i)}}break;case 6:dk(i,a);fk(a);if(4&o){if(null===a.stateNode)throw Error(p(162));s=a.stateNode;w=a.memoizedProps;try{s.nodeValue=w}catch(i){W(a,a.return,i)}}break;case 3:dk(i,a);fk(a);if(4&o&&null!==u&&u.memoizedState.isDehydrated)try{bd(i.containerInfo)}catch(i){W(a,a.return,i)}break;case 4:dk(i,a);fk(a);break;case 13:dk(i,a);fk(a);s=a.child;8192&s.flags&&(w=null!==s.memoizedState,s.stateNode.isHidden=w,!w||null!==s.alternate&&null!==s.alternate.memoizedState||(ga=tn()));4&o&&bk(a);break;case 22:_=null!==u&&null!==u.memoizedState;1&a.mode?(Ul=(N=Ul)||_,dk(i,a),Ul=N):dk(i,a);fk(a);if(8192&o){N=null!==a.memoizedState;if((a.stateNode.isHidden=N)&&!_&&0!==(1&a.mode))for(Wl=a,_=a.child;null!==_;){for(j=Wl=_;null!==Wl;){P=Wl;T=P.child;switch(P.tag){case 0:case 11:case 14:case 15:Qj(4,P,P.return);break;case 1:Mj(P,P.return);var M=P.stateNode;if(\"function\"===typeof M.componentWillUnmount){o=P;u=P.return;try{i=o,M.props=i.memoizedProps,M.state=i.memoizedState,M.componentWillUnmount()}catch(a){W(o,u,a)}}break;case 5:Mj(P,P.return);break;case 22:if(null!==P.memoizedState){hk(j);continue}}null!==T?(T.return=P,Wl=T):hk(j)}_=_.sibling}e:for(_=null,j=a;;){if(5===j.tag){if(null===_){_=j;try{s=j.stateNode,N?(w=s.style,\"function\"===typeof w.setProperty?w.setProperty(\"display\",\"none\",\"important\"):w.display=\"none\"):(C=j.stateNode,z=j.memoizedProps.style,x=void 0!==z&&null!==z&&z.hasOwnProperty(\"display\")?z.display:null,C.style.display=rb(\"display\",x))}catch(i){W(a,a.return,i)}}}else if(6===j.tag){if(null===_)try{j.stateNode.nodeValue=N?\"\":j.memoizedProps}catch(i){W(a,a.return,i)}}else if((22!==j.tag&&23!==j.tag||null===j.memoizedState||j===a)&&null!==j.child){j.child.return=j;j=j.child;continue}if(j===a)break e;for(;null===j.sibling;){if(null===j.return||j.return===a)break e;_===j&&(_=null);j=j.return}_===j&&(_=null);j.sibling.return=j.return;j=j.sibling}}break;case 19:dk(i,a);fk(a);4&o&&bk(a);break;case 21:break;default:dk(i,a),fk(a)}}function fk(a){var i=a.flags;if(2&i){try{e:{for(var u=a.return;null!==u;){if(Uj(u)){var o=u;break e}u=u.return}throw Error(p(160))}switch(o.tag){case 5:var s=o.stateNode;32&o.flags&&(ob(s,\"\"),o.flags&=-33);var w=Vj(a);Xj(a,w,s);break;case 3:case 4:var x=o.stateNode.containerInfo,C=Vj(a);Wj(a,C,x);break;default:throw Error(p(161))}}catch(i){W(a,a.return,i)}a.flags&=-3}4096&i&&(a.flags&=-4097)}function ik(a,i,u){Wl=a;jk(a,i,u)}function jk(a,i,u){for(var o=0!==(1&a.mode);null!==Wl;){var s=Wl,w=s.child;if(22===s.tag&&o){var x=null!==s.memoizedState||Il;if(!x){var C=s.alternate,z=null!==C&&null!==C.memoizedState||Ul;C=Il;var N=Ul;Il=x;if((Ul=z)&&!N)for(Wl=s;null!==Wl;)x=Wl,z=x.child,22===x.tag&&null!==x.memoizedState?kk(s):null!==z?(z.return=x,Wl=z):kk(s);for(;null!==w;)Wl=w,jk(w,i,u),w=w.sibling;Wl=s;Il=C;Ul=N}lk(a,i,u)}else 0!==(8772&s.subtreeFlags)&&null!==w?(w.return=s,Wl=w):lk(a,i,u)}}function lk(a){for(;null!==Wl;){var i=Wl;if(0!==(8772&i.flags)){var u=i.alternate;try{if(0!==(8772&i.flags))switch(i.tag){case 0:case 11:case 15:Ul||Rj(5,i);break;case 1:var o=i.stateNode;if(4&i.flags&&!Ul)if(null===u)o.componentDidMount();else{var s=i.elementType===i.type?u.memoizedProps:Lg(i.type,u.memoizedProps);o.componentDidUpdate(s,u.memoizedState,o.__reactInternalSnapshotBeforeUpdate)}var w=i.updateQueue;null!==w&&ih(i,w,o);break;case 3:var x=i.updateQueue;if(null!==x){u=null;if(null!==i.child)switch(i.child.tag){case 5:u=i.child.stateNode;break;case 1:u=i.child.stateNode}ih(i,x,u)}break;case 5:var C=i.stateNode;if(null===u&&4&i.flags){u=C;var z=i.memoizedProps;switch(i.type){case\"button\":case\"input\":case\"select\":case\"textarea\":z.autoFocus&&u.focus();break;case\"img\":z.src&&(u.src=z.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===i.memoizedState){var N=i.alternate;if(null!==N){var _=N.memoizedState;if(null!==_){var j=_.dehydrated;null!==j&&bd(j)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(p(163))}Ul||512&i.flags&&Sj(i)}catch(a){W(i,i.return,a)}}if(i===a){Wl=null;break}u=i.sibling;if(null!==u){u.return=i.return;Wl=u;break}Wl=i.return}}function hk(a){for(;null!==Wl;){var i=Wl;if(i===a){Wl=null;break}var u=i.sibling;if(null!==u){u.return=i.return;Wl=u;break}Wl=i.return}}function kk(a){for(;null!==Wl;){var i=Wl;try{switch(i.tag){case 0:case 11:case 15:var u=i.return;try{Rj(4,i)}catch(a){W(i,u,a)}break;case 1:var o=i.stateNode;if(\"function\"===typeof o.componentDidMount){var s=i.return;try{o.componentDidMount()}catch(a){W(i,s,a)}}var w=i.return;try{Sj(i)}catch(a){W(i,w,a)}break;case 5:var x=i.return;try{Sj(i)}catch(a){W(i,x,a)}}}catch(a){W(i,i.return,a)}if(i===a){Wl=null;break}var C=i.sibling;if(null!==C){C.return=i.return;Wl=C;break}Wl=i.return}}var Hl=Math.ceil,$l=R.ReactCurrentDispatcher,Kl=R.ReactCurrentOwner,Yl=R.ReactCurrentBatchConfig,Zl=0,Gl=null,Xl=null,Jl=0,ea=0,na=Uf(0),ra=0,la=null,aa=0,ia=0,ua=0,ca=null,da=null,ga=0,ma=Infinity,va=null,ba=!1,ya=null,ka=null,wa=!1,Ea=null,xa=0,Ca=0,za=null,Na=-1,La=0;function L(){return 0!==(6&Zl)?tn():-1!==Na?Na:Na=tn()}function lh(a){if(0===(1&a.mode))return 1;if(0!==(2&Zl)&&0!==Jl)return Jl&-Jl;if(null!==Rr.transition)return 0===La&&(La=yc()),La;a=vn;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,i,u,o){if(50<Ca)throw Ca=0,za=null,Error(p(185));Ac(a,u,o);0!==(2&Zl)&&a===Gl||(a===Gl&&(0===(2&Zl)&&(ia|=u),4===ra&&Dk(a,Jl)),Ek(a,o),1===u&&0===Zl&&0===(1&i.mode)&&(ma=tn()+500,wr&&jg()))}function Ek(a,i){var u=a.callbackNode;wc(a,i);var o=uc(a,a===Gl?Jl:0);if(0===o)null!==u&&Xe(u),a.callbackNode=null,a.callbackPriority=0;else if(i=o&-o,a.callbackPriority!==i){null!=u&&Xe(u);if(1===i)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),ir((function(){0===(6&Zl)&&jg()})),u=null;else{switch(Dc(o)){case 1:u=ln;break;case 4:u=an;break;case 16:u=un;break;case 536870912:u=sn;break;default:u=un}u=Gk(u,Hk.bind(null,a))}a.callbackPriority=i;a.callbackNode=u}}function Hk(a,i){Na=-1;La=0;if(0!==(6&Zl))throw Error(p(327));var u=a.callbackNode;if(Ik()&&a.callbackNode!==u)return null;var o=uc(a,a===Gl?Jl:0);if(0===o)return null;if(0!==(30&o)||0!==(o&a.expiredLanes)||i)i=Jk(a,o);else{i=o;var s=Zl;Zl|=2;var w=Kk();Gl===a&&Jl===i||(va=null,ma=tn()+500,Lk(a,i));do{try{Mk();break}catch(i){Nk(a,i)}}while(1);Qg();$l.current=w;Zl=s;null!==Xl?i=0:(Gl=null,Jl=0,i=ra)}if(0!==i){2===i&&(s=xc(a),0!==s&&(o=s,i=Ok(a,s)));if(1===i)throw u=la,Lk(a,0),Dk(a,o),Ek(a,tn()),u;if(6===i)Dk(a,o);else{s=a.current.alternate;if(0===(30&o)&&!Pk(s)&&(i=Jk(a,o),2===i&&(w=xc(a),0!==w&&(o=w,i=Ok(a,w))),1===i))throw u=la,Lk(a,0),Dk(a,o),Ek(a,tn()),u;a.finishedWork=s;a.finishedLanes=o;switch(i){case 0:case 1:throw Error(p(345));case 2:Qk(a,da,va);break;case 3:Dk(a,o);if((130023424&o)===o&&(i=ga+500-tn(),10<i)){if(0!==uc(a,0))break;s=a.suspendedLanes;if((s&o)!==o){L();a.pingedLanes|=a.suspendedLanes&s;break}a.timeoutHandle=rr(Qk.bind(null,a,da,va),i);break}Qk(a,da,va);break;case 4:Dk(a,o);if((4194240&o)===o)break;i=a.eventTimes;for(s=-1;0<o;){var x=31-dn(o);w=1<<x;x=i[x];x>s&&(s=x);o&=~w}o=s;o=tn()-o;o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Hl(o/1960))-o;if(10<o){a.timeoutHandle=rr(Qk.bind(null,a,da,va),o);break}Qk(a,da,va);break;case 5:Qk(a,da,va);break;default:throw Error(p(329))}}}Ek(a,tn());return a.callbackNode===u?Hk.bind(null,a):null}function Ok(a,i){var u=ca;a.current.memoizedState.isDehydrated&&(Lk(a,i).flags|=256);a=Jk(a,i);2!==a&&(i=da,da=u,null!==i&&Gj(i));return a}function Gj(a){null===da?da=a:da.push.apply(da,a)}function Pk(a){for(var i=a;;){if(16384&i.flags){var u=i.updateQueue;if(null!==u&&(u=u.stores,null!==u))for(var o=0;o<u.length;o++){var s=u[o],w=s.getSnapshot;s=s.value;try{if(!Pt(w(),s))return!1}catch(a){return!1}}}u=i.child;if(16384&i.subtreeFlags&&null!==u)u.return=i,i=u;else{if(i===a)break;for(;null===i.sibling;){if(null===i.return||i.return===a)return!0;i=i.return}i.sibling.return=i.return;i=i.sibling}}return!0}function Dk(a,i){i&=~ua;i&=~ia;a.suspendedLanes|=i;a.pingedLanes&=~i;for(a=a.expirationTimes;0<i;){var u=31-dn(i),o=1<<u;a[u]=-1;i&=~o}}function Fk(a){if(0!==(6&Zl))throw Error(p(327));Ik();var i=uc(a,0);if(0===(1&i))return Ek(a,tn()),null;var u=Jk(a,i);if(0!==a.tag&&2===u){var o=xc(a);0!==o&&(i=o,u=Ok(a,o))}if(1===u)throw u=la,Lk(a,0),Dk(a,i),Ek(a,tn()),u;if(6===u)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=i;Qk(a,da,va);Ek(a,tn());return null}function Rk(a,i){var u=Zl;Zl|=1;try{return a(i)}finally{Zl=u,0===Zl&&(ma=tn()+500,wr&&jg())}}function Sk(a){null!==Ea&&0===Ea.tag&&0===(6&Zl)&&Ik();var i=Zl;Zl|=1;var u=Yl.transition,o=vn;try{if(Yl.transition=null,vn=1,a)return a()}finally{vn=o,Yl.transition=u,Zl=i,0===(6&Zl)&&jg()}}function Ij(){ea=na.current;E(na)}function Lk(a,i){a.finishedWork=null;a.finishedLanes=0;var u=a.timeoutHandle;-1!==u&&(a.timeoutHandle=-1,lr(u));if(null!==Xl)for(u=Xl.return;null!==u;){var o=u;wg(o);switch(o.tag){case 1:o=o.type.childContextTypes;null!==o&&void 0!==o&&$f();break;case 3:Jh();E(br);E(vr);Oh();break;case 5:Lh(o);break;case 4:Jh();break;case 13:E(qr);break;case 19:E(qr);break;case 10:Rg(o.type._context);break;case 22:case 23:Ij()}u=u.return}Gl=a;Xl=a=wh(a.current,null);Jl=ea=i;ra=0;la=null;ua=ia=aa=0;da=ca=null;if(null!==Wr){for(i=0;i<Wr.length;i++)if(u=Wr[i],o=u.interleaved,null!==o){u.interleaved=null;var s=o.next,w=u.pending;if(null!==w){var x=w.next;w.next=s;o.next=x}u.pending=o}Wr=null}return a}function Nk(a,i){do{var u=Xl;try{Qg();Jr.current=Cl;if(wl){for(var o=ul.memoizedState;null!==o;){var s=o.queue;null!==s&&(s.pending=null);o=o.next}wl=!1}ll=0;yl=vl=ul=null;Sl=!1;El=0;Kl.current=null;if(null===u||null===u.return){ra=1;la=i;Xl=null;break}e:{var w=a,x=u.return,C=u,z=i;i=Jl;C.flags|=32768;if(null!==z&&\"object\"===typeof z&&\"function\"===typeof z.then){var N=z,_=C,j=_.tag;if(0===(1&_.mode)&&(0===j||11===j||15===j)){var P=_.alternate;P?(_.updateQueue=P.updateQueue,_.memoizedState=P.memoizedState,_.lanes=P.lanes):(_.updateQueue=null,_.memoizedState=null)}var T=Vi(x);if(null!==T){T.flags&=-257;Wi(T,x,C,w,i);1&T.mode&&Ti(w,N,i);i=T;z=N;var M=i.updateQueue;if(null===M){var F=new Set;F.add(z);i.updateQueue=F}else M.add(z);break e}if(0===(1&i)){Ti(w,N,i);uj();break e}z=Error(p(426))}else if(Mr&&1&C.mode){var R=Vi(x);if(null!==R){0===(65536&R.flags)&&(R.flags|=256);Wi(R,x,C,w,i);Jg(Ki(z,C));break e}}w=z=Ki(z,C);4!==ra&&(ra=2);null===ca?ca=[w]:ca.push(w);w=x;do{switch(w.tag){case 3:w.flags|=65536;i&=-i;w.lanes|=i;var O=Oi(w,z,i);fh(w,O);break e;case 1:C=z;var I=w.type,U=w.stateNode;if(0===(128&w.flags)&&(\"function\"===typeof I.getDerivedStateFromError||null!==U&&\"function\"===typeof U.componentDidCatch&&(null===ka||!ka.has(U)))){w.flags|=65536;i&=-i;w.lanes|=i;var V=Ri(w,C,i);fh(w,V);break e}}w=w.return}while(null!==w)}Tk(u)}catch(a){i=a;Xl===u&&null!==u&&(Xl=u=u.return);continue}break}while(1)}function Kk(){var a=$l.current;$l.current=Cl;return null===a?Cl:a}function uj(){0!==ra&&3!==ra&&2!==ra||(ra=4);null===Gl||0===(268435455&aa)&&0===(268435455&ia)||Dk(Gl,Jl)}function Jk(a,i){var u=Zl;Zl|=2;var o=Kk();Gl===a&&Jl===i||(va=null,Lk(a,i));do{try{Uk();break}catch(i){Nk(a,i)}}while(1);Qg();Zl=u;$l.current=o;if(null!==Xl)throw Error(p(261));Gl=null;Jl=0;return ra}function Uk(){for(;null!==Xl;)Vk(Xl)}function Mk(){for(;null!==Xl&&!en();)Vk(Xl)}function Vk(a){var i=_a(a.alternate,a,ea);a.memoizedProps=a.pendingProps;null===i?Tk(a):Xl=i;Kl.current=null}function Tk(a){var i=a;do{var u=i.alternate;a=i.return;if(0===(32768&i.flags)){if(u=Fj(u,i,ea),null!==u){Xl=u;return}}else{u=Jj(u,i);if(null!==u){u.flags&=32767;Xl=u;return}if(null===a){ra=6;Xl=null;return}a.flags|=32768,a.subtreeFlags=0,a.deletions=null}i=i.sibling;if(null!==i){Xl=i;return}Xl=i=a}while(null!==i);0===ra&&(ra=5)}function Qk(a,i,u){var o=vn,s=Yl.transition;try{Yl.transition=null,vn=1,Xk(a,i,u,o)}finally{Yl.transition=s,vn=o}return null}function Xk(a,i,u,o){do{Ik()}while(null!==Ea);if(0!==(6&Zl))throw Error(p(327));u=a.finishedWork;var s=a.finishedLanes;if(null===u)return null;a.finishedWork=null;a.finishedLanes=0;if(u===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var w=u.lanes|u.childLanes;Bc(a,w);a===Gl&&(Xl=Gl=null,Jl=0);0===(2064&u.subtreeFlags)&&0===(2064&u.flags)||wa||(wa=!0,Gk(un,(function(){Ik();return null})));w=0!==(15990&u.flags);if(0!==(15990&u.subtreeFlags)||w){w=Yl.transition;Yl.transition=null;var x=vn;vn=1;var C=Zl;Zl|=4;Kl.current=null;Pj(a,u);ek(u,a);Oe(tr);Dn=!!nr;tr=nr=null;a.current=u;ik(u,a,s);nn();Zl=C;vn=x;Yl.transition=w}else a.current=u;wa&&(wa=!1,Ea=a,xa=s);w=a.pendingLanes;0===w&&(ka=null);mc(u.stateNode,o);Ek(a,tn());if(null!==i)for(o=a.onRecoverableError,u=0;u<i.length;u++)s=i[u],o(s.value,{componentStack:s.stack,digest:s.digest});if(ba)throw ba=!1,a=ya,ya=null,a;0!==(1&xa)&&0!==a.tag&&Ik();w=a.pendingLanes;0!==(1&w)?a===za?Ca++:(Ca=0,za=a):Ca=0;jg();return null}function Ik(){if(null!==Ea){var a=Dc(xa),i=Yl.transition,u=vn;try{Yl.transition=null;vn=16>a?16:a;if(null===Ea)var o=!1;else{a=Ea;Ea=null;xa=0;if(0!==(6&Zl))throw Error(p(331));var s=Zl;Zl|=4;for(Wl=a.current;null!==Wl;){var w=Wl,x=w.child;if(0!==(16&Wl.flags)){var C=w.deletions;if(null!==C){for(var z=0;z<C.length;z++){var N=C[z];for(Wl=N;null!==Wl;){var _=Wl;switch(_.tag){case 0:case 11:case 15:Qj(8,_,w)}var j=_.child;if(null!==j)j.return=_,Wl=j;else for(;null!==Wl;){_=Wl;var P=_.sibling,T=_.return;Tj(_);if(_===N){Wl=null;break}if(null!==P){P.return=T;Wl=P;break}Wl=T}}}var M=w.alternate;if(null!==M){var F=M.child;if(null!==F){M.child=null;do{var R=F.sibling;F.sibling=null;F=R}while(null!==F)}}Wl=w}}if(0!==(2064&w.subtreeFlags)&&null!==x)x.return=w,Wl=x;else e:for(;null!==Wl;){w=Wl;if(0!==(2048&w.flags))switch(w.tag){case 0:case 11:case 15:Qj(9,w,w.return)}var O=w.sibling;if(null!==O){O.return=w.return;Wl=O;break e}Wl=w.return}}var I=a.current;for(Wl=I;null!==Wl;){x=Wl;var U=x.child;if(0!==(2064&x.subtreeFlags)&&null!==U)U.return=x,Wl=U;else e:for(x=I;null!==Wl;){C=Wl;if(0!==(2048&C.flags))try{switch(C.tag){case 0:case 11:case 15:Rj(9,C)}}catch(a){W(C,C.return,a)}if(C===x){Wl=null;break e}var V=C.sibling;if(null!==V){V.return=C.return;Wl=V;break e}Wl=C.return}}Zl=s;jg();if(fn&&\"function\"===typeof fn.onPostCommitFiberRoot)try{fn.onPostCommitFiberRoot(cn,a)}catch(a){}o=!0}return o}finally{vn=u,Yl.transition=i}}return!1}function Yk(a,i,u){i=Ki(u,i);i=Oi(a,i,1);a=dh(a,i,1);i=L();null!==a&&(Ac(a,1,i),Ek(a,i))}function W(a,i,u){if(3===a.tag)Yk(a,a,u);else for(;null!==i;){if(3===i.tag){Yk(i,a,u);break}if(1===i.tag){var o=i.stateNode;if(\"function\"===typeof i.type.getDerivedStateFromError||\"function\"===typeof o.componentDidCatch&&(null===ka||!ka.has(o))){a=Ki(u,a);a=Ri(i,a,1);i=dh(i,a,1);a=L();null!==i&&(Ac(i,1,a),Ek(i,a));break}}i=i.return}}function Ui(a,i,u){var o=a.pingCache;null!==o&&o.delete(i);i=L();a.pingedLanes|=a.suspendedLanes&u;Gl===a&&(Jl&u)===u&&(4===ra||3===ra&&(130023424&Jl)===Jl&&500>tn()-ga?Lk(a,0):ua|=u);Ek(a,i)}function Zk(a,i){0===i&&(0===(1&a.mode)?i=1:(i=mn,mn<<=1,0===(130023424&mn)&&(mn=4194304)));var u=L();a=Zg(a,i);null!==a&&(Ac(a,i,u),Ek(a,u))}function vj(a){var i=a.memoizedState,u=0;null!==i&&(u=i.retryLane);Zk(a,u)}function ck(a,i){var u=0;switch(a.tag){case 13:var o=a.stateNode;var s=a.memoizedState;null!==s&&(u=s.retryLane);break;case 19:o=a.stateNode;break;default:throw Error(p(314))}null!==o&&o.delete(i);Zk(a,u)}var _a;_a=function(a,i,u){if(null!==a)if(a.memoizedProps!==i.pendingProps||br.current)Tl=!0;else{if(0===(a.lanes&u)&&0===(128&i.flags))return Tl=!1,zj(a,i,u);Tl=0!==(131072&a.flags)}else Tl=!1,Mr&&0!==(1048576&i.flags)&&ug(i,zr,i.index);i.lanes=0;switch(i.tag){case 2:var o=i.type;jj(a,i);a=i.pendingProps;var s=Yf(i,vr.current);Tg(i,u);s=Xh(null,i,o,a,s,u);var w=bi();i.flags|=1;\"object\"===typeof s&&null!==s&&\"function\"===typeof s.render&&void 0===s.$$typeof?(i.tag=1,i.memoizedState=null,i.updateQueue=null,Zf(o)?(w=!0,cg(i)):w=!1,i.memoizedState=null!==s.state&&void 0!==s.state?s.state:null,ah(i),s.updater=Br,i.stateNode=s,s._reactInternals=i,rh(i,o,a,u),i=kj(null,i,o,!0,w,u)):(i.tag=0,Mr&&w&&vg(i),Yi(null,i,s,u),i=i.child);return i;case 16:o=i.elementType;e:{jj(a,i);a=i.pendingProps;s=o._init;o=s(o._payload);i.type=o;s=i.tag=$k(o);a=Lg(o,a);switch(s){case 0:i=dj(null,i,o,a,u);break e;case 1:i=ij(null,i,o,a,u);break e;case 11:i=Zi(null,i,o,a,u);break e;case 14:i=aj(null,i,o,Lg(o.type,a),u);break e}throw Error(p(306,o,\"\"))}return i;case 0:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),dj(a,i,o,s,u);case 1:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),ij(a,i,o,s,u);case 3:e:{lj(i);if(null===a)throw Error(p(387));o=i.pendingProps;w=i.memoizedState;s=w.element;bh(a,i);gh(i,o,null,u);var x=i.memoizedState;o=x.element;if(w.isDehydrated){if(w={element:o,isDehydrated:!1,cache:x.cache,pendingSuspenseBoundaries:x.pendingSuspenseBoundaries,transitions:x.transitions},i.updateQueue.baseState=w,i.memoizedState=w,256&i.flags){s=Ki(Error(p(423)),i);i=mj(a,i,o,u,s);break e}if(o!==s){s=Ki(Error(p(424)),i);i=mj(a,i,o,u,s);break e}for(Dr=Lf(i.stateNode.containerInfo.firstChild),Tr=i,Mr=!0,Fr=null,u=$r(i,null,o,u),i.child=u;u;)u.flags=-3&u.flags|4096,u=u.sibling}else{Ig();if(o===s){i=$i(a,i,u);break e}Yi(a,i,o,u)}i=i.child}return i;case 5:return Kh(i),null===a&&Eg(i),o=i.type,s=i.pendingProps,w=null!==a?a.memoizedProps:null,x=s.children,Ef(o,s)?x=null:null!==w&&Ef(o,w)&&(i.flags|=32),hj(a,i),Yi(a,i,x,u),i.child;case 6:return null===a&&Eg(i),null;case 13:return pj(a,i,u);case 4:return Ih(i,i.stateNode.containerInfo),o=i.pendingProps,null===a?i.child=Hr(i,null,o,u):Yi(a,i,o,u),i.child;case 11:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),Zi(a,i,o,s,u);case 7:return Yi(a,i,i.pendingProps,u),i.child;case 8:return Yi(a,i,i.pendingProps.children,u),i.child;case 12:return Yi(a,i,i.pendingProps.children,u),i.child;case 10:e:{o=i.type._context;s=i.pendingProps;w=i.memoizedProps;x=s.value;G(Or,o._currentValue);o._currentValue=x;if(null!==w)if(Pt(w.value,x)){if(w.children===s.children&&!br.current){i=$i(a,i,u);break e}}else for(w=i.child,null!==w&&(w.return=i);null!==w;){var C=w.dependencies;if(null!==C){x=w.child;for(var z=C.firstContext;null!==z;){if(z.context===o){if(1===w.tag){z=ch(-1,u&-u);z.tag=2;var N=w.updateQueue;if(null!==N){N=N.shared;var _=N.pending;null===_?z.next=z:(z.next=_.next,_.next=z);N.pending=z}}w.lanes|=u;z=w.alternate;null!==z&&(z.lanes|=u);Sg(w.return,u,i);C.lanes|=u;break}z=z.next}}else if(10===w.tag)x=w.type===i.type?null:w.child;else if(18===w.tag){x=w.return;if(null===x)throw Error(p(341));x.lanes|=u;C=x.alternate;null!==C&&(C.lanes|=u);Sg(x,u,i);x=w.sibling}else x=w.child;if(null!==x)x.return=w;else for(x=w;null!==x;){if(x===i){x=null;break}w=x.sibling;if(null!==w){w.return=x.return;x=w;break}x=x.return}w=x}Yi(a,i,s.children,u);i=i.child}return i;case 9:return s=i.type,o=i.pendingProps.children,Tg(i,u),s=Vg(s),o=o(s),i.flags|=1,Yi(a,i,o,u),i.child;case 14:return o=i.type,s=Lg(o,i.pendingProps),s=Lg(o.type,s),aj(a,i,o,s,u);case 15:return cj(a,i,i.type,i.pendingProps,u);case 17:return o=i.type,s=i.pendingProps,s=i.elementType===o?s:Lg(o,s),jj(a,i),i.tag=1,Zf(o)?(a=!0,cg(i)):a=!1,Tg(i,u),ph(i,o,s),rh(i,o,s,u),kj(null,i,o,!0,a,u);case 19:return yj(a,i,u);case 22:return ej(a,i,u)}throw Error(p(156,i.tag))};function Gk(a,i){return qe(a,i)}function al(a,i,u,o){this.tag=a;this.key=u;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=i;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=o;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,i,u,o){return new al(a,i,u,o)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}function $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===$)return 11;if(a===Z)return 14}return 2}function wh(a,i){var u=a.alternate;null===u?(u=Bg(a.tag,i,a.key,a.mode),u.elementType=a.elementType,u.type=a.type,u.stateNode=a.stateNode,u.alternate=a,a.alternate=u):(u.pendingProps=i,u.type=a.type,u.flags=0,u.subtreeFlags=0,u.deletions=null);u.flags=14680064&a.flags;u.childLanes=a.childLanes;u.lanes=a.lanes;u.child=a.child;u.memoizedProps=a.memoizedProps;u.memoizedState=a.memoizedState;u.updateQueue=a.updateQueue;i=a.dependencies;u.dependencies=null===i?null:{lanes:i.lanes,firstContext:i.firstContext};u.sibling=a.sibling;u.index=a.index;u.ref=a.ref;return u}function yh(a,i,u,o,s,w){var x=2;o=a;if(\"function\"===typeof a)bj(a)&&(x=1);else if(\"string\"===typeof a)x=5;else e:switch(a){case U:return Ah(u.children,s,w,i);case V:x=8;s|=8;break;case A:return a=Bg(12,u,i,2|s),a.elementType=A,a.lanes=w,a;case K:return a=Bg(13,u,i,s),a.elementType=K,a.lanes=w,a;case Y:return a=Bg(19,u,i,s),a.elementType=Y,a.lanes=w,a;case ee:return qj(u,s,w,i);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case B:x=10;break e;case H:x=9;break e;case $:x=11;break e;case Z:x=14;break e;case X:x=16;o=null;break e}throw Error(p(130,null==a?a:typeof a,\"\"))}i=Bg(x,u,i,s);i.elementType=a;i.type=o;i.lanes=w;return i}function Ah(a,i,u,o){a=Bg(7,a,o,i);a.lanes=u;return a}function qj(a,i,u,o){a=Bg(22,a,o,i);a.elementType=ee;a.lanes=u;a.stateNode={isHidden:!1};return a}function xh(a,i,u){a=Bg(6,a,null,i);a.lanes=u;return a}function zh(a,i,u){i=Bg(4,null!==a.children?a.children:[],a.key,i);i.lanes=u;i.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return i}function bl(a,i,u,o,s){this.tag=i;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=o;this.onRecoverableError=s;this.mutableSourceEagerHydrationData=null}function cl(a,i,u,o,s,w,x,C,z){a=new bl(a,i,u,C,z);1===i?(i=1,!0===w&&(i|=8)):i=0;w=Bg(3,null,null,i);a.current=w;w.stateNode=a;w.memoizedState={element:o,isDehydrated:u,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(w);return a}function dl(a,i,u){var o=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:I,key:null==o?null:\"\"+o,children:a,containerInfo:i,implementation:u}}function el(a){if(!a)return mr;a=a._reactInternals;e:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var i=a;do{switch(i.tag){case 3:i=i.stateNode.context;break e;case 1:if(Zf(i.type)){i=i.stateNode.__reactInternalMemoizedMergedChildContext;break e}}i=i.return}while(null!==i);throw Error(p(171))}if(1===a.tag){var u=a.type;if(Zf(u))return bg(a,u,i)}return i}function fl(a,i,u,o,s,w,x,C,z){a=cl(u,o,!0,a,s,w,x,C,z);a.context=el(null);u=a.current;o=L();s=lh(u);w=ch(o,s);w.callback=void 0!==i&&null!==i?i:null;dh(u,w,s);a.current.lanes=s;Ac(a,s,o);Ek(a,o);return a}function gl(a,i,u,o){var s=i.current,w=L(),x=lh(s);u=el(u);null===i.context?i.context=u:i.pendingContext=u;i=ch(w,x);i.payload={element:a};o=void 0===o?null:o;null!==o&&(i.callback=o);a=dh(s,i,x);null!==a&&(mh(a,s,x,w),eh(a,s,x));return x}function hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,i){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var u=a.retryLane;a.retryLane=0!==u&&u<i?u:i}}function jl(a,i){il(a,i);(a=a.alternate)&&il(a,i)}function kl(){return null}var ja=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}nl.prototype.render=ml.prototype.render=function(a){var i=this._internalRoot;if(null===i)throw Error(p(409));gl(a,i,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var i=a.containerInfo;Sk((function(){gl(null,a,null,null)}));i[cr]=null}};function nl(a){this._internalRoot=a}nl.prototype.unstable_scheduleHydration=function(a){if(a){var i=wn();a={blockedOn:null,target:a,priority:i};for(var u=0;u<jn.length&&0!==i&&i<jn[u].priority;u++);jn.splice(u,0,a);0===u&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}function rl(a,i,u,o,s){if(s){if(\"function\"===typeof o){var w=o;o=function(){var a=hl(x);w.call(a)}}var x=fl(i,o,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=x;a[cr]=x.current;sf(8===a.nodeType?a.parentNode:a);Sk();return x}for(;s=a.lastChild;)a.removeChild(s);if(\"function\"===typeof o){var C=o;o=function(){var a=hl(z);C.call(a)}}var z=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=z;a[cr]=z.current;sf(8===a.nodeType?a.parentNode:a);Sk((function(){gl(i,z,u,o)}));return z}function sl(a,i,u,o,s){var w=u._reactRootContainer;if(w){var x=w;if(\"function\"===typeof s){var C=s;s=function(){var a=hl(x);C.call(a)}}gl(i,x,a,s)}else x=rl(u,i,a,s,o);return hl(x)}bn=function(a){switch(a.tag){case 3:var i=a.stateNode;if(i.current.memoizedState.isDehydrated){var u=tc(i.pendingLanes);0!==u&&(Cc(i,1|u),Ek(i,tn()),0===(6&Zl)&&(ma=tn()+500,jg()))}break;case 13:Sk((function(){var i=Zg(a,1);if(null!==i){var u=L();mh(i,a,1,u)}})),jl(a,1)}};yn=function(a){if(13===a.tag){var i=Zg(a,134217728);if(null!==i){var u=L();mh(i,a,134217728,u)}jl(a,134217728)}};kn=function(a){if(13===a.tag){var i=lh(a),u=Zg(a,i);if(null!==u){var o=L();mh(u,a,i,o)}jl(a,i)}};wn=function(){return vn};Sn=function(a,i){var u=vn;try{return vn=a,i()}finally{vn=u}};xe=function(a,i,u){switch(i){case\"input\":bb(a,u);i=u.name;if(\"radio\"===u.type&&null!=i){for(u=a;u.parentNode;)u=u.parentNode;u=u.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+i)+'][type=\"radio\"]');for(i=0;i<u.length;i++){var o=u[i];if(o!==a&&o.form===a.form){var s=Db(o);if(!s)throw Error(p(90));Wa(o);bb(o,s)}}}break;case\"textarea\":ib(a,u);break;case\"select\":i=u.value,null!=i&&fb(a,!!u.multiple,i,!1)}};Gb=Rk;Hb=Sk;var Da={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},Fa={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};var Ia={bundleType:Fa.bundleType,version:Fa.version,rendererPackageName:Fa.rendererPackageName,rendererConfig:Fa.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:R.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:Fa.findFiberByHostInstance||kl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var Aa=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Aa.isDisabled&&Aa.supportsFiber)try{cn=Aa.inject(Ia),fn=Aa}catch(a){}}s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Da;s.createPortal=function(a,i){var u=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(i))throw Error(p(200));return dl(a,i,null,u)};s.createRoot=function(a,i){if(!ol(a))throw Error(p(299));var u=!1,o=\"\",s=ja;null!==i&&void 0!==i&&(!0===i.unstable_strictMode&&(u=!0),void 0!==i.identifierPrefix&&(o=i.identifierPrefix),void 0!==i.onRecoverableError&&(s=i.onRecoverableError));i=cl(a,1,!1,null,null,u,!1,o,s);a[cr]=i.current;sf(8===a.nodeType?a.parentNode:a);return new ml(i)};s.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var i=a._reactInternals;if(void 0===i){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a))}a=Zb(i);a=null===a?null:a.stateNode;return a};s.flushSync=function(a){return Sk(a)};s.hydrate=function(a,i,u){if(!pl(i))throw Error(p(200));return sl(null,a,i,!0,u)};s.hydrateRoot=function(a,i,u){if(!ol(a))throw Error(p(405));var o=null!=u&&u.hydratedSources||null,s=!1,w=\"\",x=ja;null!==u&&void 0!==u&&(!0===u.unstable_strictMode&&(s=!0),void 0!==u.identifierPrefix&&(w=u.identifierPrefix),void 0!==u.onRecoverableError&&(x=u.onRecoverableError));i=fl(i,null,a,1,null!=u?u:null,s,!1,w,x);a[cr]=i.current;sf(a);if(o)for(a=0;a<o.length;a++)u=o[a],s=u._getVersion,s=s(u._source),null==i.mutableSourceEagerHydrationData?i.mutableSourceEagerHydrationData=[u,s]:i.mutableSourceEagerHydrationData.push(u,s);return new nl(i)};s.render=function(a,i,u){if(!pl(i))throw Error(p(200));return sl(null,a,i,!1,u)};s.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return!!a._reactRootContainer&&(Sk((function(){sl(null,null,a,!1,(function(){a._reactRootContainer=null;a[cr]=null}))})),!0)};s.unstable_batchedUpdates=Rk;s.unstable_renderSubtreeIntoContainer=function(a,i,u,o){if(!pl(u))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,i,u,!1,o)};s.version=\"18.2.0-next-9e3b772b8-20220608\";function checkDCE(){if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&\"function\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE)}catch(a){console.error(a)}}checkDCE();var Ba=s;var Ha=Ba;const $a=Ba.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ga=Ba.createPortal,Ja=Ba.createRoot,ai=Ba.findDOMNode,Si=Ba.flushSync,Ni=Ba.hydrate,_i=Ba.hydrateRoot,Pi=Ba.render,Qi=Ba.unmountComponentAtNode,Xi=Ba.unstable_batchedUpdates,eu=Ba.unstable_renderSubtreeIntoContainer,nu=Ba.version;export{$a as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Ga as createPortal,Ja as createRoot,Ha as default,ai as findDOMNode,Si as flushSync,Ni as hydrate,_i as hydrateRoot,Pi as render,Qi as unmountComponentAtNode,Xi as unstable_batchedUpdates,eu as unstable_renderSubtreeIntoContainer,nu as version};\n\n//# sourceMappingURL=index.js.map", "var e={};function f(e,n){var t=e.length;e.push(n);e:for(;0<t;){var a=t-1>>>1,l=e[a];if(!(0<g(l,n)))break e;e[a]=n,e[t]=l,t=a}}function h(e){return 0===e.length?null:e[0]}function k(e){if(0===e.length)return null;var n=e[0],t=e.pop();if(t!==n){e[0]=t;e:for(var a=0,l=e.length,r=l>>>1;a<r;){var i=2*(a+1)-1,u=e[i],o=i+1,s=e[o];if(0>g(u,t))o<l&&0>g(s,u)?(e[a]=s,e[o]=t,a=o):(e[a]=u,e[i]=t,a=i);else{if(!(o<l&&0>g(s,t)))break e;e[a]=s,e[o]=t,a=o}}}return n}function g(e,n){var t=e.sortIndex-n.sortIndex;return 0!==t?t:e.id-n.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var n=performance;e.unstable_now=function(){return n.now()}}else{var t=Date,a=t.now();e.unstable_now=function(){return t.now()-a}}var l=[],r=[],i=1,u=null,o=3,s=!1,c=!1,b=!1,d=\"function\"===typeof setTimeout?setTimeout:null,_=\"function\"===typeof clearTimeout?clearTimeout:null,v=\"undefined\"!==typeof setImmediate?setImmediate:null;\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(e){for(var n=h(r);null!==n;){if(null===n.callback)k(r);else{if(!(n.startTime<=e))break;k(r),n.sortIndex=n.expirationTime,f(l,n)}n=h(r)}}function H(e){b=!1;G(e);if(!c)if(null!==h(l))c=!0,I(J);else{var n=h(r);null!==n&&K(H,n.startTime-e)}}function J(n,t){c=!1;b&&(b=!1,_(m),m=-1);s=!0;var a=o;try{G(t);for(u=h(l);null!==u&&(!(u.expirationTime>t)||n&&!M());){var i=u.callback;if(\"function\"===typeof i){u.callback=null;o=u.priorityLevel;var d=i(u.expirationTime<=t);t=e.unstable_now();\"function\"===typeof d?u.callback=d:u===h(l)&&k(l);G(t)}else k(l);u=h(l)}if(null!==u)var v=!0;else{var p=h(r);null!==p&&K(H,p.startTime-t);v=!1}return v}finally{u=null,o=a,s=!1}}var p=!1,y=null,m=-1,w=5,P=-1;function M(){return!(e.unstable_now()-P<w)}function R(){if(null!==y){var n=e.unstable_now();P=n;var t=!0;try{t=y(!0,n)}finally{t?x():(p=!1,y=null)}}else p=!1}var x;if(\"function\"===typeof v)x=function(){v(R)};else if(\"undefined\"!==typeof MessageChannel){var C=new MessageChannel,T=C.port2;C.port1.onmessage=R;x=function(){T.postMessage(null)}}else x=function(){d(R,0)};function I(e){y=e;p||(p=!0,x())}function K(n,t){m=d((function(){n(e.unstable_now())}),t)}e.unstable_IdlePriority=5;e.unstable_ImmediatePriority=1;e.unstable_LowPriority=4;e.unstable_NormalPriority=3;e.unstable_Profiling=null;e.unstable_UserBlockingPriority=2;e.unstable_cancelCallback=function(e){e.callback=null};e.unstable_continueExecution=function(){c||s||(c=!0,I(J))};e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):w=0<e?Math.floor(1e3/e):5};e.unstable_getCurrentPriorityLevel=function(){return o};e.unstable_getFirstCallbackNode=function(){return h(l)};e.unstable_next=function(e){switch(o){case 1:case 2:case 3:var n=3;break;default:n=o}var t=o;o=n;try{return e()}finally{o=t}};e.unstable_pauseExecution=function(){};e.unstable_requestPaint=function(){};e.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var t=o;o=e;try{return n()}finally{o=t}};e.unstable_scheduleCallback=function(n,t,a){var u=e.unstable_now();\"object\"===typeof a&&null!==a?(a=a.delay,a=\"number\"===typeof a&&0<a?u+a:u):a=u;switch(n){case 1:var o=-1;break;case 2:o=250;break;case 5:o=1073741823;break;case 4:o=1e4;break;default:o=5e3}o=a+o;n={id:i++,callback:t,priorityLevel:n,startTime:a,expirationTime:o,sortIndex:-1};a>u?(n.sortIndex=a,f(r,n),null===h(l)&&n===h(r)&&(b?(_(m),m=-1):b=!0,K(H,a-u))):(n.sortIndex=o,f(l,n),c||s||(c=!0,I(J)));return n};e.unstable_shouldYield=M;e.unstable_wrapCallback=function(e){var n=o;return function(){var t=o;o=n;try{return e.apply(this,arguments)}finally{o=t}}};const L=e.unstable_now,F=e.unstable_IdlePriority,E=e.unstable_ImmediatePriority,N=e.unstable_LowPriority,j=e.unstable_NormalPriority,q=e.unstable_Profiling,B=e.unstable_UserBlockingPriority,U=e.unstable_cancelCallback,W=e.unstable_continueExecution,Y=e.unstable_forceFrameRate,D=e.unstable_getCurrentPriorityLevel,z=e.unstable_getFirstCallbackNode,A=e.unstable_next,O=e.unstable_pauseExecution,Q=e.unstable_requestPaint,S=e.unstable_runWithPriority,V=e.unstable_scheduleCallback,X=e.unstable_shouldYield,Z=e.unstable_wrapCallback;export{e as default,F as unstable_IdlePriority,E as unstable_ImmediatePriority,N as unstable_LowPriority,j as unstable_NormalPriority,q as unstable_Profiling,B as unstable_UserBlockingPriority,U as unstable_cancelCallback,W as unstable_continueExecution,Y as unstable_forceFrameRate,D as unstable_getCurrentPriorityLevel,z as unstable_getFirstCallbackNode,A as unstable_next,L as unstable_now,O as unstable_pauseExecution,Q as unstable_requestPaint,S as unstable_runWithPriority,V as unstable_scheduleCallback,X as unstable_shouldYield,Z as unstable_wrapCallback};\n\n//# sourceMappingURL=index.js.map", "import {\n  AnimatePresence,\n  AsyncMotionValueAnimation,\n  DOMKeyframesResolver,\n  DeprecatedLayoutGroupContext,\n  DragControls,\n  FlatTree,\n  GroupAnimation,\n  GroupAnimationWithThen,\n  JSAnimation,\n  KeyframeResolver,\n  LayoutGroup,\n  LazyMotion,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionGlobalConfig,\n  MotionValue,\n  NativeAnimation,\n  NativeAnimationExtended,\n  NativeAnimationWrapper,\n  PresenceContext,\n  SubscriptionManager,\n  SwitchLayoutGroupContext,\n  ViewTransitionBuilder,\n  VisualElement,\n  WillChangeMotionValue,\n  acceleratedValues,\n  activeAnimations,\n  addAttrValue,\n  addPointerEvent,\n  addPointerInfo,\n  addScaleCorrector,\n  addStyleValue,\n  addUniqueItem,\n  alpha,\n  analyseComplexValue,\n  animate,\n  animateMini,\n  animateValue,\n  animateView,\n  animateVisualElement,\n  animationControls,\n  animationMapKey,\n  animations,\n  anticipate,\n  applyPxDefaults,\n  attachSpring,\n  attrEffect,\n  backIn,\n  backInOut,\n  backOut,\n  buildTransform,\n  calcGeneratorDuration,\n  calcLength,\n  cancelFrame,\n  cancelMicrotask,\n  cancelSync,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  collectMotionValues,\n  color,\n  complex,\n  convertOffsetToTimes,\n  createBox,\n  createGeneratorEasing,\n  createRenderBatcher,\n  createRendererMotionComponent,\n  createScopedAnimate,\n  cubicBezier,\n  cubicBezierAsString,\n  defaultEasing,\n  defaultOffset,\n  defaultTransformValue,\n  defaultValueTypes,\n  degrees,\n  delay,\n  dimensionValueTypes,\n  disableInstantTransitions,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  domMin,\n  easeIn,\n  easeInOut,\n  easeOut,\n  easingDefinitionToFunction,\n  fillOffset,\n  fillWildcards,\n  filterProps,\n  findDimensionValueType,\n  findValueType,\n  flushKeyframeResolvers,\n  frame,\n  frameData,\n  frameSteps,\n  generateLinearEasing,\n  getAnimatableNone,\n  getAnimationMap,\n  getComputedStyle as getComputedStyle2,\n  getDefaultValueType,\n  getEasingForSegment,\n  getMixer,\n  getValueAsType,\n  getValueTransition,\n  getVariableValue,\n  hasWarned,\n  hex,\n  hover,\n  hsla,\n  hslaToRgba,\n  inView,\n  inertia,\n  interpolate,\n  invariant,\n  invisibleValues,\n  isBezierDefinition,\n  isBrowser,\n  isCSSVariableName,\n  isCSSVariableToken,\n  isDragActive,\n  isDragging,\n  isEasingArray,\n  isGenerator,\n  isHTMLElement,\n  isMotionComponent,\n  isMotionValue,\n  isNodeOrChild,\n  isNumericalString,\n  isObject,\n  isPrimaryPointer,\n  isSVGElement,\n  isSVGSVGElement,\n  isValidMotionProp,\n  isWaapiSupportedEasing,\n  isZeroValueString,\n  keyframes,\n  m,\n  makeUseVisualState,\n  mapEasingToNativeEasing,\n  mapValue,\n  maxGeneratorDuration,\n  memo,\n  microtask,\n  millisecondsToSeconds,\n  mirrorEasing,\n  mix,\n  mixArray,\n  mixColor,\n  mixComplex,\n  mixImmediate,\n  mixLinearColor,\n  mixNumber,\n  mixObject,\n  mixVisibility,\n  motion,\n  motionValue,\n  moveItem,\n  namespace_exports,\n  noop,\n  number,\n  numberValueTypes,\n  observeTimeline,\n  optimizedAppearDataAttribute,\n  parseCSSVariable,\n  parseValueFromTransform,\n  percent,\n  pipe,\n  positionalKeys,\n  press,\n  progress,\n  progressPercentage,\n  propEffect,\n  px,\n  readTransformValue,\n  recordStats,\n  removeItem,\n  resolveElements,\n  resolveMotionValue,\n  reverseEasing,\n  rgbUnit,\n  rgba,\n  scale,\n  scroll,\n  scrollInfo,\n  secondsToMilliseconds,\n  setDragLock,\n  setStyle,\n  spring,\n  springValue,\n  stagger,\n  startOptimizedAppearAnimation,\n  startWaapiAnimation,\n  statsBuffer,\n  steps,\n  styleEffect,\n  supportedWaapiEasing,\n  supportsBrowserAnimation,\n  supportsFlags,\n  supportsLinearEasing,\n  supportsPartialKeyframes,\n  supportsScrollTimeline,\n  svgEffect,\n  sync,\n  testValueType,\n  time,\n  transform,\n  transformPropOrder,\n  transformProps,\n  transformValue,\n  transformValueTypes,\n  unwrapMotionComponent,\n  useAnimate,\n  useAnimateMini,\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  usePresenceData,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useResetProjection,\n  useScroll,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  velocityPerSecond,\n  vh,\n  visualElementStore,\n  vw,\n  warnOnce,\n  warning,\n  wrap\n} from \"./chunk-A6RUM2JZ.mjs\";\nimport {\n  __commonJS,\n  __decorateElement,\n  __decoratorMetadata,\n  __decoratorStart,\n  __privateAdd,\n  __privateGet,\n  __privateMethod,\n  __privateSet,\n  __publicField,\n  __runInitializers,\n  __toESM\n} from \"./chunk-YNHG2PI6.mjs\";\n\n// ../../../node_modules/hsluv/dist/hsluv.cjs\nvar require_hsluv = __commonJS({\n  \"../../../node_modules/hsluv/dist/hsluv.cjs\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.Hsluv = void 0;\n    var Hsluv2 = class _Hsluv {\n      constructor() {\n        this.hex = \"#000000\";\n        this.rgb_r = 0;\n        this.rgb_g = 0;\n        this.rgb_b = 0;\n        this.xyz_x = 0;\n        this.xyz_y = 0;\n        this.xyz_z = 0;\n        this.luv_l = 0;\n        this.luv_u = 0;\n        this.luv_v = 0;\n        this.lch_l = 0;\n        this.lch_c = 0;\n        this.lch_h = 0;\n        this.hsluv_h = 0;\n        this.hsluv_s = 0;\n        this.hsluv_l = 0;\n        this.hpluv_h = 0;\n        this.hpluv_p = 0;\n        this.hpluv_l = 0;\n        this.r0s = 0;\n        this.r0i = 0;\n        this.r1s = 0;\n        this.r1i = 0;\n        this.g0s = 0;\n        this.g0i = 0;\n        this.g1s = 0;\n        this.g1i = 0;\n        this.b0s = 0;\n        this.b0i = 0;\n        this.b1s = 0;\n        this.b1i = 0;\n      }\n      static fromLinear(c) {\n        if (c <= 31308e-7) {\n          return 12.92 * c;\n        } else {\n          return 1.055 * Math.pow(c, 1 / 2.4) - 0.055;\n        }\n      }\n      static toLinear(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      static yToL(Y) {\n        if (Y <= _Hsluv.epsilon) {\n          return Y / _Hsluv.refY * _Hsluv.kappa;\n        } else {\n          return 116 * Math.pow(Y / _Hsluv.refY, 1 / 3) - 16;\n        }\n      }\n      static lToY(L) {\n        if (L <= 8) {\n          return _Hsluv.refY * L / _Hsluv.kappa;\n        } else {\n          return _Hsluv.refY * Math.pow((L + 16) / 116, 3);\n        }\n      }\n      static rgbChannelToHex(chan) {\n        const c = Math.round(chan * 255);\n        const digit2 = c % 16;\n        const digit1 = (c - digit2) / 16 | 0;\n        return _Hsluv.hexChars.charAt(digit1) + _Hsluv.hexChars.charAt(digit2);\n      }\n      static hexToRgbChannel(hex2, offset) {\n        const digit1 = _Hsluv.hexChars.indexOf(hex2.charAt(offset));\n        const digit2 = _Hsluv.hexChars.indexOf(hex2.charAt(offset + 1));\n        const n = digit1 * 16 + digit2;\n        return n / 255;\n      }\n      static distanceFromOriginAngle(slope, intercept, angle) {\n        const d = intercept / (Math.sin(angle) - slope * Math.cos(angle));\n        if (d < 0) {\n          return Infinity;\n        } else {\n          return d;\n        }\n      }\n      static distanceFromOrigin(slope, intercept) {\n        return Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);\n      }\n      static min6(f1, f2, f3, f4, f5, f6) {\n        return Math.min(f1, Math.min(f2, Math.min(f3, Math.min(f4, Math.min(f5, f6)))));\n      }\n      rgbToHex() {\n        this.hex = \"#\";\n        this.hex += _Hsluv.rgbChannelToHex(this.rgb_r);\n        this.hex += _Hsluv.rgbChannelToHex(this.rgb_g);\n        this.hex += _Hsluv.rgbChannelToHex(this.rgb_b);\n      }\n      hexToRgb() {\n        this.hex = this.hex.toLowerCase();\n        this.rgb_r = _Hsluv.hexToRgbChannel(this.hex, 1);\n        this.rgb_g = _Hsluv.hexToRgbChannel(this.hex, 3);\n        this.rgb_b = _Hsluv.hexToRgbChannel(this.hex, 5);\n      }\n      xyzToRgb() {\n        this.rgb_r = _Hsluv.fromLinear(_Hsluv.m_r0 * this.xyz_x + _Hsluv.m_r1 * this.xyz_y + _Hsluv.m_r2 * this.xyz_z);\n        this.rgb_g = _Hsluv.fromLinear(_Hsluv.m_g0 * this.xyz_x + _Hsluv.m_g1 * this.xyz_y + _Hsluv.m_g2 * this.xyz_z);\n        this.rgb_b = _Hsluv.fromLinear(_Hsluv.m_b0 * this.xyz_x + _Hsluv.m_b1 * this.xyz_y + _Hsluv.m_b2 * this.xyz_z);\n      }\n      rgbToXyz() {\n        const lr = _Hsluv.toLinear(this.rgb_r);\n        const lg = _Hsluv.toLinear(this.rgb_g);\n        const lb = _Hsluv.toLinear(this.rgb_b);\n        this.xyz_x = 0.41239079926595 * lr + 0.35758433938387 * lg + 0.18048078840183 * lb;\n        this.xyz_y = 0.21263900587151 * lr + 0.71516867876775 * lg + 0.072192315360733 * lb;\n        this.xyz_z = 0.019330818715591 * lr + 0.11919477979462 * lg + 0.95053215224966 * lb;\n      }\n      xyzToLuv() {\n        const divider = this.xyz_x + 15 * this.xyz_y + 3 * this.xyz_z;\n        let varU = 4 * this.xyz_x;\n        let varV = 9 * this.xyz_y;\n        if (divider !== 0) {\n          varU /= divider;\n          varV /= divider;\n        } else {\n          varU = NaN;\n          varV = NaN;\n        }\n        this.luv_l = _Hsluv.yToL(this.xyz_y);\n        if (this.luv_l === 0) {\n          this.luv_u = 0;\n          this.luv_v = 0;\n        } else {\n          this.luv_u = 13 * this.luv_l * (varU - _Hsluv.refU);\n          this.luv_v = 13 * this.luv_l * (varV - _Hsluv.refV);\n        }\n      }\n      luvToXyz() {\n        if (this.luv_l === 0) {\n          this.xyz_x = 0;\n          this.xyz_y = 0;\n          this.xyz_z = 0;\n          return;\n        }\n        const varU = this.luv_u / (13 * this.luv_l) + _Hsluv.refU;\n        const varV = this.luv_v / (13 * this.luv_l) + _Hsluv.refV;\n        this.xyz_y = _Hsluv.lToY(this.luv_l);\n        this.xyz_x = 0 - 9 * this.xyz_y * varU / ((varU - 4) * varV - varU * varV);\n        this.xyz_z = (9 * this.xyz_y - 15 * varV * this.xyz_y - varV * this.xyz_x) / (3 * varV);\n      }\n      luvToLch() {\n        this.lch_l = this.luv_l;\n        this.lch_c = Math.sqrt(this.luv_u * this.luv_u + this.luv_v * this.luv_v);\n        if (this.lch_c < 1e-8) {\n          this.lch_h = 0;\n        } else {\n          const hrad = Math.atan2(this.luv_v, this.luv_u);\n          this.lch_h = hrad * 180 / Math.PI;\n          if (this.lch_h < 0) {\n            this.lch_h = 360 + this.lch_h;\n          }\n        }\n      }\n      lchToLuv() {\n        const hrad = this.lch_h / 180 * Math.PI;\n        this.luv_l = this.lch_l;\n        this.luv_u = Math.cos(hrad) * this.lch_c;\n        this.luv_v = Math.sin(hrad) * this.lch_c;\n      }\n      calculateBoundingLines(l) {\n        const sub1 = Math.pow(l + 16, 3) / 1560896;\n        const sub2 = sub1 > _Hsluv.epsilon ? sub1 : l / _Hsluv.kappa;\n        const s1r = sub2 * (284517 * _Hsluv.m_r0 - 94839 * _Hsluv.m_r2);\n        const s2r = sub2 * (838422 * _Hsluv.m_r2 + 769860 * _Hsluv.m_r1 + 731718 * _Hsluv.m_r0);\n        const s3r = sub2 * (632260 * _Hsluv.m_r2 - 126452 * _Hsluv.m_r1);\n        const s1g = sub2 * (284517 * _Hsluv.m_g0 - 94839 * _Hsluv.m_g2);\n        const s2g = sub2 * (838422 * _Hsluv.m_g2 + 769860 * _Hsluv.m_g1 + 731718 * _Hsluv.m_g0);\n        const s3g = sub2 * (632260 * _Hsluv.m_g2 - 126452 * _Hsluv.m_g1);\n        const s1b = sub2 * (284517 * _Hsluv.m_b0 - 94839 * _Hsluv.m_b2);\n        const s2b = sub2 * (838422 * _Hsluv.m_b2 + 769860 * _Hsluv.m_b1 + 731718 * _Hsluv.m_b0);\n        const s3b = sub2 * (632260 * _Hsluv.m_b2 - 126452 * _Hsluv.m_b1);\n        this.r0s = s1r / s3r;\n        this.r0i = s2r * l / s3r;\n        this.r1s = s1r / (s3r + 126452);\n        this.r1i = (s2r - 769860) * l / (s3r + 126452);\n        this.g0s = s1g / s3g;\n        this.g0i = s2g * l / s3g;\n        this.g1s = s1g / (s3g + 126452);\n        this.g1i = (s2g - 769860) * l / (s3g + 126452);\n        this.b0s = s1b / s3b;\n        this.b0i = s2b * l / s3b;\n        this.b1s = s1b / (s3b + 126452);\n        this.b1i = (s2b - 769860) * l / (s3b + 126452);\n      }\n      calcMaxChromaHpluv() {\n        const r0 = _Hsluv.distanceFromOrigin(this.r0s, this.r0i);\n        const r1 = _Hsluv.distanceFromOrigin(this.r1s, this.r1i);\n        const g0 = _Hsluv.distanceFromOrigin(this.g0s, this.g0i);\n        const g1 = _Hsluv.distanceFromOrigin(this.g1s, this.g1i);\n        const b0 = _Hsluv.distanceFromOrigin(this.b0s, this.b0i);\n        const b1 = _Hsluv.distanceFromOrigin(this.b1s, this.b1i);\n        return _Hsluv.min6(r0, r1, g0, g1, b0, b1);\n      }\n      calcMaxChromaHsluv(h) {\n        const hueRad = h / 360 * Math.PI * 2;\n        const r0 = _Hsluv.distanceFromOriginAngle(this.r0s, this.r0i, hueRad);\n        const r1 = _Hsluv.distanceFromOriginAngle(this.r1s, this.r1i, hueRad);\n        const g0 = _Hsluv.distanceFromOriginAngle(this.g0s, this.g0i, hueRad);\n        const g1 = _Hsluv.distanceFromOriginAngle(this.g1s, this.g1i, hueRad);\n        const b0 = _Hsluv.distanceFromOriginAngle(this.b0s, this.b0i, hueRad);\n        const b1 = _Hsluv.distanceFromOriginAngle(this.b1s, this.b1i, hueRad);\n        return _Hsluv.min6(r0, r1, g0, g1, b0, b1);\n      }\n      hsluvToLch() {\n        if (this.hsluv_l > 99.9999999) {\n          this.lch_l = 100;\n          this.lch_c = 0;\n        } else if (this.hsluv_l < 1e-8) {\n          this.lch_l = 0;\n          this.lch_c = 0;\n        } else {\n          this.lch_l = this.hsluv_l;\n          this.calculateBoundingLines(this.hsluv_l);\n          const max = this.calcMaxChromaHsluv(this.hsluv_h);\n          this.lch_c = max / 100 * this.hsluv_s;\n        }\n        this.lch_h = this.hsluv_h;\n      }\n      lchToHsluv() {\n        if (this.lch_l > 99.9999999) {\n          this.hsluv_s = 0;\n          this.hsluv_l = 100;\n        } else if (this.lch_l < 1e-8) {\n          this.hsluv_s = 0;\n          this.hsluv_l = 0;\n        } else {\n          this.calculateBoundingLines(this.lch_l);\n          const max = this.calcMaxChromaHsluv(this.lch_h);\n          this.hsluv_s = this.lch_c / max * 100;\n          this.hsluv_l = this.lch_l;\n        }\n        this.hsluv_h = this.lch_h;\n      }\n      hpluvToLch() {\n        if (this.hpluv_l > 99.9999999) {\n          this.lch_l = 100;\n          this.lch_c = 0;\n        } else if (this.hpluv_l < 1e-8) {\n          this.lch_l = 0;\n          this.lch_c = 0;\n        } else {\n          this.lch_l = this.hpluv_l;\n          this.calculateBoundingLines(this.hpluv_l);\n          const max = this.calcMaxChromaHpluv();\n          this.lch_c = max / 100 * this.hpluv_p;\n        }\n        this.lch_h = this.hpluv_h;\n      }\n      lchToHpluv() {\n        if (this.lch_l > 99.9999999) {\n          this.hpluv_p = 0;\n          this.hpluv_l = 100;\n        } else if (this.lch_l < 1e-8) {\n          this.hpluv_p = 0;\n          this.hpluv_l = 0;\n        } else {\n          this.calculateBoundingLines(this.lch_l);\n          const max = this.calcMaxChromaHpluv();\n          this.hpluv_p = this.lch_c / max * 100;\n          this.hpluv_l = this.lch_l;\n        }\n        this.hpluv_h = this.lch_h;\n      }\n      hsluvToRgb() {\n        this.hsluvToLch();\n        this.lchToLuv();\n        this.luvToXyz();\n        this.xyzToRgb();\n      }\n      hpluvToRgb() {\n        this.hpluvToLch();\n        this.lchToLuv();\n        this.luvToXyz();\n        this.xyzToRgb();\n      }\n      hsluvToHex() {\n        this.hsluvToRgb();\n        this.rgbToHex();\n      }\n      hpluvToHex() {\n        this.hpluvToRgb();\n        this.rgbToHex();\n      }\n      rgbToHsluv() {\n        this.rgbToXyz();\n        this.xyzToLuv();\n        this.luvToLch();\n        this.lchToHpluv();\n        this.lchToHsluv();\n      }\n      rgbToHpluv() {\n        this.rgbToXyz();\n        this.xyzToLuv();\n        this.luvToLch();\n        this.lchToHpluv();\n        this.lchToHpluv();\n      }\n      hexToHsluv() {\n        this.hexToRgb();\n        this.rgbToHsluv();\n      }\n      hexToHpluv() {\n        this.hexToRgb();\n        this.rgbToHpluv();\n      }\n    };\n    exports.Hsluv = Hsluv2;\n    Hsluv2.hexChars = \"0123456789abcdef\";\n    Hsluv2.refY = 1;\n    Hsluv2.refU = 0.19783000664283;\n    Hsluv2.refV = 0.46831999493879;\n    Hsluv2.kappa = 903.2962962;\n    Hsluv2.epsilon = 0.0088564516;\n    Hsluv2.m_r0 = 3.240969941904521;\n    Hsluv2.m_r1 = -1.537383177570093;\n    Hsluv2.m_r2 = -0.498610760293;\n    Hsluv2.m_g0 = -0.96924363628087;\n    Hsluv2.m_g1 = 1.87596750150772;\n    Hsluv2.m_g2 = 0.041555057407175;\n    Hsluv2.m_b0 = 0.055630079696993;\n    Hsluv2.m_b1 = -0.20397695888897;\n    Hsluv2.m_b2 = 1.056971514242878;\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__) 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]) emitter._events[evt] = listener, emitter._eventsCount++;\n      else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n      else emitter._events[evt] = [emitter._events[evt], listener];\n      return emitter;\n    }\n    function clearEvent(emitter, evt) {\n      if (--emitter._eventsCount === 0) emitter._events = new Events();\n      else 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 = [], events, name;\n      if (this._eventsCount === 0) return names;\n      for (name in events = this._events) {\n        if (has.call(events, name)) names.push(prefix2 ? name.slice(1) : name);\n      }\n      if (Object.getOwnPropertySymbols) {\n        return names.concat(Object.getOwnPropertySymbols(events));\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) return [];\n      if (handlers.fn) 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) return 0;\n      if (listeners.fn) 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]) return false;\n      var listeners = this._events[evt], len = arguments.length, args, i;\n      if (listeners.fn) {\n        if (listeners.once) 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) 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) 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]) 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, events = [], length = listeners.length; i < length; i++) {\n          if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n            events.push(listeners[i]);\n          }\n        }\n        if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n        else 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]) 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/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js\nvar require_react_is_production_min = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/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/hoist-non-react-statics/node_modules/react-is/index.js\nvar require_react_is = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/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    \"use strict\";\n    (function() {\n      function p(a, c) {\n        document.addEventListener ? a.addEventListener(\"scroll\", c, false) : a.attachEvent(\"scroll\", c);\n      }\n      function u(a) {\n        document.body ? a() : document.addEventListener ? document.addEventListener(\"DOMContentLoaded\", function b() {\n          document.removeEventListener(\"DOMContentLoaded\", b);\n          a();\n        }) : document.attachEvent(\"onreadystatechange\", function g() {\n          if (\"interactive\" == document.readyState || \"complete\" == document.readyState) document.detachEvent(\"onreadystatechange\", g), a();\n        });\n      }\n      ;\n      function w(a) {\n        this.g = document.createElement(\"div\");\n        this.g.setAttribute(\"aria-hidden\", \"true\");\n        this.g.appendChild(document.createTextNode(a));\n        this.h = document.createElement(\"span\");\n        this.i = document.createElement(\"span\");\n        this.m = document.createElement(\"span\");\n        this.j = document.createElement(\"span\");\n        this.l = -1;\n        this.h.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.i.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.j.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.m.style.cssText = \"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";\n        this.h.appendChild(this.m);\n        this.i.appendChild(this.j);\n        this.g.appendChild(this.h);\n        this.g.appendChild(this.i);\n      }\n      function x(a, c) {\n        a.g.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:\" + c + \";\";\n      }\n      function B(a) {\n        var c = a.g.offsetWidth, b = c + 100;\n        a.j.style.width = b + \"px\";\n        a.i.scrollLeft = b;\n        a.h.scrollLeft = a.h.scrollWidth + 100;\n        return a.l !== c ? (a.l = c, true) : false;\n      }\n      function C(a, c) {\n        function b() {\n          var e = g;\n          B(e) && null !== e.g.parentNode && c(e.l);\n        }\n        var g = a;\n        p(a.h, b);\n        p(a.i, b);\n        B(a);\n      }\n      ;\n      function D(a, c, b) {\n        c = c || {};\n        b = b || window;\n        this.family = a;\n        this.style = c.style || \"normal\";\n        this.weight = c.weight || \"normal\";\n        this.stretch = c.stretch || \"normal\";\n        this.context = b;\n      }\n      var E = null, F = null, G = null, H = null;\n      function I(a) {\n        null === F && (M(a) && /Apple/.test(window.navigator.vendor) ? (a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent), F = !!a && 603 > parseInt(a[1], 10)) : F = false);\n        return F;\n      }\n      function M(a) {\n        null === H && (H = !!a.document.fonts);\n        return H;\n      }\n      function N(a, c) {\n        var b = a.style, g = a.weight;\n        if (null === G) {\n          var e = document.createElement(\"div\");\n          try {\n            e.style.font = \"condensed 100px sans-serif\";\n          } catch (q) {\n          }\n          G = \"\" !== e.style.font;\n        }\n        return [b, g, G ? a.stretch : \"\", \"100px\", c].join(\" \");\n      }\n      D.prototype.load = function(a, c) {\n        var b = this, g = a || \"BESbswy\", e = 0, q = c || 3e3, J = (/* @__PURE__ */ new Date()).getTime();\n        return new Promise(function(K, L) {\n          if (M(b.context) && !I(b.context)) {\n            var O = new Promise(function(r, t) {\n              function h() {\n                (/* @__PURE__ */ new Date()).getTime() - J >= q ? t(Error(\"\" + q + \"ms timeout exceeded\")) : b.context.document.fonts.load(N(b, '\"' + b.family + '\"'), g).then(function(n) {\n                  1 <= n.length ? r() : setTimeout(h, 25);\n                }, t);\n              }\n              h();\n            }), P = new Promise(function(r, t) {\n              e = setTimeout(function() {\n                t(Error(\"\" + q + \"ms timeout exceeded\"));\n              }, q);\n            });\n            Promise.race([P, O]).then(function() {\n              clearTimeout(e);\n              K(b);\n            }, L);\n          } else u(function() {\n            function r() {\n              var d;\n              if (d = -1 != k && -1 != l || -1 != k && -1 != m2 || -1 != l && -1 != m2) (d = k != l && k != m2 && l != m2) || (null === E && (d = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent), E = !!d && (536 > parseInt(d[1], 10) || 536 === parseInt(d[1], 10) && 11 >= parseInt(d[2], 10))), d = E && (k == y && l == y && m2 == y || k == z && l == z && m2 == z || k == A && l == A && m2 == A)), d = !d;\n              d && (null !== f.parentNode && f.parentNode.removeChild(f), clearTimeout(e), K(b));\n            }\n            function t() {\n              if ((/* @__PURE__ */ new Date()).getTime() - J >= q) null !== f.parentNode && f.parentNode.removeChild(f), L(Error(\"\" + q + \"ms timeout exceeded\"));\n              else {\n                var d = b.context.document.hidden;\n                if (true === d || void 0 === d) k = h.g.offsetWidth, l = n.g.offsetWidth, m2 = v.g.offsetWidth, r();\n                e = setTimeout(t, 50);\n              }\n            }\n            var h = new w(g), n = new w(g), v = new w(g), k = -1, l = -1, m2 = -1, y = -1, z = -1, A = -1, f = document.createElement(\"div\");\n            f.dir = \"ltr\";\n            x(h, N(b, \"sans-serif\"));\n            x(n, N(b, \"serif\"));\n            x(v, N(b, \"monospace\"));\n            f.appendChild(h.g);\n            f.appendChild(n.g);\n            f.appendChild(v.g);\n            b.context.document.body.appendChild(f);\n            y = h.g.offsetWidth;\n            z = n.g.offsetWidth;\n            A = v.g.offsetWidth;\n            t();\n            C(h, function(d) {\n              k = d;\n              r();\n            });\n            x(h, N(b, '\"' + b.family + '\",sans-serif'));\n            C(n, function(d) {\n              l = d;\n              r();\n            });\n            x(n, N(b, '\"' + b.family + '\",serif'));\n            C(v, function(d) {\n              m2 = d;\n              r();\n            });\n            x(v, N(b, '\"' + b.family + '\",monospace'));\n          });\n        });\n      };\n      \"object\" === typeof module ? module.exports = D : (window.FontFaceObserver = D, window.FontFaceObserver.prototype.load = D.prototype.load);\n    })();\n  }\n});\n\n// ../../library/src/router/lazy.tsx\nimport { lazy as ReactLazy, forwardRef, isValidElement, useEffect } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar preloadKey = \"preload\";\nfunction isLazyComponentType(componentType) {\n  return typeof componentType === \"object\" && componentType !== null && !isValidElement(componentType) && preloadKey in componentType;\n}\nfunction lazy(factory) {\n  const LazyComponent = ReactLazy(factory);\n  let factoryPromise;\n  let LoadedComponent;\n  let hasRendered = false;\n  const Component17 = forwardRef(function LazyWithPreload(props, ref) {\n    useEffect(() => {\n      hasRendered = true;\n    }, []);\n    const Comp = LoadedComponent ?? LazyComponent;\n    return /* @__PURE__ */ jsx(Comp, { ref, ...props });\n  });\n  Component17.preload = () => {\n    if (!factoryPromise) {\n      factoryPromise = factory().then((module) => {\n        LoadedComponent = module.default;\n        return LoadedComponent;\n      });\n    }\n    return factoryPromise;\n  };\n  Component17.getStatus = () => {\n    return {\n      hasLoaded: LoadedComponent !== void 0,\n      hasRendered\n    };\n  };\n  return Component17;\n}\n\n// ../../library/src/router/useRouteElementId.ts\nimport React4 from \"react\";\n\n// ../../library/src/router/useCurrentRoute.tsx\nimport React3, { useContext, useMemo as useMemo2 } from \"react\";\n\n// ../../library/src/utils/objectKeys.ts\nvar objectKeys = Object.keys;\n\n// ../../library/src/render/utils/isEqual.ts\nfunction hasProp(o, prop) {\n  return Object.prototype.hasOwnProperty.call(o, prop);\n}\nvar equalsKey = \"equals\";\nfunction withEquals(o) {\n  if (o === null) return false;\n  if (!(equalsKey in o)) return false;\n  return typeof o.equals === \"function\";\n}\nfunction valueEqual(a, b) {\n  if (a === b) return true;\n  return a !== a && b !== b;\n}\nfunction arrayShallowEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length) return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!valueEqual(a[i], b[i])) return false;\n  }\n  return true;\n}\nfunction arrayDeepEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length) return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!equal(a[i], b[i], true)) return false;\n  }\n  return true;\n}\nfunction mapShallowEqual(a, b) {\n  if (a.size !== b.size) return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!valueEqual(aValue, b.get(key7))) return false;\n  }\n  return true;\n}\nfunction mapDeepEqual(a, b) {\n  if (a.size !== b.size) return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!equal(aValue, b.get(key7), true)) return false;\n  }\n  return true;\n}\nfunction setEqual(a, b) {\n  if (a.size !== b.size) return false;\n  for (const aValue of a.keys()) {\n    if (!b.has(aValue)) return false;\n  }\n  return true;\n}\nfunction objectShallowEqual(a, b) {\n  const keys3 = objectKeys(a);\n  if (keys3.length !== objectKeys(b).length) return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7)) return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!valueEqual(a[key7], b[key7])) return false;\n  }\n  return true;\n}\nfunction objectDeepEqual(a, b) {\n  const keys3 = objectKeys(a);\n  if (keys3.length !== objectKeys(b).length) return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7)) return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!equal(a[key7], b[key7], true)) return false;\n  }\n  return true;\n}\nfunction equal(a, b, deep) {\n  if (a === b) return true;\n  if (!a || !b) return a !== a && b !== b;\n  const typeA = typeof a;\n  const typeB = typeof b;\n  if (typeA !== typeB) return false;\n  if (typeA !== \"object\") return false;\n  const aIsArray = Array.isArray(a);\n  const bIsArray = Array.isArray(b);\n  if (aIsArray && bIsArray) {\n    if (deep) {\n      return arrayDeepEqual(a, b);\n    } else {\n      return arrayShallowEqual(a, b);\n    }\n  } else if (aIsArray !== bIsArray) {\n    return false;\n  }\n  const aIsMap = a instanceof Map;\n  const bIsMap = b instanceof Map;\n  if (aIsMap && bIsMap) {\n    if (deep) {\n      return mapDeepEqual(a, b);\n    } else {\n      return mapShallowEqual(a, b);\n    }\n  } else if (aIsMap !== bIsMap) {\n    return false;\n  }\n  const aIsSet = a instanceof Set;\n  const bIsSet = b instanceof Set;\n  if (aIsSet && bIsSet) {\n    return setEqual(a, b);\n  } else if (aIsSet !== bIsSet) {\n    return false;\n  }\n  const dateA = a instanceof Date;\n  const dateB = b instanceof Date;\n  if (dateA && dateB) {\n    return a.getTime() === b.getTime();\n  } else if (dateA !== dateB) {\n    return false;\n  }\n  const regexpA = a instanceof RegExp;\n  const regexpB = b instanceof RegExp;\n  if (regexpA && regexpB) {\n    return a.toString() === b.toString();\n  } else if (regexpA !== regexpB) {\n    return false;\n  }\n  if (withEquals(a) && withEquals(b)) {\n    return a.equals(b);\n  }\n  if (deep) {\n    return objectDeepEqual(a, b);\n  } else {\n    return objectShallowEqual(a, b);\n  }\n}\nfunction isEqual(a, b, deep = true) {\n  try {\n    return equal(a, b, deep);\n  } catch (error) {\n    if (error instanceof Error && /stack|recursion/iu.exec(error.message)) {\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/router/RouterContext.tsx\nimport React2, { useMemo } from \"react\";\n\n// ../../library/src/router/useGetRouteCallback.ts\nimport React from \"react\";\nfunction useGetRouteCallback(routes) {\n  return React.useCallback((routeId) => routes[routeId], [routes]);\n}\n\n// ../../library/src/router/RouterContext.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar RouterContext = /* @__PURE__ */ (() => React2.createContext({}))();\nfunction RouterAPIProvider({ api, children }) {\n  return /* @__PURE__ */ jsx2(RouterContext.Provider, { value: api, children });\n}\nfunction useRouter() {\n  return React2.useContext(RouterContext);\n}\nfunction RoutesProvider({ routes, children }) {\n  const getRoute = useGetRouteCallback(routes);\n  const api = useMemo(() => ({ getRoute }), [getRoute]);\n  return /* @__PURE__ */ jsx2(RouterContext.Provider, { value: api, children });\n}\n\n// ../../library/src/router/useCurrentRoute.tsx\nimport { jsx as jsx3 } from \"react/jsx-runtime\";\nvar CurrentRouteContext = /* @__PURE__ */ (() => React3.createContext({}))();\nfunction useCurrentRoute() {\n  var _a;\n  const router = useRouter();\n  const override = useContext(CurrentRouteContext);\n  const id = (override == null ? void 0 : override.routeId) ?? router.currentRouteId;\n  const pathVariables = (override == null ? void 0 : override.routeId) ? override.pathVariables : router.currentPathVariables;\n  const route = id ? (_a = router.getRoute) == null ? void 0 : _a.call(router, id) : void 0;\n  return useMemo2(() => {\n    if (!id || !route) return void 0;\n    return {\n      ...route,\n      id,\n      pathVariables\n    };\n  }, [id, pathVariables, route]);\n}\nfunction useCurrentRouteKey() {\n  const currentRoute = useCurrentRoute();\n  if (!currentRoute) return void 0;\n  return `${currentRoute.id}-${JSON.stringify(currentRoute.pathVariables)}`;\n}\nfunction useCurrentRouteId() {\n  var _a;\n  return (_a = useCurrentRoute()) == null ? void 0 : _a.id;\n}\nfunction useOnRouteChange(cb) {\n  const currentRoute = useCurrentRoute();\n  const lastRoute = React3.useRef(currentRoute);\n  if (isEqual(lastRoute.current, currentRoute) || !currentRoute) return;\n  lastRoute.current = currentRoute;\n  cb(currentRoute);\n}\n\n// ../../library/src/router/useRoute.ts\nfunction useRoute(routeId) {\n  var _a;\n  const routerAPI = useRouter();\n  if (!routeId) return void 0;\n  return (_a = routerAPI.getRoute) == null ? void 0 : _a.call(routerAPI, routeId);\n}\n\n// ../../library/src/router/utils.ts\nfunction getRouteElementId(route, hash2) {\n  if (hash2 && route) {\n    if (route.elements && hash2 in route.elements) {\n      return route.elements[hash2];\n    } else {\n      return hash2;\n    }\n  }\n  return void 0;\n}\nvar EMPTY_ARRAY = [];\nfunction monitorINPRelatedInputs(signal) {\n  const inpRelatedInputs = [\"pointerdown\", \"pointerup\", \"keydown\", \"keyup\"];\n  const inpRelatedInputHandler = (event) => {\n    const type = event.type;\n    if (!inpRelatedInputs.includes(type)) return;\n    performance.mark(`framer-navigation-input`, {\n      detail: {\n        type\n      }\n    });\n  };\n  for (let i = 0; i < inpRelatedInputs.length; i++) {\n    document.addEventListener(inpRelatedInputs[i], inpRelatedInputHandler, { signal });\n  }\n  return () => {\n    for (let i = 0; i < inpRelatedInputs.length; i++) {\n      document.removeEventListener(inpRelatedInputs[i], inpRelatedInputHandler);\n    }\n  };\n}\n\n// ../../library/src/router/useRouteElementId.ts\nfunction useRouteElementId(id, targetRouteId) {\n  const currentRoute = useCurrentRoute();\n  const route = useRoute(targetRouteId) ?? currentRoute;\n  return React4.useMemo(() => {\n    if (!route) return id;\n    return getRouteElementId(route, id);\n  }, [id, route]);\n}\n\n// ../../library/src/router/useCurrentPathVariables.tsx\nfunction useCurrentPathVariables() {\n  var _a;\n  return (_a = useCurrentRoute()) == null ? void 0 : _a.pathVariables;\n}\n\n// ../../library/src/router/useRouteHandler.ts\nimport React5 from \"react\";\n\n// ../../library/src/router/useRoutePreloader.ts\nimport { useEffect as useEffect2 } from \"react\";\n\n// ../../library/src/utils/utils.ts\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction isBoolean(value) {\n  return typeof value === \"boolean\";\n}\nfunction isString(value) {\n  return typeof value === \"string\";\n}\nfunction isNumber(value) {\n  return Number.isFinite(value);\n}\nfunction isArray(value) {\n  return Array.isArray(value);\n}\nfunction isObject2(value) {\n  return value !== null && typeof value === \"object\" && !isArray(value);\n}\nfunction isUndefined(value) {\n  return typeof value === \"undefined\";\n}\nfunction isNull(value) {\n  return value === null;\n}\nfunction isNullish(value) {\n  return value == null;\n}\nfunction isValidDate(value) {\n  return value instanceof Date && !Number.isNaN(value.getTime());\n}\nfunction isGenerator2(value) {\n  return isObject2(value) && isFunction(value.return);\n}\nvar noop2 = () => {\n};\nvar isWindow = typeof window !== \"undefined\";\nvar isBot = /* @__PURE__ */ (() => isWindow && /bot|-google|google-|yandex|ia_archiver|crawl|spider/iu.test(navigator.userAgent))();\nvar supportsRequestIdleCallback = isWindow && typeof window.requestIdleCallback === \"function\";\nvar requestIdleCallback = /* @__PURE__ */ (() => (\n  // eslint-disable-next-line compat/compat,framer-studio/tscompat\n  supportsRequestIdleCallback ? window.requestIdleCallback : setTimeout\n))();\nfunction encodeSVGForCSS(svg) {\n  return `url('data:image/svg+xml,${svg.replaceAll(\"#\", \"%23\").replaceAll(\"'\", \"%27\")}')`;\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    hash: \"\",\n    hostname: \"\",\n    href: \"\",\n    origin: \"\",\n    pathname: \"\",\n    search: \"\"\n  },\n  document: {\n    baseURI: \"\",\n    cookie: \"\",\n    referrer: null\n  },\n  setTimeout: () => 0,\n  clearTimeout: () => {\n  },\n  setInterval: () => 0,\n  clearInterval: () => {\n  },\n  requestAnimationFrame: () => 0,\n  cancelAnimationFrame: () => {\n  },\n  requestIdleCallback: () => 0,\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  innerWidth: 0,\n  SVGSVGElement: {},\n  scheduler: void 0,\n  open: function(_url, _target, _features) {\n  },\n  __framer_events: []\n};\nvar safeWindow = !isWindow ? mockWindow : window;\n\n// ../../library/src/utils/yield.ts\nvar canUseYield = /* @__PURE__ */ (() => safeWindow.scheduler && \"yield\" in safeWindow.scheduler)();\nvar canUsePostTask = /* @__PURE__ */ (() => safeWindow.scheduler && \"postTask\" in safeWindow.scheduler)();\nvar pendingResolvers = /* @__PURE__ */ new Set();\nfunction resolvePendingPromises() {\n  for (const resolve of pendingResolvers) resolve();\n  pendingResolvers.clear();\n}\nfunction yieldUnlessUrgent(options) {\n  return new Promise((resolve) => {\n    pendingResolvers.add(resolve);\n    if (document.hidden) {\n      resolvePendingPromises();\n      return;\n    }\n    document.addEventListener(\"visibilitychange\", resolvePendingPromises);\n    document.addEventListener(\"pagehide\", resolvePendingPromises);\n    frame.read(() => {\n      const resolveFn = () => {\n        var _a;\n        pendingResolvers.delete(resolve);\n        if ((_a = options == null ? void 0 : options.signal) == null ? void 0 : _a.aborted) return;\n        resolve();\n      };\n      void schedulerYield(options).then(resolveFn);\n    });\n    return;\n  });\n}\nfunction interactionResponse(options) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, 100);\n    frame.read(\n      () => {\n        void schedulerYield(options).then(resolve);\n      },\n      false,\n      // In some cases, interactionResponse might be called in a rAF. This means, we should right away call `schedulerYield`, as the next paint follows immediately.\n      true\n    );\n  });\n}\nfunction schedulerYield(options) {\n  const priority = options == null ? void 0 : options.priority;\n  const canUseModernAPI = canUseYield || canUsePostTask;\n  if (!canUseModernAPI) {\n    if (priority === \"user-blocking\") {\n      return Promise.resolve();\n    }\n    return new Promise((resolve) => {\n      setTimeout(resolve, priority === \"background\" ? 1 : 0);\n    });\n  }\n  if (priority === \"background\") {\n    return new Promise((resolve) => {\n      setTimeout(resolve, 1);\n    });\n  }\n  if (canUseYield) {\n    return safeWindow.scheduler.yield(options).catch(noop2);\n  }\n  return safeWindow.scheduler.postTask(() => {\n  }, options).catch(noop2);\n}\nfunction yieldToMain(options) {\n  const { continueAfter, ensureContinueBeforeUnload, ...schedulerOptions } = options ?? {};\n  if (ensureContinueBeforeUnload) {\n    return yieldUnlessUrgent(schedulerOptions);\n  }\n  if (continueAfter === \"paint\") {\n    return interactionResponse(schedulerOptions);\n  }\n  return schedulerYield(schedulerOptions);\n}\n\n// ../../library/src/router/useRoutePreloader.ts\nvar shouldPreloadBasedOnUA = !isBot;\nfunction useRoutePreloader(routeIds, enabled = true) {\n  const { getRoute } = useRouter();\n  useEffect2(() => {\n    if (!getRoute || !enabled || !shouldPreloadBasedOnUA) return;\n    for (const routeId of routeIds) {\n      void preloadRoute(getRoute(routeId));\n    }\n  }, [routeIds, getRoute, enabled]);\n}\nasync function preloadRoute(route) {\n  if (!shouldPreloadBasedOnUA || !route) return;\n  const component = route.page;\n  if (!component || !isLazyComponentType(component)) return;\n  await yieldToMain();\n  try {\n    await component.preload();\n  } catch (e) {\n    if (false) console.warn(\"Preload failed\", route, e);\n  }\n}\n\n// ../../library/src/router/useRouteHandler.ts\nfunction useRouteHandler(routeId, preload = false, elementId) {\n  const { navigate } = useRouter();\n  useRoutePreloader([routeId], preload);\n  const handler = React5.useCallback(() => navigate == null ? void 0 : navigate(routeId, elementId), [navigate, elementId, routeId]);\n  return handler;\n}\n\n// ../../library/src/router/history.ts\nimport { useCallback as useCallback3, useEffect as useEffect4, useLayoutEffect as useLayoutEffect2, useRef as useRef3 } from \"react\";\n\n// ../../library/src/utils/sendTrackingEvent.ts\nvar timezone;\nvar visitorLocale;\nfunction setTimezoneAndLocaleForTracking() {\n  const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions();\n  timezone = resolvedDateTimeOptions.timeZone;\n  visitorLocale = resolvedDateTimeOptions.locale;\n}\nrequestIdleCallback(setTimezoneAndLocaleForTracking);\nfunction sendTrackingEvent(eventType, eventData, sendOn = \"lazy\") {\n  if (!safeWindow.__framer_events) return;\n  if (!timezone || !visitorLocale) setTimezoneAndLocaleForTracking();\n  safeWindow.__framer_events.push([\n    eventType,\n    {\n      // Base properties common to all events\n      referrer: null,\n      // The first pageview event will always be sent before hydration, in a script in `exportToHTML.ts`.\n      url: safeWindow.location.href,\n      hostname: safeWindow.location.hostname || null,\n      pathname: safeWindow.location.pathname || null,\n      hash: safeWindow.location.hash || null,\n      search: safeWindow.location.search || null,\n      timezone,\n      locale: visitorLocale,\n      // Additional properties specific to custom events\n      ...eventData\n    },\n    sendOn\n  ]);\n  switch (eventType) {\n    case \"published_site_click\": {\n      const { trackingId, href } = eventData;\n      if (trackingId) {\n        document.dispatchEvent(new CustomEvent(\"framer:click\", { detail: { trackingId, href } }));\n      }\n      break;\n    }\n    case \"published_site_form_submit\": {\n      const { trackingId } = eventData;\n      if (trackingId) {\n        document.dispatchEvent(new CustomEvent(\"framer:formsubmit\", { detail: { trackingId } }));\n      }\n      break;\n    }\n    // NOTE: keep in sync with exportToHTML.ts, the initial pageview is sent from there\n    case \"published_site_pageview\": {\n      const { framerLocale } = eventData;\n      document.dispatchEvent(new CustomEvent(\"framer:pageview\", { detail: { framerLocale } }));\n      break;\n    }\n  }\n}\n\n// ../../library/src/router/computeRelativePath.ts\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 === \"\") 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) return \"\";\n  from = \"/\" + normalizeString(from);\n  to = \"/\" + normalizeString(to);\n  if (from === to) 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)) break;\n    else if (fromCode === CHAR_FORWARD_SLASH) 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) code = StringPrototypeCharCodeAt(path, i);\n    else if (isPathSeparator(code)) break;\n    else 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) res += `${separator}${StringPrototypeSlice(path, lastSlash + 1, i)}`;\n        else 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// ../../library/src/router/customNotFoundPagePaths.ts\nvar customNotFoundPagePaths = /* @__PURE__ */ new Set([\"/404.html\", \"/404\", \"/404/\"]);\n\n// ../../library/src/router/pathVariables.ts\nvar pathVariablesRegExpRaw = \":([a-z]\\\\w*)\";\nvar pathVariablesRegExp = /* @__PURE__ */ new RegExp(pathVariablesRegExpRaw, \"gi\");\n\n// ../../library/src/router/fillPathVariables.ts\nfunction fillPathVariables(path, variables) {\n  return path.replace(pathVariablesRegExp, (match, name) => {\n    const value = variables[name];\n    if (typeof value !== \"string\" || value.length === 0) return match;\n    return encodeURIComponent(value);\n  });\n}\n\n// ../../library/src/router/forwardQueryParams.ts\nfunction forwardCurrentQueryParams(href) {\n  const queryParamsString = typeof window !== \"undefined\" ? window.location.search : \"\";\n  if (!queryParamsString) {\n    return href;\n  }\n  return forwardQueryParams(queryParamsString, href);\n}\nfunction forwardQueryParams(queryParamsString, href) {\n  const startOfHash = href.indexOf(\"#\");\n  const hrefWithoutHash = startOfHash === -1 ? href : href.substring(0, startOfHash);\n  const hash2 = startOfHash === -1 ? \"\" : href.substring(startOfHash);\n  const startOfSearch = hrefWithoutHash.indexOf(\"?\");\n  if (startOfSearch === -1) {\n    return hrefWithoutHash + queryParamsString + hash2;\n  }\n  const currentSearchParams = new URLSearchParams(queryParamsString);\n  const newSearchString = hrefWithoutHash.substring(startOfSearch + 1);\n  const newSearchParams = new URLSearchParams(newSearchString);\n  for (const [key7, value] of currentSearchParams) {\n    if (!newSearchParams.has(key7)) {\n      newSearchParams.append(key7, value);\n    }\n  }\n  return hrefWithoutHash.substring(0, startOfSearch + 1) + newSearchParams.toString() + hash2;\n}\n\n// ../../library/src/router/getLocalizedNavigationPath.ts\nasync function replacePathVariables(path, currentLocale, nextLocale, defaultLocale, collectionId, pathVariables, collectionUtils) {\n  var _a;\n  let resultPath = path;\n  let isMissingInLocale = false;\n  const resultPathVariables = { ...pathVariables };\n  const matches = Array.from(resultPath.matchAll(pathVariablesRegExp));\n  const replacements = await Promise.all(\n    matches.map(async (match) => {\n      var _a2;\n      const pathVariableWithDelimiter = match == null ? void 0 : match[0];\n      const pathVariableValue = match == null ? void 0 : match[1];\n      if (!pathVariableWithDelimiter || !pathVariableValue) {\n        throw new Error(\"Failed to replace path variables: unexpected regex match group\");\n      }\n      const currentSlug = pathVariables[pathVariableValue];\n      if (!currentSlug || !isString(currentSlug)) {\n        throw new Error(`No slug found for path variable ${pathVariableValue}`);\n      }\n      const utils = await ((_a2 = collectionUtils == null ? void 0 : collectionUtils[collectionId]) == null ? void 0 : _a2.call(collectionUtils));\n      if (!utils || !currentLocale) {\n        return currentSlug;\n      }\n      const recordId = await utils.getRecordIdBySlug(currentSlug, currentLocale);\n      if (!recordId) return currentSlug;\n      const nextSlug = await utils.getSlugByRecordId(recordId, nextLocale);\n      if (!nextSlug) {\n        isMissingInLocale = true;\n        const defaultLocaleSlug = await utils.getSlugByRecordId(recordId, defaultLocale);\n        if (defaultLocaleSlug) {\n          resultPathVariables[pathVariableValue] = defaultLocaleSlug;\n        }\n        return defaultLocaleSlug ?? currentSlug;\n      }\n      resultPathVariables[pathVariableValue] = nextSlug;\n      return nextSlug;\n    })\n  );\n  let lastIndex = 0;\n  let replacedPath = \"\";\n  let hasMatch = false;\n  for (let i = 0; i < matches.length; i++) {\n    const match = matches[i];\n    const replacement = replacements[i];\n    if (!match || !replacement) continue;\n    replacedPath += resultPath.substring(lastIndex, match.index);\n    lastIndex = (match.index ?? 0) + (((_a = match[0]) == null ? void 0 : _a.length) ?? 0);\n    replacedPath += replacements[i];\n    hasMatch = true;\n  }\n  if (hasMatch) {\n    replacedPath += resultPath.substring(lastIndex);\n    resultPath = replacedPath;\n  }\n  return {\n    path: resultPath,\n    pathVariables: resultPathVariables,\n    isMissingInLocale\n  };\n}\nasync function getLocalizedNavigationPath({\n  currentLocale,\n  nextLocale,\n  defaultLocale,\n  route,\n  pathVariables,\n  collectionUtils,\n  preserveQueryParams\n}) {\n  const { path } = route;\n  let result = {\n    path,\n    pathVariables,\n    isMissingInLocale: false\n  };\n  if (!path) return result;\n  if (pathVariables && route.collectionId) {\n    try {\n      const pathReplacement = await replacePathVariables(\n        path,\n        currentLocale,\n        nextLocale,\n        defaultLocale,\n        route.collectionId,\n        pathVariables,\n        collectionUtils\n      );\n      result = pathReplacement;\n    } catch {\n    }\n  }\n  if (nextLocale.slug) {\n    result.path = \"/\" + nextLocale.slug + result.path;\n  }\n  if (preserveQueryParams && result.path) {\n    result.path = forwardCurrentQueryParams(result.path);\n  }\n  return result;\n}\n\n// ../../library/src/router/getSitePrefix.ts\nfunction getSitePrefix(siteCanonicalURL) {\n  if (!siteCanonicalURL) return \"\";\n  let url;\n  try {\n    url = new URL(siteCanonicalURL);\n  } catch {\n    return \"\";\n  }\n  if (url.pathname === \"/\" || window.location.origin !== url.origin) return \"\";\n  return url.pathname.endsWith(\"/\") ? url.pathname.slice(0, -1) : url.pathname;\n}\n\n// ../../library/src/router/pageEffects/useViewTransition.ts\nimport { useCallback, useEffect as useEffect3, useRef } from \"react\";\n\n// ../../library/src/router/pageEffects/PageEffectsContext.tsx\nimport React6 from \"react\";\nimport { jsx as jsx4 } from \"react/jsx-runtime\";\nvar defaultSitePageEffects = { global: void 0, routes: {} };\nvar PageEffectsContext = /* @__PURE__ */ React6.createContext(defaultSitePageEffects);\nfunction PageEffectsProvider({ children, value }) {\n  return /* @__PURE__ */ jsx4(PageEffectsContext.Provider, { value, children });\n}\nfunction usePageEffects() {\n  return React6.useContext(PageEffectsContext);\n}\n\n// ../../library/src/router/pageEffects/getPageEffect.ts\nfunction getPageEffectForRoute(currentRouteId, nextRouteId, { global, routes }) {\n  var _a;\n  return ((_a = routes[currentRouteId]) == null ? void 0 : _a[nextRouteId]) || global;\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/linearEasing.ts\nvar step = 10;\nvar maxDuration = 1e4;\nfunction createLinearEasing(generator) {\n  let time2 = step;\n  let state = generator.next(0);\n  const keyframes2 = [state.value];\n  while (!state.done && time2 < maxDuration) {\n    state = generator.next(time2);\n    keyframes2.push(state.value);\n    time2 += step;\n  }\n  if (keyframes2.length === 1) keyframes2.push(state.value);\n  return {\n    easing: `linear(${keyframes2.join(\",\")})`,\n    duration: time2 - step\n  };\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/masks.ts\nvar cssVariable = (name) => `--view-transition-${name}`;\nfunction parseUnit(value) {\n  return [parseFloat(value), value.endsWith(\"px\") ? \"px\" : \"%\"];\n}\nfunction calcMaskPosition(mask) {\n  const { innerWidth, innerHeight } = window;\n  const [x, xUnit] = parseUnit(mask.x);\n  const [y, yUnit] = parseUnit(mask.y);\n  return {\n    x: xUnit === \"px\" ? x : innerWidth * (x / 100),\n    y: yUnit === \"px\" ? y : innerHeight * (y / 100)\n  };\n}\nvar conic = {\n  makeKeyframe: (mask, progress2, page) => {\n    let percentage = 0;\n    if (page === \"exit\" && mask.angularDirection === \"clockwise\" && progress2 === \"start\" || page === \"exit\" && mask.angularDirection === \"counter-clockwise\" && progress2 === \"end\" || page === \"enter\" && mask.angularDirection === \"counter-clockwise\" && progress2 === \"start\" || page === \"enter\" && mask.angularDirection === \"clockwise\" && progress2 === \"end\") {\n      percentage = mask.sweepAngle / 360 * 100;\n    }\n    return `${cssVariable(\"conic-offset\")}: ${percentage}%;`;\n  },\n  makeStyles: (mask, page) => {\n    const offsetToken = `var(${cssVariable(\"conic-offset\")})`;\n    const isTransparentToBlack = page === \"exit\" && mask.angularDirection === \"clockwise\" || page === \"enter\" && mask.angularDirection === \"counter-clockwise\";\n    const firstColor = isTransparentToBlack ? \"transparent\" : \"black\";\n    const secondColor = isTransparentToBlack ? \"black\" : \"transparent\";\n    let gradient = `conic-gradient(from `;\n    gradient += `${mask.angle}deg at ${mask.x} ${mask.y}, `;\n    gradient += `${firstColor} 0%, ${firstColor} ${offsetToken}, `;\n    gradient += `${secondColor} ${offsetToken}, ${secondColor} 100%)`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => `\n        @property ${cssVariable(\"conic-offset\")} {\n            syntax: '<percentage>';\n            initial-value: 0%;\n            inherits: false;\n        }\n    `\n};\nvar circle = {\n  makeKeyframe: (mask, progress2) => {\n    const { x, y } = calcMaskPosition(mask);\n    if (progress2 === \"start\") {\n      return `clip-path: circle(0 at ${x}px ${y}px);`;\n    } else {\n      const endRadius = Math.hypot(Math.max(x, window.innerWidth - x), Math.max(y, window.innerHeight - y));\n      return `clip-path: circle(${endRadius}px at ${x}px ${y}px);`;\n    }\n  }\n};\nvar inset = {\n  makeKeyframe: (mask, progress2) => {\n    const { x, y } = calcMaskPosition(mask);\n    const bottom = window.innerHeight - y;\n    const right = window.innerWidth - x;\n    return progress2 === \"start\" ? `clip-path: inset(${y}px ${right}px ${bottom}px ${x}px round ${mask.round}px);` : `clip-path: inset(0 round 0);`;\n  }\n};\nvar blinds = {\n  makeKeyframe: (mask, progress2, page) => {\n    const [, unit] = parseUnit(mask.width);\n    let width = `0${unit}`;\n    if (progress2 === \"start\" && page === \"exit\" || progress2 === \"end\" && page === \"enter\") {\n      width = mask.width;\n    }\n    return `${cssVariable(\"blinds-width\")}: ${width};`;\n  },\n  makeStyles: (mask, page) => {\n    const widthToken = `var(${cssVariable(\"blinds-width\")})`;\n    const firstColor = page === \"exit\" ? \"transparent\" : \"black\";\n    const secondColor = page === \"exit\" ? \"black\" : \"transparent\";\n    let gradient = `repeating-linear-gradient(`;\n    gradient += mask.angle + 90 + \"deg, \";\n    gradient += `${firstColor} 0px, ${firstColor} ${widthToken}, `;\n    gradient += `${secondColor} ${widthToken}, ${secondColor} ${mask.width})`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => {\n    return `\n            @property ${cssVariable(\"blinds-width\")} {\n                syntax: '<length-percentage>';\n                initial-value: 0px;\n                inherits: false;\n            }\n        `;\n  }\n};\nvar wipe = {\n  makeKeyframe: (_mask, progress2, page) => {\n    const offset = progress2 === \"start\" && page === \"exit\" || progress2 === \"end\" && page === \"enter\" ? 1 : 0;\n    return `${cssVariable(\"wipe-offset\")}: ${offset};`;\n  },\n  makeStyles: (mask, page) => {\n    const offsetToken = `var(${cssVariable(\"wipe-offset\")})`;\n    const firstColor = page === \"exit\" ? \"transparent\" : \"black\";\n    const secondColor = page === \"exit\" ? \"black\" : \"transparent\";\n    let gradient = `linear-gradient(`;\n    gradient += mask.angle + 90 + \"deg, \";\n    gradient += `${firstColor} calc(calc(0% - ${mask.width}) + calc(calc(100% + ${mask.width}) * ${offsetToken})), `;\n    gradient += `${secondColor} calc(calc(100% + ${mask.width}) * ${offsetToken}))`;\n    return `mask-image: ${gradient}; -webkit-mask-image: ${gradient};`;\n  },\n  makePropertyRules: () => {\n    return `\n            @property ${cssVariable(\"wipe-offset\")} {\n                syntax: '<number>';\n                initial-value: 0;\n                inherits: false;\n            }\n        `;\n  }\n};\nvar maskGenerators = { circle, conic, inset, blinds, wipe };\n\n// ../../library/src/router/pageEffects/cssGeneration/page.ts\nvar restState = {\n  opacity: 1,\n  x: \"0px\",\n  y: \"0px\",\n  scale: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  mask: void 0\n};\nfunction valuesToCSSKeyframes(values, progress2, page, maskGenerator) {\n  var _a;\n  let keyframes2 = `\n      opacity: ${values.opacity};\n      transform: translate(${values.x}, ${values.y}) scale(${values.scale}) rotateX(${values.rotateX}deg) rotateY(${values.rotateY}deg) rotateZ(${values.rotate}deg);\n    `;\n  if (values.mask) {\n    keyframes2 += ((_a = maskGenerator == null ? void 0 : maskGenerator.makeKeyframe) == null ? void 0 : _a.call(maskGenerator, values.mask, progress2, page)) || \"\";\n  }\n  return keyframes2;\n}\nfunction getMaskGenerator(type) {\n  return type ? maskGenerators[type] : void 0;\n}\nfunction createPageTransitionRules(page, { transition, ...values }) {\n  var _a;\n  const name = \"view-transition-\" + page;\n  const settings = { duration: \"0s\", easing: \"linear\" };\n  if (transition.type === \"tween\") {\n    settings.duration = transition.duration + \"s\";\n    settings.easing = `cubic-bezier(${transition.ease.join(\",\")})`;\n  } else if (isSpringTransition(transition)) {\n    const { easing, duration } = createLinearEasing(\n      spring({\n        keyframes: [0, 1],\n        ...getSpringOptions(transition),\n        restDelta: 1e-3,\n        restSpeed: 1e-4\n      })\n    );\n    settings.duration = duration + \"ms\";\n    settings.easing = easing;\n  }\n  const maskGenerator = getMaskGenerator((_a = values == null ? void 0 : values.mask) == null ? void 0 : _a.type);\n  let startKeyframes = valuesToCSSKeyframes(values, \"start\", page, maskGenerator);\n  let endKeyframes = valuesToCSSKeyframes({ ...restState, mask: values.mask }, \"end\", page, maskGenerator);\n  if (page === \"exit\") {\n    ;\n    [startKeyframes, endKeyframes] = [endKeyframes, startKeyframes];\n  }\n  return `\n        ${values.mask && (maskGenerator == null ? void 0 : maskGenerator.makePropertyRules) ? maskGenerator.makePropertyRules(values.mask) : \"\"}\n\n        @keyframes ${name} {\n            0% {\n                ${startKeyframes}\n            }\n\n            100% {\n                ${endKeyframes}\n            }\n        }\n\n        ::view-transition-${page === \"enter\" ? \"new\" : \"old\"}(root) {\n            animation-name: ${name};\n            animation-duration: ${settings.duration};\n            animation-delay: ${transition.delay}s;\n            animation-timing-function: ${settings.easing};\n            animation-fill-mode: both;\n            ${values.mask && (maskGenerator == null ? void 0 : maskGenerator.makeStyles) ? maskGenerator.makeStyles(values.mask, page) : \"\"}\n        }\n    `;\n}\nfunction isSpringTransition(transition) {\n  return transition.type === \"spring\";\n}\nfunction getSpringOptions(transition) {\n  if (transition.durationBasedSpring) {\n    return {\n      duration: transition.duration * 1e3,\n      bounce: transition.bounce\n    };\n  }\n  return {\n    stiffness: transition.stiffness,\n    damping: transition.damping,\n    mass: transition.mass\n  };\n}\n\n// ../../library/src/router/pageEffects/cssGeneration/index.ts\nvar VIEW_TRANSITION_STYLES_ID = \"view-transition-styles\";\nvar defaultPageTransition = {\n  x: \"0px\",\n  y: \"0px\",\n  scale: 1,\n  opacity: 1,\n  rotate3d: false,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  mask: void 0,\n  transition: {\n    type: \"tween\",\n    delay: 0,\n    duration: 0.2,\n    ease: [0.27, 0, 0.51, 1],\n    stiffness: 400,\n    damping: 30,\n    mass: 1\n  }\n};\nfunction createViewTransitionStylesheet({ exit = defaultPageTransition, enter }) {\n  const styleElement = document.createElement(\"style\");\n  styleElement.id = VIEW_TRANSITION_STYLES_ID;\n  let styleContent = `\n        @media (prefers-reduced-motion) {\n            ::view-transition-group(*),\n            ::view-transition-old(*),\n            ::view-transition-new(*) {\n                animation: none !important;\n            }\n        }\n    `;\n  const disableMixPlusLighter = exit.mask || enter.mask || exit.opacity || enter.opacity || exit.transition.delay || enter.transition.delay;\n  if (disableMixPlusLighter) {\n    styleContent += `\n            ::view-transition-old(*),\n            ::view-transition-new(*) {\n                mix-blend-mode: normal;\n            }\n        `;\n  }\n  styleContent += `\n        ::view-transition-old(*),\n        ::view-transition-new(*) {\n            backface-visibility: hidden;\n        }\n    `;\n  styleContent += createPageTransitionRules(\"exit\", exit);\n  styleContent += createPageTransitionRules(\"enter\", enter);\n  styleElement.textContent = styleContent;\n  document.head.appendChild(styleElement);\n}\nfunction removeViewTransitionStylesheet() {\n  requestIdleCallback(() => {\n    frame.render(() => {\n      performance.mark(\"framer-vt-remove\");\n      const element = document.getElementById(VIEW_TRANSITION_STYLES_ID);\n      if (element) {\n        document.head.removeChild(element);\n      }\n    });\n  });\n}\n\n// ../../library/src/router/pageEffects/viewTransition.ts\nvar noop3 = () => {\n};\nfunction supportsViewTransitions() {\n  return Boolean(document.startViewTransition);\n}\nfunction addVTStylesheetAfterInRender(effect) {\n  return new Promise((resolve) => {\n    frame.render(() => {\n      performance.mark(\"framer-vt-style\");\n      createViewTransitionStylesheet(effect);\n      resolve();\n    });\n  });\n}\nasync function startViewTransition(updateView, effect, signal) {\n  if (!supportsViewTransitions()) {\n    void updateView();\n    return;\n  }\n  await addVTStylesheetAfterInRender(effect);\n  if (signal == null ? void 0 : signal.aborted) return;\n  performance.mark(\"framer-vt\");\n  const transition = document.startViewTransition(async () => {\n    performance.mark(\"framer-vt-freeze\");\n    if (signal == null ? void 0 : signal.aborted) return;\n    else signal == null ? void 0 : signal.addEventListener(\"abort\", () => transition.skipTransition());\n    await updateView();\n  });\n  transition.updateCallbackDone.then(() => {\n    performance.mark(\"framer-vt-unfreeze\");\n  }).catch(noop3);\n  Promise.all([transition.ready, transition.finished]).then(() => {\n    performance.mark(\"framer-vt-finished\");\n    removeViewTransitionStylesheet();\n  }).catch(noop3);\n  return transition;\n}\n\n// ../../library/src/router/pageEffects/useViewTransition.ts\nfunction useViewTransition() {\n  const sitePageEffects = usePageEffects();\n  const resolveHasPainted = useRef(void 0);\n  useEffect3(() => {\n    if (resolveHasPainted.current) {\n      resolveHasPainted.current();\n      resolveHasPainted.current = void 0;\n    }\n  });\n  return useCallback(\n    (currentRouteId, nextRouteId, update, signal) => {\n      const pageEffect = getPageEffectForRoute(currentRouteId, nextRouteId, sitePageEffects);\n      if (pageEffect) {\n        const hasPainted = new Promise((resolve) => {\n          resolveHasPainted.current = resolve;\n        });\n        return startViewTransition(\n          async () => {\n            update();\n            await hasPainted;\n          },\n          pageEffect,\n          signal\n        );\n      }\n      update();\n    },\n    [sitePageEffects]\n  );\n}\n\n// ../../library/src/router/routerDomUtils.ts\nfunction updateCanonicalURL(url, prevUrl) {\n  requestIdleCallback(() => {\n    const canonical = document.querySelector(\"link[rel='canonical']\");\n    if (!canonical) return;\n    const newURL = new URL(url, prevUrl);\n    newURL.search = \"\";\n    canonical.setAttribute(\"href\", newURL.toString());\n  });\n}\nvar announceDiv;\nvar announceNavigation = () => {\n  if (!announceDiv) {\n    announceDiv = document.createElement(\"div\");\n    announceDiv.setAttribute(\"aria-live\", \"assertive\");\n    announceDiv.setAttribute(\"aria-atomic\", \"true\");\n    announceDiv.style.position = \"absolute\";\n    announceDiv.style.transform = \"scale(0)\";\n    document.body.append(announceDiv);\n  }\n  setTimeout(() => {\n    announceDiv.textContent = document.title;\n  }, 60);\n};\n\n// ../../library/src/router/useMonitorNextPaintAfterRender.ts\nimport { useCallback as useCallback2, useRef as useRef2 } from \"react\";\n\n// ../../library/src/utils/useAfterPaintEffect.ts\nimport { useLayoutEffect } from \"react\";\nfunction useAfterPaintEffect(effectFn, deps, options, useEffectFn = useLayoutEffect) {\n  useEffectFn(() => {\n    const runAfterPaint = async (fn) => {\n      await yieldToMain({ ...options, continueAfter: \"paint\" });\n      return fn();\n    };\n    const runPromise = runAfterPaint(effectFn);\n    return () => {\n      void (async () => {\n        const cleanup = await runPromise;\n        if (!cleanup) return;\n        void runAfterPaint(cleanup);\n      })();\n    };\n  }, deps);\n}\n\n// ../../library/src/router/useMonitorNextPaintAfterRender.ts\nfunction useMonitorNextPaintAfterRender(label) {\n  const resolveHasPainted = useRef2(void 0);\n  useAfterPaintEffect(\n    () => {\n      if (resolveHasPainted.current) {\n        resolveHasPainted.current();\n        resolveHasPainted.current = void 0;\n      }\n    },\n    void 0,\n    // user-blocking ensures we get the correct timings here. Other priorities might delay this effect a little bit.\n    { priority: \"user-blocking\" }\n  );\n  return useCallback2(\n    (measureDetail) => {\n      const hasPainted = new Promise((resolve) => {\n        resolveHasPainted.current = resolve;\n      });\n      if (!label) return { promise: hasPainted, measureDetail, ignore: null };\n      const startLabel = `${label}-start`;\n      const endLabel = `${label}-end`;\n      let ignore = false;\n      performance.mark(startLabel);\n      hasPainted.finally(() => {\n        if (ignore) return;\n        performance.mark(endLabel);\n        performance.measure(label, {\n          start: startLabel,\n          end: endLabel,\n          detail: measureDetail\n        });\n      }).catch((e) => {\n        console.error(e);\n      });\n      return {\n        promise: hasPainted,\n        measureDetail,\n        ignore: () => {\n          var _a;\n          ignore = true;\n          (_a = resolveHasPainted.current) == null ? void 0 : _a.call(resolveHasPainted);\n          resolveHasPainted.current = void 0;\n        }\n      };\n    },\n    [label]\n  );\n}\n\n// ../../library/src/router/history.ts\nasync function pushRouteState(routeId, route, {\n  currentRoutePath,\n  currentPathVariables,\n  hash: hash2,\n  pathVariables,\n  localeId,\n  preserveQueryParams,\n  siteCanonicalURL\n}, isNavigationTransition = false) {\n  const { path } = route;\n  if (!path) return;\n  const newPath = getPathForRoute(route, {\n    currentRoutePath,\n    currentPathVariables,\n    hash: hash2,\n    pathVariables,\n    preserveQueryParams,\n    siteCanonicalURL\n  });\n  try {\n    return await pushHistoryState({ routeId, hash: hash2, pathVariables, localeId }, newPath, isNavigationTransition);\n  } catch {\n  }\n}\nfunction isHistoryState(data2) {\n  const routeIdKey = \"routeId\";\n  return isObject2(data2) && isString(data2[routeIdKey]);\n}\nfunction replaceHistoryState(data2, url, ignoreReplaceStateWrapper = false) {\n  performance.mark(\"framer-history-replace\");\n  const replaceState = ignoreReplaceStateWrapper ? window.history.__proto__.replaceState : window.history.replaceState;\n  replaceState.call(window.history, data2, \"\", url);\n}\nvar maybeHasPopstateBug = true;\nvar isImpactedPopstateBugChromiumVersion = /* @__PURE__ */ (() => {\n  if (typeof navigator === \"undefined\") return false;\n  const userAgent = navigator.userAgent;\n  const chromePos = userAgent.indexOf(\"Chrome/\");\n  const chromiumVersion = +userAgent.slice(chromePos + 7, userAgent.indexOf(\".\", chromePos));\n  return chromiumVersion > 101 && chromiumVersion < 128;\n})();\nasync function pushHistoryState(data2, url, isNavigationTransition = false) {\n  performance.mark(\"framer-history-push\");\n  updateCanonicalURL(url, window.location.href);\n  if (!isNavigationTransition) {\n    window.history.pushState(data2, \"\", url);\n    return;\n  }\n  let popstateCalled = false, popstateListener;\n  if (maybeHasPopstateBug) {\n    popstateListener = () => {\n      popstateCalled = true;\n      if (isImpactedPopstateBugChromiumVersion) return;\n      const msg = \"Popstate called after intercept(). Please report this to the Framer team.\";\n      console.error(msg);\n      sendTrackingEvent(\"published_site_load_recoverable_error\", {\n        message: msg\n      });\n    };\n    window.addEventListener(\"popstate\", popstateListener, { once: true });\n  }\n  if (isImpactedPopstateBugChromiumVersion && maybeHasPopstateBug) {\n    window.history.__proto__.pushState.call(window.history, data2, \"\", url);\n  } else {\n    window.history.pushState(data2, \"\", url);\n  }\n  if (maybeHasPopstateBug) {\n    queueMicrotask(() => {\n      if (popstateCalled) return;\n      maybeHasPopstateBug = false;\n      window.removeEventListener(\"popstate\", popstateListener);\n      return;\n    });\n  }\n}\nfunction useReplaceInitialState({\n  disabled,\n  routeId,\n  initialPathVariables,\n  initialLocaleId\n}) {\n  useLayoutEffect2(() => {\n    if (disabled) return;\n    performance.mark(\"framer-history-set-initial-state\");\n    replaceHistoryState(\n      { routeId, pathVariables: initialPathVariables, localeId: initialLocaleId },\n      void 0,\n      true\n    );\n  }, []);\n}\nvar supportsNavigationAPI = /* @__PURE__ */ (() => {\n  var _a;\n  return isWindow && typeof ((_a = window.navigation) == null ? void 0 : _a.back) === \"function\";\n})();\nfunction usePopStateHandler(currentRouteId, setCurrentRouteId) {\n  const startViewTransition2 = useViewTransition();\n  const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender(\"framer-route-change\");\n  const viewTransitionReady = useRef3(void 0);\n  const popStateHandler = useCallback3(\n    async ({ state }) => {\n      var _a, _b, _c, _d, _e, _f;\n      if (((_a = window.navigation) == null ? void 0 : _a.transition) && ((_c = (_b = window.navigation) == null ? void 0 : _b.transition) == null ? void 0 : _c.navigationType) !== \"traverse\") return;\n      if (!isObject2(state)) return;\n      const { routeId, hash: hash2, pathVariables, localeId } = state;\n      if (!isString(routeId)) return;\n      const nextRender = monitorNextPaintAfterRender({\n        popstate: true\n      });\n      const stopMonitoringINPRelatedInputs = monitorINPRelatedInputs();\n      void nextRender.promise.finally(stopMonitoringINPRelatedInputs);\n      const changeRoute = () => {\n        setCurrentRouteId(\n          routeId,\n          isString(localeId) ? localeId : void 0,\n          isString(hash2) ? hash2 : void 0,\n          isObject2(pathVariables) ? pathVariables : void 0,\n          true,\n          nextRender,\n          false\n        );\n      };\n      const viewTransition = await startViewTransition2(currentRouteId.current, routeId, changeRoute);\n      const navigationTransition = (_d = window.navigation) == null ? void 0 : _d.transition;\n      await ((viewTransition == null ? void 0 : viewTransition.updateCallbackDone) ?? Promise.resolve()).then((_e = viewTransitionReady.current) == null ? void 0 : _e.resolve).catch((_f = viewTransitionReady.current) == null ? void 0 : _f.reject);\n      await nextRender.promise;\n      try {\n        await (navigationTransition == null ? void 0 : navigationTransition.finished);\n      } catch (error) {\n        console.warn(\"Popstate transition failed\", error);\n      }\n      announceNavigation();\n      updateCanonicalURL(window.location.href);\n    },\n    [currentRouteId, monitorNextPaintAfterRender, setCurrentRouteId, startViewTransition2]\n  );\n  const traversalHandler = useCallback3((event) => {\n    if (event.navigationType !== \"traverse\") return;\n    event.intercept({\n      async handler() {\n        await new Promise((resolve, reject) => {\n          viewTransitionReady.current = { resolve, reject };\n        });\n        viewTransitionReady.current = void 0;\n      },\n      scroll: \"after-transition\"\n    });\n  }, []);\n  useEffect4(() => {\n    window.addEventListener(\"popstate\", popStateHandler);\n    if (supportsNavigationAPI) window.navigation.addEventListener(\"navigate\", traversalHandler);\n    return () => {\n      window.removeEventListener(\"popstate\", popStateHandler);\n      if (supportsNavigationAPI) window.navigation.removeEventListener(\"navigate\", traversalHandler);\n    };\n  }, [popStateHandler, traversalHandler]);\n}\nfunction getHashForRoute(hash2, route, hashVariables) {\n  const resolvedHash = getRouteElementId(route, hash2);\n  if (!resolvedHash) return void 0;\n  const variables = Object.assign({}, route == null ? void 0 : route.elements, hashVariables);\n  return resolvedHash.replace(pathVariablesRegExp, (m2, p1) => variables[p1] ?? m2);\n}\nfunction getPathForRoute(route, {\n  currentRoutePath,\n  currentPathVariables,\n  hash: hash2,\n  pathVariables,\n  hashVariables,\n  relative: relative2 = true,\n  preserveQueryParams,\n  onlyHash = false,\n  siteCanonicalURL\n}) {\n  const resolvedHash = getHashForRoute(hash2, route, hashVariables);\n  if (onlyHash) return resolvedHash ?? \"\";\n  let currentPath = currentRoutePath ?? \"/\";\n  if (currentPathVariables) {\n    currentPath = currentPath.replace(pathVariablesRegExp, (m2, p1) => String(currentPathVariables[p1] || m2));\n  }\n  const targetPath = (route == null ? void 0 : route.path) ?? \"/\";\n  let path = targetPath;\n  if (pathVariables) {\n    path = path.replace(pathVariablesRegExp, (m2, p1) => String(pathVariables[p1] || m2));\n  }\n  const isSamePageHashNavigation = currentPath === path && resolvedHash;\n  if (relative2) {\n    if (customNotFoundPagePaths.has(currentPath) && typeof window !== \"undefined\") {\n      const sitePrefix = getSitePrefix(siteCanonicalURL);\n      path = computeRelativePath(window.location.pathname, sitePrefix + path);\n    } else {\n      path = computeRelativePath(currentPath, path);\n    }\n  }\n  if (preserveQueryParams || isSamePageHashNavigation) {\n    path = forwardCurrentQueryParams(path);\n  }\n  if (resolvedHash) {\n    path = `${path}#${resolvedHash}`;\n  }\n  return path;\n}\nasync function handleRedirectForMissingSlugs(route, pathVariables, nextLocale) {\n  if (!route.path) return false;\n  if (!pathVariables) return false;\n  const prefix2 = nextLocale.slug ? `/${nextLocale.slug}` : \"\";\n  const nextLocaleWithDefaultSlugPath = `${prefix2}${fillPathVariables(route.path, pathVariables)}`;\n  const response = await fetch(nextLocaleWithDefaultSlugPath, {\n    method: \"HEAD\",\n    redirect: \"manual\"\n  });\n  const isRedirect = response.type === \"opaqueredirect\";\n  if (isRedirect) {\n    window.location.href = window.location.origin + nextLocaleWithDefaultSlugPath;\n    return true;\n  }\n  return false;\n}\nasync function switchLocale(options) {\n  const result = await getLocalizedNavigationPath(options);\n  if (!result) return;\n  try {\n    localStorage.setItem(\"preferredLocale\", options.nextLocale.code);\n  } catch {\n  }\n  try {\n    if (!isString(result.path)) {\n      throw new Error(\"Expected result.path to be a string\");\n    }\n    if (result.isMissingInLocale) {\n      const hasRedirect = await handleRedirectForMissingSlugs(\n        options.route,\n        result.pathVariables,\n        options.nextLocale\n      );\n      if (hasRedirect) return;\n    }\n  } catch {\n  }\n  return result;\n}\nfunction pushLoadMoreHistory(hash2, paginationInfo) {\n  try {\n    const currentHistoryState = window.history.state;\n    if (!isHistoryState(currentHistoryState)) return;\n    const isInitialLoad = (currentHistoryState == null ? void 0 : currentHistoryState.paginationInfo) === void 0 || currentHistoryState.paginationInfo[hash2] === void 0;\n    const newPaginationInfo = { ...currentHistoryState.paginationInfo, [hash2]: paginationInfo };\n    replaceHistoryState({ ...currentHistoryState, paginationInfo: newPaginationInfo }, void 0, isInitialLoad);\n  } catch {\n  }\n}\nfunction useNativeLoadingSpinner() {\n  const navigationPromise = useRef3(Promise.resolve());\n  const navigationController = useRef3();\n  const navigateListener = useCallback3((navigateEvent) => {\n    if (navigateEvent.navigationType === \"traverse\") return;\n    const controller = navigationController.current;\n    controller == null ? void 0 : controller.signal.addEventListener(\"abort\", () => {\n      controller.abort(\"user aborted\");\n    });\n    navigateEvent.intercept({\n      handler: () => navigationPromise.current\n    });\n  }, []);\n  return useCallback3(\n    (promise, updateURL, controller) => {\n      if (!supportsNavigationAPI) {\n        void updateURL();\n        return;\n      }\n      navigationPromise.current = promise;\n      navigationController.current = controller;\n      window.navigation.addEventListener(\"navigate\", navigateListener);\n      void updateURL(true);\n      void promise.finally(() => {\n        window.navigation.removeEventListener(\"navigate\", navigateListener);\n      });\n    },\n    [navigateListener]\n  );\n}\n\n// ../../library/src/router/useRouteAnchor.ts\nimport React7 from \"react\";\nfunction useRouteAnchor(routeId, { elementId, hash: linkHash } = {}) {\n  const { navigate, currentPathVariables, preserveQueryParams, siteCanonicalURL } = useRouter();\n  const route = useRoute(routeId);\n  const currentRouteId = useCurrentRouteId();\n  const currentRoute = useRoute(currentRouteId ?? \"\");\n  useRoutePreloader([routeId], true);\n  const hash2 = linkHash ?? elementId;\n  const href = React7.useMemo(\n    () => getPathForRoute(route, {\n      currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n      currentPathVariables,\n      hash: hash2,\n      preserveQueryParams,\n      siteCanonicalURL\n    }),\n    [currentRoute, currentPathVariables, hash2, preserveQueryParams, route, siteCanonicalURL]\n  );\n  const navigateToRoute = React7.useCallback(() => navigate == null ? void 0 : navigate(routeId, hash2), [hash2, navigate, routeId]);\n  const onClick = React7.useCallback(\n    (event) => {\n      event.preventDefault();\n      navigateToRoute();\n    },\n    [navigateToRoute]\n  );\n  return { onClick, href };\n}\n\n// ../../library/src/router/useLocale.ts\nimport React8 from \"react\";\n\n// ../../library/src/router/getLocalesForCurrentRoute.ts\nasync function getLocalesForCurrentRoute(activeLocale, locales, currentRoute, pathVariables, collectionUtils) {\n  if (!currentRoute) return locales;\n  const slugByLocaleIfCollectionPage = await getSlugByLocaleIfCollectionPage(\n    activeLocale,\n    locales,\n    currentRoute,\n    pathVariables,\n    collectionUtils\n  );\n  const includedLocalesForCurrentRoute = currentRoute.includedLocales;\n  const localesForCurrentRoute = [];\n  for (const locale of locales) {\n    if (includedLocalesForCurrentRoute) {\n      if (!includedLocalesForCurrentRoute.includes(locale.id)) continue;\n    }\n    if (slugByLocaleIfCollectionPage) {\n      const hasSlug = slugByLocaleIfCollectionPage.has(locale.id);\n      if (!hasSlug) continue;\n    }\n    localesForCurrentRoute.push(locale);\n  }\n  return localesForCurrentRoute;\n}\nasync function getSlugByLocaleIfCollectionPage(activeLocale, locales, currentRoute, pathVariables, collectionUtils) {\n  var _a;\n  const { collectionId } = currentRoute;\n  if (!collectionId) return null;\n  if (!activeLocale) return null;\n  if (!pathVariables) return null;\n  const { path } = currentRoute;\n  if (!path) return null;\n  const matches = Array.from(path.matchAll(pathVariablesRegExp));\n  const lastMatch = matches.pop();\n  if (!lastMatch) return null;\n  const pathVariableWithDelimiter = lastMatch == null ? void 0 : lastMatch[0];\n  const pathVariableValue = lastMatch == null ? void 0 : lastMatch[1];\n  if (!pathVariableWithDelimiter || !pathVariableValue) {\n    throw new Error(\"Failed to replace path variables: unexpected regex match group\");\n  }\n  const currentSlug = pathVariables[pathVariableValue];\n  if (!currentSlug || !isString(currentSlug)) {\n    throw new Error(`No slug found for path variable ${pathVariableValue}`);\n  }\n  const utils = await ((_a = collectionUtils == null ? void 0 : collectionUtils[collectionId]) == null ? void 0 : _a.call(collectionUtils));\n  if (!utils) return null;\n  const recordId = await utils.getRecordIdBySlug(currentSlug, activeLocale);\n  if (!recordId) return null;\n  const slugById = /* @__PURE__ */ new Map();\n  await Promise.all(\n    locales.map(async (locale) => {\n      const slug = await utils.getSlugByRecordId(recordId, locale);\n      if (!slug) return;\n      slugById.set(locale.id, slug);\n    })\n  );\n  return slugById;\n}\n\n// ../../library/src/router/useLocale.ts\nvar noopAsync = async () => {\n};\nvar defaultLocaleInfo = {\n  activeLocale: null,\n  locales: [],\n  setLocale: noopAsync\n};\nvar LocaleInfoContext = /* @__PURE__ */ React8.createContext(defaultLocaleInfo);\nfunction useLocaleInfo() {\n  return React8.useContext(LocaleInfoContext);\n}\nfunction useLocalesForCurrentRoute() {\n  const { currentRouteId, routes, collectionUtils, currentPathVariables } = useRouter();\n  const { activeLocale, locales } = useLocaleInfo();\n  const [localesForCurrentRoute, setLocalesForCurrentRoute] = React8.useState(\n    () => activeLocale ? [activeLocale] : []\n  );\n  const currentRoute = currentRouteId ? routes == null ? void 0 : routes[currentRouteId] : void 0;\n  React8.useEffect(() => {\n    let active = true;\n    getLocalesForCurrentRoute(activeLocale, locales, currentRoute, currentPathVariables, collectionUtils).then((localesSubset) => {\n      if (!active) return;\n      React8.startTransition(() => {\n        if (localesSubset) {\n          setLocalesForCurrentRoute(localesSubset);\n        } else {\n          setLocalesForCurrentRoute(activeLocale ? [activeLocale] : []);\n        }\n      });\n    }).catch(() => {\n    });\n    return () => {\n      active = false;\n    };\n  }, [activeLocale, locales, collectionUtils, currentRoute, currentPathVariables]);\n  return localesForCurrentRoute;\n}\nfunction useLocalizationInfo() {\n  const { activeLocale, locales, setLocale } = useLocaleInfo();\n  return {\n    activeLocalization: activeLocale,\n    localizations: locales,\n    setLocalization: setLocale\n  };\n}\nfunction useLocaleCode() {\n  var _a;\n  return ((_a = useLocaleInfo().activeLocale) == null ? void 0 : _a.code) ?? \"en-US\";\n}\nfunction useLocale() {\n  return useLocaleCode();\n}\n\n// ../../library/src/router/hydration/reactHydrationINPOptimizer.ts\nimport { useEffect as useEffect5 } from \"react\";\nvar eventsToStop = [\n  \"mousedown\",\n  \"mouseup\",\n  \"touchcancel\",\n  \"touchend\",\n  \"touchstart\",\n  \"auxclick\",\n  \"dblclick\",\n  \"pointercancel\",\n  \"pointerdown\",\n  \"pointerup\",\n  \"dragend\",\n  \"dragstart\",\n  \"drop\",\n  \"compositionend\",\n  \"compositionstart\",\n  \"keydown\",\n  \"keypress\",\n  \"keyup\",\n  \"input\",\n  \"textInput\",\n  // Intentionally camelCase\n  \"copy\",\n  \"cut\",\n  \"paste\",\n  \"click\",\n  \"change\",\n  \"contextmenu\",\n  \"reset\"\n];\nvar stopFn = (event) => {\n  var _a, _b;\n  if (!((_b = (_a = event.target) == null ? void 0 : _a.closest) == null ? void 0 : _b.call(_a, \"#main\"))) return;\n  event.stopPropagation();\n  performance.mark(\"framer-react-event-handling-prevented\");\n};\nvar shouldTurnOnEventHandling = false;\nfunction turnOffReactEventHandling() {\n  if (!eventsToStop) return;\n  shouldTurnOnEventHandling = true;\n  performance.mark(\"framer-react-event-handling-start\");\n  const options = { capture: true };\n  eventsToStop.forEach((event) => document.body.addEventListener(event, stopFn, options));\n}\nfunction TurnOnReactEventHandling() {\n  useEffect5(() => {\n    if (!shouldTurnOnEventHandling || !eventsToStop) return;\n    const options = { capture: true };\n    eventsToStop.forEach((event) => document.body.removeEventListener(event, stopFn, options));\n    eventsToStop = void 0;\n    performance.mark(\"framer-react-event-handling-end\");\n  }, []);\n  return null;\n}\n\n// ../../library/src/router/hydration/hydrationTimings.ts\nimport { useEffect as useEffect6, useInsertionEffect, useLayoutEffect as useLayoutEffect3 } from \"react\";\n\n// ../../library/src/router/hydration/onlyRunOnce.ts\nfunction onlyRunOnce(originalMethod) {\n  let hasRun = false;\n  return function(...args) {\n    if (hasRun) return;\n    hasRun = true;\n    return originalMethod.apply(this, args);\n  };\n}\n\n// ../../library/src/router/hydration/hydrationTimings.ts\nfunction measureSafe(name, start, end) {\n  try {\n    performance.measure(name, start, end);\n  } catch (e) {\n    console.warn(`Could not measure ${name}`, e);\n  }\n}\nvar _measureUnattributedHydrationOverhead_dec, _measureMutationEffects_dec, _markLayoutStylePaintEnd_dec, _markRafEnd_dec, _markRafStart_dec, _markUseEffectsEnd_dec, _markUseEffectsAreSynchronous_dec, _markUseEffectsRouterStart_dec, _markUseEffectsStart_dec, _markUseLayoutEffectsEnd_dec, _markRouterUseLayoutEffectStart_dec, _markUseLayoutEffectsStart_dec, _markUseInsertionEffectsEnd_dec, _markUseInsertionEffectRouterStart_dec, _markUseInsertionEffectsStart_dec, _markRenderEnd_dec, _markRenderStart_dec, _init;\n_markRenderStart_dec = [onlyRunOnce], _markRenderEnd_dec = [onlyRunOnce], _markUseInsertionEffectsStart_dec = [onlyRunOnce], _markUseInsertionEffectRouterStart_dec = [onlyRunOnce], _markUseInsertionEffectsEnd_dec = [onlyRunOnce], _markUseLayoutEffectsStart_dec = [onlyRunOnce], _markRouterUseLayoutEffectStart_dec = [onlyRunOnce], _markUseLayoutEffectsEnd_dec = [onlyRunOnce], _markUseEffectsStart_dec = [onlyRunOnce], _markUseEffectsRouterStart_dec = [onlyRunOnce], _markUseEffectsAreSynchronous_dec = [onlyRunOnce], _markUseEffectsEnd_dec = [onlyRunOnce], _markRafStart_dec = [onlyRunOnce], _markRafEnd_dec = [onlyRunOnce], _markLayoutStylePaintEnd_dec = [onlyRunOnce], _measureMutationEffects_dec = [onlyRunOnce], _measureUnattributedHydrationOverhead_dec = [onlyRunOnce];\nvar HydrationMarker = class {\n  constructor() {\n    __runInitializers(_init, 5, this);\n    __publicField(this, \"render\", {\n      markStart: () => this.markRenderStart(),\n      markEnd: () => this.markRenderEnd()\n    });\n    __publicField(this, \"mutationEffects\", {\n      measure: () => this.measureMutationEffects()\n    });\n    __publicField(this, \"useInsertionEffects\", {\n      markStart: () => this.markUseInsertionEffectsStart(),\n      markRouterStart: () => this.markUseInsertionEffectRouterStart(),\n      markEnd: () => this.markUseInsertionEffectsEnd()\n    });\n    __publicField(this, \"useLayoutEffects\", {\n      markStart: () => this.markUseLayoutEffectsStart(),\n      markRouterStart: () => this.markRouterUseLayoutEffectStart(),\n      markEnd: () => this.markUseLayoutEffectsEnd()\n    });\n    __publicField(this, \"useEffects\", {\n      markStart: () => this.markUseEffectsStart(),\n      markRouterStart: () => this.markUseEffectsRouterStart(),\n      markEnd: () => this.markUseEffectsEnd(),\n      markAreSynchronous: () => this.markUseEffectsAreSynchronous()\n    });\n    __publicField(this, \"browserRendering\", {\n      hasStarted: false,\n      requestAnimationFrame: {\n        markStart: () => this.markRafStart(),\n        markEnd: () => this.markRafEnd()\n      },\n      layoutStylePaint: {\n        markEnd: () => this.markLayoutStylePaintEnd()\n      }\n    });\n    __publicField(this, \"unattributedHydrationOverhead\", {\n      measure: () => this.measureUnattributedHydrationOverhead()\n    });\n  }\n  markRenderStart() {\n    performance.mark(\"framer-hydration-start\" /* Hydration_Start */);\n  }\n  markRenderEnd() {\n    performance.mark(\"framer-hydration-render-end\" /* ReactRender_End */);\n    measureSafe(\"framer-hydration-render\" /* ReactRender */, \"framer-hydration-start\" /* Hydration_Start */, \"framer-hydration-render-end\" /* ReactRender_End */);\n  }\n  markUseInsertionEffectsStart() {\n    performance.mark(\"framer-hydration-insertion-effects-start\" /* UseInsertionEffects_Start */);\n  }\n  markUseInsertionEffectRouterStart() {\n    performance.mark(\"framer-hydration-router-insertion-effect\" /* UseInsertionEffect_RouterStart */);\n  }\n  markUseInsertionEffectsEnd() {\n    performance.mark(\"framer-hydration-insertion-effects-end\" /* UseInsertionEffects_End */);\n    measureSafe(\n      \"framer-hydration-insertion-effects\" /* UseInsertionEffects */,\n      \"framer-hydration-insertion-effects-start\" /* UseInsertionEffects_Start */,\n      \"framer-hydration-insertion-effects-end\" /* UseInsertionEffects_End */\n    );\n  }\n  markUseLayoutEffectsStart() {\n    performance.mark(\"framer-hydration-layout-effects-start\" /* UseLayoutEffects_Start */);\n  }\n  markRouterUseLayoutEffectStart() {\n    performance.mark(\"framer-hydration-router-layout-effect\" /* UseLayoutEffect_RouterStart */);\n  }\n  markUseLayoutEffectsEnd() {\n    performance.mark(\"framer-hydration-layout-effects-end\" /* UseLayoutEffects_End */);\n    measureSafe(\"framer-hydration-layout-effects\" /* UseLayoutEffects */, \"framer-hydration-layout-effects-start\" /* UseLayoutEffects_Start */, \"framer-hydration-layout-effects-end\" /* UseLayoutEffects_End */);\n  }\n  markUseEffectsStart() {\n    performance.mark(\"framer-hydration-effects-start\" /* UseEffects_Start */);\n  }\n  markUseEffectsRouterStart() {\n    performance.mark(\"framer-hydration-router-effect\" /* UseEffects_RouterStart */);\n  }\n  markUseEffectsAreSynchronous() {\n    performance.mark(\"framer-hydration-effects-sync\" /* UseEffectsAreSynchronous */);\n  }\n  markUseEffectsEnd() {\n    var _a, _b;\n    performance.mark(\"framer-hydration-effects-end\" /* UseEffects_End */);\n    measureSafe(\n      \"framer-hydration-effects\" /* UseEffects */,\n      ((_a = performance.getEntriesByName(\"framer-hydration-first-paint\" /* BrowserRender_LayoutStylePaintEnd */)[0]) == null ? void 0 : _a.name) ?? ((_b = performance.getEntriesByName(\"framer-hydration-effects-start\" /* UseEffects_Start */)[0]) == null ? void 0 : _b.name),\n      \"framer-hydration-effects-end\" /* UseEffects_End */\n    );\n  }\n  markRafStart() {\n    this.browserRendering.hasStarted = true;\n    performance.mark(\"framer-hydration-browser-render-start\" /* BrowserRender_RafStart */);\n  }\n  markRafEnd() {\n    performance.mark(\"framer-hydration-browser-raf-end\" /* BrowserRender_RafEnd */);\n    measureSafe(\n      \"framer-hydration-raf\" /* BrowserRender_RafDuration */,\n      \"framer-hydration-browser-render-start\" /* BrowserRender_RafStart */,\n      \"framer-hydration-browser-raf-end\" /* BrowserRender_RafEnd */\n    );\n  }\n  markLayoutStylePaintEnd() {\n    performance.mark(\"framer-hydration-first-paint\" /* BrowserRender_LayoutStylePaintEnd */);\n    measureSafe(\"framer-hydration-time-to-first-paint\" /* TimeToFirstPaint */, \"framer-hydration-start\" /* Hydration_Start */, \"framer-hydration-first-paint\" /* BrowserRender_LayoutStylePaintEnd */);\n    measureSafe(\n      \"framer-hydration-browser-render\" /* BrowserRender_LayoutStylePaintDuration */,\n      \"framer-hydration-browser-raf-end\" /* BrowserRender_RafEnd */,\n      \"framer-hydration-first-paint\" /* BrowserRender_LayoutStylePaintEnd */\n    );\n  }\n  measureMutationEffects() {\n    measureSafe(\"framer-hydration-commit\" /* MutationEffects */, \"framer-hydration-layout-effects-end\" /* UseLayoutEffects_End */, \"framer-hydration-effects-start\" /* UseEffects_Start */);\n  }\n  measureUnattributedHydrationOverhead() {\n    var _a, _b;\n    measureSafe(\n      \"framer-hydration-uho\" /* UnattributedHydrationOverhead */,\n      // If effects have run before the start of the render pipeline, we measure from the effects end.\n      // If not, the paint will happen before effects run, so we measure from the layout effects end.\n      ((_a = performance.getEntriesByName(\"framer-hydration-effects-end\" /* UseEffects_End */)[0]) == null ? void 0 : _a.name) ?? ((_b = performance.getEntriesByName(\"framer-hydration-layout-effects-end\" /* UseLayoutEffects_End */)[0]) == null ? void 0 : _b.name),\n      \"framer-hydration-browser-render-start\" /* BrowserRender_RafStart */\n    );\n  }\n};\n_init = __decoratorStart(null);\n__decorateElement(_init, 1, \"markRenderStart\", _markRenderStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markRenderEnd\", _markRenderEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseInsertionEffectsStart\", _markUseInsertionEffectsStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseInsertionEffectRouterStart\", _markUseInsertionEffectRouterStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseInsertionEffectsEnd\", _markUseInsertionEffectsEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseLayoutEffectsStart\", _markUseLayoutEffectsStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markRouterUseLayoutEffectStart\", _markRouterUseLayoutEffectStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseLayoutEffectsEnd\", _markUseLayoutEffectsEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseEffectsStart\", _markUseEffectsStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseEffectsRouterStart\", _markUseEffectsRouterStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseEffectsAreSynchronous\", _markUseEffectsAreSynchronous_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markUseEffectsEnd\", _markUseEffectsEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markRafStart\", _markRafStart_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markRafEnd\", _markRafEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"markLayoutStylePaintEnd\", _markLayoutStylePaintEnd_dec, HydrationMarker);\n__decorateElement(_init, 1, \"measureMutationEffects\", _measureMutationEffects_dec, HydrationMarker);\n__decorateElement(_init, 1, \"measureUnattributedHydrationOverhead\", _measureUnattributedHydrationOverhead_dec, HydrationMarker);\n__decoratorMetadata(_init, HydrationMarker);\nvar hydrationMarker;\nfunction markHydrationStart() {\n  hydrationMarker = new HydrationMarker();\n  hydrationMarker.render.markStart();\n}\nfunction useMarkRouterEffects() {\n  useInsertionEffect(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useInsertionEffects.markRouterStart();\n  }, []);\n  useLayoutEffect3(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useLayoutEffects.markRouterStart();\n  }, []);\n  useEffect6(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useEffects.markRouterStart();\n  }, []);\n}\nvar wasInBackground = false;\nfunction useMarkSuspenseEffectsStart() {\n  useInsertionEffect(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.render.markEnd();\n    hydrationMarker == null ? void 0 : hydrationMarker.useInsertionEffects.markStart();\n  }, []);\n  useLayoutEffect3(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useLayoutEffects.markStart();\n    if (document.visibilityState !== \"visible\") {\n      wasInBackground = true;\n      return;\n    }\n    frame.read(() => {\n      hydrationMarker == null ? void 0 : hydrationMarker.browserRendering.requestAnimationFrame.markStart();\n      hydrationMarker == null ? void 0 : hydrationMarker.unattributedHydrationOverhead.measure();\n    });\n  }, []);\n  useEffect6(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useEffects.markStart();\n    if (!(hydrationMarker == null ? void 0 : hydrationMarker.browserRendering.hasStarted)) {\n      hydrationMarker == null ? void 0 : hydrationMarker.mutationEffects.measure();\n      hydrationMarker == null ? void 0 : hydrationMarker.useEffects.markAreSynchronous();\n    }\n  }, []);\n}\nfunction useMarkSuspenseEffectEnd() {\n  useInsertionEffect(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useInsertionEffects.markEnd();\n  }, []);\n  useLayoutEffect3(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useLayoutEffects.markEnd();\n    if (wasInBackground || document.visibilityState !== \"visible\") return;\n    frame.read(() => {\n      hydrationMarker == null ? void 0 : hydrationMarker.browserRendering.requestAnimationFrame.markEnd();\n      void yieldToMain().then(() => {\n        hydrationMarker == null ? void 0 : hydrationMarker.browserRendering.layoutStylePaint.markEnd();\n      });\n    });\n  }, []);\n  useEffect6(() => {\n    hydrationMarker == null ? void 0 : hydrationMarker.useEffects.markEnd();\n  }, []);\n}\nfunction MarkSuspenseEffectsStart() {\n  useMarkSuspenseEffectsStart();\n  return null;\n}\nfunction MarkSuspenseEffectsEnd() {\n  useMarkSuspenseEffectEnd();\n  return null;\n}\nvar MarkSuspenseEffects = { Start: MarkSuspenseEffectsStart, End: MarkSuspenseEffectsEnd };\n\n// ../../library/src/router/error-boundary/NotFoundErrorBoundary.tsx\nimport { Component } from \"react\";\n\n// ../../library/src/router/renderPage.tsx\nimport React9 from \"react\";\nimport { jsx as jsx5 } from \"react/jsx-runtime\";\nfunction renderPage(Page4, defaultPageStyle) {\n  const props = { style: defaultPageStyle, \"data-framer-root\": \"\" };\n  return React9.isValidElement(Page4) ? React9.cloneElement(Page4, props) : /* @__PURE__ */ jsx5(Page4, { ...props });\n}\n\n// ../../library/src/router/error-boundary/NotFoundErrorBoundary.tsx\nvar NotFoundError = class extends Error {\n};\nvar NotFoundErrorBoundary = 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  /** Resets the error when forceUpdateKey gets bumped. */\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// ../../library/src/router/inferInitialRouteFromPath.ts\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) 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, locales = []) {\n  const [pathRoutes, paths] = getRouteInfoMemo(routes);\n  let activeLocale;\n  let localeId;\n  let locationPath = decodedLocationPath;\n  if (locales.length > 0) {\n    const firstPathSegment = locationPath.split(\"/\").find(Boolean);\n    if (firstPathSegment) {\n      activeLocale = locales.find(({ slug }) => slug === firstPathSegment);\n      if (activeLocale) {\n        localeId = activeLocale.id;\n        locationPath = locationPath.substring(activeLocale.slug.length + 1);\n      }\n    }\n    if (!localeId) {\n      const defaultLocale = locales.find(({ slug }) => slug === \"\");\n      if (defaultLocale) {\n        localeId = defaultLocale.id;\n      }\n    }\n  }\n  const exactMatch = pathRoutes[locationPath];\n  if (exactMatch) {\n    const match = matchPath(locationPath, exactMatch.path);\n    if (match.isMatch) return { routeId: exactMatch.routeId, localeId, pathVariables: match.pathVariables };\n  }\n  for (const { path, routeId } of paths) {\n    const match = matchPath(locationPath, path);\n    if (match.isMatch) return { routeId, localeId, pathVariables: match.pathVariables };\n  }\n  if (!fallback) throw new Error(\"No exact match found for path\");\n  const rootPath = pathRoutes[\"/\"];\n  if (rootPath) return { routeId: rootPath.routeId, localeId };\n  const firstRoute = Object.keys(routes)[0];\n  if (!firstRoute) throw new Error(\"Router should not have undefined routes\");\n  return { routeId: firstRoute, localeId };\n}\nfunction pathDepth(path) {\n  const pathWithTrimmedSlashes = path.replace(/^\\/|\\/$/gu, \"\");\n  if (pathWithTrimmedSlashes === \"\") 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) return { isMatch: false };\n  if (matches.length === 1) 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) 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(/[|\\\\{}()[\\]^$+*?.]/gu, \"\\\\$&\").replace(/-/gu, \"\\\\x2d\");\n}\n\n// ../../library/src/router/routeVariants.ts\nfunction getVariantsFromServerTiming() {\n  var _a;\n  if (\"PerformanceServerTiming\" in window) {\n    const serverTiming = (_a = performance.getEntriesByType(\"navigation\")[0]) == null ? void 0 : _a.serverTiming;\n    if (!serverTiming || serverTiming.length === 0) return new URLSearchParams();\n    const entry = serverTiming.find((it) => it.name === \"abtests\");\n    if (!entry) return new URLSearchParams();\n    return new URLSearchParams(entry.description);\n  }\n  return new URLSearchParams();\n}\nfunction patchRoute(routes, abTestId, abTestingVariantId) {\n  const route = routes[abTestingVariantId];\n  if (!route) return;\n  const routeId = route.abTestingParentId ?? abTestingVariantId;\n  if (!routes[routeId]) return;\n  const { abTestingParentId, ...patchingRoute } = route;\n  const elements = routes[routeId].elements || route.elements ? { ...routes[routeId].elements, ...route.elements } : void 0;\n  routes[routeId] = {\n    ...patchingRoute,\n    elements,\n    abTestingVariantId,\n    abTestId\n  };\n}\nfunction patchRoutesFromSearchParams(routes, variants) {\n  for (const [abTestId, abTestingVariantId] of variants) {\n    patchRoute(routes, abTestId, abTestingVariantId);\n  }\n}\nfunction removeRoutesVariants(routes) {\n  var _a;\n  for (const routeId in routes) {\n    if ((_a = routes[routeId]) == null ? void 0 : _a.abTestingParentId) {\n      delete routes[routeId];\n    }\n  }\n}\nfunction patchInitialRoute(routes, routeId) {\n  var _a, _b;\n  if (!routes[routeId]) return;\n  if (!routes[routeId].abTestingParentId) return;\n  const parentId = routes[routeId].abTestingParentId;\n  const { abTestingParentId, ...route } = routes[routeId];\n  const elements = ((_a = routes[parentId]) == null ? void 0 : _a.elements) || route.elements ? { ...(_b = routes[parentId]) == null ? void 0 : _b.elements, ...route.elements } : void 0;\n  routes[parentId] = {\n    ...route,\n    elements,\n    abTestingVariantId: routeId\n  };\n}\nfunction patchRoutesForABTesting(routes, initialRouteId) {\n  var _a;\n  if (typeof window === \"undefined\") return initialRouteId;\n  let resolvedInitialRouteId = initialRouteId;\n  if (initialRouteId) {\n    patchInitialRoute(routes, initialRouteId);\n    const parentRouteId = (_a = routes[initialRouteId]) == null ? void 0 : _a.abTestingParentId;\n    if (parentRouteId) {\n      resolvedInitialRouteId = parentRouteId;\n    }\n  }\n  patchRoutesFromSearchParams(routes, getVariantsFromServerTiming());\n  removeRoutesVariants(routes);\n  return resolvedInitialRouteId;\n}\n\n// ../../library/src/utils/warnOnce.ts\nvar warningMessages = /* @__PURE__ */ new Set();\nfunction warnOnce2(keyMessage, ...rest) {\n  if (warningMessages.has(keyMessage)) 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  warnOnce2(warningText);\n}\n\n// ../../library/src/animation/Animatable/Observers.ts\nvar Observers = class {\n  constructor() {\n    __publicField(this, \"observers\", /* @__PURE__ */ new Set());\n    __publicField(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    __publicField(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/roundedNumber.ts\nfunction roundedNumber(value, decimals) {\n  const d = Math.round(Math.abs(decimals));\n  const multiplier = 10 ** d;\n  return Math.round(value * multiplier) / multiplier;\n}\nfunction roundedNumberString(value, decimals) {\n  const result = value.toFixed(decimals);\n  return decimals === 0 ? result : `${+result}`;\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((Point2) => {\n  Point2.isQuadrilateralPoints = (points) => {\n    return (points == null ? void 0 : points.length) === 4;\n  };\n  Point2.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  Point2.subtract = (a, b) => {\n    return { x: a.x - b.x, y: a.y - b.y };\n  };\n  Point2.multiply = (a, b) => {\n    return { x: a.x * b, y: a.y * b };\n  };\n  Point2.divide = (a, b) => {\n    return { x: a.x / b, y: a.y / b };\n  };\n  Point2.absolute = (point) => {\n    return {\n      x: Math.abs(point.x),\n      y: Math.abs(point.y)\n    };\n  };\n  Point2.reverse = (point) => {\n    return {\n      x: point.x * -1,\n      y: point.y * -1\n    };\n  };\n  Point2.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  Point2.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  Point2.angle = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI - 90;\n  };\n  Point2.angleFromX = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI;\n  };\n  Point2.isEqual = (a, b) => {\n    return a.x === b.x && a.y === b.y;\n  };\n  Point2.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  Point2.center = center;\n  function centroid(points) {\n    let sumX = 0;\n    let sumY = 0;\n    points.forEach((point) => {\n      sumX += point.x;\n      sumY += point.y;\n    });\n    const centroidX = sumX / points.length;\n    const centroidY = sumY / points.length;\n    return { x: centroidX, y: centroidY };\n  }\n  Point2.centroid = centroid;\n  function sortClockwise(points) {\n    const centerPoint = Point2.centroid(points);\n    const angles = /* @__PURE__ */ new Map();\n    for (let i = 0; i < points.length; i++) {\n      const point = points[i];\n      if (!point) continue;\n      angles.set(point, Math.atan2(point.y - centerPoint.y, point.x - centerPoint.x));\n    }\n    return points.sort((a, b) => (angles.get(a) ?? 0) - (angles.get(b) ?? 0));\n  }\n  Point2.sortClockwise = sortClockwise;\n})(Point || (Point = {}));\n\n// ../../library/src/utils/assert.ts\nfunction assert(condition, ...msg) {\n  var _a, _b;\n  if (condition) return;\n  const e = Error(\"Assertion Error\" + (msg.length > 0 ? \": \" + msg.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/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    __publicField(this, \"unitBezier\");\n    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"destination\");\n    __publicField(this, \"interpolator\");\n    __publicField(this, \"progress\", 0);\n    __publicField(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      assert(this.interpolator !== void 0, \"setFrom() or setTo() must be called before next()\");\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    __publicField(this, \"a\");\n    __publicField(this, \"b\");\n    __publicField(this, \"c\");\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) return t2;\n      d2 = this.sampleDerivativeX(t2);\n      if (Math.abs(d2) < epsilon2) break;\n      t2 = t2 - x2 / d2;\n    }\n    t0 = 0;\n    t1 = 1;\n    t2 = x;\n    if (t2 < t0) return t0;\n    if (t2 > t1) return t1;\n    while (t0 < t1) {\n      x2 = this.sampleX(t2);\n      if (Math.abs(x2 - x) < epsilon2) return t2;\n      if (x > x2) t0 = t2;\n      else 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    __publicField(this, \"accelerationForState\");\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    __publicField(this, \"options\");\n    __publicField(this, \"state\");\n    __publicField(this, \"integrator\");\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  /**\n   * @param from -\n   * @param to -\n   * @internal\n   */\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 maxDuration2 = 10;\nvar minDamping = /* @__PURE__ */ (() => 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  // Tries to compute the duration of a spring,\n  // but can't for certain velocities and if dampingRatio >= 1\n  // In those cases it will return null\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, maxDuration2), 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 (!Number.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 = /* @__PURE__ */ (() => ({\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    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"destination\");\n    __publicField(this, \"difference\");\n    __publicField(this, \"state\");\n    __publicField(this, \"integrator\");\n    __publicField(this, \"interpolator\");\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    assert(this.interpolator !== void 0, \"setFrom() or setTo() must be called before next()\");\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    assert(this.difference !== void 0, \"setTo() must be called before progress()\");\n    return 1 - this.state.x / this.difference;\n  }\n  // The spring always settles to 0, so we create an interpolation to the destination\n  // And calculate the progress based on the current state and the span of the interpolation\n  // This lets us integrate over state.x, even though Value is generic\n  setTo(value) {\n    assert(this.current !== void 0, \"setFrom() must be called before setTo()\");\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  /** @internal */\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    __publicField(this, \"options\");\n    __publicField(this, \"current\");\n    __publicField(this, \"frictionAnimator\");\n    __publicField(this, \"springAnimator\");\n    __publicField(this, \"useSpring\");\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  // If the position is outside the min and max bounds, and traveling\n  // further away, then transition from friction to spring animation\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  // If the position is outside the min and max bounds, but traveling\n  // back towards the bounds, check if the velocity is sufficient to\n  // carry the position back within bounds. If it is, let friction do the\n  // work. If not, the state is invalid, so use the spring.\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  // The math behind _isValidState:\n  //\n  // 1. Integrate the friction animator's acceleration to find velocity\n  //\n  //         a = - k * v\n  //     dv/dt = - k * v\n  // Int(dv/v) = - k * Int(dt)\n  //      ln v = - k * t + C\n  //\n  // => Solve for C at t = 0\n  //\n  // ln v(0) = - k * 0 + C\n  // ln v(0) = C\n  //\n  // => Plug C back into v(t)\n  //\n  //     ln v = - k * t + ln v(0)\n  // e^(ln v) = e^(- k * t) + e^(ln v(0))\n  //        v = v(0) * e^(- k * t)\n  //\n  // 2. Integrate velocity to find position\n  //\n  // Int(v) = v(0) * Int(e^(- k * t))\n  //      x = - v(0) * e^(-k * t) / k + C\n  //\n  // => Solve for C at t = 0\n  //\n  //            x(0) = - v(0) * e^(-k * 0) / k + C\n  //            x(0) = - v(0) / k + C\n  // x(0) + v(0) / k = C\n  //\n  // => Plug C back into x(t)\n  //\n  // x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //\n  // 3. Check if a (real) solution exists for t for position x\n  //\n  //                                x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //                         x - x(0) = - v(0) * e^(-k * t) / k + v(0) / k\n  //                   k * (x - x(0)) = - v(0) * e^(-k * t) + v(0)\n  //            k * (x - x(0)) - v(0) = - v(0) * e^(-k * t)\n  // (k * (x - x(0)) - v(0)) / - v(0) = e^(-k * t)\n  //       1 - (k * (x - x(0)) / v(0) = e^(-k * t)\n  //   ln(1 - (k * (x - x(0)) / v(0)) = -k * t\n  //\n  // Therefore, a real solution exists if 1 - (k * (x - x(0)) / v(0) > 0\n};\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/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) return (toHigh + toLow) / 2;\n  const toDelta = toHigh - toLow;\n  if (toDelta === 0) 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 !Number.isNaN(value) && Number.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 = /\\d?\\.?\\d+/u.exec(input);\n  return match ? Number(match[0]) : void 0;\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/converters.ts\nvar Hsluv = /* @__PURE__ */ (() => require_hsluv().Hsluv)();\nvar hsluvConverter = /* @__PURE__ */ new Hsluv();\nfunction rgbToHsluv(r, g, b) {\n  hsluvConverter.rgb_r = r / 255;\n  hsluvConverter.rgb_g = g / 255;\n  hsluvConverter.rgb_b = b / 255;\n  hsluvConverter.rgbToHsluv();\n  return {\n    h: hsluvConverter.hsluv_h,\n    s: hsluvConverter.hsluv_s,\n    l: hsluvConverter.hsluv_l\n  };\n}\nfunction rgbaFromHusl(h, s, l, a = 1) {\n  hsluvConverter.hsluv_h = h;\n  hsluvConverter.hsluv_s = s;\n  hsluvConverter.hsluv_l = l;\n  hsluvConverter.hsluvToRgb();\n  return {\n    r: hsluvConverter.rgb_r * 255,\n    g: hsluvConverter.rgb_g * 255,\n    b: hsluvConverter.rgb_b * 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 = 0;\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\") _max = parseFloat(max);\n  else _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 = /* @__PURE__ */ (() => {\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: /^([\\da-f])([\\da-f])([\\da-f])$/iu,\n    hex6: /^([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/iu,\n    hex4: /^#?([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/iu,\n    hex8: /^#?([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/iu\n  };\n})();\nfunction stringToObject(inputColor) {\n  if (inputColor.includes(\"gradient(\")) return false;\n  if (inputColor.includes(\"var(\")) return false;\n  const trimLeft = /^[\\s,#]+/u;\n  let color2 = inputColor.replace(trimLeft, \"\").trimEnd().toLowerCase();\n  const namedColor = cssNames[color2];\n  if (namedColor) {\n    color2 = namedColor;\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(match[1] ?? \"\"),\n      g: parseInt(match[2] ?? \"\"),\n      b: parseInt(match[3] ?? \"\"),\n      a: 1,\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.rgba.exec(color2)) {\n    return {\n      r: parseInt(match[1] ?? \"\"),\n      g: parseInt(match[2] ?? \"\"),\n      b: parseInt(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.hsl.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      l: percentToFraction(match[3] ?? \"\"),\n      a: 1,\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsla.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      l: percentToFraction(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsv.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      v: percentToFraction(match[3] ?? \"\"),\n      a: 1,\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hsva.exec(color2)) {\n    return {\n      h: parseInt(match[1] ?? \"\"),\n      s: percentToFraction(match[2] ?? \"\"),\n      v: percentToFraction(match[3] ?? \"\"),\n      a: parseFloat(match[4] ?? \"\"),\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hex8.exec(color2)) {\n    return {\n      r: parseIntFromHex(match[1] ?? \"\"),\n      g: parseIntFromHex(match[2] ?? \"\"),\n      b: parseIntFromHex(match[3] ?? \"\"),\n      a: convertHexToDecimal(match[4] ?? \"\"),\n      format: namedColor ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex6.exec(color2)) {\n    return {\n      r: parseIntFromHex(match[1] ?? \"\"),\n      g: parseIntFromHex(match[2] ?? \"\"),\n      b: parseIntFromHex(match[3] ?? \"\"),\n      a: 1,\n      format: namedColor ? \"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: namedColor ? \"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: namedColor ? \"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/p3.ts\nvar p3Matcher = /^color\\(display-p3\\s+(?<r>\\d+\\.\\d+|\\d+|\\.\\d+)\\s+(?<g>\\d+\\.\\d+|\\d+|\\.\\d+)\\s+(?<b>\\d+\\.\\d+|\\d+|\\.\\d+)(?:\\s*\\/\\s*(?<a>\\d+\\.\\d+|\\d+|\\.\\d+))?\\)$/u;\nfunction parseP3(color2) {\n  const match = p3Matcher.exec(color2);\n  if (!match) return null;\n  const { r = \"0\", g = \"0\", b = \"0\", a } = match.groups ?? {};\n  return {\n    r: parseFloat(r),\n    g: parseFloat(g),\n    b: parseFloat(b),\n    a: a ? parseFloat(a) : 1\n  };\n}\nfunction convertRGBChannelToLrgb(c = 0) {\n  const abs = Math.abs(c);\n  if (abs <= 0.04045) return c / 12.92;\n  return (Math.sign(c) || 1) * ((abs + 0.055) / 1.055) ** 2.4;\n}\nfunction convertRgbToLrgb({ r, g, b, a }) {\n  return {\n    r: convertRGBChannelToLrgb(r),\n    g: convertRGBChannelToLrgb(g),\n    b: convertRGBChannelToLrgb(b),\n    a\n  };\n}\nfunction convertLrgbChannelToRgb(c = 0) {\n  const abs = Math.abs(c);\n  if (abs > 31308e-7) return (Math.sign(c) || 1) * (1.055 * abs ** (1 / 2.4) - 0.055);\n  return c * 12.92;\n}\nfunction convertLrgbToRgb({ r, g, b, a }) {\n  return {\n    r: convertLrgbChannelToRgb(r),\n    g: convertLrgbChannelToRgb(g),\n    b: convertLrgbChannelToRgb(b),\n    a\n  };\n}\nvar convertP3ToXyz65 = (color2) => {\n  const { r, g, b, a } = convertRgbToLrgb(color2);\n  return {\n    x: 0.486570948648216 * r + 0.265667693169093 * g + 0.1982172852343625 * b,\n    y: 0.2289745640697487 * r + 0.6917385218365062 * g + 0.079286914093745 * b,\n    z: 0 * r + 0.0451133818589026 * g + 1.043944368900976 * b,\n    a\n  };\n};\nvar convertXyz65ToRgb = ({ x = 0, y = 0, z = 0, a = 1 }) => {\n  return convertLrgbToRgb({\n    r: x * 3.2409699419045226 - y * 1.537383177570094 - 0.4986107602930034 * z,\n    g: x * -0.9692436362808796 + y * 1.8759675015077204 + 0.0415550574071756 * z,\n    b: x * 0.0556300796969936 - y * 0.2039769588889765 + 1.0569715142428784 * z,\n    a\n  });\n};\nvar convertRgbToXyz65 = (color2) => {\n  const { r, g, b, a } = convertRgbToLrgb(color2);\n  return {\n    x: 0.4123907992659593 * r + 0.357584339383878 * g + 0.1804807884018343 * b,\n    y: 0.2126390058715102 * r + 0.715168678767756 * g + 0.0721923153607337 * b,\n    z: 0.0193308187155918 * r + 0.119194779794626 * g + 0.9505321522496607 * b,\n    a\n  };\n};\nvar convertXyz65ToP3 = ({ x = 0, y = 0, z = 0, a = 1 }) => {\n  return convertLrgbToRgb({\n    r: x * 2.4934969119414263 - y * 0.9313836179191242 - 0.402710784450717 * z,\n    g: x * -0.8294889695615749 + y * 1.7626640603183465 + 0.0236246858419436 * z,\n    b: x * 0.0358458302437845 - y * 0.0761723892680418 + 0.9568845240076871 * z,\n    a\n  });\n};\nfunction convertRGBToHSV({ r, g, b, a }) {\n  const M = Math.max(r, g, b), m2 = Math.min(r, g, b);\n  const res = {\n    h: 0,\n    s: M === 0 ? 0 : 1 - m2 / M,\n    v: M,\n    a\n  };\n  if (M - m2 !== 0) {\n    res.h = (M === r ? (g - b) / (M - m2) + (g < b ? 6 : 0) : M === g ? (b - r) / (M - m2) + 2 : (r - g) / (M - m2) + 4) * 60;\n  }\n  return res;\n}\nfunction normalizeHue(hue) {\n  return (hue = hue % 360) < 0 ? hue + 360 : hue;\n}\nfunction convertHsvToRgb({ h = 0, s = 0, v = 0, a = 1 }) {\n  const hue = normalizeHue(h);\n  const f = Math.abs(hue / 60 % 2 - 1);\n  switch (Math.floor(hue / 60)) {\n    case 0:\n      return { r: v, g: v * (1 - s * f), b: v * (1 - s), a };\n    case 1:\n      return { r: v * (1 - s * f), g: v, b: v * (1 - s), a };\n    case 2:\n      return { r: v * (1 - s), g: v, b: v * (1 - s * f), a };\n    case 3:\n      return { r: v * (1 - s), g: v * (1 - s * f), b: v, a };\n    case 4:\n      return { r: v * (1 - s * f), g: v * (1 - s), b: v, a };\n    case 5:\n      return { r: v, g: v * (1 - s), b: v * (1 - s * f), a };\n    default:\n      return { r: v * (1 - s), g: v * (1 - s), b: v * (1 - s), a };\n  }\n}\nfunction convertRgbToP3(color2) {\n  return convertXyz65ToP3(convertRgbToXyz65(color2));\n}\nfunction convertP3ToRgb(color2) {\n  return convertXyz65ToRgb(convertP3ToXyz65(color2));\n}\n\n// ../../library/src/render/types/Color/Color.ts\nvar P3Color = class _P3Color {\n  constructor(color2) {\n    __publicField(this, \"format\", \"p3\");\n    __publicField(this, \"r\");\n    __publicField(this, \"g\");\n    __publicField(this, \"b\");\n    __publicField(this, \"a\");\n    this.r = color2.r ?? 0;\n    this.g = color2.g ?? 0;\n    this.b = color2.b ?? 0;\n    this.a = color2.a ?? 1;\n  }\n  hsv() {\n    return convertRGBToHSV(this);\n  }\n  rgb() {\n    return convertP3ToRgb(this);\n  }\n  hsl() {\n    return rgbToHsl(this.r, this.g, this.b);\n  }\n  toString(space = \"p3\", overrides) {\n    switch (space) {\n      case \"p3\": {\n        const r = (overrides == null ? void 0 : overrides.r) ?? this.r;\n        const g = (overrides == null ? void 0 : overrides.g) ?? this.g;\n        const b = (overrides == null ? void 0 : overrides.b) ?? this.b;\n        const a = (overrides == null ? void 0 : overrides.a) ?? this.a;\n        return a === 1 ? `color(display-p3 ${r} ${g} ${b})` : `color(display-p3 ${r} ${g} ${b} / ${a})`;\n      }\n      case \"srgb\": {\n        const color2 = this.rgb();\n        const clampedR = Math.round(Math.max(0, Math.min(color2.r, 1)) * 100) / 100;\n        const clampedG = Math.round(Math.max(0, Math.min(color2.g, 1)) * 100) / 100;\n        const clampedB = Math.round(Math.max(0, Math.min(color2.b, 1)) * 100) / 100;\n        const r = (overrides == null ? void 0 : overrides.r) ?? clampedR * 255;\n        const g = (overrides == null ? void 0 : overrides.g) ?? clampedG * 255;\n        const b = (overrides == null ? void 0 : overrides.b) ?? clampedB * 255;\n        const a = (overrides == null ? void 0 : overrides.a) ?? color2.a ?? 1;\n        return a === 1 ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${a})`;\n      }\n    }\n  }\n  static isP3String(color2) {\n    return color2.startsWith(\"color(display-p3\");\n  }\n  static fromHSV(color2, space = \"p3\") {\n    switch (space) {\n      case \"p3\":\n        return new _P3Color(convertHsvToRgb(color2));\n      case \"srgb\":\n        return new _P3Color(convertRgbToP3(convertHsvToRgb(color2)));\n    }\n  }\n  static fromRGB(color2) {\n    return new _P3Color(\n      convertRgbToP3({\n        // Converted an rgb value between 0-255 to a 0-1 decimal with 5 decimal places -> 0.78607.\n        r: Math.round(color2.r / 255 * 1e4) / 1e4,\n        g: Math.round(color2.g / 255 * 1e4) / 1e4,\n        b: Math.round(color2.b / 255 * 1e4) / 1e4,\n        a: color2.a ?? 1\n      })\n    );\n  }\n  static fromRGBString(color2) {\n    const value = Color(color2);\n    if (!value) return void 0;\n    return _P3Color.fromRGB(value);\n  }\n  static fromString(color2) {\n    if (!_P3Color.isP3String(color2)) return void 0;\n    const parsed = parseP3(color2);\n    if (!parsed) return void 0;\n    return new _P3Color({ r: parsed.r, g: parsed.g, b: parsed.b, a: parsed.a });\n  }\n  static srgbFromValue(color2) {\n    if (!isString(color2) || !Color.isP3String(color2)) return color2;\n    const value = _P3Color.fromString(color2);\n    if (!value) return color2;\n    return value.toString(\"srgb\");\n  }\n};\nfunction clampRGB(color2) {\n  return P3Color.srgbFromValue(color2);\n}\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) return c;\n      c = createColor(color2);\n      if (c === void 0) 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 === \"\") 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 isObject2(color2) && 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.isP3String = (color2) => {\n    if (typeof color2 !== \"string\") return false;\n    return P3Color.isP3String(color2);\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  const channelToDecimal = interpolate([0, 255], [0, 1]);\n  function convertChannelToLinearRgb(channel) {\n    channel = channelToDecimal(channel);\n    const abs = Math.abs(channel);\n    if (abs < 0.04045) return channel / 12.92;\n    return (Math.sign(channel) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n  }\n  Color2.luminance = (color2) => {\n    const { r, g, b } = Color2.toRgb(color2);\n    return 0.2126 * convertChannelToLinearRgb(r) + 0.7152 * convertChannelToLinearRgb(g) + 0.0722 * convertChannelToLinearRgb(b);\n  };\n  Color2.contrast = (a, b) => {\n    const l1 = Color2.luminance(a);\n    const l2 = Color2.luminance(b);\n    return (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);\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 (Number.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 _ValueInterpolation {\n  /**\n   * @internal\n   */\n  constructor(options = DefaultInterpolationOptions) {\n    __publicField(this, \"options\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"interpolate\", (from, to) => {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return this.interPolationForValue(from).interpolate(from, to);\n    });\n    /**\n     * @internal\n     */\n    __publicField(this, \"difference\", (from, to) => {\n      const interpolation = this.interPolationForValue(from);\n      return interpolation.difference(from, to);\n    });\n    this.options = { ...DefaultInterpolationOptions, ...options };\n  }\n  /**\n   * @internal\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/render/utils/isMotionValue.ts\nvar isMotionValue2 = (v) => v instanceof MotionValue;\n\n// ../../library/src/animation/Animators/PrecalculatedAnimator.ts\nvar Defaults2 = /* @__PURE__ */ (() => ({\n  delta: 1 / 60,\n  maxValues: 1e4\n}))();\nvar PrecalculatedAnimator = class {\n  constructor(options) {\n    __publicField(this, \"animator\");\n    __publicField(this, \"values\");\n    __publicField(this, \"currentTime\", 0);\n    __publicField(this, \"totalTime\");\n    __publicField(this, \"options\");\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    assert(this.values !== void 0, \"values must be set before calling indexForTime()\");\n    assert(this.totalTime !== void 0, \"totalTime must be set before calling indexForTime()\");\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    assert(this.values !== void 0, \"values must be set before calling valueForTime()\");\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    assert(this.totalTime !== void 0, \"totalTime must be set before calling 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    assert(this.totalTime !== void 0, \"totalTime must be set before calling isFinished()\");\n    return this.totalTime === 0 || this.currentTime >= this.totalTime;\n  }\n  get endValue() {\n    this.preCalculate();\n    assert(this.totalTime !== void 0, \"expecting totalTime to be set after calling preCalculate()\");\n    const value = this.valueForTime(this.totalTime);\n    assert(this.values !== void 0, \"expecting values to be set after calling preCalculate()\");\n    return this.values.length > 0 ? value : this.animator.next(0);\n  }\n};\n\n// ../../library/src/core/EventEmitter.ts\nvar EventEmitter3 = /* @__PURE__ */ (() => require_eventemitter3().EventEmitter)();\nvar EventEmitter = class {\n  constructor() {\n    __publicField(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) {\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/Time.ts\nvar _raf = (f) => {\n  setTimeout(f, 1 / 60);\n};\nvar __raf = /* @__PURE__ */ (() => safeWindow[\"requestAnimationFrame\"] || _raf)();\nvar raf = (f) => __raf(f);\n\n// ../../library/src/core/Loop.ts\nvar LoopTimeStep = /* @__PURE__ */ (() => 1 / 60)();\nvar Loop = class extends EventEmitter {\n  /**\n   * @internal\n   */\n  constructor(start = false) {\n    super();\n    __publicField(this, \"_started\", false);\n    __publicField(this, \"_frame\", 0);\n    __publicField(this, \"_frameTasks\", []);\n    /**\n     * @internal\n     */\n    __publicField(this, \"tick\", () => {\n      if (!this._started) 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  /**\n   * To add a task to be done at the end of a frame.\n   * Tasks added from a task will be ignored. These will run after loop events have been processed.\n   * @internal\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) 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  /**\n   * @internal\n   */\n  static set TimeStep(value) {\n    LoopTimeStep = value;\n  }\n  /**\n   * @internal\n   */\n  static get TimeStep() {\n    return LoopTimeStep;\n  }\n  /**\n   * @internal\n   */\n  start() {\n    if (this._started) return this;\n    this._frame = 0;\n    this._started = true;\n    raf(this.tick);\n    return this;\n  }\n  /**\n   * @internal\n   * @deprecated Don\u2019t use `stop` as you could be stopping the MainLoop for others.\n   */\n  stop() {\n    this._started = false;\n    return this;\n  }\n  /**\n   * @internal\n   */\n  get frame() {\n    return this._frame;\n  }\n  /**\n   * @internal\n   */\n  get time() {\n    return this._frame * LoopTimeStep;\n  }\n};\nvar MainLoop = /* @__PURE__ */ new Loop();\n\n// ../../library/src/render/types/RenderEnvironment.ts\nvar RenderEnvironment = {\n  target: (\n    // Enable static renderer when taking screenshots\n    // in screenshot-site lambda\n    safeWindow.location.origin === \"https://screenshot.framer.invalid\" ? \"EXPORT\" /* export */ : \"PREVIEW\" /* preview */\n  ),\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, zoom) {\n  let willChangeElements = false;\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}\nvar RenderTarget = {\n  /**\n   * The component is to be rendered for the Framer canvas.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.canvas) {\n   *     return <CanvasComponent />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  canvas: \"CANVAS\" /* canvas */,\n  /**\n   * The component is to be rendered for export.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.export) {\n   *     return <ExportComponent />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  export: \"EXPORT\" /* export */,\n  /**\n   * The component is to be rendered as a preview thumbnail, for example in the\n   * component panel.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.thumbnail) {\n   *     return <Thumbnail />\n   *   }\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  thumbnail: \"THUMBNAIL\" /* thumbnail */,\n  /**\n   * The component is being rendered in the preview window.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   React.useEffect(() => {\n   *     if (RenderTarget.current() === RenderTarget.preview) {\n   *       // Do something in preview.\n   *     }\n   *   })\n   *   return <DefaultComponent />\n   * }\n   * ```\n   */\n  preview: \"PREVIEW\" /* preview */,\n  /**\n   * Returns the current `RenderTarget` allowing components to apply\n   * different behaviors depending on the environment.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.current() === RenderTarget.thumbnail) {\n   *     return <PreviewIcon />\n   *   }\n   *   return <Frame>...</Frame>\n   * }\n   * ```\n   */\n  current: () => RenderEnvironment.target,\n  /**\n   * Returns true if the current `RenderTarget` has performance restrictions.\n   * Use this to avoid doing heavy work in these contexts because they may\n   * bail on the rendering if the component takes too long.\n   *\n   * @remarks\n   * ```jsx\n   * function App() {\n   *   if (RenderTarget.hasRestrictions()) {\n   *     return <SomePlaceholder />\n   *   }\n   *   return <RichPreviewContent />\n   * }\n   * ```\n   */\n  hasRestrictions: () => {\n    const target = RenderEnvironment.target;\n    if (target === \"CANVAS\" /* canvas */) return true;\n    if (target === \"EXPORT\" /* export */) return true;\n    return false;\n  }\n};\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    __publicField(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 !== RenderTarget.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 _FramerAnimation {\n  /**\n   * @internal\n   */\n  constructor(target, from, to, animatorClass, options, driverClass = MainLoopAnimationDriver) {\n    /**\n     * @internal\n     */\n    __publicField(this, \"driver\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"playStateSource\", \"idle\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"onfinish\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"oncancel\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"readyPromise\", Promise.resolve());\n    /**\n     * @internal\n     */\n    __publicField(this, \"readyResolve\", null);\n    /**\n     * @internal\n     */\n    __publicField(this, \"finishedPromise\", Promise.resolve());\n    /**\n     * @internal\n     */\n    __publicField(this, \"finishedResolve\", null);\n    /**\n     * @internal\n     */\n    // biome-ignore lint/suspicious/noExplicitAny: deprecated\n    __publicField(this, \"finishedReject\", null);\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  /**\n   * @internal\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  /**\n   * @internal\n   */\n  get playStateValue() {\n    return this.playStateSource;\n  }\n  /**\n   * @internal\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  /**\n   * @internal\n   */\n  get playState() {\n    return this.playStateValue;\n  }\n  /**\n   * @internal\n   */\n  resetReadyPromise() {\n    this.readyResolve = null;\n    this.readyPromise = new Promise((resolve, reject) => {\n      this.readyResolve = resolve;\n    });\n  }\n  /**\n       * Wait for the animation to be ready to play.\n       * @remarks\n       * ```jsx\n       * const animation = animate.ease(value, 100)\n       * animation.ready().then(() => {\n       *    // Animation is ready\n       * })\n  \n       * // async/await syntax\n       * const animation = animate.ease(value, 100)\n       * await animation.ready()\n       * // Animation is ready\n       * ```\n       * @returns Promise that is resolved when the animation is ready to play\n       * @public\n       */\n  get ready() {\n    return this.readyPromise;\n  }\n  /**\n   * @internal\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  /**\n   * Wait for the animation to be finished.\n   * @remarks\n   * ```jsx\n   * // async/await syntax\n   * const animation = animate.ease(value, 100)\n   * await animation.finished()\n   * // Animation is finished\n   *\n   *\n   * const animation = animate.ease(value, 100)\n   * animation.ready().then(() => {\n   *    // Animation is finished\n   * })\n   * ```\n   * @returns Promise that is resolved when the animation is ready to play\n   * @public\n   */\n  get finished() {\n    return this.finishedPromise;\n  }\n  /**\n   * @internal\n   */\n  play() {\n    this.playStateValue = \"running\";\n    this.driver.play();\n  }\n  /**\n   * Cancels the animation if it is still running.\n   * @remarks\n   * ```jsx\n   * const animation = animate.ease(value, 100, {duration: 3})\n   * setTimeout(() => animation.cancel(), 500)\n   * ```\n   * @public\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  /**\n   * @internal\n   */\n  finish() {\n    if (this.playStateSource === \"running\") {\n      this.playStateValue = \"finished\";\n      this.driver.finish();\n    }\n  }\n  /**\n   * @internal\n   */\n  isFinished() {\n    return this.playStateValue === \"finished\";\n  }\n};\n\n// ../../library/src/animation/Motion/autoValueHandlers.ts\nvar correctBorderScale = (axis) => ({\n  correct: (latest, { delta, treeScale }) => {\n    if (typeof latest === \"string\") latest = parseFloat(latest);\n    if (latest === 0) 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\nimport { Fragment, jsx as jsx6 } from \"react/jsx-runtime\";\naddScaleCorrector({\n  borderTopWidth: correctBorderScale(\"y\"),\n  borderLeftWidth: correctBorderScale(\"x\"),\n  borderRightWidth: correctBorderScale(\"x\"),\n  borderBottomWidth: correctBorderScale(\"y\")\n});\nfunction MotionSetup({ children }) {\n  return /* @__PURE__ */ jsx6(Fragment, { children });\n}\n\n// ../../library/src/animation/Motion/startAnimation.ts\nfunction startAnimation(_key, value, target, transition = {}) {\n  warnOnce2(\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/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 animate3(from, to, animatorOrTransition, options) {\n    return isAnimatable(from) ? deprecatedAnimate(from, to, animatorOrTransition, options) : animate(from, to, animatorOrTransition);\n  }\n  animate3.spring = (from, to, options) => {\n    return animate3(from, to, SpringAnimator, options);\n  };\n  animate3.bezier = (from, to, options) => {\n    return animate3(from, to, BezierAnimator, options);\n  };\n  animate3.linear = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"linear\" /* Linear */ });\n  };\n  animate3.ease = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease\" /* Ease */ });\n  };\n  animate3.easeIn = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in\" /* EaseIn */ });\n  };\n  animate3.easeOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-out\" /* EaseOut */ });\n  };\n  animate3.easeInOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in-out\" /* EaseInOut */ });\n  };\n  return animate3;\n})();\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nimport React10, { useCallback as useCallback4, useContext as useContext2, useMemo as useMemo3, useRef as useRef4 } from \"react\";\nimport { Fragment as Fragment2, jsx as jsx7 } from \"react/jsx-runtime\";\nvar LayoutIdContext = /* @__PURE__ */ React10.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) return /* @__PURE__ */ jsx7(Fragment2, { children });\n  const cache2 = useRef4({\n    // When we provide a layoutId for a node based on it's first\n    // duplicatedFrom id, we save it's layoutId mapped to it's actual id.\n    // Future screen's nodes will check this cache first, to see if they've\n    // previously been assigned a layoutId, or if any of there other\n    // duplicatedFrom ids matched a node that was previously assigned a\n    // layoutId.\n    byId: {},\n    byName: {},\n    // When we navigate from screens that were duplicated from a future\n    // screen, to that future screen, we want to do a reverse lookup on the\n    // last duplicatedFrom id, rather than the id. We need to keep them\n    // separate so they don't overlap.\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {},\n    // When we don't have a cached layoutId for all duplicatedFrom ids, we\n    // need to increment and save it so that we don't create clashing\n    // layoutIds. We also need to reset name counts between screens, so we\n    // record those separately.\n    count: {\n      byId: {},\n      byName: {}\n    }\n  });\n  const screen = useRef4({\n    byId: {},\n    byName: {},\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {}\n  });\n  const usedIds = useRef4(/* @__PURE__ */ new Set()).current;\n  const getLayoutId = useCallback4(({ id, name, duplicatedFrom }) => {\n    if (!id) return null;\n    const cacheKey = name ? \"byName\" : \"byId\";\n    const previousId = cache2.current[cacheKey][id];\n    if (previousId) return previousId;\n    const nodeIdentifier = name || id;\n    if (!duplicatedFrom && !usedIds.has(nodeIdentifier) && (!cache2.current.byLayoutId[nodeIdentifier] || cache2.current.byLayoutId[nodeIdentifier] === nodeIdentifier)) {\n      if (cache2.current.count[cacheKey][nodeIdentifier] === void 0) {\n        cache2.current.count[cacheKey][nodeIdentifier] = 0;\n        cache2.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 = cache2.current[cacheKey][duplicatedId];\n        const byLastIdMatch = cache2.current.byLastId[duplicatedId];\n        if (byLastIdMatch && !possibleMatch) {\n          const matchedLayoutId = cache2.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 = match ? cache2.current.byLayoutId[match] : void 0;\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 = cache2.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 = cache2.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 = (cache2.current.count[cacheKey][identifier] ?? -1) + 1;\n    const { layoutId, value: nextValue } = nextLayoutId(identifier, value, usedIds);\n    cache2.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) 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 = useCallback4(() => {\n    cache2.current = {\n      byId: {\n        ...cache2.current.byId,\n        ...screen.current.byId\n      },\n      byLastId: {\n        ...cache2.current.byLastId,\n        ...screen.current.byLastId\n      },\n      byPossibleId: {\n        ...cache2.current.byPossibleId,\n        ...screen.current.byPossibleId\n      },\n      byName: {\n        ...cache2.current.byName,\n        ...screen.current.byName\n      },\n      byLastName: { ...cache2.current.byLastName, ...screen.current.byLastName },\n      byLayoutId: { ...cache2.current.byLayoutId, ...screen.current.byLayoutId },\n      // Unlike the count.byId, we need to reset the count.byName because\n      // named layers might not have duplicatedFrom ids (e.g. imported\n      // from Figma). When we can use duplicatedFrom ids to check if an id\n      // was assigned on a previous screen, we don't increment the count,\n      // which means that the count only increments for new items, and\n      // only increments on a new screen if the node is new. Since named\n      // layers need to always match in some way between screens, we reset\n      // the count so that the second named layer on a second screen is\n      // always name-1 if it doesn't have any duplicatedFrom ids.\n      count: {\n        ...cache2.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 = useRef4({\n    getLayoutId,\n    persistLayoutIdCache,\n    top: true,\n    enabled: true\n  }).current;\n  return /* @__PURE__ */ jsx7(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 = useMemo3(() => {\n    return {\n      ...context,\n      enabled\n    };\n  }, [enabled]);\n  return /* @__PURE__ */ jsx7(LayoutIdContext.Provider, { ...props, value: contextValue });\n}\n\n// ../../library/src/components/Device/Device.tsx\nimport React11, { Component as Component2 } from \"react\";\n\n// ../../library/src/components/utils/useConstant.ts\nimport { useRef as useRef5 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef5(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 { jsx as jsx8, jsxs } from \"react/jsx-runtime\";\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 = /* @__PURE__ */ (() => ({\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 = /* @__PURE__ */ (() => ({\n  ...textStyle,\n  // TODO: Use Fresco tokens for this.\n  fontWeight: 500\n}))();\nvar messageStyle = /* @__PURE__ */ (() => ({\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__ */ jsxs(\"div\", { style: errorStyle, children: [\n    /* @__PURE__ */ jsx8(\"div\", { className: \"text\", style: titleStyle, children: title }),\n    message && /* @__PURE__ */ jsx8(\"div\", { className: \"text\", style: messageStyle, children: message })\n  ] });\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\nimport { jsx as jsx9, jsxs as jsxs2 } from \"react/jsx-runtime\";\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\") return {};\n  if (!theme) 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 ErrorBoundary = class extends Component2 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", {});\n  }\n  componentDidCatch(error, info) {\n    var _a;\n    let stack = (_a = info.componentStack) == null ? void 0 : _a.split(\"\\n\").filter((line) => line.length !== 0);\n    let currentIndex = 0;\n    if (stack) {\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    }\n    this.setState({\n      lastError: {\n        error,\n        componentStack: stack\n      }\n    });\n  }\n  componentDidUpdate(_, prevState) {\n    if (this.state.lastError === void 0) return;\n    if (prevState.lastError === this.state.lastError) this.setState({ lastError: void 0 });\n  }\n  render() {\n    if (this.state.lastError) {\n      return /* @__PURE__ */ jsx9(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, _b;\n  const optionsRef = React11.useRef(void 0);\n  if (optionsRef.current === void 0) optionsRef.current = options;\n  const deviceAppearance = (_a = options.deviceOptions) == null ? void 0 : _a.appearance.type;\n  const scaleDataRef = React11.useRef();\n  const containerRef = React11.useRef(null);\n  const deviceRef = React11.useRef(null);\n  const screenRef = React11.useRef(null);\n  const updateImperativeScale = React11.useCallback(({ scale: scale2, screenScalePixelFix }) => {\n    if (!scaleDataRef.current || !deviceRef.current || !screenRef.current) 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 = React11.useCallback((point) => {\n    if (!scaleDataRef.current) return point;\n    const { scale: scale2 = 1 } = scaleDataRef.current;\n    return { x: point.x / scale2, y: point.y / scale2 };\n  }, []);\n  const updateScale = React11.useCallback(() => {\n    const { deviceOptions, scaleTo } = optionsRef.current ?? {};\n    if (!deviceOptions || !scaleTo || scaleTo !== \"dynamic\" || !containerRef.current) return;\n    if (containerRef.current.offsetWidth === 0 || containerRef.current.offsetHeight === 0) return;\n    const scaleData = scaleDataRef.current = getScaleData(deviceOptions, {\n      width: containerRef.current.offsetWidth,\n      height: containerRef.current.offsetHeight\n    });\n    updateImperativeScale(scaleData);\n  }, [updateImperativeScale]);\n  const observer = useConstant(() => {\n    if (!ResizeObserver2) {\n      return;\n    }\n    return new ResizeObserver2(() => updateScale());\n  });\n  React11.useLayoutEffect(() => {\n    optionsRef.current = {\n      deviceOptions: options.deviceOptions,\n      overrideTheme: options.overrideTheme,\n      scaleTo: options.scaleTo\n    };\n  }, [options.deviceOptions, options.overrideTheme, options.scaleTo]);\n  React11.useLayoutEffect(() => {\n    updateScale();\n  }, [updateScale]);\n  React11.useEffect(() => {\n    if (!observer || !containerRef.current) return;\n    observer.observe(containerRef.current);\n    return () => observer.disconnect();\n  }, []);\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  const screenBackground = ((_b = options.deviceOptions) == null ? void 0 : _b.transparentBackground) ? \"transparent\" : \"white\";\n  return /* @__PURE__ */ jsx9(\"div\", { style: { ...containerStyle, ...resizeStyles }, ref: containerRef, children: /* @__PURE__ */ jsxs2(\"div\", { style: { ...deviceStyle }, ref: deviceRef, children: [\n    handStyle && /* @__PURE__ */ jsx9(\"div\", { style: handStyle }),\n    deviceAppearance === \"external-clay\" && deviceImageStyle && /* @__PURE__ */ jsx9(\"div\", { style: deviceImageStyle }),\n    /* @__PURE__ */ jsx9(\n      \"div\",\n      {\n        style: {\n          ...screenStyle,\n          pointerEvents: void 0,\n          backgroundColor: children ? screenBackground : screenStyle.backgroundColor\n        },\n        ref: screenRef,\n        children: /* @__PURE__ */ jsx9(MotionConfig, { transformPagePoint: invertScale, children: /* @__PURE__ */ jsx9(ErrorBoundary, { children }) })\n      }\n    ),\n    deviceAppearance === \"realistic\" && deviceImageStyle && /* @__PURE__ */ jsx9(\"div\", { style: deviceImageStyle })\n  ] }) });\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 = /* @__PURE__ */ (() => 992 - 5)();\nvar noDeviceSize = { componentWidth: 500, componentHeight: 500 };\nfunction getComponentSize(options) {\n  if (!options) 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  const noDeviceStyle = { containerStyle: {}, deviceStyle: {}, screenStyle: {} };\n  if (!deviceOptions) 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 = (hand == null ? void 0 : hand.offsetLeft) ?? 0;\n  const handOffsetRight = (hand == null ? void 0 : hand.offsetRight) ?? 0;\n  const handOffsetBottom = (hand == null ? void 0 : hand.offsetBottom) ?? 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      // Rotate 90 degrees counter-clockwise around (0,0), then move the\n      // result down into the viewport (rightmost transform is applied first).\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 React15 from \"react\";\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport React12 from \"react\";\n\n// ../../library/src/render/utils/isFiniteNumber.ts\nfunction isFiniteNumber(value) {\n  return 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(test) {\n  return typeof test !== \"string\" && typeof test !== \"number\";\n}\nfunction isReactChild(test) {\n  return test !== null && typeof test !== \"undefined\" && typeof test !== \"boolean\" && !isEmpty(test);\n}\n\n// ../../library/src/render/utils/degreesToRadians.ts\nfunction degreesToRadians(degrees2) {\n  return degrees2 * (Math.PI / 180);\n}\n\n// ../../library/src/render/types/Line.ts\nvar Line = /* @__PURE__ */ (() => {\n  function Line2(a, b) {\n    return { a, b };\n  }\n  Line2.offset = (line, offset) => {\n    const angle = Point.angleFromX(line.a, line.b);\n    const rad = degreesToRadians(angle);\n    const x = offset * Math.sin(rad);\n    const y = offset * Math.cos(rad);\n    return Line2(\n      { x: line.a.x + x, y: line.a.y - y },\n      {\n        x: line.b.x + x,\n        y: line.b.y - y\n      }\n    );\n  };\n  Line2.intersection = (lineA, lineB, segments) => {\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 a1 = (x4 - x3) * (y3 - y1) - (y4 - y3) * (x3 - x1);\n    const b1 = (x4 - x3) * (y2 - y1) - (y4 - y3) * (x2 - x1);\n    const c1 = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);\n    if (a1 === 0 && b1 === 0) return null;\n    if (b1 === 0) return null;\n    const alpha2 = a1 / b1;\n    const beta = c1 / b1;\n    if (segments && (alpha2 < 0 || alpha2 > 1 || beta < 0 || beta > 1)) return null;\n    return {\n      x: x1 + alpha2 * (x2 - x1),\n      y: y1 + alpha2 * (y2 - y1)\n    };\n  };\n  Line2.intersectionAngle = (lineA, lineB) => {\n    const deltaAX = lineA.b.x - lineA.a.x;\n    const deltaAY = lineA.b.y - lineA.a.y;\n    const deltaBX = lineB.b.x - lineB.a.x;\n    const deltaBY = lineB.b.y - lineB.a.y;\n    const angle = Math.atan2(deltaAX * deltaBY - deltaAY * deltaBX, deltaAX * deltaBX + deltaAY * deltaBY);\n    return angle * (180 / Math.PI);\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  Line2.pointAtPercentDistance = (line, distance2) => {\n    const hypotenuse = Line2.distance(line);\n    const r = distance2 * hypotenuse / hypotenuse;\n    return {\n      x: r * line.b.x + (1 - r) * line.a.x,\n      y: r * line.b.y + (1 - r) * line.a.y\n    };\n  };\n  Line2.distance = (line) => {\n    return Point.distance(line.a, line.b);\n  };\n  return Line2;\n})();\n\n// ../../library/src/render/types/Rect.ts\nvar Rect = {\n  /**\n   *\n   * @param rect -\n   * @param other -\n   * @returns if the input rectangles are equal in size and position\n   * @public\n   */\n  equals: function(rect, other) {\n    if (rect === other) return true;\n    if (!rect || !other) return false;\n    return rect.x === other.x && rect.y === other.y && rect.width === other.width && rect.height === other.height;\n  },\n  /** @internal */\n  from: (rect) => {\n    return {\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    };\n  },\n  /** @internal */\n  atOrigin: (size) => {\n    return {\n      x: 0,\n      y: 0,\n      width: size.width,\n      height: size.height\n    };\n  },\n  /** @internal */\n  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  /** @internal */\n  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  /** @internal */\n  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  /** @internal */\n  divide: (rect, n) => {\n    return Rect.multiply(rect, 1 / n);\n  },\n  /** @internal */\n  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  /** @internal */\n  inflate: (rect, value) => {\n    if (value === 0) 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  /** @internal */\n  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  /** @internal */\n  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  /** @internal */\n  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  /** @internal */\n  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  /**\n   * @param rect -\n   * @internal\n   */\n  minX: (rect) => {\n    return rect.x;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  maxX: (rect) => {\n    return rect.x + rect.width;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  minY: (rect) => {\n    return rect.y;\n  },\n  /**\n   * @param rect -\n   * @internal\n   */\n  maxY: (rect) => {\n    return rect.y + rect.height;\n  },\n  /** @internal */\n  positions: (rect) => {\n    return {\n      minX: rect.x,\n      midX: rect.x + rect.width / 2,\n      maxX: Rect.maxX(rect),\n      minY: rect.y,\n      midY: rect.y + rect.height / 2,\n      maxY: Rect.maxY(rect)\n    };\n  },\n  /**\n   *\n   * @param rect -\n   * @internal\n   */\n  center: (rect) => {\n    return {\n      x: rect.x + rect.width / 2,\n      y: rect.y + rect.height / 2\n    };\n  },\n  /** @internal */\n  boundingRectFromPoints: (points) => {\n    let minX = Infinity;\n    let maxX = -Infinity;\n    let minY = Infinity;\n    let maxY = -Infinity;\n    for (let i = 0; i < points.length; i++) {\n      const point = points[i];\n      minX = Math.min(minX, point.x);\n      maxX = Math.max(maxX, point.x);\n      minY = Math.min(minY, point.y);\n      maxY = Math.max(maxY, point.y);\n    }\n    return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n  },\n  /**\n   * Returns the precise box defined by the given points, starting from the top-left point. This produces the same\n   * Rect as Rect.boundingRectFromPoints *only* when the rect described by the points is not rotated.\n   *\n   * @internal\n   */\n  fromPoints: (ps) => {\n    const [tl, tr, _, bl] = ps;\n    const { x, y } = tl;\n    const width = Point.distance(tl, tr);\n    const height = Point.distance(tl, bl);\n    return { x, y, width, height };\n  },\n  /**\n   * Returns a rect containing all input rects\n   * @param rect - a list of rectangles\n   * @returns A rectangle that fits exactly around the input rects\n   * @internal\n   */\n  merge: (...rect) => {\n    const min = {\n      x: Math.min(...rect.map(Rect.minX)),\n      y: Math.min(...rect.map(Rect.minY))\n    };\n    const max = {\n      x: Math.max(...rect.map(Rect.maxX)),\n      y: Math.max(...rect.map(Rect.maxY))\n    };\n    return Rect.fromTwoPoints(min, max);\n  },\n  /** @internal */\n  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  /**\n   * Returns all the corner points for a rect\n   * @param rect -\n   * @internal\n   */\n  points: (rect) => {\n    return [\n      { x: Rect.minX(rect), y: Rect.minY(rect) },\n      { x: Rect.minX(rect), y: Rect.maxY(rect) },\n      { x: Rect.maxX(rect), y: Rect.minY(rect) },\n      { x: Rect.maxX(rect), y: Rect.maxY(rect) }\n    ];\n  },\n  /**\n   * Returns all the corner points for a rect at the origin.\n   * @internal\n   */\n  pointsAtOrigin: (rect) => {\n    return [\n      { x: 0, y: 0 },\n      { x: rect.width, y: 0 },\n      { x: rect.width, y: rect.height },\n      { x: 0, y: rect.height }\n    ];\n  },\n  /** Takes a rect and transforms it by a matrix, resulting in the bounding rectangle of the\n   * rotated and/or translated original.\n   * @param rect - rectangle to transform\n   * @param matrix - matrix to transform by\n   * @returns The bounding rectangle of the rotated and/or translated rect.\n   */\n  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  /**\n   * Checks if a rectangle contains a point\n   * @param rect - The rectangle to check\n   * @param point - The point to check\n   * @returns true if the provided rectangle contains the provided point\n   * @internal\n   */\n  containsPoint: (rect, point) => {\n    if (point.x < Rect.minX(rect)) {\n      return false;\n    }\n    if (point.x > Rect.maxX(rect)) {\n      return false;\n    }\n    if (point.y < Rect.minY(rect)) {\n      return false;\n    }\n    if (point.y > Rect.maxY(rect)) {\n      return false;\n    }\n    if (Number.isNaN(rect.x)) {\n      return false;\n    }\n    if (Number.isNaN(rect.y)) {\n      return false;\n    }\n    return true;\n  },\n  /**\n   * Returns wether a rect contains another rect entirely\n   * @param rectA -\n   * @param rectB -\n   * @returns true if rectA contains rectB\n   */\n  containsRect: (rectA, rectB) => {\n    for (const point of Rect.points(rectB)) {\n      if (!Rect.containsPoint(rectA, point)) {\n        return false;\n      }\n    }\n    return true;\n  },\n  /** @internal */\n  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  /** @internal */\n  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  /** @internal */\n  intersects: (rectA, rectB) => {\n    return !(rectB.x >= Rect.maxX(rectA) || Rect.maxX(rectB) <= rectA.x || rectB.y >= Rect.maxY(rectA) || Rect.maxY(rectB) <= rectA.y);\n  },\n  /** @internal */\n  overlapHorizontally: (rectA, rectB) => {\n    const aMax = Rect.maxX(rectA);\n    const bMax = Rect.maxX(rectB);\n    return aMax > rectB.x && bMax > rectA.x;\n  },\n  /** @internal */\n  overlapVertically: (rectA, rectB) => {\n    const aMax = Rect.maxY(rectA);\n    const bMax = Rect.maxY(rectB);\n    return aMax > rectB.y && bMax > rectA.y;\n  },\n  /** @internal */\n  doesNotIntersect: (rect, rects) => {\n    return rects.find((comparingRect) => {\n      return Rect.intersects(comparingRect, rect);\n    }) === void 0;\n  },\n  /**\n   *\n   * @param rectA -\n   * @param rectB -\n   * @returns if the input rectangles are equal in size and position\n   * @public\n   * @deprecated: please use Rect.equals instead\n   */\n  isEqual: (rectA, rectB) => {\n    return Rect.equals(rectA, rectB);\n  },\n  // @TODO: duplicate of points()\n  /**\n   * @returns [tl, tr, br, bl]\n   * @internal\n   */\n  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  /** @internal */\n  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 top = { x: rectMidX, y: rectMinY };\n    const right = { x: rectMaxX, y: rectMidY };\n    const bottom = { x: rectMidX, y: rectMaxY };\n    const left = { x: rectMinX, y: rectMidY };\n    return [top, right, bottom, left];\n  },\n  /** @internal */\n  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 > Rect.maxX(rect)) {\n      x = point.x - Rect.maxX(rect);\n    }\n    if (point.y < rect.y) {\n      y = rect.y - point.y;\n    } else if (point.y > Rect.maxY(rect)) {\n      y = point.y - Rect.maxY(rect);\n    }\n    return Point.distance({ x, y }, { x: 0, y: 0 });\n  },\n  delta: (a, b) => {\n    const pointA = { x: Rect.minX(a), y: Rect.minY(a) };\n    const pointB = { x: Rect.minX(b), y: Rect.minY(b) };\n    return {\n      x: pointA.x - pointB.x,\n      y: pointA.y - pointB.y\n    };\n  },\n  /** @internal */\n  withMinSize: (rect, minSize) => {\n    const { width: minWidth, height: minHeight } = minSize;\n    const diffX = rect.width - minWidth;\n    const diffY = rect.height - minHeight;\n    return {\n      width: Math.max(rect.width, minWidth),\n      height: Math.max(rect.height, minHeight),\n      x: rect.width < minWidth ? rect.x + diffX / 2 : rect.x,\n      y: rect.height < minHeight ? rect.y + diffY / 2 : rect.y\n    };\n  },\n  /**\n   * Return false if any point is not inside or on the provided rect.\n   * @internal\n   */\n  anyPointsOutsideRect: (rect, ps) => {\n    const rectMinX = Rect.minX(rect);\n    const rectMinY = Rect.minY(rect);\n    const rectMaxX = Rect.maxX(rect);\n    const rectMaxY = Rect.maxY(rect);\n    for (const point of ps) {\n      if (point.x < rectMinX || point.x > rectMaxX) {\n        return true;\n      }\n      if (point.y < rectMinY || point.y > rectMaxY) {\n        return true;\n      }\n    }\n    return false;\n  },\n  /** @internal */\n  edges: (rect) => {\n    const [tl, tr, br, bl] = Rect.cornerPoints(rect);\n    return [Line(tl, tr), Line(tr, br), Line(br, bl), Line(bl, tl)];\n  },\n  /**\n   * Return a new rect projected into a new position based on the anchor rect and the given direction/alignment.\n   * @internal\n   */\n  rebaseRectOnto: (rect, anchorRect, direction, alignment) => {\n    const rebasedRect = { ...rect };\n    switch (direction) {\n      case \"bottom\":\n      case \"top\":\n        switch (alignment) {\n          case \"start\":\n            rebasedRect.x = anchorRect.x;\n            break;\n          case \"center\":\n            rebasedRect.x = anchorRect.x + anchorRect.width / 2 - rect.width / 2;\n            break;\n          case \"end\":\n            rebasedRect.x = anchorRect.x + anchorRect.width - rect.width;\n            break;\n          default:\n            assertNever(alignment);\n        }\n        break;\n      case \"left\":\n        rebasedRect.x = anchorRect.x - rect.width;\n        break;\n      case \"right\":\n        rebasedRect.x = anchorRect.x + anchorRect.width;\n        break;\n      default:\n        assertNever(direction);\n    }\n    switch (direction) {\n      case \"left\":\n      case \"right\":\n        switch (alignment) {\n          case \"start\":\n            rebasedRect.y = anchorRect.y;\n            break;\n          case \"center\":\n            rebasedRect.y = anchorRect.y + anchorRect.height / 2 - rect.height / 2;\n            break;\n          case \"end\":\n            rebasedRect.y = anchorRect.y + anchorRect.height - rect.height;\n            break;\n          default:\n            assertNever(alignment);\n        }\n        break;\n      case \"top\":\n        rebasedRect.y = anchorRect.y - rect.height;\n        break;\n      case \"bottom\":\n        rebasedRect.y = anchorRect.y + anchorRect.height;\n        break;\n      default:\n        assertNever(direction);\n    }\n    return rebasedRect;\n  }\n};\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  // Modifies the constraint mask to remove invalid (mutually exclusive) options and returns the original.\n  // TODO: this removes major inconsistencies but probably needs to be merged with ConstraintSolver.\n  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};\nfunction valueToDimensionType(value) {\n  if (typeof value === \"string\") {\n    const trimmedValue = value.trim();\n    if (trimmedValue === \"auto\") return 2 /* Auto */;\n    if (trimmedValue.endsWith(\"fr\")) return 3 /* FractionOfFreeSpace */;\n    if (trimmedValue.endsWith(\"%\")) return 1 /* Percentage */;\n    if (trimmedValue.endsWith(\"vw\") || trimmedValue.endsWith(\"vh\")) return 4 /* Viewport */;\n  }\n  return 0 /* FixedNumber */;\n}\nvar ConstraintValues = {\n  // Returns concrete current values given some ConstraintProperties.\n  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  toSize: (values, parentSizeInfo, autoSize, freeSpace) => {\n    let width = null;\n    let height = null;\n    const parentWidth = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.width) : null;\n    const parentHeight = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.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 sizeAfterApplyingConstraintsAndAspectRatio(\n      width,\n      height,\n      values,\n      {\n        height: parentHeight ?? 0,\n        width: parentWidth ?? 0\n      },\n      parentSizeInfo == null ? void 0 : parentSizeInfo.viewport\n    );\n  },\n  // Returns a parent-relative rect given concrete ConstraintValues.\n  toRect: (values, parentSizeInfo = null, autoSize = null, pixelAlign = false, freeSpace = null) => {\n    let x = values.left || 0;\n    let y = values.top || 0;\n    const { width, height } = ConstraintValues.toSize(values, parentSizeInfo, autoSize, freeSpace);\n    const parentSizeForPositioning = (parentSizeInfo == null ? void 0 : parentSizeInfo.positioning) ?? null;\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};\nvar defaultWidth = 200;\nvar defaultHeight = 200;\nfunction getConstraintValue(constraint, value, parentSize, viewport) {\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    if (value.endsWith(\"vh\")) {\n      if (!viewport) return constraintValueForUncalculatedViewport(constraint);\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * viewport.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * viewport.height;\n        default:\n          break;\n      }\n    }\n    return parseFloat(value);\n  }\n  return value;\n}\nfunction constraintValueForUncalculatedViewport(constraint) {\n  switch (constraint) {\n    case \"minWidth\":\n    case \"minHeight\":\n      return Number.NEGATIVE_INFINITY;\n    case \"maxWidth\":\n    case \"maxHeight\":\n      return Number.POSITIVE_INFINITY;\n    default:\n      assertNever(constraint, \"unknown constraint key\");\n  }\n}\nfunction constrainHeight(height, values, parentSize, viewport) {\n  if (values.minHeight) {\n    height = Math.max(getConstraintValue(\"minHeight\", values.minHeight, parentSize, viewport), height);\n  }\n  if (values.maxHeight) {\n    height = Math.min(getConstraintValue(\"maxHeight\", values.maxHeight, parentSize, viewport), height);\n  }\n  return height;\n}\nfunction constrainWidth(width, values, parentSize, viewport) {\n  if (values.minWidth) {\n    width = Math.max(getConstraintValue(\"minWidth\", values.minWidth, parentSize, viewport), width);\n  }\n  if (values.maxWidth) {\n    width = Math.min(getConstraintValue(\"maxWidth\", values.maxWidth, parentSize, viewport), width);\n  }\n  return width;\n}\nfunction sizeAfterApplyingConstraintsAndAspectRatio(width, height, values, parentSize, viewport) {\n  let w = constrainWidth(isFiniteNumber(width) ? width : defaultWidth, values, parentSize, viewport);\n  let h = constrainHeight(isFiniteNumber(height) ? height : defaultHeight, values, parentSize, viewport);\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)) return null;\n  return start + end;\n}\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport { Fragment as Fragment3, jsx as jsx10 } from \"react/jsx-runtime\";\nfunction containsInvalidStringValues(props) {\n  if (typeof props.right === \"string\") return true;\n  if (typeof props.bottom === \"string\") return true;\n  if (typeof props.left === \"string\" && (!props.center || props.center === \"y\")) {\n    return true;\n  }\n  if (typeof props.top === \"string\" && (!props.center || props.center === \"x\")) {\n    return true;\n  }\n  return false;\n}\nfunction constraintsEnabled(props) {\n  if (!props._constraints) return false;\n  if (containsInvalidStringValues(props)) return false;\n  return props._constraints.enabled;\n}\nfunction sizeFromFiniteNumberProps(props) {\n  const { size } = props;\n  let { width, height } = props;\n  if (isFiniteNumber(size)) {\n    if (width === void 0) {\n      width = size;\n    }\n    if (height === void 0) {\n      height = size;\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 size = sizeFromFiniteNumberProps(props);\n  if (size === 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      ...size\n    };\n  }\n  return null;\n}\nfunction calculateRect(props, parentSize, pixelAlign = true) {\n  if (props.positionFixed || props.positionAbsolute) return null;\n  const parentSizeDisabled = parentSize === 1 /* Disabled */ || parentSize === 2 /* 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, viewport: null } : null;\n  return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, pixelAlign, null);\n}\nfunction getConstraintValues(props) {\n  const { left, right, top, bottom, center, _constraints, size } = props;\n  let { width, height } = props;\n  if (width === void 0) {\n    width = size;\n  }\n  if (height === void 0) {\n    height = size;\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    // Because we check isFiniteNumber when creating the masks,\n    // We know that left, right, top and bottom are numbers if the mask is true for the corresponding value\n    // We need to cast this because typescript does not understand that\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 = /* @__PURE__ */ React12.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 React12.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 = React12.useMemo(\n    () => ({ parentSize }),\n    [getParentWidth(parentSize), getParentHeight(parentSize)]\n  );\n  if (currentParentSize === 1 /* Disabled */) {\n    return children ? /* @__PURE__ */ jsx10(Fragment3, { children }) : null;\n  }\n  return /* @__PURE__ */ jsx10(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}\nfunction useProvideParentSize(node, parentSize) {\n  return /* @__PURE__ */ jsx10(ProvideParentSize, { parentSize, children: node });\n}\nfunction useConstraints(props) {\n  const parentSize = useParentSize();\n  const calculatedRect = calculateRect(props, parentSize, true);\n  return calculatedRect;\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/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[\"Slot\"] = \"slot\";\n  ControlType2[\"Array\"] = \"array\";\n  ControlType2[\"EventHandler\"] = \"eventhandler\";\n  ControlType2[\"Transition\"] = \"transition\";\n  ControlType2[\"BoxShadow\"] = \"boxshadow\";\n  ControlType2[\"Link\"] = \"link\";\n  ControlType2[\"Date\"] = \"date\";\n  ControlType2[\"Object\"] = \"object\";\n  ControlType2[\"Font\"] = \"font\";\n  ControlType2[\"PageScope\"] = \"pagescope\";\n  ControlType2[\"ScrollSectionRef\"] = \"scrollsectionref\";\n  ControlType2[\"CustomCursor\"] = \"customcursor\";\n  ControlType2[\"Border\"] = \"border\";\n  ControlType2[\"Cursor\"] = \"cursor\";\n  ControlType2[\"Padding\"] = \"padding\";\n  ControlType2[\"BorderRadius\"] = \"borderradius\";\n  ControlType2[\"Gap\"] = \"gap\";\n  ControlType2[\"CollectionReference\"] = \"collectionreference\";\n  ControlType2[\"MultiCollectionReference\"] = \"multicollectionreference\";\n  ControlType2[\"TrackingId\"] = \"trackingid\";\n  ControlType2[\"VectorSetItem\"] = \"vectorsetitem\";\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    // avoid layout shift\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) return;\n  initialized = true;\n  if (isFlexboxGapSupported()) 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, Inter Placeholder, 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, Inter Placeholder, 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, Inter Placeholder, 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 = `\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current],\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current] span:not([data-text-fill]):not([data-nested-link]) {\n    font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, 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 = `\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current]:hover,\n[data-framer-component-type=\"DeprecatedRichText\"] a[data-framer-page-link-current]:hover span:not([data-text-fill]):not([data-nested-link]) {\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, Inter Placeholder, 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, Inter Placeholder, 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    --framer-font-open-type-features: normal;\n    --font-variation-settings: normal;\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/presentation/Forms/shared.ts\nimport React13 from \"react\";\nvar FormInputStyleVariableNames = /* @__PURE__ */ ((FormInputStyleVariableNames2) => {\n  FormInputStyleVariableNames2[\"Padding\"] = \"--framer-input-padding\";\n  FormInputStyleVariableNames2[\"BorderRadiusTopLeft\"] = \"--framer-input-border-radius-top-left\";\n  FormInputStyleVariableNames2[\"BorderRadiusTopRight\"] = \"--framer-input-border-radius-top-right\";\n  FormInputStyleVariableNames2[\"BorderRadiusBottomRight\"] = \"--framer-input-border-radius-bottom-right\";\n  FormInputStyleVariableNames2[\"BorderRadiusBottomLeft\"] = \"--framer-input-border-radius-bottom-left\";\n  FormInputStyleVariableNames2[\"BorderColor\"] = \"--framer-input-border-color\";\n  FormInputStyleVariableNames2[\"BorderTopWidth\"] = \"--framer-input-border-top-width\";\n  FormInputStyleVariableNames2[\"BorderRightWidth\"] = \"--framer-input-border-right-width\";\n  FormInputStyleVariableNames2[\"BorderBottomWidth\"] = \"--framer-input-border-bottom-width\";\n  FormInputStyleVariableNames2[\"BorderLeftWidth\"] = \"--framer-input-border-left-width\";\n  FormInputStyleVariableNames2[\"BorderStyle\"] = \"--framer-input-border-style\";\n  FormInputStyleVariableNames2[\"Background\"] = \"--framer-input-background\";\n  FormInputStyleVariableNames2[\"FontFamily\"] = \"--framer-input-font-family\";\n  FormInputStyleVariableNames2[\"FontWeight\"] = \"--framer-input-font-weight\";\n  FormInputStyleVariableNames2[\"FontSize\"] = \"--framer-input-font-size\";\n  FormInputStyleVariableNames2[\"FontColor\"] = \"--framer-input-font-color\";\n  FormInputStyleVariableNames2[\"FontStyle\"] = \"--framer-input-font-style\";\n  FormInputStyleVariableNames2[\"FontLetterSpacing\"] = \"--framer-input-font-letter-spacing\";\n  FormInputStyleVariableNames2[\"FontTextAlignment\"] = \"--framer-input-font-text-alignment\";\n  FormInputStyleVariableNames2[\"FontLineHeight\"] = \"--framer-input-font-line-height\";\n  FormInputStyleVariableNames2[\"FontOpenType\"] = \"--framer-input-font-open-type-features\";\n  FormInputStyleVariableNames2[\"PlaceholderColor\"] = \"--framer-input-placeholder-color\";\n  FormInputStyleVariableNames2[\"BoxShadow\"] = \"--framer-input-box-shadow\";\n  FormInputStyleVariableNames2[\"FocusedBorderColor\"] = \"--framer-input-focused-border-color\";\n  FormInputStyleVariableNames2[\"FocusedBorderWidth\"] = \"--framer-input-focused-border-width\";\n  FormInputStyleVariableNames2[\"FocusedBorderStyle\"] = \"--framer-input-focused-border-style\";\n  FormInputStyleVariableNames2[\"FocusedBackground\"] = \"--framer-input-focused-background\";\n  FormInputStyleVariableNames2[\"FocusedBoxShadow\"] = \"--framer-input-focused-box-shadow\";\n  FormInputStyleVariableNames2[\"FocusedTransition\"] = \"--framer-input-focused-transition\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBackground\"] = \"--framer-input-boolean-checked-background\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderColor\"] = \"--framer-input-boolean-checked-border-color\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderWidth\"] = \"--framer-input-boolean-checked-border-width\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBorderStyle\"] = \"--framer-input-boolean-checked-border-style\";\n  FormInputStyleVariableNames2[\"BooleanCheckedBoxShadow\"] = \"--framer-input-boolean-checked-box-shadow\";\n  FormInputStyleVariableNames2[\"BooleanCheckedTransition\"] = \"--framer-input-boolean-checked-transition\";\n  FormInputStyleVariableNames2[\"InvalidTextColor\"] = \"--framer-input-invalid-text-color\";\n  FormInputStyleVariableNames2[\"IconBackgroundImage\"] = \"--framer-input-icon-image\";\n  FormInputStyleVariableNames2[\"IconMaskImage\"] = \"--framer-input-icon-mask-image\";\n  FormInputStyleVariableNames2[\"IconColor\"] = \"--framer-input-icon-color\";\n  FormInputStyleVariableNames2[\"WrapperHeight\"] = \"--framer-input-wrapper-height\";\n  return FormInputStyleVariableNames2;\n})(FormInputStyleVariableNames || {});\nvar Var = FormInputStyleVariableNames;\nvar inputClassName = \"framer-form-input\";\nvar inputWrapperClassName = \"framer-form-input-wrapper\";\nvar emptyValueClassName = \"framer-form-input-empty\";\nvar forcedFocusClassName = \"framer-form-input-forced-focus\";\nvar forcedCheckedClassName = \"framer-form-input-forced-checked\";\nfunction cssValue(value) {\n  if (typeof value === \"number\") return value;\n  if (value.startsWith(\"--\")) return css.variable(value);\n  if (value === \"\") return '\"\"';\n  return value;\n}\nfunction css(selector, declaration) {\n  let output = \" \";\n  for (const key7 in declaration) {\n    const value = declaration[key7];\n    output += `${key7.replace(/([A-Z])/gu, \"-$1\").toLowerCase()}: ${cssValue(value)}; `;\n  }\n  return selector + \" {\" + output + \"}\";\n}\n((css2) => {\n  function variable(...variables) {\n    const lastItem = variables[variables.length - 1];\n    let value = lastItem.startsWith(\"--\") ? `var(${lastItem})` : lastItem;\n    for (let index = variables.length - 2; index >= 0; index--) {\n      const element = variables[index];\n      value = `var(${element}, ${value})`;\n    }\n    return value;\n  }\n  css2.variable = variable;\n})(css || (css = {}));\nvar sharedInputCSS = [\n  css(`.${inputClassName}`, {\n    padding: css.variable(Var.Padding),\n    background: \"transparent\",\n    fontFamily: css.variable(Var.FontFamily),\n    fontWeight: css.variable(Var.FontWeight),\n    fontSize: css.variable(Var.FontSize),\n    fontStyle: css.variable(Var.FontStyle),\n    color: css.variable(Var.FontColor),\n    fontFeatureSettings: css.variable(Var.FontOpenType),\n    border: \"none\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    overflow: \"hidden\",\n    width: \"100%\",\n    height: css.variable(Var.WrapperHeight, \"100%\"),\n    letterSpacing: css.variable(Var.FontLetterSpacing),\n    textAlign: css.variable(Var.FontTextAlignment),\n    lineHeight: css.variable(Var.FontLineHeight)\n  }),\n  css(`.${inputClassName}:focus-visible`, { outline: \"none\" })\n];\nvar inputWrapperCSS = /* @__PURE__ */ (() => [css(`.${inputWrapperClassName}`, { overflow: \"hidden\" })])();\nvar inputBorderAllSides = `var(${Var.BorderTopWidth}) var(${Var.BorderRightWidth}) var(${Var.BorderBottomWidth}) var(${Var.BorderLeftWidth})`;\nvar inputBorderCSS = [\n  `.${inputWrapperClassName}:after {\n        content: \"\";\n        pointer-events: none;\n        box-sizing: border-box;\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n        border-top-left-radius: var(${Var.BorderRadiusTopLeft});\n        border-top-right-radius: var(${Var.BorderRadiusTopRight});\n        border-bottom-right-radius: var(${Var.BorderRadiusBottomRight});\n        border-bottom-left-radius: var(${Var.BorderRadiusBottomLeft});\n        border-color: var(${Var.BorderColor});\n        border-top-width: var(${Var.BorderTopWidth});\n        border-right-width: var(${Var.BorderRightWidth});\n        border-bottom-width: var(${Var.BorderBottomWidth});\n        border-left-width: var(${Var.BorderLeftWidth});\n        border-style: var(${Var.BorderStyle});\n        transition: var(${Var.FocusedTransition});\n        transition-property: border-color, border-width, border-style, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius;\n    }`\n];\nvar customValidityKey = \"customError\";\nvar validKey = \"valid\";\nfunction isRelevantValidityStateKey(key7) {\n  return key7 !== customValidityKey && key7 !== validKey;\n}\nfunction isInvalid(validity) {\n  for (const key7 in validity) {\n    if (!isRelevantValidityStateKey(key7)) continue;\n    if ((validity == null ? void 0 : validity[key7]) === true) return true;\n  }\n  return false;\n}\nfunction useCustomValidity(onValid, onInvalid, onChange, onBlur, onFocus) {\n  const isValidRef = React13.useRef(null);\n  const handleInvalid = React13.useCallback(\n    (e) => {\n      if (!onInvalid) return;\n      if (isValidRef.current === false) return;\n      isValidRef.current = false;\n      e.currentTarget.setCustomValidity(\" \");\n      e.currentTarget.reportValidity();\n      onInvalid(e);\n    },\n    [onInvalid]\n  );\n  const handleChange = React13.useCallback(\n    (e) => {\n      onChange == null ? void 0 : onChange(e);\n      if (!onInvalid && !onValid) return;\n      const validity = e.target.validity;\n      if (isValidRef.current === false && !isInvalid(validity)) {\n        e.currentTarget.setCustomValidity(\"\");\n        e.target.reportValidity();\n        isValidRef.current = true;\n        onValid == null ? void 0 : onValid();\n      }\n    },\n    [onInvalid, onValid, onChange]\n  );\n  const handleBlur = React13.useCallback(\n    (e) => {\n      if (!onInvalid) {\n        onBlur == null ? void 0 : onBlur(e);\n        return;\n      }\n      if (isValidRef.current === false) return;\n      const validity = e.currentTarget.validity;\n      if (isInvalid(validity)) {\n        handleInvalid(e);\n        return;\n      }\n      onBlur == null ? void 0 : onBlur(e);\n    },\n    [handleInvalid, onBlur, onInvalid]\n  );\n  return React13.useMemo(() => {\n    return {\n      onInvalid: handleInvalid,\n      onChange: handleChange,\n      onBlur: handleBlur,\n      onFocus\n    };\n  }, [handleInvalid, handleChange, handleBlur, onFocus]);\n}\nvar iconSpacing = 10;\nvar iconSize = 16;\nvar inputIconCSSDeclaration = {\n  content: \"\",\n  display: \"block\",\n  position: \"absolute\",\n  right: 0,\n  top: 0,\n  bottom: 0,\n  width: `${iconSize}px`,\n  boxSizing: \"content-box\",\n  padding: css.variable(Var.Padding),\n  border: \"none\",\n  pointerEvents: \"none\",\n  backgroundRepeat: \"no-repeat\",\n  backgroundSize: `${iconSize}px`,\n  maskRepeat: \"no-repeat\",\n  maskSize: `${iconSize}px`,\n  backgroundColor: css.variable(Var.IconColor)\n};\n\n// ../../library/src/render/utils/injectRichTextRules.ts\nfunction createRGBVariableFallbacks(variables, fallback) {\n  return css.variable(...variables.flatMap((variable) => [`${variable}-rgb`, variable]), fallback);\n}\nvar richTextCSSRules = /* @__PURE__ */ (() => [\n  /* css */\n  `\n        p.framer-text,\n        div.framer-text,\n        figure.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  /* css */\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-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-blockquote-text-color, var(--framer-text-color, #000));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));\n            text-transform: var(--framer-blockquote-text-transform, var(--framer-text-transform, none));\n            text-decoration: var(--framer-blockquote-text-decoration, var(--framer-text-decoration, none));\n            line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));\n            text-align: var(--framer-blockquote-text-alignment, var(--framer-text-alignment, start));\n            -webkit-text-stroke-width: var(--framer-text-stroke-width, initial);\n            -webkit-text-stroke-color: var(--framer-text-stroke-color, initial);\n            -moz-font-feature-settings: var(--framer-font-open-type-features, initial);\n            -webkit-font-feature-settings: var(--framer-font-open-type-features, initial);\n            font-feature-settings: var(--framer-font-open-type-features, initial);\n            font-variation-settings: var(--framer-font-variation-axes, normal);\n            text-wrap: var(--framer-text-wrap-override, var(--framer-text-wrap));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\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                color: ${createRGBVariableFallbacks([\"--framer-blockquote-text-color\", \"--framer-text-color\"], \"#000\")};\n                -webkit-text-stroke-color: ${createRGBVariableFallbacks([\"--framer-text-stroke-color\"], \"initial\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        .framer-fit-text .framer-text {\n            white-space: nowrap;\n            white-space-collapse: preserve;\n        }\n    `,\n  /* css */\n  `\n        strong.framer-text {\n            font-family: var(--framer-blockquote-font-family-bold, var(--framer-font-family-bold));\n            font-style: var(--framer-blockquote-font-style-bold, var(--framer-font-style-bold));\n            font-weight: var(--framer-blockquote-font-weight-bold, var(--framer-font-weight-bold, bolder));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-bold, var(--framer-font-variation-axes-bold));\n        }\n    `,\n  /* css */\n  `\n        em.framer-text {\n            font-family: var(--framer-blockquote-font-family-italic, var(--framer-font-family-italic));\n            font-style: var(--framer-blockquote-font-style-italic, var(--framer-font-style-italic, italic));\n            font-weight: var(--framer-blockquote-font-weight-italic, var(--framer-font-weight-italic));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-italic, var(--framer-font-variation-axes-italic));\n        }\n    `,\n  /* css */\n  `\n        em.framer-text > strong.framer-text {\n            font-family: var(--framer-blockquote-font-family-bold-italic, var(--framer-font-family-bold-italic));\n            font-style: var(--framer-blockquote-font-style-bold-italic, var(--framer-font-style-bold-italic, italic));\n            font-weight: var(--framer-blockquote-font-weight-bold-italic, var(--framer-font-weight-bold-italic, bolder));\n            font-variation-settings: var(--framer-blockquote-font-variation-axes-bold-italic, var(--framer-font-variation-axes-bold-italic));\n        }\n    `,\n  /* css */\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        blockquote.framer-text:not(:first-child),\n        table.framer-text:not(:first-child),\n        figure.framer-text:not(:first-child),\n        .framer-image.framer-text:not(:first-child) {\n            margin-top: var(--framer-blockquote-paragraph-spacing, var(--framer-paragraph-spacing, 0));\n        }\n    `,\n  // The first child of a list item is a paragraph. If the second child is a\n  // nested list we don't want it to have paragraph spacing.\n  /* css */\n  `\n        li.framer-text > ul.framer-text:nth-child(2),\n        li.framer-text > ol.framer-text:nth-child(2) {\n            margin-top: 0;\n        }\n    `,\n  // background-clip: text clips to the physical dimensions of text as appose\n  // to the rendered dimensions. normal text will bleed out side these\n  // constraints but since this is just a clipping mask over the area the text\n  // takes up we have cases where the text will get clipped. That is why we\n  // need to expand the area that the gradient applies to to allow users to\n  // use low line-heights. This will result in gradients not aligning\n  // perfectly to the edges of the text. but this is a acceptable trade off at\n  // this point. For now we increase the area of the clipping mask on the\n  // bottom (for descenders) and the right for italic or wide fonts.\n  /* css */\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-blockquote-line-height, var(--framer-line-height, 1.3em))) / 2));\n            margin: min(0em, calc(calc(1.3em - var(--framer-blockquote-line-height, var(--framer-line-height, 1.3em))) / -2));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text,\n        code.framer-text span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-blockquote-letter-spacing, var(--framer-letter-spacing, 0));\n            line-height: var(--framer-blockquote-line-height, var(--framer-line-height, 1.2em));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            code.framer-text,\n            code.framer-text span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-blockquote-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        blockquote.framer-text {\n            margin-block-start: initial;\n            margin-block-end: initial;\n            margin-inline-start: initial;\n            margin-inline-end: initial;\n            unicode-bidi: initial;\n        }\n    `,\n  /* css */\n  `\n        a.framer-text,\n        a.framer-text span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link],\n        span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            text-decoration: var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n            /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */\n            cursor: var(--framer-custom-cursors, pointer);\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            a.framer-text,\n            a.framer-text span.framer-text:not([data-text-fill]),\n            span.framer-text[data-nested-link],\n            span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-blockquote-text-color\", \"--framer-link-text-color\", \"--framer-text-color\"], \"#000\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text,\n        code.framer-text a.framer-text span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link],\n        code.framer-text span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            code.framer-text a.framer-text,\n            code.framer-text a.framer-text span.framer-text:not([data-text-fill]),\n            code.framer-text span.framer-text[data-nested-link],\n            code.framer-text span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-blockquote-text-color\", \"--framer-link-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        a.framer-text:hover,\n        a.framer-text:hover span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link]:hover,\n        span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n            font-style: var(--framer-link-hover-font-style, var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n            color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n            text-decoration: var(--framer-link-hover-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n        }\n    `,\n  /* css */\n  `\n    @supports not (color: color(display-p3 1 1 1)) {\n        a.framer-text:hover,\n        a.framer-text:hover span.framer-text:not([data-text-fill]),\n        span.framer-text[data-nested-link]:hover,\n        span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-color\", \"--framer-blockquote-text-color\", \"--framer-link-text-color\", \"--framer-text-color\"], \"#000\")};\n        }\n    }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text:hover,\n        code.framer-text a.framer-text:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link]:hover,\n        code.framer-text span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-blockquote-font-style, var(--framer-code-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-blockquote-font-weight, var(--framer-code-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n    @supports not (color: color(display-p3 1 1 1)) {\n        code.framer-text a.framer-text:hover,\n        code.framer-text a.framer-text:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-nested-link]:hover,\n        code.framer-text span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {\n            color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-color\", \"--framer-blockquote-text-color\", \"--framer-link-text-color\", \"--framer-text-color\"], \"#000\")};\n        }\n    }\n   `,\n  /* css */\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        span.framer-text[data-framer-page-link-current],\n        span.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, Inter Placeholder, 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: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\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  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\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            span.framer-text[data-framer-page-link-current],\n            span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-link-current-text-color\", \"--framer-link-text-color\", \"--framer-text-color\"], \"#000\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current],\n        code.framer-text a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-framer-page-link-current],\n        code.framer-text span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            code.framer-text a.framer-text[data-framer-page-link-current],\n            code.framer-text a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]),\n            code.framer-text span.framer-text[data-framer-page-link-current],\n            code.framer-text span.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-link-current-text-color\", \"--framer-link-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n            }\n        }\n    `,\n  /* css */\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        span.framer-text[data-framer-page-link-current]:hover,\n        span.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, Inter Placeholder, 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: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\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  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\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            span.framer-text[data-framer-page-link-current]:hover,\n            span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-color\", \"--framer-link-current-text-color\", \"--framer-link-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover,\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n        code.framer-text span.framer-text[data-framer-page-link-current]:hover,\n        code.framer-text span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-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-code-text-color, var(--framer-text-color, #000)))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        @supports not (color: color(display-p3 1 1 1)) {\n            code.framer-text a.framer-text[data-framer-page-link-current]:hover,\n            code.framer-text a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]),\n            code.framer-text span.framer-text[data-framer-page-link-current]:hover,\n            code.framer-text span.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n                color: ${createRGBVariableFallbacks([\"--framer-link-hover-text-color\", \"--framer-link-current-text-color\", \"--framer-link-text-color\", \"--framer-code-text-color\", \"--framer-text-color\"], \"#000\")};\n            }\n        }\n    `,\n  /* css */\n  `\n        .framer-image.framer-text {\n            display: block;\n            max-width: 100%;\n            height: auto;\n        }\n    `,\n  /* css */\n  `\n        .text-styles-preset-reset.framer-text {\n            --framer-font-family: Inter, Inter Placeholder, 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            --framer-font-open-type-features: normal;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text {\n            --list-style-type: decimal;\n        }\n    `,\n  // Why all the `position: relative` and `position: absolute` and `::before` tricks?\n  // We want ul\u2019s disks and ol\u2019s numbers to be left-aligned at the start of the line.\n  // There\u2019s no way to do that with ::marker styles alone, so we have to resort to this trick.\n  /* css */\n  `\n        ul.framer-text,\n        ol.framer-text {\n            padding-left: 3ch;\n            position: relative;\n        }\n    `,\n  /* css */\n  `\n        li.framer-text {\n            counter-increment: list-item;\n            list-style: none;\n        }\n    `,\n  // font-variant-numeric: tabular-nums enables monospaced numbers (which is neat in a vertical list of numbers)\n  // and makes `li`s match the default browser styles better.\n  /* css */\n  `\n        ol.framer-text > li.framer-text::before {\n            position: absolute;\n            left: 0;\n            content: counter(list-item, var(--list-style-type)) \".\";\n            font-variant-numeric: tabular-nums;\n        }\n    `,\n  // Why this? Due to `position: absolute` (see above), if a list has a lot of items, the numbers\n  // might start overlapping the text content. This compensates for that. The trick is based on\n  // https://alistapart.com/article/quantity-queries-for-css/#section6. The trick doesn\u2019t account\n  // for lists longer than 1,000,000 items, but if you have a list of 1,000,000 items, you\u2019ll have\n  // other problems \u00AF\\_(\u30C4)_/\u00AF\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 100),\n        ol.framer-text > li.framer-text:nth-last-child(n + 100) ~ li {\n            padding-left: 1ch;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 1000),\n        ol.framer-text > li.framer-text:nth-last-child(n + 1000) ~ li {\n            padding-left: 2ch;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 10000),\n        ol.framer-text > li.framer-text:nth-last-child(n + 10000) ~ li {\n            padding-left: 3ch;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 100000),\n        ol.framer-text > li.framer-text:nth-last-child(n + 100000) ~ li {\n            padding-left: 4ch;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text:nth-last-child(n + 1000000),\n        ol.framer-text > li.framer-text:nth-last-child(n + 1000000) ~ li {\n            padding-left: 5ch;\n        }\n    `,\n  /* css */\n  `\n        ul.framer-text > li.framer-text::before {\n            position: absolute;\n            left: 0;\n            content: \"\\u2022\";\n        }\n    `,\n  /* css */\n  `\n        .framer-table-wrapper {\n            overflow-x: auto;\n        }\n    `,\n  /* css */\n  `\n        table.framer-text,\n        .framer-table-wrapper table.framer-text {\n            border-collapse: separate;\n            border-spacing: 0;\n            table-layout: auto;\n            word-break: normal;\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        td.framer-text,\n        th.framer-text {\n            min-width: 16ch;\n            vertical-align: top;\n        }\n    `,\n  /* css */\n  `\n        .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] {\n                position: relative;\n            }\n        }\n    `,\n  /* css */\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% / calc(var(--aspect-ratio)));\n            }\n        }\n    `,\n  /* css */\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, cache2 = defaultCache) {\n  if (!cssRule || cache2.has(cssRule) || typeof document === \"undefined\") return;\n  cache2.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 = /* @__PURE__ */ (() => [\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 = /* @__PURE__ */ (() => `\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 = /* @__PURE__ */ (() => `\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 = /* @__PURE__ */ (() => `\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 = /* @__PURE__ */ (() => [\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  // Non-sites prototyping projects render with FrameWithMotion and Stacks. In\n  // that context this rule ensures pointer events work in a specific way\n  // designed for prototypes that we don't care about anymore in sites. We\n  // can't remove it for legacy reasons, but sites will never render any\n  // elements that are impacted by this rule. However, users can still use the\n  // <Frame> api in code, at which point this rule will kick in. We don't\n  // encourage the use of this API anymore, and bugs that come from this will\n  // be the user's concern.\n  `[data-framer-component-type=\"Frame\"] *, [data-framer-component-type=\"Stack\"] * { pointer-events: auto; }`,\n  // This is fully deprecated, and will never exist in code that is generated\n  // after 24/01/2023. There will be existing code-generated that depends on\n  // this rule existing, so we can't remove it.\n  `[data-framer-generated] * { pointer-events: unset }`\n];\nvar resetCSS = [\n  `[data-reset=\"button\"] {\n        border-width: 0;\n        padding: 0;\n        background: none;\n}`\n];\nvar hideScrollbars = [\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar { width: 0px; height: 0px; }`,\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar-thumb { background: transparent; }`,\n  `[data-hide-scrollbars=\"true\"] { scrollbar-width: none; }`\n];\nvar willChangeOverrideCSSVariable = \"--framer-will-change-override\";\nvar willChangeEffectOverrideCSSVariable = \"--framer-will-change-effect-override\";\nvar anySafariVersion = \"(background: -webkit-named-image(i))\";\nvar safari16OrGreater = \"(grid-template-rows: subgrid)\";\nvar willChangeTransformRules = (isPreview) => isPreview ? [\n  `body { ${willChangeOverrideCSSVariable}: none; }`,\n  `@supports ${anySafariVersion} and (not ${safari16OrGreater}) { body { ${willChangeOverrideCSSVariable}: transform; } }`\n] : [`body { ${willChangeOverrideCSSVariable}: none; ${willChangeEffectOverrideCSSVariable}: none; }`];\nvar frameCSSRules = (isPreview) => {\n  return isPreview ? frameCSS : [];\n};\nvar svgCSSRules = [`.svgContainer svg { display: block; }`];\nvar combineCSSRules = (isPreview) => [\n  ...willChangeTransformRules(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  ...hideScrollbars\n];\nvar combinedCSSRules = /* @__PURE__ */ combineCSSRules(false);\nvar combinedCSSRulesForPreview = /* @__PURE__ */ combineCSSRules(true);\nvar didInject = false;\nfunction injectComponentCSSRules() {\n  if (didInject) return;\n  didInject = true;\n  const styles4 = RenderTarget.current() === RenderTarget.preview ? combinedCSSRulesForPreview : combinedCSSRules;\n  for (const rule of styles4) {\n    injectCSSRule(rule, void 0, void 0);\n  }\n}\n\n// ../../library/src/utils/applyControlDefaultsToReactDefaultProps.ts\nfunction isReactComponent(component) {\n  return isObject2(component) || isFunction(component);\n}\nvar optionalKey = \"optional\";\nfunction controlIsOptional(control) {\n  return !!control && optionalKey in control && control[optionalKey] === true;\n}\nfunction shouldBeNever(_) {\n}\nfunction getControlDefaultValue(control) {\n  try {\n    switch (control.type) {\n      case \"string\" /* String */:\n      case \"collectionreference\" /* CollectionReference */:\n      case \"multicollectionreference\" /* MultiCollectionReference */:\n      case \"color\" /* Color */:\n      case \"date\" /* Date */:\n      case \"link\" /* Link */:\n      case \"boxshadow\" /* BoxShadow */:\n      case \"padding\" /* Padding */:\n      case \"borderradius\" /* BorderRadius */:\n      case \"gap\" /* Gap */:\n        return isString(control.defaultValue) ? control.defaultValue : void 0;\n      case \"boolean\" /* Boolean */:\n        return isBoolean(control.defaultValue) ? control.defaultValue : void 0;\n      case \"enum\" /* Enum */:\n        if (isUndefined(control.defaultValue)) return void 0;\n        return control.options.includes(control.defaultValue) ? control.defaultValue : void 0;\n      case \"fusednumber\" /* FusedNumber */:\n      case \"number\" /* Number */:\n        return isNumber(control.defaultValue) ? control.defaultValue : void 0;\n      case \"transition\" /* Transition */:\n        return isObject2(control.defaultValue) ? control.defaultValue : void 0;\n      case \"border\" /* Border */:\n        return isObject2(control.defaultValue) ? control.defaultValue : void 0;\n      case \"font\" /* Font */:\n        return isObject2(control.defaultValue) ? control.defaultValue : void 0;\n      case \"object\" /* Object */: {\n        const value = isObject2(control.defaultValue) ? control.defaultValue : {};\n        if (isObject2(control.controls)) {\n          applyControlDefaultsToDefaultProps(value, control.controls);\n        }\n        return value;\n      }\n      case \"array\" /* Array */:\n        return isArray(control.defaultValue) ? control.defaultValue : void 0;\n      case \"file\" /* File */:\n      case \"image\" /* Image */:\n      case \"richtext\" /* RichText */:\n      case \"pagescope\" /* PageScope */:\n      case \"eventhandler\" /* EventHandler */:\n      case \"segmentedenum\" /* SegmentedEnum */:\n      case \"responsiveimage\" /* ResponsiveImage */:\n      case \"componentinstance\" /* ComponentInstance */:\n      case \"slot\" /* Slot */:\n      case \"scrollsectionref\" /* ScrollSectionRef */:\n      case \"customcursor\" /* CustomCursor */:\n      case \"cursor\" /* Cursor */:\n      case \"trackingid\" /* TrackingId */:\n      case \"vectorsetitem\" /* VectorSetItem */:\n        return void 0;\n      // No default\n      default:\n        shouldBeNever(control);\n        return void 0;\n    }\n  } catch {\n    return void 0;\n  }\n}\nfunction applyControlDefaultsToDefaultProps(defaultProps, controls) {\n  for (const controlKey in controls) {\n    const control = controls[controlKey];\n    if (!control) continue;\n    const currentDefault = defaultProps[controlKey];\n    if (!isUndefined(currentDefault)) continue;\n    if (controlIsOptional(control)) continue;\n    const defaultValue = getControlDefaultValue(control);\n    if (isUndefined(defaultValue)) continue;\n    defaultProps[controlKey] = defaultValue;\n  }\n}\nfunction getDefaultProps(component) {\n  if (isObject2(component.defaultProps)) {\n    return component.defaultProps;\n  }\n  const defaultProps = {};\n  component.defaultProps = defaultProps;\n  return defaultProps;\n}\nfunction applyControlDefaultsToReactDefaultProps(component, controls) {\n  if (!isReactComponent(component)) return;\n  const defaultProps = getDefaultProps(component);\n  applyControlDefaultsToDefaultProps(defaultProps, controls);\n}\n\n// ../../library/src/utils/addPropertyControls.ts\nfunction addPropertyControls(component, propertyControls) {\n  Object.assign(component, { propertyControls });\n  applyControlDefaultsToReactDefaultProps(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 = /* @__PURE__ */ (() => ({\n  iPhonePro: {\n    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\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 = /* @__PURE__ */ (() => [\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    // to prevent leaking pixel in the corners, see https://github.com/framer/company/issues/20429\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    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\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  // deprecated\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: {\n        left: 31.5,\n        right: 31,\n        bottom: 31\n        /* 1t */\n      }\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: {\n        left: 35.5,\n        right: 35.5,\n        bottom: 57\n        /* 1t */\n      }\n    }\n  },\n  // Desktop ------------------------------------------------------------------------------------------------------------------------\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  // Tablets ------------------------------------------------------------------------------------------------------------------------\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  // Watches ------------------------------------------------------------------------------------------------------------------------\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  // TVs ------------------------------------------------------------------------------------------------------------------------\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  // Old devices ------------------------------------------------------------------------------------------------------------------------\n  // deprecated\n  {\n    id: \"720p\",\n    title: \"720p\",\n    ...presetsBase.desktop,\n    screenWidth: 720,\n    screenHeight: 1280\n  },\n  // deprecated\n  {\n    id: \"900p\",\n    title: \"900p\",\n    ...presetsBase.desktop,\n    screenWidth: 900,\n    screenHeight: 1440\n  },\n  // deprecated\n  {\n    id: \"1080p\",\n    title: \"1080p\",\n    ...presetsBase.desktop,\n    screenWidth: 1080,\n    screenHeight: 1920\n  },\n  // deprecated\n  {\n    id: \"1440p\",\n    title: \"1440p\",\n    ...presetsBase.desktop,\n    screenWidth: 1440,\n    screenHeight: 2560\n  },\n  // deprecated\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 = /* @__PURE__ */ devicePresets.reduce(\n  (map2, preset) => {\n    map2[preset.id] = preset;\n    return map2;\n  },\n  {}\n);\nfunction getDevicePreset(presetId) {\n  return devicePresetsMap[presetId] ?? 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;\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 ?? 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 + (preset.clayBezelLeft ?? 0) + (preset.clayBezelRight ?? 0);\n    deviceHeight = preset.screenHeight + (preset.clayBezelTop ?? 0) + (preset.clayBezelBottom ?? 0);\n    screenOffsetTop = preset.clayBezelTop ?? 0;\n    screenOffsetLeft = preset.clayBezelLeft ?? 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 = (_a = preset.realisticImage) == null ? void 0 : _a.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/height of the mask = screen width/height pre-rotation\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 ? (\n    // Rotate 90 degrees counter-clockwise around (0,0), then move the\n    // result down into the viewport (rightmost transform is applied first).\n    `transform=\"translate(0 ${width}) rotate(-90)\"`\n  ) : \"\";\n  return encodeSVGForCSS(\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}\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) 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\") 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 React14 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  React14.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\nimport { jsx as jsx11 } from \"react/jsx-runtime\";\nvar DeviceCodeComponentInner = ({\n  children,\n  ...props\n}) => {\n  usePrototypingMetaTags();\n  const deviceOptions = convertPropsToDeviceOptions(props, { forceOldClay: true });\n  React15.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  if (!deviceOptions) {\n    return /* @__PURE__ */ jsx11(\n      \"div\",\n      {\n        \"data-framer-component-type\": \"DeviceComponent\",\n        className: \"no-device\",\n        style: { width: \"100%\", height: \"100%\" },\n        children: /* @__PURE__ */ jsx11(ProvideParentSize, { parentSize: 1 /* Disabled */, children })\n      }\n    );\n  }\n  const child = Array.isArray(children) ? children[0] : children;\n  const resizedChild = child && React15.isValidElement(child) ? React15.cloneElement(child, {\n    width: deviceOptions.screenWidth,\n    height: deviceOptions.screenHeight\n  }) : null;\n  return /* @__PURE__ */ jsx11(Device, { scaleTo: \"dynamic\", deviceOptions, children: 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: \"slot\" /* Slot */,\n      maxCount: 1\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\") return false;\n  if (presetId === \"custom\") return true;\n  const preset = getDevicePreset(presetId);\n  return !preset.disableRotation;\n}\nfunction supportsRealisticSkin(presetId) {\n  if (presetId === \"custom\" || presetId === \"no-device\") return false;\n  const preset = getDevicePreset(presetId);\n  return !!preset.realisticImage;\n}\nfunction supportsThemes(presetId, skin) {\n  if (presetId === \"no-device\") return false;\n  if (presetId === \"custom\" || skin !== \"realistic\") 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 React23 from \"react\";\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nimport React22, { forwardRef as forwardRef2, useContext as useContext5, useRef as useRef6 } from \"react\";\n\n// ../../library/src/modules/useIsStaticRenderer.ts\nimport { useState } from \"react\";\nfunction isStaticRenderer() {\n  const currentTarget = RenderTarget.current();\n  return currentTarget === RenderTarget.canvas || currentTarget === RenderTarget.export;\n}\nfunction useIsStaticRenderer() {\n  const [isStatic] = useState(() => isStaticRenderer());\n  return isStatic;\n}\n\n// ../../library/src/utils/asRecord.ts\nvar asRecord = (object) => object;\n\n// ../../library/src/utils/isPropValid.ts\nfunction memoize(fn) {\n  const cache2 = Object.create(Object.prototype);\n  return (arg) => {\n    if (cache2[arg] === void 0) cache2[arg] = fn(arg);\n    return cache2[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|[dkrxyz]|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|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|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|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y1|y2|yChannelSelector|zoomAndPan|for|class|autofocus|(?:[Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*)$/u;\nvar isPropValid = /* @__PURE__ */ memoize(\n  (prop) => reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91\n  /* Z+1 */\n);\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport React17 from \"react\";\n\n// ../../library/src/modules/LibraryFeaturesContext.ts\nimport React16 from \"react\";\nvar LibraryFeaturesContext = /* @__PURE__ */ React16.createContext(void 0);\nvar LibraryFeaturesProvider = /* @__PURE__ */ (() => LibraryFeaturesContext.Provider)();\nvar useLibraryFeatures = () => {\n  const context = React16.useContext(LibraryFeaturesContext);\n  return context ?? {};\n};\n\n// ../../library/src/utils/runtimeInjection.ts\nvar mockWithWarning = (message) => {\n  return () => {\n    warnOnce2(message);\n  };\n};\nvar mockWithoutWarning = () => {\n  return () => {\n  };\n};\nvar implementation = {\n  // We need a default implementation for useImageSource and useImageElement as it is used for rendering image backgrounds which would break otherwise.\n  // The default value is used for HTML export and when using the library without Framer.\n  useImageSource(image) {\n    return image.src ?? \"\";\n  },\n  useImageElement(image, rect, nodeId) {\n    const element = new Image();\n    element.src = runtime.useImageSource(image, rect, nodeId);\n    if (image.srcSet) element.srcset = image.srcSet;\n    return element;\n  },\n  canRenderOptimizedCanvasImage() {\n    return false;\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 ([\"getLogger\"].includes(String(key7))) {\n      return mockWithoutWarning();\n    }\n    if (isRuntimeInjected) {\n      return mockWithWarning(`${String(key7)} is not available in this version of Framer.`);\n    }\n    return mockWithWarning(`${String(key7)} is only available inside of Framer. https://www.framer.com/`);\n  }\n};\nvar runtime = /* @__PURE__ */ new Proxy(implementation, runtimeProxy);\nfunction _injectRuntime(injectedRuntime) {\n  Object.assign(implementation, injectedRuntime);\n  isRuntimeInjected = true;\n}\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport { jsx as jsx12 } from \"react/jsx-runtime\";\nvar wrapperStyle = {\n  position: \"absolute\",\n  borderRadius: \"inherit\",\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\nfunction getPlaceholderStyle() {\n  const placeholderStyle = {\n    backgroundRepeat: \"repeat\",\n    backgroundPosition: \"left top\",\n    backgroundSize: \"126px auto\",\n    backgroundImage: encodeSVGForCSS(\n      `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"126\" height=\"126\"><path id=\"a\" d=\"M126 0v21.584L21.584 126H0v-17.585L108.415 0H126Zm0 108.414V126h-17.586L126 108.414Zm0-84v39.171L63.585 126H24.414L126 24.414Zm0 42v39.17L105.584 126h-39.17L126 66.414ZM105.586 0 0 105.586V66.415L66.415 0h39.171Zm-42 0L0 63.586V24.415L24.415 0h39.171Zm-42 0L0 21.586V0h21.586Z\" fill=\"#888\" fill-rule=\"evenodd\"/></svg>`\n    ),\n    opacity: 0.2\n  };\n  return placeholderStyle;\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 cssObjectPosition(positionX, positionY) {\n  const x = positionX ?? \"center\";\n  const y = positionY ?? \"center\";\n  if (x === \"center\" && y === \"center\") return \"center\";\n  return x + \" \" + y;\n}\nfunction getImageStyle(image) {\n  return {\n    display: \"block\",\n    width: \"100%\",\n    height: \"100%\",\n    borderRadius: \"inherit\",\n    objectPosition: cssObjectPosition(image.positionX, image.positionY),\n    objectFit: cssObjectFit(image.fit)\n  };\n}\nfunction StaticImage({ image, containerSize, nodeId, alt, draggable, syncDecoding }) {\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image);\n  const imageRef = React17.useRef(null);\n  return (\n    // eslint-disable-next-line framer-studio/require-async-decoding -- we conditionally apply it\n    /* @__PURE__ */ jsx12(\n      \"img\",\n      {\n        ref: imageRef,\n        decoding: syncDecoding ? \"sync\" : \"async\",\n        fetchpriority: image.fetchPriority,\n        loading: image.loading,\n        width: image.pixelWidth,\n        height: image.pixelHeight,\n        sizes: image.sizes,\n        srcSet: image.srcSet,\n        src: source,\n        alt: alt ?? image.alt ?? \"\",\n        style: imageStyle,\n        draggable\n      }\n    )\n  );\n}\nfunction CanvasImage({ image, containerSize, nodeId }) {\n  const wrapperRef = React17.useRef(null);\n  const imageElement = runtime.useImageElement(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image);\n  React17.useLayoutEffect(() => {\n    const wrapper = wrapperRef.current;\n    if (wrapper === null) return;\n    wrapper.appendChild(imageElement);\n    return () => {\n      wrapper.removeChild(imageElement);\n    };\n  }, [imageElement]);\n  Object.assign(imageElement.style, imageStyle);\n  return /* @__PURE__ */ jsx12(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\" } });\n}\nfunction OptimizedCanvasImage({ nodeId, image, containerSize }) {\n  const wrapperRef = React17.useRef(null);\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  React17.useLayoutEffect(() => {\n    const wrapper = wrapperRef.current;\n    if (wrapper === null) return;\n    const imageStyle = getImageStyle(image);\n    runtime.renderOptimizedCanvasImage(wrapper, source, imageStyle, nodeId);\n  }, [nodeId, image, source]);\n  return /* @__PURE__ */ jsx12(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\" } });\n}\nfunction BackgroundImageComponent({ layoutId, image, ...props }) {\n  const { motionDivToDiv } = useLibraryFeatures();\n  if (layoutId) {\n    layoutId += \"-background\";\n  }\n  let fallbackWrapperStyles = null;\n  let needsMotion = !!layoutId;\n  let imageNode = null;\n  if (isString(image.src)) {\n    if (image.fit === \"tile\" && image.pixelWidth && image.pixelHeight) {\n      const backgroundSize = isNumber(image.backgroundSize) ? image.backgroundSize : 1;\n      const tileSize = {\n        width: Math.round(backgroundSize * image.pixelWidth),\n        height: Math.round(backgroundSize * image.pixelHeight)\n      };\n      const imageSource = runtime.useImageSource(image, tileSize);\n      fallbackWrapperStyles = {\n        ...wrapperStyle,\n        backgroundImage: `url(${imageSource})`,\n        backgroundRepeat: \"repeat\",\n        backgroundPosition: cssObjectPosition(image.positionX, image.positionY),\n        opacity: void 0,\n        border: 0,\n        // image.backgroundSize is a floating point number like 0.05\n        // so we need to multiply it by the pixelWidth to get the pixel\n        // value for the backgroundSize so that the size of the tile is\n        // a function of the image width + background size percentage.\n        // e.g image is 64px/64px and backgroundSize is 0.05, the tile size\n        // should be 3.2px\n        // We divide the pixel width by 2 because we assume that most designers\n        // will be working with 2x (retina) assets.\n        backgroundSize: `${(backgroundSize * (image.pixelWidth / 2)).toFixed(2)}px auto`\n      };\n      imageNode = null;\n      needsMotion = true;\n    } else if (RenderTarget.current() !== RenderTarget.canvas) {\n      imageNode = /* @__PURE__ */ jsx12(StaticImage, { image, syncDecoding: RenderTarget.current() === RenderTarget.export, ...props });\n    } else if (\n      // biome-ignore lint/correctness/useHookAtTopLevel: This is ok since this function acts just like a util to get the source.\n      runtime.canRenderOptimizedCanvasImage(runtime.useImageSource(image))\n    ) {\n      imageNode = /* @__PURE__ */ jsx12(OptimizedCanvasImage, { image, ...props });\n    } else {\n      imageNode = /* @__PURE__ */ jsx12(CanvasImage, { image, ...props });\n    }\n  }\n  const style = imageNode ? wrapperStyle : fallbackWrapperStyles ?? { ...wrapperStyle, ...getPlaceholderStyle() };\n  return needsMotion || !motionDivToDiv ? /* @__PURE__ */ jsx12(motion.div, { layoutId, style, \"data-framer-background-image-wrapper\": true, children: imageNode }) : /* @__PURE__ */ jsx12(\"div\", { style, \"data-framer-background-image-wrapper\": true, children: imageNode });\n}\n\n// ../../library/src/render/style/BorderComponent.tsx\nimport { jsx as jsx13 } from \"react/jsx-runtime\";\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__ */ jsx13(motion.div, { style });\n  }\n  collectBorderStyleForProps(props, style, false);\n  return /* @__PURE__ */ jsx13(motion.div, { \"data-frame-border\": true, style, layoutId });\n}\n\n// ../../library/src/render/types/BackgroundImage.ts\nvar key = \"src\";\nvar BackgroundImage = {\n  isImageObject: function(image) {\n    if (!image || typeof image === \"string\") return false;\n    return key in image;\n  }\n};\n\n// ../../library/src/render/style/backgroundImageFromProps.ts\nfunction applyForwardOverrides(background, props) {\n  const { _forwardedOverrideId, _forwardedOverrides, id } = props;\n  const forwardedOverrideId = _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 (isString(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/utils/htmlElementAsMotionComponent.ts\nfunction htmlElementAsMotionComponent(asElem) {\n  return asElem && asElem !== \"search\" && asElem !== \"slot\" && asElem !== \"template\" ? motion[asElem] : motion[\"div\"];\n}\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.]+)/u;\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.]+)/u;\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/u.test(safeNavigator.userAgent) && /Google Inc/u.test(safeNavigator.vendor) && !isEdge();\nvar isSafari = () => safeNavigator && /Safari/u.test(safeNavigator.userAgent) && /Apple Computer/u.test(safeNavigator.vendor);\nvar isFirefox = () => safeNavigator && /Firefox\\/\\d+\\.\\d+$/u.test(safeNavigator.userAgent);\nvar isFramerX = () => safeNavigator && /FramerX/u.test(safeNavigator.userAgent);\nvar isEdge = () => safeNavigator && /Edg\\//u.test(safeNavigator.userAgent);\nvar isAndroid = () => safeNavigator && /android/iu.test(safeNavigator.userAgent);\nvar isIOS = () => safeNavigator && /iPhone|iPod|iPad/iu.test(safeNavigator.platform);\nvar isMacOS = () => safeNavigator && /Mac/u.test(safeNavigator.platform);\nvar isWindows = () => safeNavigator && /Win/u.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 = () => false;\nvar isRelativeUrl = (url) => !/^[a-z]{1,8}:\\/\\/.*$/i.test(url);\nvar isLocalServerUrl = (url) => /[a-z]{1,8}:\\/\\/127\\.0\\.0\\.1/i.test(url) || /[a-zA-Z]{1,8}:\\/\\/localhost/u.test(url);\nvar isLocalUrl = (url) => {\n  if (isFileUrl(url)) return true;\n  if (isLocalServerUrl(url)) return true;\n  return false;\n};\nvar isLocalAssetUrl = (url, baseUrl) => {\n  if (baseUrl === null) baseUrl = safeWindow.location.href;\n  if (isDataUrl(url)) return false;\n  if (isLocalUrl(url)) return true;\n  if (isRelativeUrl(url) && isLocalUrl(baseUrl)) return true;\n  return false;\n};\nvar devicePixelRatio = () => safeWindow.devicePixelRatio;\nvar isJP2Supported = function() {\n  if (isFirefox()) return false;\n  return isWebKit();\n};\nvar isWebPSupported = () => isChrome();\nvar deviceType = () => {\n  if (safeNavigator && /tablet|iPad|Nexus 9/i.test(safeNavigator.userAgent)) return \"tablet\";\n  if (safeNavigator && /mobi/iu.test(safeNavigator.userAgent)) return \"phone\";\n  return \"desktop\";\n};\nvar deviceOS = () => {\n  if (isMacOS()) return \"macos\";\n  if (isIOS()) return \"ios\";\n  if (isAndroid()) return \"android\";\n  if (isWindows()) 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\") return fonts.apple;\n  if (os === \"ios\") return fonts.apple;\n  if (os === \"android\") return fonts.google;\n  if (os === \"windows\") 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,\n  isJP2Supported,\n  isWebPSupported,\n  deviceType,\n  deviceOS,\n  deviceFont,\n  safariVersion\n};\n\n// ../../library/src/render/utils/layoutHintDataPropsForCenter.ts\nvar isChrome2 = /* @__PURE__ */ isChrome();\nfunction collectLayoutHintDataProps(props, center) {\n  props[\"data-framer-layout-hint-center-x\"] = center === true || center === \"x\" ? true : void 0;\n  props[\"data-framer-layout-hint-center-y\"] = center === true || center === \"y\" ? true : void 0;\n}\nfunction layoutHintDataPropsForCenter(center) {\n  const props = {};\n  if (!center || !isChrome2 || RenderTarget.current() !== RenderTarget.canvas) {\n    return props;\n  }\n  collectLayoutHintDataProps(props, center);\n  return props;\n}\n\n// ../../library/src/render/utils/nodeIdFromString.ts\nfunction nodeIdFromString(str) {\n  return str.replace(/^id_/u, \"\").replace(/\\\\/gu, \"\");\n}\n\n// ../../library/src/render/utils/performanceDebugging.ts\nfunction countNodeRender() {\n  if (true) return;\n  const perf = asRecord(safeWindow)[\"perf\"];\n  if (!perf) return;\n  perf.nodeRender();\n}\n\n// ../../library/src/render/utils/processOverrideForwarding.ts\nimport React18 from \"react\";\nfunction processOverrideForwarding(props, children) {\n  if (!children) {\n    children = props.children;\n    if (!children) return { props, children };\n  }\n  const _forwardedOverrides = props._forwardedOverrides;\n  if (!_forwardedOverrides) return { props, children };\n  children = React18.Children.map(children, (child) => {\n    if (!React18.isValidElement(child)) return child;\n    return React18.cloneElement(child, { _forwardedOverrides });\n  });\n  return { props, children };\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 useMemo4 } from \"react\";\nfunction useLayoutId(props, { specificLayoutId, postfix } = {}) {\n  const { name, layoutIdKey, duplicatedFrom, __fromCodeComponentNode = false, drag } = props;\n  const { getLayoutId, enabled } = useContext3(LayoutIdContext);\n  return useMemo4(() => {\n    if (!enabled) return props.layoutId;\n    const existingLayoutId = specificLayoutId || props.layoutId;\n    if (!existingLayoutId) {\n      if (drag || !layoutIdKey || __fromCodeComponentNode) return void 0;\n    }\n    const layoutIdCandidate = existingLayoutId || getLayoutId({ id: layoutIdKey, name, duplicatedFrom });\n    if (!layoutIdCandidate) 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/useIsomorphicLayoutEffect.ts\nimport { useEffect as useEffect7, useLayoutEffect as useLayoutEffect4 } from \"react\";\nvar useIsomorphicLayoutEffect2 = typeof document !== \"undefined\" ? useLayoutEffect4 : useEffect7;\n\n// ../../library/src/render/presentation/ComponentContainerContext.tsx\nimport React19 from \"react\";\nvar ComponentContainerContext = /* @__PURE__ */ React19.createContext(false);\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport React21, { useEffect as useEffect8 } from \"react\";\n\n// ../../library/src/modules/useForceUpdate.ts\nimport React20 from \"react\";\nfunction useForceUpdate2() {\n  const [_, setForcedRenderCount] = React20.useState(0);\n  return React20.useCallback(() => setForcedRenderCount((v) => v + 1), []);\n}\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport { jsx as jsx14 } from \"react/jsx-runtime\";\nvar DEFAULT_SIZE = 200;\nvar SharedObserver = class {\n  constructor() {\n    // Note: we don\u2019t want to use #-style private fields here because (as of esbuild 0.17)\n    // they leave non-tree-shakeable symbols in the bundle: https://framer-team.slack.com/archives/C05V49Q4NJ2/p1715653184830179\n    __publicField(this, \"sharedResizeObserver\");\n    __publicField(this, \"callbacks\", /* @__PURE__ */ new WeakMap());\n    this.sharedResizeObserver = new ResizeObserver(this.updateResizedElements.bind(this));\n  }\n  updateResizedElements(entries) {\n    for (const entry of entries) {\n      const callbackForElement = this.callbacks.get(entry.target);\n      if (callbackForElement) callbackForElement(entry.contentRect);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    this.sharedResizeObserver.observe(element);\n    this.callbacks.set(element, callback);\n  }\n  unobserve(element) {\n    this.sharedResizeObserver.unobserve(element);\n    this.callbacks.delete(element);\n  }\n};\nvar sharedResizeObserver = /* @__PURE__ */ (() => isBrowser2() ? new SharedObserver() : void 0)();\nfunction useRerenderOnResize(ref) {\n  const update = useForceUpdate2();\n  useEffect8(() => {\n    const element = ref == null ? void 0 : ref.current;\n    if (!element) return;\n    sharedResizeObserver == null ? void 0 : sharedResizeObserver.observeElementWithCallback(ref.current, update);\n    return () => {\n      sharedResizeObserver == null ? void 0 : sharedResizeObserver.unobserve(element);\n    };\n  }, [ref, update]);\n}\nfunction useMeasuredSize(ref) {\n  const forceUpdate = useForceUpdate2();\n  const size = React21.useRef(null);\n  function updateSize(newSize) {\n    if (newSize.width === 0 && newSize.height === 0) return;\n    if (!size.current || newSize.height !== size.current.height || newSize.width !== size.current.width) {\n      size.current = { width: newSize.width, height: newSize.height };\n      forceUpdate();\n    }\n  }\n  useIsomorphicLayoutEffect2(() => {\n    if (!ref.current) 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) return;\n      sharedResizeObserver.unobserve(ref.current);\n    };\n  }, []);\n  return size.current;\n}\nvar SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE = \"data-framer-size-compatibility-wrapper\";\nvar withMeasuredSize = (Component17) => (props) => {\n  const ref = React21.useRef(null);\n  const size = useMeasuredSize(ref);\n  const dataProps = { [SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE]: true };\n  const shouldRender = Boolean(size);\n  const fallbackWidth = props.width ?? DEFAULT_SIZE;\n  const fallbackHeight = props.height ?? DEFAULT_SIZE;\n  return /* @__PURE__ */ jsx14(\"div\", { style: { width: \"100%\", height: \"100%\", pointerEvents: \"none\" }, ref, ...dataProps, children: shouldRender && /* @__PURE__ */ jsx14(\n    Component17,\n    {\n      ...props,\n      width: (size == null ? void 0 : size.width) ?? fallbackWidth,\n      height: (size == null ? void 0 : size.height) ?? 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)) return element;\n  if (element.children.length === 0) return element;\n  if (element.style.display !== \"contents\") 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 = useContext4(ComponentContainerContext);\n  const onCanvas = RenderTarget.current() === RenderTarget.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) 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/setLayerBacked.ts\nvar smallValue = \"0.000001px\";\nvar translateZ = /* @__PURE__ */ (() => ` translateZ(${smallValue})`)();\nvar useTranslateZHack = /* @__PURE__ */ (() => isFramerX() || isSafari() || isTest())();\nfunction forceLayerBackingWithMotionStyle(motionStyle) {\n  motionStyle.willChange = \"transform\";\n  const onCanvas = RenderTarget.current() === RenderTarget.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() === RenderTarget.canvas;\n  if (!useTranslateZHack || !onCanvas) {\n    return;\n  }\n  const transform2 = isString(style.transform) ? 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\nfunction resetSetStyle(element, key7, toValue, microtask2 = true) {\n  if (!element) {\n    return;\n  }\n  const style = asRecord(element.style);\n  const value = toValue ? toValue : style[key7];\n  const reset = () => {\n    if (!isValidCSSStyleValue(value)) return;\n    style[key7] = value;\n  };\n  style[key7] = null;\n  if (microtask2) {\n    void Promise.resolve().then(reset);\n  } else {\n    setTimeout(reset, 0);\n  }\n}\nfunction isValidCSSStyleValue(value) {\n  return isString(value) || isNumber(value) || isNull(value);\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nvar Layer = /* @__PURE__ */ (() => {\n  class Layer2 extends Component3 {\n    constructor() {\n      super(...arguments);\n      /** @private (Just using `private` breaks compilation unless using `stripInternal`) */\n      __publicField(this, \"layerElement\", null);\n      __publicField(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    /** @internal */\n    shouldComponentUpdate(nextProps, nextState) {\n      return nextProps._needsMeasure || this.state !== nextState || !isEqual(this.props, nextProps);\n    }\n    /** @internal */\n    componentDidUpdate(prevProps) {\n      if (asRecord(this.props)[\"clip\"] && asRecord(this.props)[\"radius\"] === 0 && asRecord(prevProps)[\"radius\"] !== 0) {\n        resetSetStyle(this.layerElement, \"overflow\", \"hidden\", false);\n      }\n    }\n  }\n  __publicField(Layer2, \"defaultProps\", {});\n  return Layer2;\n})();\n\n// ../../library/src/utils/memoize.ts\nfunction manageCache(cache2, maxEntries) {\n  const size = cache2.size;\n  if (size < maxEntries) return;\n  let i = Math.round(Math.random());\n  for (const key7 of cache2.keys()) {\n    if ((++i & 1) === 1) continue;\n    cache2.delete(key7);\n  }\n}\nfunction memoize2(maxEntries, cache2, key7, create) {\n  const r = cache2.get(key7);\n  if (r) return r;\n  manageCache(cache2, maxEntries);\n  const g = create(key7);\n  cache2.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) 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  /**\n   * @internal\n   */\n  toHexValue: (color2) => {\n    return Color.toHex(Color(color2)).toUpperCase();\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  /**\n   * @internal\n   */\n  hsvToHexValue: (hsv) => {\n    return Color.toHex(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a))).toUpperCase();\n  },\n  hsvToHex: (hsv) => {\n    return Color.toHexString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a))).toUpperCase();\n  },\n  hsvToRgbString: (hsv) => {\n    return Color.toRgbString(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  /**\n   * @internal\n   */\n  rgbToHexValue: (color2) => {\n    return Color.toHex(Color(color2));\n  },\n  rgbToHexString: (color2) => {\n    return Color.toHexString(Color(color2));\n  },\n  hslToString: (color2) => {\n    return Color.toHslString(Color(color2));\n  },\n  hslToRgbString: (color2) => {\n    return Color.toRgbString(Color(color2));\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 (Color.isP3String(a) || Color.isP3String(b)) return 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   * Converts a color to a string to consistent formats for animating.\n   */\n  toFormatString: (color2) => {\n    if (Color.isP3String(color2)) return color2;\n    return Color.toRgbString(Color(color2));\n  }\n};\n\n// ../../library/src/render/utils/gradientColorStops.ts\nvar CSSVariableRegExp = /var\\(.+\\)/u;\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  /**\n   * @param value -\n   */\n  isLinearGradient: (value) => {\n    return isObject2(value) && linearGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (linearGradient) => {\n    return linearGradient.angle ^ gradientColorStopsHash(linearGradient, linearGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (linearGradient, overrideAngle, getStopValue) => {\n    const stops = gradientColorStops(linearGradient, linearGradient.alpha);\n    const angle = overrideAngle !== void 0 ? overrideAngle : linearGradient.angle;\n    const cssStops = stops.map((stop) => `${(getStopValue == null ? void 0 : getStopValue(stop.value)) ?? 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  /**\n   * @param value -\n   * @public\n   */\n  isRadialGradient: (value) => {\n    return isObject2(value) && radialGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (radialGradient) => {\n    return radialGradient.centerAnchorX ^ radialGradient.centerAnchorY ^ radialGradient.widthFactor ^ radialGradient.heightFactor ^ gradientColorStopsHash(radialGradient, radialGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (radialGradient, getStopValue) => {\n    const { alpha: alpha2, widthFactor, heightFactor, centerAnchorX, centerAnchorY } = radialGradient;\n    const stops = gradientColorStops(radialGradient, alpha2);\n    const cssStops = stops.map((stop, index) => {\n      const nextStop = stops[index + 1];\n      const position = stop.position === 1 && (nextStop == null ? void 0 : nextStop.position) === 1 ? stop.position - 1e-4 : stop.position;\n      return `${(getStopValue == null ? void 0 : getStopValue(stop.value)) ?? stop.value} ${position * 100}%`;\n    });\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    ;\n    styleRef[into] = props[name];\n    return;\n  }\n}\n\n// ../../library/src/render/presentation/Frame/getStyleForFrameProps.ts\nfunction hasLeftAndRight(style) {\n  if (!style) return false;\n  return style.left !== void 0 && style.right !== void 0;\n}\nfunction hasTopAndBottom(style) {\n  if (!style) 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) 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\nimport { Fragment as Fragment4, jsx as jsx15, jsxs as jsxs3 } from \"react/jsx-runtime\";\nfunction hasEvents(props) {\n  for (const key7 in props) {\n    if (key7 === \"drag\" || key7.startsWith(\"while\") || typeof asRecord(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__ */ (() => /* @__PURE__ */ new Set([\n  ...pointerEvents,\n  ...pointerEvents.map((event) => `${event}Capture`)\n  // Add capture event variants\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)) return true;\n  if (!props.style) return false;\n  if (hasScrollingOverflow(props.style)) return true;\n  return false;\n}\nfunction hasScrollingOverflow(props) {\n  if (overflowKey in props && (props[overflowKey] === \"scroll\" || props[overflowKey] === \"auto\")) 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,\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(size),\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  React22.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  const inCodeComponent = useContext5(ComponentContainerContext);\n  const { style, _initialStyle, __fromCanvasComponent, size } = props;\n  const unwrappedProps = unwrapFrameProps(props);\n  const constraintsRect = useConstraints(unwrappedProps);\n  const defaultStyle = {\n    display: \"block\",\n    flex: (style == null ? void 0 : style.flex) ?? \"0 0 auto\",\n    userSelect: RenderTarget.current() !== RenderTarget.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);\n  const safeToEditPointerEvents = props.style ? !(\"pointerEvents\" in props.style) : true;\n  if (shouldDisablePointerEvents && safeToEditPointerEvents) {\n    defaultStyle.pointerEvents = \"none\";\n  }\n  const addTextCentering = React22.Children.count(props.children) > 0 && React22.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 (size === 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  Object.assign(defaultStyle, {\n    overflowX: defaultStyle.overflowX ?? defaultStyle.overflow,\n    overflowY: defaultStyle.overflowY ?? defaultStyle.overflow,\n    overflow: void 0\n  });\n  Layer.applyWillChange(props, defaultStyle, true);\n  let resultStyle = defaultStyle;\n  if (!defaultStyle.transform) {\n    resultStyle = { x: 0, y: 0, ...defaultStyle };\n  }\n  const isRenderingStaticContent = isStaticRenderer();\n  if (props.positionSticky) {\n    if (!isRenderingStaticContent || 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 (isRenderingStaticContent && (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] = asRecord(props)[key7];\n    } else if (key7 === \"positionTransition\" || key7 === \"layoutTransition\") {\n      motionProps[\"layout\"] = true;\n      if (typeof asRecord(props)[key7] !== \"boolean\" && !props.transition) {\n        motionProps[\"transition\"] = asRecord(props)[key7];\n      }\n    }\n  }\n  return motionProps;\n}\nfunction hasDataFramerName(props) {\n  return \"data-framer-name\" in props;\n}\nvar VisibleFrame = /* @__PURE__ */ forwardRef2(function VisibleFrame2(props, forwardedRef) {\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 = useRef6(null);\n  const ref = forwardedRef ?? fallbackRef;\n  const dataProps = {\n    \"data-framer-component-type\": props.componentType ?? \"Frame\",\n    \"data-framer-cursor\": cursor,\n    \"data-framer-highlight\": cursor === \"pointer\" ? true : void 0,\n    \"data-layoutid\": layoutId,\n    \"data-framer-offset-parent-id\": asRecord(props)[\"data-framer-offset-parent-id\"]\n  };\n  if (!hasDataFramerName(props) && name) {\n    asRecord(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) 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 = useContext5(ComponentContainerContext);\n  const parentSize = resolveParentSize(propsWithOverrides, unwrappedProps, rect, inCodeComponent);\n  const wrappedContent = useProvideParentSize(\n    /* @__PURE__ */ jsxs3(Fragment4, { children: [\n      backgroundImage ? /* @__PURE__ */ jsx15(\n        BackgroundImageComponent,\n        {\n          alt: props.alt ?? \"\",\n          image: backgroundImage,\n          containerSize: rect ?? void 0,\n          nodeId: props.id && nodeIdFromString(props.id),\n          layoutId\n        }\n      ) : null,\n      children,\n      /* @__PURE__ */ jsx15(Border, { ..._border, border, layoutId })\n    ] }),\n    parentSize\n  );\n  const MotionComponent = htmlElementAsMotionComponent(props.as);\n  return /* @__PURE__ */ jsxs3(MotionComponent, { ...dataProps, ...motionProps, layoutId, style: currentStyle, ref, children: [\n    wrappedContent,\n    __portal\n  ] });\n});\nvar FrameWithMotion = /* @__PURE__ */ forwardRef2(\n  function FrameWithMotion2(props, ref) {\n    countNodeRender();\n    const { visible = true } = props;\n    if (!visible) return null;\n    return /* @__PURE__ */ jsx15(VisibleFrame, { ...props, ref });\n  }\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}\n\n// ../../library/src/components/EmptyState.tsx\nimport { jsx as jsx16, jsxs as jsxs4 } from \"react/jsx-runtime\";\nfunction EmptyState({\n  title = \"\",\n  description = \"Click and drag the connector to any frame on the canvas \\u2192\",\n  children,\n  size,\n  hide,\n  insideUserCodeComponent = false,\n  position = \"absolute\"\n}) {\n  const { target } = RenderEnvironment;\n  const childCount = React23.Children.count(children);\n  if (insideUserCodeComponent && childCount === 0) {\n    return /* @__PURE__ */ jsx16(FrameWithMotion, { ...size, \"data-name\": \"placeholder\" });\n  }\n  if (target !== RenderTarget.canvas) return null;\n  if (hide) return null;\n  if (childCount !== 0) return null;\n  return /* @__PURE__ */ jsx16(\n    FrameWithMotion,\n    {\n      className: \"framerInternalUI-canvasPlaceholder\",\n      top: 0,\n      left: 0,\n      bottom: 0,\n      right: 0,\n      style: { position, ...size },\n      children: /* @__PURE__ */ jsx16(\n        \"div\",\n        {\n          style: {\n            display: \"flex\",\n            alignItems: \"center\",\n            lineHeight: \"1.4\",\n            height: \"100%\",\n            width: \"100%\"\n          },\n          children: /* @__PURE__ */ jsxs4(\n            \"div\",\n            {\n              style: {\n                display: \"flex\",\n                alignItems: \"center\",\n                justifyContent: \"center\",\n                flexDirection: \"column\",\n                width: \"100%\",\n                // Use a mask to fade out the right edge of the content as it gets cropped.\n                WebkitMaskImage: `linear-gradient(90deg, black, black calc(100% - 12px * ${scaleFactor}), transparent)`\n              },\n              children: [\n                /* @__PURE__ */ jsx16(Title, { children: title }),\n                /* @__PURE__ */ jsx16(Description, { children: description })\n              ]\n            }\n          )\n        }\n      )\n    },\n    \"empty-state\"\n  );\n}\nvar scaleFactor = \"var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)\";\nfunction Title({ children }) {\n  return /* @__PURE__ */ jsx16(\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      children\n    }\n  );\n}\nfunction Description({ children }) {\n  return /* @__PURE__ */ jsx16(\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      children\n    }\n  );\n}\n\n// ../../library/src/components/Navigation.tsx\nimport React29, { Component as Component6 } from \"react\";\n\n// ../../library/src/components/AnimateLayout/SharedLayoutRoot.tsx\nimport React24, { Component as Component4 } from \"react\";\nimport { jsx as jsx17 } from \"react/jsx-runtime\";\nvar TREE_ROOT_ID = \"__LAYOUT_TREE_ROOT\";\nvar SharedLayoutContext = /* @__PURE__ */ React24.createContext({\n  schedulePromoteTree: () => {\n  },\n  scheduleProjectionDidUpdate: () => {\n  },\n  initLead: () => {\n  }\n});\nvar SharedLayoutRoot = class extends Component4 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"shouldAnimate\", false);\n    __publicField(this, \"transition\");\n    __publicField(this, \"lead\");\n    __publicField(this, \"follow\");\n    __publicField(this, \"scheduledPromotion\", false);\n    __publicField(this, \"scheduledDidUpdate\", false);\n    __publicField(this, \"scheduleProjectionDidUpdate\", () => {\n      this.scheduledDidUpdate = true;\n    });\n    // schedule a promotion to run later in getSnapshotBeforeUpdate\n    __publicField(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    __publicField(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    __publicField(this, \"sharedLayoutContext\", {\n      schedulePromoteTree: this.schedulePromoteTree,\n      scheduleProjectionDidUpdate: this.scheduleProjectionDidUpdate,\n      initLead: this.initLead\n    });\n  }\n  // Runs after all descendent SharedLayoutTree finish taking snapshots in\n  // their getSnapshotBeforeUpdate lifecycle method.\n  getSnapshotBeforeUpdate() {\n    var _a;\n    if (!this.scheduledPromotion || !this.lead || !this.follow) 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) 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__ */ jsx17(SharedLayoutContext.Provider, { value: this.sharedLayoutContext, children: this.props.children });\n  }\n};\n\n// ../../library/src/components/MagicMotionCrossfadeRoot.tsx\nimport { jsx as jsx18 } from \"react/jsx-runtime\";\nvar rootStyles = {\n  width: \"100%\",\n  height: \"100%\",\n  backgroundColor: \"none\"\n};\nfunction MagicMotionCrossfadeRoot(props) {\n  return /* @__PURE__ */ jsx18(motion.div, { layoutId: TREE_ROOT_ID, style: rootStyles, children: props.children });\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport React28, { useContext as useContext9, useEffect as useEffect11, useRef as useRef10 } from \"react\";\n\n// ../../library/src/modules/useAppearEffect.ts\nimport React25 from \"react\";\n\n// ../../library/src/modules/useSharedIntersectionObserver.ts\nimport { createContext, useContext as useContext6 } from \"react\";\n\n// ../../library/src/components/utils/refHelper.ts\nimport { useRef as useRef8 } from \"react\";\n\n// ../../library/src/utils/useMemoOne.ts\nimport { useEffect as useEffect9, useRef as useRef7, useState as useState2 } from \"react\";\nfunction useMemoOne(factory, inputs) {\n  const initial = useState2(() => ({\n    inputs,\n    result: factory()\n  }))[0];\n  const isFirstRun = useRef7(true);\n  const committed = useRef7(initial);\n  const useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && isEqual(inputs, committed.current.inputs, false));\n  const cache2 = useCache ? committed.current : {\n    inputs,\n    result: factory()\n  };\n  useEffect9(() => {\n    isFirstRun.current = false;\n    committed.current = cache2;\n  }, [cache2]);\n  return cache2.result;\n}\n\n// ../../library/src/components/utils/refHelper.ts\nfunction setRef(ref, value) {\n  if (isFunction(ref)) {\n    ref(value);\n  } else if (isMutableRef(ref)) {\n    ref.current = value;\n  }\n}\nfunction isMutableRef(ref) {\n  return isObject2(ref) && \"current\" in ref;\n}\nfunction refHasValue(ref) {\n  return isMutableRef(ref) && ref.current !== null;\n}\nfunction useStableRefWithObserver() {\n  const callbacks = useConstant(() => /* @__PURE__ */ new Set());\n  const cleanups = useConstant(() => /* @__PURE__ */ new Map());\n  return useConstant(\n    () => (ref, refCallback) => {\n      return {\n        get current() {\n          return ref.current;\n        },\n        set current(value) {\n          if (refCallback) refCallback(value);\n          ref.current = value;\n          const needsCleanup = value === null;\n          callbacks.forEach((callback) => {\n            if (needsCleanup && cleanups.has(callback)) return;\n            const cleanup = callback(value);\n            if (cleanup) cleanups.set(callback, cleanup);\n          });\n          if (needsCleanup) {\n            cleanups.forEach((cleanup) => cleanup());\n            cleanups.clear();\n          }\n        },\n        observe(fn, skipCall = false) {\n          if (callbacks.has(fn)) return;\n          callbacks.add(fn);\n          if (!skipCall && ref.current) fn(ref.current);\n        },\n        unobserve(fn) {\n          if (fn) callbacks.delete(fn);\n        },\n        cleanup(fn) {\n          var _a;\n          if (!fn || !cleanups.has(fn)) return false;\n          (_a = cleanups.get(fn)) == null ? void 0 : _a();\n          return true;\n        }\n      };\n    }\n  );\n}\nfunction useObserverRef(forwardedRef) {\n  const fallbackRef = useRef8(null);\n  const createStableRefWithObserver = useStableRefWithObserver();\n  return useConstant(() => {\n    if (isMutableRef(forwardedRef)) return createStableRefWithObserver(forwardedRef);\n    if (isFunction(forwardedRef)) return createStableRefWithObserver(fallbackRef, forwardedRef);\n    return createStableRefWithObserver(fallbackRef);\n  });\n}\nfunction useRefEffect(ref, effect, deps) {\n  var _a;\n  const effectRef = useRef8();\n  const depsChangedRef = useRef8();\n  useMemoOne(() => {\n    if (depsChangedRef.current !== void 0) depsChangedRef.current = true;\n  }, deps ?? [{}]);\n  if (!ref) return;\n  const depsChanged = depsChangedRef.current;\n  if (depsChanged) {\n    depsChangedRef.current = false;\n    if (!ref.cleanup(effectRef.current)) {\n      (_a = effectRef.current) == null ? void 0 : _a.call(effectRef, null);\n    }\n    const value = ref.current;\n    if (value) effect == null ? void 0 : effect(value);\n  }\n  if (effectRef.current === effect) return;\n  ref.unobserve(effectRef.current);\n  effectRef.current = effect;\n  ref.observe(effect, depsChanged);\n  if (depsChangedRef.current === void 0) depsChangedRef.current = false;\n}\n\n// ../../library/src/modules/useSharedIntersectionObserver.ts\nvar SharedIntersectionObserver = class {\n  constructor(options) {\n    // Note: we don\u2019t want to use #-style private fields here because (as of esbuild 0.17)\n    // they leave non-tree-shakeable symbols in the bundle: https://framer-team.slack.com/archives/C05V49Q4NJ2/p1715653184830179\n    __publicField(this, \"sharedIntersectionObserver\");\n    __publicField(this, \"callbacks\", /* @__PURE__ */ new WeakMap());\n    this.sharedIntersectionObserver = new IntersectionObserver(\n      this.intersectionObserverCallback.bind(this),\n      options\n    );\n  }\n  intersectionObserverCallback(entries, observer) {\n    for (const entry of entries) {\n      const callbackForElement = this.callbacks.get(entry.target);\n      if (callbackForElement) callbackForElement(entry, observer);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    if (!this.sharedIntersectionObserver) return;\n    this.sharedIntersectionObserver.observe(element);\n    this.callbacks.set(element, callback);\n  }\n  unobserve(element) {\n    if (!this.sharedIntersectionObserver) return;\n    this.sharedIntersectionObserver.unobserve(element);\n    this.callbacks.delete(element);\n  }\n  get root() {\n    var _a;\n    return (_a = this.sharedIntersectionObserver) == null ? void 0 : _a.root;\n  }\n};\nvar SharedIntersectionObserverContext = /* @__PURE__ */ createContext(/* @__PURE__ */ new Map());\nfunction observeElement(observers, key7, element, root, callback, rootMargin, threshold) {\n  let observer = observers.get(key7);\n  if (!observer || observer.root !== (root == null ? void 0 : root.current)) {\n    observer = new SharedIntersectionObserver({ root: root == null ? void 0 : root.current, rootMargin, threshold });\n    observers.set(key7, observer);\n  }\n  observer.observeElementWithCallback(element, callback);\n  return () => {\n    observer.unobserve(element);\n  };\n}\nfunction _useSharedIntersectionObserver(ref, callback, options) {\n  const key7 = useConstant(() => `${options.rootMargin}`);\n  const observers = useContext6(SharedIntersectionObserverContext);\n  const { enabled, root, rootMargin, threshold } = options;\n  useRefEffect(\n    ref,\n    (element) => {\n      if (!enabled) return;\n      if (element === null) return;\n      return observeElement(observers, key7, element, root, callback, rootMargin, threshold);\n    },\n    [enabled, callback, root, rootMargin, threshold]\n  );\n}\nvar useSharedIntersectionObserver = typeof IntersectionObserver === \"undefined\" ? noop2 : _useSharedIntersectionObserver;\n\n// ../../library/src/modules/useAppearEffect.ts\nvar thresholds = /* @__PURE__ */ new Array(100).fill(void 0).map((_, i) => i * 0.01);\nvar ViewportContext = /* @__PURE__ */ React25.createContext(null);\nfunction useAppearEffect(ref, appearCallback, options) {\n  const internalState = React25.useRef({\n    isInView: false,\n    hasAnimatedOnce: false\n  });\n  const { enabled, animateOnce, threshold, rootMargin = `0px 0px 0px 0px` } = options;\n  const callback = React25.useCallback(\n    (entry) => {\n      const { isInView, hasAnimatedOnce } = internalState.current;\n      const isIntersecting = isIntersectingWithThreshold(entry, (threshold == null ? void 0 : threshold.y) ?? 0);\n      if (isIntersecting && !isInView) {\n        if (animateOnce && hasAnimatedOnce) 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) 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    enabled: enabled ?? true\n  });\n}\nfunction calculatedIntersection(intersectionRect, boundingClientRect) {\n  if (boundingClientRect.height === 0) return 0;\n  return intersectionRect.height / Math.min(boundingClientRect.height, safeWindow.innerHeight);\n}\nfunction isIntersectingWithThreshold({ boundingClientRect, intersectionRect, isIntersecting }, threshold) {\n  if (boundingClientRect.height === 0) return isIntersecting;\n  return isIntersecting && calculatedIntersection(intersectionRect, boundingClientRect) >= threshold;\n}\n\n// ../../library/src/components/AnimateLayout/SharedLayoutTree.tsx\nimport React26, { Component as Component5 } from \"react\";\nimport { jsx as jsx19 } from \"react/jsx-runtime\";\nvar LayoutTree = class extends Component5 {\n  constructor() {\n    super(...arguments);\n    /**\n     * SharedLayoutTrees need to reset the projections styles previously applied\n     * on their boxes if they are becoming lead but not animating.\n     */\n    __publicField(this, \"layoutMaybeMutated\", false);\n    /**\n     * A list of projection nodes in the tree\n     */\n    __publicField(this, \"projectionNodes\", /* @__PURE__ */ new Map());\n    /**\n     * The projection node with the smallest depth in the tree's children.\n     */\n    __publicField(this, \"rootProjectionNode\");\n    /**\n     * When a tree is tagged as being removed, either by usePresence, or by\n     * Navigation, we set it on `this` in shouldComponentUpdate so that it's\n     * accessible by SharedLayoutRoot before the LayoutTree has updated.\n     */\n    __publicField(this, \"isExiting\");\n    __publicField(this, \"shouldPreserveFollowOpacity\", (child) => {\n      return child.options.layoutId === TREE_ROOT_ID && !this.props.isExiting;\n    });\n    __publicField(this, \"switchLayoutGroupContext\", {\n      register: (child) => this.addChild(child),\n      deregister: (child) => this.removeChild(child),\n      // Configs to use for the initial promotion on mount in Motion\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) 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  /**\n   * As children are added, make sure that `this.rootProjectionNode` is always the\n   * child with the smallest depth.\n   */\n  setRootChild(child) {\n    if (!this.rootProjectionNode) 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__ */ jsx19(SwitchLayoutGroupContext.Provider, { value: this.switchLayoutGroupContext, children: this.props.children });\n  }\n};\nvar SharedLayoutTree = (props) => {\n  const sharedLayoutContext = React26.useContext(SharedLayoutContext);\n  return /* @__PURE__ */ jsx19(LayoutTree, { ...props, sharedLayoutContext });\n};\n\n// ../../library/src/components/NavigationContainerContext.tsx\nimport React27, { useContext as useContext7 } from \"react\";\nvar NavigationContainerContext = /* @__PURE__ */ React27.createContext(true);\nfunction useIsInCurrentNavigationTarget() {\n  const isInCurrentNavigationTarget = useContext7(NavigationContainerContext);\n  return isInCurrentNavigationTarget;\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nimport { createContext as createContext2, useCallback as useCallback5, useContext as useContext8, useEffect as useEffect10, useRef as useRef9 } 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\nimport { jsx as jsx20 } from \"react/jsx-runtime\";\nvar NavigationTargetContext = /* @__PURE__ */ createContext2({ register: () => {\n}, deregister: () => {\n} });\nvar NavigationTargetWrapper = ({ isCurrent, isOverlayed, children }) => {\n  const callbacks = useMap();\n  const register = useCallback5(\n    (fn) => {\n      if (callbacks.has(fn)) {\n        console.warn(\"NavigationTargetWrapper: already registered\");\n        return;\n      }\n      callbacks.set(fn, void 0);\n    },\n    [\n      callbacks\n      /* constant, so should never change */\n    ]\n  );\n  const deregister = useCallback5(\n    (fn) => {\n      const cleanup = callbacks.get(fn);\n      cleanup == null ? void 0 : cleanup();\n      callbacks.delete(fn);\n    },\n    [\n      callbacks\n      /* constant, so should never change */\n    ]\n  );\n  const value = useRef9({ register, deregister }).current;\n  useEffect10(() => {\n    callbacks.forEach((_, cb) => {\n      const newCleanup = cb(isCurrent, isOverlayed);\n      callbacks.set(cb, isFunction(newCleanup) ? newCleanup : void 0);\n    });\n    return () => {\n      callbacks.forEach((cleanup, cb) => {\n        if (!cleanup) return;\n        cleanup();\n        callbacks.set(cb, void 0);\n      });\n    };\n  }, [\n    isCurrent,\n    isOverlayed,\n    callbacks\n    /* constant, so should never change */\n  ]);\n  return /* @__PURE__ */ jsx20(NavigationTargetContext.Provider, { value, children });\n};\nfunction useOnCurrentTargetChange(callback, deps = []) {\n  const { register, deregister } = useContext8(NavigationTargetContext);\n  useEffect10(() => {\n    if (!callback) return;\n    register(callback);\n    return () => deregister(callback);\n  }, [register, deregister, ...deps]);\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport { jsx as jsx21, jsxs as jsxs5 } from \"react/jsx-runtime\";\nvar NavigationContainer = /* @__PURE__ */ React28.memo(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 animate3 = useAnimation();\n  const presence = useContext9(PresenceContext);\n  const { persistLayoutIdCache } = useContext9(LayoutIdContext);\n  const previousState = useRef10({\n    wasCurrent: void 0,\n    wasPrevious: false,\n    wasBeingRemoved: false,\n    wasReset: true,\n    origins: getOriginProps({}, initialProps, transitionProps)\n  });\n  const viewportRef = useRef10(null);\n  const isBeingRemoved = presence !== null && !presence.isPresent;\n  if (isCurrent && previousState.current.wasCurrent === void 0) persistLayoutIdCache();\n  useEffect11(() => {\n    if (isLayeredContainer || !animate3) 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 || // If the screen was being removed as a result of a \"go back\" transition, but that removal is interrupted,\n    // resulting in this screen being restored to the current screen, we need to trigger an animation.\n    !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      animate3.stop();\n      void animate3.start({\n        zIndex: index,\n        ...origins,\n        // @TODO: Ignored for now, but should re-check later.\n        ...transitionProps\n        // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n      });\n      wasReset = false;\n    } else if (wasReset === false) {\n      animate3.stop();\n      animate3.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) layout.width = \"auto\";\n  if (layout.top === void 0 || layout.bottom === void 0) 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    // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n    initial: { ...identity, ...initialProps },\n    // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n    animate: { ...identity, ...transitionProps, transition },\n    // Overlay animations are sometimes instant\n    // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n    exit: { ...identity, ...exitProps, transition: animation }\n    // Overlay exits are always animated\n  } : {\n    animate: animate3,\n    // biome-ignore lint/suspicious/noExplicitAny: has been this way from before the biome introduction\n    exit: { ...identity, ...exitProps, transition: exitTransition }\n  };\n  const isPresent = !(isBeingRemoved || areMagicMotionLayersPresent === false);\n  const isCurrentTarget = !!isCurrent && isPresent;\n  const forceOpacity = isCurrent && isInitial;\n  return /* @__PURE__ */ jsxs5(\n    FrameWithMotion,\n    {\n      \"data-framer-component-type\": \"NavigationContainerWrapper\",\n      width: \"100%\",\n      height: \"100%\",\n      style: {\n        position: \"absolute\",\n        transformStyle: \"flat\",\n        backgroundColor: \"transparent\",\n        overflow: \"hidden\",\n        // Unlike Overlays, Screens set zIndex via animation controls to ensure it's set in parallel with the animation being played.\n        // However, when a screen exits, it needs to preserve it's zIndex, which can't be applied through an `exit` animation,\n        // and might be impacted by the layer created by `perspective`.\n        zIndex: isLayeredContainer || isBeingRemoved || isCurrent && withMagicMotion ? index : void 0,\n        pointerEvents: void 0,\n        visibility: visible ? \"visible\" : \"hidden\",\n        perspective\n      },\n      children: [\n        isLayeredContainer && /* @__PURE__ */ jsx21(\n          FrameWithMotion,\n          {\n            width: \"100%\",\n            height: \"100%\",\n            \"data-framer-component-type\": \"NavigationContainerBackdrop\",\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__ */ jsx21(\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: void 0,\n              // When we mount a new screen that is going to be animated in with animation controls,\n              // we need to ensure that the screen is hidden until the animation starts.\n              opacity: forceOpacity || isLayeredContainer || isCurrent && withMagicMotion ? 1 : 0\n            },\n            \"data-is-present\": isPresent ? void 0 : false,\n            ref: viewportRef,\n            children: /* @__PURE__ */ jsx21(ViewportContext.Provider, { value: viewportRef, children: /* @__PURE__ */ jsx21(NavigationContainerContext.Provider, { value: isCurrentTarget, children: /* @__PURE__ */ jsx21(NavigationTargetWrapper, { isCurrent: isCurrentTarget, isOverlayed, children: /* @__PURE__ */ jsx21(\n              SharedLayoutTree,\n              {\n                isLead: isCurrent,\n                animatesLayout: !!withMagicMotion,\n                transition,\n                isExiting: !isPresent,\n                isOverlayed,\n                id,\n                children\n              }\n            ) }) }) })\n          }\n        )\n      ]\n    }\n  );\n}, shouldUsePreviousValue);\nfunction shouldUsePreviousValue(prevProps, nextProps) {\n  if (nextProps.isCurrent === void 0) return false;\n  if (prevProps.isCurrent !== nextProps.isCurrent) return false;\n  if (prevProps.isPrevious !== nextProps.isPrevious) return false;\n  if (nextProps.isCurrent && prevProps.isOverlayed !== nextProps.isOverlayed) return false;\n  return true;\n}\nfunction getOriginProps(currentOriginProps, initialProps, transitionProps) {\n  const result = { ...currentOriginProps };\n  if (initialProps) {\n    if (isFiniteNumber(initialProps.originX)) result.originX = initialProps.originX;\n    if (isFiniteNumber(initialProps.originY)) result.originY = initialProps.originY;\n    if (isFiniteNumber(initialProps.originZ)) result.originZ = initialProps.originZ;\n  }\n  if (transitionProps) {\n    if (isFiniteNumber(transitionProps.originX)) result.originX = transitionProps.originX;\n    if (isFiniteNumber(transitionProps.originY)) result.originY = transitionProps.originY;\n    if (isFiniteNumber(transitionProps.originZ)) result.originZ = transitionProps.originZ;\n  }\n  return result;\n}\nfunction contains3Dprops(containerProps) {\n  var _a, _b, _c;\n  if (!containerProps) return false;\n  const containsProps = \"rotateX\" in containerProps || \"rotateY\" in containerProps || \"z\" in containerProps;\n  if (!containsProps) 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/NavigationContext.ts\nimport { createContext as createContext3 } from \"react\";\n\n// ../../library/src/components/NavigatorMock.tsx\nvar NavigatorMock = class {\n  constructor() {\n    __publicField(this, \"warning\", () => {\n      warnOnce2(\"The Navigator API is only available inside of Framer: https://www.framer.com/\");\n    });\n    __publicField(this, \"goBack\", () => this.warning());\n    __publicField(this, \"instant\", () => this.warning());\n    __publicField(this, \"fade\", () => this.warning());\n    __publicField(this, \"push\", () => this.warning());\n    __publicField(this, \"modal\", () => this.warning());\n    __publicField(this, \"overlay\", () => this.warning());\n    __publicField(this, \"flip\", () => this.warning());\n    __publicField(this, \"customTransition\", () => this.warning());\n    __publicField(this, \"magicMotion\", () => this.warning());\n  }\n};\nvar navigatorMock = /* @__PURE__ */ new NavigatorMock();\n\n// ../../library/src/components/NavigationContext.ts\nvar NavigationContext = /* @__PURE__ */ createContext3(navigatorMock);\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) 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]) 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) 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) return;\n  nextState.containers = containers;\n  return nextState;\n}\nfunction forward(currentState) {\n  const nextItem = currentState.history[currentState.current + 1];\n  if (!nextItem) return;\n  const { key: key7, transition, component } = nextItem;\n  const history = [...currentState.history];\n  const nextState = add(currentState, key7, transition, component);\n  if (!nextState) 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) return;\n  const currentItem = history.pop();\n  if (!currentItem) 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) 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) 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) 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) return true;\n  if (index === 0) return false;\n  const forwardHistory = history.slice(index, history.length);\n  if (forwardHistory.findIndex((item) => item.key === key7) > -1) return true;\n  const backwardsHistory = history.slice(0, index - 1);\n  if (backwardsHistory.findIndex((item) => item.key === key7) > -1) return false;\n  return true;\n}\nfunction transitionForScreen(screenIndex, stackState) {\n  const { current, previous, history } = stackState;\n  if (screenIndex !== current && screenIndex !== previous) 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 = /* @__PURE__ */ objectKeys(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) return;\n      const transitionTo = transition[property];\n      const transitionFrom = typeof transition[property] === \"string\" ? `${asRecord(allAnimatableProperties)[property]}%` : asRecord(allAnimatableProperties)[property];\n      asRecord(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\nimport { jsx as jsx22, jsxs as jsxs6 } from \"react/jsx-runtime\";\nvar NavigationConsumer = /* @__PURE__ */ (() => NavigationContext.Consumer)();\nvar NavigationCallbackContext = /* @__PURE__ */ React29.createContext(void 0);\nvar NavigationCallbackProvider = /* @__PURE__ */ (() => NavigationCallbackContext.Provider)();\nvar IsInitialNavigationContext = /* @__PURE__ */ React29.createContext(void 0);\nvar Navigation = /* @__PURE__ */ (() => {\n  var _lastEventTimeStamp, _a, _Navigation_instances, getStackState_fn, isSameEventTransition_fn, _navigationAction, transition_fn;\n  return _a = class extends Component6 {\n    constructor(props) {\n      var _a2;\n      super(props);\n      __privateAdd(this, _Navigation_instances);\n      __privateAdd(this, _lastEventTimeStamp, null);\n      __publicField(this, \"state\", defaultState());\n      __privateAdd(this, _navigationAction, (action) => {\n        if (!this.props.enabled && this.state.history.length > 0) return;\n        const newState = reduceNavigationStateForAction(this.state, action);\n        if (!newState) 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 _a2;\n          this.setState(newState);\n          if (historyItem == null ? void 0 : historyItem.key) {\n            (_a2 = this.context) == null ? void 0 : _a2.call(this, historyItem.key);\n          }\n        };\n        if (skipLayoutAnimation && !withMagicMotion) {\n          skipLayoutAnimation(updateState);\n        } else {\n          updateState();\n        }\n      });\n      __publicField(this, \"goBack\", () => {\n        var _a2;\n        if (__privateMethod(this, _Navigation_instances, isSameEventTransition_fn).call(this)) return;\n        __privateSet(this, _lastEventTimeStamp, ((_a2 = globalThis.event) == null ? void 0 : _a2.timeStamp) || null);\n        if (this.state.currentOverlay !== -1) return __privateGet(this, _navigationAction).call(this, { type: \"removeOverlay\" });\n        return __privateGet(this, _navigationAction).call(this, { type: \"remove\" });\n      });\n      const component = this.props.children;\n      if (!component || !isReactChild(component) || !isReactElement(component)) return;\n      const transition = { ...TransitionDefaults.Instant };\n      const key7 = ((_a2 = component.key) == null ? void 0 : _a2.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) return;\n      this.state = newState;\n    }\n    componentDidMount() {\n      var _a2;\n      const historyItem = this.state.history[this.state.current];\n      if (!historyItem) return;\n      (_a2 = this.context) == null ? void 0 : _a2.call(this, historyItem.key);\n    }\n    UNSAFE_componentWillReceiveProps(props) {\n      var _a2;\n      const component = props[\"children\"];\n      if (!isReactChild(component) || !isReactElement(component)) return;\n      const key7 = (_a2 = component.key) == null ? void 0 : _a2.toString();\n      if (!key7) return;\n      if (this.state.history.length === 0) {\n        __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.Instant);\n      } else {\n        __privateGet(this, _navigationAction).call(this, { type: \"update\", key: key7, component });\n      }\n    }\n    componentWillUnmount() {\n      var _a2, _b;\n      (_b = (_a2 = this.props).resetProjection) == null ? void 0 : _b.call(_a2);\n    }\n    instant(component) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.Instant, void 0);\n    }\n    fade(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.Fade, options);\n    }\n    push(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, pushTransition(options), options);\n    }\n    modal(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.Modal, options);\n    }\n    overlay(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, overlayTransition(options), options);\n    }\n    flip(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, flipTransition(options), options);\n    }\n    magicMotion(component, options) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, TransitionDefaults.MagicMotion, options);\n    }\n    customTransition(component, transition) {\n      __privateMethod(this, _Navigation_instances, transition_fn).call(this, component, transition);\n    }\n    render() {\n      var _a2, _b, _c, _d, _e;\n      const stackState = __privateMethod(this, _Navigation_instances, getStackState_fn).call(this, { overCurrentContext: false });\n      const overlayStackState = __privateMethod(this, _Navigation_instances, getStackState_fn).call(this, { 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 = ((_a2 = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _a2.withMagicMotion) || isCurrent && !!this.state.previousTransition;\n        contentContainers.push(\n          /* @__PURE__ */ jsx22(\n            NavigationContainer,\n            {\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              children: /* @__PURE__ */ jsx22(MagicMotionCrossfadeRoot, { children: containerContent({\n                component,\n                transition: historyItem == null ? void 0 : historyItem.transition\n              }) })\n            },\n            key7\n          )\n        );\n      }\n      const overlayContainers = this.state.overlayStack.map((item, stackIndex) => {\n        return /* @__PURE__ */ jsx22(\n          NavigationContainer,\n          {\n            isLayeredContainer: true,\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            children: containerContent({\n              component: item.component,\n              transition: item.transition\n            })\n          },\n          item.key\n        );\n      });\n      return /* @__PURE__ */ jsx22(\n        FrameWithMotion,\n        {\n          \"data-framer-component-type\": \"NavigationRoot\",\n          top: 0,\n          left: 0,\n          width: \"100%\",\n          height: \"100%\",\n          position: \"relative\",\n          style: {\n            overflow: \"hidden\",\n            backgroundColor: \"unset\",\n            pointerEvents: void 0,\n            ...this.props.style\n          },\n          children: /* @__PURE__ */ jsx22(NavigationContext.Provider, { value: this, children: /* @__PURE__ */ jsxs6(IsInitialNavigationContext.Provider, { value: isInitial, children: [\n            /* @__PURE__ */ jsx22(\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                children: /* @__PURE__ */ jsx22(LayoutIdProvider, { children: /* @__PURE__ */ jsx22(SharedLayoutRoot, { children: /* @__PURE__ */ jsx22(AnimatePresence, { presenceAffectsLayout: false, children: contentContainers }) }) })\n              }\n            ),\n            /* @__PURE__ */ jsx22(AnimatePresence, { children: overlayContainers })\n          ] }) })\n        }\n      );\n    }\n  }, _lastEventTimeStamp = new WeakMap(), _Navigation_instances = new WeakSet(), getStackState_fn = function(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   * To prevent bubbling events from triggering multiple transitions,\n   * we ensure that the current event has a different timestamp then the event that triggered the last transition.\n   * We use Window.event to ensure that even transitions invoked by code components - and may not pass a reference to the event - are caught.\n   * This works better than measuring the time of transition calls with performance.now()\n   * because the time between calls can get longer and longer as more screens are added to the stack,\n   * preventing a deterministic time between transitions to be used to determine if they were triggered at the same time or not.\n   */\n  isSameEventTransition_fn = function() {\n    if (!globalThis.event) return false;\n    return __privateGet(this, _lastEventTimeStamp) === globalThis.event.timeStamp;\n  }, _navigationAction = new WeakMap(), transition_fn = function(component, transitionTraits, transitionOptions) {\n    var _a2, _b;\n    if (__privateMethod(this, _Navigation_instances, isSameEventTransition_fn).call(this)) return;\n    __privateSet(this, _lastEventTimeStamp, ((_a2 = globalThis.event) == null ? void 0 : _a2.timeStamp) || null);\n    if (!component || !isReactChild(component) || !isReactElement(component)) return;\n    const transition = { ...transitionTraits, ...transitionOptions };\n    const overCurrentContext = !!transition.overCurrentContext;\n    if (overCurrentContext) return __privateGet(this, _navigationAction).call(this, { type: \"addOverlay\", transition, component });\n    const key7 = ((_b = component.key) == null ? void 0 : _b.toString()) || `stack-${this.state.historyItemId + 1}`;\n    __privateGet(this, _navigationAction).call(this, { type: \"add\", key: key7, transition, component });\n  }, __publicField(_a, \"defaultProps\", {\n    enabled: true\n  }), __publicField(_a, \"contextType\", NavigationCallbackContext), _a;\n})();\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) return currentOverlayItem.transition.backfaceVisible;\n  return previousOverlayItem && previousOverlayItem.transition.backfaceVisible;\n}\nfunction backdropColorForTransition(transition) {\n  if (transition.backdropColor) return transition.backdropColor;\n  if (transition.overCurrentContext) 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) 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) return true;\n  if (containerIndex !== previous && containerIndex !== current) return true;\n  if (current === previous) return true;\n  return false;\n}\nfunction containerIsVisible(containerIndex, stackState) {\n  const { current, previous } = stackState;\n  if (containerIndex > current && containerIndex > previous) return false;\n  if (containerIndex === current) return true;\n  return false;\n}\nfunction containerContent(item) {\n  const content = React29.Children.map(\n    item.component,\n    (child) => {\n      var _a;\n      if (!isReactChild(child) || !isReactElement(child) || !child.props) {\n        return child;\n      }\n      const props = {\n        style: child.props.style ?? {}\n      };\n      const position = (_a = item == null ? void 0 : item.transition) == null ? void 0 : _a.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) props.width = \"100%\";\n        if (canStretchStyle) props.style.width = \"100%\";\n      }\n      if (shouldStretchHeight) {\n        const canStretchHeight = \"height\" in child.props;\n        if (canStretchHeight) props.height = \"100%\";\n        if (canStretchStyle) props.style.height = \"100%\";\n      }\n      return React29.cloneElement(child, props);\n    }\n  );\n  return content;\n}\nfunction backdropTapAction(transition, goBackAction) {\n  if (transition.goBackOnTapOutside !== false) return goBackAction;\n}\nfunction NavigationWrapper(props) {\n  const resetProjection = useResetProjection();\n  const skipLayoutAnimation = useInstantLayoutTransition();\n  React29.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return /* @__PURE__ */ jsx22(Navigation, { ...props, resetProjection, skipLayoutAnimation, children: props.children });\n}\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nvar import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React30 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/hoc/WithNavigator.tsx\nimport { jsx as jsx23 } from \"react/jsx-runtime\";\nfunction WithNavigator(BaseComponent, navigationTransition, navigationTransitionDirection, NavigationTarget, navigationTransitionOptions) {\n  const InternalWithNavigator = class extends React30.Component {\n    render() {\n      return /* @__PURE__ */ jsx23(NavigationContext.Consumer, { children: (navigation) => {\n        const navigate = () => {\n          if (navigationTransition === \"goBack\") {\n            navigation.goBack();\n            return;\n          }\n          if (!NavigationTarget) return;\n          const component = NavigationTarget();\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__ */ jsx23(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 { forwardRef as forwardRef3 } 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 React32 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 (typeof safeWindow.webkitConvertPointFromPageToNode === \"function\") {\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 _FramerEvent {\n  /**\n   * @internal\n   */\n  constructor(originalEvent, session) {\n    this.originalEvent = originalEvent;\n    this.session = session;\n    /**\n     * @internal\n     */\n    __publicField(this, \"time\", Date.now());\n    /**\n     * @internal\n     */\n    __publicField(this, \"loopTime\", MainLoop.time);\n    /**\n     * @internal\n     */\n    __publicField(this, \"point\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"devicePoint\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"target\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"delta\");\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  /**\n   * @internal\n   */\n  velocity(t) {\n    return this.session ? this.session.velocity(t) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\n   */\n  get offset() {\n    return this.session ? this.session.offset(this) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\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 React31 from \"react\";\n\n// ../../library/src/utils/math.ts\nvar clamp2 = (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\nimport { jsx as jsx24 } from \"react/jsx-runtime\";\nvar DraggingContext = /* @__PURE__ */ React31.createContext({ dragging: false });\nfunction WithDragging(Component17) {\n  const _WithDraggingHOC = class _WithDraggingHOC extends React31.Component {\n    constructor(props, defaultProps) {\n      super(props, defaultProps);\n      __publicField(this, \"state\", {\n        isDragging: false\n      });\n      __publicField(this, \"x\", Animatable(0));\n      __publicField(this, \"y\", Animatable(0));\n      __publicField(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      __publicField(this, \"isMoving\", false);\n      __publicField(this, \"isAnimating\", false);\n      __publicField(this, \"directionLockAxis\", null);\n      __publicField(this, \"layerStartPoint\", null);\n      __publicField(this, \"correctedLayerStartPoint\", null);\n      __publicField(this, \"previousPoint\", null);\n      __publicField(this, \"_constraints\", null);\n      __publicField(this, \"animation\", null);\n      __publicField(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      __publicField(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        assert(this.previousPoint !== null, \"previousPoint must be set in panStart()\");\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            assert(this.layerStartPoint !== null, \"layerStartPoint must be set in panStart()\");\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      __publicField(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      // Mouse Wheel\n      __publicField(this, \"mouseWheelStart\", (event) => {\n        this.correctedLayerStartPoint = this.point;\n        this.previousPoint = this.correctedLayerStartPoint;\n        this.stopAnimation();\n      });\n      __publicField(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      __publicField(this, \"mouseWheelEnd\", (event) => {\n      });\n      __publicField(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 = clamp2(value, minX, maxX) - this.getValue(axis);\n            }\n            if (axis === \"y\") {\n              delta = clamp2(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      __publicField(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      __publicField(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: clamp2(point.x, minX, maxX), y: clamp2(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 clamp2(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    /* private */\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    // Inertial scroll animation\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 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 originalProps = { ...this.props };\n      Object.keys(_WithDraggingHOC.draggingDefaultProps).forEach((key7) => {\n        delete asRecord(originalProps)[key7];\n      });\n      originalProps.onPanStart = this.wrapHandler(this.panStart, originalProps.onPanStart);\n      originalProps.onPan = this.wrapHandler(this.pan, originalProps.onPan);\n      originalProps.onPanEnd = this.wrapHandler(this.panEnd, originalProps.onPanEnd);\n      originalProps.onMouseWheelStart = this.wrapHandler(this.mouseWheelStart, originalProps.onMouseWheelStart);\n      originalProps.onMouseWheel = this.wrapHandler(this.mouseWheel, originalProps.onMouseWheel);\n      originalProps.onMouseWheelEnd = this.wrapHandler(this.mouseWheelEnd, originalProps.onMouseWheelEnd);\n      originalProps.left = this.x;\n      originalProps.top = this.y;\n      return /* @__PURE__ */ jsx24(DraggingContext.Provider, { value: { dragging: this.state.isDragging }, children: /* @__PURE__ */ jsx24(Component17, { ...originalProps }) });\n    }\n  };\n  __publicField(_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  __publicField(_WithDraggingHOC, \"defaultProps\", Object.assign(\n    {},\n    Component17.defaultProps,\n    _WithDraggingHOC.draggingDefaultProps\n  ));\n  let WithDraggingHOC = _WithDraggingHOC;\n  const withDragging = WithDraggingHOC;\n  (0, import_hoist_non_react_statics2.default)(withDragging, Component17);\n  return withDragging;\n}\n\n// ../../library/src/components/hoc/WithEvents.tsx\nimport { jsx as jsx25 } from \"react/jsx-runtime\";\nvar hoverProps = {\n  onMouseEnter: \"mouseenter\",\n  onMouseLeave: \"mouseleave\"\n};\nvar hoverEventKeys = /* @__PURE__ */ 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 React32.Component {\n    constructor() {\n      super(...arguments);\n      // This local variable is used to track if we should ignore a tap after a drag\n      // It's not in a state because we want to change it from the render function (so not cause a render)\n      __publicField(this, \"shouldCancelTap\", false);\n      __publicField(this, \"activeEventListeners\", /* @__PURE__ */ new Map());\n      __publicField(this, \"hasFramerEventListener\", false);\n      __publicField(this, \"component\", React32.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) 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__ */ jsx25(DraggingContext.Consumer, { children: (value) => {\n        this.shouldCancelTap = value.dragging;\n        return /* @__PURE__ */ jsx25(BaseComponent, { ...this.props, ref: this.component });\n      } });\n    }\n  }, __publicField(_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\nimport React33 from \"react\";\n\n// ../../library/src/data/ObservableObject.ts\nvar hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar $private = /* @__PURE__ */ Symbol(\"private\");\nvar ObservableObject = /* @__PURE__ */ (() => {\n  function ObservableObject2(initial = {}, makeAnimatables = false, observeAnimatables = true) {\n    const unproxiedState = {\n      [$private]: {\n        makeAnimatables,\n        observeAnimatables,\n        observers: new Observers(),\n        reset() {\n          for (const key7 in state) {\n            if (hasOwnProperty(state, key7)) {\n              const value = hasOwnProperty(initial, key7) ? asRecord(initial)[key7] : void 0;\n              if (value !== void 0) {\n                state[key7] = value;\n              } else {\n                delete state[key7];\n              }\n            }\n          }\n        },\n        transactions: /* @__PURE__ */ new Set()\n      }\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    __publicField(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      const targetValue = asRecord(target)[key7];\n      if (targetValue !== void 0) {\n        if (isAnimatable(targetValue)) {\n          changed = targetValue.get() !== rawValue;\n          targetValue.set(rawValue);\n        } else {\n          changed = targetValue !== rawValue;\n          asRecord(target)[key7] = rawValue;\n        }\n        const rawValueIsObject = rawValue !== null && typeof rawValue === \"object\";\n        if (Array.isArray(rawValue) || rawValueIsObject) 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    __publicField(this, \"get\", (target, key7, receiver) => {\n      if (key7 === $private) {\n        return asRecord(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();\n\n// ../../library/src/render/traits/Blending.ts\nfunction collectBlendingFromProps(node, style) {\n  if (!node.blendingMode || node.blendingMode === \"normal\") return;\n  style.mixBlendMode = node.blendingMode;\n}\n\n// ../../library/src/render/traits/Opacity.ts\nvar key2 = \"opacity\";\nfunction withOpacity(target) {\n  return key2 in target;\n}\nfunction collectOpacityFromProps(props, style) {\n  if (!withOpacity(props)) return;\n  const opacity = Animatable.getNumber(props.opacity);\n  if (opacity === 1) 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 key3 = \"radius\";\nfunction hasRadius(props) {\n  return key3 in props;\n}\nfunction getRadiusValue(value) {\n  let num = Number(value);\n  if (typeof value === \"string\" && Number.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)) 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// ../../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 inset2 = shadow.inset ? \"inset \" : \"\";\n    return `${inset2}${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.spread}px ${shadow.color}`;\n  }\n};\n\n// ../../library/src/render/style/shadow.tsx\nimport { Fragment as Fragment5, jsx as jsx26, jsxs as jsxs7 } from \"react/jsx-runtime\";\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) 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) return;\n  style.textShadow = textShadow;\n}\nfunction collectBoxShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0) return;\n  const boxShadow = props.shadows.map((shadowItem) => BoxShadow.toCSS(shadowItem)).join(\", \");\n  if (!boxShadow) return;\n  style.boxShadow = boxShadow;\n}\nfunction shadowForShape(boxShadows, rect, shapeId, fillEnabled, strokeEnabled, strokeWidth, strokeClipId, svgStrokeAttributes) {\n  const definition = [];\n  let outsetElement = null;\n  let insetElement = null;\n  let maskElement = null;\n  const needsStrokeClip = false;\n  const shadows = [];\n  const insetShadows = [];\n  const svgShadowClass = \"svg-shadow\";\n  const svgShadowProps = RenderTarget.current() === RenderTarget.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) 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)) expandStrokeWidth = 0;\n    let miter = svgStrokeAttributes.strokeMiterlimit;\n    if (!isFiniteNumber(miter)) 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);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0);\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 svgRect = {\n      x: `${filterX.toFixed(1)}%`,\n      y: `${filterY.toFixed(1)}%`,\n      width: `${filterWidth.toFixed(1)}%`,\n      height: `${filterHeight.toFixed(1)}%`\n    };\n    definition.push(\n      /* @__PURE__ */ jsxs7(\n        \"filter\",\n        {\n          id: outsideShadowId.id,\n          filterUnits: \"objectBoundingBox\",\n          ...svgRect,\n          ...svgShadowProps,\n          children: [\n            filterElements,\n            shadows.length > 1 ? /* @__PURE__ */ jsx26(\"feMerge\", { children: mergeElements }) : null\n          ]\n        },\n        outsideShadowId.id\n      )\n    );\n    const maskId = shapeId.add(\"mask\");\n    maskElement = /* @__PURE__ */ jsxs7(\"mask\", { id: maskId.id, ...svgRect, children: [\n      /* @__PURE__ */ jsx26(\"rect\", { ...svgRect, fill: \"white\" }),\n      /* @__PURE__ */ jsx26(\"use\", { href: shapeId.link, fill: \"black\", fillOpacity: fillEnabled ? void 0 : 0 })\n    ] });\n    outsetElement = /* @__PURE__ */ jsx26(\"g\", { filter: outsideShadowId.urlLink, ...svgShadowProps, mask: maskId.urlLink, children: /* @__PURE__ */ jsx26(\n      \"use\",\n      {\n        ...svgStrokeAttributes,\n        fill: \"black\",\n        fillOpacity: fillEnabled ? void 0 : 0,\n        stroke: \"black\",\n        strokeOpacity: strokeEnabled ? void 0 : 0,\n        strokeWidth: strokeEnabled ? 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) continue;\n      const shadowElements = innerShadowElements(shapeId, shadow, i);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    definition.push(\n      /* @__PURE__ */ jsxs7(\n        \"filter\",\n        {\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          children: [\n            filterElements,\n            insetShadows.length > 1 ? /* @__PURE__ */ jsx26(\"feMerge\", { children: mergeElements }) : null\n          ]\n        },\n        insideShadowId.id\n      )\n    );\n    let clipPath;\n    if (needsStrokeClip) {\n      clipPath = strokeClipId.urlLink;\n    }\n    insetElement = /* @__PURE__ */ jsx26(\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, maskElement };\n}\nfunction outerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_outer_shadow\" + index);\n  const filterElements = /* @__PURE__ */ jsx26(OuterShadowFilterElements, { shadow, shadowKey }, shadowKey.id + \"-filters\");\n  const mergeElement = /* @__PURE__ */ jsx26(\"feMergeNode\", { in: shadowKey.id }, shadowKey.id + \"-merge\");\n  return { filterElements, mergeElement };\n}\nvar OuterShadowFilterElements = (props) => {\n  const { shadow, shadowKey } = props;\n  const offsetId = shadowKey.add(\"offset\").id;\n  const blurId = shadowKey.add(\"blur\").id;\n  const floodId = shadowKey.add(\"flood\").id;\n  return /* @__PURE__ */ jsxs7(Fragment5, { children: [\n    /* @__PURE__ */ jsx26(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: \"SourceAlpha\", result: offsetId }),\n    /* @__PURE__ */ jsx26(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: offsetId, result: blurId }),\n    /* @__PURE__ */ jsx26(\"feFlood\", { floodColor: shadow.color, result: floodId }),\n    /* @__PURE__ */ jsx26(\"feComposite\", { in: floodId, in2: blurId, operator: \"in\", result: shadowKey.id })\n  ] });\n};\nfunction innerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_inside_shadow\" + index);\n  const filterElements = /* @__PURE__ */ jsx26(InnerShadowFilterElements, { shadow, shadowKey }, shadowKey.id + \"-filters\");\n  const mergeElement = /* @__PURE__ */ jsx26(\"feMergeNode\", { in: shadowKey.id }, shadowKey.id + \"-merge\");\n  return { filterElements, mergeElement };\n}\nvar InnerShadowFilterElements = (props) => {\n  const { shadow, shadowKey } = props;\n  const blurId = shadowKey.add(\"blur\").id;\n  const offsetId = shadowKey.add(\"offset\").id;\n  const compositeId = shadowKey.add(\"composite\").id;\n  const floodId = shadowKey.add(\"flood\").id;\n  return /* @__PURE__ */ jsxs7(Fragment5, { children: [\n    /* @__PURE__ */ jsx26(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: \"SourceAlpha\", result: blurId }),\n    /* @__PURE__ */ jsx26(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: blurId, result: offsetId }),\n    /* @__PURE__ */ jsx26(\"feComposite\", { in: offsetId, in2: \"SourceAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\", result: compositeId }),\n    /* @__PURE__ */ jsx26(\"feFlood\", { floodColor: shadow.color, result: floodId }),\n    /* @__PURE__ */ jsx26(\"feComposite\", { in: floodId, in2: compositeId, operator: \"in\", result: shadowKey.id })\n  ] });\n};\nfunction calcMaxRealisticShadowBlur(distance2, focus) {\n  return interpolate([0, 0.5, 1], [distance2 * 5, distance2, 0])(focus);\n}\nvar maxSpread = 5;\nfunction calcRealisticShadowSpread(diffusion) {\n  return mix(-maxSpread, 0, diffusion);\n}\nfunction localShadowFrame(shadow, frame2, isSVG = false) {\n  if (!isSVG && asRecord(shadow)[\"inset\"]) return null;\n  let growth = shadow.blur;\n  let minX;\n  let maxX;\n  let minY;\n  let maxY;\n  if (isSVG) {\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 = \"focus\" in shadow && \"diffusion\" in shadow ? calcMaxRealisticShadowBlur(distance(shadow.x, shadow.y), shadow.focus) + calcRealisticShadowSpread(shadow.diffusion) : 0;\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    if (\"spread\" in shadow) {\n      growth += shadow.spread;\n    }\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) 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) 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 = /* @__PURE__ */ (() => Animatable.getNumber)();\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 === RenderTarget.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\nimport { jsx as jsx27, jsxs as jsxs8 } from \"react/jsx-runtime\";\nfunction cssBackgroundSize(size) {\n  switch (size) {\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    asRecord(style)[key7] = toPixelString(value);\n  }\n}\nvar DeprecatedFrame = /* @__PURE__ */ (() => {\n  const _DeprecatedFrameInner = class _DeprecatedFrameInner extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"element\", null);\n      __publicField(this, \"imageDidChange\", false);\n      __publicField(this, \"state\", {\n        size: null\n      });\n      __publicField(this, \"updateStyle\", () => {\n        if (!this.element) {\n          return;\n        }\n        Object.assign(this.element.style, this.getStyle());\n      });\n      __publicField(this, \"setElement\", (element) => {\n        this.element = element;\n        this.setLayerElement(element);\n      });\n      // XXX internal state\n      __publicField(this, \"propsObserver\");\n      __publicField(this, \"propsObserverCancel\");\n      __publicField(this, \"sizeObserver\");\n      __publicField(this, \"sizeObserverCancel\");\n      __publicField(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      __publicField(this, \"onSizeChange\", () => {\n        this.updateStyle();\n      });\n    }\n    static rect(props) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      const parentSizeInfo = props.parentSize ? {\n        sizing: props.parentSize,\n        positioning: props.parentSize,\n        viewport: null\n      } : 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 size = _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\n        };\n      }\n      if (prevState.size) {\n        if (target === RenderTarget.preview) {\n          return null;\n        }\n        if (prevState.size.width === size.width && prevState.size.height === size.height) {\n          return null;\n        }\n      }\n      return {\n        size\n      };\n    }\n    static updatedSize(props, state) {\n      const rect = _DeprecatedFrameInner.rect(props);\n      let size = state.size;\n      const newSize = { width: rect.width, height: rect.height };\n      const { target } = RenderEnvironment;\n      if (!size) {\n        if (target === RenderTarget.preview) {\n          size = ObservableObject(newSize, true);\n        } else {\n          size = newSize;\n        }\n      } else {\n        if (isAnimatable(size.width) && isAnimatable(size.height)) {\n          size.width.set(newSize.width);\n          size.height.set(newSize.height);\n        } else {\n          size = newSize;\n        }\n      }\n      return size;\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        // TODO: this should be \"none\" for non-event consuming instances, for performance.\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 === RenderTarget.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 === RenderTarget.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      countNodeRender();\n      const { visible, id, className: className2 } = 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__ */ jsxs8(\"div\", { id, style, ref: this.setElement, className: className2, children: [\n        /* @__PURE__ */ jsx27(ProvideParentSize, { parentSize, children: this.layoutChildren() }),\n        /* @__PURE__ */ jsx27(Border, { ...this.props })\n      ] });\n    }\n    layoutChildren() {\n      const _forwardedOverrides = this.props._forwardedOverrides;\n      let children = React33.Children.map(this.props.children, (child) => {\n        if (isConstraintSupportingChild(child)) {\n          return React33.cloneElement(child, {\n            parentSize: this.state.size,\n            _forwardedOverrides\n            // biome-ignore lint/suspicious/noExplicitAny: deprecated code\n          });\n        } else if (_forwardedOverrides && child) {\n          return React33.cloneElement(child, { _forwardedOverrides });\n        } else {\n          return child;\n        }\n      });\n      if (children && children.length === 1 && typeof children[0] === \"string\") {\n        children = [/* @__PURE__ */ jsx27(Center, { children }, \"0\")];\n      }\n      return children;\n    }\n  };\n  __publicField(_DeprecatedFrameInner, \"supportsConstraints\", true);\n  __publicField(_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  __publicField(_DeprecatedFrameInner, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._DeprecatedFrameInner.defaultFrameSpecificProps\n  });\n  let DeprecatedFrameInner = _DeprecatedFrameInner;\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__ */ jsx27(\"div\", { style, children: 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  \"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])) return true;\n  }\n  for (field of frameWithMotionPropsFields) {\n    if (props.hasOwnProperty(field)) return false;\n  }\n  for (field of deprecatedFramePropsFields) {\n    if (props.hasOwnProperty(field)) return true;\n  }\n  return false;\n}\n\n// ../../library/src/render/presentation/Frame/index.tsx\nimport { jsx as jsx28 } from \"react/jsx-runtime\";\nvar DeprecatedFrameWithEvents = /* @__PURE__ */ WithEvents(DeprecatedFrame);\nvar Frame = /* @__PURE__ */ (() => {\n  const FrameInner = forwardRef3(function FrameInner2(props, ref) {\n    const parentSize = useParentSize();\n    if (isDeprecatedFrameProps(props)) {\n      const currentParentSize = props.parentSize || deprecatedParentSize(parentSize);\n      return /* @__PURE__ */ jsx28(DeprecatedFrameWithEvents, { ...props, parentSize: currentParentSize });\n    }\n    return /* @__PURE__ */ jsx28(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/Pagination/InfiniteScroll.tsx\nimport React34 from \"react\";\nimport { jsx as jsx29 } from \"react/jsx-runtime\";\nfunction useInfiniteScroll({\n  ref: elementRef,\n  loadMore,\n  rootMargin = \"0px\",\n  threshold,\n  paginationInfo\n}) {\n  const callback = React34.useCallback(\n    (entries) => {\n      for (let i = 0; i < entries.length; ++i) {\n        const entry = entries[i];\n        if (entry.isIntersecting) {\n          loadMore();\n          return;\n        }\n      }\n    },\n    [loadMore]\n  );\n  React34.useEffect(() => {\n    if (!elementRef.current) return;\n    const observer = new IntersectionObserver(callback, {\n      rootMargin,\n      threshold\n    });\n    observer.observe(elementRef.current);\n    return () => {\n      observer.disconnect();\n    };\n  }, [elementRef, callback, rootMargin, threshold, paginationInfo.currentPage]);\n}\nfunction withInfiniteScroll(Component17) {\n  return React34.forwardRef(\n    ({ __paginationInfo, __loadMore, ...props }, ref) => {\n      const backupRef = React34.useRef(null);\n      const infiniteScrollRef = ref ?? backupRef;\n      useInfiniteScroll({\n        rootMargin: \"500px\",\n        loadMore: __loadMore,\n        ref: infiniteScrollRef,\n        paginationInfo: __paginationInfo\n      });\n      return /* @__PURE__ */ jsx29(Component17, { ...props, ref: infiniteScrollRef });\n    }\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nimport React36, { startTransition } from \"react\";\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nimport { useCallback as useCallback6, useRef as useRef11 } 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 = useRef11(false);\n  const getPointData = useCallback6(() => {\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 clampX2 = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.left, constraints.current.right);\n    }, clampY2 = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.top, constraints.current.bottom);\n    }, updateX2 = function(delta) {\n      offsetX.stop();\n      offsetX.set(clampX2(offsetX.get() - delta));\n    }, updateY2 = function(delta) {\n      offsetY.stop();\n      offsetY.set(clampY2(offsetY.get() - delta));\n    };\n    var clampX = clampX2, clampY = clampY2, updateX = updateX2, updateY = updateY2;\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          updateX2(e.deltaX);\n          break;\n        case \"vertical\":\n          updateY2(e.deltaY);\n          break;\n        default:\n          updateX2(e.deltaX);\n          updateY2(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  if (top === right && right === bottom && bottom === left) {\n    return `${top}px`;\n  }\n  return `${top}px ${right}px ${bottom}px ${left}px`;\n}\n\n// ../../library/src/components/Stack/Stack.tsx\nimport React35 from \"react\";\nimport { jsx as jsx30 } from \"react/jsx-runtime\";\nvar Stack = /* @__PURE__ */ (() => {\n  const StackInner = React35.forwardRef(\n    function StackInner2(stackProps, forwardedRef) {\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: className2,\n        willChangeTransform,\n        __fromCodeComponentNode,\n        parentSize,\n        __contentWrapperStyle,\n        ...containerProps\n      } = stackProps;\n      const useFlexboxGap = externalUseFlexboxGap || wrap2;\n      const stackRef = React35.useRef(null);\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 = containerProps.widthType ?? (containerProps.width === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */);\n      const heightType = containerProps.heightType ?? (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 ?? 1 /* Disabled */);\n      const attributes = {\n        \"data-framer-component-type\": \"Stack\"\n      };\n      const fromCanvasComponent = containerProps.__fromCanvasComponent;\n      if (fromCanvasComponent) 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          asRecord(contentWrapperStyle)[\"--stack-native-column-gap\"] = `${gap}px`;\n        }\n        if (gapSupportedInMainAxis || direction !== \"vertical\") {\n          asRecord(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) contentWrapperStyle.width = styleProp == null ? void 0 : styleProp.width;\n        if (styleProp == null ? void 0 : styleProp.height) contentWrapperStyle.height = styleProp == null ? void 0 : styleProp.height;\n      }\n      return /* @__PURE__ */ jsx30(\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: className2,\n          layoutScroll: true,\n          children: /* @__PURE__ */ jsx30(\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              children: content\n            }\n          )\n        }\n      );\n    }\n  );\n  StackInner.defaultProps = {\n    distribution: \"start\"\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 React35.Children.map(children, (child) => {\n    if (!isReactChild(child) || !isReactElement(child)) return;\n    const isVertical = direction === \"vertical\";\n    const style = {};\n    let hasFraction = false;\n    const { style: propsStyle, size } = child.props;\n    let { width, height } = child.props;\n    if (size !== void 0) {\n      if (width === void 0) width = size;\n      if (height === void 0) height = size;\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) return child;\n    const nextStyle = { ...propsStyle, ...style };\n    return React35.cloneElement(child, {\n      width: newWidth,\n      height: newHeight,\n      style: nextStyle\n    });\n  });\n}\nfunction isGapSupportedInMainAxis(justifyContent) {\n  if (!justifyContent) 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    // We need the wrapper to have `display: contents` to prevent the child\n    // margins from collapsing when using the fallback gap solution.\n    // https://codesandbox.io/s/dreamy-haslett-01ie5?file=/src/styles.css\n    display: \"contents\"\n  };\n  const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n  if (gapEnabled) {\n    const isVertical = isVerticalDirection(direction);\n    asRecord(gapStyle)[\"--stack-gap-x\"] = `${isVertical ? 0 : gap}px`;\n    asRecord(gapStyle)[\"--stack-gap-y\"] = `${isVertical ? gap : 0}px`;\n  }\n  return /* @__PURE__ */ jsx30(\n    \"div\",\n    {\n      \"data-framer-legacy-stack-gap-enabled\": gapEnabled,\n      \"data-framer-stack-flexbox-gap\": useFlexboxGap,\n      style: gapStyle,\n      children\n    }\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\nimport { jsx as jsx31 } from \"react/jsx-runtime\";\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__ */ jsx31(\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        pointerEvents: void 0,\n        paddingRight: hasHorizontalGap ? gap : 0,\n        paddingBottom: hasVerticalGap ? gap : 0\n      },\n      children: /* @__PURE__ */ jsx31(\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          style: {\n            ...effect,\n            pointerEvents: void 0,\n            display: \"flex\",\n            flexDirection: isHorizontalDirection ? \"row\" : \"column\",\n            alignItems: alignment && toJustifyOrAlignment(alignment)\n          },\n          children\n        },\n        effect ? Object.keys(effect).join(\"\") : \"\"\n      )\n    }\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nimport { jsx as jsx32, jsxs as jsxs9 } from \"react/jsx-runtime\";\nvar Page = /* @__PURE__ */ React36.forwardRef(function Page2(props, forwardedRef) {\n  var _a;\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: _padding = 0,\n    momentum = false,\n    dragEnabled = true,\n    defaultEffect: _defaultEffect = \"none\",\n    background = \"transparent\",\n    overflow = \"hidden\",\n    __fromCodeComponentNode,\n    effect: _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: _onDirectionLock,\n    onUpdate: _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 = React36.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 } = React36.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    warnOnce2(`The 'gap' property of Page component can not be negative, but is ${gapValue}.`);\n    gap = 0;\n  }\n  React36.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  const pageCount = React36.Children.count(children);\n  const maxOffsetRef = React36.useRef(0);\n  const constraints = React36.useRef({ top: 0, left: 0, right: 0, bottom: 0 });\n  const fallbackContainerRef = React36.useRef(null);\n  const containerRef = forwardedRef || fallbackContainerRef;\n  const scrollableRef = React36.useRef(null);\n  const pageEffectValuesRef = React36.useRef([]);\n  const pageRectsRef = React36.useRef([]);\n  const internalX = useMotionValue(isMotionValue2(contentOffsetX) ? 0 : contentOffsetX ?? 0);\n  const internalY = useMotionValue(isMotionValue2(contentOffsetY) ? 0 : contentOffsetY ?? 0);\n  const contentOffsetRef = React36.useRef({\n    x: isMotionValue2(contentOffsetX) ? contentOffsetX : internalX,\n    y: isMotionValue2(contentOffsetY) ? contentOffsetY : internalY\n  });\n  const currentContentPageRef = React36.useRef(currentPage);\n  const propsBoundedCurrentPageRef = React36.useRef(currentPage);\n  const latestPropsRef = React36.useRef(props);\n  latestPropsRef.current = props;\n  const lastDirectionRef = React36.useRef(props.direction);\n  const snapToPage = useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal);\n  const [_, setForceUpdateCount] = React36.useState(0);\n  const containerSizeRef = React36.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 = React36.useCallback(() => {\n    if (!hasFixedSize) startTransition(() => setForceUpdateCount((v) => v + 1));\n  }, [hasFixedSize]);\n  React36.useEffect(() => {\n    if (RenderTarget.current() !== RenderTarget.preview) 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) 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) 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() === RenderTarget.canvas) setForceUpdateCount((v) => v + 1);\n    }\n  };\n  const measureContainerSize = () => {\n    const element = containerRef.current;\n    if (!element) 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() !== RenderTarget.canvas && !mount;\n    snapToPage(newBoundedCurrentPage, offset, { animated });\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (hasMountedRef.current) return;\n    requestAnimationFrame(() => {\n      currentContentPageRef.current = currentPage;\n      const contentOffset = contentOffsetRef.current;\n      contentOffset.x.on(\"change\", applyEffects);\n      contentOffset.y.on(\"change\", applyEffects);\n      applyEffects();\n      hasMountedRef.current = true;\n      const containerSize = measureContainerSize() ?? containerSizeRef.current;\n      updateMaxOffsetFromPageContents(containerSize);\n      updateAndSnapToPage(currentContentPageRef.current, true);\n    });\n  }, []);\n  React36.useEffect(() => {\n    if (currentPage !== currentContentPageRef.current) updateAndSnapToPage(currentPage);\n  }, [currentPage]);\n  const handleMeasureLifecycle = () => {\n    const newContainerSize = measureContainerSize();\n    updateMaxOffsetFromPageContents(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() !== RenderTarget.canvas) return;\n    handleMeasureLifecycle();\n  });\n  const onDragStartHandler = (event, info) => {\n    if (onScrollStart) onScrollStart(info);\n    if (onDragStart) 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) onScroll(info);\n    if (onDrag) onDrag(event, info);\n    prev.x = info.point.x;\n    prev.y = info.point.y;\n  };\n  const onDragTransitionEnd = () => {\n    if (props.onDragTransitionEnd) 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      animateValue({\n        type: \"inertia\",\n        keyframes: [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) onDragEnd(event, info);\n    const handler = contentOffsetRef.current[axis];\n    handler.set(startPosition);\n    animate(handler, offset, {\n      type: \"spring\",\n      velocity,\n      stiffness: 500,\n      damping: 50,\n      onComplete: onDragTransitionEnd\n    });\n  };\n  pageEffectValuesRef.current = [];\n  const childComponents = React36.Children.map(children, (child, index) => {\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      style: void 0\n    };\n    if (containerProps.__fromCanvasComponent) {\n      update.style = child.props.style ?? {};\n      if (contentWidth === \"stretch\") update.style.width = \"100%\";\n      if (contentHeight === \"stretch\") update.style.height = \"100%\";\n    } else {\n      if (contentWidth === \"stretch\") update.width = \"100%\";\n      if (contentHeight === \"stretch\") 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__ */ jsx32(\n      PageContainer,\n      {\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        children: React36.cloneElement(child, update)\n      },\n      index\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__ */ jsx32(\n    FrameWithMotion,\n    {\n      \"data-framer-component-type\": \"PageWrapper\",\n      preserve3d: false,\n      perspective: hasEffect(props) ? 1200 : void 0,\n      ...containerProps,\n      style: { pointerEvents: void 0, ...containerProps.style, overflow },\n      layoutId,\n      ref: containerRef,\n      onLayoutMeasure: handleMeasureLifecycle,\n      children: /* @__PURE__ */ jsxs9(\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: (_a = props.style) == null ? void 0 : _a.pointerEvents\n          },\n          children: [\n            /* @__PURE__ */ jsx32(\n              EmptyState,\n              {\n                title: \"Page\",\n                description: \"Click and drag the connector to any frame on the canvas \\u2192\",\n                size: containerSizeRef.current,\n                insideUserCodeComponent: !__fromCodeComponentNode,\n                children\n              }\n            ),\n            childComponents\n          ]\n        }\n      )\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 } = 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 } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const absoluteOffset = Math.abs(normalizedOffset);\n  return {\n    x: normalizedOffset < 0 && isHorizontal ? calcPileAxisOffset(absoluteOffset, size.width) : 0,\n    y: normalizedOffset < 0 && !isHorizontal ? calcPileAxisOffset(absoluteOffset, size.height) : 0,\n    scale: normalizedOffset < 0 ? 1 - absoluteOffset / 50 : 1\n  };\n}\nfunction wheelEffect(info) {\n  const { normalizedOffset, direction, size } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const originZ = (isHorizontal ? size.width : size.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 * -size.height;\n  const x = isHorizontal ? normalizedOffset * -size.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]) 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]) return pageRects.indexOf(closestToStart[0]);\n    const pageA = closestToStart[0];\n    const pageB = closestToStart[1];\n    if (!pageA || !pageB) return -1;\n    const closestPages = [pageA, pageB].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0]) 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) 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)) 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 (isTest()) {\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 size = queriedSize || containerSize;\n    const x = maxX;\n    const y = maxY;\n    if (isHorizontal) {\n      maxX += size.width + gap;\n    } else {\n      maxY += size.height + gap;\n    }\n    return { ...size, x, y };\n  });\n}\nfunction getMaxOffset(containerSize, pageContentRects, direction, paddingProps) {\n  const lastPageRect = pageContentRects[pageContentRects.length - 1];\n  if (!lastPageRect) 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) 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    const value = contentOffsetRef.current[axis];\n    value.set(contentOffset.get());\n    animate(value, offset, {\n      type: \"spring\",\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 = 10\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) 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 size = { width: pageRect.width, height: pageRect.height };\n  return effectFunction({\n    offset,\n    normalizedOffset,\n    size,\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) return;\n  if (onChangePage) 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  Page.defaultProps = {\n    gap: 10,\n    directionLock: false\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 React37, { 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    __publicField(this, \"_state\", 2 /* Possible */);\n    __publicField(this, \"handler\", null);\n    __publicField(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    __publicField(this, \"startEvent\", null);\n    __publicField(this, \"eventType\", \"mousewheel\");\n    __publicField(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) 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    __publicField(this, \"startEvent\", null);\n    __publicField(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    __publicField(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    __publicField(this, \"events\", []);\n    __publicField(this, \"recognizers\", []);\n    __publicField(this, \"mouseWheelRecognizer\", new MouseWheelGestureRecognizer());\n    __publicField(this, \"dispatcher\");\n    /**\n     * @internal\n     */\n    __publicField(this, \"originElement\");\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  // Event handling\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  // Gesture Handler\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  // Calculatinos\n  /**\n   * Average velocity over last n seconds in pixels per second.\n   * @param n - number of events to use for calculation\n   */\n  velocity(t = Loop.TimeStep * 2) {\n    if (!this.isStarted || this.events.length < 2) {\n      return { x: 0, y: 0 };\n    }\n    const events = this.events;\n    let i = events.length - 1;\n    let event = null;\n    while (i >= 0) {\n      event = events[i] ?? 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 = events[events.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    /**\n     * @internal\n     */\n    __publicField(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    /**\n     * @internal\n     */\n    __publicField(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    /**\n     * @internal\n     */\n    __publicField(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    /**\n     * @internal\n     */\n    __publicField(this, \"domMouseWheel\", (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.mouseWheel(event);\n    });\n  }\n  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.addEventListener(\"wheel\", this.domMouseWheel);\n  }\n  /**\n   * @internal\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    /**\n     * @internal\n     */\n    __publicField(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    /**\n     * @internal\n     */\n    __publicField(this, \"domTouchMove\", (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    });\n    /**\n     * @internal\n     */\n    __publicField(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  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"touchstart\", this.domTouchStart);\n  }\n  /**\n   * @internal\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/Screen.tsx\nimport { jsx as jsx33 } from \"react/jsx-runtime\";\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport React41 from \"react\";\n\n// ../../library/src/components/Scroll/EmulatedScroll.tsx\nimport React38, { useCallback as useCallback7, useInsertionEffect as useInsertionEffect2, useMemo as useMemo5, useRef as useRef12 } from \"react\";\nimport { jsx as jsx34, jsxs as jsxs10 } from \"react/jsx-runtime\";\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 useMemo5(() => {\n    return React38.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 React38.cloneElement(child, update);\n    });\n  }, [dragDirection, children, fromCanvasComponent]);\n};\nvar numberFromOptionalMotionValue = (value) => {\n  return typeof value === \"number\" ? value : value.get();\n};\nvar EmulatedScroll = /* @__PURE__ */ React38.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: _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 = useRef12(null);\n    const dragControls = useDragControls();\n    const isInTarget = useIsInCurrentNavigationTarget();\n    const wasInTargetRef = useRef12(true);\n    useInsertionEffect2(() => {\n      injectComponentCSSRules();\n    }, []);\n    function setMeasureDragConstraints(constraints) {\n      constraints = offsetToZero(constraints);\n      if (contentWidth !== void 0) constraints.left = -contentWidth;\n      if (contentHeight !== void 0) constraints.top = -contentHeight;\n      return measuredConstraints.current = constraints;\n    }\n    const { initial, prev } = useRef12({\n      initial: { x: 0, y: 0 },\n      prev: { x: 0, y: 0 }\n    }).current;\n    const isPreview = RenderTarget.current() === RenderTarget.preview;\n    const containerFallbackRef = useRef12(null);\n    const containerRef = forwardedRef || containerFallbackRef;\n    const contentRef = useRef12(null);\n    const lastOffsetRef = useRef12(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) 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) 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() !== RenderTarget.canvas) return;\n      measureAndUpdateScrollOffset();\n    });\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() === RenderTarget.canvas) return;\n      measureAndUpdateScrollOffset();\n    }, []);\n    React38.useEffect(() => {\n      if (shouldResetScroll(isInTarget)) measureAndUpdateScrollOffset();\n      if (isInTarget === false) wasInTargetRef.current = false;\n    }, [isInTarget]);\n    const getLatestPoint = () => ({ x: x.get(), y: y.get() });\n    const resetInitialPoint = useCallback7(() => {\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 = useCallback7(() => {\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 = useCallback7(() => {\n      onUpdate && onUpdate({ x: x.get(), y: y.get() });\n      onScroll && onScroll(getPointData());\n    }, [onScroll, onUpdate, getPointData, x, y]);\n    const scheduleUpdateScrollListeners = useCallback7(() => {\n      frame.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)) return;\n        element.scrollLeft = -xValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragXValue = 0;\n          if (xValue > constraints.right) overdragXValue = xValue;\n          if (xValue < constraints.left) overdragXValue = xValue - constraints.left;\n          overdragX.set(overdragXValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentX = x.get();\n      if (currentX !== 0) setScrollX(currentX);\n      return x.on(\"change\", setScrollX);\n    }, [x, overdragX, scheduleUpdateScrollListeners, overdragEnabled]);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollY = (yValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement)) return;\n        element.scrollTop = -yValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragYValue = 0;\n          if (yValue > constraints.bottom) overdragYValue = yValue;\n          if (yValue < constraints.top) overdragYValue = yValue - constraints.top;\n          overdragY.set(overdragYValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentY = y.get();\n      if (currentY !== 0) setScrollY(currentY);\n      return y.on(\"change\", setScrollY);\n    }, [y, overdragY, scheduleUpdateScrollListeners, overdragEnabled]);\n    const nativeOnScroll = React38.useCallback(() => {\n      const element = containerRef.current;\n      if (!(element instanceof HTMLDivElement)) return;\n      const xDelta = Math.abs(x.get() + element.scrollLeft);\n      const yDelta = Math.abs(y.get() + element.scrollTop);\n      if (xDelta > 1) x.set(-element.scrollLeft);\n      if (yDelta > 1) y.set(-element.scrollTop);\n    }, [x, y]);\n    const isEmpty2 = React38.Children.count(children) === 0;\n    const width = direction !== \"vertical\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const height = direction !== \"horizontal\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const size = !containerProps.__fromCanvasComponent ? {\n      width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n      height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n    } : {};\n    return /* @__PURE__ */ jsx34(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"Scroll\",\n        background: \"none\",\n        ...containerProps,\n        ...size,\n        style: {\n          ...style,\n          willChange: isPreview ? \"transform\" : void 0,\n          // allows the scroll content to be hardware accelerated\n          overflow: \"hidden\"\n        },\n        onScroll: nativeOnScroll,\n        preserve3d: containerProps.preserve3d,\n        ref: containerRef,\n        layoutId,\n        layoutScroll: true,\n        onBeforeLayoutMeasure: measureAndUpdateScrollOffset,\n        children: /* @__PURE__ */ jsxs10(\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              // makes the scroll content hardware accelerated\n              backgroundColor: \"transparent\",\n              overflow: \"visible\",\n              minWidth: \"100%\",\n              minHeight: \"100%\"\n            },\n            preserve3d: containerProps.preserve3d,\n            children: [\n              /* @__PURE__ */ jsx34(\n                EmptyState,\n                {\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                  children\n                }\n              ),\n              useUpdateChildSize({\n                dragDirection: direction,\n                children,\n                fromCanvasComponent: containerProps.__fromCanvasComponent\n              })\n            ]\n          }\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 React40, { useInsertionEffect as useInsertionEffect3 } 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 React39, { useEffect as useEffect12 } 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      animateValue({\n        keyframes: [from.x],\n        velocity: -velocity.x,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.x = value;\n          frame.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      animateValue({\n        keyframes: [from.y],\n        velocity: -velocity.y,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.y = value;\n          frame.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)) 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)) 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\") return true;\n  if (tag === \"text\") return true;\n  if (tag === \"textarea\") return true;\n  return false;\n}\nfunction canStartScrollFromElement(element, direction) {\n  if (!(element instanceof Element)) return false;\n  if (isInteractiveElement(element)) 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 setPointerEvents(element, value) {\n  if (element == null ? void 0 : element.style) {\n    element.style[\"pointerEvents\"] = value;\n  }\n}\nfunction getPointerEvents(element) {\n  var _a;\n  return (_a = element == null ? void 0 : element.style) == null ? void 0 : _a[\"pointerEvents\"];\n}\nvar emptyObject = /* @__PURE__ */ Object.freeze({});\nfunction useEmulateTouchScroll(ref, direction, enabled) {\n  if (isTouchDevice) return emptyObject;\n  if (RenderTarget.current() !== RenderTarget.preview) return emptyObject;\n  const scrollAnimationControlsRef = React39.useRef(null);\n  useEffect12(() => {\n    if (!ref.current) 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) return;\n      const point = getEventPoint(event);\n      if (!downPoint) 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]) => setPointerEvents(target, \"none\"));\n        }\n      }\n      if (isSafariBrowser) event.preventDefault();\n      if (phase !== 2 /* Drag */) return;\n      (_a = safeWindow.getSelection()) == null ? void 0 : _a.empty();\n      mouseMoveEvents = getRecentEvents([...mouseMoveEvents, event]);\n      if (scrollOffsetStart) {\n        if (direction !== \"vertical\") element.scrollLeft = scrollOffsetStart.x - offset.x;\n        if (direction !== \"horizontal\") 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]) => setPointerEvents(target, 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) element.scrollLeft = position.x;\n            if (shouldAnimateY) 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) return;\n      if (event.metaKey) 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, getPointerEvents(targetEl)]);\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 React39.useMemo(() => {\n    return {\n      cancelEmulatedTouchScrollAnimation: () => {\n        var _a;\n        (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n      }\n    };\n  }, []);\n}\nvar timeDelta = /* @__PURE__ */ (() => 4 / 60 * 1e3)();\nfunction getRecentEvents(events) {\n  const currentTime = new CustomEvent(\"getTime\").timeStamp;\n  const maxAge = currentTime - timeDelta;\n  return events.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) 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) 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    if (isMotionValue2(offset)) {\n      const updateScrollLeft = () => {\n        cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n        const element = ref.current;\n        if (element) element[side] = Math.abs(offset.get());\n      };\n      updateScrollLeft();\n      return offset.on(\"change\", updateScrollLeft);\n    } else if (isFiniteNumber(offset)) {\n      const element = ref.current;\n      if (!element) return;\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element[side] = Math.abs(offset);\n    }\n  }, [offset]);\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nimport { jsx as jsx35, jsxs as jsxs11 } from \"react/jsx-runtime\";\nvar NativeScroll = /* @__PURE__ */ React40.forwardRef(function NativeScroll2(props, forwardedRef) {\n  const {\n    direction = \"vertical\",\n    scrollBarVisible = false,\n    dragEnabled = true,\n    contentOffsetX = 0,\n    contentOffsetY = 0,\n    contentWidth: _contentWidth,\n    contentHeight: _contentHeight,\n    children,\n    resetOffset,\n    onScroll,\n    className: className2,\n    // Not (yet) supported\n    directionLock: _directionLock = false,\n    wheelEnabled: _wheelEnabled = true,\n    scrollAnimate: _scrollAnimate,\n    dragTransition: _dragTransition,\n    dragMomentum: _dragMomentum,\n    dragElastic: _dragElastic,\n    overdragEnabled: _overdragEnabled = true,\n    onScrollStart: _onScrollStart,\n    onScrollEnd: _onScrollEnd,\n    onDragStart: _onDragStart,\n    onDrag: _onDrag,\n    onDragEnd: _onDragEnd,\n    onUpdate: _onUpdate,\n    onDirectionLock: _onDirectionLock,\n    layoutId: specificLayoutId,\n    native: _native,\n    // Rest\n    ...containerProps\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n  const fallbackRef = React40.useRef(null);\n  const ref = forwardedRef || fallbackRef;\n  const { cancelEmulatedTouchScrollAnimation } = useEmulateTouchScroll(ref, direction, dragEnabled);\n  useInsertionEffect3(() => {\n    injectComponentCSSRules();\n  }, []);\n  const isInTarget = useIsInCurrentNavigationTarget();\n  const previousIsInTargetRef = React40.useRef(isInTarget);\n  const updateScrollOffsetHandler = () => {\n    if (!resetOffset) return;\n    const previousIsTarget = previousIsInTargetRef.current;\n    previousIsInTargetRef.current = isInTarget;\n    const shouldResetOffset = isInTarget && !previousIsTarget;\n    if (!shouldResetOffset) return;\n    const element = ref.current;\n    if (!element) 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 size = !containerProps.__fromCanvasComponent ? {\n    width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n    height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n  } : {};\n  return /* @__PURE__ */ jsxs11(\n    FrameWithMotion,\n    {\n      ref,\n      \"data-framer-component-type\": \"NativeScroll\",\n      background: \"none\",\n      ...containerProps,\n      ...size,\n      onScroll,\n      layoutId,\n      onBeforeLayoutMeasure: updateScrollOffsetHandler,\n      layoutScroll: true,\n      className: cx(className2, `direction-${direction}`, !scrollBarVisible && \"scrollbar-hidden\"),\n      children: [\n        /* @__PURE__ */ jsx35(\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});\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport { jsx as jsx36 } from \"react/jsx-runtime\";\nvar Scroll = /* @__PURE__ */ (() => {\n  const ScrollInner = React41.forwardRef(function ScrollInner2(props, forwardedRef) {\n    if (props.native) {\n      return /* @__PURE__ */ jsx36(NativeScroll, { ref: forwardedRef, ...props });\n    } else {\n      return /* @__PURE__ */ jsx36(EmulatedScroll, { ref: forwardedRef, ...props });\n    }\n  });\n  ScrollInner.defaultProps = {\n    directionLock: false\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 useContext10 } from \"react\";\nfunction useNavigation() {\n  return useContext10(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 createContext4, useContext as useContext11, useEffect as useEffect13, useMemo as useMemo6, useState as useState3 } 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) 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__ */ createContext4(defaultId);\nfunction createData(defaultState2, actions) {\n  const stores = /* @__PURE__ */ new Map();\n  const useData = (id, initialState2) => {\n    const contextId = useContext11(DataContext);\n    id = id || contextId;\n    const store = useMemo6(() => {\n      if (!stores.has(id)) {\n        stores.set(id, createStore(initialState2 || defaultState2, actions));\n      }\n      return stores.get(id);\n    }, [id]);\n    const [, notifyUpdates] = useState3(store.getVersion());\n    const storeValueAtHookCallTime = useMemo6(() => store.get(), [store]);\n    useEffect13(() => {\n      const unsubscribe = store.subscribe(notifyUpdates);\n      if (storeValueAtHookCallTime !== store.get()) {\n        notifyUpdates(store.getVersion());\n      }\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 React42, { Component as Component10 } from \"react\";\nimport { jsx as jsx37 } from \"react/jsx-runtime\";\nvar initialState = { update: 0 };\nvar DataObserverContext = /* @__PURE__ */ React42.createContext({ update: NaN });\nfunction useObserveData() {\n  const context = React42.useContext(DataObserverContext);\n  return !Number.isNaN(context.update);\n}\nvar DataObserver = class extends Component10 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"observers\", []);\n    __publicField(this, \"state\", initialState);\n    __publicField(this, \"taskAdded\", false);\n    __publicField(this, \"frameTask\", () => {\n      this.setState({ update: this.state.update + 1 });\n      this.taskAdded = false;\n    });\n    __publicField(this, \"observer\", () => {\n      if (this.taskAdded) 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__ */ jsx37(DataObserverContext.Provider, { value: { ...this.state }, children });\n  }\n};\n\n// ../../library/src/deprecated/WithOverride.tsx\nvar import_hoist_non_react_statics4 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport { useContext as useContext12 } 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\nimport { jsx as jsx38 } from \"react/jsx-runtime\";\nfunction WithOverride(Component17, override) {\n  const useOverride = typeof override === \"function\" ? (props) => override(convertColorProps(props)) : () => convertColorProps(override);\n  const ComponentWithOverride = function(props) {\n    useContext12(DataObserverContext);\n    const overrideProps = useOverride(props);\n    const { style, ...rest } = props;\n    return /* @__PURE__ */ jsx38(Component17, { ...rest, ...overrideProps, _initialStyle: style });\n  };\n  (0, import_hoist_non_react_statics4.default)(ComponentWithOverride, Component17);\n  ComponentWithOverride[\"displayName\"] = `WithOverride(${Component17.displayName || Component17.name})`;\n  return ComponentWithOverride;\n}\n\n// ../../library/src/modules/withFX.tsx\nimport React55 from \"react\";\n\n// ../../library/src/modules/hocOptions.ts\nvar prefix = \"__framer__\";\nvar prefixLength = /* @__PURE__ */ (() => 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/optimizeAppear.tsx\nimport React49 from \"react\";\n\n// ../../library/src/modules/GeneratedComponentContext.ts\nimport React43 from \"react\";\nvar GeneratedComponentContext = /* @__PURE__ */ React43.createContext(\n  void 0\n);\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport React48 from \"react\";\n\n// ../../library/src/components/utils/cloneChildrenWithProps.tsx\nimport * as React44 from \"react\";\nimport { Fragment as Fragment6, jsx as jsx39 } from \"react/jsx-runtime\";\nfunction cloneChildrenWithProps(children, props, asNode) {\n  const cloned = React44.Children.map(children, (child) => {\n    if (React44.isValidElement(child)) {\n      return React44.cloneElement(child, props);\n    }\n    return child;\n  });\n  if (asNode) return cloned;\n  return /* @__PURE__ */ jsx39(Fragment6, { children: cloned });\n}\n\n// ../../library/src/components/utils/useCloneChildrenWithPropsAndRef.tsx\nimport * as React45 from \"react\";\nimport { Fragment as Fragment7, jsx as jsx40 } from \"react/jsx-runtime\";\nfunction useCloneChildrenWithPropsAndRef(forwardedRef) {\n  const hook = useConstant(() => createHook(forwardedRef));\n  hook.useSetup(forwardedRef);\n  return hook.cloneAsElement;\n}\nfunction createHook(forwardedRef) {\n  const state = {\n    forwardedRef,\n    childRef: null,\n    ref: null\n  };\n  state.ref = createRefFunction(state);\n  const updateIfNeeded = (nextForwardedRef, ref) => {\n    if (!state.forwardedRef && state.forwardedRef === nextForwardedRef) {\n      state.ref = ref;\n      return;\n    }\n    let shouldUpdate = false;\n    if (state.childRef !== ref) {\n      state.childRef = ref;\n      shouldUpdate = true;\n    }\n    if (state.forwardedRef !== nextForwardedRef) {\n      state.forwardedRef = nextForwardedRef;\n      shouldUpdate = true;\n    }\n    if (!shouldUpdate) return;\n    state.ref = createRefFunction(state);\n  };\n  let preventNextCall = false;\n  function cloneChildrenWithPropsAndRef(children, props) {\n    if (preventNextCall) {\n      throw new ReferenceError(\n        \"useCloneChildrenWithPropsAndRef: You should not call cloneChildrenWithPropsAndRef more than once during the render cycle.\"\n      );\n    }\n    preventNextCall = true;\n    if (React45.Children.count(children) > 1 && forwardedRef) {\n      if (false) {\n        throw new ReferenceError(\n          \"useCloneChildrenWithPropsAndRef: You should not have more than one child when using a forwarded ref.\"\n        );\n      }\n      state.forwardedRef = void 0;\n      state.ref = state.childRef;\n    }\n    return React45.Children.map(children, (child) => {\n      if (React45.isValidElement(child)) {\n        const ownRef = \"ref\" in child ? child.ref : void 0;\n        updateIfNeeded(state.forwardedRef, ownRef);\n        const newProps = isFunction(props) ? props(child.props) : props;\n        return React45.cloneElement(child, state.ref !== ownRef ? { ...newProps, ref: state.ref } : newProps);\n      }\n      return child;\n    });\n  }\n  const cloneAsElement = function cloneAsElement2(children, props) {\n    return /* @__PURE__ */ jsx40(Fragment7, { children: cloneChildrenWithPropsAndRef(children, props) });\n  };\n  cloneAsElement.cloneAsArray = cloneChildrenWithPropsAndRef;\n  return {\n    // used during render phase to sync props with state\n    useSetup: (newRef) => {\n      preventNextCall = false;\n      updateIfNeeded(newRef, state.childRef);\n    },\n    /**\n     * Clones children and adds props and refs and returns them as a JSX.Element\n     * Making it easier to use as it wraps them in a Fragment.\n     * */\n    cloneAsElement\n  };\n}\nfunction createRefFunction(state) {\n  if (!state.forwardedRef) return state.childRef;\n  const { forwardedRef: prevForwardedRef, childRef: prevChildRef } = state;\n  return (value) => {\n    setRef(prevChildRef, value);\n    setRef(prevForwardedRef, value);\n  };\n}\n\n// ../../library/src/modules/withCSS.tsx\nimport React47, { useInsertionEffect as useInsertionEffect4 } from \"react\";\n\n// ../../library/src/render/StyleSheetContext.ts\nimport React46 from \"react\";\nvar StyleSheetContext = /* @__PURE__ */ React46.createContext(void 0);\n\n// ../../library/src/modules/withCSS.tsx\nimport { Fragment as Fragment8, jsx as jsx41, jsxs as jsxs12 } from \"react/jsx-runtime\";\nvar framerPostSSRCSSSelector = \"style[data-framer-css-ssr-minified]\";\nvar componentsWithServerRenderedStyles = /* @__PURE__ */ (() => {\n  var _a;\n  if (!isBrowser2()) return /* @__PURE__ */ new Set();\n  const componentsWithSSRStylesAttr = (_a = document.querySelector(framerPostSSRCSSSelector)) == null ? void 0 : _a.getAttribute(\"data-framer-components\");\n  if (!componentsWithSSRStylesAttr) return /* @__PURE__ */ new Set();\n  return new Set(componentsWithSSRStylesAttr.split(\" \"));\n})();\nvar framerCSSMarker = \"data-framer-css-ssr\";\nvar withCSS = (Component17, escapedCSS, componentSerializationId) => React47.forwardRef((props, ref) => {\n  const { sheet, cache: cache2 } = React47.useContext(StyleSheetContext) ?? {};\n  const id = componentSerializationId;\n  if (!isBrowser2()) {\n    if (isFunction(escapedCSS)) escapedCSS = escapedCSS(RenderTarget.current());\n    const concatenatedCSS = Array.isArray(escapedCSS) ? escapedCSS.join(\"\\n\") : escapedCSS;\n    return /* @__PURE__ */ jsxs12(Fragment8, { children: [\n      /* @__PURE__ */ jsx41(\n        \"style\",\n        {\n          ...{ [framerCSSMarker]: true },\n          \"data-framer-component\": id,\n          dangerouslySetInnerHTML: { __html: concatenatedCSS }\n        }\n      ),\n      /* @__PURE__ */ jsx41(Component17, { ...props, ref })\n    ] });\n  }\n  useInsertionEffect4(() => {\n    if (id && componentsWithServerRenderedStyles.has(id)) return;\n    const css2 = isFunction(escapedCSS) ? escapedCSS(RenderTarget.current()) : Array.isArray(escapedCSS) ? escapedCSS : escapedCSS.split(\"\\n\");\n    css2.forEach((rule) => rule && injectCSSRule(rule, sheet, cache2));\n  }, []);\n  return /* @__PURE__ */ jsx41(Component17, { ...props, ref });\n});\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport { jsx as jsx42 } from \"react/jsx-runtime\";\nvar SSRParentVariantsContext = /* @__PURE__ */ React48.createContext(void 0);\nvar SSRVariantClassName = \"ssr-variant\";\nfunction renderBranchedChildrenFromPropertyOverrides(overrides, children, props, variantClassNames, primaryVariantId, parentVariants, cloneChildren, activeVariantId) {\n  const childrenArray = React48.Children.toArray(children);\n  const child = childrenArray[0];\n  if (childrenArray.length !== 1 || !React48.isValidElement(child)) {\n    console.warn(\"PropertyOverrides: expected exactly one React element for a child\", children);\n    return cloneChildren(children, props);\n  }\n  const branches = [];\n  const nonOverriddenVariants = [];\n  for (const [variantId] of Object.entries(variantClassNames)) {\n    if (variantId === primaryVariantId) 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) branches.push({ variants: effectiveVariants, propOverrides });\n  }\n  if (branches.length === 0) return cloneChildren(child, props);\n  const remainingVariants = [primaryVariantId, ...nonOverriddenVariants];\n  const effectiveRemainingVariants = intersection(remainingVariants, parentVariants);\n  if (effectiveRemainingVariants.length) branches.unshift({ variants: effectiveRemainingVariants });\n  const renderedBranches = [];\n  for (const { variants, propOverrides } of branches) {\n    if (activeVariantId && !variants.includes(activeVariantId)) {\n      continue;\n    }\n    const key7 = variants.join(\"+\");\n    let element = (\n      // We could omit the SSRParentVariantsContext if variants is the same as parentVariants, but that'd require\n      // comparing arrays, so it might not really be an optimization. And since it's just a context, it doesn't\n      // affect the size of the generated HTML.\n      /* @__PURE__ */ jsx42(SSRParentVariantsContext.Provider, { value: { primaryVariantId, variants: new Set(variants) }, children: cloneChildren(child, propOverrides ? { ...props, ...propOverrides } : props) }, key7)\n    );\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__ */ jsx42(\"div\", { className: `${SSRVariantClassName} ${hiddenClassNames.join(\" \")}`, children: element }, key7);\n    } else {\n      assert(branches.length === 1, \"Cannot branch out when hiddenClassNames is empty\");\n    }\n    renderedBranches.push(element);\n  }\n  assert(\n    !activeVariantId || renderedBranches.length === 1,\n    \"Must render exactly one branch when activeVariantId is given\"\n  );\n  return renderedBranches;\n}\nvar SSRVariants = /* @__PURE__ */ React48.forwardRef(\n  function SSRVariants2({ id: _nodeId, children, ...props }, ref) {\n    const cloneWithRefs = useCloneChildrenWithPropsAndRef(ref);\n    if (isBrowser2()) {\n      return cloneWithRefs(children, props);\n    }\n    throw new Error(\"SSRVariants is no longer supported outside canvas and preview\");\n  }\n);\nfunction variantHashFromClassName(className2) {\n  return className2.split(\"-\")[2];\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) continue;\n    classNames.push(`hidden-${variantHashFromClassName(variantClassName)}`);\n  }\n  return classNames;\n}\nfunction intersection(variants, parentVariants) {\n  if (!parentVariants) return variants;\n  return variants.filter((variant) => parentVariants.has(variant));\n}\nfunction arePropOverridesEffectivelyDifferent(props, propOverrides) {\n  for (const key7 of Object.keys(propOverrides)) {\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) return props;\n  return { ...props, ...overrides[variant] };\n}\nvar noopSubscribe = () => () => {\n};\nvar returnTrue = () => true;\nvar returnFalse = () => false;\nvar PropertyOverridesWithoutCSS = /* @__PURE__ */ React48.forwardRef(\n  function PropertyOverrides(props, ref) {\n    const cloneWithRefs = useCloneChildrenWithPropsAndRef(ref);\n    const ancestorCtx = React48.useContext(SSRParentVariantsContext);\n    const isHydrationOrSSR = React48.useSyncExternalStore(noopSubscribe, returnFalse, returnTrue);\n    const action = useConstant(() => {\n      if (isHydrationOrSSR) {\n        if (isBrowser2()) {\n          return 1 /* RenderActiveBranch */;\n        } else {\n          return 2 /* RenderAllBranches */;\n        }\n      } else {\n        return 0 /* PassThrough */;\n      }\n    });\n    const generatedComponentContext = React48.useContext(GeneratedComponentContext);\n    return useMemoOne(() => {\n      const { breakpoint, overrides, children, ...restProps } = props;\n      if (!generatedComponentContext) {\n        console.warn(\"PropertyOverrides is missing GeneratedComponentContext\");\n        return cloneWithRefs(children, restProps);\n      }\n      const { primaryVariantId, variantClassNames } = generatedComponentContext;\n      const parentVariants = (ancestorCtx == null ? void 0 : ancestorCtx.primaryVariantId) === primaryVariantId ? ancestorCtx == null ? void 0 : ancestorCtx.variants : void 0;\n      switch (action) {\n        case 0 /* PassThrough */:\n          return cloneWithRefs(children, propsForBreakpoint(breakpoint, restProps, overrides));\n        case 1 /* RenderActiveBranch */:\n          return renderBranchedChildrenFromPropertyOverrides(\n            overrides,\n            children,\n            restProps,\n            variantClassNames,\n            primaryVariantId,\n            parentVariants,\n            cloneWithRefs,\n            breakpoint\n            // only render the single, active branch\n          );\n        case 2 /* RenderAllBranches */:\n          return renderBranchedChildrenFromPropertyOverrides(\n            overrides,\n            children,\n            restProps,\n            variantClassNames,\n            primaryVariantId,\n            parentVariants,\n            // On the server, we use plain cloneChildrenWithProps instead of useCloneChildrenWithPropsAndRef,\n            // because we can't clone one ref to multiple branched-out elements (useCloneChildrenWithPropsAndRef\n            // even guards against it), but luckily, refs mean nothing on the server anyway.\n            cloneChildrenWithProps,\n            void 0\n            // render all branches\n          );\n        default:\n          assertNever(action);\n      }\n    }, [generatedComponentContext, ancestorCtx, cloneWithRefs, props]);\n  }\n);\nvar PropertyOverrides2 = /* @__PURE__ */ (() => withCSS(PropertyOverridesWithoutCSS, `.${SSRVariantClassName} { display: contents }`, \"PropertyOverrides\"))();\n\n// ../../library/src/modules/optimizeAppear.tsx\nimport { jsx as jsx43 } from \"react/jsx-runtime\";\nvar defaultVariantKey = \"default\";\nvar defaultVariants = /* @__PURE__ */ new Set([defaultVariantKey]);\nvar _variantHashes;\nvar AnimationCollector = class {\n  constructor() {\n    __publicField(this, \"entries\", /* @__PURE__ */ new Map());\n    __privateAdd(this, _variantHashes, {});\n  }\n  /** @deprecated */\n  set(nodeId, prop, value, variantHash) {\n    switch (prop) {\n      case \"transformTemplate\": {\n        assert(typeof value === \"string\", `transformTemplate must be a string, received: ${value}`);\n        this.setHash(nodeId, variantHash, { transformTemplate: value, legacy: true });\n        break;\n      }\n      case \"initial\":\n      case \"animate\": {\n        assert(typeof value === \"object\", `${prop} must be a valid object, received: ${value}`);\n        this.setHash(nodeId, variantHash, { [prop]: value, legacy: true });\n        break;\n      }\n      default:\n        break;\n    }\n  }\n  setHash(id, variantHash = defaultVariantKey, value) {\n    const existing = this.entries.get(id) ?? {};\n    const existingValue = existing[variantHash] ?? {};\n    existing[variantHash] = value === null ? null : { ...existingValue, ...value };\n    this.entries.set(id, existing);\n  }\n  variantHash(variantId, info) {\n    if (variantId === (info == null ? void 0 : info.primaryVariantId)) return defaultVariantKey;\n    const existing = __privateGet(this, _variantHashes)[variantId];\n    if (existing) return existing;\n    const className2 = info == null ? void 0 : info.variantClassNames[variantId];\n    if (!className2) return defaultVariantKey;\n    return __privateGet(this, _variantHashes)[variantId] = variantHashFromClassName(className2);\n  }\n  setAll(id, variants = defaultVariants, props, info) {\n    var _a;\n    if (props === null) {\n      for (const variantId of variants) {\n        this.setHash(id, this.variantHash(variantId, info), null);\n      }\n      return;\n    }\n    const transformTemplate2 = isFunction(props.transformTemplate) ? (_a = props.transformTemplate) == null ? void 0 : _a.call(props, {}, framerAppearTransformTemplateToken) : void 0;\n    const initial = props.__framer__presenceInitial ?? props.initial;\n    const animate3 = props.__framer__presenceAnimate ?? props.animate;\n    const config = {\n      initial: isObject2(initial) ? initial : void 0,\n      animate: isObject2(animate3) ? animate3 : void 0,\n      transformTemplate: isString(transformTemplate2) ? transformTemplate2 : void 0\n    };\n    for (const variantId of variants) this.setHash(id, this.variantHash(variantId, info), config);\n  }\n  clear() {\n    this.entries.clear();\n  }\n  toObject() {\n    return Object.fromEntries(this.entries);\n  }\n};\n_variantHashes = new WeakMap();\nvar framerAppearEffects = /* @__PURE__ */ new AnimationCollector();\nfunction withOptimizedAppearEffect(Component17) {\n  return React49.forwardRef(({ optimized, ...props }, ref) => {\n    var _a;\n    const generatedComponentContext = React49.useContext(GeneratedComponentContext);\n    const variants = (_a = React49.useContext(SSRParentVariantsContext)) == null ? void 0 : _a.variants;\n    const id = props[framerAppearIdKey];\n    if (id && !isBrowser2()) {\n      framerAppearEffects.setAll(\n        id,\n        variants,\n        // A layer may have an optimization id, and an `animate` prop,\n        // but not require optimization. For example in the case of a\n        // layer where one variant has an appear effect, and another\n        // variant has a scroll appear effect, the scroll appear effect\n        // should not be optimized.\n        optimized ? props : null,\n        generatedComponentContext\n      );\n    }\n    const disabledProps = getDisabledFXPropsInStaticRenderer(props);\n    return /* @__PURE__ */ jsx43(Component17, { ref, ...props, ...disabledProps });\n  });\n}\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) 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\";\nvar getDisabledFXPropsInStaticRenderer = (props) => {\n  const isRenderingStaticContent = isStaticRenderer();\n  if (!isRenderingStaticContent) return void 0;\n  return {\n    animate: isVariantOrVariantList(props.animate) ? props.animate : void 0,\n    initial: isVariantOrVariantList(props.initial) ? props.initial : void 0,\n    exit: void 0\n  };\n};\nfunction isVariantOrVariantList(value) {\n  return isString(value) || Array.isArray(value);\n}\n\n// ../../library/src/modules/useFXValues.ts\nimport React50 from \"react\";\nvar effectValuesKeys = [\n  \"opacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"skewX\",\n  \"skewY\",\n  /** @deprecated */\n  \"transformPerspective\"\n];\nvar makeFXValues = (defaults) => {\n  return {\n    x: motionValue((defaults == null ? void 0 : defaults.x) ?? 0),\n    y: motionValue((defaults == null ? void 0 : defaults.y) ?? 0),\n    opacity: motionValue((defaults == null ? void 0 : defaults.opacity) ?? 1),\n    scale: motionValue((defaults == null ? void 0 : defaults.scale) ?? 1),\n    rotate: motionValue((defaults == null ? void 0 : defaults.rotate) ?? 0),\n    rotateX: motionValue((defaults == null ? void 0 : defaults.rotateX) ?? 0),\n    rotateY: motionValue((defaults == null ? void 0 : defaults.rotateY) ?? 0),\n    skewX: motionValue((defaults == null ? void 0 : defaults.skewX) ?? 0),\n    skewY: motionValue((defaults == null ? void 0 : defaults.skewY) ?? 0),\n    /** @deprecated */\n    transformPerspective: motionValue((defaults == null ? void 0 : defaults.transformPerspective) ?? 0)\n  };\n};\nvar defaultFXValues = {\n  x: 0,\n  y: 0,\n  scale: 1,\n  opacity: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  skewX: 0,\n  skewY: 0,\n  /** @deprecated */\n  transformPerspective: 0\n};\nfunction isFXValuesKey(key7) {\n  return key7 in defaultFXValues;\n}\nvar effectEnabledStyle = {\n  willChange: \"transform\"\n};\nObject.freeze(effectEnabledStyle);\nvar effectDisabledStyle = {};\nObject.freeze(effectDisabledStyle);\nfunction useFXValues(values, enabled) {\n  const effect = useConstant(() => ({ values: makeFXValues(enabled ? values : void 0) }));\n  React50.useEffect(() => {\n    if (enabled) return;\n    for (const key7 of effectValuesKeys) {\n      const value = defaultFXValues[key7];\n      if (isUndefined(value)) continue;\n      effect.values[key7].set(value);\n    }\n  }, [enabled]);\n  return effect;\n}\n\n// ../../library/src/modules/useLoopEffect.ts\nimport { startTransition as startTransition2, useCallback as useCallback8, useEffect as useEffect14, useMemo as useMemo7, useRef as useRef13, useState as useState4 } from \"react\";\nvar loopOptionsKeys = /* @__PURE__ */ new Set([\n  \"loopEffectEnabled\",\n  \"loopTransition\",\n  \"loop\",\n  \"loopRepeatType\",\n  \"loopRepeatDelay\",\n  \"loopPauseOffscreen\"\n]);\nvar useDelay = () => {\n  const timeoutRef = useRef13();\n  useEffect14(() => {\n    return () => {\n      clearTimeout(timeoutRef.current);\n    };\n  }, []);\n  return async (d) => new Promise((resolve) => {\n    timeoutRef.current = setTimeout(() => {\n      resolve(true);\n    }, d * 1e3);\n  });\n};\nfunction useLoop({\n  loopEffectEnabled,\n  loopRepeatDelay,\n  loopTransition,\n  loopRepeatType,\n  loop,\n  loopPauseOffscreen\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const values = useConstant(makeFXValues);\n  const mirrorStateRef = useRef13(false);\n  const delay2 = useDelay();\n  const animationPromiseRef = useRef13(null);\n  const animateValues = useCallback8(async () => {\n    if (!loop) return;\n    const transition = loopTransition || void 0;\n    const mirror = mirrorStateRef.current && loopRepeatType === \"mirror\";\n    const to = mirror ? defaultFXValues : loop;\n    const from = mirror ? loop : defaultFXValues;\n    mirrorStateRef.current = !mirrorStateRef.current;\n    animationPromiseRef.current = Promise.all(\n      effectValuesKeys.map((key7) => {\n        if (shouldReduceMotion && key7 !== \"opacity\") return;\n        values[key7].jump(from[key7] ?? defaultFXValues[key7]);\n        return new Promise((resolve) => {\n          const opts = {\n            ...transition,\n            onComplete: () => resolve()\n          };\n          const target = to[key7] ?? from[key7];\n          if (typeof target === \"number\") {\n            animate(values[key7], target, opts);\n          }\n        });\n      })\n    );\n    return animationPromiseRef.current;\n  }, [loop, loopRepeatType, loopTransition, shouldReduceMotion]);\n  const [isRunning, setIsRunning] = useState4(false);\n  const shouldRunRef = useRef13(false);\n  const animateLoop = useCallback8(async () => {\n    if (!loopEffectEnabled || !shouldRunRef.current) return;\n    await animateValues();\n    await delay2(loopRepeatDelay ?? 0);\n    void animateLoop();\n  }, [animateValues, delay2, loopEffectEnabled, loopRepeatDelay]);\n  const start = useCallback8(() => {\n    if (shouldRunRef.current) return;\n    shouldRunRef.current = true;\n    startTransition2(() => setIsRunning(true));\n    void animateLoop();\n  }, [animateLoop]);\n  const stop = useCallback8((overrideRunRef = true) => {\n    effectValuesKeys.forEach((key7) => {\n      values[key7].stop();\n    });\n    effectValuesKeys.forEach((key7) => {\n      values[key7].set(defaultFXValues[key7]);\n    });\n    mirrorStateRef.current = false;\n    if (overrideRunRef) {\n      shouldRunRef.current = false;\n      startTransition2(() => setIsRunning(false));\n    }\n  }, []);\n  const hasLoop = loopEffectEnabled && loop;\n  const startStopTabVisibilityListener = useCallback8(() => {\n    if (document.hidden) {\n      stop(false);\n    } else if (shouldRunRef.current) {\n      shouldRunRef.current = false;\n      start();\n    }\n  }, [start, stop]);\n  useEffect14(() => {\n    if (!hasLoop) return;\n    document.addEventListener(\"visibilitychange\", startStopTabVisibilityListener);\n    return () => {\n      document.removeEventListener(\"visibilitychange\", startStopTabVisibilityListener);\n    };\n  }, [hasLoop, startStopTabVisibilityListener]);\n  useEffect14(() => {\n    if (hasLoop && loopPauseOffscreen) return;\n    if (hasLoop) {\n      start();\n    } else {\n      stop();\n    }\n  }, [start, stop, loopPauseOffscreen, hasLoop]);\n  useEffect14(() => {\n    return () => stop();\n  }, [stop]);\n  const isIntersectingRef = useRef13(false);\n  const stopAfterAnimationEnds = useCallback8(async () => {\n    if (!animationPromiseRef.current) return;\n    await animationPromiseRef.current;\n    if (isIntersectingRef.current) return;\n    stop();\n  }, [stop]);\n  const startAndStopBasedOnIntersection = useCallback8(\n    (entry) => {\n      if (entry.isIntersecting) {\n        isIntersectingRef.current = true;\n        start();\n      } else {\n        isIntersectingRef.current = false;\n        void stopAfterAnimationEnds();\n      }\n    },\n    [start, stopAfterAnimationEnds]\n  );\n  useSharedIntersectionObserver(ref, startAndStopBasedOnIntersection, {\n    enabled: hasLoop && loopPauseOffscreen\n  });\n  const addWillChange = isRunning || !loopPauseOffscreen;\n  return useMemo7(() => {\n    return {\n      values,\n      style: hasLoop && addWillChange ? effectEnabledStyle : effectDisabledStyle\n    };\n  }, [hasLoop, addWillChange]);\n}\n\n// ../../library/src/modules/useParallax.ts\nimport React51 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 = 100, offset = 0, adjustPosition = false, parallaxTransformEnabled } = options;\n  const originalPosition = React51.useRef(null);\n  const shouldReduceMotion = useReducedMotionConfig();\n  const transform2 = React51.useCallback(\n    (yValue) => {\n      if (originalPosition.current === null) return 0;\n      if (speed === 100) return 0;\n      return parallaxTransform(yValue, originalPosition.current, speed, offset, adjustPosition);\n    },\n    [speed, offset, adjustPosition]\n  );\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  useRefEffect(\n    ref,\n    (element) => {\n      if (element === null) return;\n      frame.read(() => {\n        var _a;\n        originalPosition.current = ((_a = element.getBoundingClientRect()) == null ? void 0 : _a.top) ?? 0;\n      });\n      frame.update(() => {\n        parallaxY.set(transform2(scrollY.get()));\n        if (adjustPosition) {\n          visibility.set(visibilityStyle ?? \"initial\");\n        }\n      });\n    },\n    [adjustPosition]\n  );\n  useOnRouteChange(() => parallaxY.set(0));\n  return {\n    values: {\n      y: shouldReduceMotion || !parallaxTransformEnabled ? defaultValue : parallaxY\n    },\n    style: parallaxTransformEnabled ? {\n      ...effectEnabledStyle,\n      visibility\n    } : effectDisabledStyle\n  };\n}\n\n// ../../library/src/modules/usePresenceAnimation.ts\nimport { useMemo as useMemo8, useRef as useRef14 } from \"react\";\nfunction getTransition(value) {\n  if (isString(value) || !isObject2(value)) return void 0;\n  return value == null ? void 0 : value.transition;\n}\nfunction runEffectAnimation(target, effect, shouldReduceMotion, ref, appearId, instant) {\n  const transition = getTransition(target);\n  return Promise.all(\n    effectValuesKeys.map((key7) => {\n      return new Promise((resolve) => {\n        if (shouldReduceMotion && key7 !== \"opacity\") return resolve();\n        const motionValue2 = effect.values[key7];\n        motionValue2.stop();\n        let value = !isObject2(target) ? defaultFXValues[key7] : (target == null ? void 0 : target[key7]) ?? defaultFXValues[key7];\n        if (isMotionValue(value)) value = value.get();\n        if (!isNumber(value)) return resolve();\n        const visualElement = visualElementStore.get(ref.current);\n        if (visualElement) visualElement.setBaseTarget(key7, value);\n        let startTime;\n        if (isString(appearId) && !(motionValue2 == null ? void 0 : motionValue2.hasAnimated) && safeWindow.MotionHandoffAnimation) {\n          const handoffAnimationStartTime = safeWindow.MotionHandoffAnimation(appearId, key7, frame);\n          if (handoffAnimationStartTime) {\n            startTime = handoffAnimationStartTime;\n          }\n        }\n        if (instant) {\n          motionValue2.set(value);\n        } else {\n          animate(motionValue2, value, {\n            ...transition,\n            velocity: 0,\n            startTime,\n            onComplete: () => resolve()\n          });\n        }\n      });\n    })\n  );\n}\nvar presenceOptionsKeys = /* @__PURE__ */ new Set([\n  \"presenceInitial\",\n  \"presenceAnimate\",\n  \"presenceExit\"\n]);\nfunction usePresenceAnimation({\n  initial: motionInitial,\n  animate: motionAnimate,\n  exit: motionExit,\n  presenceInitial,\n  presenceAnimate,\n  presenceExit\n}, ref, enabled, style, appearId) {\n  const initial = presenceInitial ?? motionInitial;\n  const animateConfig = presenceAnimate ?? motionAnimate;\n  const exit = presenceExit ?? motionExit;\n  const [isPresent, safeToRemove] = usePresence();\n  const internalState = useRef14({\n    lastPresence: false,\n    lastAnimate: animateConfig,\n    hasMounted: false,\n    running: false\n  });\n  const effect = useConstant(() => {\n    const base = initial ?? style;\n    if (!isObject2(base)) return { values: makeFXValues() };\n    const defaults = {};\n    for (const key7 in base) {\n      const value = isObject2(base) ? base[key7] : void 0;\n      if (!isNumber(value)) continue;\n      defaults[key7] = value;\n    }\n    return { values: makeFXValues(defaults) };\n  });\n  useRefEffect(\n    ref,\n    (element) => {\n      const { hasMounted } = internalState.current;\n      if (hasMounted && animateConfig) return;\n      const visualElement = visualElementStore.get(element);\n      if (!visualElement) return;\n      Object.assign(internalState.current, { hasMounted: true });\n      for (const key7 in effect.values) {\n        if (!isFXValuesKey(key7)) continue;\n        const value = style == null ? void 0 : style[key7];\n        visualElement.setBaseTarget(key7, isNumber(value) ? value : defaultFXValues[key7]);\n      }\n    },\n    [animateConfig]\n  );\n  const shouldReduceMotion = useReducedMotionConfig();\n  useRefEffect(ref, (element) => {\n    if (!enabled) {\n      safeToRemove == null ? void 0 : safeToRemove();\n      return;\n    }\n    if (element === null) return;\n    if (isPresent !== internalState.current.lastPresence) {\n      Object.assign(internalState.current, { lastPresence: isPresent });\n      if (isPresent) {\n        if (initial && animateConfig) {\n          Object.assign(internalState.current, { running: true });\n          void runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId).then(\n            () => Object.assign(internalState.current, { running: false })\n          );\n        }\n      } else if (exit) {\n        Object.assign(internalState.current, { running: true });\n        void runEffectAnimation(exit, effect, shouldReduceMotion, ref, appearId).then(() => Object.assign(internalState.current, { running: false })).then(() => safeToRemove());\n      } else {\n        safeToRemove();\n      }\n      return;\n    }\n    const { lastAnimate, running } = internalState.current;\n    const hasAnimateChanged = !isEqual(animateConfig, lastAnimate);\n    if (!hasAnimateChanged || !animateConfig) return;\n    Object.assign(internalState.current, { lastAnimate: animateConfig });\n    void runEffectAnimation(animateConfig, effect, shouldReduceMotion, ref, appearId, !running).then(\n      () => Object.assign(internalState.current, { running: false })\n    );\n  });\n  const effectEnabled = enabled && animateConfig;\n  return useMemo8(() => {\n    return { values: effect.values, style: effectEnabled ? effectEnabledStyle : effectDisabledStyle };\n  }, [effectEnabled]);\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nimport React53, { useMemo as useMemo9 } 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)) 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;\n  const starts = [];\n  const inputRange = [];\n  for (let index = transformTargets.length; index >= 0; index--) {\n    const { ref: targetRef, offset } = transformTargets[index] ?? {};\n    if (!targetRef || !targetRef.current) continue;\n    const offsetTop = calcOffsetTop(targetRef.current, document.documentElement);\n    const top = offsetTop - scrollObserverOffset - (offset ?? 0) - threshold;\n    const height = ((_a = targetRef.current) == null ? void 0 : _a.clientHeight) ?? 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/useScrollDirectionChange.ts\nimport React52 from \"react\";\nfunction currentScrollDirection(offset, lastOffset = 0) {\n  if (offset < lastOffset) return \"up\";\n  return \"down\";\n}\nvar scrollDirectionThreshold = 4;\nfunction useScrollDirectionChange(scrollDirection, cb, options = {}) {\n  const { direction, target } = scrollDirection ?? {};\n  const { repeat = true, enabled = true } = options;\n  const currentRouteKey = useCurrentRouteKey();\n  React52.useEffect(() => {\n    if (!direction || !enabled) return;\n    const _ = currentRouteKey;\n    let lastOffset = void 0;\n    let directionChangeOffset = 0;\n    let lastDirection = void 0;\n    let currentTarget = void 0;\n    return scrollInfo(({ y: scrollY }) => {\n      if (!repeat && currentTarget === target) return;\n      if (scrollY.current > scrollY.scrollLength) return;\n      if (scrollY.current < 0) return;\n      const d = currentScrollDirection(scrollY.current, lastOffset);\n      lastOffset = scrollY.current;\n      const hasDirectionChanged = d !== lastDirection;\n      lastDirection = d;\n      if (hasDirectionChanged) {\n        directionChangeOffset = scrollY.current;\n      } else {\n        const delta = Math.abs(scrollY.current - directionChangeOffset);\n        if (delta < scrollDirectionThreshold) return;\n        const nextTarget = d === direction ? target : void 0;\n        if (nextTarget !== currentTarget) cb(nextTarget);\n        currentTarget = nextTarget;\n      }\n    });\n  }, [currentRouteKey, direction, repeat, target, enabled, cb]);\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  \"scrollDirection\"\n]);\nvar defaultOutputRange = [\"animate\", \"animate\"];\nvar defaultRanges = { inputRange: [], outputRange: [] };\nfunction createInputOutputRange(targets, threshold, hasExit) {\n  const inputRange = createTransformInputRange(targets, threshold);\n  const outputRange = [...defaultOutputRange];\n  const firstRange = inputRange[0];\n  if (!isNumber(firstRange)) return defaultRanges;\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    if (!isNumber(last)) return defaultRanges;\n    inputRange.push(last + 1);\n    outputRange.push(\"exit\");\n  }\n  return {\n    inputRange,\n    outputRange\n  };\n}\nfunction makeStyle(defaults) {\n  return {\n    x: (defaults == null ? void 0 : defaults.x) ?? defaultFXValues.x,\n    y: (defaults == null ? void 0 : defaults.y) ?? defaultFXValues.y,\n    scale: (defaults == null ? void 0 : defaults.scale) ?? defaultFXValues.scale,\n    opacity: (defaults == null ? void 0 : defaults.opacity) ?? defaultFXValues.opacity,\n    transformPerspective: (defaults == null ? void 0 : defaults.transformPerspective) ?? defaultFXValues.transformPerspective,\n    rotate: (defaults == null ? void 0 : defaults.rotate) ?? defaultFXValues.rotate,\n    rotateX: (defaults == null ? void 0 : defaults.rotateX) ?? defaultFXValues.rotateX,\n    rotateY: (defaults == null ? void 0 : defaults.rotateY) ?? defaultFXValues.rotateY,\n    skewX: (defaults == null ? void 0 : defaults.skewX) ?? defaultFXValues.skewX,\n    skewY: (defaults == null ? void 0 : defaults.skewY) ?? defaultFXValues.skewY,\n    transition: (defaults == null ? void 0 : defaults.transition) ?? void 0\n  };\n}\nfunction useAnimationVariants({\n  opacity,\n  targetOpacity,\n  perspective: transformPerspective,\n  enter,\n  exit,\n  animate: animateVariant,\n  ...defaultStyles\n}) {\n  return React53.useMemo(\n    () => ({\n      initial: enter ?? makeStyle({\n        ...defaultStyles,\n        opacity: opacity ?? targetOpacity ?? 1,\n        transformPerspective\n      }),\n      animate: animateVariant ?? makeStyle({\n        opacity: targetOpacity\n      }),\n      exit: exit ?? makeStyle()\n    }),\n    // biome-ignore lint/correctness/useExhaustiveDependencies: `defaultStyles` makes this memo re-run on every render, but that appears to be fine.\n    [animateVariant, defaultStyles, enter, exit, opacity, targetOpacity, transformPerspective]\n  );\n}\nfunction useStyleAppearEffect(options, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const variants = useAnimationVariants(options);\n  const enabled = options.styleAppearEffectEnabled;\n  const effect = useFXValues(enabled ? variants.initial : variants.animate, enabled);\n  const playState = React53.useRef({\n    isPlaying: false,\n    scheduledAppearState: void 0,\n    lastAppearState: !options.styleAppearEffectEnabled\n  });\n  const currentRouteKey = useCurrentRouteKey();\n  const animation = React53.useRef();\n  const runAnimation = React53.useCallback(\n    async ({ transition, ...target }, fromInitial) => {\n      const transitionWithFallback = transition ?? variants.animate.transition ?? options.transition;\n      await animation.current;\n      const visualElement = visualElementStore.get(ref.current);\n      animation.current = Promise.all(\n        effectValuesKeys.map((key7) => {\n          if (fromInitial) effect.values[key7].set(variants.initial[key7] ?? defaultFXValues[key7]);\n          const toValue = target[key7] ?? defaultFXValues[key7];\n          if (visualElement && typeof toValue !== \"object\") {\n            visualElement.setBaseTarget(key7, toValue);\n          }\n          return new Promise((resolve) => {\n            if (shouldReduceMotion && key7 !== \"opacity\") {\n              if (isNumber(toValue)) effect.values[key7].set(toValue);\n              resolve();\n            } else {\n              const opts = {\n                restDelta: key7 === \"scale\" ? 1e-3 : void 0,\n                ...transitionWithFallback,\n                onComplete: () => resolve()\n              };\n              if (typeof toValue === \"number\") {\n                animate(effect.values[key7], toValue, opts);\n              }\n            }\n          });\n        })\n      );\n    },\n    []\n  );\n  const hasAnimatedOnce = options.animateOnce && playState.current.lastAppearState === true;\n  const animateWithIntersectionObserver = !options.targets && options.styleAppearEffectEnabled && !options.scrollDirection && !hasAnimatedOnce;\n  useAppearEffect(\n    ref,\n    (appears) => {\n      const { isPlaying, lastAppearState } = playState.current;\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) return;\n      runAnimation(appears ? variants.animate : variants.exit, appears);\n    },\n    {\n      enabled: animateWithIntersectionObserver,\n      animateOnce: !!options.animateOnce,\n      threshold: {\n        y: options.threshold\n      }\n    }\n  );\n  const animateWithScrollInfo = options.targets && enabled && !options.scrollDirection;\n  React53.useEffect(() => {\n    if (!animateWithScrollInfo) return;\n    const playedState = { initial: true };\n    const _ = currentRouteKey;\n    let lastVariant = \"initial\";\n    return scrollInfo(({ y: scrollY }) => {\n      const { targets } = options;\n      if (!targets) return;\n      if (!targets[0] || targets[0].ref && !targets[0].ref.current) return;\n      const { inputRange, outputRange } = createInputOutputRange(\n        targets,\n        (options.threshold ?? 0) * scrollY.containerLength,\n        !!options.exit\n      );\n      if (inputRange.length === 0 || inputRange.length !== outputRange.length) return;\n      const variant = transform(scrollY.current, inputRange, outputRange);\n      if (options.animateOnce && playedState[variant]) return;\n      playedState[variant] = true;\n      if (lastVariant === variant) return;\n      lastVariant = variant;\n      const variantAnimation = asRecord(variants)[variant];\n      if (!variantAnimation) return;\n      runAnimation(variantAnimation);\n    });\n  }, [currentRouteKey, animateWithScrollInfo]);\n  useScrollDirectionChange(options.scrollDirection, (target) => runAnimation(target ?? variants.animate), {\n    enabled,\n    repeat: !options.animateOnce\n  });\n  useOnRouteChange(() => {\n    var _a;\n    if (!enabled) return;\n    if (!options.targets && !options.scrollDirection) return;\n    for (const key7 of effectValuesKeys) {\n      effect.values[key7].set(((_a = variants.initial) == null ? void 0 : _a[key7]) ?? defaultFXValues[key7]);\n    }\n  });\n  return useMemo9(() => {\n    return { values: effect.values, style: enabled ? effectEnabledStyle : effectDisabledStyle };\n  }, [enabled]);\n}\n\n// ../../library/src/modules/useStyleTransformEffect.ts\nimport React54, { useLayoutEffect as useLayoutEffect5 } from \"react\";\nvar styleTransformOptionsKeys = /* @__PURE__ */ new Set([\n  \"transformViewportThreshold\",\n  \"styleTransformEffectEnabled\",\n  \"transformTargets\",\n  \"spring\",\n  \"transformTrigger\"\n]);\nvar defaultValues = (transformTargets, shouldReduceMotion) => {\n  var _a;\n  const initial = (_a = transformTargets == null ? void 0 : transformTargets[0]) == null ? void 0 : _a.target;\n  return shouldReduceMotion ? { opacity: (initial == null ? void 0 : initial.opacity) ?? 1 } : initial;\n};\nvar defaultRanges2 = () => ({\n  opacity: [],\n  x: [],\n  y: [],\n  scale: [],\n  rotate: [],\n  rotateX: [],\n  rotateY: [],\n  skewX: [],\n  skewY: [],\n  transformPerspective: []\n});\nfunction useAttachOptionalSpring(values, spring2) {\n  const springs = React54.useRef({});\n  React54.useEffect(() => {\n    if (spring2 === void 0) return;\n    for (const key7 of objectKeys(values)) {\n      let startAnimation3 = function() {\n        const active = springs.current[key7];\n        if (active) active.stop();\n        springs.current[key7] = animateValue({\n          keyframes: [m2.get(), latestValue],\n          velocity: m2.getVelocity(),\n          ...spring2,\n          restDelta: 1e-3,\n          onUpdate: latestSetter\n        });\n      };\n      var startAnimation2 = startAnimation3;\n      const m2 = values[key7];\n      let latestSetter;\n      let latestValue;\n      m2.attach((v, set) => {\n        latestValue = v;\n        latestSetter = set;\n        frame.postRender(startAnimation3);\n        return m2.get();\n      });\n    }\n  }, [JSON.stringify(spring2)]);\n}\nfunction createInputOutputRanges(transformTargets, threshold) {\n  const effectKeyOutputRange = defaultRanges2();\n  const inputRange = createTransformInputRange(transformTargets, threshold, (index) => {\n    var _a, _b, _c;\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      (_c = effectKeyOutputRange[key7]) == null ? void 0 : _c.unshift((previousTarget == null ? void 0 : previousTarget[key7]) ?? 0, (currentTarget == null ? void 0 : currentTarget[key7]) ?? 0);\n    }\n  });\n  return { inputRange, effectKeyOutputRange };\n}\nfunction createPageOutputRange(transformTargets) {\n  var _a;\n  const keyOutputRange = defaultRanges2();\n  for (const { target } of transformTargets) {\n    for (const key7 of effectValuesKeys) (_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: spring2,\n  transformViewportThreshold = 0\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const effect = useFXValues(defaultValues(transformTargets, shouldReduceMotion), styleTransformEffectEnabled);\n  const effectDisabled = !styleTransformEffectEnabled || !transformTargets;\n  const triggerOnScroll = transformTrigger === \"onScrollTarget\";\n  const currentRouteKey = useCurrentRouteKey();\n  useLayoutEffect5(() => {\n    if (effectDisabled || !triggerOnScroll) return;\n    return scrollInfo(({ y: scrollY }) => {\n      if (!transformTargets[0] || transformTargets[0].ref && !transformTargets[0].ref.current) {\n        return;\n      }\n      const { inputRange: scrollYInputRange, effectKeyOutputRange } = createInputOutputRanges(\n        transformTargets,\n        transformViewportThreshold * scrollY.containerLength\n      );\n      if (scrollYInputRange.length === 0) return;\n      for (const key7 of effectValuesKeys) {\n        if (shouldReduceMotion && key7 !== \"opacity\") continue;\n        if (scrollYInputRange.length !== effectKeyOutputRange[key7].length) continue;\n        if (effectKeyOutputRange[key7][0] === void 0) continue;\n        effect.values[key7].set(transform(scrollY.current, scrollYInputRange, effectKeyOutputRange[key7]));\n      }\n    });\n  }, [shouldReduceMotion, triggerOnScroll, transformViewportThreshold, transformTargets, effectDisabled]);\n  useRefEffect(\n    ref,\n    (element) => {\n      if (effectDisabled || triggerOnScroll || element === null) {\n        return;\n      }\n      const _ = currentRouteKey;\n      const outputRange = createPageOutputRange(transformTargets);\n      return scrollInfo(\n        ({ y: scrollY }) => {\n          for (const key7 of effectValuesKeys) {\n            if (shouldReduceMotion && key7 !== \"opacity\") continue;\n            if (pageInputRange.length !== outputRange[key7].length) continue;\n            if (outputRange[key7][0] === void 0) continue;\n            effect.values[key7].set(transform(scrollY.progress, pageInputRange, outputRange[key7]));\n          }\n        },\n        transformTrigger === \"onInView\" ? {\n          target: element ?? void 0,\n          offset: [\"start end\", \"end end\"]\n        } : void 0\n      );\n    },\n    [currentRouteKey, shouldReduceMotion, transformTrigger, triggerOnScroll, transformTargets, effectDisabled]\n  );\n  useAttachOptionalSpring(effect.values, spring2);\n  useOnRouteChange(() => {\n    if (effectDisabled) return;\n    const values = defaultValues(transformTargets, shouldReduceMotion);\n    for (const key7 of effectValuesKeys) {\n      effect.values[key7].set((values == null ? void 0 : values[key7]) ?? defaultFXValues[key7]);\n    }\n  });\n  return React54.useMemo(() => {\n    return {\n      values: effect.values,\n      style: styleTransformEffectEnabled ? effectEnabledStyle : effectDisabledStyle\n    };\n  }, [styleTransformEffectEnabled]);\n}\n\n// ../../library/src/modules/withFX.tsx\nimport { jsx as jsx44 } from \"react/jsx-runtime\";\nvar groups = {\n  parallax: parallaxOptionsKeys,\n  styleAppear: styleAppearOptionsKeys,\n  styleTransform: styleTransformOptionsKeys,\n  loop: loopOptionsKeys,\n  presence: presenceOptionsKeys\n};\nvar groupValues = /* @__PURE__ */ objectKeys(groups);\nfunction backwardsCompatibleEnabledCheck(key7, secondaryKey, object) {\n  return !(key7 in object) && secondaryKey in object || object[key7] === true;\n}\nfunction extractFXOptions(props) {\n  const result = {\n    parallax: {},\n    styleAppear: {},\n    styleTransform: {},\n    presence: {\n      animate: props.animate,\n      initial: props.initial,\n      exit: props.exit\n    },\n    loop: {},\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 == null ? void 0 : keys3.has(strippedKey)) {\n          ;\n          result[group][strippedKey] = asRecord(props)[key7];\n          break;\n        }\n      }\n    } else {\n      ;\n      result.forwardedProps[key7] = asRecord(props)[key7];\n    }\n  }\n  result.parallax.parallaxTransformEnabled = backwardsCompatibleEnabledCheck(\n    \"parallaxTransformEnabled\",\n    \"speed\",\n    result.parallax\n  );\n  result.styleAppear.styleAppearEffectEnabled = backwardsCompatibleEnabledCheck(\n    \"styleAppearEffectEnabled\",\n    \"animateOnce\",\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 reactRefObjectKey = \"current\";\nfunction isReactRefObject(value) {\n  return isObject2(value) && reactRefObjectKey in value;\n}\nfunction addMotionValueStyle(style, values) {\n  if (!style || !isObject2(style)) return values;\n  for (const key7 in style) {\n    const value = style[key7];\n    if (!isMotionValue(value) || !isFXValuesKey(key7)) continue;\n    if (!isNumber(value.get())) continue;\n    values[key7].push(value);\n  }\n}\nfunction isVariantOrVariantList2(value) {\n  return isString(value) || Array.isArray(value);\n}\nvar withFX = (Component17) => React55.forwardRef((props, forwardedRef) => {\n  var _a;\n  if (props.__withFX) {\n    return /* @__PURE__ */ jsx44(Component17, { ...props, animate: void 0, initial: void 0, exit: void 0, ref: forwardedRef });\n  }\n  const disabledProps = getDisabledFXPropsInStaticRenderer(props);\n  if (disabledProps) {\n    return /* @__PURE__ */ jsx44(Component17, { ...props, ...disabledProps, ref: forwardedRef });\n  }\n  const {\n    parallax = {},\n    styleAppear = {},\n    styleTransform = {},\n    presence = {},\n    loop = {},\n    forwardedProps\n  } = extractFXOptions(props);\n  const {\n    __targetOpacity: targetOpacityValue,\n    __perspectiveFX: withPerspective,\n    __smartComponentFX: inSmartComponent = false\n  } = props;\n  const targetOpacity = useMotionValue(targetOpacityValue ?? 1);\n  const observerRef = useObserverRef(forwardedRef);\n  const { values: presenceEffectValues, style: presenceEffectStyle } = usePresenceAnimation(\n    presence,\n    observerRef,\n    inSmartComponent,\n    props.style,\n    props[optimizedAppearDataAttribute]\n  );\n  const { values: parallaxValues, style: parallaxStyle } = useParallax(\n    parallax,\n    observerRef,\n    (_a = props.style) == null ? void 0 : _a.visibility\n  );\n  const { values: transformValues2, style: scrollStyle } = useStyleTransform(styleTransform, observerRef);\n  const { values: appearEffectValues, style: scrollAppearStyle } = useStyleAppearEffect(styleAppear, observerRef);\n  const { values: loopValues, style: loopStyle } = useLoop(loop, observerRef);\n  const fxValues = React55.useMemo(() => {\n    return {\n      scale: [appearEffectValues.scale, loopValues.scale, presenceEffectValues.scale, transformValues2.scale],\n      opacity: [\n        appearEffectValues.opacity,\n        loopValues.opacity,\n        presenceEffectValues.opacity,\n        // Ensure that the layers opacity is always represented.\n        targetOpacity,\n        transformValues2.opacity\n      ],\n      x: [appearEffectValues.x, loopValues.x, presenceEffectValues.x, transformValues2.x],\n      y: [appearEffectValues.y, loopValues.y, parallaxValues.y, presenceEffectValues.y, transformValues2.y],\n      rotate: [\n        appearEffectValues.rotate,\n        loopValues.rotate,\n        presenceEffectValues.rotate,\n        transformValues2.rotate\n      ],\n      rotateX: [\n        appearEffectValues.rotateX,\n        loopValues.rotateX,\n        presenceEffectValues.rotateX,\n        transformValues2.rotateX\n      ],\n      rotateY: [\n        appearEffectValues.rotateY,\n        loopValues.rotateY,\n        presenceEffectValues.rotateY,\n        transformValues2.rotateY\n      ],\n      skewX: [appearEffectValues.skewX, loopValues.skewX, presenceEffectValues.skewX, transformValues2.skewX],\n      skewY: [appearEffectValues.skewY, loopValues.skewY, presenceEffectValues.skewY, transformValues2.skewY],\n      /** @deprecated */\n      transformPerspective: [\n        transformValues2.transformPerspective,\n        appearEffectValues.transformPerspective\n        // We stopped animating transformPerspective with `withFX`\n        // before introducing `useLoop` etc, so it does not have a\n        // value here on purpose.\n      ]\n    };\n  }, [targetOpacity, transformValues2, parallaxValues, appearEffectValues, loopValues, presenceEffectValues]);\n  addMotionValueStyle(props.style, fxValues);\n  const scale2 = useTransform(fxValues.scale, multiply);\n  const opacity = useTransform(fxValues.opacity, multiply);\n  const x = useTransform(fxValues.x, add2);\n  const y = useTransform(fxValues.y, add2);\n  const rotate = useTransform(fxValues.rotate, add2);\n  const rotateX = useTransform(fxValues.rotateX, add2);\n  const rotateY = useTransform(fxValues.rotateY, add2);\n  const skewX = useTransform(fxValues.skewX, add2);\n  const skewY = useTransform(fxValues.skewY, add2);\n  const transformPerspective = useTransform(fxValues.transformPerspective, add2);\n  const { drag, dragConstraints } = forwardedProps;\n  useRerenderOnResize(drag && isReactRefObject(dragConstraints) ? dragConstraints : void 0);\n  const motionValueStyle = {\n    opacity,\n    scale: scale2,\n    x,\n    y,\n    rotate,\n    rotateX,\n    rotateY,\n    skewX,\n    skewY\n  };\n  if (isUndefined(withPerspective)) motionValueStyle.transformPerspective = transformPerspective;\n  const animate3 = isVariantOrVariantList2(props.animate) ? props.animate : void 0;\n  const initial = isVariantOrVariantList2(props.initial) ? props.initial : void 0;\n  const exit = isVariantOrVariantList2(props.exit) ? props.exit : void 0;\n  const motionGestures = inSmartComponent && !presence.presenceInitial ? { initial, animate: animate3, exit } : {};\n  return /* @__PURE__ */ jsx44(\n    Component17,\n    {\n      ...forwardedProps,\n      ...motionGestures,\n      __withFX: true,\n      style: {\n        ...props.style,\n        ...parallaxStyle,\n        ...scrollStyle,\n        ...loopStyle,\n        ...motionValueStyle,\n        ...scrollAppearStyle,\n        ...presenceEffectStyle\n      },\n      values: presenceEffectValues,\n      ref: observerRef\n    }\n  );\n});\n\n// ../../library/src/deprecated/deprecatedEffects.ts\nvar withParallaxTransform = withFX;\nvar withStyleAppearEffect = withFX;\n\n// ../../library/src/modules/ComponentPresetsContext.tsx\nimport { createContext as createContext5, useContext as useContext13, useRef as useRef15 } from \"react\";\nimport { jsx as jsx45 } from \"react/jsx-runtime\";\nvar Context = /* @__PURE__ */ createContext5({});\nfunction ComponentPresetsProvider({ presets, children }) {\n  const lastPresets = useRef15(presets);\n  if (!isEqual(presets, lastPresets.current, false)) {\n    lastPresets.current = presets;\n  }\n  return /* @__PURE__ */ jsx45(Context.Provider, { value: lastPresets.current, children });\n}\nfunction ComponentPresetsConsumer({ componentIdentifier, children }) {\n  const componentPresets = useContext13(Context);\n  const presetProps = componentPresets[componentIdentifier] ?? {};\n  return children(presetProps);\n}\n\n// ../../library/src/modules/ComponentViewportContext.tsx\nimport React56 from \"react\";\nimport { jsx as jsx46 } from \"react/jsx-runtime\";\nvar ComponentViewportContext = /* @__PURE__ */ React56.createContext({});\nfunction useComponentViewport() {\n  return React56.useContext(ComponentViewportContext);\n}\nvar ComponentViewportProvider = /* @__PURE__ */ React56.forwardRef(function ComponentViewportProvider2({ width, height, y, children, ...rest }, ref) {\n  const componentViewport = React56.useMemo(() => {\n    return { width, height, y };\n  }, [width, height, y]);\n  const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n  return /* @__PURE__ */ jsx46(ComponentViewportContext.Provider, { value: componentViewport, children: cloneWithPropsAndRef(children, rest) });\n});\n\n// ../../library/src/modules/Container.tsx\nimport React59 from \"react\";\n\n// ../../library/src/render/utils/withGeneratedLayoutId.tsx\nimport React57 from \"react\";\nimport { jsx as jsx47 } from \"react/jsx-runtime\";\nvar withGeneratedLayoutId = (Component17) => React57.forwardRef((props, ref) => {\n  const layoutId = useLayoutId(props);\n  return /* @__PURE__ */ jsx47(Component17, { layoutId, ...props, layoutIdKey: void 0, duplicatedFrom: void 0, ref });\n});\n\n// ../../library/src/modules/code-boundary/CodeComponentBoundary.tsx\nimport { Component as Component12, Suspense as Suspense2 } from \"react\";\n\n// ../../library/src/router/SuspenseThatPreservesDom.tsx\nimport { Suspense } from \"react\";\n\n// ../../library/src/router/error-boundary/SynchronousSuspenseErrorBoundary.tsx\nimport { Component as Component11 } from \"react\";\nvar shouldSuspenseBoundariesBeActive = false;\nvar SynchronousSuspenseErrorBoundary = class extends Component11 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  // Note: SynchronousSuspenseErrorBoundary is relying on some narrow implementation details of React\n  // which we don\u2019t fully understand: https://www.notion.so/framer/SuspenseThatPreservesDOM-1b0adf6e8c968089ae0dc158fc514e6b?pvs=4#1d1adf6e8c96801a9ef2d6f2f0c27f8c\n  //\n  // As a side effect, `componentDidCatch` is usually *never* executed. If you do see the log below,\n  // it means that you\u2019re experiencing a scenario not covered by our tests.\n  componentDidCatch(error, errorInfo) {\n    if (!isSuspense426Error(error)) return;\n    const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n    console.error(\n      \"Caught an error in SynchronousSuspenseErrorBoundary:\\n\\n\",\n      error,\n      \"\\n\\nComponent stack:\\n\",\n      componentStack,\n      \"\\n\\nThis error indicates a state update wasn\\u2019t wrapped with startTransition. Some of the UI might flash as a result. If you are the author of this website, check recently added custom code, and if the issue persists, report it to the Framer team via https://www.framer.com/contact/.\"\n    );\n    const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : void 0;\n    sendTrackingEvent(\"published_site_load_recoverable_error\", {\n      message: String(error),\n      stack,\n      // only log componentStack if we don't have a stack\n      componentStack: stack ? void 0 : componentStack\n    });\n  }\n  render() {\n    const error = this.state.error;\n    if (error === void 0) return this.props.children;\n    if (!isSuspense426Error(error)) throw error;\n    shouldSuspenseBoundariesBeActive = true;\n    return this.props.children;\n  }\n};\nfunction isSuspense426Error(error) {\n  const unminifiedMessage = \"A component suspended while responding to synchronous input.\";\n  const minifiedMessage = \"Minified React error #426\";\n  return error instanceof Error && (error.message.includes(unminifiedMessage) || error.message.includes(minifiedMessage));\n}\n\n// ../../library/src/router/SuspenseThatPreservesDom.tsx\nimport { jsx as jsx48 } from \"react/jsx-runtime\";\nvar suspendPromise = /* @__PURE__ */ (() => typeof window !== \"undefined\" ? new Promise(() => {\n}) : null)();\nfunction Suspend() {\n  if (typeof window === \"undefined\" || shouldSuspenseBoundariesBeActive) {\n    return /* @__PURE__ */ jsx48(\n      \"div\",\n      {\n        hidden: true,\n        dangerouslySetInnerHTML: { __html: \"<!-- SuspenseThatPreservesDOM fallback rendered -->\" }\n      }\n    );\n  }\n  throw suspendPromise;\n}\nvar suspend = /* @__PURE__ */ jsx48(Suspend, {});\nfunction SuspenseThatPreservesDom({ children }) {\n  return /* @__PURE__ */ jsx48(Suspense, { fallback: suspend, children });\n}\n\n// ../../library/src/modules/code-boundary/NullFallback.tsx\nimport { jsx as jsx49 } from \"react/jsx-runtime\";\nfunction NullFallback() {\n  return /* @__PURE__ */ jsx49(\n    \"div\",\n    {\n      hidden: true,\n      dangerouslySetInnerHTML: { __html: \"<!-- Code boundary fallback rendered -->\" }\n    }\n  );\n}\nvar nullFallback = /* @__PURE__ */ jsx49(NullFallback, {});\n\n// ../../library/src/modules/code-boundary/collectErrorToAnalytics.tsx\nfunction collectErrorToAnalytics(error, errorInfo) {\n  if (!isWindow) return;\n  if (Math.random() > 0.01) return;\n  const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : null;\n  const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n  sendTrackingEvent(\"published_site_load_recoverable_error\", {\n    message: String(error),\n    stack,\n    // only log componentStack if we don't have a stack\n    componentStack: stack ? void 0 : componentStack\n  });\n}\n\n// ../../library/src/modules/code-boundary/logger.ts\nfunction logError(...args) {\n  if (false) return;\n  console.error(...args);\n}\n\n// ../../library/src/modules/code-boundary/shouldEnableCodeBoundaries.ts\nfunction shouldEnableCodeBoundaries() {\n  return RenderTarget.current() !== RenderTarget.canvas;\n}\n\n// ../../library/src/modules/code-boundary/CodeComponentBoundary.tsx\nimport { jsx as jsx50 } from \"react/jsx-runtime\";\nfunction CodeComponentBoundary({ getErrorMessage, fallback, children }) {\n  if (!shouldEnableCodeBoundaries()) {\n    return children;\n  }\n  return /* @__PURE__ */ jsx50(ServerSideErrorBoundary, { fallback, children: /* @__PURE__ */ jsx50(ClientSideErrorBoundary, { fallback, getErrorMessage, children }) });\n}\nvar ClientSideErrorBoundary = class extends Component12 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { hasError: false });\n  }\n  static getDerivedStateFromError() {\n    return { hasError: true };\n  }\n  componentDidCatch(error, errorInfo) {\n    logError(this.props.getErrorMessage(), errorInfo == null ? void 0 : errorInfo.componentStack);\n    collectErrorToAnalytics(error, errorInfo);\n  }\n  render() {\n    const { children, fallback = nullFallback } = this.props;\n    const { hasError } = this.state;\n    return hasError ? fallback : children;\n  }\n};\nfunction ServerSideErrorBoundary({ children, fallback = nullFallback }) {\n  return typeof window === \"undefined\" ? (\n    // On the server, Suspense fallback is activated by errors. So we use the actual Suspense,\n    // and render the actual error fallback if Suspense activates.\n    /* @__PURE__ */ jsx50(Suspense2, { fallback, children })\n  ) : (\n    // On the client, Suspense fallback is activated by data fetching. So we use SuspenseThatPreservesDom,\n    // because we don\u2019t want to render a fallback if the boundary gets inadvertently activated.\n    //\n    // \u201CWhy won\u2019t you just render plain children without Suspense?\u201D Because that would cause a hydration mismatch\n    // (the server has Suspense, the client doesn\u2019t).\n    /* @__PURE__ */ jsx50(SuspenseThatPreservesDom, { children })\n  );\n}\n\n// ../../library/src/modules/code-boundary/DeprecatedContainerErrorBoundary.tsx\nimport { Component as Component13 } from \"react\";\nvar DeprecatedContainerErrorBoundary = class extends Component13 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { hasError: false });\n  }\n  // We use `componentDidCatch` instead of `static getDerivedStateFromError()` because the latter could also catch hydration errors.\n  // Hydration errors are recoverable by React, so we don't want to hide the coponent in that case (since the tree will not unmount).\n  componentDidCatch(error, errorInfo) {\n    const componentStack = errorInfo == null ? void 0 : errorInfo.componentStack;\n    console.error(\n      \"Error in component (see previous log). This component has been hidden. Please check any custom code or code overrides to fix.\",\n      componentStack\n    );\n    this.setState({ hasError: true });\n    collectErrorToAnalytics(error, errorInfo);\n  }\n  render() {\n    const { children } = this.props;\n    const { hasError } = this.state;\n    return hasError ? null : children;\n  }\n};\n\n// ../../library/src/modules/code-boundary/ExternalComponentContext.tsx\nimport React58 from \"react\";\nimport { jsx as jsx51 } from \"react/jsx-runtime\";\nvar ExternalComponentContext = /* @__PURE__ */ (() => React58.createContext(void 0))();\nfunction useNearestExternalComponent() {\n  return React58.useContext(ExternalComponentContext);\n}\nfunction useFurthestExternalComponent() {\n  const nearestExternalComponent = useNearestExternalComponent();\n  const furthestExternalComponent = React58.useMemo(() => {\n    if (!nearestExternalComponent) return void 0;\n    let item = nearestExternalComponent;\n    while (item.parent && item.parent.level > 0) {\n      item = item.parent;\n    }\n    return item;\n  }, [nearestExternalComponent]);\n  return furthestExternalComponent;\n}\nfunction IsExternalComponent({\n  children,\n  scopeId,\n  nodeId\n}) {\n  const parent = useNearestExternalComponent();\n  const newValue = React58.useMemo(\n    () => ({ level: ((parent == null ? void 0 : parent.level) ?? 0) + 1, scopeId, nodeId, parent }),\n    [scopeId, nodeId, parent]\n  );\n  return /* @__PURE__ */ jsx51(ExternalComponentContext.Provider, { value: newValue, children });\n}\n\n// ../../library/src/modules/code-boundary/errorMessages.ts\nvar CRASH_ERROR_MESSAGE_PREFIX = \"code-crash:\";\nfunction formatCodeCrashLocationFromSourceNode(scopeId, nodeId) {\n  return `${CRASH_ERROR_MESSAGE_PREFIX}${scopeId}:${nodeId}`;\n}\nfunction getErrorMessageForComponent(scopeId, nodeId) {\n  return getErrorMessageFor(\"component\", scopeId, nodeId);\n}\nfunction getErrorMessageForOverride(scopeId, nodeId) {\n  return getErrorMessageFor(\"override\", scopeId, nodeId);\n}\nfunction getErrorMessageFor(element, scopeId, nodeId) {\n  return `A code ${element} crashed while rendering due to the error above. To find and fix it, open the project in the editor \\u2192 open Quick Actions (press Cmd+K or Ctrl+K) \\u2192 paste this: ${formatCodeCrashLocationFromSourceNode(scopeId, nodeId)} \\u2192 click \\u201CShow Layer\\u201D.`;\n}\n\n// ../../library/src/modules/code-boundary/shouldWrapWithBoundary.ts\nfunction shouldWrapComponentWithBoundary(scopeIdOfThisComponent, scopeIdOfNearestExternalComponent, externalComponentLevel, isAuthoredByUser, isExternalComponent, inComponentSlot) {\n  const isLocalComponentInstance = isNodeLocalToProject(\n    scopeIdOfThisComponent,\n    scopeIdOfNearestExternalComponent,\n    externalComponentLevel,\n    inComponentSlot\n  );\n  return (\n    // case 1: all (local instances) of (local) (code components)\n    isLocalComponentInstance && !isExternalComponent && isAuthoredByUser || // case 2: all (local instances) of (external components)\n    isLocalComponentInstance && isExternalComponent\n  );\n}\nfunction shouldWrapOverrideWithBoundary(scopeIdOfNodeWithOverride, scopeIdOfNearestExternalComponent, externalComponentLevel, inComponentSlot) {\n  return isNodeLocalToProject(\n    scopeIdOfNodeWithOverride,\n    scopeIdOfNearestExternalComponent,\n    externalComponentLevel,\n    inComponentSlot\n  );\n}\nfunction isNodeLocalToProject(scopeIdOfThisNode, scopeIdOfNearestExternalComponent, externalComponentLevel, inComponentSlot) {\n  if (isUndefined(externalComponentLevel)) return true;\n  const nodeIsDefinedInSameScopeAsExternalComponent = scopeIdOfThisNode === scopeIdOfNearestExternalComponent;\n  if (\n    // We know a component instance is local when it\u2019s nested inside one external component,\n    externalComponentLevel === 1 && // and it lives in a slot,\n    inComponentSlot && // and it\u2019s a slot of *that sole external component* (and not some other local component\n    // with slots that lives inside the external component).\n    nodeIsDefinedInSameScopeAsExternalComponent\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// ../../library/src/modules/code-boundary/maybeWrapComponentWithCodeBoundary.tsx\nimport { jsx as jsx52 } from \"react/jsx-runtime\";\nfunction useMaybeWrapComponentWithCodeBoundary(children, scopeId, nodeId, isAuthoredByUser, isModuleExternal, inComponentSlot) {\n  const nearestExternalComponent = useNearestExternalComponent();\n  if (\n    // Those props will either be all undefined, which means the Container hasn\u2019t yet been\n    // re-serialized since we introduced code boundaries, and we should use the old\n    // ContainerErrorBoundary \u2013 or all defined, which means we have enough information to use\n    // the new boundary.\n    isUndefined(scopeId) || isUndefined(nodeId)\n  ) {\n    return /* @__PURE__ */ jsx52(DeprecatedContainerErrorBoundary, { children });\n  }\n  const shouldWrapWithBoundary = shouldWrapComponentWithBoundary(\n    scopeId,\n    nearestExternalComponent == null ? void 0 : nearestExternalComponent.scopeId,\n    nearestExternalComponent == null ? void 0 : nearestExternalComponent.level,\n    isAuthoredByUser ?? false,\n    isModuleExternal ?? false,\n    inComponentSlot ?? false\n  );\n  if (shouldWrapWithBoundary) {\n    children = /* @__PURE__ */ jsx52(\n      CodeComponentBoundary,\n      {\n        getErrorMessage: getErrorMessageForComponent.bind(null, scopeId, nodeId),\n        fallback: null,\n        children\n      }\n    );\n  }\n  if (isModuleExternal) {\n    children = /* @__PURE__ */ jsx52(IsExternalComponent, { scopeId, nodeId, children });\n  }\n  return children;\n}\n\n// ../../library/src/modules/Container.tsx\nimport { jsx as jsx53 } from \"react/jsx-runtime\";\nvar ContainerInner = /* @__PURE__ */ React59.forwardRef(\n  ({ children, layoutId, as, scopeId, nodeId, isAuthoredByUser, isModuleExternal, inComponentSlot, ...props }, ref) => {\n    const outerLayoutId = useConstant(() => layoutId ? `${layoutId}-container` : void 0);\n    const MotionComponent = htmlElementAsMotionComponent(as);\n    const clonedChildren = React59.Children.map(children, (child) => {\n      return React59.isValidElement(child) ? React59.cloneElement(child, { layoutId }) : child;\n    });\n    const childrenWithCodeBoundary = useMaybeWrapComponentWithCodeBoundary(\n      clonedChildren,\n      scopeId,\n      nodeId,\n      isAuthoredByUser,\n      isModuleExternal,\n      inComponentSlot\n    );\n    return /* @__PURE__ */ jsx53(MotionComponent, { layoutId: outerLayoutId, ...props, ref, children: /* @__PURE__ */ jsx53(ComponentContainerContext.Provider, { value: true, children: /* @__PURE__ */ jsx53(AutomaticLayoutIds, { enabled: false, children: /* @__PURE__ */ jsx53(LayoutGroup, { id: layoutId ?? \"\", inherit: \"id\", children: childrenWithCodeBoundary }) }) }) });\n  }\n);\nvar Container = /* @__PURE__ */ withGeneratedLayoutId(ContainerInner);\nvar SmartComponentScopedContainer = /* @__PURE__ */ React59.forwardRef((props, ref) => {\n  const {\n    as,\n    children,\n    // Code boundary-specific props\n    scopeId,\n    nodeId,\n    isAuthoredByUser,\n    rendersWithMotion,\n    isModuleExternal,\n    inComponentSlot,\n    // Other props, including some possibly used-passed ones\n    ...otherProps\n  } = props;\n  const childrenWithCodeBoundary = useMaybeWrapComponentWithCodeBoundary(\n    children,\n    scopeId,\n    nodeId,\n    isAuthoredByUser,\n    isModuleExternal,\n    inComponentSlot\n  );\n  const tagName = props.as ?? \"div\";\n  if (props.rendersWithMotion) {\n    const Component17 = htmlElementAsMotionComponent(tagName);\n    return /* @__PURE__ */ jsx53(\n      Component17,\n      {\n        ...otherProps,\n        ref,\n        style: props.style,\n        children: childrenWithCodeBoundary\n      }\n    );\n  } else {\n    const Component17 = tagName;\n    const { layoutId, layoutDependency, ...plainHTMLRenderableProps } = otherProps;\n    return (\n      // Passing `props.style` explicitly to allow TypeScript to narrow the type of `props.style` according\n      // to the value of `props.rendersWithMotion`.\n      /* @__PURE__ */ jsx53(Component17, { ...plainHTMLRenderableProps, ref, style: props.style, children: childrenWithCodeBoundary })\n    );\n  }\n});\n\n// ../../library/src/modules/CustomCursor.tsx\nimport {\n  createContext as createContext6,\n  memo as memo2,\n  startTransition as startTransition3,\n  useCallback as useCallback9,\n  useContext as useContext14,\n  useEffect as useEffect15,\n  useId,\n  useLayoutEffect as useLayoutEffect6,\n  useRef as useRef16,\n  useState as useState5\n} from \"react\";\nimport { jsx as jsx54, jsxs as jsxs13 } from \"react/jsx-runtime\";\nvar CustomCursorContext = /* @__PURE__ */ createContext6({\n  onRegisterCursors: () => () => {\n  },\n  registerCursors: () => {\n  }\n});\nvar replaceCursorClassName = \"framer-cursor-none\";\nvar cursorComponentClassName = \"framer-pointer-events-none\";\nfunction getActiveDefinitions(map2, previousDefinitions, newDefinitions) {\n  const allCursors = {};\n  for (const [, hashes] of map2) {\n    for (const hash2 of hashes) {\n      const value = allCursors[hash2] ?? previousDefinitions[hash2] ?? newDefinitions[hash2];\n      if (value) allCursors[hash2] = value;\n    }\n  }\n  return allCursors;\n}\nvar CustomCursorContextProvider = /* @__PURE__ */ memo2(function CustomCursorList({ children }) {\n  const value = useConstant(() => {\n    const events = /* @__PURE__ */ new Set();\n    let allCursors = {};\n    const byCaller = /* @__PURE__ */ new Map();\n    return {\n      onRegisterCursors: (callback) => {\n        callback(allCursors);\n        events.add(callback);\n        return () => events.delete(callback);\n      },\n      registerCursors: (cursors, id) => {\n        byCaller.set(id, Object.keys(cursors));\n        allCursors = getActiveDefinitions(byCaller, allCursors, cursors);\n        for (const callback of events) callback(allCursors);\n        return () => {\n          byCaller.delete(id);\n        };\n      }\n    };\n  });\n  const shouldReduceMotion = useReducedMotionConfig();\n  return /* @__PURE__ */ jsxs13(CustomCursorContext.Provider, { value, children: [\n    children,\n    !shouldReduceMotion && /* @__PURE__ */ jsx54(CustomCursorComponent, {})\n  ] });\n});\nvar CustomCursorHost = /* @__PURE__ */ (() => withCSS(\n  CustomCursorContextProvider,\n  [\n    `.${replaceCursorClassName}, .${replaceCursorClassName} * { cursor: none !important; }`,\n    `.${cursorComponentClassName}, .${cursorComponentClassName} * { pointer-events: none !important; }`\n  ],\n  \"framer-lib-cursors-host\"\n))();\nvar staticCursorStyle = /* @__PURE__ */ (() => ({\n  position: \"fixed\",\n  top: 0,\n  left: 0,\n  zIndex: 12 + 1,\n  // Max framer z-index + 1\n  pointerEvents: \"none\"\n}))();\nfunction customCursorReplacesNativeCursor(cursor) {\n  if (!cursor) return false;\n  if (cursor.placement || cursor.alignment) return false;\n  return true;\n}\nfunction valueForCursorAlignment(alignment) {\n  switch (alignment) {\n    case \"start\":\n      return \"0%\";\n    case \"center\":\n      return \"-50%\";\n    case \"end\":\n      return \"-100%\";\n    default:\n      assertNever(alignment);\n  }\n}\nfunction getCenteringTransform(placement, alignment = \"center\") {\n  switch (placement) {\n    case \"top\":\n      return `${valueForCursorAlignment(alignment)}, -100%`;\n    case \"right\":\n      return `0%, ${valueForCursorAlignment(alignment)}`;\n    case \"bottom\":\n      return `${valueForCursorAlignment(alignment)}, 0%`;\n    case \"left\":\n      return `-100%, ${valueForCursorAlignment(alignment)}`;\n    default:\n      return \"-50%, -50%\";\n  }\n}\nvar portalIdAttribute = \"data-framer-portal-id\";\nfunction getCursorHash(x, y) {\n  let el = document.elementFromPoint(x, y);\n  while (el) {\n    if (el === document.body) return void 0;\n    const value = el.getAttribute(\"data-framer-cursor\");\n    if (value) return value;\n    if (el.hasAttribute(portalIdAttribute)) {\n      const id = el.getAttribute(portalIdAttribute);\n      el = el.parentElement;\n      if (id) el = document.getElementById(id) ?? el;\n    } else {\n      el = el.parentElement;\n    }\n  }\n  return void 0;\n}\nfunction isEmptyObject(object) {\n  for (const _ in object) return false;\n  return true;\n}\nvar CustomCursorComponent = /* @__PURE__ */ memo2(function CustomCursorComponent2() {\n  const { onRegisterCursors } = useContext14(CustomCursorContext);\n  const [hasHoverCapability, setHasHoverCapability] = useState5(false);\n  const pointerX = useMotionValue(0);\n  const pointerY = useMotionValue(0);\n  const opacity = useMotionValue(0);\n  const cursorRef = useRef16(null);\n  const internalState = useRef16({ cursors: {}, cursorHash: void 0 });\n  const forceRender = useForceUpdate2();\n  useLayoutEffect6(() => {\n    const noHoverMQ = safeWindow.matchMedia(\"(any-hover: none)\");\n    function updateRender(e) {\n      if (e.matches) {\n        startTransition3(() => setHasHoverCapability(false));\n      } else {\n        setHasHoverCapability(true);\n      }\n    }\n    noHoverMQ.addEventListener(\"change\", updateRender);\n    if (!noHoverMQ.matches) {\n      setHasHoverCapability(true);\n    }\n    return () => {\n      noHoverMQ.removeEventListener(\"change\", updateRender);\n    };\n  }, []);\n  useEffect15(() => {\n    if (!hasHoverCapability) return;\n    let x2 = 0;\n    let y2 = 0;\n    function updateValues() {\n      pointerX.set(x2);\n      pointerY.set(y2);\n      animate(opacity, 1, { type: \"tween\", duration: 0.2 });\n    }\n    const updateVariant = () => {\n      if (isEmptyObject(internalState.current.cursors)) return;\n      const hash2 = getCursorHash(x2, y2);\n      if (hash2 !== internalState.current.cursorHash) {\n        internalState.current.cursorHash = hash2;\n        frame.update(() => forceRender());\n      }\n    };\n    function updateCursor(e) {\n      if (e.pointerType === \"touch\") {\n        cancelFrame(updateVariant);\n        return;\n      }\n      frame.read(updateVariant, true);\n      x2 = e.clientX;\n      y2 = e.clientY;\n      frame.update(updateValues);\n    }\n    function fireEventToTarget(e) {\n      if (e.target === cursorRef.current || !cursorRef.current) return;\n      const event = new PointerEvent(e.type, {\n        bubbles: true,\n        cancelable: e.cancelable,\n        pointerType: e.pointerType,\n        pointerId: e.pointerId,\n        composed: e.composed,\n        isPrimary: e.isPrimary,\n        buttons: e.buttons,\n        button: e.button\n      });\n      frame.update(() => {\n        var _a;\n        (_a = cursorRef.current) == null ? void 0 : _a.dispatchEvent(event);\n      });\n    }\n    safeWindow.addEventListener(\"pointermove\", updateCursor);\n    document.addEventListener(\"pointerdown\", fireEventToTarget);\n    document.addEventListener(\"pointerup\", fireEventToTarget);\n    frame.read(updateVariant, true);\n    return () => {\n      safeWindow.removeEventListener(\"pointermove\", updateCursor);\n      document.removeEventListener(\"pointerdown\", fireEventToTarget);\n      document.removeEventListener(\"pointerup\", fireEventToTarget);\n      cancelFrame(updateVariant);\n    };\n  }, [opacity, pointerX, pointerY, forceRender, hasHoverCapability]);\n  useEffect15(() => {\n    if (!hasHoverCapability) return;\n    function hideCursor() {\n      void animate(opacity, 0, { type: \"tween\", duration: 0.2 });\n    }\n    document.addEventListener(\"mouseleave\", hideCursor);\n    safeWindow.addEventListener(\"blur\", hideCursor);\n    return () => {\n      document.removeEventListener(\"mouseleave\", hideCursor);\n      safeWindow.removeEventListener(\"blur\", hideCursor);\n    };\n  }, [opacity, hasHoverCapability]);\n  useLayoutEffect6(() => {\n    function updateCursors(newCursors) {\n      internalState.current.cursors = newCursors;\n      internalState.current.cursorHash = !isEmptyObject(newCursors) ? getCursorHash(pointerX.get(), pointerY.get()) : null;\n      forceRender();\n    }\n    const unregister = onRegisterCursors(updateCursors);\n    return () => {\n      unregister();\n      document.body.classList.toggle(replaceCursorClassName, false);\n    };\n  }, [pointerX, pointerY, onRegisterCursors, forceRender]);\n  const { cursors, cursorHash } = internalState.current;\n  const cursor = cursorHash ? cursors[cursorHash] : null;\n  const replaceNativeCursor = customCursorReplacesNativeCursor(cursor);\n  useLayoutEffect6(() => {\n    if (!hasHoverCapability) return;\n    document.body.classList.toggle(replaceCursorClassName, replaceNativeCursor);\n  }, [replaceNativeCursor, hasHoverCapability]);\n  const Cursor = cursor == null ? void 0 : cursor.component;\n  const spring2 = (cursor == null ? void 0 : cursor.transition) ?? { duration: 0 };\n  const sprungX = useSpring(pointerX, spring2);\n  const sprungY = useSpring(pointerY, spring2);\n  const x = useTransform(() => {\n    var _a;\n    return sprungX.get() + (((_a = cursor == null ? void 0 : cursor.offset) == null ? void 0 : _a.x) ?? 0);\n  });\n  const y = useTransform(() => {\n    var _a;\n    return sprungY.get() + (((_a = cursor == null ? void 0 : cursor.offset) == null ? void 0 : _a.y) ?? 0);\n  });\n  const alignment = cursor == null ? void 0 : cursor.alignment;\n  const placement = cursor == null ? void 0 : cursor.placement;\n  const transformTemplate2 = useCallback9(\n    (_, t) => `translate(${getCenteringTransform(placement, alignment)}) ${t}`,\n    [alignment, placement]\n  );\n  if (!hasHoverCapability || !cursor || !Cursor) return null;\n  return /* @__PURE__ */ jsx54(\n    Cursor,\n    {\n      transformTemplate: transformTemplate2,\n      style: {\n        ...staticCursorStyle,\n        x,\n        y,\n        opacity\n      },\n      globalTapTarget: true,\n      variant: cursor == null ? void 0 : cursor.variant,\n      ref: cursorRef,\n      className: cursorComponentClassName\n    }\n  );\n});\nfunction useCustomCursors(webPageCursors) {\n  const { registerCursors } = useContext14(CustomCursorContext);\n  const cursors = useConstant(() => webPageCursors);\n  const id = useId();\n  useLayoutEffect6(() => {\n    return registerCursors(cursors, id);\n  }, [registerCursors, id]);\n}\n\n// ../../library/src/modules/Floating.tsx\nimport React60, { useContext as useContext15 } from \"react\";\nimport ReactDOM from \"react-dom\";\n\n// ../../library/src/render/types/Polygon.ts\nvar Polygon = {\n  /**\n   * Determine if the vertices are ordered clockwise or counter-clockwise. This works for simple\n   * (non-self-intersecting) convex polygons. If the polygon is collapsed into a line (signedArea = 0), we consider it\n   * clockwise for it works with how Framer draws the polygons.\n   * See: https://paulbourke.net/geometry/polygonmesh/\n   * @internal */\n  isClockwise: (points) => {\n    return Polygon.signedArea(points) <= 0;\n  },\n  /**\n   * Calculate the signed area to determine if the vertices go clockwise or counter clockwise. We flip all the y\n   * values because the y axis in our canvas coordinate is fipped.\n   * See: https://mathworld.wolfram.com/PolygonArea.html\n   * @internal */\n  signedArea: (points) => {\n    let sum = 0;\n    const len = points.length;\n    for (let i = 0; i < len; i++) {\n      const pointA = points[i];\n      const pointB = points[(i + 1) % len];\n      if (!pointA || !pointB) continue;\n      sum += pointA.x * -pointB.y - pointB.x * -pointA.y;\n    }\n    return 1 / 2 * sum;\n  },\n  /**\n   * Determine if some Point lies inside (or on) the polygon formed by other\n   * Points. The other points must be provided in a clockwise/counter\n   * clockwise order otherwise the line segments we create to test the polygon\n   * will not be representative.\n   *\n   * Solution for convex polygons based on:\n   * https://www.eecs.umich.edu/courses/eecs380/HANDOUTS/PROJ2/InsidePoly.html\n   *\n   * We create a line segment for each side of the polygon. The point we are\n   * testing must be on or on the same side of each line segment.\n   *\n   * @internal\n   */\n  containsPoint: (polygonPoints2, point) => {\n    var _a, _b, _c, _d;\n    let sign = void 0;\n    for (let i = 0; i < polygonPoints2.length; i++) {\n      if (Point.isEqual(polygonPoints2[i], point)) return true;\n      const x1 = ((_a = polygonPoints2[i]) == null ? void 0 : _a.x) ?? 0;\n      const y1 = ((_b = polygonPoints2[i]) == null ? void 0 : _b.y) ?? 0;\n      const i2 = (i + 1) % polygonPoints2.length;\n      if (Point.isEqual(polygonPoints2[i2], point)) return true;\n      const x2 = ((_c = polygonPoints2[i2]) == null ? void 0 : _c.x) ?? 0;\n      const y2 = ((_d = polygonPoints2[i2]) == null ? void 0 : _d.y) ?? 0;\n      const d = (point.x - x1) * (y2 - y1) - (point.y - y1) * (x2 - x1);\n      if (d === 0) continue;\n      const localSign = d > 0;\n      sign ??= localSign;\n      if (sign !== localSign) return false;\n    }\n    return true;\n  },\n  /** @internal */\n  intersects: (pointsA, pointsB) => {\n    if (pointsA.length < 1 || pointsB.length < 1) return false;\n    const boundingRectA = Rect.boundingRectFromPoints(pointsA);\n    const boundingRectB = Rect.boundingRectFromPoints(pointsB);\n    if (!Rect.intersects(boundingRectA, boundingRectB)) return false;\n    const edgesA = [];\n    const pointsALength = pointsA.length;\n    pointsA.forEach((point, index) => {\n      const nextPoint = pointsA[(index + 1) % pointsALength];\n      if (!nextPoint) return;\n      edgesA.push(Line(point, nextPoint));\n    });\n    const edgesB = [];\n    const pointsBLength = pointsB.length;\n    pointsB.forEach((point, index) => {\n      const nextPoint = pointsB[(index + 1) % pointsBLength];\n      if (!nextPoint) return;\n      edgesB.push(Line(point, nextPoint));\n    });\n    for (const edgeA of edgesA) {\n      for (const edgeB of edgesB) {\n        const intersection2 = Line.intersection(edgeA, edgeB, true);\n        if (intersection2) return true;\n      }\n    }\n    if (Polygon.containsPoint(pointsB, pointsA[0])) return true;\n    if (Polygon.containsPoint(pointsA, pointsB[0])) return true;\n    return false;\n  },\n  /** @internal */\n  contains: (pointsA, pointsB) => {\n    for (let i = 0; i < pointsB.length; i++) {\n      if (!Polygon.containsPoint(pointsA, pointsB[i])) return false;\n    }\n    return true;\n  },\n  /** @internal */\n  clipToRect: (points, rect) => {\n    const edges = Rect.edges(rect);\n    const seen = /* @__PURE__ */ new Set();\n    const count = points.length;\n    const clippedPoints = [];\n    const originalPoints = [];\n    for (let i = 0; i < count; i++) {\n      const point = points[i];\n      const nextPoint = points[(i + 1) % count];\n      if (Rect.containsPoint(rect, point)) {\n        const intersectionKey = keyForPoint(point);\n        seen.add(intersectionKey);\n        originalPoints.push(point);\n        if (Rect.containsPoint(rect, nextPoint)) continue;\n      }\n      const line = Line(point, nextPoint);\n      edges.forEach((edge) => {\n        const intersection2 = Line.intersection(line, edge, true);\n        if (!intersection2) return;\n        const intersectionKey = keyForPoint(intersection2);\n        if (seen.has(intersectionKey)) return;\n        seen.add(intersectionKey);\n        clippedPoints.push(intersection2);\n      });\n    }\n    if (clippedPoints.length === 0) return originalPoints;\n    Rect.points(rect).forEach((point) => {\n      if (!Polygon.containsPoint(points, point)) return;\n      seen.add(keyForPoint(point));\n      clippedPoints.push(point);\n    });\n    return Point.sortClockwise([...originalPoints, ...clippedPoints]);\n  }\n};\nfunction keyForPoint(point) {\n  return `${point == null ? void 0 : point.x}-${point == null ? void 0 : point.y}`;\n}\n\n// ../../library/src/modules/floatingPositionSafeAreaStyle.ts\nfunction invertPlacement(placement) {\n  switch (placement) {\n    case \"top\":\n      return \"bottom\";\n    case \"right\":\n      return \"left\";\n    case \"bottom\":\n      return \"top\";\n    case \"left\":\n      return \"right\";\n    default:\n      assertNever(placement);\n  }\n}\nfunction preferredOffset(point, length, max, collisionDetectionPadding = 0) {\n  const min = Math.max(point, collisionDetectionPadding);\n  if (point < min) return min;\n  const size = length + collisionDetectionPadding;\n  if (min + size > max) return max - size;\n  return min;\n}\nfunction collisionAxis(placement, rect, windowSize) {\n  switch (placement) {\n    case \"top\":\n    case \"bottom\":\n      if (rect.y < 0 || rect.y + rect.height > windowSize.height) return \"y\";\n      return void 0;\n    case \"left\":\n    case \"right\":\n      if (rect.x < 0 || rect.x + rect.width > windowSize.width) return \"x\";\n      return void 0;\n    default:\n      assertNever(placement);\n  }\n}\nfunction getPlacementAndOffsetAvoidingScreenCollision(rect, placement, offset, windowSize) {\n  switch (collisionAxis(placement, rect, windowSize)) {\n    case \"x\":\n      return {\n        placement: invertPlacement(placement),\n        x: offset.x * -1,\n        y: offset.y\n      };\n    case \"y\":\n      return {\n        placement: invertPlacement(placement),\n        x: offset.x,\n        y: offset.y * -1\n      };\n    default:\n      return {\n        placement,\n        x: offset.x,\n        y: offset.y\n      };\n  }\n}\nfunction getSafePlacementFloatingPositionRect(anchor, element, placement, alignment, offset, collisionDetectionSize, collisionDetectionPadding) {\n  const rebasedRect = Rect.rebaseRectOnto(element, anchor, placement, alignment);\n  const preferredRect = {\n    x: rebasedRect.x + offset.x,\n    y: rebasedRect.y + offset.y,\n    width: element.width,\n    height: element.height\n  };\n  if (!collisionDetectionSize) return [placement, preferredRect];\n  const {\n    x,\n    y,\n    placement: safePlacement\n  } = getPlacementAndOffsetAvoidingScreenCollision(preferredRect, placement, offset, collisionDetectionSize);\n  const rebasedCollisionRect = Rect.rebaseRectOnto(element, anchor, safePlacement, alignment);\n  return [\n    safePlacement,\n    {\n      x: preferredOffset(\n        rebasedCollisionRect.x + x,\n        element.width,\n        collisionDetectionSize.width,\n        collisionDetectionPadding\n      ),\n      y: preferredOffset(\n        rebasedCollisionRect.y + y,\n        element.height,\n        collisionDetectionSize.height,\n        collisionDetectionPadding\n      ),\n      width: element.width,\n      height: element.height\n    }\n  ];\n}\nfunction preferredPoint(a, b, points) {\n  if (Polygon.containsPoint([b, ...points], a)) return b;\n  return a;\n}\nvar minInset = 5;\nfunction safeAreaPolygonConstraints(rect) {\n  return {\n    constrainX: (value) => Math.min(Math.max(value, rect.x + minInset), rect.x + rect.width - minInset),\n    constrainY: (value) => Math.min(Math.max(value, rect.y + minInset), rect.y + rect.height - minInset)\n  };\n}\nvar mouseOffset = 4;\nfunction polygonPoints({ x, y }, placement, rect, { constrainX, constrainY }) {\n  const [tl, bl, tr, br] = Rect.points(rect);\n  switch (placement) {\n    case \"left\": {\n      const mousePoint = { x: constrainX(x - mouseOffset), y };\n      return [mousePoint, preferredPoint(br, bl, [mousePoint, tr]), preferredPoint(tr, tl, [mousePoint, br])];\n    }\n    case \"right\": {\n      const mousePoint = { x: constrainX(x + mouseOffset), y };\n      return [mousePoint, preferredPoint(bl, br, [mousePoint, tl]), preferredPoint(tl, tr, [mousePoint, bl])];\n    }\n    case \"top\": {\n      const mousePoint = { x, y: constrainY(y - mouseOffset) };\n      return [mousePoint, preferredPoint(bl, tl, [mousePoint, br]), preferredPoint(br, tr, [mousePoint, bl])];\n    }\n    case \"bottom\": {\n      const mousePoint = { x, y: constrainY(y + mouseOffset) };\n      return [mousePoint, preferredPoint(tl, bl, [mousePoint, tr]), preferredPoint(tr, br, [mousePoint, tl])];\n    }\n    default:\n      assertNever(placement);\n  }\n}\nfunction safeAreaInset(placement, delta) {\n  switch (placement) {\n    case \"left\":\n      return `${Math.min(delta.y, 0)}px auto auto 0px`;\n    case \"right\":\n      return `${Math.min(delta.y, 0)}px 0px auto auto`;\n    case \"top\":\n      return `0px auto auto ${Math.min(delta.x, 0)}px`;\n    case \"bottom\":\n      return `auto auto 0px ${Math.min(delta.x, 0)}px`;\n    default:\n      assertNever(placement);\n  }\n}\nfunction floatingPositionSafeAreaStyle(x, y, placement, anchorRect, floatingRect) {\n  const minX = Math.min(floatingRect.x, anchorRect.x);\n  const minY = Math.min(floatingRect.y, anchorRect.y);\n  const rect = Rect.merge(anchorRect, floatingRect);\n  const points = polygonPoints({ x, y }, placement, floatingRect, safeAreaPolygonConstraints(anchorRect)).map((point) => `${point.x - minX}px ${point.y - minY}px`).join(\", \");\n  return {\n    height: `${rect.height}px`,\n    width: `${rect.width}px`,\n    clipPath: `polygon(${points})`,\n    inset: safeAreaInset(placement, Rect.delta(anchorRect, floatingRect))\n  };\n}\nfunction valueForFloatingAlignment(alignment) {\n  switch (alignment) {\n    case \"start\":\n      return 0;\n    case \"center\":\n      return 0.5;\n    case \"end\":\n      return 1;\n    default:\n      assertNever(alignment);\n  }\n}\nfunction motionOriginFromFloatingPosition(placement = \"bottom\", alignment = \"center\") {\n  switch (placement) {\n    case \"top\":\n      return { originX: valueForFloatingAlignment(alignment), originY: 1 };\n    case \"right\":\n      return { originX: 0, originY: valueForFloatingAlignment(alignment) };\n    case \"bottom\":\n      return { originX: valueForFloatingAlignment(alignment), originY: 0 };\n    case \"left\":\n      return { originX: 1, originY: valueForFloatingAlignment(alignment) };\n    default:\n      assertNever(placement);\n  }\n}\n\n// ../../library/src/modules/Floating.tsx\nimport { jsx as jsx55, jsxs as jsxs14 } from \"react/jsx-runtime\";\nfunction getAncestorInfo(anchorRef) {\n  var _a;\n  let el = anchorRef.current;\n  const info = {\n    position: \"absolute\",\n    scrolls: false\n  };\n  while (el) {\n    if ((el == null ? void 0 : el.tagName) === \"BODY\") return info;\n    if (((_a = getComputedStyle(el)) == null ? void 0 : _a.position) === \"fixed\") info.position = \"fixed\";\n    if (el.scrollWidth > el.clientWidth || el.scrollHeight > el.clientHeight) info.scrolls = true;\n    if (info.scrolls && info.position === \"fixed\") return info;\n    el = el.parentElement;\n  }\n  return info;\n}\nfunction createAnimationFrameLoop(onRead) {\n  const startLoop = () => frame.read(onRead, true);\n  const cancelLoop = () => cancelFrame(onRead);\n  return [startLoop, cancelLoop];\n}\nfunction createUpdateSafeArea(safeAreaRef) {\n  let x = 0;\n  let y = 0;\n  return (anchorRect, calculatedRect, placement, event) => {\n    var _a;\n    if (!((_a = safeAreaRef.current) == null ? void 0 : _a.style)) return;\n    x = (event == null ? void 0 : event.clientX) ?? x;\n    y = (event == null ? void 0 : event.clientY) ?? y;\n    Object.assign(\n      safeAreaRef.current.style,\n      floatingPositionSafeAreaStyle(x, y, placement, anchorRect, calculatedRect)\n    );\n  };\n}\nfunction updatePosition(floatingPositionRef, position, rect) {\n  if (!floatingPositionRef.current) return;\n  Object.assign(floatingPositionRef.current.style, {\n    position,\n    visibility: \"visible\",\n    // Append \"px\" because we are assigning this object straight to style.\n    left: ((rect == null ? void 0 : rect.x) ?? 0) + (position === \"fixed\" ? 0 : safeWindow.scrollX) + \"px\",\n    top: ((rect == null ? void 0 : rect.y) ?? 0) + (position === \"fixed\" ? 0 : safeWindow.scrollY) + \"px\"\n  });\n}\nvar FloatingStackingContext = /* @__PURE__ */ React60.createContext(/* @__PURE__ */ new Set());\nfunction useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, { safeArea, onDismiss }) {\n  const descendantStackingContext = useConstant(() => /* @__PURE__ */ new Set());\n  const ancestorStackingContext = React60.useContext(FloatingStackingContext);\n  const [isPresent, safeToRemove] = usePresence();\n  React60.useEffect(() => {\n    if (isPresent) {\n      if (!floatingPositionRef.current) return;\n      floatingPositionRef.current.style.pointerEvents = \"\";\n      ancestorStackingContext.add(floatingPositionRef.current);\n    } else {\n      if (!floatingPositionRef.current) return;\n      floatingPositionRef.current.style.pointerEvents = \"none\";\n      ancestorStackingContext.delete(floatingPositionRef.current);\n      safeToRemove();\n    }\n  }, [isPresent, safeToRemove, floatingPositionRef, ancestorStackingContext]);\n  React60.useEffect(() => {\n    if (!safeArea) {\n      const handleEscape = (e) => {\n        if (e.key !== \"Escape\") return;\n        onDismiss();\n      };\n      safeWindow.addEventListener(\"keyup\", handleEscape);\n      return () => safeWindow.removeEventListener(\"keyup\", handleEscape);\n    }\n    let latestEvent;\n    function maybeDismiss() {\n      if (!latestEvent || descendantStackingContext.size !== 0) return;\n      for (const element of document.elementsFromPoint(latestEvent.x, latestEvent.y)) {\n        if (element === anchorRef.current) return;\n        if (element === floatingPositionRef.current) return;\n        if (element === safeAreaRef.current) return;\n      }\n      onDismiss();\n    }\n    function scheduleMaybeDismiss(event) {\n      latestEvent = event;\n      frame.read(maybeDismiss);\n    }\n    safeWindow.addEventListener(\"mousemove\", scheduleMaybeDismiss);\n    return () => {\n      safeWindow.removeEventListener(\"mousemove\", scheduleMaybeDismiss);\n    };\n  }, [onDismiss, safeArea, anchorRef, safeAreaRef, floatingPositionRef]);\n  return descendantStackingContext;\n}\nfunction makeGetSafePlacementFloatingPositionRect({\n  placement,\n  alignment,\n  offset,\n  collisionDetectionSize,\n  collisionDetectionPadding\n}) {\n  return (anchor, element) => getSafePlacementFloatingPositionRect(\n    anchor,\n    element,\n    placement,\n    alignment,\n    offset,\n    collisionDetectionSize,\n    collisionDetectionPadding\n  );\n}\nfunction useDynamicMotionOrigin(initialPlacement, alignment) {\n  return useConstant(() => {\n    const { originX, originY } = motionOriginFromFloatingPosition(initialPlacement, alignment);\n    const origin = { x: motionValue(originX), y: motionValue(originY) };\n    return [\n      origin,\n      (placement) => {\n        const values = motionOriginFromFloatingPosition(placement, alignment);\n        origin.x.set(values.originX);\n        origin.y.set(values.originY);\n      }\n    ];\n  });\n}\nfunction childrenWithOrigin(child, { x, y }) {\n  if (!child || !isReactChild(child) || !isReactElement(child)) return null;\n  if (!isObject2(child.props.style) && !isUndefined(child.props.style)) return null;\n  const style = {\n    ...child.props.style,\n    originX: x,\n    originY: y\n  };\n  return React60.cloneElement(child, { style });\n}\nvar overlayContainerId = \"overlay\";\nvar templateOverlayContainerId = \"template-overlay\";\nfunction getPortalContainer(deprecatedSelector, inComponent) {\n  if (inComponent || isUndefined(deprecatedSelector)) {\n    const container2 = document.querySelector(`#${templateOverlayContainerId}`) ?? document.querySelector(`#${overlayContainerId}`);\n    if (container2) return container2;\n  }\n  const container = isString(deprecatedSelector) ? document.querySelector(deprecatedSelector) : void 0;\n  if (container) return container;\n  return document.body;\n}\nfunction Floating({\n  alignment,\n  placement,\n  safeArea,\n  offsetX,\n  offsetY,\n  anchorRef,\n  className: className2,\n  children,\n  portalSelector,\n  zIndex,\n  collisionDetection = false,\n  collisionDetectionPadding,\n  onDismiss,\n  ...rest\n}) {\n  const floatingPositionRef = React60.useRef(null);\n  const safeAreaRef = React60.useRef(null);\n  const contentRef = React60.useRef(null);\n  const [origin, updateOrigin] = useDynamicMotionOrigin(placement, alignment);\n  React60.useLayoutEffect(() => {\n    if (!refHasValue(anchorRef) || !contentRef.current || !placement || !alignment) return;\n    const { position, scrolls } = getAncestorInfo(anchorRef);\n    const elementRect = contentRef.current.getBoundingClientRect();\n    const initialAnchorRect = anchorRef.current.getBoundingClientRect();\n    const offset = {\n      x: offsetX ?? 0,\n      y: offsetY ?? 0\n    };\n    const getSafePlacementRect = makeGetSafePlacementFloatingPositionRect({\n      placement,\n      alignment,\n      offset,\n      collisionDetectionSize: collisionDetection ? { width: safeWindow.innerWidth, height: safeWindow.innerHeight } : void 0,\n      collisionDetectionPadding\n    });\n    const [initialSafePlacement, initialCalculatedRect] = getSafePlacementRect(initialAnchorRect, elementRect);\n    frame.update(() => {\n      updateOrigin(initialSafePlacement);\n    });\n    frame.render(() => {\n      if (!floatingPositionRef.current) return;\n      updatePosition(floatingPositionRef, position, initialCalculatedRect);\n    });\n    const updateSafeArea = createUpdateSafeArea(safeAreaRef);\n    let anchorRect = initialAnchorRect;\n    let safePlacement;\n    let calculatedRect;\n    let latestEvent;\n    const onUpdate = () => {\n      updateOrigin(safePlacement);\n    };\n    const onRender = () => {\n      updatePosition(floatingPositionRef, position, calculatedRect);\n      if (safeArea) updateSafeArea(anchorRect, calculatedRect, safePlacement, latestEvent);\n      latestEvent = void 0;\n    };\n    const onRead = () => {\n      anchorRect = anchorRef.current.getBoundingClientRect();\n      const safePlacementAndRect = getSafePlacementRect(anchorRect, elementRect);\n      safePlacement = safePlacementAndRect[0];\n      calculatedRect = safePlacementAndRect[1];\n      frame.update(onUpdate);\n      frame.render(onRender);\n    };\n    const [loop, cancelAnimationFrameLoop] = createAnimationFrameLoop(onRead);\n    if (scrolls) loop == null ? void 0 : loop();\n    if (!safeArea) return () => cancelAnimationFrameLoop == null ? void 0 : cancelAnimationFrameLoop();\n    const handleMouseMove = (event) => {\n      latestEvent = event;\n      frame.read(onRead);\n    };\n    const anchor = anchorRef.current;\n    anchor.addEventListener(\"mousemove\", handleMouseMove);\n    return () => {\n      cancelAnimationFrameLoop == null ? void 0 : cancelAnimationFrameLoop();\n      anchor.removeEventListener(\"mousemove\", handleMouseMove);\n    };\n  }, [\n    safeArea,\n    placement,\n    alignment,\n    offsetX,\n    offsetY,\n    anchorRef,\n    collisionDetection,\n    collisionDetectionPadding,\n    updateOrigin\n  ]);\n  const descendantContext = useDismissFloatingLayer(anchorRef, floatingPositionRef, safeAreaRef, {\n    safeArea,\n    onDismiss\n  });\n  const inComponent = useContext15(ComponentContainerContext);\n  return ReactDOM.createPortal(\n    /* @__PURE__ */ jsxs14(\n      motion.div,\n      {\n        ref: floatingPositionRef,\n        className: className2,\n        style: {\n          // Start from the top left of the screen to prevent jumps.\n          top: 0,\n          left: 0,\n          // Initially rendered as hidden, but the layout effect will set\n          // to visible when the position is calculated.\n          visibility: \"hidden\",\n          width: \"auto\",\n          height: \"auto\",\n          position: \"absolute\",\n          zIndex\n        },\n        ...rest,\n        children: [\n          safeArea ? /* @__PURE__ */ jsx55(\"div\", { ref: safeAreaRef, style: { position: \"absolute\" }, \"data-safearea\": true }) : (\n            // biome-ignore lint/a11y/useKeyWithClickEvents: overlays don't support key events yet.\n            /* @__PURE__ */ jsx55(\"div\", { style: { position: \"fixed\", inset: 0 }, \"aria-hidden\": true, onClick: onDismiss })\n          ),\n          /* @__PURE__ */ jsx55(FloatingStackingContext.Provider, { value: descendantContext, children: /* @__PURE__ */ jsx55(\"div\", { ref: contentRef, children: childrenWithOrigin(children, origin) }) })\n        ]\n      }\n    ),\n    getPortalContainer(portalSelector, inComponent)\n  );\n}\n\n// ../../library/src/modules/Instance.tsx\nimport React61 from \"react\";\nimport { jsx as jsx56 } from \"react/jsx-runtime\";\nvar Instance = /* @__PURE__ */ React61.forwardRef(function Instance2({ Component: Component17, ...props }, ref) {\n  return Component17 ? /* @__PURE__ */ jsx56(Component17, { ...props, ref }) : null;\n});\n\n// ../../library/src/modules/GracefullyDegradingErrorBoundary.tsx\nimport { Component as Component14 } from \"react\";\nimport { jsx as jsx57 } from \"react/jsx-runtime\";\nvar GracefullyDegradingErrorBoundary = class extends Component14 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n    __publicField(this, \"message\", \"Made UI non-interactive due to an error\");\n    __publicField(this, \"messageFatal\", \"Fatal error\");\n    __publicField(this, \"messageReport\", \"If you are the author of this website, please report this issue to the Framer team via https://www.framer.com/contact/\");\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  componentDidCatch(error) {\n    window.__framer_hadFatalError = true;\n    if (\"cause\" in error) {\n      error = error.cause;\n    }\n    console.error(`${isBot ? this.message : this.messageFatal}. ${this.messageReport}. Error:\n\n`, error);\n    const sampleRate = Math.random();\n    if (sampleRate > 0.5) return;\n    const stack = error instanceof Error && typeof error.stack === \"string\" ? error.stack : null;\n    sendTrackingEvent(\"published_site_load_error\", {\n      message: String(error),\n      stack\n    });\n  }\n  render() {\n    var _a, _b;\n    const error = this.state.error;\n    if (!error) return this.props.children;\n    const unwrappedError = \"cause\" in error ? error.cause : error;\n    const closingHTMLComment = /-->/gu;\n    const closingHTMLCommentReplacement = \"--!>\";\n    const dom = isBot ? ((_a = document.getElementById(\"main\")) == null ? void 0 : _a.innerHTML) || \"\" : (\n      // @FIXME: We should have a UI for fatal error recovery.\n      // We don't have a UI for fatal error recovery currently, so we just render nothing for regular users. If we were to throw, React would unmount too.\n      // We do render instead of throwing, so that:\n      // - `componentDidCatch` runs (if we throw here, it does not)\n      // - we can skip logging `Recoverable error during hydration`, because we know it was fatal.\n      \"\"\n    );\n    return (\n      // This has the caveat that we will slightly modify the DOM, but it appears to be fine in this case.\n      // The alternative would be to queue a new task that runs after and then set the innerHTML (= avoids the dummy-div), but that means we'll have DOM -> no DOM -> DOM transitions. With the div, we have DOM -> DOM and remove possible race-conditions.\n      /* @__PURE__ */ jsx57(\n        \"div\",\n        {\n          style: { display: \"contents\" },\n          suppressHydrationWarning: true,\n          dangerouslySetInnerHTML: {\n            __html: `<!-- DOM replaced by GracefullyDegradingErrorBoundary due to \"${unwrappedError.message.replace(closingHTMLComment, closingHTMLCommentReplacement)}\". ${this.messageReport}: --><!-- Stack: ${(_b = error.stack) == null ? void 0 : _b.replace(closingHTMLComment, \"--!>\")} -->` + dom\n          }\n        }\n      )\n    );\n  }\n};\n\n// ../../library/src/modules/LazyValue.ts\nvar LazyValue = class _LazyValue {\n  constructor(resolver) {\n    this.resolver = resolver;\n    __publicField(this, \"status\");\n  }\n  static is(value) {\n    return value instanceof _LazyValue;\n  }\n  /** Preload the value so it can be read() later. */\n  preload() {\n    if (this.status) {\n      const status = this.status;\n      if (status.type !== \"pending\") return;\n      return status.promise;\n    }\n    const promise = this.resolver().then(\n      (value) => {\n        this.status = {\n          type: \"fulfilled\",\n          value\n        };\n      },\n      (error) => {\n        this.status = {\n          type: \"rejected\",\n          error\n        };\n      }\n    );\n    this.status = {\n      type: \"pending\",\n      promise\n    };\n    return promise;\n  }\n  /** Synchronously read the value after calling preload() before. */\n  read() {\n    const status = this.status;\n    if (!status) {\n      throw new Error(\"Need to call preload() before read()\");\n    }\n    switch (status.type) {\n      case \"pending\":\n        throw new Error(\"Need to wait for preload() to resolve\");\n      case \"fulfilled\":\n        return status.value;\n      case \"rejected\":\n        throw status.error;\n      default:\n        assertNever(status);\n    }\n  }\n  async readAsync() {\n    const promise = this.preload();\n    if (promise) await promise;\n    return this.read();\n  }\n  use() {\n    const promise = this.preload();\n    if (promise) throw promise;\n    return this.read();\n  }\n};\n\n// ../../library/src/modules/Link/index.tsx\nimport { forwardRef as forwardRef5, isValidElement as isValidElement5, useMemo as useMemo11 } 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/ChildrenCanSuspend.tsx\nimport { forwardRef as forwardRef4 } from \"react\";\nimport { jsx as jsx58 } from \"react/jsx-runtime\";\nfunction ChildrenCanSuspend({ children }) {\n  return /* @__PURE__ */ jsx58(SuspenseThatPreservesDom, { children });\n}\nfunction withChildrenCanSuspend(Component17) {\n  return forwardRef4(function withChildrenCanSuspendInner(props, ref) {\n    return /* @__PURE__ */ jsx58(ChildrenCanSuspend, { children: /* @__PURE__ */ jsx58(Component17, { ...props, ref }) });\n  });\n}\n\n// ../../library/src/modules/LinkToWebPage.ts\nvar linkKey = \"webPageId\";\nfunction isLinkToWebPage(link) {\n  return Boolean(link && typeof link === \"object\" && linkKey in link);\n}\n\n// ../../library/src/modules/observeRouteForPreloading.ts\nvar PRELOAD_AFTER_MS = 500;\nvar OBSERVER_THRESHOLD = 0.9;\nvar LOW_MEMORY_THRESHOLD = 1.7;\nvar MAX_CONCURRENT_PRELOADS_SLOW_NETWORK = 4;\nvar MAX_CONCURRENT_PRELOADS_FAST_NETWORK = Infinity;\nvar nodeToRoute = /* @__PURE__ */ new WeakMap();\nvar preloadedRoutes = /* @__PURE__ */ new Set();\nvar routeToNodesInViewport = /* @__PURE__ */ new Map();\nfunction getObserveRouteForPreloadingFn() {\n  var _a;\n  const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection || {};\n  const lowDeviceMemory = navigator.deviceMemory && navigator.deviceMemory > LOW_MEMORY_THRESHOLD;\n  let effectiveType, preloadDisabled, maxPreloadAmount;\n  function updateConnection() {\n    effectiveType = connection.effectiveType || \"\";\n    preloadDisabled = connection.saveData || effectiveType.includes(\"2g\");\n    maxPreloadAmount = effectiveType === \"3g\" || lowDeviceMemory ? MAX_CONCURRENT_PRELOADS_SLOW_NETWORK : MAX_CONCURRENT_PRELOADS_FAST_NETWORK;\n  }\n  (_a = connection.addEventListener) == null ? void 0 : _a.call(connection, \"change\", updateConnection);\n  updateConnection();\n  const observer = new IntersectionObserver(onPreloadIntersectionChange, { threshold: OBSERVER_THRESHOLD });\n  let activePreloadsAmount = 0;\n  async function preloadTimeout(route, target) {\n    if (preloadDisabled) return;\n    const nodesInViewport = routeToNodesInViewport.get(route);\n    if (!(nodesInViewport == null ? void 0 : nodesInViewport.size) || preloadedRoutes.has(route)) return;\n    ++activePreloadsAmount;\n    preloadedRoutes.add(route);\n    const preloadDone = preloadRoute(route).catch(() => {\n      if (false) {\n        throw new Error(\n          \"Error in preloadRoute during preloadTimeout. This should never happen as it introduces bugs. Please make sure preloadRoute does not throw.\"\n        );\n      }\n    });\n    observer.unobserve(target);\n    nodeToRoute.delete(target);\n    for (const node of nodesInViewport) {\n      observer.unobserve(node);\n      nodeToRoute.delete(node);\n    }\n    nodesInViewport.clear();\n    routeToNodesInViewport.delete(route);\n    await preloadDone;\n    --activePreloadsAmount;\n  }\n  function onPreloadIntersectionChange(entries) {\n    var _a2;\n    for (const entry of entries) {\n      const target = entry.target;\n      const route = nodeToRoute.get(target);\n      if (!route || preloadedRoutes.has(route)) {\n        observer.unobserve(target);\n        nodeToRoute.delete(target);\n        continue;\n      }\n      const nodes = routeToNodesInViewport.get(route);\n      const amountOfNodesInViewport = ((_a2 = routeToNodesInViewport.get(route)) == null ? void 0 : _a2.size) ?? 0;\n      if (entry.isIntersecting) {\n        if (activePreloadsAmount >= maxPreloadAmount) continue;\n        if (nodes) nodes.add(target);\n        else routeToNodesInViewport.set(route, /* @__PURE__ */ new Set([target]));\n        setTimeout(preloadTimeout.bind(void 0, route, target), PRELOAD_AFTER_MS);\n      } else {\n        if (nodes) nodes.delete(target);\n        if (amountOfNodesInViewport <= 1) routeToNodesInViewport.delete(route);\n      }\n    }\n  }\n  return (route, node) => {\n    if (preloadedRoutes.has(route)) return;\n    nodeToRoute.set(node, route);\n    observer.observe(node);\n    return () => {\n      nodeToRoute.delete(node);\n      observer.unobserve(node);\n    };\n  };\n}\nvar observeRouteForPreloading = (\n  // this also guards `window`\n  !shouldPreloadBasedOnUA || typeof IntersectionObserver === \"undefined\" ? null : /* @__PURE__ */ getObserveRouteForPreloadingFn()\n);\n\n// ../../library/src/modules/resolveSlug.ts\nvar noLocale = Symbol(\"noLocale\");\nvar resolveSlugCache = /* @__PURE__ */ new Map();\nfunction resolveSlug(unresolvedSlug, utilsByCollectionId, activeLocale) {\n  var _a, _b;\n  const cache2 = (_b = (_a = resolveSlugCache == null ? void 0 : resolveSlugCache.get((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale)) == null ? void 0 : _a.get(unresolvedSlug.collectionId)) == null ? void 0 : _b.get(unresolvedSlug.collectionItemId);\n  if (cache2) return cache2;\n  const collectionCache = resolveSlugCache.get((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale) ?? /* @__PURE__ */ new Map();\n  resolveSlugCache.set((activeLocale == null ? void 0 : activeLocale.id) ?? noLocale, collectionCache);\n  const collectionItemCache = collectionCache.get(unresolvedSlug.collectionId) ?? /* @__PURE__ */ new Map();\n  collectionCache.set(unresolvedSlug.collectionId, collectionItemCache);\n  const lazyValue = new LazyValue(async () => {\n    try {\n      const getUtils = utilsByCollectionId[unresolvedSlug.collectionId];\n      if (!getUtils) {\n        throw new Error(`Key not found in collection utils for collection id: \"${unresolvedSlug.collectionId}\"`);\n      }\n      const utils = await getUtils();\n      if (!utils) throw new Error(\"Collection does not contain utility functions\");\n      const slug = await utils.getSlugByRecordId(unresolvedSlug.collectionItemId, activeLocale ?? void 0);\n      return slug;\n    } catch (error) {\n      console.warn(`Failed to resolve slug: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n      return void 0;\n    }\n  });\n  collectionItemCache.set(unresolvedSlug.collectionItemId, lazyValue);\n  return lazyValue;\n}\n\n// ../../library/src/modules/Link/resolveSlugs.ts\nasync function resolveSlugs(unresolvedPathSlugs, unresolvedHashSlugs, collectionUtils, activeLocale) {\n  async function handleSlugs(unresolvedSlugs) {\n    if (!unresolvedSlugs || !collectionUtils) return {};\n    const result = {};\n    for (const slugKey in unresolvedSlugs) {\n      const unresolvedSlug = unresolvedSlugs[slugKey];\n      assert(unresolvedSlug, \"unresolvedSlug should be defined\");\n      const lazyValue = resolveSlug(unresolvedSlug, collectionUtils, activeLocale);\n      await lazyValue.preload();\n      const value = lazyValue.read();\n      if (value) {\n        result[slugKey] = value;\n      }\n    }\n    return result;\n  }\n  const [pathResult, slugResult] = await Promise.allSettled([\n    handleSlugs(unresolvedPathSlugs),\n    handleSlugs(unresolvedHashSlugs)\n  ]);\n  return {\n    path: pathResult.status === \"fulfilled\" ? pathResult.value : void 0,\n    hash: slugResult.status === \"fulfilled\" ? slugResult.value : void 0\n  };\n}\nfunction resolveSlugsWithSuspense(unresolvedPathSlugs, unresolvedHashSlugs, collectionUtils, activeLocale) {\n  const promises = [];\n  function handleSlugs(unresolvedSlugs) {\n    if (!unresolvedSlugs || !collectionUtils) return void 0;\n    const result2 = {};\n    for (const slugKey in unresolvedSlugs) {\n      const unresolvedSlug = unresolvedSlugs[slugKey];\n      assert(unresolvedSlug, \"unresolvedSlug should be defined\");\n      const lazyValue = resolveSlug(unresolvedSlug, collectionUtils, activeLocale);\n      const promise = lazyValue.preload();\n      if (promise) {\n        promises.push(promise);\n      } else {\n        const value = lazyValue.read();\n        if (value) {\n          result2[slugKey] = value;\n        }\n      }\n    }\n    return result2;\n  }\n  const result = {\n    path: handleSlugs(unresolvedPathSlugs),\n    hash: handleSlugs(unresolvedHashSlugs)\n  };\n  if (promises.length) {\n    throw Promise.allSettled(promises);\n  }\n  return result;\n}\n\n// ../../library/src/modules/Link/urlChecks.tsx\nfunction isInternalURL(href) {\n  if (href === void 0) return false;\n  if (href.startsWith(\"#\") || href.startsWith(\"/\") || href.startsWith(\".\")) 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}\n\n// ../../library/src/modules/Link/findMatchingRouteAttributes.tsx\nasync function findMatchingRouteAttributesForWebPageLink(router, currentRoute, pageLink, activeLocale, implicitPathVariables) {\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const resolvedSlugs = await resolveSlugs(\n    unresolvedPathSlugs,\n    unresolvedHashSlugs,\n    router.collectionUtils,\n    activeLocale\n  );\n  return getRouteAttributes(\n    router,\n    currentRoute,\n    webPageId,\n    hash2,\n    implicitPathVariables,\n    pathVariables,\n    hashVariables,\n    resolvedSlugs\n  );\n}\nfunction findMatchingRouteAttributesForWebPageLinkWithSuspense(router, currentRoute, pageLink, activeLocale, implicitPathVariables) {\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const resolvedSlugs = resolveSlugsWithSuspense(\n    unresolvedPathSlugs,\n    unresolvedHashSlugs,\n    router.collectionUtils,\n    activeLocale\n  );\n  return getRouteAttributes(\n    router,\n    currentRoute,\n    webPageId,\n    hash2,\n    implicitPathVariables,\n    pathVariables,\n    hashVariables,\n    resolvedSlugs\n  );\n}\nfunction findMatchingRouteAttributesForResolvedPath(router, path, implicitPathVariables) {\n  if (!router.routes || !router.getRoute) {\n    return;\n  }\n  const isInternal = isInternalURL(path);\n  if (!isInternal) {\n    return;\n  }\n  try {\n    const [pathnameWithQueryParams, hash2] = path.split(\"#\", 2);\n    assert(pathnameWithQueryParams !== void 0, \"A href must have a defined pathname.\");\n    const [pathname] = pathnameWithQueryParams.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      const combinedPathVariables = Object.assign({}, implicitPathVariables, pathVariables);\n      return {\n        routeId,\n        route,\n        href: path,\n        // If the link is resolved (in ResolveLink), we trust that the hash is also resolved. Otherwise, it\n        // should be resolved by getHashForRoute.\n        elementId: hash2,\n        pathVariables: combinedPathVariables\n      };\n    }\n  } catch {\n  }\n}\nfunction getRouteAttributes(router, currentRoute, routeId, hash2, implicitPathVariables, pathVariables, hashVariables, resolvedSlugs) {\n  var _a;\n  const combinedPathVariables = { ...implicitPathVariables, ...pathVariables, ...resolvedSlugs == null ? void 0 : resolvedSlugs.path };\n  const combinedHashVariables = { ...implicitPathVariables, ...hashVariables, ...resolvedSlugs == null ? void 0 : resolvedSlugs.hash };\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, routeId);\n  const resolvedHref = getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: currentRoute == null ? void 0 : currentRoute.pathVariables,\n    hash: hash2,\n    pathVariables: combinedPathVariables,\n    hashVariables: combinedHashVariables,\n    preserveQueryParams: router.preserveQueryParams,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n  const resolvedHash = resolvedHref.split(\"#\", 2)[1];\n  return {\n    routeId,\n    route,\n    href: resolvedHref,\n    elementId: resolvedHash,\n    pathVariables: combinedPathVariables\n  };\n}\n\n// ../../library/src/modules/Link/getRouteFromPageLink.tsx\nfunction getRouteFromPageLink(pageLink, router, currentRoute) {\n  var _a;\n  if (isString(pageLink)) {\n    const isInternal = isInternalURL(pageLink);\n    if (!router.routes || !router.getRoute || !currentRoute || !isInternal) {\n      return;\n    }\n    const [pathnameWithQueryParams] = pageLink.split(\"#\", 2);\n    if (pathnameWithQueryParams === void 0) return;\n    const [pathname] = pathnameWithQueryParams.split(\"?\", 2);\n    if (pathname === void 0) return;\n    const { routeId } = inferInitialRouteFromPath(router.routes, pathname);\n    return router.getRoute(routeId);\n  }\n  const { webPageId } = pageLink;\n  return (_a = router.getRoute) == null ? void 0 : _a.call(router, webPageId);\n}\n\n// ../../library/src/modules/framerPageLink.ts\nvar elementKey = \"element\";\nvar collectionKey = \"collection\";\nvar collectionItemIdKey = \"collectionItemId\";\nvar pathVariablesKey = \"pathVariables\";\nvar mediaType = \"framer/page-link,\";\nfunction isFramerPageLink(value) {\n  return isString(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)) return;\n  try {\n    const url = new URL(link);\n    const target = url.pathname.substring(mediaType.length);\n    const searchParams = url.searchParams;\n    const element = searchParams.has(elementKey) ? searchParams.get(elementKey) : void 0;\n    let collectionItem;\n    const collection = searchParams.get(collectionKey);\n    const collectionItemId = searchParams.get(collectionItemIdKey);\n    const pathVariablesValue = searchParams.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      /**\n       * For historical reason we used to set \"element=none\" into the\n       * datalink, we no longer do that today, but we still keep this code\n       * so we could parse legacy links correctly.\n       */\n      element: element === \"none\" ? void 0 : element,\n      collectionItem\n    };\n  } catch {\n    return;\n  }\n}\nfunction shouldOpenLinkInNewTab(link) {\n  return !isFramerPageLink(link);\n}\nfunction navigateFromAttributes(navigate, element, implicitPathVariables) {\n  var _a;\n  let routeId = element.getAttribute(\"data-framer-page-link-target\" /* Page */);\n  let elementId;\n  let pathVariables;\n  if (routeId) {\n    elementId = element.getAttribute(\"data-framer-page-link-element\" /* Element */) ?? 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) return false;\n    const link = parseFramerPageLink(href);\n    if (!link || !link.target) return false;\n    routeId = link.target;\n    elementId = link.element ?? void 0;\n    pathVariables = (_a = link.collectionItem) == null ? void 0 : _a.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}\n\n// ../../library/src/modules/Link/linkFromFramerPageLink.tsx\nfunction linkFromFramerPageLink(link) {\n  if (!isFramerPageLink(link)) return link;\n  const parsed = parseFramerPageLink(link);\n  if (!parsed) return void 0;\n  const { target, element, collectionItem } = parsed;\n  if (!target) return void 0;\n  return {\n    webPageId: target,\n    hash: element ?? void 0,\n    pathVariables: createVariablesFromPageLinkCollectionItem(collectionItem)\n  };\n}\nfunction createVariablesFromPageLinkCollectionItem(collectionItem) {\n  if (!collectionItem) return void 0;\n  const variables = {};\n  for (const pathVariablesKey2 in collectionItem.pathVariables) {\n    const value = collectionItem.pathVariables[pathVariablesKey2];\n    if (value) variables[pathVariablesKey2] = value;\n  }\n  return variables;\n}\n\n// ../../library/src/modules/Link/linkMatchesRoute.tsx\nimport { useContext as useContext17 } from \"react\";\n\n// ../../library/src/modules/Link/pathVariables.tsx\nimport { createContext as createContext7, useContext as useContext16 } from \"react\";\nvar pathVariablesRegExp2 = /:([a-z]\\w*)/gi;\nvar PathVariablesContext = /* @__PURE__ */ createContext7(void 0);\nfunction useImplicitPathVariables() {\n  var _a;\n  const contextPathVariables = useContext16(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/Link/linkMatchesRoute.tsx\nfunction linkMatchesRoute(route, { webPageId, hash: hash2, pathVariables }, implicitPathVariables) {\n  if (webPageId !== route.id) return false;\n  if (hash2) return false;\n  if (route.path && route.pathVariables) {\n    const combinedPathVariable = Object.assign({}, implicitPathVariables, pathVariables);\n    for (const [, key7] of route.path.matchAll(pathVariablesRegExp2)) {\n      if (!key7) return false;\n      if (route.pathVariables[key7] !== combinedPathVariable[key7]) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nfunction useLinkMatchesRoute(link) {\n  const route = useCurrentRoute();\n  const contextPathVariables = useContext17(PathVariablesContext);\n  if (!route) return false;\n  const pageLink = isString(link) ? linkFromFramerPageLink(link) : link;\n  return isLinkToWebPage(pageLink) ? linkMatchesRoute(route, pageLink, contextPathVariables) : false;\n}\n\n// ../../library/src/modules/Link/types.ts\nvar AnchorLinkTarget = /* @__PURE__ */ ((AnchorLinkTarget2) => {\n  AnchorLinkTarget2[\"_blank\"] = \"_blank\";\n  AnchorLinkTarget2[\"_self\"] = \"_self\";\n  return AnchorLinkTarget2;\n})(AnchorLinkTarget || {});\n\n// ../../library/src/modules/Link/propsForLink.tsx\nfunction propsForLink(href, openInNewTab = void 0, trackLinkClick) {\n  const isInternal = isInternalURL(href);\n  const target = getTargetAttrValue(openInNewTab, isInternal);\n  const rel = !isInternal ? \"noopener\" : void 0;\n  href = href === \"\" || isValidURL(href, isInternal) ? href : `https://${href}`;\n  return trackLinkClick ? {\n    href,\n    target,\n    rel,\n    onClick() {\n      void trackLinkClick(href);\n    }\n  } : { href, target, rel };\n}\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}\n\n// ../../library/src/modules/Link/useReplaceNestedLinks.tsx\nimport { Children as Children3, createContext as createContext8, createElement, isValidElement as isValidElement4, useCallback as useCallback10, useContext as useContext18, useMemo as useMemo10 } from \"react\";\n\n// ../../library/src/modules/NestedLinksCollector.ts\nfunction linkInfoKey(link) {\n  var _a, _b;\n  return `${link.scopeId}:${link.nodeId}:${(_a = link.furthestExternalComponent) == null ? void 0 : _a.scopeId}:${(_b = link.furthestExternalComponent) == null ? void 0 : _b.nodeId}`;\n}\nvar NestedLinksCollector = class {\n  constructor() {\n    __publicField(this, \"collectedLinks\", /* @__PURE__ */ new Map());\n    __publicField(this, \"nestingInfo\", /* @__PURE__ */ new Map());\n  }\n  clear() {\n    this.collectedLinks.clear();\n    this.nestingInfo.clear();\n  }\n  /**\n   * Returns a Map of outer links to their inner links.\n   *\n   * NOTE: This function is called in the SSG renderer sandbox (<root>/src/ssg/src/ssg-sandbox-renderer/sandbox/worker/renderer.ts)\n   */\n  getLinks() {\n    const result = /* @__PURE__ */ new Map();\n    for (const [outerLinkKey, innerLinkKeys] of this.nestingInfo) {\n      const outerLinkInfo = this.collectedLinks.get(outerLinkKey);\n      assert(outerLinkInfo, `Outer link not found: ${outerLinkKey}`);\n      const links = Array.from(innerLinkKeys).map((innerLinkKey) => {\n        const innerLinkInfo = this.collectedLinks.get(innerLinkKey);\n        assert(innerLinkInfo, `Inner link not found: ${innerLinkKey}`);\n        return innerLinkInfo;\n      });\n      result.set(outerLinkInfo, links);\n    }\n    return result;\n  }\n  collectNestedLink(outerLink, innerLink) {\n    if (isWindow && !isTest() || !outerLink.nodeId || !innerLink.nodeId) {\n      return;\n    }\n    this.collectedLinks.set(linkInfoKey(outerLink), outerLink);\n    this.collectedLinks.set(linkInfoKey(innerLink), innerLink);\n    const outerLinkNestingInfo = this.nestingInfo.get(linkInfoKey(outerLink)) ?? /* @__PURE__ */ new Set();\n    outerLinkNestingInfo.add(linkInfoKey(innerLink));\n    this.nestingInfo.set(linkInfoKey(outerLink), outerLinkNestingInfo);\n  }\n};\nvar nestedLinksCollector = /* @__PURE__ */ new NestedLinksCollector();\n\n// ../../library/src/modules/useIsOnFramerCanvas.ts\nfunction useIsOnFramerCanvas() {\n  return RenderTarget.current() === RenderTarget.canvas;\n}\n\n// ../../library/src/modules/Link/useReplaceNestedLinks.tsx\nimport { jsx as jsx59 } from \"react/jsx-runtime\";\nvar OuterLinkContext = /* @__PURE__ */ createContext8(void 0);\nfunction useReplaceNestedLinks(children, scopeId, nodeId, href, propsAddedByLink, observerRef) {\n  const outerLink = useContext18(OuterLinkContext);\n  const furthestExternalComponent = useFurthestExternalComponent();\n  const innerLink = useMemo10(\n    () => ({ scopeId, nodeId, furthestExternalComponent }),\n    [scopeId, nodeId, furthestExternalComponent]\n  );\n  const router = useRouter();\n  const currentRoute = useCurrentRoute();\n  const route = useMemo10(() => {\n    const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n    if (!pageLink) return;\n    return getRouteFromPageLink(pageLink, router, currentRoute);\n  }, [currentRoute, href, router]);\n  const { replaceNestedLinks } = useLibraryFeatures();\n  const isOnFramerCanvas = useIsOnFramerCanvas();\n  const shouldReplaceLink = Boolean(replaceNestedLinks && !isOnFramerCanvas && (outerLink == null ? void 0 : outerLink.nodeId) && innerLink.nodeId);\n  const onClick = useCallback10(\n    (event) => {\n      var _a;\n      if (!propsAddedByLink.href) return;\n      event.preventDefault();\n      event.stopPropagation();\n      const isAppleDevice = /Mac|iPod|iPhone|iPad/u.test(navigator.userAgent);\n      if (isAppleDevice ? event.metaKey : event.ctrlKey) {\n        openExternalLink(propsAddedByLink.href, \"\", \"_blank\");\n        return;\n      }\n      if (route) {\n        (_a = propsAddedByLink.navigate) == null ? void 0 : _a.call(propsAddedByLink);\n      } else {\n        openExternalLink(propsAddedByLink.href, propsAddedByLink.rel, propsAddedByLink.target);\n      }\n    },\n    [propsAddedByLink, route]\n  );\n  const onAuxClick = useCallback10(\n    (event) => {\n      if (!propsAddedByLink.href) return;\n      event.preventDefault();\n      event.stopPropagation();\n      openExternalLink(propsAddedByLink.href, \"\", \"_blank\");\n    },\n    [propsAddedByLink]\n  );\n  const onKeyDown = useCallback10(\n    (event) => {\n      var _a;\n      if (!propsAddedByLink.href) return;\n      if (event.key !== \"Enter\") return;\n      event.preventDefault();\n      event.stopPropagation();\n      if (route) {\n        (_a = propsAddedByLink.navigate) == null ? void 0 : _a.call(propsAddedByLink);\n      } else {\n        openExternalLink(propsAddedByLink.href, propsAddedByLink.rel, propsAddedByLink.target);\n      }\n    },\n    [propsAddedByLink, route]\n  );\n  useRefEffect(\n    observerRef,\n    (node) => {\n      if (node === null) return;\n      if (!shouldReplaceLink) return;\n      node.dataset.hydrated = \"true\";\n    },\n    [shouldReplaceLink]\n  );\n  let replacedChildren = children;\n  if (shouldReplaceLink) {\n    Children3.forEach(children, (child) => {\n      if (!isChildReplaceable(child)) return;\n      assert(\n        linkInfoIsCollectable(outerLink),\n        \"outerLink must have nodeId defined at this point; this was verified with `shouldReplaceLink` above\"\n      );\n      assert(\n        linkInfoIsCollectable(innerLink),\n        \"innerLink must have nodeId defined at this point; this was verified with `shouldReplaceLink` above\"\n      );\n      nestedLinksCollector.collectNestedLink(outerLink, innerLink);\n    });\n    replacedChildren = Children3.map(children, (child) => {\n      if (!isChildReplaceable(child)) return child;\n      const tag = maybeReplaceAnchorWithSpan(child.type);\n      const { children: childChildren, ...childProps } = child.props;\n      const props = {\n        ...childProps,\n        // This attribute is used in `ssg/src/ssg-sandbox-renderer/worker/nestedLinks.ts` to handle the nested links clicks\n        \"data-nested-link\": true,\n        role: \"link\",\n        tabIndex: 0,\n        onClick,\n        onAuxClick,\n        onKeyDown,\n        as: childProps.as && maybeReplaceAnchorWithSpan(childProps.as)\n      };\n      const ref = \"ref\" in child ? child.ref : void 0;\n      return createElement(\n        tag,\n        // We need to pass the ref here again, otherwise it will be lost\n        { ...props, ref },\n        childChildren\n      );\n    });\n  }\n  return /* @__PURE__ */ jsx59(OuterLinkContext.Provider, { value: innerLink, children: replacedChildren });\n}\nfunction linkInfoIsCollectable(linkInfo) {\n  return !isUndefined(linkInfo == null ? void 0 : linkInfo.nodeId);\n}\nfunction isChildReplaceable(child) {\n  return isValidElement4(child) && (maybeReplaceAnchorWithSpan(child.type) !== child.type || maybeReplaceAnchorWithSpan(child.props.as) !== child.props.as);\n}\nfunction openExternalLink(href, rel, target) {\n  const link = document.createElement(\"a\");\n  link.href = href;\n  if (rel) {\n    link.rel = rel;\n  }\n  if (target) {\n    link.target = target;\n  }\n  document.body.appendChild(link);\n  link.click();\n  link.remove();\n}\nfunction maybeReplaceAnchorWithSpan(component) {\n  if (component === \"a\") return \"span\";\n  if (isMotionComponent(component) && unwrapMotionComponent(component) === \"a\") return motion.span;\n  return component;\n}\n\n// ../../library/src/modules/Link/useTrackLinkClick.ts\nimport { useCallback as useCallback11 } from \"react\";\nfunction useTrackLinkClick({\n  nodeId,\n  clickTrackingId,\n  router,\n  href,\n  activeLocale\n}) {\n  return useCallback11(\n    async (hrefAttribute) => {\n      var _a, _b, _c, _d, _e;\n      if (!((_a = router.pageviewEventData) == null ? void 0 : _a.current)) return;\n      const pageviewEventData = router.pageviewEventData.current;\n      const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n      if (!isLinkToWebPage(pageLink)) {\n        return sendTrackingEvent(\n          \"published_site_click\",\n          {\n            ...pageviewEventData,\n            href: hrefAttribute ? makeUrlAbsolute(hrefAttribute) : null,\n            nodeId: nodeId ?? null,\n            trackingId: clickTrackingId ?? null,\n            targetRoutePath: null,\n            targetWebPageId: null,\n            targetCollectionItemId: null\n          },\n          \"eager\"\n        );\n      }\n      const targetWebPageId = pageLink.webPageId;\n      const targetRoute = (_b = router == null ? void 0 : router.getRoute) == null ? void 0 : _b.call(router, targetWebPageId);\n      const targetRoutePath = (targetRoute == null ? void 0 : targetRoute.path) ?? null;\n      let targetCollectionItemId = null;\n      if ((targetRoute == null ? void 0 : targetRoute.collectionId) && pageLink.pathVariables && ((_c = router.collectionUtils) == null ? void 0 : _c[targetRoute.collectionId])) {\n        const utils = await ((_e = (_d = router.collectionUtils)[targetRoute.collectionId]) == null ? void 0 : _e.call(_d));\n        const [slug] = Object.values(pageLink.pathVariables);\n        if (utils && typeof slug === \"string\") {\n          targetCollectionItemId = await utils.getRecordIdBySlug(slug, activeLocale || void 0) ?? null;\n        }\n      }\n      return sendTrackingEvent(\n        \"published_site_click\",\n        {\n          ...pageviewEventData,\n          href: hrefAttribute ? makeUrlAbsolute(hrefAttribute) : null,\n          nodeId: nodeId ?? null,\n          trackingId: clickTrackingId ?? null,\n          targetRoutePath,\n          targetWebPageId,\n          targetCollectionItemId\n        },\n        \"eager\"\n      );\n    },\n    [nodeId, clickTrackingId, router, href, activeLocale]\n  );\n}\nfunction makeUrlAbsolute(href) {\n  try {\n    const url = new URL(href, safeWindow.document.baseURI);\n    return url.origin === safeWindow.location.origin ? url.pathname + url.search + url.hash : url.href;\n  } catch {\n    return href;\n  }\n}\n\n// ../../library/src/modules/Link/index.tsx\nfunction performNavigation(router, routeId, elementId, combinedPathVariables, smoothScroll, beforeUrlUpdate) {\n  var _a, _b;\n  const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, routeId);\n  if (route && isLazyComponentType(route == null ? void 0 : route.page)) {\n    void route.page.preload();\n  }\n  (_b = router.navigate) == null ? void 0 : _b.call(router, routeId, elementId, combinedPathVariables, smoothScroll, beforeUrlUpdate);\n}\nfunction createOnClickLinkHandler(router, routeId, href, trackLinkClick, elementId, combinedPathVariables, smoothScroll) {\n  return async (event) => {\n    const usedMetaKey = event.metaKey;\n    const anchorElement = findAnchorElement(event.target);\n    const isExternalLink = !anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */;\n    const shouldPerformNavigation = !usedMetaKey && !isExternalLink;\n    const track = () => void trackLinkClick(href);\n    if (!shouldPerformNavigation) {\n      await yieldToMain({ priority: \"user-blocking\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" });\n      track();\n      return;\n    }\n    event.preventDefault();\n    performNavigation(router, routeId, elementId, combinedPathVariables, smoothScroll, track);\n  };\n}\nfunction propsForRoutePath(href, openInNewTab, router, currentRoute, trackLinkClick, implicitPathVariables, smoothScroll) {\n  if (!currentRoute) return propsForLink(href, openInNewTab, trackLinkClick);\n  const matchedRoute = findMatchingRouteAttributesForResolvedPath(router, href, implicitPathVariables);\n  if (!matchedRoute) return propsForLink(href, openInNewTab, trackLinkClick);\n  const { routeId, route, elementId, pathVariables } = matchedRoute;\n  if (!route) return propsForLink(href, openInNewTab, trackLinkClick);\n  const path = getPathForRoute(route, {\n    // If the link is resolved, we trust that the slugs are resolved.\n    currentRoutePath: currentRoute.path,\n    currentPathVariables: currentRoute.pathVariables,\n    // The hash value is already fully resolved so we don't need to\n    // provide any hashVariables.\n    hash: elementId,\n    pathVariables,\n    preserveQueryParams: router.preserveQueryParams && !isBot,\n    // don't preserve query params for bots\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n  const anchorTarget = getTargetAttrValue(openInNewTab, true);\n  return {\n    href: path,\n    target: anchorTarget,\n    onClick: createOnClickLinkHandler(\n      router,\n      routeId,\n      path,\n      trackLinkClick,\n      elementId,\n      pathVariables,\n      smoothScroll\n    ),\n    navigate: () => performNavigation(router, routeId, elementId, pathVariables, smoothScroll),\n    \"data-framer-page-link-current\": !elementId && currentRoute.id === routeId || void 0\n  };\n}\nvar Link = /* @__PURE__ */ withChildrenCanSuspend(\n  /* @__PURE__ */ forwardRef5(function Link2({\n    children,\n    href,\n    openInNewTab,\n    smoothScroll,\n    clickTrackingId,\n    nodeId,\n    scopeId,\n    motionChild,\n    ...restProps\n  }, forwardedRef) {\n    const router = useRouter();\n    const currentRoute = useCurrentRoute();\n    const implicitPathVariables = useImplicitPathVariables();\n    const { activeLocale } = useLocaleInfo();\n    const trackLinkClick = useTrackLinkClick({\n      nodeId,\n      clickTrackingId,\n      router,\n      href,\n      activeLocale\n    });\n    const propsAddedByLink = useMemo11(() => {\n      if (!href) return {};\n      const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n      if (!pageLink) return {};\n      if (isString(pageLink)) {\n        return propsForRoutePath(\n          pageLink,\n          openInNewTab,\n          router,\n          currentRoute,\n          trackLinkClick,\n          implicitPathVariables,\n          smoothScroll\n        );\n      }\n      const {\n        routeId,\n        href: resolvedHref,\n        elementId,\n        pathVariables\n      } = findMatchingRouteAttributesForWebPageLinkWithSuspense(\n        router,\n        currentRoute,\n        pageLink,\n        activeLocale,\n        implicitPathVariables\n      );\n      const anchorTarget = getTargetAttrValue(openInNewTab, true);\n      return {\n        href: resolvedHref,\n        target: anchorTarget,\n        onClick: createOnClickLinkHandler(\n          router,\n          routeId,\n          resolvedHref,\n          trackLinkClick,\n          elementId,\n          pathVariables,\n          smoothScroll\n        ),\n        navigate: () => performNavigation(router, routeId, elementId, pathVariables, smoothScroll),\n        \"data-framer-page-link-current\": currentRoute && linkMatchesRoute(currentRoute, pageLink, implicitPathVariables) || void 0\n      };\n    }, [\n      href,\n      router,\n      activeLocale,\n      implicitPathVariables,\n      openInNewTab,\n      currentRoute,\n      smoothScroll,\n      trackLinkClick\n    ]);\n    const hasRef = isValidElement5(children) && \"ref\" in children;\n    const observerRef = useObserverRef(hasRef ? children.ref : void 0);\n    useRefEffect(\n      observerRef,\n      (node) => {\n        var _a;\n        if (node === null) return;\n        const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n        if (!pageLink) return;\n        const route = getRouteFromPageLink(pageLink, router, currentRoute);\n        if (!route) return;\n        return (_a = observeRouteForPreloading) == null ? void 0 : _a(route, node);\n      },\n      [currentRoute, href, router]\n    );\n    let replacedChildren = children;\n    const { navigate, ...propsAddedByLinkExceptNavigate } = propsAddedByLink;\n    const isInternalNavigation = Boolean(navigate);\n    const clone = useCloneChildrenWithPropsAndRef(forwardedRef);\n    replacedChildren = clone.cloneAsArray(\n      replacedChildren,\n      (childProps) => cloneChildPropsWithAggregatedEvents(\n        childProps,\n        {\n          ...restProps,\n          ...rebindEventHandlersIfNeeded(propsAddedByLinkExceptNavigate, motionChild, isInternalNavigation)\n        },\n        observerRef\n      )\n    );\n    replacedChildren = useReplaceNestedLinks(replacedChildren, scopeId, nodeId, href, propsAddedByLink, observerRef);\n    return replacedChildren;\n  })\n);\nfunction cloneChildPropsWithAggregatedEvents(childProps, linkProps, observerRef) {\n  const aggregatedProps = {\n    ...childProps,\n    ...linkProps,\n    ref: observerRef\n  };\n  const { onTap, onClick } = linkProps;\n  if (!onTap && !onClick) {\n    return aggregatedProps;\n  }\n  const { onClick: childOnClick, onTap: childOnTap } = childProps;\n  return {\n    ...aggregatedProps,\n    onClick: onClick || childOnClick ? (event) => {\n      if (isFunction(childOnClick)) {\n        childOnClick == null ? void 0 : childOnClick(event);\n      }\n      onClick == null ? void 0 : onClick(event);\n    } : void 0,\n    onTap: onTap || childOnTap ? (event, info) => {\n      if (isFunction(childOnTap)) {\n        childOnTap == null ? void 0 : childOnTap(event, info);\n      }\n      onTap == null ? void 0 : onTap(event, info);\n    } : void 0\n  };\n}\nfunction rebindEventHandlersIfNeeded(linkProps, motionChild, isInternalNavigation) {\n  const shouldReplaceClickWithTap = Boolean(motionChild && isIOS());\n  if (!shouldReplaceClickWithTap) return linkProps;\n  const { onClick, ...restProps } = linkProps;\n  if (!onClick) return linkProps;\n  if (isInternalNavigation) {\n    return {\n      ...restProps,\n      onTap: onClick,\n      // When the link is an internal link, we're already doing SPA routing in onClick\n      // prevent the default click behavior so that we don't trigger a native anchor link navigation again.\n      onClick: preventClickOnNativeAnchorLink\n    };\n  }\n  return { ...restProps, onTap: onClick };\n}\nfunction preventClickOnNativeAnchorLink(event) {\n  const anchorElement = findAnchorElement(event.target);\n  if (!anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */) return;\n  event.preventDefault();\n}\n\n// ../../library/src/modules/Link/resolveLink.ts\nfunction resolveLink(href, router, implicitPathVariables) {\n  return resolveLinkInternal(href, router, implicitPathVariables);\n}\nfunction resolveLinkInternal(href, router, implicitPathVariables, onlyHash, resolveSlugs2) {\n  const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n  if (!isLinkToWebPage(pageLink)) return isString(href) ? propsForLink(href).href : void 0;\n  if (!router.getRoute || !router.currentRouteId) return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId, hash: hash2, pathVariables, hashVariables, unresolvedHashSlugs, unresolvedPathSlugs } = pageLink;\n  const route = router.getRoute(webPageId);\n  const resolvedSlugs = unresolvedPathSlugs || unresolvedHashSlugs ? resolveSlugs2 == null ? void 0 : resolveSlugs2(unresolvedPathSlugs, unresolvedHashSlugs) : void 0;\n  const combinedPathVariables = Object.assign(\n    {},\n    router.currentPathVariables,\n    implicitPathVariables,\n    pathVariables,\n    resolvedSlugs == null ? void 0 : resolvedSlugs.path\n  );\n  const combinedHashVariables = Object.assign(\n    {},\n    router.currentPathVariables,\n    implicitPathVariables,\n    hashVariables,\n    resolvedSlugs == null ? void 0 : resolvedSlugs.hash\n  );\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: router.currentPathVariables,\n    hash: hash2,\n    pathVariables: combinedPathVariables,\n    hashVariables: combinedHashVariables,\n    relative: false,\n    preserveQueryParams: router.preserveQueryParams,\n    onlyHash,\n    siteCanonicalURL: router.siteCanonicalURL\n  });\n}\n\n// ../../library/src/modules/Link/resolvePageScope.tsx\nfunction resolvePageScope(pageLink, router) {\n  if (!router.getRoute || !router.currentRouteId) return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId } = pageLink;\n  const route = router.getRoute(webPageId);\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    currentPathVariables: router.currentPathVariables,\n    relative: false,\n    preserveQueryParams: false,\n    siteCanonicalURL: void 0\n  });\n}\n\n// ../../library/src/modules/PageRoot.tsx\nimport React65, { startTransition as startTransition7, Suspense as Suspense3, useContext as useContext22, useEffect as useEffect18, useMemo as useMemo13, useState as useState7 } from \"react\";\n\n// ../../library/src/components/IgnoreErrors.tsx\nimport { Component as Component15 } from \"react\";\nvar IgnoreErrors = class extends Component15 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"state\", { error: void 0 });\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  render() {\n    if (this.state.error) return null;\n    return this.props.children;\n  }\n};\n\n// ../../library/src/render/presentation/Forms/FormContainer.tsx\nimport React62, { startTransition as startTransition4, useContext as useContext19 } from \"react\";\n\n// ../../library/src/render/presentation/Forms/antibot.ts\nvar salt = \"framer\";\nvar difficulty = 3;\nvar tokenLength = 30;\nvar maxTime = 1e4;\nasync function calculateProofOfWork() {\n  const target = \"0\".repeat(difficulty);\n  const startTime = Date.now();\n  let processing = true;\n  while (processing) {\n    const timestamp = Date.now();\n    if (timestamp - startTime > maxTime) {\n      processing = false;\n      return;\n    }\n    const nonce = randomCharacters(tokenLength);\n    const secret = `${timestamp}:${nonce}`;\n    const hash2 = await sha256(salt + secret);\n    if (hash2.startsWith(target)) {\n      return { secret, hash: hash2 };\n    }\n  }\n  return;\n}\nasync function sha256(text) {\n  const buffer = new TextEncoder().encode(text);\n  const hashBuffer = await crypto.subtle.digest(\"SHA-256\", buffer);\n  return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\nfunction randomCharacters(count) {\n  const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n  let result = \"\";\n  const charactersLength = characters.length;\n  for (let i = 0; i < count; i++) {\n    result += characters.charAt(Math.floor(Math.random() * charactersLength));\n  }\n  return result;\n}\n\n// ../../library/src/render/presentation/Forms/formData.ts\nfunction getEncodedFormFieldsHeader(data2) {\n  return Array.from(data2.keys()).map(encodeURIComponent).join(\",\");\n}\nfunction addUTMTagsToFormData(data2, document2) {\n  try {\n    const matches = document2.cookie.match(\"(^|;) ?framerFormsUTMTags=([^;]*)(;|$)\");\n    if (matches !== null && matches[2]) {\n      const parsed = JSON.parse(decodeURIComponent(matches[2]));\n      if (!parsed || typeof parsed !== \"object\") return;\n      [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_term\", \"utm_content\", \"gclid\"].forEach((key7) => {\n        if (typeof parsed[key7] === \"string\") data2.append(key7, parsed[key7]);\n      });\n    }\n  } catch (e) {\n  }\n}\n\n// ../../library/src/render/presentation/Forms/trackFormSubmit.ts\nfunction trackFormSubmit({ router, nodeId, submitTrackingId }) {\n  var _a;\n  if (!((_a = router == null ? void 0 : router.pageviewEventData) == null ? void 0 : _a.current)) return;\n  const pageviewEventData = router.pageviewEventData.current;\n  const eventData = {\n    ...pageviewEventData,\n    nodeId: nodeId ?? null,\n    trackingId: submitTrackingId ?? null\n  };\n  return sendTrackingEvent(\"published_site_form_submit\", eventData, \"eager\");\n}\n\n// ../../library/src/render/presentation/Forms/FormContainer.tsx\nimport { jsx as jsx60 } from \"react/jsx-runtime\";\nvar pendingState = { state: \"pending\" };\nvar successState = { state: \"success\" };\nvar incompleteState = { state: \"incomplete\" };\nvar completeState = { state: \"complete\" };\nvar errorState = { state: \"error\" };\nfunction formReducer({ state }, { type }) {\n  switch (type) {\n    case \"complete\":\n      if (state === \"error\") return errorState;\n      return completeState;\n    case \"incomplete\":\n      if (state === \"error\") return errorState;\n      return incompleteState;\n    case \"submit\":\n      return pendingState;\n    case \"success\":\n      return successState;\n    case \"error\":\n      return errorState;\n    default:\n      assertNever(type);\n  }\n}\nfunction stateCanSubmitForm({ state }) {\n  return state === \"incomplete\" || state === \"complete\";\n}\nfunction preventDefault(e) {\n  e.preventDefault();\n}\nfunction openExternalLinkInCurrentTab(link, formRef) {\n  const href = isValidURL(link, false) ? link : `https://${link}`;\n  const linkElement = document.createElement(\"a\");\n  linkElement.href = href;\n  linkElement.target = \"_self\";\n  linkElement.style.display = \"none\";\n  if (!(\"current\" in formRef && formRef.current)) return;\n  formRef.current.appendChild(linkElement);\n  linkElement.click();\n  linkElement.remove();\n}\nvar FormContext = React62.createContext(void 0);\nvar FormContainer = /* @__PURE__ */ React62.forwardRef(function FormContainer2({ action, children, redirectUrl, onSuccess, onError, onLoading, submitTrackingId, nodeId, ...props }, forwardedRef) {\n  const fallbackRef = React62.useRef(null);\n  const ref = forwardedRef ?? fallbackRef;\n  const router = useRouter();\n  const currentRoute = useCurrentRoute();\n  const implicitPathVariables = useImplicitPathVariables();\n  const [state, dispatch] = React62.useReducer(formReducer, incompleteState);\n  const { activeLocale } = useLocaleInfo();\n  const projectHash = useContext19(FormContext);\n  const callbacks = React62.useRef({ onSuccess, onError, onLoading });\n  callbacks.current = { onSuccess, onError, onLoading };\n  async function redirectTo(link) {\n    var _a, _b;\n    if (isString(link)) {\n      const matchingRoute2 = findMatchingRouteAttributesForResolvedPath(router, link, implicitPathVariables);\n      if (!matchingRoute2) {\n        openExternalLinkInCurrentTab(link, ref);\n        return;\n      }\n      const { routeId: routeId2, elementId: elementId2, pathVariables: pathVariables2 } = matchingRoute2;\n      (_a = router.navigate) == null ? void 0 : _a.call(router, routeId2, elementId2, pathVariables2);\n      return;\n    }\n    assert(isLinkToWebPage(link), \"Expected link to be either a LinkToWebPage or a string\", link);\n    const matchingRoute = await findMatchingRouteAttributesForWebPageLink(\n      router,\n      currentRoute,\n      link,\n      activeLocale,\n      implicitPathVariables\n    );\n    const { routeId, elementId, pathVariables } = matchingRoute;\n    (_b = router.navigate) == null ? void 0 : _b.call(router, routeId, elementId, pathVariables);\n  }\n  const handleSubmit = async (event) => {\n    var _a, _b, _c, _d, _e, _f;\n    event.preventDefault();\n    if (!action || !projectHash) return;\n    dispatch({ type: \"submit\" });\n    const data2 = new FormData(event.currentTarget);\n    await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n    addUTMTagsToFormData(data2, safeWindow.document);\n    for (const [key7, value] of data2) {\n      if (value instanceof File) data2.delete(key7);\n    }\n    try {\n      (_b = (_a = callbacks.current).onLoading) == null ? void 0 : _b.call(_a);\n      trackFormSubmit({\n        router,\n        nodeId,\n        submitTrackingId,\n        activeLocale\n      });\n      await submitForm(action, data2, projectHash);\n      startTransition4(() => dispatch({ type: \"success\" }));\n      (_d = (_c = callbacks.current).onSuccess) == null ? void 0 : _d.call(_c);\n      if (redirectUrl) {\n        await redirectTo(redirectUrl);\n      }\n    } catch (error) {\n      startTransition4(() => dispatch({ type: \"error\" }));\n      (_f = (_e = callbacks.current).onError) == null ? void 0 : _f.call(_e);\n      console.error(error);\n    }\n  };\n  const handleKeyDown = (event) => {\n    const { target: input, currentTarget: form, key: key7 } = event;\n    const isTextArea = input instanceof HTMLTextAreaElement;\n    if (isTextArea) return;\n    if (key7 === \"Enter\" && form.checkValidity()) {\n      event.preventDefault();\n      void handleSubmit(event);\n    }\n  };\n  const checkValidity = async (e) => {\n    const target = e.currentTarget;\n    await yieldToMain({ priority: \"background\", continueAfter: \"paint\" });\n    startTransition4(() => dispatch({ type: anyEmptyRequiredFields(target) ? \"incomplete\" : \"complete\" }));\n  };\n  return /* @__PURE__ */ jsx60(\n    motion.form,\n    {\n      ...props,\n      onSubmit: stateCanSubmitForm(state) ? handleSubmit : preventDefault,\n      onKeyDown: handleKeyDown,\n      onChange: checkValidity,\n      ref,\n      children: children(state)\n    }\n  );\n});\nfunction anyEmptyRequiredFields(element) {\n  if (element.children.length === 0) return false;\n  for (const child of element.children) {\n    if (child instanceof HTMLInputElement || child instanceof HTMLTextAreaElement || child instanceof HTMLSelectElement) {\n      if (child.required && child.value === \"\") return true;\n    } else {\n      const result = anyEmptyRequiredFields(child);\n      if (result) return true;\n    }\n  }\n  return false;\n}\nasync function submitForm(action, data2, projectHash) {\n  const proofOfWork = await calculateProofOfWork();\n  if (!proofOfWork) {\n    throw new Error(\"Failed to calculate proof of work\");\n  }\n  const response = await fetch(action, {\n    body: data2,\n    method: \"POST\",\n    headers: {\n      \"Framer-Site-Id\": projectHash,\n      \"Framer-POW\": proofOfWork.secret,\n      \"Framer-Form-Fields\": getEncodedFormFieldsHeader(data2)\n    }\n  });\n  if (response.ok) {\n    return response;\n  } else {\n    const body = await response.json();\n    const error = \"Failed to submit form\";\n    if (responseHasError(body)) {\n      throw new Error(`${error} - ${body.error.message}`);\n    }\n    throw new Error(error);\n  }\n}\nfunction responseHasError(response) {\n  return typeof response === \"object\" && response !== null && \"error\" in response && isObject2(response.error) && \"message\" in response.error && typeof response.error.message === \"string\";\n}\n\n// ../../library/src/router/Router.tsx\nimport { Fragment as Fragment9, startTransition as startTransition5, useCallback as useCallback12, useLayoutEffect as useLayoutEffect7, useMemo as useMemo12, useRef as useRef18 } from \"react\";\n\n// ../../library/src/router/isSamePage.ts\nfunction isSamePage(a, b) {\n  if (a.routeId !== b.routeId) return false;\n  if (a.pathVariables === b.pathVariables) 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// ../../library/src/router/pageAnalytics.ts\nimport { useContext as useContext20, useEffect as useEffect16, useRef as useRef17 } from \"react\";\n\n// ../../library/src/router/getPageviewEventData.ts\nfunction getPageviewEventData({\n  abTestId,\n  framerSiteId,\n  routeId,\n  routePath,\n  collectionItemId,\n  localeCode\n}) {\n  return {\n    abTestId,\n    framerSiteId,\n    routePath: routePath || \"/\",\n    collectionItemId,\n    framerLocale: localeCode,\n    webPageId: routeId\n  };\n}\n\n// ../../library/src/router/pageAnalytics.ts\nvar useSendPageView = (currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale) => {\n  const framerSiteId = useContext20(FormContext);\n  const pageviewEventData = useRef17();\n  const skipFirstPageView = useRef17(true);\n  useEffect16(() => {\n    const getFullPageviewEventData = async () => {\n      var _a;\n      let collectionItemId = null;\n      if ((currentRoute == null ? void 0 : currentRoute.collectionId) && collectionUtils && currentPathVariables) {\n        const utils = await ((_a = collectionUtils[currentRoute.collectionId]) == null ? void 0 : _a.call(collectionUtils));\n        const [slug] = Object.values(currentPathVariables);\n        if (utils && typeof slug === \"string\") {\n          collectionItemId = await utils.getRecordIdBySlug(slug, activeLocale || void 0) ?? null;\n        }\n      }\n      return getPageviewEventData({\n        abTestId: currentRoute == null ? void 0 : currentRoute.abTestId,\n        framerSiteId: framerSiteId ?? null,\n        // If we are in a variant route, let's use the variant ID as the route ID instead, so that the analytics panel will be able to show the correct tracking data.\n        routeId: (currentRoute == null ? void 0 : currentRoute.abTestingVariantId) ?? currentRouteId,\n        routePath: currentRoute == null ? void 0 : currentRoute.path,\n        collectionItemId,\n        localeCode: (activeLocale == null ? void 0 : activeLocale.code) || null\n      });\n    };\n    void (async () => {\n      pageviewEventData.current = await getFullPageviewEventData();\n      if (skipFirstPageView.current) {\n        skipFirstPageView.current = false;\n        return;\n      }\n      sendTrackingEvent(\"published_site_pageview\", pageviewEventData.current, \"eager\");\n    })();\n    const listener = async (event) => {\n      if (event.persisted) {\n        pageviewEventData.current = await getFullPageviewEventData();\n        sendTrackingEvent(\"published_site_pageview\", pageviewEventData.current, \"eager\");\n      }\n    };\n    window.addEventListener(\"pageshow\", listener);\n    return () => {\n      window.removeEventListener(\"pageshow\", listener);\n    };\n  }, [currentRoute, currentRouteId, currentPathVariables, collectionUtils, activeLocale, framerSiteId]);\n  return pageviewEventData;\n};\n\n// ../../library/src/router/types.ts\nvar defaultLocaleId = \"default\";\n\n// ../../library/src/router/useForceUpdate.ts\nimport React63 from \"react\";\nfunction useForceUpdate3() {\n  const [_, setForcedRenderCount] = React63.useState(0);\n  return [_, React63.useCallback(() => setForcedRenderCount((v) => v + 1), [])];\n}\n\n// ../../library/src/router/Router.tsx\nimport { jsx as jsx61, jsxs as jsxs15 } from \"react/jsx-runtime\";\nfunction updateScrollPosition(hash2, smoothScroll, isHistoryTransition) {\n  const element = hash2 && document.getElementById(hash2);\n  if (element) {\n    scrollElementIntoView(element, smoothScroll);\n    return;\n  }\n  if (isHistoryTransition) return;\n  window.scrollTo(0, 0);\n}\nfunction useScheduleRenderSideEffects(dep) {\n  const actions = useRef18([]);\n  useLayoutEffect7(() => {\n    var _a;\n    if (!((_a = actions.current) == null ? void 0 : _a.length)) return;\n    actions.current.forEach((action) => action());\n    actions.current = [];\n  }, [dep]);\n  return useCallback12((cb) => {\n    actions.current.push(cb);\n  }, []);\n}\nfunction executeBeforeUrlUpdateOnce(beforeUrlUpdate) {\n  if (!beforeUrlUpdate) return noop2;\n  let beforeUrlUpdateExecuted = false;\n  return () => {\n    if (beforeUrlUpdateExecuted) return;\n    beforeUrlUpdateExecuted = true;\n    beforeUrlUpdate == null ? void 0 : beforeUrlUpdate();\n  };\n}\nfunction useNavigationTransition() {\n  const startNativeSpinner = useNativeLoadingSpinner();\n  const navigationController = useRef18(void 0);\n  return useCallback12(\n    async (transitionFn, nextRender, updateURL, isAbortable = true) => {\n      var _a, _b;\n      const hasUpdateURL = updateURL !== void 0;\n      (_a = navigationController.current) == null ? void 0 : _a.abort();\n      const controller = isAbortable ? new AbortController() : void 0;\n      navigationController.current = controller;\n      const signal = controller == null ? void 0 : controller.signal;\n      const stopMonitoringINPRelatedInputs = monitorINPRelatedInputs(signal);\n      void nextRender.promise.finally(stopMonitoringINPRelatedInputs);\n      if (!hasUpdateURL) {\n        navigationController.current = void 0;\n        transitionFn(signal);\n        return nextRender.promise;\n      }\n      transitionFn(signal);\n      let resolveNavigationPromise;\n      const navigationPromise = new Promise((resolve, reject) => {\n        resolveNavigationPromise = resolve;\n        signal == null ? void 0 : signal.addEventListener(\"abort\", reject);\n      }).catch(noop2);\n      startNativeSpinner(navigationPromise, updateURL, controller);\n      await nextRender.promise;\n      if (signal == null ? void 0 : signal.aborted) return;\n      const navigationTransition = (_b = window.navigation) == null ? void 0 : _b.transition;\n      resolveNavigationPromise();\n      try {\n        await (navigationTransition == null ? void 0 : navigationTransition.finished);\n      } catch (error) {\n        console.error(\"Navigation transition failed\", error);\n      }\n      if (signal == null ? void 0 : signal.aborted) return;\n      announceNavigation();\n    },\n    [startNativeSpinner]\n  );\n}\nfunction Router({\n  defaultPageStyle,\n  disableHistory,\n  initialPathVariables,\n  initialRoute,\n  notFoundPage,\n  collectionUtils,\n  routes,\n  initialLocaleId,\n  locales = EMPTY_ARRAY,\n  preserveQueryParams = false,\n  LayoutTemplate,\n  editorBar,\n  siteCanonicalURL\n}) {\n  useMarkRouterEffects();\n  useReplaceInitialState({\n    disabled: disableHistory,\n    routeId: initialRoute,\n    initialPathVariables,\n    initialLocaleId\n  });\n  const startViewTransition2 = useViewTransition();\n  const [dep, forceUpdate] = useForceUpdate3();\n  const scheduleSideEffect = useScheduleRenderSideEffects(dep);\n  const startNavigation = useNavigationTransition();\n  const monitorNextPaintAfterRender = useMonitorNextPaintAfterRender(\"framer-route-change\");\n  const currentRouteRef = useRef18(initialRoute);\n  const currentPathVariablesRef = useRef18(initialPathVariables);\n  const currentLocaleIdRef = useRef18(initialLocaleId);\n  const currentLocaleId = currentLocaleIdRef.current;\n  const activeLocale = useMemo12(() => {\n    return locales.find(({ id }) => {\n      if (!currentLocaleId) return id === defaultLocaleId;\n      return id === currentLocaleId;\n    }) ?? null;\n  }, [currentLocaleId, locales]);\n  const localeInfo = useMemo12(() => {\n    return {\n      activeLocale,\n      locales,\n      setLocale: async (localeOrLocaleId) => {\n        const nextRender = monitorNextPaintAfterRender({\n          localized: true\n        });\n        await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n        let localeId;\n        if (isString(localeOrLocaleId)) {\n          localeId = localeOrLocaleId;\n        } else if (isObject2(localeOrLocaleId)) {\n          localeId = localeOrLocaleId.id;\n        }\n        const defaultLocale = locales.find(({ id }) => id === defaultLocaleId);\n        const nextLocale = locales.find(({ id }) => id === localeId);\n        if (!nextLocale) return;\n        const currentRouteId2 = currentRouteRef.current;\n        const currentRoute2 = routes[currentRouteId2];\n        if (!currentRoute2) return;\n        try {\n          const localeResult = await switchLocale({\n            currentLocale: activeLocale,\n            nextLocale,\n            route: currentRoute2,\n            routeId: currentRouteId2,\n            defaultLocale,\n            pathVariables: currentPathVariablesRef.current,\n            collectionUtils,\n            preserveQueryParams\n          });\n          if (!localeResult) return;\n          const currentStatePaginationInfo = isHistoryState(window.history.state) ? window.history.state.paginationInfo : void 0;\n          const currentPath = localeResult.path;\n          currentPathVariablesRef.current = localeResult.pathVariables;\n          currentLocaleIdRef.current = nextLocale.id;\n          const updateURL = async (ignorePushStateWrapper = false) => {\n            if (!currentPath) return;\n            return pushHistoryState(\n              {\n                routeId: currentRouteId2,\n                pathVariables: localeResult.pathVariables,\n                localeId: nextLocale.id,\n                paginationInfo: currentStatePaginationInfo\n              },\n              currentPath,\n              ignorePushStateWrapper\n            );\n          };\n          void startNavigation(\n            () => {\n              void startViewTransition2(\n                currentRouteId2,\n                currentRouteId2,\n                () => startTransition5(forceUpdate)\n                // no signal here, because we update the refs above immediately\n              );\n            },\n            nextRender,\n            updateURL,\n            false\n          );\n        } catch {\n        }\n      }\n    };\n  }, [\n    activeLocale,\n    collectionUtils,\n    forceUpdate,\n    locales,\n    preserveQueryParams,\n    routes,\n    startNavigation,\n    startViewTransition2,\n    monitorNextPaintAfterRender\n  ]);\n  const setCurrentRouteId = useCallback12(\n    (routeId, localeId, hash2, pathVariables, isHistoryTransition, nextRender, smoothScroll = false, updateURL) => {\n      const currentRouteId2 = currentRouteRef.current;\n      currentRouteRef.current = routeId;\n      currentPathVariablesRef.current = pathVariables;\n      currentLocaleIdRef.current = localeId;\n      scheduleSideEffect(() => {\n        updateScrollPosition(hash2, smoothScroll, isHistoryTransition);\n      });\n      if (isHistoryTransition) {\n        startTransition5(forceUpdate);\n        return;\n      }\n      void startNavigation(\n        (signal) => {\n          void startViewTransition2(currentRouteId2, routeId, () => startTransition5(forceUpdate), signal);\n        },\n        nextRender,\n        updateURL,\n        true\n      );\n    },\n    [forceUpdate, scheduleSideEffect, startNavigation, startViewTransition2]\n  );\n  usePopStateHandler(currentRouteRef, setCurrentRouteId);\n  const navigate = useCallback12(\n    async (routeId, hash2, pathVariables, smoothScroll, beforeUrlUpdate) => {\n      var _a, _b;\n      const newRoute = routes[routeId];\n      const routeStatus = isLazyComponentType(newRoute == null ? void 0 : newRoute.page) ? newRoute.page.getStatus() : void 0;\n      const hasRendered = routeStatus == null ? void 0 : routeStatus.hasRendered;\n      const nextRender = monitorNextPaintAfterRender({\n        cached: hasRendered,\n        preloaded: hasRendered ? void 0 : routeStatus == null ? void 0 : routeStatus.hasLoaded\n      });\n      const executeBeforeUrlUpdate = executeBeforeUrlUpdateOnce(beforeUrlUpdate);\n      void yieldToMain({ priority: \"background\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" }).then(\n        executeBeforeUrlUpdate\n      );\n      await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n      if (pathVariables) {\n        const inUse = /* @__PURE__ */ new Set();\n        const path = (newRoute == null ? void 0 : newRoute.path) ?? \"/\";\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, hash2);\n      const currentPathVariables2 = currentPathVariablesRef.current;\n      const currentRouteLocaleId = currentLocaleIdRef.current;\n      if (isSamePage(\n        { routeId: currentRouteRef.current, pathVariables: currentPathVariables2 },\n        { routeId, pathVariables }\n      )) {\n        (_a = nextRender.ignore) == null ? void 0 : _a.call(nextRender);\n        const route = routes[routeId];\n        if (((_b = window.history.state) == null ? void 0 : _b.hash) !== hash2 && !disableHistory && route) {\n          executeBeforeUrlUpdate();\n          await pushRouteState(routeId, route, {\n            currentRoutePath: route.path,\n            currentPathVariables: currentPathVariables2,\n            pathVariables,\n            hash: hash2,\n            localeId: currentRouteLocaleId,\n            preserveQueryParams,\n            siteCanonicalURL\n          });\n        }\n        updateScrollPosition(routeElementId, smoothScroll, false);\n        return;\n      }\n      if (!newRoute) return;\n      const currentRoute2 = routes[currentRouteRef.current];\n      const updateURL = async (ignorePushStateWrapper = false) => {\n        executeBeforeUrlUpdate();\n        return pushRouteState(\n          routeId,\n          newRoute,\n          {\n            currentRoutePath: currentRoute2 == null ? void 0 : currentRoute2.path,\n            currentPathVariables: currentPathVariables2,\n            hash: hash2,\n            pathVariables,\n            localeId: currentRouteLocaleId,\n            preserveQueryParams,\n            siteCanonicalURL\n          },\n          ignorePushStateWrapper\n        );\n      };\n      setCurrentRouteId(\n        routeId,\n        currentRouteLocaleId,\n        routeElementId,\n        pathVariables,\n        false,\n        nextRender,\n        smoothScroll,\n        disableHistory ? void 0 : updateURL\n      );\n    },\n    [routes, setCurrentRouteId, disableHistory, preserveQueryParams, siteCanonicalURL, monitorNextPaintAfterRender]\n  );\n  const getRoute = useGetRouteCallback(routes);\n  const currentRouteId = currentRouteRef.current;\n  const currentPathVariables = currentPathVariablesRef.current;\n  const currentRoute = routes[currentRouteId];\n  const currentRoutePath = currentRoute == null ? void 0 : currentRoute.path;\n  const pageviewEventData = useSendPageView(\n    currentRoute,\n    currentRouteId,\n    currentPathVariables,\n    collectionUtils,\n    activeLocale\n  );\n  const api = useMemo12(\n    () => ({\n      navigate,\n      getRoute,\n      currentRouteId,\n      currentPathVariables,\n      routes,\n      collectionUtils,\n      preserveQueryParams,\n      pageviewEventData,\n      siteCanonicalURL\n    }),\n    [\n      navigate,\n      getRoute,\n      currentRouteId,\n      currentPathVariables,\n      routes,\n      collectionUtils,\n      preserveQueryParams,\n      siteCanonicalURL,\n      pageviewEventData\n    ]\n  );\n  if (!currentRoute) {\n    throw new Error(`Router cannot find route for ${currentRouteId}`);\n  }\n  const pageExistsInCurrentLocale = !activeLocale || !currentRoute.includedLocales || currentRoute.includedLocales.includes(activeLocale.id);\n  const pathWithFilledVariables = currentRoutePath && currentPathVariables ? fillPathVariables(currentRoutePath, currentPathVariables) : currentRoutePath;\n  const remountKey = String(currentLocaleId) + pathWithFilledVariables;\n  const templatePageStyle = useConstant(() => ({ ...defaultPageStyle, display: \"contents\" }));\n  return /* @__PURE__ */ jsx61(RouterAPIProvider, { api, children: /* @__PURE__ */ jsx61(LocaleInfoContext.Provider, { value: localeInfo, children: /* @__PURE__ */ jsx61(SynchronousSuspenseErrorBoundary, { children: /* @__PURE__ */ jsxs15(SuspenseThatPreservesDom, { children: [\n    /* @__PURE__ */ jsxs15(\n      NotFoundErrorBoundary,\n      {\n        notFoundPage,\n        defaultPageStyle,\n        forceUpdateKey: dep,\n        children: [\n          /* @__PURE__ */ jsx61(MarkSuspenseEffects.Start, {}),\n          /* @__PURE__ */ jsx61(\n            WithLayoutTemplate,\n            {\n              LayoutTemplate,\n              routeId: currentRouteId,\n              style: defaultPageStyle,\n              children: (inLayoutTemplate) => {\n                return /* @__PURE__ */ jsx61(Fragment9, { children: pageExistsInCurrentLocale ? renderPage(\n                  currentRoute.page,\n                  inLayoutTemplate ? templatePageStyle : defaultPageStyle\n                ) : (\n                  // LAYOUT_TEMPLATE @TODO: display: content for not found page?\n                  notFoundPage && renderPage(notFoundPage, defaultPageStyle)\n                ) }, remountKey);\n              }\n            }\n          )\n        ]\n      }\n    ),\n    editorBar,\n    /* @__PURE__ */ jsx61(TurnOnReactEventHandling, {}),\n    /* @__PURE__ */ jsx61(MarkSuspenseEffects.End, {})\n  ] }) }) }) });\n}\nfunction WithLayoutTemplate({ LayoutTemplate, routeId, style, children }) {\n  if (!LayoutTemplate) return children(false);\n  return /* @__PURE__ */ jsx61(LayoutTemplate, { routeId, style, children });\n}\nfunction scrollElementIntoView(element, smoothScroll) {\n  const scrollIntoViewOptions = smoothScroll ? { behavior: \"smooth\", block: \"start\", inline: \"nearest\" } : void 0;\n  element.scrollIntoView(scrollIntoViewOptions);\n}\n\n// ../../library/src/modules/FetchClient.tsx\nimport * as React64 from \"react\";\n\n// ../../library/src/render/utils/preloadImage.ts\nfunction preloadImage(url) {\n  return new Promise((resolve, reject) => {\n    try {\n      new URL(url);\n      const image = new Image();\n      image.onload = () => resolve();\n      image.onerror = reject;\n      image.src = url;\n    } catch (error) {\n      reject(error);\n    }\n  });\n}\n\n// ../../library/src/utils/getPropertyByPath.ts\nfunction isObjectOrArray(value) {\n  return typeof value === \"object\" && value !== null;\n}\nfunction getPropertyByPath(input, keyPath) {\n  if (keyPath === \"\") {\n    return input;\n  }\n  const keyParts = keyPath.split(/[.[\\]]+/u).filter((part) => part.length > 0);\n  let current = input;\n  for (const part of keyParts) {\n    if (!isObjectOrArray(current)) {\n      return void 0;\n    }\n    current = current[part];\n  }\n  return current;\n}\n\n// ../../library/src/modules/FetchClient.tsx\nimport { jsx as jsx62 } from \"react/jsx-runtime\";\nfunction getRequestCacheKey(value) {\n  return `${value.credentials}:${value.url}`;\n}\nvar loadingFetchResult = {\n  status: \"loading\",\n  data: void 0\n};\nfunction isNumberString(value) {\n  return isString(value) && !Number.isNaN(Number(value));\n}\nfunction isValidFetchDataValueResult(type, value) {\n  switch (type) {\n    case \"string\" /* String */:\n      return isString(value) || isNumber(value);\n    case \"color\" /* Color */:\n      return isString(value);\n    case \"boolean\" /* Boolean */:\n      return isBoolean(value);\n    case \"number\" /* Number */:\n      return isNumber(value) || isNumberString(value);\n    case \"link\" /* Link */:\n    case \"image\" /* Image */:\n      return isString(value) && isValidURL(value, false);\n    default: {\n      const _ = type;\n      return false;\n    }\n  }\n}\nfunction resolveFetchDataValue(result, request) {\n  if (result.status === \"loading\") {\n    return request.fallbackValue;\n  }\n  if (result.status === \"error\") {\n    throw result.error;\n  }\n  const resolvedValue = getPropertyByPath(result.data, request.resultKeyPath);\n  if (isUndefined(resolvedValue)) {\n    throw new Error(`Key '${request.resultKeyPath}' not found in response`);\n  }\n  if (!isValidFetchDataValueResult(request.resultOutputType, resolvedValue)) {\n    throw new Error(`Resolved value '${resolvedValue}' is not valid for type '${request.resultOutputType}'`);\n  }\n  return resolvedValue;\n}\nfunction isCacheExpired(insertionTimestamp, cacheDuration) {\n  if (RenderTarget.current() === RenderTarget.canvas) {\n    return false;\n  }\n  const cacheDurationMs = cacheDuration === 0 ? (\n    // When the cache is set to 0 seconds we set use a 500ms cache delay\n    // to avoid triggering refetching when a variant switches from\n    // preloading to rendering the component (and\n    // resubscribing to the fetch client). When another component\n    // relying on the same endpoint (eg another page) is mounted again\n    // and the cache time is set to 0, the the data will be fetched\n    // again.\n    500\n  ) : cacheDuration * 1e3;\n  const currentTimestamp = Date.now();\n  const expirationTimestamp = insertionTimestamp + cacheDurationMs;\n  return currentTimestamp >= expirationTimestamp;\n}\nvar noop4 = () => {\n};\nvar _subscribers, _preloadedRequests, _shortestCacheDurations, _cachedAt, _ongoingFetches, _staleQueriesInterval;\nvar _FetchClient = class _FetchClient {\n  constructor() {\n    // A map of FetchResult values for each URL\n    __publicField(this, \"responseValues\", /* @__PURE__ */ new Map());\n    // A map of URLs to their subscribers\n    __privateAdd(this, _subscribers, /* @__PURE__ */ new Map());\n    // A set of requests that have been preloaded by a loading variant\n    __privateAdd(this, _preloadedRequests, /* @__PURE__ */ new Set());\n    // Map for how long to cache the response for (in seconds)\n    __privateAdd(this, _shortestCacheDurations, /* @__PURE__ */ new Map());\n    // Map containing a timestamp when a URL was inserted into the cache\n    __privateAdd(this, _cachedAt, /* @__PURE__ */ new Map());\n    // Map of promises for requests that are currently in flight\n    __privateAdd(this, _ongoingFetches, /* @__PURE__ */ new Map());\n    // An ID for an interval that checks for stale queries and refetches\n    __privateAdd(this, _staleQueriesInterval, /* @__PURE__ */ new Map());\n    __publicField(this, \"persistCache\", debounce(() => {\n      const data2 = {};\n      for (const [url, responseValue] of this.responseValues) {\n        if (!responseValue) continue;\n        if (responseValue.status !== \"success\") continue;\n        const cacheConfig = __privateGet(this, _shortestCacheDurations).get(url);\n        if (!cacheConfig || cacheConfig === 0) continue;\n        const storedAt = __privateGet(this, _cachedAt).get(url);\n        if (!storedAt) continue;\n        if (storedAt && isCacheExpired(storedAt, cacheConfig)) {\n          continue;\n        }\n        data2[url] = [storedAt, cacheConfig, responseValue.data];\n      }\n      try {\n        localStorage.setItem(_FetchClient.cacheKey, JSON.stringify(data2));\n      } catch {\n      }\n    }, 500));\n  }\n  unmount() {\n    for (const [key7, interval] of __privateGet(this, _staleQueriesInterval)) {\n      clearInterval(interval);\n      __privateGet(this, _staleQueriesInterval).delete(key7);\n    }\n  }\n  stopQueryRefetching(request) {\n    const cacheKey = getRequestCacheKey(request);\n    const interval = __privateGet(this, _staleQueriesInterval).get(cacheKey);\n    if (interval) {\n      clearInterval(interval);\n      __privateGet(this, _staleQueriesInterval).delete(cacheKey);\n    }\n  }\n  /**\n   * Start an interval for the given request to refresh the value\n   * depending on the shortest configured cache duration for that request.\n   */\n  startQueryRefetching(request) {\n    const cacheKey = getRequestCacheKey(request);\n    const currentIntervalForRequest = __privateGet(this, _staleQueriesInterval).get(cacheKey);\n    const shortestCacheDuration = __privateGet(this, _shortestCacheDurations).get(cacheKey);\n    if (currentIntervalForRequest) return;\n    if (!shortestCacheDuration) return;\n    const interval = safeWindow.setInterval(() => {\n      if (document.visibilityState === \"hidden\") return;\n      const cachedAt = __privateGet(this, _cachedAt).get(cacheKey);\n      if (!shortestCacheDuration || !cachedAt) return;\n      void this.fetchWithCache({\n        ...request,\n        cacheDuration: shortestCacheDuration\n      });\n    }, shortestCacheDuration);\n    __privateGet(this, _staleQueriesInterval).set(cacheKey, interval);\n  }\n  hydrateCache() {\n    try {\n      const rawData = localStorage.getItem(_FetchClient.cacheKey);\n      if (!rawData) return;\n      const data2 = JSON.parse(rawData);\n      if (typeof data2 !== \"object\") throw new Error(\"Invalid cache data\");\n      for (const cacheKey in data2) {\n        const cached = data2[cacheKey];\n        if (!Array.isArray(cached) || cached.length !== 3) throw new Error(\"Invalid cache data\");\n        const [storedAt, cacheDuration, cachedData] = cached;\n        if (isCacheExpired(storedAt, cacheDuration)) continue;\n        __privateGet(this, _cachedAt).set(cacheKey, storedAt);\n        __privateGet(this, _shortestCacheDurations).set(cacheKey, cacheDuration);\n        this.responseValues.set(cacheKey, { status: \"success\", data: cachedData });\n      }\n    } catch (error) {\n      try {\n        localStorage.removeItem(_FetchClient.cacheKey);\n      } catch {\n      }\n    }\n  }\n  setResponseValue(cacheKey, value) {\n    this.responseValues.set(cacheKey, value);\n    this.persistCache();\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey);\n    if (!subscribers) return;\n    for (const subscriber of subscribers) {\n      subscriber();\n    }\n  }\n  async prefetch(request) {\n    if (!isBrowser2()) return;\n    if (!isValidURL(request.url, false)) return;\n    const cacheKey = getRequestCacheKey(request);\n    __privateGet(this, _preloadedRequests).add(cacheKey);\n    await this.fetchWithCache(request);\n    const result = this.getValue(cacheKey);\n    if (!result || result.status === \"loading\") {\n      throw new Error(\"Unexpected result status for prefetch\");\n    }\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey);\n    for (const subscriber of subscribers ?? []) {\n      subscriber();\n    }\n    const resolvedValue = resolveFetchDataValue(result, request);\n    if (request.resultOutputType === \"image\" /* Image */ && isString(resolvedValue)) {\n      await preloadImage(resolvedValue).catch(noop4);\n    }\n    return resolvedValue;\n  }\n  async fetchWithCache(request) {\n    if (!isBrowser2()) return;\n    const cacheKey = getRequestCacheKey(request);\n    const ongoingFetch = __privateGet(this, _ongoingFetches).get(cacheKey);\n    if (ongoingFetch) return ongoingFetch;\n    const cachedAt = __privateGet(this, _cachedAt).get(cacheKey);\n    const hasExpiredCache = cachedAt && isCacheExpired(cachedAt, request.cacheDuration);\n    if (this.responseValues.has(cacheKey) && !hasExpiredCache) {\n      return;\n    }\n    const currentValue = this.responseValues.get(cacheKey);\n    if (!currentValue) {\n      this.setResponseValue(cacheKey, loadingFetchResult);\n    }\n    const doFetch = async () => {\n      try {\n        const response = await fetch(request.url, {\n          method: \"GET\",\n          credentials: request.credentials\n        });\n        if (!response.ok) {\n          this.setResponseValue(cacheKey, {\n            status: \"error\",\n            error: new Error(\"Invalid Response Status\"),\n            data: void 0\n          });\n          return;\n        }\n        const value = await response.json();\n        this.setResponseValue(cacheKey, { status: \"success\", data: value });\n        __privateGet(this, _cachedAt).set(cacheKey, Date.now());\n      } catch (error) {\n        this.setResponseValue(cacheKey, { status: \"error\", error, data: void 0 });\n      }\n    };\n    const promise = doFetch();\n    __privateGet(this, _ongoingFetches).set(cacheKey, promise);\n    void promise.finally(() => {\n      __privateGet(this, _ongoingFetches).delete(cacheKey);\n    });\n    return promise;\n  }\n  getValue(cacheKey, onlyIfPrefetched = false) {\n    if (onlyIfPrefetched && !__privateGet(this, _preloadedRequests).has(cacheKey)) return void 0;\n    return this.responseValues.get(cacheKey);\n  }\n  subscribe(request, callback, skipFetchRequest = false) {\n    const { url, cacheDuration } = request;\n    if (!isValidURL(url, false)) return noop4;\n    const cacheKey = getRequestCacheKey(request);\n    const cacheDurationForUrl = __privateGet(this, _shortestCacheDurations).get(cacheKey);\n    if (!cacheDurationForUrl || cacheDuration < cacheDurationForUrl) {\n      __privateGet(this, _shortestCacheDurations).set(cacheKey, cacheDuration);\n    }\n    if (!skipFetchRequest) {\n      this.startQueryRefetching(request);\n      void this.fetchWithCache(request);\n    }\n    const subscribers = __privateGet(this, _subscribers).get(cacheKey) ?? /* @__PURE__ */ new Set();\n    subscribers.add(callback);\n    __privateGet(this, _subscribers).set(cacheKey, subscribers);\n    return () => {\n      const nextSubscribers = __privateGet(this, _subscribers).get(cacheKey);\n      if (!nextSubscribers) return;\n      nextSubscribers.delete(callback);\n      if (nextSubscribers.size === 0) {\n        __privateGet(this, _subscribers).delete(cacheKey);\n      }\n      if (__privateGet(this, _subscribers).size === 0) {\n        this.stopQueryRefetching(request);\n      }\n    };\n  }\n};\n_subscribers = new WeakMap();\n_preloadedRequests = new WeakMap();\n_shortestCacheDurations = new WeakMap();\n_cachedAt = new WeakMap();\n_ongoingFetches = new WeakMap();\n_staleQueriesInterval = new WeakMap();\n__publicField(_FetchClient, \"cacheKey\", \"framer-fetch-client-cache\");\nvar FetchClient = _FetchClient;\nvar FetchClientContext = /* @__PURE__ */ React64.createContext(void 0);\nvar IsRestoringCacheContext = /* @__PURE__ */ React64.createContext(true);\nvar FetchClientProvider = ({\n  children,\n  client: initialClient\n}) => {\n  const [client] = React64.useState(() => initialClient ?? new FetchClient());\n  const [isRestoring, setIsRestoring] = React64.useState(true);\n  React64.useEffect(() => {\n    client.hydrateCache();\n    React64.startTransition(() => {\n      setIsRestoring(false);\n    });\n    return () => client.unmount();\n  }, [client]);\n  return /* @__PURE__ */ jsx62(IsRestoringCacheContext.Provider, { value: isRestoring, children: /* @__PURE__ */ jsx62(FetchClientContext.Provider, { value: client, children }) });\n};\nvar _subscriptions, _subscribers2, _results, _SSRResults, _onlyPrefetched;\nvar RequestsObserver = class {\n  constructor(client, requests) {\n    this.client = client;\n    this.requests = requests;\n    // a map of subscriptions on the FetchClient\n    __privateAdd(this, _subscriptions, /* @__PURE__ */ new Map());\n    // A set of subscribers to requests of the observer\n    __privateAdd(this, _subscribers2, /* @__PURE__ */ new Set());\n    // The results of the susbcribed requests\n    __privateAdd(this, _results);\n    // getServerSnapshot is also called on the Client while the tree is hydrating.\n    // It is important to always return the same value or hydration warnings will occur.\n    __privateAdd(this, _SSRResults);\n    // When the RequestsObserver mounts we allow reading prefetched values.\n    // This is to support Text FX on mount for requests that were prefetched.\n    __privateAdd(this, _onlyPrefetched, true);\n    __publicField(this, \"updateResults\", () => {\n      const data2 = [];\n      const statuses = /* @__PURE__ */ new Set();\n      const errors = [];\n      for (const request of this.requests) {\n        const cachekey = getRequestCacheKey(request);\n        const value = this.client.getValue(cachekey, __privateGet(this, _onlyPrefetched));\n        if (!value) {\n          statuses.add(\"loading\");\n          data2.push(request.fallbackValue);\n          continue;\n        }\n        statuses.add(value.status);\n        try {\n          const resolvedValue = resolveFetchDataValue(value, request);\n          data2.push(resolvedValue);\n        } catch (error) {\n          data2.push(!isUndefined(request.errorFallbackValue) ? request.errorFallbackValue : request.fallbackValue);\n          errors.push(error);\n        }\n      }\n      const status = statuses.has(\"error\") ? \"error\" : statuses.has(\"loading\") ? \"loading\" : \"success\";\n      const result = { status, data: data2 };\n      if (!isEqual(result, __privateGet(this, _results))) {\n        __privateSet(this, _results, result);\n        if (errors.length > 0 && !statuses.has(\"loading\") && __privateGet(this, _subscribers2).size > 0) {\n          console.error(\"Fetch failed: \" + errors.join(\"\\n\"));\n        }\n      }\n      for (const subscriber of __privateGet(this, _subscribers2)) {\n        subscriber();\n      }\n    });\n    __publicField(this, \"subscribe\", (callback) => {\n      __privateGet(this, _subscribers2).add(callback);\n      this.updateResults();\n      return () => {\n        __privateGet(this, _subscribers2).delete(callback);\n      };\n    });\n    __publicField(this, \"getServerResults\", () => {\n      return __privateGet(this, _SSRResults);\n    });\n    __publicField(this, \"getResults\", () => {\n      return __privateGet(this, _results);\n    });\n    this.setRequests(requests, { onlyPrefetched: true });\n    __privateSet(this, _SSRResults, { status: \"loading\", data: requests.map((request) => request.fallbackValue) });\n    __privateSet(this, _results, __privateGet(this, _SSRResults));\n  }\n  setRequests(requests, { onlyPrefetched = false }) {\n    var _a;\n    const lastRequests = this.requests;\n    this.requests = requests;\n    const requestsByCacheKey = new Map(requests.map((request) => [getRequestCacheKey(request), request]));\n    const nextSubscribedKeys = Array.from(requestsByCacheKey.keys());\n    const hasOnlyPrefetchedChange = __privateGet(this, _onlyPrefetched) !== onlyPrefetched;\n    if (!onlyPrefetched) __privateSet(this, _onlyPrefetched, false);\n    const hasSubscriptionChange = nextSubscribedKeys.length !== __privateGet(this, _subscriptions).size || nextSubscribedKeys.some((url) => !__privateGet(this, _subscriptions).has(url));\n    if (!hasSubscriptionChange && !hasOnlyPrefetchedChange) {\n      if (!isEqual(lastRequests, requests)) {\n        this.updateResults();\n      }\n      return;\n    }\n    for (const url of __privateGet(this, _subscriptions).keys()) {\n      (_a = __privateGet(this, _subscriptions).get(url)) == null ? void 0 : _a();\n      __privateGet(this, _subscriptions).delete(url);\n    }\n    for (const cacheKey of nextSubscribedKeys) {\n      const requestConfig = requestsByCacheKey.get(cacheKey);\n      if (!requestConfig) continue;\n      const unsubscribe = this.client.subscribe(requestConfig, this.updateResults, onlyPrefetched);\n      __privateGet(this, _subscriptions).set(cacheKey, unsubscribe);\n    }\n    if (__privateGet(this, _subscribers2).size === 0) return;\n    this.updateResults();\n  }\n  unmount() {\n    for (const unsubscribe of __privateGet(this, _subscribers2)) {\n      unsubscribe();\n    }\n    for (const unsubscribe of __privateGet(this, _subscriptions).values()) {\n      unsubscribe();\n    }\n  }\n};\n_subscriptions = new WeakMap();\n_subscribers2 = new WeakMap();\n_results = new WeakMap();\n_SSRResults = new WeakMap();\n_onlyPrefetched = new WeakMap();\nfunction useFetchRequestsForChildren(requests, disabled, children) {\n  const fetchClient = React64.useContext(FetchClientContext);\n  if (!fetchClient) {\n    throw new Error(\"useFetchRequest must be used within a FetchClientProvider\");\n  }\n  const isRestoringCache = React64.useContext(IsRestoringCacheContext);\n  const [observer] = React64.useState(() => new RequestsObserver(fetchClient, requests));\n  React64.useLayoutEffect(() => {\n    if (disabled) return;\n    observer.setRequests(requests, { onlyPrefetched: false });\n  }, [requests, observer, disabled]);\n  React64.useEffect(() => {\n    return () => observer.unmount();\n  }, [observer]);\n  const subscribe = React64.useCallback(\n    (onChange) => {\n      if (isRestoringCache || disabled) return noop4;\n      return observer.subscribe(onChange);\n    },\n    [disabled, observer, isRestoringCache]\n  );\n  const synchronousData = React64.useSyncExternalStore(subscribe, observer.getResults, observer.getServerResults);\n  const deferredData = React64.useDeferredValue(synchronousData);\n  return useMemoOne(() => children(deferredData.data, deferredData.status), [deferredData, children]);\n}\nfunction usePrefetch() {\n  const fetchClient = React64.useContext(FetchClientContext);\n  if (!fetchClient) {\n    throw new Error(\"useFetchRequest must be used within a FetchClientProvider\");\n  }\n  return React64.useCallback((request) => fetchClient.prefetch(request), [fetchClient]);\n}\n\n// ../../library/src/modules/PageRoot.tsx\nimport { jsx as jsx63 } from \"react/jsx-runtime\";\nMotionGlobalConfig.WillChange = WillChangeMotionValue;\nfunction PageRoot({\n  RootComponent,\n  isWebsite,\n  routeId,\n  framerSiteId,\n  pathVariables,\n  routes,\n  collectionUtils,\n  notFoundPage,\n  isReducedMotion = false,\n  includeDataObserver = false,\n  localeId,\n  locales,\n  preserveQueryParams,\n  EditorBar,\n  defaultPageStyle,\n  disableHistory,\n  LayoutTemplate,\n  siteCanonicalURL\n}) {\n  React65.useEffect(() => {\n    if (isWebsite) return;\n    MainLoop.start();\n  }, []);\n  if (isWebsite) {\n    return /* @__PURE__ */ jsx63(MotionConfig, { reducedMotion: isReducedMotion ? \"user\" : \"never\", children: /* @__PURE__ */ jsx63(FetchClientProvider, { children: /* @__PURE__ */ jsx63(CustomCursorHost, { children: /* @__PURE__ */ jsx63(FormContext.Provider, { value: framerSiteId, children: /* @__PURE__ */ jsx63(\n      Router,\n      {\n        initialRoute: routeId,\n        initialPathVariables: pathVariables,\n        initialLocaleId: localeId,\n        routes,\n        collectionUtils,\n        notFoundPage,\n        locales,\n        defaultPageStyle: defaultPageStyle ?? { minHeight: \"100vh\", width: \"auto\" },\n        preserveQueryParams,\n        editorBar: /* @__PURE__ */ jsx63(EditorBarLauncher, { EditorBar }),\n        disableHistory,\n        LayoutTemplate,\n        siteCanonicalURL\n      }\n    ) }) }) }) });\n  } else {\n    const Wrapper = includeDataObserver ? DataObserver : React65.Fragment;\n    return /* @__PURE__ */ jsx63(Wrapper, { children: /* @__PURE__ */ jsx63(RoutesProvider, { routes, children: /* @__PURE__ */ jsx63(NavigationWrapper, { children: React65.isValidElement(RootComponent) ? RootComponent : React65.createElement(\n      // @ts-expect-error to figure out how to type this properly, as tests are using different\n      // $$typeof symbol and isValidElement fails\n      RootComponent,\n      { key: routeId }\n    ) }) }) });\n  }\n}\nfunction EditorBarLauncher({ EditorBar }) {\n  const libraryFeatures = useLibraryFeatures();\n  const [mounted, setMounted] = useState7(false);\n  const framerSiteId = useContext22(FormContext);\n  const editorBarFeatures = useMemo13(() => {\n    const features = {};\n    let key7;\n    for (key7 in libraryFeatures) {\n      if (libraryFeatures.hasOwnProperty(key7) && key7.startsWith(\"editorBar\")) {\n        features[key7] = libraryFeatures[key7];\n      }\n    }\n    return features;\n  }, [libraryFeatures]);\n  useEffect18(() => {\n    startTransition7(() => {\n      setMounted(true);\n    });\n  }, []);\n  if (!EditorBar || !framerSiteId || !mounted) return null;\n  return /* @__PURE__ */ jsx63(IgnoreErrors, { children: /* @__PURE__ */ jsx63(Suspense3, { children: /* @__PURE__ */ jsx63(EditorBar, { framerSiteId, features: editorBarFeatures }) }) });\n}\n\n// ../../library/src/modules/ResolveLinks.tsx\nimport { forwardRef as forwardRef6 } from \"react\";\nvar ResolveLinks = /* @__PURE__ */ withChildrenCanSuspend(\n  /* @__PURE__ */ forwardRef6(function ResolveLinksInner({ links, children, ...rest }, ref) {\n    const router = useRouter();\n    const { activeLocale } = useLocaleInfo();\n    const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n    const promises = [];\n    const resolvedLinks = links.map((link) => {\n      if (!link) return void 0;\n      if (isString(link)) return resolveLinkInternal(link, router);\n      return resolveLinkInternal(\n        link.href,\n        router,\n        link.implicitPathVariables,\n        link.refKey,\n        (unresolvedPathSlugs, unresolvedHashSlugs) => {\n          function handleSlugs(slugs) {\n            const result = {};\n            for (const slugKey in slugs) {\n              const unresolvedSlug = slugs[slugKey];\n              assert(router.collectionUtils, \"collectionUtils should be defined\");\n              assert(unresolvedSlug, \"unresolvedSlug be defined\");\n              const lazyValue = resolveSlug(unresolvedSlug, router.collectionUtils, activeLocale);\n              const promise = lazyValue.preload();\n              if (promise) {\n                promises.push(promise);\n              } else {\n                const resolvedValue = lazyValue.read();\n                if (resolvedValue) {\n                  result[slugKey] = resolvedValue;\n                }\n              }\n            }\n            return result;\n          }\n          return {\n            path: handleSlugs(unresolvedPathSlugs),\n            hash: handleSlugs(unresolvedHashSlugs)\n          };\n        }\n      );\n    });\n    if (promises.length > 0) {\n      throw Promise.allSettled(promises);\n    }\n    const childrenWithLinks = children(resolvedLinks);\n    return cloneWithPropsAndRef(childrenWithLinks, rest);\n  })\n);\n\n// ../../library/src/modules/Fetcher.tsx\nimport * as React66 from \"react\";\nvar Fetcher = /* @__PURE__ */ React66.forwardRef(function Fetcher2({ requests, disabled, children, ...rest }, ref) {\n  const cloneWithPropsAndRef = useCloneChildrenWithPropsAndRef(ref);\n  const childrenWithValues = useFetchRequestsForChildren(requests, disabled, children);\n  return cloneWithPropsAndRef(childrenWithValues, rest);\n});\n\n// ../../library/src/modules/callEach.ts\nvar callEach = (...fns) => fns.forEach((fn) => fn && fn());\n\n// ../../library/src/utils/getLogger.ts\nfunction getLogger(name) {\n  return {\n    trace(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.trace(...args);\n    },\n    debug(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.debug(...args);\n    },\n    info(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.info(...args);\n    },\n    warn(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.warn(...args);\n    },\n    error(...args) {\n      var _a;\n      return (_a = runtime.getLogger(name)) == null ? void 0 : _a.error(...args);\n    }\n  };\n}\n\n// ../../library/src/modules/cms/types.ts\nfunction isAnyCollection(value) {\n  return isAnyLegacyCollection(value) || isAnyDatabaseCollection(value);\n}\nfunction isLegacyCollection(value) {\n  return isArray(value) && value.every(isObject2);\n}\nfunction isLegacyLocalizedCollection(value) {\n  return isObject2(value) && isFunction(value.read) && isFunction(value.preload);\n}\nfunction isAnyLegacyCollection(value) {\n  return isLegacyCollection(value) || isLegacyLocalizedCollection(value);\n}\nfunction isDatabaseCollection(value) {\n  return isObject2(value) && isObject2(value.schema);\n}\nfunction isLocalizedDatabaseCollection(value) {\n  return isObject2(value) && isObject2(value.collectionByLocaleId);\n}\nfunction isAnyDatabaseCollection(value) {\n  return isDatabaseCollection(value) || isLocalizedDatabaseCollection(value);\n}\n\n// ../../library/src/modules/cms/CompatibilityDatabaseCollection.ts\nasync function getCollectionItems(collection, locale) {\n  if (isLegacyLocalizedCollection(collection)) {\n    await collection.preload(locale);\n    return collection.read(locale);\n  }\n  return collection;\n}\nvar CompatibilityDatabaseCollection = class {\n  constructor(collection, locale) {\n    this.collection = collection;\n    this.locale = locale;\n    __publicField(this, \"schema\");\n    __publicField(this, \"indexes\", []);\n    const propertyControls = getPropertyControls(collection);\n    assert(propertyControls, \"Collection does not have properties\");\n    const schema = {\n      id: {\n        type: \"string\" /* String */,\n        isNullable: false\n      }\n    };\n    const controlEntries = Object.entries(propertyControls);\n    for (const [key7, controlDescription] of controlEntries) {\n      if (!controlDescription) continue;\n      const type = controlDescription.type;\n      assert(type !== \"array\" /* Array */, \"Array properties are not supported\");\n      assert(type !== \"object\" /* Object */, \"Object properties are not supported\");\n      schema[key7] = {\n        type,\n        isNullable: true\n      };\n    }\n    this.schema = schema;\n  }\n  getDatabaseItem(item, pointer) {\n    const data2 = {};\n    for (const key7 in this.schema) {\n      const value = item[key7];\n      if (isNullish(value)) continue;\n      const definition = this.schema[key7];\n      if (isUndefined(definition)) continue;\n      assert(definition.type !== \"unknown\", \"Invalid definition type\");\n      data2[key7] = {\n        type: definition.type,\n        value\n      };\n    }\n    return { pointer, data: data2 };\n  }\n  async resolveRichText(pointer) {\n    if (LazyValue.is(pointer)) {\n      const promise = pointer.preload();\n      if (promise) await promise;\n      return pointer.read();\n    }\n    return pointer;\n  }\n  async scanItems() {\n    const items = await getCollectionItems(this.collection, this.locale);\n    return items.map((item, index) => {\n      const pointer = String(index);\n      return this.getDatabaseItem(item, pointer);\n    });\n  }\n  async resolveItems(pointers) {\n    const items = await getCollectionItems(this.collection, this.locale);\n    return pointers.map((pointer) => {\n      const index = Number(pointer);\n      const item = items[index];\n      assert(item, \"Can't find collection item\");\n      return this.getDatabaseItem(item, pointer);\n    });\n  }\n  compareItems(left, right) {\n    return Number(left.pointer) - Number(right.pointer);\n  }\n};\n\n// ../../library/src/modules/cms/DatabaseValue.ts\nfunction compareArray(left, right, collation11) {\n  const leftLength = left.value.length;\n  const rightLength = right.value.length;\n  if (leftLength < rightLength) return -1;\n  if (leftLength > rightLength) return 1;\n  for (let i = 0; i < leftLength; i++) {\n    const leftItem = left.value[i];\n    const rightItem = right.value[i];\n    const result = compare(leftItem, rightItem, collation11);\n    if (result !== 0) return result;\n  }\n  return 0;\n}\nfunction castArray(value, definition) {\n  switch (value == null ? void 0 : value.type) {\n    case \"array\" /* Array */: {\n      const result = value.value.map((item) => {\n        return DatabaseValue.cast(item, definition.definition);\n      });\n      return {\n        type: \"array\" /* Array */,\n        value: result\n      };\n    }\n  }\n  return null;\n}\nfunction compareBoolean(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castBoolean(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"boolean\" /* Boolean */: {\n      return value;\n    }\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      return {\n        type: \"boolean\" /* Boolean */,\n        value: Boolean(value.value)\n      };\n    }\n  }\n  return null;\n}\nfunction valueToBoolean(value) {\n  const cast = castBoolean(value);\n  return (cast == null ? void 0 : cast.value) ?? false;\n}\nfunction compareColor(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castColor(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"color\" /* Color */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareDate(left, right) {\n  const leftDate = new Date(left.value);\n  const rightDate = new Date(right.value);\n  if (leftDate < rightDate) return -1;\n  if (leftDate > rightDate) return 1;\n  return 0;\n}\nfunction castDate(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"date\" /* Date */: {\n      return value;\n    }\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      const date = new Date(value.value);\n      if (isValidDate(date)) {\n        return {\n          type: \"date\" /* Date */,\n          value: date.toISOString()\n        };\n      }\n      return null;\n    }\n  }\n  return null;\n}\nfunction compareEnum(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castEnum(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"enum\" /* Enum */: {\n      return value;\n    }\n    case \"string\" /* String */: {\n      return {\n        type: \"enum\" /* Enum */,\n        value: value.value\n      };\n    }\n  }\n  return null;\n}\nfunction compareFile(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castFile(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"file\" /* File */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareLink(left, right) {\n  const leftEncoded = JSON.stringify(left.value);\n  const rightEncoded = JSON.stringify(right.value);\n  if (leftEncoded < rightEncoded) return -1;\n  if (leftEncoded > rightEncoded) return 1;\n  return 0;\n}\nfunction castLink(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"link\" /* Link */: {\n      return value;\n    }\n    case \"string\" /* String */: {\n      try {\n        const { protocol } = new URL(value.value);\n        if (protocol === \"http:\" || protocol === \"https:\") {\n          return {\n            type: \"link\" /* Link */,\n            value: value.value\n          };\n        }\n        return null;\n      } catch {\n        return null;\n      }\n    }\n  }\n  return null;\n}\nfunction compareNumber(left, right) {\n  if (left.value < right.value) return -1;\n  if (left.value > right.value) return 1;\n  return 0;\n}\nfunction castNumber(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"number\" /* Number */:\n    case \"string\" /* String */: {\n      const number2 = Number(value.value);\n      if (Number.isFinite(number2)) {\n        return {\n          type: \"number\" /* Number */,\n          value: number2\n        };\n      }\n      return null;\n    }\n  }\n  return null;\n}\nfunction valueToNumber(value) {\n  const cast = castNumber(value);\n  return (cast == null ? void 0 : cast.value) ?? null;\n}\nfunction compareObject(left, right, collation11) {\n  const leftKeys = Object.keys(left.value).sort();\n  const rightKeys = Object.keys(right.value).sort();\n  if (leftKeys.length < rightKeys.length) return -1;\n  if (leftKeys.length > rightKeys.length) return 1;\n  for (let i = 0; i < leftKeys.length; i++) {\n    const leftKey = leftKeys[i];\n    const rightKey = rightKeys[i];\n    if (leftKey < rightKey) return -1;\n    if (leftKey > rightKey) return 1;\n    const leftValue = left.value[leftKey] ?? null;\n    const rightValue = right.value[rightKey] ?? null;\n    const result = compare(leftValue, rightValue, collation11);\n    if (result !== 0) return result;\n  }\n  return 0;\n}\nfunction castObject(value, definition) {\n  switch (value == null ? void 0 : value.type) {\n    case \"object\" /* Object */: {\n      const result = {};\n      const definitionEntries = Object.entries(definition.definitions);\n      for (const [key7, itemDefinition] of definitionEntries) {\n        const item = value.value[key7] ?? null;\n        result[key7] = DatabaseValue.cast(item, itemDefinition);\n      }\n      return {\n        type: \"object\" /* Object */,\n        value: result\n      };\n    }\n  }\n  return null;\n}\nfunction compareResponsiveImage(left, right) {\n  const leftEncoded = JSON.stringify(left.value);\n  const rightEncoded = JSON.stringify(right.value);\n  if (leftEncoded < rightEncoded) return -1;\n  if (leftEncoded > rightEncoded) return 1;\n  return 0;\n}\nfunction castResponsiveImage(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"responsiveimage\" /* ResponsiveImage */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareRichText(left, right) {\n  const leftValue = left.value;\n  const rightValue = right.value;\n  if (leftValue < rightValue) return -1;\n  if (leftValue > rightValue) return 1;\n  return 0;\n}\nfunction castRichText(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"richtext\" /* RichText */: {\n      return value;\n    }\n  }\n  return null;\n}\nfunction compareString(left, right, collation11) {\n  let leftValue = left.value;\n  let rightValue = right.value;\n  if (collation11.type === 0 /* CaseInsensitive */) {\n    leftValue = left.value.toLowerCase();\n    rightValue = right.value.toLowerCase();\n  }\n  if (leftValue < rightValue) return -1;\n  if (leftValue > rightValue) return 1;\n  return 0;\n}\nfunction castString(value) {\n  switch (value == null ? void 0 : value.type) {\n    case \"string\" /* String */: {\n      return value;\n    }\n    case \"number\" /* Number */: {\n      return {\n        type: \"string\" /* String */,\n        value: String(value.value)\n      };\n    }\n  }\n  return null;\n}\nfunction valueToString(value) {\n  const cast = castString(value);\n  return (cast == null ? void 0 : cast.value) ?? null;\n}\nvar DatabaseValue = {\n  /**\n   * Casts a value to a different type.\n   */\n  cast(value, definition) {\n    switch (definition.type) {\n      case \"array\" /* Array */:\n        return castArray(value, definition);\n      case \"boolean\" /* Boolean */:\n        return castBoolean(value);\n      case \"color\" /* Color */:\n        return castColor(value);\n      case \"date\" /* Date */:\n        return castDate(value);\n      case \"enum\" /* Enum */:\n        return castEnum(value);\n      case \"file\" /* File */:\n        return castFile(value);\n      case \"link\" /* Link */:\n        return castLink(value);\n      case \"number\" /* Number */:\n        return castNumber(value);\n      case \"object\" /* Object */:\n        return castObject(value, definition);\n      case \"responsiveimage\" /* ResponsiveImage */:\n        return castResponsiveImage(value);\n      case \"richtext\" /* RichText */:\n        return castRichText(value);\n      case \"string\" /* String */:\n        return castString(value);\n      case \"unknown\":\n        return value;\n      default:\n        assertNever(definition, \"Unsupported cast\");\n    }\n  },\n  /**\n   * Parses a JavaScript variable into a DatabaseValue.\n   */\n  parse(value) {\n    if (isBoolean(value)) {\n      return {\n        type: \"boolean\" /* Boolean */,\n        value\n      };\n    }\n    if (isValidDate(value)) {\n      return {\n        type: \"date\" /* Date */,\n        value: value.toISOString()\n      };\n    }\n    if (isNumber(value)) {\n      return {\n        type: \"number\" /* Number */,\n        value\n      };\n    }\n    if (isString(value)) {\n      return {\n        type: \"string\" /* String */,\n        value\n      };\n    }\n    if (isArray(value)) {\n      return {\n        type: \"array\" /* Array */,\n        value: value.map(DatabaseValue.parse)\n      };\n    }\n    return null;\n  },\n  /**\n   * Checks if the left value is equal to the right value. Returns false if\n   * the values are not of the same type.\n   */\n  equal(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) === 0;\n  },\n  /**\n   * Checks if the left value is less than the right value. Returns false if\n   * the values are not of the same type.\n   */\n  lessThan(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) < 0;\n  },\n  /**\n   * Checks if the left value is less than or equal to the right value.\n   * Returns false if the values are not of the same type.\n   */\n  lessThanOrEqual(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) <= 0;\n  },\n  /**\n   * Checks if the left value is greater than the right value. Returns false\n   * if the values are not of the same type.\n   */\n  greaterThan(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) > 0;\n  },\n  /**\n   * Checks if the left value is greater than or equal to the right value.\n   * Returns false if the values are not of the same type.\n   */\n  greaterThanOrEqual(left, right, collation11) {\n    if ((left == null ? void 0 : left.type) !== (right == null ? void 0 : right.type)) {\n      return false;\n    }\n    return compare(left, right, collation11) >= 0;\n  },\n  /**\n   * Checks if the left value is in the right value. Returns false if the\n   * right value is not an array.\n   */\n  in(left, right, collation11) {\n    if ((right == null ? void 0 : right.type) !== \"array\" /* Array */) return false;\n    return right.value.some((item) => {\n      return DatabaseValue.equal(item, left, collation11);\n    });\n  },\n  /**\n   * Get the index of the first occurrence of `target` in `source`.\n   *\n   * If source has duplicates, the index of the first occurrence is always returned.\n   */\n  indexOf(source, target, collation11) {\n    if ((source == null ? void 0 : source.type) !== \"array\" /* Array */) return -1;\n    return source.value.findIndex((item) => {\n      return DatabaseValue.equal(item, target, collation11);\n    });\n  },\n  contains(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue)) return false;\n    if (isNull(targetValue)) return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.includes(targetValue);\n  },\n  startsWith(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue)) return false;\n    if (isNull(targetValue)) return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.startsWith(targetValue);\n  },\n  endsWith(source, target, collation11) {\n    let sourceValue = valueToString(source);\n    let targetValue = valueToString(target);\n    if (isNull(sourceValue)) return false;\n    if (isNull(targetValue)) return false;\n    if (collation11.type === 0 /* CaseInsensitive */) {\n      sourceValue = sourceValue.toLowerCase();\n      targetValue = targetValue.toLowerCase();\n    }\n    return sourceValue.endsWith(targetValue);\n  },\n  length(value) {\n    switch (value == null ? void 0 : value.type) {\n      case \"array\" /* Array */:\n        return value.value.length;\n    }\n    return 0;\n  },\n  stringify(value) {\n    if (value === null) {\n      return \"null\";\n    }\n    switch (value.type) {\n      case \"array\" /* Array */:\n        return `[${value.value.map(DatabaseValue.stringify).join(\", \")}]`;\n      case \"boolean\" /* Boolean */:\n      case \"number\" /* Number */:\n        return String(value.value);\n      case \"string\" /* String */:\n        return `'${value.value}'`;\n      case \"enum\" /* Enum */:\n        return `'${value.value}' /* Enum */`;\n      case \"color\" /* Color */:\n        return `'${value.value}' /* Color */`;\n      case \"date\" /* Date */:\n        return `'${value.value}' /* Date */`;\n      case \"richtext\" /* RichText */:\n        return \"RichText\";\n      case \"responsiveimage\" /* ResponsiveImage */:\n        return \"ResponsiveImage\";\n      case \"file\" /* File */:\n        return \"File\";\n      case \"link\" /* Link */:\n        return isString(value.value) ? `'${value.value}' /* Link */` : \"Link\";\n      case \"object\" /* Object */:\n        return \"Object\";\n      default:\n        assertNever(value);\n    }\n  }\n};\nfunction compare(left, right, collation11) {\n  if (isNull(left) || isNull(right)) {\n    assert(left === right);\n    return 0;\n  }\n  switch (left.type) {\n    case \"array\" /* Array */: {\n      assert(left.type === right.type);\n      return compareArray(left, right, collation11);\n    }\n    case \"boolean\" /* Boolean */: {\n      assert(left.type === right.type);\n      return compareBoolean(left, right);\n    }\n    case \"color\" /* Color */: {\n      assert(left.type === right.type);\n      return compareColor(left, right);\n    }\n    case \"date\" /* Date */: {\n      assert(left.type === right.type);\n      return compareDate(left, right);\n    }\n    case \"enum\" /* Enum */: {\n      assert(left.type === right.type);\n      return compareEnum(left, right);\n    }\n    case \"file\" /* File */: {\n      assert(left.type === right.type);\n      return compareFile(left, right);\n    }\n    case \"link\" /* Link */: {\n      assert(left.type === right.type);\n      return compareLink(left, right);\n    }\n    case \"number\" /* Number */: {\n      assert(left.type === right.type);\n      return compareNumber(left, right);\n    }\n    case \"object\" /* Object */: {\n      assert(left.type === right.type);\n      return compareObject(left, right, collation11);\n    }\n    case \"responsiveimage\" /* ResponsiveImage */: {\n      assert(left.type === right.type);\n      return compareResponsiveImage(left, right);\n    }\n    case \"richtext\" /* RichText */: {\n      assert(left.type === right.type);\n      return compareRichText(left, right);\n    }\n    case \"string\" /* String */: {\n      assert(left.type === right.type);\n      return compareString(left, right, collation11);\n    }\n    default: {\n      assertNever(left);\n    }\n  }\n}\n\n// ../../library/src/modules/cms/DatabaseValueDefinition.ts\nvar unknownDefinition = {\n  type: \"unknown\",\n  isNullable: true\n};\n\n// ../../library/src/modules/cms/optimizer/Cost.ts\nfunction getNetworkLatency() {\n  return 25;\n}\nfunction getNetworkSpeed() {\n  return 100 * 125;\n}\nvar KB = 1e3;\nvar Cost = class _Cost {\n  constructor(network) {\n    this.network = network;\n  }\n  static estimate(totalRequests, transferredBytes) {\n    const latency = getNetworkLatency();\n    const speed = getNetworkSpeed();\n    const network = totalRequests * latency + transferredBytes / speed;\n    return new _Cost(network);\n  }\n  static max(left, right) {\n    const network = Math.max(left.network, right.network);\n    return new _Cost(network);\n  }\n  static compare(left, right) {\n    if (left.network < right.network) return -1;\n    if (left.network > right.network) return 1;\n    return 0;\n  }\n  add(cost) {\n    this.network += cost.network;\n    return this;\n  }\n  toString() {\n    return `${this.network}ms`;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Group.ts\nfunction GroupId(id) {\n  return id;\n}\nvar Group = class {\n  constructor(id, relational) {\n    this.id = id;\n    this.relational = relational;\n    /**\n     * A list of all nodes in the group. All nodes must have compatible\n     * relational props.\n     */\n    __publicField(this, \"nodes\", []);\n    /**\n     * A map of all winners in the group by their hash.\n     */\n    __publicField(this, \"winners\", /* @__PURE__ */ new Map());\n  }\n  /**\n   * Adds a node to the group. Throws an error if the node is already in a\n   * group.\n   */\n  addNode(node) {\n    this.nodes.push(node);\n    node.setGroup(this);\n  }\n  /**\n   * Returns the winner for the given required physical props. The winner\n   * stores the best node and its cost. This is used to find the best node in\n   * the group.\n   */\n  getWinner(required) {\n    const hash2 = required.getHash();\n    const existing = this.winners.get(hash2);\n    if (existing) return existing;\n    const winner = new Winner();\n    this.winners.set(hash2, winner);\n    return winner;\n  }\n  /**\n   * Returns the optimized version of the node. The optimized version is the\n   * node with the lowest cost with all children replaced with their optimized\n   * versions. This is used to create the final optimized query plan.\n   */\n  getOptimized(required) {\n    const winner = this.getWinner(required);\n    assert(winner.node, \"Group not optimized\");\n    const optimizer = winner.node.getOptimized(required);\n    optimizer.setGroup(this);\n    return optimizer;\n  }\n};\nvar Winner = class {\n  constructor() {\n    __publicField(this, \"node\");\n    __publicField(this, \"cost\", new Cost(Infinity));\n    __publicField(this, \"nodes\", []);\n  }\n  update(node, cost) {\n    this.nodes.push(node);\n    if (Cost.compare(cost, this.cost) < 0) {\n      this.node = node;\n      this.cost = cost;\n    }\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Evaluate.ts\nfunction evaluateSync(generator) {\n  const state = generator.next();\n  assert(state.done, \"Generator must not yield\");\n  return state.value;\n}\nasync function evaluateAsync(generator, state = generator.next()) {\n  while (!state.done) {\n    const value = await state.value;\n    state = generator.next(value);\n  }\n  return state.value;\n}\nfunction* evaluateObject(values) {\n  const result = {};\n  const keys3 = Object.keys(values);\n  const promises = [];\n  for (const key7 of keys3) {\n    const generator = values[key7];\n    if (isGenerator2(generator)) {\n      const state = generator.next();\n      if (state.done) {\n        result[key7] = state.value;\n      } else {\n        promises.push(\n          evaluateAsync(generator, state).then((value) => {\n            result[key7] = value;\n          })\n        );\n      }\n    } else {\n      result[key7] = generator;\n    }\n  }\n  if (promises.length > 0) {\n    yield Promise.all(promises);\n  }\n  return result;\n}\nfunction* evaluateArray(values) {\n  const result = [];\n  const keys3 = values.keys();\n  const promises = [];\n  for (const key7 of keys3) {\n    const generator = values[key7];\n    if (isGenerator2(generator)) {\n      const state = generator.next();\n      if (state.done) {\n        result[key7] = state.value;\n      } else {\n        promises.push(\n          evaluateAsync(generator, state).then((value) => {\n            result[key7] = value;\n          })\n        );\n      }\n    } else {\n      result[key7] = generator;\n    }\n  }\n  if (promises.length > 0) {\n    yield Promise.all(promises);\n  }\n  return result;\n}\n\n// ../../library/src/modules/cms/optimizer/nodes/AbstractNode.ts\nvar AbstractNode = class {\n  constructor(isSynchronous) {\n    this.isSynchronous = isSynchronous;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalNode.ts\nvar RelationalNode = class extends AbstractNode {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"group\");\n  }\n  /**\n   * Returns the group that the node belongs to. Throws an error if the node\n   * is not in a group. This should only happen in the constructor because\n   * every node is added to a group right after creation.\n   */\n  getGroup() {\n    assert(this.group, \"Node must be in a group\");\n    return this.group;\n  }\n  /**\n   * Adds the node to the given group. Throws an error if the node is already\n   * in a group.\n   */\n  setGroup(group) {\n    assert(!this.group, \"Node is already in a group\");\n    this.group = group;\n  }\n  /**\n   * Evaluates the node and all children synchronously. Throws an error if the\n   * node is not synchronous.\n   */\n  evaluateSync() {\n    const generator = this.evaluate(void 0);\n    return evaluateSync(generator);\n  }\n  /**\n   * Evaluates the node and all children asynchronously.\n   */\n  evaluateAsync() {\n    const generator = this.evaluate(void 0);\n    return evaluateAsync(generator);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Hashable.ts\nfunction Hash(value) {\n  return value;\n}\nfunction isHashable(value) {\n  return isObject2(value) && isFunction(value.getHash);\n}\nfunction calculateHash(name, ...values) {\n  const hashes = values.map((value) => {\n    const isCollectionMetadata = value instanceof CollectionMetadata;\n    assert(!isCollectionMetadata, \"Pass CollectionMetadata.id instead\");\n    const isFieldMetadata = value instanceof FieldMetadata;\n    assert(!isFieldMetadata, \"Pass FieldMetadata.id instead\");\n    const isIndexMetadata = value instanceof IndexMetadata;\n    assert(!isIndexMetadata, \"Pass IndexMetadata.id instead\");\n    const isRelationalNode = value instanceof RelationalNode;\n    assert(!isRelationalNode, \"Pass RelationalNode.group.id instead\");\n    const isGroup = value instanceof Group;\n    assert(!isGroup, \"Pass Group.id instead\");\n    if (isHashable(value)) {\n      return value.getHash();\n    }\n    return JSON.stringify(value);\n  });\n  return Hash(`${name}(${hashes.join(\", \")})`);\n}\n\n// ../../library/src/modules/cms/optimizer/RichText.ts\nvar RichText = class {\n  constructor(data2, pointer) {\n    this.data = data2;\n    this.pointer = pointer;\n    __publicField(this, \"cached\");\n  }\n  resolve() {\n    this.cached ??= this.data.resolveRichText(this.pointer);\n    return this.cached;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Metadata.ts\nvar VIRTUAL_INDEX_FIELD = \"index\";\nvar Metadata = class extends Set {\n  merge(other) {\n    for (const item of other) {\n      this.add(item);\n    }\n  }\n  equals(other) {\n    if (this === other) return true;\n    if (this.size !== other.size) return false;\n    for (const item of this) {\n      if (!other.has(item)) return false;\n    }\n    return true;\n  }\n  subsetOf(other) {\n    if (this === other) return true;\n    if (this.size > other.size) return false;\n    for (const item of this) {\n      if (!other.has(item)) return false;\n    }\n    return true;\n  }\n  getHash() {\n    const ids = [];\n    for (const item of this) {\n      ids.push(item.id);\n    }\n    ids.sort((a, b) => a - b);\n    return calculateHash(this.name, ...ids);\n  }\n};\nfunction CollectionId(id) {\n  return id;\n}\nvar CollectionMetadata = class {\n  constructor(id, name, data2) {\n    this.id = id;\n    this.name = name;\n    this.data = data2;\n    __publicField(this, \"indexes\", new Indexes());\n    __publicField(this, \"fields\", new Fields());\n  }\n};\nfunction IndexId(id) {\n  return id;\n}\nvar IndexMetadata = class {\n  constructor(id, data2, collection, lookupNodes, constraint, ordering) {\n    this.id = id;\n    this.data = data2;\n    this.collection = collection;\n    this.lookupNodes = lookupNodes;\n    this.constraint = constraint;\n    this.ordering = ordering;\n    __publicField(this, \"resolvedFields\", new Fields());\n    for (const fieldName in data2.schema) {\n      for (const field of collection.fields) {\n        if (field.name === fieldName) {\n          this.resolvedFields.add(field);\n        }\n      }\n    }\n  }\n};\nvar Indexes = class extends Metadata {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"name\", \"Indexes\");\n  }\n};\nfunction FieldId(id) {\n  return id;\n}\nvar FieldMetadata = class {\n  constructor(id, name, definition, collection) {\n    this.id = id;\n    this.name = name;\n    this.definition = definition;\n    this.collection = collection;\n  }\n  getValue(item) {\n    assert(this.name, \"Can only get value of field with a name\");\n    const value = item.data[this.name];\n    if ((value == null ? void 0 : value.type) === \"richtext\" /* RichText */) {\n      assert(this.collection, \"Rich text field must have a collection\");\n      return {\n        type: \"richtext\" /* RichText */,\n        value: new RichText(this.collection.data, value.value)\n      };\n    }\n    return value ?? null;\n  }\n};\nvar Fields = class extends Metadata {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"name\", \"Fields\");\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Ordering.ts\nvar OrderingField = class {\n  constructor(field, direction = \"asc\" /* Ascending */) {\n    this.field = field;\n    this.direction = direction;\n  }\n  getHash() {\n    return calculateHash(\"OrderingField\", this.field.id, this.direction);\n  }\n};\nvar Ordering = class {\n  constructor(ordering) {\n    __publicField(this, \"fields\", []);\n    if (ordering) {\n      this.merge(ordering);\n    }\n  }\n  get length() {\n    return this.fields.length;\n  }\n  getHash() {\n    return calculateHash(\"Ordering\", ...this.fields);\n  }\n  push(field) {\n    this.fields.push(field);\n  }\n  merge(ordering) {\n    this.fields.push(...ordering.fields);\n  }\n  equals(other) {\n    if (this === other) return true;\n    if (this.length !== other.length) return false;\n    return this.getHash() === other.getHash();\n  }\n  providedByFields(fields) {\n    for (const { field } of this.fields) {\n      if (fields.has(field)) continue;\n      if (field.name === VIRTUAL_INDEX_FIELD) continue;\n      return false;\n    }\n    return true;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/PhysicalProps.ts\nvar RequiredProps = class {\n  constructor(ordering, resolvedFields) {\n    this.ordering = ordering;\n    this.resolvedFields = resolvedFields;\n  }\n  getHash() {\n    return calculateHash(\"RequiredProps\", this.ordering, this.resolvedFields);\n  }\n  /**\n   * Required props with no ordering and no resolved fields are considered\n   * minimal. Every node can provide them.\n   */\n  get isMinimal() {\n    return this.ordering.length === 0 && this.resolvedFields.size === 0;\n  }\n  /**\n   * Checks if the node can provide the required props. If it can't, we need\n   * to add enforcers that provides them.\n   *\n   * Some nodes don't provide the required props directly, but can pass them\n   * through to their children. E.g. a `RelationalFilter` returns the relation\n   * in the same order and with the same resolved fields as its input. These\n   * nodes should return `true` and pass the required props to their children.\n   */\n  canProvide(node) {\n    return this.canProvideOrdering(node) && this.canProvideResolvedFields(node);\n  }\n  /**\n   * Checks if the given node can provide the required ordering. If it can't,\n   * we need to add an `EnforcerSort` node that provides it.\n   */\n  canProvideOrdering(node) {\n    if (this.ordering.length === 0) return true;\n    return node.canProvideOrdering(this.ordering);\n  }\n  /**\n   * Checks if the given node can provide the required resolved fields. If it\n   * can't, we need to add an `EnforcerResolve` node that provides it.\n   */\n  canProvideResolvedFields(node) {\n    if (this.resolvedFields.size === 0) return true;\n    return node.canProvideResolvedFields(this.resolvedFields);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Scope.ts\nvar Scope = class _Scope {\n  constructor(parent) {\n    this.parent = parent;\n    /**\n     * The last node built in the scope.\n     */\n    __publicField(this, \"node\");\n    /**\n     * The required ordering of the scope.\n     */\n    __publicField(this, \"ordering\");\n    /**\n     * A list of all fields available in the scope.\n     */\n    __publicField(this, \"fields\", []);\n  }\n  /**\n   * Returns the last node built in the scope and removes it from the scope.\n   * Throws an error if no node was built in the scope yet.\n   */\n  takeNode() {\n    const node = this.node;\n    assert(node, \"Node is missing\");\n    this.node = void 0;\n    return node;\n  }\n  /**\n   * Sets the last node built in the scope. Throws an error if there is\n   * already a node in the scope.\n   */\n  setNode(node) {\n    assert(!this.node, \"Node already set\");\n    this.node = node;\n  }\n  setOrdering(ordering) {\n    this.ordering = ordering;\n  }\n  /**\n   * Create a new scope with the this scope as its parent.\n   */\n  push() {\n    return new _Scope(this);\n  }\n  /**\n   * Creates a new scope with the parent of the this scope as its parent.\n   */\n  replace() {\n    return new _Scope(this.parent);\n  }\n  /**\n   * Adds a field to this scope. Any fields that are added will be available\n   * in the this scope and all of its children.\n   */\n  addField(scopeField) {\n    this.fields.push(scopeField);\n  }\n  /**\n   * Merges all fields from the given scope into the this scope.\n   */\n  addFieldsFromScope(scope) {\n    for (const scopeField of scope.fields) {\n      this.addField(scopeField);\n    }\n  }\n  /**\n   * Resolves a field from this scope. If the field is not found, the parent\n   * scope is checked. If the name of a field is ambiguous, an error is\n   * thrown.\n   */\n  resolveField(name, collection) {\n    var _a;\n    const candidates = [];\n    for (const field of this.fields) {\n      if (field.name !== name) continue;\n      if (collection && field.collectionName !== collection) continue;\n      candidates.push(field);\n    }\n    if (candidates.length === 1) {\n      return candidates[0];\n    }\n    if (candidates.length > 1) {\n      throw new Error(\"Ambiguous fields\");\n    }\n    return (_a = this.parent) == null ? void 0 : _a.resolveField(name, collection);\n  }\n  /**\n   * Checks if the scope or any parent scope has the given scope field.\n   */\n  has(scopeField) {\n    var _a;\n    if (this.fields.includes(scopeField)) {\n      return true;\n    }\n    return ((_a = this.parent) == null ? void 0 : _a.has(scopeField)) ?? false;\n  }\n  /**\n   * Returns the required ordering for the scope.\n   */\n  getRequiredOrdering() {\n    return this.ordering ?? new Ordering();\n  }\n  /**\n   * Returns the required resolved fields for the scope.\n   */\n  getRequiredResolvedFields() {\n    const resolvedFields = new Fields();\n    for (const { field } of this.fields) {\n      if (field.collection) {\n        resolvedFields.add(field);\n      }\n    }\n    return resolvedFields;\n  }\n  /**\n   * Returns the set of required physical props for this scope. This is used\n   * to create the required props for the root node in the optimizer.\n   */\n  getRequiredProps() {\n    const ordering = this.getRequiredOrdering();\n    const resolvedFields = this.getRequiredResolvedFields();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  /**\n   * Returns a map of the fields in this scope, with their scope names as\n   * keys. This is used to create the final `QueryResult` with the correct\n   * field names.\n   */\n  getNamedFields() {\n    const namedFields = {};\n    for (const { name, field } of this.fields) {\n      namedFields[name] = field;\n    }\n    return namedFields;\n  }\n  /**\n   * Returns the single field from this scope if it only contains one field.\n   * Throws an error if there are more than one fields.\n   */\n  getSingleField() {\n    assert(this.fields.length === 1, \"Scope must contain exactly one field\");\n    const scopeField = this.fields[0];\n    assert(scopeField, \"Field must exist\");\n    return scopeField.field;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Relation.ts\nvar Tuple = class {\n  constructor() {\n    __publicField(this, \"pointers\", /* @__PURE__ */ new Map());\n    __publicField(this, \"values\", /* @__PURE__ */ new Map());\n  }\n  getKey() {\n    const result = [];\n    for (const [collection, pointer] of this.pointers) {\n      result.push(`${collection.id}-${pointer}`);\n    }\n    return result.sort().join(\"-\");\n  }\n  addValue(field, value) {\n    this.values.set(field, value);\n  }\n  getValue(field) {\n    return this.values.get(field) ?? null;\n  }\n  mergeValues(tuple) {\n    for (const [field, value] of tuple.values) {\n      this.addValue(field, value);\n    }\n  }\n  addPointer(collection, pointer) {\n    this.pointers.set(collection, pointer);\n  }\n  getPointer(collection) {\n    return this.pointers.get(collection);\n  }\n  mergePointers(tuple) {\n    for (const [collection, pointer] of tuple.pointers) {\n      this.addPointer(collection, pointer);\n    }\n  }\n  merge(tuple) {\n    this.mergeValues(tuple);\n    this.mergePointers(tuple);\n  }\n};\nvar Relation = class _Relation {\n  constructor(fields, tuples = []) {\n    this.fields = fields;\n    this.tuples = tuples;\n  }\n  push(tuple) {\n    this.tuples.push(tuple);\n  }\n  filter(predicate) {\n    const tuples = this.tuples.filter(predicate);\n    return new _Relation(this.fields, tuples);\n  }\n  map(fields, callback) {\n    const tuples = this.tuples.map(callback);\n    return new _Relation(fields, tuples);\n  }\n  sort(callback) {\n    const tuples = Array.from(this.tuples).sort(callback);\n    return new _Relation(this.fields, tuples);\n  }\n  slice(start, end) {\n    const tuples = this.tuples.slice(start, end);\n    return new _Relation(this.fields, tuples);\n  }\n  union(other) {\n    const fields = new Fields();\n    for (const field of this.fields) {\n      if (other.fields.has(field)) {\n        fields.add(field);\n      }\n    }\n    const keys3 = /* @__PURE__ */ new Set();\n    const result = new _Relation(fields);\n    for (const tuple of this.tuples) {\n      const key7 = tuple.getKey();\n      keys3.add(key7);\n      result.push(tuple);\n    }\n    for (const tuple of other.tuples) {\n      const key7 = tuple.getKey();\n      if (keys3.has(key7)) continue;\n      result.push(tuple);\n    }\n    return result;\n  }\n  intersection(other) {\n    const fields = new Fields();\n    for (const field of this.fields) {\n      if (other.fields.has(field)) {\n        fields.add(field);\n      }\n    }\n    const keys3 = /* @__PURE__ */ new Set();\n    const result = new _Relation(fields);\n    for (const tuple of this.tuples) {\n      const key7 = tuple.getKey();\n      keys3.add(key7);\n    }\n    for (const tuple of other.tuples) {\n      const key7 = tuple.getKey();\n      if (!keys3.has(key7)) continue;\n      result.push(tuple);\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalProject.ts\nvar ProjectionField = class {\n  constructor(input, field) {\n    this.input = input;\n    this.field = field;\n  }\n  getHash() {\n    return calculateHash(\"ProjectionField\", this.input, this.field.id);\n  }\n};\nvar RelationalProject = class _RelationalProject extends RelationalNode {\n  constructor(input, projections, passthrough) {\n    let isSynchronous = input.isSynchronous;\n    for (const projection of projections) {\n      isSynchronous &&= projection.input.isSynchronous;\n    }\n    super(isSynchronous);\n    this.input = input;\n    this.projections = projections;\n    this.passthrough = passthrough;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalProject\", this.inputGroup.id, ...this.projections, this.passthrough);\n  }\n  getOutputFields() {\n    const fields = new Fields();\n    fields.merge(this.passthrough);\n    for (const projection of this.projections) {\n      fields.add(projection.field);\n    }\n    return fields;\n  }\n  canProvideOrdering(ordering) {\n    const projectionFields = new Fields();\n    for (const projection of this.projections) {\n      projectionFields.add(projection.field);\n    }\n    for (const { field } of ordering.fields) {\n      if (projectionFields.has(field)) {\n        return false;\n      }\n    }\n    return true;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    for (const projection of this.projections) {\n      resolvedFields.merge(projection.input.referencedFields);\n      resolvedFields.delete(projection.field);\n    }\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    let projectionsCost = new Cost(0);\n    for (const projection of this.projections) {\n      const projectionCost = projection.input.optimize(optimizer);\n      projectionsCost = Cost.max(projectionsCost, projectionCost);\n    }\n    return new Cost(0).add(Cost.max(inputCost, projectionsCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const projections = this.projections.map((projection) => {\n      const projectionInput = projection.input.getOptimized();\n      return new ProjectionField(projectionInput, projection.field);\n    });\n    return new _RelationalProject(input, projections, this.passthrough);\n  }\n  *evaluate(context) {\n    const outputFields = this.getOutputFields();\n    const input = yield* this.input.evaluate(context);\n    const projectedValues = yield* evaluateArray(\n      input.tuples.map(\n        (tuple) => evaluateArray(\n          this.projections.map(\n            (projection) => evaluateObject({\n              field: projection.field,\n              value: projection.input.evaluate(context, tuple)\n            })\n          )\n        )\n      )\n    );\n    return input.map(outputFields, (tuple, index) => {\n      const result = new Tuple();\n      result.mergePointers(tuple);\n      for (const field of this.passthrough) {\n        const value = tuple.getValue(field);\n        result.addValue(field, value);\n      }\n      const projections = projectedValues[index];\n      assert(projections, \"Projections must exist\");\n      for (const { field, value } of projections) {\n        result.addValue(field, value);\n      }\n      return result;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNode.ts\nvar collation = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarNode = class extends AbstractNode {\n  constructor(referencedFields, referencedOuterFields, isSynchronous) {\n    super(isSynchronous);\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    this.isSynchronous = isSynchronous;\n  }\n  /**\n   * Evaluates the node and all children synchronously. Throws an error if the\n   * node is not synchronous.\n   */\n  evaluateSync() {\n    const generator = this.evaluate(void 0, void 0);\n    return evaluateSync(generator);\n  }\n  /**\n   * Evaluates the node and all children asynchronously.\n   */\n  evaluateAsync() {\n    const generator = this.evaluate(void 0, void 0);\n    return evaluateAsync(generator);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarCase.ts\nvar collation2 = {\n  type: 0 /* CaseInsensitive */\n};\nvar CaseCondition = class {\n  constructor(when, then) {\n    this.when = when;\n    this.then = then;\n  }\n  getHash() {\n    return calculateHash(\"CaseCondition\", this.when, this.then);\n  }\n};\nvar ScalarCase = class _ScalarCase extends ScalarNode {\n  constructor(input, conditions, otherwise) {\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    let isSynchronous = true;\n    if (input) {\n      referencedFields.merge(input.referencedFields);\n      referencedOuterFields.merge(input.referencedOuterFields);\n      isSynchronous &&= input.isSynchronous;\n    }\n    for (const { when, then } of conditions) {\n      referencedFields.merge(when.referencedFields);\n      referencedOuterFields.merge(when.referencedOuterFields);\n      isSynchronous &&= when.isSynchronous;\n      referencedFields.merge(then.referencedFields);\n      referencedOuterFields.merge(then.referencedOuterFields);\n      isSynchronous &&= then.isSynchronous;\n    }\n    if (otherwise) {\n      referencedFields.merge(otherwise.referencedFields);\n      referencedOuterFields.merge(otherwise.referencedOuterFields);\n      isSynchronous &&= otherwise.isSynchronous;\n    }\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.input = input;\n    this.conditions = conditions;\n    this.otherwise = otherwise;\n    __publicField(this, \"definition\", {\n      type: \"unknown\",\n      isNullable: true\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarCase\", this.input, ...this.conditions, this.otherwise);\n  }\n  optimize(optimizer) {\n    var _a, _b;\n    (_a = this.input) == null ? void 0 : _a.optimize(optimizer);\n    for (const condition of this.conditions) {\n      condition.when.optimize(optimizer);\n      condition.then.optimize(optimizer);\n    }\n    (_b = this.otherwise) == null ? void 0 : _b.optimize(optimizer);\n    return new Cost(0);\n  }\n  getOptimized() {\n    var _a, _b;\n    const input = (_a = this.input) == null ? void 0 : _a.getOptimized();\n    const conditions = this.conditions.map((condition) => {\n      const when = condition.when.getOptimized();\n      const then = condition.then.getOptimized();\n      return new CaseCondition(when, then);\n    });\n    const otherwise = (_b = this.otherwise) == null ? void 0 : _b.getOptimized();\n    return new _ScalarCase(input, conditions, otherwise);\n  }\n  *evaluate(context, tuple) {\n    var _a, _b;\n    const { input, conditions, otherwise } = yield* evaluateObject({\n      input: ((_a = this.input) == null ? void 0 : _a.evaluate(context, tuple)) ?? null,\n      conditions: evaluateArray(\n        this.conditions.map(\n          (condition) => evaluateObject({\n            when: condition.when.evaluate(context, tuple),\n            // biome-ignore lint/suspicious/noThenProperty: Existing name.\n            then: condition.then.evaluate(context, tuple)\n          })\n        )\n      ),\n      otherwise: ((_b = this.otherwise) == null ? void 0 : _b.evaluate(context, tuple)) ?? null\n    });\n    if (this.input) {\n      for (const { when, then } of conditions) {\n        if (DatabaseValue.equal(input, when, collation2)) {\n          return then;\n        }\n      }\n    } else {\n      for (const { when, then } of conditions) {\n        if (valueToBoolean(when)) {\n          return then;\n        }\n      }\n    }\n    return otherwise;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Builder.ts\nvar Builder = class {\n  constructor(normalizer, query, locale) {\n    this.normalizer = normalizer;\n    this.query = query;\n    this.locale = locale;\n    __publicField(this, \"collectionId\", 0);\n    __publicField(this, \"indexId\", 0);\n    __publicField(this, \"fieldId\", 0);\n    /**\n     * A stack of the subqueries that are currently being built. We use this to\n     * calculate fields that come from the enclosing scope or from inside the\n     * subquery.\n     */\n    __publicField(this, \"subqueries\", []);\n  }\n  build() {\n    const inScope = new Scope();\n    return this.buildQuery(inScope, this.query);\n  }\n  buildQuery(inScope, query) {\n    const select = { type: \"Select\", ...query };\n    return this.buildSelect(inScope, select);\n  }\n  buildSelect(inScope, select) {\n    const fromScope = this.buildFrom(inScope, select.from);\n    const defaultOrdering = fromScope.getRequiredOrdering();\n    if (select.where) {\n      const input = fromScope.takeNode();\n      const predicate = this.buildExpression(fromScope, select.where);\n      const node = this.normalizer.newRelationalFilter(input, predicate);\n      fromScope.setNode(node);\n    }\n    const orderProjections = [];\n    const orderFields = new Fields();\n    let ordering;\n    if (select.orderBy) {\n      ordering = new Ordering();\n      for (const order of select.orderBy) {\n        if (order.type === \"Identifier\") {\n          const scopeField = fromScope.resolveField(order.name, order.collection);\n          if (isUndefined(scopeField)) continue;\n          orderFields.add(scopeField.field);\n          const orderingField = new OrderingField(scopeField.field, order.direction);\n          ordering.push(orderingField);\n        } else {\n          const expression = this.buildExpression(fromScope, order);\n          const fieldId = FieldId(this.fieldId++);\n          const field = new FieldMetadata(fieldId, void 0, expression.definition, void 0);\n          const projection = new ProjectionField(expression, field);\n          orderProjections.push(projection);\n          const orderingField = new OrderingField(field, order.direction);\n          ordering.push(orderingField);\n        }\n      }\n      ordering.merge(defaultOrdering);\n    } else {\n      ordering = defaultOrdering;\n    }\n    const projectionScope = this.buildSelectList(fromScope, select.select, orderFields, orderProjections);\n    projectionScope.setOrdering(ordering);\n    if (select.offset) {\n      const input = projectionScope.takeNode();\n      const offset = this.buildExpression(inScope, select.offset);\n      const node = this.normalizer.newRelationalOffset(input, offset, ordering);\n      projectionScope.setNode(node);\n    }\n    if (select.limit) {\n      const input = projectionScope.takeNode();\n      const limit = this.buildExpression(inScope, select.limit);\n      const node = this.normalizer.newRelationalLimit(input, limit, ordering);\n      projectionScope.setNode(node);\n    }\n    return projectionScope;\n  }\n  buildSelectList(inScope, selects, orderFields, orderProjections) {\n    const outScope = inScope.push();\n    const passthrough = new Fields(orderFields);\n    const projections = [...orderProjections];\n    for (const select of selects) {\n      if (select.type === \"Identifier\") {\n        const scopeField = inScope.resolveField(select.name, select.collection);\n        if (isUndefined(scopeField)) continue;\n        passthrough.add(scopeField.field);\n        outScope.addField({ ...scopeField, name: select.alias ?? scopeField.name });\n      } else {\n        const expression = this.buildExpression(inScope, select);\n        assert(select.alias, \"Subqueries should have an alias\");\n        const fieldId = FieldId(this.fieldId++);\n        const fieldName = select.alias;\n        const field = new FieldMetadata(fieldId, fieldName, expression.definition, void 0);\n        const projection = new ProjectionField(expression, field);\n        projections.push(projection);\n        outScope.addField({\n          field,\n          name: fieldName\n        });\n      }\n    }\n    const input = inScope.takeNode();\n    const node = this.normalizer.newRelationalProject(input, projections, passthrough);\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildFrom(inScope, from) {\n    switch (from.type) {\n      case \"Collection\":\n        return this.buildCollection(inScope, from);\n      case \"LeftJoin\":\n        return this.buildJoin(inScope, from);\n      default:\n        assertNever(from, \"Unsupported from type\");\n    }\n  }\n  buildCollection(inScope, from) {\n    const outScope = inScope.push();\n    const collectionData = getCollection(from.data, this.locale);\n    const collectionName = from.alias;\n    const collectionId = CollectionId(this.collectionId++);\n    const collection = new CollectionMetadata(collectionId, collectionName, collectionData);\n    for (const [fieldName, definition] of Object.entries(collectionData.schema)) {\n      const fieldId = FieldId(this.fieldId++);\n      const field = new FieldMetadata(fieldId, fieldName, definition, collection);\n      outScope.addField({\n        field,\n        name: fieldName,\n        collectionName\n      });\n      collection.fields.add(field);\n    }\n    {\n      const definition = { type: \"number\" /* Number */, isNullable: false };\n      const fieldId = FieldId(this.fieldId++);\n      const field = new FieldMetadata(fieldId, VIRTUAL_INDEX_FIELD, definition, collection);\n      outScope.addField({\n        field,\n        name: VIRTUAL_INDEX_FIELD,\n        collectionName\n      });\n      const ordering = new Ordering();\n      const orderingField = new OrderingField(field);\n      ordering.push(orderingField);\n      outScope.setOrdering(ordering);\n    }\n    for (const indexData of collectionData.indexes) {\n      const lookupNodes = [];\n      for (const expression of indexData.fields) {\n        const node2 = this.buildExpression(outScope, expression);\n        lookupNodes.push(node2);\n      }\n      let constraint;\n      if (indexData.where) {\n        constraint = this.buildExpression(outScope, indexData.where);\n      }\n      const ordering = new Ordering();\n      const indexId = IndexId(this.indexId++);\n      const index = new IndexMetadata(indexId, indexData, collection, lookupNodes, constraint, ordering);\n      collection.indexes.add(index);\n    }\n    const node = this.normalizer.newRelationalScan(collection);\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildJoin(inScope, from) {\n    const leftScope = this.buildFrom(inScope, from.left);\n    const rightScope = this.buildFrom(inScope, from.right);\n    const ordering = new Ordering();\n    const leftOrdering = leftScope.getRequiredOrdering();\n    ordering.merge(leftOrdering);\n    const rightOrdering = rightScope.getRequiredOrdering();\n    ordering.merge(rightOrdering);\n    const outScope = inScope.push();\n    outScope.addFieldsFromScope(leftScope);\n    outScope.addFieldsFromScope(rightScope);\n    outScope.setOrdering(ordering);\n    const constraint = this.buildExpression(outScope, from.constraint);\n    const left = leftScope.takeNode();\n    const right = rightScope.takeNode();\n    let node;\n    switch (from.type) {\n      case \"LeftJoin\":\n        node = this.normalizer.newRelationalLeftJoin(left, right, constraint);\n        break;\n      default:\n        assertNever(from.type, \"Unsupported join type\");\n    }\n    outScope.setNode(node);\n    return outScope;\n  }\n  buildExpression(inScope, expression) {\n    switch (expression.type) {\n      case \"Identifier\":\n        return this.buildIdentifier(inScope, expression);\n      case \"LiteralValue\":\n        return this.buildLiteralValue(expression);\n      case \"FunctionCall\":\n        return this.buildFunctionCall(inScope, expression);\n      case \"Case\":\n        return this.buildCase(inScope, expression);\n      case \"UnaryOperation\":\n        return this.buildUnaryOperation(inScope, expression);\n      case \"BinaryOperation\":\n        return this.buildBinaryOperation(inScope, expression);\n      case \"TypeCast\":\n        return this.buildTypeCast(inScope, expression);\n      case \"Select\":\n        throw new Error(\"Subqueries are only supported inside subquery function calls\");\n      default:\n        assertNever(expression, \"Unsupported expression\");\n    }\n  }\n  buildIdentifier(inScope, expression) {\n    const scopeField = inScope.resolveField(expression.name, expression.collection);\n    if (scopeField) {\n      let isOuterField = false;\n      for (const subquery of this.subqueries) {\n        if (isOuterField) {\n          subquery.referencedOuterFields.add(scopeField.field);\n        } else {\n          isOuterField = subquery.inScope.has(scopeField);\n          if (isOuterField) {\n            subquery.referencedFields.add(scopeField.field);\n          }\n        }\n      }\n      return this.normalizer.newScalarVariable(scopeField.field, isOuterField);\n    }\n    return this.normalizer.newScalarConstant(unknownDefinition, null);\n  }\n  buildLiteralValue(expression) {\n    const value = DatabaseValue.parse(expression.value);\n    return this.normalizer.newScalarConstant(unknownDefinition, value);\n  }\n  buildFunctionCall(inScope, expression) {\n    const getArgument = (index) => {\n      const argument = expression.arguments[index];\n      assert(argument, \"Missing argument\");\n      return this.buildExpression(inScope, argument);\n    };\n    switch (expression.functionName) {\n      case \"CONTAINS\" /* Contains */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarContains(source, target);\n      }\n      case \"STARTS_WITH\" /* StartsWith */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarStartsWith(source, target);\n      }\n      case \"ENDS_WITH\" /* EndsWith */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarEndsWith(source, target);\n      }\n      case \"LENGTH\" /* Length */: {\n        const array = getArgument(0);\n        return this.normalizer.newScalarLength(array);\n      }\n      case \"INDEX_OF\" /* IndexOf */: {\n        const source = getArgument(0);\n        const target = getArgument(1);\n        return this.normalizer.newScalarIndexOf(source, target);\n      }\n      case \"ARRAY\" /* Array */: {\n        const subquery = expression.arguments[0];\n        assert(subquery, \"Missing argument\");\n        assert(subquery.type === \"Select\", \"Subqueries require a select expression\");\n        return this.buildSubqueryArray(inScope, subquery);\n      }\n      case \"FLAT_ARRAY\" /* FlatArray */: {\n        const subquery = expression.arguments[0];\n        assert(subquery, \"Missing argument\");\n        assert(subquery.type === \"Select\", \"Subqueries require a select expression\");\n        return this.buildSubqueryFlatArray(inScope, subquery);\n      }\n      default:\n        throw new Error(\"Unsupported function name\");\n    }\n  }\n  buildSubqueryArray(inScope, expression) {\n    try {\n      const subquery = new Subquery(inScope);\n      this.subqueries.push(subquery);\n      const outScope = this.buildSelect(inScope, expression);\n      const input = outScope.takeNode();\n      const namedFields = outScope.getNamedFields();\n      const ordering = outScope.getRequiredOrdering();\n      const referencedFields = subquery.referencedFields;\n      const referencedOuterFields = subquery.referencedOuterFields;\n      return this.normalizer.newScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields);\n    } finally {\n      this.subqueries.pop();\n    }\n  }\n  buildSubqueryFlatArray(inScope, expression) {\n    try {\n      const subquery = new Subquery(inScope);\n      this.subqueries.push(subquery);\n      const outScope = this.buildSelect(inScope, expression);\n      const input = outScope.takeNode();\n      const field = outScope.getSingleField();\n      const ordering = outScope.getRequiredOrdering();\n      const referencedFields = subquery.referencedFields;\n      const referencedOuterFields = subquery.referencedOuterFields;\n      return this.normalizer.newScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields);\n    } finally {\n      this.subqueries.pop();\n    }\n  }\n  buildCase(inScope, expression) {\n    let input;\n    if (expression.value) {\n      input = this.buildExpression(inScope, expression.value);\n    }\n    const conditions = expression.conditions.map((condition) => {\n      const when = this.buildExpression(inScope, condition.when);\n      const then = this.buildExpression(inScope, condition.then);\n      return new CaseCondition(when, then);\n    });\n    let otherwise;\n    if (expression.else) {\n      otherwise = this.buildExpression(inScope, expression.else);\n    }\n    return this.normalizer.newScalarCase(input, conditions, otherwise);\n  }\n  buildUnaryOperation(inScope, expression) {\n    const input = this.buildExpression(inScope, expression.value);\n    switch (expression.operator) {\n      case \"not\" /* Not */:\n        return this.normalizer.newScalarNot(input);\n      default:\n        assertNever(expression.operator, \"Unsupported unary operator\");\n    }\n  }\n  buildBinaryOperation(inScope, expression) {\n    const left = this.buildExpression(inScope, expression.left);\n    const right = this.buildExpression(inScope, expression.right);\n    switch (expression.operator) {\n      case \"and\" /* And */:\n        return this.normalizer.newScalarAnd(left, right);\n      case \"or\" /* Or */:\n        return this.normalizer.newScalarOr(left, right);\n      case \"==\" /* Equals */:\n        return this.normalizer.newScalarEquals(left, right);\n      case \"!=\" /* NotEquals */:\n        return this.normalizer.newScalarNotEquals(left, right);\n      case \"<\" /* LessThan */:\n        return this.normalizer.newScalarLessThan(left, right);\n      case \"<=\" /* LessThanOrEqual */:\n        return this.normalizer.newScalarLessThanOrEqual(left, right);\n      case \">\" /* GreaterThan */:\n        return this.normalizer.newScalarGreaterThan(left, right);\n      case \">=\" /* GreaterThanOrEqual */:\n        return this.normalizer.newScalarGreaterThanOrEqual(left, right);\n      case \"in\" /* In */:\n        return this.normalizer.newScalarIn(left, right);\n      default:\n        assertNever(expression.operator, \"Unsupported binary operator\");\n    }\n  }\n  buildTypeCast(inScope, expression) {\n    const input = this.buildExpression(inScope, expression.value);\n    switch (expression.dataType) {\n      case \"BOOLEAN\" /* Boolean */: {\n        const definition = { type: \"boolean\" /* Boolean */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"DATE\" /* Date */: {\n        const definition = { type: \"date\" /* Date */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"NUMBER\" /* Number */: {\n        const definition = { type: \"number\" /* Number */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      case \"STRING\" /* String */: {\n        const definition = { type: \"string\" /* String */, isNullable: true };\n        return this.normalizer.newScalarCast(input, definition);\n      }\n      default:\n        throw new Error(\"Unsupported data type\");\n    }\n  }\n};\nfunction getCollection(data2, locale) {\n  if (isAnyLegacyCollection(data2)) {\n    return new CompatibilityDatabaseCollection(data2, locale);\n  }\n  if (isDatabaseCollection(data2)) {\n    return data2;\n  }\n  if (isLocalizedDatabaseCollection(data2)) {\n    while (locale) {\n      const collection = data2.collectionByLocaleId[locale.id];\n      if (collection) return collection;\n      locale = locale.fallback;\n    }\n    return data2.collectionByLocaleId.default;\n  }\n  assertNever(data2, \"Unsupported collection type\");\n}\nvar Subquery = class {\n  constructor(inScope) {\n    this.inScope = inScope;\n    /**\n     * A list of fields that are referenced from `inScope` of the subquery.\n     *\n     * To evaluate a subquery, we need to know which fields are coming from\n     * outside the subquery and which fields are coming from inside the\n     * subquery. For example, in the following query:\n     *\n     * ```\n     * SELECT title, (\n     *     SELECT name FROM articles\n     *     WHERE id = author_id\n     * ) AS author FROM articles\n     * ```\n     *\n     * The `name` and `id` fields are coming from the inside the subquery, but\n     * the `author_id` field is coming from the parent scope. We need to resolve\n     * `author_id` before we can evaluate the subquery.\n     */\n    __publicField(this, \"referencedFields\", new Fields());\n    /**\n     * A list of fields that are referenced from the `inScope` of the parent\n     * subquery.\n     */\n    __publicField(this, \"referencedOuterFields\", new Fields());\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalFilter.ts\nvar RelationalFilter = class _RelationalFilter extends RelationalNode {\n  constructor(input, predicate) {\n    super(input.isSynchronous && predicate.isSynchronous);\n    this.input = input;\n    this.predicate = predicate;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalFilter\", this.inputGroup.id, this.predicate);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering() {\n    return true;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.predicate.referencedFields);\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const predicateCost = this.predicate.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, predicateCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const predicate = this.predicate.getOptimized();\n    return new _RelationalFilter(input, predicate);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    const predicates = yield* evaluateArray(\n      input.tuples.map((tuple) => {\n        return this.predicate.evaluate(context, tuple);\n      })\n    );\n    return input.filter((_, index) => {\n      const predicate = predicates[index] ?? null;\n      return valueToBoolean(predicate);\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalIndexLookup.ts\nvar RelationalIndexLookup = class _RelationalIndexLookup extends RelationalNode {\n  constructor(index, query) {\n    super(false);\n    this.index = index;\n    this.query = query;\n  }\n  getHash() {\n    return calculateHash(\"RelationalIndexLookup\", this.index.id, ...this.query);\n  }\n  getOutputFields() {\n    return this.index.collection.fields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.index.ordering);\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.index.resolvedFields);\n  }\n  optimize() {\n    const isFullScan = this.query.every((lookup) => lookup.type === \"All\" /* All */);\n    return Cost.estimate(1, isFullScan ? 100 * KB : 50 * KB);\n  }\n  getOptimized() {\n    return new _RelationalIndexLookup(this.index, this.query);\n  }\n  *evaluate() {\n    const index = this.index;\n    const collection = index.collection;\n    const outputFields = this.getOutputFields();\n    const items = yield index.data.lookupItems(this.query);\n    const tuples = items.map((item) => {\n      const tuple = new Tuple();\n      for (const field of index.resolvedFields) {\n        const value = field.getValue(item);\n        tuple.addPointer(collection, item.pointer);\n        tuple.addValue(field, value);\n      }\n      return tuple;\n    });\n    return new Relation(outputFields, tuples);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalIntersection.ts\nvar RelationalIntersection = class _RelationalIntersection extends RelationalNode {\n  constructor(left, right) {\n    super(left.isSynchronous && right.isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalIntersection\", this.leftGroup.id, this.rightGroup.id);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    const leftOutputFields = this.leftGroup.relational.outputFields;\n    const rightOutputFields = this.rightGroup.relational.outputFields;\n    for (const field of leftOutputFields) {\n      if (rightOutputFields.has(field)) {\n        outputFields.add(field);\n      }\n    }\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(required) {\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, required.resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    return new _RelationalIntersection(left, right);\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    return left.intersection(right);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarEquals.ts\nvar ScalarEquals = class _ScalarEquals extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarEquals\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarEquals(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.equal(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalLeftJoin.ts\nvar RelationalLeftJoin = class _RelationalLeftJoin extends RelationalNode {\n  constructor(left, right, constraint) {\n    super(left.isSynchronous && right.isSynchronous && constraint.isSynchronous);\n    this.left = left;\n    this.right = right;\n    this.constraint = constraint;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalLeftJoin\", this.leftGroup.id, this.rightGroup.id, this.constraint);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    outputFields.merge(this.leftGroup.relational.outputFields);\n    outputFields.merge(this.rightGroup.relational.outputFields);\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(group, required) {\n    const resolvedFields = new Fields();\n    const outputFields = group.relational.outputFields;\n    for (const field of required.resolvedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    for (const field of this.constraint.referencedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    const constraintCost = this.constraint.optimize(optimizer);\n    return Cost.max(Cost.max(leftCost, rightCost), constraintCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    const constraint = this.constraint.getOptimized();\n    return new _RelationalLeftJoin(left, right, constraint);\n  }\n  /** Optimized path for equality constraints that runs in O(n + m) time. */\n  *evaluateScalarEquals(left, right, leftConstraint, rightConstraint, context) {\n    const joinKeyMap = /* @__PURE__ */ new Map();\n    for (const rightTuple of right.tuples) {\n      const rightValue = yield* rightConstraint.evaluate(context, rightTuple);\n      const key7 = JSON.stringify((rightValue == null ? void 0 : rightValue.value) ?? null);\n      const tuplesForKey = joinKeyMap.get(key7) ?? [];\n      tuplesForKey.push(rightTuple);\n      joinKeyMap.set(key7, tuplesForKey);\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const leftTuple of left.tuples) {\n      const leftValue = yield* leftConstraint.evaluate(context, leftTuple);\n      const key7 = JSON.stringify((leftValue == null ? void 0 : leftValue.value) ?? null);\n      const matches = joinKeyMap.get(key7) ?? [];\n      if (matches.length === 0) {\n        result.push(leftTuple);\n      } else {\n        for (const rightTuple of matches) {\n          const joinedTuple = new Tuple();\n          joinedTuple.merge(leftTuple);\n          joinedTuple.merge(rightTuple);\n          result.push(joinedTuple);\n        }\n      }\n    }\n    return result;\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    if (this.constraint instanceof ScalarEquals) {\n      if (this.constraint.left.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.right.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.left,\n          this.constraint.right,\n          context\n        );\n      }\n      if (this.constraint.right.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.left.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.right,\n          this.constraint.left,\n          context\n        );\n      }\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const leftTuple of left.tuples) {\n      let hasMatch = false;\n      for (const rightTuple of right.tuples) {\n        const tuple = new Tuple();\n        tuple.merge(leftTuple);\n        tuple.merge(rightTuple);\n        const value = yield* this.constraint.evaluate(context, tuple);\n        if (valueToBoolean(value)) {\n          result.push(tuple);\n          hasMatch = true;\n        }\n      }\n      if (!hasMatch) {\n        result.push(leftTuple);\n      }\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalRightJoin.ts\nvar RelationalRightJoin = class _RelationalRightJoin extends RelationalNode {\n  constructor(left, right, constraint) {\n    super(left.isSynchronous && right.isSynchronous && constraint.isSynchronous);\n    this.left = left;\n    this.right = right;\n    this.constraint = constraint;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalRightJoin\", this.leftGroup.id, this.rightGroup.id, this.constraint);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    outputFields.merge(this.leftGroup.relational.outputFields);\n    outputFields.merge(this.rightGroup.relational.outputFields);\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(group, required) {\n    const resolvedFields = new Fields();\n    const outputFields = group.relational.outputFields;\n    for (const field of required.resolvedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    for (const field of this.constraint.referencedFields) {\n      if (outputFields.has(field)) {\n        resolvedFields.add(field);\n      }\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    const constraintCost = this.constraint.optimize(optimizer);\n    return Cost.max(Cost.max(leftCost, rightCost), constraintCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(this.leftGroup, required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(this.rightGroup, required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    const constraint = this.constraint.getOptimized();\n    return new _RelationalRightJoin(left, right, constraint);\n  }\n  /** Optimized path for equality constraints that runs in O(n + m) time. */\n  *evaluateScalarEquals(left, right, leftConstraint, rightConstraint, context) {\n    const joinKeyMap = /* @__PURE__ */ new Map();\n    for (const leftTuple of left.tuples) {\n      const leftValue = yield* leftConstraint.evaluate(context, leftTuple);\n      const key7 = JSON.stringify((leftValue == null ? void 0 : leftValue.value) ?? null);\n      const tuplesForKey = joinKeyMap.get(key7) ?? [];\n      tuplesForKey.push(leftTuple);\n      joinKeyMap.set(key7, tuplesForKey);\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const rightTuple of right.tuples) {\n      const rightValue = yield* rightConstraint.evaluate(context, rightTuple);\n      const key7 = JSON.stringify((rightValue == null ? void 0 : rightValue.value) ?? null);\n      const matches = joinKeyMap.get(key7) ?? [];\n      if (matches.length === 0) {\n        result.push(rightTuple);\n      } else {\n        for (const leftTuple of matches) {\n          const joinedTuple = new Tuple();\n          joinedTuple.merge(rightTuple);\n          joinedTuple.merge(leftTuple);\n          result.push(joinedTuple);\n        }\n      }\n    }\n    return result;\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    if (this.constraint instanceof ScalarEquals) {\n      if (this.constraint.left.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.right.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.left,\n          this.constraint.right,\n          context\n        );\n      }\n      if (this.constraint.right.referencedFields.subsetOf(this.leftGroup.relational.outputFields) && this.constraint.left.referencedFields.subsetOf(this.rightGroup.relational.outputFields)) {\n        return yield* this.evaluateScalarEquals(\n          left,\n          right,\n          this.constraint.right,\n          this.constraint.left,\n          context\n        );\n      }\n    }\n    const outputFields = this.getOutputFields();\n    const result = new Relation(outputFields);\n    for (const rightTuple of right.tuples) {\n      let hasMatch = false;\n      for (const leftTuple of left.tuples) {\n        const tuple = new Tuple();\n        tuple.merge(rightTuple);\n        tuple.merge(leftTuple);\n        const value = yield* this.constraint.evaluate(context, tuple);\n        if (valueToBoolean(value)) {\n          result.push(tuple);\n          hasMatch = true;\n        }\n      }\n      if (!hasMatch) {\n        result.push(rightTuple);\n      }\n    }\n    return result;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalScan.ts\nvar RelationalScan = class _RelationalScan extends RelationalNode {\n  constructor(collection) {\n    super(false);\n    this.collection = collection;\n  }\n  getHash() {\n    return calculateHash(\"RelationalScan\", this.collection.id);\n  }\n  getOutputFields() {\n    return this.collection.fields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.collection.fields);\n  }\n  optimize() {\n    return Cost.estimate(1, 200 * KB);\n  }\n  getOptimized() {\n    return new _RelationalScan(this.collection);\n  }\n  *evaluate() {\n    const collection = this.collection;\n    const outputFields = this.getOutputFields();\n    const items = yield collection.data.scanItems();\n    const tuples = items.map((item) => {\n      const tuple = new Tuple();\n      for (const field of outputFields) {\n        const value = field.getValue(item);\n        tuple.addPointer(collection, item.pointer);\n        tuple.addValue(field, value);\n      }\n      return tuple;\n    });\n    return new Relation(outputFields, tuples);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalUnion.ts\nvar RelationalUnion = class _RelationalUnion extends RelationalNode {\n  constructor(left, right) {\n    super(left.isSynchronous && right.isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"leftGroup\");\n    __publicField(this, \"rightGroup\");\n    this.leftGroup = left.getGroup();\n    this.rightGroup = right.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalUnion\", this.leftGroup.id, this.rightGroup.id);\n  }\n  getOutputFields() {\n    const outputFields = new Fields();\n    const leftOutputFields = this.leftGroup.relational.outputFields;\n    const rightOutputFields = this.rightGroup.relational.outputFields;\n    for (const field of leftOutputFields) {\n      if (rightOutputFields.has(field)) {\n        outputFields.add(field);\n      }\n    }\n    return outputFields;\n  }\n  canProvideOrdering() {\n    return false;\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getChildRequiredProps(required) {\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, required.resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const leftCost = optimizer.optimizeGroup(this.leftGroup, leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const rightCost = optimizer.optimizeGroup(this.rightGroup, rightRequired);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized(required) {\n    const leftRequired = this.getChildRequiredProps(required);\n    const left = this.leftGroup.getOptimized(leftRequired);\n    const rightRequired = this.getChildRequiredProps(required);\n    const right = this.rightGroup.getOptimized(rightRequired);\n    return new _RelationalUnion(left, right);\n  }\n  *evaluate(context) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context),\n      right: this.right.evaluate(context)\n    });\n    return left.union(right);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarAnd.ts\nvar ScalarAnd = class _ScalarAnd extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarAnd\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarAnd(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: valueToBoolean(left) && valueToBoolean(right)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarConstant.ts\nvar ScalarConstant = class extends ScalarNode {\n  constructor(definition, value) {\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    super(referencedFields, referencedOuterFields, true);\n    this.definition = definition;\n    this.value = value;\n  }\n  getHash() {\n    return calculateHash(\"ScalarConstant\", this.definition, this.value);\n  }\n  optimize() {\n    return new Cost(0);\n  }\n  getOptimized() {\n    return this;\n  }\n  // biome-ignore lint/correctness/useYield: Required by the super class.\n  *evaluate() {\n    return this.value;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarContains.ts\nvar collation3 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarContains = class _ScalarContains extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarContains\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new _ScalarContains(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.contains(source, target, collation3)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarEndsWith.ts\nvar collation4 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarEndsWith = class _ScalarEndsWith extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarEndsWith\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new _ScalarEndsWith(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.endsWith(source, target, collation4)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarGreaterThan.ts\nvar ScalarGreaterThan = class _ScalarGreaterThan extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarGreaterThan\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarGreaterThan(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.greaterThan(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarGreaterThanOrEqual.ts\nvar ScalarGreaterThanOrEqual = class _ScalarGreaterThanOrEqual extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarGreaterThanOrEqual\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarGreaterThanOrEqual(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.greaterThanOrEqual(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLessThan.ts\nvar ScalarLessThan = class _ScalarLessThan extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLessThan\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarLessThan(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.lessThan(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLessThanOrEqual.ts\nvar ScalarLessThanOrEqual = class _ScalarLessThanOrEqual extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLessThanOrEqual\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarLessThanOrEqual(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.lessThanOrEqual(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNotEquals.ts\nvar ScalarNotEquals = class _ScalarNotEquals extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNotEquals\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarNotEquals(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !DatabaseValue.equal(left, right, collation)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarOr.ts\nvar ScalarOr = class _ScalarOr extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarOr\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarOr(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: valueToBoolean(left) || valueToBoolean(right)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarStartsWith.ts\nvar collation5 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarStartsWith = class _ScalarStartsWith extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarStartsWith\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new _ScalarStartsWith(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.startsWith(source, target, collation5)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Explorer.ts\nvar Explorer = class {\n  constructor(normalizer) {\n    this.normalizer = normalizer;\n    __publicField(this, \"memo\");\n    this.memo = normalizer.memo;\n  }\n  explore(before) {\n    const group = before.getGroup();\n    if (before instanceof RelationalLeftJoin) {\n      const after = new RelationalRightJoin(before.right, before.left, before.constraint);\n      this.memo.addRelational(after, group);\n    }\n    if (before instanceof RelationalFilter) {\n      if (before.predicate instanceof ScalarAnd) {\n        const left = this.normalizer.newRelationalFilter(before.input, before.predicate.left);\n        const right = this.normalizer.newRelationalFilter(before.input, before.predicate.right);\n        const after = new RelationalIntersection(left, right);\n        this.memo.addRelational(after, group);\n      }\n      if (before.predicate instanceof ScalarOr) {\n        const left = this.normalizer.newRelationalFilter(before.input, before.predicate.left);\n        const right = this.normalizer.newRelationalFilter(before.input, before.predicate.right);\n        const after = new RelationalUnion(left, right);\n        this.memo.addRelational(after, group);\n      }\n    }\n    if (before instanceof RelationalScan) {\n      for (const index of before.collection.indexes) {\n        if (index.constraint) continue;\n        const query = createIndexQueryAll(index.lookupNodes.length);\n        const after = new RelationalIndexLookup(index, query);\n        this.memo.addRelational(after, group);\n      }\n    }\n    if (before instanceof RelationalFilter) {\n      for (const input of before.inputGroup.nodes) {\n        if (input instanceof RelationalScan) {\n          for (const index of input.collection.indexes) {\n            if (before.predicate instanceof ScalarEquals && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"Equals\" /* Equals */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"Equals\" /* Equals */,\n                value: before.predicate.right.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarNotEquals && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"NotEquals\" /* NotEquals */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"NotEquals\" /* NotEquals */,\n                value: before.predicate.right.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarLessThan && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"LessThan\" /* LessThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"LessThan\" /* LessThan */,\n                value: before.predicate.right.value,\n                inclusive: false\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarLessThanOrEqual && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"LessThan\" /* LessThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"LessThan\" /* LessThan */,\n                value: before.predicate.right.value,\n                inclusive: true\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarGreaterThan && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"GreaterThan\" /* GreaterThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"GreaterThan\" /* GreaterThan */,\n                value: before.predicate.right.value,\n                inclusive: false\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarGreaterThanOrEqual && before.predicate.left === index.lookupNodes[0] && before.predicate.right instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"GreaterThan\" /* GreaterThan */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"GreaterThan\" /* GreaterThan */,\n                value: before.predicate.right.value,\n                inclusive: true\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarContains && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"Contains\" /* Contains */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"Contains\" /* Contains */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarStartsWith && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"StartsWith\" /* StartsWith */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"StartsWith\" /* StartsWith */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n            if (before.predicate instanceof ScalarEndsWith && before.predicate.source === index.lookupNodes[0] && before.predicate.target instanceof ScalarConstant && index.data.supportedLookupTypes.includes(\"EndsWith\" /* EndsWith */)) {\n              const query = createIndexQueryAll(index.lookupNodes.length);\n              query[0] = {\n                type: \"EndsWith\" /* EndsWith */,\n                value: before.predicate.target.value\n              };\n              const after = new RelationalIndexLookup(index, query);\n              this.memo.addRelational(after, group);\n            }\n          }\n        }\n      }\n    }\n  }\n};\nfunction createIndexQueryAll(length) {\n  const lookup = { type: \"All\" /* All */ };\n  return new Array(length).fill(lookup);\n}\n\n// ../../library/src/modules/cms/optimizer/LogicalProps.ts\nvar RelationalProps = class {\n  constructor(outputFields) {\n    this.outputFields = outputFields;\n  }\n  /**\n   * Checks if the given relational properties are compatible with this.\n   */\n  isCompatible(other) {\n    return this.outputFields.equals(other.outputFields);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Memo.ts\nvar Memo = class {\n  constructor() {\n    /**\n     * A map of all nodes in the memo by their hash. This allows to easily find\n     * duplicated nodes and their groups.\n     */\n    __publicField(this, \"nodes\", /* @__PURE__ */ new Map());\n    /**\n     * A list of all groups in the memo. The id of a group is the index of the\n     * group in this list.\n     */\n    __publicField(this, \"groups\", []);\n  }\n  /**\n   * Adds a new group with the given relational props to the memo. All nodes\n   * in the group must have the same props. It's expected that the normalized\n   * node is immediately added to the group after creating it.\n   */\n  addGroup(relationalProps) {\n    const id = GroupId(this.groups.length);\n    const group = new Group(id, relationalProps);\n    this.groups.push(group);\n    return group;\n  }\n  /**\n   * Adds a relational node to the memo and the group. If the node is already\n   * in the memo, it returns the existing node. If no group is given, it\n   * creates a new group with the given relational props of the node.\n   */\n  addRelational(node, group) {\n    const hash2 = node.getHash();\n    const existing = this.nodes.get(hash2);\n    if (existing) return existing;\n    this.nodes.set(hash2, node);\n    const outputFields = node.getOutputFields();\n    const relational = new RelationalProps(outputFields);\n    group ??= this.addGroup(relational);\n    group.addNode(node);\n    assert(relational.isCompatible(group.relational), \"Group has inconsistent relational props\");\n    return node;\n  }\n  /**\n   * Adds a scalar node to the memo. If the node is already in the memo, it\n   * returns the existing node.\n   */\n  addScalar(node) {\n    const hash2 = node.getHash();\n    const existing = this.nodes.get(hash2);\n    if (existing) return existing;\n    this.nodes.set(hash2, node);\n    return node;\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalLimit.ts\nvar RelationalLimit = class _RelationalLimit extends RelationalNode {\n  constructor(input, limit, ordering) {\n    super(input.isSynchronous && limit.isSynchronous);\n    this.input = input;\n    this.limit = limit;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalLimit\", this.inputGroup.id, this.limit);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.limit.referencedFields);\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const limitCost = this.limit.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, limitCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const limit = this.limit.getOptimized();\n    return new _RelationalLimit(input, limit, this.ordering);\n  }\n  *evaluate(context) {\n    const { input, limit } = yield* evaluateObject({\n      input: this.input.evaluate(context),\n      limit: this.limit.evaluate(context, void 0)\n    });\n    const value = valueToNumber(limit) ?? Infinity;\n    if (value === Infinity) return input;\n    return input.slice(0, value);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalOffset.ts\nvar RelationalOffset = class _RelationalOffset extends RelationalNode {\n  constructor(input, offset, ordering) {\n    super(input.isSynchronous && offset.isSynchronous);\n    this.input = input;\n    this.offset = offset;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"RelationalOffset\", this.inputGroup.id, this.offset);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    resolvedFields.merge(this.offset.referencedFields);\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    const offsetCost = this.offset.optimize(optimizer);\n    return new Cost(0).add(Cost.max(inputCost, offsetCost));\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    const offset = this.offset.getOptimized();\n    return new _RelationalOffset(input, offset, this.ordering);\n  }\n  *evaluate(context) {\n    const { input, offset } = yield* evaluateObject({\n      input: this.input.evaluate(context),\n      offset: this.offset.evaluate(context, void 0)\n    });\n    const value = valueToNumber(offset) ?? 0;\n    if (value === 0) return input;\n    return input.slice(value);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarArray.ts\nvar ScalarArray = class _ScalarArray extends ScalarNode {\n  constructor(input, namedFields, ordering, referencedFields, referencedOuterFields) {\n    super(referencedFields, referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.namedFields = namedFields;\n    this.ordering = ordering;\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    __publicField(this, \"inputGroup\");\n    __publicField(this, \"definition\");\n    this.inputGroup = input.getGroup();\n    const itemDefinitions = {};\n    const namedFieldEntries = Object.entries(namedFields);\n    for (const [name, field] of namedFieldEntries) {\n      itemDefinitions[name] = field.definition;\n    }\n    this.definition = {\n      type: \"array\" /* Array */,\n      isNullable: false,\n      definition: {\n        type: \"object\" /* Object */,\n        isNullable: false,\n        definitions: itemDefinitions\n      }\n    };\n  }\n  getHash() {\n    const namedFieldIds = {};\n    const namedFieldEntries = Object.entries(this.namedFields);\n    for (const [name, field] of namedFieldEntries) {\n      namedFieldIds[name] = field.id;\n    }\n    return calculateHash(\n      \"ScalarArray\",\n      this.inputGroup.id,\n      namedFieldIds,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  getInputRequiredProps() {\n    const resolvedFields = new Fields();\n    const fields = Object.values(this.namedFields);\n    for (const field of fields) {\n      if (isUndefined(field.collection)) continue;\n      resolvedFields.add(field);\n    }\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer) {\n    const inputRequired = this.getInputRequiredProps();\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized() {\n    const inputRequired = this.getInputRequiredProps();\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new _ScalarArray(\n      input,\n      this.namedFields,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  *evaluate(context, tuple) {\n    const inputContext = new Tuple();\n    if (context) inputContext.merge(context);\n    if (tuple) inputContext.merge(tuple);\n    const relation = yield* this.input.evaluate(inputContext);\n    const namedFieldEntries = Object.entries(this.namedFields);\n    return {\n      type: \"array\" /* Array */,\n      value: relation.tuples.map((relationTuple) => {\n        const value = {};\n        for (const [name, field] of namedFieldEntries) {\n          value[name] = relationTuple.getValue(field);\n        }\n        return {\n          type: \"object\" /* Object */,\n          value\n        };\n      })\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarCast.ts\nvar ScalarCast = class _ScalarCast extends ScalarNode {\n  constructor(input, definition) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.definition = definition;\n    assert(definition.isNullable, \"Unsupported non-nullable cast\");\n  }\n  getHash() {\n    return calculateHash(\"ScalarCast\", this.input, this.definition);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new _ScalarCast(input, this.definition);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return DatabaseValue.cast(input, this.definition);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarFlatArray.ts\nvar ScalarFlatArray = class _ScalarFlatArray extends ScalarNode {\n  constructor(input, field, ordering, referencedFields, referencedOuterFields) {\n    super(referencedFields, referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    this.field = field;\n    this.ordering = ordering;\n    this.referencedFields = referencedFields;\n    this.referencedOuterFields = referencedOuterFields;\n    __publicField(this, \"inputGroup\");\n    __publicField(this, \"definition\");\n    this.inputGroup = input.getGroup();\n    this.definition = {\n      type: \"array\" /* Array */,\n      isNullable: false,\n      definition: field.definition\n    };\n  }\n  getHash() {\n    return calculateHash(\n      \"ScalarFlatArray\",\n      this.inputGroup.id,\n      this.field.id,\n      this.ordering,\n      this.referencedFields,\n      this.referencedOuterFields\n    );\n  }\n  getInputRequiredProps() {\n    const resolvedFields = new Fields();\n    if (!isUndefined(this.field.collection)) {\n      resolvedFields.add(this.field);\n    }\n    return new RequiredProps(this.ordering, resolvedFields);\n  }\n  optimize(optimizer) {\n    const inputRequired = this.getInputRequiredProps();\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized() {\n    const inputRequired = this.getInputRequiredProps();\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new _ScalarFlatArray(input, this.field, this.ordering, this.referencedFields, this.referencedOuterFields);\n  }\n  *evaluate(context, tuple) {\n    const inputContext = new Tuple();\n    if (context) inputContext.merge(context);\n    if (tuple) inputContext.merge(tuple);\n    const relation = yield* this.input.evaluate(inputContext);\n    return {\n      type: \"array\" /* Array */,\n      value: relation.tuples.map((relationTuple) => {\n        return relationTuple.getValue(this.field);\n      })\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarIn.ts\nvar collation6 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarIn = class _ScalarIn extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarIn\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarIn(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: DatabaseValue.in(left, right, collation6)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarIndexOf.ts\nvar collation7 = {\n  type: 1 /* CaseSensitive */\n};\nvar ScalarIndexOf = class _ScalarIndexOf extends ScalarNode {\n  constructor(source, target) {\n    const referencedFields = new Fields();\n    referencedFields.merge(source.referencedFields);\n    referencedFields.merge(target.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(source.referencedOuterFields);\n    referencedOuterFields.merge(target.referencedOuterFields);\n    const isSynchronous = source.isSynchronous && target.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.source = source;\n    this.target = target;\n    __publicField(this, \"definition\", {\n      type: \"number\" /* Number */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarIndexOf\", this.source, this.target);\n  }\n  optimize(optimizer) {\n    const sourceCost = this.source.optimize(optimizer);\n    const targetCost = this.target.optimize(optimizer);\n    return Cost.max(sourceCost, targetCost);\n  }\n  getOptimized() {\n    const source = this.source.getOptimized();\n    const target = this.target.getOptimized();\n    return new _ScalarIndexOf(source, target);\n  }\n  *evaluate(context, tuple) {\n    const { source, target } = yield* evaluateObject({\n      source: this.source.evaluate(context, tuple),\n      target: this.target.evaluate(context, tuple)\n    });\n    return {\n      type: \"number\" /* Number */,\n      value: DatabaseValue.indexOf(source, target, collation7)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarLength.ts\nvar ScalarLength = class _ScalarLength extends ScalarNode {\n  constructor(input) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    __publicField(this, \"definition\", {\n      type: \"number\" /* Number */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarLength\", this.input);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new _ScalarLength(input);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return {\n      type: \"number\" /* Number */,\n      value: DatabaseValue.length(input)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNot.ts\nvar ScalarNot = class _ScalarNot extends ScalarNode {\n  constructor(input) {\n    super(input.referencedFields, input.referencedOuterFields, input.isSynchronous);\n    this.input = input;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNot\", this.input);\n  }\n  optimize(optimizer) {\n    return this.input.optimize(optimizer);\n  }\n  getOptimized() {\n    const input = this.input.getOptimized();\n    return new _ScalarNot(input);\n  }\n  *evaluate(context, tuple) {\n    const input = yield* this.input.evaluate(context, tuple);\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !valueToBoolean(input)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarNotIn.ts\nvar collation8 = {\n  type: 0 /* CaseInsensitive */\n};\nvar ScalarNotIn = class _ScalarNotIn extends ScalarNode {\n  constructor(left, right) {\n    const referencedFields = new Fields();\n    referencedFields.merge(left.referencedFields);\n    referencedFields.merge(right.referencedFields);\n    const referencedOuterFields = new Fields();\n    referencedOuterFields.merge(left.referencedOuterFields);\n    referencedOuterFields.merge(right.referencedOuterFields);\n    const isSynchronous = left.isSynchronous && right.isSynchronous;\n    super(referencedFields, referencedOuterFields, isSynchronous);\n    this.left = left;\n    this.right = right;\n    __publicField(this, \"definition\", {\n      type: \"boolean\" /* Boolean */,\n      isNullable: false\n    });\n  }\n  getHash() {\n    return calculateHash(\"ScalarNotIn\", this.left, this.right);\n  }\n  optimize(optimizer) {\n    const leftCost = this.left.optimize(optimizer);\n    const rightCost = this.right.optimize(optimizer);\n    return Cost.max(leftCost, rightCost);\n  }\n  getOptimized() {\n    const left = this.left.getOptimized();\n    const right = this.right.getOptimized();\n    return new _ScalarNotIn(left, right);\n  }\n  *evaluate(context, tuple) {\n    const { left, right } = yield* evaluateObject({\n      left: this.left.evaluate(context, tuple),\n      right: this.right.evaluate(context, tuple)\n    });\n    return {\n      type: \"boolean\" /* Boolean */,\n      value: !DatabaseValue.in(left, right, collation8)\n    };\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/scalar/ScalarVariable.ts\nvar ScalarVariable = class extends ScalarNode {\n  constructor(field, isOuterField) {\n    assert(field.name !== VIRTUAL_INDEX_FIELD, \"Invalid field name\");\n    const referencedFields = new Fields();\n    const referencedOuterFields = new Fields();\n    if (isOuterField) {\n      referencedOuterFields.add(field);\n    } else {\n      referencedFields.add(field);\n    }\n    super(referencedFields, referencedOuterFields, true);\n    this.field = field;\n    this.isOuterField = isOuterField;\n    __publicField(this, \"definition\");\n    this.definition = field.definition;\n  }\n  getHash() {\n    return calculateHash(\"ScalarVariable\", this.field.id, this.isOuterField);\n  }\n  optimize() {\n    return new Cost(0);\n  }\n  getOptimized() {\n    return this;\n  }\n  // biome-ignore lint/correctness/useYield: Required by the super class.\n  *evaluate(context, tuple) {\n    if (this.isOuterField) {\n      assert(context, \"Context must exist\");\n      return context.getValue(this.field);\n    }\n    assert(tuple, \"Tuple must exist\");\n    return tuple.getValue(this.field);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/Normalizer.ts\nvar Normalizer = class {\n  constructor(memo3) {\n    this.memo = memo3;\n  }\n  finishRelational(node) {\n    return this.memo.addRelational(node);\n  }\n  newRelationalScan(collection) {\n    const node = new RelationalScan(collection);\n    return this.finishRelational(node);\n  }\n  newRelationalIndexLookup(index, query) {\n    const node = new RelationalIndexLookup(index, query);\n    return this.finishRelational(node);\n  }\n  newRelationalLeftJoin(left, right, constraint) {\n    const node = new RelationalLeftJoin(left, right, constraint);\n    return this.finishRelational(node);\n  }\n  newRelationalRightJoin(left, right, constraint) {\n    return this.newRelationalLeftJoin(right, left, constraint);\n  }\n  newRelationalFilter(input, predicate) {\n    if (input instanceof RelationalLeftJoin && // Check that the predicate doesn't depend on any joined field.\n    predicate.referencedFields.subsetOf(input.leftGroup.relational.outputFields)) {\n      const pushedFilter = this.newRelationalFilter(input.left, predicate);\n      return this.newRelationalLeftJoin(pushedFilter, input.right, input.constraint);\n    }\n    if (input instanceof RelationalRightJoin && // Check that the predicate doesn't depend on any joined field.\n    predicate.referencedFields.subsetOf(input.rightGroup.relational.outputFields)) {\n      const pushedFilter = this.newRelationalFilter(input.right, predicate);\n      return this.newRelationalLeftJoin(input.left, pushedFilter, input.constraint);\n    }\n    const node = new RelationalFilter(input, predicate);\n    return this.finishRelational(node);\n  }\n  newRelationalProject(input, projections, passthrough) {\n    const node = new RelationalProject(input, projections, passthrough);\n    return this.finishRelational(node);\n  }\n  newRelationalLimit(input, limit, ordering) {\n    if (input instanceof RelationalProject && // Check that the limit doesn't depend on any projected field.\n    limit.referencedFields.subsetOf(input.inputGroup.relational.outputFields) && // Check that the ordering doesn't depend on any projected field.\n    ordering.providedByFields(input.inputGroup.relational.outputFields)) {\n      const pushedLimit = this.newRelationalLimit(input.input, limit, ordering);\n      return this.newRelationalProject(pushedLimit, input.projections, input.passthrough);\n    }\n    const node = new RelationalLimit(input, limit, ordering);\n    return this.finishRelational(node);\n  }\n  newRelationalOffset(input, offset, ordering) {\n    const node = new RelationalOffset(input, offset, ordering);\n    return this.finishRelational(node);\n  }\n  finishScalar(node) {\n    const isConstant = node instanceof ScalarConstant;\n    if (!isConstant && node.isSynchronous && node.referencedFields.size === 0 && node.referencedOuterFields.size === 0) {\n      const value = node.evaluateSync();\n      return this.newScalarConstant(node.definition, value);\n    }\n    return this.memo.addScalar(node);\n  }\n  /**\n   * When we create `ScalarConstant` nodes, we always give them an unknown\n   * type definition. Before we compare them to other nodes, we need to cast\n   * them to a specific type.\n   *\n   * For example, in the following query:\n   * ```\n   * SELECT id FROM cars WHERE type = \"coupe\"\n   * ```\n   *\n   * If the `type` field is an enum, and we parse the `\"coupe\"` constant as a\n   * string, the where clause will always be false because an enum can't be\n   * equal to a string. But if we cast the string to an enum type first, the\n   * where clause will work as expected.\n   */\n  removeUnknown(node, definition) {\n    if (node.definition.type !== \"unknown\") return node;\n    if (definition.type === \"unknown\") return node;\n    const nullableDefinition = { ...definition, isNullable: true };\n    return this.newScalarCast(node, nullableDefinition);\n  }\n  newScalarVariable(field, isOuterField) {\n    const node = new ScalarVariable(field, isOuterField);\n    return this.finishScalar(node);\n  }\n  newScalarConstant(definition, value) {\n    const node = new ScalarConstant(definition, value);\n    return this.finishScalar(node);\n  }\n  newScalarNot(input) {\n    if (input instanceof ScalarNot) {\n      if (input.input.definition.type === \"boolean\" /* Boolean */) {\n        return input.input;\n      }\n      const definition = { type: \"boolean\" /* Boolean */, isNullable: true };\n      return this.newScalarCast(input.input, definition);\n    }\n    if (input instanceof ScalarEquals) {\n      return this.newScalarNotEquals(input.left, input.right);\n    }\n    if (input instanceof ScalarNotEquals) {\n      return this.newScalarEquals(input.left, input.right);\n    }\n    if (input instanceof ScalarLessThan) {\n      return this.newScalarGreaterThanOrEqual(input.left, input.right);\n    }\n    if (input instanceof ScalarLessThanOrEqual) {\n      return this.newScalarGreaterThan(input.left, input.right);\n    }\n    if (input instanceof ScalarGreaterThan) {\n      return this.newScalarLessThanOrEqual(input.left, input.right);\n    }\n    if (input instanceof ScalarGreaterThanOrEqual) {\n      return this.newScalarLessThan(input.left, input.right);\n    }\n    if (input instanceof ScalarAnd) {\n      const left = this.newScalarNot(input.left);\n      const right = this.newScalarNot(input.right);\n      return this.newScalarOr(left, right);\n    }\n    if (input instanceof ScalarOr) {\n      const left = this.newScalarNot(input.left);\n      const right = this.newScalarNot(input.right);\n      return this.newScalarAnd(left, right);\n    }\n    const node = new ScalarNot(input);\n    return this.finishScalar(node);\n  }\n  // TODO: Normalize `$1 AND true` to `$1`\n  // TODO: Normalize `true AND $1` to `$1`\n  // TODO: Normalize `$1 AND false` to `false`\n  // TODO: Normalize `false AND $1` to `false`\n  // TODO: Normalize `$1 AND ($2 AND $c)` to `($1 AND $2) AND $c`\n  newScalarAnd(left, right) {\n    const node = new ScalarAnd(left, right);\n    return this.finishScalar(node);\n  }\n  // TODO: Normalize `$1 OR true` to `$1`\n  // TODO: Normalize `true OR $1` to `$1`\n  // TODO: Normalize `$1 OR false` to `$1`\n  // TODO: Normalize `false OR $1` to `false`\n  // TODO: Normalize `$1 OR ($2 OR $c)` to `($1 OR $2) OR $c`\n  newScalarOr(left, right) {\n    const node = new ScalarOr(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarEquals(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarEquals(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarEquals(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarNotEquals(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarNotEquals(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarNotEquals(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarLessThan(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarGreaterThan(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarLessThan(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarLessThanOrEqual(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarGreaterThanOrEqual(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarLessThanOrEqual(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarGreaterThan(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarLessThan(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarGreaterThan(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarGreaterThanOrEqual(left, right) {\n    const isLeftVariable = left instanceof ScalarVariable;\n    const isRightVariable = right instanceof ScalarVariable;\n    if (isRightVariable && !isLeftVariable) {\n      return this.newScalarLessThanOrEqual(right, left);\n    }\n    left = this.removeUnknown(left, right.definition);\n    right = this.removeUnknown(right, left.definition);\n    const node = new ScalarGreaterThanOrEqual(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarIn(left, right) {\n    if (right.definition.type === \"array\" /* Array */) {\n      left = this.removeUnknown(left, right.definition.definition);\n    }\n    const arrayDefinition = {\n      type: \"array\" /* Array */,\n      isNullable: true,\n      definition: left.definition\n    };\n    right = this.removeUnknown(right, arrayDefinition);\n    const node = new ScalarIn(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarNotIn(left, right) {\n    if (right.definition.type === \"array\" /* Array */) {\n      left = this.removeUnknown(left, right.definition.definition);\n    }\n    const arrayDefinition = {\n      type: \"array\" /* Array */,\n      isNullable: true,\n      definition: left.definition\n    };\n    right = this.removeUnknown(right, arrayDefinition);\n    const node = new ScalarNotIn(left, right);\n    return this.finishScalar(node);\n  }\n  newScalarCase(input, conditions, otherwise) {\n    if (input) {\n      const castConditions = [];\n      for (const { when, then } of conditions) {\n        const castWhen = this.removeUnknown(when, input.definition);\n        const castCondition = new CaseCondition(castWhen, then);\n        castConditions.push(castCondition);\n      }\n      conditions = castConditions;\n    }\n    const node = new ScalarCase(input, conditions, otherwise);\n    return this.finishScalar(node);\n  }\n  newScalarContains(source, target) {\n    const node = new ScalarContains(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarStartsWith(source, target) {\n    const node = new ScalarStartsWith(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarEndsWith(source, target) {\n    const node = new ScalarEndsWith(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarLength(array) {\n    const node = new ScalarLength(array);\n    return this.finishScalar(node);\n  }\n  newScalarIndexOf(source, target) {\n    const node = new ScalarIndexOf(source, target);\n    return this.finishScalar(node);\n  }\n  newScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields) {\n    const node = new ScalarArray(input, namedFields, ordering, referencedFields, referencedOuterFields);\n    return this.finishScalar(node);\n  }\n  newScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields) {\n    const node = new ScalarFlatArray(input, field, ordering, referencedFields, referencedOuterFields);\n    return this.finishScalar(node);\n  }\n  newScalarCast(input, definition) {\n    if (input.definition.type === definition.type) {\n      return input;\n    }\n    const node = new ScalarCast(input, definition);\n    return this.finishScalar(node);\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerNode.ts\nvar EnforcerNode = class extends RelationalNode {\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerResolve.ts\nvar EnforcerResolve = class _EnforcerResolve extends EnforcerNode {\n  constructor(input, fields) {\n    super(false);\n    this.input = input;\n    this.fields = fields;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"EnforcerResolve\", this.inputGroup.id, this.fields);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering() {\n    return true;\n  }\n  canProvideResolvedFields(resolvedFields) {\n    return resolvedFields.subsetOf(this.fields);\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields();\n    return new RequiredProps(required.ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return Cost.estimate(0, 100 * KB).add(inputCost);\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new _EnforcerResolve(input, this.fields);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    assert(this.fields.subsetOf(input.fields), \"Fields can't be resolved\");\n    const collections = /* @__PURE__ */ new Set();\n    for (const field of this.fields) {\n      assert(field.collection, \"Collection required to resolve field\");\n      collections.add(field.collection);\n    }\n    for (const tuple of input.tuples) {\n      for (const field of this.fields) {\n        const value = tuple.getValue(field);\n        if ((value == null ? void 0 : value.type) !== \"richtext\" /* RichText */) continue;\n        assert(value.value instanceof RichText, \"Pointer must be wrapped\");\n        void value.value.resolve();\n      }\n    }\n    const collectionItems = yield Promise.all(\n      Array.from(collections).map(async (collection) => {\n        const pointers = [];\n        for (const tuple of input.tuples) {\n          const pointer = tuple.getPointer(collection);\n          if (pointer) pointers.push(pointer);\n        }\n        const items = await collection.data.resolveItems(pointers);\n        assert(items.length === pointers.length, \"Invalid number of items\");\n        return [collection, items];\n      })\n    );\n    return input.map(input.fields, (tuple) => {\n      const result = new Tuple();\n      result.merge(tuple);\n      for (const [collection, items] of collectionItems) {\n        const pointer = tuple.getPointer(collection);\n        if (!pointer) continue;\n        const item = items.shift();\n        assert(item, \"Item not found\");\n        assert(item.pointer === pointer, \"Pointer mismatch\");\n        for (const field of collection.fields) {\n          const value = field.getValue(item);\n          result.addValue(field, value);\n        }\n      }\n      return result;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/enforcer/EnforcerSort.ts\nvar collation9 = {\n  type: 0 /* CaseInsensitive */\n};\nvar EnforcerSort = class _EnforcerSort extends EnforcerNode {\n  constructor(input, ordering) {\n    super(input.isSynchronous);\n    this.input = input;\n    this.ordering = ordering;\n    __publicField(this, \"inputGroup\");\n    this.inputGroup = input.getGroup();\n  }\n  getHash() {\n    return calculateHash(\"EnforcerSort\", this.inputGroup.id, this.ordering);\n  }\n  getOutputFields() {\n    return this.inputGroup.relational.outputFields;\n  }\n  canProvideOrdering(ordering) {\n    return ordering.equals(this.ordering);\n  }\n  canProvideResolvedFields() {\n    return true;\n  }\n  getInputRequiredProps(required) {\n    const resolvedFields = new Fields(required.resolvedFields);\n    for (const { field } of this.ordering.fields) {\n      if (field.name === VIRTUAL_INDEX_FIELD) continue;\n      if (isUndefined(field.collection)) continue;\n      resolvedFields.add(field);\n    }\n    const ordering = new Ordering();\n    return new RequiredProps(ordering, resolvedFields);\n  }\n  optimize(optimizer, required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const inputCost = optimizer.optimizeGroup(this.inputGroup, inputRequired);\n    return new Cost(0).add(inputCost);\n  }\n  getOptimized(required) {\n    const inputRequired = this.getInputRequiredProps(required);\n    const input = this.inputGroup.getOptimized(inputRequired);\n    return new _EnforcerSort(input, this.ordering);\n  }\n  *evaluate(context) {\n    const input = yield* this.input.evaluate(context);\n    return input.sort((leftTuple, rightTuple) => {\n      for (const { field, direction } of this.ordering.fields) {\n        const isAscending = direction === \"asc\" /* Ascending */;\n        if (field.name === VIRTUAL_INDEX_FIELD) {\n          const collection = field.collection;\n          assert(collection, \"Collection required for sorting\");\n          const leftPointer = leftTuple.getPointer(collection);\n          assert(leftPointer, \"Pointer required for sorting\");\n          const leftItem = { pointer: leftPointer, data: {} };\n          const rightPointer = rightTuple.getPointer(collection);\n          assert(rightPointer, \"Pointer required for sorting\");\n          const rightItem = { pointer: rightPointer, data: {} };\n          const order = collection.data.compareItems(leftItem, rightItem);\n          return isAscending ? order : -order;\n        }\n        const leftValue = leftTuple.getValue(field);\n        const rightValue = rightTuple.getValue(field);\n        if (DatabaseValue.equal(leftValue, rightValue, collation9)) {\n          continue;\n        }\n        if (isNull(leftValue) || DatabaseValue.lessThan(leftValue, rightValue, collation9)) {\n          return isAscending ? -1 : 1;\n        }\n        if (isNull(rightValue) || DatabaseValue.greaterThan(leftValue, rightValue, collation9)) {\n          return isAscending ? 1 : -1;\n        }\n        throw new Error(\"Invalid comparison\");\n      }\n      return 0;\n    });\n  }\n};\n\n// ../../library/src/modules/cms/optimizer/nodes/relational/RelationalAssert.ts\nvar collation10 = {\n  type: 1 /* CaseSensitive */\n};\n\n// ../../library/src/modules/cms/optimizer/Optimizer.ts\nvar Optimizer = class {\n  constructor(query, locale) {\n    this.query = query;\n    this.locale = locale;\n    __publicField(this, \"memo\", new Memo());\n    __publicField(this, \"normalizer\", new Normalizer(this.memo));\n    __publicField(this, \"explorer\", new Explorer(this.normalizer));\n  }\n  optimize() {\n    const builder = new Builder(this.normalizer, this.query, this.locale);\n    const outScope = builder.build();\n    const root = outScope.takeNode();\n    const group = root.getGroup();\n    const required = outScope.getRequiredProps();\n    this.optimizeGroup(group, required);\n    const optimized = group.getOptimized(required);\n    const namedFields = outScope.getNamedFields();\n    return [optimized, namedFields];\n  }\n  optimizeGroup(group, required) {\n    const winner = group.getWinner(required);\n    if (winner.node) return winner.cost;\n    const normalized = group.nodes[0];\n    assert(normalized, \"Normalized node not found\");\n    this.createEnforcer(winner, normalized, required);\n    for (const node of group.nodes) {\n      if (required.canProvide(node)) {\n        const cost = node.optimize(this, required);\n        winner.update(node, cost);\n      }\n      if (required.isMinimal) {\n        this.explorer.explore(node);\n      }\n    }\n    if (false) {\n      assert(winner.node, \"Group not optimized\");\n      const cache2 = /* @__PURE__ */ new Map();\n      winner.node = new RelationalAssert(winner.node, required, cache2);\n    }\n    return winner.cost;\n  }\n  createEnforcer(winner, node, required) {\n    if (required.resolvedFields.size > 0) {\n      const enforcer = new EnforcerResolve(node, required.resolvedFields);\n      const cost = enforcer.optimize(this, required);\n      winner.update(enforcer, cost);\n    }\n    if (required.ordering.length > 0) {\n      const enforcer = new EnforcerSort(node, required.ordering);\n      const cost = enforcer.optimize(this, required);\n      winner.update(enforcer, cost);\n    }\n  }\n};\n\n// ../../library/src/modules/cms/stringifyQuery.ts\nfunction stringifyIdentifier(expression) {\n  if (expression.collection) {\n    return `\"${expression.collection}\".\"${expression.name}\"`;\n  }\n  return `\"${expression.name}\"`;\n}\nfunction stringifyLiteralValue(expression) {\n  if (typeof expression.value === \"string\") {\n    return `'${expression.value}'`;\n  }\n  return expression.value;\n}\nfunction stringifyFunctionCall(expression) {\n  return `${expression.functionName}(${expression.arguments.map((argument) => stringifyExpression(argument)).join(\", \")})`;\n}\nfunction stringifyCaseExpression(expression) {\n  let caseString = \"CASE\";\n  if (expression.value) {\n    caseString += ` ${stringifyExpression(expression.value)}`;\n  }\n  for (const condition of expression.conditions) {\n    caseString += ` WHEN ${stringifyExpression(condition.when)} THEN ${stringifyExpression(condition.then)}`;\n  }\n  if (expression.else) {\n    caseString += ` ELSE ${stringifyExpression(expression.else)}`;\n  }\n  caseString += \" END\";\n  return caseString;\n}\nfunction stringifyUnaryOperation(expression) {\n  const value = stringifyExpression(expression.value);\n  const operator = expression.operator.toUpperCase();\n  return `${operator} ${value}`;\n}\nfunction stringifyBinaryOperation(expression) {\n  const left = stringifyExpression(expression.left);\n  const right = stringifyExpression(expression.right);\n  const operator = expression.operator.toUpperCase();\n  return `${left} ${operator} ${right}`;\n}\nfunction stringifyTypeCast(expression) {\n  return `CAST(${stringifyExpression(expression.value)} as ${expression.dataType})`;\n}\nfunction stringifyExpression(expression) {\n  switch (expression.type) {\n    case \"Identifier\":\n      return stringifyIdentifier(expression);\n    case \"LiteralValue\":\n      return stringifyLiteralValue(expression);\n    case \"FunctionCall\":\n      return stringifyFunctionCall(expression);\n    case \"Case\":\n      return stringifyCaseExpression(expression);\n    case \"UnaryOperation\":\n      return stringifyUnaryOperation(expression);\n    case \"BinaryOperation\":\n      return stringifyBinaryOperation(expression);\n    case \"TypeCast\":\n      return stringifyTypeCast(expression);\n    case \"Select\":\n      return `${stringifyQuery(expression)}`;\n    default: {\n      assertNever(expression);\n    }\n  }\n}\nfunction stringifyCollection(collection) {\n  if (isDatabaseCollection(collection.data)) {\n    return \"Collection\";\n  }\n  if (collection.alias) {\n    return `\"${collection.data.displayName}\" AS \"${collection.alias}\"`;\n  }\n  return `\"${collection.data.displayName}\"`;\n}\nfunction stringifyJoin(join) {\n  let result = `${stringifyFrom(join.left)} LEFT JOIN ${stringifyFrom(join.right)}`;\n  if (join.constraint) {\n    result += ` ON ${stringifyExpression(join.constraint)}`;\n  }\n  return result;\n}\nfunction stringifyFrom(from) {\n  switch (from.type) {\n    case \"Collection\":\n      return stringifyCollection(from);\n    case \"LeftJoin\":\n      return stringifyJoin(from);\n    default:\n      assertNever(from);\n  }\n}\nfunction autoIndentSql(sql) {\n  let formattedSql = \"\";\n  const tokens = sql.split(/\\s+/u);\n  tokens.forEach((token) => {\n    if (token === \"\") return;\n    if ([\"SELECT\", \"FROM\", \"WHERE\", \"ORDER\", \"LIMIT\", \"OFFSET\"].includes(token)) {\n      formattedSql += `\n${token}`;\n    } else if ([\"AND\", \"OR\"].includes(token)) {\n      formattedSql += `\n\t${token}`;\n    } else {\n      formattedSql += ` ${token}`;\n    }\n  });\n  return formattedSql.trim();\n}\nfunction stringifyQuery(query) {\n  let queryString = \"\";\n  queryString += `SELECT ${query.select.map((selectExpression) => {\n    const expressionString = stringifyExpression(selectExpression);\n    if (selectExpression.alias) {\n      return `${expressionString} AS \"${selectExpression.alias}\"`;\n    }\n    return expressionString;\n  }).join(\", \")}`;\n  queryString += ` FROM ${stringifyFrom(query.from)}`;\n  if (query.where) {\n    queryString += ` WHERE ${stringifyExpression(query.where)}`;\n  }\n  if (query.orderBy) {\n    queryString += ` ORDER BY ${query.orderBy.map((orderExpression) => {\n      return `${stringifyExpression(orderExpression)} ${orderExpression.direction ?? \"asc\" /* Ascending */}`;\n    }).join(\", \")}`;\n  }\n  if (query.limit) {\n    queryString += ` LIMIT ${stringifyExpression(query.limit)}`;\n  }\n  if (query.offset) {\n    queryString += ` OFFSET ${stringifyExpression(query.offset)}`;\n  }\n  return autoIndentSql(queryString);\n}\n\n// ../../library/src/modules/cms/QueryEngine.ts\nvar log = /* @__PURE__ */ getLogger(\"query-engine\");\nvar QueryEngine = class {\n  async query(query, locale) {\n    log.debug(`Query:\n${stringifyQuery(query)}`);\n    const optimizer = new Optimizer(query, locale);\n    const [root, namedFields] = optimizer.optimize();\n    const relation = await root.evaluateAsync();\n    const namedFieldEntries = Object.entries(namedFields);\n    const result = await Promise.all(\n      relation.tuples.map(async (tuple) => {\n        const resolvedFields = await Promise.all(\n          namedFieldEntries.map(async ([name, field]) => {\n            const value = tuple.getValue(field);\n            const resolved = await this.resolveValue(value);\n            return [name, resolved];\n          })\n        );\n        return Object.fromEntries(resolvedFields);\n      })\n    );\n    return result;\n  }\n  async resolveValue(value) {\n    if ((value == null ? void 0 : value.type) === \"richtext\" /* RichText */) {\n      assert(value.value instanceof RichText, \"Pointer must be wrapped\");\n      return value.value.resolve();\n    }\n    if ((value == null ? void 0 : value.type) === \"array\" /* Array */) {\n      return Promise.all(\n        value.value.map(async (item) => {\n          return this.resolveValue(item);\n        })\n      );\n    }\n    if ((value == null ? void 0 : value.type) === \"object\" /* Object */) {\n      const entries = Object.entries(value.value);\n      const resolvedEntries = await Promise.all(\n        entries.map(async ([key7, item]) => {\n          const resolved = await this.resolveValue(item);\n          return [key7, resolved];\n        })\n      );\n      return Object.fromEntries(resolvedEntries);\n    }\n    return (value == null ? void 0 : value.value) ?? null;\n  }\n};\n\n// ../../library/src/modules/cms/QueryCache.ts\nvar QueryCache = class {\n  constructor(queryEngine2) {\n    this.queryEngine = queryEngine2;\n    // TODO: Use an LRU cache instead.\n    __publicField(this, \"cache\", /* @__PURE__ */ new Map());\n  }\n  get(query, locale) {\n    const key7 = getCacheKey(query, locale);\n    const existing = this.cache.get(key7);\n    if (existing) return existing;\n    const resolver = () => this.queryEngine.query(query, locale);\n    const value = new LazyValue(resolver);\n    this.cache.set(key7, value);\n    return value;\n  }\n};\nvar collectionIds = /* @__PURE__ */ new WeakMap();\nfunction getCollectionId(collection) {\n  const existing = collectionIds.get(collection);\n  if (existing) return existing;\n  const id = Math.random().toString(16).slice(2);\n  collectionIds.set(collection, id);\n  return id;\n}\nfunction replaceCollection(_, value) {\n  if (isObject2(value) && value.type === \"Collection\" && isAnyCollection(value.data)) {\n    return getCollectionId(value.data);\n  }\n  return value;\n}\nfunction getCacheKey(query, locale) {\n  const localeId = (locale == null ? void 0 : locale.id) ?? \"default\";\n  return JSON.stringify(query, replaceCollection) + localeId;\n}\n\n// ../../library/src/modules/useActiveVariantCallback.ts\nimport { useEffect as useEffect19, useRef as useRef19 } from \"react\";\nfunction rejectPending(pendingTimers, pendingPromises) {\n  pendingTimers.forEach((t) => clearTimeout(t));\n  pendingTimers.clear();\n  pendingPromises.forEach((reject) => reject == null ? void 0 : 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  useEffect19(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  }, []);\n  useEffect19(() => {\n    rejectPending(pendingTimers, pendingPromises);\n  }, [baseVariant]);\n  return useRef19({\n    /**\n     * Create a callback that can be cancelled if the base variant changes.\n     */\n    activeVariantCallback: (callback) => async (...args) => {\n      return new Promise((resolve, reject) => {\n        pendingPromises.add(reject);\n        void callback(...args).then(resolve);\n      }).catch(() => {\n      });\n    },\n    /**\n     * Execute a callback after a defined period of time. The callback will not\n     * be called if pending events are cancelled because the timeout will be\n     * cancelled.\n     */\n    delay: async (callback, msDelay) => {\n      await new Promise((resolve) => {\n        pendingTimers.add(globalThis.setTimeout(() => resolve(true), msDelay));\n      });\n      callback();\n    }\n  }).current;\n}\nfunction useActiveTargetCallback() {\n  const value = useActiveVariantCallback(void 0);\n  return useRef19({\n    activeTargetCallback: value.activeVariantCallback,\n    delay: value.delay\n  }).current;\n}\n\n// ../../library/src/modules/useAddVariantProps.ts\nimport React67 from \"react\";\nfunction useAddVariantProps(baseVariant, gestureVariant, variantProps) {\n  return React67.useCallback(\n    (id) => {\n      var _a, _b, _c;\n      if (!variantProps) return {};\n      if (!baseVariant) 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 { startTransition as startTransition8, useCallback as useCallback14, useContext as useContext23, useEffect as useEffect20, useRef as useRef20 } 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) mediaQuery.push(`(min-width: ${min}px)`);\n    if (max) mediaQuery.push(`(max-width: ${max}px)`);\n    if (mediaQuery.length) 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) return variant;\n  }\n}\nfunction activeBreakpointHashesFromWindow(breakpoints) {\n  var _a;\n  const matches = [];\n  for (const { hash: hash2, mediaQuery } of breakpoints) {\n    if (!mediaQuery) continue;\n    const mql = safeWindow.matchMedia(mediaQuery);\n    if (mql.matches) matches.push(hash2);\n  }\n  if (matches.length > 0) return matches;\n  const defaultHash = (_a = breakpoints[0]) == null ? void 0 : _a.hash;\n  if (!defaultHash) return void 0;\n  return [defaultHash];\n}\nfunction useHydratedBreakpointVariants(initial, mediaQueries, hydratedWithInitial = true) {\n  const isInitialNavigation = useContext23(IsInitialNavigationContext);\n  const isStaticRenderer2 = useIsStaticRenderer();\n  const usesMediaQueries = !isStaticRenderer2 && isBrowser2();\n  const baseVariant = useRef20(usesMediaQueries ? activeMediaQueryFromWindow(mediaQueries) ?? initial : initial);\n  const basePropsVariant = useRef20(hydratedWithInitial && isInitialNavigation ? initial : baseVariant.current);\n  const forceUpdate = useForceUpdate2();\n  const instantTransition = useInstantTransition();\n  const setActiveVariantInstant = useCallback14(\n    (variant) => {\n      if (variant !== baseVariant.current || variant !== basePropsVariant.current) {\n        let updateStateAndRerender2 = function() {\n          baseVariant.current = basePropsVariant.current = variant;\n          startTransition8(() => {\n            forceUpdate();\n          });\n        };\n        var updateStateAndRerender = updateStateAndRerender2;\n        if (isStaticRenderer2) {\n          updateStateAndRerender2();\n        } else {\n          instantTransition(() => {\n            updateStateAndRerender2();\n          });\n        }\n      }\n    },\n    [instantTransition, forceUpdate, isStaticRenderer2]\n  );\n  useIsomorphicLayoutEffect2(() => {\n    if (!isStaticRenderer2) return;\n    setActiveVariantInstant(initial);\n  }, [initial, isStaticRenderer2, setActiveVariantInstant]);\n  useIsomorphicLayoutEffect2(() => {\n    if (!hydratedWithInitial || isInitialNavigation !== true) return;\n    setActiveVariantInstant(baseVariant.current);\n  }, []);\n  useEffect20(() => {\n    const callbacks = [];\n    for (const [variant, query] of Object.entries(mediaQueries)) {\n      const mql = safeWindow.matchMedia(query);\n      const callback = (event) => {\n        if (event.matches) setActiveVariantInstant(variant);\n      };\n      addMQLCallback(mql, callback);\n      callbacks.push([mql, callback]);\n    }\n    return () => callbacks.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}\nvar framerBreakpointCSSSelector = \"style[data-framer-breakpoint-css]\";\nfunction requestIdleCallbackFallback(callback) {\n  setTimeout(callback, 1);\n}\nfunction removeHiddenBreakpointLayersV2(breakpoints) {\n  var _a, _b, _c, _d;\n  const suspenseBoundaries = /* @__PURE__ */ new Set();\n  const activeBreakpointHashes = activeBreakpointHashesFromWindow(breakpoints);\n  if (activeBreakpointHashes) {\n    for (const hash2 of activeBreakpointHashes) {\n      for (const hiddenLayer of document.querySelectorAll(\".hidden-\" + hash2)) {\n        if (isSuspenseBoundaryStart(hiddenLayer.previousSibling)) {\n          suspenseBoundaries.add(hiddenLayer.previousSibling);\n        }\n        (_a = hiddenLayer.parentNode) == null ? void 0 : _a.removeChild(hiddenLayer);\n      }\n    }\n  }\n  const requestIdleCallback2 = supportsRequestIdleCallback ? safeWindow.requestIdleCallback : requestIdleCallbackFallback;\n  requestIdleCallback2(() => {\n    var _a2;\n    (_a2 = document.querySelector(framerBreakpointCSSSelector)) == null ? void 0 : _a2.remove();\n  });\n  for (const ssrVariant of document.querySelectorAll(\".ssr-variant:empty\")) {\n    if (isSuspenseBoundaryStart(ssrVariant.previousSibling)) {\n      suspenseBoundaries.add(ssrVariant.previousSibling);\n    }\n    (_b = ssrVariant.parentNode) == null ? void 0 : _b.removeChild(ssrVariant);\n  }\n  for (const suspenseBoundary of suspenseBoundaries) {\n    if (isSuspenseBoundaryEnd(suspenseBoundary.nextSibling)) {\n      (_c = suspenseBoundary.parentNode) == null ? void 0 : _c.removeChild(suspenseBoundary.nextSibling);\n      (_d = suspenseBoundary.parentNode) == null ? void 0 : _d.removeChild(suspenseBoundary);\n    }\n  }\n}\nfunction isSuspenseBoundaryStart(node) {\n  return (node == null ? void 0 : node.nodeType) === Node.COMMENT_NODE && node.textContent === \"$\";\n}\nfunction isSuspenseBoundaryEnd(node) {\n  return (node == null ? void 0 : node.nodeType) === Node.COMMENT_NODE && node.textContent === \"/$\";\n}\n\n// ../../library/src/modules/useDataRecord.ts\nimport { useMemo as useMemo14 } from \"react\";\nfunction useDataRecord(collection, variables) {\n  return useMemo14(() => {\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;\n  }, [collection, variables]);\n}\n\n// ../../library/src/modules/useDynamicRefs.ts\nimport React68, { createRef, useMemo as useMemo15 } from \"react\";\nfunction useDynamicRefs() {\n  const map2 = useConstant(() => /* @__PURE__ */ new Map());\n  return React68.useCallback((key7) => {\n    const existing = map2.get(key7);\n    if (existing) return existing;\n    const ref = createRef();\n    map2.set(key7, ref);\n    return ref;\n  }, []);\n}\nvar map = /* @__PURE__ */ new Map();\nfunction useSiteRefs() {\n  const route = useCurrentRoute();\n  const path = useMemo15(() => {\n    return getPathForRoute(route, {\n      currentRoutePath: route == null ? void 0 : route.path,\n      currentPathVariables: route == null ? void 0 : route.pathVariables,\n      preserveQueryParams: false,\n      relative: false,\n      siteCanonicalURL: void 0\n    });\n  }, [route]);\n  return React68.useCallback(\n    (key7) => {\n      if (!key7) return;\n      const computedKey = `${path}-${key7}`;\n      const existing = map.get(computedKey);\n      if (existing) return existing;\n      const ref = createRef();\n      map.set(computedKey, ref);\n      return ref;\n    },\n    [path]\n  );\n}\n\n// ../../library/src/modules/useGamepad.ts\nimport React69 from \"react\";\nfunction isFramerGamepadKeydownData(value) {\n  return isObject2(value) && value.mapping !== void 0;\n}\nfunction gamepadInputsHaveChanged(previous, current) {\n  if (previous.length !== current.length) return true;\n  if (!previous.every((item, i) => current[i] === item)) 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) return;\n    const { gamepad, inputs } = input;\n    const { mapping, id } = gamepad;\n    if (gamepadInputsHaveChanged(lastKeys, inputs)) handlers.forEach((handler) => handler({ inputs, mapping, id }));\n    lastKeys = inputs;\n    isPolling = safeWindow.requestAnimationFrame(startPolling);\n  };\n  const handleConnection = () => {\n    if (isConnected || isPolling) return;\n    startPolling();\n    isConnected = true;\n  };\n  const stopPolling = () => {\n    if (!isPolling) return;\n    safeWindow.cancelAnimationFrame(isPolling);\n    isPolling = null;\n  };\n  const handleDisconnection = () => {\n    if (!isConnected) return;\n    stopPolling();\n    isConnected = false;\n  };\n  const setupAndStartPolling = () => {\n    if (isPolling) 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) return;\n    safeWindow.removeEventListener(\"gamepadconnected\", handleConnection);\n    safeWindow.removeEventListener(\"gamepaddisconnected\", handleDisconnection);\n    stopPolling();\n  };\n  return {\n    register(callback) {\n      if (handlers.size === 0) setupAndStartPolling();\n      handlers.add(callback);\n    },\n    unregister(callback) {\n      handlers.delete(callback);\n      if (handlers.size === 0) cleanupAndStopPolling();\n    }\n  };\n}\nvar gamepadPoller = /* @__PURE__ */ createGamepadPoller();\nvar GamepadContext = /* @__PURE__ */ React69.createContext(gamepadPoller);\nfunction getGamepadInputs() {\n  let firstConnectedGamepad = null;\n  const gamepads = navigator.getGamepads();\n  for (const gamepad of gamepads) {\n    if (!gamepad) continue;\n    if (!firstConnectedGamepad) firstConnectedGamepad = gamepad;\n    const inputs = [...scanPressedAxis(gamepad), ...scanPressedButtons(gamepad)];\n    if (inputs.length > 0) return { gamepad, inputs };\n  }\n  if (firstConnectedGamepad) 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) continue;\n    if (axis <= -0.5) axes.push(`Axis ${idx}-`);\n    if (axis > 0.5) 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)) 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 = React69.useContext(GamepadContext);\n  const settings = useConstant(() => ({\n    mapping: mapping ?? \"standard\",\n    on: on ?? \"keydown\"\n  }));\n  const stateRef = React69.useRef({\n    pressed: false,\n    handler: callback\n  });\n  const cb = React69.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(cb);\n    } else {\n      context.unregister(cb);\n    }\n    return () => context.unregister(cb);\n  }, []);\n  React69.useEffect(() => {\n    return () => context.unregister(cb);\n  }, [cb, context]);\n  React69.useEffect(() => {\n    stateRef.current.handler = callback;\n  }, [callback]);\n}\n\n// ../../library/src/modules/useHotkey.ts\nimport React70 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) 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 = React70.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 = React70.useCallback(\n    (event) => {\n      if (!shortcutDefinition) return;\n      if (!inTarget.current) return;\n      if (!Object.keys(shortcutDefinition).every((key7) => shortcutDefinition[key7] === asRecord(event)[key7])) return;\n      event.preventDefault();\n      callback();\n    },\n    [shortcutDefinition, callback]\n  );\n  React70.useEffect(() => {\n    document.addEventListener(\"keydown\", eventHandler);\n    return () => document.removeEventListener(\"keydown\", eventHandler);\n  }, [eventHandler]);\n}\n\n// ../../library/src/modules/useNavigate.tsx\nfunction useNavigate() {\n  const { navigate } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  if (!navigate) return () => {\n  };\n  return (target) => {\n    if (onCanvas) return;\n    navigate(target);\n    return false;\n  };\n}\n\n// ../../library/src/modules/useOnVariantChange.ts\nimport React71 from \"react\";\nfunction callbackForVariant(map2, variant) {\n  if (map2[variant]) return map2[variant];\n  if (variant in map2) return void 0;\n  return map2.default;\n}\nfunction useOnVariantChange(variant, callbackMap) {\n  const isRenderingStaticContent = isStaticRenderer();\n  if (isRenderingStaticContent) return;\n  const isActiveScreenRef = React71.useRef(true);\n  const callbackMapRef = React71.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) callback();\n    }\n    isActiveScreenRef.current = isActiveScreen;\n  }, []);\n  React71.useEffect(() => {\n    if (isActiveScreenRef.current) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback) callback();\n    }\n  }, [variant]);\n}\nfunction useOnAppear(callback) {\n  useOnVariantChange(\"default\", { default: callback });\n}\n\n// ../../library/src/modules/useOverlayState.tsx\nimport React72, { startTransition as startTransition9 } from \"react\";\nfunction setOverflow(blockDocumentScrolling, show) {\n  if (blockDocumentScrolling === false) return;\n  frame.render(() => {\n    const htmlStyle = document.documentElement.style;\n    if (show) {\n      htmlStyle.setProperty(\"overflow\", \"hidden\");\n    } else {\n      htmlStyle.removeProperty(\"overflow\");\n    }\n  });\n}\nfunction useOverlayState({\n  blockDocumentScrolling = true\n} = {}) {\n  const [showOverlay, setShowOverlay] = React72.useState(false);\n  const callback = React72.useCallback(\n    async (show) => {\n      await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n      startTransition9(() => setShowOverlay(show));\n      setOverflow(blockDocumentScrolling, show);\n    },\n    [blockDocumentScrolling]\n  );\n  React72.useEffect(\n    () => () => {\n      void yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" }).then(() => {\n        setOverflow(blockDocumentScrolling, false);\n      });\n    },\n    [blockDocumentScrolling]\n  );\n  return [showOverlay, callback];\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nimport React73 from \"react\";\n\n// ../../library/src/router/isRoute.ts\nvar key4 = \"page\";\nfunction isRoute(route) {\n  return isObject2(route) && key4 in route && route.page !== void 0;\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nasync function componentForRoute(route) {\n  if (!isRoute(route)) return;\n  const { page: routeComponent } = route;\n  if (!routeComponent) return;\n  if (React73.isValidElement(routeComponent)) return routeComponent;\n  if (withPreload(routeComponent)) await routeComponent.preload();\n  return React73.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  React73.useEffect(() => {\n    if (!navigation || onCanvas) return;\n    preload == null ? void 0 : preload.forEach((componentOrRoute) => {\n      let component;\n      if (isString(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)) void component.preload();\n    });\n  }, []);\n  if (!navigation) return () => {\n  };\n  return async (target, options = {}) => {\n    if (onCanvas) return;\n    if (target === \"previous\") {\n      navigation.goBack();\n      return false;\n    }\n    const Component17 = typeof target === \"string\" ? await componentForRoute(getRoute == null ? void 0 : getRoute(target)).catch(() => {\n    }) : React73.isValidElement(target) ? target : null;\n    if (!Component17) return;\n    const { appearsFrom, backdropColor, animation } = options;\n    const transitionType = options.transition || \"instant\";\n    switch (transitionType) {\n      case \"instant\":\n        navigation.instant(Component17);\n        break;\n      case \"fade\":\n        navigation.fade(Component17, { animation });\n        break;\n      case \"push\":\n        navigation.push(Component17, { appearsFrom, animation });\n        break;\n      case \"flip\":\n        navigation.flip(Component17, { appearsFrom, animation });\n        break;\n      case \"magicMotion\":\n        navigation.magicMotion(Component17, { animation });\n        break;\n      // Overlay stack navigation doesn't support updating the browser's\n      // path.\n      case \"modal\":\n        navigation.modal(Component17, { backdropColor, animation });\n        break;\n      case \"overlay\":\n        navigation.overlay(Component17, { appearsFrom, backdropColor, animation });\n        break;\n    }\n    return false;\n  };\n}\n\n// ../../library/src/modules/useQueryData.ts\nimport { useCallback as useCallback15 } from \"react\";\nfunction use(promise) {\n  throw promise;\n}\nvar queryEngine = /* @__PURE__ */ new QueryEngine();\nvar queryCache = /* @__PURE__ */ new QueryCache(queryEngine);\nfunction useQueryData(query) {\n  const { activeLocale } = useLocaleInfo();\n  const cached = queryCache.get(query, activeLocale);\n  const promise = cached.preload();\n  if (promise) use(promise);\n  return cached.read();\n}\nfunction useQueryCount(query) {\n  const countQuery = { ...query, select: [] };\n  const collection = useQueryData(countQuery);\n  return collection.length;\n}\nfunction usePreloadQuery() {\n  const { activeLocale } = useLocaleInfo();\n  return useCallback15(\n    async (query) => {\n      return queryCache.get(query, activeLocale).readAsync();\n    },\n    [activeLocale]\n  );\n}\nfunction getWhereExpressionFromPathVariables(pathVariables, collection) {\n  const entries = Object.entries(pathVariables ?? {}).filter(([, value]) => {\n    if (isUndefined(value)) return false;\n    if (isObject2(value)) return false;\n    return true;\n  });\n  const expressions = entries.map(\n    ([name, value]) => ({\n      type: \"BinaryOperation\",\n      operator: \"==\" /* Equals */,\n      left: {\n        type: \"TypeCast\",\n        value: {\n          type: \"Identifier\",\n          name,\n          collection\n        },\n        dataType: \"STRING\" /* String */\n      },\n      right: {\n        type: \"LiteralValue\",\n        value: String(value)\n      }\n    })\n  );\n  if (expressions.length === 0) {\n    return {\n      type: \"LiteralValue\",\n      value: false\n    };\n  }\n  return expressions.reduce(\n    (result, expression) => ({\n      type: \"BinaryOperation\",\n      operator: \"and\" /* And */,\n      left: result,\n      right: expression\n    })\n  );\n}\n\n// ../../library/src/components/utils/useLoadMorePaginatedQuery.tsx\nimport { useMemo as useMemo17 } from \"react\";\n\n// ../../library/src/components/utils/useLoadMorePagination.tsx\nimport { startTransition as startTransition10, useCallback as useCallback16, useEffect as useEffect21, useMemo as useMemo16, useState as useState8, useTransition } from \"react\";\nfunction useLoadMorePagination(totalSize, pageSize, hash2, paginateWithSuspendedLoadingState = false) {\n  var _a, _b, _c, _d;\n  const [isPending, startLoadingTransition] = useTransition();\n  const totalPages = Math.ceil(totalSize / pageSize);\n  const [currentPage, setCurrentPage] = useState8(\n    ((_d = (_c = (_b = (_a = globalThis == null ? void 0 : globalThis.history) == null ? void 0 : _a.state) == null ? void 0 : _b.paginationInfo) == null ? void 0 : _c[hash2]) == null ? void 0 : _d.currentPage) ?? 1\n  );\n  const paginationInfo = useMemo16(() => {\n    return {\n      currentPage,\n      totalPages,\n      isLoading: isPending\n    };\n  }, [currentPage, totalPages, isPending]);\n  useEffect21(() => {\n    pushLoadMoreHistory(hash2, paginationInfo);\n  }, [hash2, paginationInfo]);\n  const onCanvas = useIsOnFramerCanvas();\n  const loadMore = useCallback16(async () => {\n    if (onCanvas) return;\n    if (currentPage >= totalPages) return;\n    await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n    const renderNextPage = (startTransition14) => {\n      startTransition14(() => {\n        setCurrentPage((_currentPage) => Math.min(_currentPage + 1, totalPages));\n      });\n    };\n    if (!paginateWithSuspendedLoadingState) return renderNextPage(startTransition10);\n    return renderNextPage(startLoadingTransition);\n  }, [currentPage, totalPages, paginateWithSuspendedLoadingState]);\n  return { paginationInfo, loadMore };\n}\n\n// ../../library/src/components/utils/useLoadMorePaginatedQuery.tsx\nfunction useLoadMorePaginatedQuery(query, pageSize, hash2) {\n  const count = useQueryCount(query);\n  const { paginationInfo, loadMore } = useLoadMorePagination(count, pageSize, hash2, true);\n  const paginatedQuery = useMemo17(() => {\n    let limit = pageSize * paginationInfo.currentPage;\n    if (query.limit) {\n      if (query.limit.type !== \"LiteralValue\" || typeof query.limit.value !== \"number\") {\n        throw new Error(\"Unexpected type for query limit\");\n      }\n      limit = Math.min(limit, query.limit.value);\n    }\n    return { ...query, limit: { type: \"LiteralValue\", value: limit } };\n  }, [query, pageSize, paginationInfo]);\n  return { paginatedQuery, paginationInfo, loadMore };\n}\n\n// ../../library/src/modules/useVariantState.ts\nimport { startTransition as startTransition11, useCallback as useCallback17, useContext as useContext24, useEffect as useEffect22, useMemo as useMemo18, useRef as useRef21 } 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) return void 0;\n  if (variant) {\n    const variantTransition = transitions[variant];\n    if (variantTransition) 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, isLoading, isError) {\n  const { hover: hover2, pressed, loading, error } = enabledGestures || {};\n  if (error && isError) return \"error\";\n  if (loading && isLoading) return \"loading\";\n  if (pressed && isPressed) return \"pressed\";\n  if (hover2 && isHovered) return \"hover\";\n}\nfunction createVariantClassName(baseVariant, variantClassNames) {\n  const mappedClassName = variantClassNames[baseVariant];\n  if (mappedClassName) return mappedClassName;\n  return `framer-${\"v\" /* Variant */}-${baseVariant}`;\n}\nfunction safeBaseVariant(targetVariant, fallbackVariant, validBaseVariants) {\n  if (!targetVariant) return fallbackVariant;\n  if (validBaseVariants.has(targetVariant)) return targetVariant;\n  return fallbackVariant;\n}\nvar CycleVariantState = /* @__PURE__ */ Symbol(\"cycle\");\nfunction useRunCallbackIfPageIsVisible() {\n  const listenerRef = useRef21();\n  const callbackRef = useRef21();\n  const clean = useCallback17(() => {\n    if (!listenerRef.current) return;\n    document.removeEventListener(\"visibilitychange\", listenerRef.current);\n    listenerRef.current = void 0;\n    callbackRef.current = void 0;\n  }, []);\n  useEffect22(() => {\n    return () => {\n      clean();\n    };\n  }, [clean]);\n  return useCallback17(\n    (callback) => {\n      if (!document.hidden) {\n        callback();\n        clean();\n        return;\n      }\n      callbackRef.current = callback;\n      if (listenerRef.current) return;\n      const listenerFn = () => {\n        var _a;\n        if (document.hidden) return;\n        (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef);\n        clean();\n      };\n      listenerRef.current = listenerFn;\n      document.addEventListener(\"visibilitychange\", listenerFn);\n    },\n    [clean]\n  );\n}\nfunction useRunCallbackIfElementIsInView() {\n  const observerRefCleanup = useRef21();\n  const isInViewRef = useRef21(false);\n  const callbackRef = useRef21();\n  const observers = useContext24(SharedIntersectionObserverContext);\n  useEffect22(() => {\n    return () => {\n      var _a;\n      (_a = observerRefCleanup.current) == null ? void 0 : _a.call(observerRefCleanup);\n      callbackRef.current = void 0;\n      observerRefCleanup.current = void 0;\n    };\n  }, []);\n  return useCallback17(\n    (callback, ref) => {\n      if (!(ref == null ? void 0 : ref.current) || isInViewRef.current) {\n        callback();\n        return;\n      }\n      callbackRef.current = callback;\n      if (observerRefCleanup.current) return;\n      let queuedMicrotask = false;\n      const observerCallback = (entry) => {\n        isInViewRef.current = entry.isIntersecting;\n        if (queuedMicrotask) return;\n        queuedMicrotask = true;\n        queueMicrotask(() => {\n          var _a;\n          queuedMicrotask = false;\n          if (!isInViewRef.current) return;\n          (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef);\n        });\n      };\n      observerRefCleanup.current = observeElement(observers, \"undefined\", ref.current, null, observerCallback);\n    },\n    [observers]\n  );\n}\nfunction useUpdateIfVisible(ref) {\n  const runUpdateIfPageIsVisible = useRunCallbackIfPageIsVisible();\n  const runUpdateIfElementIsInView = useRunCallbackIfElementIsInView();\n  return useCallback17(\n    (callback, checkViewport = false) => {\n      if (isBot) {\n        callback();\n        return;\n      }\n      const runUpdate = checkViewport && ref ? () => runUpdateIfElementIsInView(callback, ref) : callback;\n      runUpdateIfPageIsVisible(runUpdate);\n    },\n    [runUpdateIfPageIsVisible, runUpdateIfElementIsInView, ref]\n  );\n}\nvar globalWaitingForClickPromise;\nvar globalWaitingForClickResolve;\nasync function getPromiseWithFallback() {\n  return new Promise((resolve) => {\n    let resolveFn = resolve;\n    setTimeout(() => {\n      if (!resolveFn) return;\n      performance.mark(\"wait-for-click-fallback\");\n      resolveFn();\n    }, 150);\n    globalWaitingForClickResolve = () => {\n      resolve();\n      resolveFn = void 0;\n    };\n  });\n}\nfunction globalWaitForClickListener(event) {\n  if (event.button === 0) {\n    performance.mark(\"pointerdown-listener\");\n    globalWaitingForClickPromise = getPromiseWithFallback();\n  }\n}\nfunction globalClickReceivedListener() {\n  performance.mark(\"click-received-listener\");\n  globalWaitingForClickPromise = void 0;\n  globalWaitingForClickResolve == null ? void 0 : globalWaitingForClickResolve();\n  globalWaitingForClickResolve = void 0;\n}\nfunction useWaitForGlobalClick(enabled = false) {\n  useEffect22(() => {\n    if (!enabled) return;\n    document.addEventListener(\"pointerup\", globalWaitForClickListener, true);\n    document.__proto__.addEventListener.call(document, \"click\", globalClickReceivedListener, true);\n  }, [enabled]);\n}\nfunction useVariantState({\n  variant,\n  defaultVariant: externalDefaultVariant,\n  transitions: externalTransitions,\n  enabledGestures: externalEnabledGestures,\n  cycleOrder: externalCycleOrder = [],\n  variantProps = {},\n  variantClassNames = {},\n  ref\n}) {\n  const forceUpdate = useForceUpdate2();\n  const isCanvas = useIsOnFramerCanvas();\n  const validBaseVariants = useConstant(() => new Set(externalCycleOrder));\n  const { pauseOffscreen: pauseOffscreenFeatureOn, yieldOnTap: yieldOnTapFeatureOn } = useLibraryFeatures();\n  useWaitForGlobalClick(yieldOnTapFeatureOn);\n  const runUpdateIfVisible = useUpdateIfVisible(ref);\n  const internalState = useRef21({\n    isHovered: false,\n    isHoveredHasUpdated: false,\n    isPressed: false,\n    isPressedHasUpdated: false,\n    isError: false,\n    hasPressedVariants: true,\n    baseVariant: safeBaseVariant(variant, externalDefaultVariant, validBaseVariants),\n    lastVariant: variant,\n    gestureVariant: void 0,\n    loadedBaseVariant: {},\n    // When used in generated components, these are static values defined\n    // outside of the component function that also need to not result in\n    // memorized values being recalculated, so we dump them into the ref.\n    defaultVariant: externalDefaultVariant,\n    enabledGestures: externalEnabledGestures,\n    cycleOrder: externalCycleOrder,\n    transitions: externalTransitions\n  });\n  const resolveNextVariant = useCallback17((targetBaseVariant) => {\n    const { isHovered: isHovered2, isPressed: isPressed2, isError: isError2, 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, false, isError2);\n    const nextGestureVariant = gesture ? createGestureVariant(nextBaseVariant, gesture) : void 0;\n    return [nextBaseVariant, nextGestureVariant];\n  }, []);\n  const updateIfNeeded = useCallback17(\n    async (baseVariant2, gestureVariant2, defaultVariant2, nextBaseVariant, checkViewport = false, clearError = false) => {\n      const [nextBase, nextGesture] = resolveNextVariant(nextBaseVariant);\n      if (nextBase === baseVariant2 && nextGesture === gestureVariant2) return;\n      if (clearError) internalState.current.isError = false;\n      internalState.current.baseVariant = nextBase || defaultVariant2;\n      internalState.current.gestureVariant = nextGesture;\n      const yieldOnTap = yieldOnTapFeatureOn && internalState.current.isPressedHasUpdated;\n      if (yieldOnTap && globalWaitingForClickPromise) {\n        performance.mark(\"wait-for-tap-start\");\n        await globalWaitingForClickPromise;\n        performance.measure(\"wait-for-tap\", \"wait-for-tap-start\");\n      }\n      if (yieldOnTap) {\n        performance.mark(\"yield-on-tap-start\");\n        await yieldToMain({ priority: \"user-blocking\", continueAfter: \"paint\" });\n        performance.measure(\"yield-on-tap\", \"yield-on-tap-start\");\n      }\n      const { isHovered: isHovered2, isPressed: isPressed2, isHoveredHasUpdated, isPressedHasUpdated } = internalState.current;\n      if (isHovered2 || isHoveredHasUpdated || isPressed2 || isPressedHasUpdated) {\n        startTransition11(forceUpdate);\n        return;\n      }\n      runUpdateIfVisible(() => startTransition11(forceUpdate), pauseOffscreenFeatureOn && checkViewport);\n    },\n    [resolveNextVariant, forceUpdate, runUpdateIfVisible, pauseOffscreenFeatureOn, yieldOnTapFeatureOn]\n  );\n  const setGestureState = useCallback17(\n    ({ isHovered: isHovered2, isPressed: isPressed2, isError: isError2 }) => {\n      const isPressedHasUpdated = isPressed2 !== internalState.current.isPressed;\n      const isHoveredHasUpdated = isHovered2 !== internalState.current.isHovered;\n      if (isHovered2 !== void 0) internalState.current.isHovered = isHovered2;\n      if (isPressed2 !== void 0) internalState.current.isPressed = isPressed2;\n      if (isError2 !== void 0) internalState.current.isError = isError2;\n      const { baseVariant: baseVariant2, gestureVariant: gestureVariant2, defaultVariant: defaultVariant2 } = internalState.current;\n      internalState.current.isPressedHasUpdated = isPressedHasUpdated;\n      internalState.current.isHoveredHasUpdated = isHoveredHasUpdated;\n      void updateIfNeeded(baseVariant2, gestureVariant2, defaultVariant2, baseVariant2, false);\n    },\n    [updateIfNeeded]\n  );\n  const setVariant = useCallback17(\n    (proposedVariant, pauseOffscreen = false) => {\n      const { defaultVariant: defaultVariant2, cycleOrder, baseVariant: baseVariant2, gestureVariant: gestureVariant2 } = internalState.current;\n      const nextBaseVariant = proposedVariant === CycleVariantState ? nextVariant(cycleOrder || [], baseVariant2 || defaultVariant2) : proposedVariant;\n      void updateIfNeeded(baseVariant2, gestureVariant2, defaultVariant2, nextBaseVariant, pauseOffscreen, true);\n    },\n    [updateIfNeeded]\n  );\n  const clearLoadingGesture = useCallback17(() => {\n    const { baseVariant: baseVariant2 } = internalState.current;\n    internalState.current.loadedBaseVariant[baseVariant2] = true;\n    runUpdateIfVisible(() => startTransition11(forceUpdate), true);\n  }, [forceUpdate, runUpdateIfVisible]);\n  if (variant !== internalState.current.lastVariant) {\n    const [nextBase, nextGesture] = resolveNextVariant(variant);\n    internalState.current.lastVariant = nextBase;\n    if (nextBase !== internalState.current.baseVariant || nextGesture !== internalState.current.gestureVariant) {\n      internalState.current.baseVariant = nextBase;\n      internalState.current.gestureVariant = nextGesture;\n    }\n  }\n  const {\n    baseVariant,\n    gestureVariant,\n    defaultVariant,\n    enabledGestures,\n    isHovered,\n    isPressed,\n    isError,\n    loadedBaseVariant\n  } = internalState.current;\n  const addVariantProps = useAddVariantProps(\n    internalState.current.baseVariant,\n    internalState.current.gestureVariant,\n    variantProps\n  );\n  return useMemo18(() => {\n    var _a;\n    const variants = [];\n    if (baseVariant !== defaultVariant) variants.push(baseVariant);\n    const hasLoadingVariant = (_a = enabledGestures == null ? void 0 : enabledGestures[baseVariant]) == null ? void 0 : _a.loading;\n    const isLoading = !isError && !isCanvas && !!hasLoadingVariant && !loadedBaseVariant[baseVariant];\n    const gesture = isLoading ? createGestureVariant(baseVariant, \"loading\") : gestureVariant;\n    if (gesture) variants.push(gesture);\n    const gestures = enabledGestures == null ? void 0 : enabledGestures[baseVariant];\n    const gestureHandlers = {\n      onMouseEnter: () => setGestureState({ isHovered: true }),\n      onMouseLeave: () => setGestureState({ isHovered: false })\n    };\n    if (gestures == null ? void 0 : gestures.pressed) {\n      Object.assign(gestureHandlers, {\n        onTapStart: () => setGestureState({ isPressed: true }),\n        onTapCancel: () => setGestureState({ isPressed: false }),\n        onTap: () => setGestureState({ isPressed: false })\n      });\n    }\n    return {\n      variants,\n      baseVariant,\n      gestureVariant: gesture,\n      isLoading,\n      transition: activeTransition(internalState.current.transitions, baseVariant),\n      setVariant,\n      setGestureState,\n      clearLoadingGesture,\n      addVariantProps,\n      gestureHandlers,\n      classNames: cx(\n        createVariantClassName(baseVariant, variantClassNames),\n        getGesture(gestures, isHovered, isPressed, isLoading, isError)\n      )\n    };\n  }, [\n    baseVariant,\n    gestureVariant,\n    isHovered,\n    isPressed,\n    loadedBaseVariant,\n    addVariantProps,\n    setVariant,\n    defaultVariant,\n    enabledGestures,\n    setGestureState,\n    clearLoadingGesture,\n    variantClassNames\n  ]);\n}\n\n// ../../library/src/modules/safeCSSValue.ts\nvar reUnsafeCharacters = /[}{<>&;]/u;\nfunction safeCSSValue(value) {\n  if (!isString(value)) return \"none\";\n  if (reUnsafeCharacters.test(value)) return \"none\";\n  return value;\n}\n\n// ../../library/src/modules/code-boundary/withCodeBoundaryForOverrides.tsx\nimport React74 from \"react\";\nimport { jsx as jsx64 } from \"react/jsx-runtime\";\nfunction withCodeBoundaryForOverrides(Component17, { scopeId, nodeId, override, inComponentSlot }) {\n  if (!shouldEnableCodeBoundaries()) {\n    return override(Component17);\n  }\n  const appliedOverride = tryToApplyOverride(Component17, override);\n  let hasErrorBeenLogged = false;\n  function CodeBoundaryForOverrides(props, ref) {\n    const nearestExternalComponent = useNearestExternalComponent();\n    const shouldWrapWithBoundary = shouldWrapOverrideWithBoundary(\n      scopeId,\n      nearestExternalComponent == null ? void 0 : nearestExternalComponent.scopeId,\n      nearestExternalComponent == null ? void 0 : nearestExternalComponent.level,\n      inComponentSlot ?? false\n    );\n    if (shouldWrapWithBoundary) {\n      if (appliedOverride.status === \"success\") {\n        return /* @__PURE__ */ jsx64(\n          CodeComponentBoundary,\n          {\n            getErrorMessage: getErrorMessageForOverride.bind(null, scopeId, nodeId),\n            fallback: /* @__PURE__ */ jsx64(Component17, { ...props, ref }),\n            children: /* @__PURE__ */ jsx64(appliedOverride.Component, { ...props, ref })\n          }\n        );\n      } else {\n        if (!hasErrorBeenLogged) {\n          logError(appliedOverride.error);\n          logError(getErrorMessageForOverride(scopeId, nodeId));\n          collectErrorToAnalytics(appliedOverride.error);\n          hasErrorBeenLogged = true;\n        }\n        return /* @__PURE__ */ jsx64(Component17, { ...props, ref });\n      }\n    } else {\n      if (appliedOverride.status === \"success\") {\n        return /* @__PURE__ */ jsx64(appliedOverride.Component, { ...props, ref });\n      } else {\n        throw appliedOverride.error;\n      }\n    }\n  }\n  return React74.forwardRef(CodeBoundaryForOverrides);\n}\nfunction tryToApplyOverride(Component17, override) {\n  try {\n    const ComponentWithOverrides = override(Component17);\n    return { status: \"success\", Component: ComponentWithOverrides };\n  } catch (error) {\n    return { status: \"error\", error };\n  }\n}\n\n// ../../library/src/modules/withStrokeFX.tsx\nimport { forwardRef as forwardRef8, useEffect as useEffect23 } from \"react\";\nimport { jsx as jsx65 } from \"react/jsx-runtime\";\nfunction valueWithMirroring(value, mirror) {\n  return mirror ? wrap(0, 2, value) : value;\n}\nvar withV1StrokeFX = (Component17) => forwardRef8((props, forwardedRef) => {\n  const {\n    strokeEffectLength,\n    strokeEffectGap,\n    strokeEffectOffset,\n    strokeEffectLoop,\n    strokeEffectTotalLength,\n    strokeEffectLoopType,\n    pathLengthTransition,\n    ...restProps\n  } = props;\n  const isCanvas = isStaticRenderer();\n  const offset = useMotionValue(0);\n  const { length, gap } = useConstant(() => ({\n    length: strokeEffectTotalLength * strokeEffectLength,\n    gap: strokeEffectTotalLength * strokeEffectGap\n  }));\n  useEffect23(() => {\n    if (isCanvas) return;\n    const signal = new AbortController();\n    async function loop() {\n      let index = 0;\n      while (true) {\n        if (signal.signal.aborted) break;\n        const mirror = strokeEffectLoopType === \"mirror\";\n        const from = valueWithMirroring(index, mirror);\n        const to = valueWithMirroring(index + 1, mirror);\n        await animate(offset, [from, to], pathLengthTransition);\n        if (!strokeEffectLoop && !mirror) break;\n        if (strokeEffectLoop && strokeEffectLoopType === \"repeat\") continue;\n        index++;\n      }\n    }\n    void loop();\n    return () => {\n      signal.abort();\n    };\n  }, []);\n  const value = useTransform(offset, (v) => {\n    return strokeEffectOffset * strokeEffectTotalLength + (strokeEffectTotalLength - Math.max(v, 1e-3) * strokeEffectTotalLength);\n  });\n  const effect = !isCanvas ? {\n    // These are static values, but they are set via js so that they are ignored\n    // unless in the preview/published site.\n    strokeDasharray: `${length} ${gap}`,\n    strokeDashoffset: value\n  } : void 0;\n  return /* @__PURE__ */ jsx65(Component17, { ...restProps, ...effect, ref: forwardedRef });\n});\n\n// ../../library/src/modules/withMappedReactProps.tsx\nimport { jsx as jsx66 } from \"react/jsx-runtime\";\nfunction extractMappingFromInfo(info) {\n  var _a;\n  const json = (_a = info.__FramerMetadata__.exports.default.annotations) == null ? void 0 : _a.framerVariables;\n  if (!json) return void 0;\n  try {\n    return JSON.parse(json);\n  } catch {\n    return void 0;\n  }\n}\nfunction withMappedReactProps(Component17, info) {\n  return (rawProps) => {\n    const props = {};\n    const mapping = extractMappingFromInfo(info);\n    for (const key7 in rawProps) {\n      asRecord(props)[(mapping == null ? void 0 : mapping[key7]) ?? key7] = rawProps[key7];\n    }\n    return /* @__PURE__ */ jsx66(Component17, { ...props });\n  };\n}\n\n// ../../library/src/modules/withVariantAppearEffect.tsx\nimport React75, { startTransition as startTransition12 } from \"react\";\nimport { jsx as jsx67 } from \"react/jsx-runtime\";\nvar keys = /* @__PURE__ */ new Set([\n  \"visibleVariantId\",\n  \"obscuredVariantId\",\n  \"threshold\",\n  \"animateOnce\",\n  \"variantAppearEffectEnabled\",\n  \"targets\",\n  \"exitTarget\",\n  \"scrollDirection\"\n]);\nvar defaultRanges3 = { inputRange: [], outputRange: [] };\nfunction createInputOutputRanges2(transformTargets, threshold, exitTarget) {\n  const outputRange = [];\n  const inputRange = createTransformInputRange(\n    transformTargets,\n    threshold,\n    (index) => outputRange.unshift(index, index)\n  );\n  if (exitTarget) {\n    const lastInputRange = inputRange[inputRange.length - 1];\n    if (!isNumber(lastInputRange)) return defaultRanges3;\n    inputRange.push(lastInputRange + 1);\n    outputRange.push(-1);\n  }\n  const firstItem = inputRange[0];\n  if (!isNumber(firstItem)) return defaultRanges3;\n  if (firstItem <= 1) return { inputRange, outputRange };\n  return { inputRange: [0, Math.max(firstItem - 1, 0), ...inputRange], outputRange: [-1, -1, ...outputRange] };\n}\nvar withVariantAppearEffect = (Component17) => React75.forwardRef(\n  (props, forwardedRef) => {\n    if (RenderTarget.current() === RenderTarget.canvas) return /* @__PURE__ */ jsx67(Component17, { ...props, ref: forwardedRef });\n    const [options, rest] = extractPrefixedProps(props, keys);\n    const {\n      visibleVariantId,\n      obscuredVariantId,\n      animateOnce,\n      threshold,\n      variantAppearEffectEnabled,\n      targets,\n      exitTarget,\n      scrollDirection\n    } = options;\n    const [activeVariant, setVariant] = React75.useState(obscuredVariantId);\n    const animateState = React75.useRef(false);\n    const observerRef = useObserverRef(forwardedRef);\n    useAppearEffect(\n      observerRef,\n      (appears) => {\n        if (options.targets) return;\n        if (options.scrollDirection) return;\n        if (animateOnce && animateState.current === true) return;\n        if (animateState.current === appears) return;\n        animateState.current = appears;\n        React75.startTransition(() => {\n          setVariant(appears ? visibleVariantId : obscuredVariantId);\n        });\n      },\n      {\n        enabled: variantAppearEffectEnabled,\n        animateOnce,\n        threshold: {\n          y: threshold\n        }\n      }\n    );\n    React75.useEffect(() => {\n      if (scrollDirection) return;\n      if (!targets) return;\n      const playedState = {};\n      let currentVariant = void 0;\n      return scrollInfo(({ y: scrollY }) => {\n        var _a;\n        if (!targets[0] || targets[0].ref && !targets[0].ref.current) return;\n        const { inputRange, outputRange } = createInputOutputRanges2(\n          targets,\n          (threshold ?? 0) * scrollY.containerLength,\n          exitTarget\n        );\n        if (inputRange.length === 0 || inputRange.length !== outputRange.length) return;\n        const index = Math.floor(transform(scrollY.current, inputRange, outputRange));\n        if (animateOnce && playedState[index]) return;\n        playedState[index] = true;\n        const variant = ((_a = targets[index]) == null ? void 0 : _a.target) ?? void 0;\n        if (variant === currentVariant) return;\n        currentVariant = variant;\n        React75.startTransition(() => {\n          setVariant(variant);\n        });\n      });\n    }, [animateOnce, threshold, targets, props.variant, scrollDirection, exitTarget]);\n    useScrollDirectionChange(scrollDirection, (variant) => React75.startTransition(() => setVariant(variant)), {\n      enabled: variantAppearEffectEnabled,\n      repeat: !animateOnce\n    });\n    useOnRouteChange(() => {\n      if (!variantAppearEffectEnabled) return;\n      const useObscuredVariant = !options.targets && !options.scrollDirection;\n      const target = useObscuredVariant ? options.obscuredVariantId : void 0;\n      startTransition12(() => setVariant(target));\n    });\n    if (!(\"variantAppearEffectEnabled\" in options) || variantAppearEffectEnabled === true) {\n      return /* @__PURE__ */ jsx67(Component17, { ...rest, variant: activeVariant ?? props.variant, ref: observerRef });\n    } else {\n      return /* @__PURE__ */ jsx67(Component17, { ...rest });\n    }\n  }\n);\n\n// ../../library/src/modules/withVariantFX.tsx\nimport React76 from \"react\";\nimport { jsx as jsx68 } from \"react/jsx-runtime\";\nvar withVariantFX = (Component17) => React76.forwardRef(\n  ({ initial, animate: animate3, exit, ...props }, forwardedRef) => {\n    const observerRef = useObserverRef(forwardedRef);\n    const effect = usePresenceAnimation(\n      {\n        initial,\n        animate: animate3,\n        exit\n      },\n      observerRef,\n      true\n    );\n    return /* @__PURE__ */ jsx68(Component17, { ...props, style: { ...props == null ? void 0 : props.style, ...effect.values }, ref: observerRef });\n  }\n);\n\n// ../../library/src/render/WindowContext.ts\nimport React77 from \"react\";\nvar WindowContext = /* @__PURE__ */ React77.createContext(\n  void 0\n);\nvar useProvidedWindow = () => React77.useContext(WindowContext);\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/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 fontAliases = {\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 fontFamilies = safeFonts;\n\n// ../../library/src/render/fonts/types.ts\nvar FontSourceNames = /* @__PURE__ */ ((FontSourceNames2) => {\n  FontSourceNames2[\"Google\"] = \"google\";\n  FontSourceNames2[\"Fontshare\"] = \"fontshare\";\n  FontSourceNames2[\"Framer\"] = \"framer\";\n  FontSourceNames2[\"Local\"] = \"local\";\n  FontSourceNames2[\"Custom\"] = \"custom\";\n  FontSourceNames2[\"BuiltIn\"] = \"builtIn\";\n  return FontSourceNames2;\n})(FontSourceNames || {});\nfunction isSuccessfullyParsedFontVariant(variant) {\n  return variant.weight !== void 0 && variant.style !== void 0;\n}\n\n// ../../library/src/render/fonts/LocalFontSource.ts\nvar systemFontFamilyName = \"System Default\";\nvar LocalFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"local\" /* Local */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"fontAliasBySelector\", /* @__PURE__ */ new Map());\n    __publicField(this, \"fontAliases\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  // TODO: these are duplicated across implementations of FontSource\n  // When adding a third source, we should abstract them\n  createFontFamily(family) {\n    const fontFamily = { name: family, fonts: [], source: this.name };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  // end of duplication\n  importFonts() {\n    const fonts = [];\n    for (const family of Object.keys(fontFamilies)) {\n      const members = fontFamilies[family];\n      if (!members) continue;\n      const fontFamily = this.createFontFamily(family);\n      for (const variant of Object.keys(members)) {\n        const member = members[variant];\n        if (!member) continue;\n        const { selector, weight } = member;\n        const font = {\n          variant,\n          selector,\n          weight,\n          family: fontFamily\n        };\n        fontFamily.fonts.push(font);\n      }\n      fonts.push(...fontFamily.fonts);\n    }\n    for (const [key7, value] of Object.entries(fontAliases)) {\n      this.addFontAlias(key7, value);\n    }\n    const { fontFamily: systemFontFamily, aliases } = this.getSystemFontFamily();\n    this.addFontFamily(systemFontFamily);\n    for (const [key7, value] of aliases) {\n      this.addFontAlias(key7, value);\n    }\n    fonts.push(...systemFontFamily.fonts);\n    return fonts;\n  }\n  addFontAlias(key7, value) {\n    this.fontAliases.set(key7, value);\n    this.fontAliasBySelector.set(value, key7);\n  }\n  getSystemFontFamily() {\n    const fontFamilies2 = (\n      // System fonts - Taken from https://furbo.org/stuff/systemfonts-new.html - \"All Platforms\" section\n      \"system-ui|-apple-system|BlinkMacSystemFont|Segoe UI|Roboto|Oxygen|Ubuntu|Cantarell|Fira Sans|Droid Sans|Helvetica Neue|sans-serif\"\n    );\n    const fontFamily = { name: systemFontFamilyName, fonts: [], source: this.name };\n    const aliases = /* @__PURE__ */ new Map();\n    const weights = [400, 100, 200, 300, 500, 600, 700, 800, 900];\n    const styles4 = [\"normal\", \"italic\"];\n    for (const style of styles4) {\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,\n          weight,\n          family: fontFamily\n        };\n        fontFamily.fonts.push(font);\n        aliases.set(alias, fontFamilies2);\n      }\n    }\n    return { fontFamily, aliases };\n  }\n  getFontAliasBySelector(selector) {\n    return this.fontAliasBySelector.get(selector) || null;\n  }\n  getFontSelectorByAlias(alias) {\n    return this.fontAliases.get(alias) || null;\n  }\n  /** Font family aliases are in the format of `__Alias-Name__` */\n  isFontFamilyAlias(value) {\n    if (value && /^__.*__$/u.exec(value)) return true;\n    return false;\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/utils/variableFont.ts\nfunction isVariableFont(font) {\n  return Boolean(font.variationAxes);\n}\nfunction createFontFamilyName(font) {\n  if (isVariableFont(font) && font.family.source !== \"custom\") {\n    return createVariableFontFamilyName(font.family.name);\n  }\n  return font.family.name;\n}\nfunction createVariableFontFamilyName(familyName) {\n  return `${familyName} Variable`;\n}\n\n// ../../library/src/render/fonts/fontUtils.ts\nfunction supportsOpenType(openTypeData) {\n  return Boolean(openTypeData && Array.isArray(openTypeData));\n}\nfunction validateVariationAxes(variationAxesData) {\n  if (!variationAxesData) return;\n  if (!Array.isArray(variationAxesData)) return;\n  const variationAxes = [];\n  for (const axis of variationAxesData) {\n    if (!isVariationAxis(axis)) continue;\n    variationAxes.push({\n      tag: axis.tag,\n      name: axis.name,\n      minValue: axis.minValue,\n      maxValue: axis.maxValue,\n      defaultValue: axis.defaultValue\n    });\n  }\n  return variationAxes;\n}\nfunction isOpenTypeFeature(feature) {\n  if (typeof feature !== \"object\" || feature === null) return false;\n  if (!(\"tag\" in feature) || typeof feature.tag !== \"string\") return false;\n  if (\"coverage\" in feature && typeof feature.coverage !== \"undefined\" && !Array.isArray(feature.coverage)) {\n    return false;\n  }\n  return true;\n}\nfunction isVariationAxis(axis) {\n  if (typeof axis !== \"object\" || axis === null) return false;\n  if (!(\"tag\" in axis) || typeof axis.tag !== \"string\") return false;\n  if (\"name\" in axis && typeof axis.name !== \"string\") return false;\n  if (!(\"minValue\" in axis) || typeof axis.minValue !== \"number\") return false;\n  if (!(\"maxValue\" in axis) || typeof axis.maxValue !== \"number\") return false;\n  if (!(\"defaultValue\" in axis) || typeof axis.defaultValue !== \"number\") {\n    return false;\n  }\n  return true;\n}\n\n// ../../library/src/render/fonts/BuiltInFontSource.ts\nvar builtInFontSelectorPrefix = \"BI;\";\nvar BuiltInFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"builtIn\" /* BuiltIn */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"assetsByFamily\", /* @__PURE__ */ new Map());\n  }\n  importFonts(assets) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    for (const asset of assets) {\n      if (!this.isValidBuiltInFont(asset)) continue;\n      const { properties } = asset;\n      const fontName = properties.font.preferredFamily || properties.font.fontFamily;\n      const fontFamily = this.createFontFamily(\n        fontName,\n        properties.font.foundryName,\n        properties.font.fontVersion\n      );\n      const openTypeData = properties.font.openTypeData;\n      const variationAxesData = properties.font.variationAxes;\n      const isVariableFont2 = Array.isArray(variationAxesData);\n      const variant = isVariableFont2 ? \"variable\" : properties.font.preferredSubFamily || properties.font.fontSubFamily || \"regular\";\n      const font = {\n        family: fontFamily,\n        selector: this.createSelector(fontName, variant, properties.font.fontVersion),\n        variant,\n        file: asset.url,\n        hasOpenTypeFeatures: supportsOpenType(openTypeData),\n        variationAxes: validateVariationAxes(variationAxesData),\n        category: properties.font.fontCategory,\n        weight: variantNameToWeight(variant),\n        style: getFontStyle(variant)\n      };\n      fontFamily.fonts.push(font);\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(font);\n    }\n    for (const fontFamily of this.fontFamilies) {\n      fontFamily.fonts.sort((a, b) => {\n        const weightA = variantNameToWeight(a.variant);\n        const weightB = variantNameToWeight(b.variant);\n        if (!weightA || !weightB) return 1;\n        return weightA - weightB;\n      });\n    }\n    return fonts;\n  }\n  static parseVariant(variant) {\n    const kebabCaseVariant = variantToKebabCase(variant);\n    const weight = variantsNameToWeight[kebabCaseVariant];\n    const style = getFontStyle(variant);\n    return { weight, style };\n  }\n  getFontBySelector(selector, createFont = true) {\n    const locator = this.parseSelector(selector);\n    if (!locator) return;\n    if (!createFont && !this.byFamilyName.get(locator.name)) return;\n    const fontFamily = this.getFontFamilyByName(locator.name);\n    if (!fontFamily) return;\n    return fontFamily.fonts.find((f) => f.selector === selector);\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  createFontFamily(family, foundryName, version2) {\n    const existingFontFamily = this.byFamilyName.get(family);\n    if (existingFontFamily && existingFontFamily.version === version2) return existingFontFamily;\n    const fontFamily = {\n      source: this.name,\n      name: family,\n      fonts: [],\n      foundryName,\n      version: version2\n    };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  getOpenTypeFeatures(family) {\n    var _a, _b;\n    const assets = this.assetsByFamily.get(family);\n    const openTypeData = (_b = (_a = assets == null ? void 0 : assets.properties) == null ? void 0 : _a.font) == null ? void 0 : _b.openTypeData;\n    if (!supportsOpenType(openTypeData)) return [];\n    return openTypeData == null ? void 0 : openTypeData.map((feature) => {\n      if (!isOpenTypeFeature(feature)) return;\n      return { tag: feature.tag, coverage: feature.coverage };\n    });\n  }\n  isValidBuiltInFont(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\")) return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\") return false;\n    if (!asset.properties.font) return false;\n    if (!asset.properties.font.fontVersion) return false;\n    if (!asset.properties.font.fontFamily) return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  createSelector(family, variant, version2) {\n    return `${builtInFontSelectorPrefix}${family}/${variant}/${version2}`;\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(builtInFontSelectorPrefix)) return null;\n    const [_, selectorWithoutPrefix] = selector.split(builtInFontSelectorPrefix);\n    if (selectorWithoutPrefix === void 0) return null;\n    const [name, variant, version2] = selectorWithoutPrefix.split(\"/\");\n    if (!name || !variant || !version2) return null;\n    return {\n      name,\n      variant,\n      source: this.name,\n      isVariable: variant.toLowerCase().includes(\"variable\")\n    };\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n};\nvar variantsNameToWeight = {\n  ultralight: 100,\n  \"ultralight-italic\": 100,\n  thin: 200,\n  \"thin-italic\": 200,\n  demi: 200,\n  light: 300,\n  \"light-italic\": 300,\n  normal: 350,\n  base: 400,\n  regular: 400,\n  classic: 400,\n  \"regular-slanted\": 400,\n  italic: 400,\n  oblique: 400,\n  dense: 400,\n  brukt: 300,\n  book: 400,\n  \"book-italic\": 400,\n  text: 400,\n  \"text-italic\": 400,\n  medium: 500,\n  solid: 500,\n  \"medium-oblique\": 500,\n  \"medium-italic\": 500,\n  mittel: 500,\n  semibold: 600,\n  \"semibold-italic\": 600,\n  bold: 700,\n  \"bold-italic\": 700,\n  \"bold-oblique\": 700,\n  fett: 700,\n  ultrabold: 800,\n  \"ultrabold-italic\": 800,\n  extrabold: 800,\n  \"extrabold-italic\": 800,\n  black: 900,\n  \"black-italic\": 900,\n  \"extra-italic\": 900,\n  \"extra-italic-bold\": 900,\n  satt: 900,\n  heavy: 900,\n  \"heavy-italic\": 900,\n  // The following variants are only used in the FT88 font. These are not really weights, but more font styles (gothique, cursive, etc.).\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  serif: 100,\n  school: 200,\n  expanded: 300,\n  gothique: 500,\n  // The following variants are only used in the ARK_ES font.\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  // The order is important because we want to group all the light together and solid together.\n  \"dense-light\": 200,\n  \"dense-regular\": 300,\n  \"dense-medium\": 400,\n  \"dense-bold\": 500,\n  \"solid-light\": 600,\n  \"solid-regular\": 700,\n  \"solid-medium\": 800,\n  \"solid-bold\": 900,\n  // The following variants are only used in the Tecnica font.\n  // We assign them different (fake) weights to ensure that the changes are picked up when switching between variants.\n  \"53\": 400,\n  \"55\": 600,\n  // we want to put variable fonts last\n  variable: 1e3,\n  \"variable-italic\": 1e3\n};\nfunction variantNameToWeight(variant) {\n  const kebabCaseVariant = variantToKebabCase(variant);\n  return variantsNameToWeight[kebabCaseVariant];\n}\nfunction variantToKebabCase(variant) {\n  return variant.toLowerCase().replace(/\\s+/gu, \"-\");\n}\nfunction getFontStyle(variant) {\n  variant = variant.toLowerCase();\n  if (variant.includes(\"italic\") || variant.includes(\"oblique\") || variant.includes(\"slanted\")) return \"italic\";\n  return \"normal\";\n}\n\n// ../../library/src/render/fonts/CustomFontSource.ts\nvar customFontSelectorPrefix = \"CUSTOM;\";\nfunction getCustomFontName(fileName, properties) {\n  if (!properties) return fileName.substring(0, fileName.lastIndexOf(\".\"));\n  const { font } = properties;\n  const fontFamily = font.preferredFamily || font.fontFamily;\n  const isAssetVariableFont = Array.isArray(font.variationAxes);\n  if (isAssetVariableFont && fontFamily.toLowerCase().includes(\"variable\")) return fontFamily;\n  const variant = isAssetVariableFont ? \"Variable\" : (font.preferredSubFamily || font.fontSubFamily).trim();\n  if (variant === \"\") return fontFamily;\n  return `${fontFamily} ${variant}`;\n}\nvar CustomFontSource = class {\n  constructor() {\n    __publicField(this, \"name\", \"custom\" /* Custom */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n    __publicField(this, \"assetsByFamily\", /* @__PURE__ */ new Map());\n  }\n  importFonts(assets) {\n    var _a, _b, _c;\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    for (const asset of assets) {\n      if (!this.isValidCustomFontAsset(asset)) {\n        continue;\n      }\n      const variationAxesData = (_a = asset.properties) == null ? void 0 : _a.font.variationAxes;\n      const isVariableFont2 = Array.isArray(variationAxesData);\n      const fontName = getCustomFontName(asset.name, asset.properties);\n      const fontFamily = this.createFontFamily(fontName);\n      const openTypeData = (_b = asset.properties) == null ? void 0 : _b.font.openTypeData;\n      const variant = isVariableFont2 ? \"variable\" : this.inferVariantName(fontName);\n      const font = {\n        family: fontFamily,\n        selector: `${customFontSelectorPrefix}${fontName}`,\n        variant,\n        postscriptName: (_c = asset.properties) == null ? void 0 : _c.font.postscriptName,\n        file: asset.url,\n        hasOpenTypeFeatures: supportsOpenType(openTypeData),\n        variationAxes: validateVariationAxes(variationAxesData)\n      };\n      fontFamily.fonts.push(font);\n      fontFamily.owner = asset.ownerType === \"team\" ? \"team\" : \"project\";\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(...fontFamily.fonts);\n    }\n    return fonts;\n  }\n  isValidCustomFontAsset(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\")) return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\") return false;\n    if (!asset.properties.font) return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  getOpenTypeFeatures(family) {\n    var _a, _b;\n    const assets = this.assetsByFamily.get(family);\n    const openTypeData = (_b = (_a = assets == null ? void 0 : assets.properties) == null ? void 0 : _a.font) == null ? void 0 : _b.openTypeData;\n    if (!supportsOpenType(openTypeData)) return [];\n    return openTypeData == null ? void 0 : openTypeData.map((feature) => {\n      if (!isOpenTypeFeature(feature)) return;\n      return { tag: feature.tag, coverage: feature.coverage };\n    });\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+/gu, \"\"))\n    );\n    if (foundToken) return foundToken.replace(/^\\w|\\s\\w/gu, (char) => char.toUpperCase());\n    return \"Regular\";\n  }\n  createFontFamily(family) {\n    const existingFontFamily = this.byFamilyName.get(family);\n    if (existingFontFamily) return existingFontFamily;\n    const fontFamily = {\n      source: this.name,\n      name: family,\n      fonts: []\n    };\n    this.addFontFamily(fontFamily);\n    return fontFamily;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(customFontSelectorPrefix)) return null;\n    const tokens = selector.split(customFontSelectorPrefix);\n    if (tokens[1] === void 0) return null;\n    const locator = { source: \"custom\", name: tokens[1] };\n    return locator;\n  }\n  getFontBySelector(selector, createFont = true) {\n    const locator = this.parseSelector(selector);\n    if (!locator) return;\n    if (!createFont && !this.byFamilyName.get(locator.name)) return;\n    const fonts = this.getFontFamilyByName(locator.name).fonts;\n    const woff2Font = fonts.find((font) => {\n      var _a;\n      return (_a = font.file) == null ? void 0 : _a.endsWith(\".woff2\");\n    });\n    return woff2Font || fonts[0];\n  }\n  getFontFamilyByName(family) {\n    const foundFontFamily = this.byFamilyName.get(family);\n    if (foundFontFamily) return foundFontFamily;\n    const fontFamily = {\n      source: \"custom\",\n      name: family,\n      fonts: []\n    };\n    fontFamily.fonts.push({\n      selector: `${customFontSelectorPrefix}${family}`,\n      variant: this.inferVariantName(family),\n      family: fontFamily\n    });\n    return fontFamily;\n  }\n};\n\n// ../../library/src/render/fonts/getRelatedFontVariants.ts\nfunction getRelatedFontVariants(currentVariant, availableVariants) {\n  return {\n    ...pickBoldItalicVariants(currentVariant, availableVariants),\n    ...pickVariableVariants(currentVariant, availableVariants)\n  };\n}\nfunction pickBoldItalicVariants(currentVariant, availableVariants) {\n  if (availableVariants.length === 0) {\n    return {\n      variantBold: void 0,\n      variantBoldItalic: void 0,\n      variantItalic: void 0\n    };\n  }\n  const { weight: currentWeight, style: currentStyle } = currentVariant;\n  const variantByWeightAndStyle = /* @__PURE__ */ new Map();\n  const boldVariantByStyle = /* @__PURE__ */ new Map();\n  for (const variant of availableVariants) {\n    if (variant.isVariable !== currentVariant.isVariable) continue;\n    variantByWeightAndStyle.set(`${variant.weight}-${variant.style}`, variant);\n    if (variant.weight <= currentWeight) continue;\n    if (!boldVariantByStyle.has(variant.style)) {\n      boldVariantByStyle.set(variant.style, variant);\n    }\n  }\n  let variantBold = boldVariantByStyle.get(currentStyle);\n  let variantBoldItalic = boldVariantByStyle.get(\"italic\");\n  const currentVariantWeight = currentVariant.weight;\n  if (currentVariantWeight <= 300) {\n    variantBold = variantByWeightAndStyle.get(`400-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"400-italic\") ?? variantBoldItalic;\n  } else if (currentVariantWeight <= 500) {\n    variantBold = variantByWeightAndStyle.get(`700-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"700-italic\") ?? variantBoldItalic;\n  } else {\n    variantBold = variantByWeightAndStyle.get(`900-${currentStyle}`) ?? variantBold;\n    variantBoldItalic = variantByWeightAndStyle.get(\"900-italic\") ?? variantBoldItalic;\n  }\n  const variantItalic = variantByWeightAndStyle.get(`${currentWeight}-italic`);\n  return { variantBold, variantItalic, variantBoldItalic };\n}\nfunction pickVariableVariants(currentVariant, availableVariants) {\n  if (availableVariants.length === 0) return { variantVariable: void 0, variantVariableItalic: void 0 };\n  const variantByWeightAndStyle = /* @__PURE__ */ new Map();\n  for (const variant of availableVariants) {\n    if (!variant.isVariable) continue;\n    variantByWeightAndStyle.set(`${variant.weight}-${variant.style}`, variant);\n  }\n  return {\n    variantVariable: variantByWeightAndStyle.get(`${currentVariant.weight}-normal`) ?? variantByWeightAndStyle.get(`400-normal`) ?? void 0,\n    variantVariableItalic: variantByWeightAndStyle.get(`${currentVariant.weight}-italic`) ?? variantByWeightAndStyle.get(`400-italic`) ?? void 0\n  };\n}\n\n// ../../library/src/render/fonts/loadOpenType.ts\nasync function loadFontsWithOpenType(source) {\n  switch (source) {\n    case \"google\": {\n      const supportedFonts = await import(\"./google-LHIHIYDX.mjs\");\n      return supportedFonts == null ? void 0 : supportedFonts.default;\n    }\n    case \"fontshare\": {\n      const supportedFonts = await import(\"./fontshare-G3KSKQMF.mjs\");\n      return supportedFonts == null ? void 0 : supportedFonts.default;\n    }\n    default:\n      throw new Error(`Unknown font source: ${source}`);\n  }\n}\nasync function loadFontToOpenTypeFeatures(source) {\n  switch (source) {\n    case \"google\": {\n      const features = await import(\"./google-3GQMHAEU.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    case \"fontshare\": {\n      const features = await import(\"./fontshare-PSV545VO.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    case \"framer\": {\n      const features = await import(\"./framer-font-TNC5DMGA.mjs\");\n      return features == null ? void 0 : features.default;\n    }\n    default:\n      throw new Error(`Unknown font source: ${source}`);\n  }\n}\n\n// ../../library/src/render/fonts/parseFontshareCategories.ts\nvar knownFontshareCategories = [\"display\", \"sans\", \"serif\", \"slab\", \"handwritten\", \"script\"];\nfunction parseFontshareCategories(categoriesField) {\n  return categoriesField.split(\",\").map((category) => category.trim().toLowerCase()).filter(isKnownFontshareCategory);\n}\nfunction isKnownFontshareCategory(category) {\n  return knownFontshareCategories.includes(category);\n}\n\n// ../../library/src/render/fonts/FontshareSource.ts\nvar fontsharePrefix = \"FS;\";\nvar weightNameToNumber = {\n  thin: 100,\n  hairline: 100,\n  // Alternative name for \"thin\".\n  extralight: 200,\n  light: 300,\n  regular: 400,\n  medium: 500,\n  semibold: 600,\n  bold: 700,\n  extrabold: 800,\n  ultra: 800,\n  // Alternative name for \"extrabold\".\n  black: 900,\n  heavy: 900\n  // Alternative name for \"black\".\n};\nvar weightNames = /* @__PURE__ */ Object.keys(weightNameToNumber);\nvar allowedVariantsRegex = /* @__PURE__ */ (() => new RegExp(`^(?:${[...weightNames, \"italic\", \"variable\"].join(\"|\")})`, \"u\"))();\nvar FontshareSource = class _FontshareSource {\n  constructor() {\n    __publicField(this, \"name\", \"fontshare\" /* Fontshare */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  /**\n   * Parses variant a string into a weight number and style, defaulting to a\n   * weight of `400` and/or a style of `\"normal\"` depending on what isn't\n   * present in the variant string.\n   *\n   * E.g:\n   *   - `\"Bold\"` becomes `{ weight: 700, style: \"normal\" }`\n   *   - `\"Bold Italic\"` becomes `{ weight: 700, style: \"italic\" }`\n   *   - `\"Italic\"` becomes `{ weight: 400, style: \"italic\" }`\n   *   - `\"Variable Italic\"` becomes `{ weight: 400, style: \"italic\" }`\n   */\n  static parseVariant(variant) {\n    const variantSplit = variant.toLowerCase().split(\" \");\n    const weightName = weightNames.find((weightName2) => {\n      return variantSplit.includes(weightName2);\n    });\n    const styleName = variant.toLowerCase().includes(\"italic\") ? \"italic\" : \"normal\";\n    const weight = weightName && weightNameToNumber[weightName] || 400;\n    const style = styleName === \"italic\" ? styleName : \"normal\";\n    return { weight, style };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(fontsharePrefix)) return null;\n    const tokens = selector.split(\"-\");\n    if (tokens.length !== 2) return null;\n    const [family, variant] = tokens;\n    if (!family || !variant) return null;\n    return {\n      name: family.replace(fontsharePrefix, \"\"),\n      variant,\n      source: this.name,\n      isVariable: variant.toLowerCase().includes(\"variable\")\n    };\n  }\n  static createSelector(family, variant) {\n    return `${fontsharePrefix}${family}-${variant.toLowerCase()}`;\n  }\n  /**\n   * We are using this selector to get Open Type features and variable fonts variation axes.\n   * CAUTION: This method has to be exactly the same as the one in font-metadata-extractor tool.\n   * https://github.com/framer/FramerStudio/blob/master/tools/font-metadata-extractor/src/utils/fontShare.ts\n   */\n  static createMetadataSelector(family) {\n    return `${fontsharePrefix}${family}`;\n  }\n  addFontFamily(fontFamily) {\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n  }\n  async importFonts(fontshareFonts, variationAxesData) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fontsWithOpenType = await loadFontsWithOpenType(\"fontshare\" /* Fontshare */);\n    const fonts = [];\n    for (const fontshareFont of fontshareFonts) {\n      const fontStyles = fontshareFont.font_styles.filter((fontStyle) => {\n        const variant = fontStyle.name.toLowerCase();\n        const allowedVariantMatch = allowedVariantsRegex.exec(variant);\n        if (!allowedVariantMatch || variant.split(\" \").includes(\"wide\")) {\n          return false;\n        }\n        return true;\n      });\n      const fontVariants = fontStyles.map((fontStyle) => {\n        const variantInfo = _FontshareSource.parseVariant(fontStyle.name);\n        return {\n          ...variantInfo,\n          selector: _FontshareSource.createSelector(fontshareFont.name, fontStyle.name),\n          isVariable: fontStyle.is_variable,\n          fontshareVariantName: fontStyle.name,\n          file: fontStyle.file\n        };\n      });\n      const key7 = _FontshareSource.createMetadataSelector(fontshareFont.name);\n      const variationAxes = variationAxesData == null ? void 0 : variationAxesData[key7];\n      const familyName = fontshareFont.name;\n      let fontFamily = this.getFontFamilyByName(familyName);\n      if (!fontFamily) {\n        fontFamily = { name: familyName, fonts: [], source: this.name };\n        this.addFontFamily(fontFamily);\n      }\n      const fontMetadataSelector = _FontshareSource.createMetadataSelector(fontshareFont.name);\n      const hasOpenTypeFeatures = fontsWithOpenType[fontMetadataSelector];\n      for (const fontVariant of fontVariants) {\n        const { variantBold, variantBoldItalic, variantItalic, variantVariable, variantVariableItalic } = getRelatedFontVariants(fontVariant, fontVariants);\n        const font = {\n          family: fontFamily,\n          variant: fontVariant.fontshareVariantName.toLowerCase(),\n          selector: fontVariant.selector,\n          selectorBold: variantBold == null ? void 0 : variantBold.selector,\n          selectorBoldItalic: variantBoldItalic == null ? void 0 : variantBoldItalic.selector,\n          selectorItalic: variantItalic == null ? void 0 : variantItalic.selector,\n          selectorVariable: variantVariable == null ? void 0 : variantVariable.selector,\n          selectorVariableItalic: variantVariableItalic == null ? void 0 : variantVariableItalic.selector,\n          weight: fontVariant.weight,\n          style: fontVariant.style,\n          file: fontVariant.file,\n          category: mapToKnownCategory(fontshareFont.category),\n          hasOpenTypeFeatures,\n          variationAxes: fontVariant.isVariable ? variationAxes : void 0\n        };\n        fontFamily.fonts.push(font);\n        fonts.push(font);\n      }\n    }\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"fontshare\" /* Fontshare */);\n    const selector = _FontshareSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\nfunction mapToKnownCategory(categoryString) {\n  const categoryMapping = {\n    serif: \"serif\",\n    sans: \"sans-serif\",\n    slab: \"slab\",\n    display: \"display\",\n    // As of Nov 2023, these two look similar enough \u2013 so we can map them into the same category.\n    handwritten: \"handwriting\",\n    script: \"handwriting\"\n  };\n  const category = parseFontshareCategories(categoryString)[0];\n  return category && categoryMapping[category];\n}\n\n// ../../library/src/render/fonts/FramerFontSource.ts\nvar framerInterFontPrefix = \"Inter\";\nvar framerFontPrefix = \"FR;\";\nvar weightNameToNumber2 = {\n  Thin: 100,\n  ExtraLight: 200,\n  Light: 300,\n  \"\": 400,\n  // Regular weights have a selector like \"Inter\" or \"Inter-Italic\", with no mention of weight.\n  Medium: 500,\n  SemiBold: 600,\n  Bold: 700,\n  ExtraBold: 800,\n  Black: 900\n};\nvar FramerFontSource = class _FramerFontSource {\n  constructor() {\n    __publicField(this, \"name\", \"framer\" /* Framer */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  addFontFamily(familyName) {\n    const fontFamily = { name: familyName, fonts: [], source: this.name };\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n    return fontFamily;\n  }\n  static getDraftFontPropertiesBySelector(selector) {\n    if (!selector.startsWith(framerFontPrefix) && !selector.startsWith(framerInterFontPrefix)) return null;\n    const tokens = selector.split(\"-\");\n    const [family, weightAndStyleInfo = \"\"] = tokens;\n    if (!family) return null;\n    const style = weightAndStyleInfo.includes(\"Italic\") ? \"italic\" : \"normal\";\n    const weightName = weightAndStyleInfo.replace(\"Italic\", \"\");\n    const weight = weightName && weightNameToNumber2[weightName] || 400;\n    return {\n      family,\n      style,\n      weight,\n      source: \"framer\" /* Framer */,\n      variant: void 0,\n      category: \"sans-serif\"\n    };\n  }\n  static createMetadataSelector(family) {\n    return `${framerFontPrefix}${family}`;\n  }\n  importFonts(framerFonts, variationAxesData) {\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fonts = [];\n    framerFonts.forEach((framerFont) => {\n      const { familyName, ...rest } = framerFont;\n      const key7 = _FramerFontSource.createMetadataSelector(framerFont.familyName);\n      const variationAxes = variationAxesData == null ? void 0 : variationAxesData[key7];\n      let fontFamily = this.getFontFamilyByName(familyName);\n      if (!fontFamily) {\n        fontFamily = this.addFontFamily(familyName);\n      }\n      const isVariable = framerFont.selector === framerFont.selectorVariable || framerFont.selector === framerFont.selectorVariableItalic;\n      const font = {\n        ...rest,\n        family: fontFamily,\n        variationAxes: isVariable ? variationAxes : void 0\n      };\n      fontFamily.fonts.push(font);\n      fonts.push(font);\n    });\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"framer\" /* Framer */);\n    const selector = _FramerFontSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\n\n// ../../library/src/render/fonts/GoogleFontSource.ts\nvar googleFontSelectorPrefix = \"GF;\";\nvar GoogleFontSource = class _GoogleFontSource {\n  constructor() {\n    __publicField(this, \"name\", \"google\" /* Google */);\n    __publicField(this, \"fontFamilies\", []);\n    __publicField(this, \"byFamilyName\", /* @__PURE__ */ new Map());\n  }\n  getFontFamilyByName(family) {\n    return this.byFamilyName.get(family) ?? null;\n  }\n  static parseVariant(variant) {\n    if (variant === \"regular\") return { style: \"normal\", weight: 400 };\n    const match = /(\\d*)(normal|italic)?/u.exec(variant);\n    if (!match) return {};\n    const weight = parseInt(match[1] || \"400\");\n    const style = match[2] === \"italic\" ? \"italic\" : \"normal\";\n    return { weight, style };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(googleFontSelectorPrefix)) return null;\n    const isVariable = selector.includes(\"-variable-\");\n    const tokens = isVariable ? selector.split(\"-variable-\") : selector.split(\"-\");\n    if (tokens.length !== 2) return null;\n    const [family, variant] = tokens;\n    if (!family || !variant) return null;\n    return { name: family.replace(googleFontSelectorPrefix, \"\"), variant, source: this.name, isVariable };\n  }\n  static createSelector(family, variant, isVariableFont2) {\n    return `${googleFontSelectorPrefix}${family}-${isVariableFont2 ? \"variable-\" : \"\"}${variant}`;\n  }\n  /**\n   * We are using this selector to get Open Type features and variable fonts variation axes.\n   * CAUTION: This method has to be exactly the same as the one in font-metadata-extractor tool.\n   * https://github.com/framer/FramerStudio/blob/master/tools/font-metadata-extractor/src/utils/googleFonts.ts\n   */\n  static createMetadataSelector(family) {\n    return `${googleFontSelectorPrefix}${family}`;\n  }\n  addFontFamily(family) {\n    const fontFamily = { name: family, fonts: [], source: this.name };\n    this.fontFamilies.push(fontFamily);\n    this.byFamilyName.set(fontFamily.name, fontFamily);\n    return fontFamily;\n  }\n  async importFonts(webFonts, webFontsWithAxes, fontsToVariationAxes) {\n    var _a;\n    this.fontFamilies.length = 0;\n    this.byFamilyName.clear();\n    const fontsWithOpenType = await loadFontsWithOpenType(\"google\" /* Google */);\n    const fonts = [];\n    const webFontsMap = mapBy(webFonts, (webFont) => webFont.family);\n    const webFontsWithAxesMap = mapBy(webFontsWithAxes, (webFont) => webFont.family);\n    for (const webFontName in webFontsMap) {\n      const webFont = webFontsMap[webFontName];\n      if (!webFont) continue;\n      let fontFamily = this.getFontFamilyByName(webFont.family);\n      if (!fontFamily) {\n        fontFamily = this.addFontFamily(webFont.family);\n      }\n      const rawStaticVariants = webFont.variants;\n      const staticVariants = rawStaticVariants.map((variantName) => {\n        const parsedVariant = _GoogleFontSource.parseVariant(variantName);\n        return {\n          ...parsedVariant,\n          googleFontsVariantName: variantName,\n          selector: _GoogleFontSource.createSelector(webFontName, variantName, false),\n          isVariable: false,\n          file: webFont.files[variantName]\n        };\n      });\n      const variableFont = webFontsWithAxesMap[webFontName];\n      const variableVariants = (variableFont == null ? void 0 : variableFont.axes) ? variableFont.variants.map((variantName) => {\n        const parsedVariant = _GoogleFontSource.parseVariant(variantName);\n        return {\n          ...parsedVariant,\n          googleFontsVariantName: variantName,\n          selector: _GoogleFontSource.createSelector(webFontName, variantName, true),\n          isVariable: true,\n          file: variableFont.files[variantName]\n        };\n      }) : [];\n      const key7 = _GoogleFontSource.createMetadataSelector(webFont.family);\n      const variationAxes = fontsToVariationAxes == null ? void 0 : fontsToVariationAxes[key7];\n      const allVariants = [...staticVariants, ...variableVariants];\n      const allSuccessfullyParsedVariants = allVariants.filter(isSuccessfullyParsedFontVariant);\n      const fontMetadataSelector = _GoogleFontSource.createMetadataSelector(webFontName);\n      const hasOpenTypeFeatures = fontsWithOpenType[fontMetadataSelector];\n      for (const variant of allVariants) {\n        const { weight, style, selector, googleFontsVariantName } = variant;\n        const linkedVariants = isSuccessfullyParsedFontVariant(variant) ? getRelatedFontVariants(variant, allSuccessfullyParsedVariants) : void 0;\n        const { variantBold, variantItalic, variantBoldItalic, variantVariable, variantVariableItalic } = linkedVariants ?? {};\n        const font = {\n          family: fontFamily,\n          variant: googleFontsVariantName,\n          selector,\n          selectorBold: variantBold == null ? void 0 : variantBold.selector,\n          selectorBoldItalic: variantBoldItalic == null ? void 0 : variantBoldItalic.selector,\n          selectorItalic: variantItalic == null ? void 0 : variantItalic.selector,\n          selectorVariable: variantVariable == null ? void 0 : variantVariable.selector,\n          selectorVariableItalic: variantVariableItalic == null ? void 0 : variantVariableItalic.selector,\n          weight,\n          style,\n          category: mapToKnownCategory2(webFont.category),\n          file: (_a = variant.file) == null ? void 0 : _a.replace(\"http://\", \"https://\"),\n          variationAxes: variant.isVariable ? variationAxes : void 0,\n          hasOpenTypeFeatures\n        };\n        fontFamily.fonts.push(font);\n        fonts.push(font);\n      }\n    }\n    return fonts;\n  }\n  async getOpenTypeFeatures(family) {\n    const fontToOpenTypeFeatures = await loadFontToOpenTypeFeatures(\"google\" /* Google */);\n    const selector = _GoogleFontSource.createMetadataSelector(family);\n    return fontToOpenTypeFeatures[selector];\n  }\n};\nfunction mapToKnownCategory2(category) {\n  const categoryMapping = {\n    serif: \"serif\",\n    \"sans-serif\": \"sans-serif\",\n    display: \"display\",\n    handwriting: \"handwriting\",\n    monospace: \"monospace\"\n  };\n  if (!category) return void 0;\n  return categoryMapping[category];\n}\nfunction mapBy(array, keyFn) {\n  return array.reduce(\n    (acc, item) => {\n      acc[keyFn(item)] = item;\n      return acc;\n    },\n    {}\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, stretch, unicodeRange, isVariableFont: isVariableFont2 } = data2;\n  const weight = isVariableFont2 ? data2.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: isString(weight) ? weight : weight == null ? void 0 : weight.toString(),\n      style,\n      stretch,\n      unicodeRange\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          stretch,\n          unicodeRange\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/static/variable-fonts/framer.json\nvar framer_default = { \"FR;Inter\": [{ tag: \"opsz\", minValue: 14, maxValue: 32, defaultValue: 14, name: \"Optical size\" }, { tag: \"wght\", minValue: 100, maxValue: 900, defaultValue: 400, name: \"Weight\" }] };\n\n// ../../library/src/render/fonts/loadVariationAxes.ts\nfunction loadVariationAxes(source) {\n  try {\n    if (source === \"framer\" /* Framer */) {\n      if (!isValidVariationAxesData(framer_default)) return void 0;\n      return framer_default;\n    } else {\n      const axes = (async () => {\n        switch (source) {\n          case \"google\" /* Google */: {\n            return (await import(\"./google-LMM7WH6E.mjs\")).default;\n          }\n          case \"fontshare\" /* Fontshare */: {\n            return (await import(\"./fontshare-YYTAVKI7.mjs\")).default;\n          }\n          default:\n            assertNever(source);\n        }\n      })();\n      if (!isValidVariationAxesData(axes)) return void 0;\n      return axes;\n    }\n  } catch (error) {\n    console.error(error);\n    return void 0;\n  }\n}\nfunction isValidVariationAxesData(data2) {\n  return isObject2(data2) && Object.values(data2).every(isValidVariationAxes);\n}\nfunction isVariationAxis2(data2) {\n  return isObject2(data2) && isString(data2.tag);\n}\nfunction isValidVariationAxes(data2) {\n  return Array.isArray(data2) && data2.every(isVariationAxis2);\n}\n\n// ../../library/src/render/fonts/fontStore.ts\nvar FontStore = class {\n  constructor() {\n    /**\n     * Enabling the `FontStore` will make Text components automatically load\n     * their fonts on render. Otherwise font loading is the responsibility of\n     * the environment.\n     */\n    __publicField(this, \"enabled\", false);\n    __publicField(this, \"bySelector\", /* @__PURE__ */ new Map());\n    __publicField(this, \"loadedSelectors\", /* @__PURE__ */ new Set());\n    __publicField(this, \"getGoogleFontsListPromise\");\n    __publicField(this, \"getFontshareFontsListPromise\");\n    __publicField(this, \"getBuiltInFontsListPromise\");\n    __publicField(this, \"customFontsImportPromise\", new Promise((resolve) => {\n      this.resolveCustomFontsImportPromise = resolve;\n    }));\n    __publicField(this, \"local\");\n    __publicField(this, \"google\");\n    __publicField(this, \"fontshare\");\n    __publicField(this, \"builtIn\");\n    __publicField(this, \"framer\");\n    __publicField(this, \"custom\");\n    this.local = new LocalFontSource();\n    this.google = new GoogleFontSource();\n    this.fontshare = new FontshareSource();\n    this.framer = new FramerFontSource();\n    this.custom = new CustomFontSource();\n    this.builtIn = new BuiltInFontSource();\n    this.bySelector = /* @__PURE__ */ new Map();\n    this.importLocalFonts();\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    for (const font of this.local.importFonts()) {\n      this.addFont(font);\n      this.loadFont(font);\n    }\n  }\n  async importGoogleFonts() {\n    if (!this.getGoogleFontsListPromise) {\n      this.getGoogleFontsListPromise = Promise.resolve().then(async () => {\n        const { staticFonts, variableFonts } = await runtime.fetchGoogleFontsList();\n        const axesData = await loadVariationAxes(\"google\" /* Google */);\n        for (const font of await this.google.importFonts(staticFonts, variableFonts, axesData)) {\n          this.addFont(font);\n        }\n        return { staticFonts, variableFonts };\n      });\n    }\n    return this.getGoogleFontsListPromise;\n  }\n  async importFontshareFonts() {\n    if (!this.getFontshareFontsListPromise) {\n      this.getFontshareFontsListPromise = runtime.fetchFontshareFontsList();\n      const fontshareFonts = await this.getFontshareFontsListPromise;\n      const axesData = await loadVariationAxes(\"fontshare\" /* Fontshare */);\n      for (const font of await this.fontshare.importFonts(fontshareFonts, axesData)) {\n        this.addFont(font);\n      }\n    }\n    return this.getFontshareFontsListPromise;\n  }\n  async importBuiltInFonts() {\n    if (!this.getBuiltInFontsListPromise) {\n      this.getBuiltInFontsListPromise = runtime.fetchBuiltInFontsList();\n      const builtInFonts = await this.getBuiltInFontsListPromise;\n      for (const font of await this.builtIn.importFonts(builtInFonts)) {\n        this.addFont(font);\n      }\n    }\n    return this.getBuiltInFontsListPromise;\n  }\n  importFramerFonts(fonts) {\n    const axesData = loadVariationAxes(\"framer\" /* Framer */);\n    this.framer.importFonts(fonts, axesData).forEach((font) => {\n      this.addFont(font);\n    });\n  }\n  importCustomFonts(assets) {\n    this.bySelector.forEach((_, key7) => {\n      if (key7.startsWith(customFontSelectorPrefix)) {\n        this.bySelector.delete(key7);\n      }\n    });\n    const importedFonts = this.custom.importFonts(assets);\n    for (const font of importedFonts) {\n      this.addFont(font);\n    }\n    if (importedFonts.length > 0) {\n      this.resolveCustomFontsImportPromise();\n    }\n  }\n  getFontFamily(info) {\n    const fontFamily = this[info.source].getFontFamilyByName(info.name);\n    return fontFamily;\n  }\n  getFontBySelector(selector, createFont = true) {\n    if (!selector) return void 0;\n    if (selector.startsWith(customFontSelectorPrefix)) {\n      return this.custom.getFontBySelector(selector, createFont);\n    }\n    return this.bySelector.get(selector);\n  }\n  // Function called by draft to get font properties for a selector, before the (google) font is available in the store\n  // It replaces a previous function that created Font instances and added them to the store\n  // on the fly while rendering drafts, which caused issues (overriding real google font info with fake instances with partial data).\n  // Ideally this should not happen, but that's a fix for another day\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: createFontFamilyName(font),\n        source: font.family.source,\n        category: font.category\n      };\n    }\n    const googleLocator = this.google.parseSelector(selector);\n    if (googleLocator) {\n      const fontVariant = GoogleFontSource.parseVariant(googleLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        const family = googleLocator.isVariable ? createVariableFontFamilyName(googleLocator.name) : googleLocator.name;\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: googleLocator.variant,\n          family,\n          source: \"google\" /* Google */,\n          category: void 0\n        };\n      }\n    }\n    const fontshareLocator = this.fontshare.parseSelector(selector);\n    if (fontshareLocator) {\n      const fontVariant = FontshareSource.parseVariant(fontshareLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        const family = fontshareLocator.isVariable ? createVariableFontFamilyName(fontshareLocator.name) : fontshareLocator.name;\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: fontshareLocator.variant,\n          family,\n          source: \"fontshare\" /* Fontshare */,\n          category: void 0\n        };\n      }\n    }\n    const builtInFontLocator = this.builtIn.parseSelector(selector);\n    if (builtInFontLocator) {\n      const fontVariant = BuiltInFontSource.parseVariant(builtInFontLocator.variant);\n      if (isSuccessfullyParsedFontVariant(fontVariant)) {\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: builtInFontLocator.variant,\n          family: builtInFontLocator.name,\n          source: \"builtIn\" /* BuiltIn */,\n          category: void 0\n        };\n      }\n    }\n    const framerFontDraftProperties = FramerFontSource.getDraftFontPropertiesBySelector(selector);\n    if (framerFontDraftProperties) {\n      return framerFontDraftProperties;\n    }\n    return null;\n  }\n  isSelectorLoaded(selector) {\n    return this.loadedSelectors.has(selector);\n  }\n  /**\n   * Load a single font\n   * */\n  async loadFont(font) {\n    if (this.isSelectorLoaded(font.selector)) {\n      return 0 /* AlreadyLoaded */;\n    }\n    const source = font.family.source;\n    const fontIsVariable = isVariableFont(font);\n    switch (source) {\n      case \"local\" /* Local */:\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      case \"framer\" /* Framer */:\n        if (!isTest()) {\n          await isFontReady(font.family.name, font.style, font.weight);\n        }\n        if (fontIsVariable) {\n          if (!font.file) {\n            return Promise.reject(`Unable to load font: ${font.selector}`);\n          }\n          await loadFont(\n            {\n              family: createFontFamilyName(font),\n              url: font.file,\n              weight: font.weight,\n              style: font.style,\n              isVariableFont: fontIsVariable\n            },\n            document\n          );\n        }\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      case \"google\" /* Google */:\n      case \"fontshare\" /* Fontshare */:\n      case \"builtIn\" /* BuiltIn */:\n      case \"custom\" /* Custom */:\n        if (!font.file) {\n          return Promise.reject(`Unable to load font: ${font.selector}`);\n        }\n        await loadFont(\n          {\n            family: createFontFamilyName(font),\n            url: font.file,\n            weight: font.weight,\n            style: font.style,\n            isVariableFont: fontIsVariable\n          },\n          document\n        );\n        this.loadedSelectors.add(font.selector);\n        return 1 /* Loaded */;\n      default:\n        assertNever(source);\n    }\n  }\n  async loadFontsFromSelectors(selectors) {\n    if (!this.enabled) return [];\n    const importPromises = [];\n    const shouldImportFontshareFonts = selectors.some((selector) => selector.startsWith(fontsharePrefix));\n    if (shouldImportFontshareFonts) {\n      importPromises.push(\n        this.importFontshareFonts().catch((error) => {\n          warnOnce2(\"Failed to load Fontshare fonts:\", error);\n        })\n      );\n    }\n    const shouldImportGoogleFonts = selectors.some((selector) => selector.startsWith(googleFontSelectorPrefix));\n    if (shouldImportGoogleFonts) {\n      importPromises.push(\n        this.importGoogleFonts().catch((error) => {\n          warnOnce2(\"Failed to load Google fonts:\", error);\n        })\n      );\n    }\n    const shouldImportBuiltInFonts = selectors.some((selector) => selector.startsWith(builtInFontSelectorPrefix));\n    if (shouldImportBuiltInFonts) {\n      importPromises.push(\n        this.importBuiltInFonts().catch((error) => {\n          warnOnce2(\"Failed to load built-in fonts:\", error);\n        })\n      );\n    }\n    const shouldImportCustomFonts = selectors.some((selector) => selector.startsWith(customFontSelectorPrefix));\n    if (shouldImportCustomFonts) {\n      importPromises.push(\n        this.customFontsImportPromise.catch((error) => {\n          warnOnce2(\"Failed to load custom fonts:\", error);\n        })\n      );\n    }\n    if (importPromises.length > 0) {\n      await Promise.all(importPromises);\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 loadFonts(fontSelectors) {\n    const results = await this.loadFontsFromSelectors(fontSelectors);\n    const newlyLoadedFontCount = results.filter(\n      (result) => result.status === \"fulfilled\" && result.value === 1 /* Loaded */\n    ).length;\n    return { newlyLoadedFontCount };\n  }\n  // Deprecated methods that are kept for backwards compatibility with any compiled code that might still be using them\n  /**\n   * @deprecated This method\u2019s API is confusing as 1) it works for all fonts,\n   * not just missing ones, 2) it supports both async/await and a callback,\n   * but the callback is called only if *all* fonts have been loaded. Use\n   * `loadFonts` instead.\n   */\n  async loadMissingFonts(fontSelectors, fontsLoadedCallback) {\n    const selectors = fontSelectors.filter((selector) => {\n      return !fontStore.isSelectorLoaded(selector);\n    });\n    if (selectors.length === 0) return;\n    await fontStore.loadWebFontsFromSelectors(selectors);\n    const isEachFontLoaded = selectors.every((selector) => {\n      return fontStore.isSelectorLoaded(selector);\n    });\n    if (isEachFontLoaded && fontsLoadedCallback) fontsLoadedCallback();\n  }\n  /**\n   * @deprecated This method is misleading as it works with all fonts, not\n   * just web fonts. Use `loadFonts` instead. (In Framer, \u201Cweb fonts\u201D has a\n   * specific meaning: it refers to Google/Fontshare fonts and exludes custom\n   * and local fonts. See e.g. `WebFontStore` and the \u201CWeb\u201D/\u201CCustom\u201D toggle in\n   * the font picker in the UI. More context: https://github.com/framer/FramerStudio/pull/15778#discussion_r1395120760)\n   */\n  async loadWebFontsFromSelectors(selectors) {\n    return this.loadFontsFromSelectors(selectors);\n  }\n  // defaultFont doesn\u2019t seem to be used anywhere in our code (except tests),\n  // but keeping it for backwards compatibility with any compiled code.\n  /** @deprecated This will be removed in the future. Don\u2019t use it. */\n  get defaultFont() {\n    const defaultFont = this.getFontBySelector(\"Inter\");\n    assert(defaultFont, \"Can\\u2019t find Inter font\");\n    return defaultFont;\n  }\n};\nvar fontStore = /* @__PURE__ */ new FontStore();\n\n// ../../library/src/render/presentation/CustomProperties.tsx\nimport { jsx as jsx69 } from \"react/jsx-runtime\";\nfunction CustomProperties({\n  children,\n  customProperties\n}) {\n  return /* @__PURE__ */ jsx69(\"div\", { style: customProperties, children });\n}\n\n// ../../library/src/render/presentation/DeprecatedComponentContainer.tsx\nimport React78 from \"react\";\nimport { jsx as jsx70 } from \"react/jsx-runtime\";\nvar DeprecatedComponentContainer = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"state\", {});\n      __publicField(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      var _a2;\n      let stack = (_a2 = info.componentStack) == null ? void 0 : _a2.split(\"\\n\").filter((line) => line.length !== 0);\n      let currentIndex = 0;\n      if (stack) {\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      }\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(error) {\n      const { RenderPlaceholder } = runtime;\n      return /* @__PURE__ */ jsx70(FrameWithMotion, { ...this.props, background: null, children: /* @__PURE__ */ jsx70(RenderPlaceholder, { error }) });\n    }\n    render() {\n      var _a2, _b;\n      countNodeRender();\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          const title = `Error in ${errorComponent.file}`;\n          const message = errorComponent.error;\n          return this.renderErrorPlaceholder({ title, message });\n        }\n      }\n      if (error && error.children === children) {\n        const component = runtime.componentLoader.componentForIdentifier(componentIdentifier);\n        const file = component ? component.file : \"???\";\n        const title = `Error in ${file}`;\n        const message = error.message;\n        return this.renderErrorPlaceholder({ title, message });\n      }\n      ;\n      (_b = (_a2 = asRecord(safeWindow))[\"__checkComponentBudget__\"]) == null ? void 0 : _b.call(_a2);\n      let frameProps = this.props;\n      if (RenderTarget.current() !== RenderTarget.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: _opacity,\n          visible,\n          _constraints,\n          _initialStyle,\n          name,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft,\n          // Remove the children and the componentIdentifier from the props passed into the component\n          componentIdentifier: originalComponentIdentifier,\n          children: originalChildren,\n          style,\n          duplicatedFrom,\n          widthType,\n          heightType,\n          ...childProps\n        } = frameProps;\n        children = React78.Children.map(originalChildren, (child) => {\n          if (!isReactChild(child) || !isReactElement(child)) {\n            return child;\n          }\n          if (!isPageOrScroll(originalComponentIdentifier)) {\n            return /* @__PURE__ */ jsx70(LayoutGroup, { inherit: false, id: this.props.__layoutId, children: /* @__PURE__ */ jsx70(AutomaticLayoutIds, { enabled: false, children: React78.cloneElement(child, childProps) }) });\n          }\n          return React78.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 (\n        /* The background should come before the frameProps. It looks like there never should be a background in frameProps,\n         * but published design components can contain an old version of the presentation tree that expects the background\n         * that is passed to be rendered here\n         * See the stackBackgroundTest.tsx integration test for an example of such a case\n         */\n        /* @__PURE__ */ jsx70(ComponentContainerContext.Provider, { value: true, children: /* @__PURE__ */ jsx70(\n          FrameWithMotion,\n          {\n            \"data-framer-component-container\": true,\n            background: null,\n            overflow: \"visible\",\n            ref: this.setElement,\n            ...frameProps,\n            children\n          }\n        ) })\n      );\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_a, \"defaultComponentContainerProps\", {\n    style: {},\n    visible: true,\n    componentIdentifier: \"\"\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultComponentContainerProps\n  }), __publicField(_a, \"contextType\", ComponentContainerContext), _a;\n})();\nfunction isPageOrScroll(identifier) {\n  if (!identifier) return false;\n  if (identifier === \"framer/Page\") return true;\n  if (identifier === \"framer/Scroll\") return true;\n  return false;\n}\n\n// ../../library/src/render/presentation/Forms/FormPlainTextInput.tsx\nimport { forwardRef as forwardRef9, startTransition as startTransition13, useCallback as useCallback18, useState as useState9 } from \"react\";\nimport { jsx as jsx71 } from \"react/jsx-runtime\";\nvar passwordManagerIgnoreDataProps = {\n  // 1Password\n  \"data-1p-ignore\": true,\n  // LastPass\n  \"data-lpignore\": true,\n  // Dashlane\n  // https://support.dashlane.com/hc/en-us/articles/4420122792594-Optimize-your-web-forms-for-Dashlane-Autofill\n  \"data-form-type\": \"other\",\n  // autocomplete=\"off\" is a generic property that disables autofilling. It\n  // is not always respected by some browsers or password managers.\n  autocomplete: \"off\"\n};\nvar PlainTextInput = /* @__PURE__ */ forwardRef9(function FormPlainTextInput(props, ref) {\n  const {\n    autoFocus,\n    className: className2,\n    inputName,\n    max,\n    min,\n    placeholder,\n    required,\n    step: step2,\n    style,\n    type,\n    maxLength,\n    // We use a defaultValue instead of a value so that the input remains\n    // uncontrolled by React. This is important because we want the user\n    // to be able to provide an initial value in the property panel, and for\n    // the value to be editable by the user in the preview.\n    defaultValue,\n    autofillEnabled,\n    onChange,\n    onBlur,\n    onInvalid,\n    onFocus,\n    onValid,\n    ...rest\n  } = props;\n  const [hasValue, setHasValue] = useState9(!!defaultValue);\n  const [prevDefaultValue, setPrevDefaultValue] = useState9();\n  if (defaultValue !== prevDefaultValue) {\n    setHasValue(!!defaultValue);\n    setPrevDefaultValue(defaultValue);\n  }\n  const handleChange = useCallback18(\n    async (e) => {\n      await yieldToMain({ continueAfter: \"paint\" });\n      const newValue = e.target.value;\n      onChange == null ? void 0 : onChange(e);\n      startTransition13(() => setHasValue(!!newValue));\n    },\n    [onChange]\n  );\n  const eventHandlers = useCustomValidity(onValid, onInvalid, handleChange, onBlur, onFocus);\n  if (type === \"hidden\") {\n    return /* @__PURE__ */ jsx71(motion.input, { type: \"hidden\", name: inputName, defaultValue });\n  }\n  const dataProps = autofillEnabled === false ? passwordManagerIgnoreDataProps : void 0;\n  return /* @__PURE__ */ jsx71(\n    motion.div,\n    {\n      ref,\n      style,\n      className: cx(textInputWrapperClassName, inputWrapperClassName, className2),\n      ...rest,\n      children: type === \"textarea\" ? /* @__PURE__ */ jsx71(\n        motion.textarea,\n        {\n          ...dataProps,\n          ...eventHandlers,\n          required,\n          autoFocus,\n          name: inputName,\n          placeholder,\n          className: inputClassName,\n          defaultValue,\n          maxLength\n        },\n        defaultValue\n      ) : /* @__PURE__ */ jsx71(\n        motion.input,\n        {\n          ...dataProps,\n          ...eventHandlers,\n          type,\n          required,\n          autoFocus,\n          name: inputName,\n          placeholder,\n          className: cx(inputClassName, !hasValue && emptyValueClassName),\n          defaultValue,\n          min,\n          max,\n          step: step2,\n          maxLength\n        },\n        defaultValue\n      )\n    }\n  );\n});\nvar iconSize2 = 16;\nvar textInputWrapperClassName = \"framer-form-text-input\";\nvar defaultTextareaResizerIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\"><path d=\"m1.5 8 7-7M9 5.5l-3 3\" stroke=\"%23999\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path></svg>`;\nvar defaultDateIconMaskImage = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"rgb(153, 153, 153)\" d=\"M3 5a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2H3Z\" opacity=\".3\"/><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-width=\"1.5\" d=\"M3.25 5.25a2 2 0 0 1 2-2h5.5a2 2 0 0 1 2 2v5.5a2 2 0 0 1-2 2h-5.5a2 2 0 0 1-2-2ZM3 6.75h9.5\"/></svg>';\nvar defaultTimeIconMaskImage = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-width=\"1.5\" d=\"M2.5 8a5.5 5.5 0 1 1 11 0 5.5 5.5 0 1 1-11 0Z\"/><path fill=\"transparent\" stroke=\"rgb(153, 153, 153)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M7.75 8.25v-3m0 3h2\"/></svg>';\nvar styles = /* @__PURE__ */ (() => [\n  ...sharedInputCSS,\n  ...inputBorderCSS,\n  ...inputWrapperCSS,\n  css(`.${inputWrapperClassName}`, {\n    boxShadow: css.variable(\"--framer-input-box-shadow\" /* BoxShadow */),\n    borderTopLeftRadius: css.variable(\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */),\n    borderTopRightRadius: css.variable(\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */),\n    borderBottomRightRadius: css.variable(\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */),\n    borderBottomLeftRadius: css.variable(\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */),\n    background: css.variable(\"--framer-input-background\" /* Background */),\n    transition: css.variable(\"--framer-input-focused-transition\" /* FocusedTransition */),\n    transitionProperty: \"background, box-shadow\"\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}::placeholder`, {\n    color: css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */)\n  }),\n  css(\n    `.${textInputWrapperClassName} .${inputClassName}[type=\"date\"], .${textInputWrapperClassName} .${inputClassName}[type=\"time\"]`,\n    {\n      \"-webkit-appearance\": \"none\",\n      appearance: \"none\"\n    }\n  ),\n  // iOS only fix for centered date & time inputs: https://github.com/tailwindlabs/tailwindcss-forms/pull/144\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-date-and-time-value`, {\n    textAlign: \"start\"\n  }),\n  css(`.${textInputWrapperClassName} textarea`, {\n    display: \"flex\",\n    resize: css.variable(\"--framer-textarea-resize\" /* Resize */),\n    overflowY: \"auto\",\n    minHeight: \"inherit\",\n    maxHeight: \"inherit\",\n    whiteSpace: \"break-spaces\"\n  }),\n  // This targets the resize handle in WebKit browsers. Unfortunately, it is not\n  // possible in CSS to target the resize handle in Firefox, so FF will always\n  // show the native resize handle.\n  css(`.${textInputWrapperClassName} textarea::-webkit-resizer`, {\n    background: `no-repeat ${encodeSVGForCSS(defaultTextareaResizerIcon)}`\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar`, {\n    cursor: \"pointer\",\n    background: \"transparent\"\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar-thumb:window-inactive`, {\n    opacity: 0\n  }),\n  css(`.${textInputWrapperClassName} textarea::-webkit-scrollbar-corner`, {\n    background: \"none\",\n    backgroundColor: \"transparent\",\n    outline: \"none\"\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-datetime-edit`, {\n    // Prevent browsers from improvising the date/time placeholder height.\n    height: css.variable(\"--framer-input-font-line-height\" /* FontLineHeight */)\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}.${emptyValueClassName}::-webkit-datetime-edit`, {\n    color: css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */),\n    // This tells safari to use the color for the shadow dom elements.\n    \"-webkit-text-fill-color\": css.variable(\"--framer-input-placeholder-color\" /* PlaceholderColor */),\n    overflow: \"visible\"\n  }),\n  css(\n    `.${textInputWrapperClassName} .${inputClassName}[type=\"date\"]::before, .${textInputWrapperClassName} .${inputClassName}[type=\"time\"]::before`,\n    {\n      ...inputIconCSSDeclaration,\n      paddingLeft: `${iconSpacing}px`,\n      maskPosition: `${iconSpacing}px center`,\n      backgroundPosition: `${iconSpacing}px center`\n    }\n  ),\n  css(`.${textInputWrapperClassName} .${inputClassName}[type=\"date\"]::before`, {\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, encodeSVGForCSS(defaultDateIconMaskImage)),\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */)\n  }),\n  css(`.${textInputWrapperClassName} .${inputClassName}[type=\"time\"]::before`, {\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, encodeSVGForCSS(defaultTimeIconMaskImage)),\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */)\n  }),\n  // Hide the native date picker icon, but still align it with the custom icon, allowing user to click it to show the\n  // date/time picker.\n  css(`.${textInputWrapperClassName} .${inputClassName}::-webkit-calendar-picker-indicator`, {\n    opacity: 0,\n    position: \"absolute\",\n    right: 0,\n    top: 0,\n    bottom: 0,\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    paddingTop: 0,\n    paddingBottom: 0,\n    width: `${iconSize2}px`,\n    // Makes sure the icon hit target covers the entire height of the input.\n    height: \"100%\"\n  }),\n  css(`.${textInputWrapperClassName}:focus-within, .${textInputWrapperClassName}.${forcedFocusClassName}`, {\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */),\n    background: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */)\n  }),\n  css(\n    `.${textInputWrapperClassName}:focus-within::after, .${textInputWrapperClassName}.${forcedFocusClassName}::after`,\n    {\n      borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */),\n      borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */),\n      borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n    }\n  )\n])();\nvar FormPlainTextInput2 = /* @__PURE__ */ withCSS(PlainTextInput, styles, \"framer-lib-form-plain-text-input\");\n\n// ../../library/src/render/presentation/Forms/FormBooleanInput.tsx\nimport React79 from \"react\";\nimport { jsx as jsx72 } from \"react/jsx-runtime\";\nvar className = \"framer-form-boolean-input\";\nvar BooleanInput = /* @__PURE__ */ React79.forwardRef(function FormPlainTextInput3(props, ref) {\n  const { inputName, type = \"checkbox\", defaultChecked, onValid, ...rest } = props;\n  const isCanvas = useIsOnFramerCanvas();\n  const attributes = isCanvas ? { checked: defaultChecked } : { defaultChecked };\n  const eventHandlers = useCustomValidity(onValid, props.onInvalid, props.onChange, props.onBlur, props.onFocus);\n  return /* @__PURE__ */ jsx72(\n    motion.input,\n    {\n      ...rest,\n      ...attributes,\n      ...eventHandlers,\n      readOnly: isCanvas,\n      ref,\n      type,\n      name: inputName,\n      className: cx(className, props.className)\n    }\n  );\n});\nvar defaultCheckedIcon = 'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 4 8 L 6.5 10.5 L 11.5 5.5\" fill=\"transparent\" stroke-width=\"2\" stroke=\"rgb(255, 255, 255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>';\nvar borderRadius = `var(${\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */}) var(${\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */}) var(${\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */}) var(${\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */})`;\nvar styles2 = /* @__PURE__ */ (() => [\n  css(`.${className}`, {\n    \"-webkit-appearance\": \"none\",\n    // background-color: #fff; fixes a bug on iOS where the checkbox shows\n    // through the appearance: none;\n    alignItems: \"center\",\n    appearance: \"none\",\n    backgroundColor: \"#fff\",\n    background: \"--framer-input-background\" /* Background */,\n    borderRadius,\n    boxShadow: \"--framer-input-box-shadow\" /* BoxShadow */,\n    display: \"flex\",\n    justifyContent: \"center\",\n    margin: 0,\n    overflow: \"hidden\",\n    position: \"relative\",\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"box-shadow, background\"\n  }),\n  // The after element styles the border of the checkbox to conform to\n  // framer's inset border model.\n  css(`.${className}::after`, {\n    background: \"transparent\",\n    borderColor: css.variable(\"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderRadius,\n    borderStyle: \"--framer-input-border-style\" /* BorderStyle */,\n    borderWidth: inputBorderAllSides,\n    boxSizing: \"border-box\",\n    content: \"\",\n    display: \"block\",\n    inset: 0,\n    position: \"absolute\",\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"border-color, border-width, border-style\"\n  }),\n  // The before element is used to display the check mark icon. It is\n  // faded in when the input is checked.\n  css(`.${className}::before`, {\n    ...inputIconCSSDeclaration,\n    backgroundPosition: \"center\",\n    backgroundSize: \"contain\",\n    maskPosition: \"center\",\n    maskSize: \"contain\",\n    height: \"100%\",\n    opacity: 0,\n    transition: \"--framer-input-boolean-checked-transition\" /* BooleanCheckedTransition */,\n    transitionProperty: \"opacity\",\n    width: \"100%\"\n  }),\n  // The BooleanInput component shows an svg check mark icon whenever an\n  // image url isn't provided. That's not an intuitive system for radios\n  // however, where we never want to show the default check mark.\n  css(`.${className}[type=\"checkbox\"]::before`, {\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultCheckedIcon}')`)\n  }),\n  css(`.${className}[type=\"radio\"]::before`, {\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */)\n  }),\n  css(`.${className}:checked, .${className}.${forcedCheckedClassName}`, {\n    // When not set, the styles when checked shouldn't clear the default\n    // styles.\n    backgroundColor: css.variable(\"--framer-input-boolean-checked-background\" /* BooleanCheckedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-boolean-checked-box-shadow\" /* BooleanCheckedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:checked::before, .${className}.${forcedCheckedClassName}::before`, {\n    opacity: 1\n  }),\n  css(`.${className}:checked::after, .${className}.${forcedCheckedClassName}::after`, {\n    // When not set, the styles when checked shouldn't clear the default\n    // styles.\n    borderColor: css.variable(\"--framer-input-boolean-checked-border-color\" /* BooleanCheckedBorderColor */, \"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderStyle: css.variable(\"--framer-input-boolean-checked-border-style\" /* BooleanCheckedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-boolean-checked-border-width\" /* BooleanCheckedBorderWidth */, inputBorderAllSides)\n  }),\n  css(`.${className}:focus, .${className}.${forcedFocusClassName}`, {\n    backgroundColor: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:focus-visible`, { outline: \"none\" }),\n  css(`.${className}:focus::after, .${className}.${forcedFocusClassName}::after`, {\n    // When not set, the styles when focused shouldn't clear the checked\n    // styles.\n    borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */, \"transparent\"),\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n  }),\n  css(`.${className}:focus:checked`, {\n    backgroundColor: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-boolean-checked-background\" /* BooleanCheckedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-boolean-checked-box-shadow\" /* BooleanCheckedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${className}:focus:checked::after`, {\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-boolean-checked-border-style\" /* BooleanCheckedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */, \"solid\"),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, \"--framer-input-boolean-checked-border-width\" /* BooleanCheckedBorderWidth */, inputBorderAllSides)\n  })\n])();\nvar FormBooleanInput = /* @__PURE__ */ withCSS(BooleanInput, styles2, \"framer-lib-form-boolean-input\");\n\n// ../../library/src/render/presentation/Forms/FormSelect.tsx\nimport React80 from \"react\";\nimport { jsx as jsx73 } from \"react/jsx-runtime\";\nvar Select = /* @__PURE__ */ React80.forwardRef(function Select2(props, measureRef) {\n  const {\n    autoFocus,\n    className: className2,\n    inputName,\n    required,\n    hidden,\n    defaultValue,\n    selectOptions,\n    style,\n    onValid,\n    onChange,\n    onBlur,\n    onInvalid,\n    onFocus,\n    ...rest\n  } = props;\n  const eventHandlers = useCustomValidity(onValid, onInvalid, onChange, onBlur, onFocus);\n  const key7 = Array.isArray(defaultValue) ? defaultValue[0] : defaultValue;\n  if (hidden) {\n    return /* @__PURE__ */ jsx73(motion.input, { type: \"hidden\", name: inputName, defaultValue });\n  }\n  return /* @__PURE__ */ jsx73(\n    motion.div,\n    {\n      ref: measureRef,\n      style,\n      className: cx(inputWrapperClassName, selectWrapperClassName, className2),\n      ...rest,\n      children: /* @__PURE__ */ jsx73(\n        motion.select,\n        {\n          name: inputName,\n          autoFocus,\n          required,\n          className: inputClassName,\n          defaultValue,\n          ...eventHandlers,\n          children: selectOptions == null ? void 0 : selectOptions.map((option, index) => {\n            switch (option.type) {\n              case \"divider\":\n                return /* @__PURE__ */ jsx73(\"hr\", {}, index);\n              case \"option\":\n                return (\n                  // biome-ignore lint/suspicious/noArrayIndexKey: Values can be duplicated, so we could only use UUIDs here (but that isn't really better)\n                  /* @__PURE__ */ jsx73(\"option\", { value: option.value ?? option.title, disabled: option.disabled, children: option.title ?? option.value }, index)\n                );\n            }\n          })\n        },\n        key7\n      )\n    }\n  );\n});\nvar selectWrapperClassName = \"framer-form-select-wrapper\";\nvar selectArrowSize = 16;\nvar defaultSelectCaretMaskImage = /* @__PURE__ */ (() => `data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${selectArrowSize}\" height=\"${selectArrowSize}\"><path d=\"M 3.5 6 L 8 10.5 L 12.5 6\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"rgb(153, 153, 153)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>`)();\nvar styles3 = /* @__PURE__ */ (() => [\n  ...sharedInputCSS,\n  ...inputBorderCSS,\n  ...inputWrapperCSS,\n  css(`.${selectWrapperClassName}`, {\n    // First we use the complete padding string, which may be any valid\n    // padding string (10px, 10px 10px, 10px 10px 10px, or 10px 10px\n    // 10px 10px), and use it to set only the right padding. This pushes\n    // the actual select away from the arrow by 1x.\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    paddingTop: 0,\n    paddingBottom: 0,\n    paddingLeft: 0,\n    background: css.variable(\"--framer-input-background\" /* Background */),\n    borderTopLeftRadius: css.variable(\"--framer-input-border-radius-top-left\" /* BorderRadiusTopLeft */),\n    borderTopRightRadius: css.variable(\"--framer-input-border-radius-top-right\" /* BorderRadiusTopRight */),\n    borderBottomRightRadius: css.variable(\"--framer-input-border-radius-bottom-right\" /* BorderRadiusBottomRight */),\n    borderBottomLeftRadius: css.variable(\"--framer-input-border-radius-bottom-left\" /* BorderRadiusBottomLeft */),\n    boxShadow: css.variable(\"--framer-input-box-shadow\" /* BoxShadow */),\n    transition: css.variable(\"--framer-input-focused-transition\" /* FocusedTransition */),\n    transitionProperty: \"background, box-shadow\"\n  }),\n  css(`.${selectWrapperClassName} select`, {\n    appearance: \"none\",\n    \"-webkit-appearance\": \"none\",\n    // Then we use the complete padding string again as the margin for\n    // the select. This moves the select 2x the padding right away from\n    // the arrow.\n    padding: css.variable(\"--framer-input-padding\" /* Padding */),\n    // Overwrite the values inherited from .${inputClassName}. On a\n    // select, these values are on the wrapper.\n    background: \"transparent\"\n  }),\n  css(`.${selectWrapperClassName}::before`, {\n    ...inputIconCSSDeclaration,\n    paddingLeft: `${iconSpacing}px`,\n    backgroundPosition: `${iconSpacing}px center`,\n    maskPosition: `${iconSpacing}px center`,\n    backgroundImage: css.variable(\"--framer-input-icon-image\" /* IconBackgroundImage */),\n    maskImage: css.variable(\"--framer-input-icon-mask-image\" /* IconMaskImage */, `url('${defaultSelectCaretMaskImage}')`)\n  }),\n  css(`.${selectWrapperClassName} select:required:invalid`, {\n    color: css.variable(\"--framer-input-invalid-text-color\" /* InvalidTextColor */)\n  }),\n  css(`.${selectWrapperClassName}:focus-within, .${selectWrapperClassName}.${forcedFocusClassName}`, {\n    background: css.variable(\"--framer-input-focused-background\" /* FocusedBackground */, \"--framer-input-background\" /* Background */),\n    boxShadow: css.variable(\"--framer-input-focused-box-shadow\" /* FocusedBoxShadow */, \"--framer-input-box-shadow\" /* BoxShadow */)\n  }),\n  css(`.${selectWrapperClassName}:focus-within::after, .${selectWrapperClassName}.${forcedFocusClassName}::after`, {\n    borderColor: css.variable(\"--framer-input-focused-border-color\" /* FocusedBorderColor */, \"--framer-input-border-color\" /* BorderColor */),\n    borderStyle: css.variable(\"--framer-input-focused-border-style\" /* FocusedBorderStyle */, \"--framer-input-border-style\" /* BorderStyle */),\n    borderWidth: css.variable(\"--framer-input-focused-border-width\" /* FocusedBorderWidth */, inputBorderAllSides)\n  }),\n  // Enforcing a color on the native select options. On windows, browsers select options\n  // inherit some style properties like color but not others so they might end up in a weird\n  // state in which we can't read the options until we hover.\n  // These are ignored on mac\n  css(`.${selectWrapperClassName} select option`, {\n    color: \"#000\"\n  }),\n  css(`.${selectWrapperClassName} select option:disabled`, {\n    color: \"rgba(0, 0, 0, 0.4)\"\n  })\n])();\nvar FormSelect = /* @__PURE__ */ withCSS(Select, styles3, \"framer-lib-form-select\");\n\n// ../../library/src/render/presentation/Image.tsx\nimport React81 from \"react\";\nimport { jsx as jsx74, jsxs as jsxs16 } from \"react/jsx-runtime\";\nvar Image2 = /* @__PURE__ */ React81.forwardRef(function Image3(props, ref) {\n  const { background, children, alt, draggable, style: styleFromProps, ...rest } = props;\n  const style = { ...styleFromProps };\n  if (background) {\n    delete style.background;\n  }\n  const MotionComponent = htmlElementAsMotionComponent(props.as);\n  return /* @__PURE__ */ jsxs16(MotionComponent, { ...rest, style, ref, children: [\n    background && /* @__PURE__ */ jsx74(BackgroundImageComponent, { image: background, alt, draggable }),\n    children\n  ] });\n});\n\n// ../../library/src/render/presentation/RichText.tsx\nimport {\n  Children as Children4,\n  Fragment as Fragment11,\n  cloneElement as cloneElement3,\n  forwardRef as forwardRef11,\n  isValidElement as isValidElement6,\n  useContext as useContext26,\n  useInsertionEffect as useInsertionEffect6,\n  useMemo as useMemo21,\n  useRef as useRef24\n} from \"react\";\n\n// ../../library/src/utils/slugify.ts\nvar nonSlugCharactersRegExp = /[^\\p{Letter}\\p{Number}()]+/gu;\nvar trimSlugRegExp = /^-+|-+$/gu;\nfunction slugify(value) {\n  return value.toLowerCase().replace(nonSlugCharactersRegExp, \"-\").replace(trimSlugRegExp, \"\");\n}\n\n// ../../library/src/render/presentation/DeprecatedRichText.tsx\nimport * as React82 from \"react\";\nimport { useRef as useRef22 } from \"react\";\n\n// ../../library/src/modules/replaceFramerPageLinks.ts\nvar htmlRegExp = /[&<>'\"]/gu;\nvar escapeHTML = (str) => str.replace(\n  htmlRegExp,\n  (tag) => ({\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    \"'\": \"&#39;\",\n    '\"': \"&quot;\"\n  })[tag] || tag\n);\nvar regex = /(<([a-z]+)(?:\\s+(?!href[\\s=])[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*)(?:(\\s+href\\s*=)(?:'([^']*)'|\"([^\"]*)\"))?((?:\\s+[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*>)/gi;\nfunction replaceFramerPageLinks(rawHTML, getRoute, currentRoute, implicitPathVariables) {\n  return rawHTML.replace(\n    regex,\n    (original, pre1, tag, pre2, value1, value2, post) => {\n      var _a, _b;\n      if (tag.toLowerCase() !== \"a\") return original;\n      const href = value1 || value2;\n      const pageLink = parseFramerPageLink(href.replace(/&amp;/gu, \"&\"));\n      if (!pageLink || !pageLink.target) return original;\n      const targetRoute = getRoute(pageLink.target);\n      if (!isRoute(targetRoute) || !isRoute(currentRoute)) return original;\n      const targetPath = targetRoute.path;\n      const currentPath = currentRoute.path;\n      if (!targetPath || !currentPath) return original;\n      let attributes = ` ${\"data-framer-page-link-target\" /* Page */}=\"${pageLink.target}\"`;\n      const elementId = getRouteElementId(targetRoute, pageLink.element ?? void 0);\n      if (elementId) {\n        attributes += ` ${\"data-framer-page-link-element\" /* Element */}=\"${pageLink.element}\"`;\n      }\n      const link = linkFromFramerPageLink(href);\n      if (!link || isString(link)) return original;\n      if (linkMatchesRoute(currentRoute, link, implicitPathVariables)) {\n        attributes += ` ${\"data-framer-page-link-current\" /* Current */}`;\n      }\n      let relativePath = targetPath;\n      const pathVariables = Object.assign({}, implicitPathVariables, (_a = pageLink.collectionItem) == null ? void 0 : _a.pathVariables);\n      if (Object.keys(pathVariables).length > 0) {\n        relativePath = relativePath.replace(pathVariablesRegExp2, (_, key7) => \"\" + pathVariables[key7]);\n      }\n      if ((_b = pageLink.collectionItem) == null ? void 0 : _b.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}\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/DeprecatedRichText.tsx\nimport { jsx as jsx75 } from \"react/jsx-runtime\";\nvar htmlEscapes = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#39;\"\n};\nvar reUnescapedHtml = /[&<>\"']/gu;\nvar reHasUnescapedHtml = /* @__PURE__ */ (() => new 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__ */ React82.forwardRef(\n  function Text(props, forwardedRef) {\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: className2,\n      stylesPresetsClassName,\n      visible = true,\n      opacity,\n      rotation = 0,\n      verticalAlignment = \"top\",\n      isEditable = false,\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: _children,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const layoutId = useLayoutId(props);\n    const fallbackLayoutRef = useRef22(null);\n    const layoutRef = forwardedRef ?? fallbackLayoutRef;\n    const { navigate, getRoute } = useRouter();\n    const currentRoute = useCurrentRoute();\n    useRoutePreloader(props.preload ?? []);\n    useMeasureLayout(props, layoutRef);\n    const inCodeComponent = React82.useContext(ComponentContainerContext);\n    const isOnCanvas = useIsOnFramerCanvas();\n    let textOrOverride = text;\n    const forwardedOverrideId = _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 = React82.useMemo(() => {\n      if (isOnCanvas || !getRoute || !currentRoute) return innerHTML;\n      return replaceFramerPageLinks(innerHTML, getRoute, currentRoute, implicitPathVariables);\n    }, [innerHTML, getRoute, currentRoute, implicitPathVariables]);\n    React82.useEffect(() => {\n      const container = layoutRef.current;\n      if (container === null) 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        }\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    React82.useInsertionEffect(() => {\n      injectComponentCSSRules();\n    }, []);\n    if (!visible) return null;\n    const isHidden = isEditable && environment2() === RenderTarget.canvas;\n    const style = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment(verticalAlignment),\n      opacity: isHidden ? 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 ? props.transformTemplate ?? 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    Object.assign(style, props.style);\n    return /* @__PURE__ */ jsx75(\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(className2, stylesPresetsClassName, richTextWrapperClassName),\n        transformTemplate: template,\n        dangerouslySetInnerHTML: { __html: innerHTMLWithReplacedFramerPageLinks }\n      }\n    );\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 useLoadFonts(fonts, fromCanvasComponent, containerRef) {\n  const prevFontsRef = useRef22([]);\n  if (!isShallowEqualArray(prevFontsRef.current, fonts)) {\n    prevFontsRef.current = fonts;\n    void fontStore.loadFonts(fonts).then(({ newlyLoadedFontCount }) => {\n      if (!fromCanvasComponent || !containerRef.current || RenderTarget.current() !== RenderTarget.canvas) return;\n      if (newlyLoadedFontCount > 0) {\n        measureClosestComponentContainer(containerRef.current);\n      }\n    });\n  }\n}\n\n// ../../library/src/render/presentation/useTextEffect.tsx\nimport * as React83 from \"react\";\n\n// ../../library/src/render/utils/patchAndWaitForChild.ts\nfunction newOverrideableRef() {\n  return { current: null };\n}\nasync function patchAndWaitForChild(ref, controller) {\n  let current = ref.current;\n  if (current) return current;\n  let refCallbackResolve;\n  const refCallbackPromise = new Promise((resolve, reject) => {\n    refCallbackResolve = resolve;\n    controller.signal.addEventListener(\"abort\", () => reject());\n  });\n  Object.defineProperty(ref, \"current\", {\n    get() {\n      return current;\n    },\n    set(element) {\n      current = element;\n      if (element === null) {\n        controller.abort();\n        return;\n      }\n      refCallbackResolve(element);\n    },\n    configurable: true\n  });\n  return refCallbackPromise;\n}\n\n// ../../library/src/render/presentation/useTextEffect.tsx\nimport { jsx as jsx76, jsxs as jsxs17 } from \"react/jsx-runtime\";\nvar defaultValues2 = {\n  opacity: 1,\n  y: 0,\n  x: 0,\n  scale: 1,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  skewX: 0,\n  skewY: 0,\n  filter: \"none\"\n};\nfunction isEffectKey(key7) {\n  return key7 in defaultValues2;\n}\nfunction createKeyframes(effect) {\n  const out = {};\n  for (const key7 in effect) {\n    if (!isEffectKey(key7)) continue;\n    const effectValue = effect[key7];\n    const defaultValue = defaultValues2[key7];\n    if (isUndefined(effectValue) || isUndefined(defaultValue)) continue;\n    out[key7] = [effectValue, defaultValue];\n  }\n  return out;\n}\nvar emojiSplitRe = /* @__PURE__ */ (() => {\n  return new RegExp(\"\\\\p{Regional_Indicator}{2}|\\\\p{Emoji}\\\\p{Emoji_Modifier}?\\\\p{Variation_Selector}?(?:\\\\u{200d}\\\\p{Emoji}\\\\p{Emoji_Modifier}?\\\\p{Variation_Selector}?)*|.\", \"gu\");\n})();\nfunction tokenizeText(text, tokenization = \"character\", elements, style) {\n  switch (tokenization) {\n    case \"character\":\n    // When we want to animate \"lines\" that aren't split by newlines, but\n    // instead by wrapping, we have to split the text into characters, and\n    // then measure the top offset of each character, creating groups of\n    // characters every time the top offset changes\n    // eslint-disable-next-line no-fallthrough\n    case \"line\": {\n      const words = text.split(\" \");\n      const lastWordIndex = words.length - 1;\n      return words.map((word, wordIndex) => {\n        var _a;\n        const isLastWord = wordIndex === lastWordIndex;\n        const short = word.length <= 12;\n        return /* @__PURE__ */ jsxs17(React83.Fragment, { children: [\n          /* @__PURE__ */ jsx76(\"span\", { style: { whiteSpace: short ? \"nowrap\" : \"unset\" }, children: (_a = word.match(emojiSplitRe)) == null ? void 0 : _a.map((char, i) => {\n            const ref = newOverrideableRef();\n            elements.add(ref);\n            return (\n              // biome-ignore lint/suspicious/noArrayIndexKey: We are combining index with char.\n              /* @__PURE__ */ jsx76(\"span\", { ref, style, children: char }, char + i)\n            );\n          }) }),\n          isLastWord ? null : \" \"\n        ] }, word + wordIndex + isLastWord);\n      });\n    }\n    case \"word\": {\n      const words = text.split(\" \");\n      const lastWordIndex = words.length - 1;\n      return words.map((char, i) => {\n        const isLastWord = i === lastWordIndex;\n        const ref = newOverrideableRef();\n        elements.add(ref);\n        return /* @__PURE__ */ jsxs17(React83.Fragment, { children: [\n          /* @__PURE__ */ jsx76(\"span\", { ref, style, children: char }),\n          isLastWord ? null : \" \"\n        ] }, char + i + isLastWord);\n      });\n    }\n    // Per: Element doesn't require text to be split.\n    case \"element\":\n    default:\n      return text;\n  }\n}\nfunction tokenizationForEffect(effect) {\n  const type = effect.type;\n  switch (type) {\n    case \"appear\":\n      return effect.tokenization ?? \"character\";\n    default:\n      assertNever(type);\n  }\n}\nfunction transformString(effect) {\n  const transforms = [];\n  if (isNumber(effect.x)) transforms.push(`translateX(${effect.x}px)`);\n  if (isNumber(effect.y)) transforms.push(`translateY(${effect.y}px)`);\n  if (isNumber(effect.scale)) transforms.push(`scale(${effect.scale})`);\n  if (isNumber(effect.rotate)) transforms.push(`rotate(${effect.rotate}deg)`);\n  if (isNumber(effect.rotateX)) transforms.push(`rotateX(${effect.rotateX}deg)`);\n  if (isNumber(effect.rotateY)) transforms.push(`rotateY(${effect.rotateY}deg)`);\n  if (isNumber(effect.skewX)) transforms.push(`skewX(${effect.skewX}deg)`);\n  if (isNumber(effect.skewY)) transforms.push(`skewY(${effect.skewY}deg)`);\n  return transforms.join(\" \");\n}\nfunction getInitialEffectStyle(canPlay, canAnimate, effect) {\n  if (!effect || !effect.effect) return void 0;\n  const type = effect.type;\n  switch (type) {\n    case \"appear\":\n      switch (effect.tokenization) {\n        case \"element\":\n          if (!canPlay || !canAnimate) return void 0;\n          return {\n            opacity: effect.effect.opacity,\n            filter: effect.effect.filter,\n            transform: transformString(effect.effect)\n          };\n        case \"line\":\n        case \"word\":\n        case \"character\":\n        default:\n          if (!canPlay || !canAnimate) return { display: \"inline-block\" };\n          return {\n            display: \"inline-block\",\n            opacity: effect.effect.opacity,\n            filter: effect.effect.filter,\n            transform: transformString(effect.effect)\n          };\n      }\n    default:\n      assertNever(type);\n  }\n}\nfunction useTextEffect(config, ref, preview) {\n  const elements = useConstant(() => /* @__PURE__ */ new Set());\n  const isRenderingStaticContent = isStaticRenderer();\n  const canPlay = preview || !isRenderingStaticContent;\n  const state = React83.useRef({\n    hasMounted: false,\n    hasAnimatedOnce: false,\n    isAnimating: false,\n    effect: config\n  });\n  state.current.effect = config;\n  const trigger = (config == null ? void 0 : config.trigger) ?? \"onMount\";\n  const target = config == null ? void 0 : config.target;\n  const threshold = config == null ? void 0 : config.threshold;\n  React83.useEffect(() => {\n    if (!canPlay || preview) return;\n    state.current.hasMounted = true;\n    function play() {\n      const { effect } = state.current;\n      if (!canPlay || !effect) return;\n      if ((effect == null ? void 0 : effect.repeat) !== true && state.current.hasAnimatedOnce) return;\n      if ((effect == null ? void 0 : effect.type) === \"appear\" && state.current.isAnimating) return;\n      Object.assign(state.current, {\n        hasAnimatedOnce: true,\n        isAnimating: true\n      });\n      const type = effect.type;\n      switch (type) {\n        case \"appear\": {\n          const { transition, startDelay, repeat, tokenization: tokenization2 } = effect;\n          const cleanupRef = { current: void 0 };\n          void runAppearEffect(\n            tokenization2,\n            effect.effect,\n            elements,\n            transition,\n            startDelay,\n            repeat,\n            () => {\n              Object.assign(state.current, { isAnimating: false });\n            },\n            cleanupRef\n          );\n          return () => {\n            var _a;\n            return (_a = cleanupRef.current) == null ? void 0 : _a.call(cleanupRef);\n          };\n        }\n        default:\n          assertNever(type);\n      }\n    }\n    switch (trigger) {\n      case \"onMount\":\n        play();\n        return;\n      case \"onInView\": {\n        const element = ref == null ? void 0 : ref.current;\n        if (!element) return;\n        return inView(element, play, { amount: threshold ?? 0 });\n      }\n      case \"onScrollTarget\": {\n        const element = target == null ? void 0 : target.ref.current;\n        if (!element) return;\n        return inView(element, play, {\n          amount: threshold ?? 0,\n          root: document,\n          margin: (target == null ? void 0 : target.offset) ? `${target.offset}px 0px 0px 0px` : void 0\n        });\n      }\n      default:\n        assertNever(trigger);\n    }\n  }, [canPlay, elements, preview, ref, target, threshold, trigger]);\n  const effectEnabled = !!config;\n  const tokenization = config ? tokenizationForEffect(config) : void 0;\n  return React83.useMemo(\n    () => ({\n      // The tokenizer is memoized such that it won't trigger RichText to\n      // be rerendered if the effect changes in a way that doesn't effect\n      // the tokenization.\n      getTokenizer: () => {\n        elements.clear();\n        if (!effectEnabled) return void 0;\n        const { hasMounted, hasAnimatedOnce, effect } = state.current;\n        const effectStyle = getInitialEffectStyle(\n          canPlay,\n          preview || mayAnimate(hasMounted, hasAnimatedOnce, effect),\n          state.current.effect\n        );\n        return {\n          text: (text) => tokenizeText(text, tokenization, elements, effectStyle),\n          props: (style) => {\n            if ((effect == null ? void 0 : effect.tokenization) !== \"element\") return void 0;\n            const r = newOverrideableRef();\n            elements.add(r);\n            return {\n              ref: r,\n              style: { ...style, ...effectStyle }\n            };\n          }\n        };\n      },\n      play: () => {\n        const { effect } = state.current;\n        if (!effect) return;\n        const type = effect.type;\n        switch (type) {\n          case \"appear\": {\n            const { transition, startDelay } = effect;\n            void runAppearEffect(tokenization, effect.effect, elements, transition, startDelay);\n            break;\n          }\n          default:\n            assertNever(type);\n        }\n      }\n    }),\n    [canPlay, effectEnabled, elements, preview, tokenization]\n  );\n}\nfunction mayAnimate(hasMounted, hasAnimatedOnce, effect) {\n  return !// If either the component has mounted and the trigger is\n  // onMount, or if the component has run an animation to\n  // completion, the effect is not repeatable, and the trigger\n  // is one that is impacted by repeated effects, we don't\n  // need to set initial style again.\n  (hasMounted && (effect == null ? void 0 : effect.trigger) === \"onMount\" || hasAnimatedOnce && !(effect == null ? void 0 : effect.repeat) && ((effect == null ? void 0 : effect.trigger) === \"onInView\" || (effect == null ? void 0 : effect.trigger) === \"onScrollTarget\"));\n}\nasync function runAppearEffect(tokenization = \"character\", effect, elements, transition, startDelay = 0, repeat = false, callback, cleanupRef) {\n  const enter = createKeyframes(effect);\n  const controller = new AbortController();\n  if (cleanupRef) cleanupRef.current = () => controller.abort();\n  switch (tokenization) {\n    case \"character\":\n    case \"element\":\n    case \"word\": {\n      const list = await createElementList(elements, controller);\n      if (list === null) return;\n      void animate(list, enter, {\n        ...transition,\n        restDelta: 1e-3,\n        delay: stagger((transition == null ? void 0 : transition.delay) ?? 0, { startDelay })\n      }).then(() => callback == null ? void 0 : callback());\n      if (!repeat || !cleanupRef) return;\n      cleanupRef.current = () => void animate(list, effect, {\n        ...transition,\n        restDelta: 1e-3,\n        delay: stagger((transition == null ? void 0 : transition.delay) ?? 0, { startDelay })\n      });\n      return;\n    }\n    case \"line\": {\n      try {\n        for (const element of elements) {\n          await patchAndWaitForChild(element, controller);\n        }\n      } catch {\n        return;\n      }\n      let list;\n      frame.read(() => {\n        list = createLineGroups(elements);\n        if (list.length === 0) return;\n        frame.update(() => {\n          const animations2 = list.map((group, i) => {\n            return animate(group, enter, {\n              ...transition,\n              restDelta: 1e-3,\n              // Since text tokenized into lines are groups of individual\n              // characters where each group is animated at once, we can't use\n              // motion's built in `stagger()` function, and have to manage the\n              // outer delay ourselves.\n              delay: startDelay + i * ((transition == null ? void 0 : transition.delay) ?? 0)\n            });\n          });\n          void Promise.all(animations2).then(() => callback == null ? void 0 : callback());\n        });\n      });\n      if (!repeat || !cleanupRef) return;\n      cleanupRef.current = () => {\n        if (list.length === 0) return;\n        list.forEach((group, i) => {\n          void animate(group, effect, {\n            ...transition,\n            restDelta: 1e-3,\n            delay: startDelay + i * ((transition == null ? void 0 : transition.delay) ?? 0)\n          });\n        });\n      };\n      return;\n    }\n    default:\n      assertNever(tokenization);\n  }\n}\nasync function createElementList(elements, controller) {\n  if (elements.size === 0) return null;\n  const list = [];\n  for (const element of elements) {\n    try {\n      const node = await patchAndWaitForChild(element, controller);\n      if (node) list.push(node);\n    } catch {\n      return null;\n    }\n  }\n  return list;\n}\nfunction createLineGroups(elements) {\n  const groups2 = [];\n  let currentGroup = [];\n  let lastOffset = null;\n  for (const element of elements) {\n    if (!element.current) continue;\n    const top = element.current.offsetTop;\n    const height = element.current.offsetHeight;\n    if (!height || lastOffset === null || top === lastOffset) {\n      currentGroup.push(element.current);\n    } else {\n      groups2.push(currentGroup);\n      currentGroup = [element.current];\n    }\n    if (height) lastOffset = top;\n  }\n  groups2.push(currentGroup);\n  return groups2;\n}\n\n// ../../library/src/render/presentation/RichText.tsx\nimport { jsx as jsx77 } from \"react/jsx-runtime\";\nvar BaseSVG = /* @__PURE__ */ forwardRef11(\n  function BaseSVG2(props, forwardedRef) {\n    return (\n      // biome-ignore lint/a11y/noSvgWithoutTitle: FIXME: FitText might be inaccessible to screen readers because it\u2019s wrapped in an svg\n      /* @__PURE__ */ jsx77(\"svg\", { ...props, ref: forwardedRef, children: props.children })\n    );\n  }\n);\nvar MotionSVG = /* @__PURE__ */ motion.create(BaseSVG);\nvar FitText = /* @__PURE__ */ forwardRef11(function FitText2({ viewBoxScale, viewBox, children, ...props }, forwardedRef) {\n  return /* @__PURE__ */ jsx77(MotionSVG, { ...props, ref: forwardedRef, viewBox, children: /* @__PURE__ */ jsx77(\n    motion.foreignObject,\n    {\n      width: \"100%\",\n      height: \"100%\",\n      className: \"framer-fit-text\",\n      transform: `scale(${viewBoxScale})`,\n      style: { overflow: \"visible\", transformOrigin: \"center center\" },\n      children\n    }\n  ) });\n});\nvar defaultFonts = [];\nvar richTextContainerComponentType = \"RichTextContainer\";\nvar RichTextContainer = /* @__PURE__ */ forwardRef11(function RichTextContainer2(props, forwardedRef) {\n  const {\n    __fromCanvasComponent = false,\n    _forwardedOverrideId,\n    _forwardedOverrides,\n    _usesDOMRect,\n    anchorLinkOffsetY,\n    as: _as,\n    bottom,\n    center,\n    children,\n    environment: environment2 = RenderTarget.current,\n    fonts = defaultFonts,\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    _initialStyle,\n    stylesPresetsClassNames,\n    text: plainText,\n    top,\n    verticalAlignment = \"top\",\n    visible = true,\n    width,\n    withExternalLayout = false,\n    viewBox,\n    viewBoxScale = 1,\n    effect,\n    ...rest\n  } = props;\n  const parentSize = useParentSize();\n  const isOnCanvas = useIsOnFramerCanvas();\n  const inCodeComponent = useContext26(ComponentContainerContext);\n  const layoutId = useLayoutId(props);\n  const fallbackRef = useRef24(null);\n  const containerRef = forwardedRef ?? fallbackRef;\n  useMeasureLayout(props, containerRef);\n  useLoadFonts(fonts, __fromCanvasComponent, containerRef);\n  useInsertionEffect6(() => {\n    injectComponentCSSRules();\n  }, []);\n  const textEffect = useTextEffect(effect, containerRef);\n  const processedChildren = useMemo21(() => {\n    if (!children) return;\n    return processRichTextChildren(\n      children,\n      stylesPresetsClassNames,\n      plainText,\n      anchorLinkOffsetY,\n      void 0,\n      textEffect.getTokenizer()\n    );\n  }, [children, stylesPresetsClassNames, plainText, anchorLinkOffsetY, textEffect]);\n  if (!visible) return null;\n  const isHidden = isEditable && environment2() === RenderTarget.canvas;\n  const containerStyle = {\n    outline: \"none\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: convertVerticalAlignment(verticalAlignment),\n    opacity: isHidden ? 0 : opacity,\n    flexShrink: 0\n  };\n  const positionStyle = {};\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 ? props.transformTemplate ?? transformTemplate(center) : void 0;\n  if (!withExternalLayout) {\n    if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n      positionStyle.x = frame2.x + (isNumber(style == null ? void 0 : style.x) ? style.x : 0);\n      positionStyle.y = frame2.y + (isNumber(style == null ? void 0 : style.y) ? style.y : 0);\n      containerStyle.rotate = Animatable.getNumber(rotation);\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  Object.assign(containerStyle, _initialStyle, style, positionStyle);\n  if (layoutId) {\n    rest.layout = \"preserve-aspect\";\n  }\n  const Component17 = htmlElementAsMotionComponent(props.as);\n  const dataFramerName = rest[\"data-framer-name\"] ?? name;\n  if (isString(props.viewBox)) {\n    if (props.as !== void 0) {\n      return /* @__PURE__ */ jsx77(\n        Component17,\n        {\n          ...rest,\n          ref: containerRef,\n          style: containerStyle,\n          layoutId,\n          transformTemplate: template,\n          \"data-framer-name\": dataFramerName,\n          \"data-framer-component-type\": richTextContainerComponentType,\n          children: /* @__PURE__ */ jsx77(FitText, { viewBox, viewBoxScale, style: { width: \"100%\", height: \"100%\" }, children: processedChildren })\n        }\n      );\n    } else {\n      return /* @__PURE__ */ jsx77(\n        FitText,\n        {\n          ...rest,\n          ref: containerRef,\n          style: containerStyle,\n          layoutId,\n          viewBox,\n          viewBoxScale,\n          transformTemplate: template,\n          \"data-framer-name\": dataFramerName,\n          \"data-framer-component-type\": richTextContainerComponentType,\n          children: processedChildren\n        }\n      );\n    }\n  }\n  return /* @__PURE__ */ jsx77(\n    Component17,\n    {\n      ...rest,\n      ref: containerRef,\n      style: containerStyle,\n      layoutId,\n      transformTemplate: template,\n      \"data-framer-name\": dataFramerName,\n      \"data-framer-component-type\": richTextContainerComponentType,\n      children: processedChildren\n    }\n  );\n});\nfunction isFragment(element) {\n  return element.type === Fragment11;\n}\nfunction isLineBreak(element) {\n  return element.type === \"br\";\n}\nfunction processRichTextChildren(element, stylesPresetsClassNames, plainText, anchorLinkOffsetY, slugCounters = {}, tokenizer, depth = isFragment(element) ? -1 : 0) {\n  let children = Children4.toArray(element.props.children);\n  if (isString(plainText)) {\n    children = children.slice(0, 1);\n  }\n  let onlyLineBreaks = true;\n  children = children.map((child) => {\n    if (!isValidElement6(child) || !isLineBreak(child)) onlyLineBreaks = false;\n    if (isValidElement6(child)) {\n      return processRichTextChildren(\n        child,\n        stylesPresetsClassNames,\n        plainText,\n        anchorLinkOffsetY,\n        slugCounters,\n        tokenizer,\n        depth + 1\n      );\n    }\n    const text = isString(plainText) ? plainText : child;\n    return isString(text) && tokenizer ? tokenizer.text(text) : text;\n  });\n  const { [\"data-preset-tag\"]: dataPresetTag, ...props } = element.props;\n  if (isString(element.type) || isMotionComponent(element.type)) {\n    const elementType = unwrapMotionComponent(element.type) || element.type;\n    const tag = dataPresetTag || elementType;\n    const stylesPresetClassName = isString(tag) ? stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[tag] : void 0;\n    props.className = cx(\"framer-text\", props.className, stylesPresetClassName);\n    if (tokenizer && depth === 0 && !onlyLineBreaks) Object.assign(props, tokenizer.props(props.style));\n    const isHeading = elementType === \"h1\" || elementType === \"h2\" || elementType === \"h3\" || elementType === \"h4\" || elementType === \"h5\" || elementType === \"h6\";\n    const anchorLinkStylePresetClassName = stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[\"anchor\"];\n    if (isHeading && anchorLinkStylePresetClassName) {\n      const slug = generateHeadingSlug(children, slugCounters);\n      props.id = slug;\n      const className2 = cx(\"framer-text\", anchorLinkStylePresetClassName);\n      const anchorLink = /* @__PURE__ */ jsx77(\"a\", { href: `#${slug}`, className: className2, children });\n      props.style = { ...props.style ?? {}, scrollMarginTop: anchorLinkOffsetY };\n      children = [anchorLink];\n    }\n  }\n  return cloneElement3(element, props, ...children);\n}\nfunction generateHeadingSlug(children, slugCounters) {\n  const headingText = children.map(extractTextFromReactNode).join(\"\");\n  let slug = slugify(headingText);\n  const slugCounter = slugCounters[slug] ?? 0;\n  if (slugCounter > 0) {\n    slug += `-${slugCounter}`;\n  }\n  slugCounters[slug] = slugCounter + 1;\n  return slug;\n}\nfunction extractTextFromReactNode(node) {\n  if (isString(node) || isNumber(node)) {\n    return node.toString();\n  }\n  if (isValidElement6(node)) {\n    return extractTextFromReactNode(node.props.children);\n  }\n  if (Array.isArray(node)) {\n    return node.map(extractTextFromReactNode).join(\"\");\n  }\n  return \"\";\n}\nvar RichText2 = /* @__PURE__ */ forwardRef11(function RichText3({ children, html, htmlFromDesign, ...props }, forwardedRef) {\n  const content = html || children || htmlFromDesign;\n  if (isString(content)) {\n    if (!props.stylesPresetsClassName && isObject2(props.stylesPresetsClassNames)) {\n      props.stylesPresetsClassName = Object.values(props.stylesPresetsClassNames).join(\" \");\n    }\n    const contentProp = {\n      // We need to use the original prop name.\n      [isString(html) ? \"html\" : \"htmlFromDesign\"]: content\n    };\n    return /* @__PURE__ */ jsx77(\n      DeprecatedRichText,\n      {\n        ...props,\n        ...contentProp,\n        ref: forwardedRef\n      }\n    );\n  }\n  if (!props.stylesPresetsClassNames && isString(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__ */ jsx77(RichTextContainer, { ...props, ref: forwardedRef, children: isValidElement6(content) ? content : void 0 });\n});\n\n// ../../library/src/render/presentation/SVG.tsx\nimport React84, { forwardRef as forwardRef12 } from \"react\";\n\n// ../../library/src/render/utils/elementPropertiesForGradient.ts\nfunction linearGradientLine(angle) {\n  var _a, _b;\n  const rad = angle * Math.PI / 180;\n  const offset = {\n    x: -Math.sin(rad) * 100,\n    y: Math.cos(rad) * 100\n  };\n  const anglePoint = Point(offset.x, offset.y);\n  const angleLine = Line(Point(0.5, 0.5), anglePoint);\n  const points = Rect.points({ x: 0, y: 0, width: 1, height: 1 });\n  const sortedPoints = points.map((point) => ({ point, distance: Point.distance(anglePoint, point) })).sort((a2, b2) => a2.distance - b2.distance);\n  const a = (_a = sortedPoints[0]) == null ? void 0 : _a.point;\n  const b = (_b = sortedPoints[1]) == null ? void 0 : _b.point;\n  assert(a && b, \"linearGradientLine: Must have 2 closest points.\");\n  const [c, d] = points.filter((point) => !Point.isEqual(point, a) && !Point.isEqual(point, b));\n  assert(c && d, \"linearGradientLine: Must have 2 opposing points.\");\n  const start = Line.intersection(angleLine, Line(a, b));\n  const end = Line.intersection(angleLine, Line(c, d));\n  assert(start && end, \"linearGradientLine: Must have a start and end point.\");\n  return Line(start, end);\n}\nfunction elementPropertiesForLinearGradient(gradient, id) {\n  var _a, _b;\n  const line = linearGradientLine(gradient.angle);\n  const stops = gradientColorStops(gradient);\n  const startPosition = ((_a = stops[0]) == null ? void 0 : _a.position) ?? 0;\n  const endPosition = ((_b = stops[stops.length - 1]) == null ? void 0 : _b.position) ?? 1;\n  const startPoint = Line.pointAtPercentDistance(line, startPosition);\n  const endPoint = Line.pointAtPercentDistance(line, endPosition);\n  const interpolator = interpolate([startPosition, endPosition], [0, 1]);\n  return {\n    id: `id${id}g${LinearGradient.hash(gradient)}`,\n    x1: startPoint.x,\n    y1: startPoint.y,\n    x2: endPoint.x,\n    y2: endPoint.y,\n    stops: stops.map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: interpolator(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/types/RelativeNumber.ts\nfunction isRelativeNumber(value) {\n  if (!isString(value)) return false;\n  const lastChar = value.charAt(value.length - 1);\n  if (lastChar !== \"%\") return false;\n  const withoutLastChar = value.slice(0, -1);\n  const float = parseFloat(withoutLastChar);\n  return isNumber(float);\n}\nfunction getRelativeNumberValue(value) {\n  const withoutLastChar = value.slice(0, -1);\n  const float = parseFloat(withoutLastChar);\n  return isNumber(float) ? float : 50;\n}\n\n// ../../library/src/render/utils/imagePatternPropsForFill.tsx\nfunction getPositionXFraction(positionX) {\n  if (isRelativeNumber(positionX)) return getRelativeNumberValue(positionX) / 100;\n  if (positionX === \"left\") return 0;\n  if (positionX === \"right\") return 1;\n  return 0.5;\n}\nfunction getPositionYFraction(positionY) {\n  if (isRelativeNumber(positionY)) return getRelativeNumberValue(positionY) / 100;\n  if (positionY === \"top\") return 0;\n  if (positionY === \"bottom\") return 1;\n  return 0.5;\n}\nfunction imagePatternPropsForFill(fill, frame2, id, includeTransform) {\n  fill = Animatable.get(fill, \"#09F\");\n  if (!BackgroundImage.isImageObject(fill)) return void 0;\n  if (!fill.pixelWidth || !fill.pixelHeight) return void 0;\n  const imageWidth = fill.pixelWidth;\n  const imageHeight = fill.pixelHeight;\n  let transform2;\n  const { fit } = fill;\n  let width = 1, height = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  if (fit === \"fill\" || fit === \"fit\" || fit === \"tile\" || !fit) {\n    let scaleX = 1;\n    let scaleY = 1;\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 === \"tile\") {\n      fill.backgroundSize ??= 1;\n      width = Math.round(fill.backgroundSize * (imageWidth / 2));\n      height = Math.round(fill.backgroundSize * (imageHeight / 2));\n      const layerPositionX = frame2.x ?? 0;\n      const layerPositionY = frame2.y ?? 0;\n      let extraOffsetX = 0;\n      let extraOffsetY = 0;\n      if (includeTransform) {\n        extraOffsetX = layerPositionX;\n        extraOffsetY = layerPositionY;\n      }\n      offsetX = (frame2.width - width) * getPositionXFraction(fill.positionX) + extraOffsetX;\n      offsetY = (frame2.height - height) * getPositionYFraction(fill.positionY) + extraOffsetY;\n      transform2 = `translate(${offsetX + layerPositionX}, ${offsetY + layerPositionY})`;\n    } else {\n      if (fit === \"fill\" || !fit ? validScaleY > validScaleX : validScaleY < validScaleX) {\n        scaleY = validScaleY;\n        offsetY = (1 - validScaleY) * getPositionYFraction(fill.positionY);\n      } else {\n        scaleX = validScaleX;\n        offsetX = (1 - validScaleX) * getPositionXFraction(fill.positionX);\n      }\n      transform2 = `translate(${offsetX}, ${offsetY}) scale(${scaleX}, ${scaleY})`;\n    }\n  }\n  const imageId = `id${id}g${\"-fillImage\"}`;\n  return { id: imageId, path: fill.src ?? \"\", transform: transform2, width, height, offsetX, offsetY };\n}\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  if (/^\\w+:/u.test(asset) && !isAssetReference(asset)) return asset;\n  if (typeof pixelSize !== \"number\") pixelSize = void 0;\n  else if (pixelSize <= 512) pixelSize = 512;\n  else if (pixelSize <= 1024) pixelSize = 1024;\n  else if (pixelSize <= 2048) pixelSize = 2048;\n  else pixelSize = 4096;\n  const isExport = RenderTarget.current() === RenderTarget.export;\n  return runtime.assetResolver(asset, { pixelSize, isExport }) ?? \"\";\n}\n\n// ../../library/src/render/presentation/ImagePatternElement.tsx\nimport { jsx as jsx78 } from \"react/jsx-runtime\";\nvar ImagePatternElement = ({\n  id,\n  path,\n  transform: transform2,\n  repeat,\n  width,\n  height,\n  offsetX,\n  offsetY\n}) => {\n  const href = imageUrlForAsset(path);\n  return /* @__PURE__ */ jsx78(\n    \"pattern\",\n    {\n      id,\n      width: repeat ? width : \"100%\",\n      height: repeat ? height : \"100%\",\n      patternContentUnits: repeat ? void 0 : \"objectBoundingBox\",\n      patternUnits: repeat ? \"userSpaceOnUse\" : void 0,\n      x: repeat ? offsetX : void 0,\n      y: repeat ? offsetY : void 0,\n      children: /* @__PURE__ */ jsx78(\n        \"image\",\n        {\n          width: repeat ? width : 1,\n          height: repeat ? height : 1,\n          href,\n          preserveAspectRatio: \"none\",\n          transform: repeat ? void 0 : transform2,\n          x: repeat ? 0 : void 0,\n          y: repeat ? 0 : void 0\n        },\n        href\n      )\n    }\n  );\n};\n\n// ../../library/src/render/presentation/SharedSVGManager.ts\nimport { useEffect as useEffect26 } from \"react\";\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};\nvar parser;\nvar supportsNativeParseHTML = /* @__PURE__ */ (() => (\n  // Firefox has rare-random issues with the native parser: https://framer-team.slack.com/archives/C01B14R6E22/p1724159313153969\n  !isFirefox() && typeof Document !== \"undefined\" && typeof Document.parseHTMLUnsafe === \"function\"\n))();\nfunction domParser(html, type) {\n  if (supportsNativeParseHTML && !type) return Document.parseHTMLUnsafe(html);\n  parser ??= new DOMParser();\n  return parser.parseFromString(html, type ?? \"text/html\");\n}\n\n// ../../library/src/render/presentation/SharedSVGManager.ts\nvar useDOM = /* @__PURE__ */ 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 visuallyHiddenStyle = \"position: absolute; overflow: hidden; bottom: 0; left: 0; width: 0; height: 0; z-index: 0; contain: strict\";\nvar SharedSVGManager = class {\n  constructor() {\n    __publicField(this, \"entries\", /* @__PURE__ */ new Map());\n    __publicField(this, \"vectorSetItems\", /* @__PURE__ */ new Map());\n  }\n  debugGetEntries() {\n    return this.entries;\n  }\n  /** Request to render a svg, this will ensure there is a global instance and will return a\n   * template referencing the image. Must be balanced with `unsubscribe()` calls using the same\n   * svg. If called multiple times while the shared SVG exists, the generateUniqueIds and\n   * contentId parameters are ignored. */\n  subscribe(svg, generateUniqueIds, contentId, overflowVisible) {\n    if (!svg || svg === \"\") 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        svgDom.removeAttribute(\"xmlns\");\n        svgDom.removeAttribute(\"xlink\");\n        svgDom.removeAttribute(\"xmlns:xlink\");\n        uniqueSVG = svgDom.outerHTML;\n      }\n      entry = this.createDOMElementFor(uniqueSVG, contentId, svgSize, overflowVisible);\n      this.entries.set(svg, entry);\n    }\n    entry.count += 1;\n    return entry.innerHTML;\n  }\n  /** Returns the viewBox for the svg, or undefined if there is no viewBox. */\n  getViewBox(svg) {\n    if (!svg || svg === \"\") return;\n    const entry = this.entries.get(svg);\n    return entry == null ? void 0 : entry.viewBox;\n  }\n  /** When no longer rendering an svg it must be unsubscribed from so resources can be cleaned up.\n   * Pass in the same svg as used with `subscribe()`. */\n  unsubscribe(svg) {\n    if (!svg || svg === \"\") return;\n    const entry = this.entries.get(svg);\n    if (!entry) return;\n    entry.count -= 1;\n    if (entry.count > 0) return;\n    setTimeout(() => this.maybeRemoveEntry(svg), 5e3);\n  }\n  maybeRemoveEntry(svg) {\n    const entry = this.entries.get(svg);\n    if (!entry) return;\n    if (entry.count > 0) return;\n    this.entries.delete(svg);\n    this.removeDOMElement(entry);\n  }\n  removeDOMElement(entry) {\n    if (useDOM) {\n      const container = document == null ? void 0 : document.getElementById(entry.id);\n      container == null ? void 0 : container.remove();\n    }\n  }\n  getOrCreateTemplateContainer() {\n    const container = document.getElementById(\"svg-templates\");\n    if (container) return container;\n    const newContainer = document.createElement(\"div\");\n    newContainer.id = \"svg-templates\";\n    newContainer.ariaHidden = \"true\";\n    newContainer.style.cssText = visuallyHiddenStyle;\n    document.body.appendChild(newContainer);\n    return newContainer;\n  }\n  maybeAppendTemplate(id, svg) {\n    if (document.getElementById(id)) return;\n    const container = document.createElement(\"div\");\n    container.innerHTML = svg;\n    const svgElement = container.firstElementChild;\n    if (!svgElement) return;\n    svgElement.id = id;\n    this.getOrCreateTemplateContainer().appendChild(svgElement);\n  }\n  createDOMElementFor(svg, id, size, overflowVisible) {\n    if (useDOM) this.maybeAppendTemplate(id, svg);\n    const box = size ? `0 0 ${size.width} ${size.height}` : void 0;\n    const viewBox = box ? ` viewBox=\"${box}\"` : \"\";\n    const innerHTML = `<svg style=\"width:100%;height:100%;${overflowVisible ? \"overflow: visible;\" : \"\"}\"${viewBox}><use href=\"#${id}\"/></svg>`;\n    return new SharedSVGEntry(id, svg, innerHTML, box);\n  }\n  /**\n   * Vectors are serialized in such a way that they don't need to be parsed again, instead they\n   * just need to provide their template. The hash is already known.\n   *\n   * VECTOR @TODO - Unsubscribe from vector set items.\n   */\n  template(revision, svg) {\n    const entry = this.vectorSetItems.get(revision);\n    if (entry) return `#${revision}`;\n    this.vectorSetItems.set(revision, { svg, count: 0 });\n    if (!useDOM) return `#${revision}`;\n    this.maybeAppendTemplate(revision, svg);\n    return `#${revision}`;\n  }\n  subscribeToTemplate(revision) {\n    const entry = this.vectorSetItems.get(revision);\n    if (!entry) return;\n    entry.count++;\n    return () => {\n      const latest = this.vectorSetItems.get(revision);\n      if (!latest) return;\n      latest.count--;\n      if (latest.count > 0) return;\n      setTimeout(() => {\n        var _a, _b;\n        if ((_a = this.vectorSetItems.get(revision)) == null ? void 0 : _a.count) return;\n        this.vectorSetItems.delete(revision);\n        if (useDOM) (_b = document == null ? void 0 : document.getElementById(revision)) == null ? void 0 : _b.remove();\n      }, 5e3);\n    };\n  }\n  clear() {\n    this.entries.clear();\n  }\n  /** Returns a string containing a div#svg-templates and all the current svg templates. Can be\n   * used after running `ReactDOMServer.renderToString()` */\n  generateTemplates() {\n    const output = [];\n    output.push(`<div id=\"svg-templates\" style=\"${visuallyHiddenStyle}\" aria-hidden=\"true\">`);\n    this.entries.forEach((value) => output.push(value.svg));\n    this.vectorSetItems.forEach((value) => output.push(value.svg));\n    output.push(\"</div>\");\n    return output.join(\"\\n\");\n  }\n};\nfunction useSVGTemplate(revision, svg) {\n  useEffect26(() => sharedSVGManager.subscribeToTemplate(revision), [revision]);\n  return sharedSVGManager.template(revision, svg);\n}\nvar sharedSVGManager = /* @__PURE__ */ new SharedSVGManager();\nfunction parseSVG(svg) {\n  try {\n    const doc = domParser(svg);\n    const node = doc.getElementsByTagName(\"svg\")[0];\n    if (!node) 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(/[^\\w\\-:.]|^[^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) 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) 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 = /* @__PURE__ */ (() => ({\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  // A few assumptions about relative units.\n  em: 16,\n  ex: 8,\n  ch: 8,\n  rem: 16\n}))();\nfunction parseLength(value) {\n  var _a;\n  if (!value) return;\n  const m2 = /(-?[\\d.]+)([a-z%]*)/u.exec(value);\n  if ((m2 == null ? void 0 : m2[1]) === void 0 || (m2 == null ? void 0 : m2[2]) === void 0) return;\n  if ((_a = m2[2]) == null ? void 0 : _a.startsWith(\"%\")) 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\") return;\n  if (width <= 0 || height <= 0) return;\n  return { width, height };\n}\n\n// ../../library/src/render/presentation/SVG.tsx\nimport { Fragment as Fragment12, jsx as jsx79, jsxs as jsxs18 } from \"react/jsx-runtime\";\nvar SVG = /* @__PURE__ */ forwardRef12(function SVG2(props, forwardedRef) {\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const layoutRef = React84.useRef(null);\n  const ref = forwardedRef ?? layoutRef;\n  const providedWindow = useProvidedWindow();\n  useMeasureLayout(props, layoutRef);\n  return /* @__PURE__ */ jsx79(\n    SVGComponent,\n    {\n      ...props,\n      innerRef: ref,\n      parentSize,\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 containsCustomPropertyReference(svg) {\n  return svg.indexOf(\"var(--\") >= 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;\n  const div = container.current;\n  if (!div) return;\n  const localWindow = props.providedWindow ?? safeWindow;\n  const svg = div.firstElementChild;\n  if (!svg || !(svg instanceof localWindow.SVGSVGElement)) 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) return;\n  const { intrinsicWidth, intrinsicHeight, _constraints } = props;\n  if (((_a = svg.viewBox.baseVal) == null ? void 0 : _a.width) === 0 && ((_b = svg.viewBox.baseVal) == null ? void 0 : _b.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}\nfunction SVGStyleSheet() {\n  React84.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return null;\n}\nvar SVGComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      __publicField(this, \"container\", React84.createRef());\n      __publicField(this, \"svgElement\", null);\n      __publicField(this, \"setSVGElement\", (element) => {\n        this.svgElement = element;\n        this.setLayerElement(element);\n      });\n      __publicField(this, \"previouslyRenderedSVG\", \"\");\n      __publicField(this, \"unmountedSVG\", \"\");\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.unmountedSVG) {\n        const { svgContentId } = this.props;\n        const contentid = svgContentId ? `svg${svgContentId}` : null;\n        sharedSVGManager.subscribe(this.unmountedSVG, !svgContentId, contentid);\n        this.previouslyRenderedSVG = this.unmountedSVG;\n      }\n      if (this.props.svgContentId) return;\n      sizeSVG(this.container, this.props);\n    }\n    componentWillUnmount() {\n      sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n      this.unmountedSVG = this.previouslyRenderedSVG;\n      this.previouslyRenderedSVG = \"\";\n    }\n    componentDidUpdate(prevProps) {\n      super.componentDidUpdate(prevProps);\n      if (this.props.svgContentId) 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 === RenderTarget.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        return;\n      }\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    render() {\n      countNodeRender();\n      const {\n        id,\n        visible,\n        style,\n        fill,\n        svg,\n        intrinsicHeight,\n        intrinsicWidth,\n        title,\n        description,\n        layoutId,\n        className: className2,\n        variants,\n        withExternalLayout,\n        innerRef,\n        svgContentId,\n        height: _height,\n        opacity: _opacity,\n        width: _width,\n        requiresOverflowVisible,\n        ...rest\n      } = this.props;\n      if (!withExternalLayout && (!visible || !id)) return null;\n      const identifier = id ?? layoutId ?? \"svg\";\n      const frame2 = this.frame;\n      const size = 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 { stops, x1, x2, y1, y2 } = elementPropertiesForLinearGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ jsx79(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" },\n            role: \"presentation\",\n            children: /* @__PURE__ */ jsx79(\"linearGradient\", { id: gradientId, x1, x2, y1, y2, children: stops.map((stop, idx) => {\n              return /* @__PURE__ */ jsx79(\n                \"stop\",\n                {\n                  offset: stop.position,\n                  stopColor: stop.color,\n                  stopOpacity: stop.alpha\n                },\n                idx\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__ */ jsx79(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" },\n            role: \"presentation\",\n            children: /* @__PURE__ */ jsx79(\n              \"radialGradient\",\n              {\n                id: gradientId,\n                cy: gradient.centerAnchorY,\n                cx: gradient.centerAnchorX,\n                r: gradient.widthFactor,\n                children: elementProperties.stops.map((stop, idx) => {\n                  return /* @__PURE__ */ jsx79(\n                    \"stop\",\n                    {\n                      offset: stop.position,\n                      stopColor: stop.color,\n                      stopOpacity: stop.alpha\n                    },\n                    idx\n                  );\n                })\n              }\n            )\n          }\n        );\n      } else if (BackgroundImage.isImageObject(fill)) {\n        const imagePattern = imagePatternPropsForFill(fill, size, identifier);\n        if (imagePattern) {\n          outerStyle.fill = `url(#${imagePattern.id})`;\n          fillElement = /* @__PURE__ */ jsx79(\n            \"svg\",\n            {\n              ref: this.setSVGElement,\n              width: \"100%\",\n              height: \"100%\",\n              style: { position: \"absolute\" },\n              role: \"presentation\",\n              children: /* @__PURE__ */ jsx79(\"defs\", { children: /* @__PURE__ */ jsx79(ImagePatternElement, { ...imagePattern }) })\n            }\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 = (\n        // If requiresOverflowVisible is true, we cannot safely render the SVG as background\n        // images, as it might cropped any centered stroke that exceeds the bounding box.\n        !requiresOverflowVisible && !fillElement && !outerStyle.fill && !outerStyle.background && !outerStyle.backgroundImage && svg.length < MAX_BACKGROUND_SVG_TEXT_LENGTH && !containsImageReference(svg) && !containsCustomPropertyReference(svg)\n      );\n      let content = null;\n      if (svgAsBackgroundImage) {\n        outerStyle.backgroundSize = \"100% 100%\";\n        outerStyle.backgroundImage = encodeSVGForCSS(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, requiresOverflowVisible);\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = svg;\n        if (hasBorderRadius(outerStyle)) {\n          outerStyle.overflow = \"hidden\";\n        }\n        content = /* @__PURE__ */ jsxs18(Fragment12, { children: [\n          fillElement,\n          /* @__PURE__ */ jsx79(\n            \"div\",\n            {\n              className: \"svgContainer\",\n              style: innerStyle,\n              ref: this.container,\n              dangerouslySetInnerHTML: { __html }\n            },\n            BackgroundImage.isImageObject(fill) ? fill.src : \"\"\n          )\n        ] });\n      }\n      const MotionComponent = htmlElementAsMotionComponent(this.props.as);\n      const { href, target, rel, onClick, onTap } = this.props;\n      const hasTitleOrDescription = title || description;\n      return /* @__PURE__ */ jsxs18(\n        MotionComponent,\n        {\n          ...dataProps,\n          ...rest,\n          layoutId,\n          transformTemplate: hasTransformTemplate ? transformTemplate(this.props.center) : void 0,\n          id,\n          ref: innerRef,\n          style: outerStyle,\n          className: className2,\n          variants,\n          tabIndex: this.props.tabIndex,\n          role: hasTitleOrDescription ? \"img\" : void 0,\n          \"aria-label\": title,\n          \"aria-description\": description,\n          \"aria-hidden\": hasTitleOrDescription ? void 0 : \"true\",\n          onTap,\n          onClick,\n          ...{ href, target, rel },\n          children: [\n            content,\n            /* @__PURE__ */ jsx79(SVGStyleSheet, {})\n          ]\n        }\n      );\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_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  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultSVGProps\n  }), _a;\n})();\n\n// ../../library/src/render/presentation/Text.tsx\nimport React86, { useEffect as useEffect27, useRef as useRef25 } from \"react\";\n\n// ../../library/src/render/fonts/useFontLoadStatus.tsx\nimport React85 from \"react\";\nfunction useFontLoadStatus(fontSelectors = [], timeout = 5e3) {\n  const missingFontSelectors = fontSelectors.filter((s) => !fontStore.isSelectorLoaded(s));\n  const [fontLoadStatus, setFontLoadStatus] = React85.useState(\n    missingFontSelectors.length ? \"loading\" : \"done\"\n  );\n  React85.useEffect(() => {\n    if (!missingFontSelectors.length) return;\n    setFontLoadStatus(\"loading\");\n    const timer = setTimeout(() => {\n      setFontLoadStatus(\"timeout\");\n    }, timeout);\n    fontStore.loadFonts(missingFontSelectors).then(() => {\n      clearTimeout(timer);\n      setFontLoadStatus(\"done\");\n    });\n  }, [fontSelectors.join(\", \"), missingFontSelectors.join(\", \")]);\n  return fontLoadStatus;\n}\n\n// ../../library/src/render/presentation/Text.tsx\nimport { Fragment as Fragment13, jsx as jsx80, jsxs as jsxs19 } from \"react/jsx-runtime\";\nfunction TextStyleSheet() {\n  React86.useInsertionEffect(() => {\n    injectComponentCSSRules();\n  }, []);\n  return null;\n}\nvar Text2 = /* @__PURE__ */ React86.forwardRef(function Text3(props, forwardedRef) {\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const fallbackLayoutRef = useRef25(null);\n  const layoutRef = forwardedRef ?? fallbackLayoutRef;\n  const { navigate, getRoute } = useRouter();\n  const currentRoute = useCurrentRoute();\n  useRoutePreloader(props.preload ?? []);\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 = useRef25([]);\n  const fontsDidChange = !isShallowEqualArray(prevFontsRef.current ?? [], fonts ?? []);\n  prevFontsRef.current = fonts;\n  useEffect27(() => {\n    if (!fontsDidChange || !fonts) return;\n    void fontStore.loadFonts(fonts).then(({ newlyLoadedFontCount }) => {\n      if (!__fromCanvasComponent || !layoutRef.current || RenderTarget.current() !== RenderTarget.canvas) return;\n      if (newlyLoadedFontCount === 0) return;\n      measureClosestComponentContainer(layoutRef.current);\n    });\n  }, [fonts]);\n  const implicitPathVariables = useImplicitPathVariables();\n  const interceptPageLinks = React86.useCallback(\n    (event) => {\n      const anchorElement = findAnchorElement(event.target, layoutRef.current);\n      if (event.metaKey || !navigate || !anchorElement) return;\n      const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n      if (didNavigate) {\n        event.preventDefault();\n      }\n    },\n    [navigate, implicitPathVariables]\n  );\n  useEffect27(() => {\n    const ref = layoutRef.current;\n    if (!ref) return;\n    ref.addEventListener(\"click\", interceptPageLinks);\n    return () => ref.removeEventListener(\"click\", interceptPageLinks);\n  }, [interceptPageLinks]);\n  const rawHTML = React86.useMemo(() => {\n    if (!props.rawHTML || onCanvas || !getRoute || !currentRoute) return props.rawHTML;\n    return replaceFramerPageLinks(props.rawHTML, getRoute, currentRoute, implicitPathVariables);\n  }, [props.rawHTML, getRoute, currentRoute, implicitPathVariables]);\n  return /* @__PURE__ */ jsx80(\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      __publicField(this, \"editorText\");\n      __publicField(this, \"setElement\", (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      });\n      /** Used by the ComponentContainerContext */\n      __publicField(this, \"renderMain\", (inCodeComponent) => {\n        countNodeRender();\n        const {\n          font,\n          visible,\n          alignment,\n          opacity,\n          id,\n          layoutId,\n          className: className2,\n          transition,\n          variants,\n          name,\n          __fromCanvasComponent,\n          _initialStyle,\n          widthType: _widthType,\n          heightType: _heightType,\n          _usesDOMRect,\n          autoSize,\n          style: styleProp,\n          fontLoadStatus,\n          matchesCurrentRoute,\n          preload: _preload,\n          tabIndex,\n          ...rest\n        } = this.props;\n        if (!visible) {\n          return null;\n        }\n        const isHidden = this.props.isEditable && this.props.environment() === RenderTarget.canvas;\n        const justifyContent = convertVerticalAlignment2(this.props.verticalAlignment);\n        const style = {\n          outline: \"none\",\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent,\n          opacity: isHidden ? 0 : opacity,\n          flexShrink: 0\n        };\n        if (_initialStyle) {\n          for (const key7 in _initialStyle) {\n            if (key7.startsWith(\"--framer\")) {\n              asRecord(style)[key7] = asRecord(_initialStyle)[key7];\n            }\n          }\n        }\n        const dataProps = {\n          \"data-framer-component-type\": \"Text\",\n          \"data-framer-name\": rest[\"data-framer-name\"] ?? name\n        };\n        if (autoSize) {\n          asRecord(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        let rawHTML = this.props.rawHTML;\n        const text = this.getOverrideText() || this.props.text;\n        if (isString(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) Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n        if (rawHTML) {\n          style.lineHeight = \"1px\";\n          style.fontSize = \"0px\";\n          if (RenderTarget.current() === RenderTarget.canvas && fontLoadStatus === \"loading\") {\n            style.visibility = \"hidden\";\n          }\n          if (RenderTarget.current() === RenderTarget.canvas && fontLoadStatus === \"timeout\") {\n            style.backgroundColor = \"rgba(255, 0, 0, 0.3)\";\n          }\n          Object.assign(style, styleProp);\n          if (alignment) asRecord(style)[\"--framer-text-alignment\"] = alignment;\n          const tabIndexProps = getTabIndexProps(tabIndex);\n          return /* @__PURE__ */ jsx80(\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(className2, 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 ?? id;\n      if (forwardedOverrideId && _forwardedOverrides) {\n        const text = _forwardedOverrides[forwardedOverrideId];\n        if (isString(text)) {\n          return text;\n        }\n      }\n    }\n    render() {\n      return /* @__PURE__ */ jsxs19(Fragment13, { children: [\n        /* @__PURE__ */ jsx80(ComponentContainerContext.Consumer, { children: this.renderMain }),\n        /* @__PURE__ */ jsx80(TextStyleSheet, {})\n      ] });\n    }\n    collectLayout(style, inCodeComponent) {\n      if (this.props.withExternalLayout) 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          // Using \u201Cauto\u201D fixes wrapping problems where our size calculation does not work out well when zooming the\n          // text (due to rendering differences).\n          // TODO: When the `autoSize` prop is removed, it's safe to leave\n          // this at `${frame.width}px`, because all auto cases will be\n          // handled by DOM layout in the `else` side of the conditional\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() === RenderTarget.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    // biome-ignore lint/suspicious/useGetterReturn: legacy text component\n    get transformTemplate() {\n      const { _usesDOMRect, widthType, heightType, __fromCanvasComponent } = this.props;\n      if (this.props.transformTemplate) 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) return transformTemplate(this.props.center);\n    }\n  }, __publicField(_a, \"supportsConstraints\", true), __publicField(_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  }), __publicField(_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 = /* @__PURE__ */ (() => new RegExp(\n  `^(${linkTag}${outerTag}${blockTag}${inlineTag}).*?(${inlineClosingTag}).*?(${blockClosingTag}${outerClosingTag}${linkClosingTag})$`,\n  //                                              ^^^ this is the content we want to replace\n  //                                                                      ^^^ this is the content we want to discard\n  \"su\"\n  // let the \".\" also match newlines\n))();\nfunction replaceDraftHTMLWithText(rawHTML, text) {\n  return rawHTML.replace(\n    textContentRegex,\n    (_, openingTags, inlineClosingTag2, closingTags) => openingTags + text + inlineClosingTag2 + \"<br>\" + closingTags\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 getTabIndexProps(tabIndex) {\n  if (tabIndex === void 0) return {};\n  return { tabIndex };\n}\n\n// ../../library/src/utils/internalId.ts\nvar keys2 = /* @__PURE__ */ new Map();\nvar InternalID = class _InternalID {\n  constructor(id) {\n    this.id = id;\n    __publicField(this, \"_link\", null);\n    __publicField(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) return res;\n    return this._link = \"#\" + this.id;\n  }\n  get urlLink() {\n    const res = this._urllink;\n    if (res) return res;\n    return this._urllink = \"url(#\" + this.id + \")\";\n  }\n  static forKey(key7) {\n    let res = keys2.get(key7);\n    if (res) 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 PathSegmentOuter = /* @__PURE__ */ (() => {\n  const _PathSegment = class _PathSegment {\n    constructor(value) {\n      // #region withClassDiscriminator\n      // NOTE: this implementation carefully copies the implementation of `withClassDiscriminator`\n      // from Vekter. If making changes here, make sure to sync them to `withClassDiscriminator` as well.\n      __publicField(this, \"__class\", \"PathSegment\");\n      // #endregion\n      __publicField(this, \"x\", 0);\n      // The anchor point of the segment.\n      __publicField(this, \"y\", 0);\n      __publicField(this, \"handleMirroring\", \"straight\");\n      __publicField(this, \"handleOutX\", 0);\n      // Describes the out tangent of the segment.\n      __publicField(this, \"handleOutY\", 0);\n      __publicField(this, \"handleInX\", 0);\n      // Describes the in tangent of the segment.\n      __publicField(this, \"handleInY\", 0);\n      __publicField(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  };\n  __publicField(_PathSegment, \"displayName\", \"WithClassDiscriminatorMixin(PathSegment)\");\n  __publicField(_PathSegment, \"point\", (pathSegment) => {\n    return { x: pathSegment.x, y: pathSegment.y };\n  });\n  __publicField(_PathSegment, \"handleOut\", (pathSegment) => {\n    return { x: pathSegment.handleOutX, y: pathSegment.handleOutY };\n  });\n  __publicField(_PathSegment, \"handleIn\", (pathSegment) => {\n    return { x: pathSegment.handleInX, y: pathSegment.handleInY };\n  });\n  __publicField(_PathSegment, \"calculatedHandleOut\", (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add(_PathSegment.point(pathSegment), _PathSegment.handleOut(pathSegment));\n      default:\n        return { x: pathSegment.x, y: pathSegment.y };\n    }\n  });\n  __publicField(_PathSegment, \"calculatedHandleIn\", (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n        return Point.subtract(_PathSegment.point(pathSegment), _PathSegment.handleOut(pathSegment));\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add(_PathSegment.point(pathSegment), _PathSegment.handleIn(pathSegment));\n      default:\n        return _PathSegment.point(pathSegment);\n    }\n  });\n  __publicField(_PathSegment, \"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(_PathSegment.point(pointAfter), _PathSegment.point(pointBefore));\n      return { x: delta.x / 4, y: delta.y / 4 };\n    }\n    return { x: 10, y: 10 };\n  });\n  let PathSegment2 = _PathSegment;\n  ;\n  PathSegment2.prototype.__class = \"PathSegment\";\n  return PathSegment2;\n})();\nvar PathSegment = PathSegmentOuter;\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 = RenderTarget.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) 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 === RenderTarget.export || canvasMode === RenderTarget.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 === \"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  return \"resetXY\";\n}\nfunction transformValues(rect, rotation, isRootVectorNode, includeTransform) {\n  const transformMode = getTransformMode(isRootVectorNode, includeTransform);\n  const baseTransform = { ...rect, rotation: includeTransform === false ? 0 : rotation };\n  const transform2 = createTransformValues(baseTransform, transformMode);\n  return transform2;\n}\n\n// ../../library/src/render/utils/transformString.ts\nfunction transformString2(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 { Component as Component16 } from \"react\";\nimport { jsx as jsx81 } from \"react/jsx-runtime\";\nvar LinearGradientElement = class extends Component16 {\n  render() {\n    const { id, stops, x1, x2, y1, y2 } = this.props;\n    return /* @__PURE__ */ jsx81(\"linearGradient\", { id, x1, x2, y1, y2, children: stops.map((stop, idx) => {\n      return /* @__PURE__ */ jsx81(\"stop\", { offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha }, idx);\n    }) });\n  }\n};\nvar RadialGradientElement = class extends Component16 {\n  render() {\n    const { centerAnchorX, centerAnchorY, id, widthFactor, heightFactor, stops } = this.props;\n    return /* @__PURE__ */ jsx81(\n      \"radialGradient\",\n      {\n        id,\n        cy: centerAnchorY,\n        cx: centerAnchorX,\n        r: widthFactor,\n        gradientTransform: getRadialGradientTransform(heightFactor, widthFactor, centerAnchorX, centerAnchorY),\n        children: stops.map((stop, idx) => {\n          return /* @__PURE__ */ jsx81(\"stop\", { offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha }, idx);\n        })\n      }\n    );\n  }\n};\nfunction getRadialGradientTransform(heightFactor, widthFactor, centerAnchorX, centerAnchorY) {\n  const scaleWidth = widthFactor ? heightFactor / widthFactor : 1e3;\n  return `translate(${centerAnchorX}, ${centerAnchorY}) scale(1 ${scaleWidth}) translate(-${centerAnchorX}, -${centerAnchorY})`;\n}\n\n// ../../library/src/render/presentation/SVGRoot.tsx\nimport React87 from \"react\";\nimport { jsx as jsx82 } from \"react/jsx-runtime\";\nvar SVGRoot = (props) => {\n  const { id, children, left, width, height, top, style, _needsMeasure } = props;\n  const inCodeComponent = React87.useContext(ComponentContainerContext);\n  const ref = React87.useRef(null);\n  useMeasureLayout(\n    {\n      id,\n      // SVGRoot won't be rendered if the node is invisible.\n      visible: true,\n      _needsMeasure\n    },\n    ref\n  );\n  const svgStyle = {\n    position: \"absolute\",\n    width,\n    height,\n    left,\n    top,\n    overflow: \"visible\",\n    display: \"block\",\n    ...style\n  };\n  const svgProps = {\n    // Avoid duplicating IDs when the SVG is rendered through slots. We only need the ID for\n    // measurement so code component descendants don't matter.\n    id: inCodeComponent ? void 0 : id,\n    viewBox: `0 0 ${width} ${height}`,\n    ref\n  };\n  const needsScale = isSafari() ? window.devicePixelRatio !== 1 : window.devicePixelRatio === 1;\n  const needsTranslate = window.devicePixelRatio === 1;\n  if (!needsScale && !needsTranslate) {\n    return /* @__PURE__ */ jsx82(\"svg\", { role: \"presentation\", ...svgProps, style: svgStyle, children });\n  }\n  const svgTransform = needsScale ? { transform: \"scale(2)\" } : void 0;\n  return /* @__PURE__ */ jsx82(\"svg\", { role: \"presentation\", ...svgProps, style: { ...svgStyle, ...svgTransform }, children: /* @__PURE__ */ jsx82(\n    \"g\",\n    {\n      style: {\n        // The default value of transform-origin is 0 0 for all SVG elements except\n        // for root <svg> elements:\n        // https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/transform-origin\n        transformOrigin: \"center\",\n        transform: getShapeTransform(needsScale, needsTranslate, left, top)\n      },\n      children\n    }\n  ) });\n};\nfunction getShapeTransform(needsScale, needsTranslate, left, top) {\n  const l = Math.floor(left) - left;\n  const t = Math.floor(top) - top;\n  const transforms = [];\n  if (needsScale) transforms.push(\"scale(0.5)\");\n  if (needsTranslate && (l || t)) transforms.push(`translate(${l}px, ${t}px)`);\n  return transforms.length ? transforms.join(\" \") : void 0;\n}\n\n// ../../library/src/render/presentation/Vector.tsx\nimport { jsx as jsx83, jsxs as jsxs20 } from \"react/jsx-runtime\";\nvar Vector = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      countNodeRender();\n      const {\n        opacity,\n        calculatedPath,\n        calculatedPathBoundingBox,\n        d,\n        insideStroke,\n        strokeEnabled,\n        strokeClipId,\n        strokeWidth,\n        idAttribute,\n        shadows,\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        fillOpacity,\n        visible,\n        x,\n        y,\n        width,\n        height\n      } = this.props;\n      if (!visible) return null;\n      if (!id || !strokeClipId) return null;\n      const rotate = this.props.rotate ?? rotation ?? 0;\n      const { target } = RenderEnvironment;\n      const rect = { x, y, width, height };\n      const transform2 = transformValues(rect, rotate, isRootVectorNode, includeTransform);\n      let vectorFill;\n      let fillAlpha = 0;\n      let imagePattern;\n      let linearGradient;\n      let radialGradient;\n      if (isString(fill) || 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, includeTransform);\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 === RenderTarget.export;\n      if (transform2.rotation === 0 && translatePaths) {\n        pathTranslate = transform2;\n      } else {\n        pathTranslate = { x: 0, y: 0 };\n        elementTransform = transformString2(transform2);\n      }\n      const pathAttributes = {\n        d: 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 (asRecord(svgStrokeAttributes)[key7] === asRecord(svgElementAttributeDefaults)[key7]) {\n          asRecord(svgStrokeAttributes)[key7] = void 0;\n        }\n      }\n      const internalShapeId = InternalID.forKey(id);\n      const internalStrokeClipId = InternalID.forKey(strokeClipId);\n      const shadow = shadowForShape(\n        shadows,\n        // Shadow filter uses 'objectBoundingBox' as filter units, so calculations should be\n        // relative to the referenced object itself (path), instead of the node rect, which\n        // can be larger than the path bounding box.\n        calculatedPathBoundingBox,\n        internalShapeId,\n        Boolean(fill),\n        strokeEnabled,\n        strokeWidth,\n        internalStrokeClipId,\n        svgStrokeAttributes\n      );\n      const currentName = target === RenderTarget.preview ? name || void 0 : void 0;\n      if (shadow.insetElement !== null || shadow.outsetElement !== null || insideStroke) {\n        pathAttributes.id = internalShapeId.id;\n        shapeReference = /* @__PURE__ */ jsx83(motion.path, { ...{ ...pathAttributes }, variants, transition });\n        if (shadow.needsStrokeClip || insideStroke) {\n          strokeClipPath = /* @__PURE__ */ jsx83(\"clipPath\", { id: internalStrokeClipId.id, children: /* @__PURE__ */ jsx83(\"use\", { xlinkHref: internalShapeId.link }) });\n        }\n        if (shadow.insetElement !== null && strokeEnabled && strokeWidth && strokeWidth > 0) {\n          mainElement = /* @__PURE__ */ jsx83(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              fillOpacity,\n              strokeOpacity: \"0\",\n              name: currentName\n            }\n          );\n          strokeElement = /* @__PURE__ */ jsx83(\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__ */ jsx83(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              fillOpacity,\n              clipPath: internalStrokeClipId.urlLink,\n              ...svgStrokeAttributes,\n              strokeWidth,\n              name: currentName\n            }\n          );\n        }\n      } else {\n        pathAttributes.id = idAttribute;\n        mainElement = /* @__PURE__ */ jsx83(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            name: currentName,\n            fillOpacity,\n            variants,\n            transition\n          }\n        );\n      }\n      const imagePatternElement = imagePattern ? /* @__PURE__ */ jsx83(\n        ImagePatternElement,\n        {\n          ...imagePattern,\n          repeat: BackgroundImage.isImageObject(fill) && fill.fit === \"tile\"\n        }\n      ) : void 0;\n      let gradient;\n      if (linearGradient) {\n        gradient = /* @__PURE__ */ jsx83(LinearGradientElement, { ...linearGradient });\n      } else if (radialGradient) {\n        gradient = /* @__PURE__ */ jsx83(RadialGradientElement, { ...radialGradient });\n      }\n      let defs = null;\n      if (shapeReference || strokeClipPath || shadow.definition && shadow.definition.length || gradient || imagePatternElement) {\n        defs = /* @__PURE__ */ jsxs20(\"defs\", { children: [\n          shapeReference,\n          strokeClipPath,\n          shadow.definition,\n          gradient,\n          imagePatternElement\n        ] });\n      }\n      const opacityValue = opacity ?? (variants ? 1 : void 0);\n      if (defs === null && shadow.outsetElement === null && shadow.insetElement === null && strokeElement === null) {\n        mainElement = /* @__PURE__ */ jsx83(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            fillOpacity,\n            opacity: opacityValue,\n            variants,\n            transition,\n            name: currentName\n          }\n        );\n        return this.renderElement(mainElement);\n      }\n      return this.renderElement(\n        /* @__PURE__ */ jsxs20(motion.g, { opacity: opacityValue, variants, transition, children: [\n          defs,\n          shadow.maskElement,\n          shadow.outsetElement,\n          mainElement,\n          shadow.insetElement,\n          strokeElement\n        ] })\n      );\n    }\n    renderElement(element) {\n      const { id, isRootVectorNode, width, height, includeTransform, left, top, style, _needsMeasure } = this.props;\n      if (!isRootVectorNode) return element;\n      if (includeTransform) return element;\n      return /* @__PURE__ */ jsx83(\n        SVGRoot,\n        {\n          id,\n          width,\n          height,\n          left,\n          top,\n          style,\n          _needsMeasure,\n          children: element\n        }\n      );\n    }\n  }, __publicField(_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    x: 0,\n    y: 0,\n    left: 0,\n    top: 0,\n    rotation: 0,\n    rotate: void 0,\n    opacity: void 0,\n    calculatedPath: [],\n    calculatedPathBoundingBox: { x: 0, y: 0, width: 0, height: 0 },\n    d: 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    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    visible: void 0\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorProps\n  }), _a;\n})();\n\n// ../../library/src/render/presentation/VectorGroup.tsx\nimport { jsx as jsx84 } from \"react/jsx-runtime\";\nvar VectorGroup = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      countNodeRender();\n      const {\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) return null;\n      const { target } = RenderEnvironment;\n      const rect = { x, y, width, height };\n      const transform2 = transformValues(rect, rotation, isRootVectorNode, includeTransform);\n      const addNames = target === RenderTarget.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__ */ jsx84(\"g\", { transform: transformString2(transform2), ...{ name, opacity }, children })\n      );\n    }\n    renderElement(element) {\n      const { id, isRootVectorNode, width, height, includeTransform, left, top, style, _needsMeasure } = this.props;\n      if (!isRootVectorNode) return element;\n      if (includeTransform) return element;\n      return /* @__PURE__ */ jsx84(\n        SVGRoot,\n        {\n          id,\n          left,\n          top,\n          width,\n          height,\n          style,\n          _needsMeasure,\n          children: element\n        }\n      );\n    }\n  }, __publicField(_a, \"defaultVectorGroupProps\", {\n    name: void 0,\n    opacity: void 0,\n    visible: true,\n    x: 0,\n    y: 0,\n    left: 0,\n    top: 0,\n    rotation: 0,\n    width: 100,\n    height: 100,\n    targetName: void 0,\n    defaultName: \"\",\n    isRootVectorNode: false,\n    includeTransform: void 0\n  }), __publicField(_a, \"defaultProps\", {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorGroupProps\n  }), _a;\n})();\n\n// ../../library/src/render/traits/Shape.ts\nvar key6 = \"calculatedPaths\";\nfunction withShape(target) {\n  if (!isObject2(target)) return false;\n  return key6 in target;\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) return true;\n    if (!sizeA || !sizeB) 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(size) {\n    return size === Size2.zero || size.width === 0 && size.height === 0;\n  };\n  Size2.defaultIfZero = function(width, height, size) {\n    if (Size2.isZero(size)) {\n      return Size2(width, height);\n    }\n    return size;\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/getLoadingLazyAtYPosition.ts\nvar LOADING_LAZY_THRESHOLD = 1e3;\nfunction getLoadingLazyAtYPosition(offset) {\n  return offset > LOADING_LAZY_THRESHOLD ? \"lazy\" : void 0;\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, passedFonts, flags) {\n  const fonts = convertMixedFontArrayToFontBundles(passedFonts);\n  if (!(flags == null ? void 0 : flags.supportsExplicitInterCodegen) && // Only emit an `explicitInter: false` bundle if we don\u2019t already have one.\n  !fonts.some((font) => font.explicitInter === false)) {\n    fonts.push({ explicitInter: false, fonts: [] });\n  }\n  Object.assign(component, { fonts });\n}\nfunction getFonts(component) {\n  const fonts = component.fonts;\n  return fonts ?? [];\n}\nfunction getFontsFromSharedStyle(fonts) {\n  if (fonts.length === 0) return [{ explicitInter: false, fonts: [] }];\n  return convertMixedFontArrayToFontBundles(fonts);\n}\nfunction getFontsFromComponentPreset(fonts) {\n  if (fonts.length === 0) return [{ explicitInter: false, fonts: [] }];\n  return convertMixedFontArrayToFontBundles(fonts);\n}\nfunction convertMixedFontArrayToFontBundles(fonts) {\n  const oldFontBundle = { explicitInter: false, fonts: [] };\n  const fontBundles = [];\n  for (const fontOrBundle of fonts) {\n    if (isComponentFontBundle(fontOrBundle)) {\n      fontBundles.push(fontOrBundle);\n    } else {\n      oldFontBundle.fonts.push(upgradeComponentFontV1(fontOrBundle));\n    }\n  }\n  if (oldFontBundle.fonts.length > 0) fontBundles.push(oldFontBundle);\n  return fontBundles;\n}\nvar componentFontBundleKey = \"explicitInter\";\nfunction isComponentFontBundle(font) {\n  return componentFontBundleKey in font;\n}\nfunction upgradeComponentFontV1(font) {\n  let source;\n  if (font.url.startsWith(\"https://fonts.gstatic.com/s/\")) {\n    source = \"google\" /* Google */;\n  } else if (font.url.startsWith(\"https://framerusercontent.com/third-party-assets/fontshare/\")) {\n    source = \"fontshare\" /* Fontshare */;\n  } else {\n    source = \"custom\" /* Custom */;\n  }\n  return {\n    ...font,\n    source\n  };\n}\n\n// ../../library/src/utils/withPerformanceMarks.ts\nfunction withPerformanceMarks(prefix2, callback) {\n  const markStart = `${prefix2}-start`;\n  performance.mark(markStart);\n  callback();\n  const markEnd = `${prefix2}-end`;\n  performance.mark(markEnd);\n  performance.measure(prefix2, markStart, markEnd);\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 className2;\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+)\\]/u;\n    const match = regex2.exec(str);\n    if (match) {\n      return match[1];\n    }\n    return null;\n  };\n  if (item.toString) {\n    className2 = extract(item.toString());\n    if (className2) {\n      return className2;\n    }\n  }\n  if (item.constructor !== null ? item.constructor.toString : void 0) {\n    className2 = extract(item.constructor !== null ? item.constructor.toString() : void 0);\n    if (className2) {\n      return className2.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 (isObject2(item) && isFunction(item.toInspect)) {\n    return item.toInspect();\n  }\n  if (isString(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/gu, \"\").replace(/\\s+/gu, \" \");\n    const limit = 50;\n    if (code.length > limit && l > 0) {\n      code = `${code.slice(0, limit + 1).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/u.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 useEffect28, useState as useState10 } from \"react\";\nfunction initialRouteComponent(component) {\n  if (!component) return null;\n  if (withPreload(component)) 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 [RouteComponent, setRouteComponent] = useState10(\n    initialRouteComponent(InitialRouteComponent)\n  );\n  useEffect28(() => {\n    if (withPreload(InitialRouteComponent)) {\n      void InitialRouteComponent.preload().then(setRouteComponent);\n    }\n  }, []);\n  return RouteComponent;\n}\n\n// ../../library/package.json\nvar package_default = {\n  name: \"framer\",\n  version: \"2.4.1\",\n  private: true,\n  type: \"module\",\n  author: \"Framer\",\n  license: \"MIT\",\n  scripts: {\n    coverage: \"yarn :jest --coverage\",\n    lint: \"yarn :eslint ./src --ext .ts,.tsx --format codeframe --quiet --cache\",\n    \"lint:ci\": \"yarn :eslint ./src --ext .ts,.tsx --format codeframe --quiet --cache --cache-strategy content\",\n    \"lint:fix\": \"yarn lint --fix --cache\",\n    test: \"yarn :jest\",\n    watch: \"yarn :jest --watch\",\n    postinstall: \"node postinstall.cjs\"\n  },\n  dependencies: {\n    eventemitter3: \"^5.0.1\",\n    fontfaceobserver: \"2.2.0\",\n    \"hoist-non-react-statics\": \"^3.3.2\",\n    hsluv: \"^1.0.1\"\n  },\n  devDependencies: {\n    \"@juggle/resize-observer\": \"^3.4.0\",\n    \"@microsoft/api-extractor\": \"^7.52.3\",\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/dom-navigation\": \"^1.0.5\",\n    \"@types/google.fonts\": \"^1.0.5\",\n    \"@types/node\": \"^20.16.5\",\n    \"@types/react\": \"^18.2.67\",\n    \"@types/react-dom\": \"^18.2.22\",\n    \"@types/yargs\": \"^17.0.33\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.32.1\",\n    \"@typescript-eslint/parser\": \"^8.32.1\",\n    chalk: \"^4.1.2\",\n    eslint: \"^8.57.1\",\n    \"eslint-plugin-framer-studio\": \"workspace:*\",\n    immutable: \"^3.8.2\",\n    \"jest-diff\": \"^29.3.1\",\n    \"jest-environment-jsdom\": \"^29.3.1\",\n    \"jest-environment-jsdom-global\": \"^4.0.0\",\n    \"jest-junit\": \"^15.0.0\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    semver: \"^7.7.1\",\n    typescript: \"^5.7.3\",\n    yargs: \"^17.7.2\"\n  },\n  peerDependencies: {\n    \"framer-motion\": \"12.14.0\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  tsdoc: {\n    tsdocFlavor: \"AEDoc\"\n  },\n  browserslist: [\n    \"extends @framer/browserslist-config/sites\"\n  ]\n};\n\n// ../../library/src/version.ts\nvar version = /* @__PURE__ */ (() => package_default.version)();\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 (false) {\n  MainLoop2.start();\n}\nexport {\n  AnchorLinkTarget,\n  Animatable,\n  AnimatePresence,\n  AnimateSharedLayout,\n  AnyInterpolation,\n  AsyncMotionValueAnimation,\n  AutomaticLayoutIds,\n  BackgroundImage,\n  BezierAnimator,\n  BoxShadow,\n  ChildrenCanSuspend,\n  Color,\n  ColorFormat,\n  ColorMixModelType,\n  ComponentContainerContext,\n  ComponentPresetsConsumer,\n  ComponentPresetsProvider,\n  ComponentViewportProvider,\n  ConstraintMask,\n  ConstraintValues,\n  Container,\n  ControlType,\n  ConvertColor,\n  CustomCursorHost,\n  CustomProperties,\n  CycleVariantState,\n  DOM,\n  DOMKeyframesResolver,\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  Fetcher,\n  FlatTree,\n  Floating,\n  FontSourceNames,\n  FormBooleanInput,\n  FormContainer,\n  FormPlainTextInput2 as FormPlainTextInput,\n  FormSelect,\n  Frame,\n  FrameWithMotion,\n  FramerAnimation,\n  FramerEvent,\n  FramerEventListener,\n  FramerEventSession,\n  GamepadContext,\n  GeneratedComponentContext,\n  GracefullyDegradingErrorBoundary,\n  GroupAnimation,\n  GroupAnimationWithThen,\n  Image2 as Image,\n  Instance,\n  InternalID,\n  JSAnimation,\n  KeyframeResolver,\n  Layer,\n  LayoutGroup,\n  DeprecatedLayoutGroupContext as LayoutGroupContext,\n  LayoutIdContext,\n  LazyMotion,\n  LazyValue,\n  LibraryFeaturesProvider,\n  Line,\n  LinearGradient,\n  Link,\n  MainLoop,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionGlobalConfig,\n  MotionSetup,\n  MotionValue,\n  NativeAnimation,\n  NativeAnimationExtended,\n  NativeAnimationWrapper,\n  NavigateTo,\n  NavigationWrapper as Navigation,\n  NavigationCallbackProvider,\n  NavigationConsumer,\n  NavigationTransitionType,\n  NotFoundError,\n  ObservableObject,\n  Page3 as Page,\n  PageEffectsProvider,\n  PageRoot,\n  ParentSizeState,\n  PathSegment,\n  PathVariablesContext,\n  Point,\n  Polygon,\n  PresenceContext,\n  PropertyOverrides2 as PropertyOverrides,\n  PropertyStore,\n  QueryCache,\n  QueryEngine,\n  RadialGradient,\n  Rect,\n  RenderTarget,\n  namespace_exports as Reorder,\n  ResolveLinks,\n  RichText2 as RichText,\n  SSRVariants,\n  SVG,\n  Scroll,\n  Shadow,\n  Size,\n  SmartComponentScopedContainer,\n  SpringAnimator,\n  Stack,\n  StyleSheetContext,\n  SubscriptionManager,\n  SwitchLayoutGroupContext,\n  Text2 as Text,\n  ValueInterpolation,\n  VariantSelector,\n  Vector,\n  VectorGroup,\n  ViewTransitionBuilder,\n  VisualElement,\n  WillChangeMotionValue,\n  WindowContext,\n  WithNavigator,\n  WithOverride,\n  _injectRuntime,\n  acceleratedValues,\n  activeAnimations,\n  addActionControls,\n  addAttrValue,\n  addFonts,\n  addPointerEvent,\n  addPointerInfo,\n  addPropertyControls,\n  addScaleCorrector,\n  addStyleValue,\n  addUniqueItem,\n  alpha,\n  analyseComplexValue,\n  animate2 as animate,\n  animateMini,\n  animateValue,\n  animateView,\n  animateVisualElement,\n  animationControls,\n  animationMapKey,\n  animations,\n  annotateTypeOnStringify,\n  anticipate,\n  applyPxDefaults,\n  attachSpring,\n  attrEffect,\n  backIn,\n  backInOut,\n  backOut,\n  backgroundImageFromProps,\n  buildTransform,\n  calcGeneratorDuration,\n  calcLength,\n  calculateRect,\n  callEach,\n  cancelFrame,\n  cancelMicrotask,\n  cancelSync,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  clampRGB,\n  collectMotionValues,\n  collectVisualStyleFromProps,\n  color,\n  combinedCSSRulesForPreview,\n  complex,\n  constraintsEnabled,\n  convertOffsetToTimes,\n  convertPropsToDeviceOptions,\n  createBox,\n  createData,\n  createFramerPageLink,\n  createGeneratorEasing,\n  createRenderBatcher,\n  createRendererMotionComponent,\n  createScopedAnimate,\n  cssBackgroundSize,\n  cubicBezier,\n  cubicBezierAsString,\n  cx,\n  debounce,\n  defaultDeviceProps,\n  defaultEasing,\n  defaultOffset,\n  defaultTransformValue,\n  defaultValueTypes,\n  degrees,\n  degreesToRadians,\n  delay,\n  devicePresets,\n  dimensionValueTypes,\n  disableInstantTransitions,\n  dispatchKeyDownEvent,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  domMin,\n  easeIn,\n  easeInOut,\n  easeOut,\n  easingDefinitionToFunction,\n  environment,\n  executeInRenderEnvironment,\n  fillOffset,\n  fillWildcards,\n  filterProps,\n  findDimensionValueType,\n  findValueType,\n  finiteNumber,\n  flushKeyframeResolvers,\n  fontStore,\n  forceLayerBackingWithCSSProperties,\n  fraction,\n  frame,\n  frameData,\n  frameFromElement,\n  frameFromElements,\n  frameSteps,\n  framerAppearAnimationScriptKey,\n  framerAppearEffects,\n  framerAppearIdKey,\n  framerAppearTransformTemplateToken,\n  framerCSSMarker,\n  generateLinearEasing,\n  getAnimatableNone,\n  getAnimationMap,\n  getComponentSize,\n  getComputedStyle2 as getComputedStyle,\n  getDefaultValueType,\n  getDevicePreset,\n  getEasingForSegment,\n  getFonts,\n  getFontsFromComponentPreset,\n  getFontsFromSharedStyle,\n  getLoadingLazyAtYPosition,\n  getMeasurableCodeComponentChildren,\n  getMixer,\n  getPropertyControls,\n  getValueAsType,\n  getValueTransition,\n  getVariableValue,\n  getWhereExpressionFromPathVariables,\n  gradientForShape,\n  hasWarned,\n  hex,\n  hover,\n  hsla,\n  hslaToRgba,\n  imagePatternPropsForFill,\n  imageUrlForAsset,\n  inView,\n  inertia,\n  inferInitialRouteFromPath,\n  injectComponentCSSRules,\n  installFlexboxGapWorkaroundIfNeeded,\n  interpolate,\n  invariant,\n  invisibleValues,\n  isAnimatable,\n  isBezierDefinition,\n  isBrowser,\n  isCSSVariableName,\n  isCSSVariableToken,\n  isDesignDefinition,\n  isDragActive,\n  isDragging,\n  isEasingArray,\n  isEqual,\n  isFiniteNumber,\n  isFractionDimension,\n  isFramerGamepadKeydownData,\n  isFramerPageLink,\n  isGapEnabled,\n  isGenerator,\n  isHTMLElement,\n  isMotionComponent,\n  isMotionValue2 as isMotionValue,\n  isNodeOrChild,\n  isNumericalString,\n  isObject,\n  isOfAnnotatedType,\n  isOverride,\n  isPrimaryPointer,\n  isReactDefinition,\n  isRelativeNumber,\n  isSVGElement,\n  isSVGSVGElement,\n  isShallowEqualArray,\n  isStaticRenderer,\n  isStraightCurve,\n  isValidMotionProp,\n  isWaapiSupportedEasing,\n  isZeroValueString,\n  keyframes,\n  lazy,\n  loadFont,\n  loadJSON,\n  localPackageFallbackIdentifier,\n  localShadowFrame,\n  m,\n  makePaddingString,\n  makeUseVisualState,\n  mapEasingToNativeEasing,\n  mapValue,\n  markHydrationStart,\n  maxGeneratorDuration,\n  memo,\n  memoize2 as memoize,\n  microtask,\n  millisecondsToSeconds,\n  mirrorEasing,\n  mix,\n  mixArray,\n  mixColor,\n  mixComplex,\n  mixImmediate,\n  mixLinearColor,\n  mixNumber,\n  mixObject,\n  mixVisibility,\n  modulate,\n  motion,\n  motionValue,\n  moveItem,\n  nestedLinksCollector,\n  noop,\n  number,\n  numberValueTypes,\n  observeTimeline,\n  optimizeAppear,\n  optimizeAppearTransformTemplate,\n  optimizedAppearDataAttribute,\n  paddingFromProps,\n  parseCSSVariable,\n  parseFramerPageLink,\n  parseValueFromTransform,\n  patchRoutesForABTesting,\n  pathDefaults,\n  percent,\n  pipe,\n  positionalKeys,\n  preloadImage,\n  press,\n  print,\n  progress,\n  progressPercentage,\n  propEffect,\n  propsForLink,\n  pushLoadMoreHistory,\n  px,\n  readTransformValue,\n  recordStats,\n  removeHiddenBreakpointLayers,\n  removeHiddenBreakpointLayersV2,\n  removeItem,\n  resolveElements,\n  resolveLink,\n  resolveMotionValue,\n  resolvePageScope,\n  reverseEasing,\n  rgbUnit,\n  rgba,\n  roundWithOffset,\n  roundedNumber,\n  roundedNumberString,\n  safeCSSValue,\n  scale,\n  scroll,\n  scrollInfo,\n  secondsToMilliseconds,\n  setDragLock,\n  setGlobalRenderEnvironment,\n  setStyle,\n  sharedSVGManager,\n  shouldOpenLinkInNewTab,\n  spring,\n  springValue,\n  stagger,\n  startAnimation,\n  startOptimizedAppearAnimation,\n  startWaapiAnimation,\n  statsBuffer,\n  steps,\n  styleEffect,\n  supportedWaapiEasing,\n  supportsBrowserAnimation,\n  supportsFlags,\n  supportsLinearEasing,\n  supportsPartialKeyframes,\n  supportsScrollTimeline,\n  svgEffect,\n  sync,\n  systemFontFamilyName,\n  testValueType,\n  throttle,\n  time,\n  toFlexDirection,\n  toJustifyOrAlignment,\n  toSVGPath,\n  transform,\n  transformPropOrder,\n  transformProps,\n  transformString2 as transformString,\n  transformTemplate,\n  transformValue,\n  transformValueTypes,\n  turnOffReactEventHandling,\n  unwrapMotionComponent,\n  useActiveTargetCallback,\n  useActiveVariantCallback,\n  useAddVariantProps,\n  useAnimate,\n  useAnimateMini,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useBreakpointVariants,\n  useComponentViewport,\n  useConstant,\n  useCurrentPathVariables,\n  useCurrentRoute,\n  useCurrentRouteId,\n  useCustomCursors,\n  useCycle,\n  useDataRecord,\n  useAnimatedState as useDeprecatedAnimatedState,\n  useInvertedScale as useDeprecatedInvertedScale,\n  useDomEvent,\n  useDragControls,\n  useDynamicRefs,\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  useIsStaticRenderer,\n  useIsomorphicLayoutEffect,\n  useLoadMorePaginatedQuery,\n  useLoadMorePagination,\n  useLocale,\n  useLocaleCode,\n  useLocaleInfo,\n  useLocalesForCurrentRoute,\n  useLocalizationInfo,\n  useMeasureLayout,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  useNavigate,\n  useNavigation,\n  useObserveData,\n  useOnAppear,\n  useOnCurrentTargetChange,\n  useOnVariantChange,\n  useOverlayState,\n  usePageEffects,\n  usePrefetch,\n  usePreloadQuery,\n  usePresence,\n  usePresenceData,\n  usePrototypeNavigate,\n  useProvidedWindow,\n  useQueryData,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useRenderEnvironment,\n  useResetProjection,\n  useRoute,\n  useRouteAnchor,\n  useRouteElementId,\n  useRouteHandler,\n  useRouter,\n  useSVGTemplate,\n  useScroll,\n  useSiteRefs,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVariantState,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  valueToDimensionType,\n  velocityPerSecond,\n  version,\n  vh,\n  visualElementStore,\n  vw,\n  warnOnce,\n  warning,\n  withCSS,\n  withCodeBoundaryForOverrides,\n  withFX,\n  withGeneratedLayoutId,\n  withInfiniteScroll,\n  withMappedReactProps,\n  withMeasuredSize,\n  withOpacity,\n  withOptimizedAppearEffect,\n  withParallaxTransform,\n  withPath,\n  withPerformanceMarks,\n  withShape,\n  withStyleAppearEffect,\n  withV1StrokeFX,\n  withVariantAppearEffect,\n  withVariantFX,\n  wrap,\n  yieldToMain\n};\n//! Credit to Astro | MIT License\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.3BZ7SNNF.mjs.map\n"],
  "mappings": "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",
  "names": ["npm_react_18_2_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", "init_ssg_sandbox_shims", "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", "init_ssg_sandbox_shims", "e", "npm_react_18_2_exports", "t", "o", "a", "f", "n", "s", "_", "q", "r", "l", "p", "u", "init_ssg_sandbox_shims", "require_memoize_browser_cjs", "__commonJS", "exports", "memoize", "fn", "cache", "arg", "require_is_prop_valid_browser_cjs", "_interopDefault", "ex", "reactPropsRegex", "index", "prop", "LayoutGroupContext", "z", "isBrowser", "useIsomorphicLayoutEffect", "fe", "ue", "PresenceContext", "addUniqueItem", "arr", "item", "removeItem", "moveItem", "fromIndex", "toIndex", "startIndex", "endIndex", "clamp", "min", "max", "v", "warning", "invariant", "MotionGlobalConfig", "isNumericalString", "isObject", "value", "isZeroValueString", "memo", "callback", "result", "noop", "any", "combineFunctions", "a", "b", "pipe", "transformers", "progress", "from", "to", "toFromDifference", "SubscriptionManager", "handler", "c", "numSubscriptions", "secondsToMilliseconds", "seconds", "millisecondsToSeconds", "milliseconds", "velocityPerSecond", "velocity", "frameDuration", "wrap", "min", "max", "v", "rangeSize", "calcBezier", "t", "a1", "a2", "subdivisionPrecision", "subdivisionMaxIterations", "binarySubdivide", "x", "lowerBound", "upperBound", "mX1", "mX2", "currentX", "currentT", "i", "cubicBezier", "mY1", "mY2", "noop", "getTForX", "aX", "mirrorEasing", "easing", "p", "reverseEasing", "backOut", "backIn", "backInOut", "anticipate", "circIn", "circOut", "circInOut", "easeIn", "easeOut", "easeInOut", "isEasingArray", "ease2", "getEasingForSegment", "easing", "i", "wrap", "isBezierDefinition", "easingLookup", "noop", "easeIn", "easeInOut", "easeOut", "circIn", "circInOut", "circOut", "backIn", "backInOut", "backOut", "anticipate", "isValidEasing", "easingDefinitionToFunction", "definition", "invariant", "x1", "y1", "x2", "y2", "cubicBezier", "statsBuffer", "stepsOrder", "createRenderStep", "runNextFrame", "stepName", "thisFrame", "nextFrame", "isProcessing", "flushNextFrame", "toKeepAlive", "latestFrameData", "numCalls", "triggerCallback", "callback", "step", "keepAlive", "immediate", "queue", "frameData2", "maxElapsed", "createRenderBatcher", "scheduleNextBatch", "allowKeepAlive", "useDefaultElapsed", "state", "flagRunNextFrame", "steps2", "acc", "key", "setup", "read", "resolveKeyframes", "preUpdate", "update", "preRender", "render", "postRender", "processBatch", "timestamp", "MotionGlobalConfig", "wake", "process2", "frame", "cancelFrame", "frameData", "frameSteps", "now", "clearTime", "time", "newTime", "activeAnimations", "checkStringStartsWith", "token", "isCSSVariableName", "startsAsVariableToken", "isCSSVariableToken", "value", "singleCssVariableRegex", "number", "v", "alpha", "clamp", "scale", "sanitize", "floatRegex", "isNullish", "singleColorRegex", "isColorString", "type", "testProp", "splitColor", "aName", "bName", "cName", "a", "b", "c", "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", "colorRegex", "test", "_a", "_b", "NUMBER_TOKEN", "COLOR_TOKEN", "VAR_TOKEN", "VAR_FUNCTION_TOKEN", "SPLIT_TOKEN", "complexRegex", "analyseComplexValue", "originalValue", "values", "indexes", "types", "split", "parsedValue", "parseComplexValue", "createTransformer", "source", "numSections", "output", "convertNumbersToZero", "getAnimatableNone", "parsed", "complex", "hueToRgb", "p", "q", "t", "hslaToRgba", "mixImmediate", "mixNumber", "from", "to", "progress2", "mixLinearColor", "fromExpo", "expo", "colorTypes", "getColorType", "asRGBA", "color2", "warning", "model", "mixColor", "fromRGBA", "toRGBA", "blended", "invisibleValues", "mixVisibility", "origin", "target", "mixNumber2", "getMixer", "mixComplex", "mixArray", "mixObject", "numValues", "blendValue", "matchOrder", "orderedOrigin", "pointers", "originIndex", "originValue", "template", "originStats", "targetStats", "pipe", "mix", "generateLinearEasing", "duration", "resolution", "points", "numPoints", "maxGeneratorDuration", "calcGeneratorDuration", "generator", "timeStep", "createGeneratorEasing", "options", "scale2", "createGenerator", "millisecondsToSeconds", "velocitySampleDuration", "calcGeneratorVelocity", "resolveValue", "current2", "prevT", "velocityPerSecond", "springDefaults", "safeMin", "findSpring", "bounce", "velocity", "mass", "envelope", "derivative", "secondsToMilliseconds", "dampingRatio", "undampedFreq2", "exponentialDecay", "delta", "calcAngularFreq", "e", "f", "initialGuess", "undampedFreq", "approximateRoot", "stiffness", "rootIterations", "result", "durationKeys", "physicsKeys", "isSpringType", "keys2", "getSpringOptions", "springOptions", "visualDuration", "root", "damping", "derived", "spring", "optionsOrVisualDuration", "restSpeed", "restDelta", "isResolvedFromDuration", "initialVelocity", "initialDelta", "undampedAngularFreq", "isGranularScale", "resolveSpring", "angularFreq", "dampedAngularFreq", "freqForT", "currentVelocity", "isBelowVelocityThreshold", "isBelowDisplacementThreshold", "calculatedDuration", "generatorOptions", "inertia", "keyframes2", "power", "timeConstant", "bounceDamping", "bounceStiffness", "modifyTarget", "min", "max", "isOutOfBounds", "nearestBoundary", "amplitude", "ideal", "calcDelta", "calcLatest", "applyFriction", "latest", "timeReachedBoundary", "spring$1", "checkCatchBoundary", "hasUpdatedFrame", "createMixers", "customMixer", "mixers", "mixerFactory", "numMixers", "mixer", "easingFunction", "interpolate", "input", "isClamp", "inputLength", "isZeroDeltaRange", "interpolator", "progressInRange", "progress", "fillOffset", "offset", "remaining", "offsetProgress", "defaultOffset", "arr", "convertOffsetToTimes", "o", "defaultEasing", "keyframes", "keyframeValues", "times", "easingFunctions", "absoluteTimes", "mapTimeToKeyframe", "frameloopDriver", "passTimestamp", "isNotNull", "getFinalKeyframe", "repeat", "repeatType", "finalKeyframe", "speed", "resolvedKeyframes", "index", "transitionTypeMap", "replaceTransitionType", "transition", "WithPromise", "resolve", "onResolve", "onReject", "percentToProgress", "percent2", "JSAnimation", "motionValue2", "repeatDelay", "keyframes$1", "generatorFactory", "animationTime", "sample", "totalDuration", "mixKeyframes", "mirroredGenerator", "resolvedDuration", "delay2", "onUpdate", "timeWithoutDelay", "isInDelayPhase", "elapsed", "frameGenerator", "currentIteration", "iterationProgress", "done", "isAnimationFinished", "reject", "newSpeed", "hasChanged", "driver", "startTime", "now2", "sampleTime", "timeline", "animateValue", "fillWildcards", "radToDeg", "rad", "rotate", "angle", "rebaseAngle", "matrix2dParsers", "rotateZ", "scaleX", "scaleY", "matrix3dParsers", "defaultTransformValue", "name", "parseValueFromTransform", "transform2", "matrix3dMatch", "parsers", "match", "matrix2dMatch", "valueParser", "convertTransformToNumber", "readTransformValue", "instance", "transformPropOrder", "transformProps", "isNumOrPxType", "transformKeys", "nonTranslationalTransformKeys", "removeNonTranslationalTransform", "visualElement", "removedTransforms", "positionalValues", "x", "paddingLeft", "paddingRight", "y", "paddingTop", "paddingBottom", "_bbox", "top", "left", "toResolve", "isScheduled", "anyNeedsMeasurement", "isForced", "measureAllKeyframes", "resolversToMeasure", "resolver", "elementsToMeasure", "transformsToRestore", "element", "restore", "readAllKeyframes", "flushKeyframeResolvers", "KeyframeResolver", "unresolvedKeyframes", "onComplete", "isAsync", "currentValue", "valueAsRead", "isForcedComplete", "isCSSVar", "setStyle", "supportsScrollTimeline", "memo", "supportsFlags", "memoSupports", "supportsFlag", "memoized", "supportsLinearEasing", "cubicBezierAsString", "d", "supportedWaapiEasing", "mapEasingToNativeEasing", "segmentEasing", "startWaapiAnimation", "valueName", "pseudoElement", "keyframeOptions", "animation", "isGenerator", "applyGeneratorOptions", "NativeAnimation", "allowFlatten", "keyframe", "newStartTime", "observe", "unsupportedEasingFunctions", "isUnsupportedEase", "replaceStringEasing", "sampleDelta", "NativeAnimationExtended", "sampleAnimation", "isHTMLElement", "isObject", "acceleratedValues", "supportsWaapi", "supportsBrowserAnimation", "transformTemplate", "isAnimatable", "hasKeyframesChanged", "canAnimate", "originKeyframe", "targetKeyframe", "isOriginAnimatable", "isTargetAnimatable", "MAX_RESOLVE_DELAY", "AsyncMotionValueAnimation", "autoplay", "_a2", "optionsWithDefaults", "KeyframeResolver$1", "forced", "sync2", "isHandoff", "resolvedOptions", "_onReject", "GroupAnimation", "animations2", "propName", "newValue", "subscriptions", "cancel", "time2", "methodName", "controls", "GroupAnimationWithThen", "splitCSSVariableRegex", "parseCSSVariable", "current2", "match", "token1", "token2", "fallback", "maxDepth", "getVariableValue", "element", "depth", "invariant", "token", "resolved", "trimmed", "isNumericalString", "isCSSVariableToken", "getValueTransition", "transition", "key", "positionalKeys", "transformPropOrder", "testValueType", "v", "type", "auto", "dimensionValueTypes", "number", "px", "percent", "degrees", "vw", "vh", "findDimensionValueType", "transformValueTypes", "scale", "alpha", "progressPercentage", "int", "numberValueTypes", "maxDefaults", "applyDefaultFilter", "name", "value", "number2", "floatRegex", "unit", "defaultValue", "functionRegex", "filter", "complex", "functions", "defaultValueTypes", "color", "getDefaultValueType", "getAnimatableNone2", "defaultValueType", "isNone", "isZeroValueString", "invalidTemplates", "makeNoneKeyframesAnimatable", "unresolvedKeyframes", "noneKeyframeIndexes", "i", "animatableTemplate", "keyframe", "analyseComplexValue", "noneIndex", "DOMKeyframesResolver", "KeyframeResolver", "onComplete", "motionValue2", "origin", "target", "originType", "targetType", "isNumOrPxType", "positionalValues", "measureKeyframe", "_a", "finalKeyframeIndex", "finalKeyframe", "unsetTransformName", "unsetTransformValue", "acceleratedValues2", "resolveElements", "elementOrSelector", "scope", "selectorCache", "root", "elements", "getValueAsType", "value", "type", "MAX_VELOCITY_DELTA", "isFloat", "value", "collectMotionValues", "MotionValue", "init", "options", "v", "render", "_a", "_b", "currentTime", "time", "dependent", "current2", "prevFrameValue", "subscription", "eventName", "callback", "SubscriptionManager", "unsubscribe", "frame", "eventManagers", "passiveEffect", "stopPassiveEffect", "prev", "delta", "endAnimation", "velocityPerSecond", "startAnimation", "resolve", "motionValue", "toPx", "px", "microtask", "cancelMicrotask", "createRenderBatcher", "isDragging", "isDragActive", "setDragLock", "axis", "setupGesture", "elementOrSelector", "options", "elements", "resolveElements", "gestureAbortController", "eventOptions", "isValidHover", "event", "hover", "onHoverStart", "cancel", "onPointerEnter", "enterEvent", "target", "onHoverEnd", "onPointerLeave", "leaveEvent", "element", "isNodeOrChild", "parent", "child", "isPrimaryPointer", "focusableElements", "isElementKeyboardAccessible", "isPressing", "filterEvents", "callback", "firePointerEvent", "type", "enableKeyboardPress", "focusEvent", "handleKeydown", "handleKeyup", "handleBlur", "isValidPressEvent", "press", "targetOrSelector", "onPressStart", "targets", "cancelEvents", "startPress", "startEvent", "onPressEnd", "onPointerEnd", "endEvent", "success", "onPointerUp", "onPointerCancel", "upEvent", "cancelEvent", "isHTMLElement", "observeTimeline", "update", "timeline", "prevProgress", "onFrame", "currentTime", "progress2", "frame", "cancelFrame", "isSVGElement", "element", "isObject", "isSVGSVGElement", "transform", "args", "useImmediate", "argOffset", "inputValue", "inputRange", "outputRange", "options", "interpolator", "interpolate", "isMotionValue", "value", "attachSpring", "value", "source", "options", "initialValue", "activeAnimation", "latestValue", "latestSetter", "unit", "stopAnimation2", "startAnimation", "JSAnimation", "asNumber", "v", "set", "latest", "parseValue", "frame", "unsubscribe", "isMotionValue", "valueTypes", "dimensionValueTypes", "color", "complex", "findValueType", "testValueType", "sync", "frame", "cancelSync", "stepsOrder", "acc", "key", "process2", "cancelFrame", "MotionConfigContext", "z", "p", "usePresence", "subscribe", "context", "re", "PresenceContext", "isPresent2", "onExitComplete", "register", "id4", "ae", "ue", "safeToRemove", "te", "useConstant", "init", "ref", "pe", "PopChildMeasure", "I", "prevProps", "element", "parent", "parentWidth", "isHTMLElement", "size", "PopChild", "children", "isPresent2", "anchorX", "id4", "ae", "nonce", "re", "MotionConfigContext", "ie", "width", "height", "top", "left", "right", "x", "style2", "p", "q", "PresenceChild", "initial", "onExitComplete", "custom", "presenceAffectsLayout", "mode", "presenceChildren", "newChildrenMap", "isReusedContext", "context", "se", "childId", "isComplete", "_", "key", "ue", "PresenceContext", "getChildKey", "child", "onlyElements", "filtered", "j", "J", "AnimatePresence", "propagate", "isParentPresent", "safeToRemove", "usePresence", "presentChildren", "presentKeys", "isInitialRender", "pendingPresentChildren", "exitComplete", "diffedChildren", "setDiffedChildren", "ye", "renderedChildren", "setRenderedChildren", "useIsomorphicLayoutEffect", "i", "exitingChildren", "nextChildren", "forceRender", "LayoutGroupContext", "l", "onExit", "isEveryExitComplete", "isExitComplete", "DeprecatedLayoutGroupContext", "z", "useIsMounted", "isMounted", "useForceUpdate", "forcedRenderCount", "setForcedRenderCount", "te", "frame", "notify", "node", "nodeGroup", "nodes", "subscriptions", "dirtyAll", "unsubscribe", "shouldInheritGroup", "inherit", "shouldInheritId", "LayoutGroup", "layoutGroupContext", "deprecatedLayoutGroupContext", "upstreamId", "memoizedContext", "LazyContext", "featureProps", "featureDefinitions", "props", "name", "loadFeatures", "features", "validMotionProps", "isValidMotionProp", "key", "shouldForward", "loadExternalIsValidProp", "isValidProp", "require_is_prop_valid_browser_cjs", "filterProps", "props", "isDom", "forwardMotionProps", "filteredProps", "MotionConfig", "children", "config", "re", "MotionConfigContext", "useConstant", "context", "se", "p", "MotionContext", "z", "camelToDash2", "str", "optimizedAppearDataId", "optimizedAppearDataAttribute", "SwitchLayoutGroupContext", "isAnimationControls", "v", "isVariantLabel", "variantPriorityOrder", "variantProps", "isControllingVariants", "name", "isVariantNode", "getCurrentTreeVariants", "initial", "animate2", "useCreateMotionContext", "variantLabelsAsDependency", "prop", "motionComponentSymbol", "isRefObject", "ref", "useMotionRef", "visualState", "visualElement", "externalRef", "te", "instance", "useVisualElement", "Component3", "createVisualElement", "ProjectionNodeConstructor", "_a", "_b", "parent", "lazyContext", "LazyContext", "presenceContext", "PresenceContext", "reducedMotionConfig", "visualElementRef", "pe", "initialLayoutGroupConfig", "createProjectionNode", "isMounted", "ie", "optimisedAppearId", "wantsHandoff", "useIsomorphicLayoutEffect", "microtask", "ue", "_a2", "initialPromotionConfig", "layoutId", "layout2", "drag2", "dragConstraints", "layoutScroll", "layoutRoot", "layoutCrossfade", "getClosestProjectingNode", "createRendererMotionComponent", "preloadedFeatures", "useRender", "useVisualState2", "loadFeatures", "MotionComponent", "MeasureLayout2", "configAndProps", "useLayoutId", "isStatic", "isBrowser", "useStrictMode", "layoutProjection", "getProjectionFunctionality", "u", "ForwardRefMotionComponent", "Y", "layoutGroupId", "LayoutGroupContext", "isStrict", "featureDefinitions", "combined", "scaleCorrectors", "addScaleCorrector", "correctors", "isCSSVariableName", "translateAlias2", "numTransforms", "transformPropOrder", "buildTransform2", "latestValues", "transform2", "transformTemplate", "transformString", "transformIsDefault", "i", "value", "valueIsDefault", "valueAsType", "getValueAsType", "numberValueTypes", "transformName", "resolveMotionValue", "isMotionValue", "getValueState", "state", "resolveVariantFromProps", "definition", "custom", "current2", "velocity", "makeState", "scrapeMotionValuesFromProps3", "createRenderState", "makeLatestValues", "makeUseVisualState", "make", "scrapeMotionValues", "values", "motionValues", "isControllingVariants$1", "isVariantNode$1", "isInitialAnimationBlocked", "variantToSet", "list", "resolved", "transitionEnd", "transition", "target", "valueTarget", "index", "createDOMMotionComponentProxy", "componentFactory", "componentCache", "deprecatedFactoryFunction", "args", "_target", "isForcedMotionValue", "transformProps", "buildHTMLStyles", "style2", "vars", "transformOrigin", "hasTransform2", "hasTransformOrigin", "originX", "originY", "originZ", "createHtmlRenderState", "copyRawValuesOnly", "source", "useInitialMotionValues", "useStyle", "styleProp", "useHTMLProps", "htmlProps", "dashKeys", "camelKeys", "buildSVGPath", "attrs", "length", "spacing", "offset", "useDashCase", "keys2", "px", "pathLength", "pathSpacing", "buildSVGAttrs", "attrX", "attrY", "attrScale", "pathOffset", "latest", "isSVGTag2", "createSvgRenderState", "isSVGTag", "tag", "useSVGProps", "_isStatic", "visualProps", "rawStyles", "lowercaseSVGElements", "isSVGComponent", "createUseRender", "elementProps", "x", "renderedChildren", "B", "scrapeMotionValuesFromProps", "prevProps", "newValues", "htmlMotionConfig", "scrapeMotionValuesFromProps2", "targetKey", "svgMotionConfig", "createMotionComponentFactory", "resolveVariant", "visualElement", "definition", "custom", "props", "resolveVariantFromProps", "isKeyframesTarget", "v", "setMotionValue", "key", "value", "motionValue", "resolveFinalValueInKeyframes", "setTarget", "resolved", "transitionEnd", "transition", "target", "isWillChangeMotionValue", "isMotionValue", "addValueToWillChange", "willChange", "MotionGlobalConfig", "newWillChange", "getOptimisedAppearId", "optimizedAppearDataAttribute", "isNotNull2", "getFinalKeyframe2", "keyframes2", "repeat", "repeatType", "finalKeyframe", "resolvedKeyframes", "index", "underDampedSpring", "criticallyDampedSpring", "keyframesTransition", "ease", "getDefaultTransition", "valueKey", "transformProps", "isTransitionDefined", "when", "_delay", "delayChildren", "staggerChildren", "staggerDirection", "repeatDelay", "from", "elapsed", "animateMotionValue", "name", "element", "isHandoff", "onComplete", "valueTransition", "getValueTransition", "delay2", "secondsToMilliseconds", "options", "shouldSkip", "frame", "JSAnimation", "AsyncMotionValueAnimation", "shouldBlockAnimation", "protectedKeys", "needsAnimating", "shouldBlock", "animateTarget", "targetAndTransition", "transitionOverride", "type", "animations2", "animationTypeState", "valueTarget", "currentValue", "appearId", "startTime", "positionalKeys", "animation", "animateVariant", "variant", "_a", "getAnimation", "getChildAnimations", "forwardDelay", "animateChildren", "first", "last", "maxStaggerDuration", "generateStaggerDuration", "i", "sortByTreeOrder", "child", "a", "b", "animateVisualElement", "resolvedDefinition", "shallowCompare", "next2", "prev", "prevLength", "numVariantProps", "variantProps", "getVariantContext", "context2", "context", "prop", "isVariantLabel", "reversePriorityOrder", "variantPriorityOrder", "numAnimationTypes", "animateList", "createAnimationState", "animate2", "state", "createState", "isInitialRender", "buildResolvedTypeValues", "acc", "setAnimateFunction", "makeAnimator", "animateChanges", "changedActiveType", "removedKeys", "encounteredKeys", "removedVariantIndex", "typeState", "propIsVariant", "activeDelta", "isInherited", "isAnimationControls", "variantDidChange", "checkVariantsDidChange", "shouldAnimateType", "handledRemovedValues", "definitionList", "resolvedValues", "prevResolvedValues", "allKeys", "markToAnimate", "motionValue2", "valueHasChanged", "fallbackAnimation", "initialTransition", "fallbackTarget", "shouldAnimate", "setActive", "isActive", "_a2", "createTypeState", "Feature", "node", "AnimationFeature", "prevAnimate", "id", "ExitAnimationFeature", "isPresent2", "onExitComplete", "prevIsPresent", "exitAnimation", "register", "animations", "extractEventInfo", "event", "addPointerInfo", "handler", "isPrimaryPointer", "addDomEvent", "eventName", "addPointerEvent", "SCALE_PRECISION", "SCALE_MIN", "SCALE_MAX", "TRANSLATE_PRECISION", "TRANSLATE_MIN", "TRANSLATE_MAX", "calcLength", "axis", "isNear", "maxDistance", "calcAxisDelta", "delta", "source", "origin", "mixNumber", "calcBoxDelta", "calcRelativeAxis", "relative", "parent", "calcRelativeBox", "calcRelativeAxisPosition", "layout2", "calcRelativePosition", "createAxisDelta", "createDelta", "createAxis", "createBox", "distance", "distance2D", "xDelta", "yDelta", "compareByDepth", "FlatTree", "addUniqueItem", "removeItem", "callback", "delay", "timeout", "start2", "time", "checkElapsed", "timestamp", "cancelFrame", "visualElementStore", "prefersReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "isBrowser", "motionMediaQuery", "setReducedMotionPreferences", "updateMotionValuesFromProps", "nextValue", "prevValue", "existingValue", "latestValue", "propEventHandlers", "VisualElement", "_props", "_prevProps", "_visualElement", "presenceContext", "reducedMotionConfig", "blockInitialAnimation", "visualState", "KeyframeResolver", "now2", "latestValues", "renderState", "isControllingVariants", "isVariantNode", "initialMotionValues", "instance", "remove", "feature", "valueIsTransform", "removeOnChange", "removeOnRenderRequest", "removeSyncCheck", "other", "featureDefinitions", "featureDefinition", "isEnabled", "FeatureConstructor", "listenerName", "listener", "closestVariantNode", "unsubscribe", "defaultValue", "isNumericalString", "isZeroValueString", "findValueType", "complex", "getAnimatableNone2", "initial", "valueFromInitial", "SubscriptionManager", "args", "convertBoundingBoxToBox", "top", "left", "right", "bottom", "convertBoxToBoundingBox", "x", "y", "transformBoxPoints", "point2", "transformPoint2", "topLeft", "bottomRight", "eachAxis", "isIdentityScale", "scale2", "hasScale", "scaleX2", "scaleY2", "hasTransform", "values", "has2DTranslate", "is2DTranslate", "scalePoint", "originPoint", "distanceFromOrigin", "scaled", "applyPointDelta", "translate", "boxScale", "applyAxisDelta", "applyBoxDelta", "box", "TREE_SCALE_SNAP_MIN", "TREE_SCALE_SNAP_MAX", "applyTreeDeltas", "treeScale", "treePath", "isSharedTransition", "treeLength", "transformBox", "translateAxis", "distance2", "transformAxis", "axisTranslate", "axisScale", "axisOrigin", "transform2", "measureViewportBox", "measurePageBox", "rootProjectionNode2", "transformPagePoint", "viewportBox", "scroll2", "getContextWindow", "current2", "PanSession", "handlers", "contextWindow", "dragSnapToOrigin", "info2", "getPanInfo", "isPanStarted", "isDistancePastThreshold", "point3", "timestamp2", "frameData", "onStart", "onMove", "event2", "transformPoint", "onEnd", "onSessionEnd", "resumeAnimation", "panInfo", "info", "initialInfo", "onSessionStart", "pipe", "subtractPoint", "history", "lastDevicePoint", "startDevicePoint", "getVelocity", "timeDelta", "timestampedPoint", "lastPoint", "time2", "millisecondsToSeconds", "currentVelocity", "applyConstraints", "min", "max", "elastic", "calcRelativeAxisConstraints", "calcRelativeConstraints", "layoutBox", "calcViewportAxisConstraints", "layoutAxis", "constraintsAxis", "calcViewportConstraints", "constraintsBox", "calcOrigin", "sourceLength", "targetLength", "progress", "clamp", "rebaseAxisConstraints", "constraints", "relativeConstraints", "defaultElastic", "resolveDragElastic", "dragElastic", "resolveAxisElastic", "minLabel", "maxLabel", "resolvePointElastic", "label", "elementDragControls", "VisualElementDragControls", "originEvent", "snapToCursor", "dragSnapToOrigin2", "drag2", "dragPropagation", "onDragStart", "setDragLock", "percent", "projection", "measuredAxis", "animationState", "dragDirectionLock", "onDirectionLock", "onDrag", "offset", "getCurrentDirection", "isDragging2", "velocity", "onDragEnd", "_point", "shouldDrag", "axisValue", "dragConstraints", "prevConstraints", "isRefObject", "onMeasureDragConstraints", "constraintsElement", "invariant", "measuredConstraints", "userConstraints", "dragMomentum", "dragTransition", "onDragTransitionEnd", "momentumAnimations", "bounceStiffness", "bounceDamping", "inertia2", "dragKey", "externalMotionValue", "boxProgress", "latest", "transformTemplate", "stopPointerListener", "dragListener", "measureDragConstraints", "stopMeasureLayoutListener", "stopResizeListener", "stopLayoutUpdateListener", "hasLayoutChanged", "direction", "currentDirection", "lockThreshold", "DragGesture", "noop", "dragControls", "asyncHandler", "PanGesture", "pointerDownEvent", "onPanSessionStart", "onPanStart", "onPan", "onPanEnd", "globalProjectionState", "pixelsToPercent", "pixels", "correctBorderRadius", "px", "correctBoxShadow", "projectionDelta", "original", "shadow", "template", "xScale", "yScale", "averageScale", "MeasureLayoutWithContext", "I", "layoutGroup", "switchLayoutGroup", "layoutId", "addScaleCorrector", "defaultScaleCorrectors", "prevProps", "layoutDependency", "stack", "microtask", "promoteContext", "safeToRemove", "MeasureLayout", "usePresence", "re", "LayoutGroupContext", "p", "SwitchLayoutGroupContext", "animateSingleValue", "motionValue$1", "borders", "numBorders", "asNumber2", "isPx", "mixValues", "follow", "lead", "progress2", "shouldCrossfadeOpacity", "isOnlyMember", "easeCrossfadeIn", "easeCrossfadeOut", "borderLabel", "followRadius", "getRadius", "leadRadius", "radiusName", "compress", "circOut", "easing", "copyAxisInto", "originAxis", "copyBoxInto", "originBox", "copyAxisDeltaInto", "originDelta", "removePointDelta", "removeAxisDelta", "sourceAxis", "removeAxisTransforms", "transforms", "scaleKey", "originKey", "xKeys", "yKeys", "removeBoxTransforms", "sourceBox", "isAxisDeltaZero", "isDeltaZero", "axisEquals", "boxEquals", "axisEqualsRounded", "boxEqualsRounded", "aspectRatio", "axisDeltaEquals", "NodeStack", "prevLead", "indexOfNode", "member", "preserveFollowOpacity", "crossfade", "resumingFrom", "buildProjectionTransform", "latestTransform", "xTranslate", "yTranslate", "zTranslate", "transformPerspective", "rotate2", "rotateX", "rotateY", "skewX", "skewY", "elementScaleX", "elementScaleY", "metrics", "transformAxes", "hiddenVisibility", "animationTarget", "id2", "resetDistortingTransform", "sharedAnimationValues", "cancelTreeOptimisedTransformAnimations", "projectionNode", "createProjectionNode2", "attachResizeListener", "defaultParent", "measureScroll", "checkIsScrollRoot", "resetTransform", "statsBuffer", "propagateDirtyNodes", "resolveTargetDelta", "calcProjection", "cleanDirtyNodes", "subscriptionManager", "isSVGElement", "isSVGSVGElement", "cancelDelay", "resizeUnblockUpdate", "finishAnimation", "hasRelativeLayoutChanged", "newLayout", "layoutTransition", "defaultLayoutTransition", "onLayoutAnimationStart", "onLayoutAnimationComplete", "hasTargetChanged", "hasOnlyRelativeTargetChanged", "animationOptions", "resetSkewAndRotation", "shouldNotifyListeners", "clearMeasurements", "clearIsLayoutDirty", "resetTransformStyle", "updateLayout", "notifyLayoutUpdate", "frameSteps", "clearSnapshot", "removeLeadSnapshots", "prevLayout", "phase", "needsMeasurement", "isRoot", "isResetRequested", "hasProjection", "transformTemplateValue", "transformTemplateHasChanged", "removeTransform", "pageBox", "roundBox", "checkNodeWasScrollRoot", "boxWithoutScroll", "transformOnly", "withTransforms", "boxWithoutTransform", "nodeBox", "forceRecalculation", "isShared", "relativeParent", "canSkip", "prevTreeScaleX", "prevTreeScaleY", "notifyAll2", "snapshot", "snapshotLatestValues", "mixedValues", "targetDelta", "relativeLayout", "snapshotSource", "layoutSource", "isSharedLayoutAnimation", "hasOpacityCrossfade", "prevRelativeTarget", "mixAxisDelta", "mixBox", "_b", "_c", "activeAnimations", "targetWithTransforms", "shouldAnimatePositionOnly", "xLength", "yLength", "config", "needsReset", "hasDistortingTransform", "resetValues", "styleProp", "styles", "resolveMotionValue", "emptyStyles", "valuesToRender", "scaleCorrectors", "correct", "applyTo", "isCSSVariable", "corrected", "num", "measuredLayout", "animationType", "axisSnapshot", "length", "layoutDelta", "visualDelta", "parentSnapshot", "parentLayout", "relativeSnapshot", "output", "mixAxis", "to", "userAgentContains", "string", "roundPoint", "roundAxis", "DocumentProjectionNode", "ref", "notify2", "rootProjectionNode", "HTMLProjectionNode", "documentNode", "drag", "handleHoverEvent", "lifecycle", "HoverGesture", "hover", "_element", "startEvent", "endEvent", "FocusGesture", "isFocusVisible", "handlePressEvent", "PressGesture", "press", "success", "observerCallbacks", "observers", "fireObserverCallback", "entry", "fireAllObserverCallbacks", "entries", "initIntersectionObserver", "root", "lookupRoot", "rootObservers", "observeIntersection", "rootInteresectionObserver", "thresholdNames", "InViewFeature", "viewport", "rootMargin", "amount", "once", "onIntersectionUpdate", "isIntersecting", "onViewportEnter", "onViewportLeave", "hasViewportOptionChanged", "prevViewport", "gestureAnimations", "layout", "DOMVisualElement", "DOMKeyframesResolver", "vars", "style2", "children", "renderHTML", "getComputedStyle3", "HTMLVisualElement", "defaultTransformValue", "readTransformValue", "computedStyle", "isCSSVariableName", "buildHTMLStyles", "scrapeMotionValuesFromProps", "camelCaseAttributes", "renderSVG", "_styleProp", "camelToDash2", "SVGVisualElement", "defaultType", "getDefaultValueType", "scrapeMotionValuesFromProps2", "buildSVGAttrs", "isSVGTag", "createDomVisualElement", "Component3", "isSVGComponent", "createMotionComponent", "createMotionComponentFactory", "motion", "createDOMMotionComponentProxy", "domAnimation", "createDomVisualElement", "animations", "gestureAnimations", "domMax", "drag", "layout", "domMin", "resizeHandlers", "observer", "getElementSize", "target", "borderBoxSize", "inlineSize", "blockSize", "isSVGElement", "notifyTarget", "contentRect", "_a", "handler", "notifyAll", "entries", "createResizeObserver", "resizeElement", "elements", "resolveElements", "element", "elementHandlers", "windowCallbacks", "windowResizeHandler", "createWindowResizeHandler", "size", "info", "callback", "resizeWindow", "resize", "a", "b", "maxElapsed2", "createAxisInfo", "createScrollInfo", "keys", "updateAxisInfo", "axisName", "time2", "axis", "length", "position", "prev", "prevTime", "progress", "elapsed", "velocityPerSecond", "updateScrollInfo", "calcInset", "container", "inset", "current2", "isHTMLElement", "svgBoundingBox", "parentBoundingBox", "x", "y", "svg", "parent", "namedEdges", "resolveEdge", "edge", "delta", "asNumber3", "defaultOffset2", "resolveOffset", "offset", "containerLength", "targetLength", "targetInset", "offsetDefinition", "targetPoint", "containerPoint", "ScrollOffset", "point", "getTargetSize", "resolveOffsets", "options", "lengthLabel", "targetSize", "containerSize", "hasChanged", "numOffsets", "i", "interpolate", "defaultOffset", "clamp", "measure", "node", "createOnScrollHandler", "onScroll", "scrollListeners", "resizeListeners", "onScrollHandlers", "getEventTarget", "scrollInfo", "noop", "containerHandlers", "containerHandler", "measureAll", "frameData", "frame", "notifyAll2", "listener2", "listener", "cancelFrame", "currentHandlers", "scrollListener", "timelineCache", "scrollTimelineFallback", "currentTime", "cancel", "getTimeline", "source", "containerCache", "targetKey", "targetCache", "axisKey", "supportsScrollTimeline", "attachToAnimation", "animation", "timeline", "valueAnimation", "observeTimeline", "progress2", "isOnScrollWithInfo", "attachToFunction", "scroll", "optionsWithDefaults", "refWarning", "name", "ref", "warning", "createScrollMotionValues", "motionValue", "useScroll", "layoutEffect", "values", "useConstant", "useIsomorphicLayoutEffect", "ue", "_progress", "useMotionValue", "initial", "value", "useConstant", "motionValue", "isStatic", "re", "MotionConfigContext", "setLatest", "ye", "ue", "useCombineMotionValues", "values", "combineValues", "updateValue", "useIsomorphicLayoutEffect", "scheduleUpdate", "frame", "subscriptions", "v", "unsubscribe", "cancelFrame", "useComputed", "compute", "collectMotionValues", "value", "useCombineMotionValues", "useTransform", "input", "inputRangeOrTransformer", "outputRange", "options", "transformer", "transform", "useListTransform", "latest", "values", "useConstant", "numValues", "useSpring", "source", "isStatic", "re", "MotionConfigContext", "getFromSource", "isMotionValue", "useMotionValue", "ie", "attachSpring", "useAnimationFrame", "callback", "initialTimestamp", "pe", "ue", "provideTimeSinceStart", "timestamp", "delta", "frame", "cancelFrame", "WillChangeMotionValue", "MotionValue", "name", "transformProps", "acceleratedValues2", "useReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "shouldReduceMotion", "ye", "prefersReducedMotion", "useReducedMotionConfig", "reducedMotionPreference", "reducedMotion", "re", "MotionConfigContext", "stopAnimation", "visualElement", "value", "setVariants", "variantLabels", "key", "variant", "setTarget", "child", "setValues", "definition", "animationControls", "hasMounted", "subscribers", "controls", "transitionOverride", "invariant", "animations2", "animateVisualElement", "isDOMKeyframes", "keyframes2", "resolveSubjects", "subject", "scope", "selectorCache", "resolveElements", "calculateRepeatDuration", "duration", "repeat", "_repeatDelay", "calcNextTime", "current2", "next2", "prev", "labels", "eraseKeyframes", "sequence", "startTime", "endTime", "i", "keyframe", "removeItem", "addKeyframes", "easing", "offset", "mixNumber", "getEasingForSegment", "normalizeTimes", "times", "compareByTime", "a", "b", "defaultSegmentEasing", "MAX_REPEAT", "createAnimationsFromSequence", "defaultTransition", "sequenceTransition", "generators", "defaultDuration", "animationDefinitions", "sequences", "elementCache", "timeLabels", "prevTime", "currentTime", "totalDuration", "segment", "transition", "maxDuration", "resolveValueSequence", "valueKeyframes", "valueTransition", "valueSequence", "elementIndex", "numSubjects", "valueKeyframesAsList", "keyframesAsList", "delay2", "defaultOffset", "type", "repeatType", "repeatDelay", "remainingTransition", "ease2", "calculatedDelay", "numKeyframes", "createGenerator", "isGenerator", "absoluteDelta", "isNumberKeyframesArray", "delta", "springTransition", "secondsToMilliseconds", "springEasing", "createGeneratorEasing", "remainder", "fillOffset", "originalKeyframes", "originalTimes", "originalEase", "repeatIndex", "keyframeIndex", "targetTime", "isMotionValue", "subjectSequence", "getSubjectSequence", "getValueSequence", "subjects", "subjectIndex", "thisSubject", "getValueTransition2", "valueSequences", "element", "valueOffset", "valueEasing", "at", "progress", "name", "isNumber", "isObjectKey", "object", "ObjectVisualElement", "VisualElement", "instance", "renderState", "createBox", "latestValues", "output", "createDOMVisualElement", "options", "node", "isSVGElement", "isSVGSVGElement", "SVGVisualElement", "HTMLVisualElement", "visualElementStore", "createObjectVisualElement", "isSingleValue", "animateSubject", "animateSingleValue", "createVisualElement", "animateTarget", "animateSequence", "spring", "isSequence", "createScopedAnimate", "scopedAnimate", "subjectOrSequence", "optionsOrKeyframes", "animation", "GroupAnimationWithThen", "animate", "useAnimationControls", "controls", "useConstant", "animationControls", "useIsomorphicLayoutEffect", "useAnimation", "isMotionComponent", "component", "motionComponentSymbol", "unwrapMotionComponent", "useInstantLayoutTransition", "startTransition", "callback", "rootProjectionNode", "useResetProjection", "te", "root", "thresholds", "inView", "elementOrSelector", "onStart", "root", "rootMargin", "amount", "elements", "resolveElements", "activeIntersections", "onIntersectionChange", "entries", "entry", "onEnd", "newOnEnd", "observer2", "element", "useInView", "ref", "margin", "once", "initial", "isInView", "setInView", "ye", "ue", "onEnter", "options", "useInstantTransition", "forceUpdate", "forcedRenderCount", "useForceUpdate", "startInstantLayoutTransition", "useInstantLayoutTransition", "unlockOnFrameRef", "pe", "frame", "MotionGlobalConfig", "callback", "createObject", "useVisualState", "makeUseVisualState", "createObject", "namespace_exports", "__export", "ReorderGroup", "ReorderItem", "ReorderContext", "z", "checkReorder", "order", "value", "offset", "velocity", "index", "item2", "nextOffset", "nextItem", "item", "nextLayout", "nextItemCenter", "mixNumber", "moveItem", "ReorderGroupComponent", "children", "as", "axis", "onReorder", "values", "props", "externalRef", "Component3", "useConstant", "motion", "isReordering", "pe", "invariant", "context", "layout2", "idx", "entry", "compareMin", "newOrder", "getValue", "ue", "p", "Y", "a", "b", "useDefaultMotionValue", "defaultValue", "isMotionValue", "useMotionValue", "ReorderItemComponent", "style2", "onDrag", "re", "point2", "zIndex", "useTransform", "latestX", "latestY", "registerItem", "updateOrder", "event", "gesturePoint", "measured", "getOriginIndex", "from", "total", "lastIndex", "stagger", "duration", "startDelay", "ease2", "fromIndex", "distance2", "delay2", "maxDelay", "easingDefinitionToFunction", "npm_react_dom_18_2_exports", "__export", "$a", "Ga", "Ja", "Ha", "ai", "Si", "Ni", "_i", "Pi", "Qi", "Xi", "eu", "nu", "init_ssg_sandbox_shims", "npm_scheduler_0_23_exports", "__export", "e", "F", "E", "N", "j", "q", "B", "U", "W", "Y", "D", "z", "A", "L", "O", "Q", "S", "V", "X", "Z", "init_ssg_sandbox_shims", "f", "n", "t", "a", "l", "g", "h", "k", "r", "i", "u", "o", "s", "c", "b", "d", "_", "v", "G", "H", "I", "J", "K", "m", "M", "p", "y", "w", "P", "R", "x", "C", "T", "u", "npm_react_18_2_exports", "e", "o", "npm_scheduler_0_23_exports", "s", "w", "x", "p", "a", "i", "C", "z", "fa", "ha", "N", "_", "j", "P", "T", "oa", "pa", "qa", "v", "M", "F", "sa", "ta", "R", "O", "I", "U", "V", "A", "B", "H", "$", "K", "Y", "Z", "X", "ee", "le", "Ka", "ae", "ie", "Ma", "ce", "Oa", "Pa", "Qa", "Ra", "Sa", "Ta", "Ua", "Va", "Wa", "Xa", "Ya", "Za", "ab", "bb", "cb", "db", "fe", "fb", "gb", "hb", "ib", "jb", "kb", "lb", "de", "pe", "ob", "be", "ye", "rb", "sb", "we", "ub", "vb", "Se", "xb", "xe", "ze", "_e", "Bb", "Cb", "Db", "Eb", "Fb", "Gb", "Hb", "Pe", "Jb", "Kb", "Te", "Re", "Nb", "We", "Qe", "He", "$e", "Ye", "Tb", "Ub", "Vb", "Wb", "Xb", "Yb", "Zb", "$b", "qe", "Xe", "en", "nn", "tn", "rn", "ln", "an", "un", "on", "sn", "cn", "fn", "mc", "dn", "nc", "pn", "hn", "gn", "mn", "tc", "uc", "vc", "wc", "xc", "yc", "zc", "Ac", "Bc", "Cc", "vn", "Dc", "bn", "yn", "kn", "wn", "Sn", "En", "xn", "Cn", "zn", "Nn", "Ln", "_n", "jn", "Pn", "Sc", "Tc", "Uc", "Vc", "Wc", "Xc", "Yc", "Zc", "$c", "ad", "bd", "b", "Tn", "Dn", "ed", "fd", "gd", "hd", "Mn", "jd", "Fn", "Rn", "On", "nd", "od", "pd", "qd", "rd", "In", "Un", "Vn", "Wn", "Qn", "An", "Bn", "Hn", "zd", "$n", "Kn", "Yn", "Zn", "Gn", "qn", "Xn", "Jn", "et", "nt", "tt", "rt", "lt", "at", "Pd", "it", "ut", "ot", "st", "ct", "ft", "dt", "pt", "ht", "gt", "mt", "vt", "bt", "yt", "kt", "wt", "St", "ge", "he", "Et", "je", "ke", "xt", "me", "ne", "oe", "Ct", "zt", "re", "se", "te", "ue", "ve", "Nt", "_t", "jt", "Lt", "Ae", "Be", "Ce", "De", "Ee", "Fe", "Ge", "Pt", "Ie", "Je", "Ke", "Le", "Me", "Ne", "Oe", "Tt", "Dt", "Mt", "Ft", "Rt", "Ue", "Ve", "Ot", "It", "Ut", "Ze", "Vt", "Wt", "Qt", "At", "Bt", "Ht", "ff", "$t", "Kt", "Yt", "Zt", "Gt", "qt", "nf", "D", "fr", "pf", "qf", "Xt", "sf", "tf", "cr", "vf", "wf", "Jt", "er", "zf", "Af", "Bf", "nr", "tr", "Ef", "rr", "lr", "ar", "ir", "If", "Kf", "Lf", "Mf", "ur", "or", "sr", "dr", "pr", "hr", "gr", "Uf", "E", "G", "mr", "vr", "br", "yr", "Yf", "Zf", "$f", "ag", "bg", "cg", "dg", "kr", "wr", "Sr", "hg", "ig", "jg", "Er", "xr", "Cr", "zr", "Nr", "Lr", "_r", "jr", "Pr", "tg", "ug", "vg", "wg", "Tr", "Dr", "Mr", "Fr", "Ag", "Bg", "Cg", "Dg", "Eg", "Fg", "Gg", "Hg", "Ig", "Jg", "Rr", "Lg", "Or", "Ir", "Ur", "Vr", "Qg", "Rg", "Sg", "Tg", "Tl", "Vg", "Wr", "Xg", "Yg", "Zg", "Qr", "ah", "bh", "ch", "dh", "Zl", "eh", "fh", "gh", "aa", "ih", "Ar", "kh", "Br", "L", "lh", "mh", "oh", "ph", "qh", "rh", "sh", "th", "uh", "vh", "c", "d", "wh", "f", "g", "h", "xh", "k", "m", "yh", "l", "zh", "Ah", "q", "r", "y", "n", "t", "J", "Hr", "$r", "Kr", "Yr", "Zr", "Gr", "Hh", "Ih", "Jh", "Kh", "Lh", "qr", "Mh", "Xr", "Oh", "Jr", "tl", "ll", "ul", "vl", "yl", "wl", "Sl", "El", "xl", "Q", "Wh", "Xh", "zl", "Nl", "Ll", "Cl", "bi", "ci", "di", "ei", "fi", "gi", "hi", "ii", "ji", "ki", "li", "mi", "Gl", "ni", "oi", "pi", "qi", "ri", "si", "ti", "ui", "vi", "wi", "xi", "yi", "zi", "Ai", "Bi", "Ci", "Di", "Ei", "Fi", "Gi", "Hi", "Ii", "Ji", "Ki", "Li", "Mi", "_l", "Oi", "ba", "ya", "Ri", "ka", "Ti", "Ui", "Vi", "Wi", "Pl", "Yi", "Zi", "$i", "aj", "bj", "cj", "dj", "ej", "na", "ea", "hj", "ij", "jj", "kj", "lj", "mj", "Dl", "oj", "pj", "qj", "rj", "sj", "tj", "uj", "vj", "wj", "xj", "yj", "zj", "Ml", "Fl", "Rl", "Ol", "Ej", "S", "Fj", "Gj", "ra", "ma", "Ij", "Jj", "Il", "Ul", "Vl", "Wl", "Mj", "W", "Nj", "Ql", "Pj", "Qj", "Rj", "Sj", "Tj", "Uj", "Vj", "Wj", "Xj", "Al", "Bl", "Zj", "ak", "bk", "ck", "dk", "ek", "fk", "ga", "hk", "ik", "jk", "kk", "lk", "Hl", "$l", "Kl", "Yl", "Xl", "Jl", "la", "ia", "ua", "ca", "da", "va", "wa", "Ea", "xa", "Ca", "za", "Na", "La", "Dk", "Ek", "Fk", "Gk", "Hk", "Ik", "Jk", "Kk", "Lk", "Mk", "Nk", "Ok", "Pk", "Qk", "Rk", "Sk", "Tk", "Uk", "Vk", "_a", "Xk", "Yk", "Zk", "$k", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "il", "jl", "kl", "ja", "ml", "nl", "ol", "pl", "ql", "rl", "sl", "Da", "Fa", "Ia", "Aa", "checkDCE", "Ba", "Ha", "$a", "Ga", "Ja", "ai", "Si", "Ni", "_i", "Pi", "Qi", "Xi", "eu", "nu", "init_ssg_sandbox_shims", "require_hsluv", "__commonJS", "exports", "Hsluv2", "_Hsluv", "c", "Y", "L", "chan", "digit2", "digit1", "hex2", "offset", "slope", "intercept", "angle", "d", "f1", "f2", "f3", "f4", "f5", "f6", "lr", "lg", "lb", "divider", "varU", "varV", "hrad", "l", "sub1", "sub2", "s1r", "s2r", "s3r", "s1g", "s2g", "s3g", "s1b", "s2b", "s3b", "r0", "r1", "g0", "g1", "b0", "b1", "h", "hueRad", "max", "require_eventemitter3", "module", "has", "prefix2", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter2", "names", "events", "name", "handlers", "i", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "length", "j", "require_react_is_production_min", "b", "e", "f", "g", "k", "m2", "n", "p", "q", "r", "t", "v", "w", "x", "z", "a", "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", "C", "D", "E", "F", "G", "H", "I", "M", "N", "J", "K", "O", "P", "y", "preloadKey", "isLazyComponentType", "componentType", "lazy", "factory", "LazyComponent", "factoryPromise", "LoadedComponent", "hasRendered", "Component17", "props", "ref", "ue", "objectKeys", "hasProp", "o", "prop", "equalsKey", "withEquals", "valueEqual", "arrayShallowEqual", "arrayDeepEqual", "equal", "mapShallowEqual", "aValue", "mapDeepEqual", "setEqual", "objectShallowEqual", "objectDeepEqual", "deep", "typeA", "aIsArray", "bIsArray", "aIsMap", "bIsMap", "aIsSet", "bIsSet", "dateA", "dateB", "regexpA", "regexpB", "isEqual", "error", "useGetRouteCallback", "routes", "routeId", "RouterContext", "RouterAPIProvider", "api", "children", "useRouter", "RoutesProvider", "getRoute", "se", "CurrentRouteContext", "useCurrentRoute", "_a", "router", "override", "re", "id", "pathVariables", "route", "useCurrentRouteKey", "currentRoute", "useOnRouteChange", "cb", "currentRoute", "useCurrentRoute", "lastRoute", "e", "isEqual", "useRoute", "routeId", "_a", "routerAPI", "useRouter", "getRouteElementId", "route", "hash2", "EMPTY_ARRAY", "monitorINPRelatedInputs", "signal", "inpRelatedInputs", "inpRelatedInputHandler", "event", "type", "i", "useRouteElementId", "id", "targetRouteId", "useCurrentPathVariables", "isFunction", "value", "isBoolean", "isString", "isNumber", "isArray", "isObject2", "isUndefined", "isNull", "isNullish", "isValidDate", "isGenerator2", "noop2", "isWindow", "isBot", "supportsRequestIdleCallback", "requestIdleCallback", "encodeSVGForCSS", "svg", "mockWindow", "query", "_url", "_target", "_features", "safeWindow", "canUseYield", "canUsePostTask", "pendingResolvers", "resolvePendingPromises", "resolve", "yieldUnlessUrgent", "options", "frame", "resolveFn", "schedulerYield", "interactionResponse", "priority", "yieldToMain", "continueAfter", "ensureContinueBeforeUnload", "schedulerOptions", "shouldPreloadBasedOnUA", "useRoutePreloader", "routeIds", "enabled", "getRoute", "ue", "preloadRoute", "component", "isLazyComponentType", "timezone", "visitorLocale", "setTimezoneAndLocaleForTracking", "resolvedDateTimeOptions", "requestIdleCallback", "sendTrackingEvent", "eventType", "eventData", "sendOn", "safeWindow", "trackingId", "href", "framerLocale", "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", "length", "lastCommonSep", "i", "fromCode", "out", "allowAboveRoot", "separator", "isPathSeparator", "code", "res", "lastSegmentLength", "lastSlash", "dots", "lastSlashIndex", "customNotFoundPagePaths", "pathVariablesRegExpRaw", "pathVariablesRegExp", "fillPathVariables", "variables", "match", "name", "value", "forwardCurrentQueryParams", "queryParamsString", "forwardQueryParams", "startOfHash", "hrefWithoutHash", "hash2", "startOfSearch", "currentSearchParams", "newSearchString", "newSearchParams", "key7", "replacePathVariables", "currentLocale", "nextLocale", "defaultLocale", "collectionId", "pathVariables", "collectionUtils", "_a", "resultPath", "isMissingInLocale", "resultPathVariables", "matches", "replacements", "_a2", "pathVariableWithDelimiter", "pathVariableValue", "currentSlug", "isString", "utils", "recordId", "nextSlug", "defaultLocaleSlug", "lastIndex", "replacedPath", "hasMatch", "replacement", "getLocalizedNavigationPath", "route", "preserveQueryParams", "result", "getSitePrefix", "siteCanonicalURL", "url", "defaultSitePageEffects", "PageEffectsContext", "e", "PageEffectsProvider", "children", "p", "usePageEffects", "getPageEffectForRoute", "currentRouteId", "nextRouteId", "global", "routes", "step", "maxDuration", "createLinearEasing", "generator", "time2", "state", "keyframes2", "cssVariable", "parseUnit", "calcMaskPosition", "mask", "innerWidth", "innerHeight", "x", "xUnit", "y", "yUnit", "conic", "progress2", "page", "percentage", "offsetToken", "isTransparentToBlack", "firstColor", "secondColor", "gradient", "circle", "inset", "bottom", "right", "blinds", "unit", "width", "widthToken", "wipe", "_mask", "offset", "maskGenerators", "restState", "valuesToCSSKeyframes", "values", "maskGenerator", "getMaskGenerator", "type", "createPageTransitionRules", "transition", "settings", "isSpringTransition", "easing", "duration", "spring", "getSpringOptions", "startKeyframes", "endKeyframes", "VIEW_TRANSITION_STYLES_ID", "defaultPageTransition", "createViewTransitionStylesheet", "exit", "enter", "styleElement", "styleContent", "removeViewTransitionStylesheet", "frame", "element", "noop3", "supportsViewTransitions", "addVTStylesheetAfterInRender", "effect", "resolve", "startViewTransition", "updateView", "signal", "useViewTransition", "sitePageEffects", "resolveHasPainted", "pe", "ue", "te", "update", "pageEffect", "hasPainted", "updateCanonicalURL", "prevUrl", "canonical", "newURL", "announceDiv", "announceNavigation", "useAfterPaintEffect", "effectFn", "deps", "options", "useEffectFn", "fe", "runAfterPaint", "fn", "yieldToMain", "runPromise", "cleanup", "useMonitorNextPaintAfterRender", "label", "measureDetail", "startLabel", "endLabel", "ignore", "pushRouteState", "routeId", "currentRoutePath", "currentPathVariables", "localeId", "isNavigationTransition", "newPath", "getPathForRoute", "pushHistoryState", "isHistoryState", "data2", "isObject2", "replaceHistoryState", "ignoreReplaceStateWrapper", "maybeHasPopstateBug", "isImpactedPopstateBugChromiumVersion", "userAgent", "chromePos", "chromiumVersion", "popstateCalled", "popstateListener", "msg", "useReplaceInitialState", "disabled", "initialPathVariables", "initialLocaleId", "supportsNavigationAPI", "isWindow", "usePopStateHandler", "setCurrentRouteId", "startViewTransition2", "monitorNextPaintAfterRender", "viewTransitionReady", "popStateHandler", "_b", "_c", "_d", "_e", "_f", "nextRender", "stopMonitoringINPRelatedInputs", "monitorINPRelatedInputs", "changeRoute", "viewTransition", "navigationTransition", "error", "traversalHandler", "event", "reject", "getHashForRoute", "hashVariables", "resolvedHash", "getRouteElementId", "m2", "p1", "relative2", "onlyHash", "currentPath", "isSamePageHashNavigation", "sitePrefix", "handleRedirectForMissingSlugs", "nextLocaleWithDefaultSlugPath", "switchLocale", "useNativeLoadingSpinner", "navigationPromise", "pe", "navigationController", "navigateListener", "te", "navigateEvent", "controller", "promise", "updateURL", "supportsNavigationAPI", "noopAsync", "defaultLocaleInfo", "LocaleInfoContext", "e", "useLocaleInfo", "useLocaleCode", "_a", "useLocaleInfo", "eventsToStop", "stopFn", "event", "_a", "_b", "shouldTurnOnEventHandling", "turnOffReactEventHandling", "options", "TurnOnReactEventHandling", "ue", "onlyRunOnce", "originalMethod", "hasRun", "args", "measureSafe", "name", "start", "end", "e", "_measureUnattributedHydrationOverhead_dec", "_measureMutationEffects_dec", "_markLayoutStylePaintEnd_dec", "_markRafEnd_dec", "_markRafStart_dec", "_markUseEffectsEnd_dec", "_markUseEffectsAreSynchronous_dec", "_markUseEffectsRouterStart_dec", "_markUseEffectsStart_dec", "_markUseLayoutEffectsEnd_dec", "_markRouterUseLayoutEffectStart_dec", "_markUseLayoutEffectsStart_dec", "_markUseInsertionEffectsEnd_dec", "_markUseInsertionEffectRouterStart_dec", "_markUseInsertionEffectsStart_dec", "_markRenderEnd_dec", "_markRenderStart_dec", "_init", "HydrationMarker", "__runInitializers", "__publicField", "__decoratorStart", "__decorateElement", "__decoratorMetadata", "hydrationMarker", "markHydrationStart", "useMarkRouterEffects", "ie", "fe", "wasInBackground", "useMarkSuspenseEffectsStart", "frame", "useMarkSuspenseEffectEnd", "yieldToMain", "MarkSuspenseEffectsStart", "MarkSuspenseEffectsEnd", "MarkSuspenseEffects", "renderPage", "Page4", "defaultPageStyle", "props", "p", "NotFoundError", "NotFoundErrorBoundary", "I", "error", "nextProps", "prevState", "newState", "notFoundPage", "memoPathRoutes", "memoPaths", "lastRoutes", "getRouteInfoMemo", "routes", "routeId", "path", "pathDepth", "depth1", "depth2", "inferInitialRouteFromPath", "decodedLocationPath", "fallback", "locales", "pathRoutes", "paths", "activeLocale", "localeId", "locationPath", "firstPathSegment", "slug", "defaultLocale", "exactMatch", "match", "matchPath", "rootPath", "firstRoute", "pathWithTrimmedSlashes", "routePath", "pathVariablesKeys", "routePathRegExpString", "escapeStringRegExp", "pathVariablesRegExp", "_", "routePathRegExp", "matches", "pathVariables", "pathVariablesValues", "i", "key7", "value", "existingValue", "string", "getVariantsFromServerTiming", "serverTiming", "entry", "it", "patchRoute", "abTestId", "abTestingVariantId", "route", "abTestingParentId", "patchingRoute", "elements", "patchRoutesFromSearchParams", "variants", "removeRoutesVariants", "patchInitialRoute", "parentId", "patchRoutesForABTesting", "initialRouteId", "resolvedInitialRouteId", "parentRouteId", "warningMessages", "warnOnce2", "keyMessage", "rest", "deprecationWarning", "removedItem", "removalVersion", "replacement", "replacementText", "warningText", "Observers", "observer", "isCalled", "change", "transaction", "accumulatedChange", "finishObservers", "Animatable", "Animatable2", "isAnimatable", "AnimatableValue", "update", "transactionId", "updatedValues", "animatable", "finish", "defaultValue", "object", "result", "onUpdateKey", "finishTransactionKey", "animatableInterpolation", "currentInterpolation", "from", "to", "fromValue", "toValue", "progress2", "v", "oldValue", "handler", "roundedNumber", "decimals", "multiplier", "roundWithOffset", "value", "offset", "Point", "x", "y", "Point2", "points", "args", "previousValue", "currentValue", "a", "b", "point", "deltaX", "deltaY", "lastValue", "diff", "maxDiff", "nTimes", "center", "centroid", "sumX", "sumY", "centroidX", "centroidY", "sortClockwise", "centerPoint", "angles", "i", "assert", "condition", "msg", "_a", "_b", "e", "lines", "assertNever", "error", "BezierDefaults", "controlPointsForCurve", "curve", "BezierAnimator", "options", "interpolation", "__publicField", "delta", "duration", "controlPoints", "p1x", "p1y", "p2x", "p2y", "UnitBezier", "point1", "point2", "epsilon2", "t", "t0", "t1", "t2", "x2", "d2", "Integrator", "accelerationFunction", "state", "dt", "c", "d", "dxdt", "dvdt", "initialState2", "dv", "derivative", "isInterpolatable", "value", "Interpolation", "from", "to", "NumberInterpolation", "a1", "b1", "progress2", "epsilon", "minDuration", "maxDuration2", "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", "g", "SpringTensionFrictionDefaults", "SpringDampingDurationDefaults", "isDampingDurationSpringOptions", "options", "SpringAnimator", "interpolation", "__publicField", "_opt", "toPass", "Integrator", "state", "delta", "assert", "positionNearZero", "velocityNearZero", "cssNames", "modulate", "value", "rangeA", "rangeB", "limit", "fromLow", "fromHigh", "toLow", "toHigh", "fromDelta", "toDelta", "result", "isNumeric", "percentToFraction", "val", "digits", "numberFromString", "input", "match", "Hsluv", "require_hsluv", "hsluvConverter", "rgbToHsluv", "r", "g", "b", "rgbaFromHusl", "h", "s", "l", "a", "hsvToStr", "v", "_h", "_s", "_v", "rgbToRgb", "isNumeric", "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", "cssUnit", "permissiveMatch3", "permissiveMatch4", "stringToObject", "inputColor", "trimLeft", "color2", "namedColor", "cssNames", "match", "percentToFraction", "parseIntFromHex", "convertHexToDecimal", "p3Matcher", "parseP3", "convertRGBChannelToLrgb", "c", "abs", "convertRgbToLrgb", "convertLrgbChannelToRgb", "convertLrgbToRgb", "convertP3ToXyz65", "convertXyz65ToRgb", "x", "y", "z", "convertRgbToXyz65", "convertXyz65ToP3", "convertRGBToHSV", "M", "m2", "res", "normalizeHue", "hue", "convertHsvToRgb", "convertRgbToP3", "convertP3ToRgb", "P3Color", "_P3Color", "__publicField", "space", "overrides", "clampedR", "clampedG", "clampedB", "value", "Color", "parsed", "isString", "clampRGB", "cache", "Color2", "createColor", "created", "colorData", "getCompleteColorStrategy", "newColor", "ColorMixModel", "colorModel", "initialValue", "colorString", "isObject2", "hsl", "hsv", "key7", "amount", "rgb", "angle", "alphaValue", "colorA", "colorB", "model", "progress2", "from", "toColor", "fromColor", "mixer", "fraction2", "limit", "result", "modulate", "hslA", "hslB", "fromH", "toH", "deltaH", "tween", "gen", "name", "deltaR", "deltaG", "deltaB", "deltaR2", "deltaG2", "deltaB2", "tolerance", "channelToDecimal", "interpolate", "convertChannelToLinearRgb", "channel", "l1", "l2", "colorOrR", "completeColor", "getCompleteColorFromRGB", "getCompleteColorFromString", "getCompleteColorFromHSL", "getCompleteColorFromHSV", "correctAlpha", "numberFromString", "ColorInterpolation", "type", "to", "Interpolation", "NoInterpolation", "ObjectInterpolation", "valueInterpolation", "interpolations", "keys3", "sum", "difference", "DefaultInterpolationOptions", "ValueInterpolation", "_ValueInterpolation", "options", "NumberInterpolation", "constructor", "isInterpolatable", "interpolation", "isMotionValue2", "v", "MotionValue", "Defaults2", "PrecalculatedAnimator", "options", "__publicField", "delta", "value", "time2", "assert", "index", "end", "EventEmitter3", "require_eventemitter3", "EventEmitter", "listeners", "eventName", "fn", "once", "unique", "context", "name", "count", "args", "_raf", "f", "__raf", "safeWindow", "raf", "LoopTimeStep", "Loop", "start", "task", "_a", "postEventTasks", "length", "i", "MainLoop", "RenderEnvironment", "RenderTarget", "RenderEnvironment", "target", "AnimationDriver", "animator", "updateCallback", "finishedCallback", "__publicField", "frame2", "elapsed", "value", "MainLoopAnimationDriver", "MainLoop", "DefaultDeprecatedAnimationOptions", "FramerAnimation", "_FramerAnimation", "from", "to", "animatorClass", "options", "driverClass", "deprecatedAnimationOptions", "animatorOptions", "interpolation", "ValueInterpolation", "BezierAnimator", "PrecalculatedAnimator", "isFinished", "isAnimatable", "isMotionValue2", "targetObject", "Animatable", "update", "key7", "targetValue", "oldValue", "resolve", "reject", "reason", "correctBorderScale", "axis", "latest", "delta", "treeScale", "corrected", "addScaleCorrector", "deprecatedAnimate", "from", "to", "animator", "options", "deprecationWarning", "target", "fromValue", "isAnimatable", "isMotionValue2", "Animatable", "animation", "FramerAnimation", "animate2", "animate3", "animatorOrTransition", "animate", "SpringAnimator", "BezierAnimator", "LayoutIdContext", "e", "args", "LayoutIdProvider", "children", "re", "p", "l", "cache2", "pe", "screen", "usedIds", "getLayoutId", "te", "id", "name", "duplicatedFrom", "cacheKey", "previousId", "nodeIdentifier", "possibleMatch", "index", "duplicatedId", "assert", "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", "error", "file", "title", "stripSlash", "message", "u", "isFiniteNumber", "value", "isEmpty", "obj", "isReactElement", "test", "isReactChild", "degreesToRadians", "degrees2", "Line", "Line2", "a", "b", "line", "offset", "angle", "Point", "rad", "x", "y", "lineA", "lineB", "segments", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "a1", "b1", "c1", "alpha2", "beta", "deltaAX", "deltaAY", "deltaBX", "deltaBY", "pointOnLine", "deltaX", "deltaY", "pointB", "point", "perp", "distance2", "hypotenuse", "r", "Rect", "rect", "other", "size", "n", "delta", "xOffset", "yOffset", "value", "doubleValue", "rectMaxX", "rectMaxY", "width", "height", "decimals", "roundedNumber", "points", "minX", "maxX", "minY", "maxY", "i", "ps", "tl", "tr", "_", "bl", "min", "max", "rect1", "rect2", "matrix", "rectA", "rectB", "aMax", "bMax", "rects", "comparingRect", "rectMinX", "rectMinY", "rectMidX", "rectMidY", "pointA", "minSize", "minWidth", "minHeight", "diffX", "diffY", "br", "anchorRect", "direction", "alignment", "rebasedRect", "assertNever", "constraintDefaults", "isConstraintSupportingChild", "child", "isReactChild", "isReactElement", "ConstraintMask", "constraints", "isFiniteNumber", "valueToDimensionType", "value", "trimmedValue", "ConstraintValues", "props", "left", "right", "top", "bottom", "width", "height", "centerX", "centerY", "aspectRatio", "autoSize", "isAnimatable", "widthValue", "heightValue", "widthType", "heightType", "parsedWidth", "Animatable", "parsedHeight", "centerAnchorX", "centerAnchorY", "values", "parentSizeInfo", "freeSpace", "parentWidth", "parentHeight", "hOpposingPinsOffset", "pinnedOffset", "assertNever", "vOpposingPinsOffset", "sizeAfterApplyingConstraintsAndAspectRatio", "pixelAlign", "x", "y", "parentSizeForPositioning", "positioningParentWidth", "positioningParentHeight", "f", "Rect", "defaultWidth", "defaultHeight", "getConstraintValue", "constraint", "parentSize", "viewport", "constraintValueForUncalculatedViewport", "constrainHeight", "constrainWidth", "w", "h", "start", "end", "containsInvalidStringValues", "constraintsEnabled", "sizeFromFiniteNumberProps", "size", "rectFromFiniteNumberProps", "calculateRect", "parentSizeDisabled", "constraintValues", "getConstraintValues", "enabledParentSize", "deprecatedParentSize", "center", "_constraints", "constraintMask", "ConstraintsContext", "e", "deprecatedParentSize", "parentSize", "useParentSize", "isSize", "o", "ProvideParentSize", "props", "currentParentSize", "children", "value", "getParentWidth", "getParentHeight", "p", "l", "useProvideParentSize", "node", "useConstraints", "calculateRect", "isAutoSized", "width", "height", "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", "FormInputStyleVariableNames", "FormInputStyleVariableNames2", "Var", "inputClassName", "inputWrapperClassName", "cssValue", "value", "css", "selector", "declaration", "output", "key7", "css2", "variable", "variables", "lastItem", "index", "sharedInputCSS", "inputClassName", "Var", "inputBorderAllSides", "Var", "inputBorderCSS", "inputWrapperClassName", "iconSize", "inputIconCSSDeclaration", "css", "Var", "createRGBVariableFallbacks", "variables", "fallback", "variable", "richTextCSSRules", "defaultCache", "defaultSheet", "injectCSSRule", "cssRule", "sheet", "cache2", "styleElement", "componentCSSRules", "textAlignmentRule", "textBlockSpanRule", "textInlineSpanRule", "renderTextStylesRule", "textStylesRule", "linkStylesRule", "linkHoverStylesRule", "linkCurrentStylesRule", "textCSSRules", "stackPositionRule", "nativeStackGapRules", "flexboxGapNotSupportedClass", "stackGapRule", "stackDirectionRuleVertical", "stackDirectionRuleHorizontal", "stackCSSRules", "navigationCSSRules", "scrollCSSRules", "nativeScrollCSSRules", "deviceComponentCSSRules", "pageContentWrapperWrapperCSSRules", "presenceCSS", "cursorCSS", "frameCSS", "resetCSS", "hideScrollbars", "willChangeOverrideCSSVariable", "willChangeEffectOverrideCSSVariable", "anySafariVersion", "safari16OrGreater", "willChangeTransformRules", "isPreview", "frameCSSRules", "svgCSSRules", "combineCSSRules", "deprecatedRichTextCSSRules", "combinedCSSRules", "combinedCSSRulesForPreview", "didInject", "injectComponentCSSRules", "styles4", "RenderTarget", "rule", "isReactComponent", "component", "isObject2", "isFunction", "optionalKey", "controlIsOptional", "control", "getControlDefaultValue", "control", "isString", "isBoolean", "isUndefined", "isNumber", "isObject2", "value", "applyControlDefaultsToDefaultProps", "isArray", "defaultProps", "controls", "controlKey", "currentDefault", "controlIsOptional", "defaultValue", "getDefaultProps", "component", "applyControlDefaultsToReactDefaultProps", "isReactComponent", "addPropertyControls", "propertyControls", "getPropertyControls", "isStaticRenderer", "currentTarget", "RenderTarget", "useIsStaticRenderer", "isStatic", "ye", "asRecord", "object", "memoize", "fn", "cache2", "arg", "reactPropsRegex", "isPropValid", "prop", "LibraryFeaturesContext", "e", "LibraryFeaturesProvider", "useLibraryFeatures", "mockWithWarning", "message", "warnOnce2", "mockWithoutWarning", "implementation", "image", "rect", "nodeId", "element", "runtime", "isRuntimeInjected", "runtimeProxy", "target", "key7", "reciever", "wrapperStyle", "getPlaceholderStyle", "encodeSVGForCSS", "cssObjectFit", "imageFit", "cssObjectPosition", "positionX", "positionY", "x", "y", "getImageStyle", "image", "StaticImage", "containerSize", "nodeId", "alt", "draggable", "syncDecoding", "source", "runtime", "imageStyle", "imageRef", "e", "p", "CanvasImage", "wrapperRef", "imageElement", "wrapper", "OptimizedCanvasImage", "BackgroundImageComponent", "layoutId", "props", "motionDivToDiv", "useLibraryFeatures", "fallbackWrapperStyles", "needsMotion", "imageNode", "isString", "backgroundSize", "isNumber", "tileSize", "imageSource", "RenderTarget", "style", "motion", "collectBorderStyleForProps", "collapseEqualBorders", "borderWidth", "borderStyle", "borderColor", "borderTop", "borderBottom", "borderLeft", "borderRight", "Border", "key", "BackgroundImage", "applyForwardOverrides", "background", "_forwardedOverrideId", "_forwardedOverrides", "id", "forwardedOverrideId", "src", "backgroundImageFromProps", "backgroundImage", "Animatable", "htmlElementAsMotionComponent", "asElem", "safeNavigator", "isBrowser2", "isWebKit", "_a", "isChrome", "isEdge", "webkitVersion", "version2", "result", "safariVersion", "isSafari", "isFirefox", "isFramerX", "isAndroid", "isIOS", "isMacOS", "isWindows", "isTouch", "safeWindow", "isDesktop", "deviceType", "isPhone", "isTablet", "isMobile", "isFileUrl", "url", "isDataUrl", "isTest", "isRelativeUrl", "isLocalServerUrl", "isLocalUrl", "isLocalAssetUrl", "baseUrl", "devicePixelRatio", "isJP2Supported", "isWebPSupported", "deviceOS", "deviceFont", "os", "fonts", "environment", "isChrome2", "collectLayoutHintDataProps", "center", "layoutHintDataPropsForCenter", "nodeIdFromString", "str", "processOverrideForwarding", "props", "children", "_forwardedOverrides", "e", "child", "transformTemplate", "center", "_", "generated", "useLayoutId", "specificLayoutId", "postfix", "name", "layoutIdKey", "duplicatedFrom", "__fromCodeComponentNode", "drag", "getLayoutId", "enabled", "re", "LayoutIdContext", "se", "existingLayoutId", "layoutIdCandidate", "useIsomorphicLayoutEffect2", "fe", "ue", "ComponentContainerContext", "useForceUpdate2", "setForcedRenderCount", "v", "SharedObserver", "__publicField", "entries", "entry", "callbackForElement", "element", "callback", "sharedResizeObserver", "isBrowser2", "useRerenderOnResize", "ref", "update", "useForceUpdate2", "ue", "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", "smallValue", "translateZ", "useTranslateZHack", "isFramerX", "isSafari", "isTest", "forceLayerBackingWithMotionStyle", "motionStyle", "forceLayerBackingWithCSSProperties", "cssProperties", "setTranslateZHack", "style", "enabled", "transform2", "isString", "resetSetStyle", "key7", "toValue", "microtask2", "asRecord", "value", "reset", "isValidCSSStyleValue", "isNumber", "isNull", "Layer", "Layer2", "I", "__publicField", "usingMotionStyle", "nextProps", "nextState", "isEqual", "prevProps", "manageCache", "cache2", "maxEntries", "i", "memoize2", "create", "r", "g", "hash", "hasher", "chr", "ConvertColor", "color2", "angle", "Color", "alpha2", "obj", "stringToObject", "hsv", "hsvToStr", "h", "a", "b", "input", "CSSVariableRegExp", "colorCache", "cachedMultiplyAlpha", "s", "gradientColorStops", "gradient", "stops", "stop", "gradientColorStopsHash", "result", "multiStopGradientKeys", "isMultiStopGradient", "simpleGradientKeys", "isSimpleGradient", "linearGradientKeys", "LinearGradient", "isObject2", "linearGradient", "overrideAngle", "getStopValue", "cssStops", "radialGradientKeys", "RadialGradient", "radialGradient", "widthFactor", "heightFactor", "centerAnchorX", "centerAnchorY", "index", "nextStop", "position", "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", "size", "widthType", "heightType", "positionFixed", "positionAbsolute", "minWidth", "resolveMotionValue", "minHeight", "maxWidth", "maxHeight", "defaultFrameRect", "useStyleAndRect", "e", "injectComponentCSSRules", "_initialStyle", "__fromCanvasComponent", "unwrappedProps", "constraintsRect", "useConstraints", "defaultStyle", "shouldDisablePointerEvents", "safeToEditPointerEvents", "centerTextStyle", "child", "propsStyle", "constraintsStyle", "constraintsEnabled", "isAutoSized", "resultStyle", "isRenderingStaticContent", "isStaticRenderer", "filteredProps", "getMotionProps", "motionProps", "isValidMotionProp", "isPropValid", "hasDataFramerName", "VisibleFrame", "Y", "forwardedRef", "border", "_border", "__portal", "propsWithOverrides", "children", "processOverrideForwarding", "layoutId", "useLayoutId", "cursor", "fallbackRef", "pe", "dataProps", "currentStyle", "rect", "autoSized", "transformTemplate", "layoutHintDataPropsForCenter", "backgroundImage", "backgroundImageFromProps", "parentSize", "resolveParentSize", "wrappedContent", "useProvideParentSize", "u", "l", "p", "BackgroundImageComponent", "Border", "MotionComponent", "htmlElementAsMotionComponent", "FrameWithMotion", "_usesDOMRect", "TREE_ROOT_ID", "SharedLayoutContext", "e", "SharedLayoutRoot", "I", "__publicField", "tree", "transition", "shouldAnimate", "_a", "needsReset", "projectionNode", "_a2", "_b", "p", "rootStyles", "MagicMotionCrossfadeRoot", "props", "motion", "useMemoOne", "factory", "inputs", "initial", "ye", "isFirstRun", "pe", "committed", "cache2", "isEqual", "ue", "setRef", "ref", "value", "isFunction", "isMutableRef", "isObject2", "refHasValue", "useStableRefWithObserver", "callbacks", "useConstant", "cleanups", "refCallback", "needsCleanup", "callback", "cleanup", "fn", "skipCall", "useObserverRef", "forwardedRef", "fallbackRef", "createStableRefWithObserver", "useRefEffect", "effect", "deps", "effectRef", "depsChangedRef", "depsChanged", "SharedIntersectionObserver", "options", "entries", "observer", "entry", "callbackForElement", "element", "SharedIntersectionObserverContext", "z", "observeElement", "observers", "key7", "root", "rootMargin", "threshold", "_useSharedIntersectionObserver", "re", "enabled", "useSharedIntersectionObserver", "noop2", "thresholds", "_", "i", "ViewportContext", "useAppearEffect", "appearCallback", "internalState", "animateOnce", "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", "newMap", "useMap", "useConstant", "NavigationTargetContext", "z", "NavigationTargetWrapper", "isCurrent", "isOverlayed", "children", "callbacks", "register", "te", "fn", "deregister", "cleanup", "value", "pe", "ue", "_", "cb", "newCleanup", "isFunction", "p", "useOnCurrentTargetChange", "callback", "deps", "re", "NavigationContainer", "e", "isLayeredContainer", "isPrevious", "visible", "transitionProps", "backdropColor", "onTapBackdrop", "backfaceVisible", "exitBackfaceVisible", "animation", "exitAnimation", "instant", "initialProps", "exitProps", "position", "withMagicMotion", "index", "areMagicMotionLayersPresent", "id", "isInitial", "animate3", "useAnimation", "presence", "PresenceContext", "persistLayoutIdCache", "LayoutIdContext", "previousState", "getOriginProps", "viewportRef", "isBeingRemoved", "wasPrevious", "wasCurrent", "shouldAnimateIn", "shouldAnimateOut", "origins", "wasReset", "allAnimatableProperties", "transition", "exitTransition", "layout", "perspective", "contains3Dprops", "identity", "animations2", "isPresent", "isCurrentTarget", "u", "FrameWithMotion", "ViewportContext", "NavigationContainerContext", "SharedLayoutTree", "shouldUsePreviousValue", "prevProps", "nextProps", "currentOriginProps", "result", "isFiniteNumber", "containerProps", "_a", "_b", "_c", "toPropsContain3d", "fromPropsContain3d", "NavigatorMock", "__publicField", "warnOnce2", "navigatorMock", "NavigationContext", "TransitionDefaults", "pushTransition", "options", "overlayTransition", "flipTransition", "defaultState", "reduceNavigationStateForAction", "state", "action", "addOverlay", "removeOverlay", "add", "remove", "updateComponent", "back", "forward", "currentState", "key7", "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", "objectKeys", "direction", "from", "property", "transitionTo", "transitionFrom", "asRecord", "NavigationCallbackContext", "e", "IsInitialNavigationContext", "e", "Navigation", "_lastEventTimeStamp", "_a", "_Navigation_instances", "getStackState_fn", "isSameEventTransition_fn", "_navigationAction", "transition_fn", "I", "props", "_a2", "__privateAdd", "__publicField", "defaultState", "action", "newState", "reduceNavigationStateForAction", "skipLayoutAnimation", "historyItem", "withMagicMotion", "updateState", "__privateMethod", "__privateSet", "__privateGet", "component", "isReactChild", "isReactElement", "transition", "TransitionDefaults", "key7", "_b", "options", "pushTransition", "overlayTransition", "flipTransition", "_c", "_d", "_e", "stackState", "overlayStackState", "activeOverlay", "activeOverlayItem", "isOverlayVisible", "isInitial", "contentContainers", "index", "assert", "visualIndex", "removed", "transitionProps", "isCurrent", "isPrevious", "areMagicMotionLayersPresent", "p", "NavigationContainer", "isInstantContainerTransition", "animationPropsForContainer", "getBackfaceVisibleForScreen", "MagicMotionCrossfadeRoot", "containerContent", "overlayContainers", "item", "stackIndex", "initialPropsForOverlay", "transitionPropsForOverlay", "containerIsVisible", "backdropColorForTransition", "getBackfaceVisibleForOverlay", "backdropTapAction", "FrameWithMotion", "NavigationContext", "u", "transitionPropsForStackWrapper", "animationForStackWrapper", "backfaceVisibleForStackWrapper", "LayoutIdProvider", "SharedLayoutRoot", "AnimatePresence", "current", "previous", "currentOverlay", "previousOverlay", "transitionTraits", "transitionOptions", "NavigationCallbackContext", "animationDefault", "overlayStack", "currentOverlayItem", "previousOverlayItem", "containerIndex", "history", "navigationItem", "screenIndex", "overlayIndex", "containerCurrent", "overCurrentContext", "child", "position", "shouldStretchWidth", "shouldStretchHeight", "canStretchStyle", "isObject2", "goBackAction", "NavigationWrapper", "resetProjection", "useResetProjection", "useInstantLayoutTransition", "injectComponentCSSRules", "import_hoist_non_react_statics", "__toESM", "require_hoist_non_react_statics_cjs", "import_hoist_non_react_statics3", "__toESM", "require_hoist_non_react_statics_cjs", "pointForEvent", "event", "customTarget", "target", "safeWindow", "webkitPoint", "rect", "width", "height", "scale2", "FramerEvent", "_FramerEvent", "originalEvent", "session", "__publicField", "MainLoop", "eventLike", "deviceTarget", "lastEvent", "Point", "touches", "firstTouch", "pageX", "pageY", "environment", "import_hoist_non_react_statics2", "DraggingContext", "e", "hoverProps", "hoverEventKeys", "eventHandlerMapping", "tapEventKeys", "WithEvents", "BaseComponent", "_a", "withEvents", "e", "__publicField", "prevProps", "detail", "type", "framerEvent", "eventName", "originalEventListener", "eventListener", "FramerEvent", "domEventName", "eventListenerKeys", "eventKey", "cancelEvent", "p", "DraggingContext", "value", "import_hoist_non_react_statics3", "hasOwnProperty", "obj", "prop", "$private", "ObservableObject", "ObservableObject2", "initial", "makeAnimatables", "observeAnimatables", "unproxiedState", "Observers", "key7", "state", "asRecord", "sharedProxyHandler", "target", "observer", "ObservableObjectProxyHandler", "receiver", "privateObject", "animatable", "rawValue", "isAnimatable", "Animatable", "transactions", "change", "transaction", "result", "changed", "targetValue", "rawValueIsObject", "keys3", "privateIndex", "collectBlendingFromProps", "node", "style", "key2", "withOpacity", "collectOpacityFromProps", "props", "opacity", "collectOverflowFromProps", "key3", "hasRadius", "getRadiusValue", "num", "hasRadiusValue", "collectRadiusFromProps", "radius", "isFiniteNumber", "radiusValue", "topLeft", "topRight", "bottomRight", "bottomLeft", "collectTextColorFromProps", "color2", "Color", "boxShadowKeys", "BoxShadow", "shadow", "key7", "shadowsAsFilter", "shadows", "filters", "dropShadows", "shadowItem", "collectTextShadowsForProps", "props", "style", "textShadow", "collectBoxShadowsForProps", "boxShadow", "collectLayerFilters", "props", "style", "filters", "isFiniteNumber", "shadowsAsFilter", "collectBackgroundFilters", "collectFiltersFromProps", "collectVisualStyleFromProps", "isTextNode", "collectBackgroundFromProps", "collectRadiusFromProps", "collectBlendingFromProps", "collectOverflowFromProps", "collectOpacityFromProps", "collectTextColorFromProps", "collectTextShadowsForProps", "collectBoxShadowsForProps", "getNumber", "Animatable", "transformDefaults", "getRotation", "rotation", "rotate", "collectTransformFromProps", "rect", "motionStyle", "x", "y", "z", "scaleZ", "originZ", "rotationZ", "resolveMotionValue", "rotationX", "rotationY", "scale2", "scaleX", "scaleY", "skew", "skewX", "skewY", "RenderEnvironment", "RenderTarget", "transformOrigin", "cssBackgroundSize", "size", "collectBackgroundImageFromProps", "image", "backgroundImageFromProps", "toPixelString", "value", "applyLayoutProp", "key7", "asRecord", "DeprecatedFrame", "_DeprecatedFrameInner", "Layer", "__publicField", "element", "isAnimatable", "constraintValues", "ConstraintValues", "parentSizeInfo", "nextProps", "prevState", "target", "BackgroundImage", "state", "newSize", "ObservableObject", "left", "top", "hasParentSize", "perspective", "backfaceVisibility", "backfaceVisible", "preserve3d", "width", "stringWidth", "height", "stringHeight", "transformRect", "visible", "id", "className2", "parentSize", "u", "p", "ProvideParentSize", "Border", "_forwardedOverrides", "children", "e", "child", "isConstraintSupportingChild", "Center", "constraintDefaults", "Color", "DeprecatedFrameInner", "ConstraintsContext", "frameWithMotionPropsFields", "deprecatedFramePropsFields", "isDeprecatedFrameProps", "field", "propKey", "DeprecatedFrameWithEvents", "WithEvents", "Frame", "FrameInner", "Y", "ref", "useParentSize", "currentParentSize", "deprecatedParentSize", "FrameWithMotion", "debounce", "fn", "time2", "timeout", "debounced", "args", "safeWindow", "cancel", "cx", "classNames", "data", "Data2", "initial", "_data", "ObservableObject", "target", "observer", "Data", "initialState", "DataObserverContext", "e", "useObserveData", "context", "DataObserver", "I", "__publicField", "MainLoop", "cancel", "Data", "children", "d", "observer", "p", "import_hoist_non_react_statics4", "__toESM", "require_hoist_non_react_statics_cjs", "prefix", "prefixLength", "extractPrefixedProps", "props", "keys3", "result", "rest", "key7", "strippedKey", "stripPrefixFromPrefixedKey", "GeneratedComponentContext", "e", "cloneChildrenWithProps", "children", "asNode", "cloned", "j", "child", "J", "q", "p", "l", "useCloneChildrenWithPropsAndRef", "forwardedRef", "hook", "useConstant", "createHook", "state", "createRefFunction", "updateIfNeeded", "nextForwardedRef", "ref", "shouldUpdate", "preventNextCall", "cloneChildrenWithPropsAndRef", "ownRef", "newProps", "isFunction", "cloneAsElement", "newRef", "prevForwardedRef", "prevChildRef", "value", "setRef", "StyleSheetContext", "framerPostSSRCSSSelector", "componentsWithServerRenderedStyles", "_a", "isBrowser2", "componentsWithSSRStylesAttr", "framerCSSMarker", "withCSS", "Component17", "escapedCSS", "componentSerializationId", "sheet", "cache2", "id", "RenderTarget", "concatenatedCSS", "u", "ie", "rule", "injectCSSRule", "SSRParentVariantsContext", "SSRVariantClassName", "renderBranchedChildrenFromPropertyOverrides", "overrides", "variantClassNames", "primaryVariantId", "parentVariants", "cloneChildren", "activeVariantId", "childrenArray", "branches", "nonOverriddenVariants", "variantId", "propOverrides", "arePropOverridesEffectivelyDifferent", "effectiveVariants", "intersection", "remainingVariants", "effectiveRemainingVariants", "renderedBranches", "variants", "element", "hiddenClassNames", "generateHiddenClassNames", "assert", "variantHashFromClassName", "className2", "generateHiddenClassNames", "showOnlyInVariantIds", "parentVariants", "variantClassNames", "classNames", "variantId", "variantClassName", "alreadyHiddenInParent", "intersection", "variants", "variant", "arePropOverridesEffectivelyDifferent", "props", "propOverrides", "key7", "isEqual", "propsForBreakpoint", "overrides", "noopSubscribe", "returnTrue", "returnFalse", "PropertyOverridesWithoutCSS", "e", "ref", "cloneWithRefs", "useCloneChildrenWithPropsAndRef", "ancestorCtx", "SSRParentVariantsContext", "isHydrationOrSSR", "action", "useConstant", "isBrowser2", "generatedComponentContext", "GeneratedComponentContext", "useMemoOne", "breakpoint", "children", "restProps", "primaryVariantId", "renderBranchedChildrenFromPropertyOverrides", "cloneChildrenWithProps", "assertNever", "PropertyOverrides2", "withCSS", "SSRVariantClassName", "defaultVariantKey", "defaultVariants", "_variantHashes", "AnimationCollector", "__publicField", "__privateAdd", "nodeId", "prop", "value", "variantHash", "assert", "id", "existing", "existingValue", "info", "__privateGet", "_a", "transformTemplate2", "isFunction", "framerAppearTransformTemplateToken", "initial", "animate3", "config", "isObject2", "isString", "framerAppearEffects", "withOptimizedAppearEffect", "Component17", "optimized", "framerAppearIdKey", "disabledProps", "getDisabledFXPropsInStaticRenderer", "p", "framerAppearTransformTemplateToken", "framerAppearIdKey", "framerAppearAnimationScriptKey", "getDisabledFXPropsInStaticRenderer", "props", "isStaticRenderer", "isVariantOrVariantList", "value", "isString", "effectValuesKeys", "makeFXValues", "defaults", "motionValue", "defaultFXValues", "isFXValuesKey", "key7", "effectEnabledStyle", "effectDisabledStyle", "useFXValues", "values", "enabled", "effect", "useConstant", "e", "isUndefined", "loopOptionsKeys", "useDelay", "timeoutRef", "pe", "ue", "d", "resolve", "useLoop", "loopEffectEnabled", "loopRepeatDelay", "loopTransition", "loopRepeatType", "loop", "loopPauseOffscreen", "ref", "shouldReduceMotion", "useReducedMotionConfig", "mirrorStateRef", "delay2", "animationPromiseRef", "animateValues", "te", "transition", "mirror", "to", "from", "opts", "target", "animate", "isRunning", "setIsRunning", "ye", "shouldRunRef", "animateLoop", "start", "Z", "stop", "overrideRunRef", "hasLoop", "startStopTabVisibilityListener", "isIntersectingRef", "stopAfterAnimationEnds", "startAndStopBasedOnIntersection", "entry", "useSharedIntersectionObserver", "addWillChange", "se", "parallaxTransform", "scrollY", "originalPosition", "speed", "offset", "adjustPosition", "speedFactor", "initialPosition", "scrollOffset", "parallaxOptionsKeys", "useParallax", "options", "visibilityStyle", "parallaxTransformEnabled", "transform2", "yValue", "useScroll", "parallaxY", "useTransform", "visibility", "useMotionValue", "defaultValue", "useRefEffect", "element", "frame", "_a", "useOnRouteChange", "getTransition", "isObject2", "runEffectAnimation", "appearId", "instant", "motionValue2", "isMotionValue", "isNumber", "visualElement", "visualElementStore", "startTime", "safeWindow", "handoffAnimationStartTime", "presenceOptionsKeys", "usePresenceAnimation", "motionInitial", "motionAnimate", "motionExit", "presenceInitial", "presenceAnimate", "presenceExit", "style", "initial", "animateConfig", "exit", "isPresent", "safeToRemove", "usePresence", "internalState", "base", "hasMounted", "lastAnimate", "running", "isEqual", "effectEnabled", "calcOffsetTop", "container", "top", "current", "scrollObserverOffset", "createTransformInputRange", "transformTargets", "threshold", "callback", "starts", "inputRange", "index", "targetRef", "height", "previousTop", "end", "currentScrollDirection", "lastOffset", "scrollDirectionThreshold", "useScrollDirectionChange", "scrollDirection", "cb", "direction", "repeat", "currentRouteKey", "useCurrentRouteKey", "_", "directionChangeOffset", "lastDirection", "currentTarget", "scrollInfo", "hasDirectionChanged", "nextTarget", "styleAppearOptionsKeys", "defaultOutputRange", "defaultRanges", "createInputOutputRange", "targets", "hasExit", "outputRange", "firstRange", "idx", "last", "makeStyle", "useAnimationVariants", "opacity", "targetOpacity", "transformPerspective", "enter", "animateVariant", "defaultStyles", "useStyleAppearEffect", "variants", "playState", "animation", "runAnimation", "fromInitial", "transitionWithFallback", "toValue", "hasAnimatedOnce", "animateWithIntersectionObserver", "useAppearEffect", "appears", "isPlaying", "lastAppearState", "animateWithScrollInfo", "playedState", "lastVariant", "variant", "transform", "variantAnimation", "asRecord", "styleTransformOptionsKeys", "defaultValues", "defaultRanges2", "useAttachOptionalSpring", "spring2", "springs", "objectKeys", "startAnimation3", "active", "animateValue", "m2", "latestValue", "latestSetter", "startAnimation2", "v", "set", "createInputOutputRanges", "effectKeyOutputRange", "_b", "_c", "previousTarget", "createPageOutputRange", "keyOutputRange", "pageInputRange", "useStyleTransform", "transformTrigger", "styleTransformEffectEnabled", "transformViewportThreshold", "effectDisabled", "triggerOnScroll", "fe", "scrollYInputRange", "groups", "groupValues", "backwardsCompatibleEnabledCheck", "secondaryKey", "object", "extractFXOptions", "result", "strippedKey", "stripPrefixFromPrefixedKey", "group", "keys3", "add2", "sum", "multiply", "reactRefObjectKey", "isReactRefObject", "addMotionValueStyle", "isVariantOrVariantList2", "withFX", "Component17", "forwardedRef", "p", "disabledProps", "parallax", "styleAppear", "styleTransform", "presence", "forwardedProps", "targetOpacityValue", "withPerspective", "inSmartComponent", "observerRef", "useObserverRef", "presenceEffectValues", "presenceEffectStyle", "optimizedAppearDataAttribute", "parallaxValues", "parallaxStyle", "transformValues2", "scrollStyle", "appearEffectValues", "scrollAppearStyle", "loopValues", "loopStyle", "fxValues", "scale2", "x", "y", "rotate", "rotateX", "rotateY", "skewX", "skewY", "drag", "dragConstraints", "useRerenderOnResize", "motionValueStyle", "animate3", "motionGestures", "Context", "z", "ComponentPresetsProvider", "presets", "children", "lastPresets", "pe", "isEqual", "p", "ComponentPresetsConsumer", "componentIdentifier", "presetProps", "re", "ComponentViewportContext", "e", "useComponentViewport", "ComponentViewportProvider", "width", "height", "y", "rest", "ref", "componentViewport", "cloneWithPropsAndRef", "useCloneChildrenWithPropsAndRef", "withGeneratedLayoutId", "Component17", "props", "layoutId", "useLayoutId", "shouldSuspenseBoundariesBeActive", "SynchronousSuspenseErrorBoundary", "I", "__publicField", "error", "errorInfo", "isSuspense426Error", "componentStack", "stack", "sendTrackingEvent", "suspendPromise", "Suspend", "suspend", "SuspenseThatPreservesDom", "L", "NullFallback", "nullFallback", "collectErrorToAnalytics", "isWindow", "logError", "args", "shouldEnableCodeBoundaries", "RenderTarget", "CodeComponentBoundary", "getErrorMessage", "fallback", "ServerSideErrorBoundary", "ClientSideErrorBoundary", "hasError", "DeprecatedContainerErrorBoundary", "ExternalComponentContext", "useNearestExternalComponent", "useFurthestExternalComponent", "nearestExternalComponent", "item", "IsExternalComponent", "scopeId", "nodeId", "parent", "newValue", "CRASH_ERROR_MESSAGE_PREFIX", "formatCodeCrashLocationFromSourceNode", "getErrorMessageForComponent", "getErrorMessageFor", "getErrorMessageForOverride", "element", "shouldWrapComponentWithBoundary", "scopeIdOfThisComponent", "scopeIdOfNearestExternalComponent", "externalComponentLevel", "isAuthoredByUser", "isExternalComponent", "inComponentSlot", "isLocalComponentInstance", "isNodeLocalToProject", "shouldWrapOverrideWithBoundary", "scopeIdOfNodeWithOverride", "scopeIdOfThisNode", "isUndefined", "useMaybeWrapComponentWithCodeBoundary", "isModuleExternal", "ContainerInner", "as", "outerLayoutId", "useConstant", "MotionComponent", "htmlElementAsMotionComponent", "clonedChildren", "child", "childrenWithCodeBoundary", "ComponentContainerContext", "AutomaticLayoutIds", "LayoutGroup", "Container", "SmartComponentScopedContainer", "rendersWithMotion", "otherProps", "tagName", "layoutDependency", "plainHTMLRenderableProps", "CustomCursorContext", "replaceCursorClassName", "cursorComponentClassName", "getActiveDefinitions", "map2", "previousDefinitions", "newDefinitions", "allCursors", "hashes", "hash2", "value", "CustomCursorContextProvider", "X", "events", "byCaller", "callback", "cursors", "id", "shouldReduceMotion", "useReducedMotionConfig", "u", "CustomCursorComponent", "CustomCursorHost", "withCSS", "staticCursorStyle", "customCursorReplacesNativeCursor", "cursor", "valueForCursorAlignment", "alignment", "assertNever", "getCenteringTransform", "placement", "portalIdAttribute", "getCursorHash", "x", "el", "isEmptyObject", "object", "_", "onRegisterCursors", "hasHoverCapability", "setHasHoverCapability", "ye", "pointerX", "useMotionValue", "pointerY", "opacity", "cursorRef", "internalState", "forceRender", "useForceUpdate2", "fe", "noHoverMQ", "safeWindow", "updateRender", "Z", "ue", "x2", "y2", "updateValues", "animate", "updateVariant", "frame", "updateCursor", "cancelFrame", "fireEventToTarget", "event", "_a", "hideCursor", "updateCursors", "newCursors", "unregister", "cursorHash", "replaceNativeCursor", "Cursor", "spring2", "sprungX", "useSpring", "sprungY", "useTransform", "transformTemplate2", "te", "t", "useCustomCursors", "webPageCursors", "registerCursors", "ae", "Polygon", "points", "sum", "len", "i", "pointA", "pointB", "polygonPoints2", "point", "_b", "_c", "_d", "sign", "Point", "x1", "y1", "i2", "d", "localSign", "pointsA", "pointsB", "boundingRectA", "Rect", "boundingRectB", "edgesA", "pointsALength", "index", "nextPoint", "Line", "edgesB", "pointsBLength", "edgeA", "edgeB", "rect", "edges", "seen", "count", "clippedPoints", "originalPoints", "intersectionKey", "keyForPoint", "line", "edge", "intersection2", "invertPlacement", "preferredOffset", "length", "max", "collisionDetectionPadding", "min", "size", "collisionAxis", "windowSize", "getPlacementAndOffsetAvoidingScreenCollision", "offset", "getSafePlacementFloatingPositionRect", "anchor", "collisionDetectionSize", "rebasedRect", "preferredRect", "safePlacement", "rebasedCollisionRect", "preferredPoint", "a", "b", "minInset", "safeAreaPolygonConstraints", "mouseOffset", "polygonPoints", "constrainX", "constrainY", "tl", "bl", "tr", "br", "mousePoint", "safeAreaInset", "delta", "floatingPositionSafeAreaStyle", "anchorRect", "floatingRect", "minX", "minY", "valueForFloatingAlignment", "motionOriginFromFloatingPosition", "getAncestorInfo", "anchorRef", "info", "createAnimationFrameLoop", "onRead", "createUpdateSafeArea", "safeAreaRef", "calculatedRect", "updatePosition", "floatingPositionRef", "position", "FloatingStackingContext", "useDismissFloatingLayer", "safeArea", "onDismiss", "descendantStackingContext", "ancestorStackingContext", "isPresent", "safeToRemove", "usePresence", "handleEscape", "latestEvent", "maybeDismiss", "scheduleMaybeDismiss", "makeGetSafePlacementFloatingPositionRect", "useDynamicMotionOrigin", "initialPlacement", "originX", "originY", "origin", "motionValue", "values", "childrenWithOrigin", "isReactChild", "isReactElement", "isObject2", "style", "overlayContainerId", "templateOverlayContainerId", "getPortalContainer", "deprecatedSelector", "inComponent", "container2", "container", "isString", "Floating", "offsetX", "offsetY", "className2", "portalSelector", "zIndex", "collisionDetection", "contentRef", "updateOrigin", "refHasValue", "scrolls", "elementRect", "initialAnchorRect", "getSafePlacementRect", "initialSafePlacement", "initialCalculatedRect", "updateSafeArea", "onUpdate", "onRender", "safePlacementAndRect", "loop", "cancelAnimationFrameLoop", "handleMouseMove", "descendantContext", "Ha", "motion", "GracefullyDegradingErrorBoundary", "I", "__publicField", "error", "isBot", "stack", "sendTrackingEvent", "_a", "_b", "unwrappedError", "closingHTMLComment", "closingHTMLCommentReplacement", "dom", "p", "LazyValue", "_LazyValue", "resolver", "value", "status", "promise", "assertNever", "findAnchorElement", "target", "withinElement", "ChildrenCanSuspend", "children", "SuspenseThatPreservesDom", "withChildrenCanSuspend", "Component17", "Y", "props", "ref", "linkKey", "isLinkToWebPage", "link", "PRELOAD_AFTER_MS", "OBSERVER_THRESHOLD", "LOW_MEMORY_THRESHOLD", "MAX_CONCURRENT_PRELOADS_SLOW_NETWORK", "MAX_CONCURRENT_PRELOADS_FAST_NETWORK", "nodeToRoute", "preloadedRoutes", "routeToNodesInViewport", "getObserveRouteForPreloadingFn", "connection", "lowDeviceMemory", "effectiveType", "preloadDisabled", "maxPreloadAmount", "updateConnection", "observer", "onPreloadIntersectionChange", "activePreloadsAmount", "preloadTimeout", "route", "nodesInViewport", "preloadDone", "preloadRoute", "node", "entries", "_a2", "entry", "nodes", "amountOfNodesInViewport", "observeRouteForPreloading", "shouldPreloadBasedOnUA", "noLocale", "resolveSlugCache", "resolveSlug", "unresolvedSlug", "utilsByCollectionId", "activeLocale", "cache2", "collectionCache", "collectionItemCache", "lazyValue", "getUtils", "utils", "resolveSlugsWithSuspense", "unresolvedPathSlugs", "unresolvedHashSlugs", "collectionUtils", "activeLocale", "promises", "handleSlugs", "unresolvedSlugs", "result2", "slugKey", "unresolvedSlug", "assert", "lazyValue", "resolveSlug", "promise", "value", "result", "isInternalURL", "href", "isValidURL", "isInternal", "findMatchingRouteAttributesForWebPageLinkWithSuspense", "router", "currentRoute", "pageLink", "activeLocale", "implicitPathVariables", "webPageId", "hash2", "pathVariables", "hashVariables", "unresolvedHashSlugs", "unresolvedPathSlugs", "resolvedSlugs", "resolveSlugsWithSuspense", "getRouteAttributes", "findMatchingRouteAttributesForResolvedPath", "path", "isInternalURL", "pathnameWithQueryParams", "assert", "pathname", "routeId", "inferInitialRouteFromPath", "route", "combinedPathVariables", "_a", "combinedHashVariables", "resolvedHref", "getPathForRoute", "resolvedHash", "getRouteFromPageLink", "isString", "isInternal", "elementKey", "collectionKey", "collectionItemIdKey", "pathVariablesKey", "mediaType", "isFramerPageLink", "value", "parseFramerPageLink", "link", "isFramerPageLink", "url", "target", "mediaType", "searchParams", "element", "elementKey", "collectionItem", "collection", "collectionKey", "collectionItemId", "collectionItemIdKey", "pathVariablesValue", "pathVariablesKey", "pathVariables", "navigateFromAttributes", "navigate", "element", "implicitPathVariables", "_a", "routeId", "elementId", "pathVariables", "pathVariablesRaw", "href", "link", "parseFramerPageLink", "smoothScroll", "linkFromFramerPageLink", "isFramerPageLink", "parsed", "target", "collectionItem", "createVariablesFromPageLinkCollectionItem", "variables", "pathVariablesKey2", "value", "pathVariablesRegExp2", "PathVariablesContext", "z", "useImplicitPathVariables", "contextPathVariables", "re", "currentPathVariables", "useCurrentRoute", "linkMatchesRoute", "route", "webPageId", "hash2", "combinedPathVariable", "key7", "propsForLink", "href", "openInNewTab", "trackLinkClick", "isInternal", "isInternalURL", "target", "getTargetAttrValue", "rel", "isValidURL", "linkInfoKey", "link", "_a", "_b", "NestedLinksCollector", "__publicField", "result", "outerLinkKey", "innerLinkKeys", "outerLinkInfo", "assert", "links", "innerLinkKey", "innerLinkInfo", "outerLink", "innerLink", "isWindow", "isTest", "outerLinkNestingInfo", "nestedLinksCollector", "useIsOnFramerCanvas", "RenderTarget", "OuterLinkContext", "z", "useReplaceNestedLinks", "children", "scopeId", "nodeId", "propsAddedByLink", "observerRef", "re", "furthestExternalComponent", "useFurthestExternalComponent", "se", "router", "useRouter", "currentRoute", "useCurrentRoute", "route", "pageLink", "isLinkToWebPage", "linkFromFramerPageLink", "getRouteFromPageLink", "replaceNestedLinks", "useLibraryFeatures", "isOnFramerCanvas", "shouldReplaceLink", "onClick", "te", "event", "openExternalLink", "onAuxClick", "onKeyDown", "useRefEffect", "node", "replacedChildren", "j", "child", "isChildReplaceable", "linkInfoIsCollectable", "tag", "maybeReplaceAnchorWithSpan", "childChildren", "childProps", "props", "ref", "B", "p", "linkInfo", "isUndefined", "J", "component", "isMotionComponent", "unwrapMotionComponent", "motion", "useTrackLinkClick", "clickTrackingId", "activeLocale", "hrefAttribute", "_c", "_d", "_e", "pageviewEventData", "sendTrackingEvent", "makeUrlAbsolute", "targetWebPageId", "targetRoute", "targetRoutePath", "targetCollectionItemId", "utils", "slug", "url", "safeWindow", "performNavigation", "routeId", "elementId", "combinedPathVariables", "smoothScroll", "beforeUrlUpdate", "isLazyComponentType", "createOnClickLinkHandler", "usedMetaKey", "anchorElement", "findAnchorElement", "isExternalLink", "shouldPerformNavigation", "track", "yieldToMain", "propsForRoutePath", "implicitPathVariables", "matchedRoute", "findMatchingRouteAttributesForResolvedPath", "pathVariables", "path", "getPathForRoute", "isBot", "anchorTarget", "Link", "withChildrenCanSuspend", "Y", "motionChild", "restProps", "forwardedRef", "useImplicitPathVariables", "useLocaleInfo", "isString", "resolvedHref", "findMatchingRouteAttributesForWebPageLinkWithSuspense", "linkMatchesRoute", "hasRef", "useObserverRef", "observeRouteForPreloading", "navigate", "propsAddedByLinkExceptNavigate", "isInternalNavigation", "useCloneChildrenWithPropsAndRef", "cloneChildPropsWithAggregatedEvents", "rebindEventHandlersIfNeeded", "linkProps", "aggregatedProps", "onTap", "childOnClick", "childOnTap", "isFunction", "info", "isIOS", "preventClickOnNativeAnchorLink", "resolveLinkInternal", "href", "router", "implicitPathVariables", "onlyHash", "resolveSlugs2", "pageLink", "isLinkToWebPage", "linkFromFramerPageLink", "isString", "propsForLink", "currentRoute", "webPageId", "hash2", "pathVariables", "hashVariables", "unresolvedHashSlugs", "unresolvedPathSlugs", "route", "resolvedSlugs", "combinedPathVariables", "combinedHashVariables", "getPathForRoute", "IgnoreErrors", "I", "__publicField", "error", "FormContext", "e", "isSamePage", "a", "b", "aPathVariables", "bPathVariables", "key7", "getPageviewEventData", "abTestId", "framerSiteId", "routeId", "routePath", "collectionItemId", "localeCode", "useSendPageView", "currentRoute", "currentRouteId", "currentPathVariables", "collectionUtils", "activeLocale", "re", "FormContext", "pageviewEventData", "pe", "skipFirstPageView", "ue", "getFullPageviewEventData", "_a", "utils", "slug", "sendTrackingEvent", "listener", "event", "defaultLocaleId", "useForceUpdate3", "_", "setForcedRenderCount", "e", "v", "updateScrollPosition", "hash2", "smoothScroll", "isHistoryTransition", "element", "scrollElementIntoView", "useScheduleRenderSideEffects", "dep", "actions", "fe", "action", "te", "cb", "executeBeforeUrlUpdateOnce", "beforeUrlUpdate", "noop2", "beforeUrlUpdateExecuted", "useNavigationTransition", "startNativeSpinner", "useNativeLoadingSpinner", "navigationController", "transitionFn", "nextRender", "updateURL", "isAbortable", "_b", "hasUpdateURL", "controller", "signal", "stopMonitoringINPRelatedInputs", "monitorINPRelatedInputs", "resolveNavigationPromise", "navigationPromise", "resolve", "reject", "navigationTransition", "error", "announceNavigation", "Router", "defaultPageStyle", "disableHistory", "initialPathVariables", "initialRoute", "notFoundPage", "routes", "initialLocaleId", "locales", "EMPTY_ARRAY", "preserveQueryParams", "LayoutTemplate", "editorBar", "siteCanonicalURL", "useMarkRouterEffects", "useReplaceInitialState", "startViewTransition2", "useViewTransition", "forceUpdate", "scheduleSideEffect", "startNavigation", "monitorNextPaintAfterRender", "useMonitorNextPaintAfterRender", "currentRouteRef", "currentPathVariablesRef", "currentLocaleIdRef", "currentLocaleId", "se", "id", "localeInfo", "localeOrLocaleId", "yieldToMain", "localeId", "isString", "isObject2", "defaultLocale", "nextLocale", "currentRouteId2", "currentRoute2", "localeResult", "switchLocale", "currentStatePaginationInfo", "isHistoryState", "currentPath", "Z", "ignorePushStateWrapper", "pushHistoryState", "setCurrentRouteId", "pathVariables", "usePopStateHandler", "navigate", "newRoute", "routeStatus", "isLazyComponentType", "hasRendered", "executeBeforeUrlUpdate", "inUse", "path", "match", "pathVariablesRegExp", "usedVariable", "routeElementId", "getRouteElementId", "currentPathVariables2", "currentRouteLocaleId", "route", "pushRouteState", "getRoute", "useGetRouteCallback", "currentRoutePath", "api", "pageExistsInCurrentLocale", "pathWithFilledVariables", "fillPathVariables", "remountKey", "templatePageStyle", "useConstant", "p", "RouterAPIProvider", "LocaleInfoContext", "SynchronousSuspenseErrorBoundary", "u", "SuspenseThatPreservesDom", "NotFoundErrorBoundary", "MarkSuspenseEffects", "WithLayoutTemplate", "inLayoutTemplate", "x", "renderPage", "TurnOnReactEventHandling", "style", "children", "scrollIntoViewOptions", "preloadImage", "url", "image", "isObjectOrArray", "value", "getPropertyByPath", "input", "keyPath", "keyParts", "part", "current", "getRequestCacheKey", "loadingFetchResult", "isNumberString", "isValidFetchDataValueResult", "type", "isNumber", "isBoolean", "isValidURL", "resolveFetchDataValue", "result", "request", "resolvedValue", "isUndefined", "isCacheExpired", "insertionTimestamp", "cacheDuration", "RenderTarget", "cacheDurationMs", "currentTimestamp", "expirationTimestamp", "noop4", "_subscribers", "_preloadedRequests", "_shortestCacheDurations", "_cachedAt", "_ongoingFetches", "_staleQueriesInterval", "_FetchClient", "__publicField", "__privateAdd", "debounce", "data2", "responseValue", "cacheConfig", "__privateGet", "storedAt", "interval", "cacheKey", "currentIntervalForRequest", "shortestCacheDuration", "safeWindow", "cachedAt", "rawData", "cached", "cachedData", "subscribers", "subscriber", "isBrowser2", "ongoingFetch", "hasExpiredCache", "promise", "response", "onlyIfPrefetched", "callback", "skipFetchRequest", "cacheDurationForUrl", "nextSubscribers", "FetchClient", "FetchClientContext", "z", "IsRestoringCacheContext", "FetchClientProvider", "initialClient", "client", "ye", "isRestoring", "setIsRestoring", "_subscriptions", "_subscribers2", "_results", "_SSRResults", "_onlyPrefetched", "_subscriptions", "_subscribers2", "_results", "_SSRResults", "_onlyPrefetched", "MotionGlobalConfig", "WillChangeMotionValue", "PageRoot", "RootComponent", "isWebsite", "routeId", "framerSiteId", "pathVariables", "routes", "collectionUtils", "notFoundPage", "isReducedMotion", "includeDataObserver", "localeId", "locales", "preserveQueryParams", "EditorBar", "defaultPageStyle", "disableHistory", "LayoutTemplate", "siteCanonicalURL", "e", "MainLoop", "p", "MotionConfig", "FetchClientProvider", "CustomCursorHost", "FormContext", "Router", "EditorBarLauncher", "Wrapper", "DataObserver", "RoutesProvider", "NavigationWrapper", "libraryFeatures", "useLibraryFeatures", "mounted", "setMounted", "ye", "re", "editorBarFeatures", "se", "features", "key7", "ue", "Z", "IgnoreErrors", "L", "ResolveLinks", "withChildrenCanSuspend", "Y", "links", "children", "rest", "ref", "router", "useRouter", "activeLocale", "useLocaleInfo", "cloneWithPropsAndRef", "useCloneChildrenWithPropsAndRef", "promises", "resolvedLinks", "link", "isString", "resolveLinkInternal", "unresolvedPathSlugs", "unresolvedHashSlugs", "handleSlugs", "slugs", "result", "slugKey", "unresolvedSlug", "assert", "lazyValue", "resolveSlug", "promise", "resolvedValue", "childrenWithLinks", "getLogger", "name", "args", "_a", "runtime", "isAnyCollection", "value", "isAnyLegacyCollection", "isAnyDatabaseCollection", "isLegacyCollection", "isArray", "isObject2", "isLegacyLocalizedCollection", "isFunction", "isDatabaseCollection", "isLocalizedDatabaseCollection", "getCollectionItems", "collection", "locale", "CompatibilityDatabaseCollection", "__publicField", "propertyControls", "getPropertyControls", "assert", "schema", "controlEntries", "key7", "controlDescription", "type", "item", "pointer", "data2", "isNullish", "definition", "isUndefined", "LazyValue", "promise", "index", "pointers", "items", "left", "right", "compareArray", "collation11", "leftLength", "rightLength", "i", "leftItem", "rightItem", "result", "compare", "castArray", "DatabaseValue", "compareBoolean", "castBoolean", "valueToBoolean", "cast", "compareColor", "castColor", "compareDate", "leftDate", "rightDate", "castDate", "date", "isValidDate", "compareEnum", "castEnum", "compareFile", "castFile", "compareLink", "leftEncoded", "rightEncoded", "castLink", "protocol", "compareNumber", "castNumber", "number2", "valueToNumber", "compareObject", "leftKeys", "rightKeys", "leftKey", "rightKey", "leftValue", "rightValue", "castObject", "definitionEntries", "itemDefinition", "compareResponsiveImage", "castResponsiveImage", "compareRichText", "castRichText", "compareString", "castString", "valueToString", "assertNever", "isBoolean", "isNumber", "isString", "source", "target", "sourceValue", "targetValue", "isNull", "unknownDefinition", "getNetworkLatency", "getNetworkSpeed", "KB", "Cost", "_Cost", "network", "totalRequests", "transferredBytes", "latency", "speed", "cost", "Group", "id", "relational", "__publicField", "node", "required", "hash2", "existing", "winner", "Winner", "assert", "optimizer", "Cost", "cost", "evaluateSync", "generator", "state", "evaluateAsync", "value", "evaluateObject", "values", "result", "keys3", "promises", "key7", "isGenerator2", "evaluateArray", "AbstractNode", "isSynchronous", "RelationalNode", "group", "isHashable", "value", "isObject2", "isFunction", "calculateHash", "name", "values", "hashes", "isCollectionMetadata", "CollectionMetadata", "assert", "isFieldMetadata", "FieldMetadata", "isIndexMetadata", "IndexMetadata", "isRelationalNode", "RelationalNode", "isGroup", "Group", "RichText", "data2", "pointer", "__publicField", "VIRTUAL_INDEX_FIELD", "Metadata", "other", "item", "ids", "a", "b", "CollectionMetadata", "id", "name", "data2", "__publicField", "Indexes", "Fields", "IndexMetadata", "id", "data2", "collection", "lookupNodes", "constraint", "ordering", "__publicField", "Fields", "fieldName", "field", "Indexes", "Metadata", "FieldMetadata", "id", "name", "definition", "collection", "item", "assert", "value", "RichText", "Fields", "Metadata", "__publicField", "OrderingField", "field", "direction", "calculateHash", "Ordering", "ordering", "other", "fields", "VIRTUAL_INDEX_FIELD", "RequiredProps", "resolvedFields", "node", "Scope", "_Scope", "parent", "scopeField", "scope", "_a", "candidates", "namedFields", "Tuple", "result", "pointer", "tuple", "Relation", "_Relation", "tuples", "predicate", "callback", "start", "end", "keys3", "key7", "ProjectionField", "input", "RelationalProject", "_RelationalProject", "RelationalNode", "projections", "passthrough", "isSynchronous", "projection", "projectionFields", "required", "optimizer", "inputRequired", "inputCost", "projectionsCost", "Cost", "projectionCost", "projectionInput", "context", "outputFields", "projectedValues", "evaluateArray", "evaluateObject", "index", "collation", "ScalarNode", "AbstractNode", "referencedFields", "referencedOuterFields", "generator", "evaluateSync", "evaluateAsync", "collation2", "CaseCondition", "when", "then", "ScalarCase", "_ScalarCase", "conditions", "otherwise", "_b", "condition", "DatabaseValue", "valueToBoolean", "Builder", "normalizer", "query", "locale", "inScope", "select", "fromScope", "defaultOrdering", "orderProjections", "orderFields", "order", "isUndefined", "orderingField", "expression", "fieldId", "projectionScope", "offset", "limit", "selects", "outScope", "fieldName", "from", "assertNever", "collectionData", "getCollection", "collectionName", "collectionId", "CollectionMetadata", "indexData", "lookupNodes", "node2", "constraint", "indexId", "IndexMetadata", "leftScope", "rightScope", "leftOrdering", "rightOrdering", "left", "right", "isOuterField", "subquery", "unknownDefinition", "getArgument", "argument", "source", "target", "array", "Subquery", "data2", "isAnyLegacyCollection", "CompatibilityDatabaseCollection", "isDatabaseCollection", "isLocalizedDatabaseCollection", "RelationalFilter", "_RelationalFilter", "predicateCost", "predicates", "_", "RelationalIndexLookup", "_RelationalIndexLookup", "isFullScan", "lookup", "KB", "RelationalIntersection", "_RelationalIntersection", "leftOutputFields", "rightOutputFields", "leftRequired", "leftCost", "rightRequired", "rightCost", "ScalarEquals", "_ScalarEquals", "RelationalLeftJoin", "_RelationalLeftJoin", "group", "constraintCost", "leftConstraint", "rightConstraint", "joinKeyMap", "rightTuple", "rightValue", "tuplesForKey", "leftTuple", "leftValue", "matches", "joinedTuple", "hasMatch", "RelationalRightJoin", "_RelationalRightJoin", "RelationalScan", "_RelationalScan", "RelationalUnion", "_RelationalUnion", "ScalarAnd", "_ScalarAnd", "ScalarConstant", "collation3", "ScalarContains", "_ScalarContains", "sourceCost", "targetCost", "collation4", "ScalarEndsWith", "_ScalarEndsWith", "ScalarGreaterThan", "_ScalarGreaterThan", "ScalarGreaterThanOrEqual", "_ScalarGreaterThanOrEqual", "ScalarLessThan", "_ScalarLessThan", "ScalarLessThanOrEqual", "_ScalarLessThanOrEqual", "ScalarNotEquals", "_ScalarNotEquals", "ScalarOr", "_ScalarOr", "collation5", "ScalarStartsWith", "_ScalarStartsWith", "Explorer", "before", "after", "createIndexQueryAll", "length", "RelationalProps", "Memo", "relationalProps", "Group", "hash2", "existing", "relational", "RelationalLimit", "_RelationalLimit", "limitCost", "valueToNumber", "RelationalOffset", "_RelationalOffset", "offsetCost", "ScalarArray", "_ScalarArray", "itemDefinitions", "namedFieldEntries", "namedFieldIds", "inputContext", "relation", "relationTuple", "ScalarCast", "_ScalarCast", "ScalarFlatArray", "_ScalarFlatArray", "collation6", "ScalarIn", "_ScalarIn", "collation7", "ScalarIndexOf", "_ScalarIndexOf", "ScalarLength", "_ScalarLength", "ScalarNot", "_ScalarNot", "collation8", "ScalarNotIn", "_ScalarNotIn", "ScalarVariable", "Normalizer", "memo3", "pushedFilter", "pushedLimit", "nullableDefinition", "isLeftVariable", "arrayDefinition", "castConditions", "castWhen", "castCondition", "EnforcerNode", "EnforcerResolve", "_EnforcerResolve", "collections", "collectionItems", "pointers", "items", "collation9", "EnforcerSort", "_EnforcerSort", "isAscending", "leftPointer", "leftItem", "rightPointer", "rightItem", "isNull", "Optimizer", "query", "locale", "__publicField", "Memo", "Normalizer", "Explorer", "outScope", "Builder", "group", "required", "optimized", "namedFields", "winner", "normalized", "assert", "node", "cost", "enforcer", "EnforcerResolve", "EnforcerSort", "stringifyIdentifier", "expression", "stringifyLiteralValue", "stringifyFunctionCall", "argument", "stringifyExpression", "stringifyCaseExpression", "caseString", "condition", "stringifyUnaryOperation", "value", "stringifyBinaryOperation", "left", "right", "operator", "stringifyTypeCast", "stringifyQuery", "assertNever", "stringifyCollection", "collection", "isDatabaseCollection", "stringifyJoin", "join", "result", "stringifyFrom", "from", "autoIndentSql", "sql", "formattedSql", "token", "queryString", "selectExpression", "expressionString", "orderExpression", "log", "getLogger", "QueryEngine", "optimizer", "root", "relation", "namedFieldEntries", "tuple", "resolvedFields", "name", "field", "resolved", "RichText", "item", "entries", "resolvedEntries", "key7", "QueryCache", "queryEngine2", "getCacheKey", "existing", "resolver", "LazyValue", "collectionIds", "getCollectionId", "id", "replaceCollection", "_", "isObject2", "isAnyCollection", "localeId", "rejectPending", "pendingTimers", "pendingPromises", "t", "reject", "createSet", "useActiveVariantCallback", "baseVariant", "useConstant", "useOnCurrentTargetChange", "ue", "pe", "callback", "args", "resolve", "msDelay", "useAddVariantProps", "baseVariant", "gestureVariant", "variantProps", "e", "id", "_a", "_b", "_c", "activeMediaQueryFromWindow", "mediaQueries", "variant", "query", "safeWindow", "activeBreakpointHashesFromWindow", "breakpoints", "_a", "matches", "hash2", "mediaQuery", "defaultHash", "useHydratedBreakpointVariants", "initial", "hydratedWithInitial", "isInitialNavigation", "re", "IsInitialNavigationContext", "isStaticRenderer2", "useIsStaticRenderer", "usesMediaQueries", "isBrowser2", "baseVariant", "pe", "basePropsVariant", "forceUpdate", "useForceUpdate2", "instantTransition", "useInstantTransition", "setActiveVariantInstant", "te", "updateStateAndRerender2", "Z", "updateStateAndRerender", "useIsomorphicLayoutEffect2", "ue", "callbacks", "mql", "callback", "event", "addMQLCallback", "removeMQLCallback", "framerBreakpointCSSSelector", "requestIdleCallbackFallback", "callback", "removeHiddenBreakpointLayersV2", "breakpoints", "_a", "_b", "_c", "_d", "suspenseBoundaries", "activeBreakpointHashes", "activeBreakpointHashesFromWindow", "hash2", "hiddenLayer", "isSuspenseBoundaryStart", "supportsRequestIdleCallback", "safeWindow", "_a2", "ssrVariant", "suspenseBoundary", "isSuspenseBoundaryEnd", "node", "callbackForVariant", "map2", "variant", "useOnVariantChange", "callbackMap", "isStaticRenderer", "isActiveScreenRef", "e", "callbackMapRef", "useOnCurrentTargetChange", "isCurrent", "isOverlayed", "isActiveScreen", "callback", "setOverflow", "blockDocumentScrolling", "show", "frame", "htmlStyle", "useOverlayState", "showOverlay", "setShowOverlay", "e", "callback", "yieldToMain", "Z", "key4", "isRoute", "route", "isObject2", "use", "promise", "queryEngine", "QueryEngine", "queryCache", "QueryCache", "useQueryData", "query", "activeLocale", "useLocaleInfo", "cached", "getWhereExpressionFromPathVariables", "pathVariables", "collection", "expressions", "value", "isUndefined", "isObject2", "name", "result", "expression", "createGestureVariant", "variant", "type", "nextVariant", "allVariants", "currentVariant", "nextIndex", "nextVariant2", "assert", "activeTransition", "transitions", "variantTransition", "getGesture", "enabledGestures", "isHovered", "isPressed", "isLoading", "isError", "hover2", "pressed", "loading", "error", "createVariantClassName", "baseVariant", "variantClassNames", "mappedClassName", "safeBaseVariant", "targetVariant", "fallbackVariant", "validBaseVariants", "CycleVariantState", "useRunCallbackIfPageIsVisible", "listenerRef", "pe", "callbackRef", "clean", "te", "ue", "callback", "listenerFn", "_a", "useRunCallbackIfElementIsInView", "observerRefCleanup", "isInViewRef", "observers", "re", "SharedIntersectionObserverContext", "ref", "queuedMicrotask", "observerCallback", "entry", "observeElement", "useUpdateIfVisible", "runUpdateIfPageIsVisible", "runUpdateIfElementIsInView", "checkViewport", "isBot", "globalWaitingForClickPromise", "globalWaitingForClickResolve", "getPromiseWithFallback", "resolve", "resolveFn", "globalWaitForClickListener", "event", "globalClickReceivedListener", "useWaitForGlobalClick", "enabled", "useVariantState", "variant", "externalDefaultVariant", "externalTransitions", "externalEnabledGestures", "externalCycleOrder", "variantProps", "forceUpdate", "useForceUpdate2", "isCanvas", "useIsOnFramerCanvas", "useConstant", "pauseOffscreenFeatureOn", "yieldOnTapFeatureOn", "useLibraryFeatures", "runUpdateIfVisible", "internalState", "resolveNextVariant", "targetBaseVariant", "isHovered2", "isPressed2", "isError2", "enabledGestures2", "defaultVariant2", "nextBaseVariant", "gesture", "nextGestureVariant", "createGestureVariant", "updateIfNeeded", "baseVariant2", "gestureVariant2", "clearError", "nextBase", "nextGesture", "yieldOnTap", "yieldToMain", "isHoveredHasUpdated", "isPressedHasUpdated", "Z", "setGestureState", "setVariant", "proposedVariant", "pauseOffscreen", "cycleOrder", "nextVariant", "clearLoadingGesture", "gestureVariant", "defaultVariant", "loadedBaseVariant", "addVariantProps", "useAddVariantProps", "se", "variants", "hasLoadingVariant", "gestures", "gestureHandlers", "activeTransition", "cx", "withCodeBoundaryForOverrides", "Component17", "scopeId", "nodeId", "override", "inComponentSlot", "shouldEnableCodeBoundaries", "appliedOverride", "tryToApplyOverride", "hasErrorBeenLogged", "CodeBoundaryForOverrides", "props", "ref", "nearestExternalComponent", "useNearestExternalComponent", "shouldWrapOverrideWithBoundary", "p", "CodeComponentBoundary", "getErrorMessageForOverride", "logError", "collectErrorToAnalytics", "e", "error", "keys", "defaultRanges3", "createInputOutputRanges2", "transformTargets", "threshold", "exitTarget", "outputRange", "inputRange", "createTransformInputRange", "index", "lastInputRange", "isNumber", "firstItem", "withVariantAppearEffect", "Component17", "e", "props", "forwardedRef", "RenderTarget", "p", "options", "rest", "extractPrefixedProps", "visibleVariantId", "obscuredVariantId", "animateOnce", "variantAppearEffectEnabled", "targets", "scrollDirection", "activeVariant", "setVariant", "animateState", "observerRef", "useObserverRef", "useAppearEffect", "appears", "playedState", "currentVariant", "scrollInfo", "scrollY", "_a", "transform", "variant", "useScrollDirectionChange", "useOnRouteChange", "target", "Z", "WindowContext", "e", "useProvidedWindow", "safeFonts", "fontAliases", "fontFamilies", "isSuccessfullyParsedFontVariant", "variant", "systemFontFamilyName", "LocalFontSource", "__publicField", "family", "fontFamily", "fonts", "fontFamilies", "members", "member", "selector", "weight", "font", "key7", "value", "fontAliases", "systemFontFamily", "aliases", "fontFamilies2", "weights", "styles4", "style", "createVariantName", "alias", "fontWeightNames", "friendlyStyle", "isVariableFont", "createFontFamilyName", "createVariableFontFamilyName", "familyName", "supportsOpenType", "openTypeData", "validateVariationAxes", "variationAxesData", "variationAxes", "axis", "isVariationAxis", "isOpenTypeFeature", "feature", "builtInFontSelectorPrefix", "BuiltInFontSource", "assets", "asset", "properties", "fontName", "variantNameToWeight", "getFontStyle", "a", "b", "weightA", "weightB", "kebabCaseVariant", "variantToKebabCase", "variantsNameToWeight", "createFont", "locator", "f", "foundryName", "version2", "existingFontFamily", "_a", "_b", "_", "selectorWithoutPrefix", "name", "customFontSelectorPrefix", "getCustomFontName", "fileName", "isAssetVariableFont", "CustomFontSource", "_c", "isVariableFont2", "possibleValues", "possibleValuesWithItalics", "lowerCaseFamily", "tokens", "foundToken", "char", "foundFontFamily", "getRelatedFontVariants", "currentVariant", "availableVariants", "pickBoldItalicVariants", "pickVariableVariants", "currentWeight", "currentStyle", "variantByWeightAndStyle", "boldVariantByStyle", "variantBold", "variantBoldItalic", "currentVariantWeight", "variantItalic", "loadFontsWithOpenType", "source", "supportedFonts", "loadFontToOpenTypeFeatures", "features", "knownFontshareCategories", "parseFontshareCategories", "categoriesField", "category", "isKnownFontshareCategory", "fontsharePrefix", "weightNameToNumber", "weightNames", "allowedVariantsRegex", "FontshareSource", "_FontshareSource", "variantSplit", "weightName", "weightName2", "styleName", "fontshareFonts", "fontsWithOpenType", "fontshareFont", "fontVariants", "fontStyle", "fontMetadataSelector", "hasOpenTypeFeatures", "fontVariant", "variantVariable", "variantVariableItalic", "mapToKnownCategory", "fontToOpenTypeFeatures", "categoryString", "categoryMapping", "framerInterFontPrefix", "framerFontPrefix", "weightNameToNumber2", "FramerFontSource", "_FramerFontSource", "weightAndStyleInfo", "framerFonts", "framerFont", "rest", "isVariable", "googleFontSelectorPrefix", "GoogleFontSource", "_GoogleFontSource", "match", "webFonts", "webFontsWithAxes", "fontsToVariationAxes", "webFontsMap", "mapBy", "webFont", "webFontsWithAxesMap", "webFontName", "staticVariants", "variantName", "variableFont", "variableVariants", "allVariants", "allSuccessfullyParsedVariants", "googleFontsVariantName", "linkedVariants", "mapToKnownCategory2", "array", "keyFn", "acc", "item", "import_fontfaceobserver", "__toESM", "require_fontfaceobserver_standalone", "FONT_LOADING_TIMEOUT", "MAX_RETRIES", "FontLoadingError", "message", "fontRequests", "fontReadyPromises", "loadFont", "data2", "doc", "loadFontWithRetries", "attempt", "url", "stretch", "unicodeRange", "requestId", "fontFace", "isString", "readyPromise", "isFontReady", "e", "readyPromiseId", "framer_default", "loadVariationAxes", "isValidVariationAxesData", "axes", "assertNever", "error", "isObject2", "isValidVariationAxes", "isVariationAxis2", "FontStore", "resolve", "staticFonts", "variableFonts", "runtime", "axesData", "builtInFonts", "importedFonts", "info", "googleLocator", "fontshareLocator", "builtInFontLocator", "framerFontDraftProperties", "fontIsVariable", "isTest", "selectors", "importPromises", "warnOnce2", "fontSelectors", "result", "fontsLoadedCallback", "fontStore", "defaultFont", "assert", "Image2", "e", "props", "ref", "background", "children", "alt", "draggable", "styleFromProps", "rest", "style", "MotionComponent", "htmlElementAsMotionComponent", "u", "p", "BackgroundImageComponent", "nonSlugCharactersRegExp", "trimSlugRegExp", "slugify", "value", "htmlRegExp", "escapeHTML", "str", "tag", "regex", "replaceFramerPageLinks", "rawHTML", "getRoute", "currentRoute", "implicitPathVariables", "original", "pre1", "pre2", "value1", "value2", "post", "_a", "_b", "href", "pageLink", "parseFramerPageLink", "targetRoute", "isRoute", "targetPath", "currentPath", "attributes", "elementId", "getRouteElementId", "link", "linkFromFramerPageLink", "isString", "linkMatchesRoute", "relativePath", "pathVariables", "pathVariablesRegExp2", "_", "key7", "params", "computeRelativePath", "isShallowEqualArray", "a", "b", "v", "i", "htmlEscapes", "reUnescapedHtml", "reHasUnescapedHtml", "escapeHTML2", "chr", "deprecatedRichTextPlaceholder", "richTextWrapperClassName", "DeprecatedRichText", "Y", "forwardedRef", "id", "name", "html", "htmlFromDesign", "text", "textFromDesign", "fonts", "width", "height", "left", "right", "top", "bottom", "center", "className2", "stylesPresetsClassName", "visible", "opacity", "rotation", "verticalAlignment", "isEditable", "environment2", "RenderTarget", "withExternalLayout", "positionSticky", "positionStickyTop", "positionStickyRight", "positionStickyBottom", "positionStickyLeft", "__htmlStructure", "__fromCanvasComponent", "_forwardedOverrideId", "_forwardedOverrides", "_usesDOMRect", "_children", "parentSize", "useParentSize", "layoutId", "useLayoutId", "fallbackLayoutRef", "pe", "layoutRef", "navigate", "useRouter", "useCurrentRoute", "useRoutePreloader", "useMeasureLayout", "inCodeComponent", "re", "ComponentContainerContext", "isOnCanvas", "useIsOnFramerCanvas", "textOrOverride", "forwardedOverrideId", "override", "innerHTML", "escapedText", "useImplicitPathVariables", "innerHTMLWithReplacedFramerPageLinks", "se", "ue", "container", "interceptPageLinks", "event", "anchorElement", "findAnchorElement", "navigateFromAttributes", "useLoadFonts", "ie", "injectComponentCSSRules", "isHidden", "convertVerticalAlignment", "restrictedRenderTarget", "frame2", "calculateRect", "isAutoSized2", "template", "transformTemplate", "rotate", "Animatable", "collectFiltersFromProps", "collectTextShadowsForProps", "motion", "cx", "fromCanvasComponent", "containerRef", "prevFontsRef", "fontStore", "newlyLoadedFontCount", "measureClosestComponentContainer", "newOverrideableRef", "patchAndWaitForChild", "controller", "current", "refCallbackResolve", "refCallbackPromise", "resolve", "reject", "element", "defaultValues2", "isEffectKey", "createKeyframes", "effect", "out", "effectValue", "defaultValue", "isUndefined", "emojiSplitRe", "tokenizeText", "tokenization", "elements", "words", "lastWordIndex", "word", "wordIndex", "isLastWord", "short", "x", "char", "tokenizationForEffect", "type", "assertNever", "transformString", "transforms", "isNumber", "getInitialEffectStyle", "canPlay", "canAnimate", "useTextEffect", "config", "preview", "useConstant", "isRenderingStaticContent", "isStaticRenderer", "state", "trigger", "target", "threshold", "play", "transition", "startDelay", "repeat", "tokenization2", "cleanupRef", "runAppearEffect", "inView", "effectEnabled", "hasMounted", "hasAnimatedOnce", "effectStyle", "mayAnimate", "r", "callback", "enter", "list", "createElementList", "animate", "stagger", "frame", "createLineGroups", "animations2", "group", "node", "groups2", "currentGroup", "lastOffset", "BaseSVG", "MotionSVG", "FitText", "viewBoxScale", "viewBox", "defaultFonts", "richTextContainerComponentType", "RichTextContainer", "anchorLinkOffsetY", "_as", "_initialStyle", "stylesPresetsClassNames", "plainText", "fallbackRef", "textEffect", "processedChildren", "processRichTextChildren", "containerStyle", "positionStyle", "Component17", "dataFramerName", "isFragment", "isLineBreak", "slugCounters", "tokenizer", "depth", "j", "onlyLineBreaks", "child", "J", "dataPresetTag", "isMotionComponent", "elementType", "unwrapMotionComponent", "stylesPresetClassName", "isHeading", "anchorLinkStylePresetClassName", "slug", "generateHeadingSlug", "anchorLink", "q", "headingText", "extractTextFromReactNode", "slugCounter", "RichText2", "content", "isObject2", "contentProp", "h1", "h2", "h3", "linearGradientLine", "angle", "rad", "offset", "anglePoint", "Point", "angleLine", "Line", "points", "Rect", "sortedPoints", "point", "a2", "b2", "assert", "c", "start", "end", "elementPropertiesForLinearGradient", "gradient", "line", "stops", "gradientColorStops", "startPosition", "endPosition", "startPoint", "endPoint", "interpolator", "interpolate", "LinearGradient", "stop", "ConvertColor", "elementPropertiesForRadialGradient", "RadialGradient", "isRelativeNumber", "withoutLastChar", "float", "getRelativeNumberValue", "getPositionXFraction", "positionX", "getPositionYFraction", "positionY", "imagePatternPropsForFill", "fill", "includeTransform", "BackgroundImage", "imageWidth", "imageHeight", "transform2", "fit", "offsetX", "offsetY", "scaleX", "scaleY", "imageRatio", "realWidth", "realHeight", "validScaleX", "validScaleY", "layerPositionX", "layerPositionY", "extraOffsetX", "extraOffsetY", "mediaType2", "isAssetReference", "imageUrlForAsset", "asset", "pixelSize", "isExport", "runtime", "ImagePatternElement", "path", "parser", "supportsNativeParseHTML", "isFirefox", "domParser", "html", "type", "useDOM", "isBrowser2", "SharedSVGEntry", "id", "svg", "innerHTML", "viewBox", "count", "visuallyHiddenStyle", "SharedSVGManager", "__publicField", "generateUniqueIds", "contentId", "overflowVisible", "entry", "hash", "uniqueSVG", "svgSize", "svgDom", "parseSVG", "prefixIdsInSVG", "getSVGSize", "container", "newContainer", "svgElement", "size", "box", "revision", "latest", "_a", "_b", "output", "value", "sharedSVGManager", "SharedSVGManager", "parseSVG", "svg", "node", "domParser", "prefixIdsInSVG", "prefix2", "sanitizedPrefix", "sanitizeString", "recursivelyPrefixId", "str", "el", "prefixId", "attr", "value", "base", "fragmentIdentifier", "URL_REF", "prefixedValue", "unitsToPixels", "parseLength", "_a", "m2", "getSVGSize", "width", "height", "SVG", "Y", "props", "forwardedRef", "parentSize", "useParentSize", "layoutId", "useLayoutId", "layoutRef", "e", "ref", "providedWindow", "useProvidedWindow", "useMeasureLayout", "p", "SVGComponent", "MAX_BACKGROUND_SVG_TEXT_LENGTH", "containsImageReference", "containsCustomPropertyReference", "hasBorderRadius", "style", "sizeSVG", "container", "_b", "div", "localWindow", "safeWindow", "viewBox", "withExternalLayout", "constraintsEnabled", "intrinsicWidth", "intrinsicHeight", "_constraints", "isFiniteNumber", "SVGStyleSheet", "injectComponentCSSRules", "Layer", "__publicField", "element", "calculateRect", "svgContentId", "contentid", "prevProps", "fill", "BackgroundImage", "resetSetStyle", "innerStyle", "frame2", "rotation", "rotate", "Animatable", "RenderTarget", "xFactor", "yFactor", "zoom", "target", "RenderEnvironment", "zoomFactor", "left", "right", "top", "bottom", "id", "visible", "title", "description", "className2", "variants", "innerRef", "_height", "_opacity", "_width", "requiresOverflowVisible", "rest", "identifier", "size", "outerStyle", "collectOpacityFromProps", "collectFiltersFromProps", "fillElement", "Color", "fillColor", "LinearGradient", "gradient", "gradientId", "stops", "x1", "x2", "y1", "y2", "elementPropertiesForLinearGradient", "stop", "idx", "RadialGradient", "elementProperties", "elementPropertiesForRadialGradient", "imagePattern", "imagePatternPropsForFill", "ImagePatternElement", "dataProps", "hasTransformTemplate", "layoutHintDataPropsForCenter", "svgAsBackgroundImage", "content", "encodeSVGForCSS", "__html", "u", "l", "MotionComponent", "htmlElementAsMotionComponent", "href", "rel", "onClick", "onTap", "hasTitleOrDescription", "transformTemplate", "LOADING_LAZY_THRESHOLD", "getLoadingLazyAtYPosition", "offset", "addFonts", "component", "passedFonts", "flags", "fonts", "convertMixedFontArrayToFontBundles", "font", "getFonts", "getFontsFromSharedStyle", "getFontsFromComponentPreset", "oldFontBundle", "fontBundles", "fontOrBundle", "isComponentFontBundle", "upgradeComponentFontV1", "componentFontBundleKey", "source", "withPerformanceMarks", "prefix2", "callback", "markStart", "markEnd", "MotionValue", "transformer", "v", "child", "motionValue"]
}
