{"version":3,"file":"static/js/main.f2d06012.js","mappings":";2BAAA,IAAIA,EAAM,CACT,gCAAiC,CAChC,KACA,MAED,2BAA4B,CAC3B,KACA,MAED,uBAAwB,CACvB,IACA,KAED,wBAAyB,CACxB,KACA,MAED,uBAAwB,CACvB,KACA,MAED,2BAA4B,CAC3B,IACA,KAED,4BAA6B,CAC5B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,wBAAyB,CACxB,KACA,MAED,sBAAuB,CACtB,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,sBAAuB,CACtB,KACA,MAED,oCAAqC,CACpC,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,yBAA0B,CACzB,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,6BAA8B,CAC7B,IACA,KAED,8BAA+B,CAC9B,KACA,MAED,6BAA8B,CAC7B,IACA,KAED,wBAAyB,CACxB,KACA,MAED,qCAAsC,CACrC,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,2CAA4C,CAC3C,IACA,KAED,2CAA4C,CAC3C,KACA,MAED,sCAAuC,CACtC,KACA,MAED,iCAAkC,CACjC,KACA,MAED,kCAAmC,CAClC,KACA,MAED,wCAAyC,CACxC,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,4CAA6C,CAC5C,KACA,MAED,sCAAuC,CACtC,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,4CAA6C,CAC5C,KACA,MAED,sCAAuC,CACtC,IACA,KAED,iCAAkC,CACjC,EACA,GAED,8BAA+B,CAC9B,KACA,MAED,wBAAyB,CACxB,KACA,MAED,sBAAuB,CACtB,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,sBAAuB,CACtB,KACA,MAED,yBAA0B,CACzB,KACA,MAED,uBAAwB,CACvB,KACA,MAED,gCAAiC,CAChC,KACA,MAED,iCAAkC,CACjC,KACA,MAED,gCAAiC,CAChC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,mCAAoC,CACnC,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,wCAA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","sources":["../node_modules/@scania/tegel/dist/esm|lazy|/^/.//.*/.entry/.js$/|include: //.entry/.js$/|exclude: //.system/.entry/.js$/|groupOptions: {}|strict namespace object","../node_modules/react-dom/cjs/react-dom-client.production.js","../node_modules/react-dom/cjs/react-dom.production.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react.production.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.js","../node_modules/scheduler/index.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@scania/tegel/dist/esm/index-51d04e39.js","../webpack/bootstrap","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@scania/tegel-react/dist/components/stencil-generated/react-component-lib/utils/case.js","../node_modules/@scania/tegel-react/dist/components/stencil-generated/react-component-lib/utils/attachProps.js","../node_modules/@scania/tegel-react/dist/components/stencil-generated/react-component-lib/utils/index.js","../node_modules/@scania/tegel-react/dist/components/stencil-generated/react-component-lib/createComponent.js","../node_modules/@scania/tegel-react/dist/components/stencil-generated/react-component-lib/createOverlayComponent.js","../node_modules/@scania/tegel-react/dist/components/stencil-generated/index.js","../node_modules/@scania/tegel/dist/esm/app-globals-0f993ce5.js","../node_modules/@scania/tegel/dist/esm/loader.js","../node_modules/@scania/tegel/loader/index.js","components/Header.jsx","components/Disclaimer.jsx","components/UserInputs.jsx","components/Footer.jsx","../node_modules/@kurkle/color/dist/color.esm.js","../node_modules/chart.js/src/helpers/helpers.core.ts","../node_modules/chart.js/src/helpers/helpers.math.ts","../node_modules/chart.js/src/helpers/helpers.collection.ts","../node_modules/chart.js/src/helpers/helpers.extras.ts","../node_modules/chart.js/src/helpers/helpers.easing.ts","../node_modules/chart.js/src/helpers/helpers.color.ts","../node_modules/chart.js/src/core/core.animations.defaults.js","../node_modules/chart.js/src/helpers/helpers.intl.ts","../node_modules/chart.js/src/core/core.ticks.js","../node_modules/chart.js/src/core/core.defaults.js","../node_modules/chart.js/src/core/core.layouts.defaults.js","../node_modules/chart.js/src/core/core.scale.defaults.js","../node_modules/chart.js/src/helpers/helpers.canvas.ts","../node_modules/chart.js/src/helpers/helpers.options.ts","../node_modules/chart.js/src/helpers/helpers.config.ts","../node_modules/chart.js/src/helpers/helpers.curve.ts","../node_modules/chart.js/src/helpers/helpers.dom.ts","../node_modules/chart.js/src/helpers/helpers.interpolation.ts","../node_modules/chart.js/src/helpers/helpers.rtl.ts","../node_modules/chart.js/src/helpers/helpers.segment.js","../node_modules/chart.js/src/core/core.animator.js","../node_modules/chart.js/src/core/core.animation.js","../node_modules/chart.js/src/core/core.animations.js","../node_modules/chart.js/src/core/core.datasetController.js","../node_modules/chart.js/src/controllers/controller.bar.js","../node_modules/chart.js/src/controllers/controller.bubble.js","../node_modules/chart.js/src/controllers/controller.doughnut.js","../node_modules/chart.js/src/controllers/controller.line.js","../node_modules/chart.js/src/controllers/controller.polarArea.js","../node_modules/chart.js/src/controllers/controller.pie.js","../node_modules/chart.js/src/controllers/controller.radar.js","../node_modules/chart.js/src/controllers/controller.scatter.js","../node_modules/chart.js/src/core/core.adapters.ts","../node_modules/chart.js/src/core/core.interaction.js","../node_modules/chart.js/src/core/core.layouts.js","../node_modules/chart.js/src/platform/platform.base.js","../node_modules/chart.js/src/platform/platform.basic.js","../node_modules/chart.js/src/platform/platform.dom.js","../node_modules/chart.js/src/core/core.element.ts","../node_modules/chart.js/src/core/core.scale.autoskip.js","../node_modules/chart.js/src/core/core.scale.js","../node_modules/chart.js/src/core/core.typedRegistry.js","../node_modules/chart.js/src/core/core.registry.js","../node_modules/chart.js/src/core/core.plugins.js","../node_modules/chart.js/src/core/core.config.js","../node_modules/chart.js/src/core/core.controller.js","../node_modules/chart.js/src/platform/index.js","../node_modules/chart.js/src/elements/element.arc.ts","../node_modules/chart.js/src/elements/element.line.js","../node_modules/chart.js/src/elements/element.point.ts","../node_modules/chart.js/src/elements/element.bar.js","../node_modules/chart.js/src/plugins/plugin.colors.ts","../node_modules/chart.js/src/plugins/plugin.decimation.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.segment.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.helper.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.options.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.target.stack.js","../node_modules/chart.js/src/plugins/plugin.filler/simpleArc.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.target.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.drawing.js","../node_modules/chart.js/src/plugins/plugin.filler/index.js","../node_modules/chart.js/src/plugins/plugin.legend.js","../node_modules/chart.js/src/plugins/plugin.title.js","../node_modules/chart.js/src/plugins/plugin.subtitle.js","../node_modules/chart.js/src/plugins/plugin.tooltip.js","../node_modules/chart.js/src/scales/scale.category.js","../node_modules/chart.js/src/scales/scale.linearbase.js","../node_modules/chart.js/src/scales/scale.linear.js","../node_modules/chart.js/src/scales/scale.logarithmic.js","../node_modules/chart.js/src/scales/scale.radialLinear.js","../node_modules/chart.js/src/scales/scale.time.js","../node_modules/chart.js/src/scales/scale.timeseries.js","../node_modules/chart.js/src/index.ts","../node_modules/chart.js/auto/auto.js","components/LineChart.jsx","App.jsx","index.js"],"sourcesContent":["var map = {\n\t\"./tds-accordion-item.entry.js\": [\n\t\t2215,\n\t\t2215\n\t],\n\t\"./tds-accordion.entry.js\": [\n\t\t4403,\n\t\t4403\n\t],\n\t\"./tds-badge.entry.js\": [\n\t\t950,\n\t\t950\n\t],\n\t\"./tds-banner.entry.js\": [\n\t\t8623,\n\t\t8623\n\t],\n\t\"./tds-block.entry.js\": [\n\t\t4484,\n\t\t4484\n\t],\n\t\"./tds-body-cell.entry.js\": [\n\t\t978,\n\t\t978\n\t],\n\t\"./tds-breadcrumb.entry.js\": [\n\t\t5428,\n\t\t5428\n\t],\n\t\"./tds-breadcrumbs.entry.js\": [\n\t\t9127,\n\t\t9127\n\t],\n\t\"./tds-button.entry.js\": [\n\t\t1045,\n\t\t1045\n\t],\n\t\"./tds-card.entry.js\": [\n\t\t8479,\n\t\t8479\n\t],\n\t\"./tds-checkbox.entry.js\": [\n\t\t8532,\n\t\t8532\n\t],\n\t\"./tds-chip.entry.js\": [\n\t\t5187,\n\t\t5187\n\t],\n\t\"./tds-core-header-item_2.entry.js\": [\n\t\t2701,\n\t\t2701\n\t],\n\t\"./tds-datetime.entry.js\": [\n\t\t4576,\n\t\t4576\n\t],\n\t\"./tds-divider.entry.js\": [\n\t\t2644,\n\t\t2644\n\t],\n\t\"./tds-dropdown_2.entry.js\": [\n\t\t7325,\n\t\t7325\n\t],\n\t\"./tds-folder-tab.entry.js\": [\n\t\t3003,\n\t\t3003\n\t],\n\t\"./tds-folder-tabs.entry.js\": [\n\t\t558,\n\t\t558\n\t],\n\t\"./tds-footer-group.entry.js\": [\n\t\t1976,\n\t\t1976\n\t],\n\t\"./tds-footer-item.entry.js\": [\n\t\t180,\n\t\t180\n\t],\n\t\"./tds-footer.entry.js\": [\n\t\t6350,\n\t\t6350\n\t],\n\t\"./tds-header-brand-symbol.entry.js\": [\n\t\t2397,\n\t\t2397\n\t],\n\t\"./tds-header-cell.entry.js\": [\n\t\t4277,\n\t\t4277\n\t],\n\t\"./tds-header-dropdown-list-item.entry.js\": [\n\t\t313,\n\t\t313\n\t],\n\t\"./tds-header-dropdown-list-user.entry.js\": [\n\t\t4821,\n\t\t4821\n\t],\n\t\"./tds-header-dropdown-list.entry.js\": [\n\t\t4505,\n\t\t4505\n\t],\n\t\"./tds-header-dropdown.entry.js\": [\n\t\t7840,\n\t\t7840\n\t],\n\t\"./tds-header-hamburger.entry.js\": [\n\t\t1234,\n\t\t1234\n\t],\n\t\"./tds-header-launcher-button.entry.js\": [\n\t\t7890,\n\t\t7890\n\t],\n\t\"./tds-header-launcher-grid-item.entry.js\": [\n\t\t3284,\n\t\t3284\n\t],\n\t\"./tds-header-launcher-grid-title.entry.js\": [\n\t\t9021,\n\t\t9021\n\t],\n\t\"./tds-header-launcher-grid.entry.js\": [\n\t\t1454,\n\t\t1454\n\t],\n\t\"./tds-header-launcher-list-item.entry.js\": [\n\t\t2904,\n\t\t2904\n\t],\n\t\"./tds-header-launcher-list-title.entry.js\": [\n\t\t8385,\n\t\t8385\n\t],\n\t\"./tds-header-launcher-list.entry.js\": [\n\t\t218,\n\t\t218\n\t],\n\t\"./tds-header-launcher.entry.js\": [\n\t\t1,\n\t\t1\n\t],\n\t\"./tds-header-title.entry.js\": [\n\t\t9551,\n\t\t9551\n\t],\n\t\"./tds-header.entry.js\": [\n\t\t8848,\n\t\t8848\n\t],\n\t\"./tds-icon.entry.js\": [\n\t\t9012,\n\t\t9012\n\t],\n\t\"./tds-inline-tab.entry.js\": [\n\t\t5730,\n\t\t5730\n\t],\n\t\"./tds-inline-tabs.entry.js\": [\n\t\t4341,\n\t\t4341\n\t],\n\t\"./tds-link.entry.js\": [\n\t\t7897,\n\t\t7897\n\t],\n\t\"./tds-message.entry.js\": [\n\t\t6378,\n\t\t6378\n\t],\n\t\"./tds-modal.entry.js\": [\n\t\t6716,\n\t\t6716\n\t],\n\t\"./tds-navigation-tab.entry.js\": [\n\t\t5061,\n\t\t5061\n\t],\n\t\"./tds-navigation-tabs.entry.js\": [\n\t\t2848,\n\t\t2848\n\t],\n\t\"./tds-popover-canvas.entry.js\": [\n\t\t1789,\n\t\t1789\n\t],\n\t\"./tds-popover-core.entry.js\": [\n\t\t7314,\n\t\t7314\n\t],\n\t\"./tds-popover-menu-item.entry.js\": [\n\t\t6568,\n\t\t6568\n\t],\n\t\"./tds-popover-menu.entry.js\": [\n\t\t5466,\n\t\t5466\n\t],\n\t\"./tds-radio-button.entry.js\": [\n\t\t2571,\n\t\t2571\n\t],\n\t\"./tds-side-menu-close-button.entry.js\": [\n\t\t790,\n\t\t790\n\t],\n\t\"./tds-side-menu-collapse-button.entry.js\": [\n\t\t7591,\n\t\t7591\n\t],\n\t\"./tds-side-menu-dropdown-list-item.entry.js\": [\n\t\t4233,\n\t\t4233\n\t],\n\t\"./tds-side-menu-dropdown-list.entry.js\": [\n\t\t7193,\n\t\t7193\n\t],\n\t\"./tds-side-menu-dropdown.entry.js\": [\n\t\t7968,\n\t\t7968\n\t],\n\t\"./tds-side-menu-item.entry.js\": [\n\t\t5866,\n\t\t5866\n\t],\n\t\"./tds-side-menu-overlay.entry.js\": [\n\t\t7953,\n\t\t7953\n\t],\n\t\"./tds-side-menu-user-image_2.entry.js\": [\n\t\t4831,\n\t\t4831\n\t],\n\t\"./tds-side-menu-user.entry.js\": [\n\t\t3398,\n\t\t3398\n\t],\n\t\"./tds-side-menu.entry.js\": [\n\t\t8208,\n\t\t8208\n\t],\n\t\"./tds-slider.entry.js\": [\n\t\t3184,\n\t\t3184\n\t],\n\t\"./tds-spinner.entry.js\": [\n\t\t3312,\n\t\t3312\n\t],\n\t\"./tds-step.entry.js\": [\n\t\t8315,\n\t\t8315\n\t],\n\t\"./tds-stepper.entry.js\": [\n\t\t6916,\n\t\t6916\n\t],\n\t\"./tds-table-body-input-wrapper.entry.js\": [\n\t\t6777,\n\t\t6777\n\t],\n\t\"./tds-table-body-row-expandable.entry.js\": [\n\t\t1712,\n\t\t1712\n\t],\n\t\"./tds-table-body-row.entry.js\": [\n\t\t6439,\n\t\t6439\n\t],\n\t\"./tds-table-body.entry.js\": [\n\t\t9230,\n\t\t9230\n\t],\n\t\"./tds-table-footer.entry.js\": [\n\t\t2025,\n\t\t2025\n\t],\n\t\"./tds-table-header-input-wrapper.entry.js\": [\n\t\t3904,\n\t\t3904\n\t],\n\t\"./tds-table-header.entry.js\": [\n\t\t4659,\n\t\t4659\n\t],\n\t\"./tds-table-toolbar.entry.js\": [\n\t\t6611,\n\t\t6611\n\t],\n\t\"./tds-table.entry.js\": [\n\t\t1717,\n\t\t1717\n\t],\n\t\"./tds-text-field.entry.js\": [\n\t\t7955,\n\t\t7955\n\t],\n\t\"./tds-textarea.entry.js\": [\n\t\t1891,\n\t\t1891\n\t],\n\t\"./tds-toast.entry.js\": [\n\t\t9234,\n\t\t9234\n\t],\n\t\"./tds-toggle.entry.js\": [\n\t\t269,\n\t\t269\n\t],\n\t\"./tds-tooltip.entry.js\": [\n\t\t4774,\n\t\t4774\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 928;\nmodule.exports = webpackAsyncContext;","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n  React = require(\"react\"),\n  ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction isValidContainer(node) {\n  return !(\n    !node ||\n    (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n  );\n}\nvar REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n  REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nSymbol.for(\"react.debug_trace_mode\");\nvar REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type)\n    return type.$$typeof === REACT_CLIENT_REFERENCE\n      ? null\n      : type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PORTAL_TYPE:\n      return \"Portal\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        return (type.displayName || \"Context\") + \".Provider\";\n      case REACT_CONSUMER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Consumer\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        type = type.displayName;\n        type ||\n          ((type = innerType.displayName || innerType.name || \"\"),\n          (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n        return type;\n      case REACT_MEMO_TYPE:\n        return (\n          (innerType = type.displayName || null),\n          null !== innerType\n            ? innerType\n            : getComponentNameFromType(type.type) || \"Memo\"\n        );\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentNameFromType(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nvar ReactSharedInternals =\n    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  assign = Object.assign,\n  prefix,\n  suffix;\nfunction describeBuiltInComponentFrame(name) {\n  if (void 0 === prefix)\n    try {\n      throw Error();\n    } catch (x) {\n      var match = x.stack.trim().match(/\\n( *(at )?)/);\n      prefix = (match && match[1]) || \"\";\n      suffix =\n        -1 < x.stack.indexOf(\"\\n    at\")\n          ? \" (<anonymous>)\"\n          : -1 < x.stack.indexOf(\"@\")\n            ? \"@unknown:0:0\"\n            : \"\";\n    }\n  return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n  if (!fn || reentry) return \"\";\n  reentry = !0;\n  var previousPrepareStackTrace = Error.prepareStackTrace;\n  Error.prepareStackTrace = void 0;\n  try {\n    var RunInRootFrame = {\n      DetermineComponentFrameRoot: function () {\n        try {\n          if (construct) {\n            var Fake = function () {\n              throw Error();\n            };\n            Object.defineProperty(Fake.prototype, \"props\", {\n              set: function () {\n                throw Error();\n              }\n            });\n            if (\"object\" === typeof Reflect && Reflect.construct) {\n              try {\n                Reflect.construct(Fake, []);\n              } catch (x) {\n                var control = x;\n              }\n              Reflect.construct(fn, [], Fake);\n            } else {\n              try {\n                Fake.call();\n              } catch (x$0) {\n                control = x$0;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x$1) {\n              control = x$1;\n            }\n            (Fake = fn()) &&\n              \"function\" === typeof Fake.catch &&\n              Fake.catch(function () {});\n          }\n        } catch (sample) {\n          if (sample && control && \"string\" === typeof sample.stack)\n            return [sample.stack, control.stack];\n        }\n        return [null, null];\n      }\n    };\n    RunInRootFrame.DetermineComponentFrameRoot.displayName =\n      \"DetermineComponentFrameRoot\";\n    var namePropDescriptor = Object.getOwnPropertyDescriptor(\n      RunInRootFrame.DetermineComponentFrameRoot,\n      \"name\"\n    );\n    namePropDescriptor &&\n      namePropDescriptor.configurable &&\n      Object.defineProperty(\n        RunInRootFrame.DetermineComponentFrameRoot,\n        \"name\",\n        { value: \"DetermineComponentFrameRoot\" }\n      );\n    var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n      sampleStack = _RunInRootFrame$Deter[0],\n      controlStack = _RunInRootFrame$Deter[1];\n    if (sampleStack && controlStack) {\n      var sampleLines = sampleStack.split(\"\\n\"),\n        controlLines = controlStack.split(\"\\n\");\n      for (\n        namePropDescriptor = RunInRootFrame = 0;\n        RunInRootFrame < sampleLines.length &&\n        !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n      )\n        RunInRootFrame++;\n      for (\n        ;\n        namePropDescriptor < controlLines.length &&\n        !controlLines[namePropDescriptor].includes(\n          \"DetermineComponentFrameRoot\"\n        );\n\n      )\n        namePropDescriptor++;\n      if (\n        RunInRootFrame === sampleLines.length ||\n        namePropDescriptor === controlLines.length\n      )\n        for (\n          RunInRootFrame = sampleLines.length - 1,\n            namePropDescriptor = controlLines.length - 1;\n          1 <= RunInRootFrame &&\n          0 <= namePropDescriptor &&\n          sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n        )\n          namePropDescriptor--;\n      for (\n        ;\n        1 <= RunInRootFrame && 0 <= namePropDescriptor;\n        RunInRootFrame--, namePropDescriptor--\n      )\n        if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n          if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n            do\n              if (\n                (RunInRootFrame--,\n                namePropDescriptor--,\n                0 > namePropDescriptor ||\n                  sampleLines[RunInRootFrame] !==\n                    controlLines[namePropDescriptor])\n              ) {\n                var frame =\n                  \"\\n\" +\n                  sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n                fn.displayName &&\n                  frame.includes(\"<anonymous>\") &&\n                  (frame = frame.replace(\"<anonymous>\", fn.displayName));\n                return frame;\n              }\n            while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n          }\n          break;\n        }\n    }\n  } finally {\n    (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n  }\n  return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n    ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n    : \"\";\n}\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n    case 27:\n    case 5:\n      return describeBuiltInComponentFrame(fiber.type);\n    case 16:\n      return describeBuiltInComponentFrame(\"Lazy\");\n    case 13:\n      return describeBuiltInComponentFrame(\"Suspense\");\n    case 19:\n      return describeBuiltInComponentFrame(\"SuspenseList\");\n    case 0:\n    case 15:\n      return (fiber = describeNativeComponentFrame(fiber.type, !1)), fiber;\n    case 11:\n      return (\n        (fiber = describeNativeComponentFrame(fiber.type.render, !1)), fiber\n      );\n    case 1:\n      return (fiber = describeNativeComponentFrame(fiber.type, !0)), fiber;\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\";\n    do\n      (info += describeFiber(workInProgress)),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber,\n    nearestMounted = fiber;\n  if (fiber.alternate) for (; node.return; ) node = node.return;\n  else {\n    fiber = node;\n    do\n      (node = fiber),\n        0 !== (node.flags & 4098) && (nearestMounted = node.return),\n        (fiber = node.return);\n    while (fiber);\n  }\n  return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (13 === fiber.tag) {\n    var suspenseState = fiber.memoizedState;\n    null === suspenseState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (suspenseState = fiber.memoizedState));\n    if (null !== suspenseState) return suspenseState.dehydrated;\n  }\n  return null;\n}\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate) throw Error(formatProdErrorMessage(188));\n    return alternate !== fiber ? null : fiber;\n  }\n  for (var a = fiber, b = alternate; ; ) {\n    var parentA = a.return;\n    if (null === parentA) break;\n    var parentB = parentA.alternate;\n    if (null === parentB) {\n      b = parentA.return;\n      if (null !== b) {\n        a = b;\n        continue;\n      }\n      break;\n    }\n    if (parentA.child === parentB.child) {\n      for (parentB = parentA.child; parentB; ) {\n        if (parentB === a) return assertIsMounted(parentA), fiber;\n        if (parentB === b) return assertIsMounted(parentA), alternate;\n        parentB = parentB.sibling;\n      }\n      throw Error(formatProdErrorMessage(188));\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$2 = parentA.child; child$2; ) {\n        if (child$2 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$2 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$2 = child$2.sibling;\n      }\n      if (!didFindChild) {\n        for (child$2 = parentB.child; child$2; ) {\n          if (child$2 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$2 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$2 = child$2.sibling;\n        }\n        if (!didFindChild) throw Error(formatProdErrorMessage(189));\n      }\n    }\n    if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n  }\n  if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n  return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n  var tag = node.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n  for (node = node.child; null !== node; ) {\n    tag = findCurrentHostFiberImpl(node);\n    if (null !== tag) return tag;\n    node = node.sibling;\n  }\n  return null;\n}\nvar isArrayImpl = Array.isArray,\n  ReactDOMSharedInternals =\n    ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  sharedNotPendingObject = {\n    pending: !1,\n    data: null,\n    method: null,\n    action: null\n  },\n  valueStack = [],\n  index = -1;\nfunction createCursor(defaultValue) {\n  return { current: defaultValue };\n}\nfunction pop(cursor) {\n  0 > index ||\n    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n  index++;\n  valueStack[index] = cursor.current;\n  cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n  contextFiberStackCursor = createCursor(null),\n  rootInstanceStackCursor = createCursor(null),\n  hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n  push(rootInstanceStackCursor, nextRootInstance);\n  push(contextFiberStackCursor, fiber);\n  push(contextStackCursor, null);\n  fiber = nextRootInstance.nodeType;\n  switch (fiber) {\n    case 9:\n    case 11:\n      nextRootInstance = (nextRootInstance = nextRootInstance.documentElement)\n        ? (nextRootInstance = nextRootInstance.namespaceURI)\n          ? getOwnHostContext(nextRootInstance)\n          : 0\n        : 0;\n      break;\n    default:\n      if (\n        ((fiber = 8 === fiber ? nextRootInstance.parentNode : nextRootInstance),\n        (nextRootInstance = fiber.tagName),\n        (fiber = fiber.namespaceURI))\n      )\n        (fiber = getOwnHostContext(fiber)),\n          (nextRootInstance = getChildHostContextProd(fiber, nextRootInstance));\n      else\n        switch (nextRootInstance) {\n          case \"svg\":\n            nextRootInstance = 1;\n            break;\n          case \"math\":\n            nextRootInstance = 2;\n            break;\n          default:\n            nextRootInstance = 0;\n        }\n  }\n  pop(contextStackCursor);\n  push(contextStackCursor, nextRootInstance);\n}\nfunction popHostContainer() {\n  pop(contextStackCursor);\n  pop(contextFiberStackCursor);\n  pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n  null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n  var context = contextStackCursor.current;\n  var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n  context !== JSCompiler_inline_result &&\n    (push(contextFiberStackCursor, fiber),\n    push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor), pop(contextFiberStackCursor));\n  hostTransitionProviderCursor.current === fiber &&\n    (pop(hostTransitionProviderCursor),\n    (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n  scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n  cancelCallback$1 = Scheduler.unstable_cancelCallback,\n  shouldYield = Scheduler.unstable_shouldYield,\n  requestPaint = Scheduler.unstable_requestPaint,\n  now = Scheduler.unstable_now,\n  getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n  ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  NormalPriority$1 = Scheduler.unstable_NormalPriority,\n  LowPriority = Scheduler.unstable_LowPriority,\n  IdlePriority = Scheduler.unstable_IdlePriority,\n  log$1 = Scheduler.log,\n  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n  rendererID = null,\n  injectedHook = null;\nfunction onCommitRoot(root) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n    try {\n      injectedHook.onCommitFiberRoot(\n        rendererID,\n        root,\n        void 0,\n        128 === (root.current.flags & 128)\n      );\n    } catch (err) {}\n}\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n  if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n    try {\n      injectedHook.setStrictMode(rendererID, newIsStrictMode);\n    } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n  x >>>= 0;\n  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 128,\n  nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n  var pendingSyncLanes = lanes & 42;\n  if (0 !== pendingSyncLanes) return pendingSyncLanes;\n  switch (lanes & -lanes) {\n    case 1:\n      return 1;\n    case 2:\n      return 2;\n    case 4:\n      return 4;\n    case 8:\n      return 8;\n    case 16:\n      return 16;\n    case 32:\n      return 32;\n    case 64:\n      return 64;\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 4194176;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return lanes & 62914560;\n    case 67108864:\n      return 67108864;\n    case 134217728:\n      return 134217728;\n    case 268435456:\n      return 268435456;\n    case 536870912:\n      return 536870912;\n    case 1073741824:\n      return 0;\n    default:\n      return lanes;\n  }\n}\nfunction getNextLanes(root, wipLanes) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return 0;\n  var nextLanes = 0,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes,\n    warmLanes = root.warmLanes;\n  root = 0 !== root.finishedLanes;\n  var nonIdlePendingLanes = pendingLanes & 134217727;\n  0 !== nonIdlePendingLanes\n    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n      0 !== pendingLanes\n        ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n        : ((pingedLanes &= nonIdlePendingLanes),\n          0 !== pingedLanes\n            ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n            : root ||\n              ((warmLanes = nonIdlePendingLanes & ~warmLanes),\n              0 !== warmLanes &&\n                (nextLanes = getHighestPriorityLanes(warmLanes)))))\n    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n      0 !== nonIdlePendingLanes\n        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n        : 0 !== pingedLanes\n          ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n          : root ||\n            ((warmLanes = pendingLanes & ~warmLanes),\n            0 !== warmLanes &&\n              (nextLanes = getHighestPriorityLanes(warmLanes))));\n  return 0 === nextLanes\n    ? 0\n    : 0 !== wipLanes &&\n        wipLanes !== nextLanes &&\n        0 === (wipLanes & suspendedLanes) &&\n        ((suspendedLanes = nextLanes & -nextLanes),\n        (warmLanes = wipLanes & -wipLanes),\n        suspendedLanes >= warmLanes ||\n          (32 === suspendedLanes && 0 !== (warmLanes & 4194176)))\n      ? wipLanes\n      : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n  return (\n    0 ===\n    (root.pendingLanes &\n      ~(root.suspendedLanes & ~root.pingedLanes) &\n      renderLanes)\n  );\n}\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case 1:\n    case 2:\n    case 4:\n    case 8:\n      return currentTime + 250;\n    case 16:\n    case 32:\n    case 64:\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return currentTime + 5e3;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return -1;\n    case 67108864:\n    case 134217728:\n    case 268435456:\n    case 536870912:\n    case 1073741824:\n      return -1;\n    default:\n      return -1;\n  }\n}\nfunction claimNextTransitionLane() {\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n  0 === (nextTransitionLane & 4194176) && (nextTransitionLane = 128);\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n  return lane;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n  root.pendingLanes |= updateLane;\n  268435456 !== updateLane &&\n    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n  root,\n  finishedLanes,\n  remainingLanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  var previouslyPendingLanes = root.pendingLanes;\n  root.pendingLanes = remainingLanes;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.warmLanes = 0;\n  root.expiredLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  root.errorRecoveryDisabledLanes &= remainingLanes;\n  root.shellSuspendCounter = 0;\n  var entanglements = root.entanglements,\n    expirationTimes = root.expirationTimes,\n    hiddenUpdates = root.hiddenUpdates;\n  for (\n    remainingLanes = previouslyPendingLanes & ~remainingLanes;\n    0 < remainingLanes;\n\n  ) {\n    var index$7 = 31 - clz32(remainingLanes),\n      lane = 1 << index$7;\n    entanglements[index$7] = 0;\n    expirationTimes[index$7] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$7];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$7] = null, index$7 = 0;\n        index$7 < hiddenUpdatesForLane.length;\n        index$7++\n      ) {\n        var update = hiddenUpdatesForLane[index$7];\n        null !== update && (update.lane &= -536870913);\n      }\n    remainingLanes &= ~lane;\n  }\n  0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n  0 !== suspendedRetryLanes &&\n    0 === updatedLanes &&\n    0 !== root.tag &&\n    (root.suspendedLanes |=\n      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n  root.pendingLanes |= spawnedLane;\n  root.suspendedLanes &= ~spawnedLane;\n  var spawnedLaneIndex = 31 - clz32(spawnedLane);\n  root.entangledLanes |= spawnedLane;\n  root.entanglements[spawnedLaneIndex] =\n    root.entanglements[spawnedLaneIndex] |\n    1073741824 |\n    (entangledLanes & 4194218);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$8 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$8;\n    (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n      (root[index$8] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\n}\nfunction lanesToEventPriority(lanes) {\n  lanes &= -lanes;\n  return 2 < lanes\n    ? 8 < lanes\n      ? 0 !== (lanes & 134217727)\n        ? 32\n        : 268435456\n      : 8\n    : 2;\n}\nfunction resolveUpdatePriority() {\n  var updatePriority = ReactDOMSharedInternals.p;\n  if (0 !== updatePriority) return updatePriority;\n  updatePriority = window.event;\n  return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    return (ReactDOMSharedInternals.p = priority), fn();\n  } finally {\n    ReactDOMSharedInternals.p = previousPriority;\n  }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n  internalInstanceKey = \"__reactFiber$\" + randomKey,\n  internalPropsKey = \"__reactProps$\" + randomKey,\n  internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n  internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n  internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n  internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n  internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n  internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlersKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst = targetNode[internalInstanceKey];\n  if (targetInst) return targetInst;\n  for (var parentNode = targetNode.parentNode; parentNode; ) {\n    if (\n      (targetInst =\n        parentNode[internalContainerInstanceKey] ||\n        parentNode[internalInstanceKey])\n    ) {\n      parentNode = targetInst.alternate;\n      if (\n        null !== targetInst.child ||\n        (null !== parentNode && null !== parentNode.child)\n      )\n        for (\n          targetNode = getParentSuspenseInstance(targetNode);\n          null !== targetNode;\n\n        ) {\n          if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n          targetNode = getParentSuspenseInstance(targetNode);\n        }\n      return targetInst;\n    }\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n  return null;\n}\nfunction getInstanceFromNode(node) {\n  if (\n    (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n  ) {\n    var tag = node.tag;\n    if (\n      5 === tag ||\n      6 === tag ||\n      13 === tag ||\n      26 === tag ||\n      27 === tag ||\n      3 === tag\n    )\n      return node;\n  }\n  return null;\n}\nfunction getNodeFromInstance(inst) {\n  var tag = inst.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n  throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n  var resources = root[internalRootNodeResourcesKey];\n  resources ||\n    (resources = root[internalRootNodeResourcesKey] =\n      { hoistableStyles: new Map(), hoistableScripts: new Map() });\n  return resources;\n}\nfunction markNodeAsHoistable(node) {\n  node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n  registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  registrationNameDependencies[registrationName] = dependencies;\n  for (\n    registrationName = 0;\n    registrationName < dependencies.length;\n    registrationName++\n  )\n    allNativeEvents.add(dependencies[registrationName]);\n}\nvar canUseDOM = !(\n    \"undefined\" === typeof window ||\n    \"undefined\" === typeof window.document ||\n    \"undefined\" === typeof window.document.createElement\n  ),\n  VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n    \"^[: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]*$\"\n  ),\n  illegalAttributeNameCache = {},\n  validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n    return !0;\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n    return (validatedAttributeNameCache[attributeName] = !0);\n  illegalAttributeNameCache[attributeName] = !0;\n  return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n  if (isAttributeNameSafe(name))\n    if (null === value) node.removeAttribute(name);\n    else {\n      switch (typeof value) {\n        case \"undefined\":\n        case \"function\":\n        case \"symbol\":\n          node.removeAttribute(name);\n          return;\n        case \"boolean\":\n          var prefix$10 = name.toLowerCase().slice(0, 5);\n          if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n            node.removeAttribute(name);\n            return;\n          }\n      }\n      node.setAttribute(name, \"\" + value);\n    }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttribute(name, \"\" + value);\n  }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttributeNS(namespace, name, \"\" + value);\n  }\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case \"bigint\":\n    case \"boolean\":\n    case \"number\":\n    case \"string\":\n    case \"undefined\":\n      return value;\n    case \"object\":\n      return value;\n    default:\n      return \"\";\n  }\n}\nfunction isCheckable(elem) {\n  var type = elem.type;\n  return (\n    (elem = elem.nodeName) &&\n    \"input\" === elem.toLowerCase() &&\n    (\"checkbox\" === type || \"radio\" === type)\n  );\n}\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? \"checked\" : \"value\",\n    descriptor = Object.getOwnPropertyDescriptor(\n      node.constructor.prototype,\n      valueField\n    ),\n    currentValue = \"\" + node[valueField];\n  if (\n    !node.hasOwnProperty(valueField) &&\n    \"undefined\" !== typeof descriptor &&\n    \"function\" === typeof descriptor.get &&\n    \"function\" === typeof descriptor.set\n  ) {\n    var get = descriptor.get,\n      set = descriptor.set;\n    Object.defineProperty(node, valueField, {\n      configurable: !0,\n      get: function () {\n        return get.call(this);\n      },\n      set: function (value) {\n        currentValue = \"\" + value;\n        set.call(this, value);\n      }\n    });\n    Object.defineProperty(node, valueField, {\n      enumerable: descriptor.enumerable\n    });\n    return {\n      getValue: function () {\n        return currentValue;\n      },\n      setValue: function (value) {\n        currentValue = \"\" + value;\n      },\n      stopTracking: function () {\n        node._valueTracker = null;\n        delete node[valueField];\n      }\n    };\n  }\n}\nfunction track(node) {\n  node._valueTracker || (node._valueTracker = trackValueOnNode(node));\n}\nfunction updateValueIfChanged(node) {\n  if (!node) return !1;\n  var tracker = node._valueTracker;\n  if (!tracker) return !0;\n  var lastValue = tracker.getValue();\n  var value = \"\";\n  node &&\n    (value = isCheckable(node)\n      ? node.checked\n        ? \"true\"\n        : \"false\"\n      : node.value);\n  node = value;\n  return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n  doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n  if (\"undefined\" === typeof doc) return null;\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n  return value.replace(\n    escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n    function (ch) {\n      return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n    }\n  );\n}\nfunction updateInput(\n  element,\n  value,\n  defaultValue,\n  lastDefaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name\n) {\n  element.name = \"\";\n  null != type &&\n  \"function\" !== typeof type &&\n  \"symbol\" !== typeof type &&\n  \"boolean\" !== typeof type\n    ? (element.type = type)\n    : element.removeAttribute(\"type\");\n  if (null != value)\n    if (\"number\" === type) {\n      if ((0 === value && \"\" === element.value) || element.value != value)\n        element.value = \"\" + getToStringValue(value);\n    } else\n      element.value !== \"\" + getToStringValue(value) &&\n        (element.value = \"\" + getToStringValue(value));\n  else\n    (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n  null != value\n    ? setDefaultValue(element, type, getToStringValue(value))\n    : null != defaultValue\n      ? setDefaultValue(element, type, getToStringValue(defaultValue))\n      : null != lastDefaultValue && element.removeAttribute(\"value\");\n  null == checked &&\n    null != defaultChecked &&\n    (element.defaultChecked = !!defaultChecked);\n  null != checked &&\n    (element.checked =\n      checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n  null != name &&\n  \"function\" !== typeof name &&\n  \"symbol\" !== typeof name &&\n  \"boolean\" !== typeof name\n    ? (element.name = \"\" + getToStringValue(name))\n    : element.removeAttribute(\"name\");\n}\nfunction initInput(\n  element,\n  value,\n  defaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name,\n  isHydrating\n) {\n  null != type &&\n    \"function\" !== typeof type &&\n    \"symbol\" !== typeof type &&\n    \"boolean\" !== typeof type &&\n    (element.type = type);\n  if (null != value || null != defaultValue) {\n    if (\n      !(\n        (\"submit\" !== type && \"reset\" !== type) ||\n        (void 0 !== value && null !== value)\n      )\n    )\n      return;\n    defaultValue =\n      null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n    value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n    isHydrating || value === element.value || (element.value = value);\n    element.defaultValue = value;\n  }\n  checked = null != checked ? checked : defaultChecked;\n  checked =\n    \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n  element.checked = isHydrating ? element.checked : !!checked;\n  element.defaultChecked = !!checked;\n  null != name &&\n    \"function\" !== typeof name &&\n    \"symbol\" !== typeof name &&\n    \"boolean\" !== typeof name &&\n    (element.name = name);\n}\nfunction setDefaultValue(node, type, value) {\n  (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n    node.defaultValue === \"\" + value ||\n    (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  node = node.options;\n  if (multiple) {\n    multiple = {};\n    for (var i = 0; i < propValue.length; i++)\n      multiple[\"$\" + propValue[i]] = !0;\n    for (propValue = 0; propValue < node.length; propValue++)\n      (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n        node[propValue].selected !== i && (node[propValue].selected = i),\n        i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n  } else {\n    propValue = \"\" + getToStringValue(propValue);\n    multiple = null;\n    for (i = 0; i < node.length; i++) {\n      if (node[i].value === propValue) {\n        node[i].selected = !0;\n        setDefaultSelected && (node[i].defaultSelected = !0);\n        return;\n      }\n      null !== multiple || node[i].disabled || (multiple = node[i]);\n    }\n    null !== multiple && (multiple.selected = !0);\n  }\n}\nfunction updateTextarea(element, value, defaultValue) {\n  if (\n    null != value &&\n    ((value = \"\" + getToStringValue(value)),\n    value !== element.value && (element.value = value),\n    null == defaultValue)\n  ) {\n    element.defaultValue !== value && (element.defaultValue = value);\n    return;\n  }\n  element.defaultValue =\n    null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n  if (null == value) {\n    if (null != children) {\n      if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n      if (isArrayImpl(children)) {\n        if (1 < children.length) throw Error(formatProdErrorMessage(93));\n        children = children[0];\n      }\n      defaultValue = children;\n    }\n    null == defaultValue && (defaultValue = \"\");\n    value = defaultValue;\n  }\n  defaultValue = getToStringValue(value);\n  element.defaultValue = defaultValue;\n  children = element.textContent;\n  children === defaultValue &&\n    \"\" !== children &&\n    null !== children &&\n    (element.value = children);\n}\nfunction setTextContent(node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n    if (\n      firstChild &&\n      firstChild === node.lastChild &&\n      3 === firstChild.nodeType\n    ) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n  \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n    \" \"\n  )\n);\nfunction setValueForStyle(style, styleName, value) {\n  var isCustomProperty = 0 === styleName.indexOf(\"--\");\n  null == value || \"boolean\" === typeof value || \"\" === value\n    ? isCustomProperty\n      ? style.setProperty(styleName, \"\")\n      : \"float\" === styleName\n        ? (style.cssFloat = \"\")\n        : (style[styleName] = \"\")\n    : isCustomProperty\n      ? style.setProperty(styleName, value)\n      : \"number\" !== typeof value ||\n          0 === value ||\n          unitlessNumbers.has(styleName)\n        ? \"float\" === styleName\n          ? (style.cssFloat = value)\n          : (style[styleName] = (\"\" + value).trim())\n        : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n  if (null != styles && \"object\" !== typeof styles)\n    throw Error(formatProdErrorMessage(62));\n  node = node.style;\n  if (null != prevStyles) {\n    for (var styleName in prevStyles)\n      !prevStyles.hasOwnProperty(styleName) ||\n        (null != styles && styles.hasOwnProperty(styleName)) ||\n        (0 === styleName.indexOf(\"--\")\n          ? node.setProperty(styleName, \"\")\n          : \"float\" === styleName\n            ? (node.cssFloat = \"\")\n            : (node[styleName] = \"\"));\n    for (var styleName$16 in styles)\n      (styleName = styles[styleName$16]),\n        styles.hasOwnProperty(styleName$16) &&\n          prevStyles[styleName$16] !== styleName &&\n          setValueForStyle(node, styleName$16, styleName);\n  } else\n    for (var styleName$17 in styles)\n      styles.hasOwnProperty(styleName$17) &&\n        setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n  if (-1 === tagName.indexOf(\"-\")) return !1;\n  switch (tagName) {\n    case \"annotation-xml\":\n    case \"color-profile\":\n    case \"font-face\":\n    case \"font-face-src\":\n    case \"font-face-uri\":\n    case \"font-face-format\":\n    case \"font-face-name\":\n    case \"missing-glyph\":\n      return !1;\n    default:\n      return !0;\n  }\n}\nvar aliases = new Map([\n    [\"acceptCharset\", \"accept-charset\"],\n    [\"htmlFor\", \"for\"],\n    [\"httpEquiv\", \"http-equiv\"],\n    [\"crossOrigin\", \"crossorigin\"],\n    [\"accentHeight\", \"accent-height\"],\n    [\"alignmentBaseline\", \"alignment-baseline\"],\n    [\"arabicForm\", \"arabic-form\"],\n    [\"baselineShift\", \"baseline-shift\"],\n    [\"capHeight\", \"cap-height\"],\n    [\"clipPath\", \"clip-path\"],\n    [\"clipRule\", \"clip-rule\"],\n    [\"colorInterpolation\", \"color-interpolation\"],\n    [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n    [\"colorProfile\", \"color-profile\"],\n    [\"colorRendering\", \"color-rendering\"],\n    [\"dominantBaseline\", \"dominant-baseline\"],\n    [\"enableBackground\", \"enable-background\"],\n    [\"fillOpacity\", \"fill-opacity\"],\n    [\"fillRule\", \"fill-rule\"],\n    [\"floodColor\", \"flood-color\"],\n    [\"floodOpacity\", \"flood-opacity\"],\n    [\"fontFamily\", \"font-family\"],\n    [\"fontSize\", \"font-size\"],\n    [\"fontSizeAdjust\", \"font-size-adjust\"],\n    [\"fontStretch\", \"font-stretch\"],\n    [\"fontStyle\", \"font-style\"],\n    [\"fontVariant\", \"font-variant\"],\n    [\"fontWeight\", \"font-weight\"],\n    [\"glyphName\", \"glyph-name\"],\n    [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n    [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n    [\"horizAdvX\", \"horiz-adv-x\"],\n    [\"horizOriginX\", \"horiz-origin-x\"],\n    [\"imageRendering\", \"image-rendering\"],\n    [\"letterSpacing\", \"letter-spacing\"],\n    [\"lightingColor\", \"lighting-color\"],\n    [\"markerEnd\", \"marker-end\"],\n    [\"markerMid\", \"marker-mid\"],\n    [\"markerStart\", \"marker-start\"],\n    [\"overlinePosition\", \"overline-position\"],\n    [\"overlineThickness\", \"overline-thickness\"],\n    [\"paintOrder\", \"paint-order\"],\n    [\"panose-1\", \"panose-1\"],\n    [\"pointerEvents\", \"pointer-events\"],\n    [\"renderingIntent\", \"rendering-intent\"],\n    [\"shapeRendering\", \"shape-rendering\"],\n    [\"stopColor\", \"stop-color\"],\n    [\"stopOpacity\", \"stop-opacity\"],\n    [\"strikethroughPosition\", \"strikethrough-position\"],\n    [\"strikethroughThickness\", \"strikethrough-thickness\"],\n    [\"strokeDasharray\", \"stroke-dasharray\"],\n    [\"strokeDashoffset\", \"stroke-dashoffset\"],\n    [\"strokeLinecap\", \"stroke-linecap\"],\n    [\"strokeLinejoin\", \"stroke-linejoin\"],\n    [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n    [\"strokeOpacity\", \"stroke-opacity\"],\n    [\"strokeWidth\", \"stroke-width\"],\n    [\"textAnchor\", \"text-anchor\"],\n    [\"textDecoration\", \"text-decoration\"],\n    [\"textRendering\", \"text-rendering\"],\n    [\"transformOrigin\", \"transform-origin\"],\n    [\"underlinePosition\", \"underline-position\"],\n    [\"underlineThickness\", \"underline-thickness\"],\n    [\"unicodeBidi\", \"unicode-bidi\"],\n    [\"unicodeRange\", \"unicode-range\"],\n    [\"unitsPerEm\", \"units-per-em\"],\n    [\"vAlphabetic\", \"v-alphabetic\"],\n    [\"vHanging\", \"v-hanging\"],\n    [\"vIdeographic\", \"v-ideographic\"],\n    [\"vMathematical\", \"v-mathematical\"],\n    [\"vectorEffect\", \"vector-effect\"],\n    [\"vertAdvY\", \"vert-adv-y\"],\n    [\"vertOriginX\", \"vert-origin-x\"],\n    [\"vertOriginY\", \"vert-origin-y\"],\n    [\"wordSpacing\", \"word-spacing\"],\n    [\"writingMode\", \"writing-mode\"],\n    [\"xmlnsXlink\", \"xmlns:xlink\"],\n    [\"xHeight\", \"x-height\"]\n  ]),\n  isJavaScriptProtocol =\n    /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n  return isJavaScriptProtocol.test(\"\" + url)\n    ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n    : url;\n}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n  nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n  nativeEvent.correspondingUseElement &&\n    (nativeEvent = nativeEvent.correspondingUseElement);\n  return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n  restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n  var internalInstance = getInstanceFromNode(target);\n  if (internalInstance && (target = internalInstance.stateNode)) {\n    var props = target[internalPropsKey] || null;\n    a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n      case \"input\":\n        updateInput(\n          target,\n          props.value,\n          props.defaultValue,\n          props.defaultValue,\n          props.checked,\n          props.defaultChecked,\n          props.type,\n          props.name\n        );\n        internalInstance = props.name;\n        if (\"radio\" === props.type && null != internalInstance) {\n          for (props = target; props.parentNode; ) props = props.parentNode;\n          props = props.querySelectorAll(\n            'input[name=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                \"\" + internalInstance\n              ) +\n              '\"][type=\"radio\"]'\n          );\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          ) {\n            var otherNode = props[internalInstance];\n            if (otherNode !== target && otherNode.form === target.form) {\n              var otherProps = otherNode[internalPropsKey] || null;\n              if (!otherProps) throw Error(formatProdErrorMessage(90));\n              updateInput(\n                otherNode,\n                otherProps.value,\n                otherProps.defaultValue,\n                otherProps.defaultValue,\n                otherProps.checked,\n                otherProps.defaultChecked,\n                otherProps.type,\n                otherProps.name\n              );\n            }\n          }\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          )\n            (otherNode = props[internalInstance]),\n              otherNode.form === target.form && updateValueIfChanged(otherNode);\n        }\n        break a;\n      case \"textarea\":\n        updateTextarea(target, props.value, props.defaultValue);\n        break a;\n      case \"select\":\n        (internalInstance = props.value),\n          null != internalInstance &&\n            updateOptions(target, !!props.multiple, internalInstance, !1);\n    }\n  }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n  if (isInsideEventHandler) return fn(a, b);\n  isInsideEventHandler = !0;\n  try {\n    var JSCompiler_inline_result = fn(a);\n    return JSCompiler_inline_result;\n  } finally {\n    if (\n      ((isInsideEventHandler = !1),\n      null !== restoreTarget || null !== restoreQueue)\n    )\n      if (\n        (flushSyncWork$1(),\n        restoreTarget &&\n          ((a = restoreTarget),\n          (fn = restoreQueue),\n          (restoreQueue = restoreTarget = null),\n          restoreStateOfTarget(a),\n          fn))\n      )\n        for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n  }\n}\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n  if (null === stateNode) return null;\n  var props = stateNode[internalPropsKey] || null;\n  if (null === props) return null;\n  stateNode = props[registrationName];\n  a: switch (registrationName) {\n    case \"onClick\":\n    case \"onClickCapture\":\n    case \"onDoubleClick\":\n    case \"onDoubleClickCapture\":\n    case \"onMouseDown\":\n    case \"onMouseDownCapture\":\n    case \"onMouseMove\":\n    case \"onMouseMoveCapture\":\n    case \"onMouseUp\":\n    case \"onMouseUpCapture\":\n    case \"onMouseEnter\":\n      (props = !props.disabled) ||\n        ((inst = inst.type),\n        (props = !(\n          \"button\" === inst ||\n          \"input\" === inst ||\n          \"select\" === inst ||\n          \"textarea\" === inst\n        )));\n      inst = !props;\n      break a;\n    default:\n      inst = !1;\n  }\n  if (inst) return null;\n  if (stateNode && \"function\" !== typeof stateNode)\n    throw Error(\n      formatProdErrorMessage(231, registrationName, typeof stateNode)\n    );\n  return stateNode;\n}\nvar passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n  try {\n    var options = {};\n    Object.defineProperty(options, \"passive\", {\n      get: function () {\n        passiveBrowserEventsSupported = !0;\n      }\n    });\n    window.addEventListener(\"test\", options, options);\n    window.removeEventListener(\"test\", options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = !1;\n  }\nvar root = null,\n  startText = null,\n  fallbackText = null;\nfunction getData() {\n  if (fallbackText) return fallbackText;\n  var start,\n    startValue = startText,\n    startLength = startValue.length,\n    end,\n    endValue = \"value\" in root ? root.value : root.textContent,\n    endLength = endValue.length;\n  for (\n    start = 0;\n    start < startLength && startValue[start] === endValue[start];\n    start++\n  );\n  var minEnd = startLength - start;\n  for (\n    end = 1;\n    end <= minEnd &&\n    startValue[startLength - end] === endValue[endLength - end];\n    end++\n  );\n  return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n  var keyCode = nativeEvent.keyCode;\n  \"charCode\" in nativeEvent\n    ? ((nativeEvent = nativeEvent.charCode),\n      0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n    : (nativeEvent = keyCode);\n  10 === nativeEvent && (nativeEvent = 13);\n  return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction createSyntheticEvent(Interface) {\n  function SyntheticBaseEvent(\n    reactName,\n    reactEventType,\n    targetInst,\n    nativeEvent,\n    nativeEventTarget\n  ) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n    for (var propName in Interface)\n      Interface.hasOwnProperty(propName) &&\n        ((reactName = Interface[propName]),\n        (this[propName] = reactName\n          ? reactName(nativeEvent)\n          : nativeEvent[propName]));\n    this.isDefaultPrevented = (\n      null != nativeEvent.defaultPrevented\n        ? nativeEvent.defaultPrevented\n        : !1 === nativeEvent.returnValue\n    )\n      ? functionThatReturnsTrue\n      : functionThatReturnsFalse;\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = !0;\n      var event = this.nativeEvent;\n      event &&\n        (event.preventDefault\n          ? event.preventDefault()\n          : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n        (this.isDefaultPrevented = functionThatReturnsTrue));\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n      event &&\n        (event.stopPropagation\n          ? event.stopPropagation()\n          : \"unknown\" !== typeof event.cancelBubble &&\n            (event.cancelBubble = !0),\n        (this.isPropagationStopped = functionThatReturnsTrue));\n    },\n    persist: function () {},\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\nvar EventInterface = {\n    eventPhase: 0,\n    bubbles: 0,\n    cancelable: 0,\n    timeStamp: function (event) {\n      return event.timeStamp || Date.now();\n    },\n    defaultPrevented: 0,\n    isTrusted: 0\n  },\n  SyntheticEvent = createSyntheticEvent(EventInterface),\n  UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n  SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n  lastMovementX,\n  lastMovementY,\n  lastMouseEvent,\n  MouseEventInterface = assign({}, UIEventInterface, {\n    screenX: 0,\n    screenY: 0,\n    clientX: 0,\n    clientY: 0,\n    pageX: 0,\n    pageY: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    getModifierState: getEventModifierState,\n    button: 0,\n    buttons: 0,\n    relatedTarget: function (event) {\n      return void 0 === event.relatedTarget\n        ? event.fromElement === event.srcElement\n          ? event.toElement\n          : event.fromElement\n        : event.relatedTarget;\n    },\n    movementX: function (event) {\n      if (\"movementX\" in event) return event.movementX;\n      event !== lastMouseEvent &&\n        (lastMouseEvent && \"mousemove\" === event.type\n          ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n            (lastMovementY = event.screenY - lastMouseEvent.screenY))\n          : (lastMovementY = lastMovementX = 0),\n        (lastMouseEvent = event));\n      return lastMovementX;\n    },\n    movementY: function (event) {\n      return \"movementY\" in event ? event.movementY : lastMovementY;\n    }\n  }),\n  SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n  DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n  SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n  FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n  SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n  AnimationEventInterface = assign({}, EventInterface, {\n    animationName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n  ClipboardEventInterface = assign({}, EventInterface, {\n    clipboardData: function (event) {\n      return \"clipboardData\" in event\n        ? event.clipboardData\n        : window.clipboardData;\n    }\n  }),\n  SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n  CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n  SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n  normalizeKey = {\n    Esc: \"Escape\",\n    Spacebar: \" \",\n    Left: \"ArrowLeft\",\n    Up: \"ArrowUp\",\n    Right: \"ArrowRight\",\n    Down: \"ArrowDown\",\n    Del: \"Delete\",\n    Win: \"OS\",\n    Menu: \"ContextMenu\",\n    Apps: \"ContextMenu\",\n    Scroll: \"ScrollLock\",\n    MozPrintableKey: \"Unidentified\"\n  },\n  translateToKey = {\n    8: \"Backspace\",\n    9: \"Tab\",\n    12: \"Clear\",\n    13: \"Enter\",\n    16: \"Shift\",\n    17: \"Control\",\n    18: \"Alt\",\n    19: \"Pause\",\n    20: \"CapsLock\",\n    27: \"Escape\",\n    32: \" \",\n    33: \"PageUp\",\n    34: \"PageDown\",\n    35: \"End\",\n    36: \"Home\",\n    37: \"ArrowLeft\",\n    38: \"ArrowUp\",\n    39: \"ArrowRight\",\n    40: \"ArrowDown\",\n    45: \"Insert\",\n    46: \"Delete\",\n    112: \"F1\",\n    113: \"F2\",\n    114: \"F3\",\n    115: \"F4\",\n    116: \"F5\",\n    117: \"F6\",\n    118: \"F7\",\n    119: \"F8\",\n    120: \"F9\",\n    121: \"F10\",\n    122: \"F11\",\n    123: \"F12\",\n    144: \"NumLock\",\n    145: \"ScrollLock\",\n    224: \"Meta\"\n  },\n  modifierKeyToProp = {\n    Alt: \"altKey\",\n    Control: \"ctrlKey\",\n    Meta: \"metaKey\",\n    Shift: \"shiftKey\"\n  };\nfunction modifierStateGetter(keyArg) {\n  var nativeEvent = this.nativeEvent;\n  return nativeEvent.getModifierState\n    ? nativeEvent.getModifierState(keyArg)\n    : (keyArg = modifierKeyToProp[keyArg])\n      ? !!nativeEvent[keyArg]\n      : !1;\n}\nfunction getEventModifierState() {\n  return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n    key: function (nativeEvent) {\n      if (nativeEvent.key) {\n        var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n        if (\"Unidentified\" !== key) return key;\n      }\n      return \"keypress\" === nativeEvent.type\n        ? ((nativeEvent = getEventCharCode(nativeEvent)),\n          13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n        : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n          ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n          : \"\";\n    },\n    code: 0,\n    location: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    repeat: 0,\n    locale: 0,\n    getModifierState: getEventModifierState,\n    charCode: function (event) {\n      return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n    },\n    keyCode: function (event) {\n      return \"keydown\" === event.type || \"keyup\" === event.type\n        ? event.keyCode\n        : 0;\n    },\n    which: function (event) {\n      return \"keypress\" === event.type\n        ? getEventCharCode(event)\n        : \"keydown\" === event.type || \"keyup\" === event.type\n          ? event.keyCode\n          : 0;\n    }\n  }),\n  SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n  PointerEventInterface = assign({}, MouseEventInterface, {\n    pointerId: 0,\n    width: 0,\n    height: 0,\n    pressure: 0,\n    tangentialPressure: 0,\n    tiltX: 0,\n    tiltY: 0,\n    twist: 0,\n    pointerType: 0,\n    isPrimary: 0\n  }),\n  SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n  TouchEventInterface = assign({}, UIEventInterface, {\n    touches: 0,\n    targetTouches: 0,\n    changedTouches: 0,\n    altKey: 0,\n    metaKey: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    getModifierState: getEventModifierState\n  }),\n  SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n  TransitionEventInterface = assign({}, EventInterface, {\n    propertyName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n  WheelEventInterface = assign({}, MouseEventInterface, {\n    deltaX: function (event) {\n      return \"deltaX\" in event\n        ? event.deltaX\n        : \"wheelDeltaX\" in event\n          ? -event.wheelDeltaX\n          : 0;\n    },\n    deltaY: function (event) {\n      return \"deltaY\" in event\n        ? event.deltaY\n        : \"wheelDeltaY\" in event\n          ? -event.wheelDeltaY\n          : \"wheelDelta\" in event\n            ? -event.wheelDelta\n            : 0;\n    },\n    deltaZ: 0,\n    deltaMode: 0\n  }),\n  SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n  ToggleEventInterface = assign({}, EventInterface, {\n    newState: 0,\n    oldState: 0\n  }),\n  SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n  END_KEYCODES = [9, 13, 27, 32],\n  canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n  documentMode = null;\ncanUseDOM &&\n  \"documentMode\" in document &&\n  (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n  useFallbackCompositionData =\n    canUseDOM &&\n    (!canUseCompositionEvent ||\n      (documentMode && 8 < documentMode && 11 >= documentMode)),\n  SPACEBAR_CHAR = String.fromCharCode(32),\n  hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"keyup\":\n      return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n    case \"keydown\":\n      return 229 !== nativeEvent.keyCode;\n    case \"keypress\":\n    case \"mousedown\":\n    case \"focusout\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n  nativeEvent = nativeEvent.detail;\n  return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n    ? nativeEvent.data\n    : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"compositionend\":\n      return getDataFromCustomEvent(nativeEvent);\n    case \"keypress\":\n      if (32 !== nativeEvent.which) return null;\n      hasSpaceKeypress = !0;\n      return SPACEBAR_CHAR;\n    case \"textInput\":\n      return (\n        (domEventName = nativeEvent.data),\n        domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n      );\n    default:\n      return null;\n  }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  if (isComposing)\n    return \"compositionend\" === domEventName ||\n      (!canUseCompositionEvent &&\n        isFallbackCompositionEnd(domEventName, nativeEvent))\n      ? ((domEventName = getData()),\n        (fallbackText = startText = root = null),\n        (isComposing = !1),\n        domEventName)\n      : null;\n  switch (domEventName) {\n    case \"paste\":\n      return null;\n    case \"keypress\":\n      if (\n        !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n        (nativeEvent.ctrlKey && nativeEvent.altKey)\n      ) {\n        if (nativeEvent.char && 1 < nativeEvent.char.length)\n          return nativeEvent.char;\n        if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n      }\n      return null;\n    case \"compositionend\":\n      return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n        ? null\n        : nativeEvent.data;\n    default:\n      return null;\n  }\n}\nvar supportedInputTypes = {\n  color: !0,\n  date: !0,\n  datetime: !0,\n  \"datetime-local\": !0,\n  email: !0,\n  month: !0,\n  number: !0,\n  password: !0,\n  range: !0,\n  search: !0,\n  tel: !0,\n  text: !0,\n  time: !0,\n  url: !0,\n  week: !0\n};\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return \"input\" === nodeName\n    ? !!supportedInputTypes[elem.type]\n    : \"textarea\" === nodeName\n      ? !0\n      : !1;\n}\nfunction createAndAccumulateChangeEvent(\n  dispatchQueue,\n  inst,\n  nativeEvent,\n  target\n) {\n  restoreTarget\n    ? restoreQueue\n      ? restoreQueue.push(target)\n      : (restoreQueue = [target])\n    : (restoreTarget = target);\n  inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n  0 < inst.length &&\n    ((nativeEvent = new SyntheticEvent(\n      \"onChange\",\n      \"change\",\n      null,\n      nativeEvent,\n      target\n    )),\n    dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n  activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n  if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n  var JSCompiler_inline_result$jscomp$283;\n  if (canUseDOM) {\n    var isSupported$jscomp$inline_418 = \"oninput\" in document;\n    if (!isSupported$jscomp$inline_418) {\n      var element$jscomp$inline_419 = document.createElement(\"div\");\n      element$jscomp$inline_419.setAttribute(\"oninput\", \"return;\");\n      isSupported$jscomp$inline_418 =\n        \"function\" === typeof element$jscomp$inline_419.oninput;\n    }\n    JSCompiler_inline_result$jscomp$283 = isSupported$jscomp$inline_418;\n  } else JSCompiler_inline_result$jscomp$283 = !1;\n  isInputEventSupported =\n    JSCompiler_inline_result$jscomp$283 &&\n    (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n  activeElement$1 &&\n    (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n    (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n  if (\n    \"value\" === nativeEvent.propertyName &&\n    getInstIfValueChanged(activeElementInst$1)\n  ) {\n    var dispatchQueue = [];\n    createAndAccumulateChangeEvent(\n      dispatchQueue,\n      activeElementInst$1,\n      nativeEvent,\n      getEventTarget(nativeEvent)\n    );\n    batchedUpdates$1(runEventInBatch, dispatchQueue);\n  }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  \"focusin\" === domEventName\n    ? (stopWatchingForValueChange(),\n      (activeElement$1 = target),\n      (activeElementInst$1 = targetInst),\n      activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n    : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n  if (\n    \"selectionchange\" === domEventName ||\n    \"keyup\" === domEventName ||\n    \"keydown\" === domEventName\n  )\n    return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (\"input\" === domEventName || \"change\" === domEventName)\n    return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) return !0;\n  if (\n    \"object\" !== typeof objA ||\n    null === objA ||\n    \"object\" !== typeof objB ||\n    null === objB\n  )\n    return !1;\n  var keysA = Object.keys(objA),\n    keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return !1;\n  for (keysB = 0; keysB < keysA.length; keysB++) {\n    var currentKey = keysA[keysB];\n    if (\n      !hasOwnProperty.call(objB, currentKey) ||\n      !objectIs(objA[currentKey], objB[currentKey])\n    )\n      return !1;\n  }\n  return !0;\n}\nfunction getLeafNode(node) {\n  for (; node && node.firstChild; ) node = node.firstChild;\n  return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  root = 0;\n  for (var nodeEnd; node; ) {\n    if (3 === node.nodeType) {\n      nodeEnd = root + node.textContent.length;\n      if (root <= offset && nodeEnd >= offset)\n        return { node: node, offset: offset - root };\n      root = nodeEnd;\n    }\n    a: {\n      for (; node; ) {\n        if (node.nextSibling) {\n          node = node.nextSibling;\n          break a;\n        }\n        node = node.parentNode;\n      }\n      node = void 0;\n    }\n    node = getLeafNode(node);\n  }\n}\nfunction containsNode(outerNode, innerNode) {\n  return outerNode && innerNode\n    ? outerNode === innerNode\n      ? !0\n      : outerNode && 3 === outerNode.nodeType\n        ? !1\n        : innerNode && 3 === innerNode.nodeType\n          ? containsNode(outerNode, innerNode.parentNode)\n          : \"contains\" in outerNode\n            ? outerNode.contains(innerNode)\n            : outerNode.compareDocumentPosition\n              ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n              : !1\n    : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n  containerInfo =\n    null != containerInfo &&\n    null != containerInfo.ownerDocument &&\n    null != containerInfo.ownerDocument.defaultView\n      ? containerInfo.ownerDocument.defaultView\n      : window;\n  for (\n    var element = getActiveElement(containerInfo.document);\n    element instanceof containerInfo.HTMLIFrameElement;\n\n  ) {\n    try {\n      var JSCompiler_inline_result =\n        \"string\" === typeof element.contentWindow.location.href;\n    } catch (err) {\n      JSCompiler_inline_result = !1;\n    }\n    if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n    else break;\n    element = getActiveElement(containerInfo.document);\n  }\n  return element;\n}\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return (\n    nodeName &&\n    ((\"input\" === nodeName &&\n      (\"text\" === elem.type ||\n        \"search\" === elem.type ||\n        \"tel\" === elem.type ||\n        \"url\" === elem.type ||\n        \"password\" === elem.type)) ||\n      \"textarea\" === nodeName ||\n      \"true\" === elem.contentEditable)\n  );\n}\nfunction restoreSelection(priorSelectionInformation, containerInfo) {\n  var curFocusedElem = getActiveElementDeep(containerInfo);\n  containerInfo = priorSelectionInformation.focusedElem;\n  var priorSelectionRange = priorSelectionInformation.selectionRange;\n  if (\n    curFocusedElem !== containerInfo &&\n    containerInfo &&\n    containerInfo.ownerDocument &&\n    containsNode(containerInfo.ownerDocument.documentElement, containerInfo)\n  ) {\n    if (null !== priorSelectionRange && hasSelectionCapabilities(containerInfo))\n      if (\n        ((priorSelectionInformation = priorSelectionRange.start),\n        (curFocusedElem = priorSelectionRange.end),\n        void 0 === curFocusedElem &&\n          (curFocusedElem = priorSelectionInformation),\n        \"selectionStart\" in containerInfo)\n      )\n        (containerInfo.selectionStart = priorSelectionInformation),\n          (containerInfo.selectionEnd = Math.min(\n            curFocusedElem,\n            containerInfo.value.length\n          ));\n      else if (\n        ((curFocusedElem =\n          ((priorSelectionInformation =\n            containerInfo.ownerDocument || document) &&\n            priorSelectionInformation.defaultView) ||\n          window),\n        curFocusedElem.getSelection)\n      ) {\n        curFocusedElem = curFocusedElem.getSelection();\n        var length = containerInfo.textContent.length,\n          start = Math.min(priorSelectionRange.start, length);\n        priorSelectionRange =\n          void 0 === priorSelectionRange.end\n            ? start\n            : Math.min(priorSelectionRange.end, length);\n        !curFocusedElem.extend &&\n          start > priorSelectionRange &&\n          ((length = priorSelectionRange),\n          (priorSelectionRange = start),\n          (start = length));\n        length = getNodeForCharacterOffset(containerInfo, start);\n        var endMarker = getNodeForCharacterOffset(\n          containerInfo,\n          priorSelectionRange\n        );\n        length &&\n          endMarker &&\n          (1 !== curFocusedElem.rangeCount ||\n            curFocusedElem.anchorNode !== length.node ||\n            curFocusedElem.anchorOffset !== length.offset ||\n            curFocusedElem.focusNode !== endMarker.node ||\n            curFocusedElem.focusOffset !== endMarker.offset) &&\n          ((priorSelectionInformation =\n            priorSelectionInformation.createRange()),\n          priorSelectionInformation.setStart(length.node, length.offset),\n          curFocusedElem.removeAllRanges(),\n          start > priorSelectionRange\n            ? (curFocusedElem.addRange(priorSelectionInformation),\n              curFocusedElem.extend(endMarker.node, endMarker.offset))\n            : (priorSelectionInformation.setEnd(\n                endMarker.node,\n                endMarker.offset\n              ),\n              curFocusedElem.addRange(priorSelectionInformation)));\n      }\n    priorSelectionInformation = [];\n    for (\n      curFocusedElem = containerInfo;\n      (curFocusedElem = curFocusedElem.parentNode);\n\n    )\n      1 === curFocusedElem.nodeType &&\n        priorSelectionInformation.push({\n          element: curFocusedElem,\n          left: curFocusedElem.scrollLeft,\n          top: curFocusedElem.scrollTop\n        });\n    \"function\" === typeof containerInfo.focus && containerInfo.focus();\n    for (\n      containerInfo = 0;\n      containerInfo < priorSelectionInformation.length;\n      containerInfo++\n    )\n      (curFocusedElem = priorSelectionInformation[containerInfo]),\n        (curFocusedElem.element.scrollLeft = curFocusedElem.left),\n        (curFocusedElem.element.scrollTop = curFocusedElem.top);\n  }\n}\nvar skipSelectionChangeEvent =\n    canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n  activeElement = null,\n  activeElementInst = null,\n  lastSelection = null,\n  mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  var doc =\n    nativeEventTarget.window === nativeEventTarget\n      ? nativeEventTarget.document\n      : 9 === nativeEventTarget.nodeType\n        ? nativeEventTarget\n        : nativeEventTarget.ownerDocument;\n  mouseDown ||\n    null == activeElement ||\n    activeElement !== getActiveElement(doc) ||\n    ((doc = activeElement),\n    \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n      ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n      : ((doc = (\n          (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n          window\n        ).getSelection()),\n        (doc = {\n          anchorNode: doc.anchorNode,\n          anchorOffset: doc.anchorOffset,\n          focusNode: doc.focusNode,\n          focusOffset: doc.focusOffset\n        })),\n    (lastSelection && shallowEqual(lastSelection, doc)) ||\n      ((lastSelection = doc),\n      (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n      0 < doc.length &&\n        ((nativeEvent = new SyntheticEvent(\n          \"onSelect\",\n          \"select\",\n          null,\n          nativeEvent,\n          nativeEventTarget\n        )),\n        dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n        (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n  prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n  return prefixes;\n}\nvar vendorPrefixes = {\n    animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n    animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n    animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n    transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n    transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n    transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n    transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n  },\n  prefixedEventNames = {},\n  style = {};\ncanUseDOM &&\n  ((style = document.createElement(\"div\").style),\n  \"AnimationEvent\" in window ||\n    (delete vendorPrefixes.animationend.animation,\n    delete vendorPrefixes.animationiteration.animation,\n    delete vendorPrefixes.animationstart.animation),\n  \"TransitionEvent\" in window ||\n    delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n  if (!vendorPrefixes[eventName]) return eventName;\n  var prefixMap = vendorPrefixes[eventName],\n    styleProp;\n  for (styleProp in prefixMap)\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n      return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n  return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n  ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n  ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n  TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n  TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n  TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n  TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n  topLevelEventsToReactNames = new Map(),\n  simpleEventPluginEvents =\n    \"abort auxClick beforeToggle 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 scrollEnd toggle touchMove waiting wheel\".split(\n      \" \"\n    );\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar concurrentQueues = [],\n  concurrentQueuesIndex = 0,\n  concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n  for (\n    var endIndex = concurrentQueuesIndex,\n      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n    i < endIndex;\n\n  ) {\n    var fiber = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var queue = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var update = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var lane = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    if (null !== queue && null !== update) {\n      var pending = queue.pending;\n      null === pending\n        ? (update.next = update)\n        : ((update.next = pending.next), (pending.next = update));\n      queue.pending = update;\n    }\n    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n  }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  concurrentQueues[concurrentQueuesIndex++] = fiber;\n  concurrentQueues[concurrentQueuesIndex++] = queue;\n  concurrentQueues[concurrentQueuesIndex++] = update;\n  concurrentQueues[concurrentQueuesIndex++] = lane;\n  concurrentlyUpdatedLanes |= lane;\n  fiber.lanes |= lane;\n  fiber = fiber.alternate;\n  null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  enqueueUpdate$1(fiber, queue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  enqueueUpdate$1(fiber, null, null, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n    (parent.childLanes |= lane),\n      (alternate = parent.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      22 === parent.tag &&\n        ((sourceFiber = parent.stateNode),\n        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n      (sourceFiber = parent),\n      (parent = parent.return);\n  isHidden &&\n    null !== update &&\n    3 === sourceFiber.tag &&\n    ((parent = sourceFiber.stateNode),\n    (isHidden = 31 - clz32(lane)),\n    (parent = parent.hiddenUpdates),\n    (sourceFiber = parent[isHidden]),\n    null === sourceFiber\n      ? (parent[isHidden] = [update])\n      : sourceFiber.push(update),\n    (update.lane = lane | 536870912));\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n  if (50 < nestedUpdateCount)\n    throw (\n      ((nestedUpdateCount = 0),\n      (rootWithNestedUpdates = null),\n      Error(formatProdErrorMessage(185)))\n    );\n  for (var parent = sourceFiber.return; null !== parent; )\n    (sourceFiber = parent), (parent = sourceFiber.return);\n  return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {},\n  CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n  if (\"object\" === typeof value && null !== value) {\n    var existing = CapturedStacks.get(value);\n    if (void 0 !== existing) return existing;\n    source = {\n      value: value,\n      source: source,\n      stack: getStackByFiberInDevAndProd(source)\n    };\n    CapturedStacks.set(value, source);\n    return source;\n  }\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source)\n  };\n}\nvar forkStack = [],\n  forkStackIndex = 0,\n  treeForkProvider = null,\n  treeForkCount = 0,\n  idStack = [],\n  idStackIndex = 0,\n  treeContextProvider = null,\n  treeContextId = 1,\n  treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  workInProgress = treeContextOverflow;\n  var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n  baseIdWithLeadingBit &= ~(1 << baseLength);\n  index += 1;\n  var length = 32 - clz32(totalChildren) + baseLength;\n  if (30 < length) {\n    var numberOfOverflowBits = baseLength - (baseLength % 5);\n    length = (\n      baseIdWithLeadingBit &\n      ((1 << numberOfOverflowBits) - 1)\n    ).toString(32);\n    baseIdWithLeadingBit >>= numberOfOverflowBits;\n    baseLength -= numberOfOverflowBits;\n    treeContextId =\n      (1 << (32 - clz32(totalChildren) + baseLength)) |\n      (index << baseLength) |\n      baseIdWithLeadingBit;\n    treeContextOverflow = length + workInProgress;\n  } else\n    (treeContextId =\n      (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n      (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  null !== workInProgress.return &&\n    (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n  for (; workInProgress === treeForkProvider; )\n    (treeForkProvider = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null),\n      (treeForkCount = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null);\n  for (; workInProgress === treeContextProvider; )\n    (treeContextProvider = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextOverflow = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextId = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null);\n}\nvar hydrationParentFiber = null,\n  nextHydratableInstance = null,\n  isHydrating = !1,\n  hydrationErrors = null,\n  rootOrSingletonContext = !1,\n  HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n  var error = Error(formatProdErrorMessage(418, \"\"));\n  queueHydrationError(createCapturedValueAtFiber(error, fiber));\n  throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n  var instance = fiber.stateNode,\n    type = fiber.type,\n    props = fiber.memoizedProps;\n  instance[internalInstanceKey] = fiber;\n  instance[internalPropsKey] = props;\n  switch (type) {\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"cancel\", instance);\n      listenToNonDelegatedEvent(\"close\", instance);\n      break;\n    case \"iframe\":\n    case \"object\":\n    case \"embed\":\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (type = 0; type < mediaEventTypes.length; type++)\n        listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n      break;\n    case \"source\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      break;\n    case \"img\":\n    case \"image\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", instance);\n      break;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      initInput(\n        instance,\n        props.value,\n        props.defaultValue,\n        props.checked,\n        props.defaultChecked,\n        props.type,\n        props.name,\n        !0\n      );\n      track(instance);\n      break;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      break;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", instance),\n        initTextarea(instance, props.value, props.defaultValue, props.children),\n        track(instance);\n  }\n  type = props.children;\n  (\"string\" !== typeof type &&\n    \"number\" !== typeof type &&\n    \"bigint\" !== typeof type) ||\n  instance.textContent === \"\" + type ||\n  !0 === props.suppressHydrationWarning ||\n  checkForUnmatchedText(instance.textContent, type)\n    ? (null != props.popover &&\n        (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n        listenToNonDelegatedEvent(\"toggle\", instance)),\n      null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n      null != props.onScrollEnd &&\n        listenToNonDelegatedEvent(\"scrollend\", instance),\n      null != props.onClick && (instance.onclick = noop$1),\n      (instance = !0))\n    : (instance = !1);\n  instance || throwOnHydrationMismatch(fiber);\n}\nfunction popToNextHostParent(fiber) {\n  for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n    switch (hydrationParentFiber.tag) {\n      case 3:\n      case 27:\n        rootOrSingletonContext = !0;\n        return;\n      case 5:\n      case 13:\n        rootOrSingletonContext = !1;\n        return;\n      default:\n        hydrationParentFiber = hydrationParentFiber.return;\n    }\n}\nfunction popHydrationState(fiber) {\n  if (fiber !== hydrationParentFiber) return !1;\n  if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n  var shouldClear = !1,\n    JSCompiler_temp;\n  if ((JSCompiler_temp = 3 !== fiber.tag && 27 !== fiber.tag)) {\n    if ((JSCompiler_temp = 5 === fiber.tag))\n      (JSCompiler_temp = fiber.type),\n        (JSCompiler_temp =\n          !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n          shouldSetTextContent(fiber.type, fiber.memoizedProps));\n    JSCompiler_temp = !JSCompiler_temp;\n  }\n  JSCompiler_temp && (shouldClear = !0);\n  shouldClear && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n  popToNextHostParent(fiber);\n  if (13 === fiber.tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    a: {\n      fiber = fiber.nextSibling;\n      for (shouldClear = 0; fiber; ) {\n        if (8 === fiber.nodeType)\n          if (((JSCompiler_temp = fiber.data), \"/$\" === JSCompiler_temp)) {\n            if (0 === shouldClear) {\n              nextHydratableInstance = getNextHydratable(fiber.nextSibling);\n              break a;\n            }\n            shouldClear--;\n          } else\n            (\"$\" !== JSCompiler_temp &&\n              \"$!\" !== JSCompiler_temp &&\n              \"$?\" !== JSCompiler_temp) ||\n              shouldClear++;\n        fiber = fiber.nextSibling;\n      }\n      nextHydratableInstance = null;\n    }\n  } else\n    nextHydratableInstance = hydrationParentFiber\n      ? getNextHydratable(fiber.stateNode.nextSibling)\n      : null;\n  return !0;\n}\nfunction resetHydrationState() {\n  nextHydratableInstance = hydrationParentFiber = null;\n  isHydrating = !1;\n}\nfunction queueHydrationError(error) {\n  null === hydrationErrors\n    ? (hydrationErrors = [error])\n    : hydrationErrors.push(error);\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n  SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n  noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n  thenable = thenable.status;\n  return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop$3() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      thenableState = thenable.reason;\n      if (thenableState === SuspenseException)\n        throw Error(formatProdErrorMessage(483));\n      throw thenableState;\n    default:\n      if (\"string\" === typeof thenable.status) thenable.then(noop$3, noop$3);\n      else {\n        thenableState = workInProgressRoot;\n        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n          throw Error(formatProdErrorMessage(482));\n        thenableState = thenable;\n        thenableState.status = \"pending\";\n        thenableState.then(\n          function (fulfilledValue) {\n            if (\"pending\" === thenable.status) {\n              var fulfilledThenable = thenable;\n              fulfilledThenable.status = \"fulfilled\";\n              fulfilledThenable.value = fulfilledValue;\n            }\n          },\n          function (error) {\n            if (\"pending\" === thenable.status) {\n              var rejectedThenable = thenable;\n              rejectedThenable.status = \"rejected\";\n              rejectedThenable.reason = error;\n            }\n          }\n        );\n      }\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          thenableState = thenable.reason;\n          if (thenableState === SuspenseException)\n            throw Error(formatProdErrorMessage(483));\n          throw thenableState;\n      }\n      suspendedThenable = thenable;\n      throw SuspenseException;\n  }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n  if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n  var thenable = suspendedThenable;\n  suspendedThenable = null;\n  return thenable;\n}\nvar thenableState$1 = null,\n  thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n    throw Error(formatProdErrorMessage(525));\n  returnFiber = Object.prototype.toString.call(newChild);\n  throw Error(\n    formatProdErrorMessage(\n      31,\n      \"[object Object]\" === returnFiber\n        ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n        : returnFiber\n    )\n  );\n}\nfunction resolveLazy(lazyType) {\n  var init = lazyType._init;\n  return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var deletions = returnFiber.deletions;\n      null === deletions\n        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n        : deletions.push(childToDelete);\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(currentFirstChild) {\n    for (var existingChildren = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n        : existingChildren.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return existingChildren;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects)\n      return (newFiber.flags |= 1048576), lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags |= 33554434), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags |= 33554434;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags |= 33554434);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n    if (elementType === REACT_FRAGMENT_TYPE)\n      return updateFragment(\n        returnFiber,\n        current,\n        element.props.children,\n        lanes,\n        element.key\n      );\n    if (\n      null !== current &&\n      (current.elementType === elementType ||\n        (\"object\" === typeof elementType &&\n          null !== elementType &&\n          elementType.$$typeof === REACT_LAZY_TYPE &&\n          resolveLazy(elementType) === current.type))\n    )\n      return (\n        (current = useFiber(current, element.props)),\n        coerceRef(current, element),\n        (current.return = returnFiber),\n        current\n      );\n    current = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    coerceRef(current, element);\n    current.return = returnFiber;\n    return current;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            coerceRef(lanes, newChild),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return createChild(returnFiber, newChild, lanes);\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      if (\"function\" === typeof newChild.then)\n        return createChild(returnFiber, unwrapThenable(newChild), lanes);\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return createChild(\n          returnFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      if (\"function\" === typeof newChild.then)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return updateFromMap(\n            existingChildren,\n            returnFiber,\n            newIdx,\n            newChild,\n            lanes\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      if (\"function\" === typeof newChild.then)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; newIdx < newChildren.length; newIdx++)\n        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n          null !== oldFiber &&\n            ((currentFirstChild = placeChild(\n              oldFiber,\n              currentFirstChild,\n              newIdx\n            )),\n            null === previousNewFiber\n              ? (resultingFirstChild = oldFiber)\n              : (previousNewFiber.sibling = oldFiber),\n            (previousNewFiber = oldFiber));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      newIdx < newChildren.length;\n      newIdx++\n    )\n      (nextOldFiber = updateFromMap(\n        oldFiber,\n        returnFiber,\n        newIdx,\n        newChildren[newIdx],\n        lanes\n      )),\n        null !== nextOldFiber &&\n          (shouldTrackSideEffects &&\n            null !== nextOldFiber.alternate &&\n            oldFiber.delete(\n              null === nextOldFiber.key ? newIdx : nextOldFiber.key\n            ),\n          (currentFirstChild = placeChild(\n            nextOldFiber,\n            currentFirstChild,\n            newIdx\n          )),\n          null === previousNewFiber\n            ? (resultingFirstChild = nextOldFiber)\n            : (previousNewFiber.sibling = nextOldFiber),\n          (previousNewFiber = nextOldFiber));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    if (null == newChildren) throw Error(formatProdErrorMessage(151));\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null,\n        step = newChildren.next();\n      null !== oldFiber && !step.done;\n      newIdx++, step = newChildren.next()\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (step.done)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; !step.done; newIdx++, step = newChildren.next())\n        (step = createChild(returnFiber, step.value, lanes)),\n          null !== step &&\n            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n            null === previousNewFiber\n              ? (resultingFirstChild = step)\n              : (previousNewFiber.sibling = step),\n            (previousNewFiber = step));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      !step.done;\n      newIdx++, step = newChildren.next()\n    )\n      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n        null !== step &&\n          (shouldTrackSideEffects &&\n            null !== step.alternate &&\n            oldFiber.delete(null === step.key ? newIdx : step.key),\n          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n          null === previousNewFiber\n            ? (resultingFirstChild = step)\n            : (previousNewFiber.sibling = step),\n          (previousNewFiber = step));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildFibersImpl(\n    returnFiber,\n    currentFirstChild,\n    newChild,\n    lanes\n  ) {\n    \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key &&\n      (newChild = newChild.props.children);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            for (var key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key) {\n                key = newChild.type;\n                if (key === REACT_FRAGMENT_TYPE) {\n                  if (7 === currentFirstChild.tag) {\n                    deleteRemainingChildren(\n                      returnFiber,\n                      currentFirstChild.sibling\n                    );\n                    lanes = useFiber(\n                      currentFirstChild,\n                      newChild.props.children\n                    );\n                    lanes.return = returnFiber;\n                    returnFiber = lanes;\n                    break a;\n                  }\n                } else if (\n                  currentFirstChild.elementType === key ||\n                  (\"object\" === typeof key &&\n                    null !== key &&\n                    key.$$typeof === REACT_LAZY_TYPE &&\n                    resolveLazy(key) === currentFirstChild.type)\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.props);\n                  coerceRef(lanes, newChild);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                }\n                deleteRemainingChildren(returnFiber, currentFirstChild);\n                break;\n              } else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((lanes = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.children || []);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n            lanes.return = returnFiber;\n            returnFiber = lanes;\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            reconcileChildFibersImpl(\n              returnFiber,\n              currentFirstChild,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild))\n        return reconcileChildrenArray(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      if (getIteratorFn(newChild)) {\n        key = getIteratorFn(newChild);\n        if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n        newChild = key.call(newChild);\n        return reconcileChildrenIterator(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      }\n      if (\"function\" === typeof newChild.then)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n      ? ((newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (lanes = useFiber(currentFirstChild, newChild)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes)),\n        placeSingleChild(returnFiber))\n      : deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n  return function (returnFiber, currentFirstChild, newChild, lanes) {\n    try {\n      thenableIndexCounter$1 = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState$1 = null;\n      return firstChildFiber;\n    } catch (x) {\n      if (x === SuspenseException) throw x;\n      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n      fiber.lanes = lanes;\n      fiber.return = returnFiber;\n      return fiber;\n    } finally {\n    }\n  };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n  mountChildFibers = createChildReconciler(!1),\n  currentTreeHiddenStackCursor = createCursor(null),\n  prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n  fiber = entangledRenderLanes;\n  push(prevEntangledRenderLanesCursor, fiber);\n  push(currentTreeHiddenStackCursor, context);\n  entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n  push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n  entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n  pop(currentTreeHiddenStackCursor);\n  pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n  shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n  var current = handler.alternate;\n  push(suspenseStackCursor, suspenseStackCursor.current & 1);\n  push(suspenseHandlerStackCursor, handler);\n  null === shellBoundary &&\n    (null === current || null !== currentTreeHiddenStackCursor.current\n      ? (shellBoundary = handler)\n      : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  if (22 === fiber.tag) {\n    if (\n      (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary)\n    ) {\n      var current = fiber.alternate;\n      null !== current &&\n        null !== current.memoizedState &&\n        (shellBoundary = fiber);\n    }\n  } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n  pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (\n        null !== state &&\n        ((state = state.dehydrated),\n        null === state || \"$?\" === state.data || \"$!\" === state.data)\n      )\n        return node;\n    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n      if (0 !== (node.flags & 128)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nvar AbortControllerLocal =\n    \"undefined\" !== typeof AbortController\n      ? AbortController\n      : function () {\n          var listeners = [],\n            signal = (this.signal = {\n              aborted: !1,\n              addEventListener: function (type, listener) {\n                listeners.push(listener);\n              }\n            });\n          this.abort = function () {\n            signal.aborted = !0;\n            listeners.forEach(function (listener) {\n              return listener();\n            });\n          };\n        },\n  scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n  NormalPriority = Scheduler.unstable_NormalPriority,\n  CacheContext = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    Consumer: null,\n    Provider: null,\n    _currentValue: null,\n    _currentValue2: null,\n    _threadCount: 0\n  };\nfunction createCache() {\n  return {\n    controller: new AbortControllerLocal(),\n    data: new Map(),\n    refCount: 0\n  };\n}\nfunction releaseCache(cache) {\n  cache.refCount--;\n  0 === cache.refCount &&\n    scheduleCallback$2(NormalPriority, function () {\n      cache.controller.abort();\n    });\n}\nvar currentEntangledListeners = null,\n  currentEntangledPendingCount = 0,\n  currentEntangledLane = 0,\n  currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n  if (null === currentEntangledListeners) {\n    var entangledListeners = (currentEntangledListeners = []);\n    currentEntangledPendingCount = 0;\n    currentEntangledLane = requestTransitionLane();\n    currentEntangledActionThenable = {\n      status: \"pending\",\n      value: void 0,\n      then: function (resolve) {\n        entangledListeners.push(resolve);\n      }\n    };\n  }\n  currentEntangledPendingCount++;\n  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n  return thenable;\n}\nfunction pingEngtangledActionScope() {\n  if (\n    0 === --currentEntangledPendingCount &&\n    null !== currentEntangledListeners\n  ) {\n    null !== currentEntangledActionThenable &&\n      (currentEntangledActionThenable.status = \"fulfilled\");\n    var listeners = currentEntangledListeners;\n    currentEntangledListeners = null;\n    currentEntangledLane = 0;\n    currentEntangledActionThenable = null;\n    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n  }\n}\nfunction chainThenableValue(thenable, result) {\n  var listeners = [],\n    thenableWithOverride = {\n      status: \"pending\",\n      value: null,\n      reason: null,\n      then: function (resolve) {\n        listeners.push(resolve);\n      }\n    };\n  thenable.then(\n    function () {\n      thenableWithOverride.status = \"fulfilled\";\n      thenableWithOverride.value = result;\n      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n    },\n    function (error) {\n      thenableWithOverride.status = \"rejected\";\n      thenableWithOverride.reason = error;\n      for (error = 0; error < listeners.length; error++)\n        (0, listeners[error])(void 0);\n    }\n  );\n  return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  \"object\" === typeof returnValue &&\n    null !== returnValue &&\n    \"function\" === typeof returnValue.then &&\n    entangleAsyncAction(transition, returnValue);\n  null !== prevOnStartTransitionFinish &&\n    prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n  var cacheResumedFromPreviousRender = resumedCache.current;\n  return null !== cacheResumedFromPreviousRender\n    ? cacheResumedFromPreviousRender\n    : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n  null === prevCachePool\n    ? push(resumedCache, resumedCache.current)\n    : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n  var cacheFromPool = peekCacheFromPool();\n  return null === cacheFromPool\n    ? null\n    : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar renderLanes = 0,\n  currentlyRenderingFiber$1 = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1,\n  shouldDoubleInvokeUserFnsInHooksDEV = !1,\n  localIdCounter = 0,\n  thenableIndexCounter = 0,\n  thenableState = null,\n  globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n  throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber$1 = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactSharedInternals.H =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  nextRenderLanes = Component(props, secondArg);\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  didScheduleRenderPhaseUpdateDuringThisPass &&\n    (nextRenderLanes = renderWithHooksAgain(\n      workInProgress,\n      Component,\n      props,\n      secondArg\n    ));\n  finishRenderingHooks(current);\n  return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n  didScheduleRenderPhaseUpdate = !1;\n  thenableIndexCounter = 0;\n  thenableState = null;\n  if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n  null === current ||\n    didReceiveUpdate ||\n    ((current = current.dependencies),\n    null !== current &&\n      checkIfContextChanged(current) &&\n      (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n  currentlyRenderingFiber$1 = workInProgress;\n  var numberOfReRenders = 0;\n  do {\n    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n    thenableIndexCounter = 0;\n    didScheduleRenderPhaseUpdateDuringThisPass = !1;\n    if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n    numberOfReRenders += 1;\n    workInProgressHook = currentHook = null;\n    if (null != workInProgress.updateQueue) {\n      var children = workInProgress.updateQueue;\n      children.lastEffect = null;\n      children.events = null;\n      children.stores = null;\n      null != children.memoCache && (children.memoCache.index = 0);\n    }\n    ReactSharedInternals.H = HooksDispatcherOnRerender;\n    children = Component(props, secondArg);\n  } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  return children;\n}\nfunction TransitionAwareHostComponent() {\n  var dispatcher = ReactSharedInternals.H,\n    maybeThenable = dispatcher.useState()[0];\n  maybeThenable =\n    \"function\" === typeof maybeThenable.then\n      ? useThenable(maybeThenable)\n      : maybeThenable;\n  dispatcher = dispatcher.useState()[0];\n  (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n    (currentlyRenderingFiber$1.flags |= 1024);\n  return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n  var didRenderIdHook = 0 !== localIdCounter;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue;\n  workInProgress.flags &= -2053;\n  current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n  if (didScheduleRenderPhaseUpdate) {\n    for (\n      workInProgress = workInProgress.memoizedState;\n      null !== workInProgress;\n\n    ) {\n      var queue = workInProgress.queue;\n      null !== queue && (queue.pending = null);\n      workInProgress = workInProgress.next;\n    }\n    didScheduleRenderPhaseUpdate = !1;\n  }\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\n  thenableIndexCounter = localIdCounter = 0;\n  thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber$1.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber$1.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook) {\n      if (null === currentlyRenderingFiber$1.alternate)\n        throw Error(formatProdErrorMessage(467));\n      throw Error(formatProdErrorMessage(310));\n    }\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook =\n          nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nvar createFunctionComponentUpdateQueue;\ncreateFunctionComponentUpdateQueue = function () {\n  return { lastEffect: null, events: null, stores: null, memoCache: null };\n};\nfunction useThenable(thenable) {\n  var index = thenableIndexCounter;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  thenable = trackUsedThenable(thenableState, thenable, index);\n  index = currentlyRenderingFiber$1;\n  null ===\n    (null === workInProgressHook\n      ? index.memoizedState\n      : workInProgressHook.next) &&\n    ((index = index.alternate),\n    (ReactSharedInternals.H =\n      null === index || null === index.memoizedState\n        ? HooksDispatcherOnMount\n        : HooksDispatcherOnUpdate));\n  return thenable;\n}\nfunction use(usable) {\n  if (null !== usable && \"object\" === typeof usable) {\n    if (\"function\" === typeof usable.then) return useThenable(usable);\n    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n  }\n  throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n  var memoCache = null,\n    updateQueue = currentlyRenderingFiber$1.updateQueue;\n  null !== updateQueue && (memoCache = updateQueue.memoCache);\n  if (null == memoCache) {\n    var current = currentlyRenderingFiber$1.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      null !== current &&\n        ((current = current.memoCache),\n        null != current &&\n          (memoCache = {\n            data: current.data.map(function (array) {\n              return array.slice();\n            }),\n            index: 0\n          })));\n  }\n  null == memoCache && (memoCache = { data: [], index: 0 });\n  null === updateQueue &&\n    ((updateQueue = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber$1.updateQueue = updateQueue));\n  updateQueue.memoCache = memoCache;\n  updateQueue = memoCache.data[memoCache.index];\n  if (void 0 === updateQueue)\n    for (\n      updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n      current < size;\n      current++\n    )\n      updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n  memoCache.index++;\n  return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n  return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n  var hook = updateWorkInProgressHook();\n  return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n  var queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var baseQueue = hook.baseQueue,\n    pendingQueue = queue.pending;\n  if (null !== pendingQueue) {\n    if (null !== baseQueue) {\n      var baseFirst = baseQueue.next;\n      baseQueue.next = pendingQueue.next;\n      pendingQueue.next = baseFirst;\n    }\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n  pendingQueue = hook.baseState;\n  if (null === baseQueue) hook.memoizedState = pendingQueue;\n  else {\n    current = baseQueue.next;\n    var newBaseQueueFirst = (baseFirst = null),\n      newBaseQueueLast = null,\n      update = current,\n      didReadFromEntangledAsyncAction$54 = !1;\n    do {\n      var updateLane = update.lane & -536870913;\n      if (\n        updateLane !== update.lane\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        var revertLane = update.revertLane;\n        if (0 === revertLane)\n          null !== newBaseQueueLast &&\n            (newBaseQueueLast = newBaseQueueLast.next =\n              {\n                lane: 0,\n                revertLane: 0,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$54 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$54 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          }),\n            null === newBaseQueueLast\n              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n                (baseFirst = pendingQueue))\n              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n            (currentlyRenderingFiber$1.lanes |= revertLane),\n            (workInProgressRootSkippedLanes |= revertLane);\n        updateLane = update.action;\n        shouldDoubleInvokeUserFnsInHooksDEV &&\n          reducer(pendingQueue, updateLane);\n        pendingQueue = update.hasEagerState\n          ? update.eagerState\n          : reducer(pendingQueue, updateLane);\n      } else\n        (revertLane = {\n          lane: updateLane,\n          revertLane: update.revertLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        }),\n          null === newBaseQueueLast\n            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n              (baseFirst = pendingQueue))\n            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n          (currentlyRenderingFiber$1.lanes |= updateLane),\n          (workInProgressRootSkippedLanes |= updateLane);\n      update = update.next;\n    } while (null !== update && update !== current);\n    null === newBaseQueueLast\n      ? (baseFirst = pendingQueue)\n      : (newBaseQueueLast.next = newBaseQueueFirst);\n    if (\n      !objectIs(pendingQueue, hook.memoizedState) &&\n      ((didReceiveUpdate = !0),\n      didReadFromEntangledAsyncAction$54 &&\n        ((reducer = currentEntangledActionThenable), null !== reducer))\n    )\n      throw reducer;\n    hook.memoizedState = pendingQueue;\n    hook.baseState = baseFirst;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = pendingQueue;\n  }\n  null === baseQueue && (queue.lanes = 0);\n  return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var dispatch = queue.dispatch,\n    lastRenderPhaseUpdate = queue.pending,\n    newState = hook.memoizedState;\n  if (null !== lastRenderPhaseUpdate) {\n    queue.pending = null;\n    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n    do (newState = reducer(newState, update.action)), (update = update.next);\n    while (update !== lastRenderPhaseUpdate);\n    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = newState;\n    null === hook.baseQueue && (hook.baseState = newState);\n    queue.lastRenderedState = newState;\n  }\n  return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber$1,\n    hook = updateWorkInProgressHook(),\n    isHydrating$jscomp$0 = isHydrating;\n  if (isHydrating$jscomp$0) {\n    if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n    getServerSnapshot = getServerSnapshot();\n  } else getServerSnapshot = getSnapshot();\n  var snapshotChanged = !objectIs(\n    (currentHook || hook).memoizedState,\n    getServerSnapshot\n  );\n  snapshotChanged &&\n    ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n  hook = hook.queue;\n  updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n    subscribe\n  ]);\n  if (\n    hook.getSnapshot !== getSnapshot ||\n    snapshotChanged ||\n    (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n  ) {\n    fiber.flags |= 2048;\n    pushEffect(\n      9,\n      updateStoreInstance.bind(\n        null,\n        fiber,\n        hook,\n        getServerSnapshot,\n        getSnapshot\n      ),\n      { destroy: void 0 },\n      null\n    );\n    if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n    isHydrating$jscomp$0 ||\n      0 !== (renderLanes & 60) ||\n      pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n  }\n  return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= 16384;\n  fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n  getSnapshot = currentlyRenderingFiber$1.updateQueue;\n  null === getSnapshot\n    ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n      (currentlyRenderingFiber$1.updateQueue = getSnapshot),\n      (getSnapshot.stores = [fiber]))\n    : ((renderedSnapshot = getSnapshot.stores),\n      null === renderedSnapshot\n        ? (getSnapshot.stores = [fiber])\n        : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot;\n  checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n  return subscribe(function () {\n    checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n  });\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, 2);\n  null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n  var hook = mountWorkInProgressHook();\n  if (\"function\" === typeof initialState) {\n    var initialStateInitializer = initialState;\n    initialState = initialStateInitializer();\n    if (shouldDoubleInvokeUserFnsInHooksDEV) {\n      setIsStrictModeForDevtools(!0);\n      try {\n        initialStateInitializer();\n      } finally {\n        setIsStrictModeForDevtools(!1);\n      }\n    }\n  }\n  hook.memoizedState = hook.baseState = initialState;\n  hook.queue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n  hook.baseState = passthrough;\n  return updateReducerImpl(\n    hook,\n    currentHook,\n    \"function\" === typeof reducer ? reducer : basicStateReducer\n  );\n}\nfunction dispatchActionState(\n  fiber,\n  actionQueue,\n  setPendingState,\n  setState,\n  payload\n) {\n  if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n  fiber = actionQueue.action;\n  if (null !== fiber) {\n    var actionNode = {\n      payload: payload,\n      action: fiber,\n      next: null,\n      isTransition: !0,\n      status: \"pending\",\n      value: null,\n      reason: null,\n      listeners: [],\n      then: function (listener) {\n        actionNode.listeners.push(listener);\n      }\n    };\n    null !== ReactSharedInternals.T\n      ? setPendingState(!0)\n      : (actionNode.isTransition = !1);\n    setState(actionNode);\n    setPendingState = actionQueue.pending;\n    null === setPendingState\n      ? ((actionNode.next = actionQueue.pending = actionNode),\n        runActionStateAction(actionQueue, actionNode))\n      : ((actionNode.next = setPendingState.next),\n        (actionQueue.pending = setPendingState.next = actionNode));\n  }\n}\nfunction runActionStateAction(actionQueue, node) {\n  var action = node.action,\n    payload = node.payload,\n    prevState = actionQueue.state;\n  if (node.isTransition) {\n    var prevTransition = ReactSharedInternals.T,\n      currentTransition = {};\n    ReactSharedInternals.T = currentTransition;\n    try {\n      var returnValue = action(prevState, payload),\n        onStartTransitionFinish = ReactSharedInternals.S;\n      null !== onStartTransitionFinish &&\n        onStartTransitionFinish(currentTransition, returnValue);\n      handleActionReturnValue(actionQueue, node, returnValue);\n    } catch (error) {\n      onActionError(actionQueue, node, error);\n    } finally {\n      ReactSharedInternals.T = prevTransition;\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$60) {\n      onActionError(actionQueue, node, error$60);\n    }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n  null !== returnValue &&\n  \"object\" === typeof returnValue &&\n  \"function\" === typeof returnValue.then\n    ? returnValue.then(\n        function (nextState) {\n          onActionSuccess(actionQueue, node, nextState);\n        },\n        function (error) {\n          return onActionError(actionQueue, node, error);\n        }\n      )\n    : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n  actionNode.status = \"fulfilled\";\n  actionNode.value = nextState;\n  notifyActionListeners(actionNode);\n  actionQueue.state = nextState;\n  actionNode = actionQueue.pending;\n  null !== actionNode &&\n    ((nextState = actionNode.next),\n    nextState === actionNode\n      ? (actionQueue.pending = null)\n      : ((nextState = nextState.next),\n        (actionNode.next = nextState),\n        runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n  var last = actionQueue.pending;\n  actionQueue.pending = null;\n  if (null !== last) {\n    last = last.next;\n    do\n      (actionNode.status = \"rejected\"),\n        (actionNode.reason = error),\n        notifyActionListeners(actionNode),\n        (actionNode = actionNode.next);\n    while (actionNode !== last);\n  }\n  actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n  actionNode = actionNode.listeners;\n  for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n  return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n  if (isHydrating) {\n    var ssrFormState = workInProgressRoot.formState;\n    if (null !== ssrFormState) {\n      a: {\n        var JSCompiler_inline_result = currentlyRenderingFiber$1;\n        if (isHydrating) {\n          if (nextHydratableInstance) {\n            b: {\n              var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n              for (\n                var inRootOrSingleton = rootOrSingletonContext;\n                8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n              ) {\n                if (!inRootOrSingleton) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n                JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n                  JSCompiler_inline_result$jscomp$0.nextSibling\n                );\n                if (null === JSCompiler_inline_result$jscomp$0) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n              }\n              inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n              JSCompiler_inline_result$jscomp$0 =\n                \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n                  ? JSCompiler_inline_result$jscomp$0\n                  : null;\n            }\n            if (JSCompiler_inline_result$jscomp$0) {\n              nextHydratableInstance = getNextHydratable(\n                JSCompiler_inline_result$jscomp$0.nextSibling\n              );\n              JSCompiler_inline_result =\n                \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n              break a;\n            }\n          }\n          throwOnHydrationMismatch(JSCompiler_inline_result);\n        }\n        JSCompiler_inline_result = !1;\n      }\n      JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n    }\n  }\n  ssrFormState = mountWorkInProgressHook();\n  ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n  JSCompiler_inline_result = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: actionStateReducer,\n    lastRenderedState: initialStateProp\n  };\n  ssrFormState.queue = JSCompiler_inline_result;\n  ssrFormState = dispatchSetState.bind(\n    null,\n    currentlyRenderingFiber$1,\n    JSCompiler_inline_result\n  );\n  JSCompiler_inline_result.dispatch = ssrFormState;\n  JSCompiler_inline_result = mountStateImpl(!1);\n  inRootOrSingleton = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber$1,\n    !1,\n    JSCompiler_inline_result.queue\n  );\n  JSCompiler_inline_result = mountWorkInProgressHook();\n  JSCompiler_inline_result$jscomp$0 = {\n    state: initialStateProp,\n    dispatch: null,\n    action: action,\n    pending: null\n  };\n  JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n  ssrFormState = dispatchActionState.bind(\n    null,\n    currentlyRenderingFiber$1,\n    JSCompiler_inline_result$jscomp$0,\n    inRootOrSingleton,\n    ssrFormState\n  );\n  JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n  JSCompiler_inline_result.memoizedState = action;\n  return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n  var stateHook = updateWorkInProgressHook();\n  return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n  currentStateHook = updateReducerImpl(\n    stateHook,\n    currentStateHook,\n    actionStateReducer\n  )[0];\n  stateHook = updateReducer(basicStateReducer)[0];\n  currentStateHook =\n    \"object\" === typeof currentStateHook &&\n    null !== currentStateHook &&\n    \"function\" === typeof currentStateHook.then\n      ? useThenable(currentStateHook)\n      : currentStateHook;\n  var actionQueueHook = updateWorkInProgressHook(),\n    actionQueue = actionQueueHook.queue,\n    dispatch = actionQueue.dispatch;\n  action !== actionQueueHook.memoizedState &&\n    ((currentlyRenderingFiber$1.flags |= 2048),\n    pushEffect(\n      9,\n      actionStateActionEffect.bind(null, actionQueue, action),\n      { destroy: void 0 },\n      null\n    ));\n  return [currentStateHook, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n  actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n  var stateHook = updateWorkInProgressHook(),\n    currentStateHook = currentHook;\n  if (null !== currentStateHook)\n    return updateActionStateImpl(stateHook, currentStateHook, action);\n  updateWorkInProgressHook();\n  stateHook = stateHook.memoizedState;\n  currentStateHook = updateWorkInProgressHook();\n  var dispatch = currentStateHook.queue.dispatch;\n  currentStateHook.memoizedState = action;\n  return [stateHook, dispatch, !1];\n}\nfunction pushEffect(tag, create, inst, deps) {\n  tag = { tag: tag, create: create, inst: inst, deps: deps, next: null };\n  create = currentlyRenderingFiber$1.updateQueue;\n  null === create &&\n    ((create = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber$1.updateQueue = create));\n  inst = create.lastEffect;\n  null === inst\n    ? (create.lastEffect = tag.next = tag)\n    : ((deps = inst.next),\n      (inst.next = tag),\n      (tag.next = deps),\n      (create.lastEffect = tag));\n  return tag;\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(\n    1 | hookFlags,\n    create,\n    { destroy: void 0 },\n    void 0 === deps ? null : deps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var inst = hook.memoizedState.inst;\n  null !== currentHook &&\n  null !== deps &&\n  areHookInputsEqual(deps, currentHook.memoizedState.deps)\n    ? (hook.memoizedState = pushEffect(hookFlags, create, inst, deps))\n    : ((currentlyRenderingFiber$1.flags |= fiberFlags),\n      (hook.memoizedState = pushEffect(1 | hookFlags, create, inst, deps)));\n}\nfunction mountEffect(create, deps) {\n  mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n  updateEffectImpl(2048, 8, create, deps);\n}\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref) {\n    create = create();\n    var refCleanup = ref(create);\n    return function () {\n      \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n    };\n  }\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function () {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  prevState = nextCreate();\n  if (shouldDoubleInvokeUserFnsInHooksDEV) {\n    setIsStrictModeForDevtools(!0);\n    try {\n      nextCreate();\n    } finally {\n      setIsStrictModeForDevtools(!1);\n    }\n  }\n  hook.memoizedState = [prevState, deps];\n  return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n  if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n    return (hook.memoizedState = value);\n  hook.memoizedState = initialValue;\n  hook = requestDeferredLane();\n  currentlyRenderingFiber$1.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n  if (objectIs(value, prevValue)) return value;\n  if (null !== currentTreeHiddenStackCursor.current)\n    return (\n      (hook = mountDeferredValueImpl(hook, value, initialValue)),\n      objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n      hook\n    );\n  if (0 === (renderLanes & 42))\n    return (didReceiveUpdate = !0), (hook.memoizedState = value);\n  hook = requestDeferredLane();\n  currentlyRenderingFiber$1.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  ReactDOMSharedInternals.p =\n    0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n  try {\n    var returnValue = callback(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    if (\n      null !== returnValue &&\n      \"object\" === typeof returnValue &&\n      \"function\" === typeof returnValue.then\n    ) {\n      var thenableForFinishedState = chainThenableValue(\n        returnValue,\n        finishedState\n      );\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        thenableForFinishedState,\n        requestUpdateLane(fiber)\n      );\n    } else\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        finishedState,\n        requestUpdateLane(fiber)\n      );\n  } catch (error) {\n    dispatchSetStateInternal(\n      fiber,\n      queue,\n      { then: function () {}, status: \"rejected\", reason: error },\n      requestUpdateLane()\n    );\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction noop$2() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n  if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n  var queue = ensureFormComponentIsStateful(formFiber).queue;\n  startTransition(\n    formFiber,\n    queue,\n    pendingState,\n    sharedNotPendingObject,\n    null === action\n      ? noop$2\n      : function () {\n          requestFormReset$1(formFiber);\n          return action(formData);\n        }\n  );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n  var existingStateHook = formFiber.memoizedState;\n  if (null !== existingStateHook) return existingStateHook;\n  existingStateHook = {\n    memoizedState: sharedNotPendingObject,\n    baseState: sharedNotPendingObject,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: sharedNotPendingObject\n    },\n    next: null\n  };\n  var initialResetState = {};\n  existingStateHook.next = {\n    memoizedState: initialResetState,\n    baseState: initialResetState,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: initialResetState\n    },\n    next: null\n  };\n  formFiber.memoizedState = existingStateHook;\n  formFiber = formFiber.alternate;\n  null !== formFiber && (formFiber.memoizedState = existingStateHook);\n  return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n  var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;\n  dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());\n}\nfunction useHostTransitionStatus() {\n  return readContext(HostTransitionContext);\n}\nfunction updateId() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n  for (var provider = fiber.return; null !== provider; ) {\n    switch (provider.tag) {\n      case 24:\n      case 3:\n        var lane = requestUpdateLane();\n        fiber = createUpdate(lane);\n        var root$63 = enqueueUpdate(provider, fiber, lane);\n        null !== root$63 &&\n          (scheduleUpdateOnFiber(root$63, provider, lane),\n          entangleTransitions(root$63, provider, lane));\n        provider = { cache: createCache() };\n        fiber.payload = provider;\n        return;\n    }\n    provider = provider.return;\n  }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  action = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  isRenderPhaseUpdate(fiber)\n    ? enqueueRenderPhaseUpdate(queue, action)\n    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n      null !== action &&\n        (scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n  var update = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n  else {\n    var alternate = fiber.alternate;\n    if (\n      0 === fiber.lanes &&\n      (null === alternate || 0 === alternate.lanes) &&\n      ((alternate = queue.lastRenderedReducer), null !== alternate)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = alternate(currentState, action);\n        update.hasEagerState = !0;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState))\n          return (\n            enqueueUpdate$1(fiber, queue, update, 0),\n            null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n            !1\n          );\n      } catch (error) {\n      } finally {\n      }\n    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n    if (null !== action)\n      return (\n        scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane),\n        !0\n      );\n  }\n  return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n  action = {\n    lane: 2,\n    revertLane: requestTransitionLane(),\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) {\n    if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n  } else\n    (throwIfDuringRender = enqueueConcurrentHookUpdate(\n      fiber,\n      queue,\n      action,\n      2\n    )),\n      null !== throwIfDuringRender &&\n        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return (\n    fiber === currentlyRenderingFiber$1 ||\n    (null !== alternate && alternate === currentlyRenderingFiber$1)\n  );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n    !0;\n  var pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (0 !== (lane & 4194176)) {\n    var queueLanes = queue.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    queue.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nvar ContextOnlyDispatcher = {\n  readContext: readContext,\n  use: use,\n  useCallback: throwInvalidHookError,\n  useContext: throwInvalidHookError,\n  useEffect: throwInvalidHookError,\n  useImperativeHandle: throwInvalidHookError,\n  useLayoutEffect: throwInvalidHookError,\n  useInsertionEffect: throwInvalidHookError,\n  useMemo: throwInvalidHookError,\n  useReducer: throwInvalidHookError,\n  useRef: throwInvalidHookError,\n  useState: throwInvalidHookError,\n  useDebugValue: throwInvalidHookError,\n  useDeferredValue: throwInvalidHookError,\n  useTransition: throwInvalidHookError,\n  useSyncExternalStore: throwInvalidHookError,\n  useId: throwInvalidHookError\n};\nContextOnlyDispatcher.useCacheRefresh = throwInvalidHookError;\nContextOnlyDispatcher.useMemoCache = throwInvalidHookError;\nContextOnlyDispatcher.useHostTransitionStatus = throwInvalidHookError;\nContextOnlyDispatcher.useFormState = throwInvalidHookError;\nContextOnlyDispatcher.useActionState = throwInvalidHookError;\nContextOnlyDispatcher.useOptimistic = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n  readContext: readContext,\n  use: use,\n  useCallback: function (callback, deps) {\n    mountWorkInProgressHook().memoizedState = [\n      callback,\n      void 0 === deps ? null : deps\n    ];\n    return callback;\n  },\n  useContext: readContext,\n  useEffect: mountEffect,\n  useImperativeHandle: function (ref, create, deps) {\n    deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n    mountEffectImpl(\n      4194308,\n      4,\n      imperativeHandleEffect.bind(null, create, ref),\n      deps\n    );\n  },\n  useLayoutEffect: function (create, deps) {\n    return mountEffectImpl(4194308, 4, create, deps);\n  },\n  useInsertionEffect: function (create, deps) {\n    mountEffectImpl(4, 2, create, deps);\n  },\n  useMemo: function (nextCreate, deps) {\n    var hook = mountWorkInProgressHook();\n    deps = void 0 === deps ? null : deps;\n    var nextValue = nextCreate();\n    if (shouldDoubleInvokeUserFnsInHooksDEV) {\n      setIsStrictModeForDevtools(!0);\n      try {\n        nextCreate();\n      } finally {\n        setIsStrictModeForDevtools(!1);\n      }\n    }\n    hook.memoizedState = [nextValue, deps];\n    return nextValue;\n  },\n  useReducer: function (reducer, initialArg, init) {\n    var hook = mountWorkInProgressHook();\n    if (void 0 !== init) {\n      var initialState = init(initialArg);\n      if (shouldDoubleInvokeUserFnsInHooksDEV) {\n        setIsStrictModeForDevtools(!0);\n        try {\n          init(initialArg);\n        } finally {\n          setIsStrictModeForDevtools(!1);\n        }\n      }\n    } else initialState = initialArg;\n    hook.memoizedState = hook.baseState = initialState;\n    reducer = {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: reducer,\n      lastRenderedState: initialState\n    };\n    hook.queue = reducer;\n    reducer = reducer.dispatch = dispatchReducerAction.bind(\n      null,\n      currentlyRenderingFiber$1,\n      reducer\n    );\n    return [hook.memoizedState, reducer];\n  },\n  useRef: function (initialValue) {\n    var hook = mountWorkInProgressHook();\n    initialValue = { current: initialValue };\n    return (hook.memoizedState = initialValue);\n  },\n  useState: function (initialState) {\n    initialState = mountStateImpl(initialState);\n    var queue = initialState.queue,\n      dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);\n    queue.dispatch = dispatch;\n    return [initialState.memoizedState, dispatch];\n  },\n  useDebugValue: mountDebugValue,\n  useDeferredValue: function (value, initialValue) {\n    var hook = mountWorkInProgressHook();\n    return mountDeferredValueImpl(hook, value, initialValue);\n  },\n  useTransition: function () {\n    var stateHook = mountStateImpl(!1);\n    stateHook = startTransition.bind(\n      null,\n      currentlyRenderingFiber$1,\n      stateHook.queue,\n      !0,\n      !1\n    );\n    mountWorkInProgressHook().memoizedState = stateHook;\n    return [!1, stateHook];\n  },\n  useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n    var fiber = currentlyRenderingFiber$1,\n      hook = mountWorkInProgressHook();\n    if (isHydrating) {\n      if (void 0 === getServerSnapshot)\n        throw Error(formatProdErrorMessage(407));\n      getServerSnapshot = getServerSnapshot();\n    } else {\n      getServerSnapshot = getSnapshot();\n      if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n      0 !== (workInProgressRootRenderLanes & 60) ||\n        pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n    }\n    hook.memoizedState = getServerSnapshot;\n    var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n    hook.queue = inst;\n    mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n      subscribe\n    ]);\n    fiber.flags |= 2048;\n    pushEffect(\n      9,\n      updateStoreInstance.bind(\n        null,\n        fiber,\n        inst,\n        getServerSnapshot,\n        getSnapshot\n      ),\n      { destroy: void 0 },\n      null\n    );\n    return getServerSnapshot;\n  },\n  useId: function () {\n    var hook = mountWorkInProgressHook(),\n      identifierPrefix = workInProgressRoot.identifierPrefix;\n    if (isHydrating) {\n      var JSCompiler_inline_result = treeContextOverflow;\n      var idWithLeadingBit = treeContextId;\n      JSCompiler_inline_result =\n        (\n          idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n        ).toString(32) + JSCompiler_inline_result;\n      identifierPrefix =\n        \":\" + identifierPrefix + \"R\" + JSCompiler_inline_result;\n      JSCompiler_inline_result = localIdCounter++;\n      0 < JSCompiler_inline_result &&\n        (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n      identifierPrefix += \":\";\n    } else\n      (JSCompiler_inline_result = globalClientIdCounter++),\n        (identifierPrefix =\n          \":\" +\n          identifierPrefix +\n          \"r\" +\n          JSCompiler_inline_result.toString(32) +\n          \":\");\n    return (hook.memoizedState = identifierPrefix);\n  },\n  useCacheRefresh: function () {\n    return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n      null,\n      currentlyRenderingFiber$1\n    ));\n  }\n};\nHooksDispatcherOnMount.useMemoCache = useMemoCache;\nHooksDispatcherOnMount.useHostTransitionStatus = useHostTransitionStatus;\nHooksDispatcherOnMount.useFormState = mountActionState;\nHooksDispatcherOnMount.useActionState = mountActionState;\nHooksDispatcherOnMount.useOptimistic = function (passthrough) {\n  var hook = mountWorkInProgressHook();\n  hook.memoizedState = hook.baseState = passthrough;\n  var queue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: null,\n    lastRenderedState: null\n  };\n  hook.queue = queue;\n  hook = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber$1,\n    !0,\n    queue\n  );\n  queue.dispatch = hook;\n  return [passthrough, hook];\n};\nvar HooksDispatcherOnUpdate = {\n  readContext: readContext,\n  use: use,\n  useCallback: updateCallback,\n  useContext: readContext,\n  useEffect: updateEffect,\n  useImperativeHandle: updateImperativeHandle,\n  useInsertionEffect: updateInsertionEffect,\n  useLayoutEffect: updateLayoutEffect,\n  useMemo: updateMemo,\n  useReducer: updateReducer,\n  useRef: updateRef,\n  useState: function () {\n    return updateReducer(basicStateReducer);\n  },\n  useDebugValue: mountDebugValue,\n  useDeferredValue: function (value, initialValue) {\n    var hook = updateWorkInProgressHook();\n    return updateDeferredValueImpl(\n      hook,\n      currentHook.memoizedState,\n      value,\n      initialValue\n    );\n  },\n  useTransition: function () {\n    var booleanOrThenable = updateReducer(basicStateReducer)[0],\n      start = updateWorkInProgressHook().memoizedState;\n    return [\n      \"boolean\" === typeof booleanOrThenable\n        ? booleanOrThenable\n        : useThenable(booleanOrThenable),\n      start\n    ];\n  },\n  useSyncExternalStore: updateSyncExternalStore,\n  useId: updateId\n};\nHooksDispatcherOnUpdate.useCacheRefresh = updateRefresh;\nHooksDispatcherOnUpdate.useMemoCache = useMemoCache;\nHooksDispatcherOnUpdate.useHostTransitionStatus = useHostTransitionStatus;\nHooksDispatcherOnUpdate.useFormState = updateActionState;\nHooksDispatcherOnUpdate.useActionState = updateActionState;\nHooksDispatcherOnUpdate.useOptimistic = function (passthrough, reducer) {\n  var hook = updateWorkInProgressHook();\n  return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n};\nvar HooksDispatcherOnRerender = {\n  readContext: readContext,\n  use: use,\n  useCallback: updateCallback,\n  useContext: readContext,\n  useEffect: updateEffect,\n  useImperativeHandle: updateImperativeHandle,\n  useInsertionEffect: updateInsertionEffect,\n  useLayoutEffect: updateLayoutEffect,\n  useMemo: updateMemo,\n  useReducer: rerenderReducer,\n  useRef: updateRef,\n  useState: function () {\n    return rerenderReducer(basicStateReducer);\n  },\n  useDebugValue: mountDebugValue,\n  useDeferredValue: function (value, initialValue) {\n    var hook = updateWorkInProgressHook();\n    return null === currentHook\n      ? mountDeferredValueImpl(hook, value, initialValue)\n      : updateDeferredValueImpl(\n          hook,\n          currentHook.memoizedState,\n          value,\n          initialValue\n        );\n  },\n  useTransition: function () {\n    var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n      start = updateWorkInProgressHook().memoizedState;\n    return [\n      \"boolean\" === typeof booleanOrThenable\n        ? booleanOrThenable\n        : useThenable(booleanOrThenable),\n      start\n    ];\n  },\n  useSyncExternalStore: updateSyncExternalStore,\n  useId: updateId\n};\nHooksDispatcherOnRerender.useCacheRefresh = updateRefresh;\nHooksDispatcherOnRerender.useMemoCache = useMemoCache;\nHooksDispatcherOnRerender.useHostTransitionStatus = useHostTransitionStatus;\nHooksDispatcherOnRerender.useFormState = rerenderActionState;\nHooksDispatcherOnRerender.useActionState = rerenderActionState;\nHooksDispatcherOnRerender.useOptimistic = function (passthrough, reducer) {\n  var hook = updateWorkInProgressHook();\n  if (null !== currentHook)\n    return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n  hook.baseState = passthrough;\n  return [passthrough, hook.queue.dispatch];\n};\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  isMounted: function (component) {\n    return (component = component._reactInternals)\n      ? getNearestMountedFiber(component) === component\n      : !1;\n  },\n  enqueueSetState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 1;\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 2;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    callback = enqueueUpdate(inst, update, lane);\n    null !== callback &&\n      (scheduleUpdateOnFiber(callback, inst, lane),\n      entangleTransitions(callback, inst, lane));\n  }\n};\nfunction checkShouldComponentUpdate(\n  workInProgress,\n  ctor,\n  oldProps,\n  newProps,\n  oldState,\n  newState,\n  nextContext\n) {\n  workInProgress = workInProgress.stateNode;\n  return \"function\" === typeof workInProgress.shouldComponentUpdate\n    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n    : ctor.prototype && ctor.prototype.isPureReactComponent\n      ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n      : !0;\n}\nfunction callComponentWillReceiveProps(\n  workInProgress,\n  instance,\n  newProps,\n  nextContext\n) {\n  workInProgress = instance.state;\n  \"function\" === typeof instance.componentWillReceiveProps &&\n    instance.componentWillReceiveProps(newProps, nextContext);\n  \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  instance.state !== workInProgress &&\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n  var newProps = baseProps;\n  if (\"ref\" in baseProps) {\n    newProps = {};\n    for (var propName in baseProps)\n      \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n  }\n  if ((Component = Component.defaultProps)) {\n    newProps === baseProps && (newProps = assign({}, newProps));\n    for (var propName$67 in Component)\n      void 0 === newProps[propName$67] &&\n        (newProps[propName$67] = Component[propName$67]);\n  }\n  return newProps;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction defaultOnUncaughtError(error) {\n  reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n  console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n  reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n  try {\n    var onUncaughtError = root.onUncaughtError;\n    onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n  } catch (e$68) {\n    setTimeout(function () {\n      throw e$68;\n    });\n  }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n  try {\n    var onCaughtError = root.onCaughtError;\n    onCaughtError(errorInfo.value, {\n      componentStack: errorInfo.stack,\n      errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n    });\n  } catch (e$69) {\n    setTimeout(function () {\n      throw e$69;\n    });\n  }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  lane.payload = { element: null };\n  lane.callback = function () {\n    logUncaughtError(root, errorInfo);\n  };\n  return lane;\n}\nfunction createClassErrorUpdate(lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n  if (\"function\" === typeof getDerivedStateFromError) {\n    var error = errorInfo.value;\n    update.payload = function () {\n      return getDerivedStateFromError(error);\n    };\n    update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n    };\n  }\n  var inst = fiber.stateNode;\n  null !== inst &&\n    \"function\" === typeof inst.componentDidCatch &&\n    (update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n      \"function\" !== typeof getDerivedStateFromError &&\n        (null === legacyErrorBoundariesThatAlreadyFailed\n          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n          : legacyErrorBoundariesThatAlreadyFailed.add(this));\n      var stack = errorInfo.stack;\n      this.componentDidCatch(errorInfo.value, {\n        componentStack: null !== stack ? stack : \"\"\n      });\n    });\n}\nfunction throwException(\n  root,\n  returnFiber,\n  sourceFiber,\n  value,\n  rootRenderLanes\n) {\n  sourceFiber.flags |= 32768;\n  if (\n    null !== value &&\n    \"object\" === typeof value &&\n    \"function\" === typeof value.then\n  ) {\n    returnFiber = sourceFiber.alternate;\n    null !== returnFiber &&\n      propagateParentContextChanges(\n        returnFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    sourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== sourceFiber) {\n      switch (sourceFiber.tag) {\n        case 13:\n          return (\n            null === shellBoundary\n              ? renderDidSuspendDelayIfPossible()\n              : null === sourceFiber.alternate &&\n                0 === workInProgressRootExitStatus &&\n                (workInProgressRootExitStatus = 3),\n            (sourceFiber.flags &= -257),\n            (sourceFiber.flags |= 65536),\n            (sourceFiber.lanes = rootRenderLanes),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? (sourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          return (\n            (sourceFiber.flags |= 65536),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? ((returnFiber = {\n                      transitions: null,\n                      markerInstances: null,\n                      retryQueue: new Set([value])\n                    }),\n                    (sourceFiber.updateQueue = returnFiber))\n                  : ((sourceFiber = returnFiber.retryQueue),\n                    null === sourceFiber\n                      ? (returnFiber.retryQueue = new Set([value]))\n                      : sourceFiber.add(value)),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n      }\n      throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n    }\n    attachPingListener(root, value, rootRenderLanes);\n    renderDidSuspendDelayIfPossible();\n    return !1;\n  }\n  if (isHydrating)\n    return (\n      (returnFiber = suspenseHandlerStackCursor.current),\n      null !== returnFiber\n        ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n          (returnFiber.flags |= 65536),\n          (returnFiber.lanes = rootRenderLanes),\n          value !== HydrationMismatchException &&\n            ((root = Error(formatProdErrorMessage(422), { cause: value })),\n            queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n        : (value !== HydrationMismatchException &&\n            ((returnFiber = Error(formatProdErrorMessage(423), {\n              cause: value\n            })),\n            queueHydrationError(\n              createCapturedValueAtFiber(returnFiber, sourceFiber)\n            )),\n          (root = root.current.alternate),\n          (root.flags |= 65536),\n          (rootRenderLanes &= -rootRenderLanes),\n          (root.lanes |= rootRenderLanes),\n          (value = createCapturedValueAtFiber(value, sourceFiber)),\n          (rootRenderLanes = createRootErrorUpdate(\n            root.stateNode,\n            value,\n            rootRenderLanes\n          )),\n          enqueueCapturedUpdate(root, rootRenderLanes),\n          4 !== workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 2)),\n      !1\n    );\n  var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n  wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [wrapperError])\n    : workInProgressRootConcurrentErrors.push(wrapperError);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  sourceFiber = returnFiber;\n  do {\n    switch (sourceFiber.tag) {\n      case 3:\n        return (\n          (sourceFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (sourceFiber.lanes |= root),\n          (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(sourceFiber, root),\n          !1\n        );\n      case 1:\n        if (\n          ((returnFiber = sourceFiber.type),\n          (wrapperError = sourceFiber.stateNode),\n          0 === (sourceFiber.flags & 128) &&\n            (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n              (null !== wrapperError &&\n                \"function\" === typeof wrapperError.componentDidCatch &&\n                (null === legacyErrorBoundariesThatAlreadyFailed ||\n                  !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n        )\n          return (\n            (sourceFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (sourceFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              sourceFiber,\n              value\n            ),\n            enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n            !1\n          );\n    }\n    sourceFiber = sourceFiber.return;\n  } while (null !== sourceFiber);\n  return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n  didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  workInProgress.child =\n    null === current\n      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n      : reconcileChildFibers(\n          workInProgress,\n          current.child,\n          nextChildren,\n          renderLanes\n        );\n}\nfunction updateForwardRef(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  Component = Component.render;\n  var ref = workInProgress.ref;\n  if (\"ref\" in nextProps) {\n    var propsWithoutRef = {};\n    for (var key in nextProps)\n      \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n  } else propsWithoutRef = nextProps;\n  prepareToReadContext(workInProgress);\n  nextProps = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    propsWithoutRef,\n    ref,\n    renderLanes\n  );\n  key = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && key && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n    var prevProps = type.memoizedProps;\n    Component = Component.compare;\n    Component = null !== Component ? Component : shallowEqual;\n    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null !== current) {\n    var prevProps = current.memoizedProps;\n    if (\n      shallowEqual(prevProps, nextProps) &&\n      current.ref === workInProgress.ref\n    )\n      if (\n        ((didReceiveUpdate = !1),\n        (workInProgress.pendingProps = nextProps = prevProps),\n        checkScheduledUpdateOrContext(current, renderLanes))\n      )\n        0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n      else\n        return (\n          (workInProgress.lanes = current.lanes),\n          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n        );\n  }\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    nextChildren = nextProps.children,\n    nextIsDetached = 0 !== (workInProgress.stateNode._pendingVisibility & 2),\n    prevState = null !== current ? current.memoizedState : null;\n  markRef(current, workInProgress);\n  if (\"hidden\" === nextProps.mode || nextIsDetached) {\n    if (0 !== (workInProgress.flags & 128)) {\n      nextProps =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextChildren = workInProgress.child = current.child;\n        for (nextIsDetached = 0; null !== nextChildren; )\n          (nextIsDetached =\n            nextIsDetached | nextChildren.lanes | nextChildren.childLanes),\n            (nextChildren = nextChildren.sibling);\n        workInProgress.childLanes = nextIsDetached & ~nextProps;\n      } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        nextProps,\n        renderLanes\n      );\n    }\n    if (0 !== (renderLanes & 536870912))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current &&\n          pushTransition(\n            workInProgress,\n            null !== prevState ? prevState.cachePool : null\n          ),\n        null !== prevState\n          ? pushHiddenContext(workInProgress, prevState)\n          : reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else\n      return (\n        (workInProgress.lanes = workInProgress.childLanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes\n        )\n      );\n  } else\n    null !== prevState\n      ? (pushTransition(workInProgress, prevState.cachePool),\n        pushHiddenContext(workInProgress, prevState),\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (workInProgress.memoizedState = null))\n      : (null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        reuseSuspenseHandlerOnStack(workInProgress));\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes\n) {\n  var JSCompiler_inline_result = peekCacheFromPool();\n  JSCompiler_inline_result =\n    null === JSCompiler_inline_result\n      ? null\n      : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n  workInProgress.memoizedState = {\n    baseLanes: nextBaseLanes,\n    cachePool: JSCompiler_inline_result\n  };\n  null !== current && pushTransition(workInProgress, null);\n  reuseHiddenContextOnStack();\n  pushOffscreenSuspenseHandler(workInProgress);\n  null !== current &&\n    propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n  return null;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (null === ref)\n    null !== current &&\n      null !== current.ref &&\n      (workInProgress.flags |= 2097664);\n  else {\n    if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n      throw Error(formatProdErrorMessage(284));\n    if (null === current || current.ref !== ref)\n      workInProgress.flags |= 2097664;\n  }\n}\nfunction updateFunctionComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  Component = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    void 0,\n    renderLanes\n  );\n  nextProps = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, Component, renderLanes);\n  return workInProgress.child;\n}\nfunction replayFunctionComponent(\n  current,\n  workInProgress,\n  nextProps,\n  Component,\n  secondArg,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  workInProgress.updateQueue = null;\n  nextProps = renderWithHooksAgain(\n    workInProgress,\n    Component,\n    nextProps,\n    secondArg\n  );\n  finishRenderingHooks(current);\n  Component = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && Component && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateClassComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  if (null === workInProgress.stateNode) {\n    var context = emptyContextObject,\n      contextType = Component.contextType;\n    \"object\" === typeof contextType &&\n      null !== contextType &&\n      (context = readContext(contextType));\n    context = new Component(nextProps, context);\n    workInProgress.memoizedState =\n      null !== context.state && void 0 !== context.state ? context.state : null;\n    context.updater = classComponentUpdater;\n    workInProgress.stateNode = context;\n    context._reactInternals = workInProgress;\n    context = workInProgress.stateNode;\n    context.props = nextProps;\n    context.state = workInProgress.memoizedState;\n    context.refs = {};\n    initializeUpdateQueue(workInProgress);\n    contextType = Component.contextType;\n    context.context =\n      \"object\" === typeof contextType && null !== contextType\n        ? readContext(contextType)\n        : emptyContextObject;\n    context.state = workInProgress.memoizedState;\n    contextType = Component.getDerivedStateFromProps;\n    \"function\" === typeof contextType &&\n      (applyDerivedStateFromProps(\n        workInProgress,\n        Component,\n        contextType,\n        nextProps\n      ),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof Component.getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate ||\n      (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n        \"function\" !== typeof context.componentWillMount) ||\n      ((contextType = context.state),\n      \"function\" === typeof context.componentWillMount &&\n        context.componentWillMount(),\n      \"function\" === typeof context.UNSAFE_componentWillMount &&\n        context.UNSAFE_componentWillMount(),\n      contextType !== context.state &&\n        classComponentUpdater.enqueueReplaceState(context, context.state, null),\n      processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n      suspendIfUpdateReadFromEntangledAsyncAction(),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof context.componentDidMount &&\n      (workInProgress.flags |= 4194308);\n    nextProps = !0;\n  } else if (null === current) {\n    context = workInProgress.stateNode;\n    var unresolvedOldProps = workInProgress.memoizedProps,\n      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n    context.props = oldProps;\n    var oldContext = context.context,\n      contextType$jscomp$0 = Component.contextType;\n    contextType = emptyContextObject;\n    \"object\" === typeof contextType$jscomp$0 &&\n      null !== contextType$jscomp$0 &&\n      (contextType = readContext(contextType$jscomp$0));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n    contextType$jscomp$0 =\n      \"function\" === typeof getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate;\n    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n    contextType$jscomp$0 ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((unresolvedOldProps || oldContext !== contextType) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          contextType\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    oldContext = workInProgress.memoizedState;\n    unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps,\n            nextProps\n          ),\n          (oldContext = workInProgress.memoizedState)),\n        (oldProps =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            oldProps,\n            nextProps,\n            oldState,\n            oldContext,\n            contextType\n          ))\n          ? (contextType$jscomp$0 ||\n              (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n                \"function\" !== typeof context.componentWillMount) ||\n              (\"function\" === typeof context.componentWillMount &&\n                context.componentWillMount(),\n              \"function\" === typeof context.UNSAFE_componentWillMount &&\n                context.UNSAFE_componentWillMount()),\n            \"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308))\n          : (\"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (context.props = nextProps),\n        (context.state = oldContext),\n        (context.context = contextType),\n        (nextProps = oldProps))\n      : (\"function\" === typeof context.componentDidMount &&\n          (workInProgress.flags |= 4194308),\n        (nextProps = !1));\n  } else {\n    context = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    contextType = workInProgress.memoizedProps;\n    contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n    context.props = contextType$jscomp$0;\n    getDerivedStateFromProps = workInProgress.pendingProps;\n    oldState = context.context;\n    oldContext = Component.contextType;\n    oldProps = emptyContextObject;\n    \"object\" === typeof oldContext &&\n      null !== oldContext &&\n      (oldProps = readContext(oldContext));\n    unresolvedOldProps = Component.getDerivedStateFromProps;\n    (oldContext =\n      \"function\" === typeof unresolvedOldProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          oldProps\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    var newState = workInProgress.memoizedState;\n    contextType !== getDerivedStateFromProps ||\n    oldState !== newState ||\n    hasForceUpdate ||\n    (null !== current &&\n      null !== current.dependencies &&\n      checkIfContextChanged(current.dependencies))\n      ? (\"function\" === typeof unresolvedOldProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            unresolvedOldProps,\n            nextProps\n          ),\n          (newState = workInProgress.memoizedState)),\n        (contextType$jscomp$0 =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType$jscomp$0,\n            nextProps,\n            oldState,\n            newState,\n            oldProps\n          ) ||\n          (null !== current &&\n            null !== current.dependencies &&\n            checkIfContextChanged(current.dependencies)))\n          ? (oldContext ||\n              (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof context.componentWillUpdate) ||\n              (\"function\" === typeof context.componentWillUpdate &&\n                context.componentWillUpdate(nextProps, newState, oldProps),\n              \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n                context.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldProps\n                )),\n            \"function\" === typeof context.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof context.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 1024))\n          : (\"function\" !== typeof context.componentDidUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 1024),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (context.props = nextProps),\n        (context.state = newState),\n        (context.context = oldProps),\n        (nextProps = contextType$jscomp$0))\n      : (\"function\" !== typeof context.componentDidUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 1024),\n        (nextProps = !1));\n  }\n  context = nextProps;\n  markRef(current, workInProgress);\n  nextProps = 0 !== (workInProgress.flags & 128);\n  context || nextProps\n    ? ((context = workInProgress.stateNode),\n      (Component =\n        nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n          ? null\n          : context.render()),\n      (workInProgress.flags |= 1),\n      null !== current && nextProps\n        ? ((workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            current.child,\n            null,\n            renderLanes\n          )),\n          (workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            null,\n            Component,\n            renderLanes\n          )))\n        : reconcileChildren(current, workInProgress, Component, renderLanes),\n      (workInProgress.memoizedState = context.state),\n      (current = workInProgress.child))\n    : (current = bailoutOnAlreadyFinishedWork(\n        current,\n        workInProgress,\n        renderLanes\n      ));\n  return current;\n}\nfunction mountHostRootWithoutHydrating(\n  current,\n  workInProgress,\n  nextChildren,\n  renderLanes\n) {\n  resetHydrationState();\n  workInProgress.flags |= 256;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nvar SUSPENDED_MARKER = { dehydrated: null, treeContext: null, retryLane: 0 };\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n  current,\n  primaryTreeDidDefer,\n  renderLanes\n) {\n  current = null !== current ? current.childLanes & ~renderLanes : 0;\n  primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n  return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    showFallback = !1,\n    didSuspend = 0 !== (workInProgress.flags & 128),\n    JSCompiler_temp;\n  (JSCompiler_temp = didSuspend) ||\n    (JSCompiler_temp =\n      null !== current && null === current.memoizedState\n        ? !1\n        : 0 !== (suspenseStackCursor.current & 2));\n  JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n  JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n  workInProgress.flags &= -33;\n  if (null === current) {\n    if (isHydrating) {\n      showFallback\n        ? pushPrimaryTreeSuspenseHandler(workInProgress)\n        : reuseSuspenseHandlerOnStack(workInProgress);\n      if (isHydrating) {\n        var nextInstance = nextHydratableInstance,\n          JSCompiler_temp$jscomp$0;\n        if ((JSCompiler_temp$jscomp$0 = nextInstance)) {\n          c: {\n            JSCompiler_temp$jscomp$0 = nextInstance;\n            for (\n              nextInstance = rootOrSingletonContext;\n              8 !== JSCompiler_temp$jscomp$0.nodeType;\n\n            ) {\n              if (!nextInstance) {\n                nextInstance = null;\n                break c;\n              }\n              JSCompiler_temp$jscomp$0 = getNextHydratable(\n                JSCompiler_temp$jscomp$0.nextSibling\n              );\n              if (null === JSCompiler_temp$jscomp$0) {\n                nextInstance = null;\n                break c;\n              }\n            }\n            nextInstance = JSCompiler_temp$jscomp$0;\n          }\n          null !== nextInstance\n            ? ((workInProgress.memoizedState = {\n                dehydrated: nextInstance,\n                treeContext:\n                  null !== treeContextProvider\n                    ? { id: treeContextId, overflow: treeContextOverflow }\n                    : null,\n                retryLane: 536870912\n              }),\n              (JSCompiler_temp$jscomp$0 = createFiberImplClass(\n                18,\n                null,\n                null,\n                0\n              )),\n              (JSCompiler_temp$jscomp$0.stateNode = nextInstance),\n              (JSCompiler_temp$jscomp$0.return = workInProgress),\n              (workInProgress.child = JSCompiler_temp$jscomp$0),\n              (hydrationParentFiber = workInProgress),\n              (nextHydratableInstance = null),\n              (JSCompiler_temp$jscomp$0 = !0))\n            : (JSCompiler_temp$jscomp$0 = !1);\n        }\n        JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);\n      }\n      nextInstance = workInProgress.memoizedState;\n      if (\n        null !== nextInstance &&\n        ((nextInstance = nextInstance.dehydrated), null !== nextInstance)\n      )\n        return (\n          \"$!\" === nextInstance.data\n            ? (workInProgress.lanes = 16)\n            : (workInProgress.lanes = 536870912),\n          null\n        );\n      popSuspenseHandler(workInProgress);\n    }\n    nextInstance = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (showFallback = workInProgress.mode),\n        (nextInstance = mountWorkInProgressOffscreenFiber(\n          { mode: \"hidden\", children: nextInstance },\n          showFallback\n        )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (nextInstance.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (nextInstance.sibling = nextProps),\n        (workInProgress.child = nextInstance),\n        (showFallback = workInProgress.child),\n        (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n        (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        nextProps\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, nextInstance);\n  }\n  JSCompiler_temp$jscomp$0 = current.memoizedState;\n  if (\n    null !== JSCompiler_temp$jscomp$0 &&\n    ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),\n    null !== nextInstance)\n  ) {\n    if (didSuspend)\n      workInProgress.flags & 256\n        ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n          (workInProgress.flags &= -257),\n          (workInProgress = retrySuspenseComponentWithoutHydrating(\n            current,\n            workInProgress,\n            renderLanes\n          )))\n        : null !== workInProgress.memoizedState\n          ? (reuseSuspenseHandlerOnStack(workInProgress),\n            (workInProgress.child = current.child),\n            (workInProgress.flags |= 128),\n            (workInProgress = null))\n          : (reuseSuspenseHandlerOnStack(workInProgress),\n            (showFallback = nextProps.fallback),\n            (nextInstance = workInProgress.mode),\n            (nextProps = mountWorkInProgressOffscreenFiber(\n              { mode: \"visible\", children: nextProps.children },\n              nextInstance\n            )),\n            (showFallback = createFiberFromFragment(\n              showFallback,\n              nextInstance,\n              renderLanes,\n              null\n            )),\n            (showFallback.flags |= 2),\n            (nextProps.return = workInProgress),\n            (showFallback.return = workInProgress),\n            (nextProps.sibling = showFallback),\n            (workInProgress.child = nextProps),\n            reconcileChildFibers(\n              workInProgress,\n              current.child,\n              null,\n              renderLanes\n            ),\n            (nextProps = workInProgress.child),\n            (nextProps.memoizedState =\n              mountSuspenseOffscreenState(renderLanes)),\n            (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n              current,\n              JSCompiler_temp,\n              renderLanes\n            )),\n            (workInProgress.memoizedState = SUSPENDED_MARKER),\n            (workInProgress = showFallback));\n    else if (\n      (pushPrimaryTreeSuspenseHandler(workInProgress),\n      \"$!\" === nextInstance.data)\n    ) {\n      JSCompiler_temp =\n        nextInstance.nextSibling && nextInstance.nextSibling.dataset;\n      if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n      JSCompiler_temp = digest;\n      nextProps = Error(formatProdErrorMessage(419));\n      nextProps.stack = \"\";\n      nextProps.digest = JSCompiler_temp;\n      queueHydrationError({ value: nextProps, source: null, stack: null });\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else if (\n      (didReceiveUpdate ||\n        propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n      (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n      didReceiveUpdate || JSCompiler_temp)\n    ) {\n      JSCompiler_temp = workInProgressRoot;\n      if (null !== JSCompiler_temp) {\n        nextProps = renderLanes & -renderLanes;\n        if (0 !== (nextProps & 42)) nextProps = 1;\n        else\n          switch (nextProps) {\n            case 2:\n              nextProps = 1;\n              break;\n            case 8:\n              nextProps = 4;\n              break;\n            case 32:\n              nextProps = 16;\n              break;\n            case 128:\n            case 256:\n            case 512:\n            case 1024:\n            case 2048:\n            case 4096:\n            case 8192:\n            case 16384:\n            case 32768:\n            case 65536:\n            case 131072:\n            case 262144:\n            case 524288:\n            case 1048576:\n            case 2097152:\n            case 4194304:\n            case 8388608:\n            case 16777216:\n            case 33554432:\n              nextProps = 64;\n              break;\n            case 268435456:\n              nextProps = 134217728;\n              break;\n            default:\n              nextProps = 0;\n          }\n        nextProps =\n          0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n            ? 0\n            : nextProps;\n        if (0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)\n          throw (\n            ((JSCompiler_temp$jscomp$0.retryLane = nextProps),\n            enqueueConcurrentRenderForLane(current, nextProps),\n            scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n            SelectiveHydrationException)\n          );\n      }\n      \"$?\" === nextInstance.data || renderDidSuspendDelayIfPossible();\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      \"$?\" === nextInstance.data\n        ? ((workInProgress.flags |= 128),\n          (workInProgress.child = current.child),\n          (workInProgress = retryDehydratedSuspenseBoundary.bind(\n            null,\n            current\n          )),\n          (nextInstance._reactRetry = workInProgress),\n          (workInProgress = null))\n        : ((current = JSCompiler_temp$jscomp$0.treeContext),\n          (nextHydratableInstance = getNextHydratable(\n            nextInstance.nextSibling\n          )),\n          (hydrationParentFiber = workInProgress),\n          (isHydrating = !0),\n          (hydrationErrors = null),\n          (rootOrSingletonContext = !1),\n          null !== current &&\n            ((idStack[idStackIndex++] = treeContextId),\n            (idStack[idStackIndex++] = treeContextOverflow),\n            (idStack[idStackIndex++] = treeContextProvider),\n            (treeContextId = current.id),\n            (treeContextOverflow = current.overflow),\n            (treeContextProvider = workInProgress)),\n          (workInProgress = mountSuspensePrimaryChildren(\n            workInProgress,\n            nextProps.children\n          )),\n          (workInProgress.flags |= 4096));\n    return workInProgress;\n  }\n  if (showFallback)\n    return (\n      reuseSuspenseHandlerOnStack(workInProgress),\n      (showFallback = nextProps.fallback),\n      (nextInstance = workInProgress.mode),\n      (JSCompiler_temp$jscomp$0 = current.child),\n      (digest = JSCompiler_temp$jscomp$0.sibling),\n      (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {\n        mode: \"hidden\",\n        children: nextProps.children\n      })),\n      (nextProps.subtreeFlags =\n        JSCompiler_temp$jscomp$0.subtreeFlags & 31457280),\n      null !== digest\n        ? (showFallback = createWorkInProgress(digest, showFallback))\n        : ((showFallback = createFiberFromFragment(\n            showFallback,\n            nextInstance,\n            renderLanes,\n            null\n          )),\n          (showFallback.flags |= 2)),\n      (showFallback.return = workInProgress),\n      (nextProps.return = workInProgress),\n      (nextProps.sibling = showFallback),\n      (workInProgress.child = nextProps),\n      (nextProps = showFallback),\n      (showFallback = workInProgress.child),\n      (nextInstance = current.child.memoizedState),\n      null === nextInstance\n        ? (nextInstance = mountSuspenseOffscreenState(renderLanes))\n        : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),\n          null !== JSCompiler_temp$jscomp$0\n            ? ((digest = CacheContext._currentValue),\n              (JSCompiler_temp$jscomp$0 =\n                JSCompiler_temp$jscomp$0.parent !== digest\n                  ? { parent: digest, pool: digest }\n                  : JSCompiler_temp$jscomp$0))\n            : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),\n          (nextInstance = {\n            baseLanes: nextInstance.baseLanes | renderLanes,\n            cachePool: JSCompiler_temp$jscomp$0\n          })),\n      (showFallback.memoizedState = nextInstance),\n      (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n        current,\n        JSCompiler_temp,\n        renderLanes\n      )),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      nextProps\n    );\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  renderLanes = current.child;\n  current = renderLanes.sibling;\n  renderLanes = createWorkInProgress(renderLanes, {\n    mode: \"visible\",\n    children: nextProps.children\n  });\n  renderLanes.return = workInProgress;\n  renderLanes.sibling = null;\n  null !== current &&\n    ((JSCompiler_temp = workInProgress.deletions),\n    null === JSCompiler_temp\n      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n      : JSCompiler_temp.push(current));\n  workInProgress.child = renderLanes;\n  workInProgress.memoizedState = null;\n  return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n  primaryChildren = mountWorkInProgressOffscreenFiber(\n    { mode: \"visible\", children: primaryChildren },\n    workInProgress.mode\n  );\n  primaryChildren.return = workInProgress;\n  return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  return createFiberFromOffscreen(offscreenProps, mode, 0, null);\n}\nfunction retrySuspenseComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountSuspensePrimaryChildren(\n    workInProgress,\n    workInProgress.pendingProps.children\n  );\n  current.flags |= 2;\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n  nextProps = suspenseStackCursor.current;\n  if (0 !== (nextProps & 2))\n    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n  else {\n    if (null !== current && 0 !== (current.flags & 128))\n      a: for (current = workInProgress.child; null !== current; ) {\n        if (13 === current.tag)\n          null !== current.memoizedState &&\n            scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (19 === current.tag)\n          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (null !== current.child) {\n          current.child.return = current;\n          current = current.child;\n          continue;\n        }\n        if (current === workInProgress) break a;\n        for (; null === current.sibling; ) {\n          if (null === current.return || current.return === workInProgress)\n            break a;\n          current = current.return;\n        }\n        current.sibling.return = current.return;\n        current = current.sibling;\n      }\n    nextProps &= 1;\n  }\n  push(suspenseStackCursor, nextProps);\n  switch (revealOrder) {\n    case \"forwards\":\n      renderLanes = workInProgress.child;\n      for (revealOrder = null; null !== renderLanes; )\n        (current = renderLanes.alternate),\n          null !== current &&\n            null === findFirstSuspended(current) &&\n            (revealOrder = renderLanes),\n          (renderLanes = renderLanes.sibling);\n      renderLanes = revealOrder;\n      null === renderLanes\n        ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n        : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n      initSuspenseListRenderState(\n        workInProgress,\n        !1,\n        revealOrder,\n        renderLanes,\n        tailMode\n      );\n      break;\n    case \"backwards\":\n      renderLanes = null;\n      revealOrder = workInProgress.child;\n      for (workInProgress.child = null; null !== revealOrder; ) {\n        current = revealOrder.alternate;\n        if (null !== current && null === findFirstSuspended(current)) {\n          workInProgress.child = revealOrder;\n          break;\n        }\n        current = revealOrder.sibling;\n        revealOrder.sibling = renderLanes;\n        renderLanes = revealOrder;\n        revealOrder = current;\n      }\n      initSuspenseListRenderState(\n        workInProgress,\n        !0,\n        renderLanes,\n        null,\n        tailMode\n      );\n      break;\n    case \"together\":\n      initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n      break;\n    default:\n      workInProgress.memoizedState = null;\n  }\n  return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  null !== current && (workInProgress.dependencies = current.dependencies);\n  workInProgressRootSkippedLanes |= workInProgress.lanes;\n  if (0 === (renderLanes & workInProgress.childLanes))\n    if (null !== current) {\n      if (\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        0 === (renderLanes & workInProgress.childLanes))\n      )\n        return null;\n    } else return null;\n  if (null !== current && workInProgress.child !== current.child)\n    throw Error(formatProdErrorMessage(153));\n  if (null !== workInProgress.child) {\n    current = workInProgress.child;\n    renderLanes = createWorkInProgress(current, current.pendingProps);\n    workInProgress.child = renderLanes;\n    for (renderLanes.return = workInProgress; null !== current.sibling; )\n      (current = current.sibling),\n        (renderLanes = renderLanes.sibling =\n          createWorkInProgress(current, current.pendingProps)),\n        (renderLanes.return = workInProgress);\n    renderLanes.sibling = null;\n  }\n  return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  if (0 !== (current.lanes & renderLanes)) return !0;\n  current = current.dependencies;\n  return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  switch (workInProgress.tag) {\n    case 3:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n      resetHydrationState();\n      break;\n    case 27:\n    case 5:\n      pushHostContext(workInProgress);\n      break;\n    case 4:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n    case 10:\n      pushProvider(\n        workInProgress,\n        workInProgress.type,\n        workInProgress.memoizedProps.value\n      );\n      break;\n    case 13:\n      var state = workInProgress.memoizedState;\n      if (null !== state) {\n        if (null !== state.dehydrated)\n          return (\n            pushPrimaryTreeSuspenseHandler(workInProgress),\n            (workInProgress.flags |= 128),\n            null\n          );\n        if (0 !== (renderLanes & workInProgress.child.childLanes))\n          return updateSuspenseComponent(current, workInProgress, renderLanes);\n        pushPrimaryTreeSuspenseHandler(workInProgress);\n        current = bailoutOnAlreadyFinishedWork(\n          current,\n          workInProgress,\n          renderLanes\n        );\n        return null !== current ? current.sibling : null;\n      }\n      pushPrimaryTreeSuspenseHandler(workInProgress);\n      break;\n    case 19:\n      var didSuspendBefore = 0 !== (current.flags & 128);\n      state = 0 !== (renderLanes & workInProgress.childLanes);\n      state ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (didSuspendBefore) {\n        if (state)\n          return updateSuspenseListComponent(\n            current,\n            workInProgress,\n            renderLanes\n          );\n        workInProgress.flags |= 128;\n      }\n      didSuspendBefore = workInProgress.memoizedState;\n      null !== didSuspendBefore &&\n        ((didSuspendBefore.rendering = null),\n        (didSuspendBefore.tail = null),\n        (didSuspendBefore.lastEffect = null));\n      push(suspenseStackCursor, suspenseStackCursor.current);\n      if (state) break;\n      else return null;\n    case 22:\n    case 23:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(current, workInProgress, renderLanes)\n      );\n    case 24:\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n  }\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n  if (null !== current)\n    if (current.memoizedProps !== workInProgress.pendingProps)\n      didReceiveUpdate = !0;\n    else {\n      if (\n        !checkScheduledUpdateOrContext(current, renderLanes) &&\n        0 === (workInProgress.flags & 128)\n      )\n        return (\n          (didReceiveUpdate = !1),\n          attemptEarlyBailoutIfNoScheduledUpdate(\n            current,\n            workInProgress,\n            renderLanes\n          )\n        );\n      didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n    }\n  else\n    (didReceiveUpdate = !1),\n      isHydrating &&\n        0 !== (workInProgress.flags & 1048576) &&\n        pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 16:\n      a: {\n        current = workInProgress.pendingProps;\n        var lazyComponent = workInProgress.elementType,\n          init = lazyComponent._init;\n        lazyComponent = init(lazyComponent._payload);\n        workInProgress.type = lazyComponent;\n        if (\"function\" === typeof lazyComponent)\n          shouldConstruct(lazyComponent)\n            ? ((current = resolveClassComponentProps(lazyComponent, current)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== lazyComponent && null !== lazyComponent)\n            if (\n              ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)\n            ) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            } else if (init === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            }\n          workInProgress =\n            getComponentNameFromType(lazyComponent) || lazyComponent;\n          throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n        }\n      }\n      return workInProgress;\n    case 0:\n      return updateFunctionComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 1:\n      return (\n        (lazyComponent = workInProgress.type),\n        (init = resolveClassComponentProps(\n          lazyComponent,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          lazyComponent,\n          init,\n          renderLanes\n        )\n      );\n    case 3:\n      a: {\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        );\n        if (null === current) throw Error(formatProdErrorMessage(387));\n        var nextProps = workInProgress.pendingProps;\n        init = workInProgress.memoizedState;\n        lazyComponent = init.element;\n        cloneUpdateQueue(current, workInProgress);\n        processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n        var nextState = workInProgress.memoizedState;\n        nextProps = nextState.cache;\n        pushProvider(workInProgress, CacheContext, nextProps);\n        nextProps !== init.cache &&\n          propagateContextChanges(\n            workInProgress,\n            [CacheContext],\n            renderLanes,\n            !0\n          );\n        suspendIfUpdateReadFromEntangledAsyncAction();\n        nextProps = nextState.element;\n        if (init.isDehydrated)\n          if (\n            ((init = {\n              element: nextProps,\n              isDehydrated: !1,\n              cache: nextState.cache\n            }),\n            (workInProgress.updateQueue.baseState = init),\n            (workInProgress.memoizedState = init),\n            workInProgress.flags & 256)\n          ) {\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              nextProps,\n              renderLanes\n            );\n            break a;\n          } else if (nextProps !== lazyComponent) {\n            lazyComponent = createCapturedValueAtFiber(\n              Error(formatProdErrorMessage(424)),\n              workInProgress\n            );\n            queueHydrationError(lazyComponent);\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              nextProps,\n              renderLanes\n            );\n            break a;\n          } else\n            for (\n              nextHydratableInstance = getNextHydratable(\n                workInProgress.stateNode.containerInfo.firstChild\n              ),\n                hydrationParentFiber = workInProgress,\n                isHydrating = !0,\n                hydrationErrors = null,\n                rootOrSingletonContext = !0,\n                renderLanes = mountChildFibers(\n                  workInProgress,\n                  null,\n                  nextProps,\n                  renderLanes\n                ),\n                workInProgress.child = renderLanes;\n              renderLanes;\n\n            )\n              (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n                (renderLanes = renderLanes.sibling);\n        else {\n          resetHydrationState();\n          if (nextProps === lazyComponent) {\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            break a;\n          }\n          reconcileChildren(current, workInProgress, nextProps, renderLanes);\n        }\n        workInProgress = workInProgress.child;\n      }\n      return workInProgress;\n    case 26:\n      return (\n        markRef(current, workInProgress),\n        null === current\n          ? (renderLanes = getResource(\n              workInProgress.type,\n              null,\n              workInProgress.pendingProps,\n              null\n            ))\n            ? (workInProgress.memoizedState = renderLanes)\n            : isHydrating ||\n              ((renderLanes = workInProgress.type),\n              (current = workInProgress.pendingProps),\n              (lazyComponent = getOwnerDocumentFromRootContainer(\n                rootInstanceStackCursor.current\n              ).createElement(renderLanes)),\n              (lazyComponent[internalInstanceKey] = workInProgress),\n              (lazyComponent[internalPropsKey] = current),\n              setInitialProperties(lazyComponent, renderLanes, current),\n              markNodeAsHoistable(lazyComponent),\n              (workInProgress.stateNode = lazyComponent))\n          : (workInProgress.memoizedState = getResource(\n              workInProgress.type,\n              current.memoizedProps,\n              workInProgress.pendingProps,\n              current.memoizedState\n            )),\n        null\n      );\n    case 27:\n      return (\n        pushHostContext(workInProgress),\n        null === current &&\n          isHydrating &&\n          ((lazyComponent = workInProgress.stateNode =\n            resolveSingletonInstance(\n              workInProgress.type,\n              workInProgress.pendingProps,\n              rootInstanceStackCursor.current\n            )),\n          (hydrationParentFiber = workInProgress),\n          (rootOrSingletonContext = !0),\n          (nextHydratableInstance = getNextHydratable(\n            lazyComponent.firstChild\n          ))),\n        (lazyComponent = workInProgress.pendingProps.children),\n        null !== current || isHydrating\n          ? reconcileChildren(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            )\n          : (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            )),\n        markRef(current, workInProgress),\n        workInProgress.child\n      );\n    case 5:\n      if (null === current && isHydrating) {\n        if ((init = lazyComponent = nextHydratableInstance))\n          (lazyComponent = canHydrateInstance(\n            lazyComponent,\n            workInProgress.type,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== lazyComponent\n              ? ((workInProgress.stateNode = lazyComponent),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = getNextHydratable(\n                  lazyComponent.firstChild\n                )),\n                (rootOrSingletonContext = !1),\n                (init = !0))\n              : (init = !1);\n        init || throwOnHydrationMismatch(workInProgress);\n      }\n      pushHostContext(workInProgress);\n      init = workInProgress.type;\n      nextProps = workInProgress.pendingProps;\n      nextState = null !== current ? current.memoizedProps : null;\n      lazyComponent = nextProps.children;\n      shouldSetTextContent(init, nextProps)\n        ? (lazyComponent = null)\n        : null !== nextState &&\n          shouldSetTextContent(init, nextState) &&\n          (workInProgress.flags |= 32);\n      null !== workInProgress.memoizedState &&\n        ((init = renderWithHooks(\n          current,\n          workInProgress,\n          TransitionAwareHostComponent,\n          null,\n          null,\n          renderLanes\n        )),\n        (HostTransitionContext._currentValue = init));\n      markRef(current, workInProgress);\n      reconcileChildren(current, workInProgress, lazyComponent, renderLanes);\n      return workInProgress.child;\n    case 6:\n      if (null === current && isHydrating) {\n        if ((current = renderLanes = nextHydratableInstance))\n          (renderLanes = canHydrateTextInstance(\n            renderLanes,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== renderLanes\n              ? ((workInProgress.stateNode = renderLanes),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = null),\n                (current = !0))\n              : (current = !1);\n        current || throwOnHydrationMismatch(workInProgress);\n      }\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (lazyComponent = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            ))\n          : reconcileChildren(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            ),\n        workInProgress.child\n      );\n    case 11:\n      return updateForwardRef(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      return (\n        (lazyComponent = workInProgress.pendingProps),\n        pushProvider(workInProgress, workInProgress.type, lazyComponent.value),\n        reconcileChildren(\n          current,\n          workInProgress,\n          lazyComponent.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 9:\n      return (\n        (init = workInProgress.type._context),\n        (lazyComponent = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        (init = readContext(init)),\n        (lazyComponent = lazyComponent(init)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n        workInProgress.child\n      );\n    case 14:\n      return updateMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 15:\n      return updateSimpleMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 22:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (lazyComponent = readContext(CacheContext)),\n        null === current\n          ? ((init = peekCacheFromPool()),\n            null === init &&\n              ((init = workInProgressRoot),\n              (nextProps = createCache()),\n              (init.pooledCache = nextProps),\n              nextProps.refCount++,\n              null !== nextProps && (init.pooledCacheLanes |= renderLanes),\n              (init = nextProps)),\n            (workInProgress.memoizedState = {\n              parent: lazyComponent,\n              cache: init\n            }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, init))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            (init = current.memoizedState),\n            (nextProps = workInProgress.memoizedState),\n            init.parent !== lazyComponent\n              ? ((init = { parent: lazyComponent, cache: lazyComponent }),\n                (workInProgress.memoizedState = init),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      init),\n                pushProvider(workInProgress, CacheContext, lazyComponent))\n              : ((lazyComponent = nextProps.cache),\n                pushProvider(workInProgress, CacheContext, lazyComponent),\n                lazyComponent !== init.cache &&\n                  propagateContextChanges(\n                    workInProgress,\n                    [CacheContext],\n                    renderLanes,\n                    !0\n                  ))),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nvar valueCursor = createCursor(null),\n  currentlyRenderingFiber = null,\n  lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n  push(valueCursor, context._currentValue);\n  context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n  context._currentValue = valueCursor.current;\n  pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  for (; null !== parent; ) {\n    var alternate = parent.alternate;\n    (parent.childLanes & renderLanes) !== renderLanes\n      ? ((parent.childLanes |= renderLanes),\n        null !== alternate && (alternate.childLanes |= renderLanes))\n      : null !== alternate &&\n        (alternate.childLanes & renderLanes) !== renderLanes &&\n        (alternate.childLanes |= renderLanes);\n    if (parent === propagationRoot) break;\n    parent = parent.return;\n  }\n}\nfunction propagateContextChanges(\n  workInProgress,\n  contexts,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  var fiber = workInProgress.child;\n  null !== fiber && (fiber.return = workInProgress);\n  for (; null !== fiber; ) {\n    var list = fiber.dependencies;\n    if (null !== list) {\n      var nextFiber = fiber.child;\n      list = list.firstContext;\n      a: for (; null !== list; ) {\n        var dependency = list;\n        list = fiber;\n        for (var i = 0; i < contexts.length; i++)\n          if (dependency.context === contexts[i]) {\n            list.lanes |= renderLanes;\n            dependency = list.alternate;\n            null !== dependency && (dependency.lanes |= renderLanes);\n            scheduleContextWorkOnParentPath(\n              list.return,\n              renderLanes,\n              workInProgress\n            );\n            forcePropagateEntireTree || (nextFiber = null);\n            break a;\n          }\n        list = dependency.next;\n      }\n    } else if (18 === fiber.tag) {\n      nextFiber = fiber.return;\n      if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n      nextFiber.lanes |= renderLanes;\n      list = nextFiber.alternate;\n      null !== list && (list.lanes |= renderLanes);\n      scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n      nextFiber = null;\n    } else nextFiber = fiber.child;\n    if (null !== nextFiber) nextFiber.return = fiber;\n    else\n      for (nextFiber = fiber; null !== nextFiber; ) {\n        if (nextFiber === workInProgress) {\n          nextFiber = null;\n          break;\n        }\n        fiber = nextFiber.sibling;\n        if (null !== fiber) {\n          fiber.return = nextFiber.return;\n          nextFiber = fiber;\n          break;\n        }\n        nextFiber = nextFiber.return;\n      }\n    fiber = nextFiber;\n  }\n}\nfunction propagateParentContextChanges(\n  current,\n  workInProgress,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  current = null;\n  for (\n    var parent = workInProgress, isInsidePropagationBailout = !1;\n    null !== parent;\n\n  ) {\n    if (!isInsidePropagationBailout)\n      if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n      else if (0 !== (parent.flags & 262144)) break;\n    if (10 === parent.tag) {\n      var currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent = currentParent.memoizedProps;\n      if (null !== currentParent) {\n        var context = parent.type;\n        objectIs(parent.pendingProps.value, currentParent.value) ||\n          (null !== current ? current.push(context) : (current = [context]));\n      }\n    } else if (parent === hostTransitionProviderCursor.current) {\n      currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent.memoizedState.memoizedState !==\n        parent.memoizedState.memoizedState &&\n        (null !== current\n          ? current.push(HostTransitionContext)\n          : (current = [HostTransitionContext]));\n    }\n    parent = parent.return;\n  }\n  null !== current &&\n    propagateContextChanges(\n      workInProgress,\n      current,\n      renderLanes,\n      forcePropagateEntireTree\n    );\n  workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n  for (\n    currentDependencies = currentDependencies.firstContext;\n    null !== currentDependencies;\n\n  ) {\n    if (\n      !objectIs(\n        currentDependencies.context._currentValue,\n        currentDependencies.memoizedValue\n      )\n    )\n      return !0;\n    currentDependencies = currentDependencies.next;\n  }\n  return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n  currentlyRenderingFiber = workInProgress;\n  lastContextDependency = null;\n  workInProgress = workInProgress.dependencies;\n  null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n  return readContextForConsumer(currentlyRenderingFiber, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n  null === currentlyRenderingFiber && prepareToReadContext(consumer);\n  return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n  var value = context._currentValue;\n  context = { context: context, memoizedValue: value, next: null };\n  if (null === lastContextDependency) {\n    if (null === consumer) throw Error(formatProdErrorMessage(308));\n    lastContextDependency = context;\n    consumer.dependencies = { lanes: 0, firstContext: context };\n    consumer.flags |= 524288;\n  } else lastContextDependency = lastContextDependency.next = context;\n  return value;\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n  fiber.updateQueue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n    callbacks: null\n  };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  current = current.updateQueue;\n  workInProgress.updateQueue === current &&\n    (workInProgress.updateQueue = {\n      baseState: current.baseState,\n      firstBaseUpdate: current.firstBaseUpdate,\n      lastBaseUpdate: current.lastBaseUpdate,\n      shared: current.shared,\n      callbacks: null\n    });\n}\nfunction createUpdate(lane) {\n  return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n  if (null === updateQueue) return null;\n  updateQueue = updateQueue.shared;\n  if (0 !== (executionContext & 2)) {\n    var pending = updateQueue.pending;\n    null === pending\n      ? (update.next = update)\n      : ((update.next = pending.next), (pending.next = update));\n    updateQueue.pending = update;\n    update = getRootForUpdatedFiber(fiber);\n    markUpdateLaneFromFiberToRoot(fiber, null, lane);\n    return update;\n  }\n  enqueueUpdate$1(fiber, updateQueue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n  fiber = fiber.updateQueue;\n  if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194176))) {\n    var queueLanes = fiber.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    fiber.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  var queue = workInProgress.updateQueue,\n    current = workInProgress.alternate;\n  if (\n    null !== current &&\n    ((current = current.updateQueue), queue === current)\n  ) {\n    var newFirst = null,\n      newLast = null;\n    queue = queue.firstBaseUpdate;\n    if (null !== queue) {\n      do {\n        var clone = {\n          lane: queue.lane,\n          tag: queue.tag,\n          payload: queue.payload,\n          callback: null,\n          next: null\n        };\n        null === newLast\n          ? (newFirst = newLast = clone)\n          : (newLast = newLast.next = clone);\n        queue = queue.next;\n      } while (null !== queue);\n      null === newLast\n        ? (newFirst = newLast = capturedUpdate)\n        : (newLast = newLast.next = capturedUpdate);\n    } else newFirst = newLast = capturedUpdate;\n    queue = {\n      baseState: current.baseState,\n      firstBaseUpdate: newFirst,\n      lastBaseUpdate: newLast,\n      shared: current.shared,\n      callbacks: current.callbacks\n    };\n    workInProgress.updateQueue = queue;\n    return;\n  }\n  workInProgress = queue.lastBaseUpdate;\n  null === workInProgress\n    ? (queue.firstBaseUpdate = capturedUpdate)\n    : (workInProgress.next = capturedUpdate);\n  queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n  if (didReadFromEntangledAsyncAction) {\n    var entangledActionThenable = currentEntangledActionThenable;\n    if (null !== entangledActionThenable) throw entangledActionThenable;\n  }\n}\nfunction processUpdateQueue(\n  workInProgress$jscomp$0,\n  props,\n  instance$jscomp$0,\n  renderLanes\n) {\n  didReadFromEntangledAsyncAction = !1;\n  var queue = workInProgress$jscomp$0.updateQueue;\n  hasForceUpdate = !1;\n  var firstBaseUpdate = queue.firstBaseUpdate,\n    lastBaseUpdate = queue.lastBaseUpdate,\n    pendingQueue = queue.shared.pending;\n  if (null !== pendingQueue) {\n    queue.shared.pending = null;\n    var lastPendingUpdate = pendingQueue,\n      firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null;\n    null === lastBaseUpdate\n      ? (firstBaseUpdate = firstPendingUpdate)\n      : (lastBaseUpdate.next = firstPendingUpdate);\n    lastBaseUpdate = lastPendingUpdate;\n    var current = workInProgress$jscomp$0.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      (pendingQueue = current.lastBaseUpdate),\n      pendingQueue !== lastBaseUpdate &&\n        (null === pendingQueue\n          ? (current.firstBaseUpdate = firstPendingUpdate)\n          : (pendingQueue.next = firstPendingUpdate),\n        (current.lastBaseUpdate = lastPendingUpdate)));\n  }\n  if (null !== firstBaseUpdate) {\n    var newState = queue.baseState;\n    lastBaseUpdate = 0;\n    current = firstPendingUpdate = lastPendingUpdate = null;\n    pendingQueue = firstBaseUpdate;\n    do {\n      var updateLane = pendingQueue.lane & -536870913,\n        isHiddenUpdate = updateLane !== pendingQueue.lane;\n      if (\n        isHiddenUpdate\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        0 !== updateLane &&\n          updateLane === currentEntangledLane &&\n          (didReadFromEntangledAsyncAction = !0);\n        null !== current &&\n          (current = current.next =\n            {\n              lane: 0,\n              tag: pendingQueue.tag,\n              payload: pendingQueue.payload,\n              callback: null,\n              next: null\n            });\n        a: {\n          var workInProgress = workInProgress$jscomp$0,\n            update = pendingQueue;\n          updateLane = props;\n          var instance = instance$jscomp$0;\n          switch (update.tag) {\n            case 1:\n              workInProgress = update.payload;\n              if (\"function\" === typeof workInProgress) {\n                newState = workInProgress.call(instance, newState, updateLane);\n                break a;\n              }\n              newState = workInProgress;\n              break a;\n            case 3:\n              workInProgress.flags = (workInProgress.flags & -65537) | 128;\n            case 0:\n              workInProgress = update.payload;\n              updateLane =\n                \"function\" === typeof workInProgress\n                  ? workInProgress.call(instance, newState, updateLane)\n                  : workInProgress;\n              if (null === updateLane || void 0 === updateLane) break a;\n              newState = assign({}, newState, updateLane);\n              break a;\n            case 2:\n              hasForceUpdate = !0;\n          }\n        }\n        updateLane = pendingQueue.callback;\n        null !== updateLane &&\n          ((workInProgress$jscomp$0.flags |= 64),\n          isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n          (isHiddenUpdate = queue.callbacks),\n          null === isHiddenUpdate\n            ? (queue.callbacks = [updateLane])\n            : isHiddenUpdate.push(updateLane));\n      } else\n        (isHiddenUpdate = {\n          lane: updateLane,\n          tag: pendingQueue.tag,\n          payload: pendingQueue.payload,\n          callback: pendingQueue.callback,\n          next: null\n        }),\n          null === current\n            ? ((firstPendingUpdate = current = isHiddenUpdate),\n              (lastPendingUpdate = newState))\n            : (current = current.next = isHiddenUpdate),\n          (lastBaseUpdate |= updateLane);\n      pendingQueue = pendingQueue.next;\n      if (null === pendingQueue)\n        if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n          break;\n        else\n          (isHiddenUpdate = pendingQueue),\n            (pendingQueue = isHiddenUpdate.next),\n            (isHiddenUpdate.next = null),\n            (queue.lastBaseUpdate = isHiddenUpdate),\n            (queue.shared.pending = null);\n    } while (1);\n    null === current && (lastPendingUpdate = newState);\n    queue.baseState = lastPendingUpdate;\n    queue.firstBaseUpdate = firstPendingUpdate;\n    queue.lastBaseUpdate = current;\n    null === firstBaseUpdate && (queue.shared.lanes = 0);\n    workInProgressRootSkippedLanes |= lastBaseUpdate;\n    workInProgress$jscomp$0.lanes = lastBaseUpdate;\n    workInProgress$jscomp$0.memoizedState = newState;\n  }\n}\nfunction callCallback(callback, context) {\n  if (\"function\" !== typeof callback)\n    throw Error(formatProdErrorMessage(191, callback));\n  callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n  var callbacks = updateQueue.callbacks;\n  if (null !== callbacks)\n    for (\n      updateQueue.callbacks = null, updateQueue = 0;\n      updateQueue < callbacks.length;\n      updateQueue++\n    )\n      callCallback(callbacks[updateQueue], context);\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          lastEffect = void 0;\n          var create = updateQueue.create,\n            inst = updateQueue.inst;\n          lastEffect = create();\n          inst.destroy = lastEffect;\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHookEffectListUnmount(\n  flags,\n  finishedWork,\n  nearestMountedAncestor$jscomp$0\n) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          var inst = updateQueue.inst,\n            destroy = inst.destroy;\n          if (void 0 !== destroy) {\n            inst.destroy = void 0;\n            lastEffect = finishedWork;\n            var nearestMountedAncestor = nearestMountedAncestor$jscomp$0;\n            try {\n              destroy();\n            } catch (error) {\n              captureCommitPhaseError(\n                lastEffect,\n                nearestMountedAncestor,\n                error\n              );\n            }\n          }\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitClassCallbacks(finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  if (null !== updateQueue) {\n    var instance = finishedWork.stateNode;\n    try {\n      commitCallbacks(updateQueue, instance);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n  }\n}\nfunction safelyCallComponentWillUnmount(\n  current,\n  nearestMountedAncestor,\n  instance\n) {\n  instance.props = resolveClassComponentProps(\n    current.type,\n    current.memoizedProps\n  );\n  instance.state = current.memoizedState;\n  try {\n    instance.componentWillUnmount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    var ref = current.ref;\n    if (null !== ref) {\n      var instance = current.stateNode;\n      switch (current.tag) {\n        case 26:\n        case 27:\n        case 5:\n          var instanceToUse = instance;\n          break;\n        default:\n          instanceToUse = instance;\n      }\n      \"function\" === typeof ref\n        ? (current.refCleanup = ref(instanceToUse))\n        : (ref.current = instanceToUse);\n    }\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref,\n    refCleanup = current.refCleanup;\n  if (null !== ref)\n    if (\"function\" === typeof refCleanup)\n      try {\n        refCleanup();\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      } finally {\n        (current.refCleanup = null),\n          (current = current.alternate),\n          null != current && (current.refCleanup = null);\n      }\n    else if (\"function\" === typeof ref)\n      try {\n        ref(null);\n      } catch (error$112) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$112);\n      }\n    else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n  var type = finishedWork.type,\n    props = finishedWork.memoizedProps,\n    instance = finishedWork.stateNode;\n  try {\n    a: switch (type) {\n      case \"button\":\n      case \"input\":\n      case \"select\":\n      case \"textarea\":\n        props.autoFocus && instance.focus();\n        break a;\n      case \"img\":\n        props.src\n          ? (instance.src = props.src)\n          : props.srcSet && (instance.srcset = props.srcSet);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n  try {\n    var domElement = finishedWork.stateNode;\n    updateProperties(domElement, finishedWork.type, oldProps, newProps);\n    domElement[internalPropsKey] = newProps;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction isHostParent(fiber) {\n  return (\n    5 === fiber.tag ||\n    3 === fiber.tag ||\n    26 === fiber.tag ||\n    27 === fiber.tag ||\n    4 === fiber.tag\n  );\n}\nfunction getHostSibling(fiber) {\n  a: for (;;) {\n    for (; null === fiber.sibling; ) {\n      if (null === fiber.return || isHostParent(fiber.return)) return null;\n      fiber = fiber.return;\n    }\n    fiber.sibling.return = fiber.return;\n    for (\n      fiber = fiber.sibling;\n      5 !== fiber.tag &&\n      6 !== fiber.tag &&\n      27 !== fiber.tag &&\n      18 !== fiber.tag;\n\n    ) {\n      if (fiber.flags & 2) continue a;\n      if (null === fiber.child || 4 === fiber.tag) continue a;\n      else (fiber.child.return = fiber), (fiber = fiber.child);\n    }\n    if (!(fiber.flags & 2)) return fiber.stateNode;\n  }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before\n        ? 8 === parent.nodeType\n          ? parent.parentNode.insertBefore(node, before)\n          : parent.insertBefore(node, before)\n        : (8 === parent.nodeType\n            ? ((before = parent.parentNode), before.insertBefore(node, parent))\n            : ((before = parent), before.appendChild(node)),\n          (parent = parent._reactRootContainer),\n          (null !== parent && void 0 !== parent) ||\n            null !== before.onclick ||\n            (before.onclick = noop$1));\n  else if (4 !== tag && 27 !== tag && ((node = node.child), null !== node))\n    for (\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before ? parent.insertBefore(node, before) : parent.appendChild(node);\n  else if (4 !== tag && 27 !== tag && ((node = node.child), null !== node))\n    for (\n      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  needsFormReset = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null,\n  shouldFireAfterActiveInstanceBlur = !1;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  root = root.containerInfo;\n  eventsEnabled = _enabled;\n  root = getActiveElementDeep(root);\n  if (hasSelectionCapabilities(root)) {\n    if (\"selectionStart\" in root)\n      var JSCompiler_temp = {\n        start: root.selectionStart,\n        end: root.selectionEnd\n      };\n    else\n      a: {\n        JSCompiler_temp =\n          ((JSCompiler_temp = root.ownerDocument) &&\n            JSCompiler_temp.defaultView) ||\n          window;\n        var selection =\n          JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n        if (selection && 0 !== selection.rangeCount) {\n          JSCompiler_temp = selection.anchorNode;\n          var anchorOffset = selection.anchorOffset,\n            focusNode = selection.focusNode;\n          selection = selection.focusOffset;\n          try {\n            JSCompiler_temp.nodeType, focusNode.nodeType;\n          } catch (e$20) {\n            JSCompiler_temp = null;\n            break a;\n          }\n          var length = 0,\n            start = -1,\n            end = -1,\n            indexWithinAnchor = 0,\n            indexWithinFocus = 0,\n            node = root,\n            parentNode = null;\n          b: for (;;) {\n            for (var next; ; ) {\n              node !== JSCompiler_temp ||\n                (0 !== anchorOffset && 3 !== node.nodeType) ||\n                (start = length + anchorOffset);\n              node !== focusNode ||\n                (0 !== selection && 3 !== node.nodeType) ||\n                (end = length + selection);\n              3 === node.nodeType && (length += node.nodeValue.length);\n              if (null === (next = node.firstChild)) break;\n              parentNode = node;\n              node = next;\n            }\n            for (;;) {\n              if (node === root) break b;\n              parentNode === JSCompiler_temp &&\n                ++indexWithinAnchor === anchorOffset &&\n                (start = length);\n              parentNode === focusNode &&\n                ++indexWithinFocus === selection &&\n                (end = length);\n              if (null !== (next = node.nextSibling)) break;\n              node = parentNode;\n              parentNode = node.parentNode;\n            }\n            node = next;\n          }\n          JSCompiler_temp =\n            -1 === start || -1 === end ? null : { start: start, end: end };\n        } else JSCompiler_temp = null;\n      }\n    JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n  } else JSCompiler_temp = null;\n  selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n  _enabled = !1;\n  for (nextEffect = firstChild; null !== nextEffect; )\n    if (\n      ((firstChild = nextEffect),\n      (root = firstChild.child),\n      0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n    )\n      (root.return = firstChild), (nextEffect = root);\n    else\n      for (; null !== nextEffect; ) {\n        firstChild = nextEffect;\n        focusNode = firstChild.alternate;\n        root = firstChild.flags;\n        switch (firstChild.tag) {\n          case 0:\n            break;\n          case 11:\n          case 15:\n            break;\n          case 1:\n            if (0 !== (root & 1024) && null !== focusNode) {\n              root = void 0;\n              JSCompiler_temp = firstChild;\n              anchorOffset = focusNode.memoizedProps;\n              focusNode = focusNode.memoizedState;\n              selection = JSCompiler_temp.stateNode;\n              try {\n                var resolvedPrevProps = resolveClassComponentProps(\n                  JSCompiler_temp.type,\n                  anchorOffset,\n                  JSCompiler_temp.elementType === JSCompiler_temp.type\n                );\n                root = selection.getSnapshotBeforeUpdate(\n                  resolvedPrevProps,\n                  focusNode\n                );\n                selection.__reactInternalSnapshotBeforeUpdate = root;\n              } catch (error) {\n                captureCommitPhaseError(\n                  JSCompiler_temp,\n                  JSCompiler_temp.return,\n                  error\n                );\n              }\n            }\n            break;\n          case 3:\n            if (0 !== (root & 1024))\n              if (\n                ((root = firstChild.stateNode.containerInfo),\n                (JSCompiler_temp = root.nodeType),\n                9 === JSCompiler_temp)\n              )\n                clearContainerSparingly(root);\n              else if (1 === JSCompiler_temp)\n                switch (root.nodeName) {\n                  case \"HEAD\":\n                  case \"HTML\":\n                  case \"BODY\":\n                    clearContainerSparingly(root);\n                    break;\n                  default:\n                    root.textContent = \"\";\n                }\n            break;\n          case 5:\n          case 26:\n          case 27:\n          case 6:\n          case 4:\n          case 17:\n            break;\n          default:\n            if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n        }\n        root = firstChild.sibling;\n        if (null !== root) {\n          root.return = firstChild.return;\n          nextEffect = root;\n          break;\n        }\n        nextEffect = firstChild.return;\n      }\n  resolvedPrevProps = shouldFireAfterActiveInstanceBlur;\n  shouldFireAfterActiveInstanceBlur = !1;\n  return resolvedPrevProps;\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitHookEffectListMount(5, finishedWork);\n      break;\n    case 1:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (flags & 4)\n        if (((finishedRoot = finishedWork.stateNode), null === current))\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        else {\n          var prevProps = resolveClassComponentProps(\n            finishedWork.type,\n            current.memoizedProps\n          );\n          current = current.memoizedState;\n          try {\n            finishedRoot.componentDidUpdate(\n              prevProps,\n              current,\n              finishedRoot.__reactInternalSnapshotBeforeUpdate\n            );\n          } catch (error$111) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$111\n            );\n          }\n        }\n      flags & 64 && commitClassCallbacks(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (flags & 64 && ((flags = finishedWork.updateQueue), null !== flags)) {\n        finishedRoot = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 27:\n            case 5:\n              finishedRoot = finishedWork.child.stateNode;\n              break;\n            case 1:\n              finishedRoot = finishedWork.child.stateNode;\n          }\n        try {\n          commitCallbacks(flags, finishedRoot);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 26:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 27:\n    case 5:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      null === current && flags & 4 && commitHostMount(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 12:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n      break;\n    case 22:\n      prevProps =\n        null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n      if (!prevProps) {\n        current =\n          (null !== current && null !== current.memoizedState) ||\n          offscreenSubtreeWasHidden;\n        var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n          prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = prevProps;\n        (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n          ? recursivelyTraverseReappearLayoutEffects(\n              finishedRoot,\n              finishedWork,\n              0 !== (finishedWork.subtreeFlags & 8772)\n            )\n          : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n        offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      }\n      flags & 512 &&\n        (\"manual\" === finishedWork.memoizedProps.mode\n          ? safelyAttachRef(finishedWork, finishedWork.return)\n          : safelyDetachRef(finishedWork, finishedWork.return));\n      break;\n    default:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n  }\n}\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n  null !== alternate &&\n    ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n  fiber.child = null;\n  fiber.deletions = null;\n  fiber.sibling = null;\n  5 === fiber.tag &&\n    ((alternate = fiber.stateNode),\n    null !== alternate && detachDeletedInstance(alternate));\n  fiber.stateNode = null;\n  fiber.return = null;\n  fiber.dependencies = null;\n  fiber.memoizedProps = null;\n  fiber.memoizedState = null;\n  fiber.pendingProps = null;\n  fiber.stateNode = null;\n  fiber.updateQueue = null;\n}\nvar hostParent = null,\n  hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n  finishedRoot,\n  nearestMountedAncestor,\n  parent\n) {\n  for (parent = parent.child; null !== parent; )\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n      (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n  finishedRoot,\n  nearestMountedAncestor,\n  deletedFiber\n) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n    } catch (err) {}\n  switch (deletedFiber.tag) {\n    case 26:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      deletedFiber.memoizedState\n        ? deletedFiber.memoizedState.count--\n        : deletedFiber.stateNode &&\n          ((deletedFiber = deletedFiber.stateNode),\n          deletedFiber.parentNode.removeChild(deletedFiber));\n      break;\n    case 27:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      var prevHostParent = hostParent,\n        prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      deletedFiber = deletedFiber.stateNode;\n      for (\n        nearestMountedAncestor = deletedFiber.attributes;\n        nearestMountedAncestor.length;\n\n      )\n        deletedFiber.removeAttributeNode(nearestMountedAncestor[0]);\n      detachDeletedInstance(deletedFiber);\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n    case 6:\n      prevHostParentIsContainer = hostParent;\n      var prevHostParentIsContainer$119 = hostParentIsContainer;\n      hostParent = null;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParentIsContainer;\n      hostParentIsContainer = prevHostParentIsContainer$119;\n      if (null !== hostParent)\n        if (hostParentIsContainer)\n          try {\n            (finishedRoot = hostParent),\n              (prevHostParent = deletedFiber.stateNode),\n              8 === finishedRoot.nodeType\n                ? finishedRoot.parentNode.removeChild(prevHostParent)\n                : finishedRoot.removeChild(prevHostParent);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n        else\n          try {\n            hostParent.removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n      break;\n    case 18:\n      null !== hostParent &&\n        (hostParentIsContainer\n          ? ((nearestMountedAncestor = hostParent),\n            (deletedFiber = deletedFiber.stateNode),\n            8 === nearestMountedAncestor.nodeType\n              ? clearSuspenseBoundary(\n                  nearestMountedAncestor.parentNode,\n                  deletedFiber\n                )\n              : 1 === nearestMountedAncestor.nodeType &&\n                clearSuspenseBoundary(nearestMountedAncestor, deletedFiber),\n            retryIfBlockedOn(nearestMountedAncestor))\n          : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));\n      break;\n    case 4:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode.containerInfo;\n      hostParentIsContainer = !0;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 1:\n      offscreenSubtreeWasHidden ||\n        (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n        (prevHostParent = deletedFiber.stateNode),\n        \"function\" === typeof prevHostParent.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            deletedFiber,\n            nearestMountedAncestor,\n            prevHostParent\n          ));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 21:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 22:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden =\n        (prevHostParent = offscreenSubtreeWasHidden) ||\n        null !== deletedFiber.memoizedState;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      offscreenSubtreeWasHidden = prevHostParent;\n      break;\n    default:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n  }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState),\n      null !== finishedRoot &&\n        ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n  )\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n}\nfunction getRetryCache(finishedWork) {\n  switch (finishedWork.tag) {\n    case 13:\n    case 19:\n      var retryCache = finishedWork.stateNode;\n      null === retryCache &&\n        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n      return retryCache;\n    case 22:\n      return (\n        (finishedWork = finishedWork.stateNode),\n        (retryCache = finishedWork._retryCache),\n        null === retryCache &&\n          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n        retryCache\n      );\n    default:\n      throw Error(formatProdErrorMessage(435, finishedWork.tag));\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n  var retryCache = getRetryCache(finishedWork);\n  wakeables.forEach(function (wakeable) {\n    var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n    retryCache.has(wakeable) ||\n      (retryCache.add(wakeable), wakeable.then(retry, retry));\n  });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (null !== deletions)\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i],\n        root = root$jscomp$0,\n        returnFiber = parentFiber,\n        parent = returnFiber;\n      a: for (; null !== parent; ) {\n        switch (parent.tag) {\n          case 27:\n          case 5:\n            hostParent = parent.stateNode;\n            hostParentIsContainer = !1;\n            break a;\n          case 3:\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = !0;\n            break a;\n          case 4:\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = !0;\n            break a;\n        }\n        parent = parent.return;\n      }\n      if (null === hostParent) throw Error(formatProdErrorMessage(160));\n      commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n      hostParent = null;\n      hostParentIsContainer = !1;\n      root = childToDelete.alternate;\n      null !== root && (root.return = null);\n      childToDelete.return = null;\n    }\n  if (parentFiber.subtreeFlags & 13878)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n        (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n  var current = finishedWork.alternate,\n    flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n        commitHookEffectListMount(3, finishedWork),\n        commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n      break;\n    case 1:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      flags & 64 &&\n        offscreenSubtreeIsHidden &&\n        ((finishedWork = finishedWork.updateQueue),\n        null !== finishedWork &&\n          ((flags = finishedWork.callbacks),\n          null !== flags &&\n            ((current = finishedWork.shared.hiddenCallbacks),\n            (finishedWork.shared.hiddenCallbacks =\n              null === current ? flags : current.concat(flags)))));\n      break;\n    case 26:\n      var hoistableRoot = currentHoistableRoot;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (flags & 4) {\n        var currentResource = null !== current ? current.memoizedState : null;\n        flags = finishedWork.memoizedState;\n        if (null === current)\n          if (null === flags)\n            if (null === finishedWork.stateNode) {\n              a: {\n                flags = finishedWork.type;\n                current = finishedWork.memoizedProps;\n                hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n                b: switch (flags) {\n                  case \"title\":\n                    currentResource =\n                      hoistableRoot.getElementsByTagName(\"title\")[0];\n                    if (\n                      !currentResource ||\n                      currentResource[internalHoistableMarker] ||\n                      currentResource[internalInstanceKey] ||\n                      \"http://www.w3.org/2000/svg\" ===\n                        currentResource.namespaceURI ||\n                      currentResource.hasAttribute(\"itemprop\")\n                    )\n                      (currentResource = hoistableRoot.createElement(flags)),\n                        hoistableRoot.head.insertBefore(\n                          currentResource,\n                          hoistableRoot.querySelector(\"head > title\")\n                        );\n                    setInitialProperties(currentResource, flags, current);\n                    currentResource[internalInstanceKey] = finishedWork;\n                    markNodeAsHoistable(currentResource);\n                    flags = currentResource;\n                    break a;\n                  case \"link\":\n                    var maybeNodes = getHydratableHoistableCache(\n                      \"link\",\n                      \"href\",\n                      hoistableRoot\n                    ).get(flags + (current.href || \"\"));\n                    if (maybeNodes)\n                      for (var i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"href\") ===\n                            (null == current.href ? null : current.href) &&\n                            currentResource.getAttribute(\"rel\") ===\n                              (null == current.rel ? null : current.rel) &&\n                            currentResource.getAttribute(\"title\") ===\n                              (null == current.title ? null : current.title) &&\n                            currentResource.getAttribute(\"crossorigin\") ===\n                              (null == current.crossOrigin\n                                ? null\n                                : current.crossOrigin))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  case \"meta\":\n                    if (\n                      (maybeNodes = getHydratableHoistableCache(\n                        \"meta\",\n                        \"content\",\n                        hoistableRoot\n                      ).get(flags + (current.content || \"\")))\n                    )\n                      for (i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"content\") ===\n                            (null == current.content\n                              ? null\n                              : \"\" + current.content) &&\n                            currentResource.getAttribute(\"name\") ===\n                              (null == current.name ? null : current.name) &&\n                            currentResource.getAttribute(\"property\") ===\n                              (null == current.property\n                                ? null\n                                : current.property) &&\n                            currentResource.getAttribute(\"http-equiv\") ===\n                              (null == current.httpEquiv\n                                ? null\n                                : current.httpEquiv) &&\n                            currentResource.getAttribute(\"charset\") ===\n                              (null == current.charSet\n                                ? null\n                                : current.charSet))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  default:\n                    throw Error(formatProdErrorMessage(468, flags));\n                }\n                currentResource[internalInstanceKey] = finishedWork;\n                markNodeAsHoistable(currentResource);\n                flags = currentResource;\n              }\n              finishedWork.stateNode = flags;\n            } else\n              mountHoistable(\n                hoistableRoot,\n                finishedWork.type,\n                finishedWork.stateNode\n              );\n          else\n            finishedWork.stateNode = acquireResource(\n              hoistableRoot,\n              flags,\n              finishedWork.memoizedProps\n            );\n        else\n          currentResource !== flags\n            ? (null === currentResource\n                ? null !== current.stateNode &&\n                  ((current = current.stateNode),\n                  current.parentNode.removeChild(current))\n                : currentResource.count--,\n              null === flags\n                ? mountHoistable(\n                    hoistableRoot,\n                    finishedWork.type,\n                    finishedWork.stateNode\n                  )\n                : acquireResource(\n                    hoistableRoot,\n                    flags,\n                    finishedWork.memoizedProps\n                  ))\n            : null === flags &&\n              null !== finishedWork.stateNode &&\n              commitHostUpdate(\n                finishedWork,\n                finishedWork.memoizedProps,\n                current.memoizedProps\n              );\n      }\n      break;\n    case 27:\n      if (flags & 4 && null === finishedWork.alternate) {\n        hoistableRoot = finishedWork.stateNode;\n        currentResource = finishedWork.memoizedProps;\n        try {\n          for (var node = hoistableRoot.firstChild; node; ) {\n            var nextNode = node.nextSibling,\n              nodeName = node.nodeName;\n            node[internalHoistableMarker] ||\n              \"HEAD\" === nodeName ||\n              \"BODY\" === nodeName ||\n              \"SCRIPT\" === nodeName ||\n              \"STYLE\" === nodeName ||\n              (\"LINK\" === nodeName &&\n                \"stylesheet\" === node.rel.toLowerCase()) ||\n              hoistableRoot.removeChild(node);\n            node = nextNode;\n          }\n          for (\n            var type = finishedWork.type, attributes = hoistableRoot.attributes;\n            attributes.length;\n\n          )\n            hoistableRoot.removeAttributeNode(attributes[0]);\n          setInitialProperties(hoistableRoot, type, currentResource);\n          hoistableRoot[internalInstanceKey] = finishedWork;\n          hoistableRoot[internalPropsKey] = currentResource;\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n    case 5:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (finishedWork.flags & 32) {\n        hoistableRoot = finishedWork.stateNode;\n        try {\n          setTextContent(hoistableRoot, \"\");\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      flags & 4 &&\n        null != finishedWork.stateNode &&\n        ((hoistableRoot = finishedWork.memoizedProps),\n        commitHostUpdate(\n          finishedWork,\n          hoistableRoot,\n          null !== current ? current.memoizedProps : hoistableRoot\n        ));\n      flags & 1024 && (needsFormReset = !0);\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4) {\n        if (null === finishedWork.stateNode)\n          throw Error(formatProdErrorMessage(162));\n        flags = finishedWork.memoizedProps;\n        current = finishedWork.stateNode;\n        try {\n          current.nodeValue = flags;\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 3:\n      tagCaches = null;\n      hoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(root.containerInfo);\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      currentHoistableRoot = hoistableRoot;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n        try {\n          retryIfBlockedOn(root.containerInfo);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      needsFormReset &&\n        ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n      break;\n    case 4:\n      flags = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(\n        finishedWork.stateNode.containerInfo\n      );\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      currentHoistableRoot = flags;\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      finishedWork.child.flags & 8192 &&\n        (null !== finishedWork.memoizedState) !==\n          (null !== current && null !== current.memoizedState) &&\n        (globalMostRecentFallbackTime = now());\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 22:\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      node = null !== finishedWork.memoizedState;\n      nextNode = null !== current && null !== current.memoizedState;\n      nodeName = offscreenSubtreeIsHidden;\n      type = offscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = nodeName || node;\n      offscreenSubtreeWasHidden = type || nextNode;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      offscreenSubtreeWasHidden = type;\n      offscreenSubtreeIsHidden = nodeName;\n      commitReconciliationEffects(finishedWork);\n      root = finishedWork.stateNode;\n      root._current = finishedWork;\n      root._visibility &= -3;\n      root._visibility |= root._pendingVisibility & 2;\n      if (\n        flags & 8192 &&\n        ((root._visibility = node\n          ? root._visibility & -2\n          : root._visibility | 1),\n        node &&\n          ((root = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),\n          null === current ||\n            nextNode ||\n            root ||\n            recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n        null === finishedWork.memoizedProps ||\n          \"manual\" !== finishedWork.memoizedProps.mode)\n      )\n        a: for (current = null, root = finishedWork; ; ) {\n          if (5 === root.tag || 26 === root.tag || 27 === root.tag) {\n            if (null === current) {\n              nextNode = current = root;\n              try {\n                if (((hoistableRoot = nextNode.stateNode), node))\n                  (currentResource = hoistableRoot.style),\n                    \"function\" === typeof currentResource.setProperty\n                      ? currentResource.setProperty(\n                          \"display\",\n                          \"none\",\n                          \"important\"\n                        )\n                      : (currentResource.display = \"none\");\n                else {\n                  maybeNodes = nextNode.stateNode;\n                  i = nextNode.memoizedProps.style;\n                  var display =\n                    void 0 !== i && null !== i && i.hasOwnProperty(\"display\")\n                      ? i.display\n                      : null;\n                  maybeNodes.style.display =\n                    null == display || \"boolean\" === typeof display\n                      ? \"\"\n                      : (\"\" + display).trim();\n                }\n              } catch (error) {\n                captureCommitPhaseError(nextNode, nextNode.return, error);\n              }\n            }\n          } else if (6 === root.tag) {\n            if (null === current) {\n              nextNode = root;\n              try {\n                nextNode.stateNode.nodeValue = node\n                  ? \"\"\n                  : nextNode.memoizedProps;\n              } catch (error) {\n                captureCommitPhaseError(nextNode, nextNode.return, error);\n              }\n            }\n          } else if (\n            ((22 !== root.tag && 23 !== root.tag) ||\n              null === root.memoizedState ||\n              root === finishedWork) &&\n            null !== root.child\n          ) {\n            root.child.return = root;\n            root = root.child;\n            continue;\n          }\n          if (root === finishedWork) break a;\n          for (; null === root.sibling; ) {\n            if (null === root.return || root.return === finishedWork) break a;\n            current === root && (current = null);\n            root = root.return;\n          }\n          current === root && (current = null);\n          root.sibling.return = root.return;\n          root = root.sibling;\n        }\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((current = flags.retryQueue),\n          null !== current &&\n            ((flags.retryQueue = null),\n            attachSuspenseRetryListeners(finishedWork, current))));\n      break;\n    case 19:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 21:\n      break;\n    default:\n      recursivelyTraverseMutationEffects(root, finishedWork),\n        commitReconciliationEffects(finishedWork);\n  }\n}\nfunction commitReconciliationEffects(finishedWork) {\n  var flags = finishedWork.flags;\n  if (flags & 2) {\n    try {\n      if (27 !== finishedWork.tag) {\n        a: {\n          for (var parent = finishedWork.return; null !== parent; ) {\n            if (isHostParent(parent)) {\n              var JSCompiler_inline_result = parent;\n              break a;\n            }\n            parent = parent.return;\n          }\n          throw Error(formatProdErrorMessage(160));\n        }\n        switch (JSCompiler_inline_result.tag) {\n          case 27:\n            var parent$jscomp$0 = JSCompiler_inline_result.stateNode,\n              before = getHostSibling(finishedWork);\n            insertOrAppendPlacementNode(finishedWork, before, parent$jscomp$0);\n            break;\n          case 5:\n            var parent$113 = JSCompiler_inline_result.stateNode;\n            JSCompiler_inline_result.flags & 32 &&\n              (setTextContent(parent$113, \"\"),\n              (JSCompiler_inline_result.flags &= -33));\n            var before$114 = getHostSibling(finishedWork);\n            insertOrAppendPlacementNode(finishedWork, before$114, parent$113);\n            break;\n          case 3:\n          case 4:\n            var parent$115 = JSCompiler_inline_result.stateNode.containerInfo,\n              before$116 = getHostSibling(finishedWork);\n            insertOrAppendPlacementNodeIntoContainer(\n              finishedWork,\n              before$116,\n              parent$115\n            );\n            break;\n          default:\n            throw Error(formatProdErrorMessage(161));\n        }\n      }\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n    finishedWork.flags &= -3;\n  }\n  flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n  if (parentFiber.subtreeFlags & 1024)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var fiber = parentFiber;\n      recursivelyResetForms(fiber);\n      5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n      parentFiber = parentFiber.sibling;\n    }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n  if (parentFiber.subtreeFlags & 8772)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedWork = parentFiber;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 14:\n      case 15:\n        commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 1:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        var instance = finishedWork.stateNode;\n        \"function\" === typeof instance.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            finishedWork,\n            finishedWork.return,\n            instance\n          );\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 26:\n      case 27:\n      case 5:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 22:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      default:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var current = parentFiber.alternate,\n      finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(4, finishedWork);\n        break;\n      case 1:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        current = finishedWork;\n        finishedRoot = current.stateNode;\n        if (\"function\" === typeof finishedRoot.componentDidMount)\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        current = finishedWork;\n        finishedRoot = current.updateQueue;\n        if (null !== finishedRoot) {\n          var instance = current.stateNode;\n          try {\n            var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n            if (null !== hiddenCallbacks)\n              for (\n                finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n                finishedRoot < hiddenCallbacks.length;\n                finishedRoot++\n              )\n                callCallback(hiddenCallbacks[finishedRoot], instance);\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        }\n        includeWorkInProgressEffects &&\n          flags & 64 &&\n          commitClassCallbacks(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 26:\n      case 27:\n      case 5:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          null === current &&\n          flags & 4 &&\n          commitHostMount(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 12:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 13:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseReappearLayoutEffects(\n            finishedRoot,\n            finishedWork,\n            includeWorkInProgressEffects\n          );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      default:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n  var previousCache = null;\n  null !== current &&\n    null !== current.memoizedState &&\n    null !== current.memoizedState.cachePool &&\n    (previousCache = current.memoizedState.cachePool.pool);\n  current = null;\n  null !== finishedWork.memoizedState &&\n    null !== finishedWork.memoizedState.cachePool &&\n    (current = finishedWork.memoizedState.cachePool.pool);\n  current !== previousCache &&\n    (null != current && current.refCount++,\n    null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n  current = null;\n  null !== finishedWork.alternate &&\n    (current = finishedWork.alternate.memoizedState.cache);\n  finishedWork = finishedWork.memoizedState.cache;\n  finishedWork !== current &&\n    (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n  root,\n  parentFiber,\n  committedLanes,\n  committedTransitions\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 && commitHookEffectListMount(9, finishedWork);\n      break;\n    case 3:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        ((finishedRoot = null),\n        null !== finishedWork.alternate &&\n          (finishedRoot = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== finishedRoot &&\n          (finishedWork.refCount++,\n          null != finishedRoot && releaseCache(finishedRoot)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        finishedRoot = finishedWork.stateNode;\n        try {\n          var _finishedWork$memoize2 = finishedWork.memoizedProps,\n            id = _finishedWork$memoize2.id,\n            onPostCommit = _finishedWork$memoize2.onPostCommit;\n          \"function\" === typeof onPostCommit &&\n            onPostCommit(\n              id,\n              null === finishedWork.alternate ? \"mount\" : \"update\",\n              finishedRoot.passiveEffectDuration,\n              -0\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      } else\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n      break;\n    case 23:\n      break;\n    case 22:\n      _finishedWork$memoize2 = finishedWork.stateNode;\n      null !== finishedWork.memoizedState\n        ? _finishedWork$memoize2._visibility & 4\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n        : _finishedWork$memoize2._visibility & 4\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : ((_finishedWork$memoize2._visibility |= 4),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              0 !== (finishedWork.subtreeFlags & 10256)\n            ));\n      flags & 2048 &&\n        commitOffscreenPassiveMountEffects(\n          finishedWork.alternate,\n          finishedWork\n        );\n      break;\n    case 24:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n  }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  committedLanes$jscomp$0,\n  committedTransitions$jscomp$0,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      committedLanes = committedLanes$jscomp$0,\n      committedTransitions = committedTransitions$jscomp$0,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(8, finishedWork);\n        break;\n      case 23:\n        break;\n      case 22:\n        var instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState\n          ? instance._visibility & 4\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n          : ((instance._visibility |= 4),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              includeWorkInProgressEffects\n            ));\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitOffscreenPassiveMountEffects(\n            finishedWork.alternate,\n            finishedWork\n          );\n        break;\n      case 24:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n        break;\n      default:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var finishedRoot = finishedRoot$jscomp$0,\n        finishedWork = parentFiber,\n        flags = finishedWork.flags;\n      switch (finishedWork.tag) {\n        case 22:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitOffscreenPassiveMountEffects(\n              finishedWork.alternate,\n              finishedWork\n            );\n          break;\n        case 24:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n          break;\n        default:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      fiber.flags & suspenseyCommitFlag &&\n        null !== fiber.memoizedState &&\n        suspendResource(\n          currentHoistableRoot,\n          fiber.memoizedState,\n          fiber.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      break;\n    case 3:\n    case 4:\n      var previousHoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      currentHoistableRoot = previousHoistableRoot;\n      break;\n    case 22:\n      null === fiber.memoizedState &&\n        ((previousHoistableRoot = fiber.alternate),\n        null !== previousHoistableRoot &&\n        null !== previousHoistableRoot.memoizedState\n          ? ((previousHoistableRoot = suspenseyCommitFlag),\n            (suspenseyCommitFlag = 16777216),\n            recursivelyAccumulateSuspenseyCommit(fiber),\n            (suspenseyCommitFlag = previousHoistableRoot))\n          : recursivelyAccumulateSuspenseyCommit(fiber));\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n  }\n}\nfunction detachAlternateSiblings(parentFiber) {\n  var previousFiber = parentFiber.alternate;\n  if (\n    null !== previousFiber &&\n    ((parentFiber = previousFiber.child), null !== parentFiber)\n  ) {\n    previousFiber.child = null;\n    do\n      (previousFiber = parentFiber.sibling),\n        (parentFiber.sibling = null),\n        (parentFiber = previousFiber);\n    while (null !== parentFiber);\n  }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveUnmountOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      finishedWork.flags & 2048 &&\n        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 22:\n      var instance = finishedWork.stateNode;\n      null !== finishedWork.memoizedState &&\n      instance._visibility & 4 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -5),\n          recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n        : recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n  }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    deletions = parentFiber;\n    switch (deletions.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, deletions, deletions.return);\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n        break;\n      case 22:\n        i = deletions.stateNode;\n        i._visibility & 4 &&\n          ((i._visibility &= -5),\n          recursivelyTraverseDisconnectPassiveEffects(deletions));\n        break;\n      default:\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n  deletedSubtreeRoot,\n  nearestMountedAncestor\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n        break;\n      case 23:\n      case 22:\n        if (\n          null !== fiber.memoizedState &&\n          null !== fiber.memoizedState.cachePool\n        ) {\n          var cache = fiber.memoizedState.cachePool.pool;\n          null != cache && cache.refCount++;\n        }\n        break;\n      case 24:\n        releaseCache(fiber.memoizedState.cache);\n    }\n    cache = fiber.child;\n    if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n    else\n      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n        cache = nextEffect;\n        var sibling = cache.sibling,\n          returnFiber = cache.return;\n        detachFiberAfterEffects(cache);\n        if (cache === fiber) {\n          nextEffect = null;\n          break a;\n        }\n        if (null !== sibling) {\n          sibling.return = returnFiber;\n          nextEffect = sibling;\n          break a;\n        }\n        nextEffect = returnFiber;\n      }\n  }\n}\nfunction FiberNode(tag, pendingProps, key, mode) {\n  this.tag = tag;\n  this.key = key;\n  this.sibling =\n    this.child =\n    this.return =\n    this.stateNode =\n    this.type =\n    this.elementType =\n      null;\n  this.index = 0;\n  this.refCleanup = this.ref = null;\n  this.pendingProps = pendingProps;\n  this.dependencies =\n    this.memoizedState =\n    this.updateQueue =\n    this.memoizedProps =\n      null;\n  this.mode = mode;\n  this.subtreeFlags = this.flags = 0;\n  this.deletions = null;\n  this.childLanes = this.lanes = 0;\n  this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n  return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n  Component = Component.prototype;\n  return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n  null === workInProgress\n    ? ((workInProgress = createFiberImplClass(\n        current.tag,\n        pendingProps,\n        current.key,\n        current.mode\n      )),\n      (workInProgress.elementType = current.elementType),\n      (workInProgress.type = current.type),\n      (workInProgress.stateNode = current.stateNode),\n      (workInProgress.alternate = current),\n      (current.alternate = workInProgress))\n    : ((workInProgress.pendingProps = pendingProps),\n      (workInProgress.type = current.type),\n      (workInProgress.flags = 0),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null));\n  workInProgress.flags = current.flags & 31457280;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n  pendingProps = current.dependencies;\n  workInProgress.dependencies =\n    null === pendingProps\n      ? null\n      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n  workInProgress.refCleanup = current.refCleanup;\n  return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  workInProgress.flags &= 31457282;\n  var current = workInProgress.alternate;\n  null === current\n    ? ((workInProgress.childLanes = 0),\n      (workInProgress.lanes = renderLanes),\n      (workInProgress.child = null),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.memoizedProps = null),\n      (workInProgress.memoizedState = null),\n      (workInProgress.updateQueue = null),\n      (workInProgress.dependencies = null),\n      (workInProgress.stateNode = null))\n    : ((workInProgress.childLanes = current.childLanes),\n      (workInProgress.lanes = current.lanes),\n      (workInProgress.child = current.child),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null),\n      (workInProgress.memoizedProps = current.memoizedProps),\n      (workInProgress.memoizedState = current.memoizedState),\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.type = current.type),\n      (renderLanes = current.dependencies),\n      (workInProgress.dependencies =\n        null === renderLanes\n          ? null\n          : {\n              lanes: renderLanes.lanes,\n              firstContext: renderLanes.firstContext\n            }));\n  return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n  type,\n  key,\n  pendingProps,\n  owner,\n  mode,\n  lanes\n) {\n  var fiberTag = 0;\n  owner = type;\n  if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n  else if (\"string\" === typeof type)\n    fiberTag = isHostHoistableType(\n      type,\n      pendingProps,\n      contextStackCursor.current\n    )\n      ? 26\n      : \"html\" === type || \"head\" === type || \"body\" === type\n        ? 27\n        : 5;\n  else\n    a: switch (type) {\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 24;\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiberImplClass(13, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiberImplClass(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_OFFSCREEN_TYPE:\n        return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_PROVIDER_TYPE:\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONSUMER_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n          }\n        fiberTag = 29;\n        pendingProps = Error(\n          formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n        );\n        owner = null;\n    }\n  key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiberImplClass(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n  pendingProps = createFiberImplClass(22, pendingProps, key, mode);\n  pendingProps.elementType = REACT_OFFSCREEN_TYPE;\n  pendingProps.lanes = lanes;\n  var primaryChildInstance = {\n    _visibility: 1,\n    _pendingVisibility: 1,\n    _pendingMarkers: null,\n    _retryCache: null,\n    _transitions: null,\n    _current: null,\n    detach: function () {\n      var fiber = primaryChildInstance._current;\n      if (null === fiber) throw Error(formatProdErrorMessage(456));\n      if (0 === (primaryChildInstance._pendingVisibility & 2)) {\n        var root = enqueueConcurrentRenderForLane(fiber, 2);\n        null !== root &&\n          ((primaryChildInstance._pendingVisibility |= 2),\n          scheduleUpdateOnFiber(root, fiber, 2));\n      }\n    },\n    attach: function () {\n      var fiber = primaryChildInstance._current;\n      if (null === fiber) throw Error(formatProdErrorMessage(456));\n      if (0 !== (primaryChildInstance._pendingVisibility & 2)) {\n        var root = enqueueConcurrentRenderForLane(fiber, 2);\n        null !== root &&\n          ((primaryChildInstance._pendingVisibility &= -3),\n          scheduleUpdateOnFiber(root, fiber, 2));\n      }\n    }\n  };\n  pendingProps.stateNode = primaryChildInstance;\n  return pendingProps;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiberImplClass(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nfunction markUpdate(workInProgress) {\n  workInProgress.flags |= 4;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n  if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n    workInProgress.flags &= -16777217;\n  else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {\n    resource = suspenseHandlerStackCursor.current;\n    if (\n      null !== resource &&\n      ((workInProgressRootRenderLanes & 4194176) ===\n      workInProgressRootRenderLanes\n        ? null !== shellBoundary\n        : ((workInProgressRootRenderLanes & 62914560) !==\n            workInProgressRootRenderLanes &&\n            0 === (workInProgressRootRenderLanes & 536870912)) ||\n          resource !== shellBoundary)\n    )\n      throw (\n        ((suspendedThenable = noopSuspenseyCommitThenable),\n        SuspenseyCommitException)\n      );\n    workInProgress.flags |= 8192;\n  }\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n  null !== retryQueue && (workInProgress.flags |= 4);\n  workInProgress.flags & 16384 &&\n    ((retryQueue =\n      22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n    (workInProgress.lanes |= retryQueue),\n    (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (!isHydrating)\n    switch (renderState.tailMode) {\n      case \"hidden\":\n        hasRenderedATailFallback = renderState.tail;\n        for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n          null !== hasRenderedATailFallback.alternate &&\n            (lastTailNode = hasRenderedATailFallback),\n            (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n        null === lastTailNode\n          ? (renderState.tail = null)\n          : (lastTailNode.sibling = null);\n        break;\n      case \"collapsed\":\n        lastTailNode = renderState.tail;\n        for (var lastTailNode$131 = null; null !== lastTailNode; )\n          null !== lastTailNode.alternate && (lastTailNode$131 = lastTailNode),\n            (lastTailNode = lastTailNode.sibling);\n        null === lastTailNode$131\n          ? hasRenderedATailFallback || null === renderState.tail\n            ? (renderState.tail = null)\n            : (renderState.tail.sibling = null)\n          : (lastTailNode$131.sibling = null);\n    }\n}\nfunction bubbleProperties(completedWork) {\n  var didBailout =\n      null !== completedWork.alternate &&\n      completedWork.alternate.child === completedWork.child,\n    newChildLanes = 0,\n    subtreeFlags = 0;\n  if (didBailout)\n    for (var child$132 = completedWork.child; null !== child$132; )\n      (newChildLanes |= child$132.lanes | child$132.childLanes),\n        (subtreeFlags |= child$132.subtreeFlags & 31457280),\n        (subtreeFlags |= child$132.flags & 31457280),\n        (child$132.return = completedWork),\n        (child$132 = child$132.sibling);\n  else\n    for (child$132 = completedWork.child; null !== child$132; )\n      (newChildLanes |= child$132.lanes | child$132.childLanes),\n        (subtreeFlags |= child$132.subtreeFlags),\n        (subtreeFlags |= child$132.flags),\n        (child$132.return = completedWork),\n        (child$132 = child$132.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return bubbleProperties(workInProgress), null;\n    case 1:\n      return bubbleProperties(workInProgress), null;\n    case 3:\n      renderLanes = workInProgress.stateNode;\n      newProps = null;\n      null !== current && (newProps = current.memoizedState.cache);\n      workInProgress.memoizedState.cache !== newProps &&\n        (workInProgress.flags |= 2048);\n      popProvider(CacheContext);\n      popHostContainer();\n      renderLanes.pendingContext &&\n        ((renderLanes.context = renderLanes.pendingContext),\n        (renderLanes.pendingContext = null));\n      if (null === current || null === current.child)\n        popHydrationState(workInProgress)\n          ? markUpdate(workInProgress)\n          : null === current ||\n            (current.memoizedState.isDehydrated &&\n              0 === (workInProgress.flags & 256)) ||\n            ((workInProgress.flags |= 1024),\n            null !== hydrationErrors &&\n              (queueRecoverableErrors(hydrationErrors),\n              (hydrationErrors = null)));\n      bubbleProperties(workInProgress);\n      return null;\n    case 26:\n      return (\n        (renderLanes = workInProgress.memoizedState),\n        null === current\n          ? (markUpdate(workInProgress),\n            null !== renderLanes\n              ? (bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217)))\n          : renderLanes\n            ? renderLanes !== current.memoizedState\n              ? (markUpdate(workInProgress),\n                bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217))\n            : (current.memoizedProps !== newProps && markUpdate(workInProgress),\n              bubbleProperties(workInProgress),\n              (workInProgress.flags &= -16777217)),\n        null\n      );\n    case 27:\n      popHostContext(workInProgress);\n      renderLanes = rootInstanceStackCursor.current;\n      var type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        popHydrationState(workInProgress)\n          ? prepareToHydrateHostInstance(workInProgress, current)\n          : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n            (workInProgress.stateNode = current),\n            markUpdate(workInProgress));\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 5:\n      popHostContext(workInProgress);\n      renderLanes = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        if (popHydrationState(workInProgress))\n          prepareToHydrateHostInstance(workInProgress, current);\n        else {\n          type = getOwnerDocumentFromRootContainer(\n            rootInstanceStackCursor.current\n          );\n          switch (current) {\n            case 1:\n              current = type.createElementNS(\n                \"http://www.w3.org/2000/svg\",\n                renderLanes\n              );\n              break;\n            case 2:\n              current = type.createElementNS(\n                \"http://www.w3.org/1998/Math/MathML\",\n                renderLanes\n              );\n              break;\n            default:\n              switch (renderLanes) {\n                case \"svg\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/2000/svg\",\n                    renderLanes\n                  );\n                  break;\n                case \"math\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/1998/Math/MathML\",\n                    renderLanes\n                  );\n                  break;\n                case \"script\":\n                  current = type.createElement(\"div\");\n                  current.innerHTML = \"<script>\\x3c/script>\";\n                  current = current.removeChild(current.firstChild);\n                  break;\n                case \"select\":\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(\"select\", { is: newProps.is })\n                      : type.createElement(\"select\");\n                  newProps.multiple\n                    ? (current.multiple = !0)\n                    : newProps.size && (current.size = newProps.size);\n                  break;\n                default:\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(renderLanes, { is: newProps.is })\n                      : type.createElement(renderLanes);\n              }\n          }\n          current[internalInstanceKey] = workInProgress;\n          current[internalPropsKey] = newProps;\n          a: for (type = workInProgress.child; null !== type; ) {\n            if (5 === type.tag || 6 === type.tag)\n              current.appendChild(type.stateNode);\n            else if (4 !== type.tag && 27 !== type.tag && null !== type.child) {\n              type.child.return = type;\n              type = type.child;\n              continue;\n            }\n            if (type === workInProgress) break a;\n            for (; null === type.sibling; ) {\n              if (null === type.return || type.return === workInProgress)\n                break a;\n              type = type.return;\n            }\n            type.sibling.return = type.return;\n            type = type.sibling;\n          }\n          workInProgress.stateNode = current;\n          a: switch (\n            (setInitialProperties(current, renderLanes, newProps), renderLanes)\n          ) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              current = !!newProps.autoFocus;\n              break a;\n            case \"img\":\n              current = !0;\n              break a;\n            default:\n              current = !1;\n          }\n          current && markUpdate(workInProgress);\n        }\n      }\n      bubbleProperties(workInProgress);\n      workInProgress.flags &= -16777217;\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(formatProdErrorMessage(166));\n        current = rootInstanceStackCursor.current;\n        if (popHydrationState(workInProgress)) {\n          current = workInProgress.stateNode;\n          renderLanes = workInProgress.memoizedProps;\n          newProps = null;\n          type = hydrationParentFiber;\n          if (null !== type)\n            switch (type.tag) {\n              case 27:\n              case 5:\n                newProps = type.memoizedProps;\n            }\n          current[internalInstanceKey] = workInProgress;\n          current =\n            current.nodeValue === renderLanes ||\n            (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n            checkForUnmatchedText(current.nodeValue, renderLanes)\n              ? !0\n              : !1;\n          current || throwOnHydrationMismatch(workInProgress);\n        } else\n          (current =\n            getOwnerDocumentFromRootContainer(current).createTextNode(\n              newProps\n            )),\n            (current[internalInstanceKey] = workInProgress),\n            (workInProgress.stateNode = current);\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 13:\n      newProps = workInProgress.memoizedState;\n      if (\n        null === current ||\n        (null !== current.memoizedState &&\n          null !== current.memoizedState.dehydrated)\n      ) {\n        type = popHydrationState(workInProgress);\n        if (null !== newProps && null !== newProps.dehydrated) {\n          if (null === current) {\n            if (!type) throw Error(formatProdErrorMessage(318));\n            type = workInProgress.memoizedState;\n            type = null !== type ? type.dehydrated : null;\n            if (!type) throw Error(formatProdErrorMessage(317));\n            type[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          type = !1;\n        } else\n          null !== hydrationErrors &&\n            (queueRecoverableErrors(hydrationErrors), (hydrationErrors = null)),\n            (type = !0);\n        if (!type) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n      }\n      popSuspenseHandler(workInProgress);\n      if (0 !== (workInProgress.flags & 128))\n        return (workInProgress.lanes = renderLanes), workInProgress;\n      renderLanes = null !== newProps;\n      current = null !== current && null !== current.memoizedState;\n      if (renderLanes) {\n        newProps = workInProgress.child;\n        type = null;\n        null !== newProps.alternate &&\n          null !== newProps.alternate.memoizedState &&\n          null !== newProps.alternate.memoizedState.cachePool &&\n          (type = newProps.alternate.memoizedState.cachePool.pool);\n        var cache$144 = null;\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (cache$144 = newProps.memoizedState.cachePool.pool);\n        cache$144 !== type && (newProps.flags |= 2048);\n      }\n      renderLanes !== current &&\n        renderLanes &&\n        (workInProgress.child.flags |= 8192);\n      scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n      bubbleProperties(workInProgress);\n      return null;\n    case 4:\n      return (\n        popHostContainer(),\n        null === current &&\n          listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 10:\n      return (\n        popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n      );\n    case 19:\n      pop(suspenseStackCursor);\n      type = workInProgress.memoizedState;\n      if (null === type) return bubbleProperties(workInProgress), null;\n      newProps = 0 !== (workInProgress.flags & 128);\n      cache$144 = type.rendering;\n      if (null === cache$144)\n        if (newProps) cutOffTailIfNeeded(type, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              cache$144 = findFirstSuspended(current);\n              if (null !== cache$144) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(type, !1);\n                current = cache$144.updateQueue;\n                workInProgress.updateQueue = current;\n                scheduleRetryEffect(workInProgress, current);\n                workInProgress.subtreeFlags = 0;\n                current = renderLanes;\n                for (renderLanes = workInProgress.child; null !== renderLanes; )\n                  resetWorkInProgress(renderLanes, current),\n                    (renderLanes = renderLanes.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== type.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (newProps = !0),\n            cutOffTailIfNeeded(type, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!newProps)\n          if (((current = findFirstSuspended(cache$144)), null !== current)) {\n            if (\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(type, !0),\n              null === type.tail &&\n                \"hidden\" === type.tailMode &&\n                !cache$144.alternate &&\n                !isHydrating)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - type.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              cutOffTailIfNeeded(type, !1),\n              (workInProgress.lanes = 4194304));\n        type.isBackwards\n          ? ((cache$144.sibling = workInProgress.child),\n            (workInProgress.child = cache$144))\n          : ((current = type.last),\n            null !== current\n              ? (current.sibling = cache$144)\n              : (workInProgress.child = cache$144),\n            (type.last = cache$144));\n      }\n      if (null !== type.tail)\n        return (\n          (workInProgress = type.tail),\n          (type.rendering = workInProgress),\n          (type.tail = workInProgress.sibling),\n          (type.renderingStartTime = now()),\n          (workInProgress.sibling = null),\n          (current = suspenseStackCursor.current),\n          push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n          workInProgress\n        );\n      bubbleProperties(workInProgress);\n      return null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        (newProps = null !== workInProgress.memoizedState),\n        null !== current\n          ? (null !== current.memoizedState) !== newProps &&\n            (workInProgress.flags |= 8192)\n          : newProps && (workInProgress.flags |= 8192),\n        newProps\n          ? 0 !== (renderLanes & 536870912) &&\n            0 === (workInProgress.flags & 128) &&\n            (bubbleProperties(workInProgress),\n            workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n          : bubbleProperties(workInProgress),\n        (renderLanes = workInProgress.updateQueue),\n        null !== renderLanes &&\n          scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n        (renderLanes = null),\n        null !== current &&\n          null !== current.memoizedState &&\n          null !== current.memoizedState.cachePool &&\n          (renderLanes = current.memoizedState.cachePool.pool),\n        (newProps = null),\n        null !== workInProgress.memoizedState &&\n          null !== workInProgress.memoizedState.cachePool &&\n          (newProps = workInProgress.memoizedState.cachePool.pool),\n        newProps !== renderLanes && (workInProgress.flags |= 2048),\n        null !== current && pop(resumedCache),\n        null\n      );\n    case 24:\n      return (\n        (renderLanes = null),\n        null !== current && (renderLanes = current.memoizedState.cache),\n        workInProgress.memoizedState.cache !== renderLanes &&\n          (workInProgress.flags |= 2048),\n        popProvider(CacheContext),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 25:\n      return null;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 1:\n      return (\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 3:\n      return (\n        popProvider(CacheContext),\n        popHostContainer(),\n        (current = workInProgress.flags),\n        0 !== (current & 65536) && 0 === (current & 128)\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 26:\n    case 27:\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 13:\n      popSuspenseHandler(workInProgress);\n      current = workInProgress.memoizedState;\n      if (null !== current && null !== current.dehydrated) {\n        if (null === workInProgress.alternate)\n          throw Error(formatProdErrorMessage(340));\n        resetHydrationState();\n      }\n      current = workInProgress.flags;\n      return current & 65536\n        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n        : null;\n    case 19:\n      return pop(suspenseStackCursor), null;\n    case 4:\n      return popHostContainer(), null;\n    case 10:\n      return popProvider(workInProgress.type), null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        null !== current && pop(resumedCache),\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 24:\n      return popProvider(CacheContext), null;\n    case 25:\n      return null;\n    default:\n      return null;\n  }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n  popTreeContext(interruptedWork);\n  switch (interruptedWork.tag) {\n    case 3:\n      popProvider(CacheContext);\n      popHostContainer();\n      break;\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(interruptedWork);\n      break;\n    case 4:\n      popHostContainer();\n      break;\n    case 13:\n      popSuspenseHandler(interruptedWork);\n      break;\n    case 19:\n      pop(suspenseStackCursor);\n      break;\n    case 10:\n      popProvider(interruptedWork.type);\n      break;\n    case 22:\n    case 23:\n      popSuspenseHandler(interruptedWork);\n      popHiddenContext();\n      null !== current && pop(resumedCache);\n      break;\n    case 24:\n      popProvider(CacheContext);\n  }\n}\nvar DefaultAsyncDispatcher = {\n    getCacheForType: function (resourceType) {\n      var cache = readContext(CacheContext),\n        cacheForType = cache.data.get(resourceType);\n      void 0 === cacheForType &&\n        ((cacheForType = resourceType()),\n        cache.data.set(resourceType, cacheForType));\n      return cacheForType;\n    }\n  },\n  PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  workInProgressSuspendedReason = 0,\n  workInProgressThrownValue = null,\n  workInProgressRootDidSkipSuspendedSiblings = !1,\n  workInProgressRootIsPrerendering = !1,\n  workInProgressRootDidAttachPingListener = !1,\n  entangledRenderLanes = 0,\n  workInProgressRootExitStatus = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootInterleavedUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  workInProgressDeferredLane = 0,\n  workInProgressSuspendedRetryLanes = 0,\n  workInProgressRootConcurrentErrors = null,\n  workInProgressRootRecoverableErrors = null,\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  workInProgressTransitions = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  rootDoesHavePassiveEffects = !1,\n  rootWithPendingPassiveEffects = null,\n  pendingPassiveEffectsLanes = 0,\n  pendingPassiveEffectsRemainingLanes = 0,\n  pendingPassiveTransitions = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n  if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)\n    return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;\n  if (null !== ReactSharedInternals.T) {\n    var actionScopeLane = currentEntangledLane;\n    return 0 !== actionScopeLane ? actionScopeLane : requestTransitionLane();\n  }\n  return resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n  0 === workInProgressDeferredLane &&\n    (workInProgressDeferredLane =\n      0 === (workInProgressRootRenderLanes & 536870912) || isHydrating\n        ? claimNextTransitionLane()\n        : 536870912);\n  var suspenseHandler = suspenseHandlerStackCursor.current;\n  null !== suspenseHandler && (suspenseHandler.flags |= 32);\n  return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n  if (\n    (root === workInProgressRoot && 2 === workInProgressSuspendedReason) ||\n    null !== root.cancelPendingCommit\n  )\n    prepareFreshStack(root, 0),\n      markRootSuspended(\n        root,\n        workInProgressRootRenderLanes,\n        workInProgressDeferredLane,\n        !1\n      );\n  markRootUpdated$1(root, lane);\n  if (0 === (executionContext & 2) || root !== workInProgressRoot)\n    root === workInProgressRoot &&\n      (0 === (executionContext & 2) &&\n        (workInProgressRootInterleavedUpdatedLanes |= lane),\n      4 === workInProgressRootExitStatus &&\n        markRootSuspended(\n          root,\n          workInProgressRootRenderLanes,\n          workInProgressDeferredLane,\n          !1\n        )),\n      ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  var shouldTimeSlice =\n      (!forceSync &&\n        0 === (lanes & 60) &&\n        0 === (lanes & root$jscomp$0.expiredLanes)) ||\n      checkIfRootIsPrerendering(root$jscomp$0, lanes),\n    exitStatus = shouldTimeSlice\n      ? renderRootConcurrent(root$jscomp$0, lanes)\n      : renderRootSync(root$jscomp$0, lanes, !0),\n    renderWasConcurrent = shouldTimeSlice;\n  do {\n    if (0 === exitStatus) {\n      workInProgressRootIsPrerendering &&\n        !shouldTimeSlice &&\n        markRootSuspended(root$jscomp$0, lanes, 0, !1);\n      break;\n    } else if (6 === exitStatus)\n      markRootSuspended(\n        root$jscomp$0,\n        lanes,\n        0,\n        !workInProgressRootDidSkipSuspendedSiblings\n      );\n    else {\n      forceSync = root$jscomp$0.current.alternate;\n      if (\n        renderWasConcurrent &&\n        !isRenderConsistentWithExternalStores(forceSync)\n      ) {\n        exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n        renderWasConcurrent = !1;\n        continue;\n      }\n      if (2 === exitStatus) {\n        renderWasConcurrent = lanes;\n        if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n          var JSCompiler_inline_result = 0;\n        else\n          (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n            (JSCompiler_inline_result =\n              0 !== JSCompiler_inline_result\n                ? JSCompiler_inline_result\n                : JSCompiler_inline_result & 536870912\n                  ? 536870912\n                  : 0);\n        if (0 !== JSCompiler_inline_result) {\n          lanes = JSCompiler_inline_result;\n          a: {\n            var root = root$jscomp$0;\n            exitStatus = workInProgressRootConcurrentErrors;\n            var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n            wasRootDehydrated &&\n              (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n            JSCompiler_inline_result = renderRootSync(\n              root,\n              JSCompiler_inline_result,\n              !1\n            );\n            if (2 !== JSCompiler_inline_result) {\n              if (\n                workInProgressRootDidAttachPingListener &&\n                !wasRootDehydrated\n              ) {\n                root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n                workInProgressRootInterleavedUpdatedLanes |=\n                  renderWasConcurrent;\n                exitStatus = 4;\n                break a;\n              }\n              renderWasConcurrent = workInProgressRootRecoverableErrors;\n              workInProgressRootRecoverableErrors = exitStatus;\n              null !== renderWasConcurrent &&\n                queueRecoverableErrors(renderWasConcurrent);\n            }\n            exitStatus = JSCompiler_inline_result;\n          }\n          renderWasConcurrent = !1;\n          if (2 !== exitStatus) continue;\n        }\n      }\n      if (1 === exitStatus) {\n        prepareFreshStack(root$jscomp$0, 0);\n        markRootSuspended(root$jscomp$0, lanes, 0, !0);\n        break;\n      }\n      a: {\n        shouldTimeSlice = root$jscomp$0;\n        switch (exitStatus) {\n          case 0:\n          case 1:\n            throw Error(formatProdErrorMessage(345));\n          case 4:\n            if ((lanes & 4194176) === lanes) {\n              markRootSuspended(\n                shouldTimeSlice,\n                lanes,\n                workInProgressDeferredLane,\n                !workInProgressRootDidSkipSuspendedSiblings\n              );\n              break a;\n            }\n            break;\n          case 2:\n            workInProgressRootRecoverableErrors = null;\n            break;\n          case 3:\n          case 5:\n            break;\n          default:\n            throw Error(formatProdErrorMessage(329));\n        }\n        shouldTimeSlice.finishedWork = forceSync;\n        shouldTimeSlice.finishedLanes = lanes;\n        if (\n          (lanes & 62914560) === lanes &&\n          ((renderWasConcurrent = globalMostRecentFallbackTime + 300 - now()),\n          10 < renderWasConcurrent)\n        ) {\n          markRootSuspended(\n            shouldTimeSlice,\n            lanes,\n            workInProgressDeferredLane,\n            !workInProgressRootDidSkipSuspendedSiblings\n          );\n          if (0 !== getNextLanes(shouldTimeSlice, 0)) break a;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            commitRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              2,\n              -0,\n              0\n            ),\n            renderWasConcurrent\n          );\n          break a;\n        }\n        commitRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes,\n          workInProgressRootDidSkipSuspendedSiblings,\n          0,\n          -0,\n          0\n        );\n      }\n    }\n    break;\n  } while (1);\n  ensureRootIsScheduled(root$jscomp$0);\n}\nfunction queueRecoverableErrors(errors) {\n  null === workInProgressRootRecoverableErrors\n    ? (workInProgressRootRecoverableErrors = errors)\n    : workInProgressRootRecoverableErrors.push.apply(\n        workInProgressRootRecoverableErrors,\n        errors\n      );\n}\nfunction commitRootWhenReady(\n  root,\n  finishedWork,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  lanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  didSkipSuspendedSiblings,\n  suspendedCommitReason,\n  completedRenderStartTime,\n  completedRenderEndTime\n) {\n  var subtreeFlags = finishedWork.subtreeFlags;\n  if (subtreeFlags & 8192 || 16785408 === (subtreeFlags & 16785408))\n    if (\n      ((suspendedState = { stylesheets: null, count: 0, unsuspend: noop }),\n      accumulateSuspenseyCommitOnFiber(finishedWork),\n      (finishedWork = waitForCommitToBeReady()),\n      null !== finishedWork)\n    ) {\n      root.cancelPendingCommit = finishedWork(\n        commitRoot.bind(\n          null,\n          root,\n          recoverableErrors,\n          transitions,\n          didIncludeRenderPhaseUpdate,\n          spawnedLane,\n          updatedLanes,\n          suspendedRetryLanes,\n          1,\n          completedRenderStartTime,\n          completedRenderEndTime\n        )\n      );\n      markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n      return;\n    }\n  commitRoot(\n    root,\n    recoverableErrors,\n    transitions,\n    didIncludeRenderPhaseUpdate,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes,\n    suspendedCommitReason,\n    completedRenderStartTime,\n    completedRenderEndTime\n  );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  for (var node = finishedWork; ; ) {\n    var tag = node.tag;\n    if (\n      (0 === tag || 11 === tag || 15 === tag) &&\n      node.flags & 16384 &&\n      ((tag = node.updateQueue),\n      null !== tag && ((tag = tag.stores), null !== tag))\n    )\n      for (var i = 0; i < tag.length; i++) {\n        var check = tag[i],\n          getSnapshot = check.getSnapshot;\n        check = check.value;\n        try {\n          if (!objectIs(getSnapshot(), check)) return !1;\n        } catch (error) {\n          return !1;\n        }\n      }\n    tag = node.child;\n    if (node.subtreeFlags & 16384 && null !== tag)\n      (tag.return = node), (node = tag);\n    else {\n      if (node === finishedWork) break;\n      for (; null === node.sibling; ) {\n        if (null === node.return || node.return === finishedWork) return !0;\n        node = node.return;\n      }\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n  return !0;\n}\nfunction markRootSuspended(\n  root,\n  suspendedLanes,\n  spawnedLane,\n  didAttemptEntireTree\n) {\n  suspendedLanes &= ~workInProgressRootPingedLanes;\n  suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes;\n  didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n  didAttemptEntireTree = root.expirationTimes;\n  for (var lanes = suspendedLanes; 0 < lanes; ) {\n    var index$6 = 31 - clz32(lanes),\n      lane = 1 << index$6;\n    didAttemptEntireTree[index$6] = -1;\n    lanes &= ~lane;\n  }\n  0 !== spawnedLane &&\n    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n  return 0 === (executionContext & 6)\n    ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n    : !0;\n}\nfunction resetWorkInProgressStack() {\n  if (null !== workInProgress) {\n    if (0 === workInProgressSuspendedReason)\n      var interruptedWork = workInProgress.return;\n    else\n      (interruptedWork = workInProgress),\n        (lastContextDependency = currentlyRenderingFiber = null),\n        resetHooksOnUnwind(interruptedWork),\n        (thenableState$1 = null),\n        (thenableIndexCounter$1 = 0),\n        (interruptedWork = workInProgress);\n    for (; null !== interruptedWork; )\n      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n        (interruptedWork = interruptedWork.return);\n    workInProgress = null;\n  }\n}\nfunction prepareFreshStack(root, lanes) {\n  root.finishedWork = null;\n  root.finishedLanes = 0;\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  timeoutHandle = root.cancelPendingCommit;\n  null !== timeoutHandle &&\n    ((root.cancelPendingCommit = null), timeoutHandle());\n  resetWorkInProgressStack();\n  workInProgressRoot = root;\n  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = lanes;\n  workInProgressSuspendedReason = 0;\n  workInProgressThrownValue = null;\n  workInProgressRootDidSkipSuspendedSiblings = !1;\n  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n  workInProgressRootDidAttachPingListener = !1;\n  workInProgressSuspendedRetryLanes =\n    workInProgressDeferredLane =\n    workInProgressRootPingedLanes =\n    workInProgressRootInterleavedUpdatedLanes =\n    workInProgressRootSkippedLanes =\n    workInProgressRootExitStatus =\n      0;\n  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n    null;\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n  0 !== (lanes & 8) && (lanes |= lanes & 32);\n  var allEntangledLanes = root.entangledLanes;\n  if (0 !== allEntangledLanes)\n    for (\n      root = root.entanglements, allEntangledLanes &= lanes;\n      0 < allEntangledLanes;\n\n    ) {\n      var index$4 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$4;\n      lanes |= root[index$4];\n      allEntangledLanes &= ~lane;\n    }\n  entangledRenderLanes = lanes;\n  finishQueueingConcurrentUpdates();\n  return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n  currentlyRenderingFiber$1 = null;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  thrownValue === SuspenseException\n    ? ((thrownValue = getSuspendedThenable()),\n      (workInProgressSuspendedReason = 3))\n    : thrownValue === SuspenseyCommitException\n      ? ((thrownValue = getSuspendedThenable()),\n        (workInProgressSuspendedReason = 4))\n      : (workInProgressSuspendedReason =\n          thrownValue === SelectiveHydrationException\n            ? 8\n            : null !== thrownValue &&\n                \"object\" === typeof thrownValue &&\n                \"function\" === typeof thrownValue.then\n              ? 6\n              : 1);\n  workInProgressThrownValue = thrownValue;\n  null === workInProgress &&\n    ((workInProgressRootExitStatus = 1),\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    ));\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactSharedInternals.H;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n  var prevAsyncDispatcher = ReactSharedInternals.A;\n  ReactSharedInternals.A = DefaultAsyncDispatcher;\n  return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n  workInProgressRootExitStatus = 4;\n  workInProgressRootDidSkipSuspendedSiblings ||\n    ((workInProgressRootRenderLanes & 4194176) !==\n      workInProgressRootRenderLanes &&\n      null !== suspenseHandlerStackCursor.current) ||\n    (workInProgressRootIsPrerendering = !0);\n  (0 === (workInProgressRootSkippedLanes & 134217727) &&\n    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n    null === workInProgressRoot ||\n    markRootSuspended(\n      workInProgressRoot,\n      workInProgressRootRenderLanes,\n      workInProgressDeferredLane,\n      !1\n    );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n    (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n  lanes = !1;\n  var exitStatus = workInProgressRootExitStatus;\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        var unitOfWork = workInProgress,\n          thrownValue = workInProgressThrownValue;\n        switch (workInProgressSuspendedReason) {\n          case 8:\n            resetWorkInProgressStack();\n            exitStatus = 6;\n            break a;\n          case 3:\n          case 2:\n          case 6:\n            null === suspenseHandlerStackCursor.current && (lanes = !0);\n            var reason = workInProgressSuspendedReason;\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n            if (\n              shouldYieldForPrerendering &&\n              workInProgressRootIsPrerendering\n            ) {\n              exitStatus = 0;\n              break a;\n            }\n            break;\n          default:\n            (reason = workInProgressSuspendedReason),\n              (workInProgressSuspendedReason = 0),\n              (workInProgressThrownValue = null),\n              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n        }\n      }\n      workLoopSync();\n      exitStatus = workInProgressRootExitStatus;\n      break;\n    } catch (thrownValue$164) {\n      handleThrow(root, thrownValue$164);\n    }\n  while (1);\n  lanes && root.shellSuspendCounter++;\n  lastContextDependency = currentlyRenderingFiber = null;\n  executionContext = prevExecutionContext;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  null === workInProgress &&\n    ((workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0),\n    finishQueueingConcurrentUpdates());\n  return exitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n    ? ((workInProgressTransitions = null),\n      (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, lanes))\n    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n        root,\n        lanes\n      ));\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        lanes = workInProgress;\n        var thrownValue = workInProgressThrownValue;\n        b: switch (workInProgressSuspendedReason) {\n          case 1:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n            break;\n          case 2:\n            if (isThenableResolved(thrownValue)) {\n              workInProgressSuspendedReason = 0;\n              workInProgressThrownValue = null;\n              replaySuspendedUnitOfWork(lanes);\n              break;\n            }\n            lanes = function () {\n              2 === workInProgressSuspendedReason &&\n                workInProgressRoot === root &&\n                (workInProgressSuspendedReason = 7);\n              ensureRootIsScheduled(root);\n            };\n            thrownValue.then(lanes, lanes);\n            break a;\n          case 3:\n            workInProgressSuspendedReason = 7;\n            break a;\n          case 4:\n            workInProgressSuspendedReason = 5;\n            break a;\n          case 7:\n            isThenableResolved(thrownValue)\n              ? ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                replaySuspendedUnitOfWork(lanes))\n              : ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n            break;\n          case 5:\n            var resource = null;\n            switch (workInProgress.tag) {\n              case 26:\n                resource = workInProgress.memoizedState;\n              case 5:\n              case 27:\n                var hostFiber = workInProgress;\n                if (resource ? preloadResource(resource) : 1) {\n                  workInProgressSuspendedReason = 0;\n                  workInProgressThrownValue = null;\n                  var sibling = hostFiber.sibling;\n                  if (null !== sibling) workInProgress = sibling;\n                  else {\n                    var returnFiber = hostFiber.return;\n                    null !== returnFiber\n                      ? ((workInProgress = returnFiber),\n                        completeUnitOfWork(returnFiber))\n                      : (workInProgress = null);\n                  }\n                  break b;\n                }\n            }\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n            break;\n          case 6:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n            break;\n          case 8:\n            resetWorkInProgressStack();\n            workInProgressRootExitStatus = 6;\n            break a;\n          default:\n            throw Error(formatProdErrorMessage(462));\n        }\n      }\n      workLoopConcurrent();\n      break;\n    } catch (thrownValue$166) {\n      handleThrow(root, thrownValue$166);\n    }\n  while (1);\n  lastContextDependency = currentlyRenderingFiber = null;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  executionContext = prevExecutionContext;\n  if (null !== workInProgress) return 0;\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  finishQueueingConcurrentUpdates();\n  return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrent() {\n  for (; null !== workInProgress && !shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n  var next = unitOfWork;\n  var current = next.alternate;\n  switch (next.tag) {\n    case 15:\n    case 0:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type,\n        void 0,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 11:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type.render,\n        next.ref,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 5:\n      resetHooksOnUnwind(next);\n    default:\n      unwindInterruptedWork(current, next),\n        (next = workInProgress =\n          resetWorkInProgress(next, entangledRenderLanes)),\n        (next = beginWork(current, next, entangledRenderLanes));\n  }\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n  root,\n  unitOfWork,\n  thrownValue,\n  suspendedReason\n) {\n  lastContextDependency = currentlyRenderingFiber = null;\n  resetHooksOnUnwind(unitOfWork);\n  thenableState$1 = null;\n  thenableIndexCounter$1 = 0;\n  var returnFiber = unitOfWork.return;\n  try {\n    if (\n      throwException(\n        root,\n        returnFiber,\n        unitOfWork,\n        thrownValue,\n        workInProgressRootRenderLanes\n      )\n    ) {\n      workInProgressRootExitStatus = 1;\n      logUncaughtError(\n        root,\n        createCapturedValueAtFiber(thrownValue, root.current)\n      );\n      workInProgress = null;\n      return;\n    }\n  } catch (error) {\n    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n    workInProgressRootExitStatus = 1;\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    );\n    workInProgress = null;\n    return;\n  }\n  if (unitOfWork.flags & 32768) {\n    if (isHydrating || 1 === suspendedReason) root = !0;\n    else if (\n      workInProgressRootIsPrerendering ||\n      0 !== (workInProgressRootRenderLanes & 536870912)\n    )\n      root = !1;\n    else if (\n      ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n      2 === suspendedReason || 3 === suspendedReason || 6 === suspendedReason)\n    )\n      (suspendedReason = suspenseHandlerStackCursor.current),\n        null !== suspendedReason &&\n          13 === suspendedReason.tag &&\n          (suspendedReason.flags |= 16384);\n    unwindUnitOfWork(unitOfWork, root);\n  } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n  var completedWork = unitOfWork;\n  do {\n    if (0 !== (completedWork.flags & 32768)) {\n      unwindUnitOfWork(\n        completedWork,\n        workInProgressRootDidSkipSuspendedSiblings\n      );\n      return;\n    }\n    unitOfWork = completedWork.return;\n    var next = completeWork(\n      completedWork.alternate,\n      completedWork,\n      entangledRenderLanes\n    );\n    if (null !== next) {\n      workInProgress = next;\n      return;\n    }\n    completedWork = completedWork.sibling;\n    if (null !== completedWork) {\n      workInProgress = completedWork;\n      return;\n    }\n    workInProgress = completedWork = unitOfWork;\n  } while (null !== completedWork);\n  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n  do {\n    var next = unwindWork(unitOfWork.alternate, unitOfWork);\n    if (null !== next) {\n      next.flags &= 32767;\n      workInProgress = next;\n      return;\n    }\n    next = unitOfWork.return;\n    null !== next &&\n      ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n    if (\n      !skipSiblings &&\n      ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n    ) {\n      workInProgress = unitOfWork;\n      return;\n    }\n    workInProgress = unitOfWork = next;\n  } while (null !== unitOfWork);\n  workInProgressRootExitStatus = 6;\n  workInProgress = null;\n}\nfunction commitRoot(\n  root,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  suspendedCommitReason,\n  completedRenderStartTime,\n  completedRenderEndTime\n) {\n  var prevTransition = ReactSharedInternals.T,\n    previousUpdateLanePriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 2),\n      (ReactSharedInternals.T = null),\n      commitRootImpl(\n        root,\n        recoverableErrors,\n        transitions,\n        didIncludeRenderPhaseUpdate,\n        previousUpdateLanePriority,\n        spawnedLane,\n        updatedLanes,\n        suspendedRetryLanes,\n        suspendedCommitReason,\n        completedRenderStartTime,\n        completedRenderEndTime\n      );\n  } finally {\n    (ReactSharedInternals.T = prevTransition),\n      (ReactDOMSharedInternals.p = previousUpdateLanePriority);\n  }\n}\nfunction commitRootImpl(\n  root,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  renderPriorityLevel,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  do flushPassiveEffects();\n  while (null !== rootWithPendingPassiveEffects);\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  var finishedWork = root.finishedWork;\n  didIncludeRenderPhaseUpdate = root.finishedLanes;\n  if (null === finishedWork) return null;\n  root.finishedWork = null;\n  root.finishedLanes = 0;\n  if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n  root.callbackNode = null;\n  root.callbackPriority = 0;\n  root.cancelPendingCommit = null;\n  var remainingLanes = finishedWork.lanes | finishedWork.childLanes;\n  remainingLanes |= concurrentlyUpdatedLanes;\n  markRootFinished(\n    root,\n    didIncludeRenderPhaseUpdate,\n    remainingLanes,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes\n  );\n  root === workInProgressRoot &&\n    ((workInProgress = workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0));\n  (0 === (finishedWork.subtreeFlags & 10256) &&\n    0 === (finishedWork.flags & 10256)) ||\n    rootDoesHavePassiveEffects ||\n    ((rootDoesHavePassiveEffects = !0),\n    (pendingPassiveEffectsRemainingLanes = remainingLanes),\n    (pendingPassiveTransitions = transitions),\n    scheduleCallback$1(NormalPriority$1, function () {\n      flushPassiveEffects(!0);\n      return null;\n    }));\n  transitions = 0 !== (finishedWork.flags & 15990);\n  0 !== (finishedWork.subtreeFlags & 15990) || transitions\n    ? ((transitions = ReactSharedInternals.T),\n      (ReactSharedInternals.T = null),\n      (spawnedLane = ReactDOMSharedInternals.p),\n      (ReactDOMSharedInternals.p = 2),\n      (updatedLanes = executionContext),\n      (executionContext |= 4),\n      commitBeforeMutationEffects(root, finishedWork),\n      commitMutationEffectsOnFiber(finishedWork, root),\n      restoreSelection(selectionInformation, root.containerInfo),\n      (_enabled = !!eventsEnabled),\n      (selectionInformation = eventsEnabled = null),\n      (root.current = finishedWork),\n      commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork),\n      requestPaint(),\n      (executionContext = updatedLanes),\n      (ReactDOMSharedInternals.p = spawnedLane),\n      (ReactSharedInternals.T = transitions))\n    : (root.current = finishedWork);\n  rootDoesHavePassiveEffects\n    ? ((rootDoesHavePassiveEffects = !1),\n      (rootWithPendingPassiveEffects = root),\n      (pendingPassiveEffectsLanes = didIncludeRenderPhaseUpdate))\n    : releaseRootPooledCache(root, remainingLanes);\n  remainingLanes = root.pendingLanes;\n  0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n  onCommitRoot(finishedWork.stateNode, renderPriorityLevel);\n  ensureRootIsScheduled(root);\n  if (null !== recoverableErrors)\n    for (\n      renderPriorityLevel = root.onRecoverableError, finishedWork = 0;\n      finishedWork < recoverableErrors.length;\n      finishedWork++\n    )\n      (remainingLanes = recoverableErrors[finishedWork]),\n        renderPriorityLevel(remainingLanes.value, {\n          componentStack: remainingLanes.stack\n        });\n  0 !== (pendingPassiveEffectsLanes & 3) && flushPassiveEffects();\n  remainingLanes = root.pendingLanes;\n  0 !== (didIncludeRenderPhaseUpdate & 4194218) && 0 !== (remainingLanes & 42)\n    ? root === rootWithNestedUpdates\n      ? nestedUpdateCount++\n      : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n    : (nestedUpdateCount = 0);\n  flushSyncWorkAcrossRoots_impl(0, !1);\n  return null;\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n  0 === (root.pooledCacheLanes &= remainingLanes) &&\n    ((remainingLanes = root.pooledCache),\n    null != remainingLanes &&\n      ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPassiveEffects() {\n  if (null !== rootWithPendingPassiveEffects) {\n    var root$170 = rootWithPendingPassiveEffects,\n      remainingLanes = pendingPassiveEffectsRemainingLanes;\n    pendingPassiveEffectsRemainingLanes = 0;\n    var renderPriority = lanesToEventPriority(pendingPassiveEffectsLanes),\n      prevTransition = ReactSharedInternals.T,\n      previousPriority = ReactDOMSharedInternals.p;\n    try {\n      ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n      ReactSharedInternals.T = null;\n      if (null === rootWithPendingPassiveEffects)\n        var JSCompiler_inline_result = !1;\n      else {\n        renderPriority = pendingPassiveTransitions;\n        pendingPassiveTransitions = null;\n        var root = rootWithPendingPassiveEffects,\n          lanes = pendingPassiveEffectsLanes;\n        rootWithPendingPassiveEffects = null;\n        pendingPassiveEffectsLanes = 0;\n        if (0 !== (executionContext & 6))\n          throw Error(formatProdErrorMessage(331));\n        var prevExecutionContext = executionContext;\n        executionContext |= 4;\n        commitPassiveUnmountOnFiber(root.current);\n        commitPassiveMountOnFiber(root, root.current, lanes, renderPriority);\n        executionContext = prevExecutionContext;\n        flushSyncWorkAcrossRoots_impl(0, !1);\n        if (\n          injectedHook &&\n          \"function\" === typeof injectedHook.onPostCommitFiberRoot\n        )\n          try {\n            injectedHook.onPostCommitFiberRoot(rendererID, root);\n          } catch (err) {}\n        JSCompiler_inline_result = !0;\n      }\n      return JSCompiler_inline_result;\n    } finally {\n      (ReactDOMSharedInternals.p = previousPriority),\n        (ReactSharedInternals.T = prevTransition),\n        releaseRootPooledCache(root$170, remainingLanes);\n    }\n  }\n  return !1;\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n  sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n  rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n  null !== rootFiber &&\n    (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n  if (3 === sourceFiber.tag)\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n  else\n    for (; null !== nearestMountedAncestor; ) {\n      if (3 === nearestMountedAncestor.tag) {\n        captureCommitPhaseErrorOnRoot(\n          nearestMountedAncestor,\n          sourceFiber,\n          error\n        );\n        break;\n      } else if (1 === nearestMountedAncestor.tag) {\n        var instance = nearestMountedAncestor.stateNode;\n        if (\n          \"function\" ===\n            typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n          (\"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n        ) {\n          sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n          error = createClassErrorUpdate(2);\n          instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n          null !== instance &&\n            (initializeClassErrorUpdate(\n              error,\n              instance,\n              nearestMountedAncestor,\n              sourceFiber\n            ),\n            markRootUpdated$1(instance, 2),\n            ensureRootIsScheduled(instance));\n          break;\n        }\n      }\n      nearestMountedAncestor = nearestMountedAncestor.return;\n    }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n  var pingCache = root.pingCache;\n  if (null === pingCache) {\n    pingCache = root.pingCache = new PossiblyWeakMap();\n    var threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else\n    (threadIDs = pingCache.get(wakeable)),\n      void 0 === threadIDs &&\n        ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n  threadIDs.has(lanes) ||\n    ((workInProgressRootDidAttachPingListener = !0),\n    threadIDs.add(lanes),\n    (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n    wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n  null !== pingCache && pingCache.delete(wakeable);\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n  root.warmLanes &= ~pingedLanes;\n  workInProgressRoot === root &&\n    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n    (4 === workInProgressRootExitStatus ||\n    (3 === workInProgressRootExitStatus &&\n      (workInProgressRootRenderLanes & 62914560) ===\n        workInProgressRootRenderLanes &&\n      300 > now() - globalMostRecentFallbackTime)\n      ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n      : (workInProgressRootPingedLanes |= pingedLanes),\n    workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n      (workInProgressSuspendedRetryLanes = 0));\n  ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  0 === retryLane && (retryLane = claimNextRetryLane());\n  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n  null !== boundaryFiber &&\n    (markRootUpdated$1(boundaryFiber, retryLane),\n    ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState,\n    retryLane = 0;\n  null !== suspenseState && (retryLane = suspenseState.retryLane);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = 0;\n  switch (boundaryFiber.tag) {\n    case 13:\n      var retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n      null !== suspenseState && (retryLane = suspenseState.retryLane);\n      break;\n    case 19:\n      retryCache = boundaryFiber.stateNode;\n      break;\n    case 22:\n      retryCache = boundaryFiber.stateNode._retryCache;\n      break;\n    default:\n      throw Error(formatProdErrorMessage(314));\n  }\n  null !== retryCache && retryCache.delete(wakeable);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n  return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n  lastScheduledRoot = null,\n  didScheduleMicrotask = !1,\n  mightHavePendingSyncWork = !1,\n  isFlushingWork = !1,\n  currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n  root !== lastScheduledRoot &&\n    null === root.next &&\n    (null === lastScheduledRoot\n      ? (firstScheduledRoot = lastScheduledRoot = root)\n      : (lastScheduledRoot = lastScheduledRoot.next = root));\n  mightHavePendingSyncWork = !0;\n  didScheduleMicrotask ||\n    ((didScheduleMicrotask = !0),\n    scheduleImmediateTask(processRootScheduleInMicrotask));\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n  if (!isFlushingWork && mightHavePendingSyncWork) {\n    isFlushingWork = !0;\n    do {\n      var didPerformSomeWork = !1;\n      for (var root$172 = firstScheduledRoot; null !== root$172; ) {\n        if (!onlyLegacy)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root$172.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root$172.suspendedLanes,\n                pingedLanes = root$172.pingedLanes;\n              JSCompiler_inline_result =\n                (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n              JSCompiler_inline_result &=\n                pendingLanes & ~(suspendedLanes & ~pingedLanes);\n              JSCompiler_inline_result =\n                JSCompiler_inline_result & 201326677\n                  ? (JSCompiler_inline_result & 201326677) | 1\n                  : JSCompiler_inline_result\n                    ? JSCompiler_inline_result | 2\n                    : 0;\n            }\n            0 !== JSCompiler_inline_result &&\n              ((didPerformSomeWork = !0),\n              performSyncWorkOnRoot(root$172, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root$172,\n                root$172 === workInProgressRoot ? JSCompiler_inline_result : 0\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root$172, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root$172, JSCompiler_inline_result));\n        root$172 = root$172.next;\n      }\n    } while (didPerformSomeWork);\n    isFlushingWork = !1;\n  }\n}\nfunction processRootScheduleInMicrotask() {\n  mightHavePendingSyncWork = didScheduleMicrotask = !1;\n  var syncTransitionLanes = 0;\n  0 !== currentEventTransitionLane &&\n    (shouldAttemptEagerTransition() &&\n      (syncTransitionLanes = currentEventTransitionLane),\n    (currentEventTransitionLane = 0));\n  for (\n    var currentTime = now(), prev = null, root = firstScheduledRoot;\n    null !== root;\n\n  ) {\n    var next = root.next,\n      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n    if (0 === nextLanes)\n      (root.next = null),\n        null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n        null === next && (lastScheduledRoot = prev);\n    else if (\n      ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n    )\n      mightHavePendingSyncWork = !0;\n    root = next;\n  }\n  flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n  for (\n    var suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes & -62914561;\n    0 < lanes;\n\n  ) {\n    var index$5 = 31 - clz32(lanes),\n      lane = 1 << index$5,\n      expirationTime = expirationTimes[index$5];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  currentTime = workInProgressRoot;\n  suspendedLanes = workInProgressRootRenderLanes;\n  suspendedLanes = getNextLanes(\n    root,\n    root === currentTime ? suspendedLanes : 0\n  );\n  pingedLanes = root.callbackNode;\n  if (\n    0 === suspendedLanes ||\n    (root === currentTime && 2 === workInProgressSuspendedReason) ||\n    null !== root.cancelPendingCommit\n  )\n    return (\n      null !== pingedLanes &&\n        null !== pingedLanes &&\n        cancelCallback$1(pingedLanes),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0)\n    );\n  if (\n    0 === (suspendedLanes & 3) ||\n    checkIfRootIsPrerendering(root, suspendedLanes)\n  ) {\n    currentTime = suspendedLanes & -suspendedLanes;\n    if (currentTime === root.callbackPriority) return currentTime;\n    null !== pingedLanes && cancelCallback$1(pingedLanes);\n    switch (lanesToEventPriority(suspendedLanes)) {\n      case 2:\n      case 8:\n        suspendedLanes = UserBlockingPriority;\n        break;\n      case 32:\n        suspendedLanes = NormalPriority$1;\n        break;\n      case 268435456:\n        suspendedLanes = IdlePriority;\n        break;\n      default:\n        suspendedLanes = NormalPriority$1;\n    }\n    pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n    suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n    root.callbackPriority = currentTime;\n    root.callbackNode = suspendedLanes;\n    return currentTime;\n  }\n  null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n  root.callbackPriority = 2;\n  root.callbackNode = null;\n  return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n  var originalCallbackNode = root.callbackNode;\n  if (flushPassiveEffects() && root.callbackNode !== originalCallbackNode)\n    return null;\n  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0\n  );\n  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n  scheduleTaskForRootDuringMicrotask(root, now());\n  return null != root.callbackNode && root.callbackNode === originalCallbackNode\n    ? performWorkOnRootViaSchedulerTask.bind(null, root)\n    : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n  if (flushPassiveEffects()) return null;\n  performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateTask(cb) {\n  scheduleMicrotask(function () {\n    0 !== (executionContext & 6)\n      ? scheduleCallback$3(ImmediatePriority, cb)\n      : cb();\n  });\n}\nfunction requestTransitionLane() {\n  0 === currentEventTransitionLane &&\n    (currentEventTransitionLane = claimNextTransitionLane());\n  return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n  return null == actionProp ||\n    \"symbol\" === typeof actionProp ||\n    \"boolean\" === typeof actionProp\n    ? null\n    : \"function\" === typeof actionProp\n      ? actionProp\n      : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n  var temp = submitter.ownerDocument.createElement(\"input\");\n  temp.name = submitter.name;\n  temp.value = submitter.value;\n  form.id && temp.setAttribute(\"form\", form.id);\n  submitter.parentNode.insertBefore(temp, submitter);\n  form = new FormData(form);\n  temp.parentNode.removeChild(temp);\n  return form;\n}\nfunction extractEvents$1(\n  dispatchQueue,\n  domEventName,\n  maybeTargetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  if (\n    \"submit\" === domEventName &&\n    maybeTargetInst &&\n    maybeTargetInst.stateNode === nativeEventTarget\n  ) {\n    var action = coerceFormActionProp(\n        (nativeEventTarget[internalPropsKey] || null).action\n      ),\n      submitter = nativeEvent.submitter;\n    submitter &&\n      ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n        ? coerceFormActionProp(domEventName.formAction)\n        : submitter.getAttribute(\"formAction\")),\n      null !== domEventName && ((action = domEventName), (submitter = null)));\n    var event = new SyntheticEvent(\n      \"action\",\n      \"action\",\n      null,\n      nativeEvent,\n      nativeEventTarget\n    );\n    dispatchQueue.push({\n      event: event,\n      listeners: [\n        {\n          instance: null,\n          listener: function () {\n            if (nativeEvent.defaultPrevented) {\n              if (0 !== currentEventTransitionLane) {\n                var formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget);\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  null,\n                  formData\n                );\n              }\n            } else\n              \"function\" === typeof action &&\n                (event.preventDefault(),\n                (formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget)),\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  action,\n                  formData\n                ));\n          },\n          currentTarget: nativeEventTarget\n        }\n      ]\n    });\n  }\n}\nfor (\n  var i$jscomp$inline_1439 = 0;\n  i$jscomp$inline_1439 < simpleEventPluginEvents.length;\n  i$jscomp$inline_1439++\n) {\n  var eventName$jscomp$inline_1440 =\n      simpleEventPluginEvents[i$jscomp$inline_1439],\n    domEventName$jscomp$inline_1441 =\n      eventName$jscomp$inline_1440.toLowerCase(),\n    capitalizedEvent$jscomp$inline_1442 =\n      eventName$jscomp$inline_1440[0].toUpperCase() +\n      eventName$jscomp$inline_1440.slice(1);\n  registerSimpleEvent(\n    domEventName$jscomp$inline_1441,\n    \"on\" + capitalizedEvent$jscomp$inline_1442\n  );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n  \"onChange\",\n  \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onSelect\",\n  \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n    \" \"\n  )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n  \"compositionend\",\n  \"keypress\",\n  \"textInput\",\n  \"paste\"\n]);\nregisterTwoPhaseEvent(\n  \"onCompositionEnd\",\n  \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionStart\",\n  \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionUpdate\",\n  \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n    \"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(\n      \" \"\n    ),\n  nonDelegatedEvents = new Set(\n    \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n      .split(\" \")\n      .concat(mediaEventTypes)\n  );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  eventSystemFlags = 0 !== (eventSystemFlags & 4);\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n      event = _dispatchQueue$i.event;\n    _dispatchQueue$i = _dispatchQueue$i.listeners;\n    a: {\n      var previousInstance = void 0;\n      if (eventSystemFlags)\n        for (\n          var i$jscomp$0 = _dispatchQueue$i.length - 1;\n          0 <= i$jscomp$0;\n          i$jscomp$0--\n        ) {\n          var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n            instance = _dispatchListeners$i.instance,\n            currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n      else\n        for (\n          i$jscomp$0 = 0;\n          i$jscomp$0 < _dispatchQueue$i.length;\n          i$jscomp$0++\n        ) {\n          _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n          instance = _dispatchListeners$i.instance;\n          currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n    }\n  }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n  void 0 === JSCompiler_inline_result &&\n    (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n      new Set());\n  var listenerSetKey = domEventName + \"__bubble\";\n  JSCompiler_inline_result.has(listenerSetKey) ||\n    (addTrappedEventListener(targetElement, domEventName, 2, !1),\n    JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  var eventSystemFlags = 0;\n  isCapturePhaseListener && (eventSystemFlags |= 4);\n  addTrappedEventListener(\n    target,\n    domEventName,\n    eventSystemFlags,\n    isCapturePhaseListener\n  );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = !0;\n    allNativeEvents.forEach(function (domEventName) {\n      \"selectionchange\" !== domEventName &&\n        (nonDelegatedEvents.has(domEventName) ||\n          listenToNativeEvent(domEventName, !1, rootContainerElement),\n        listenToNativeEvent(domEventName, !0, rootContainerElement));\n    });\n    var ownerDocument =\n      9 === rootContainerElement.nodeType\n        ? rootContainerElement\n        : rootContainerElement.ownerDocument;\n    null === ownerDocument ||\n      ownerDocument[listeningMarker] ||\n      ((ownerDocument[listeningMarker] = !0),\n      listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n  }\n}\nfunction addTrappedEventListener(\n  targetContainer,\n  domEventName,\n  eventSystemFlags,\n  isCapturePhaseListener\n) {\n  switch (getEventPriority(domEventName)) {\n    case 2:\n      var listenerWrapper = dispatchDiscreteEvent;\n      break;\n    case 8:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n    default:\n      listenerWrapper = dispatchEvent;\n  }\n  eventSystemFlags = listenerWrapper.bind(\n    null,\n    domEventName,\n    eventSystemFlags,\n    targetContainer\n  );\n  listenerWrapper = void 0;\n  !passiveBrowserEventsSupported ||\n    (\"touchstart\" !== domEventName &&\n      \"touchmove\" !== domEventName &&\n      \"wheel\" !== domEventName) ||\n    (listenerWrapper = !0);\n  isCapturePhaseListener\n    ? void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          capture: !0,\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n    : void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n  domEventName,\n  eventSystemFlags,\n  nativeEvent,\n  targetInst$jscomp$0,\n  targetContainer\n) {\n  var ancestorInst = targetInst$jscomp$0;\n  if (\n    0 === (eventSystemFlags & 1) &&\n    0 === (eventSystemFlags & 2) &&\n    null !== targetInst$jscomp$0\n  )\n    a: for (;;) {\n      if (null === targetInst$jscomp$0) return;\n      var nodeTag = targetInst$jscomp$0.tag;\n      if (3 === nodeTag || 4 === nodeTag) {\n        var container = targetInst$jscomp$0.stateNode.containerInfo;\n        if (\n          container === targetContainer ||\n          (8 === container.nodeType && container.parentNode === targetContainer)\n        )\n          break;\n        if (4 === nodeTag)\n          for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n            var grandTag = nodeTag.tag;\n            if (3 === grandTag || 4 === grandTag)\n              if (\n                ((grandTag = nodeTag.stateNode.containerInfo),\n                grandTag === targetContainer ||\n                  (8 === grandTag.nodeType &&\n                    grandTag.parentNode === targetContainer))\n              )\n                return;\n            nodeTag = nodeTag.return;\n          }\n        for (; null !== container; ) {\n          nodeTag = getClosestInstanceFromNode(container);\n          if (null === nodeTag) return;\n          grandTag = nodeTag.tag;\n          if (\n            5 === grandTag ||\n            6 === grandTag ||\n            26 === grandTag ||\n            27 === grandTag\n          ) {\n            targetInst$jscomp$0 = ancestorInst = nodeTag;\n            continue a;\n          }\n          container = container.parentNode;\n        }\n      }\n      targetInst$jscomp$0 = targetInst$jscomp$0.return;\n    }\n  batchedUpdates$1(function () {\n    var targetInst = ancestorInst,\n      nativeEventTarget = getEventTarget(nativeEvent),\n      dispatchQueue = [];\n    a: {\n      var reactName = topLevelEventsToReactNames.get(domEventName);\n      if (void 0 !== reactName) {\n        var SyntheticEventCtor = SyntheticEvent,\n          reactEventType = domEventName;\n        switch (domEventName) {\n          case \"keypress\":\n            if (0 === getEventCharCode(nativeEvent)) break a;\n          case \"keydown\":\n          case \"keyup\":\n            SyntheticEventCtor = SyntheticKeyboardEvent;\n            break;\n          case \"focusin\":\n            reactEventType = \"focus\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"focusout\":\n            reactEventType = \"blur\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"beforeblur\":\n          case \"afterblur\":\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"click\":\n            if (2 === nativeEvent.button) break a;\n          case \"auxclick\":\n          case \"dblclick\":\n          case \"mousedown\":\n          case \"mousemove\":\n          case \"mouseup\":\n          case \"mouseout\":\n          case \"mouseover\":\n          case \"contextmenu\":\n            SyntheticEventCtor = SyntheticMouseEvent;\n            break;\n          case \"drag\":\n          case \"dragend\":\n          case \"dragenter\":\n          case \"dragexit\":\n          case \"dragleave\":\n          case \"dragover\":\n          case \"dragstart\":\n          case \"drop\":\n            SyntheticEventCtor = SyntheticDragEvent;\n            break;\n          case \"touchcancel\":\n          case \"touchend\":\n          case \"touchmove\":\n          case \"touchstart\":\n            SyntheticEventCtor = SyntheticTouchEvent;\n            break;\n          case ANIMATION_END:\n          case ANIMATION_ITERATION:\n          case ANIMATION_START:\n            SyntheticEventCtor = SyntheticAnimationEvent;\n            break;\n          case TRANSITION_END:\n            SyntheticEventCtor = SyntheticTransitionEvent;\n            break;\n          case \"scroll\":\n          case \"scrollend\":\n            SyntheticEventCtor = SyntheticUIEvent;\n            break;\n          case \"wheel\":\n            SyntheticEventCtor = SyntheticWheelEvent;\n            break;\n          case \"copy\":\n          case \"cut\":\n          case \"paste\":\n            SyntheticEventCtor = SyntheticClipboardEvent;\n            break;\n          case \"gotpointercapture\":\n          case \"lostpointercapture\":\n          case \"pointercancel\":\n          case \"pointerdown\":\n          case \"pointermove\":\n          case \"pointerout\":\n          case \"pointerover\":\n          case \"pointerup\":\n            SyntheticEventCtor = SyntheticPointerEvent;\n            break;\n          case \"toggle\":\n          case \"beforetoggle\":\n            SyntheticEventCtor = SyntheticToggleEvent;\n        }\n        var inCapturePhase = 0 !== (eventSystemFlags & 4),\n          accumulateTargetOnly =\n            !inCapturePhase &&\n            (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n          reactEventName = inCapturePhase\n            ? null !== reactName\n              ? reactName + \"Capture\"\n              : null\n            : reactName;\n        inCapturePhase = [];\n        for (\n          var instance = targetInst, lastHostComponent;\n          null !== instance;\n\n        ) {\n          var _instance = instance;\n          lastHostComponent = _instance.stateNode;\n          _instance = _instance.tag;\n          (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n            null === lastHostComponent ||\n            null === reactEventName ||\n            ((_instance = getListener(instance, reactEventName)),\n            null != _instance &&\n              inCapturePhase.push(\n                createDispatchListener(instance, _instance, lastHostComponent)\n              ));\n          if (accumulateTargetOnly) break;\n          instance = instance.return;\n        }\n        0 < inCapturePhase.length &&\n          ((reactName = new SyntheticEventCtor(\n            reactName,\n            reactEventType,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n      }\n    }\n    if (0 === (eventSystemFlags & 7)) {\n      a: {\n        reactName =\n          \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n        SyntheticEventCtor =\n          \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n        if (\n          reactName &&\n          nativeEvent !== currentReplayingEvent &&\n          (reactEventType =\n            nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n          (getClosestInstanceFromNode(reactEventType) ||\n            reactEventType[internalContainerInstanceKey])\n        )\n          break a;\n        if (SyntheticEventCtor || reactName) {\n          reactName =\n            nativeEventTarget.window === nativeEventTarget\n              ? nativeEventTarget\n              : (reactName = nativeEventTarget.ownerDocument)\n                ? reactName.defaultView || reactName.parentWindow\n                : window;\n          if (SyntheticEventCtor) {\n            if (\n              ((reactEventType =\n                nativeEvent.relatedTarget || nativeEvent.toElement),\n              (SyntheticEventCtor = targetInst),\n              (reactEventType = reactEventType\n                ? getClosestInstanceFromNode(reactEventType)\n                : null),\n              null !== reactEventType &&\n                ((accumulateTargetOnly =\n                  getNearestMountedFiber(reactEventType)),\n                (inCapturePhase = reactEventType.tag),\n                reactEventType !== accumulateTargetOnly ||\n                  (5 !== inCapturePhase &&\n                    27 !== inCapturePhase &&\n                    6 !== inCapturePhase)))\n            )\n              reactEventType = null;\n          } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n          if (SyntheticEventCtor !== reactEventType) {\n            inCapturePhase = SyntheticMouseEvent;\n            _instance = \"onMouseLeave\";\n            reactEventName = \"onMouseEnter\";\n            instance = \"mouse\";\n            if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n              (inCapturePhase = SyntheticPointerEvent),\n                (_instance = \"onPointerLeave\"),\n                (reactEventName = \"onPointerEnter\"),\n                (instance = \"pointer\");\n            accumulateTargetOnly =\n              null == SyntheticEventCtor\n                ? reactName\n                : getNodeFromInstance(SyntheticEventCtor);\n            lastHostComponent =\n              null == reactEventType\n                ? reactName\n                : getNodeFromInstance(reactEventType);\n            reactName = new inCapturePhase(\n              _instance,\n              instance + \"leave\",\n              SyntheticEventCtor,\n              nativeEvent,\n              nativeEventTarget\n            );\n            reactName.target = accumulateTargetOnly;\n            reactName.relatedTarget = lastHostComponent;\n            _instance = null;\n            getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n              ((inCapturePhase = new inCapturePhase(\n                reactEventName,\n                instance + \"enter\",\n                reactEventType,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (inCapturePhase.target = lastHostComponent),\n              (inCapturePhase.relatedTarget = accumulateTargetOnly),\n              (_instance = inCapturePhase));\n            accumulateTargetOnly = _instance;\n            if (SyntheticEventCtor && reactEventType)\n              b: {\n                inCapturePhase = SyntheticEventCtor;\n                reactEventName = reactEventType;\n                instance = 0;\n                for (\n                  lastHostComponent = inCapturePhase;\n                  lastHostComponent;\n                  lastHostComponent = getParent(lastHostComponent)\n                )\n                  instance++;\n                lastHostComponent = 0;\n                for (\n                  _instance = reactEventName;\n                  _instance;\n                  _instance = getParent(_instance)\n                )\n                  lastHostComponent++;\n                for (; 0 < instance - lastHostComponent; )\n                  (inCapturePhase = getParent(inCapturePhase)), instance--;\n                for (; 0 < lastHostComponent - instance; )\n                  (reactEventName = getParent(reactEventName)),\n                    lastHostComponent--;\n                for (; instance--; ) {\n                  if (\n                    inCapturePhase === reactEventName ||\n                    (null !== reactEventName &&\n                      inCapturePhase === reactEventName.alternate)\n                  )\n                    break b;\n                  inCapturePhase = getParent(inCapturePhase);\n                  reactEventName = getParent(reactEventName);\n                }\n                inCapturePhase = null;\n              }\n            else inCapturePhase = null;\n            null !== SyntheticEventCtor &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                reactName,\n                SyntheticEventCtor,\n                inCapturePhase,\n                !1\n              );\n            null !== reactEventType &&\n              null !== accumulateTargetOnly &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                accumulateTargetOnly,\n                reactEventType,\n                inCapturePhase,\n                !0\n              );\n          }\n        }\n      }\n      a: {\n        reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n        SyntheticEventCtor =\n          reactName.nodeName && reactName.nodeName.toLowerCase();\n        if (\n          \"select\" === SyntheticEventCtor ||\n          (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n        )\n          var getTargetInstFunc = getTargetInstForChangeEvent;\n        else if (isTextInputElement(reactName))\n          if (isInputEventSupported)\n            getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n          else {\n            getTargetInstFunc = getTargetInstForInputEventPolyfill;\n            var handleEventFunc = handleEventsForInputEventPolyfill;\n          }\n        else\n          (SyntheticEventCtor = reactName.nodeName),\n            !SyntheticEventCtor ||\n            \"input\" !== SyntheticEventCtor.toLowerCase() ||\n            (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n              ? targetInst &&\n                isCustomElement(targetInst.elementType) &&\n                (getTargetInstFunc = getTargetInstForChangeEvent)\n              : (getTargetInstFunc = getTargetInstForClickEvent);\n        if (\n          getTargetInstFunc &&\n          (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n        ) {\n          createAndAccumulateChangeEvent(\n            dispatchQueue,\n            getTargetInstFunc,\n            nativeEvent,\n            nativeEventTarget\n          );\n          break a;\n        }\n        handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n        \"focusout\" === domEventName &&\n          targetInst &&\n          \"number\" === reactName.type &&\n          null != targetInst.memoizedProps.value &&\n          setDefaultValue(reactName, \"number\", reactName.value);\n      }\n      handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n      switch (domEventName) {\n        case \"focusin\":\n          if (\n            isTextInputElement(handleEventFunc) ||\n            \"true\" === handleEventFunc.contentEditable\n          )\n            (activeElement = handleEventFunc),\n              (activeElementInst = targetInst),\n              (lastSelection = null);\n          break;\n        case \"focusout\":\n          lastSelection = activeElementInst = activeElement = null;\n          break;\n        case \"mousedown\":\n          mouseDown = !0;\n          break;\n        case \"contextmenu\":\n        case \"mouseup\":\n        case \"dragend\":\n          mouseDown = !1;\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n          break;\n        case \"selectionchange\":\n          if (skipSelectionChangeEvent) break;\n        case \"keydown\":\n        case \"keyup\":\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      }\n      var fallbackData;\n      if (canUseCompositionEvent)\n        b: {\n          switch (domEventName) {\n            case \"compositionstart\":\n              var eventType = \"onCompositionStart\";\n              break b;\n            case \"compositionend\":\n              eventType = \"onCompositionEnd\";\n              break b;\n            case \"compositionupdate\":\n              eventType = \"onCompositionUpdate\";\n              break b;\n          }\n          eventType = void 0;\n        }\n      else\n        isComposing\n          ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n            (eventType = \"onCompositionEnd\")\n          : \"keydown\" === domEventName &&\n            229 === nativeEvent.keyCode &&\n            (eventType = \"onCompositionStart\");\n      eventType &&\n        (useFallbackCompositionData &&\n          \"ko\" !== nativeEvent.locale &&\n          (isComposing || \"onCompositionStart\" !== eventType\n            ? \"onCompositionEnd\" === eventType &&\n              isComposing &&\n              (fallbackData = getData())\n            : ((root = nativeEventTarget),\n              (startText = \"value\" in root ? root.value : root.textContent),\n              (isComposing = !0))),\n        (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n        0 < handleEventFunc.length &&\n          ((eventType = new SyntheticCompositionEvent(\n            eventType,\n            domEventName,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n          fallbackData\n            ? (eventType.data = fallbackData)\n            : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n              null !== fallbackData && (eventType.data = fallbackData))));\n      if (\n        (fallbackData = canUseTextInputEvent\n          ? getNativeBeforeInputChars(domEventName, nativeEvent)\n          : getFallbackBeforeInputChars(domEventName, nativeEvent))\n      )\n        (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n          0 < eventType.length &&\n            ((handleEventFunc = new SyntheticCompositionEvent(\n              \"onBeforeInput\",\n              \"beforeinput\",\n              null,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            dispatchQueue.push({\n              event: handleEventFunc,\n              listeners: eventType\n            }),\n            (handleEventFunc.data = fallbackData));\n      extractEvents$1(\n        dispatchQueue,\n        domEventName,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      );\n    }\n    processDispatchQueue(dispatchQueue, eventSystemFlags);\n  });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  for (\n    var captureName = reactName + \"Capture\", listeners = [];\n    null !== targetFiber;\n\n  ) {\n    var _instance2 = targetFiber,\n      stateNode = _instance2.stateNode;\n    _instance2 = _instance2.tag;\n    (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n      null === stateNode ||\n      ((_instance2 = getListener(targetFiber, captureName)),\n      null != _instance2 &&\n        listeners.unshift(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ),\n      (_instance2 = getListener(targetFiber, reactName)),\n      null != _instance2 &&\n        listeners.push(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ));\n    targetFiber = targetFiber.return;\n  }\n  return listeners;\n}\nfunction getParent(inst) {\n  if (null === inst) return null;\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag && 27 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n  dispatchQueue,\n  event,\n  target,\n  common,\n  inCapturePhase\n) {\n  for (\n    var registrationName = event._reactName, listeners = [];\n    null !== target && target !== common;\n\n  ) {\n    var _instance3 = target,\n      alternate = _instance3.alternate,\n      stateNode = _instance3.stateNode;\n    _instance3 = _instance3.tag;\n    if (null !== alternate && alternate === common) break;\n    (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n      null === stateNode ||\n      ((alternate = stateNode),\n      inCapturePhase\n        ? ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.unshift(\n              createDispatchListener(target, stateNode, alternate)\n            ))\n        : inCapturePhase ||\n          ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.push(\n              createDispatchListener(target, stateNode, alternate)\n            )));\n    target = target.return;\n  }\n  0 !== listeners.length &&\n    dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n  NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  return (\"string\" === typeof markup ? markup : \"\" + markup)\n    .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n    .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n  clientText = normalizeMarkupForTextOrAttribute(clientText);\n  return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction noop$1() {}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"children\":\n      \"string\" === typeof value\n        ? \"body\" === tag ||\n          (\"textarea\" === tag && \"\" === value) ||\n          setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          \"body\" !== tag &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"className\":\n      setValueForKnownAttribute(domElement, \"class\", value);\n      break;\n    case \"tabIndex\":\n      setValueForKnownAttribute(domElement, \"tabindex\", value);\n      break;\n    case \"dir\":\n    case \"role\":\n    case \"viewBox\":\n    case \"width\":\n    case \"height\":\n      setValueForKnownAttribute(domElement, key, value);\n      break;\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"data\":\n      if (\"object\" !== tag) {\n        setValueForKnownAttribute(domElement, \"data\", value);\n        break;\n      }\n    case \"src\":\n    case \"href\":\n      if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"action\":\n    case \"formAction\":\n      if (\"function\" === typeof value) {\n        domElement.setAttribute(\n          key,\n          \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n        );\n        break;\n      } else\n        \"function\" === typeof prevValue &&\n          (\"formAction\" === key\n            ? (\"input\" !== tag &&\n                setProp(domElement, tag, \"name\", props.name, props, null),\n              setProp(\n                domElement,\n                tag,\n                \"formEncType\",\n                props.formEncType,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formMethod\",\n                props.formMethod,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formTarget\",\n                props.formTarget,\n                props,\n                null\n              ))\n            : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n              setProp(domElement, tag, \"method\", props.method, props, null),\n              setProp(domElement, tag, \"target\", props.target, props, null)));\n      if (\n        null == value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"multiple\":\n      domElement.multiple =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"muted\":\n      domElement.muted =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"defaultValue\":\n    case \"defaultChecked\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"autoFocus\":\n      break;\n    case \"xlinkHref\":\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"boolean\" === typeof value ||\n        \"symbol\" === typeof value\n      ) {\n        domElement.removeAttribute(\"xlink:href\");\n        break;\n      }\n      key = sanitizeURL(\"\" + value);\n      domElement.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        key\n      );\n      break;\n    case \"contentEditable\":\n    case \"spellCheck\":\n    case \"draggable\":\n    case \"value\":\n    case \"autoReverse\":\n    case \"externalResourcesRequired\":\n    case \"focusable\":\n    case \"preserveAlpha\":\n      null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\" + value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"inert\":\n    case \"allowFullScreen\":\n    case \"async\":\n    case \"autoPlay\":\n    case \"controls\":\n    case \"default\":\n    case \"defer\":\n    case \"disabled\":\n    case \"disablePictureInPicture\":\n    case \"disableRemotePlayback\":\n    case \"formNoValidate\":\n    case \"hidden\":\n    case \"loop\":\n    case \"noModule\":\n    case \"noValidate\":\n    case \"open\":\n    case \"playsInline\":\n    case \"readOnly\":\n    case \"required\":\n    case \"reversed\":\n    case \"scoped\":\n    case \"seamless\":\n    case \"itemScope\":\n      value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\")\n        : domElement.removeAttribute(key);\n      break;\n    case \"capture\":\n    case \"download\":\n      !0 === value\n        ? domElement.setAttribute(key, \"\")\n        : !1 !== value &&\n            null != value &&\n            \"function\" !== typeof value &&\n            \"symbol\" !== typeof value\n          ? domElement.setAttribute(key, value)\n          : domElement.removeAttribute(key);\n      break;\n    case \"cols\":\n    case \"rows\":\n    case \"size\":\n    case \"span\":\n      null != value &&\n      \"function\" !== typeof value &&\n      \"symbol\" !== typeof value &&\n      !isNaN(value) &&\n      1 <= value\n        ? domElement.setAttribute(key, value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"rowSpan\":\n    case \"start\":\n      null == value ||\n      \"function\" === typeof value ||\n      \"symbol\" === typeof value ||\n      isNaN(value)\n        ? domElement.removeAttribute(key)\n        : domElement.setAttribute(key, value);\n      break;\n    case \"popover\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      setValueForAttribute(domElement, \"popover\", value);\n      break;\n    case \"xlinkActuate\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:actuate\",\n        value\n      );\n      break;\n    case \"xlinkArcrole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:arcrole\",\n        value\n      );\n      break;\n    case \"xlinkRole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:role\",\n        value\n      );\n      break;\n    case \"xlinkShow\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:show\",\n        value\n      );\n      break;\n    case \"xlinkTitle\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:title\",\n        value\n      );\n      break;\n    case \"xlinkType\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:type\",\n        value\n      );\n      break;\n    case \"xmlBase\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:base\",\n        value\n      );\n      break;\n    case \"xmlLang\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:lang\",\n        value\n      );\n      break;\n    case \"xmlSpace\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:space\",\n        value\n      );\n      break;\n    case \"is\":\n      setValueForAttribute(domElement, \"is\", value);\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (\n        !(2 < key.length) ||\n        (\"o\" !== key[0] && \"O\" !== key[0]) ||\n        (\"n\" !== key[1] && \"N\" !== key[1])\n      )\n        (key = aliases.get(key) || key),\n          setValueForAttribute(domElement, key, value);\n  }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"children\":\n      \"string\" === typeof value\n        ? setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (!registrationNameDependencies.hasOwnProperty(key))\n        a: {\n          if (\n            \"o\" === key[0] &&\n            \"n\" === key[1] &&\n            ((props = key.endsWith(\"Capture\")),\n            (tag = key.slice(2, props ? key.length - 7 : void 0)),\n            (prevValue = domElement[internalPropsKey] || null),\n            (prevValue = null != prevValue ? prevValue[key] : null),\n            \"function\" === typeof prevValue &&\n              domElement.removeEventListener(tag, prevValue, props),\n            \"function\" === typeof value)\n          ) {\n            \"function\" !== typeof prevValue &&\n              null !== prevValue &&\n              (key in domElement\n                ? (domElement[key] = null)\n                : domElement.hasAttribute(key) &&\n                  domElement.removeAttribute(key));\n            domElement.addEventListener(tag, value, props);\n            break a;\n          }\n          key in domElement\n            ? (domElement[key] = value)\n            : !0 === value\n              ? domElement.setAttribute(key, \"\")\n              : setValueForAttribute(domElement, key, value);\n        }\n  }\n}\nfunction setInitialProperties(domElement, tag, props) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"img\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      var hasSrc = !1,\n        hasSrcSet = !1,\n        propKey;\n      for (propKey in props)\n        if (props.hasOwnProperty(propKey)) {\n          var propValue = props[propKey];\n          if (null != propValue)\n            switch (propKey) {\n              case \"src\":\n                hasSrc = !0;\n                break;\n              case \"srcSet\":\n                hasSrcSet = !0;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                throw Error(formatProdErrorMessage(137, tag));\n              default:\n                setProp(domElement, tag, propKey, propValue, props, null);\n            }\n        }\n      hasSrcSet &&\n        setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n      hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n      return;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      var defaultValue = (propKey = propValue = hasSrcSet = null),\n        checked = null,\n        defaultChecked = null;\n      for (hasSrc in props)\n        if (props.hasOwnProperty(hasSrc)) {\n          var propValue$186 = props[hasSrc];\n          if (null != propValue$186)\n            switch (hasSrc) {\n              case \"name\":\n                hasSrcSet = propValue$186;\n                break;\n              case \"type\":\n                propValue = propValue$186;\n                break;\n              case \"checked\":\n                checked = propValue$186;\n                break;\n              case \"defaultChecked\":\n                defaultChecked = propValue$186;\n                break;\n              case \"value\":\n                propKey = propValue$186;\n                break;\n              case \"defaultValue\":\n                defaultValue = propValue$186;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                if (null != propValue$186)\n                  throw Error(formatProdErrorMessage(137, tag));\n                break;\n              default:\n                setProp(domElement, tag, hasSrc, propValue$186, props, null);\n            }\n        }\n      initInput(\n        domElement,\n        propKey,\n        defaultValue,\n        checked,\n        defaultChecked,\n        propValue,\n        hasSrcSet,\n        !1\n      );\n      track(domElement);\n      return;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      hasSrc = propValue = propKey = null;\n      for (hasSrcSet in props)\n        if (\n          props.hasOwnProperty(hasSrcSet) &&\n          ((defaultValue = props[hasSrcSet]), null != defaultValue)\n        )\n          switch (hasSrcSet) {\n            case \"value\":\n              propKey = defaultValue;\n              break;\n            case \"defaultValue\":\n              propValue = defaultValue;\n              break;\n            case \"multiple\":\n              hasSrc = defaultValue;\n            default:\n              setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n          }\n      tag = propKey;\n      props = propValue;\n      domElement.multiple = !!hasSrc;\n      null != tag\n        ? updateOptions(domElement, !!hasSrc, tag, !1)\n        : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n      return;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      propKey = hasSrcSet = hasSrc = null;\n      for (propValue in props)\n        if (\n          props.hasOwnProperty(propValue) &&\n          ((defaultValue = props[propValue]), null != defaultValue)\n        )\n          switch (propValue) {\n            case \"value\":\n              hasSrc = defaultValue;\n              break;\n            case \"defaultValue\":\n              hasSrcSet = defaultValue;\n              break;\n            case \"children\":\n              propKey = defaultValue;\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              setProp(domElement, tag, propValue, defaultValue, props, null);\n          }\n      initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n      track(domElement);\n      return;\n    case \"option\":\n      for (checked in props)\n        if (\n          props.hasOwnProperty(checked) &&\n          ((hasSrc = props[checked]), null != hasSrc)\n        )\n          switch (checked) {\n            case \"selected\":\n              domElement.selected =\n                hasSrc &&\n                \"function\" !== typeof hasSrc &&\n                \"symbol\" !== typeof hasSrc;\n              break;\n            default:\n              setProp(domElement, tag, checked, hasSrc, props, null);\n          }\n      return;\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"cancel\", domElement);\n      listenToNonDelegatedEvent(\"close\", domElement);\n      break;\n    case \"iframe\":\n    case \"object\":\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n        listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n      break;\n    case \"image\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      break;\n    case \"embed\":\n    case \"source\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", domElement),\n        listenToNonDelegatedEvent(\"load\", domElement);\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (defaultChecked in props)\n        if (\n          props.hasOwnProperty(defaultChecked) &&\n          ((hasSrc = props[defaultChecked]), null != hasSrc)\n        )\n          switch (defaultChecked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              throw Error(formatProdErrorMessage(137, tag));\n            default:\n              setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (propValue$186 in props)\n          props.hasOwnProperty(propValue$186) &&\n            ((hasSrc = props[propValue$186]),\n            void 0 !== hasSrc &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propValue$186,\n                hasSrc,\n                props,\n                void 0\n              ));\n        return;\n      }\n  }\n  for (defaultValue in props)\n    props.hasOwnProperty(defaultValue) &&\n      ((hasSrc = props[defaultValue]),\n      null != hasSrc &&\n        setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"input\":\n      var name = null,\n        type = null,\n        value = null,\n        defaultValue = null,\n        lastDefaultValue = null,\n        checked = null,\n        defaultChecked = null;\n      for (propKey in lastProps) {\n        var lastProp = lastProps[propKey];\n        if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n          switch (propKey) {\n            case \"checked\":\n              break;\n            case \"value\":\n              break;\n            case \"defaultValue\":\n              lastDefaultValue = lastProp;\n            default:\n              nextProps.hasOwnProperty(propKey) ||\n                setProp(domElement, tag, propKey, null, nextProps, lastProp);\n          }\n      }\n      for (var propKey$203 in nextProps) {\n        var propKey = nextProps[propKey$203];\n        lastProp = lastProps[propKey$203];\n        if (\n          nextProps.hasOwnProperty(propKey$203) &&\n          (null != propKey || null != lastProp)\n        )\n          switch (propKey$203) {\n            case \"type\":\n              type = propKey;\n              break;\n            case \"name\":\n              name = propKey;\n              break;\n            case \"checked\":\n              checked = propKey;\n              break;\n            case \"defaultChecked\":\n              defaultChecked = propKey;\n              break;\n            case \"value\":\n              value = propKey;\n              break;\n            case \"defaultValue\":\n              defaultValue = propKey;\n              break;\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              propKey !== lastProp &&\n                setProp(\n                  domElement,\n                  tag,\n                  propKey$203,\n                  propKey,\n                  nextProps,\n                  lastProp\n                );\n          }\n      }\n      updateInput(\n        domElement,\n        value,\n        defaultValue,\n        lastDefaultValue,\n        checked,\n        defaultChecked,\n        type,\n        name\n      );\n      return;\n    case \"select\":\n      propKey = value = defaultValue = propKey$203 = null;\n      for (type in lastProps)\n        if (\n          ((lastDefaultValue = lastProps[type]),\n          lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n        )\n          switch (type) {\n            case \"value\":\n              break;\n            case \"multiple\":\n              propKey = lastDefaultValue;\n            default:\n              nextProps.hasOwnProperty(type) ||\n                setProp(\n                  domElement,\n                  tag,\n                  type,\n                  null,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      for (name in nextProps)\n        if (\n          ((type = nextProps[name]),\n          (lastDefaultValue = lastProps[name]),\n          nextProps.hasOwnProperty(name) &&\n            (null != type || null != lastDefaultValue))\n        )\n          switch (name) {\n            case \"value\":\n              propKey$203 = type;\n              break;\n            case \"defaultValue\":\n              defaultValue = type;\n              break;\n            case \"multiple\":\n              value = type;\n            default:\n              type !== lastDefaultValue &&\n                setProp(\n                  domElement,\n                  tag,\n                  name,\n                  type,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      tag = defaultValue;\n      lastProps = value;\n      nextProps = propKey;\n      null != propKey$203\n        ? updateOptions(domElement, !!lastProps, propKey$203, !1)\n        : !!nextProps !== !!lastProps &&\n          (null != tag\n            ? updateOptions(domElement, !!lastProps, tag, !0)\n            : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n      return;\n    case \"textarea\":\n      propKey = propKey$203 = null;\n      for (defaultValue in lastProps)\n        if (\n          ((name = lastProps[defaultValue]),\n          lastProps.hasOwnProperty(defaultValue) &&\n            null != name &&\n            !nextProps.hasOwnProperty(defaultValue))\n        )\n          switch (defaultValue) {\n            case \"value\":\n              break;\n            case \"children\":\n              break;\n            default:\n              setProp(domElement, tag, defaultValue, null, nextProps, name);\n          }\n      for (value in nextProps)\n        if (\n          ((name = nextProps[value]),\n          (type = lastProps[value]),\n          nextProps.hasOwnProperty(value) && (null != name || null != type))\n        )\n          switch (value) {\n            case \"value\":\n              propKey$203 = name;\n              break;\n            case \"defaultValue\":\n              propKey = name;\n              break;\n            case \"children\":\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != name) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              name !== type &&\n                setProp(domElement, tag, value, name, nextProps, type);\n          }\n      updateTextarea(domElement, propKey$203, propKey);\n      return;\n    case \"option\":\n      for (var propKey$219 in lastProps)\n        if (\n          ((propKey$203 = lastProps[propKey$219]),\n          lastProps.hasOwnProperty(propKey$219) &&\n            null != propKey$203 &&\n            !nextProps.hasOwnProperty(propKey$219))\n        )\n          switch (propKey$219) {\n            case \"selected\":\n              domElement.selected = !1;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                propKey$219,\n                null,\n                nextProps,\n                propKey$203\n              );\n          }\n      for (lastDefaultValue in nextProps)\n        if (\n          ((propKey$203 = nextProps[lastDefaultValue]),\n          (propKey = lastProps[lastDefaultValue]),\n          nextProps.hasOwnProperty(lastDefaultValue) &&\n            propKey$203 !== propKey &&\n            (null != propKey$203 || null != propKey))\n        )\n          switch (lastDefaultValue) {\n            case \"selected\":\n              domElement.selected =\n                propKey$203 &&\n                \"function\" !== typeof propKey$203 &&\n                \"symbol\" !== typeof propKey$203;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                lastDefaultValue,\n                propKey$203,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    case \"img\":\n    case \"link\":\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"embed\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"source\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (var propKey$224 in lastProps)\n        (propKey$203 = lastProps[propKey$224]),\n          lastProps.hasOwnProperty(propKey$224) &&\n            null != propKey$203 &&\n            !nextProps.hasOwnProperty(propKey$224) &&\n            setProp(domElement, tag, propKey$224, null, nextProps, propKey$203);\n      for (checked in nextProps)\n        if (\n          ((propKey$203 = nextProps[checked]),\n          (propKey = lastProps[checked]),\n          nextProps.hasOwnProperty(checked) &&\n            propKey$203 !== propKey &&\n            (null != propKey$203 || null != propKey))\n        )\n          switch (checked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey$203)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                checked,\n                propKey$203,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (var propKey$229 in lastProps)\n          (propKey$203 = lastProps[propKey$229]),\n            lastProps.hasOwnProperty(propKey$229) &&\n              void 0 !== propKey$203 &&\n              !nextProps.hasOwnProperty(propKey$229) &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propKey$229,\n                void 0,\n                nextProps,\n                propKey$203\n              );\n        for (defaultChecked in nextProps)\n          (propKey$203 = nextProps[defaultChecked]),\n            (propKey = lastProps[defaultChecked]),\n            !nextProps.hasOwnProperty(defaultChecked) ||\n              propKey$203 === propKey ||\n              (void 0 === propKey$203 && void 0 === propKey) ||\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                defaultChecked,\n                propKey$203,\n                nextProps,\n                propKey\n              );\n        return;\n      }\n  }\n  for (var propKey$234 in lastProps)\n    (propKey$203 = lastProps[propKey$234]),\n      lastProps.hasOwnProperty(propKey$234) &&\n        null != propKey$203 &&\n        !nextProps.hasOwnProperty(propKey$234) &&\n        setProp(domElement, tag, propKey$234, null, nextProps, propKey$203);\n  for (lastProp in nextProps)\n    (propKey$203 = nextProps[lastProp]),\n      (propKey = lastProps[lastProp]),\n      !nextProps.hasOwnProperty(lastProp) ||\n        propKey$203 === propKey ||\n        (null == propKey$203 && null == propKey) ||\n        setProp(domElement, tag, lastProp, propKey$203, nextProps, propKey);\n}\nvar eventsEnabled = null,\n  selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return 9 === rootContainerElement.nodeType\n    ? rootContainerElement\n    : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n  switch (namespaceURI) {\n    case \"http://www.w3.org/2000/svg\":\n      return 1;\n    case \"http://www.w3.org/1998/Math/MathML\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n  if (0 === parentNamespace)\n    switch (type) {\n      case \"svg\":\n        return 1;\n      case \"math\":\n        return 2;\n      default:\n        return 0;\n    }\n  return 1 === parentNamespace && \"foreignObject\" === type\n    ? 0\n    : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n  return (\n    \"textarea\" === type ||\n    \"noscript\" === type ||\n    \"string\" === typeof props.children ||\n    \"number\" === typeof props.children ||\n    \"bigint\" === typeof props.children ||\n    (\"object\" === typeof props.dangerouslySetInnerHTML &&\n      null !== props.dangerouslySetInnerHTML &&\n      null != props.dangerouslySetInnerHTML.__html)\n  );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n  var event = window.event;\n  if (event && \"popstate\" === event.type) {\n    if (event === currentPopstateTransitionEvent) return !1;\n    currentPopstateTransitionEvent = event;\n    return !0;\n  }\n  currentPopstateTransitionEvent = null;\n  return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n  cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n  localPromise = \"function\" === typeof Promise ? Promise : void 0,\n  scheduleMicrotask =\n    \"function\" === typeof queueMicrotask\n      ? queueMicrotask\n      : \"undefined\" !== typeof localPromise\n        ? function (callback) {\n            return localPromise\n              .resolve(null)\n              .then(callback)\n              .catch(handleErrorInNextTick);\n          }\n        : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n  var node = suspenseInstance,\n    depth = 0;\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node)) {\n        if (0 === depth) {\n          parentInstance.removeChild(nextNode);\n          retryIfBlockedOn(suspenseInstance);\n          return;\n        }\n        depth--;\n      } else (\"$\" !== node && \"$?\" !== node && \"$!\" !== node) || depth++;\n    node = nextNode;\n  } while (node);\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction clearContainerSparingly(container) {\n  var nextNode = container.firstChild;\n  nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n  for (; nextNode; ) {\n    var node = nextNode;\n    nextNode = nextNode.nextSibling;\n    switch (node.nodeName) {\n      case \"HTML\":\n      case \"HEAD\":\n      case \"BODY\":\n        clearContainerSparingly(node);\n        detachDeletedInstance(node);\n        continue;\n      case \"SCRIPT\":\n      case \"STYLE\":\n        continue;\n      case \"LINK\":\n        if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n    }\n    container.removeChild(node);\n  }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n  for (; 1 === instance.nodeType; ) {\n    var anyProps = props;\n    if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n      if (\n        !inRootOrSingleton &&\n        (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n      )\n        break;\n    } else if (!inRootOrSingleton)\n      if (\"input\" === type && \"hidden\" === instance.type) {\n        var name = null == anyProps.name ? null : \"\" + anyProps.name;\n        if (\n          \"hidden\" === anyProps.type &&\n          instance.getAttribute(\"name\") === name\n        )\n          return instance;\n      } else return instance;\n    else if (!instance[internalHoistableMarker])\n      switch (type) {\n        case \"meta\":\n          if (!instance.hasAttribute(\"itemprop\")) break;\n          return instance;\n        case \"link\":\n          name = instance.getAttribute(\"rel\");\n          if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n            break;\n          else if (\n            name !== anyProps.rel ||\n            instance.getAttribute(\"href\") !==\n              (null == anyProps.href ? null : anyProps.href) ||\n            instance.getAttribute(\"crossorigin\") !==\n              (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n            instance.getAttribute(\"title\") !==\n              (null == anyProps.title ? null : anyProps.title)\n          )\n            break;\n          return instance;\n        case \"style\":\n          if (instance.hasAttribute(\"data-precedence\")) break;\n          return instance;\n        case \"script\":\n          name = instance.getAttribute(\"src\");\n          if (\n            (name !== (null == anyProps.src ? null : anyProps.src) ||\n              instance.getAttribute(\"type\") !==\n                (null == anyProps.type ? null : anyProps.type) ||\n              instance.getAttribute(\"crossorigin\") !==\n                (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n            name &&\n            instance.hasAttribute(\"async\") &&\n            !instance.hasAttribute(\"itemprop\")\n          )\n            break;\n          return instance;\n        default:\n          return instance;\n      }\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) break;\n  }\n  return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n  if (\"\" === text) return null;\n  for (; 3 !== instance.nodeType; ) {\n    if (\n      (1 !== instance.nodeType ||\n        \"INPUT\" !== instance.nodeName ||\n        \"hidden\" !== instance.type) &&\n      !inRootOrSingleton\n    )\n      return null;\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) return null;\n  }\n  return instance;\n}\nfunction getNextHydratable(node) {\n  for (; null != node; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n    if (1 === nodeType || 3 === nodeType) break;\n    if (8 === nodeType) {\n      nodeType = node.data;\n      if (\n        \"$\" === nodeType ||\n        \"$!\" === nodeType ||\n        \"$?\" === nodeType ||\n        \"F!\" === nodeType ||\n        \"F\" === nodeType\n      )\n        break;\n      if (\"/$\" === nodeType) return null;\n    }\n  }\n  return node;\n}\nfunction getParentSuspenseInstance(targetInstance) {\n  targetInstance = targetInstance.previousSibling;\n  for (var depth = 0; targetInstance; ) {\n    if (8 === targetInstance.nodeType) {\n      var data = targetInstance.data;\n      if (\"$\" === data || \"$!\" === data || \"$?\" === data) {\n        if (0 === depth) return targetInstance;\n        depth--;\n      } else \"/$\" === data && depth++;\n    }\n    targetInstance = targetInstance.previousSibling;\n  }\n  return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n  props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n  switch (type) {\n    case \"html\":\n      type = props.documentElement;\n      if (!type) throw Error(formatProdErrorMessage(452));\n      return type;\n    case \"head\":\n      type = props.head;\n      if (!type) throw Error(formatProdErrorMessage(453));\n      return type;\n    case \"body\":\n      type = props.body;\n      if (!type) throw Error(formatProdErrorMessage(454));\n      return type;\n    default:\n      throw Error(formatProdErrorMessage(451));\n  }\n}\nvar preloadPropsMap = new Map(),\n  preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n  return \"function\" === typeof container.getRootNode\n    ? container.getRootNode()\n    : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n  f: flushSyncWork,\n  r: requestFormReset,\n  D: prefetchDNS,\n  C: preconnect,\n  L: preload,\n  m: preloadModule,\n  X: preinitScript,\n  S: preinitStyle,\n  M: preinitModuleScript\n};\nfunction flushSyncWork() {\n  var previousWasRendering = previousDispatcher.f(),\n    wasRendering = flushSyncWork$1();\n  return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n  var formInst = getInstanceFromNode(form);\n  null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n    ? requestFormReset$1(formInst)\n    : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n  var ownerDocument = globalDocument;\n  if (ownerDocument && \"string\" === typeof href && href) {\n    var limitedEscapedHref =\n      escapeSelectorAttributeValueInsideDoubleQuotes(href);\n    limitedEscapedHref =\n      'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n    \"string\" === typeof crossOrigin &&\n      (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n    preconnectsSet.has(limitedEscapedHref) ||\n      (preconnectsSet.add(limitedEscapedHref),\n      (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n      null === ownerDocument.querySelector(limitedEscapedHref) &&\n        ((href = ownerDocument.createElement(\"link\")),\n        setInitialProperties(href, \"link\", rel),\n        markNodeAsHoistable(href),\n        ownerDocument.head.appendChild(href)));\n  }\n}\nfunction prefetchDNS(href) {\n  previousDispatcher.D(href);\n  preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n  previousDispatcher.C(href, crossOrigin);\n  preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n  previousDispatcher.L(href, as, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href && as) {\n    var preloadSelector =\n      'link[rel=\"preload\"][as=\"' +\n      escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n      '\"]';\n    \"image\" === as\n      ? options && options.imageSrcSet\n        ? ((preloadSelector +=\n            '[imagesrcset=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(\n              options.imageSrcSet\n            ) +\n            '\"]'),\n          \"string\" === typeof options.imageSizes &&\n            (preloadSelector +=\n              '[imagesizes=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                options.imageSizes\n              ) +\n              '\"]'))\n        : (preloadSelector +=\n            '[href=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n            '\"]')\n      : (preloadSelector +=\n          '[href=\"' +\n          escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n          '\"]');\n    var key = preloadSelector;\n    switch (as) {\n      case \"style\":\n        key = getStyleKey(href);\n        break;\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    preloadPropsMap.has(key) ||\n      ((href = assign(\n        {\n          rel: \"preload\",\n          href:\n            \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n          as: as\n        },\n        options\n      )),\n      preloadPropsMap.set(key, href),\n      null !== ownerDocument.querySelector(preloadSelector) ||\n        (\"style\" === as &&\n          ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n        (\"script\" === as &&\n          ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n        ((as = ownerDocument.createElement(\"link\")),\n        setInitialProperties(as, \"link\", href),\n        markNodeAsHoistable(as),\n        ownerDocument.head.appendChild(as)));\n  }\n}\nfunction preloadModule(href, options) {\n  previousDispatcher.m(href, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n      preloadSelector =\n        'link[rel=\"modulepreload\"][as=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n        '\"][href=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n        '\"]',\n      key = preloadSelector;\n    switch (as) {\n      case \"audioworklet\":\n      case \"paintworklet\":\n      case \"serviceworker\":\n      case \"sharedworker\":\n      case \"worker\":\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    if (\n      !preloadPropsMap.has(key) &&\n      ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n      preloadPropsMap.set(key, href),\n      null === ownerDocument.querySelector(preloadSelector))\n    ) {\n      switch (as) {\n        case \"audioworklet\":\n        case \"paintworklet\":\n        case \"serviceworker\":\n        case \"sharedworker\":\n        case \"worker\":\n        case \"script\":\n          if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n            return;\n      }\n      as = ownerDocument.createElement(\"link\");\n      setInitialProperties(as, \"link\", href);\n      markNodeAsHoistable(as);\n      ownerDocument.head.appendChild(as);\n    }\n  }\n}\nfunction preinitStyle(href, precedence, options) {\n  previousDispatcher.S(href, precedence, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n      key = getStyleKey(href);\n    precedence = precedence || \"default\";\n    var resource = styles.get(key);\n    if (!resource) {\n      var state = { loading: 0, preload: null };\n      if (\n        (resource = ownerDocument.querySelector(\n          getStylesheetSelectorFromKey(key)\n        ))\n      )\n        state.loading = 5;\n      else {\n        href = assign(\n          { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n          options\n        );\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForStylesheet(href, options);\n        var link = (resource = ownerDocument.createElement(\"link\"));\n        markNodeAsHoistable(link);\n        setInitialProperties(link, \"link\", href);\n        link._p = new Promise(function (resolve, reject) {\n          link.onload = resolve;\n          link.onerror = reject;\n        });\n        link.addEventListener(\"load\", function () {\n          state.loading |= 1;\n        });\n        link.addEventListener(\"error\", function () {\n          state.loading |= 2;\n        });\n        state.loading |= 4;\n        insertStylesheet(resource, precedence, ownerDocument);\n      }\n      resource = {\n        type: \"stylesheet\",\n        instance: resource,\n        count: 1,\n        state: state\n      };\n      styles.set(key, resource);\n    }\n  }\n}\nfunction preinitScript(src, options) {\n  previousDispatcher.X(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0 }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction preinitModuleScript(src, options) {\n  previousDispatcher.M(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n  var JSCompiler_inline_result = (JSCompiler_inline_result =\n    rootInstanceStackCursor.current)\n    ? getHoistableRoot(JSCompiler_inline_result)\n    : null;\n  if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return null;\n    case \"style\":\n      return \"string\" === typeof pendingProps.precedence &&\n        \"string\" === typeof pendingProps.href\n        ? ((currentProps = getStyleKey(pendingProps.href)),\n          (pendingProps = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles),\n          (currentResource = pendingProps.get(currentProps)),\n          currentResource ||\n            ((currentResource = {\n              type: \"style\",\n              instance: null,\n              count: 0,\n              state: null\n            }),\n            pendingProps.set(currentProps, currentResource)),\n          currentResource)\n        : { type: \"void\", instance: null, count: 0, state: null };\n    case \"link\":\n      if (\n        \"stylesheet\" === pendingProps.rel &&\n        \"string\" === typeof pendingProps.href &&\n        \"string\" === typeof pendingProps.precedence\n      ) {\n        type = getStyleKey(pendingProps.href);\n        var styles$242 = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles,\n          resource$243 = styles$242.get(type);\n        resource$243 ||\n          ((JSCompiler_inline_result =\n            JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n          (resource$243 = {\n            type: \"stylesheet\",\n            instance: null,\n            count: 0,\n            state: { loading: 0, preload: null }\n          }),\n          styles$242.set(type, resource$243),\n          (styles$242 = JSCompiler_inline_result.querySelector(\n            getStylesheetSelectorFromKey(type)\n          )) &&\n            !styles$242._p &&\n            ((resource$243.instance = styles$242),\n            (resource$243.state.loading = 5)),\n          preloadPropsMap.has(type) ||\n            ((pendingProps = {\n              rel: \"preload\",\n              as: \"style\",\n              href: pendingProps.href,\n              crossOrigin: pendingProps.crossOrigin,\n              integrity: pendingProps.integrity,\n              media: pendingProps.media,\n              hrefLang: pendingProps.hrefLang,\n              referrerPolicy: pendingProps.referrerPolicy\n            }),\n            preloadPropsMap.set(type, pendingProps),\n            styles$242 ||\n              preloadStylesheet(\n                JSCompiler_inline_result,\n                type,\n                pendingProps,\n                resource$243.state\n              )));\n        if (currentProps && null === currentResource)\n          throw Error(formatProdErrorMessage(528, \"\"));\n        return resource$243;\n      }\n      if (currentProps && null !== currentResource)\n        throw Error(formatProdErrorMessage(529, \"\"));\n      return null;\n    case \"script\":\n      return (\n        (currentProps = pendingProps.async),\n        (pendingProps = pendingProps.src),\n        \"string\" === typeof pendingProps &&\n        currentProps &&\n        \"function\" !== typeof currentProps &&\n        \"symbol\" !== typeof currentProps\n          ? ((currentProps = getScriptKey(pendingProps)),\n            (pendingProps = getResourcesFromRoot(\n              JSCompiler_inline_result\n            ).hoistableScripts),\n            (currentResource = pendingProps.get(currentProps)),\n            currentResource ||\n              ((currentResource = {\n                type: \"script\",\n                instance: null,\n                count: 0,\n                state: null\n              }),\n              pendingProps.set(currentProps, currentResource)),\n            currentResource)\n          : { type: \"void\", instance: null, count: 0, state: null }\n      );\n    default:\n      throw Error(formatProdErrorMessage(444, type));\n  }\n}\nfunction getStyleKey(href) {\n  return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n  return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n  return assign({}, rawProps, {\n    \"data-precedence\": rawProps.precedence,\n    precedence: null\n  });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n  ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n    ? (state.loading = 1)\n    : ((key = ownerDocument.createElement(\"link\")),\n      (state.preload = key),\n      key.addEventListener(\"load\", function () {\n        return (state.loading |= 1);\n      }),\n      key.addEventListener(\"error\", function () {\n        return (state.loading |= 2);\n      }),\n      setInitialProperties(key, \"link\", preloadProps),\n      markNodeAsHoistable(key),\n      ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n  return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n  return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n  resource.count++;\n  if (null === resource.instance)\n    switch (resource.type) {\n      case \"style\":\n        var instance = hoistableRoot.querySelector(\n          'style[data-href~=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n            '\"]'\n        );\n        if (instance)\n          return (\n            (resource.instance = instance),\n            markNodeAsHoistable(instance),\n            instance\n          );\n        var styleProps = assign({}, props, {\n          \"data-href\": props.href,\n          \"data-precedence\": props.precedence,\n          href: null,\n          precedence: null\n        });\n        instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n          \"style\"\n        );\n        markNodeAsHoistable(instance);\n        setInitialProperties(instance, \"style\", styleProps);\n        insertStylesheet(instance, props.precedence, hoistableRoot);\n        return (resource.instance = instance);\n      case \"stylesheet\":\n        styleProps = getStyleKey(props.href);\n        var instance$248 = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(styleProps)\n        );\n        if (instance$248)\n          return (\n            (resource.state.loading |= 4),\n            (resource.instance = instance$248),\n            markNodeAsHoistable(instance$248),\n            instance$248\n          );\n        instance = stylesheetPropsFromRawProps(props);\n        (styleProps = preloadPropsMap.get(styleProps)) &&\n          adoptPreloadPropsForStylesheet(instance, styleProps);\n        instance$248 = (\n          hoistableRoot.ownerDocument || hoistableRoot\n        ).createElement(\"link\");\n        markNodeAsHoistable(instance$248);\n        var linkInstance = instance$248;\n        linkInstance._p = new Promise(function (resolve, reject) {\n          linkInstance.onload = resolve;\n          linkInstance.onerror = reject;\n        });\n        setInitialProperties(instance$248, \"link\", instance);\n        resource.state.loading |= 4;\n        insertStylesheet(instance$248, props.precedence, hoistableRoot);\n        return (resource.instance = instance$248);\n      case \"script\":\n        instance$248 = getScriptKey(props.src);\n        if (\n          (styleProps = hoistableRoot.querySelector(\n            getScriptSelectorFromKey(instance$248)\n          ))\n        )\n          return (\n            (resource.instance = styleProps),\n            markNodeAsHoistable(styleProps),\n            styleProps\n          );\n        instance = props;\n        if ((styleProps = preloadPropsMap.get(instance$248)))\n          (instance = assign({}, props)),\n            adoptPreloadPropsForScript(instance, styleProps);\n        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n        styleProps = hoistableRoot.createElement(\"script\");\n        markNodeAsHoistable(styleProps);\n        setInitialProperties(styleProps, \"link\", instance);\n        hoistableRoot.head.appendChild(styleProps);\n        return (resource.instance = styleProps);\n      case \"void\":\n        return null;\n      default:\n        throw Error(formatProdErrorMessage(443, resource.type));\n    }\n  else\n    \"stylesheet\" === resource.type &&\n      0 === (resource.state.loading & 4) &&\n      ((instance = resource.instance),\n      (resource.state.loading |= 4),\n      insertStylesheet(instance, props.precedence, hoistableRoot));\n  return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n  for (\n    var nodes = root.querySelectorAll(\n        'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n      ),\n      last = nodes.length ? nodes[nodes.length - 1] : null,\n      prior = last,\n      i = 0;\n    i < nodes.length;\n    i++\n  ) {\n    var node = nodes[i];\n    if (node.dataset.precedence === precedence) prior = node;\n    else if (prior !== last) break;\n  }\n  prior\n    ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n    : ((precedence = 9 === root.nodeType ? root.head : root),\n      precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n  null == stylesheetProps.crossOrigin &&\n    (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n  null == stylesheetProps.referrerPolicy &&\n    (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n  null == scriptProps.crossOrigin &&\n    (scriptProps.crossOrigin = preloadProps.crossOrigin);\n  null == scriptProps.referrerPolicy &&\n    (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == scriptProps.integrity &&\n    (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n  if (null === tagCaches) {\n    var cache = new Map();\n    var caches = (tagCaches = new Map());\n    caches.set(ownerDocument, cache);\n  } else\n    (caches = tagCaches),\n      (cache = caches.get(ownerDocument)),\n      cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n  if (cache.has(type)) return cache;\n  cache.set(type, null);\n  ownerDocument = ownerDocument.getElementsByTagName(type);\n  for (caches = 0; caches < ownerDocument.length; caches++) {\n    var node = ownerDocument[caches];\n    if (\n      !(\n        node[internalHoistableMarker] ||\n        node[internalInstanceKey] ||\n        (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n      ) &&\n      \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n    ) {\n      var nodeKey = node.getAttribute(keyAttribute) || \"\";\n      nodeKey = type + nodeKey;\n      var existing = cache.get(nodeKey);\n      existing ? existing.push(node) : cache.set(nodeKey, [node]);\n    }\n  }\n  return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n  hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n  hoistableRoot.head.insertBefore(\n    instance,\n    \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n  );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n  if (1 === hostContext || null != props.itemProp) return !1;\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return !0;\n    case \"style\":\n      if (\n        \"string\" !== typeof props.precedence ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href\n      )\n        break;\n      return !0;\n    case \"link\":\n      if (\n        \"string\" !== typeof props.rel ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href ||\n        props.onLoad ||\n        props.onError\n      )\n        break;\n      switch (props.rel) {\n        case \"stylesheet\":\n          return (\n            (type = props.disabled),\n            \"string\" === typeof props.precedence && null == type\n          );\n        default:\n          return !0;\n      }\n    case \"script\":\n      if (\n        props.async &&\n        \"function\" !== typeof props.async &&\n        \"symbol\" !== typeof props.async &&\n        !props.onLoad &&\n        !props.onError &&\n        props.src &&\n        \"string\" === typeof props.src\n      )\n        return !0;\n  }\n  return !1;\n}\nfunction preloadResource(resource) {\n  return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n    ? !1\n    : !0;\n}\nvar suspendedState = null;\nfunction noop() {}\nfunction suspendResource(hoistableRoot, resource, props) {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  if (\n    \"stylesheet\" === resource.type &&\n    (\"string\" !== typeof props.media ||\n      !1 !== matchMedia(props.media).matches) &&\n    0 === (resource.state.loading & 4)\n  ) {\n    if (null === resource.instance) {\n      var key = getStyleKey(props.href),\n        instance = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(key)\n        );\n      if (instance) {\n        hoistableRoot = instance._p;\n        null !== hoistableRoot &&\n          \"object\" === typeof hoistableRoot &&\n          \"function\" === typeof hoistableRoot.then &&\n          (state.count++,\n          (state = onUnsuspend.bind(state)),\n          hoistableRoot.then(state, state));\n        resource.state.loading |= 4;\n        resource.instance = instance;\n        markNodeAsHoistable(instance);\n        return;\n      }\n      instance = hoistableRoot.ownerDocument || hoistableRoot;\n      props = stylesheetPropsFromRawProps(props);\n      (key = preloadPropsMap.get(key)) &&\n        adoptPreloadPropsForStylesheet(props, key);\n      instance = instance.createElement(\"link\");\n      markNodeAsHoistable(instance);\n      var linkInstance = instance;\n      linkInstance._p = new Promise(function (resolve, reject) {\n        linkInstance.onload = resolve;\n        linkInstance.onerror = reject;\n      });\n      setInitialProperties(instance, \"link\", props);\n      resource.instance = instance;\n    }\n    null === state.stylesheets && (state.stylesheets = new Map());\n    state.stylesheets.set(resource, hoistableRoot);\n    (hoistableRoot = resource.state.preload) &&\n      0 === (resource.state.loading & 3) &&\n      (state.count++,\n      (resource = onUnsuspend.bind(state)),\n      hoistableRoot.addEventListener(\"load\", resource),\n      hoistableRoot.addEventListener(\"error\", resource));\n  }\n}\nfunction waitForCommitToBeReady() {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  state.stylesheets &&\n    0 === state.count &&\n    insertSuspendedStylesheets(state, state.stylesheets);\n  return 0 < state.count\n    ? function (commit) {\n        var stylesheetTimer = setTimeout(function () {\n          state.stylesheets &&\n            insertSuspendedStylesheets(state, state.stylesheets);\n          if (state.unsuspend) {\n            var unsuspend = state.unsuspend;\n            state.unsuspend = null;\n            unsuspend();\n          }\n        }, 6e4);\n        state.unsuspend = commit;\n        return function () {\n          state.unsuspend = null;\n          clearTimeout(stylesheetTimer);\n        };\n      }\n    : null;\n}\nfunction onUnsuspend() {\n  this.count--;\n  if (0 === this.count)\n    if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n    else if (this.unsuspend) {\n      var unsuspend = this.unsuspend;\n      this.unsuspend = null;\n      unsuspend();\n    }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n  state.stylesheets = null;\n  null !== state.unsuspend &&\n    (state.count++,\n    (precedencesByRoot = new Map()),\n    resources.forEach(insertStylesheetIntoRoot, state),\n    (precedencesByRoot = null),\n    onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n  if (!(resource.state.loading & 4)) {\n    var precedences = precedencesByRoot.get(root);\n    if (precedences) var last = precedences.get(null);\n    else {\n      precedences = new Map();\n      precedencesByRoot.set(root, precedences);\n      for (\n        var nodes = root.querySelectorAll(\n            \"link[data-precedence],style[data-precedence]\"\n          ),\n          i = 0;\n        i < nodes.length;\n        i++\n      ) {\n        var node = nodes[i];\n        if (\n          \"LINK\" === node.nodeName ||\n          \"not all\" !== node.getAttribute(\"media\")\n        )\n          precedences.set(node.dataset.precedence, node), (last = node);\n      }\n      last && precedences.set(null, last);\n    }\n    nodes = resource.instance;\n    node = nodes.getAttribute(\"data-precedence\");\n    i = precedences.get(node) || last;\n    i === last && precedences.set(null, nodes);\n    precedences.set(node, nodes);\n    this.count++;\n    last = onUnsuspend.bind(this);\n    nodes.addEventListener(\"load\", last);\n    nodes.addEventListener(\"error\", last);\n    i\n      ? i.parentNode.insertBefore(nodes, i.nextSibling)\n      : ((root = 9 === root.nodeType ? root.head : root),\n        root.insertBefore(nodes, root.firstChild));\n    resource.state.loading |= 4;\n  }\n}\nvar HostTransitionContext = {\n  $$typeof: REACT_CONTEXT_TYPE,\n  Provider: null,\n  Consumer: null,\n  _currentValue: sharedNotPendingObject,\n  _currentValue2: sharedNotPendingObject,\n  _threadCount: 0\n};\nfunction FiberRootNode(\n  containerInfo,\n  tag,\n  hydrate,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  formState\n) {\n  this.tag = 1;\n  this.containerInfo = containerInfo;\n  this.finishedWork =\n    this.pingCache =\n    this.current =\n    this.pendingChildren =\n      null;\n  this.timeoutHandle = -1;\n  this.callbackNode =\n    this.next =\n    this.pendingContext =\n    this.context =\n    this.cancelPendingCommit =\n      null;\n  this.callbackPriority = 0;\n  this.expirationTimes = createLaneMap(-1);\n  this.entangledLanes =\n    this.shellSuspendCounter =\n    this.errorRecoveryDisabledLanes =\n    this.finishedLanes =\n    this.expiredLanes =\n    this.warmLanes =\n    this.pingedLanes =\n    this.suspendedLanes =\n    this.pendingLanes =\n      0;\n  this.entanglements = createLaneMap(0);\n  this.hiddenUpdates = createLaneMap(null);\n  this.identifierPrefix = identifierPrefix;\n  this.onUncaughtError = onUncaughtError;\n  this.onCaughtError = onCaughtError;\n  this.onRecoverableError = onRecoverableError;\n  this.pooledCache = null;\n  this.pooledCacheLanes = 0;\n  this.formState = formState;\n  this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n  containerInfo,\n  tag,\n  hydrate,\n  initialChildren,\n  hydrationCallbacks,\n  isStrictMode,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  transitionCallbacks,\n  formState\n) {\n  containerInfo = new FiberRootNode(\n    containerInfo,\n    tag,\n    hydrate,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    formState\n  );\n  tag = 1;\n  !0 === isStrictMode && (tag |= 24);\n  isStrictMode = createFiberImplClass(3, null, null, tag);\n  containerInfo.current = isStrictMode;\n  isStrictMode.stateNode = containerInfo;\n  tag = createCache();\n  tag.refCount++;\n  containerInfo.pooledCache = tag;\n  tag.refCount++;\n  isStrictMode.memoizedState = {\n    element: initialChildren,\n    isDehydrated: hydrate,\n    cache: tag\n  };\n  initializeUpdateQueue(isStrictMode);\n  return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) return emptyContextObject;\n  parentComponent = emptyContextObject;\n  return parentComponent;\n}\nfunction updateContainerImpl(\n  rootFiber,\n  lane,\n  element,\n  container,\n  parentComponent,\n  callback\n) {\n  parentComponent = getContextForSubtree(parentComponent);\n  null === container.context\n    ? (container.context = parentComponent)\n    : (container.pendingContext = parentComponent);\n  container = createUpdate(lane);\n  container.payload = { element: element };\n  callback = void 0 === callback ? null : callback;\n  null !== callback && (container.callback = callback);\n  element = enqueueUpdate(rootFiber, container, lane);\n  null !== element &&\n    (scheduleUpdateOnFiber(element, rootFiber, lane),\n    entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n  fiber = fiber.memoizedState;\n  if (null !== fiber && null !== fiber.dehydrated) {\n    var a = fiber.retryLane;\n    fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n  }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n  if (13 === fiber.tag) {\n    var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n    null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n    markRetryLaneIfNotHydrated(fiber, 67108864);\n  }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 2),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchContinuousEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 8),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchEvent(\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (_enabled) {\n    var blockedOn = findInstanceBlockingEvent(nativeEvent);\n    if (null === blockedOn)\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        return_targetInst,\n        targetContainer\n      ),\n        clearIfContinuousEvent(domEventName, nativeEvent);\n    else if (\n      queueIfContinuousEvent(\n        blockedOn,\n        domEventName,\n        eventSystemFlags,\n        targetContainer,\n        nativeEvent\n      )\n    )\n      nativeEvent.stopPropagation();\n    else if (\n      (clearIfContinuousEvent(domEventName, nativeEvent),\n      eventSystemFlags & 4 &&\n        -1 < discreteReplayableEvents.indexOf(domEventName))\n    ) {\n      for (; null !== blockedOn; ) {\n        var fiber = getInstanceFromNode(blockedOn);\n        if (null !== fiber)\n          switch (fiber.tag) {\n            case 3:\n              fiber = fiber.stateNode;\n              if (fiber.current.memoizedState.isDehydrated) {\n                var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n                if (0 !== lanes) {\n                  var root = fiber;\n                  root.pendingLanes |= 2;\n                  for (root.entangledLanes |= 2; lanes; ) {\n                    var lane = 1 << (31 - clz32(lanes));\n                    root.entanglements[1] |= lane;\n                    lanes &= ~lane;\n                  }\n                  ensureRootIsScheduled(fiber);\n                  0 === (executionContext & 6) &&\n                    ((workInProgressRootRenderTargetTime = now() + 500),\n                    flushSyncWorkAcrossRoots_impl(0, !1));\n                }\n              }\n              break;\n            case 13:\n              (root = enqueueConcurrentRenderForLane(fiber, 2)),\n                null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n                flushSyncWork$1(),\n                markRetryLaneIfNotHydrated(fiber, 2);\n          }\n        fiber = findInstanceBlockingEvent(nativeEvent);\n        null === fiber &&\n          dispatchEventForPluginEventSystem(\n            domEventName,\n            eventSystemFlags,\n            nativeEvent,\n            return_targetInst,\n            targetContainer\n          );\n        if (fiber === blockedOn) break;\n        blockedOn = fiber;\n      }\n      null !== blockedOn && nativeEvent.stopPropagation();\n    } else\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        null,\n        targetContainer\n      );\n  }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n  nativeEvent = getEventTarget(nativeEvent);\n  return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n  return_targetInst = null;\n  targetNode = getClosestInstanceFromNode(targetNode);\n  if (null !== targetNode) {\n    var nearestMounted = getNearestMountedFiber(targetNode);\n    if (null === nearestMounted) targetNode = null;\n    else {\n      var tag = nearestMounted.tag;\n      if (13 === tag) {\n        targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n        if (null !== targetNode) return targetNode;\n        targetNode = null;\n      } else if (3 === tag) {\n        if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n          return 3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        targetNode = null;\n      } else nearestMounted !== targetNode && (targetNode = null);\n    }\n  }\n  return_targetInst = targetNode;\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    case \"beforetoggle\":\n    case \"cancel\":\n    case \"click\":\n    case \"close\":\n    case \"contextmenu\":\n    case \"copy\":\n    case \"cut\":\n    case \"auxclick\":\n    case \"dblclick\":\n    case \"dragend\":\n    case \"dragstart\":\n    case \"drop\":\n    case \"focusin\":\n    case \"focusout\":\n    case \"input\":\n    case \"invalid\":\n    case \"keydown\":\n    case \"keypress\":\n    case \"keyup\":\n    case \"mousedown\":\n    case \"mouseup\":\n    case \"paste\":\n    case \"pause\":\n    case \"play\":\n    case \"pointercancel\":\n    case \"pointerdown\":\n    case \"pointerup\":\n    case \"ratechange\":\n    case \"reset\":\n    case \"resize\":\n    case \"seeked\":\n    case \"submit\":\n    case \"toggle\":\n    case \"touchcancel\":\n    case \"touchend\":\n    case \"touchstart\":\n    case \"volumechange\":\n    case \"change\":\n    case \"selectionchange\":\n    case \"textInput\":\n    case \"compositionstart\":\n    case \"compositionend\":\n    case \"compositionupdate\":\n    case \"beforeblur\":\n    case \"afterblur\":\n    case \"beforeinput\":\n    case \"blur\":\n    case \"fullscreenchange\":\n    case \"focus\":\n    case \"hashchange\":\n    case \"popstate\":\n    case \"select\":\n    case \"selectstart\":\n      return 2;\n    case \"drag\":\n    case \"dragenter\":\n    case \"dragexit\":\n    case \"dragleave\":\n    case \"dragover\":\n    case \"mousemove\":\n    case \"mouseout\":\n    case \"mouseover\":\n    case \"pointermove\":\n    case \"pointerout\":\n    case \"pointerover\":\n    case \"scroll\":\n    case \"touchmove\":\n    case \"wheel\":\n    case \"mouseenter\":\n    case \"mouseleave\":\n    case \"pointerenter\":\n    case \"pointerleave\":\n      return 8;\n    case \"message\":\n      switch (getCurrentPriorityLevel()) {\n        case ImmediatePriority:\n          return 2;\n        case UserBlockingPriority:\n          return 8;\n        case NormalPriority$1:\n        case LowPriority:\n          return 32;\n        case IdlePriority:\n          return 268435456;\n        default:\n          return 32;\n      }\n    default:\n      return 32;\n  }\n}\nvar hasScheduledReplayAttempt = !1,\n  queuedFocus = null,\n  queuedDrag = null,\n  queuedMouse = null,\n  queuedPointers = new Map(),\n  queuedPointerCaptures = new Map(),\n  queuedExplicitHydrationTargets = [],\n  discreteReplayableEvents =\n    \"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\".split(\n      \" \"\n    );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"focusin\":\n    case \"focusout\":\n      queuedFocus = null;\n      break;\n    case \"dragenter\":\n    case \"dragleave\":\n      queuedDrag = null;\n      break;\n    case \"mouseover\":\n    case \"mouseout\":\n      queuedMouse = null;\n      break;\n    case \"pointerover\":\n    case \"pointerout\":\n      queuedPointers.delete(nativeEvent.pointerId);\n      break;\n    case \"gotpointercapture\":\n    case \"lostpointercapture\":\n      queuedPointerCaptures.delete(nativeEvent.pointerId);\n  }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n  existingQueuedEvent,\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (\n    null === existingQueuedEvent ||\n    existingQueuedEvent.nativeEvent !== nativeEvent\n  )\n    return (\n      (existingQueuedEvent = {\n        blockedOn: blockedOn,\n        domEventName: domEventName,\n        eventSystemFlags: eventSystemFlags,\n        nativeEvent: nativeEvent,\n        targetContainers: [targetContainer]\n      }),\n      null !== blockedOn &&\n        ((blockedOn = getInstanceFromNode(blockedOn)),\n        null !== blockedOn && attemptContinuousHydration(blockedOn)),\n      existingQueuedEvent\n    );\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  blockedOn = existingQueuedEvent.targetContainers;\n  null !== targetContainer &&\n    -1 === blockedOn.indexOf(targetContainer) &&\n    blockedOn.push(targetContainer);\n  return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  switch (domEventName) {\n    case \"focusin\":\n      return (\n        (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedFocus,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"dragenter\":\n      return (\n        (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedDrag,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"mouseover\":\n      return (\n        (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedMouse,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"pointerover\":\n      var pointerId = nativeEvent.pointerId;\n      queuedPointers.set(\n        pointerId,\n        accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedPointers.get(pointerId) || null,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )\n      );\n      return !0;\n    case \"gotpointercapture\":\n      return (\n        (pointerId = nativeEvent.pointerId),\n        queuedPointerCaptures.set(\n          pointerId,\n          accumulateOrCreateContinuousQueuedReplayableEvent(\n            queuedPointerCaptures.get(pointerId) || null,\n            blockedOn,\n            domEventName,\n            eventSystemFlags,\n            targetContainer,\n            nativeEvent\n          )\n        ),\n        !0\n      );\n  }\n  return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n  if (null !== targetInst) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n    if (null !== nearestMounted)\n      if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n        if (\n          ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            if (13 === nearestMounted.tag) {\n              var lane = requestUpdateLane(),\n                root = enqueueConcurrentRenderForLane(nearestMounted, lane);\n              null !== root &&\n                scheduleUpdateOnFiber(root, nearestMounted, lane);\n              markRetryLaneIfNotHydrated(nearestMounted, lane);\n            }\n          });\n          return;\n        }\n      } else if (\n        3 === targetInst &&\n        nearestMounted.stateNode.current.memoizedState.isDehydrated\n      ) {\n        queuedTarget.blockedOn =\n          3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        return;\n      }\n  }\n  queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (null !== queuedEvent.blockedOn) return !1;\n  for (\n    var targetContainers = queuedEvent.targetContainers;\n    0 < targetContainers.length;\n\n  ) {\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n    if (null === nextBlockedOn) {\n      nextBlockedOn = queuedEvent.nativeEvent;\n      var nativeEventClone = new nextBlockedOn.constructor(\n        nextBlockedOn.type,\n        nextBlockedOn\n      );\n      currentReplayingEvent = nativeEventClone;\n      nextBlockedOn.target.dispatchEvent(nativeEventClone);\n      currentReplayingEvent = null;\n    } else\n      return (\n        (targetContainers = getInstanceFromNode(nextBlockedOn)),\n        null !== targetContainers &&\n          attemptContinuousHydration(targetContainers),\n        (queuedEvent.blockedOn = nextBlockedOn),\n        !1\n      );\n    targetContainers.shift();\n  }\n  return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = !1;\n  null !== queuedFocus &&\n    attemptReplayContinuousQueuedEvent(queuedFocus) &&\n    (queuedFocus = null);\n  null !== queuedDrag &&\n    attemptReplayContinuousQueuedEvent(queuedDrag) &&\n    (queuedDrag = null);\n  null !== queuedMouse &&\n    attemptReplayContinuousQueuedEvent(queuedMouse) &&\n    (queuedMouse = null);\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  queuedEvent.blockedOn === unblocked &&\n    ((queuedEvent.blockedOn = null),\n    hasScheduledReplayAttempt ||\n      ((hasScheduledReplayAttempt = !0),\n      Scheduler.unstable_scheduleCallback(\n        Scheduler.unstable_NormalPriority,\n        replayUnblockedEvents\n      )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n  lastScheduledReplayQueue !== formReplayingQueue &&\n    ((lastScheduledReplayQueue = formReplayingQueue),\n    Scheduler.unstable_scheduleCallback(\n      Scheduler.unstable_NormalPriority,\n      function () {\n        lastScheduledReplayQueue === formReplayingQueue &&\n          (lastScheduledReplayQueue = null);\n        for (var i = 0; i < formReplayingQueue.length; i += 3) {\n          var form = formReplayingQueue[i],\n            submitterOrAction = formReplayingQueue[i + 1],\n            formData = formReplayingQueue[i + 2];\n          if (\"function\" !== typeof submitterOrAction)\n            if (null === findInstanceBlockingTarget(submitterOrAction || form))\n              continue;\n            else break;\n          var formInst = getInstanceFromNode(form);\n          null !== formInst &&\n            (formReplayingQueue.splice(i, 3),\n            (i -= 3),\n            startHostTransition(\n              formInst,\n              {\n                pending: !0,\n                data: formData,\n                method: form.method,\n                action: submitterOrAction\n              },\n              submitterOrAction,\n              formData\n            ));\n        }\n      }\n    ));\n}\nfunction retryIfBlockedOn(unblocked) {\n  function unblock(queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  }\n  null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n  for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[i];\n    queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n  }\n  for (\n    ;\n    0 < queuedExplicitHydrationTargets.length &&\n    ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n  )\n    attemptExplicitHydrationTarget(i),\n      null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n  i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n  if (null != i)\n    for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n      var form = i[queuedTarget],\n        submitterOrAction = i[queuedTarget + 1],\n        formProps = form[internalPropsKey] || null;\n      if (\"function\" === typeof submitterOrAction)\n        formProps || scheduleReplayQueueIfNeeded(i);\n      else if (formProps) {\n        var action = null;\n        if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n          if (\n            ((form = submitterOrAction),\n            (formProps = submitterOrAction[internalPropsKey] || null))\n          )\n            action = formProps.formAction;\n          else {\n            if (null !== findInstanceBlockingTarget(form)) continue;\n          }\n        else action = formProps.action;\n        \"function\" === typeof action\n          ? (i[queuedTarget + 1] = action)\n          : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n        scheduleReplayQueueIfNeeded(i);\n      }\n    }\n}\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n  function (children) {\n    var root = this._internalRoot;\n    if (null === root) throw Error(formatProdErrorMessage(409));\n    var current = root.current,\n      lane = requestUpdateLane();\n    updateContainerImpl(current, lane, children, root, null, null);\n  };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n  function () {\n    var root = this._internalRoot;\n    if (null !== root) {\n      this._internalRoot = null;\n      var container = root.containerInfo;\n      0 === root.tag && flushPassiveEffects();\n      updateContainerImpl(root.current, 2, null, root, null, null);\n      flushSyncWork$1();\n      container[internalContainerInstanceKey] = null;\n    }\n  };\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n  if (target) {\n    var updatePriority = resolveUpdatePriority();\n    target = { blockedOn: null, target: target, priority: updatePriority };\n    for (\n      var i = 0;\n      i < queuedExplicitHydrationTargets.length &&\n      0 !== updatePriority &&\n      updatePriority < queuedExplicitHydrationTargets[i].priority;\n      i++\n    );\n    queuedExplicitHydrationTargets.splice(i, 0, target);\n    0 === i && attemptExplicitHydrationTarget(target);\n  }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1686 = React.version;\nif (\n  \"19.0.0\" !==\n  isomorphicReactPackageVersion$jscomp$inline_1686\n)\n  throw Error(\n    formatProdErrorMessage(\n      527,\n      isomorphicReactPackageVersion$jscomp$inline_1686,\n      \"19.0.0\"\n    )\n  );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n  var fiber = componentOrElement._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof componentOrElement.render)\n      throw Error(formatProdErrorMessage(188));\n    componentOrElement = Object.keys(componentOrElement).join(\",\");\n    throw Error(formatProdErrorMessage(268, componentOrElement));\n  }\n  componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n  componentOrElement =\n    null !== componentOrElement\n      ? findCurrentHostFiberImpl(componentOrElement)\n      : null;\n  componentOrElement =\n    null === componentOrElement ? null : componentOrElement.stateNode;\n  return componentOrElement;\n};\nvar internals$jscomp$inline_2165 = {\n  bundleType: 0,\n  version: \"19.0.0\",\n  rendererPackageName: \"react-dom\",\n  currentDispatcherRef: ReactSharedInternals,\n  findFiberByHostInstance: getClosestInstanceFromNode,\n  reconcilerVersion: \"19.0.0\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_2166 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_2166.isDisabled &&\n    hook$jscomp$inline_2166.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_2166.inject(\n        internals$jscomp$inline_2165\n      )),\n        (injectedHook = hook$jscomp$inline_2166);\n    } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks));\n  options = createFiberRoot(\n    container,\n    1,\n    !1,\n    null,\n    null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    null\n  );\n  container[internalContainerInstanceKey] = options.current;\n  listenToAllSupportedEvents(\n    8 === container.nodeType ? container.parentNode : container\n  );\n  return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null,\n    formState = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks),\n    void 0 !== options.formState && (formState = options.formState));\n  initialChildren = createFiberRoot(\n    container,\n    1,\n    !0,\n    initialChildren,\n    null != options ? options : null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    formState\n  );\n  initialChildren.context = getContextForSubtree(null);\n  options = initialChildren.current;\n  isStrictMode = requestUpdateLane();\n  identifierPrefix = createUpdate(isStrictMode);\n  identifierPrefix.callback = null;\n  enqueueUpdate(options, identifierPrefix, isStrictMode);\n  initialChildren.current.lanes = isStrictMode;\n  markRootUpdated$1(initialChildren, isStrictMode);\n  ensureRootIsScheduled(initialChildren);\n  container[internalContainerInstanceKey] = initialChildren.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.0.0\";\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction noop() {}\nvar Internals = {\n    d: {\n      f: noop,\n      r: function () {\n        throw Error(formatProdErrorMessage(522));\n      },\n      D: noop,\n      C: noop,\n      L: noop,\n      m: noop,\n      X: noop,\n      S: noop,\n      M: noop\n    },\n    p: 0,\n    findDOMNode: null\n  },\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n  var key =\n    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: REACT_PORTAL_TYPE,\n    key: null == key ? null : \"\" + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\nvar ReactSharedInternals =\n  React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n  if (\"font\" === as) return \"\";\n  if (\"string\" === typeof input)\n    return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  Internals;\nexports.createPortal = function (children, container) {\n  var key =\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n  if (\n    !container ||\n    (1 !== container.nodeType &&\n      9 !== container.nodeType &&\n      11 !== container.nodeType)\n  )\n    throw Error(formatProdErrorMessage(299));\n  return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n  var previousTransition = ReactSharedInternals.T,\n    previousUpdatePriority = Internals.p;\n  try {\n    if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n  } finally {\n    (ReactSharedInternals.T = previousTransition),\n      (Internals.p = previousUpdatePriority),\n      Internals.d.f();\n  }\n};\nexports.preconnect = function (href, options) {\n  \"string\" === typeof href &&\n    (options\n      ? ((options = options.crossOrigin),\n        (options =\n          \"string\" === typeof options\n            ? \"use-credentials\" === options\n              ? options\n              : \"\"\n            : void 0))\n      : (options = null),\n    Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n  \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n  if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n      integrity =\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      fetchPriority =\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0;\n    \"style\" === as\n      ? Internals.d.S(\n          href,\n          \"string\" === typeof options.precedence ? options.precedence : void 0,\n          {\n            crossOrigin: crossOrigin,\n            integrity: integrity,\n            fetchPriority: fetchPriority\n          }\n        )\n      : \"script\" === as &&\n        Internals.d.X(href, {\n          crossOrigin: crossOrigin,\n          integrity: integrity,\n          fetchPriority: fetchPriority,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n  }\n};\nexports.preinitModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (\"object\" === typeof options && null !== options) {\n      if (null == options.as || \"script\" === options.as) {\n        var crossOrigin = getCrossOriginStringAs(\n          options.as,\n          options.crossOrigin\n        );\n        Internals.d.M(href, {\n          crossOrigin: crossOrigin,\n          integrity:\n            \"string\" === typeof options.integrity ? options.integrity : void 0,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n      }\n    } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n  if (\n    \"string\" === typeof href &&\n    \"object\" === typeof options &&\n    null !== options &&\n    \"string\" === typeof options.as\n  ) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n    Internals.d.L(href, as, {\n      crossOrigin: crossOrigin,\n      integrity:\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n      type: \"string\" === typeof options.type ? options.type : void 0,\n      fetchPriority:\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0,\n      referrerPolicy:\n        \"string\" === typeof options.referrerPolicy\n          ? options.referrerPolicy\n          : void 0,\n      imageSrcSet:\n        \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n      imageSizes:\n        \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n      media: \"string\" === typeof options.media ? options.media : void 0\n    });\n  }\n};\nexports.preloadModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (options) {\n      var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n      Internals.d.m(href, {\n        as:\n          \"string\" === typeof options.as && \"script\" !== options.as\n            ? options.as\n            : void 0,\n        crossOrigin: crossOrigin,\n        integrity:\n          \"string\" === typeof options.integrity ? options.integrity : void 0\n      });\n    } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n  Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n  return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n  return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.0.0\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n  module.exports = require('./cjs/react-dom-client.development.js');\n}\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n    isMounted: function () {\n      return !1;\n    },\n    enqueueForceUpdate: function () {},\n    enqueueReplaceState: function () {},\n    enqueueSetState: function () {}\n  },\n  assign = Object.assign,\n  emptyObject = {};\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n  if (\n    \"object\" !== typeof partialState &&\n    \"function\" !== typeof partialState &&\n    null != partialState\n  )\n    throw Error(\n      \"takes an object of state variables to update or a function which returns an object of state variables.\"\n    );\n  this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals = { H: null, A: null, T: null, S: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n  self = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== self ? self : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(\n    oldElement.type,\n    newKey,\n    void 0,\n    void 0,\n    void 0,\n    oldElement.props\n  );\n}\nfunction isValidElement(object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n}\nfunction escape(key) {\n  var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n  return (\n    \"$\" +\n    key.replace(/[=:]/g, function (match) {\n      return escaperLookup[match];\n    })\n  );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n  return \"object\" === typeof element && null !== element && null != element.key\n    ? escape(\"\" + element.key)\n    : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw thenable.reason;\n    default:\n      switch (\n        (\"string\" === typeof thenable.status\n          ? thenable.then(noop$1, noop$1)\n          : ((thenable.status = \"pending\"),\n            thenable.then(\n              function (fulfilledValue) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"fulfilled\"),\n                  (thenable.value = fulfilledValue));\n              },\n              function (error) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"rejected\"), (thenable.reason = error));\n              }\n            )),\n        thenable.status)\n      ) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n      }\n  }\n  throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n  if (\"undefined\" === type || \"boolean\" === type) children = null;\n  var invokeCallback = !1;\n  if (null === children) invokeCallback = !0;\n  else\n    switch (type) {\n      case \"bigint\":\n      case \"string\":\n      case \"number\":\n        invokeCallback = !0;\n        break;\n      case \"object\":\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = !0;\n            break;\n          case REACT_LAZY_TYPE:\n            return (\n              (invokeCallback = children._init),\n              mapIntoArray(\n                invokeCallback(children._payload),\n                array,\n                escapedPrefix,\n                nameSoFar,\n                callback\n              )\n            );\n        }\n    }\n  if (invokeCallback)\n    return (\n      (callback = callback(children)),\n      (invokeCallback =\n        \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n      isArrayImpl(callback)\n        ? ((escapedPrefix = \"\"),\n          null != invokeCallback &&\n            (escapedPrefix =\n              invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n          mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n            return c;\n          }))\n        : null != callback &&\n          (isValidElement(callback) &&\n            (callback = cloneAndReplaceKey(\n              callback,\n              escapedPrefix +\n                (null == callback.key ||\n                (children && children.key === callback.key)\n                  ? \"\"\n                  : (\"\" + callback.key).replace(\n                      userProvidedKeyEscapeRegex,\n                      \"$&/\"\n                    ) + \"/\") +\n                invokeCallback\n            )),\n          array.push(callback)),\n      1\n    );\n  invokeCallback = 0;\n  var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n  if (isArrayImpl(children))\n    for (var i = 0; i < children.length; i++)\n      (nameSoFar = children[i]),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n    for (\n      children = i.call(children), i = 0;\n      !(nameSoFar = children.next()).done;\n\n    )\n      (nameSoFar = nameSoFar.value),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (\"object\" === type) {\n    if (\"function\" === typeof children.then)\n      return mapIntoArray(\n        resolveThenable(children),\n        array,\n        escapedPrefix,\n        nameSoFar,\n        callback\n      );\n    array = String(children);\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === array\n          ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n          : array) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n  }\n  return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n  if (null == children) return children;\n  var result = [],\n    count = 0;\n  mapIntoArray(children, result, \"\", \"\", function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\nfunction lazyInitializer(payload) {\n  if (-1 === payload._status) {\n    var ctor = payload._result;\n    ctor = ctor();\n    ctor.then(\n      function (moduleObject) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 1), (payload._result = moduleObject);\n      },\n      function (error) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 2), (payload._result = error);\n      }\n    );\n    -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n  }\n  if (1 === payload._status) return payload._result.default;\n  throw payload._result;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction noop() {}\nexports.Children = {\n  map: mapChildren,\n  forEach: function (children, forEachFunc, forEachContext) {\n    mapChildren(\n      children,\n      function () {\n        forEachFunc.apply(this, arguments);\n      },\n      forEachContext\n    );\n  },\n  count: function (children) {\n    var n = 0;\n    mapChildren(children, function () {\n      n++;\n    });\n    return n;\n  },\n  toArray: function (children) {\n    return (\n      mapChildren(children, function (child) {\n        return child;\n      }) || []\n    );\n  },\n  only: function (children) {\n    if (!isValidElement(children))\n      throw Error(\n        \"React.Children.only expected to receive a single React element child.\"\n      );\n    return children;\n  }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  ReactSharedInternals;\nexports.act = function () {\n  throw Error(\"act(...) is not supported in production builds of React.\");\n};\nexports.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cloneElement = function (element, config, children) {\n  if (null === element || void 0 === element)\n    throw Error(\n      \"The argument must be a React element, but you passed \" + element + \".\"\n    );\n  var props = assign({}, element.props),\n    key = element.key,\n    owner = void 0;\n  if (null != config)\n    for (propName in (void 0 !== config.ref && (owner = void 0),\n    void 0 !== config.key && (key = \"\" + config.key),\n    config))\n      !hasOwnProperty.call(config, propName) ||\n        \"key\" === propName ||\n        \"__self\" === propName ||\n        \"__source\" === propName ||\n        (\"ref\" === propName && void 0 === config.ref) ||\n        (props[propName] = config[propName]);\n  var propName = arguments.length - 2;\n  if (1 === propName) props.children = children;\n  else if (1 < propName) {\n    for (var childArray = Array(propName), i = 0; i < propName; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n  defaultValue = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    _threadCount: 0,\n    Provider: null,\n    Consumer: null\n  };\n  defaultValue.Provider = defaultValue;\n  defaultValue.Consumer = {\n    $$typeof: REACT_CONSUMER_TYPE,\n    _context: defaultValue\n  };\n  return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n  var propName,\n    props = {},\n    key = null;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      hasOwnProperty.call(config, propName) &&\n        \"key\" !== propName &&\n        \"__self\" !== propName &&\n        \"__source\" !== propName &&\n        (props[propName] = config[propName]);\n  var childrenLength = arguments.length - 2;\n  if (1 === childrenLength) props.children = children;\n  else if (1 < childrenLength) {\n    for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  if (type && type.defaultProps)\n    for (propName in ((childrenLength = type.defaultProps), childrenLength))\n      void 0 === props[propName] &&\n        (props[propName] = childrenLength[propName]);\n  return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\nexports.forwardRef = function (render) {\n  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n  return {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: { _status: -1, _result: ctor },\n    _init: lazyInitializer\n  };\n};\nexports.memo = function (type, compare) {\n  return {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: void 0 === compare ? null : compare\n  };\n};\nexports.startTransition = function (scope) {\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  try {\n    var returnValue = scope(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    \"object\" === typeof returnValue &&\n      null !== returnValue &&\n      \"function\" === typeof returnValue.then &&\n      returnValue.then(noop, reportGlobalError);\n  } catch (error) {\n    reportGlobalError(error);\n  } finally {\n    ReactSharedInternals.T = prevTransition;\n  }\n};\nexports.unstable_useCacheRefresh = function () {\n  return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n  return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n  return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n  return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n  return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n  return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useId = function () {\n  return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n  return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n  return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n  return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n  return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n  return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot\n) {\n  return ReactSharedInternals.H.useSyncExternalStore(\n    subscribe,\n    getSnapshot,\n    getServerSnapshot\n  );\n};\nexports.useTransition = function () {\n  return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.0.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\"use strict\";\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  a: for (; 0 < index; ) {\n    var parentIndex = (index - 1) >>> 1,\n      parent = heap[parentIndex];\n    if (0 < compare(parent, node))\n      (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n    else break a;\n  }\n}\nfunction peek(heap) {\n  return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n  if (0 === heap.length) return null;\n  var first = heap[0],\n    last = heap.pop();\n  if (last !== first) {\n    heap[0] = last;\n    a: for (\n      var index = 0, length = heap.length, halfLength = length >>> 1;\n      index < halfLength;\n\n    ) {\n      var leftIndex = 2 * (index + 1) - 1,\n        left = heap[leftIndex],\n        rightIndex = leftIndex + 1,\n        right = heap[rightIndex];\n      if (0 > compare(left, last))\n        rightIndex < length && 0 > compare(right, left)\n          ? ((heap[index] = right),\n            (heap[rightIndex] = last),\n            (index = rightIndex))\n          : ((heap[index] = left),\n            (heap[leftIndex] = last),\n            (index = leftIndex));\n      else if (rightIndex < length && 0 > compare(right, last))\n        (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n      else break a;\n    }\n  }\n  return first;\n}\nfunction compare(a, b) {\n  var diff = a.sortIndex - b.sortIndex;\n  return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n  var localPerformance = performance;\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date,\n    initialTime = localDate.now();\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n}\nvar taskQueue = [],\n  timerQueue = [],\n  taskIdCounter = 1,\n  currentTask = null,\n  currentPriorityLevel = 3,\n  isPerformingWork = !1,\n  isHostCallbackScheduled = !1,\n  isHostTimeoutScheduled = !1,\n  localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n  localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n  localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n  for (var timer = peek(timerQueue); null !== timer; ) {\n    if (null === timer.callback) pop(timerQueue);\n    else if (timer.startTime <= currentTime)\n      pop(timerQueue),\n        (timer.sortIndex = timer.expirationTime),\n        push(taskQueue, timer);\n    else break;\n    timer = peek(timerQueue);\n  }\n}\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = !1;\n  advanceTimers(currentTime);\n  if (!isHostCallbackScheduled)\n    if (null !== peek(taskQueue))\n      (isHostCallbackScheduled = !0), requestHostCallback();\n    else {\n      var firstTimer = peek(timerQueue);\n      null !== firstTimer &&\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n}\nvar isMessageLoopRunning = !1,\n  taskTimeoutID = -1,\n  frameInterval = 5,\n  startTime = -1;\nfunction shouldYieldToHost() {\n  return exports.unstable_now() - startTime < frameInterval ? !1 : !0;\n}\nfunction performWorkUntilDeadline() {\n  if (isMessageLoopRunning) {\n    var currentTime = exports.unstable_now();\n    startTime = currentTime;\n    var hasMoreWork = !0;\n    try {\n      a: {\n        isHostCallbackScheduled = !1;\n        isHostTimeoutScheduled &&\n          ((isHostTimeoutScheduled = !1),\n          localClearTimeout(taskTimeoutID),\n          (taskTimeoutID = -1));\n        isPerformingWork = !0;\n        var previousPriorityLevel = currentPriorityLevel;\n        try {\n          b: {\n            advanceTimers(currentTime);\n            for (\n              currentTask = peek(taskQueue);\n              null !== currentTask &&\n              !(\n                currentTask.expirationTime > currentTime && shouldYieldToHost()\n              );\n\n            ) {\n              var callback = currentTask.callback;\n              if (\"function\" === typeof callback) {\n                currentTask.callback = null;\n                currentPriorityLevel = currentTask.priorityLevel;\n                var continuationCallback = callback(\n                  currentTask.expirationTime <= currentTime\n                );\n                currentTime = exports.unstable_now();\n                if (\"function\" === typeof continuationCallback) {\n                  currentTask.callback = continuationCallback;\n                  advanceTimers(currentTime);\n                  hasMoreWork = !0;\n                  break b;\n                }\n                currentTask === peek(taskQueue) && pop(taskQueue);\n                advanceTimers(currentTime);\n              } else pop(taskQueue);\n              currentTask = peek(taskQueue);\n            }\n            if (null !== currentTask) hasMoreWork = !0;\n            else {\n              var firstTimer = peek(timerQueue);\n              null !== firstTimer &&\n                requestHostTimeout(\n                  handleTimeout,\n                  firstTimer.startTime - currentTime\n                );\n              hasMoreWork = !1;\n            }\n          }\n          break a;\n        } finally {\n          (currentTask = null),\n            (currentPriorityLevel = previousPriorityLevel),\n            (isPerformingWork = !1);\n        }\n        hasMoreWork = void 0;\n      }\n    } finally {\n      hasMoreWork\n        ? schedulePerformWorkUntilDeadline()\n        : (isMessageLoopRunning = !1);\n    }\n  }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\nelse if (\"undefined\" !== typeof MessageChannel) {\n  var channel = new MessageChannel(),\n    port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\nfunction requestHostCallback() {\n  isMessageLoopRunning ||\n    ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n}\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n  task.callback = null;\n};\nexports.unstable_continueExecution = function () {\n  isHostCallbackScheduled ||\n    isPerformingWork ||\n    ((isHostCallbackScheduled = !0), requestHostCallback());\n};\nexports.unstable_forceFrameRate = function (fps) {\n  0 > fps || 125 < fps\n    ? console.error(\n        \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n      )\n    : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n  return currentPriorityLevel;\n};\nexports.unstable_getFirstCallbackNode = function () {\n  return peek(taskQueue);\n};\nexports.unstable_next = function (eventHandler) {\n  switch (currentPriorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n      var priorityLevel = 3;\n      break;\n    default:\n      priorityLevel = currentPriorityLevel;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_pauseExecution = function () {};\nexports.unstable_requestPaint = function () {};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n      break;\n    default:\n      priorityLevel = 3;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_scheduleCallback = function (\n  priorityLevel,\n  callback,\n  options\n) {\n  var currentTime = exports.unstable_now();\n  \"object\" === typeof options && null !== options\n    ? ((options = options.delay),\n      (options =\n        \"number\" === typeof options && 0 < options\n          ? currentTime + options\n          : currentTime))\n    : (options = currentTime);\n  switch (priorityLevel) {\n    case 1:\n      var timeout = -1;\n      break;\n    case 2:\n      timeout = 250;\n      break;\n    case 5:\n      timeout = 1073741823;\n      break;\n    case 4:\n      timeout = 1e4;\n      break;\n    default:\n      timeout = 5e3;\n  }\n  timeout = options + timeout;\n  priorityLevel = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: options,\n    expirationTime: timeout,\n    sortIndex: -1\n  };\n  options > currentTime\n    ? ((priorityLevel.sortIndex = options),\n      push(timerQueue, priorityLevel),\n      null === peek(taskQueue) &&\n        priorityLevel === peek(timerQueue) &&\n        (isHostTimeoutScheduled\n          ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n          : (isHostTimeoutScheduled = !0),\n        requestHostTimeout(handleTimeout, options - currentTime)))\n    : ((priorityLevel.sortIndex = timeout),\n      push(taskQueue, priorityLevel),\n      isHostCallbackScheduled ||\n        isPerformingWork ||\n        ((isHostCallbackScheduled = !0), requestHostCallback()));\n  return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nexport { _objectSpread2 as default };","const NAMESPACE = 'tegel';\nconst BUILD = /* tegel */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, asyncQueue: false, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: true, cmpDidUnload: false, cmpDidUpdate: false, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: true, cmpWillUpdate: false, connectedCallback: true, constructableCSS: true, cssAnnotations: true, devTools: false, disconnectedCallback: true, element: false, event: true, experimentalScopedSlotChanges: false, experimentalSlotFixes: false, formAssociated: false, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: true, hostListenerTargetDocument: true, hostListenerTargetParent: false, hostListenerTargetWindow: true, hotModuleReplacement: false, hydrateClientSide: false, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, hydratedSelectorName: \"hydrated\", initializeNextTick: false, invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: true, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, scoped: true, scopedSlotTextContentFix: false, scriptDataOpts: false, shadowDelegatesFocus: true, shadowDom: true, slot: true, slotChildNodesFix: false, slotRelocation: true, state: true, style: true, svg: true, taskQueue: true, transformTagName: true, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: true, watchCallback: true };\n\n/*\n Stencil Client Platform v4.19.2 | MIT Licensed | https://stenciljs.com\n */\nvar __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar hostRefs = /* @__PURE__ */ new WeakMap();\nvar getHostRef = (ref) => hostRefs.get(ref);\nvar registerInstance = (lazyInstance, hostRef) => hostRefs.set(hostRef.$lazyInstance$ = lazyInstance, hostRef);\nvar registerHost = (hostElement, cmpMeta) => {\n  const hostRef = {\n    $flags$: 0,\n    $hostElement$: hostElement,\n    $cmpMeta$: cmpMeta,\n    $instanceValues$: /* @__PURE__ */ new Map()\n  };\n  {\n    hostRef.$onInstancePromise$ = new Promise((r) => hostRef.$onInstanceResolve$ = r);\n  }\n  {\n    hostRef.$onReadyPromise$ = new Promise((r) => hostRef.$onReadyResolve$ = r);\n    hostElement[\"s-p\"] = [];\n    hostElement[\"s-rc\"] = [];\n  }\n  return hostRefs.set(hostElement, hostRef);\n};\nvar isMemberInElement = (elm, memberName) => memberName in elm;\nvar consoleError = (e, el) => (0, console.error)(e, el);\n\n// src/client/client-load-module.ts\nvar cmpModules = /* @__PURE__ */ new Map();\nvar loadModule = (cmpMeta, hostRef, hmrVersionId) => {\n  const exportName = cmpMeta.$tagName$.replace(/-/g, \"_\");\n  const bundleId = cmpMeta.$lazyBundleId$;\n  if (!bundleId) {\n    return void 0;\n  }\n  const module = cmpModules.get(bundleId) ;\n  if (module) {\n    return module[exportName];\n  }\n  \n        if (!hmrVersionId || !BUILD.hotModuleReplacement) {\n          const processMod = importedModule => {\n              cmpModules.set(bundleId, importedModule);\n              return importedModule[exportName];\n          }\n          switch(bundleId) {\n              \n                case 'tds-accordion':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-accordion.entry.js').then(processMod, consoleError);\n                case 'tds-accordion-item':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-accordion-item.entry.js').then(processMod, consoleError);\n                case 'tds-badge':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-badge.entry.js').then(processMod, consoleError);\n                case 'tds-banner':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-banner.entry.js').then(processMod, consoleError);\n                case 'tds-block':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-block.entry.js').then(processMod, consoleError);\n                case 'tds-body-cell':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-body-cell.entry.js').then(processMod, consoleError);\n                case 'tds-breadcrumb':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-breadcrumb.entry.js').then(processMod, consoleError);\n                case 'tds-breadcrumbs':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-breadcrumbs.entry.js').then(processMod, consoleError);\n                case 'tds-button':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-button.entry.js').then(processMod, consoleError);\n                case 'tds-card':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-card.entry.js').then(processMod, consoleError);\n                case 'tds-chip':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-chip.entry.js').then(processMod, consoleError);\n                case 'tds-datetime':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-datetime.entry.js').then(processMod, consoleError);\n                case 'tds-folder-tab':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-folder-tab.entry.js').then(processMod, consoleError);\n                case 'tds-folder-tabs':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-folder-tabs.entry.js').then(processMod, consoleError);\n                case 'tds-footer':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-footer.entry.js').then(processMod, consoleError);\n                case 'tds-footer-group':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-footer-group.entry.js').then(processMod, consoleError);\n                case 'tds-footer-item':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-footer-item.entry.js').then(processMod, consoleError);\n                case 'tds-header':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header.entry.js').then(processMod, consoleError);\n                case 'tds-header-brand-symbol':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-brand-symbol.entry.js').then(processMod, consoleError);\n                case 'tds-header-cell':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-cell.entry.js').then(processMod, consoleError);\n                case 'tds-header-dropdown':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-dropdown.entry.js').then(processMod, consoleError);\n                case 'tds-header-dropdown-list-user':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-dropdown-list-user.entry.js').then(processMod, consoleError);\n                case 'tds-header-hamburger':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-hamburger.entry.js').then(processMod, consoleError);\n                case 'tds-header-launcher':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-launcher.entry.js').then(processMod, consoleError);\n                case 'tds-header-launcher-grid':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-launcher-grid.entry.js').then(processMod, consoleError);\n                case 'tds-header-launcher-grid-item':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-launcher-grid-item.entry.js').then(processMod, consoleError);\n                case 'tds-header-launcher-grid-title':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-launcher-grid-title.entry.js').then(processMod, consoleError);\n                case 'tds-header-launcher-list':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-launcher-list.entry.js').then(processMod, consoleError);\n                case 'tds-header-launcher-list-item':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-launcher-list-item.entry.js').then(processMod, consoleError);\n                case 'tds-header-launcher-list-title':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-launcher-list-title.entry.js').then(processMod, consoleError);\n                case 'tds-header-title':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-title.entry.js').then(processMod, consoleError);\n                case 'tds-inline-tab':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-inline-tab.entry.js').then(processMod, consoleError);\n                case 'tds-inline-tabs':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-inline-tabs.entry.js').then(processMod, consoleError);\n                case 'tds-link':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-link.entry.js').then(processMod, consoleError);\n                case 'tds-message':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-message.entry.js').then(processMod, consoleError);\n                case 'tds-modal':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-modal.entry.js').then(processMod, consoleError);\n                case 'tds-navigation-tab':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-navigation-tab.entry.js').then(processMod, consoleError);\n                case 'tds-navigation-tabs':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-navigation-tabs.entry.js').then(processMod, consoleError);\n                case 'tds-popover-menu':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-popover-menu.entry.js').then(processMod, consoleError);\n                case 'tds-popover-menu-item':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-popover-menu-item.entry.js').then(processMod, consoleError);\n                case 'tds-radio-button':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-radio-button.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu-close-button':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu-close-button.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu-collapse-button':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu-collapse-button.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu-dropdown':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu-dropdown.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu-dropdown-list':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu-dropdown-list.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu-dropdown-list-item':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu-dropdown-list-item.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu-overlay':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu-overlay.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu-user':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu-user.entry.js').then(processMod, consoleError);\n                case 'tds-slider':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-slider.entry.js').then(processMod, consoleError);\n                case 'tds-spinner':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-spinner.entry.js').then(processMod, consoleError);\n                case 'tds-step':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-step.entry.js').then(processMod, consoleError);\n                case 'tds-stepper':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-stepper.entry.js').then(processMod, consoleError);\n                case 'tds-table':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-table.entry.js').then(processMod, consoleError);\n                case 'tds-table-body':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-table-body.entry.js').then(processMod, consoleError);\n                case 'tds-table-body-input-wrapper':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-table-body-input-wrapper.entry.js').then(processMod, consoleError);\n                case 'tds-table-body-row':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-table-body-row.entry.js').then(processMod, consoleError);\n                case 'tds-table-body-row-expandable':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-table-body-row-expandable.entry.js').then(processMod, consoleError);\n                case 'tds-table-footer':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-table-footer.entry.js').then(processMod, consoleError);\n                case 'tds-table-header':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-table-header.entry.js').then(processMod, consoleError);\n                case 'tds-table-header-input-wrapper':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-table-header-input-wrapper.entry.js').then(processMod, consoleError);\n                case 'tds-table-toolbar':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-table-toolbar.entry.js').then(processMod, consoleError);\n                case 'tds-text-field':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-text-field.entry.js').then(processMod, consoleError);\n                case 'tds-textarea':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-textarea.entry.js').then(processMod, consoleError);\n                case 'tds-toast':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-toast.entry.js').then(processMod, consoleError);\n                case 'tds-toggle':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-toggle.entry.js').then(processMod, consoleError);\n                case 'tds-tooltip':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-tooltip.entry.js').then(processMod, consoleError);\n                case 'tds-divider':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-divider.entry.js').then(processMod, consoleError);\n                case 'tds-dropdown_2':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-dropdown_2.entry.js').then(processMod, consoleError);\n                case 'tds-header-dropdown-list':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-dropdown-list.entry.js').then(processMod, consoleError);\n                case 'tds-header-dropdown-list-item':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-dropdown-list-item.entry.js').then(processMod, consoleError);\n                case 'tds-header-launcher-button':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-header-launcher-button.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu-user-image_2':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu-user-image_2.entry.js').then(processMod, consoleError);\n                case 'tds-popover-canvas':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-popover-canvas.entry.js').then(processMod, consoleError);\n                case 'tds-side-menu-item':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-side-menu-item.entry.js').then(processMod, consoleError);\n                case 'tds-checkbox':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-checkbox.entry.js').then(processMod, consoleError);\n                case 'tds-core-header-item_2':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-core-header-item_2.entry.js').then(processMod, consoleError);\n                case 'tds-popover-core':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-popover-core.entry.js').then(processMod, consoleError);\n                case 'tds-icon':\n                    return import(\n                      /* webpackMode: \"lazy\" */\n                      './tds-icon.entry.js').then(processMod, consoleError);\n          }\n      }\n  return import(\n    /* @vite-ignore */\n    /* webpackInclude: /\\.entry\\.js$/ */\n    /* webpackExclude: /\\.system\\.entry\\.js$/ */\n    /* webpackMode: \"lazy\" */\n    `./${bundleId}.entry.js${\"\"}`\n  ).then((importedModule) => {\n    {\n      cmpModules.set(bundleId, importedModule);\n    }\n    return importedModule[exportName];\n  }, consoleError);\n};\n\n// src/client/client-style.ts\nvar styles = /* @__PURE__ */ new Map();\nvar HYDRATED_CSS = \"{visibility:hidden}.hydrated{visibility:inherit}\";\nvar SLOT_FB_CSS = \"slot-fb{display:contents}slot-fb[hidden]{display:none}\";\nvar XLINK_NS = \"http://www.w3.org/1999/xlink\";\nvar win = typeof window !== \"undefined\" ? window : {};\nvar doc = win.document || { head: {} };\nvar plt = {\n  $flags$: 0,\n  $resourcesUrl$: \"\",\n  jmp: (h2) => h2(),\n  raf: (h2) => requestAnimationFrame(h2),\n  ael: (el, eventName, listener, opts) => el.addEventListener(eventName, listener, opts),\n  rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts),\n  ce: (eventName, opts) => new CustomEvent(eventName, opts)\n};\nvar supportsListenerOptions = /* @__PURE__ */ (() => {\n  let supportsListenerOptions2 = false;\n  try {\n    doc.addEventListener(\n      \"e\",\n      null,\n      Object.defineProperty({}, \"passive\", {\n        get() {\n          supportsListenerOptions2 = true;\n        }\n      })\n    );\n  } catch (e) {\n  }\n  return supportsListenerOptions2;\n})();\nvar promiseResolve = (v) => Promise.resolve(v);\nvar supportsConstructableStylesheets = /* @__PURE__ */ (() => {\n  try {\n    new CSSStyleSheet();\n    return typeof new CSSStyleSheet().replaceSync === \"function\";\n  } catch (e) {\n  }\n  return false;\n})() ;\nvar queuePending = false;\nvar queueDomReads = [];\nvar queueDomWrites = [];\nvar queueTask = (queue, write) => (cb) => {\n  queue.push(cb);\n  if (!queuePending) {\n    queuePending = true;\n    if (write && plt.$flags$ & 4 /* queueSync */) {\n      nextTick(flush);\n    } else {\n      plt.raf(flush);\n    }\n  }\n};\nvar consume = (queue) => {\n  for (let i2 = 0; i2 < queue.length; i2++) {\n    try {\n      queue[i2](performance.now());\n    } catch (e) {\n      consoleError(e);\n    }\n  }\n  queue.length = 0;\n};\nvar flush = () => {\n  consume(queueDomReads);\n  {\n    consume(queueDomWrites);\n    if (queuePending = queueDomReads.length > 0) {\n      plt.raf(flush);\n    }\n  }\n};\nvar nextTick = (cb) => promiseResolve().then(cb);\nvar writeTask = /* @__PURE__ */ queueTask(queueDomWrites, true);\n\n// src/utils/constants.ts\nvar EMPTY_OBJ = {};\nvar SVG_NS = \"http://www.w3.org/2000/svg\";\nvar HTML_NS = \"http://www.w3.org/1999/xhtml\";\n\n// src/utils/helpers.ts\nvar isDef = (v) => v != null;\nvar isComplexType = (o) => {\n  o = typeof o;\n  return o === \"object\" || o === \"function\";\n};\n\n// src/utils/query-nonce-meta-tag-content.ts\nfunction queryNonceMetaTagContent(doc2) {\n  var _a, _b, _c;\n  return (_c = (_b = (_a = doc2.head) == null ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) == null ? void 0 : _b.getAttribute(\"content\")) != null ? _c : void 0;\n}\n\n// src/utils/result.ts\nvar result_exports = {};\n__export(result_exports, {\n  err: () => err,\n  map: () => map,\n  ok: () => ok,\n  unwrap: () => unwrap,\n  unwrapErr: () => unwrapErr\n});\nvar ok = (value) => ({\n  isOk: true,\n  isErr: false,\n  value\n});\nvar err = (value) => ({\n  isOk: false,\n  isErr: true,\n  value\n});\nfunction map(result, fn) {\n  if (result.isOk) {\n    const val = fn(result.value);\n    if (val instanceof Promise) {\n      return val.then((newVal) => ok(newVal));\n    } else {\n      return ok(val);\n    }\n  }\n  if (result.isErr) {\n    const value = result.value;\n    return err(value);\n  }\n  throw \"should never get here\";\n}\nvar unwrap = (result) => {\n  if (result.isOk) {\n    return result.value;\n  } else {\n    throw result.value;\n  }\n};\nvar unwrapErr = (result) => {\n  if (result.isErr) {\n    return result.value;\n  } else {\n    throw result.value;\n  }\n};\nvar createTime = (fnName, tagName = \"\") => {\n  {\n    return () => {\n      return;\n    };\n  }\n};\nvar uniqueTime = (key, measureText) => {\n  {\n    return () => {\n      return;\n    };\n  }\n};\nvar h = (nodeName, vnodeData, ...children) => {\n  let child = null;\n  let key = null;\n  let slotName = null;\n  let simple = false;\n  let lastSimple = false;\n  const vNodeChildren = [];\n  const walk = (c) => {\n    for (let i2 = 0; i2 < c.length; i2++) {\n      child = c[i2];\n      if (Array.isArray(child)) {\n        walk(child);\n      } else if (child != null && typeof child !== \"boolean\") {\n        if (simple = typeof nodeName !== \"function\" && !isComplexType(child)) {\n          child = String(child);\n        }\n        if (simple && lastSimple) {\n          vNodeChildren[vNodeChildren.length - 1].$text$ += child;\n        } else {\n          vNodeChildren.push(simple ? newVNode(null, child) : child);\n        }\n        lastSimple = simple;\n      }\n    }\n  };\n  walk(children);\n  if (vnodeData) {\n    if (vnodeData.key) {\n      key = vnodeData.key;\n    }\n    if (vnodeData.name) {\n      slotName = vnodeData.name;\n    }\n    {\n      const classData = vnodeData.className || vnodeData.class;\n      if (classData) {\n        vnodeData.class = typeof classData !== \"object\" ? classData : Object.keys(classData).filter((k) => classData[k]).join(\" \");\n      }\n    }\n  }\n  if (typeof nodeName === \"function\") {\n    return nodeName(\n      vnodeData === null ? {} : vnodeData,\n      vNodeChildren,\n      vdomFnUtils\n    );\n  }\n  const vnode = newVNode(nodeName, null);\n  vnode.$attrs$ = vnodeData;\n  if (vNodeChildren.length > 0) {\n    vnode.$children$ = vNodeChildren;\n  }\n  {\n    vnode.$key$ = key;\n  }\n  {\n    vnode.$name$ = slotName;\n  }\n  return vnode;\n};\nvar newVNode = (tag, text) => {\n  const vnode = {\n    $flags$: 0,\n    $tag$: tag,\n    $text$: text,\n    $elm$: null,\n    $children$: null\n  };\n  {\n    vnode.$attrs$ = null;\n  }\n  {\n    vnode.$key$ = null;\n  }\n  {\n    vnode.$name$ = null;\n  }\n  return vnode;\n};\nvar Host = {};\nvar isHost = (node) => node && node.$tag$ === Host;\nvar vdomFnUtils = {\n  forEach: (children, cb) => children.map(convertToPublic).forEach(cb),\n  map: (children, cb) => children.map(convertToPublic).map(cb).map(convertToPrivate)\n};\nvar convertToPublic = (node) => ({\n  vattrs: node.$attrs$,\n  vchildren: node.$children$,\n  vkey: node.$key$,\n  vname: node.$name$,\n  vtag: node.$tag$,\n  vtext: node.$text$\n});\nvar convertToPrivate = (node) => {\n  if (typeof node.vtag === \"function\") {\n    const vnodeData = { ...node.vattrs };\n    if (node.vkey) {\n      vnodeData.key = node.vkey;\n    }\n    if (node.vname) {\n      vnodeData.name = node.vname;\n    }\n    return h(node.vtag, vnodeData, ...node.vchildren || []);\n  }\n  const vnode = newVNode(node.vtag, node.vtext);\n  vnode.$attrs$ = node.vattrs;\n  vnode.$children$ = node.vchildren;\n  vnode.$key$ = node.vkey;\n  vnode.$name$ = node.vname;\n  return vnode;\n};\nvar parsePropertyValue = (propValue, propType) => {\n  if (propValue != null && !isComplexType(propValue)) {\n    if (propType & 4 /* Boolean */) {\n      return propValue === \"false\" ? false : propValue === \"\" || !!propValue;\n    }\n    if (propType & 2 /* Number */) {\n      return parseFloat(propValue);\n    }\n    if (propType & 1 /* String */) {\n      return String(propValue);\n    }\n    return propValue;\n  }\n  return propValue;\n};\nvar getElement = (ref) => getHostRef(ref).$hostElement$ ;\n\n// src/runtime/event-emitter.ts\nvar createEvent = (ref, name, flags) => {\n  const elm = getElement(ref);\n  return {\n    emit: (detail) => {\n      return emitEvent(elm, name, {\n        bubbles: !!(flags & 4 /* Bubbles */),\n        composed: !!(flags & 2 /* Composed */),\n        cancelable: !!(flags & 1 /* Cancellable */),\n        detail\n      });\n    }\n  };\n};\nvar emitEvent = (elm, name, opts) => {\n  const ev = plt.ce(name, opts);\n  elm.dispatchEvent(ev);\n  return ev;\n};\nvar rootAppliedStyles = /* @__PURE__ */ new WeakMap();\nvar registerStyle = (scopeId2, cssText, allowCS) => {\n  let style = styles.get(scopeId2);\n  if (supportsConstructableStylesheets && allowCS) {\n    style = style || new CSSStyleSheet();\n    if (typeof style === \"string\") {\n      style = cssText;\n    } else {\n      style.replaceSync(cssText);\n    }\n  } else {\n    style = cssText;\n  }\n  styles.set(scopeId2, style);\n};\nvar addStyle = (styleContainerNode, cmpMeta, mode) => {\n  var _a;\n  const scopeId2 = getScopeId(cmpMeta);\n  const style = styles.get(scopeId2);\n  styleContainerNode = styleContainerNode.nodeType === 11 /* DocumentFragment */ ? styleContainerNode : doc;\n  if (style) {\n    if (typeof style === \"string\") {\n      styleContainerNode = styleContainerNode.head || styleContainerNode;\n      let appliedStyles = rootAppliedStyles.get(styleContainerNode);\n      let styleElm;\n      if (!appliedStyles) {\n        rootAppliedStyles.set(styleContainerNode, appliedStyles = /* @__PURE__ */ new Set());\n      }\n      if (!appliedStyles.has(scopeId2)) {\n        {\n          styleElm = doc.createElement(\"style\");\n          styleElm.innerHTML = style;\n          const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(doc);\n          if (nonce != null) {\n            styleElm.setAttribute(\"nonce\", nonce);\n          }\n          styleContainerNode.insertBefore(styleElm, styleContainerNode.querySelector(\"link\"));\n        }\n        if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {\n          styleElm.innerHTML += SLOT_FB_CSS;\n        }\n        if (appliedStyles) {\n          appliedStyles.add(scopeId2);\n        }\n      }\n    } else if (!styleContainerNode.adoptedStyleSheets.includes(style)) {\n      styleContainerNode.adoptedStyleSheets = [...styleContainerNode.adoptedStyleSheets, style];\n    }\n  }\n  return scopeId2;\n};\nvar attachStyles = (hostRef) => {\n  const cmpMeta = hostRef.$cmpMeta$;\n  const elm = hostRef.$hostElement$;\n  const flags = cmpMeta.$flags$;\n  const endAttachStyles = createTime(\"attachStyles\", cmpMeta.$tagName$);\n  const scopeId2 = addStyle(\n    elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(),\n    cmpMeta);\n  if (flags & 10 /* needsScopedEncapsulation */) {\n    elm[\"s-sc\"] = scopeId2;\n    elm.classList.add(scopeId2 + \"-h\");\n    if (flags & 2 /* scopedCssEncapsulation */) {\n      elm.classList.add(scopeId2 + \"-s\");\n    }\n  }\n  endAttachStyles();\n};\nvar getScopeId = (cmp, mode) => \"sc-\" + (cmp.$tagName$);\nvar setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {\n  if (oldValue !== newValue) {\n    let isProp = isMemberInElement(elm, memberName);\n    let ln = memberName.toLowerCase();\n    if (memberName === \"class\") {\n      const classList = elm.classList;\n      const oldClasses = parseClassList(oldValue);\n      const newClasses = parseClassList(newValue);\n      classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));\n      classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));\n    } else if (memberName === \"style\") {\n      {\n        for (const prop in oldValue) {\n          if (!newValue || newValue[prop] == null) {\n            if (prop.includes(\"-\")) {\n              elm.style.removeProperty(prop);\n            } else {\n              elm.style[prop] = \"\";\n            }\n          }\n        }\n      }\n      for (const prop in newValue) {\n        if (!oldValue || newValue[prop] !== oldValue[prop]) {\n          if (prop.includes(\"-\")) {\n            elm.style.setProperty(prop, newValue[prop]);\n          } else {\n            elm.style[prop] = newValue[prop];\n          }\n        }\n      }\n    } else if (memberName === \"key\") ; else if (memberName === \"ref\") {\n      if (newValue) {\n        newValue(elm);\n      }\n    } else if ((!isProp ) && memberName[0] === \"o\" && memberName[1] === \"n\") {\n      if (memberName[2] === \"-\") {\n        memberName = memberName.slice(3);\n      } else if (isMemberInElement(win, ln)) {\n        memberName = ln.slice(2);\n      } else {\n        memberName = ln[2] + memberName.slice(3);\n      }\n      if (oldValue || newValue) {\n        const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);\n        memberName = memberName.replace(CAPTURE_EVENT_REGEX, \"\");\n        if (oldValue) {\n          plt.rel(elm, memberName, oldValue, capture);\n        }\n        if (newValue) {\n          plt.ael(elm, memberName, newValue, capture);\n        }\n      }\n    } else {\n      const isComplex = isComplexType(newValue);\n      if ((isProp || isComplex && newValue !== null) && !isSvg) {\n        try {\n          if (!elm.tagName.includes(\"-\")) {\n            const n = newValue == null ? \"\" : newValue;\n            if (memberName === \"list\") {\n              isProp = false;\n            } else if (oldValue == null || elm[memberName] != n) {\n              elm[memberName] = n;\n            }\n          } else {\n            elm[memberName] = newValue;\n          }\n        } catch (e) {\n        }\n      }\n      let xlink = false;\n      {\n        if (ln !== (ln = ln.replace(/^xlink\\:?/, \"\"))) {\n          memberName = ln;\n          xlink = true;\n        }\n      }\n      if (newValue == null || newValue === false) {\n        if (newValue !== false || elm.getAttribute(memberName) === \"\") {\n          if (xlink) {\n            elm.removeAttributeNS(XLINK_NS, memberName);\n          } else {\n            elm.removeAttribute(memberName);\n          }\n        }\n      } else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex) {\n        newValue = newValue === true ? \"\" : newValue;\n        if (xlink) {\n          elm.setAttributeNS(XLINK_NS, memberName, newValue);\n        } else {\n          elm.setAttribute(memberName, newValue);\n        }\n      }\n    }\n  }\n};\nvar parseClassListRegex = /\\s/;\nvar parseClassList = (value) => !value ? [] : value.split(parseClassListRegex);\nvar CAPTURE_EVENT_SUFFIX = \"Capture\";\nvar CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + \"$\");\n\n// src/runtime/vdom/update-element.ts\nvar updateElement = (oldVnode, newVnode, isSvgMode2) => {\n  const elm = newVnode.$elm$.nodeType === 11 /* DocumentFragment */ && newVnode.$elm$.host ? newVnode.$elm$.host : newVnode.$elm$;\n  const oldVnodeAttrs = oldVnode && oldVnode.$attrs$ || EMPTY_OBJ;\n  const newVnodeAttrs = newVnode.$attrs$ || EMPTY_OBJ;\n  {\n    for (const memberName of sortedAttrNames(Object.keys(oldVnodeAttrs))) {\n      if (!(memberName in newVnodeAttrs)) {\n        setAccessor(elm, memberName, oldVnodeAttrs[memberName], void 0, isSvgMode2, newVnode.$flags$);\n      }\n    }\n  }\n  for (const memberName of sortedAttrNames(Object.keys(newVnodeAttrs))) {\n    setAccessor(elm, memberName, oldVnodeAttrs[memberName], newVnodeAttrs[memberName], isSvgMode2, newVnode.$flags$);\n  }\n};\nfunction sortedAttrNames(attrNames) {\n  return attrNames.includes(\"ref\") ? (\n    // we need to sort these to ensure that `'ref'` is the last attr\n    [...attrNames.filter((attr) => attr !== \"ref\"), \"ref\"]\n  ) : (\n    // no need to sort, return the original array\n    attrNames\n  );\n}\n\n// src/runtime/vdom/vdom-render.ts\nvar scopeId;\nvar contentRef;\nvar hostTagName;\nvar useNativeShadowDom = false;\nvar checkSlotFallbackVisibility = false;\nvar checkSlotRelocate = false;\nvar isSvgMode = false;\nvar createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {\n  var _a;\n  const newVNode2 = newParentVNode.$children$[childIndex];\n  let i2 = 0;\n  let elm;\n  let childNode;\n  let oldVNode;\n  if (!useNativeShadowDom) {\n    checkSlotRelocate = true;\n    if (newVNode2.$tag$ === \"slot\") {\n      if (scopeId) {\n        parentElm.classList.add(scopeId + \"-s\");\n      }\n      newVNode2.$flags$ |= newVNode2.$children$ ? (\n        // slot element has fallback content\n        // still create an element that \"mocks\" the slot element\n        2 /* isSlotFallback */\n      ) : (\n        // slot element does not have fallback content\n        // create an html comment we'll use to always reference\n        // where actual slot content should sit next to\n        1 /* isSlotReference */\n      );\n    }\n  }\n  if (newVNode2.$text$ !== null) {\n    elm = newVNode2.$elm$ = doc.createTextNode(newVNode2.$text$);\n  } else if (newVNode2.$flags$ & 1 /* isSlotReference */) {\n    elm = newVNode2.$elm$ = doc.createTextNode(\"\");\n  } else {\n    if (!isSvgMode) {\n      isSvgMode = newVNode2.$tag$ === \"svg\";\n    }\n    elm = newVNode2.$elm$ = doc.createElementNS(\n      isSvgMode ? SVG_NS : HTML_NS,\n      !useNativeShadowDom && BUILD.slotRelocation && newVNode2.$flags$ & 2 /* isSlotFallback */ ? \"slot-fb\" : newVNode2.$tag$\n    ) ;\n    if (isSvgMode && newVNode2.$tag$ === \"foreignObject\") {\n      isSvgMode = false;\n    }\n    {\n      updateElement(null, newVNode2, isSvgMode);\n    }\n    if (isDef(scopeId) && elm[\"s-si\"] !== scopeId) {\n      elm.classList.add(elm[\"s-si\"] = scopeId);\n    }\n    {\n      updateElementScopeIds(elm, parentElm);\n    }\n    if (newVNode2.$children$) {\n      for (i2 = 0; i2 < newVNode2.$children$.length; ++i2) {\n        childNode = createElm(oldParentVNode, newVNode2, i2, elm);\n        if (childNode) {\n          elm.appendChild(childNode);\n        }\n      }\n    }\n    {\n      if (newVNode2.$tag$ === \"svg\") {\n        isSvgMode = false;\n      } else if (elm.tagName === \"foreignObject\") {\n        isSvgMode = true;\n      }\n    }\n  }\n  elm[\"s-hn\"] = hostTagName;\n  {\n    if (newVNode2.$flags$ & (2 /* isSlotFallback */ | 1 /* isSlotReference */)) {\n      elm[\"s-sr\"] = true;\n      elm[\"s-cr\"] = contentRef;\n      elm[\"s-sn\"] = newVNode2.$name$ || \"\";\n      elm[\"s-rf\"] = (_a = newVNode2.$attrs$) == null ? void 0 : _a.ref;\n      oldVNode = oldParentVNode && oldParentVNode.$children$ && oldParentVNode.$children$[childIndex];\n      if (oldVNode && oldVNode.$tag$ === newVNode2.$tag$ && oldParentVNode.$elm$) {\n        {\n          putBackInOriginalLocation(oldParentVNode.$elm$, false);\n        }\n      }\n    }\n  }\n  return elm;\n};\nvar putBackInOriginalLocation = (parentElm, recursive) => {\n  plt.$flags$ |= 1 /* isTmpDisconnected */;\n  const oldSlotChildNodes = Array.from(parentElm.childNodes);\n  if (parentElm[\"s-sr\"] && BUILD.experimentalSlotFixes) {\n    let node = parentElm;\n    while (node = node.nextSibling) {\n      if (node && node[\"s-sn\"] === parentElm[\"s-sn\"] && node[\"s-sh\"] === hostTagName) {\n        oldSlotChildNodes.push(node);\n      }\n    }\n  }\n  for (let i2 = oldSlotChildNodes.length - 1; i2 >= 0; i2--) {\n    const childNode = oldSlotChildNodes[i2];\n    if (childNode[\"s-hn\"] !== hostTagName && childNode[\"s-ol\"]) {\n      insertBefore(parentReferenceNode(childNode), childNode, referenceNode(childNode));\n      childNode[\"s-ol\"].remove();\n      childNode[\"s-ol\"] = void 0;\n      childNode[\"s-sh\"] = void 0;\n      checkSlotRelocate = true;\n    }\n    if (recursive) {\n      putBackInOriginalLocation(childNode, recursive);\n    }\n  }\n  plt.$flags$ &= ~1 /* isTmpDisconnected */;\n};\nvar addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {\n  let containerElm = parentElm[\"s-cr\"] && parentElm[\"s-cr\"].parentNode || parentElm;\n  let childNode;\n  if (containerElm.shadowRoot && containerElm.tagName === hostTagName) {\n    containerElm = containerElm.shadowRoot;\n  }\n  for (; startIdx <= endIdx; ++startIdx) {\n    if (vnodes[startIdx]) {\n      childNode = createElm(null, parentVNode, startIdx, parentElm);\n      if (childNode) {\n        vnodes[startIdx].$elm$ = childNode;\n        insertBefore(containerElm, childNode, referenceNode(before) );\n      }\n    }\n  }\n};\nvar removeVnodes = (vnodes, startIdx, endIdx) => {\n  for (let index = startIdx; index <= endIdx; ++index) {\n    const vnode = vnodes[index];\n    if (vnode) {\n      const elm = vnode.$elm$;\n      nullifyVNodeRefs(vnode);\n      if (elm) {\n        {\n          checkSlotFallbackVisibility = true;\n          if (elm[\"s-ol\"]) {\n            elm[\"s-ol\"].remove();\n          } else {\n            putBackInOriginalLocation(elm, true);\n          }\n        }\n        elm.remove();\n      }\n    }\n  }\n};\nvar updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = false) => {\n  let oldStartIdx = 0;\n  let newStartIdx = 0;\n  let idxInOld = 0;\n  let i2 = 0;\n  let oldEndIdx = oldCh.length - 1;\n  let oldStartVnode = oldCh[0];\n  let oldEndVnode = oldCh[oldEndIdx];\n  let newEndIdx = newCh.length - 1;\n  let newStartVnode = newCh[0];\n  let newEndVnode = newCh[newEndIdx];\n  let node;\n  let elmToMove;\n  while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n    if (oldStartVnode == null) {\n      oldStartVnode = oldCh[++oldStartIdx];\n    } else if (oldEndVnode == null) {\n      oldEndVnode = oldCh[--oldEndIdx];\n    } else if (newStartVnode == null) {\n      newStartVnode = newCh[++newStartIdx];\n    } else if (newEndVnode == null) {\n      newEndVnode = newCh[--newEndIdx];\n    } else if (isSameVnode(oldStartVnode, newStartVnode, isInitialRender)) {\n      patch(oldStartVnode, newStartVnode, isInitialRender);\n      oldStartVnode = oldCh[++oldStartIdx];\n      newStartVnode = newCh[++newStartIdx];\n    } else if (isSameVnode(oldEndVnode, newEndVnode, isInitialRender)) {\n      patch(oldEndVnode, newEndVnode, isInitialRender);\n      oldEndVnode = oldCh[--oldEndIdx];\n      newEndVnode = newCh[--newEndIdx];\n    } else if (isSameVnode(oldStartVnode, newEndVnode, isInitialRender)) {\n      if ((oldStartVnode.$tag$ === \"slot\" || newEndVnode.$tag$ === \"slot\")) {\n        putBackInOriginalLocation(oldStartVnode.$elm$.parentNode, false);\n      }\n      patch(oldStartVnode, newEndVnode, isInitialRender);\n      insertBefore(parentElm, oldStartVnode.$elm$, oldEndVnode.$elm$.nextSibling);\n      oldStartVnode = oldCh[++oldStartIdx];\n      newEndVnode = newCh[--newEndIdx];\n    } else if (isSameVnode(oldEndVnode, newStartVnode, isInitialRender)) {\n      if ((oldStartVnode.$tag$ === \"slot\" || newEndVnode.$tag$ === \"slot\")) {\n        putBackInOriginalLocation(oldEndVnode.$elm$.parentNode, false);\n      }\n      patch(oldEndVnode, newStartVnode, isInitialRender);\n      insertBefore(parentElm, oldEndVnode.$elm$, oldStartVnode.$elm$);\n      oldEndVnode = oldCh[--oldEndIdx];\n      newStartVnode = newCh[++newStartIdx];\n    } else {\n      idxInOld = -1;\n      {\n        for (i2 = oldStartIdx; i2 <= oldEndIdx; ++i2) {\n          if (oldCh[i2] && oldCh[i2].$key$ !== null && oldCh[i2].$key$ === newStartVnode.$key$) {\n            idxInOld = i2;\n            break;\n          }\n        }\n      }\n      if (idxInOld >= 0) {\n        elmToMove = oldCh[idxInOld];\n        if (elmToMove.$tag$ !== newStartVnode.$tag$) {\n          node = createElm(oldCh && oldCh[newStartIdx], newVNode2, idxInOld, parentElm);\n        } else {\n          patch(elmToMove, newStartVnode, isInitialRender);\n          oldCh[idxInOld] = void 0;\n          node = elmToMove.$elm$;\n        }\n        newStartVnode = newCh[++newStartIdx];\n      } else {\n        node = createElm(oldCh && oldCh[newStartIdx], newVNode2, newStartIdx, parentElm);\n        newStartVnode = newCh[++newStartIdx];\n      }\n      if (node) {\n        {\n          insertBefore(parentReferenceNode(oldStartVnode.$elm$), node, referenceNode(oldStartVnode.$elm$));\n        }\n      }\n    }\n  }\n  if (oldStartIdx > oldEndIdx) {\n    addVnodes(\n      parentElm,\n      newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].$elm$,\n      newVNode2,\n      newCh,\n      newStartIdx,\n      newEndIdx\n    );\n  } else if (newStartIdx > newEndIdx) {\n    removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n  }\n};\nvar isSameVnode = (leftVNode, rightVNode, isInitialRender = false) => {\n  if (leftVNode.$tag$ === rightVNode.$tag$) {\n    if (leftVNode.$tag$ === \"slot\") {\n      return leftVNode.$name$ === rightVNode.$name$;\n    }\n    if (!isInitialRender) {\n      return leftVNode.$key$ === rightVNode.$key$;\n    }\n    return true;\n  }\n  return false;\n};\nvar referenceNode = (node) => {\n  return node && node[\"s-ol\"] || node;\n};\nvar parentReferenceNode = (node) => (node[\"s-ol\"] ? node[\"s-ol\"] : node).parentNode;\nvar patch = (oldVNode, newVNode2, isInitialRender = false) => {\n  const elm = newVNode2.$elm$ = oldVNode.$elm$;\n  const oldChildren = oldVNode.$children$;\n  const newChildren = newVNode2.$children$;\n  const tag = newVNode2.$tag$;\n  const text = newVNode2.$text$;\n  let defaultHolder;\n  if (text === null) {\n    {\n      isSvgMode = tag === \"svg\" ? true : tag === \"foreignObject\" ? false : isSvgMode;\n    }\n    {\n      if (tag === \"slot\" && !useNativeShadowDom) ; else {\n        updateElement(oldVNode, newVNode2, isSvgMode);\n      }\n    }\n    if (oldChildren !== null && newChildren !== null) {\n      updateChildren(elm, oldChildren, newVNode2, newChildren, isInitialRender);\n    } else if (newChildren !== null) {\n      if (oldVNode.$text$ !== null) {\n        elm.textContent = \"\";\n      }\n      addVnodes(elm, null, newVNode2, newChildren, 0, newChildren.length - 1);\n    } else if (oldChildren !== null) {\n      removeVnodes(oldChildren, 0, oldChildren.length - 1);\n    }\n    if (isSvgMode && tag === \"svg\") {\n      isSvgMode = false;\n    }\n  } else if ((defaultHolder = elm[\"s-cr\"])) {\n    defaultHolder.parentNode.textContent = text;\n  } else if (oldVNode.$text$ !== text) {\n    elm.data = text;\n  }\n};\nvar updateFallbackSlotVisibility = (elm) => {\n  const childNodes = elm.childNodes;\n  for (const childNode of childNodes) {\n    if (childNode.nodeType === 1 /* ElementNode */) {\n      if (childNode[\"s-sr\"]) {\n        const slotName = childNode[\"s-sn\"];\n        childNode.hidden = false;\n        for (const siblingNode of childNodes) {\n          if (siblingNode !== childNode) {\n            if (siblingNode[\"s-hn\"] !== childNode[\"s-hn\"] || slotName !== \"\") {\n              if (siblingNode.nodeType === 1 /* ElementNode */ && (slotName === siblingNode.getAttribute(\"slot\") || slotName === siblingNode[\"s-sn\"]) || siblingNode.nodeType === 3 /* TextNode */ && slotName === siblingNode[\"s-sn\"]) {\n                childNode.hidden = true;\n                break;\n              }\n            } else {\n              if (siblingNode.nodeType === 1 /* ElementNode */ || siblingNode.nodeType === 3 /* TextNode */ && siblingNode.textContent.trim() !== \"\") {\n                childNode.hidden = true;\n                break;\n              }\n            }\n          }\n        }\n      }\n      updateFallbackSlotVisibility(childNode);\n    }\n  }\n};\nvar relocateNodes = [];\nvar markSlotContentForRelocation = (elm) => {\n  let node;\n  let hostContentNodes;\n  let j;\n  for (const childNode of elm.childNodes) {\n    if (childNode[\"s-sr\"] && (node = childNode[\"s-cr\"]) && node.parentNode) {\n      hostContentNodes = node.parentNode.childNodes;\n      const slotName = childNode[\"s-sn\"];\n      for (j = hostContentNodes.length - 1; j >= 0; j--) {\n        node = hostContentNodes[j];\n        if (!node[\"s-cn\"] && !node[\"s-nr\"] && node[\"s-hn\"] !== childNode[\"s-hn\"] && (!BUILD.experimentalSlotFixes  )) {\n          if (isNodeLocatedInSlot(node, slotName)) {\n            let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);\n            checkSlotFallbackVisibility = true;\n            node[\"s-sn\"] = node[\"s-sn\"] || slotName;\n            if (relocateNodeData) {\n              relocateNodeData.$nodeToRelocate$[\"s-sh\"] = childNode[\"s-hn\"];\n              relocateNodeData.$slotRefNode$ = childNode;\n            } else {\n              node[\"s-sh\"] = childNode[\"s-hn\"];\n              relocateNodes.push({\n                $slotRefNode$: childNode,\n                $nodeToRelocate$: node\n              });\n            }\n            if (node[\"s-sr\"]) {\n              relocateNodes.map((relocateNode) => {\n                if (isNodeLocatedInSlot(relocateNode.$nodeToRelocate$, node[\"s-sn\"])) {\n                  relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);\n                  if (relocateNodeData && !relocateNode.$slotRefNode$) {\n                    relocateNode.$slotRefNode$ = relocateNodeData.$slotRefNode$;\n                  }\n                }\n              });\n            }\n          } else if (!relocateNodes.some((r) => r.$nodeToRelocate$ === node)) {\n            relocateNodes.push({\n              $nodeToRelocate$: node\n            });\n          }\n        }\n      }\n    }\n    if (childNode.nodeType === 1 /* ElementNode */) {\n      markSlotContentForRelocation(childNode);\n    }\n  }\n};\nvar isNodeLocatedInSlot = (nodeToRelocate, slotName) => {\n  if (nodeToRelocate.nodeType === 1 /* ElementNode */) {\n    if (nodeToRelocate.getAttribute(\"slot\") === null && slotName === \"\") {\n      return true;\n    }\n    if (nodeToRelocate.getAttribute(\"slot\") === slotName) {\n      return true;\n    }\n    return false;\n  }\n  if (nodeToRelocate[\"s-sn\"] === slotName) {\n    return true;\n  }\n  return slotName === \"\";\n};\nvar nullifyVNodeRefs = (vNode) => {\n  {\n    vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);\n    vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);\n  }\n};\nvar insertBefore = (parent, newNode, reference) => {\n  const inserted = parent == null ? void 0 : parent.insertBefore(newNode, reference);\n  {\n    updateElementScopeIds(newNode, parent);\n  }\n  return inserted;\n};\nvar findScopeIds = (element) => {\n  const scopeIds = [];\n  if (element) {\n    scopeIds.push(\n      ...element[\"s-scs\"] || [],\n      element[\"s-si\"],\n      element[\"s-sc\"],\n      ...findScopeIds(element.parentElement)\n    );\n  }\n  return scopeIds;\n};\nvar updateElementScopeIds = (element, parent, iterateChildNodes = false) => {\n  var _a;\n  if (element && parent && element.nodeType === 1 /* ElementNode */) {\n    const scopeIds = new Set(findScopeIds(parent).filter(Boolean));\n    if (scopeIds.size) {\n      (_a = element.classList) == null ? void 0 : _a.add(...element[\"s-scs\"] = [...scopeIds]);\n      if (element[\"s-ol\"] || iterateChildNodes) {\n        for (const childNode of Array.from(element.childNodes)) {\n          updateElementScopeIds(childNode, element, true);\n        }\n      }\n    }\n  }\n};\nvar renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {\n  var _a, _b, _c, _d;\n  const hostElm = hostRef.$hostElement$;\n  const cmpMeta = hostRef.$cmpMeta$;\n  const oldVNode = hostRef.$vnode$ || newVNode(null, null);\n  const rootVnode = isHost(renderFnResults) ? renderFnResults : h(null, null, renderFnResults);\n  hostTagName = hostElm.tagName;\n  if (cmpMeta.$attrsToReflect$) {\n    rootVnode.$attrs$ = rootVnode.$attrs$ || {};\n    cmpMeta.$attrsToReflect$.map(\n      ([propName, attribute]) => rootVnode.$attrs$[attribute] = hostElm[propName]\n    );\n  }\n  if (isInitialLoad && rootVnode.$attrs$) {\n    for (const key of Object.keys(rootVnode.$attrs$)) {\n      if (hostElm.hasAttribute(key) && ![\"key\", \"ref\", \"style\", \"class\"].includes(key)) {\n        rootVnode.$attrs$[key] = hostElm[key];\n      }\n    }\n  }\n  rootVnode.$tag$ = null;\n  rootVnode.$flags$ |= 4 /* isHost */;\n  hostRef.$vnode$ = rootVnode;\n  rootVnode.$elm$ = oldVNode.$elm$ = hostElm.shadowRoot || hostElm ;\n  {\n    scopeId = hostElm[\"s-sc\"];\n  }\n  useNativeShadowDom = (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) !== 0;\n  {\n    contentRef = hostElm[\"s-cr\"];\n    checkSlotFallbackVisibility = false;\n  }\n  patch(oldVNode, rootVnode, isInitialLoad);\n  {\n    plt.$flags$ |= 1 /* isTmpDisconnected */;\n    if (checkSlotRelocate) {\n      markSlotContentForRelocation(rootVnode.$elm$);\n      for (const relocateData of relocateNodes) {\n        const nodeToRelocate = relocateData.$nodeToRelocate$;\n        if (!nodeToRelocate[\"s-ol\"]) {\n          const orgLocationNode = doc.createTextNode(\"\");\n          orgLocationNode[\"s-nr\"] = nodeToRelocate;\n          insertBefore(nodeToRelocate.parentNode, nodeToRelocate[\"s-ol\"] = orgLocationNode, nodeToRelocate);\n        }\n      }\n      for (const relocateData of relocateNodes) {\n        const nodeToRelocate = relocateData.$nodeToRelocate$;\n        const slotRefNode = relocateData.$slotRefNode$;\n        if (slotRefNode) {\n          const parentNodeRef = slotRefNode.parentNode;\n          let insertBeforeNode = slotRefNode.nextSibling;\n          {\n            let orgLocationNode = (_a = nodeToRelocate[\"s-ol\"]) == null ? void 0 : _a.previousSibling;\n            while (orgLocationNode) {\n              let refNode = (_b = orgLocationNode[\"s-nr\"]) != null ? _b : null;\n              if (refNode && refNode[\"s-sn\"] === nodeToRelocate[\"s-sn\"] && parentNodeRef === refNode.parentNode) {\n                refNode = refNode.nextSibling;\n                while (refNode === nodeToRelocate || (refNode == null ? void 0 : refNode[\"s-sr\"])) {\n                  refNode = refNode == null ? void 0 : refNode.nextSibling;\n                }\n                if (!refNode || !refNode[\"s-nr\"]) {\n                  insertBeforeNode = refNode;\n                  break;\n                }\n              }\n              orgLocationNode = orgLocationNode.previousSibling;\n            }\n          }\n          if (!insertBeforeNode && parentNodeRef !== nodeToRelocate.parentNode || nodeToRelocate.nextSibling !== insertBeforeNode) {\n            if (nodeToRelocate !== insertBeforeNode) {\n              if (!nodeToRelocate[\"s-hn\"] && nodeToRelocate[\"s-ol\"]) {\n                nodeToRelocate[\"s-hn\"] = nodeToRelocate[\"s-ol\"].parentNode.nodeName;\n              }\n              insertBefore(parentNodeRef, nodeToRelocate, insertBeforeNode);\n              if (nodeToRelocate.nodeType === 1 /* ElementNode */) {\n                nodeToRelocate.hidden = (_c = nodeToRelocate[\"s-ih\"]) != null ? _c : false;\n              }\n            }\n          }\n          nodeToRelocate && typeof slotRefNode[\"s-rf\"] === \"function\" && slotRefNode[\"s-rf\"](nodeToRelocate);\n        } else {\n          if (nodeToRelocate.nodeType === 1 /* ElementNode */) {\n            if (isInitialLoad) {\n              nodeToRelocate[\"s-ih\"] = (_d = nodeToRelocate.hidden) != null ? _d : false;\n            }\n            nodeToRelocate.hidden = true;\n          }\n        }\n      }\n    }\n    if (checkSlotFallbackVisibility) {\n      updateFallbackSlotVisibility(rootVnode.$elm$);\n    }\n    plt.$flags$ &= ~1 /* isTmpDisconnected */;\n    relocateNodes.length = 0;\n  }\n  contentRef = void 0;\n};\n\n// src/runtime/update-component.ts\nvar attachToAncestor = (hostRef, ancestorComponent) => {\n  if (ancestorComponent && !hostRef.$onRenderResolve$ && ancestorComponent[\"s-p\"]) {\n    ancestorComponent[\"s-p\"].push(new Promise((r) => hostRef.$onRenderResolve$ = r));\n  }\n};\nvar scheduleUpdate = (hostRef, isInitialLoad) => {\n  {\n    hostRef.$flags$ |= 16 /* isQueuedForUpdate */;\n  }\n  if (hostRef.$flags$ & 4 /* isWaitingForChildren */) {\n    hostRef.$flags$ |= 512 /* needsRerender */;\n    return;\n  }\n  attachToAncestor(hostRef, hostRef.$ancestorComponent$);\n  const dispatch = () => dispatchHooks(hostRef, isInitialLoad);\n  return writeTask(dispatch) ;\n};\nvar dispatchHooks = (hostRef, isInitialLoad) => {\n  const elm = hostRef.$hostElement$;\n  const endSchedule = createTime(\"scheduleUpdate\", hostRef.$cmpMeta$.$tagName$);\n  const instance = hostRef.$lazyInstance$ ;\n  if (!instance) {\n    throw new Error(\n      `Can't render component <${elm.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \\`externalRuntime: true\\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`\n    );\n  }\n  let maybePromise;\n  if (isInitialLoad) {\n    {\n      hostRef.$flags$ |= 256 /* isListenReady */;\n      if (hostRef.$queuedListeners$) {\n        hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));\n        hostRef.$queuedListeners$ = void 0;\n      }\n    }\n    {\n      maybePromise = safeCall(instance, \"componentWillLoad\");\n    }\n  }\n  {\n    maybePromise = enqueue(maybePromise, () => safeCall(instance, \"componentWillRender\"));\n  }\n  endSchedule();\n  return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));\n};\nvar enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn).catch((err2) => {\n  console.error(err2);\n  fn();\n}) : fn();\nvar isPromisey = (maybePromise) => maybePromise instanceof Promise || maybePromise && maybePromise.then && typeof maybePromise.then === \"function\";\nvar updateComponent = async (hostRef, instance, isInitialLoad) => {\n  var _a;\n  const elm = hostRef.$hostElement$;\n  const endUpdate = createTime(\"update\", hostRef.$cmpMeta$.$tagName$);\n  const rc = elm[\"s-rc\"];\n  if (isInitialLoad) {\n    attachStyles(hostRef);\n  }\n  const endRender = createTime(\"render\", hostRef.$cmpMeta$.$tagName$);\n  {\n    callRender(hostRef, instance, elm, isInitialLoad);\n  }\n  if (rc) {\n    rc.map((cb) => cb());\n    elm[\"s-rc\"] = void 0;\n  }\n  endRender();\n  endUpdate();\n  {\n    const childrenPromises = (_a = elm[\"s-p\"]) != null ? _a : [];\n    const postUpdate = () => postUpdateComponent(hostRef);\n    if (childrenPromises.length === 0) {\n      postUpdate();\n    } else {\n      Promise.all(childrenPromises).then(postUpdate);\n      hostRef.$flags$ |= 4 /* isWaitingForChildren */;\n      childrenPromises.length = 0;\n    }\n  }\n};\nvar callRender = (hostRef, instance, elm, isInitialLoad) => {\n  try {\n    instance = instance.render() ;\n    {\n      hostRef.$flags$ &= ~16 /* isQueuedForUpdate */;\n    }\n    {\n      hostRef.$flags$ |= 2 /* hasRendered */;\n    }\n    {\n      {\n        {\n          renderVdom(hostRef, instance, isInitialLoad);\n        }\n      }\n    }\n  } catch (e) {\n    consoleError(e, hostRef.$hostElement$);\n  }\n  return null;\n};\nvar postUpdateComponent = (hostRef) => {\n  const tagName = hostRef.$cmpMeta$.$tagName$;\n  const elm = hostRef.$hostElement$;\n  const endPostUpdate = createTime(\"postUpdate\", tagName);\n  const instance = hostRef.$lazyInstance$ ;\n  const ancestorComponent = hostRef.$ancestorComponent$;\n  {\n    safeCall(instance, \"componentDidRender\");\n  }\n  if (!(hostRef.$flags$ & 64 /* hasLoadedComponent */)) {\n    hostRef.$flags$ |= 64 /* hasLoadedComponent */;\n    {\n      addHydratedFlag(elm);\n    }\n    {\n      safeCall(instance, \"componentDidLoad\");\n    }\n    endPostUpdate();\n    {\n      hostRef.$onReadyResolve$(elm);\n      if (!ancestorComponent) {\n        appDidLoad();\n      }\n    }\n  } else {\n    endPostUpdate();\n  }\n  {\n    hostRef.$onInstanceResolve$(elm);\n  }\n  {\n    if (hostRef.$onRenderResolve$) {\n      hostRef.$onRenderResolve$();\n      hostRef.$onRenderResolve$ = void 0;\n    }\n    if (hostRef.$flags$ & 512 /* needsRerender */) {\n      nextTick(() => scheduleUpdate(hostRef, false));\n    }\n    hostRef.$flags$ &= ~(4 /* isWaitingForChildren */ | 512 /* needsRerender */);\n  }\n};\nvar appDidLoad = (who) => {\n  {\n    addHydratedFlag(doc.documentElement);\n  }\n  nextTick(() => emitEvent(win, \"appload\", { detail: { namespace: NAMESPACE } }));\n};\nvar safeCall = (instance, method, arg) => {\n  if (instance && instance[method]) {\n    try {\n      return instance[method](arg);\n    } catch (e) {\n      consoleError(e);\n    }\n  }\n  return void 0;\n};\nvar addHydratedFlag = (elm) => {\n  var _a;\n  return elm.classList.add((_a = BUILD.hydratedSelectorName) != null ? _a : \"hydrated\") ;\n};\n\n// src/runtime/set-value.ts\nvar getValue = (ref, propName) => getHostRef(ref).$instanceValues$.get(propName);\nvar setValue = (ref, propName, newVal, cmpMeta) => {\n  const hostRef = getHostRef(ref);\n  if (!hostRef) {\n    throw new Error(\n      `Couldn't find host element for \"${cmpMeta.$tagName$}\" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/ionic-team/stencil/issues/5457).`\n    );\n  }\n  const elm = hostRef.$hostElement$ ;\n  const oldVal = hostRef.$instanceValues$.get(propName);\n  const flags = hostRef.$flags$;\n  const instance = hostRef.$lazyInstance$ ;\n  newVal = parsePropertyValue(newVal, cmpMeta.$members$[propName][0]);\n  const areBothNaN = Number.isNaN(oldVal) && Number.isNaN(newVal);\n  const didValueChange = newVal !== oldVal && !areBothNaN;\n  if ((!(flags & 8 /* isConstructingInstance */) || oldVal === void 0) && didValueChange) {\n    hostRef.$instanceValues$.set(propName, newVal);\n    if (instance) {\n      if (cmpMeta.$watchers$ && flags & 128 /* isWatchReady */) {\n        const watchMethods = cmpMeta.$watchers$[propName];\n        if (watchMethods) {\n          watchMethods.map((watchMethodName) => {\n            try {\n              instance[watchMethodName](newVal, oldVal, propName);\n            } catch (e) {\n              consoleError(e, elm);\n            }\n          });\n        }\n      }\n      if ((flags & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {\n        scheduleUpdate(hostRef, false);\n      }\n    }\n  }\n};\n\n// src/runtime/proxy-component.ts\nvar proxyComponent = (Cstr, cmpMeta, flags) => {\n  var _a, _b;\n  const prototype = Cstr.prototype;\n  if (cmpMeta.$members$ || (cmpMeta.$watchers$ || Cstr.watchers)) {\n    if (Cstr.watchers && !cmpMeta.$watchers$) {\n      cmpMeta.$watchers$ = Cstr.watchers;\n    }\n    const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});\n    members.map(([memberName, [memberFlags]]) => {\n      if ((memberFlags & 31 /* Prop */ || (flags & 2 /* proxyState */) && memberFlags & 32 /* State */)) {\n        Object.defineProperty(prototype, memberName, {\n          get() {\n            return getValue(this, memberName);\n          },\n          set(newValue) {\n            setValue(this, memberName, newValue, cmpMeta);\n          },\n          configurable: true,\n          enumerable: true\n        });\n      } else if (flags & 1 /* isElementConstructor */ && memberFlags & 64 /* Method */) {\n        Object.defineProperty(prototype, memberName, {\n          value(...args) {\n            var _a2;\n            const ref = getHostRef(this);\n            return (_a2 = ref == null ? void 0 : ref.$onInstancePromise$) == null ? void 0 : _a2.then(() => {\n              var _a3;\n              return (_a3 = ref.$lazyInstance$) == null ? void 0 : _a3[memberName](...args);\n            });\n          }\n        });\n      }\n    });\n    if ((flags & 1 /* isElementConstructor */)) {\n      const attrNameToPropName = /* @__PURE__ */ new Map();\n      prototype.attributeChangedCallback = function(attrName, oldValue, newValue) {\n        plt.jmp(() => {\n          var _a2;\n          const propName = attrNameToPropName.get(attrName);\n          if (this.hasOwnProperty(propName)) {\n            newValue = this[propName];\n            delete this[propName];\n          } else if (prototype.hasOwnProperty(propName) && typeof this[propName] === \"number\" && this[propName] == newValue) {\n            return;\n          } else if (propName == null) {\n            const hostRef = getHostRef(this);\n            const flags2 = hostRef == null ? void 0 : hostRef.$flags$;\n            if (flags2 && !(flags2 & 8 /* isConstructingInstance */) && flags2 & 128 /* isWatchReady */ && newValue !== oldValue) {\n              const instance = hostRef.$lazyInstance$ ;\n              const entry = (_a2 = cmpMeta.$watchers$) == null ? void 0 : _a2[attrName];\n              entry == null ? void 0 : entry.forEach((callbackName) => {\n                if (instance[callbackName] != null) {\n                  instance[callbackName].call(instance, newValue, oldValue, attrName);\n                }\n              });\n            }\n            return;\n          }\n          this[propName] = newValue === null && typeof this[propName] === \"boolean\" ? false : newValue;\n        });\n      };\n      Cstr.observedAttributes = Array.from(\n        /* @__PURE__ */ new Set([\n          ...Object.keys((_b = cmpMeta.$watchers$) != null ? _b : {}),\n          ...members.filter(([_, m]) => m[0] & 15 /* HasAttribute */).map(([propName, m]) => {\n            var _a2;\n            const attrName = m[1] || propName;\n            attrNameToPropName.set(attrName, propName);\n            if (m[0] & 512 /* ReflectAttr */) {\n              (_a2 = cmpMeta.$attrsToReflect$) == null ? void 0 : _a2.push([propName, attrName]);\n            }\n            return attrName;\n          })\n        ])\n      );\n    }\n  }\n  return Cstr;\n};\n\n// src/runtime/initialize-component.ts\nvar initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {\n  let Cstr;\n  if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {\n    hostRef.$flags$ |= 32 /* hasInitializedComponent */;\n    const bundleId = cmpMeta.$lazyBundleId$;\n    if (bundleId) {\n      const CstrImport = loadModule(cmpMeta);\n      if (CstrImport && \"then\" in CstrImport) {\n        const endLoad = uniqueTime();\n        Cstr = await CstrImport;\n        endLoad();\n      } else {\n        Cstr = CstrImport;\n      }\n      if (!Cstr) {\n        throw new Error(`Constructor for \"${cmpMeta.$tagName$}#${hostRef.$modeName$}\" was not found`);\n      }\n      if (!Cstr.isProxied) {\n        {\n          cmpMeta.$watchers$ = Cstr.watchers;\n        }\n        proxyComponent(Cstr, cmpMeta, 2 /* proxyState */);\n        Cstr.isProxied = true;\n      }\n      const endNewInstance = createTime(\"createInstance\", cmpMeta.$tagName$);\n      {\n        hostRef.$flags$ |= 8 /* isConstructingInstance */;\n      }\n      try {\n        new Cstr(hostRef);\n      } catch (e) {\n        consoleError(e);\n      }\n      {\n        hostRef.$flags$ &= ~8 /* isConstructingInstance */;\n      }\n      {\n        hostRef.$flags$ |= 128 /* isWatchReady */;\n      }\n      endNewInstance();\n      fireConnectedCallback(hostRef.$lazyInstance$);\n    } else {\n      Cstr = elm.constructor;\n      const cmpTag = elm.localName;\n      customElements.whenDefined(cmpTag).then(() => hostRef.$flags$ |= 128 /* isWatchReady */);\n    }\n    if (Cstr && Cstr.style) {\n      let style;\n      if (typeof Cstr.style === \"string\") {\n        style = Cstr.style;\n      }\n      const scopeId2 = getScopeId(cmpMeta);\n      if (!styles.has(scopeId2)) {\n        const endRegisterStyles = createTime(\"registerStyles\", cmpMeta.$tagName$);\n        registerStyle(scopeId2, style, !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */));\n        endRegisterStyles();\n      }\n    }\n  }\n  const ancestorComponent = hostRef.$ancestorComponent$;\n  const schedule = () => scheduleUpdate(hostRef, true);\n  if (ancestorComponent && ancestorComponent[\"s-rc\"]) {\n    ancestorComponent[\"s-rc\"].push(schedule);\n  } else {\n    schedule();\n  }\n};\nvar fireConnectedCallback = (instance) => {\n  {\n    safeCall(instance, \"connectedCallback\");\n  }\n};\n\n// src/runtime/connected-callback.ts\nvar connectedCallback = (elm) => {\n  if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {\n    const hostRef = getHostRef(elm);\n    const cmpMeta = hostRef.$cmpMeta$;\n    const endConnected = createTime(\"connectedCallback\", cmpMeta.$tagName$);\n    if (!(hostRef.$flags$ & 1 /* hasConnected */)) {\n      hostRef.$flags$ |= 1 /* hasConnected */;\n      {\n        if (// TODO(STENCIL-854): Remove code related to legacy shadowDomShim field\n        cmpMeta.$flags$ & (4 /* hasSlotRelocation */ | 8 /* needsShadowDomShim */)) {\n          setContentReference(elm);\n        }\n      }\n      {\n        let ancestorComponent = elm;\n        while (ancestorComponent = ancestorComponent.parentNode || ancestorComponent.host) {\n          if (ancestorComponent[\"s-p\"]) {\n            attachToAncestor(hostRef, hostRef.$ancestorComponent$ = ancestorComponent);\n            break;\n          }\n        }\n      }\n      if (cmpMeta.$members$) {\n        Object.entries(cmpMeta.$members$).map(([memberName, [memberFlags]]) => {\n          if (memberFlags & 31 /* Prop */ && elm.hasOwnProperty(memberName)) {\n            const value = elm[memberName];\n            delete elm[memberName];\n            elm[memberName] = value;\n          }\n        });\n      }\n      {\n        initializeComponent(elm, hostRef, cmpMeta);\n      }\n    } else {\n      addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);\n      if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n        fireConnectedCallback(hostRef.$lazyInstance$);\n      } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n        hostRef.$onReadyPromise$.then(() => fireConnectedCallback(hostRef.$lazyInstance$));\n      }\n    }\n    endConnected();\n  }\n};\nvar setContentReference = (elm) => {\n  const contentRefElm = elm[\"s-cr\"] = doc.createComment(\n    \"\"\n  );\n  contentRefElm[\"s-cn\"] = true;\n  insertBefore(elm, contentRefElm, elm.firstChild);\n};\nvar disconnectInstance = (instance) => {\n  {\n    safeCall(instance, \"disconnectedCallback\");\n  }\n};\nvar disconnectedCallback = async (elm) => {\n  if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {\n    const hostRef = getHostRef(elm);\n    {\n      if (hostRef.$rmListeners$) {\n        hostRef.$rmListeners$.map((rmListener) => rmListener());\n        hostRef.$rmListeners$ = void 0;\n      }\n    }\n    if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n      disconnectInstance(hostRef.$lazyInstance$);\n    } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n      hostRef.$onReadyPromise$.then(() => disconnectInstance(hostRef.$lazyInstance$));\n    }\n  }\n};\n\n// src/runtime/bootstrap-lazy.ts\nvar bootstrapLazy = (lazyBundles, options = {}) => {\n  var _a;\n  const endBootstrap = createTime();\n  const cmpTags = [];\n  const exclude = options.exclude || [];\n  const customElements2 = win.customElements;\n  const head = doc.head;\n  const metaCharset = /* @__PURE__ */ head.querySelector(\"meta[charset]\");\n  const dataStyles = /* @__PURE__ */ doc.createElement(\"style\");\n  const deferredConnectedCallbacks = [];\n  let appLoadFallback;\n  let isBootstrapping = true;\n  Object.assign(plt, options);\n  plt.$resourcesUrl$ = new URL(options.resourcesUrl || \"./\", doc.baseURI).href;\n  let hasSlotRelocation = false;\n  lazyBundles.map((lazyBundle) => {\n    lazyBundle[1].map((compactMeta) => {\n      var _a2;\n      const cmpMeta = {\n        $flags$: compactMeta[0],\n        $tagName$: compactMeta[1],\n        $members$: compactMeta[2],\n        $listeners$: compactMeta[3]\n      };\n      if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {\n        hasSlotRelocation = true;\n      }\n      {\n        cmpMeta.$members$ = compactMeta[2];\n      }\n      {\n        cmpMeta.$listeners$ = compactMeta[3];\n      }\n      {\n        cmpMeta.$attrsToReflect$ = [];\n      }\n      {\n        cmpMeta.$watchers$ = (_a2 = compactMeta[4]) != null ? _a2 : {};\n      }\n      const tagName = options.transformTagName ? options.transformTagName(cmpMeta.$tagName$) : cmpMeta.$tagName$;\n      const HostElement = class extends HTMLElement {\n        // StencilLazyHost\n        constructor(self) {\n          super(self);\n          this.hasRegisteredEventListeners = false;\n          self = this;\n          registerHost(self, cmpMeta);\n          if (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n            {\n              if (!self.shadowRoot) {\n                {\n                  self.attachShadow({\n                    mode: \"open\",\n                    delegatesFocus: !!(cmpMeta.$flags$ & 16 /* shadowDelegatesFocus */)\n                  });\n                }\n              } else {\n                if (self.shadowRoot.mode !== \"open\") {\n                  throw new Error(\n                    `Unable to re-use existing shadow root for ${cmpMeta.$tagName$}! Mode is set to ${self.shadowRoot.mode} but Stencil only supports open shadow roots.`\n                  );\n                }\n              }\n            }\n          }\n        }\n        connectedCallback() {\n          const hostRef = getHostRef(this);\n          if (!this.hasRegisteredEventListeners) {\n            this.hasRegisteredEventListeners = true;\n            addHostEventListeners(this, hostRef, cmpMeta.$listeners$);\n          }\n          if (appLoadFallback) {\n            clearTimeout(appLoadFallback);\n            appLoadFallback = null;\n          }\n          if (isBootstrapping) {\n            deferredConnectedCallbacks.push(this);\n          } else {\n            plt.jmp(() => connectedCallback(this));\n          }\n        }\n        disconnectedCallback() {\n          plt.jmp(() => disconnectedCallback(this));\n        }\n        componentOnReady() {\n          return getHostRef(this).$onReadyPromise$;\n        }\n      };\n      cmpMeta.$lazyBundleId$ = lazyBundle[0];\n      if (!exclude.includes(tagName) && !customElements2.get(tagName)) {\n        cmpTags.push(tagName);\n        customElements2.define(\n          tagName,\n          proxyComponent(HostElement, cmpMeta, 1 /* isElementConstructor */)\n        );\n      }\n    });\n  });\n  if (cmpTags.length > 0) {\n    if (hasSlotRelocation) {\n      dataStyles.textContent += SLOT_FB_CSS;\n    }\n    {\n      dataStyles.textContent += cmpTags.sort() + HYDRATED_CSS;\n    }\n    if (dataStyles.innerHTML.length) {\n      dataStyles.setAttribute(\"data-styles\", \"\");\n      const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(doc);\n      if (nonce != null) {\n        dataStyles.setAttribute(\"nonce\", nonce);\n      }\n      head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);\n    }\n  }\n  isBootstrapping = false;\n  if (deferredConnectedCallbacks.length) {\n    deferredConnectedCallbacks.map((host) => host.connectedCallback());\n  } else {\n    {\n      plt.jmp(() => appLoadFallback = setTimeout(appDidLoad, 30));\n    }\n  }\n  endBootstrap();\n};\n\n// src/runtime/fragment.ts\nvar Fragment = (_, children) => children;\nvar addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {\n  if (listeners) {\n    listeners.map(([flags, name, method]) => {\n      const target = getHostListenerTarget(elm, flags) ;\n      const handler = hostListenerProxy(hostRef, method);\n      const opts = hostListenerOpts(flags);\n      plt.ael(target, name, handler, opts);\n      (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));\n    });\n  }\n};\nvar hostListenerProxy = (hostRef, methodName) => (ev) => {\n  var _a;\n  try {\n    {\n      if (hostRef.$flags$ & 256 /* isListenReady */) {\n        (_a = hostRef.$lazyInstance$) == null ? void 0 : _a[methodName](ev);\n      } else {\n        (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);\n      }\n    }\n  } catch (e) {\n    consoleError(e);\n  }\n};\nvar getHostListenerTarget = (elm, flags) => {\n  if (flags & 4 /* TargetDocument */) return doc;\n  if (flags & 8 /* TargetWindow */) return win;\n  if (flags & 16 /* TargetBody */) return doc.body;\n  return elm;\n};\nvar hostListenerOpts = (flags) => supportsListenerOptions ? {\n  passive: (flags & 1 /* Passive */) !== 0,\n  capture: (flags & 2 /* Capture */) !== 0\n} : (flags & 2 /* Capture */) !== 0;\n\n// src/runtime/nonce.ts\nvar setNonce = (nonce) => plt.$nonce$ = nonce;\n\nexport { Fragment as F, Host as H, bootstrapLazy as b, createEvent as c, getElement as g, h, promiseResolve as p, registerInstance as r, setNonce as s };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"1\":\"32e2b196\",\"180\":\"8537ed89\",\"218\":\"4d9d93e4\",\"269\":\"30ac5da8\",\"313\":\"b6d2f9ba\",\"558\":\"43baed83\",\"790\":\"c08e3436\",\"950\":\"da5fbe3d\",\"978\":\"e6e90d26\",\"1045\":\"2d7afccf\",\"1234\":\"fc1353cf\",\"1454\":\"c16b2a79\",\"1712\":\"37d6d928\",\"1717\":\"a658e139\",\"1789\":\"2afee158\",\"1891\":\"fc25a68e\",\"1976\":\"c08c0e63\",\"2025\":\"964019cf\",\"2215\":\"5dbac915\",\"2397\":\"96afa3a1\",\"2571\":\"72969a29\",\"2644\":\"d9694cf1\",\"2701\":\"a785f41d\",\"2848\":\"bb6e61d9\",\"2904\":\"3bf01ed9\",\"3003\":\"a6c9a6fe\",\"3184\":\"46e37c23\",\"3284\":\"92a11d0d\",\"3312\":\"dccc107d\",\"3398\":\"2677db7e\",\"3904\":\"4ef607dd\",\"4233\":\"9cf7e416\",\"4277\":\"7df1f80e\",\"4341\":\"61812337\",\"4403\":\"bb6762ff\",\"4484\":\"243e65b1\",\"4505\":\"fcd26092\",\"4576\":\"aa0c5273\",\"4659\":\"cba77a3a\",\"4774\":\"0479f083\",\"4821\":\"73bc1c70\",\"4831\":\"8f18b594\",\"5061\":\"e8c7effb\",\"5187\":\"080163be\",\"5428\":\"edd34c67\",\"5466\":\"317e406c\",\"5730\":\"3b211c58\",\"5866\":\"7e52dc5b\",\"6350\":\"d3848d42\",\"6378\":\"f2d2503c\",\"6439\":\"f3d2fe72\",\"6568\":\"395076e9\",\"6611\":\"b46a21e5\",\"6716\":\"a122915e\",\"6777\":\"7a045bb5\",\"6916\":\"8e2bb8e6\",\"7193\":\"5352cc94\",\"7314\":\"b4e118fe\",\"7325\":\"9f5bde1b\",\"7591\":\"9c40f88b\",\"7840\":\"a30c2282\",\"7890\":\"44283132\",\"7897\":\"98c2caa2\",\"7953\":\"75202299\",\"7955\":\"7f193fcb\",\"7968\":\"4b3045b7\",\"8208\":\"01d1576c\",\"8315\":\"f62bf619\",\"8385\":\"41e90815\",\"8479\":\"6258ae35\",\"8532\":\"6f8bc487\",\"8623\":\"b433575c\",\"8848\":\"6f276206\",\"9012\":\"735fb6cf\",\"9021\":\"6f198563\",\"9127\":\"7361e24f\",\"9230\":\"575a6f6b\",\"9234\":\"a85cc4cf\",\"9551\":\"8a071f11\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"bev-diesel-tco-calculator:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbev_diesel_tco_calculator\"] = self[\"webpackChunkbev_diesel_tco_calculator\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export const dashToPascalCase = (str) => str\n    .toLowerCase()\n    .split('-')\n    .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))\n    .join('');\nexport const camelToDashCase = (str) => str.replace(/([A-Z])/g, (m) => `-${m[0].toLowerCase()}`);\n","import { camelToDashCase } from './case';\nexport const attachProps = (node, newProps, oldProps = {}) => {\n    // some test frameworks don't render DOM elements, so we test here to make sure we are dealing with DOM first\n    if (node instanceof Element) {\n        // add any classes in className to the class list\n        const className = getClassName(node.classList, newProps, oldProps);\n        if (className !== '') {\n            node.className = className;\n        }\n        Object.keys(newProps).forEach((name) => {\n            if (name === 'children' ||\n                name === 'style' ||\n                name === 'ref' ||\n                name === 'class' ||\n                name === 'className' ||\n                name === 'forwardedRef') {\n                return;\n            }\n            if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n                const eventName = name.substring(2);\n                const eventNameLc = eventName[0].toLowerCase() + eventName.substring(1);\n                if (!isCoveredByReact(eventNameLc)) {\n                    syncEvent(node, eventNameLc, newProps[name]);\n                }\n            }\n            else {\n                node[name] = newProps[name];\n                const propType = typeof newProps[name];\n                if (propType === 'string') {\n                    node.setAttribute(camelToDashCase(name), newProps[name]);\n                }\n            }\n        });\n    }\n};\nexport const getClassName = (classList, newProps, oldProps) => {\n    const newClassProp = newProps.className || newProps.class;\n    const oldClassProp = oldProps.className || oldProps.class;\n    // map the classes to Maps for performance\n    const currentClasses = arrayToMap(classList);\n    const incomingPropClasses = arrayToMap(newClassProp ? newClassProp.split(' ') : []);\n    const oldPropClasses = arrayToMap(oldClassProp ? oldClassProp.split(' ') : []);\n    const finalClassNames = [];\n    // loop through each of the current classes on the component\n    // to see if it should be a part of the classNames added\n    currentClasses.forEach((currentClass) => {\n        if (incomingPropClasses.has(currentClass)) {\n            // add it as its already included in classnames coming in from newProps\n            finalClassNames.push(currentClass);\n            incomingPropClasses.delete(currentClass);\n        }\n        else if (!oldPropClasses.has(currentClass)) {\n            // add it as it has NOT been removed by user\n            finalClassNames.push(currentClass);\n        }\n    });\n    incomingPropClasses.forEach((s) => finalClassNames.push(s));\n    return finalClassNames.join(' ');\n};\n/**\n * Transforms a React event name to a browser event name.\n */\nexport const transformReactEventName = (eventNameSuffix) => {\n    switch (eventNameSuffix) {\n        case 'doubleclick':\n            return 'dblclick';\n    }\n    return eventNameSuffix;\n};\n/**\n * Checks if an event is supported in the current execution environment.\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nexport const isCoveredByReact = (eventNameSuffix) => {\n    if (typeof document === 'undefined') {\n        return true;\n    }\n    else {\n        const eventName = 'on' + transformReactEventName(eventNameSuffix);\n        let isSupported = eventName in document;\n        if (!isSupported) {\n            const element = document.createElement('div');\n            element.setAttribute(eventName, 'return;');\n            isSupported = typeof element[eventName] === 'function';\n        }\n        return isSupported;\n    }\n};\nexport const syncEvent = (node, eventName, newEventHandler) => {\n    const eventStore = node.__events || (node.__events = {});\n    const oldEventHandler = eventStore[eventName];\n    // Remove old listener so they don't double up.\n    if (oldEventHandler) {\n        node.removeEventListener(eventName, oldEventHandler);\n    }\n    // Bind new listener.\n    node.addEventListener(eventName, (eventStore[eventName] = function handler(e) {\n        if (newEventHandler) {\n            newEventHandler.call(this, e);\n        }\n    }));\n};\nconst arrayToMap = (arr) => {\n    const map = new Map();\n    arr.forEach((s) => map.set(s, s));\n    return map;\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nexport const setRef = (ref, value) => {\n    if (typeof ref === 'function') {\n        ref(value);\n    }\n    else if (ref != null) {\n        // Cast as a MutableRef so we can assign current\n        ref.current = value;\n    }\n};\nexport const mergeRefs = (...refs) => {\n    return (value) => {\n        refs.forEach((ref) => {\n            setRef(ref, value);\n        });\n    };\n};\nexport const createForwardRef = (ReactComponent, displayName) => {\n    const forwardRef = (props, ref) => {\n        return _jsx(ReactComponent, Object.assign({}, props, { forwardedRef: ref }));\n    };\n    forwardRef.displayName = displayName;\n    return React.forwardRef(forwardRef);\n};\nexport const defineCustomElement = (tagName, customElement) => {\n    if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {\n        customElements.define(tagName, customElement);\n    }\n};\nexport * from './attachProps';\nexport * from './case';\n","var __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nimport React, { createElement } from 'react';\nimport { attachProps, camelToDashCase, createForwardRef, dashToPascalCase, isCoveredByReact, mergeRefs } from './utils';\nexport const createReactComponent = (tagName, ReactComponentContext, manipulatePropsFunction, defineCustomElement) => {\n    if (defineCustomElement !== undefined) {\n        defineCustomElement();\n    }\n    const displayName = dashToPascalCase(tagName);\n    const ReactComponent = class extends React.Component {\n        constructor(props) {\n            super(props);\n            this.setComponentElRef = (element) => {\n                this.componentEl = element;\n            };\n        }\n        componentDidMount() {\n            this.componentDidUpdate(this.props);\n        }\n        componentDidUpdate(prevProps) {\n            attachProps(this.componentEl, this.props, prevProps);\n        }\n        render() {\n            const _a = this.props, { children, forwardedRef, style, className, ref } = _a, cProps = __rest(_a, [\"children\", \"forwardedRef\", \"style\", \"className\", \"ref\"]);\n            let propsToPass = Object.keys(cProps).reduce((acc, name) => {\n                const value = cProps[name];\n                if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {\n                    const eventName = name.substring(2).toLowerCase();\n                    if (typeof document !== 'undefined' && isCoveredByReact(eventName)) {\n                        acc[name] = value;\n                    }\n                }\n                else {\n                    // we should only render strings, booleans, and numbers as attrs in html.\n                    // objects, functions, arrays etc get synced via properties on mount.\n                    const type = typeof value;\n                    if (type === 'string' || type === 'boolean' || type === 'number') {\n                        acc[camelToDashCase(name)] = value;\n                    }\n                }\n                return acc;\n            }, {});\n            if (manipulatePropsFunction) {\n                propsToPass = manipulatePropsFunction(this.props, propsToPass);\n            }\n            const newProps = Object.assign(Object.assign({}, propsToPass), { ref: mergeRefs(forwardedRef, this.setComponentElRef), style });\n            /**\n             * We use createElement here instead of\n             * React.createElement to work around a\n             * bug in Vite (https://github.com/vitejs/vite/issues/6104).\n             * React.createElement causes all elements to be rendered\n             * as <tagname> instead of the actual Web Component.\n             */\n            return createElement(tagName, newProps, children);\n        }\n        static get displayName() {\n            return displayName;\n        }\n    };\n    // If context was passed to createReactComponent then conditionally add it to the Component Class\n    if (ReactComponentContext) {\n        ReactComponent.contextType = ReactComponentContext;\n    }\n    return createForwardRef(ReactComponent, displayName);\n};\n","var __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { attachProps, dashToPascalCase, defineCustomElement, setRef } from './utils';\nexport const createOverlayComponent = (tagName, controller, customElement) => {\n    defineCustomElement(tagName, customElement);\n    const displayName = dashToPascalCase(tagName);\n    const didDismissEventName = `on${displayName}DidDismiss`;\n    const didPresentEventName = `on${displayName}DidPresent`;\n    const willDismissEventName = `on${displayName}WillDismiss`;\n    const willPresentEventName = `on${displayName}WillPresent`;\n    let isDismissing = false;\n    class Overlay extends React.Component {\n        constructor(props) {\n            super(props);\n            if (typeof document !== 'undefined') {\n                this.el = document.createElement('div');\n            }\n            this.handleDismiss = this.handleDismiss.bind(this);\n        }\n        static get displayName() {\n            return displayName;\n        }\n        componentDidMount() {\n            if (this.props.isOpen) {\n                this.present();\n            }\n        }\n        componentWillUnmount() {\n            if (this.overlay) {\n                this.overlay.dismiss();\n            }\n        }\n        handleDismiss(event) {\n            if (this.props.onDidDismiss) {\n                this.props.onDidDismiss(event);\n            }\n            setRef(this.props.forwardedRef, null);\n        }\n        shouldComponentUpdate(nextProps) {\n            // Check if the overlay component is about to dismiss\n            if (this.overlay && nextProps.isOpen !== this.props.isOpen && nextProps.isOpen === false) {\n                isDismissing = true;\n            }\n            return true;\n        }\n        async componentDidUpdate(prevProps) {\n            if (this.overlay) {\n                attachProps(this.overlay, this.props, prevProps);\n            }\n            if (prevProps.isOpen !== this.props.isOpen && this.props.isOpen === true) {\n                this.present(prevProps);\n            }\n            if (this.overlay && prevProps.isOpen !== this.props.isOpen && this.props.isOpen === false) {\n                await this.overlay.dismiss();\n                isDismissing = false;\n                /**\n                 * Now that the overlay is dismissed\n                 * we need to render again so that any\n                 * inner components will be unmounted\n                 */\n                this.forceUpdate();\n            }\n        }\n        async present(prevProps) {\n            const _a = this.props, { children, isOpen, onDidDismiss, onDidPresent, onWillDismiss, onWillPresent } = _a, cProps = __rest(_a, [\"children\", \"isOpen\", \"onDidDismiss\", \"onDidPresent\", \"onWillDismiss\", \"onWillPresent\"]);\n            const elementProps = Object.assign(Object.assign({}, cProps), { ref: this.props.forwardedRef, [didDismissEventName]: this.handleDismiss, [didPresentEventName]: (e) => this.props.onDidPresent && this.props.onDidPresent(e), [willDismissEventName]: (e) => this.props.onWillDismiss && this.props.onWillDismiss(e), [willPresentEventName]: (e) => this.props.onWillPresent && this.props.onWillPresent(e) });\n            this.overlay = await controller.create(Object.assign(Object.assign({}, elementProps), { component: this.el, componentProps: {} }));\n            setRef(this.props.forwardedRef, this.overlay);\n            attachProps(this.overlay, elementProps, prevProps);\n            await this.overlay.present();\n        }\n        render() {\n            /**\n             * Continue to render the component even when\n             * overlay is dismissing otherwise component\n             * will be hidden before animation is done.\n             */\n            return ReactDOM.createPortal(this.props.isOpen || isDismissing ? this.props.children : null, this.el);\n        }\n    }\n    return React.forwardRef((props, ref) => {\n        return _jsx(Overlay, Object.assign({}, props, { forwardedRef: ref }));\n    });\n};\n","/* eslint-disable */\n/* tslint:disable */\n/* auto-generated react proxies */\nimport { createReactComponent } from './react-component-lib';\nexport const TdsAccordion = /*@__PURE__*/ createReactComponent('tds-accordion');\nexport const TdsAccordionItem = /*@__PURE__*/ createReactComponent('tds-accordion-item');\nexport const TdsBadge = /*@__PURE__*/ createReactComponent('tds-badge');\nexport const TdsBanner = /*@__PURE__*/ createReactComponent('tds-banner');\nexport const TdsBlock = /*@__PURE__*/ createReactComponent('tds-block');\nexport const TdsBodyCell = /*@__PURE__*/ createReactComponent('tds-body-cell');\nexport const TdsBreadcrumb = /*@__PURE__*/ createReactComponent('tds-breadcrumb');\nexport const TdsBreadcrumbs = /*@__PURE__*/ createReactComponent('tds-breadcrumbs');\nexport const TdsButton = /*@__PURE__*/ createReactComponent('tds-button');\nexport const TdsCard = /*@__PURE__*/ createReactComponent('tds-card');\nexport const TdsCheckbox = /*@__PURE__*/ createReactComponent('tds-checkbox');\nexport const TdsChip = /*@__PURE__*/ createReactComponent('tds-chip');\nexport const TdsCoreHeaderItem = /*@__PURE__*/ createReactComponent('tds-core-header-item');\nexport const TdsDatetime = /*@__PURE__*/ createReactComponent('tds-datetime');\nexport const TdsDivider = /*@__PURE__*/ createReactComponent('tds-divider');\nexport const TdsDropdown = /*@__PURE__*/ createReactComponent('tds-dropdown');\nexport const TdsDropdownOption = /*@__PURE__*/ createReactComponent('tds-dropdown-option');\nexport const TdsFolderTab = /*@__PURE__*/ createReactComponent('tds-folder-tab');\nexport const TdsFolderTabs = /*@__PURE__*/ createReactComponent('tds-folder-tabs');\nexport const TdsFooter = /*@__PURE__*/ createReactComponent('tds-footer');\nexport const TdsFooterGroup = /*@__PURE__*/ createReactComponent('tds-footer-group');\nexport const TdsFooterItem = /*@__PURE__*/ createReactComponent('tds-footer-item');\nexport const TdsHeader = /*@__PURE__*/ createReactComponent('tds-header');\nexport const TdsHeaderBrandSymbol = /*@__PURE__*/ createReactComponent('tds-header-brand-symbol');\nexport const TdsHeaderCell = /*@__PURE__*/ createReactComponent('tds-header-cell');\nexport const TdsHeaderDropdown = /*@__PURE__*/ createReactComponent('tds-header-dropdown');\nexport const TdsHeaderDropdownList = /*@__PURE__*/ createReactComponent('tds-header-dropdown-list');\nexport const TdsHeaderDropdownListItem = /*@__PURE__*/ createReactComponent('tds-header-dropdown-list-item');\nexport const TdsHeaderDropdownListUser = /*@__PURE__*/ createReactComponent('tds-header-dropdown-list-user');\nexport const TdsHeaderHamburger = /*@__PURE__*/ createReactComponent('tds-header-hamburger');\nexport const TdsHeaderItem = /*@__PURE__*/ createReactComponent('tds-header-item');\nexport const TdsHeaderLauncher = /*@__PURE__*/ createReactComponent('tds-header-launcher');\nexport const TdsHeaderLauncherButton = /*@__PURE__*/ createReactComponent('tds-header-launcher-button');\nexport const TdsHeaderLauncherGrid = /*@__PURE__*/ createReactComponent('tds-header-launcher-grid');\nexport const TdsHeaderLauncherGridItem = /*@__PURE__*/ createReactComponent('tds-header-launcher-grid-item');\nexport const TdsHeaderLauncherGridTitle = /*@__PURE__*/ createReactComponent('tds-header-launcher-grid-title');\nexport const TdsHeaderLauncherList = /*@__PURE__*/ createReactComponent('tds-header-launcher-list');\nexport const TdsHeaderLauncherListItem = /*@__PURE__*/ createReactComponent('tds-header-launcher-list-item');\nexport const TdsHeaderLauncherListTitle = /*@__PURE__*/ createReactComponent('tds-header-launcher-list-title');\nexport const TdsHeaderTitle = /*@__PURE__*/ createReactComponent('tds-header-title');\nexport const TdsIcon = /*@__PURE__*/ createReactComponent('tds-icon');\nexport const TdsInlineTab = /*@__PURE__*/ createReactComponent('tds-inline-tab');\nexport const TdsInlineTabs = /*@__PURE__*/ createReactComponent('tds-inline-tabs');\nexport const TdsLink = /*@__PURE__*/ createReactComponent('tds-link');\nexport const TdsMessage = /*@__PURE__*/ createReactComponent('tds-message');\nexport const TdsModal = /*@__PURE__*/ createReactComponent('tds-modal');\nexport const TdsNavigationTab = /*@__PURE__*/ createReactComponent('tds-navigation-tab');\nexport const TdsNavigationTabs = /*@__PURE__*/ createReactComponent('tds-navigation-tabs');\nexport const TdsPopoverCanvas = /*@__PURE__*/ createReactComponent('tds-popover-canvas');\nexport const TdsPopoverCore = /*@__PURE__*/ createReactComponent('tds-popover-core');\nexport const TdsPopoverMenu = /*@__PURE__*/ createReactComponent('tds-popover-menu');\nexport const TdsPopoverMenuItem = /*@__PURE__*/ createReactComponent('tds-popover-menu-item');\nexport const TdsRadioButton = /*@__PURE__*/ createReactComponent('tds-radio-button');\nexport const TdsSideMenu = /*@__PURE__*/ createReactComponent('tds-side-menu');\nexport const TdsSideMenuCloseButton = /*@__PURE__*/ createReactComponent('tds-side-menu-close-button');\nexport const TdsSideMenuCollapseButton = /*@__PURE__*/ createReactComponent('tds-side-menu-collapse-button');\nexport const TdsSideMenuDropdown = /*@__PURE__*/ createReactComponent('tds-side-menu-dropdown');\nexport const TdsSideMenuDropdownList = /*@__PURE__*/ createReactComponent('tds-side-menu-dropdown-list');\nexport const TdsSideMenuDropdownListItem = /*@__PURE__*/ createReactComponent('tds-side-menu-dropdown-list-item');\nexport const TdsSideMenuItem = /*@__PURE__*/ createReactComponent('tds-side-menu-item');\nexport const TdsSideMenuOverlay = /*@__PURE__*/ createReactComponent('tds-side-menu-overlay');\nexport const TdsSideMenuUser = /*@__PURE__*/ createReactComponent('tds-side-menu-user');\nexport const TdsSideMenuUserImage = /*@__PURE__*/ createReactComponent('tds-side-menu-user-image');\nexport const TdsSideMenuUserLabel = /*@__PURE__*/ createReactComponent('tds-side-menu-user-label');\nexport const TdsSlider = /*@__PURE__*/ createReactComponent('tds-slider');\nexport const TdsSpinner = /*@__PURE__*/ createReactComponent('tds-spinner');\nexport const TdsStep = /*@__PURE__*/ createReactComponent('tds-step');\nexport const TdsStepper = /*@__PURE__*/ createReactComponent('tds-stepper');\nexport const TdsTable = /*@__PURE__*/ createReactComponent('tds-table');\nexport const TdsTableBody = /*@__PURE__*/ createReactComponent('tds-table-body');\nexport const TdsTableBodyInputWrapper = /*@__PURE__*/ createReactComponent('tds-table-body-input-wrapper');\nexport const TdsTableBodyRow = /*@__PURE__*/ createReactComponent('tds-table-body-row');\nexport const TdsTableBodyRowExpandable = /*@__PURE__*/ createReactComponent('tds-table-body-row-expandable');\nexport const TdsTableFooter = /*@__PURE__*/ createReactComponent('tds-table-footer');\nexport const TdsTableHeader = /*@__PURE__*/ createReactComponent('tds-table-header');\nexport const TdsTableHeaderInputWrapper = /*@__PURE__*/ createReactComponent('tds-table-header-input-wrapper');\nexport const TdsTableToolbar = /*@__PURE__*/ createReactComponent('tds-table-toolbar');\nexport const TdsTextField = /*@__PURE__*/ createReactComponent('tds-text-field');\nexport const TdsTextarea = /*@__PURE__*/ createReactComponent('tds-textarea');\nexport const TdsToast = /*@__PURE__*/ createReactComponent('tds-toast');\nexport const TdsToggle = /*@__PURE__*/ createReactComponent('tds-toggle');\nexport const TdsTooltip = /*@__PURE__*/ createReactComponent('tds-tooltip');\n","const globalScripts = () => {};\n\nexport { globalScripts as g };\n","import { b as bootstrapLazy } from './index-51d04e39.js';\nexport { s as setNonce } from './index-51d04e39.js';\nimport { g as globalScripts } from './app-globals-0f993ce5.js';\n\nconst defineCustomElements = async (win, options) => {\n  if (typeof window === 'undefined') return undefined;\n  await globalScripts();\n  return bootstrapLazy(JSON.parse(\"[[\\\"tds-header-launcher\\\",[[1,\\\"tds-header-launcher\\\",{\\\"open\\\":[32],\\\"buttonEl\\\":[32],\\\"hasListTypeMenu\\\":[32]},[[8,\\\"click\\\",\\\"onAnyClick\\\"]]]]],[\\\"tds-header-dropdown\\\",[[1,\\\"tds-header-dropdown\\\",{\\\"label\\\":[1],\\\"noDropdownIcon\\\":[4,\\\"no-dropdown-icon\\\"],\\\"selected\\\":[4],\\\"open\\\":[32],\\\"buttonEl\\\":[32]},[[4,\\\"click\\\",\\\"onAnyClick\\\"]]]]],[\\\"tds-table-footer\\\",[[1,\\\"tds-table-footer\\\",{\\\"pagination\\\":[516],\\\"paginationValue\\\":[1538,\\\"pagination-value\\\"],\\\"rowsperpage\\\":[516],\\\"rowsPerPageValues\\\":[16],\\\"pages\\\":[514],\\\"cols\\\":[2],\\\"columnsNumber\\\":[32],\\\"compactDesign\\\":[32],\\\"lastCorrectValue\\\":[32],\\\"tableId\\\":[32],\\\"horizontalScrollWidth\\\":[32],\\\"rowsPerPageValue\\\":[32]},[[16,\\\"internalTdsTablePropChange\\\",\\\"internalTdsPropChangeListener\\\"]]]]],[\\\"tds-header-hamburger\\\",[[1,\\\"tds-header-hamburger\\\"]]],[\\\"tds-header-brand-symbol\\\",[[1,\\\"tds-header-brand-symbol\\\"]]],[\\\"tds-side-menu-dropdown\\\",[[1,\\\"tds-side-menu-dropdown\\\",{\\\"defaultOpen\\\":[4,\\\"default-open\\\"],\\\"buttonLabel\\\":[1,\\\"button-label\\\"],\\\"selected\\\":[4],\\\"open\\\":[4],\\\"hoverState\\\":[32],\\\"collapsed\\\":[32]},[[16,\\\"internalTdsSideMenuPropChange\\\",\\\"collapsedSideMenuEventHandler\\\"],[1,\\\"pointerenter\\\",\\\"onEventPointerEnter\\\"],[0,\\\"focusin\\\",\\\"onEventFocus\\\"],[1,\\\"pointerleave\\\",\\\"onEventPointerLeave\\\"],[0,\\\"focusout\\\",\\\"onEventBlur\\\"]]]]],[\\\"tds-side-menu-user\\\",[[1,\\\"tds-side-menu-user\\\",{\\\"heading\\\":[1],\\\"subheading\\\":[1],\\\"imgSrc\\\":[1,\\\"img-src\\\"],\\\"imgAlt\\\":[1,\\\"img-alt\\\"]}]]],[\\\"tds-accordion-item\\\",[[1,\\\"tds-accordion-item\\\",{\\\"header\\\":[1],\\\"expandIconPosition\\\":[1,\\\"expand-icon-position\\\"],\\\"disabled\\\":[4],\\\"expanded\\\":[4],\\\"paddingReset\\\":[4,\\\"padding-reset\\\"],\\\"toggleAccordionItem\\\":[64]}]]],[\\\"tds-banner\\\",[[1,\\\"tds-banner\\\",{\\\"icon\\\":[1],\\\"header\\\":[1],\\\"subheader\\\":[1],\\\"variant\\\":[1],\\\"bannerId\\\":[1,\\\"banner-id\\\"],\\\"hidden\\\":[516],\\\"hideBanner\\\":[64],\\\"showBanner\\\":[64]}]]],[\\\"tds-card\\\",[[1,\\\"tds-card\\\",{\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"imagePlacement\\\":[1,\\\"image-placement\\\"],\\\"header\\\":[1],\\\"subheader\\\":[1],\\\"bodyImg\\\":[1,\\\"body-img\\\"],\\\"bodyImgAlt\\\":[1,\\\"body-img-alt\\\"],\\\"bodyDivider\\\":[4,\\\"body-divider\\\"],\\\"clickable\\\":[4],\\\"stretch\\\":[4],\\\"cardId\\\":[1,\\\"card-id\\\"]}]]],[\\\"tds-datetime\\\",[[2,\\\"tds-datetime\\\",{\\\"type\\\":[513],\\\"value\\\":[1537],\\\"min\\\":[1],\\\"max\\\":[1],\\\"defaultValue\\\":[1,\\\"default-value\\\"],\\\"disabled\\\":[4],\\\"size\\\":[1],\\\"noMinWidth\\\":[4,\\\"no-min-width\\\"],\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"name\\\":[1],\\\"state\\\":[1],\\\"autofocus\\\":[4],\\\"label\\\":[1],\\\"helper\\\":[1],\\\"focusInput\\\":[32],\\\"reset\\\":[64],\\\"setValue\\\":[64]},[[0,\\\"focus\\\",\\\"handleFocusIn\\\"],[0,\\\"focusout\\\",\\\"handleFocusOut\\\"]]]]],[\\\"tds-folder-tabs\\\",[[1,\\\"tds-folder-tabs\\\",{\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"defaultSelectedIndex\\\":[2,\\\"default-selected-index\\\"],\\\"selectedIndex\\\":[514,\\\"selected-index\\\"],\\\"buttonWidth\\\":[32],\\\"showLeftScroll\\\":[32],\\\"showRightScroll\\\":[32],\\\"selectTab\\\":[64],\\\"reinitialize\\\":[64]},null,{\\\"selectedIndex\\\":[\\\"handleSelectedIndexUpdate\\\"]}]]],[\\\"tds-footer-group\\\",[[1,\\\"tds-footer-group\\\",{\\\"titleText\\\":[1,\\\"title-text\\\"],\\\"open\\\":[32]}]]],[\\\"tds-header-cell\\\",[[1,\\\"tds-header-cell\\\",{\\\"cellKey\\\":[513,\\\"cell-key\\\"],\\\"cellValue\\\":[513,\\\"cell-value\\\"],\\\"customWidth\\\":[513,\\\"custom-width\\\"],\\\"sortable\\\":[4],\\\"textAlign\\\":[513,\\\"text-align\\\"],\\\"disablePadding\\\":[516,\\\"disable-padding\\\"],\\\"textAlignState\\\":[32],\\\"sortingDirection\\\":[32],\\\"sortedByMyKey\\\":[32],\\\"verticalDividers\\\":[32],\\\"compactDesign\\\":[32],\\\"noMinWidth\\\":[32],\\\"multiselect\\\":[32],\\\"enableToolbarDesign\\\":[32],\\\"tableId\\\":[32],\\\"expandableRows\\\":[32]},[[16,\\\"internalTdsPropChange\\\",\\\"internalTdsPropChangeListener\\\"],[16,\\\"internalSortButtonClicked\\\",\\\"updateOptionsContent\\\"]]]]],[\\\"tds-header-launcher-list\\\",[[4,\\\"tds-header-launcher-list\\\"]]],[\\\"tds-header-launcher-list-item\\\",[[1,\\\"tds-header-launcher-list-item\\\"]]],[\\\"tds-inline-tabs\\\",[[1,\\\"tds-inline-tabs\\\",{\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"defaultSelectedIndex\\\":[2,\\\"default-selected-index\\\"],\\\"selectedIndex\\\":[514,\\\"selected-index\\\"],\\\"leftPadding\\\":[514,\\\"left-padding\\\"],\\\"showLeftScroll\\\":[32],\\\"showRightScroll\\\":[32],\\\"selectTab\\\":[64],\\\"reinitialize\\\":[64]},null,{\\\"selectedIndex\\\":[\\\"handleSelectedIndexUpdate\\\"]}]]],[\\\"tds-message\\\",[[1,\\\"tds-message\\\",{\\\"header\\\":[1],\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"variant\\\":[1],\\\"noIcon\\\":[4,\\\"no-icon\\\"],\\\"minimal\\\":[4]}]]],[\\\"tds-modal\\\",[[1,\\\"tds-modal\\\",{\\\"header\\\":[1],\\\"prevent\\\":[4],\\\"size\\\":[1],\\\"actionsPosition\\\":[1,\\\"actions-position\\\"],\\\"selector\\\":[1],\\\"referenceEl\\\":[16],\\\"show\\\":[4],\\\"closable\\\":[4],\\\"isShown\\\":[32],\\\"showModal\\\":[64],\\\"closeModal\\\":[64],\\\"initializeModal\\\":[64],\\\"cleanupModal\\\":[64]}]]],[\\\"tds-navigation-tabs\\\",[[1,\\\"tds-navigation-tabs\\\",{\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"defaultSelectedIndex\\\":[2,\\\"default-selected-index\\\"],\\\"selectedIndex\\\":[514,\\\"selected-index\\\"],\\\"leftPadding\\\":[514,\\\"left-padding\\\"],\\\"showLeftScroll\\\":[32],\\\"showRightScroll\\\":[32],\\\"selectTab\\\":[64],\\\"reinitialize\\\":[64]},null,{\\\"selectedIndex\\\":[\\\"handleSelectedIndexUpdate\\\"]}]]],[\\\"tds-popover-menu\\\",[[6,\\\"tds-popover-menu\\\",{\\\"selector\\\":[1],\\\"referenceEl\\\":[16],\\\"show\\\":[4],\\\"defaultShow\\\":[4,\\\"default-show\\\"],\\\"placement\\\":[1],\\\"offsetSkidding\\\":[2,\\\"offset-skidding\\\"],\\\"offsetDistance\\\":[2,\\\"offset-distance\\\"],\\\"fluidWidth\\\":[4,\\\"fluid-width\\\"],\\\"childRef\\\":[32],\\\"close\\\":[64]}]]],[\\\"tds-side-menu-close-button\\\",[[1,\\\"tds-side-menu-close-button\\\"]]],[\\\"tds-side-menu-collapse-button\\\",[[1,\\\"tds-side-menu-collapse-button\\\",{\\\"collapsed\\\":[32]},[[16,\\\"internalTdsSideMenuPropChange\\\",\\\"collapseSideMenuEventHandler\\\"]]]]],[\\\"tds-slider\\\",[[0,\\\"tds-slider\\\",{\\\"label\\\":[1],\\\"value\\\":[1025],\\\"min\\\":[1],\\\"max\\\":[1],\\\"ticks\\\":[1],\\\"showTickNumbers\\\":[4,\\\"show-tick-numbers\\\"],\\\"tooltip\\\":[4],\\\"disabled\\\":[4],\\\"readOnly\\\":[4,\\\"read-only\\\"],\\\"controls\\\":[4],\\\"input\\\":[4],\\\"step\\\":[1],\\\"name\\\":[1],\\\"thumbSize\\\":[1,\\\"thumb-size\\\"],\\\"snap\\\":[4],\\\"sliderId\\\":[1,\\\"slider-id\\\"],\\\"reset\\\":[64]},[[0,\\\"keydown\\\",\\\"handleKeydown\\\"],[9,\\\"mouseup\\\",\\\"handleRelease\\\"],[9,\\\"touchend\\\",\\\"handleRelease\\\"],[9,\\\"mousemove\\\",\\\"handleMove\\\"],[9,\\\"touchmove\\\",\\\"handleMove\\\"]],{\\\"value\\\":[\\\"handleValueUpdate\\\"]}]]],[\\\"tds-step\\\",[[1,\\\"tds-step\\\",{\\\"index\\\":[1],\\\"state\\\":[1],\\\"hideLabels\\\":[32],\\\"size\\\":[32],\\\"orientation\\\":[32],\\\"labelPosition\\\":[32]},[[16,\\\"internalTdsPropsChange\\\",\\\"handlePropsChange\\\"]]]]],[\\\"tds-table-body-input-wrapper\\\",[[1,\\\"tds-table-body-input-wrapper\\\",{\\\"showIcon\\\":[4,\\\"show-icon\\\"],\\\"renderSlot\\\":[32],\\\"inputFocused\\\":[32],\\\"compactDesign\\\":[32],\\\"tableId\\\":[32]},[[16,\\\"internalTdsTablePropChange\\\",\\\"internalTdsPropChangeListener\\\"]]]]],[\\\"tds-table-body-row\\\",[[1,\\\"tds-table-body-row\\\",{\\\"selected\\\":[516],\\\"disabled\\\":[516],\\\"clickable\\\":[516],\\\"multiselect\\\":[32],\\\"mainCheckBoxStatus\\\":[32],\\\"verticalDividers\\\":[32],\\\"compactDesign\\\":[32],\\\"noMinWidth\\\":[32],\\\"tableId\\\":[32]},[[16,\\\"internalTdsTablePropChange\\\",\\\"internalTdsPropChangeListener\\\"]]]]],[\\\"tds-table-header\\\",[[1,\\\"tds-table-header\\\",{\\\"allSelected\\\":[1540,\\\"all-selected\\\"],\\\"selected\\\":[1540],\\\"disabled\\\":[1540],\\\"indeterminate\\\":[4],\\\"multiselect\\\":[32],\\\"expandableRows\\\":[32],\\\"mainCheckboxSelected\\\":[32],\\\"mainExpendSelected\\\":[32],\\\"verticalDividers\\\":[32],\\\"compactDesign\\\":[32],\\\"noMinWidth\\\":[32],\\\"whiteBackground\\\":[32],\\\"enableToolbarDesign\\\":[32],\\\"tableId\\\":[32]},[[16,\\\"internalTdsTablePropChange\\\",\\\"internalTdsPropChangeListener\\\"],[16,\\\"internalTdsRowExpanded\\\",\\\"internalTdsRowExpandedListener\\\"]]]]],[\\\"tds-table-header-input-wrapper\\\",[[1,\\\"tds-table-header-input-wrapper\\\",{\\\"showIcon\\\":[4,\\\"show-icon\\\"],\\\"compactDesign\\\":[4,\\\"compact-design\\\"],\\\"renderSlot\\\":[32],\\\"inputFocused\\\":[32],\\\"tableId\\\":[32]},[[16,\\\"internalTdsTablePropChange\\\",\\\"internalTdsPropChangeListener\\\"]]]]],[\\\"tds-table-toolbar\\\",[[1,\\\"tds-table-toolbar\\\",{\\\"tableTitle\\\":[513,\\\"table-title\\\"],\\\"filter\\\":[516],\\\"verticalDividers\\\":[32],\\\"compactDesign\\\":[32],\\\"noMinWidth\\\":[32],\\\"whiteBackground\\\":[32],\\\"tableId\\\":[32],\\\"horizontalScrollWidth\\\":[32]},[[16,\\\"internalTdsTablePropChange\\\",\\\"internalTdsPropChangeListener\\\"]]]]],[\\\"tds-text-field\\\",[[6,\\\"tds-text-field\\\",{\\\"type\\\":[513],\\\"labelPosition\\\":[1,\\\"label-position\\\"],\\\"label\\\":[1],\\\"min\\\":[8],\\\"max\\\":[8],\\\"helper\\\":[1],\\\"placeholder\\\":[1],\\\"value\\\":[513],\\\"disabled\\\":[4],\\\"readOnly\\\":[4,\\\"read-only\\\"],\\\"size\\\":[1],\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"noMinWidth\\\":[4,\\\"no-min-width\\\"],\\\"name\\\":[1],\\\"state\\\":[1],\\\"maxLength\\\":[2,\\\"max-length\\\"],\\\"autofocus\\\":[4],\\\"focusInput\\\":[32]}]]],[\\\"tds-textarea\\\",[[2,\\\"tds-textarea\\\",{\\\"label\\\":[1],\\\"name\\\":[1],\\\"helper\\\":[1],\\\"cols\\\":[2],\\\"rows\\\":[2],\\\"labelPosition\\\":[1,\\\"label-position\\\"],\\\"placeholder\\\":[1],\\\"value\\\":[1],\\\"disabled\\\":[4],\\\"readOnly\\\":[4,\\\"read-only\\\"],\\\"state\\\":[1],\\\"maxLength\\\":[2,\\\"max-length\\\"],\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"autofocus\\\":[4],\\\"noMinWidth\\\":[4,\\\"no-min-width\\\"],\\\"focusInput\\\":[32]}]]],[\\\"tds-toast\\\",[[1,\\\"tds-toast\\\",{\\\"toastId\\\":[1,\\\"toast-id\\\"],\\\"header\\\":[1],\\\"subheader\\\":[1],\\\"variant\\\":[1],\\\"hidden\\\":[516],\\\"closable\\\":[4],\\\"toastRole\\\":[1,\\\"toast-role\\\"],\\\"hideToast\\\":[64],\\\"showToast\\\":[64]}]]],[\\\"tds-tooltip\\\",[[6,\\\"tds-tooltip\\\",{\\\"text\\\":[1],\\\"selector\\\":[1],\\\"referenceEl\\\":[16],\\\"defaultShow\\\":[4,\\\"default-show\\\"],\\\"mouseOverTooltip\\\":[4,\\\"mouse-over-tooltip\\\"],\\\"trigger\\\":[1],\\\"show\\\":[1028],\\\"placement\\\":[1],\\\"offsetSkidding\\\":[2,\\\"offset-skidding\\\"],\\\"offsetDistance\\\":[2,\\\"offset-distance\\\"]}]]],[\\\"tds-accordion\\\",[[1,\\\"tds-accordion\\\",{\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"hideLastBorder\\\":[4,\\\"hide-last-border\\\"]}]]],[\\\"tds-badge\\\",[[1,\\\"tds-badge\\\",{\\\"value\\\":[1],\\\"hidden\\\":[516],\\\"size\\\":[1],\\\"shape\\\":[32],\\\"text\\\":[32]},null,{\\\"value\\\":[\\\"watchProps\\\"],\\\"size\\\":[\\\"watchProps\\\"]}]]],[\\\"tds-block\\\",[[1,\\\"tds-block\\\",{\\\"modeVariant\\\":[1,\\\"mode-variant\\\"]}]]],[\\\"tds-body-cell\\\",[[1,\\\"tds-body-cell\\\",{\\\"cellValue\\\":[520,\\\"cell-value\\\"],\\\"cellKey\\\":[520,\\\"cell-key\\\"],\\\"disablePadding\\\":[516,\\\"disable-padding\\\"],\\\"textAlign\\\":[513,\\\"text-align\\\"],\\\"textAlignState\\\":[32],\\\"activeSorting\\\":[32],\\\"verticalDividers\\\":[32],\\\"compactDesign\\\":[32],\\\"noMinWidth\\\":[32],\\\"tableId\\\":[32]},[[16,\\\"internalTdsPropChange\\\",\\\"internalTdsPropChangeListener\\\"],[16,\\\"internalTdsHover\\\",\\\"internalTdsHoverListener\\\"],[16,\\\"internalTdsTextAlign\\\",\\\"internalTdsTextAlignListener\\\"]]]]],[\\\"tds-breadcrumb\\\",[[1,\\\"tds-breadcrumb\\\",{\\\"current\\\":[4]}]]],[\\\"tds-breadcrumbs\\\",[[1,\\\"tds-breadcrumbs\\\"]]],[\\\"tds-button\\\",[[6,\\\"tds-button\\\",{\\\"text\\\":[1],\\\"type\\\":[1],\\\"variant\\\":[1],\\\"size\\\":[1],\\\"disabled\\\":[4],\\\"fullbleed\\\":[4],\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"onlyIcon\\\":[32]}]]],[\\\"tds-chip\\\",[[6,\\\"tds-chip\\\",{\\\"type\\\":[1],\\\"size\\\":[1],\\\"chipId\\\":[1,\\\"chip-id\\\"],\\\"checked\\\":[1540],\\\"name\\\":[1],\\\"value\\\":[1],\\\"disabled\\\":[4]}]]],[\\\"tds-folder-tab\\\",[[1,\\\"tds-folder-tab\\\",{\\\"disabled\\\":[4],\\\"selected\\\":[32],\\\"tabWidth\\\":[32],\\\"setTabWidth\\\":[64],\\\"setSelected\\\":[64]}]]],[\\\"tds-footer\\\",[[1,\\\"tds-footer\\\",{\\\"modeVariant\\\":[1,\\\"mode-variant\\\"]}]]],[\\\"tds-footer-item\\\",[[1,\\\"tds-footer-item\\\"]]],[\\\"tds-header\\\",[[4,\\\"tds-header\\\"]]],[\\\"tds-header-dropdown-list-user\\\",[[1,\\\"tds-header-dropdown-list-user\\\",{\\\"imgUrl\\\":[1,\\\"img-url\\\"],\\\"imgAlt\\\":[1,\\\"img-alt\\\"],\\\"header\\\":[1],\\\"subheader\\\":[1]}]]],[\\\"tds-header-launcher-grid\\\",[[4,\\\"tds-header-launcher-grid\\\",{\\\"headingElement\\\":[32]}]]],[\\\"tds-header-launcher-grid-item\\\",[[1,\\\"tds-header-launcher-grid-item\\\"]]],[\\\"tds-header-launcher-grid-title\\\",[[4,\\\"tds-header-launcher-grid-title\\\"]]],[\\\"tds-header-launcher-list-title\\\",[[4,\\\"tds-header-launcher-list-title\\\"]]],[\\\"tds-header-title\\\",[[1,\\\"tds-header-title\\\"]]],[\\\"tds-inline-tab\\\",[[1,\\\"tds-inline-tab\\\",{\\\"disabled\\\":[4],\\\"selected\\\":[32],\\\"setSelected\\\":[64]}]]],[\\\"tds-link\\\",[[1,\\\"tds-link\\\",{\\\"disabled\\\":[4],\\\"underline\\\":[4]}]]],[\\\"tds-navigation-tab\\\",[[1,\\\"tds-navigation-tab\\\",{\\\"disabled\\\":[4],\\\"selected\\\":[32],\\\"setSelected\\\":[64]}]]],[\\\"tds-popover-menu-item\\\",[[1,\\\"tds-popover-menu-item\\\",{\\\"disabled\\\":[4]}]]],[\\\"tds-radio-button\\\",[[6,\\\"tds-radio-button\\\",{\\\"name\\\":[1],\\\"value\\\":[1],\\\"radioId\\\":[1,\\\"radio-id\\\"],\\\"checked\\\":[516],\\\"required\\\":[4],\\\"disabled\\\":[4]}]]],[\\\"tds-side-menu\\\",[[1,\\\"tds-side-menu\\\",{\\\"open\\\":[4],\\\"persistent\\\":[4],\\\"collapsed\\\":[1028],\\\"isUpperSlotEmpty\\\":[32],\\\"isCollapsed\\\":[32],\\\"initialCollapsedState\\\":[32]},[[16,\\\"internalTdsCollapse\\\",\\\"collapsedSideMenuEventHandler\\\"]],{\\\"collapsed\\\":[\\\"onCollapsedChange\\\"]}]]],[\\\"tds-side-menu-dropdown-list\\\",[[1,\\\"tds-side-menu-dropdown-list\\\",{\\\"collapsed\\\":[32]},[[16,\\\"internalTdsSideMenuPropChange\\\",\\\"collapsedSideMenuEventHandler\\\"]]]]],[\\\"tds-side-menu-dropdown-list-item\\\",[[1,\\\"tds-side-menu-dropdown-list-item\\\",{\\\"selected\\\":[4],\\\"dropdownHasIcon\\\":[32],\\\"collapsed\\\":[32]},[[16,\\\"internalTdsSideMenuPropChange\\\",\\\"collapseSideMenuEventHandler\\\"]]]]],[\\\"tds-side-menu-overlay\\\",[[1,\\\"tds-side-menu-overlay\\\"]]],[\\\"tds-spinner\\\",[[0,\\\"tds-spinner\\\",{\\\"size\\\":[1],\\\"variant\\\":[1]}]]],[\\\"tds-stepper\\\",[[1,\\\"tds-stepper\\\",{\\\"orientation\\\":[1],\\\"labelPosition\\\":[1,\\\"label-position\\\"],\\\"size\\\":[1],\\\"hideLabels\\\":[4,\\\"hide-labels\\\"],\\\"stepperId\\\":[1,\\\"stepper-id\\\"]},null,{\\\"orientation\\\":[\\\"handleDirectionChange\\\"],\\\"labelPosition\\\":[\\\"handleLabelPositionChange\\\"],\\\"size\\\":[\\\"handleSizeChange\\\"],\\\"hideLabels\\\":[\\\"handleHideLabelsChange\\\"]}]]],[\\\"tds-table\\\",[[1,\\\"tds-table\\\",{\\\"verticalDividers\\\":[516,\\\"vertical-dividers\\\"],\\\"compactDesign\\\":[516,\\\"compact-design\\\"],\\\"noMinWidth\\\":[516,\\\"no-min-width\\\"],\\\"multiselect\\\":[516],\\\"expandableRows\\\":[516,\\\"expandable-rows\\\"],\\\"responsive\\\":[516],\\\"modeVariant\\\":[513,\\\"mode-variant\\\"],\\\"zebraMode\\\":[513,\\\"zebra-mode\\\"],\\\"horizontalScrollWidth\\\":[1,\\\"horizontal-scroll-width\\\"],\\\"tableId\\\":[1,\\\"table-id\\\"],\\\"enableHorizontalScrollToolbarDesign\\\":[32],\\\"enableHorizontalScrollFooterDesign\\\":[32],\\\"getSelectedRows\\\":[64]},null,{\\\"multiselect\\\":[\\\"multiselectChanged\\\"],\\\"expandableRows\\\":[\\\"enableExpandableRowsChanged\\\"],\\\"compactDesign\\\":[\\\"compactDesignChanged\\\"],\\\"verticalDividers\\\":[\\\"verticalDividersChanged\\\"],\\\"noMinWidth\\\":[\\\"noMinWidthChanged\\\"],\\\"zebraMode\\\":[\\\"zebraModeChanged\\\"],\\\"modeVariant\\\":[\\\"modeVariantChanged\\\"],\\\"horizontalScrollWidth\\\":[\\\"widthChanged\\\"]}]]],[\\\"tds-table-body\\\",[[4,\\\"tds-table-body\\\",{\\\"multiselect\\\":[32],\\\"enablePaginationTableBody\\\":[32],\\\"expandableRows\\\":[32],\\\"multiselectArray\\\":[32],\\\"multiselectArrayJSON\\\":[32],\\\"mainCheckboxStatus\\\":[32],\\\"columnsNumber\\\":[32],\\\"zebraMode\\\":[32],\\\"tableId\\\":[32]},[[16,\\\"internalTdsTablePropChange\\\",\\\"internalTdsPropChangeListener\\\"],[16,\\\"internalTdsRowChange\\\",\\\"bodyCheckboxListener\\\"]]]]],[\\\"tds-table-body-row-expandable\\\",[[1,\\\"tds-table-body-row-expandable\\\",{\\\"colSpan\\\":[2,\\\"col-span\\\"],\\\"rowId\\\":[513,\\\"row-id\\\"],\\\"expanded\\\":[516],\\\"overflow\\\":[513],\\\"autoCollapse\\\":[4,\\\"auto-collapse\\\"],\\\"isExpanded\\\":[32],\\\"tableId\\\":[32],\\\"columnsNumber\\\":[32],\\\"verticalDividers\\\":[32],\\\"compactDesign\\\":[32],\\\"noMinWidth\\\":[32],\\\"modeVariant\\\":[32],\\\"expand\\\":[64],\\\"collapse\\\":[64]},[[16,\\\"internalTdsTablePropChange\\\",\\\"internalTdsPropChangeListener\\\"],[16,\\\"tdsChange\\\",\\\"handleRowExpand\\\"]],{\\\"expanded\\\":[\\\"watchExpanded\\\"]}]]],[\\\"tds-toggle\\\",[[6,\\\"tds-toggle\\\",{\\\"checked\\\":[516],\\\"required\\\":[4],\\\"size\\\":[1],\\\"name\\\":[1],\\\"headline\\\":[1],\\\"disabled\\\":[4],\\\"toggleId\\\":[1,\\\"toggle-id\\\"],\\\"toggle\\\":[64]}]]],[\\\"tds-core-header-item_2\\\",[[1,\\\"tds-header-item\\\",{\\\"active\\\":[4],\\\"selected\\\":[4]}],[1,\\\"tds-core-header-item\\\"]]],[\\\"tds-header-launcher-button\\\",[[1,\\\"tds-header-launcher-button\\\",{\\\"active\\\":[4]}]]],[\\\"tds-divider\\\",[[1,\\\"tds-divider\\\",{\\\"orientation\\\":[1]}]]],[\\\"tds-header-dropdown-list\\\",[[1,\\\"tds-header-dropdown-list\\\",{\\\"size\\\":[513],\\\"headingElement\\\":[32]}]]],[\\\"tds-header-dropdown-list-item\\\",[[1,\\\"tds-header-dropdown-list-item\\\",{\\\"selected\\\":[4],\\\"size\\\":[513]}]]],[\\\"tds-checkbox\\\",[[6,\\\"tds-checkbox\\\",{\\\"name\\\":[1],\\\"checkboxId\\\":[1,\\\"checkbox-id\\\"],\\\"disabled\\\":[4],\\\"required\\\":[4],\\\"checked\\\":[1540],\\\"indeterminate\\\":[1028],\\\"value\\\":[1],\\\"toggleCheckbox\\\":[64]},null,{\\\"indeterminate\\\":[\\\"handleIndeterminateState\\\"]}]]],[\\\"tds-dropdown_2\\\",[[17,\\\"tds-dropdown-option\\\",{\\\"value\\\":[1],\\\"disabled\\\":[4],\\\"selected\\\":[32],\\\"multiselect\\\":[32],\\\"size\\\":[32],\\\"setSelected\\\":[64]}],[1,\\\"tds-dropdown\\\",{\\\"name\\\":[1],\\\"disabled\\\":[4],\\\"helper\\\":[1],\\\"label\\\":[1],\\\"labelPosition\\\":[1,\\\"label-position\\\"],\\\"modeVariant\\\":[1,\\\"mode-variant\\\"],\\\"openDirection\\\":[1,\\\"open-direction\\\"],\\\"placeholder\\\":[1],\\\"size\\\":[1],\\\"error\\\":[4],\\\"multiselect\\\":[4],\\\"filter\\\":[4],\\\"normalizeText\\\":[4,\\\"normalize-text\\\"],\\\"noResultText\\\":[1,\\\"no-result-text\\\"],\\\"defaultValue\\\":[1,\\\"default-value\\\"],\\\"open\\\":[32],\\\"value\\\":[32],\\\"filterResult\\\":[32],\\\"filterFocus\\\":[32],\\\"reset\\\":[64],\\\"focusElement\\\":[64],\\\"setValue\\\":[64],\\\"appendValue\\\":[64],\\\"removeValue\\\":[64],\\\"close\\\":[64]},[[9,\\\"mousedown\\\",\\\"onAnyClick\\\"],[0,\\\"keydown\\\",\\\"onKeyDown\\\"]],{\\\"open\\\":[\\\"handleOpenState\\\"]}]]],[\\\"tds-popover-canvas\\\",[[6,\\\"tds-popover-canvas\\\",{\\\"selector\\\":[1],\\\"referenceEl\\\":[16],\\\"defaultShow\\\":[4,\\\"default-show\\\"],\\\"show\\\":[4],\\\"placement\\\":[1],\\\"offsetSkidding\\\":[2,\\\"offset-skidding\\\"],\\\"offsetDistance\\\":[2,\\\"offset-distance\\\"],\\\"modifiers\\\":[16],\\\"childRef\\\":[32],\\\"close\\\":[64]}]]],[\\\"tds-side-menu-user-image_2\\\",[[1,\\\"tds-side-menu-user-image\\\",{\\\"src\\\":[1],\\\"alt\\\":[1]}],[1,\\\"tds-side-menu-user-label\\\",{\\\"heading\\\":[1],\\\"subheading\\\":[1]}]]],[\\\"tds-side-menu-item\\\",[[1,\\\"tds-side-menu-item\\\",{\\\"selected\\\":[4],\\\"active\\\":[4],\\\"collapsed\\\":[32]},[[16,\\\"internalTdsSideMenuPropChange\\\",\\\"collapseSideMenuEventHandler\\\"]]]]],[\\\"tds-popover-core\\\",[[6,\\\"tds-popover-core\\\",{\\\"selector\\\":[1],\\\"referenceEl\\\":[16],\\\"defaultShow\\\":[4,\\\"default-show\\\"],\\\"show\\\":[4],\\\"placement\\\":[1],\\\"offsetSkidding\\\":[2,\\\"offset-skidding\\\"],\\\"offsetDistance\\\":[2,\\\"offset-distance\\\"],\\\"modifiers\\\":[16],\\\"trigger\\\":[1],\\\"autoHide\\\":[4,\\\"auto-hide\\\"],\\\"renderedShowValue\\\":[32],\\\"popperInstance\\\":[32],\\\"target\\\":[32],\\\"isShown\\\":[32],\\\"disableLogic\\\":[32],\\\"close\\\":[64]},[[8,\\\"click\\\",\\\"onAnyClick\\\"],[8,\\\"internalTdsShow\\\",\\\"onTdsShow\\\"]],{\\\"show\\\":[\\\"onShowChange\\\"],\\\"referenceEl\\\":[\\\"onReferenceElChanged\\\"],\\\"trigger\\\":[\\\"onTriggerChanged\\\"]}]]],[\\\"tds-icon\\\",[[1,\\\"tds-icon\\\",{\\\"name\\\":[513],\\\"size\\\":[513],\\\"svgTitle\\\":[1,\\\"svg-title\\\"],\\\"svgDescription\\\":[1,\\\"svg-description\\\"],\\\"icons_object\\\":[32],\\\"arrayOfIcons\\\":[32]}]]]]\"), options);\n};\n\nexport { defineCustomElements };\n","(function(){if(\"undefined\"!==typeof window&&void 0!==window.Reflect&&void 0!==window.customElements){var a=HTMLElement;window.HTMLElement=function(){return Reflect.construct(a,[],this.constructor)};HTMLElement.prototype=a.prototype;HTMLElement.prototype.constructor=HTMLElement;Object.setPrototypeOf(HTMLElement,a)}})();\nexport * from '../dist/esm/loader.js';","import React from \"react\";\nimport { defineCustomElements, TdsHeader, TdsHeaderTitle, TdsHeaderBrandSymbol, TdsHeaderDropdown, TdsHeaderDropdownList, TdsHeaderLauncherListItem, TdsIcon } from '@scania/tegel-react';\n\ndefineCustomElements();\n\nconst Header = ({ setLanguage, language }) => {\n\n//Translations\n      const translations = {\n        german: {\n            title:  \"BEV-Diesel TCO Kalkulator\",\n            infoHeader: \"Bei Scania sind wir der Meinung, dass es die Reichweite ist, die Transportunternehmen davon abhält, ihre Dieselflotte durch vollelektrische Lkw zu ersetzen.\",\n            infoBody1: \"Wir wissen, dass die Batterietechnik – ebenso wie die Ladetechnik – noch nicht allen Fahraufgaben und -bereichen gerecht werden kann. Daher sehen wir Hybrid- und Plug-in-Hybrid-Lösungen für viele Unternehmen als selbstverständliche Wahl an, da die Hybride eine grössere Flexibilität – und Reichweite – bieten.\",\n            infoBody2: \"Generell variiert die Reichweite je nach Gewicht, Ausstattung und Topografie, unabhängig davon, ob es sich um einen Hybrid- oder vollelektrischen Lkw handelt. Es ist daher nicht möglich, ohne vorherige Analyse Ihrer Fahrzeugflotte und Ihres Fahrverhaltens genau anzugeben, wie viel Reichweite Sie in Ihrem Betrieb erreichen können.\",\n            infoBody3: \"Bei Scania sind wir jedoch davon überzeugt, dass die meisten Transportunternehmen mindestens einen der aktuellen Elektro-Lkw von Scania im Einsatz einsetzen können, ohne sich um eine zu geringe Reichweite sorgen zu müssen – insbesondere, wenn man das Zwischenladen an Haltestellen oder Haltestellen berücksichtigt geht kaputt.\",\n        },\n        french: {\n            title:  \"Calculateur TCO BEV-Diesel\",\n            infoHeader: \"Chez Scania, nous pensons que c'est l'autonomie qui empêche les transporteurs de remplacer leur flotte de camions diesel par des camions entièrement électriques.\",\n            infoBody1: \"Nous savons que la technologie des batteries - tout comme la technologie de recharge - ne peut pas encore répondre à toutes les tâches et à tous les domaines de conduite. C'est pourquoi nous considérons les solutions hybrides et hybrides rechargeables comme un choix évident pour de nombreuses entreprises, car les hybrides offrent une plus grande flexibilité - et une plus grande autonomie.\",\n            infoBody2: \"En général, l'autonomie varie en fonction du poids, de l'équipement et de la topographie, qu'il s'agisse d'un camion hybride ou entièrement électrique. Il n'est donc pas possible d'indiquer avec précision l'autonomie que vous pouvez atteindre dans votre entreprise sans une analyse préalable de votre flotte de véhicules et de vos habitudes de conduite.\",\n            infoBody3: \"Toutefois, chez Scania, nous sommes convaincus que la plupart des transporteurs peuvent utiliser au moins l'un des camions électriques actuels de Scania en service sans avoir à s'inquiéter d'une autonomie trop faible, surtout si l'on tient compte des recharges intermédiaires aux arrêts ou des arrêts est cassé.\",\n        }\n    };\n    const uiLanguage = translations[language];\n\n    return (\n        <div>\n            <TdsHeader>\n                <TdsHeaderTitle>{uiLanguage.title}</TdsHeaderTitle>\n\n                <TdsHeaderDropdown slot=\"end\" no-dropdown-icon className=\"no-print\">\n                    <span slot=\"icon\"><TdsIcon name=\"global\" size=\"22px\"></TdsIcon></span>\n                    <TdsHeaderDropdownList>\n                        <TdsHeaderLauncherListItem>\n                            <button onClick={() => setLanguage(\"german\")}>Deutsch</button>\n                        </TdsHeaderLauncherListItem>\n                        <TdsHeaderLauncherListItem>\n                            <button onClick={() => setLanguage(\"french\")}>Français</button>\n                        </TdsHeaderLauncherListItem>\n                    </TdsHeaderDropdownList>\n                </TdsHeaderDropdown>\n\n                    <TdsHeaderBrandSymbol slot=\"end\">\n                    <a aria-label=\"Scania - red gryphon on blue shield\" href=\"https://www.scania.com/ch/de/home.html\"></a>\n                    </TdsHeaderBrandSymbol>\n            </TdsHeader>\n        </div>\n    )\n}\n\nexport default Header;","import React from \"react\";\nimport { defineCustomElements} from '@scania/tegel-react';\nimport \"../App.css\"\n\ndefineCustomElements();\n\nconst Disclaimer = ({ language }) => {\n\n//Translations\n    const translations = {\n        german: {\n            priceInfo:  \"Alle Preise exkl. MwSt. in CHF\",\n            disclaimer: \"Sämtliche Finanzierungsauskünfte/-vorschläge sind freibleibend und begründen keine rechtsgeschäftliche Bindung. Ausschliesslich für gewerbliche Kunden in der Schweiz und Lichtenstein. Irrtum, Nachtrag, jederzeitige Änderung und Widerruf vorbehalten.  Bearbeitung und Genehmigung erfolgt durch die Scania Finance Schweiz AG. Restwert gemäss Richtlinien der Scania Schweiz und Scania Finance Schweiz AG. Obligatorische Vollkaskoversicherung nicht inbegriffen.\",\n            agb: \"Es gelten unsere allgemeinen Geschäftsbedingungen.\",\n        },\n        french: {\n            priceInfo:  \"Tous les prix s'entendent hors TVA en CHF\",\n            disclaimer: \"Tous les renseignements/propositions de financement sont sans engagement et ne constituent pas un lien juridique. Exclusivement pour les clients commerciaux en Suisse et au Lichtenstein. Sous réserve d'erreurs, d'ajouts, de modifications à tout moment et de révocation.  Le traitement et l'approbation sont effectués par Scania Finance Suisse SA. Valeur résiduelle selon les directives de Scania Suisse et Scania Finance Suisse SA. Assurance casco complète obligatoire non incluse.\",\n            agb: \"Nos conditions générales de vente s'appliquent.\",\n        }\n    };\n    const uiLanguage = translations[language];\n\nreturn (\n    <div className=\"disclaimer-container\">\n        <p>{uiLanguage.priceInfo}</p>\n        <p>{uiLanguage.disclaimer}</p>\n        <p>{uiLanguage.agb}</p>\n    </div>\n)};\n\nexport default Disclaimer;","import React, {useCallback, useEffect, useState} from \"react\";\nimport { defineCustomElements, TdsTextField, TdsDropdown, TdsDropdownOption, TdsTable, TdsTableHeader, TdsHeaderCell, TdsTableBody, TdsTableBodyRow, TdsBodyCell, TdsButton, TdsIcon, TdsToggle, TdsDatetime, TdsTooltip, TdsBlock } from '@scania/tegel-react';\nimport \"../App.css\";\n\ndefineCustomElements();\n\nconst UserInputs = ({language, setSavings, setChartData}) => {\n\n//Translations\nconst translations = {\n    german: {\n        annualMileageLabel: \"Laufleistung\",\n        annualMileageSuffix: \"km/Jahr\",\n        yearsInUseLabel: \"Laufleistung\",\n        yearsInUseSuffix: \"Jahre\",\n        lsvaClassLabel: \"LSVA Klasse\",\n        lsvaWeightLabel: \"LSVA Gewicht\",\n        lsvaWeightSuffix: \"Tonnen\",\n        tableParamHeader: \"Parameter\",\n        tableBevHeader: \"Batterie Elektrisches Fahrzeug (BEV)\",\n        tableDieselHeader: \"Dieselfahrzeug\",\n        netInvestment: \"Nettoinvestitionssumme\",\n        repairAndMaintanenceCost: \"Total W&R Kosten\",\n        chargingInfrastructureCost: \"Total Kosten Ladeinfrastruktur\",\n        energyCost: \"Energiekosten\",\n        energyConsumption: \"Energieverbrauch\",\n        totalCost: \"Total Kosten in CHF\",\n        payAsYouDrive: \"BEV pay as you drive Modell Kosten in CHF/km (exkl. Ladeinfrastruktur)\",\n        notApplicable: \"Nicht nowendig\",\n        respective: \" resp. \",\n        calculationButton: \"Preisvorteil berechnen\",\n        missingData: \"Angabe Fehlt!\",\n        lsvaToggle: \"LSVA ab 2031\",\n        startDate: \"Start Datum\",\n        lsvaDescription: \"Tarife ab 2025. Reduzierter Satz für Emissionsfreie Fahrzeuge in den ersten 4 Jahren nicht berücksichtigt.\",\n    },\n    french: {\n        annualMileageLabel: \"Kilométrage\",\n        annualMileageSuffix: \"km/An\",\n        yearsInUseLabel: \"Durée de fonctionnement\",\n        yearsInUseSuffix: \"Ans\",\n        lsvaClassLabel: \"Classe RPLP\",\n        lsvaWeightLabel: \"Poids RPLP\",\n        lsvaWeightSuffix: \"Tonnes\",\n        tableParamHeader: \"Paramètres\",\n        tableBevHeader: \"Véhicule électrique à batterie (BEV)\",\n        tableDieselHeader: \"Véhicule à moteur diesel\",\n        netInvestment: \"Net des investissements\",\n        repairAndMaintanenceCost: \"Total des coûts d'E&R\",\n        chargingInfrastructureCost: \"Total des coûts d'infrastructure de charge\",\n        energyCost: \"Coûts d'énergie\",\n        energyConsumption: \"Consommation d'énergie\",\n        totalCost: \"Total des coûts en CHF\",\n        payAsYouDrive: \"Modèle BEV pay as you drive Coûts en CHF/km (hors infrastructure de charge)\",\n        notApplicable: \"Pas nécessaire\",\n        respective: \" resp. \",\n        missingData: \"Donnée manquante !\",\n        calculationButton: \"Calculer l'avantage prix\",\n        lsvaToggle: \"RPLP à partir de 2031\",\n        startDate: \"Date de début\",\n        lsvaDescription: \"Tarifs à partir de 2025. Taux réduit pour les véhicules zéro émission pendant les 4 premières années non pris en compte.\",\n    }\n};\nconst uiLanguage = translations[language];\n\n//Define params\n    const [basicData, setBasicData] = useState({\n        annualMileage: 80000,\n        yearsInUse: 6,\n        lsvaClass: 0.0239,\n        lsvaWeight: 40,\n        withLsva: true,\n        startDate: \"2026-06-01\"\n    });\n    const updateBasicData = (key, value) => {\n        setBasicData((prev) => ({ ...prev, [key]: value }));\n    };\n\n    const [bevVehicle, setBevVehicle] = useState({\n        netInvestment: 380000,\n        repairAndMaintanenceCost: 45000,\n        chargingInfrastructure: 0,\n        energyCost: 0.21,\n        energyConsumption: 115,\n        totalInvestment: \"\",\n        kmCost: \"\",\n        payAsYouDriveRate: \"\"\n    });\n    const updateBevVehicle = (key, value) => {\n        setBevVehicle((prev) => ({ ...prev, [key]: value }));\n    };\n\n    const [iceVehicle, setIceVehicle] = useState({\n        netInvestment: 190000,\n        repairAndMaintanenceCost: 45000,\n        energyCost: 1.80,\n        energyConsumption: 25.0,\n        totalInvestment: \"\",\n        kmCost: \"\"\n    });\n    const updateIceVehicle = (key, value) => {\n        setIceVehicle((prev) => ({ ...prev, [key]: value }));\n    };\n\n    const paydRate = 4.0/1200; // rate on monthly basis\n\n//Calculations\n    const calculateSavings = () => {\n        const totalMileage = basicData.annualMileage*basicData.yearsInUse;\n        const lsvaYearBev = new Date(\"2031-01-01\");\n        let lsvaMileageBev = 0;\n        let lsvaCostBev = 0;\n\n        if(basicData.withLsva) {\n            const endDate = new Date(basicData.startDate);\n            endDate.setFullYear(endDate.getFullYear()+basicData.yearsInUse);\n            let lsvaYearsDiffBev = 0;\n\n            if (endDate > lsvaYearBev) {\n                lsvaYearsDiffBev = Math.abs(endDate - lsvaYearBev);\n                const millisecondsPerYear = 1000 * 60 * 60 * 24 * 365.25;\n                const lsvaYearsBev = lsvaYearsDiffBev / millisecondsPerYear;\n                lsvaMileageBev = basicData.annualMileage*lsvaYearsBev;\n                lsvaCostBev = lsvaMileageBev*basicData.lsvaWeight*basicData.lsvaClass;\n            }\n        }\n        else if (!basicData.withLsva) {\n            lsvaCostBev = 0;\n        }\n\n        const lsvaCostDiesel = totalMileage*basicData.lsvaWeight*basicData.lsvaClass;\n        const operationCostBev = totalMileage*(bevVehicle.energyConsumption/100)*(bevVehicle.energyCost);\n        const operationCostDiesel = totalMileage*(iceVehicle.energyConsumption/100)*iceVehicle.energyCost;\n\n        const totalCostBev = bevVehicle.netInvestment+lsvaCostBev+bevVehicle.repairAndMaintanenceCost+bevVehicle.chargingInfrastructure+operationCostBev;\n        const totalCostDiesel = iceVehicle.netInvestment+lsvaCostDiesel+iceVehicle.repairAndMaintanenceCost+operationCostDiesel;\n        updateBevVehicle(\"totalInvestment\", totalCostBev.toFixed(0));\n        updateIceVehicle(\"totalInvestment\", totalCostDiesel.toFixed(0));\n        \n        let kmCostBev = totalCostBev/totalMileage;\n        updateBevVehicle(\"kmCost\", kmCostBev.toFixed(2));\n\n        let kmCostDiesel = totalCostDiesel/totalMileage;\n        updateIceVehicle(\"kmCost\", kmCostDiesel.toFixed(2));\n\n        const monthsInUse = basicData.yearsInUse*12;\n        const annuity = Math.pow(1+paydRate,monthsInUse);\n        const rmzWithoutPrepay = (bevVehicle.netInvestment+bevVehicle.repairAndMaintanenceCost)*(paydRate*(annuity/(annuity-1)));\n        const paydCostPerKm = rmzWithoutPrepay/(basicData.annualMileage/12);\n        updateBevVehicle(\"payAsYouDriveRate\", paydCostPerKm.toFixed(2));\n\n        let bestSavings;\n        if (totalCostBev<totalCostDiesel) {\n            bestSavings = totalCostDiesel-totalCostBev\n        }\n        else {bestSavings=0}\n        bestSavings = bestSavings.toFixed(0);\n        bestSavings = Number(bestSavings).toLocaleString(\"de-CH\");\n        setSavings(bestSavings);\n    };\n\n//Handle Button\n    const [buttonDisabled, setButtonDisabled] = useState(true);\n    useEffect(() => {\n        const valuesToCheck = [\n            basicData.annualMileage,\n            basicData.yearsInUse,\n            basicData.lsvaWeight,\n            bevVehicle.netInvestment,\n            iceVehicle.netInvestment,\n            bevVehicle.repairAndMaintanenceCost,\n            iceVehicle.repairAndMaintanenceCost,\n            bevVehicle.chargingInfrastructure,\n            bevVehicle.energyCost,\n            iceVehicle.energyCost,\n            bevVehicle.energyConsumption,\n            iceVehicle.energyConsumption\n        ];\n        \n        if (valuesToCheck.every(value => !Number.isNaN(value))) {\n            setButtonDisabled(false);\n        }\n        else {\n            setButtonDisabled(true);\n            setSavings(null);\n        }\n    }, [basicData, bevVehicle, iceVehicle, setSavings]);\n\n    const handleCalculations = () => {\n        calculateSavings();\n    };\n\n    useEffect(() => {\n        if (bevVehicle.totalInvestment || iceVehicle.totalInvestment) {\n            const updatedChartParams = {\n                netInvestmentBev: bevVehicle.netInvestment,\n                netInvestmentDiesel: iceVehicle.netInvestment,\n                totalInvestmentBev: bevVehicle.totalInvestment,\n                totalInvestmentDiesel: iceVehicle.totalInvestment,\n                yearsInUse: basicData.yearsInUse,\n            };\n            setChartData(updatedChartParams);\n        }\n    },// eslint-disable-next-line\n    [bevVehicle.totalInvestment, iceVehicle.totalInvestment]);\n\n//Custom eventListener\n    const onTdsChange = useCallback((index, type, format, key) => (event) => {\n        const getValue = () => {\n            if (type === \"dropdown\") return format === \"number\" ? parseFloat(event.detail.value) : event.detail.value;\n            if (type === \"textfield\") return format === \"number\" ? parseFloat(event.target.value) : event.target.value;\n            if (type === \"toggle\") return event.target.checked;\n            if (type === \"datetime\") return event.target.value;\n            return null;\n        };\n\n        const updateFunctions = [updateBevVehicle, updateIceVehicle, updateBasicData];\n        const updateFunction = updateFunctions[index];\n\n        if (updateFunction) {\n            updateFunction(key, getValue());\n        }\n    }, []);\n\nreturn (\n    <div className=\"user-inputs-container\">\n        <TdsBlock>\n        <div className=\"user-inputs-container-single-line\">\n            <div className=\"user-input-item-single-line\">\n                <TdsTextField\n                modeVariant=\"secondary\"\n                type=\"number\"\n                size=\"sm\"\n                state={Number.isNaN(basicData.annualMileage) ? \"error\" : \"default\"}\n                helper={Number.isNaN(basicData.annualMileage) ? uiLanguage.missingData : null}\n                label={uiLanguage.annualMileageLabel}\n                label-position=\"outside\"\n                no-min-width\n                value={basicData.annualMileage}\n                onTdsChange={onTdsChange(2, \"textfield\", \"number\", \"annualMileage\")}\n                >\n                    <span slot=\"suffix\">{uiLanguage.annualMileageSuffix}</span>\n                </TdsTextField>\n            </div>\n\n            <div className=\"user-input-item-single-line\">\n                <TdsTextField\n                modeVariant=\"secondary\"\n                type=\"number\"\n                size=\"sm\"\n                state={Number.isNaN(basicData.yearsInUse) ? \"error\" : \"default\"}\n                helper={Number.isNaN(basicData.yearsInUse) ? uiLanguage.missingData : null}\n                label={uiLanguage.yearsInUseLabel}\n                label-position=\"outside\"\n                no-min-width\n                value={basicData.yearsInUse}\n                onTdsChange={onTdsChange(2, \"textfield\", \"number\", \"yearsInUse\")}\n                >\n                    <span slot=\"suffix\">{uiLanguage.yearsInUseSuffix}</span>\n                </TdsTextField>\n            </div>\n\n            <div className=\"user-input-item-single-line\">\n                <TdsDropdown\n                modeVariant=\"secondary\"\n                name=\"dropdown\"\n                label={uiLanguage.lsvaClassLabel}\n                label-position=\"outside\"\n                size=\"sm\"\n                open-direction=\"auto\"\n                default-value={basicData.lsvaClass}\n                onTdsChange={onTdsChange(2, \"dropdown\", \"number\", \"lsvaClass\")}\n                >\n                <TdsDropdownOption value=\"0.0239\">Euro 6</TdsDropdownOption>\n                <TdsDropdownOption value=\"0.0326\">Euro 0-5</TdsDropdownOption>\n                </TdsDropdown>\n            </div>\n\n            <div className=\"user-input-item-single-line\">\n                <TdsTextField\n                modeVariant=\"secondary\"\n                type=\"number\"\n                size=\"sm\"\n                state={Number.isNaN(basicData.lsvaWeight) ? \"error\" : \"default\"}\n                helper={Number.isNaN(basicData.lsvaWeight) ? uiLanguage.missingData : null}\n                label={uiLanguage.lsvaWeightLabel}\n                label-position=\"outside\"\n                no-min-width\n                value={basicData.lsvaWeight}\n                onTdsChange={onTdsChange(2, \"textfield\", \"number\", \"lsvaWeight\")}\n                >\n                    <span slot=\"suffix\">{uiLanguage.lsvaWeightSuffix}</span>\n                </TdsTextField>\n            </div>\n        </div>\n        </TdsBlock>\n\n        <div>\n            <TdsTable vertical-dividers=\"true\" compact-design=\"false\" responsive=\"true\">\n                <TdsTableHeader>\n                    <TdsHeaderCell\n                    cellKey=\"param\"\n                    cellValue={uiLanguage.tableParamHeader}\n                    disablePadding=\"false\"\n                    textAlign=\"left\"\n                    ></TdsHeaderCell>\n                    <TdsHeaderCell\n                    cellKey=\"bev\"\n                    cellValue={uiLanguage.tableBevHeader}\n                    disablePadding=\"false\"\n                    textAlign=\"left\"\n                    >\n                        <TdsToggle \n                        size=\"sm\"\n                        checked={basicData.withLsva}\n                        onTdsToggle={onTdsChange(2, \"toggle\", \"boolean\", \"withLsva\")}\n                        >\n                                <div slot=\"label\" style={{display: \"flex\", alignItems:\"center\"}}>\n                                    {uiLanguage.lsvaToggle}\n                                    <TdsIcon name=\"info\" size=\"16px\" id=\"lsva-description\" className=\"no-print\" style={{color:\"#2B70D3\", padding:\"3px\"}} />\n                                </div>\n                                \n                        </TdsToggle>\n\n                        <TdsTooltip\n                            placement=\"bottom\"\n                            text={uiLanguage.lsvaDescription}\n                            selector=\"#lsva-description\"\n                            offset-distance=\"8\"\n                            offset-skidding=\"0\"\n                            mouse-over-tooltip=\"true\"\n                            trigger=\"hover\"\n                        ></TdsTooltip>\n\n                    </TdsHeaderCell>\n                    <TdsHeaderCell\n                    cellKey=\"diesel\"\n                    cellValue={uiLanguage.tableDieselHeader}\n                    disablePadding=\"false\"\n                    textAlign=\"left\"\n                    ></TdsHeaderCell>\n                </TdsTableHeader>\n\n                <TdsTableBody>\n{basicData.withLsva ?\n    <>\n                    <TdsTableBodyRow>\n                        <TdsBodyCell\n                        cell-key=\"param\"\n                        cell-value={uiLanguage.startDate}\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-key=\"bev\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsDatetime\n                            type=\"date\"\n                            size=\"sm\"\n                            state={basicData.startDate.length < 1 ? \"error\" : \"none\"}\n                            helper={basicData.startDate.length < 1 ? uiLanguage.missingData : null}\n                            min=\"2026-06-01\"\n                            max=\"2030-12-31\"\n                            defaultValue={basicData.startDate}\n                            onTdsChange={onTdsChange(2, \"datetime\", \"date\", \"startDate\")}\n                            ></TdsDatetime>\n                        </TdsBodyCell>\n                        <TdsBodyCell\n                        cell-key=\"diesel\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsDatetime\n                            type=\"date\"\n                            size=\"sm\"\n                            value={basicData.startDate}\n                            disabled\n                            ></TdsDatetime>\n                        </TdsBodyCell>\n                    </TdsTableBodyRow>\n    </>\n: null}\n                    <TdsTableBodyRow>\n                        <TdsBodyCell\n                        cell-value={uiLanguage.netInvestment}\n                        cell-key=\"param\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"bev\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"number\"\n                            size=\"sm\"\n                            placeholder={uiLanguage.netInvestment}\n                            state={Number.isNaN(bevVehicle.netInvestment) ? \"error\" : \"default\"}\n                            helper={Number.isNaN(bevVehicle.netInvestment) ? uiLanguage.missingData : null}\n                            no-min-width\n                            value={bevVehicle.netInvestment}\n                            onTdsChange={onTdsChange(0, \"textfield\", \"number\", \"netInvestment\")}\n                            >\n                                <span slot=\"suffix\">CHF</span>\n                            </TdsTextField>\n                        </TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"diesel\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"number\"\n                            size=\"sm\"\n                            placeholder={uiLanguage.netInvestment}\n                            state={Number.isNaN(iceVehicle.netInvestment) ? \"error\" : \"default\"}\n                            helper={Number.isNaN(iceVehicle.netInvestment) ? uiLanguage.missingData : null}\n                            no-min-width\n                            value={iceVehicle.netInvestment}\n                            onTdsChange={onTdsChange(1, \"textfield\", \"number\", \"netInvestment\")}\n                            >\n                                <span slot=\"suffix\">CHF</span>\n                            </TdsTextField>\n                        </TdsBodyCell>\n                    </TdsTableBodyRow>\n                    <TdsTableBodyRow>\n                        <TdsBodyCell\n                        cell-value={uiLanguage.repairAndMaintanenceCost}\n                        cell-key=\"param\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"bev\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"number\"\n                            size=\"sm\"\n                            placeholder={uiLanguage.repairAndMaintanenceCost}\n                            state={Number.isNaN(bevVehicle.repairAndMaintanance) ? \"error\" : \"default\"}\n                            helper={Number.isNaN(bevVehicle.repairAndMaintanance) ? uiLanguage.missingData : null}\n                            no-min-width\n                            value={bevVehicle.repairAndMaintanenceCost}\n                            onTdsChange={onTdsChange(0, \"textfield\", \"number\", \"repairAndMaintanence\")}\n                            >\n                                <span slot=\"suffix\">CHF</span>\n                            </TdsTextField>\n                        </TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"diesel\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"number\"\n                            size=\"sm\"\n                            placeholder={uiLanguage.repairAndMaintanenceCost}\n                            state={Number.isNaN(iceVehicle.repairAndMaintanence) ? \"error\" : \"default\"}\n                            helper={Number.isNaN(iceVehicle.repairAndMaintanence) ? uiLanguage.missingData : null}\n                            no-min-width\n                            value={iceVehicle.repairAndMaintanenceCost}\n                            onTdsChange={onTdsChange(1, \"textfield\", \"number\", \"repairAndMaintanence\")}\n                            >\n                                <span slot=\"suffix\">CHF</span>\n                            </TdsTextField>\n                        </TdsBodyCell>\n                    </TdsTableBodyRow>\n                    <TdsTableBodyRow>\n                        <TdsBodyCell\n                        cell-value={uiLanguage.chargingInfrastructureCost}\n                        cell-key=\"param\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"bev\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"number\"\n                            size=\"sm\"\n                            placeholder={uiLanguage.chargingInfrastructureCost}\n                            state={Number.isNaN(bevVehicle.chargingInfrastructure) ? \"error\" : \"default\"}\n                            helper={Number.isNaN(bevVehicle.chargingInfrastructure) ? uiLanguage.missingData : null}\n                            no-min-width\n                            value={bevVehicle.chargingInfrastructure}\n                            onTdsChange={onTdsChange(0, \"textfield\", \"number\", \"chargingInfrastructure\")}\n                            >\n                                <span slot=\"suffix\">CHF</span>\n                            </TdsTextField>\n                        </TdsBodyCell>\n                        <TdsBodyCell\n                        cell-key=\"diesel\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"text\"\n                            size=\"sm\"\n                            state=\"default\"\n                            no-min-width\n                            value={uiLanguage.notApplicable}\n                            disabled\n                            >\n                            </TdsTextField>\n                        </TdsBodyCell>\n                    </TdsTableBodyRow>\n                    <TdsTableBodyRow>\n                        <TdsBodyCell\n                        cell-value={uiLanguage.energyCost}\n                        cell-key=\"param\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"bev\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"number\"\n                            size=\"sm\"\n                            placeholder={uiLanguage.energyCost}\n                            state={Number.isNaN(bevVehicle.energyCost) ? \"error\" : \"default\"}\n                            helper={Number.isNaN(bevVehicle.energyCost) ? uiLanguage.missingData : null}\n                            no-min-width\n                            value={bevVehicle.energyCost}\n                            onTdsChange={onTdsChange(0, \"textfield\", \"number\", \"energyCost\")}\n                            >\n                                <span slot=\"suffix\">CHF</span>\n                            </TdsTextField>\n                        </TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"diesel\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"number\"\n                            size=\"sm\"\n                            placeholder={uiLanguage.energyCost}\n                            state={Number.isNaN(iceVehicle.energyCost) ? \"error\" : \"default\"}\n                            helper={Number.isNaN(iceVehicle.energyCost) ? uiLanguage.missingData : null}\n                            no-min-width\n                            value={iceVehicle.energyCost}\n                            onTdsChange={onTdsChange(1, \"textfield\", \"number\", \"energyCost\")}\n                            >\n                                <span slot=\"suffix\">CHF</span>\n                            </TdsTextField>\n                        </TdsBodyCell>\n                    </TdsTableBodyRow>\n                    <TdsTableBodyRow>\n                        <TdsBodyCell\n                        cell-value={uiLanguage.energyConsumption}\n                        cell-key=\"param\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"bev\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"number\"\n                            size=\"sm\"\n                            placeholder={uiLanguage.energyConsumption}\n                            state={Number.isNaN(bevVehicle.energyConsumption) ? \"error\" : \"default\"}\n                            helper={Number.isNaN(bevVehicle.energyConsumption) ? uiLanguage.missingData : null}\n                            no-min-width\n                            value={bevVehicle.energyConsumption}\n                            onTdsChange={onTdsChange(0, \"textfield\", \"number\", \"energyConsumption\")}\n                            >\n                                <span slot=\"suffix\">kWh/100km</span>\n                            </TdsTextField>\n                        </TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"diesel\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        >\n                            <TdsTextField\n                            type=\"number\"\n                            size=\"sm\"\n                            placeholder={uiLanguage.energyConsumption}\n                            state={Number.isNaN(iceVehicle.energyConsumption) ? \"error\" : \"default\"}\n                            helper={Number.isNaN(iceVehicle.energyConsumption) ? uiLanguage.missingData : null}\n                            no-min-width\n                            value={iceVehicle.energyConsumption}\n                            onTdsChange={onTdsChange(1, \"textfield\", \"number\", \"energyConsumption\")}\n                            >\n                                <span slot=\"suffix\">l/100km</span>\n                            </TdsTextField>\n                        </TdsBodyCell>\n                    </TdsTableBodyRow>\n                    {bevVehicle.totalInvestment ? \n                    <>\n                    <TdsTableBodyRow>\n                        <TdsBodyCell\n                        cell-value={uiLanguage.totalCost}\n                        cell-key=\"param\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={bevVehicle.totalInvestment ? Number(bevVehicle.totalInvestment).toLocaleString(\"de-CH\")+uiLanguage.respective+bevVehicle.kmCost+\"/km\" : \"\"}\n                        cell-key=\"bev\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={iceVehicle.totalInvestment ? Number(iceVehicle.totalInvestment).toLocaleString(\"de-CH\")+uiLanguage.respective+iceVehicle.kmCost+\"/km\" : \"\"}\n                        cell-key=\"diesel\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                    </TdsTableBodyRow>\n                    <TdsTableBodyRow>\n                        <TdsBodyCell\n                        cell-value={uiLanguage.payAsYouDrive}\n                        cell-key=\"param\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={bevVehicle.payAsYouDriveRate}\n                        cell-key=\"bev\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                        <TdsBodyCell\n                        cell-value={\"\"}\n                        cell-key=\"diesel\"\n                        disable-padding=\"false\"\n                        text-align=\"left\"\n                        ></TdsBodyCell>\n                    </TdsTableBodyRow> \n                    </> : null}\n                </TdsTableBody>\n            </TdsTable>\n        </div>\n        <div className=\"no-print\">\n            <TdsButton \n            type=\"button\" \n            variant=\"primary\" \n            size=\"lg\" \n            fullbleed\n            disabled={buttonDisabled}\n            text={uiLanguage.calculationButton}\n            onClick={handleCalculations}\n            >\n                <TdsIcon \n                    slot=\"icon\" \n                    size=\"20px\" \n                    name=\"insights\">\n                </TdsIcon>\n            </TdsButton>\n        </div>\n    </div>\n);\n};\n\nexport default UserInputs;","import React from \"react\";\nimport { defineCustomElements, TdsButton, TdsIcon } from '@scania/tegel-react';\nimport \"../App.css\"\n\ndefineCustomElements();\n\nconst Footer = ({ language, savings }) => {\n\n//Translations\nconst translations = {\n    german: {\n        printPage:  \"Drucken\",\n        reloadPage: \"Neu laden\",\n    },\n    french: {\n        printPage:  \"Imprimer\",\n        reloadPage: \"Recharger\",\n    }\n};\nconst uiLanguage = translations[language];\n\nreturn (\n    <div className=\"flexbox-buttons no-print\">\n        { savings ? \n        <div>\n            <TdsButton \n            type=\"button\" \n            variant=\"primary\" \n            size=\"sm\" \n            text={uiLanguage.printPage}\n            onClick={() => window.print()}\n            >\n                <TdsIcon slot=\"icon\" size=\"16px\" name=\"print\"></TdsIcon>\n            </TdsButton>\n        </div>\n        : null }\n        \n        <div>\n            <TdsButton \n            type=\"button\" \n            variant=\"secondary\" \n            size=\"sm\" \n            text={uiLanguage.reloadPage}\n            onClick={() => window.location.reload()}\n            >\n                <TdsIcon slot=\"icon\" size=\"16px\" name=\"refresh\"></TdsIcon>\n            </TdsButton>\n        </div>\n    </div>\n)};\n\nexport default Footer;","/*!\n * @kurkle/color v0.3.4\n * https://github.com/kurkle/color#readme\n * (c) 2024 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n  return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n  return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n  return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n  return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n  return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n  return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n  var len = str.length;\n  var ret;\n  if (str[0] === '#') {\n    if (len === 4 || len === 5) {\n      ret = {\n        r: 255 & map$1[str[1]] * 17,\n        g: 255 & map$1[str[2]] * 17,\n        b: 255 & map$1[str[3]] * 17,\n        a: len === 5 ? map$1[str[4]] * 17 : 255\n      };\n    } else if (len === 7 || len === 9) {\n      ret = {\n        r: map$1[str[1]] << 4 | map$1[str[2]],\n        g: map$1[str[3]] << 4 | map$1[str[4]],\n        b: map$1[str[5]] << 4 | map$1[str[6]],\n        a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n      };\n    }\n  }\n  return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n  var f = isShort(v) ? h1 : h2;\n  return v\n    ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n    : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n  const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n  return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n  const rgb = hsl2rgbn(h, 1, 0.5);\n  let i;\n  if (w + b > 1) {\n    i = 1 / (w + b);\n    w *= i;\n    b *= i;\n  }\n  for (i = 0; i < 3; i++) {\n    rgb[i] *= 1 - w - b;\n    rgb[i] += w;\n  }\n  return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n  if (r === max) {\n    return ((g - b) / d) + (g < b ? 6 : 0);\n  }\n  if (g === max) {\n    return (b - r) / d + 2;\n  }\n  return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n  const range = 255;\n  const r = v.r / range;\n  const g = v.g / range;\n  const b = v.b / range;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const l = (max + min) / 2;\n  let h, s, d;\n  if (max !== min) {\n    d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    h = hueValue(r, g, b, d, max);\n    h = h * 60 + 0.5;\n  }\n  return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n  return (\n    Array.isArray(a)\n      ? f(a[0], a[1], a[2])\n      : f(a, b, c)\n  ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n  return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n  return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n  return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n  return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n  const m = HUE_RE.exec(str);\n  let a = 255;\n  let v;\n  if (!m) {\n    return;\n  }\n  if (m[5] !== v) {\n    a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n  }\n  const h = hue(+m[2]);\n  const p1 = +m[3] / 100;\n  const p2 = +m[4] / 100;\n  if (m[1] === 'hwb') {\n    v = hwb2rgb(h, p1, p2);\n  } else if (m[1] === 'hsv') {\n    v = hsv2rgb(h, p1, p2);\n  } else {\n    v = hsl2rgb(h, p1, p2);\n  }\n  return {\n    r: v[0],\n    g: v[1],\n    b: v[2],\n    a: a\n  };\n}\nfunction rotate(v, deg) {\n  var h = rgb2hsl(v);\n  h[0] = hue(h[0] + deg);\n  h = hsl2rgb(h);\n  v.r = h[0];\n  v.g = h[1];\n  v.b = h[2];\n}\nfunction hslString(v) {\n  if (!v) {\n    return;\n  }\n  const a = rgb2hsl(v);\n  const h = a[0];\n  const s = n2p(a[1]);\n  const l = n2p(a[2]);\n  return v.a < 255\n    ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n    : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n  const unpacked = {};\n  const keys = Object.keys(names$1);\n  const tkeys = Object.keys(map);\n  let i, j, k, ok, nk;\n  for (i = 0; i < keys.length; i++) {\n    ok = nk = keys[i];\n    for (j = 0; j < tkeys.length; j++) {\n      k = tkeys[j];\n      nk = nk.replace(k, map[k]);\n    }\n    k = parseInt(names$1[ok], 16);\n    unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n  }\n  return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n  if (!names) {\n    names = unpack();\n    names.transparent = [0, 0, 0, 0];\n  }\n  const a = names[str.toLowerCase()];\n  return a && {\n    r: a[0],\n    g: a[1],\n    b: a[2],\n    a: a.length === 4 ? a[3] : 255\n  };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n  const m = RGB_RE.exec(str);\n  let a = 255;\n  let r, g, b;\n  if (!m) {\n    return;\n  }\n  if (m[7] !== r) {\n    const v = +m[7];\n    a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n  }\n  r = +m[1];\n  g = +m[3];\n  b = +m[5];\n  r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n  g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n  b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n  return {\n    r: r,\n    g: g,\n    b: b,\n    a: a\n  };\n}\nfunction rgbString(v) {\n  return v && (\n    v.a < 255\n      ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n      : `rgb(${v.r}, ${v.g}, ${v.b})`\n  );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n  const r = from(b2n(rgb1.r));\n  const g = from(b2n(rgb1.g));\n  const b = from(b2n(rgb1.b));\n  return {\n    r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n    g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n    b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n    a: rgb1.a + t * (rgb2.a - rgb1.a)\n  };\n}\n\nfunction modHSL(v, i, ratio) {\n  if (v) {\n    let tmp = rgb2hsl(v);\n    tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n    tmp = hsl2rgb(tmp);\n    v.r = tmp[0];\n    v.g = tmp[1];\n    v.b = tmp[2];\n  }\n}\nfunction clone(v, proto) {\n  return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n  var v = {r: 0, g: 0, b: 0, a: 255};\n  if (Array.isArray(input)) {\n    if (input.length >= 3) {\n      v = {r: input[0], g: input[1], b: input[2], a: 255};\n      if (input.length > 3) {\n        v.a = n2b(input[3]);\n      }\n    }\n  } else {\n    v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n    v.a = n2b(v.a);\n  }\n  return v;\n}\nfunction functionParse(str) {\n  if (str.charAt(0) === 'r') {\n    return rgbParse(str);\n  }\n  return hueParse(str);\n}\nclass Color {\n  constructor(input) {\n    if (input instanceof Color) {\n      return input;\n    }\n    const type = typeof input;\n    let v;\n    if (type === 'object') {\n      v = fromObject(input);\n    } else if (type === 'string') {\n      v = hexParse(input) || nameParse(input) || functionParse(input);\n    }\n    this._rgb = v;\n    this._valid = !!v;\n  }\n  get valid() {\n    return this._valid;\n  }\n  get rgb() {\n    var v = clone(this._rgb);\n    if (v) {\n      v.a = b2n(v.a);\n    }\n    return v;\n  }\n  set rgb(obj) {\n    this._rgb = fromObject(obj);\n  }\n  rgbString() {\n    return this._valid ? rgbString(this._rgb) : undefined;\n  }\n  hexString() {\n    return this._valid ? hexString(this._rgb) : undefined;\n  }\n  hslString() {\n    return this._valid ? hslString(this._rgb) : undefined;\n  }\n  mix(color, weight) {\n    if (color) {\n      const c1 = this.rgb;\n      const c2 = color.rgb;\n      let w2;\n      const p = weight === w2 ? 0.5 : weight;\n      const w = 2 * p - 1;\n      const a = c1.a - c2.a;\n      const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n      w2 = 1 - w1;\n      c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n      c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n      c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n      c1.a = p * c1.a + (1 - p) * c2.a;\n      this.rgb = c1;\n    }\n    return this;\n  }\n  interpolate(color, t) {\n    if (color) {\n      this._rgb = interpolate(this._rgb, color._rgb, t);\n    }\n    return this;\n  }\n  clone() {\n    return new Color(this.rgb);\n  }\n  alpha(a) {\n    this._rgb.a = n2b(a);\n    return this;\n  }\n  clearer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 - ratio;\n    return this;\n  }\n  greyscale() {\n    const rgb = this._rgb;\n    const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n    rgb.r = rgb.g = rgb.b = val;\n    return this;\n  }\n  opaquer(ratio) {\n    const rgb = this._rgb;\n    rgb.a *= 1 + ratio;\n    return this;\n  }\n  negate() {\n    const v = this._rgb;\n    v.r = 255 - v.r;\n    v.g = 255 - v.g;\n    v.b = 255 - v.b;\n    return this;\n  }\n  lighten(ratio) {\n    modHSL(this._rgb, 2, ratio);\n    return this;\n  }\n  darken(ratio) {\n    modHSL(this._rgb, 2, -ratio);\n    return this;\n  }\n  saturate(ratio) {\n    modHSL(this._rgb, 1, ratio);\n    return this;\n  }\n  desaturate(ratio) {\n    modHSL(this._rgb, 1, -ratio);\n    return this;\n  }\n  rotate(deg) {\n    rotate(this._rgb, deg);\n    return this;\n  }\n}\n\nfunction index_esm(input) {\n  return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n  /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n  let id = 0;\n  return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n  return value === null || value === undefined;\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray<T = unknown>(value: unknown): value is T[] {\n  if (Array.isArray && Array.isArray(value)) {\n    return true;\n  }\n  const type = Object.prototype.toString.call(value);\n  if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n  return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value  - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n  return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n  isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n  return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault<T>(value: T | undefined, defaultValue: T) {\n  return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100\n    : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n  typeof value === 'string' && value.endsWith('%') ?\n    parseFloat(value) / 100 * dimension\n    : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback<T extends (this: TA, ...restArgs: unknown[]) => R, TA, R>(\n  fn: T | undefined,\n  args: unknown[],\n  thisArg?: TA\n): R | undefined {\n  if (fn && typeof fn.call === 'function') {\n    return fn.apply(thisArg, args);\n  }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each<T, TA>(\n  loopable: Record<string, T>,\n  fn: (this: TA, v: T, i: string) => void,\n  thisArg?: TA,\n  reverse?: boolean\n): void;\nexport function each<T, TA>(\n  loopable: T[],\n  fn: (this: TA, v: T, i: number) => void,\n  thisArg?: TA,\n  reverse?: boolean\n): void;\nexport function each<T, TA>(\n  loopable: T[] | Record<string, T>,\n  fn: (this: TA, v: T, i: any) => void,\n  thisArg?: TA,\n  reverse?: boolean\n) {\n  let i: number, len: number, keys: string[];\n  if (isArray(loopable)) {\n    len = loopable.length;\n    if (reverse) {\n      for (i = len - 1; i >= 0; i--) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    } else {\n      for (i = 0; i < len; i++) {\n        fn.call(thisArg, loopable[i], i);\n      }\n    }\n  } else if (isObject(loopable)) {\n    keys = Object.keys(loopable);\n    len = keys.length;\n    for (i = 0; i < len; i++) {\n      fn.call(thisArg, loopable[keys[i]], keys[i]);\n    }\n  }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n  let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n  if (!a0 || !a1 || a0.length !== a1.length) {\n    return false;\n  }\n\n  for (i = 0, ilen = a0.length; i < ilen; ++i) {\n    v0 = a0[i];\n    v1 = a1[i];\n\n    if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone<T>(source: T): T {\n  if (isArray(source)) {\n    return source.map(clone) as unknown as T;\n  }\n\n  if (isObject(source)) {\n    const target = Object.create(null);\n    const keys = Object.keys(source);\n    const klen = keys.length;\n    let k = 0;\n\n    for (; k < klen; ++k) {\n      target[keys[k]] = clone(source[keys[k]]);\n    }\n\n    return target;\n  }\n\n  return source;\n}\n\nfunction isValidKey(key: string) {\n  return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n  if (!isValidKey(key)) {\n    return;\n  }\n\n  const tval = target[key];\n  const sval = source[key];\n\n  if (isObject(tval) && isObject(sval)) {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    merge(tval, sval, options);\n  } else {\n    target[key] = clone(sval);\n  }\n}\n\nexport interface MergeOptions {\n  merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge<T>(target: T, source: [], options?: MergeOptions): T;\nexport function merge<T, S1>(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge<T, S1>(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge<T, S1, S2>(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge<T, S1, S2, S3>(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge<T, S1, S2, S3, S4>(\n  target: T,\n  source: [S1, S2, S3, S4],\n  options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge<T>(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge<T>(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n  const sources = isArray(source) ? source : [source];\n  const ilen = sources.length;\n\n  if (!isObject(target)) {\n    return target as AnyObject;\n  }\n\n  options = options || {};\n  const merger = options.merger || _merger;\n  let current: AnyObject;\n\n  for (let i = 0; i < ilen; ++i) {\n    current = sources[i];\n    if (!isObject(current)) {\n      continue;\n    }\n\n    const keys = Object.keys(current);\n    for (let k = 0, klen = keys.length; k < klen; ++k) {\n      merger(keys[k], target, current, options as AnyObject);\n    }\n  }\n\n  return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf<T>(target: T, source: []): T;\nexport function mergeIf<T, S1>(target: T, source: S1): T & S1;\nexport function mergeIf<T, S1>(target: T, source: [S1]): T & S1;\nexport function mergeIf<T, S1, S2>(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf<T, S1, S2, S3>(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf<T, S1, S2, S3, S4>(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf<T>(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf<T>(target: T, source: AnyObject[]): AnyObject {\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  return merge<T>(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n  if (!isValidKey(key)) {\n    return;\n  }\n\n  const tval = target[key];\n  const sval = source[key];\n\n  if (isObject(tval) && isObject(sval)) {\n    mergeIf(tval, sval);\n  } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n    target[key] = clone(sval);\n  }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n  if (value !== undefined) {\n    console.warn(scope + ': \"' + previous +\n      '\" is deprecated. Please use \"' + current + '\" instead');\n  }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n  // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n  '': v => v,\n  // default resolvers\n  x: o => o.x,\n  y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n  const parts = key.split('.');\n  const keys: string[] = [];\n  let tmp = '';\n  for (const part of parts) {\n    tmp += part;\n    if (tmp.endsWith('\\\\')) {\n      tmp = tmp.slice(0, -1) + '.';\n    } else {\n      keys.push(tmp);\n      tmp = '';\n    }\n  }\n  return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n  const keys = _splitKey(key);\n  return obj => {\n    for (const k of keys) {\n      if (k === '') {\n        // For backward compatibility:\n        // Chart.helpers.core resolveObjectKey should break at empty key\n        break;\n      }\n      obj = obj && obj[k];\n    }\n    return obj;\n  };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n  const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n  return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = <T>(a: Set<T>, b: Set<T>) => {\n  if (a.size !== b.size) {\n    return false;\n  }\n\n  for (const item of a) {\n    if (!b.has(item)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n  return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n","import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n  return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n  const roundedRange = Math.round(range);\n  range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n  const niceRange = Math.pow(10, Math.floor(log10(range)));\n  const fraction = range / niceRange;\n  const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n  return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n  const result: number[] = [];\n  const sqrt = Math.sqrt(value);\n  let i: number;\n\n  for (i = 1; i < sqrt; i++) {\n    if (value % i === 0) {\n      result.push(i);\n      result.push(value / i);\n    }\n  }\n  if (sqrt === (sqrt | 0)) { // if value is a square number\n    result.push(sqrt);\n  }\n\n  result.sort((a, b) => a - b).pop();\n  return result;\n}\n\nexport function isNumber(n: unknown): n is number {\n  return !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n  const rounded = Math.round(x);\n  return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n  array: Record<string, number>[],\n  target: { min: number, max: number },\n  property: string\n) {\n  let i: number, ilen: number, value: number;\n\n  for (i = 0, ilen = array.length; i < ilen; i++) {\n    value = array[i][property];\n    if (!isNaN(value)) {\n      target.min = Math.min(target.min, value);\n      target.max = Math.max(target.max, value);\n    }\n  }\n}\n\nexport function toRadians(degrees: number) {\n  return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n  return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n  if (!isFiniteNumber(x)) {\n    return;\n  }\n  let e = 1;\n  let p = 0;\n  while (Math.round(x * e) / e !== x) {\n    e *= 10;\n    p++;\n  }\n  return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n  centrePoint: Point,\n  anglePoint: Point\n) {\n  const distanceFromXCenter = anglePoint.x - centrePoint.x;\n  const distanceFromYCenter = anglePoint.y - centrePoint.y;\n  const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n  let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n  if (angle < (-0.5 * PI)) {\n    angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n  }\n\n  return {\n    angle,\n    distance: radialDistanceFromCenter\n  };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n  return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n  return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n  return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n  const a = _normalizeAngle(angle);\n  const s = _normalizeAngle(start);\n  const e = _normalizeAngle(end);\n  const angleToStart = _normalizeAngle(s - a);\n  const angleToEnd = _normalizeAngle(e - a);\n  const startToAngle = _normalizeAngle(a - s);\n  const endToAngle = _normalizeAngle(a - e);\n  return a === s || a === e || (sameAngleIsFullCircle && s === e)\n    || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n  return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n  return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n  return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n","import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n  table: number[],\n  value: number,\n  cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup<T>(\n  table: T[],\n  value: number,\n  cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n  table: unknown[],\n  value: number,\n  cmp?: (value: number) => boolean\n) {\n  cmp = cmp || ((index) => table[index] < value);\n  let hi = table.length - 1;\n  let lo = 0;\n  let mid: number;\n\n  while (hi - lo > 1) {\n    mid = (lo + hi) >> 1;\n    if (cmp(mid)) {\n      lo = mid;\n    } else {\n      hi = mid;\n    }\n  }\n\n  return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n  table: Record<string, number>[],\n  key: string,\n  value: number,\n  last?: boolean\n) =>\n  _lookup(table, value, last\n    ? index => {\n      const ti = table[index][key];\n      return ti < value || ti === value && table[index + 1][key] === value;\n    }\n    : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n  table: Record<string, number>[],\n  key: string,\n  value: number\n) =>\n  _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n  let start = 0;\n  let end = values.length;\n\n  while (start < end && values[start] < min) {\n    start++;\n  }\n  while (end > start && values[end - 1] > max) {\n    end--;\n  }\n\n  return start > 0 || end < values.length\n    ? values.slice(start, end)\n    : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener<T> {\n  _onDataPush?(...item: T[]): void;\n  _onDataPop?(): void;\n  _onDataShift?(): void;\n  _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n  _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;\nexport function listenArrayEvents(array, listener) {\n  if (array._chartjs) {\n    array._chartjs.listeners.push(listener);\n    return;\n  }\n\n  Object.defineProperty(array, '_chartjs', {\n    configurable: true,\n    enumerable: false,\n    value: {\n      listeners: [listener]\n    }\n  });\n\n  arrayEvents.forEach((key) => {\n    const method = '_onData' + _capitalize(key);\n    const base = array[key];\n\n    Object.defineProperty(array, key, {\n      configurable: true,\n      enumerable: false,\n      value(...args) {\n        const res = base.apply(this, args);\n\n        array._chartjs.listeners.forEach((object) => {\n          if (typeof object[method] === 'function') {\n            object[method](...args);\n          }\n        });\n\n        return res;\n      }\n    });\n  });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents<T>(array: T[], listener: ArrayListener<T>): void;\nexport function unlistenArrayEvents(array, listener) {\n  const stub = array._chartjs;\n  if (!stub) {\n    return;\n  }\n\n  const listeners = stub.listeners;\n  const index = listeners.indexOf(listener);\n  if (index !== -1) {\n    listeners.splice(index, 1);\n  }\n\n  if (listeners.length > 0) {\n    return;\n  }\n\n  arrayEvents.forEach((key) => {\n    delete array[key];\n  });\n\n  delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique<T>(items: T[]) {\n  const set = new Set<T>(items);\n\n  if (set.size === items.length) {\n    return items;\n  }\n\n  return Array.from(set);\n}\n","import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n  return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n  if (typeof window === 'undefined') {\n    return function(callback) {\n      return callback();\n    };\n  }\n  return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled<TArgs extends Array<any>>(\n  fn: (...args: TArgs) => void,\n  thisArg: any,\n) {\n  let argsToUse = [] as TArgs;\n  let ticking = false;\n\n  return function(...args: TArgs) {\n    // Save the args for use later\n    argsToUse = args;\n    if (!ticking) {\n      ticking = true;\n      requestAnimFrame.call(window, () => {\n        ticking = false;\n        fn.apply(thisArg, argsToUse);\n      });\n    }\n  };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce<TArgs extends Array<any>>(fn: (...args: TArgs) => void, delay: number) {\n  let timeout;\n  return function(...args: TArgs) {\n    if (delay) {\n      clearTimeout(timeout);\n      timeout = setTimeout(fn, delay, args);\n    } else {\n      fn.apply(this, args);\n    }\n    return delay;\n  };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n  const check = rtl ? 'left' : 'right';\n  return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n  const pointCount = points.length;\n\n  let start = 0;\n  let count = pointCount;\n\n  if (meta._sorted) {\n    const {iScale, _parsed} = meta;\n    const axis = iScale.axis;\n    const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n    if (minDefined) {\n      start = _limitValue(Math.min(\n        // @ts-expect-error Need to type _parsed\n        _lookupByKey(_parsed, axis, min).lo,\n        // @ts-expect-error Need to fix types on _lookupByKey\n        animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n      0, pointCount - 1);\n    }\n    if (maxDefined) {\n      count = _limitValue(Math.max(\n        // @ts-expect-error Need to type _parsed\n        _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n        // @ts-expect-error Need to fix types on _lookupByKey\n        animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n      start, pointCount) - start;\n    } else {\n      count = pointCount - start;\n    }\n  }\n\n  return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n  const {xScale, yScale, _scaleRanges} = meta;\n  const newRanges = {\n    xmin: xScale.min,\n    xmax: xScale.max,\n    ymin: yScale.min,\n    ymax: yScale.max\n  };\n  if (!_scaleRanges) {\n    meta._scaleRanges = newRanges;\n    return true;\n  }\n  const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n  Object.assign(_scaleRanges, newRanges);\n  return changed;\n}\n","import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n  linear: (t: number) => t,\n\n  easeInQuad: (t: number) => t * t,\n\n  easeOutQuad: (t: number) => -t * (t - 2),\n\n  easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t\n    : -0.5 * ((--t) * (t - 2) - 1),\n\n  easeInCubic: (t: number) => t * t * t,\n\n  easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n  easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t\n    : 0.5 * ((t -= 2) * t * t + 2),\n\n  easeInQuart: (t: number) => t * t * t * t,\n\n  easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n  easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t\n    : -0.5 * ((t -= 2) * t * t * t - 2),\n\n  easeInQuint: (t: number) => t * t * t * t * t,\n\n  easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n  easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n    ? 0.5 * t * t * t * t * t\n    : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n  easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n  easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n  easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n  easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n  easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n  easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n    ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n    : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n  easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n  easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n  easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n    ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n    : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n  easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n  easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n  easeInOutElastic(t: number) {\n    const s = 0.1125;\n    const p = 0.45;\n    return atEdge(t) ? t :\n      t < 0.5\n        ? 0.5 * elasticIn(t * 2, s, p)\n        : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n  },\n\n  easeInBack(t: number) {\n    const s = 1.70158;\n    return t * t * ((s + 1) * t - s);\n  },\n\n  easeOutBack(t: number) {\n    const s = 1.70158;\n    return (t -= 1) * t * ((s + 1) * t + s) + 1;\n  },\n\n  easeInOutBack(t: number) {\n    let s = 1.70158;\n    if ((t /= 0.5) < 1) {\n      return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n    }\n    return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n  },\n\n  easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n  easeOutBounce(t: number) {\n    const m = 7.5625;\n    const d = 2.75;\n    if (t < (1 / d)) {\n      return m * t * t;\n    }\n    if (t < (2 / d)) {\n      return m * (t -= (1.5 / d)) * t + 0.75;\n    }\n    if (t < (2.5 / d)) {\n      return m * (t -= (2.25 / d)) * t + 0.9375;\n    }\n    return m * (t -= (2.625 / d)) * t + 0.984375;\n  },\n\n  easeInOutBounce: (t: number) => (t < 0.5)\n    ? effects.easeInBounce(t * 2) * 0.5\n    : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n","import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n  if (value && typeof value === 'object') {\n    const type = value.toString();\n    return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n  }\n\n  return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n  value:\n  | string\n  | { r: number; g: number; b: number; a: number }\n  | [number, number, number]\n  | [number, number, number, number]\n): Color;\nexport function color(value) {\n  return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n  return isPatternOrGradient(value)\n    ? value\n    : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n","const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n  defaults.set('animation', {\n    delay: undefined,\n    duration: 1000,\n    easing: 'easeOutQuart',\n    fn: undefined,\n    from: undefined,\n    loop: undefined,\n    to: undefined,\n    type: undefined,\n  });\n\n  defaults.describe('animation', {\n    _fallback: false,\n    _indexable: false,\n    _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n  });\n\n  defaults.set('animations', {\n    colors: {\n      type: 'color',\n      properties: colors\n    },\n    numbers: {\n      type: 'number',\n      properties: numbers\n    },\n  });\n\n  defaults.describe('animations', {\n    _fallback: 'animation',\n  });\n\n  defaults.set('transitions', {\n    active: {\n      animation: {\n        duration: 400\n      }\n    },\n    resize: {\n      animation: {\n        duration: 0\n      }\n    },\n    show: {\n      animations: {\n        colors: {\n          from: 'transparent'\n        },\n        visible: {\n          type: 'boolean',\n          duration: 0 // show immediately\n        },\n      }\n    },\n    hide: {\n      animations: {\n        colors: {\n          to: 'transparent'\n        },\n        visible: {\n          type: 'boolean',\n          easing: 'linear',\n          fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n        },\n      }\n    }\n  });\n}\n","\nconst intlCache = new Map<string, Intl.NumberFormat>();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n  options = options || {};\n  const cacheKey = locale + JSON.stringify(options);\n  let formatter = intlCache.get(cacheKey);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, options);\n    intlCache.set(cacheKey, formatter);\n  }\n  return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n  return getNumberFormat(locale, options).format(num);\n}\n","import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n  /**\n   * Formatter for value labels\n   * @method Chart.Ticks.formatters.values\n   * @param value the value to display\n   * @return {string|string[]} the label to display\n   */\n  values(value) {\n    return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n  },\n\n  /**\n   * Formatter for numeric ticks\n   * @method Chart.Ticks.formatters.numeric\n   * @param tickValue {number} the value to be formatted\n   * @param index {number} the position of the tickValue parameter in the ticks array\n   * @param ticks {object[]} the list of ticks being converted\n   * @return {string} string representation of the tickValue parameter\n   */\n  numeric(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0'; // never show decimal places for 0\n    }\n\n    const locale = this.chart.options.locale;\n    let notation;\n    let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n    if (ticks.length > 1) {\n      // all ticks are small or there huge numbers; use scientific notation\n      const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n      if (maxTick < 1e-4 || maxTick > 1e+15) {\n        notation = 'scientific';\n      }\n\n      delta = calculateDelta(tickValue, ticks);\n    }\n\n    const logDelta = log10(Math.abs(delta));\n\n    // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n    // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n    // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n    //\n    // toFixed has a max of 20 decimal places\n    const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n    const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n    Object.assign(options, this.options.ticks.format);\n\n    return formatNumber(tickValue, locale, options);\n  },\n\n\n  /**\n   * Formatter for logarithmic ticks\n   * @method Chart.Ticks.formatters.logarithmic\n   * @param tickValue {number} the value to be formatted\n   * @param index {number} the position of the tickValue parameter in the ticks array\n   * @param ticks {object[]} the list of ticks being converted\n   * @return {string} string representation of the tickValue parameter\n   */\n  logarithmic(tickValue, index, ticks) {\n    if (tickValue === 0) {\n      return '0';\n    }\n    const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n    if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n      return formatters.numeric.call(this, tickValue, index, ticks);\n    }\n    return '';\n  }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n  // Figure out how many digits to show\n  // The space between the first two ticks might be smaller than normal spacing\n  let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n  // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n  if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n    // not an integer\n    delta = tickValue - Math.floor(tickValue);\n  }\n  return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n","import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n  if (!key) {\n    return node;\n  }\n  const keys = key.split('.');\n  for (let i = 0, n = keys.length; i < n; ++i) {\n    const k = keys[i];\n    node = node[k] || (node[k] = Object.create(null));\n  }\n  return node;\n}\n\nfunction set(root, scope, values) {\n  if (typeof scope === 'string') {\n    return merge(getScope(root, scope), values);\n  }\n  return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n  constructor(_descriptors, _appliers) {\n    this.animation = undefined;\n    this.backgroundColor = 'rgba(0,0,0,0.1)';\n    this.borderColor = 'rgba(0,0,0,0.1)';\n    this.color = '#666';\n    this.datasets = {};\n    this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n    this.elements = {};\n    this.events = [\n      'mousemove',\n      'mouseout',\n      'click',\n      'touchstart',\n      'touchmove'\n    ];\n    this.font = {\n      family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n      size: 12,\n      style: 'normal',\n      lineHeight: 1.2,\n      weight: null\n    };\n    this.hover = {};\n    this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n    this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n    this.hoverColor = (ctx, options) => getHoverColor(options.color);\n    this.indexAxis = 'x';\n    this.interaction = {\n      mode: 'nearest',\n      intersect: true,\n      includeInvisible: false\n    };\n    this.maintainAspectRatio = true;\n    this.onHover = null;\n    this.onClick = null;\n    this.parsing = true;\n    this.plugins = {};\n    this.responsive = true;\n    this.scale = undefined;\n    this.scales = {};\n    this.showLine = true;\n    this.drawActiveElementsOnTop = true;\n\n    this.describe(_descriptors);\n    this.apply(_appliers);\n  }\n\n  /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n  set(scope, values) {\n    return set(this, scope, values);\n  }\n\n  /**\n\t * @param {string} scope\n\t */\n  get(scope) {\n    return getScope(this, scope);\n  }\n\n  /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n  describe(scope, values) {\n    return set(descriptors, scope, values);\n  }\n\n  override(scope, values) {\n    return set(overrides, scope, values);\n  }\n\n  /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t *   - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n  route(scope, name, targetScope, targetName) {\n    const scopeObject = getScope(this, scope);\n    const targetScopeObject = getScope(this, targetScope);\n    const privateName = '_' + name;\n\n    Object.defineProperties(scopeObject, {\n      // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n      [privateName]: {\n        value: scopeObject[name],\n        writable: true\n      },\n      // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n      [name]: {\n        enumerable: true,\n        get() {\n          const local = this[privateName];\n          const target = targetScopeObject[targetName];\n          if (isObject(local)) {\n            return Object.assign({}, target, local);\n          }\n          return valueOrDefault(local, target);\n        },\n        set(value) {\n          this[privateName] = value;\n        }\n      }\n    });\n  }\n\n  apply(appliers) {\n    appliers.forEach((apply) => apply(this));\n  }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n  _scriptable: (name) => !name.startsWith('on'),\n  _indexable: (name) => name !== 'events',\n  hover: {\n    _fallback: 'interaction'\n  },\n  interaction: {\n    _scriptable: false,\n    _indexable: false,\n  }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n","export function applyLayoutsDefaults(defaults) {\n  defaults.set('layout', {\n    autoPadding: true,\n    padding: {\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0\n    }\n  });\n}\n","import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n  defaults.set('scale', {\n    display: true,\n    offset: false,\n    reverse: false,\n    beginAtZero: false,\n\n    /**\n     * Scale boundary strategy (bypassed by min/max time options)\n     * - `data`: make sure data are fully visible, ticks outside are removed\n     * - `ticks`: make sure ticks are fully visible, data outside are truncated\n     * @see https://github.com/chartjs/Chart.js/pull/4556\n     * @since 3.0.0\n     */\n    bounds: 'ticks',\n\n    clip: true,\n\n    /**\n     * Addition grace added to max and reduced from min data value.\n     * @since 3.0.0\n     */\n    grace: 0,\n\n    // grid line settings\n    grid: {\n      display: true,\n      lineWidth: 1,\n      drawOnChartArea: true,\n      drawTicks: true,\n      tickLength: 8,\n      tickWidth: (_ctx, options) => options.lineWidth,\n      tickColor: (_ctx, options) => options.color,\n      offset: false,\n    },\n\n    border: {\n      display: true,\n      dash: [],\n      dashOffset: 0.0,\n      width: 1\n    },\n\n    // scale title\n    title: {\n      // display property\n      display: false,\n\n      // actual label\n      text: '',\n\n      // top/bottom padding\n      padding: {\n        top: 4,\n        bottom: 4\n      }\n    },\n\n    // label settings\n    ticks: {\n      minRotation: 0,\n      maxRotation: 50,\n      mirror: false,\n      textStrokeWidth: 0,\n      textStrokeColor: '',\n      padding: 3,\n      display: true,\n      autoSkip: true,\n      autoSkipPadding: 3,\n      labelOffset: 0,\n      // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n      callback: Ticks.formatters.values,\n      minor: {},\n      major: {},\n      align: 'center',\n      crossAlign: 'near',\n\n      showLabelBackdrop: false,\n      backdropColor: 'rgba(255, 255, 255, 0.75)',\n      backdropPadding: 2,\n    }\n  });\n\n  defaults.route('scale.ticks', 'color', '', 'color');\n  defaults.route('scale.grid', 'color', '', 'borderColor');\n  defaults.route('scale.border', 'color', '', 'borderColor');\n  defaults.route('scale.title', 'color', '', 'color');\n\n  defaults.describe('scale', {\n    _fallback: false,\n    _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n    _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n  });\n\n  defaults.describe('scales', {\n    _fallback: 'scale',\n  });\n\n  defaults.describe('scale.ticks', {\n    _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n    _indexable: (name) => name !== 'backdropPadding',\n  });\n}\n","import type {\n  Chart,\n  Point,\n  FontSpec,\n  CanvasFontSpec,\n  PointStyle,\n  RenderTextOpts,\n  BackdropOptions\n} from '../types/index.js';\nimport type {\n  TRBL,\n  SplinePoint,\n  RoundedRect,\n  TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n  if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n    return null;\n  }\n\n  return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n  ctx: CanvasRenderingContext2D,\n  data: Record<string, number>,\n  gc: string[],\n  longest: number,\n  string: string\n) {\n  let textWidth = data[string];\n  if (!textWidth) {\n    textWidth = data[string] = ctx.measureText(string).width;\n    gc.push(string);\n  }\n  if (textWidth > longest) {\n    longest = textWidth;\n  }\n  return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n  ctx: CanvasRenderingContext2D,\n  font: string,\n  arrayOfThings: Things,\n  cache?: {data?: Record<string, number>, garbageCollect?: string[], font?: string}\n) {\n  cache = cache || {};\n  let data = cache.data = cache.data || {};\n  let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n  if (cache.font !== font) {\n    data = cache.data = {};\n    gc = cache.garbageCollect = [];\n    cache.font = font;\n  }\n\n  ctx.save();\n\n  ctx.font = font;\n  let longest = 0;\n  const ilen = arrayOfThings.length;\n  let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n  for (i = 0; i < ilen; i++) {\n    thing = arrayOfThings[i];\n\n    // Undefined strings and arrays should not be measured\n    if (thing !== undefined && thing !== null && !isArray(thing)) {\n      longest = _measureText(ctx, data, gc, longest, thing);\n    } else if (isArray(thing)) {\n      // if it is an array lets measure each element\n      // to do maybe simplify this function a bit so we can do this more recursively?\n      for (j = 0, jlen = thing.length; j < jlen; j++) {\n        nestedThing = thing[j];\n        // Undefined strings and arrays should not be measured\n        if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n          longest = _measureText(ctx, data, gc, longest, nestedThing);\n        }\n      }\n    }\n  }\n\n  ctx.restore();\n\n  const gcLen = gc.length / 2;\n  if (gcLen > arrayOfThings.length) {\n    for (i = 0; i < gcLen; i++) {\n      delete data[gc[i]];\n    }\n    gc.splice(0, gcLen);\n  }\n  return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n  const devicePixelRatio = chart.currentDevicePixelRatio;\n  const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n  return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n  if (!ctx && !canvas) {\n    return;\n  }\n\n  ctx = ctx || canvas.getContext('2d');\n\n  ctx.save();\n  // canvas.width and canvas.height do not consider the canvas transform,\n  // while clearRect does\n  ctx.resetTransform();\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\n  ctx.restore();\n}\n\nexport interface DrawPointOptions {\n  pointStyle: PointStyle;\n  rotation?: number;\n  radius: number;\n  borderWidth: number;\n}\n\nexport function drawPoint(\n  ctx: CanvasRenderingContext2D,\n  options: DrawPointOptions,\n  x: number,\n  y: number\n) {\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n  ctx: CanvasRenderingContext2D,\n  options: DrawPointOptions,\n  x: number,\n  y: number,\n  w: number\n) {\n  let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n  const style = options.pointStyle;\n  const rotation = options.rotation;\n  const radius = options.radius;\n  let rad = (rotation || 0) * RAD_PER_DEG;\n\n  if (style && typeof style === 'object') {\n    type = style.toString();\n    if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.rotate(rad);\n      ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n      ctx.restore();\n      return;\n    }\n  }\n\n  if (isNaN(radius) || radius <= 0) {\n    return;\n  }\n\n  ctx.beginPath();\n\n  switch (style) {\n  // Default includes circle\n    default:\n      if (w) {\n        ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n      } else {\n        ctx.arc(x, y, radius, 0, TAU);\n      }\n      ctx.closePath();\n      break;\n    case 'triangle':\n      width = w ? w / 2 : radius;\n      ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n      rad += TWO_THIRDS_PI;\n      ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n      rad += TWO_THIRDS_PI;\n      ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n      ctx.closePath();\n      break;\n    case 'rectRounded':\n    // NOTE: the rounded rect implementation changed to use `arc` instead of\n    // `quadraticCurveTo` since it generates better results when rect is\n    // almost a circle. 0.516 (instead of 0.5) produces results with visually\n    // closer proportion to the previous impl and it is inscribed in the\n    // circle with `radius`. For more details, see the following PRs:\n    // https://github.com/chartjs/Chart.js/issues/5597\n    // https://github.com/chartjs/Chart.js/issues/5858\n      cornerRadius = radius * 0.516;\n      size = radius - cornerRadius;\n      xOffset = Math.cos(rad + QUARTER_PI) * size;\n      xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n      yOffset = Math.sin(rad + QUARTER_PI) * size;\n      yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n      ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n      ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n      ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n      ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n      ctx.closePath();\n      break;\n    case 'rect':\n      if (!rotation) {\n        size = Math.SQRT1_2 * radius;\n        width = w ? w / 2 : size;\n        ctx.rect(x - width, y - size, 2 * width, 2 * size);\n        break;\n      }\n      rad += QUARTER_PI;\n    /* falls through */\n    case 'rectRot':\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      ctx.closePath();\n      break;\n    case 'crossRot':\n      rad += QUARTER_PI;\n    /* falls through */\n    case 'cross':\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.moveTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      break;\n    case 'star':\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.moveTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      rad += QUARTER_PI;\n      xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n      xOffset = Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n      ctx.moveTo(x - xOffsetW, y - yOffset);\n      ctx.lineTo(x + xOffsetW, y + yOffset);\n      ctx.moveTo(x + yOffsetW, y - xOffset);\n      ctx.lineTo(x - yOffsetW, y + xOffset);\n      break;\n    case 'line':\n      xOffset = w ? w / 2 : Math.cos(rad) * radius;\n      yOffset = Math.sin(rad) * radius;\n      ctx.moveTo(x - xOffset, y - yOffset);\n      ctx.lineTo(x + xOffset, y + yOffset);\n      break;\n    case 'dash':\n      ctx.moveTo(x, y);\n      ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n      break;\n    case false:\n      ctx.closePath();\n      break;\n  }\n\n  ctx.fill();\n  if (options.borderWidth > 0) {\n    ctx.stroke();\n  }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n  point: Point,\n  area: TRBL,\n  margin?: number\n) {\n  margin = margin || 0.5; // margin - default is to match rounded decimals\n\n  return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n  ctx.save();\n  ctx.beginPath();\n  ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n  ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n  ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n  ctx: CanvasRenderingContext2D,\n  previous: Point,\n  target: Point,\n  flip?: boolean,\n  mode?: string\n) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  if (mode === 'middle') {\n    const midpoint = (previous.x + target.x) / 2.0;\n    ctx.lineTo(midpoint, previous.y);\n    ctx.lineTo(midpoint, target.y);\n  } else if (mode === 'after' !== !!flip) {\n    ctx.lineTo(previous.x, target.y);\n  } else {\n    ctx.lineTo(target.x, previous.y);\n  }\n  ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n  ctx: CanvasRenderingContext2D,\n  previous: SplinePoint,\n  target: SplinePoint,\n  flip?: boolean\n) {\n  if (!previous) {\n    return ctx.lineTo(target.x, target.y);\n  }\n  ctx.bezierCurveTo(\n    flip ? previous.cp1x : previous.cp2x,\n    flip ? previous.cp1y : previous.cp2y,\n    flip ? target.cp2x : target.cp1x,\n    flip ? target.cp2y : target.cp1y,\n    target.x,\n    target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n  if (opts.translation) {\n    ctx.translate(opts.translation[0], opts.translation[1]);\n  }\n\n  if (!isNullOrUndef(opts.rotation)) {\n    ctx.rotate(opts.rotation);\n  }\n\n  if (opts.color) {\n    ctx.fillStyle = opts.color;\n  }\n\n  if (opts.textAlign) {\n    ctx.textAlign = opts.textAlign;\n  }\n\n  if (opts.textBaseline) {\n    ctx.textBaseline = opts.textBaseline;\n  }\n}\n\nfunction decorateText(\n  ctx: CanvasRenderingContext2D,\n  x: number,\n  y: number,\n  line: string,\n  opts: RenderTextOpts\n) {\n  if (opts.strikethrough || opts.underline) {\n    /**\n     * Now that IE11 support has been dropped, we can use more\n     * of the TextMetrics object. The actual bounding boxes\n     * are unflagged in Chrome, Firefox, Edge, and Safari so they\n     * can be safely used.\n     * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n     */\n    const metrics = ctx.measureText(line);\n    const left = x - metrics.actualBoundingBoxLeft;\n    const right = x + metrics.actualBoundingBoxRight;\n    const top = y - metrics.actualBoundingBoxAscent;\n    const bottom = y + metrics.actualBoundingBoxDescent;\n    const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n    ctx.strokeStyle = ctx.fillStyle;\n    ctx.beginPath();\n    ctx.lineWidth = opts.decorationWidth || 2;\n    ctx.moveTo(left, yDecoration);\n    ctx.lineTo(right, yDecoration);\n    ctx.stroke();\n  }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n  const oldColor = ctx.fillStyle;\n\n  ctx.fillStyle = opts.color as string;\n  ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n  ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n  ctx: CanvasRenderingContext2D,\n  text: string | string[],\n  x: number,\n  y: number,\n  font: CanvasFontSpec,\n  opts: RenderTextOpts = {}\n) {\n  const lines = isArray(text) ? text : [text];\n  const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n  let i: number, line: string;\n\n  ctx.save();\n  ctx.font = font.string;\n  setRenderOpts(ctx, opts);\n\n  for (i = 0; i < lines.length; ++i) {\n    line = lines[i];\n\n    if (opts.backdrop) {\n      drawBackdrop(ctx, opts.backdrop);\n    }\n\n    if (stroke) {\n      if (opts.strokeColor) {\n        ctx.strokeStyle = opts.strokeColor;\n      }\n\n      if (!isNullOrUndef(opts.strokeWidth)) {\n        ctx.lineWidth = opts.strokeWidth;\n      }\n\n      ctx.strokeText(line, x, y, opts.maxWidth);\n    }\n\n    ctx.fillText(line, x, y, opts.maxWidth);\n    decorateText(ctx, x, y, line, opts);\n\n    y += Number(font.lineHeight);\n  }\n\n  ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n  ctx: CanvasRenderingContext2D,\n  rect: RoundedRect & { radius: TRBLCorners }\n) {\n  const {x, y, w, h, radius} = rect;\n\n  // top left arc\n  ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n  // line from top left to bottom left\n  ctx.lineTo(x, y + h - radius.bottomLeft);\n\n  // bottom left arc\n  ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n  // line from bottom left to bottom right\n  ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n  // bottom right arc\n  ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n  // line from bottom right to top right\n  ctx.lineTo(x + w, y + radius.topRight);\n\n  // top right arc\n  ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n  // line from top right to top left\n  ctx.lineTo(x + radius.topLeft, y);\n}\n","import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n  const matches = ('' + value).match(LINE_HEIGHT);\n  if (!matches || matches[1] === 'normal') {\n    return size * 1.2;\n  }\n\n  value = +matches[2];\n\n  switch (matches[3]) {\n    case 'px':\n      return value;\n    case '%':\n      value /= 100;\n      break;\n    default:\n      break;\n  }\n\n  return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps<K extends string>(value: number | Record<K, number>, props: K[]): Record<K, number>;\nexport function _readValueToProps<K extends string, T extends string>(value: number | Record<K & T, number>, props: Record<T, K>): Record<T, number>;\nexport function _readValueToProps(value: number | Record<string, number>, props: string[] | Record<string, string>) {\n  const ret = {};\n  const objProps = isObject(props);\n  const keys = objProps ? Object.keys(props) : props;\n  const read = isObject(value)\n    ? objProps\n      ? prop => valueOrDefault(value[prop], value[props[prop]])\n      : prop => value[prop]\n    : () => value;\n\n  for (const prop of keys) {\n    ret[prop] = numberOrZero(read(prop));\n  }\n  return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n *  else, if an object, use defined properties and sets undefined ones to 0.\n *  x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n  return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n *  else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n  return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n *  else, if an object, use defined properties and sets undefined ones to 0.\n *  x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n  const obj = toTRBL(value) as ChartArea;\n\n  obj.width = obj.left + obj.right;\n  obj.height = obj.top + obj.bottom;\n\n  return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial<FontSpec>, fallback?: Partial<FontSpec>) {\n  options = options || {};\n  fallback = fallback || defaults.font as FontSpec;\n\n  let size = valueOrDefault(options.size, fallback.size);\n\n  if (typeof size === 'string') {\n    size = parseInt(size, 10);\n  }\n  let style = valueOrDefault(options.style, fallback.style);\n  if (style && !('' + style).match(FONT_STYLE)) {\n    console.warn('Invalid font style specified: \"' + style + '\"');\n    style = undefined;\n  }\n\n  const font = {\n    family: valueOrDefault(options.family, fallback.family),\n    lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n    size,\n    style,\n    weight: valueOrDefault(options.weight, fallback.weight),\n    string: ''\n  };\n\n  font.string = toFontString(font);\n  return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array<unknown>, context?: object, index?: number, info?: { cacheable: boolean }) {\n  let cacheable = true;\n  let i: number, ilen: number, value: unknown;\n\n  for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n    value = inputs[i];\n    if (value === undefined) {\n      continue;\n    }\n    if (context !== undefined && typeof value === 'function') {\n      value = value(context);\n      cacheable = false;\n    }\n    if (index !== undefined && isArray(value)) {\n      value = value[index % value.length];\n      cacheable = false;\n    }\n    if (value !== undefined) {\n      if (info && !cacheable) {\n        info.cacheable = false;\n      }\n      return value;\n    }\n  }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n  const {min, max} = minmax;\n  const change = toDimension(grace, (max - min) / 2);\n  const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n  return {\n    min: keepZero(min, -Math.abs(change)),\n    max: keepZero(max, change)\n  };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext<T extends object>(parentContext: null, context: T): T;\nexport function createContext<T extends object, P extends T>(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n  return Object.assign(Object.create(parentContext), context);\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n  ResolverObjectKey,\n  ResolverCache,\n  ResolverProxy,\n  DescriptorDefaults,\n  Descriptor,\n  ContextCache,\n  ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n  T extends AnyObject[] = AnyObject[],\n  R extends AnyObject[] = T\n>(\n  scopes: T,\n  prefixes = [''],\n  rootScopes?: R,\n  fallback?: ResolverObjectKey,\n  getTarget = () => scopes[0]\n) {\n  const finalRootScopes = rootScopes || scopes;\n  if (typeof fallback === 'undefined') {\n    fallback = _resolve('_fallback', scopes);\n  }\n  const cache: ResolverCache<T, R> = {\n    [Symbol.toStringTag]: 'Object',\n    _cacheable: true,\n    _scopes: scopes,\n    _rootScopes: finalRootScopes,\n    _fallback: fallback,\n    _getTarget: getTarget,\n    override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n  };\n  return new Proxy(cache, {\n    /**\n     * A trap for the delete operator.\n     */\n    deleteProperty(target, prop: string) {\n      delete target[prop]; // remove from cache\n      delete target._keys; // remove cached keys\n      delete scopes[0][prop]; // remove from top level scope\n      return true;\n    },\n\n    /**\n     * A trap for getting property values.\n     */\n    get(target, prop: string) {\n      return _cached(target, prop,\n        () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyDescriptor.\n     * Also used by Object.hasOwnProperty.\n     */\n    getOwnPropertyDescriptor(target, prop) {\n      return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n    },\n\n    /**\n     * A trap for Object.getPrototypeOf.\n     */\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(scopes[0]);\n    },\n\n    /**\n     * A trap for the in operator.\n     */\n    has(target, prop: string) {\n      return getKeysFromAllScopes(target).includes(prop);\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n     */\n    ownKeys(target) {\n      return getKeysFromAllScopes(target);\n    },\n\n    /**\n     * A trap for setting property values.\n     */\n    set(target, prop: string, value) {\n      const storage = target._storage || (target._storage = getTarget());\n      target[prop] = storage[prop] = value; // set to top level scope + cache\n      delete target._keys; // remove cached keys\n      return true;\n    }\n  }) as ResolverProxy<T, R>;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n  T extends AnyObject[] = AnyObject[],\n  R extends AnyObject[] = T\n>(\n  proxy: ResolverProxy<T, R>,\n  context: AnyObject,\n  subProxy?: ResolverProxy<T, R>,\n  descriptorDefaults?: DescriptorDefaults\n) {\n  const cache: ContextCache<T, R> = {\n    _cacheable: false,\n    _proxy: proxy,\n    _context: context,\n    _subProxy: subProxy,\n    _stack: new Set(),\n    _descriptors: _descriptors(proxy, descriptorDefaults),\n    setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n    override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n  };\n  return new Proxy(cache, {\n    /**\n     * A trap for the delete operator.\n     */\n    deleteProperty(target, prop) {\n      delete target[prop]; // remove from cache\n      delete proxy[prop]; // remove from proxy\n      return true;\n    },\n\n    /**\n     * A trap for getting property values.\n     */\n    get(target, prop: string, receiver) {\n      return _cached(target, prop,\n        () => _resolveWithContext(target, prop, receiver));\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyDescriptor.\n     * Also used by Object.hasOwnProperty.\n     */\n    getOwnPropertyDescriptor(target, prop) {\n      return target._descriptors.allKeys\n        ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n        : Reflect.getOwnPropertyDescriptor(proxy, prop);\n    },\n\n    /**\n     * A trap for Object.getPrototypeOf.\n     */\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(proxy);\n    },\n\n    /**\n     * A trap for the in operator.\n     */\n    has(target, prop) {\n      return Reflect.has(proxy, prop);\n    },\n\n    /**\n     * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n     */\n    ownKeys() {\n      return Reflect.ownKeys(proxy);\n    },\n\n    /**\n     * A trap for setting property values.\n     */\n    set(target, prop, value) {\n      proxy[prop] = value; // set to proxy\n      delete target[prop]; // remove from cache\n      return true;\n    }\n  }) as ContextProxy<T, R>;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n  proxy: ResolverCache,\n  defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n  const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n  return {\n    allKeys: _allKeys,\n    scriptable: _scriptable,\n    indexable: _indexable,\n    isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n    isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n  };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n  (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n  target: AnyObject,\n  prop: string,\n  resolve: () => unknown\n) {\n  if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n    return target[prop];\n  }\n\n  const value = resolve();\n  // cache the resolved value\n  target[prop] = value;\n  return value;\n}\n\nfunction _resolveWithContext(\n  target: ContextCache,\n  prop: string,\n  receiver: AnyObject\n) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n  let value = _proxy[prop]; // resolve from proxy\n\n  // resolve with context\n  if (isFunction(value) && descriptors.isScriptable(prop)) {\n    value = _resolveScriptable(prop, value, target, receiver);\n  }\n  if (isArray(value) && value.length) {\n    value = _resolveArray(prop, value, target, descriptors.isIndexable);\n  }\n  if (needsSubResolver(prop, value)) {\n    // if the resolved value is an object, create a sub resolver for it\n    value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n  }\n  return value;\n}\n\nfunction _resolveScriptable(\n  prop: string,\n  getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n  target: ContextCache,\n  receiver: AnyObject\n) {\n  const {_proxy, _context, _subProxy, _stack} = target;\n  if (_stack.has(prop)) {\n    throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n  }\n  _stack.add(prop);\n  let value = getValue(_context, _subProxy || receiver);\n  _stack.delete(prop);\n  if (needsSubResolver(prop, value)) {\n    // When scriptable option returns an object, create a resolver on that.\n    value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n  }\n  return value;\n}\n\nfunction _resolveArray(\n  prop: string,\n  value: unknown[],\n  target: ContextCache,\n  isIndexable: (key: string) => boolean\n) {\n  const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n  if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n    return value[_context.index % value.length];\n  } else if (isObject(value[0])) {\n    // Array of objects, return array or resolvers\n    const arr = value;\n    const scopes = _proxy._scopes.filter(s => s !== arr);\n    value = [];\n    for (const item of arr) {\n      const resolver = createSubResolver(scopes, _proxy, prop, item);\n      value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n    }\n  }\n  return value;\n}\n\nfunction resolveFallback(\n  fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n  prop: ResolverObjectKey,\n  value: unknown\n) {\n  return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n  : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n  set: Set<AnyObject>,\n  parentScopes: AnyObject[],\n  key: ResolverObjectKey,\n  parentFallback: ResolverObjectKey,\n  value: unknown\n) {\n  for (const parent of parentScopes) {\n    const scope = getScope(key, parent);\n    if (scope) {\n      set.add(scope);\n      const fallback = resolveFallback(scope._fallback, key, value);\n      if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n        // When we reach the descriptor that defines a new _fallback, return that.\n        // The fallback will resume to that new scope.\n        return fallback;\n      }\n    } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n      // Fallback to `false` results to `false`, when falling back to different key.\n      // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n      return null;\n    }\n  }\n  return false;\n}\n\nfunction createSubResolver(\n  parentScopes: AnyObject[],\n  resolver: ResolverCache,\n  prop: ResolverObjectKey,\n  value: unknown\n) {\n  const rootScopes = resolver._rootScopes;\n  const fallback = resolveFallback(resolver._fallback, prop, value);\n  const allScopes = [...parentScopes, ...rootScopes];\n  const set = new Set<AnyObject>();\n  set.add(value);\n  let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n  if (key === null) {\n    return false;\n  }\n  if (typeof fallback !== 'undefined' && fallback !== prop) {\n    key = addScopesFromKey(set, allScopes, fallback, key, value);\n    if (key === null) {\n      return false;\n    }\n  }\n  return _createResolver(Array.from(set), [''], rootScopes, fallback,\n    () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n  set: Set<AnyObject>,\n  allScopes: AnyObject[],\n  key: ResolverObjectKey,\n  fallback: ResolverObjectKey,\n  item: unknown\n) {\n  while (key) {\n    key = addScopes(set, allScopes, key, fallback, item);\n  }\n  return key;\n}\n\nfunction subGetTarget(\n  resolver: ResolverCache,\n  prop: string,\n  value: unknown\n) {\n  const parent = resolver._getTarget();\n  if (!(prop in parent)) {\n    parent[prop] = {};\n  }\n  const target = parent[prop];\n  if (isArray(target) && isObject(value)) {\n    // For array of objects, the object is used to store updated values\n    return value;\n  }\n  return target || {};\n}\n\nfunction _resolveWithPrefixes(\n  prop: string,\n  prefixes: string[],\n  scopes: AnyObject[],\n  proxy: ResolverProxy\n) {\n  let value: unknown;\n  for (const prefix of prefixes) {\n    value = _resolve(readKey(prefix, prop), scopes);\n    if (typeof value !== 'undefined') {\n      return needsSubResolver(prop, value)\n        ? createSubResolver(scopes, proxy, prop, value)\n        : value;\n    }\n  }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n  for (const scope of scopes) {\n    if (!scope) {\n      continue;\n    }\n    const value = scope[key];\n    if (typeof value !== 'undefined') {\n      return value;\n    }\n  }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n  let keys = target._keys;\n  if (!keys) {\n    keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n  }\n  return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n  const set = new Set<string>();\n  for (const scope of scopes) {\n    for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n      set.add(key);\n    }\n  }\n  return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n  meta: ChartMeta<'line' | 'scatter'>,\n  data: AnyObject[],\n  start: number,\n  count: number\n) {\n  const {iScale} = meta;\n  const {key = 'r'} = this._parsing;\n  const parsed = new Array<{r: unknown}>(count);\n  let i: number, ilen: number, index: number, item: AnyObject;\n\n  for (i = 0, ilen = count; i < ilen; ++i) {\n    index = i + start;\n    item = data[index];\n    parsed[i] = {\n      r: iScale.parse(resolveObjectKey(item, key), index)\n    };\n  }\n  return parsed;\n}\n","import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n  firstPoint: SplinePoint,\n  middlePoint: SplinePoint,\n  afterPoint: SplinePoint,\n  t: number\n): {\n    previous: SplinePoint\n    next: SplinePoint\n  } {\n  // Props to Rob Spencer at scaled innovation for his post on splining between points\n  // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n  // This function must also respect \"skipped\" points\n\n  const previous = firstPoint.skip ? middlePoint : firstPoint;\n  const current = middlePoint;\n  const next = afterPoint.skip ? middlePoint : afterPoint;\n  const d01 = distanceBetweenPoints(current, previous);\n  const d12 = distanceBetweenPoints(next, current);\n\n  let s01 = d01 / (d01 + d12);\n  let s12 = d12 / (d01 + d12);\n\n  // If all points are the same, s01 & s02 will be inf\n  s01 = isNaN(s01) ? 0 : s01;\n  s12 = isNaN(s12) ? 0 : s12;\n\n  const fa = t * s01; // scaling factor for triangle Ta\n  const fb = t * s12;\n\n  return {\n    previous: {\n      x: current.x - fa * (next.x - previous.x),\n      y: current.y - fa * (next.y - previous.y)\n    },\n    next: {\n      x: current.x + fb * (next.x - previous.x),\n      y: current.y + fb * (next.y - previous.y)\n    }\n  };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n  const pointsLen = points.length;\n\n  let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n  let pointAfter = getPoint(points, 0);\n  for (let i = 0; i < pointsLen - 1; ++i) {\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent || !pointAfter) {\n      continue;\n    }\n\n    if (almostEquals(deltaK[i], 0, EPSILON)) {\n      mK[i] = mK[i + 1] = 0;\n      continue;\n    }\n\n    alphaK = mK[i] / deltaK[i];\n    betaK = mK[i + 1] / deltaK[i];\n    squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n    if (squaredMagnitude <= 9) {\n      continue;\n    }\n\n    tauK = 3 / Math.sqrt(squaredMagnitude);\n    mK[i] = alphaK * tauK * deltaK[i];\n    mK[i + 1] = betaK * tauK * deltaK[i];\n  }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n  let pointAfter = getPoint(points, 0);\n\n  for (let i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n\n    const iPixel = pointCurrent[indexAxis];\n    const vPixel = pointCurrent[valueAxis];\n    if (pointBefore) {\n      delta = (iPixel - pointBefore[indexAxis]) / 3;\n      pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n      pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n    }\n    if (pointAfter) {\n      delta = (pointAfter[indexAxis] - iPixel) / 3;\n      pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n      pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n    }\n  }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n  const valueAxis = getValueAxis(indexAxis);\n  const pointsLen = points.length;\n  const deltaK: number[] = Array(pointsLen).fill(0);\n  const mK: number[] = Array(pointsLen);\n\n  // Calculate slopes (deltaK) and initialize tangents (mK)\n  let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n  let pointAfter = getPoint(points, 0);\n\n  for (i = 0; i < pointsLen; ++i) {\n    pointBefore = pointCurrent;\n    pointCurrent = pointAfter;\n    pointAfter = getPoint(points, i + 1);\n    if (!pointCurrent) {\n      continue;\n    }\n\n    if (pointAfter) {\n      const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n      // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n      deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n    }\n    mK[i] = !pointBefore ? deltaK[i]\n      : !pointAfter ? deltaK[i - 1]\n        : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n          : (deltaK[i - 1] + deltaK[i]) / 2;\n  }\n\n  monotoneAdjust(points, deltaK, mK);\n\n  monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n  return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n  let i, ilen, point, inArea, inAreaPrev;\n  let inAreaNext = _isPointInArea(points[0], area);\n  for (i = 0, ilen = points.length; i < ilen; ++i) {\n    inAreaPrev = inArea;\n    inArea = inAreaNext;\n    inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n    if (!inArea) {\n      continue;\n    }\n    point = points[i];\n    if (inAreaPrev) {\n      point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n      point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n    }\n    if (inAreaNext) {\n      point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n      point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n    }\n  }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n  points: SplinePoint[],\n  options,\n  area: ChartArea,\n  loop: boolean,\n  indexAxis: 'x' | 'y'\n) {\n  let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType<typeof splineCurve>;\n\n  // Only consider points that are drawn in case the spanGaps option is used\n  if (options.spanGaps) {\n    points = points.filter((pt) => !pt.skip);\n  }\n\n  if (options.cubicInterpolationMode === 'monotone') {\n    splineCurveMonotone(points, indexAxis);\n  } else {\n    let prev = loop ? points[points.length - 1] : points[0];\n    for (i = 0, ilen = points.length; i < ilen; ++i) {\n      point = points[i];\n      controlPoints = splineCurve(\n        prev,\n        point,\n        points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n        options.tension\n      );\n      point.cp1x = controlPoints.previous.x;\n      point.cp1y = controlPoints.previous.y;\n      point.cp2x = controlPoints.next.x;\n      point.cp2y = controlPoints.next.y;\n      prev = point;\n    }\n  }\n\n  if (options.capBezierPoints) {\n    capBezierPoints(points, area);\n  }\n}\n","import type {ChartArea, Scale} from '../types/index.js';\nimport type Chart from '../core/core.controller.js';\nimport type {ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n  let parent = domNode.parentNode;\n  if (parent && parent.toString() === '[object ShadowRoot]') {\n    parent = (parent as ShadowRoot).host;\n  }\n  return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n  let valueInPixels: number;\n  if (typeof styleValue === 'string') {\n    valueInPixels = parseInt(styleValue, 10);\n\n    if (styleValue.indexOf('%') !== -1) {\n      // percentage * size in dimension\n      valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n    }\n  } else {\n    valueInPixels = styleValue;\n  }\n\n  return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n  element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n  return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n  const result = {} as ChartArea;\n  suffix = suffix ? '-' + suffix : '';\n  for (let i = 0; i < 4; i++) {\n    const pos = positions[i];\n    result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n  }\n  result.width = result.left + result.right;\n  result.height = result.top + result.bottom;\n  return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n  (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n  e: Event | TouchEvent | MouseEvent,\n  canvas: HTMLCanvasElement\n): {\n    x: number;\n    y: number;\n    box: boolean;\n  } {\n  const touches = (e as TouchEvent).touches;\n  const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n  const {offsetX, offsetY} = source as MouseEvent;\n  let box = false;\n  let x, y;\n  if (useOffsetPos(offsetX, offsetY, e.target)) {\n    x = offsetX;\n    y = offsetY;\n  } else {\n    const rect = canvas.getBoundingClientRect();\n    x = source.clientX - rect.left;\n    y = source.clientY - rect.top;\n    box = true;\n  }\n  return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n  event: Event | ChartEvent | TouchEvent | MouseEvent,\n  chart: Chart\n): { x: number; y: number } {\n  if ('native' in event) {\n    return event;\n  }\n\n  const {canvas, currentDevicePixelRatio} = chart;\n  const style = getComputedStyle(canvas);\n  const borderBox = style.boxSizing === 'border-box';\n  const paddings = getPositionedStyle(style, 'padding');\n  const borders = getPositionedStyle(style, 'border', 'width');\n  const {x, y, box} = getCanvasPosition(event, canvas);\n  const xOffset = paddings.left + (box && borders.left);\n  const yOffset = paddings.top + (box && borders.top);\n\n  let {width, height} = chart;\n  if (borderBox) {\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  return {\n    x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n    y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n  };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial<Scale> {\n  let maxWidth: number, maxHeight: number;\n\n  if (width === undefined || height === undefined) {\n    const container = canvas && _getParentNode(canvas);\n    if (!container) {\n      width = canvas.clientWidth;\n      height = canvas.clientHeight;\n    } else {\n      const rect = container.getBoundingClientRect(); // this is the border box of the container\n      const containerStyle = getComputedStyle(container);\n      const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n      const containerPadding = getPositionedStyle(containerStyle, 'padding');\n      width = rect.width - containerPadding.width - containerBorder.width;\n      height = rect.height - containerPadding.height - containerBorder.height;\n      maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n      maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n    }\n  }\n  return {\n    width,\n    height,\n    maxWidth: maxWidth || INFINITY,\n    maxHeight: maxHeight || INFINITY\n  };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n  canvas: HTMLCanvasElement,\n  bbWidth?: number,\n  bbHeight?: number,\n  aspectRatio?: number\n): { width: number; height: number } {\n  const style = getComputedStyle(canvas);\n  const margins = getPositionedStyle(style, 'margin');\n  const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n  const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n  const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n  let {width, height} = containerSize;\n\n  if (style.boxSizing === 'content-box') {\n    const borders = getPositionedStyle(style, 'border', 'width');\n    const paddings = getPositionedStyle(style, 'padding');\n    width -= paddings.width + borders.width;\n    height -= paddings.height + borders.height;\n  }\n  width = Math.max(0, width - margins.width);\n  height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n  width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n  height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n  if (width && !height) {\n    // https://github.com/chartjs/Chart.js/issues/4659\n    // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n    height = round1(width / 2);\n  }\n\n  const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n  if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n    height = containerSize.height;\n    width = round1(Math.floor(height * aspectRatio));\n  }\n\n  return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n  chart: Chart,\n  forceRatio: number,\n  forceStyle?: boolean\n): boolean | void {\n  const pixelRatio = forceRatio || 1;\n  const deviceHeight = Math.floor(chart.height * pixelRatio);\n  const deviceWidth = Math.floor(chart.width * pixelRatio);\n\n  chart.height = Math.floor(chart.height);\n  chart.width = Math.floor(chart.width);\n\n  const canvas = chart.canvas;\n\n  // If no style has been set on the canvas, the render size is used as display size,\n  // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n  // See https://github.com/chartjs/Chart.js/issues/3575\n  if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n    canvas.style.height = `${chart.height}px`;\n    canvas.style.width = `${chart.width}px`;\n  }\n\n  if (chart.currentDevicePixelRatio !== pixelRatio\n      || canvas.height !== deviceHeight\n      || canvas.width !== deviceWidth) {\n    chart.currentDevicePixelRatio = pixelRatio;\n    canvas.height = deviceHeight;\n    canvas.width = deviceWidth;\n    chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n    return true;\n  }\n  return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n  let passiveSupported = false;\n  try {\n    const options = {\n      get passive() { // This function will be called when the browser attempts to access the passive property.\n        passiveSupported = true;\n        return false;\n      }\n    } as EventListenerOptions;\n\n    if (_isDomSupported()) {\n      window.addEventListener('test', null, options);\n      window.removeEventListener('test', null, options);\n    }\n  } catch (e) {\n    // continue regardless of error\n  }\n  return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n  element: HTMLElement,\n  property: 'width' | 'height'\n): number | undefined {\n  const value = getStyle(element, property);\n  const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n  return matches ? +matches[1] : undefined;\n}\n","import type {Point, SplinePoint} from '../types/geometric.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: p1.y + t * (p2.y - p1.y)\n  };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n  p1: Point,\n  p2: Point,\n  t: number, mode: 'middle' | 'after' | unknown\n) {\n  return {\n    x: p1.x + t * (p2.x - p1.x),\n    y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n      : mode === 'after' ? t < 1 ? p1.y : p2.y\n        : t > 0 ? p2.y : p1.y\n  };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n  const cp1 = {x: p1.cp2x, y: p1.cp2y};\n  const cp2 = {x: p2.cp1x, y: p2.cp1y};\n  const a = _pointInLine(p1, cp1, t);\n  const b = _pointInLine(cp1, cp2, t);\n  const c = _pointInLine(cp2, p2, t);\n  const d = _pointInLine(a, b, t);\n  const e = _pointInLine(b, c, t);\n  return _pointInLine(d, e, t);\n}\n","export interface RTLAdapter {\n  x(x: number): number;\n  setWidth(w: number): void;\n  textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n  xPlus(x: number, value: number): number;\n  leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n  return {\n    x(x) {\n      return rectX + rectX + width - x;\n    },\n    setWidth(w) {\n      width = w;\n    },\n    textAlign(align) {\n      if (align === 'center') {\n        return align;\n      }\n      return align === 'right' ? 'left' : 'right';\n    },\n    xPlus(x, value) {\n      return x - value;\n    },\n    leftForLtr(x, itemWidth) {\n      return x - itemWidth;\n    },\n  };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n  return {\n    x(x) {\n      return x;\n    },\n    setWidth(w) { // eslint-disable-line no-unused-vars\n    },\n    textAlign(align) {\n      return align;\n    },\n    xPlus(x, value) {\n      return x + value;\n    },\n    leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n      return x;\n    },\n  };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n  return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n  let style: CSSStyleDeclaration, original: [string, string];\n  if (direction === 'ltr' || direction === 'rtl') {\n    style = ctx.canvas.style;\n    original = [\n      style.getPropertyValue('direction'),\n      style.getPropertyPriority('direction'),\n    ];\n\n    style.setProperty('direction', direction, 'important');\n    (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n  }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n  if (original !== undefined) {\n    delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n    ctx.canvas.style.setProperty('direction', original[0], original[1]);\n  }\n}\n","import {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\nimport {isPatternOrGradient} from './helpers.color.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n  if (property === 'angle') {\n    return {\n      between: _angleBetween,\n      compare: _angleDiff,\n      normalize: _normalizeAngle,\n    };\n  }\n  return {\n    between: _isBetween,\n    compare: (a, b) => a - b,\n    normalize: x => x\n  };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n  return {\n    start: start % count,\n    end: end % count,\n    loop: loop && (end - start + 1) % count === 0,\n    style\n  };\n}\n\nfunction getSegment(segment, points, bounds) {\n  const {property, start: startBound, end: endBound} = bounds;\n  const {between, normalize} = propertyFn(property);\n  const count = points.length;\n  // eslint-disable-next-line prefer-const\n  let {start, end, loop} = segment;\n  let i, ilen;\n\n  if (loop) {\n    start += count;\n    end += count;\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n        break;\n      }\n      start--;\n      end--;\n    }\n    start %= count;\n    end %= count;\n  }\n\n  if (end < start) {\n    end += count;\n  }\n  return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n  if (!bounds) {\n    return [segment];\n  }\n\n  const {property, start: startBound, end: endBound} = bounds;\n  const count = points.length;\n  const {compare, between, normalize} = propertyFn(property);\n  const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n  const result = [];\n  let inside = false;\n  let subStart = null;\n  let value, point, prevValue;\n\n  const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n  const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n  const shouldStart = () => inside || startIsBefore();\n  const shouldStop = () => !inside || endIsBefore();\n\n  for (let i = start, prev = start; i <= end; ++i) {\n    point = points[i % count];\n\n    if (point.skip) {\n      continue;\n    }\n\n    value = normalize(point[property]);\n\n    if (value === prevValue) {\n      continue;\n    }\n\n    inside = between(value, startBound, endBound);\n\n    if (subStart === null && shouldStart()) {\n      subStart = compare(value, startBound) === 0 ? i : prev;\n    }\n\n    if (subStart !== null && shouldStop()) {\n      result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n      subStart = null;\n    }\n    prev = i;\n    prevValue = value;\n  }\n\n  if (subStart !== null) {\n    result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n  }\n\n  return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n  const result = [];\n  const segments = line.segments;\n\n  for (let i = 0; i < segments.length; i++) {\n    const sub = _boundSegment(segments[i], line.points, bounds);\n    if (sub.length) {\n      result.push(...sub);\n    }\n  }\n  return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n  let start = 0;\n  let end = count - 1;\n\n  if (loop && !spanGaps) {\n    // loop and not spanning gaps, first find a gap to start from\n    while (start < count && !points[start].skip) {\n      start++;\n    }\n  }\n\n  // find first non skipped point (after the first gap possibly)\n  while (start < count && points[start].skip) {\n    start++;\n  }\n\n  // if we looped to count, start needs to be 0\n  start %= count;\n\n  if (loop) {\n    // loop will go past count, if start > 0\n    end += start;\n  }\n\n  while (end > start && points[end % count].skip) {\n    end--;\n  }\n\n  // end could be more than count, normalize\n  end %= count;\n\n  return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n  const count = points.length;\n  const result = [];\n  let last = start;\n  let prev = points[start];\n  let end;\n\n  for (end = start + 1; end <= max; ++end) {\n    const cur = points[end % count];\n    if (cur.skip || cur.stop) {\n      if (!prev.skip) {\n        loop = false;\n        result.push({start: start % count, end: (end - 1) % count, loop});\n        // @ts-ignore\n        start = last = cur.stop ? end : null;\n      }\n    } else {\n      last = end;\n      if (prev.skip) {\n        start = end;\n      }\n    }\n    prev = cur;\n  }\n\n  if (last !== null) {\n    result.push({start: start % count, end: last % count, loop});\n  }\n\n  return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n  const points = line.points;\n  const spanGaps = line.options.spanGaps;\n  const count = points.length;\n\n  if (!count) {\n    return [];\n  }\n\n  const loop = !!line._loop;\n  const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n  if (spanGaps === true) {\n    return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n  }\n\n  const max = end < start ? end + count : end;\n  const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n  return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n  if (!segmentOptions || !segmentOptions.setContext || !points) {\n    return segments;\n  }\n  return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n  const chartContext = line._chart.getContext();\n  const baseStyle = readStyle(line.options);\n  const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n  const count = points.length;\n  const result = [];\n  let prevStyle = baseStyle;\n  let start = segments[0].start;\n  let i = start;\n\n  function addStyle(s, e, l, st) {\n    const dir = spanGaps ? -1 : 1;\n    if (s === e) {\n      return;\n    }\n    // Style can not start/end on a skipped point, adjust indices accordingly\n    s += count;\n    while (points[s % count].skip) {\n      s -= dir;\n    }\n    while (points[e % count].skip) {\n      e += dir;\n    }\n    if (s % count !== e % count) {\n      result.push({start: s % count, end: e % count, loop: l, style: st});\n      prevStyle = st;\n      start = e % count;\n    }\n  }\n\n  for (const segment of segments) {\n    start = spanGaps ? start : segment.start;\n    let prev = points[start % count];\n    let style;\n    for (i = start + 1; i <= segment.end; i++) {\n      const pt = points[i % count];\n      style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n        type: 'segment',\n        p0: prev,\n        p1: pt,\n        p0DataIndex: (i - 1) % count,\n        p1DataIndex: i % count,\n        datasetIndex\n      })));\n      if (styleChanged(style, prevStyle)) {\n        addStyle(start, i - 1, segment.loop, prevStyle);\n      }\n      prev = pt;\n      prevStyle = style;\n    }\n    if (start < i - 1) {\n      addStyle(start, i - 1, segment.loop, prevStyle);\n    }\n  }\n\n  return result;\n}\n\nfunction readStyle(options) {\n  return {\n    backgroundColor: options.backgroundColor,\n    borderCapStyle: options.borderCapStyle,\n    borderDash: options.borderDash,\n    borderDashOffset: options.borderDashOffset,\n    borderJoinStyle: options.borderJoinStyle,\n    borderWidth: options.borderWidth,\n    borderColor: options.borderColor\n  };\n}\n\nfunction styleChanged(style, prevStyle) {\n  if (!prevStyle) {\n    return false;\n  }\n  const cache = [];\n  const replacer = function(key, value) {\n    if (!isPatternOrGradient(value)) {\n      return value;\n    }\n    if (!cache.includes(value)) {\n      cache.push(value);\n    }\n    return cache.indexOf(value);\n  };\n  return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n","import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n  constructor() {\n    this._request = null;\n    this._charts = new Map();\n    this._running = false;\n    this._lastDate = undefined;\n  }\n\n  /**\n\t * @private\n\t */\n  _notify(chart, anims, date, type) {\n    const callbacks = anims.listeners[type];\n    const numSteps = anims.duration;\n\n    callbacks.forEach(fn => fn({\n      chart,\n      initial: anims.initial,\n      numSteps,\n      currentStep: Math.min(date - anims.start, numSteps)\n    }));\n  }\n\n  /**\n\t * @private\n\t */\n  _refresh() {\n    if (this._request) {\n      return;\n    }\n    this._running = true;\n\n    this._request = requestAnimFrame.call(window, () => {\n      this._update();\n      this._request = null;\n\n      if (this._running) {\n        this._refresh();\n      }\n    });\n  }\n\n  /**\n\t * @private\n\t */\n  _update(date = Date.now()) {\n    let remaining = 0;\n\n    this._charts.forEach((anims, chart) => {\n      if (!anims.running || !anims.items.length) {\n        return;\n      }\n      const items = anims.items;\n      let i = items.length - 1;\n      let draw = false;\n      let item;\n\n      for (; i >= 0; --i) {\n        item = items[i];\n\n        if (item._active) {\n          if (item._total > anims.duration) {\n            // if the animation has been updated and its duration prolonged,\n            // update to total duration of current animations run (for progress event)\n            anims.duration = item._total;\n          }\n          item.tick(date);\n          draw = true;\n        } else {\n          // Remove the item by replacing it with last item and removing the last\n          // A lot faster than splice.\n          items[i] = items[items.length - 1];\n          items.pop();\n        }\n      }\n\n      if (draw) {\n        chart.draw();\n        this._notify(chart, anims, date, 'progress');\n      }\n\n      if (!items.length) {\n        anims.running = false;\n        this._notify(chart, anims, date, 'complete');\n        anims.initial = false;\n      }\n\n      remaining += items.length;\n    });\n\n    this._lastDate = date;\n\n    if (remaining === 0) {\n      this._running = false;\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _getAnims(chart) {\n    const charts = this._charts;\n    let anims = charts.get(chart);\n    if (!anims) {\n      anims = {\n        running: false,\n        initial: true,\n        items: [],\n        listeners: {\n          complete: [],\n          progress: []\n        }\n      };\n      charts.set(chart, anims);\n    }\n    return anims;\n  }\n\n  /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n  listen(chart, event, cb) {\n    this._getAnims(chart).listeners[event].push(cb);\n  }\n\n  /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n  add(chart, items) {\n    if (!items || !items.length) {\n      return;\n    }\n    this._getAnims(chart).items.push(...items);\n  }\n\n  /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n  has(chart) {\n    return this._getAnims(chart).items.length > 0;\n  }\n\n  /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n  start(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims) {\n      return;\n    }\n    anims.running = true;\n    anims.start = Date.now();\n    anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n    this._refresh();\n  }\n\n  running(chart) {\n    if (!this._running) {\n      return false;\n    }\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.running || !anims.items.length) {\n      return false;\n    }\n    return true;\n  }\n\n  /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n  stop(chart) {\n    const anims = this._charts.get(chart);\n    if (!anims || !anims.items.length) {\n      return;\n    }\n    const items = anims.items;\n    let i = items.length - 1;\n\n    for (; i >= 0; --i) {\n      items[i].cancel();\n    }\n    anims.items = [];\n    this._notify(chart, anims, Date.now(), 'complete');\n  }\n\n  /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n  remove(chart) {\n    return this._charts.delete(chart);\n  }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n","import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n  boolean(from, to, factor) {\n    return factor > 0.5 ? to : from;\n  },\n  /**\n   * @param {string} from\n   * @param {string} to\n   * @param {number} factor\n   */\n  color(from, to, factor) {\n    const c0 = helpersColor(from || transparent);\n    const c1 = c0.valid && helpersColor(to || transparent);\n    return c1 && c1.valid\n      ? c1.mix(c0, factor).hexString()\n      : to;\n  },\n  number(from, to, factor) {\n    return from + (to - from) * factor;\n  }\n};\n\nexport default class Animation {\n  constructor(cfg, target, prop, to) {\n    const currentValue = target[prop];\n\n    to = resolve([cfg.to, to, currentValue, cfg.from]);\n    const from = resolve([cfg.from, currentValue, to]);\n\n    this._active = true;\n    this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n    this._easing = effects[cfg.easing] || effects.linear;\n    this._start = Math.floor(Date.now() + (cfg.delay || 0));\n    this._duration = this._total = Math.floor(cfg.duration);\n    this._loop = !!cfg.loop;\n    this._target = target;\n    this._prop = prop;\n    this._from = from;\n    this._to = to;\n    this._promises = undefined;\n  }\n\n  active() {\n    return this._active;\n  }\n\n  update(cfg, to, date) {\n    if (this._active) {\n      this._notify(false);\n\n      const currentValue = this._target[this._prop];\n      const elapsed = date - this._start;\n      const remain = this._duration - elapsed;\n      this._start = date;\n      this._duration = Math.floor(Math.max(remain, cfg.duration));\n      this._total += elapsed;\n      this._loop = !!cfg.loop;\n      this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n      this._from = resolve([cfg.from, currentValue, to]);\n    }\n  }\n\n  cancel() {\n    if (this._active) {\n      // update current evaluated value, for smoother animations\n      this.tick(Date.now());\n      this._active = false;\n      this._notify(false);\n    }\n  }\n\n  tick(date) {\n    const elapsed = date - this._start;\n    const duration = this._duration;\n    const prop = this._prop;\n    const from = this._from;\n    const loop = this._loop;\n    const to = this._to;\n    let factor;\n\n    this._active = from !== to && (loop || (elapsed < duration));\n\n    if (!this._active) {\n      this._target[prop] = to;\n      this._notify(true);\n      return;\n    }\n\n    if (elapsed < 0) {\n      this._target[prop] = from;\n      return;\n    }\n\n    factor = (elapsed / duration) % 2;\n    factor = loop && factor > 1 ? 2 - factor : factor;\n    factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n    this._target[prop] = this._fn(from, to, factor);\n  }\n\n  wait() {\n    const promises = this._promises || (this._promises = []);\n    return new Promise((res, rej) => {\n      promises.push({res, rej});\n    });\n  }\n\n  _notify(resolved) {\n    const method = resolved ? 'res' : 'rej';\n    const promises = this._promises || [];\n    for (let i = 0; i < promises.length; i++) {\n      promises[i][method]();\n    }\n  }\n}\n","import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n  constructor(chart, config) {\n    this._chart = chart;\n    this._properties = new Map();\n    this.configure(config);\n  }\n\n  configure(config) {\n    if (!isObject(config)) {\n      return;\n    }\n\n    const animationOptions = Object.keys(defaults.animation);\n    const animatedProps = this._properties;\n\n    Object.getOwnPropertyNames(config).forEach(key => {\n      const cfg = config[key];\n      if (!isObject(cfg)) {\n        return;\n      }\n      const resolved = {};\n      for (const option of animationOptions) {\n        resolved[option] = cfg[option];\n      }\n\n      (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n        if (prop === key || !animatedProps.has(prop)) {\n          animatedProps.set(prop, resolved);\n        }\n      });\n    });\n  }\n\n  /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n  _animateOptions(target, values) {\n    const newOptions = values.options;\n    const options = resolveTargetOptions(target, newOptions);\n    if (!options) {\n      return [];\n    }\n\n    const animations = this._createAnimations(options, newOptions);\n    if (newOptions.$shared) {\n      // Going to shared options:\n      // After all animations are done, assign the shared options object to the element\n      // So any new updates to the shared options are observed\n      awaitAll(target.options.$animations, newOptions).then(() => {\n        target.options = newOptions;\n      }, () => {\n        // rejected, noop\n      });\n    }\n\n    return animations;\n  }\n\n  /**\n\t * @private\n\t */\n  _createAnimations(target, values) {\n    const animatedProps = this._properties;\n    const animations = [];\n    const running = target.$animations || (target.$animations = {});\n    const props = Object.keys(values);\n    const date = Date.now();\n    let i;\n\n    for (i = props.length - 1; i >= 0; --i) {\n      const prop = props[i];\n      if (prop.charAt(0) === '$') {\n        continue;\n      }\n\n      if (prop === 'options') {\n        animations.push(...this._animateOptions(target, values));\n        continue;\n      }\n      const value = values[prop];\n      let animation = running[prop];\n      const cfg = animatedProps.get(prop);\n\n      if (animation) {\n        if (cfg && animation.active()) {\n          // There is an existing active animation, let's update that\n          animation.update(cfg, value, date);\n          continue;\n        } else {\n          animation.cancel();\n        }\n      }\n      if (!cfg || !cfg.duration) {\n        // not animated, set directly to new value\n        target[prop] = value;\n        continue;\n      }\n\n      running[prop] = animation = new Animation(cfg, target, prop, value);\n      animations.push(animation);\n    }\n    return animations;\n  }\n\n\n  /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n  update(target, values) {\n    if (this._properties.size === 0) {\n      // Nothing is animated, just apply the new values.\n      Object.assign(target, values);\n      return;\n    }\n\n    const animations = this._createAnimations(target, values);\n\n    if (animations.length) {\n      animator.add(this._chart, animations);\n      return true;\n    }\n  }\n}\n\nfunction awaitAll(animations, properties) {\n  const running = [];\n  const keys = Object.keys(properties);\n  for (let i = 0; i < keys.length; i++) {\n    const anim = animations[keys[i]];\n    if (anim && anim.active()) {\n      running.push(anim.wait());\n    }\n  }\n  // @ts-ignore\n  return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n  if (!newOptions) {\n    return;\n  }\n  let options = target.options;\n  if (!options) {\n    target.options = newOptions;\n    return;\n  }\n  if (options.$shared) {\n    // Going from shared options to distinct one:\n    // Create new options object containing the old shared values and start updating that.\n    target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n  }\n  return options;\n}\n","import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n  const opts = scale && scale.options || {};\n  const reverse = opts.reverse;\n  const min = opts.min === undefined ? allowedOverflow : 0;\n  const max = opts.max === undefined ? allowedOverflow : 0;\n  return {\n    start: reverse ? max : min,\n    end: reverse ? min : max\n  };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n  if (allowedOverflow === false) {\n    return false;\n  }\n  const x = scaleClip(xScale, allowedOverflow);\n  const y = scaleClip(yScale, allowedOverflow);\n\n  return {\n    top: y.end,\n    right: x.end,\n    bottom: y.start,\n    left: x.start\n  };\n}\n\nfunction toClip(value) {\n  let t, r, b, l;\n\n  if (isObject(value)) {\n    t = value.top;\n    r = value.right;\n    b = value.bottom;\n    l = value.left;\n  } else {\n    t = r = b = l = value;\n  }\n\n  return {\n    top: t,\n    right: r,\n    bottom: b,\n    left: l,\n    disabled: value === false\n  };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n  const keys = [];\n  const metasets = chart._getSortedDatasetMetas(filterVisible);\n  let i, ilen;\n\n  for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n    keys.push(metasets[i].index);\n  }\n  return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n  const keys = stack.keys;\n  const singleMode = options.mode === 'single';\n  let i, ilen, datasetIndex, otherValue;\n\n  if (value === null) {\n    return;\n  }\n\n  let found = false;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    datasetIndex = +keys[i];\n    if (datasetIndex === dsIndex) {\n      found = true;\n      if (options.all) {\n        continue;\n      }\n      break;\n    }\n    otherValue = stack.values[datasetIndex];\n    if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n      value += otherValue;\n    }\n  }\n\n  if (!found && !options.all) {\n    return 0;\n  }\n\n  return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n  const {iScale, vScale} = meta;\n  const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n  const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n  const keys = Object.keys(data);\n  const adata = new Array(keys.length);\n  let i, ilen, key;\n  for (i = 0, ilen = keys.length; i < ilen; ++i) {\n    key = keys[i];\n    adata[i] = {\n      [iAxisKey]: key,\n      [vAxisKey]: data[key]\n    };\n  }\n  return adata;\n}\n\nfunction isStacked(scale, meta) {\n  const stacked = scale && scale.options.stacked;\n  return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n  return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n  const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n  return {\n    min: minDefined ? min : Number.NEGATIVE_INFINITY,\n    max: maxDefined ? max : Number.POSITIVE_INFINITY\n  };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n  const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n  return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n  for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n    const value = stack[meta.index];\n    if ((positive && value > 0) || (!positive && value < 0)) {\n      return meta.index;\n    }\n  }\n\n  return null;\n}\n\nfunction updateStacks(controller, parsed) {\n  const {chart, _cachedMeta: meta} = controller;\n  const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n  const {iScale, vScale, index: datasetIndex} = meta;\n  const iAxis = iScale.axis;\n  const vAxis = vScale.axis;\n  const key = getStackKey(iScale, vScale, meta);\n  const ilen = parsed.length;\n  let stack;\n\n  for (let i = 0; i < ilen; ++i) {\n    const item = parsed[i];\n    const {[iAxis]: index, [vAxis]: value} = item;\n    const itemStacks = item._stacks || (item._stacks = {});\n    stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n    stack[datasetIndex] = value;\n\n    stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n    stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n    const visualValues = stack._visualValues || (stack._visualValues = {});\n    visualValues[datasetIndex] = value;\n  }\n}\n\nfunction getFirstScaleId(chart, axis) {\n  const scales = chart.scales;\n  return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n  return createContext(parent,\n    {\n      active: false,\n      dataset: undefined,\n      datasetIndex: index,\n      index,\n      mode: 'default',\n      type: 'dataset'\n    }\n  );\n}\n\nfunction createDataContext(parent, index, element) {\n  return createContext(parent, {\n    active: false,\n    dataIndex: index,\n    parsed: undefined,\n    raw: undefined,\n    element,\n    index,\n    mode: 'default',\n    type: 'data'\n  });\n}\n\nfunction clearStacks(meta, items) {\n  // Not using meta.index here, because it might be already updated if the dataset changed location\n  const datasetIndex = meta.controller.index;\n  const axis = meta.vScale && meta.vScale.axis;\n  if (!axis) {\n    return;\n  }\n\n  items = items || meta._parsed;\n  for (const parsed of items) {\n    const stacks = parsed._stacks;\n    if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n      return;\n    }\n    delete stacks[axis][datasetIndex];\n    if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n      delete stacks[axis]._visualValues[datasetIndex];\n    }\n  }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n  && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n  /**\n   * @type {any}\n   */\n  static defaults = {};\n\n  /**\n   * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n   */\n  static datasetElementType = null;\n\n  /**\n   * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n   */\n  static dataElementType = null;\n\n  /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n  constructor(chart, datasetIndex) {\n    this.chart = chart;\n    this._ctx = chart.ctx;\n    this.index = datasetIndex;\n    this._cachedDataOpts = {};\n    this._cachedMeta = this.getMeta();\n    this._type = this._cachedMeta.type;\n    this.options = undefined;\n    /** @type {boolean | object} */\n    this._parsing = false;\n    this._data = undefined;\n    this._objectData = undefined;\n    this._sharedOptions = undefined;\n    this._drawStart = undefined;\n    this._drawCount = undefined;\n    this.enableOptionSharing = false;\n    this.supportsDecimation = false;\n    this.$context = undefined;\n    this._syncList = [];\n    this.datasetElementType = new.target.datasetElementType;\n    this.dataElementType = new.target.dataElementType;\n\n    this.initialize();\n  }\n\n  initialize() {\n    const meta = this._cachedMeta;\n    this.configure();\n    this.linkScales();\n    meta._stacked = isStacked(meta.vScale, meta);\n    this.addElements();\n\n    if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n      console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n    }\n  }\n\n  updateIndex(datasetIndex) {\n    if (this.index !== datasetIndex) {\n      clearStacks(this._cachedMeta);\n    }\n    this.index = datasetIndex;\n  }\n\n  linkScales() {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n\n    const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n    const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n    const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n    const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n    const indexAxis = meta.indexAxis;\n    const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n    const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n    meta.xScale = this.getScaleForId(xid);\n    meta.yScale = this.getScaleForId(yid);\n    meta.rScale = this.getScaleForId(rid);\n    meta.iScale = this.getScaleForId(iid);\n    meta.vScale = this.getScaleForId(vid);\n  }\n\n  getDataset() {\n    return this.chart.data.datasets[this.index];\n  }\n\n  getMeta() {\n    return this.chart.getDatasetMeta(this.index);\n  }\n\n  /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n  getScaleForId(scaleID) {\n    return this.chart.scales[scaleID];\n  }\n\n  /**\n\t * @private\n\t */\n  _getOtherScale(scale) {\n    const meta = this._cachedMeta;\n    return scale === meta.iScale\n      ? meta.vScale\n      : meta.iScale;\n  }\n\n  reset() {\n    this._update('reset');\n  }\n\n  /**\n\t * @private\n\t */\n  _destroy() {\n    const meta = this._cachedMeta;\n    if (this._data) {\n      unlistenArrayEvents(this._data, this);\n    }\n    if (meta._stacked) {\n      clearStacks(meta);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _dataCheck() {\n    const dataset = this.getDataset();\n    const data = dataset.data || (dataset.data = []);\n    const _data = this._data;\n\n    // In order to correctly handle data addition/deletion animation (and thus simulate\n    // real-time charts), we need to monitor these data modifications and synchronize\n    // the internal metadata accordingly.\n\n    if (isObject(data)) {\n      const meta = this._cachedMeta;\n      this._data = convertObjectDataToArray(data, meta);\n    } else if (_data !== data) {\n      if (_data) {\n        // This case happens when the user replaced the data array instance.\n        unlistenArrayEvents(_data, this);\n        // Discard old parsed data and stacks\n        const meta = this._cachedMeta;\n        clearStacks(meta);\n        meta._parsed = [];\n      }\n      if (data && Object.isExtensible(data)) {\n        listenArrayEvents(data, this);\n      }\n      this._syncList = [];\n      this._data = data;\n    }\n  }\n\n  addElements() {\n    const meta = this._cachedMeta;\n\n    this._dataCheck();\n\n    if (this.datasetElementType) {\n      meta.dataset = new this.datasetElementType();\n    }\n  }\n\n  buildOrUpdateElements(resetNewElements) {\n    const meta = this._cachedMeta;\n    const dataset = this.getDataset();\n    let stackChanged = false;\n\n    this._dataCheck();\n\n    // make sure cached _stacked status is current\n    const oldStacked = meta._stacked;\n    meta._stacked = isStacked(meta.vScale, meta);\n\n    // detect change in stack option\n    if (meta.stack !== dataset.stack) {\n      stackChanged = true;\n      // remove values from old stack\n      clearStacks(meta);\n      meta.stack = dataset.stack;\n    }\n\n    // Re-sync meta data in case the user replaced the data array or if we missed\n    // any updates and so make sure that we handle number of datapoints changing.\n    this._resyncElements(resetNewElements);\n\n    // if stack changed, update stack values for the whole dataset\n    if (stackChanged || oldStacked !== meta._stacked) {\n      updateStacks(this, meta._parsed);\n      meta._stacked = isStacked(meta.vScale, meta);\n    }\n  }\n\n  /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n  configure() {\n    const config = this.chart.config;\n    const scopeKeys = config.datasetScopeKeys(this._type);\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n    this.options = config.createResolver(scopes, this.getContext());\n    this._parsing = this.options.parsing;\n    this._cachedDataOpts = {};\n  }\n\n  /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n  parse(start, count) {\n    const {_cachedMeta: meta, _data: data} = this;\n    const {iScale, _stacked} = meta;\n    const iAxis = iScale.axis;\n\n    let sorted = start === 0 && count === data.length ? true : meta._sorted;\n    let prev = start > 0 && meta._parsed[start - 1];\n    let i, cur, parsed;\n\n    if (this._parsing === false) {\n      meta._parsed = data;\n      meta._sorted = true;\n      parsed = data;\n    } else {\n      if (isArray(data[start])) {\n        parsed = this.parseArrayData(meta, data, start, count);\n      } else if (isObject(data[start])) {\n        parsed = this.parseObjectData(meta, data, start, count);\n      } else {\n        parsed = this.parsePrimitiveData(meta, data, start, count);\n      }\n\n      const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n      for (i = 0; i < count; ++i) {\n        meta._parsed[i + start] = cur = parsed[i];\n        if (sorted) {\n          if (isNotInOrderComparedToPrev()) {\n            sorted = false;\n          }\n          prev = cur;\n        }\n      }\n      meta._sorted = sorted;\n    }\n\n    if (_stacked) {\n      updateStacks(this, parsed);\n    }\n  }\n\n  /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n  parsePrimitiveData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const labels = iScale.getLabels();\n    const singleScale = iScale === vScale;\n    const parsed = new Array(count);\n    let i, ilen, index;\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      parsed[i] = {\n        [iAxis]: singleScale || iScale.parse(labels[index], index),\n        [vAxis]: vScale.parse(data[index], index)\n      };\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n  parseArrayData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(item[0], index),\n        y: yScale.parse(item[1], index)\n      };\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n  parseObjectData(meta, data, start, count) {\n    const {xScale, yScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const parsed = new Array(count);\n    let i, ilen, index, item;\n\n    for (i = 0, ilen = count; i < ilen; ++i) {\n      index = i + start;\n      item = data[index];\n      parsed[i] = {\n        x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n        y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n      };\n    }\n    return parsed;\n  }\n\n  /**\n\t * @protected\n\t */\n  getParsed(index) {\n    return this._cachedMeta._parsed[index];\n  }\n\n  /**\n\t * @protected\n\t */\n  getDataElement(index) {\n    return this._cachedMeta.data[index];\n  }\n\n  /**\n\t * @protected\n\t */\n  applyStack(scale, parsed, mode) {\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const value = parsed[scale.axis];\n    const stack = {\n      keys: getSortedDatasetIndices(chart, true),\n      values: parsed._stacks[scale.axis]._visualValues\n    };\n    return applyStack(stack, value, meta.index, {mode});\n  }\n\n  /**\n\t * @protected\n\t */\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    const parsedValue = parsed[scale.axis];\n    let value = parsedValue === null ? NaN : parsedValue;\n    const values = stack && parsed._stacks[scale.axis];\n    if (stack && values) {\n      stack.values = values;\n      value = applyStack(stack, parsedValue, this._cachedMeta.index);\n    }\n    range.min = Math.min(range.min, value);\n    range.max = Math.max(range.max, value);\n  }\n\n  /**\n\t * @protected\n\t */\n  getMinMax(scale, canStack) {\n    const meta = this._cachedMeta;\n    const _parsed = meta._parsed;\n    const sorted = meta._sorted && scale === meta.iScale;\n    const ilen = _parsed.length;\n    const otherScale = this._getOtherScale(scale);\n    const stack = createStack(canStack, meta, this.chart);\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n    const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n    let i, parsed;\n\n    function _skip() {\n      parsed = _parsed[i];\n      const otherValue = parsed[otherScale.axis];\n      return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n    }\n\n    for (i = 0; i < ilen; ++i) {\n      if (_skip()) {\n        continue;\n      }\n      this.updateRangeFromParsed(range, scale, parsed, stack);\n      if (sorted) {\n        // if the data is sorted, we don't need to check further from this end of array\n        break;\n      }\n    }\n    if (sorted) {\n      // in the sorted case, find first non-skipped value from other end of array\n      for (i = ilen - 1; i >= 0; --i) {\n        if (_skip()) {\n          continue;\n        }\n        this.updateRangeFromParsed(range, scale, parsed, stack);\n        break;\n      }\n    }\n    return range;\n  }\n\n  getAllParsedValues(scale) {\n    const parsed = this._cachedMeta._parsed;\n    const values = [];\n    let i, ilen, value;\n\n    for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n      value = parsed[i][scale.axis];\n      if (isFinite(value)) {\n        values.push(value);\n      }\n    }\n    return values;\n  }\n\n  /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n  getMaxOverflow() {\n    return false;\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const vScale = meta.vScale;\n    const parsed = this.getParsed(index);\n    return {\n      label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n      value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n    };\n  }\n\n  /**\n\t * @private\n\t */\n  _update(mode) {\n    const meta = this._cachedMeta;\n    this.update(mode || 'default');\n    meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n  }\n\n  /**\n\t * @param {string} mode\n\t */\n  update(mode) {} // eslint-disable-line no-unused-vars\n\n  draw() {\n    const ctx = this._ctx;\n    const chart = this.chart;\n    const meta = this._cachedMeta;\n    const elements = meta.data || [];\n    const area = chart.chartArea;\n    const active = [];\n    const start = this._drawStart || 0;\n    const count = this._drawCount || (elements.length - start);\n    const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n    let i;\n\n    if (meta.dataset) {\n      meta.dataset.draw(ctx, area, start, count);\n    }\n\n    for (i = start; i < start + count; ++i) {\n      const element = elements[i];\n      if (element.hidden) {\n        continue;\n      }\n      if (element.active && drawActiveElementsOnTop) {\n        active.push(element);\n      } else {\n        element.draw(ctx, area);\n      }\n    }\n\n    for (i = 0; i < active.length; ++i) {\n      active[i].draw(ctx, area);\n    }\n  }\n\n  /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n  getStyle(index, active) {\n    const mode = active ? 'active' : 'default';\n    return index === undefined && this._cachedMeta.dataset\n      ? this.resolveDatasetElementOptions(mode)\n      : this.resolveDataElementOptions(index || 0, mode);\n  }\n\n  /**\n\t * @protected\n\t */\n  getContext(index, active, mode) {\n    const dataset = this.getDataset();\n    let context;\n    if (index >= 0 && index < this._cachedMeta.data.length) {\n      const element = this._cachedMeta.data[index];\n      context = element.$context ||\n        (element.$context = createDataContext(this.getContext(), index, element));\n      context.parsed = this.getParsed(index);\n      context.raw = dataset.data[index];\n      context.index = context.dataIndex = index;\n    } else {\n      context = this.$context ||\n        (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n      context.dataset = dataset;\n      context.index = context.datasetIndex = this.index;\n    }\n\n    context.active = !!active;\n    context.mode = mode;\n    return context;\n  }\n\n  /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n  resolveDatasetElementOptions(mode) {\n    return this._resolveElementOptions(this.datasetElementType.id, mode);\n  }\n\n  /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n  resolveDataElementOptions(index, mode) {\n    return this._resolveElementOptions(this.dataElementType.id, mode, index);\n  }\n\n  /**\n\t * @private\n\t */\n  _resolveElementOptions(elementType, mode = 'default', index) {\n    const active = mode === 'active';\n    const cache = this._cachedDataOpts;\n    const cacheKey = elementType + '-' + mode;\n    const cached = cache[cacheKey];\n    const sharing = this.enableOptionSharing && defined(index);\n    if (cached) {\n      return cloneIfNotShared(cached, sharing);\n    }\n    const config = this.chart.config;\n    const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n    const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n    const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n    const names = Object.keys(defaults.elements[elementType]);\n    // context is provided as a function, and is called only if needed,\n    // so we don't create a context for each element if not needed.\n    const context = () => this.getContext(index, active, mode);\n    const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n    if (values.$shared) {\n      // `$shared` indicates this set of options can be shared between multiple elements.\n      // Sharing is used to reduce number of properties to change during animation.\n      values.$shared = sharing;\n\n      // We cache options by `mode`, which can be 'active' for example. This enables us\n      // to have the 'active' element options and 'default' options to switch between\n      // when interacting.\n      cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n    }\n\n    return values;\n  }\n\n\n  /**\n\t * @private\n\t */\n  _resolveAnimations(index, transition, active) {\n    const chart = this.chart;\n    const cache = this._cachedDataOpts;\n    const cacheKey = `animation-${transition}`;\n    const cached = cache[cacheKey];\n    if (cached) {\n      return cached;\n    }\n    let options;\n    if (chart.options.animation !== false) {\n      const config = this.chart.config;\n      const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n      const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n      options = config.createResolver(scopes, this.getContext(index, active, transition));\n    }\n    const animations = new Animations(chart, options && options.animations);\n    if (options && options._cacheable) {\n      cache[cacheKey] = Object.freeze(animations);\n    }\n    return animations;\n  }\n\n  /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n  getSharedOptions(options) {\n    if (!options.$shared) {\n      return;\n    }\n    return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n  }\n\n  /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n  includeOptions(mode, sharedOptions) {\n    return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n  }\n\n  /**\n   * @todo v4, rename to getSharedOptions and remove excess functions\n   */\n  _getSharedOptions(start, mode) {\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const previouslySharedOptions = this._sharedOptions;\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n    return {sharedOptions, includeOptions};\n  }\n\n  /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n  updateElement(element, index, properties, mode) {\n    if (isDirectUpdateMode(mode)) {\n      Object.assign(element, properties);\n    } else {\n      this._resolveAnimations(index, mode).update(element, properties);\n    }\n  }\n\n  /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n  updateSharedOptions(sharedOptions, mode, newOptions) {\n    if (sharedOptions && !isDirectUpdateMode(mode)) {\n      this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _setStyle(element, index, mode, active) {\n    element.active = active;\n    const options = this.getStyle(index, active);\n    this._resolveAnimations(index, mode, active).update(element, {\n      // When going from active to inactive, we need to update to the shared options.\n      // This way the once hovered element will end up with the same original shared options instance, after animation.\n      options: (!active && this.getSharedOptions(options)) || options\n    });\n  }\n\n  removeHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', false);\n  }\n\n  setHoverStyle(element, datasetIndex, index) {\n    this._setStyle(element, index, 'active', true);\n  }\n\n  /**\n\t * @private\n\t */\n  _removeDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n\n    if (element) {\n      this._setStyle(element, undefined, 'active', false);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _setDatasetHoverStyle() {\n    const element = this._cachedMeta.dataset;\n\n    if (element) {\n      this._setStyle(element, undefined, 'active', true);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _resyncElements(resetNewElements) {\n    const data = this._data;\n    const elements = this._cachedMeta.data;\n\n    // Apply changes detected through array listeners\n    for (const [method, arg1, arg2] of this._syncList) {\n      this[method](arg1, arg2);\n    }\n    this._syncList = [];\n\n    const numMeta = elements.length;\n    const numData = data.length;\n    const count = Math.min(numData, numMeta);\n\n    if (count) {\n      // TODO: It is not optimal to always parse the old data\n      // This is done because we are not detecting direct assignments:\n      // chart.data.datasets[0].data[5] = 10;\n      // chart.data.datasets[0].data[5].y = 10;\n      this.parse(0, count);\n    }\n\n    if (numData > numMeta) {\n      this._insertElements(numMeta, numData - numMeta, resetNewElements);\n    } else if (numData < numMeta) {\n      this._removeElements(numData, numMeta - numData);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _insertElements(start, count, resetNewElements = true) {\n    const meta = this._cachedMeta;\n    const data = meta.data;\n    const end = start + count;\n    let i;\n\n    const move = (arr) => {\n      arr.length += count;\n      for (i = arr.length - 1; i >= end; i--) {\n        arr[i] = arr[i - count];\n      }\n    };\n    move(data);\n\n    for (i = start; i < end; ++i) {\n      data[i] = new this.dataElementType();\n    }\n\n    if (this._parsing) {\n      move(meta._parsed);\n    }\n    this.parse(start, count);\n\n    if (resetNewElements) {\n      this.updateElements(data, start, count, 'reset');\n    }\n  }\n\n  updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * @private\n\t */\n  _removeElements(start, count) {\n    const meta = this._cachedMeta;\n    if (this._parsing) {\n      const removed = meta._parsed.splice(start, count);\n      if (meta._stacked) {\n        clearStacks(meta, removed);\n      }\n    }\n    meta.data.splice(start, count);\n  }\n\n  /**\n\t * @private\n   */\n  _sync(args) {\n    if (this._parsing) {\n      this._syncList.push(args);\n    } else {\n      const [method, arg1, arg2] = args;\n      this[method](arg1, arg2);\n    }\n    this.chart._dataChanges.push([this.index, ...args]);\n  }\n\n  _onDataPush() {\n    const count = arguments.length;\n    this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n  }\n\n  _onDataPop() {\n    this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n  }\n\n  _onDataShift() {\n    this._sync(['_removeElements', 0, 1]);\n  }\n\n  _onDataSplice(start, count) {\n    if (count) {\n      this._sync(['_removeElements', start, count]);\n    }\n    const newCount = arguments.length - 2;\n    if (newCount) {\n      this._sync(['_insertElements', start, newCount]);\n    }\n  }\n\n  _onDataUnshift() {\n    this._sync(['_insertElements', 0, arguments.length]);\n  }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {\n  _arrayUnique, isArray, isNullOrUndef,\n  valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n  if (!scale._cache.$bar) {\n    const visibleMetas = scale.getMatchingVisibleMetas(type);\n    let values = [];\n\n    for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n      values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n    }\n    scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n  }\n  return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n  const scale = meta.iScale;\n  const values = getAllScaleValues(scale, meta.type);\n  let min = scale._length;\n  let i, ilen, curr, prev;\n  const updateMinAndPrev = () => {\n    if (curr === 32767 || curr === -32768) {\n      // Ignore truncated pixels\n      return;\n    }\n    if (defined(prev)) {\n      // curr - prev === 0 is ignored\n      min = Math.min(min, Math.abs(curr - prev) || min);\n    }\n    prev = curr;\n  };\n\n  for (i = 0, ilen = values.length; i < ilen; ++i) {\n    curr = scale.getPixelForValue(values[i]);\n    updateMinAndPrev();\n  }\n\n  prev = undefined;\n  for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n    curr = scale.getPixelForTick(i);\n    updateMinAndPrev();\n  }\n\n  return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n  const thickness = options.barThickness;\n  let size, ratio;\n\n  if (isNullOrUndef(thickness)) {\n    size = ruler.min * options.categoryPercentage;\n    ratio = options.barPercentage;\n  } else {\n    // When bar thickness is enforced, category and bar percentages are ignored.\n    // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n    // and deprecate barPercentage since this value is ignored when thickness is absolute.\n    size = thickness * stackCount;\n    ratio = 1;\n  }\n\n  return {\n    chunk: size / stackCount,\n    ratio,\n    start: ruler.pixels[index] - (size / 2)\n  };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n  const pixels = ruler.pixels;\n  const curr = pixels[index];\n  let prev = index > 0 ? pixels[index - 1] : null;\n  let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n  const percent = options.categoryPercentage;\n\n  if (prev === null) {\n    // first data: its size is double based on the next point or,\n    // if it's also the last data, we use the scale size.\n    prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n  }\n\n  if (next === null) {\n    // last data: its size is also double based on the previous point.\n    next = curr + curr - prev;\n  }\n\n  const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n  const size = Math.abs(next - prev) / 2 * percent;\n\n  return {\n    chunk: size / stackCount,\n    ratio: options.barPercentage,\n    start\n  };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n  const startValue = vScale.parse(entry[0], i);\n  const endValue = vScale.parse(entry[1], i);\n  const min = Math.min(startValue, endValue);\n  const max = Math.max(startValue, endValue);\n  let barStart = min;\n  let barEnd = max;\n\n  if (Math.abs(min) > Math.abs(max)) {\n    barStart = max;\n    barEnd = min;\n  }\n\n  // Store `barEnd` (furthest away from origin) as parsed value,\n  // to make stacking straight forward\n  item[vScale.axis] = barEnd;\n\n  item._custom = {\n    barStart,\n    barEnd,\n    start: startValue,\n    end: endValue,\n    min,\n    max\n  };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n  if (isArray(entry)) {\n    parseFloatBar(entry, item, vScale, i);\n  } else {\n    item[vScale.axis] = vScale.parse(entry, i);\n  }\n  return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n  const iScale = meta.iScale;\n  const vScale = meta.vScale;\n  const labels = iScale.getLabels();\n  const singleScale = iScale === vScale;\n  const parsed = [];\n  let i, ilen, item, entry;\n\n  for (i = start, ilen = start + count; i < ilen; ++i) {\n    entry = data[i];\n    item = {};\n    item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n    parsed.push(parseValue(entry, item, vScale, i));\n  }\n  return parsed;\n}\n\nfunction isFloatBar(custom) {\n  return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n  if (size !== 0) {\n    return sign(size);\n  }\n  return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n  let reverse, start, end, top, bottom;\n  if (properties.horizontal) {\n    reverse = properties.base > properties.x;\n    start = 'left';\n    end = 'right';\n  } else {\n    reverse = properties.base < properties.y;\n    start = 'bottom';\n    end = 'top';\n  }\n  if (reverse) {\n    top = 'end';\n    bottom = 'start';\n  } else {\n    top = 'start';\n    bottom = 'end';\n  }\n  return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n  let edge = options.borderSkipped;\n  const res = {};\n\n  if (!edge) {\n    properties.borderSkipped = res;\n    return;\n  }\n\n  if (edge === true) {\n    properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n    return;\n  }\n\n  const {start, end, reverse, top, bottom} = borderProps(properties);\n\n  if (edge === 'middle' && stack) {\n    properties.enableBorderRadius = true;\n    if ((stack._top || 0) === index) {\n      edge = top;\n    } else if ((stack._bottom || 0) === index) {\n      edge = bottom;\n    } else {\n      res[parseEdge(bottom, start, end, reverse)] = true;\n      edge = top;\n    }\n  }\n\n  res[parseEdge(edge, start, end, reverse)] = true;\n  properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n  if (reverse) {\n    edge = swap(edge, a, b);\n    edge = startEnd(edge, b, a);\n  } else {\n    edge = startEnd(edge, a, b);\n  }\n  return edge;\n}\n\nfunction swap(orig, v1, v2) {\n  return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n  return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n  properties.inflateAmount = inflateAmount === 'auto'\n    ? ratio === 1 ? 0.33 : 0\n    : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n  static id = 'bar';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'bar',\n\n    categoryPercentage: 0.8,\n    barPercentage: 0.9,\n    grouped: true,\n\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'base', 'width', 'height']\n      }\n    }\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    scales: {\n      _index_: {\n        type: 'category',\n        offset: true,\n        grid: {\n          offset: true\n        }\n      },\n      _value_: {\n        type: 'linear',\n        beginAtZero: true,\n      }\n    }\n  };\n\n\n  /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n  parsePrimitiveData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n\n  /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n  parseArrayData(meta, data, start, count) {\n    return parseArrayOrPrimitive(meta, data, start, count);\n  }\n\n  /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n  parseObjectData(meta, data, start, count) {\n    const {iScale, vScale} = meta;\n    const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n    const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n    const parsed = [];\n    let i, ilen, item, obj;\n    for (i = start, ilen = start + count; i < ilen; ++i) {\n      obj = data[i];\n      item = {};\n      item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n      parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n    }\n    return parsed;\n  }\n\n  /**\n\t * @protected\n\t */\n  updateRangeFromParsed(range, scale, parsed, stack) {\n    super.updateRangeFromParsed(range, scale, parsed, stack);\n    const custom = parsed._custom;\n    if (custom && scale === this._cachedMeta.vScale) {\n      // float bar: only one end of the bar is considered by `super`\n      range.min = Math.min(range.min, custom.min);\n      range.max = Math.max(range.max, custom.max);\n    }\n  }\n\n  /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n  getMaxOverflow() {\n    return 0;\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const {iScale, vScale} = meta;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const value = isFloatBar(custom)\n      ? '[' + custom.start + ', ' + custom.end + ']'\n      : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n    return {\n      label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n      value\n    };\n  }\n\n  initialize() {\n    this.enableOptionSharing = true;\n\n    super.initialize();\n\n    const meta = this._cachedMeta;\n    meta.stack = this.getDataset().stack;\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    this.updateElements(meta.data, 0, meta.data.length, mode);\n  }\n\n  updateElements(bars, start, count, mode) {\n    const reset = mode === 'reset';\n    const {index, _cachedMeta: {vScale}} = this;\n    const base = vScale.getBasePixel();\n    const horizontal = vScale.isHorizontal();\n    const ruler = this._getRuler();\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n    for (let i = start; i < start + count; i++) {\n      const parsed = this.getParsed(i);\n      const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n      const ipixels = this._calculateBarIndexPixels(i, ruler);\n      const stack = (parsed._stacks || {})[vScale.axis];\n\n      const properties = {\n        horizontal,\n        base: vpixels.base,\n        enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n        x: horizontal ? vpixels.head : ipixels.center,\n        y: horizontal ? ipixels.center : vpixels.head,\n        height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n        width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n      };\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n      }\n      const options = properties.options || bars[i].options;\n      setBorderSkipped(properties, options, stack, index);\n      setInflateAmount(properties, options, ruler.ratio);\n      this.updateElement(bars[i], i, properties, mode);\n    }\n  }\n\n  /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n  _getStacks(last, dataIndex) {\n    const {iScale} = this._cachedMeta;\n    const metasets = iScale.getMatchingVisibleMetas(this._type)\n      .filter(meta => meta.controller.options.grouped);\n    const stacked = iScale.options.stacked;\n    const stacks = [];\n    const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n    const iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n    const skipNull = (meta) => {\n      const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);\n      const val = parsed && parsed[meta.vScale.axis];\n\n      if (isNullOrUndef(val) || isNaN(val)) {\n        return true;\n      }\n    };\n\n    for (const meta of metasets) {\n      if (dataIndex !== undefined && skipNull(meta)) {\n        continue;\n      }\n\n      // stacked   | meta.stack\n      //           | found | not found | undefined\n      // false     |   x   |     x     |     x\n      // true      |       |     x     |\n      // undefined |       |     x     |     x\n      if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n        stacks.push(meta.stack);\n      }\n      if (meta.index === last) {\n        break;\n      }\n    }\n\n    // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n    // stack where possible invisible bars will be located.\n    // https://github.com/chartjs/Chart.js/issues/6368\n    if (!stacks.length) {\n      stacks.push(undefined);\n    }\n\n    return stacks;\n  }\n\n  /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n  _getStackCount(index) {\n    return this._getStacks(undefined, index).length;\n  }\n\n  /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n   * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n  _getStackIndex(datasetIndex, name, dataIndex) {\n    const stacks = this._getStacks(datasetIndex, dataIndex);\n    const index = (name !== undefined)\n      ? stacks.indexOf(name)\n      : -1; // indexOf returns -1 if element is not present\n\n    return (index === -1)\n      ? stacks.length - 1\n      : index;\n  }\n\n  /**\n\t * @private\n\t */\n  _getRuler() {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const iScale = meta.iScale;\n    const pixels = [];\n    let i, ilen;\n\n    for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n      pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n    }\n\n    const barThickness = opts.barThickness;\n    const min = barThickness || computeMinSampleSize(meta);\n\n    return {\n      min,\n      pixels,\n      start: iScale._startPixel,\n      end: iScale._endPixel,\n      stackCount: this._getStackCount(),\n      scale: iScale,\n      grouped: opts.grouped,\n      // bar thickness ratio used for non-grouped bars\n      ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n    };\n  }\n\n  /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n  _calculateBarValuePixels(index) {\n    const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n    const actualBase = baseValue || 0;\n    const parsed = this.getParsed(index);\n    const custom = parsed._custom;\n    const floating = isFloatBar(custom);\n    let value = parsed[vScale.axis];\n    let start = 0;\n    let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n    let head, size;\n\n    if (length !== value) {\n      start = length - value;\n      length = value;\n    }\n\n    if (floating) {\n      value = custom.barStart;\n      length = custom.barEnd - custom.barStart;\n      // bars crossing origin are not stacked\n      if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n        start = 0;\n      }\n      start += value;\n    }\n\n    const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n    let base = vScale.getPixelForValue(startValue);\n\n    if (this.chart.getDataVisibility(index)) {\n      head = vScale.getPixelForValue(start + length);\n    } else {\n      // When not visible, no height\n      head = base;\n    }\n\n    size = head - base;\n\n    if (Math.abs(size) < minBarLength) {\n      size = barSign(size, vScale, actualBase) * minBarLength;\n      if (value === actualBase) {\n        base -= size / 2;\n      }\n      const startPixel = vScale.getPixelForDecimal(0);\n      const endPixel = vScale.getPixelForDecimal(1);\n      const min = Math.min(startPixel, endPixel);\n      const max = Math.max(startPixel, endPixel);\n      base = Math.max(Math.min(base, max), min);\n      head = base + size;\n\n      if (_stacked && !floating) {\n        // visual data coordinates after applying minBarLength\n        parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n      }\n    }\n\n    if (base === vScale.getPixelForValue(actualBase)) {\n      const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n      base += halfGrid;\n      size -= halfGrid;\n    }\n\n    return {\n      size,\n      base,\n      head,\n      center: head + size / 2\n    };\n  }\n\n  /**\n\t * @private\n\t */\n  _calculateBarIndexPixels(index, ruler) {\n    const scale = ruler.scale;\n    const options = this.options;\n    const skipNull = options.skipNull;\n    const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n    let center, size;\n    if (ruler.grouped) {\n      const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n      const range = options.barThickness === 'flex'\n        ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n      center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n      size = Math.min(maxBarThickness, range.chunk * range.ratio);\n    } else {\n      // For non-grouped bar charts, exact pixel values are used\n      center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n      size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n    }\n\n    return {\n      base: center - size / 2,\n      head: center + size / 2,\n      center,\n      size\n    };\n  }\n\n  draw() {\n    const meta = this._cachedMeta;\n    const vScale = meta.vScale;\n    const rects = meta.data;\n    const ilen = rects.length;\n    let i = 0;\n\n    for (; i < ilen; ++i) {\n      if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n        rects[i].draw(this._ctx);\n      }\n    }\n  }\n\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n  static id = 'bubble';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'point',\n\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'borderWidth', 'radius']\n      }\n    }\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    scales: {\n      x: {\n        type: 'linear'\n      },\n      y: {\n        type: 'linear'\n      }\n    }\n  };\n\n  initialize() {\n    this.enableOptionSharing = true;\n    super.initialize();\n  }\n\n  /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n  parsePrimitiveData(meta, data, start, count) {\n    const parsed = super.parsePrimitiveData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n  parseArrayData(meta, data, start, count) {\n    const parsed = super.parseArrayData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n\n  /**\n\t * Parse array of objects\n\t * @protected\n\t */\n  parseObjectData(meta, data, start, count) {\n    const parsed = super.parseObjectData(meta, data, start, count);\n    for (let i = 0; i < parsed.length; i++) {\n      const item = data[start + i];\n      parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n    }\n    return parsed;\n  }\n\n  /**\n\t * @protected\n\t */\n  getMaxOverflow() {\n    const data = this._cachedMeta.data;\n\n    let max = 0;\n    for (let i = data.length - 1; i >= 0; --i) {\n      max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n    }\n    return max > 0 && max;\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const labels = this.chart.data.labels || [];\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n    const r = parsed._custom;\n\n    return {\n      label: labels[index] || '',\n      value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n    };\n  }\n\n  update(mode) {\n    const points = this._cachedMeta.data;\n\n    // Update Points\n    this.updateElements(points, 0, points.length, mode);\n  }\n\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const parsed = !reset && this.getParsed(i);\n      const properties = {};\n      const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n      const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n      properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n        if (reset) {\n          properties.options.radius = 0;\n        }\n      }\n\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n\n  /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n  resolveDataElementOptions(index, mode) {\n    const parsed = this.getParsed(index);\n    let values = super.resolveDataElementOptions(index, mode);\n\n    // In case values were cached (and thus frozen), we need to clone the values\n    if (values.$shared) {\n      values = Object.assign({}, values, {$shared: false});\n    }\n\n    // Custom radius resolution\n    const radius = values.radius;\n    if (mode !== 'active') {\n      values.radius = 0;\n    }\n    values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n    return values;\n  }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n  let ratioX = 1;\n  let ratioY = 1;\n  let offsetX = 0;\n  let offsetY = 0;\n  // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n  if (circumference < TAU) {\n    const startAngle = rotation;\n    const endAngle = startAngle + circumference;\n    const startX = Math.cos(startAngle);\n    const startY = Math.sin(startAngle);\n    const endX = Math.cos(endAngle);\n    const endY = Math.sin(endAngle);\n    const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n    const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n    const maxX = calcMax(0, startX, endX);\n    const maxY = calcMax(HALF_PI, startY, endY);\n    const minX = calcMin(PI, startX, endX);\n    const minY = calcMin(PI + HALF_PI, startY, endY);\n    ratioX = (maxX - minX) / 2;\n    ratioY = (maxY - minY) / 2;\n    offsetX = -(maxX + minX) / 2;\n    offsetY = -(maxY + minY) / 2;\n  }\n  return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n  static id = 'doughnut';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'arc',\n    animation: {\n      // Boolean - Whether we animate the rotation of the Doughnut\n      animateRotate: true,\n      // Boolean - Whether we animate scaling the Doughnut from the centre\n      animateScale: false\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n      },\n    },\n    // The percentage of the chart that we cut out of the middle.\n    cutout: '50%',\n\n    // The rotation of the chart, where the first data arc begins.\n    rotation: 0,\n\n    // The total circumference of the chart.\n    circumference: 360,\n\n    // The outer radius of the chart\n    radius: '100%',\n\n    // Spacing between arcs\n    spacing: 0,\n\n    indexAxis: 'r',\n  };\n\n  static descriptors = {\n    _scriptable: (name) => name !== 'spacing',\n    _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'),\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    aspectRatio: 1,\n\n    // Need to override these to give a nice default\n    plugins: {\n      legend: {\n        labels: {\n          generateLabels(chart) {\n            const data = chart.data;\n            if (data.labels.length && data.datasets.length) {\n              const {labels: {pointStyle, color}} = chart.legend.options;\n\n              return data.labels.map((label, i) => {\n                const meta = chart.getDatasetMeta(0);\n                const style = meta.controller.getStyle(i);\n\n                return {\n                  text: label,\n                  fillStyle: style.backgroundColor,\n                  strokeStyle: style.borderColor,\n                  fontColor: color,\n                  lineWidth: style.borderWidth,\n                  pointStyle: pointStyle,\n                  hidden: !chart.getDataVisibility(i),\n\n                  // Extra data used for toggling the correct item\n                  index: i\n                };\n              });\n            }\n            return [];\n          }\n        },\n\n        onClick(e, legendItem, legend) {\n          legend.chart.toggleDataVisibility(legendItem.index);\n          legend.chart.update();\n        }\n      }\n    }\n  };\n\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n\n    this.enableOptionSharing = true;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.offsetX = undefined;\n    this.offsetY = undefined;\n  }\n\n  linkScales() {}\n\n  /**\n\t * Override data parsing, since we are not using scales\n\t */\n  parse(start, count) {\n    const data = this.getDataset().data;\n    const meta = this._cachedMeta;\n\n    if (this._parsing === false) {\n      meta._parsed = data;\n    } else {\n      let getter = (i) => +data[i];\n\n      if (isObject(data[start])) {\n        const {key = 'value'} = this._parsing;\n        getter = (i) => +resolveObjectKey(data[i], key);\n      }\n\n      let i, ilen;\n      for (i = start, ilen = start + count; i < ilen; ++i) {\n        meta._parsed[i] = getter(i);\n      }\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _getRotation() {\n    return toRadians(this.options.rotation - 90);\n  }\n\n  /**\n\t * @private\n\t */\n  _getCircumference() {\n    return toRadians(this.options.circumference);\n  }\n\n  /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n  _getRotationExtents() {\n    let min = TAU;\n    let max = -TAU;\n\n    for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n      if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n        const controller = this.chart.getDatasetMeta(i).controller;\n        const rotation = controller._getRotation();\n        const circumference = controller._getCircumference();\n\n        min = Math.min(min, rotation);\n        max = Math.max(max, rotation + circumference);\n      }\n    }\n\n    return {\n      rotation: min,\n      circumference: max - min,\n    };\n  }\n\n  /**\n\t * @param {string} mode\n\t */\n  update(mode) {\n    const chart = this.chart;\n    const {chartArea} = chart;\n    const meta = this._cachedMeta;\n    const arcs = meta.data;\n    const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n    const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n    const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n    const chartWeight = this._getRingWeight(this.index);\n\n    // Compute the maximal rotation & circumference limits.\n    // If we only consider our dataset, this can cause problems when two datasets\n    // are both less than a circle with different rotations (starting angles)\n    const {circumference, rotation} = this._getRotationExtents();\n    const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n    const maxWidth = (chartArea.width - spacing) / ratioX;\n    const maxHeight = (chartArea.height - spacing) / ratioY;\n    const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n    const outerRadius = toDimension(this.options.radius, maxRadius);\n    const innerRadius = Math.max(outerRadius * cutout, 0);\n    const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n    this.offsetX = offsetX * outerRadius;\n    this.offsetY = offsetY * outerRadius;\n\n    meta.total = this.calculateTotal();\n\n    this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n    this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n\n  /**\n   * @private\n   */\n  _circumference(i, reset) {\n    const opts = this.options;\n    const meta = this._cachedMeta;\n    const circumference = this._getCircumference();\n    if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n      return 0;\n    }\n    return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n  }\n\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const centerX = (chartArea.left + chartArea.right) / 2;\n    const centerY = (chartArea.top + chartArea.bottom) / 2;\n    const animateScale = reset && animationOpts.animateScale;\n    const innerRadius = animateScale ? 0 : this.innerRadius;\n    const outerRadius = animateScale ? 0 : this.outerRadius;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    let startAngle = this._getRotation();\n    let i;\n\n    for (i = 0; i < start; ++i) {\n      startAngle += this._circumference(i, reset);\n    }\n\n    for (i = start; i < start + count; ++i) {\n      const circumference = this._circumference(i, reset);\n      const arc = arcs[i];\n      const properties = {\n        x: centerX + this.offsetX,\n        y: centerY + this.offsetY,\n        startAngle,\n        endAngle: startAngle + circumference,\n        circumference,\n        outerRadius,\n        innerRadius\n      };\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n      }\n      startAngle += circumference;\n\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n\n  calculateTotal() {\n    const meta = this._cachedMeta;\n    const metaData = meta.data;\n    let total = 0;\n    let i;\n\n    for (i = 0; i < metaData.length; i++) {\n      const value = meta._parsed[i];\n      if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n        total += Math.abs(value);\n      }\n    }\n\n    return total;\n  }\n\n  calculateCircumference(value) {\n    const total = this._cachedMeta.total;\n    if (total > 0 && !isNaN(value)) {\n      return TAU * (Math.abs(value) / total);\n    }\n    return 0;\n  }\n\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n\n  getMaxBorderWidth(arcs) {\n    let max = 0;\n    const chart = this.chart;\n    let i, ilen, meta, controller, options;\n\n    if (!arcs) {\n      // Find the outmost visible dataset\n      for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n        if (chart.isDatasetVisible(i)) {\n          meta = chart.getDatasetMeta(i);\n          arcs = meta.data;\n          controller = meta.controller;\n          break;\n        }\n      }\n    }\n\n    if (!arcs) {\n      return 0;\n    }\n\n    for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n      options = controller.resolveDataElementOptions(i);\n      if (options.borderAlign !== 'inner') {\n        max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n      }\n    }\n    return max;\n  }\n\n  getMaxOffset(arcs) {\n    let max = 0;\n\n    for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n      const options = this.resolveDataElementOptions(i);\n      max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n    }\n    return max;\n  }\n\n  /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n  _getRingWeightOffset(datasetIndex) {\n    let ringWeightOffset = 0;\n\n    for (let i = 0; i < datasetIndex; ++i) {\n      if (this.chart.isDatasetVisible(i)) {\n        ringWeightOffset += this._getRingWeight(i);\n      }\n    }\n\n    return ringWeightOffset;\n  }\n\n  /**\n\t * @private\n\t */\n  _getRingWeight(datasetIndex) {\n    return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n  }\n\n  /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n  _getVisibleDatasetWeightTotal() {\n    return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n  }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n  static id = 'line';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: 'line',\n    dataElementType: 'point',\n\n    showLine: true,\n    spanGaps: false,\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    scales: {\n      _index_: {\n        type: 'category',\n      },\n      _value_: {\n        type: 'linear',\n      },\n    }\n  };\n\n  initialize() {\n    this.enableOptionSharing = true;\n    this.supportsDecimation = true;\n    super.initialize();\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {dataset: line, data: points = [], _dataset} = meta;\n    // @ts-ignore\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n    this._drawStart = start;\n    this._drawCount = count;\n\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n\n    // Update Line\n    line._chart = this.chart;\n    line._datasetIndex = this.index;\n    line._decimated = !!_dataset._decimated;\n    line.points = points;\n\n    const options = this.resolveDatasetElementOptions(mode);\n    if (!this.options.showLine) {\n      options.borderWidth = 0;\n    }\n    options.segment = this.options.segment;\n    this.updateElement(line, undefined, {\n      animated: !animationsDisabled,\n      options\n    }, mode);\n\n    // Update Points\n    this.updateElements(points, start, count, mode);\n  }\n\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    const end = start + count;\n    const pointsCount = points.length;\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n\n    for (let i = 0; i < pointsCount; ++i) {\n      const point = points[i];\n      const properties = directUpdate ? point : {};\n\n      if (i < start || i >= end) {\n        properties.skip = true;\n        continue;\n      }\n\n      const parsed = this.getParsed(i);\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n\n      prevParsed = parsed;\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n    const data = meta.data || [];\n    if (!data.length) {\n      return border;\n    }\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n\n  draw() {\n    const meta = this._cachedMeta;\n    meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n    super.draw();\n  }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n  static id = 'polarArea';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    dataElementType: 'arc',\n    animation: {\n      animateRotate: true,\n      animateScale: true\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n      },\n    },\n    indexAxis: 'r',\n    startAngle: 0,\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    aspectRatio: 1,\n\n    plugins: {\n      legend: {\n        labels: {\n          generateLabels(chart) {\n            const data = chart.data;\n            if (data.labels.length && data.datasets.length) {\n              const {labels: {pointStyle, color}} = chart.legend.options;\n\n              return data.labels.map((label, i) => {\n                const meta = chart.getDatasetMeta(0);\n                const style = meta.controller.getStyle(i);\n\n                return {\n                  text: label,\n                  fillStyle: style.backgroundColor,\n                  strokeStyle: style.borderColor,\n                  fontColor: color,\n                  lineWidth: style.borderWidth,\n                  pointStyle: pointStyle,\n                  hidden: !chart.getDataVisibility(i),\n\n                  // Extra data used for toggling the correct item\n                  index: i\n                };\n              });\n            }\n            return [];\n          }\n        },\n\n        onClick(e, legendItem, legend) {\n          legend.chart.toggleDataVisibility(legendItem.index);\n          legend.chart.update();\n        }\n      }\n    },\n\n    scales: {\n      r: {\n        type: 'radialLinear',\n        angleLines: {\n          display: false\n        },\n        beginAtZero: true,\n        grid: {\n          circular: true\n        },\n        pointLabels: {\n          display: false\n        },\n        startAngle: 0\n      }\n    }\n  };\n\n  constructor(chart, datasetIndex) {\n    super(chart, datasetIndex);\n\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n  }\n\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const chart = this.chart;\n    const labels = chart.data.labels || [];\n    const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n    return {\n      label: labels[index] || '',\n      value,\n    };\n  }\n\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n\n  update(mode) {\n    const arcs = this._cachedMeta.data;\n\n    this._updateRadius();\n    this.updateElements(arcs, 0, arcs.length, mode);\n  }\n\n  /**\n   * @protected\n   */\n  getMinMax() {\n    const meta = this._cachedMeta;\n    const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n    meta.data.forEach((element, index) => {\n      const parsed = this.getParsed(index).r;\n\n      if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n        if (parsed < range.min) {\n          range.min = parsed;\n        }\n\n        if (parsed > range.max) {\n          range.max = parsed;\n        }\n      }\n    });\n\n    return range;\n  }\n\n  /**\n\t * @private\n\t */\n  _updateRadius() {\n    const chart = this.chart;\n    const chartArea = chart.chartArea;\n    const opts = chart.options;\n    const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n    const outerRadius = Math.max(minSize / 2, 0);\n    const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n    const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n    this.outerRadius = outerRadius - (radiusLength * this.index);\n    this.innerRadius = this.outerRadius - radiusLength;\n  }\n\n  updateElements(arcs, start, count, mode) {\n    const reset = mode === 'reset';\n    const chart = this.chart;\n    const opts = chart.options;\n    const animationOpts = opts.animation;\n    const scale = this._cachedMeta.rScale;\n    const centerX = scale.xCenter;\n    const centerY = scale.yCenter;\n    const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n    let angle = datasetStartAngle;\n    let i;\n\n    const defaultAngle = 360 / this.countVisibleElements();\n\n    for (i = 0; i < start; ++i) {\n      angle += this._computeAngle(i, mode, defaultAngle);\n    }\n    for (i = start; i < start + count; i++) {\n      const arc = arcs[i];\n      let startAngle = angle;\n      let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n      let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n      angle = endAngle;\n\n      if (reset) {\n        if (animationOpts.animateScale) {\n          outerRadius = 0;\n        }\n        if (animationOpts.animateRotate) {\n          startAngle = endAngle = datasetStartAngle;\n        }\n      }\n\n      const properties = {\n        x: centerX,\n        y: centerY,\n        innerRadius: 0,\n        outerRadius,\n        startAngle,\n        endAngle,\n        options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n      };\n\n      this.updateElement(arc, i, properties, mode);\n    }\n  }\n\n  countVisibleElements() {\n    const meta = this._cachedMeta;\n    let count = 0;\n\n    meta.data.forEach((element, index) => {\n      if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n        count++;\n      }\n    });\n\n    return count;\n  }\n\n  /**\n\t * @private\n\t */\n  _computeAngle(index, mode, defaultAngle) {\n    return this.chart.getDataVisibility(index)\n      ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n      : 0;\n  }\n}\n","import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n  static id = 'pie';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    // The percentage of the chart that we cut out of the middle.\n    cutout: 0,\n\n    // The rotation of the chart, where the first data arc begins.\n    rotation: 0,\n\n    // The total circumference of the chart.\n    circumference: 360,\n\n    // The outer radius of the chart\n    radius: '100%'\n  };\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n  static id = 'radar';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: 'line',\n    dataElementType: 'point',\n    indexAxis: 'r',\n    showLine: true,\n    elements: {\n      line: {\n        fill: 'start'\n      }\n    },\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n    aspectRatio: 1,\n\n    scales: {\n      r: {\n        type: 'radialLinear',\n      }\n    }\n  };\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const vScale = this._cachedMeta.vScale;\n    const parsed = this.getParsed(index);\n\n    return {\n      label: vScale.getLabels()[index],\n      value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n    };\n  }\n\n  parseObjectData(meta, data, start, count) {\n    return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    const line = meta.dataset;\n    const points = meta.data || [];\n    const labels = meta.iScale.getLabels();\n\n    // Update Line\n    line.points = points;\n    // In resize mode only point locations change, so no need to set the points or options.\n    if (mode !== 'resize') {\n      const options = this.resolveDatasetElementOptions(mode);\n      if (!this.options.showLine) {\n        options.borderWidth = 0;\n      }\n\n      const properties = {\n        _loop: true,\n        _fullLoop: labels.length === points.length,\n        options\n      };\n\n      this.updateElement(line, undefined, properties, mode);\n    }\n\n    // Update Points\n    this.updateElements(points, 0, points.length, mode);\n  }\n\n  updateElements(points, start, count, mode) {\n    const scale = this._cachedMeta.rScale;\n    const reset = mode === 'reset';\n\n    for (let i = start; i < start + count; i++) {\n      const point = points[i];\n      const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n      const x = reset ? scale.xCenter : pointPosition.x;\n      const y = reset ? scale.yCenter : pointPosition.y;\n\n      const properties = {\n        x,\n        y,\n        angle: pointPosition.angle,\n        skip: isNaN(x) || isNaN(y),\n        options\n      };\n\n      this.updateElement(point, i, properties, mode);\n    }\n  }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n  static id = 'scatter';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    datasetElementType: false,\n    dataElementType: 'point',\n    showLine: false,\n    fill: false\n  };\n\n  /**\n   * @type {any}\n   */\n  static overrides = {\n\n    interaction: {\n      mode: 'point'\n    },\n\n    scales: {\n      x: {\n        type: 'linear'\n      },\n      y: {\n        type: 'linear'\n      }\n    }\n  };\n\n  /**\n\t * @protected\n\t */\n  getLabelAndValue(index) {\n    const meta = this._cachedMeta;\n    const labels = this.chart.data.labels || [];\n    const {xScale, yScale} = meta;\n    const parsed = this.getParsed(index);\n    const x = xScale.getLabelForValue(parsed.x);\n    const y = yScale.getLabelForValue(parsed.y);\n\n    return {\n      label: labels[index] || '',\n      value: '(' + x + ', ' + y + ')'\n    };\n  }\n\n  update(mode) {\n    const meta = this._cachedMeta;\n    const {data: points = []} = meta;\n    // @ts-ignore\n    const animationsDisabled = this.chart._animationsDisabled;\n    let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n    this._drawStart = start;\n    this._drawCount = count;\n\n    if (_scaleRangesChanged(meta)) {\n      start = 0;\n      count = points.length;\n    }\n\n    if (this.options.showLine) {\n\n      // https://github.com/chartjs/Chart.js/issues/11333\n      if (!this.datasetElementType) {\n        this.addElements();\n      }\n      const {dataset: line, _dataset} = meta;\n\n      // Update Line\n      line._chart = this.chart;\n      line._datasetIndex = this.index;\n      line._decimated = !!_dataset._decimated;\n      line.points = points;\n\n      const options = this.resolveDatasetElementOptions(mode);\n      options.segment = this.options.segment;\n      this.updateElement(line, undefined, {\n        animated: !animationsDisabled,\n        options\n      }, mode);\n    } else if (this.datasetElementType) {\n      // https://github.com/chartjs/Chart.js/issues/11333\n      delete meta.dataset;\n      this.datasetElementType = false;\n    }\n\n    // Update Points\n    this.updateElements(points, start, count, mode);\n  }\n\n  addElements() {\n    const {showLine} = this.options;\n\n    if (!this.datasetElementType && showLine) {\n      this.datasetElementType = this.chart.registry.getElement('line');\n    }\n\n    super.addElements();\n  }\n\n  updateElements(points, start, count, mode) {\n    const reset = mode === 'reset';\n    const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n    const firstOpts = this.resolveDataElementOptions(start, mode);\n    const sharedOptions = this.getSharedOptions(firstOpts);\n    const includeOptions = this.includeOptions(mode, sharedOptions);\n    const iAxis = iScale.axis;\n    const vAxis = vScale.axis;\n    const {spanGaps, segment} = this.options;\n    const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n    const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n    let prevParsed = start > 0 && this.getParsed(start - 1);\n\n    for (let i = start; i < start + count; ++i) {\n      const point = points[i];\n      const parsed = this.getParsed(i);\n      const properties = directUpdate ? point : {};\n      const nullData = isNullOrUndef(parsed[vAxis]);\n      const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n      const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n      properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n      properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n      if (segment) {\n        properties.parsed = parsed;\n        properties.raw = _dataset.data[i];\n      }\n\n      if (includeOptions) {\n        properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n      }\n\n      if (!directUpdate) {\n        this.updateElement(point, i, properties, mode);\n      }\n\n      prevParsed = parsed;\n    }\n\n    this.updateSharedOptions(sharedOptions, mode, firstOpts);\n  }\n\n  /**\n\t * @protected\n\t */\n  getMaxOverflow() {\n    const meta = this._cachedMeta;\n    const data = meta.data || [];\n\n    if (!this.options.showLine) {\n      let max = 0;\n      for (let i = data.length - 1; i >= 0; --i) {\n        max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n      }\n      return max > 0 && max;\n    }\n\n    const dataset = meta.dataset;\n    const border = dataset.options && dataset.options.borderWidth || 0;\n\n    if (!data.length) {\n      return border;\n    }\n\n    const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n    const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n    return Math.max(border, firstPoint, lastPoint) / 2;\n  }\n}\n","/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter<T extends AnyObject = AnyObject> {\n  readonly options: T;\n  /**\n   * Will called with chart options after adapter creation.\n   */\n  init(this: DateAdapter<T>, chartOptions: ChartOptions): void;\n  /**\n   * Returns a map of time formats for the supported formatting units defined\n   * in Unit as well as 'datetime' representing a detailed date/time string.\n   */\n  formats(this: DateAdapter<T>): Record<string, string>;\n  /**\n   * Parses the given `value` and return the associated timestamp.\n   * @param value - the value to parse (usually comes from the data)\n   * @param [format] - the expected data format\n   */\n  parse(this: DateAdapter<T>, value: unknown, format?: TimeUnit): number | null;\n  /**\n   * Returns the formatted date in the specified `format` for a given `timestamp`.\n   * @param timestamp - the timestamp to format\n   * @param format - the date/time token\n   */\n  format(this: DateAdapter<T>, timestamp: number, format: TimeUnit): string;\n  /**\n   * Adds the specified `amount` of `unit` to the given `timestamp`.\n   * @param timestamp - the input timestamp\n   * @param amount - the amount to add\n   * @param unit - the unit as string\n   */\n  add(this: DateAdapter<T>, timestamp: number, amount: number, unit: TimeUnit): number;\n  /**\n   * Returns the number of `unit` between the given timestamps.\n   * @param a - the input timestamp (reference)\n   * @param b - the timestamp to subtract\n   * @param unit - the unit as string\n   */\n  diff(this: DateAdapter<T>, a: number, b: number, unit: TimeUnit): number;\n  /**\n   * Returns start of `unit` for the given `timestamp`.\n   * @param timestamp - the input timestamp\n   * @param unit - the unit as string\n   * @param [weekday] - the ISO day of the week with 1 being Monday\n   * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n   */\n  startOf(this: DateAdapter<T>, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number): number;\n  /**\n   * Returns end of `unit` for the given `timestamp`.\n   * @param timestamp - the input timestamp\n   * @param unit - the unit as string\n   */\n  endOf(this: DateAdapter<T>, timestamp: number, unit: TimeUnit | 'isoWeek'): number;\n}\n\nfunction abstract<T = void>(): T {\n  throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n  /**\n   * Override default date adapter methods.\n   * Accepts type parameter to define options type.\n   * @example\n   * Chart._adapters._date.override<{myAdapterOption: string}>({\n   *   init() {\n   *     console.log(this.options.myAdapterOption);\n   *   }\n   * })\n   */\n  static override<T extends AnyObject = AnyObject>(\n    members: Partial<Omit<DateAdapter<T>, 'options'>>\n  ) {\n    Object.assign(DateAdapterBase.prototype, members);\n  }\n\n  readonly options: AnyObject;\n\n  constructor(options: AnyObject) {\n    this.options = options || {};\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  init() {}\n\n  formats(): Record<string, string> {\n    return abstract();\n  }\n\n  parse(): number | null {\n    return abstract();\n  }\n\n  format(): string {\n    return abstract();\n  }\n\n  add(): number {\n    return abstract();\n  }\n\n  diff(): number {\n    return abstract();\n  }\n\n  startOf(): number {\n    return abstract();\n  }\n\n  endOf(): number {\n    return abstract();\n  }\n}\n\nexport default {\n  _date: DateAdapterBase\n};\n","import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n  const {controller, data, _sorted} = metaset;\n  const iScale = controller._cachedMeta.iScale;\n  if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n    const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n    if (!intersect) {\n      return lookupMethod(data, axis, value);\n    } else if (controller._sharedOptions) {\n      // _sharedOptions indicates that each element has equal options -> equal proportions\n      // So we can do a ranged binary search based on the range of first element and\n      // be confident to get the full range of indices that can intersect with the value.\n      const el = data[0];\n      const range = typeof el.getRange === 'function' && el.getRange(axis);\n      if (range) {\n        const start = lookupMethod(data, axis, value - range);\n        const end = lookupMethod(data, axis, value + range);\n        return {lo: start.lo, hi: end.hi};\n      }\n    }\n  }\n  // Default to all elements, when binary search can not be used.\n  return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n  const metasets = chart.getSortedVisibleDatasetMetas();\n  const value = position[axis];\n  for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n    const {index, data} = metasets[i];\n    const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n    for (let j = lo; j <= hi; ++j) {\n      const element = data[j];\n      if (!element.skip) {\n        handler(element, index, j);\n      }\n    }\n  }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n  const useX = axis.indexOf('x') !== -1;\n  const useY = axis.indexOf('y') !== -1;\n\n  return function(pt1, pt2) {\n    const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n    const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n    return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n  };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n  const items = [];\n\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return items;\n  }\n\n  const evaluationFunc = function(element, datasetIndex, index) {\n    if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n      return;\n    }\n    if (element.inRange(position.x, position.y, useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n    }\n  };\n\n  evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n  return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n  let items = [];\n\n  function evaluationFunc(element, datasetIndex, index) {\n    const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n    const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n    if (_angleBetween(angle, startAngle, endAngle)) {\n      items.push({element, datasetIndex, index});\n    }\n  }\n\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  let items = [];\n  const distanceMetric = getDistanceMetricForAxis(axis);\n  let minDistance = Number.POSITIVE_INFINITY;\n\n  function evaluationFunc(element, datasetIndex, index) {\n    const inRange = element.inRange(position.x, position.y, useFinalPosition);\n    if (intersect && !inRange) {\n      return;\n    }\n\n    const center = element.getCenterPoint(useFinalPosition);\n    const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n    if (!pointInArea && !inRange) {\n      return;\n    }\n\n    const distance = distanceMetric(position, center);\n    if (distance < minDistance) {\n      items = [{element, datasetIndex, index}];\n      minDistance = distance;\n    } else if (distance === minDistance) {\n      // Can have multiple items at the same distance in which case we sort by size\n      items.push({element, datasetIndex, index});\n    }\n  }\n\n  evaluateInteractionItems(chart, axis, position, evaluationFunc);\n  return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n  if (!includeInvisible && !chart.isPointInArea(position)) {\n    return [];\n  }\n\n  return axis === 'r' && !intersect\n    ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n    : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n  const items = [];\n  const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n  let intersectsItem = false;\n\n  evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n    if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n      items.push({element, datasetIndex, index});\n      intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n    }\n  });\n\n  // If we want to trigger on an intersect and we don't have any items\n  // that intersect the position, return nothing\n  if (intersect && !intersectsItem) {\n    return [];\n  }\n  return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n  // Part of the public API to facilitate developers creating their own modes\n  evaluateInteractionItems,\n\n  // Helper function for different modes\n  modes: {\n    /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    index(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      // Default axis for index mode is 'x' to match old behaviour\n      const axis = options.axis || 'x';\n      const includeInvisible = options.includeInvisible || false;\n      const items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n        : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n      const elements = [];\n\n      if (!items.length) {\n        return [];\n      }\n\n      chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n        const index = items[0].index;\n        const element = meta.data[index];\n\n        // don't count items that are skipped (null data)\n        if (element && !element.skip) {\n          elements.push({element, datasetIndex: meta.index, index});\n        }\n      });\n\n      return elements;\n    },\n\n    /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    dataset(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      let items = options.intersect\n        ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n        getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n      if (items.length > 0) {\n        const datasetIndex = items[0].datasetIndex;\n        const data = chart.getDatasetMeta(datasetIndex).data;\n        items = [];\n        for (let i = 0; i < data.length; ++i) {\n          items.push({element: data[i], datasetIndex, index: i});\n        }\n      }\n\n      return items;\n    },\n\n    /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    point(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n    },\n\n    /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    nearest(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      const axis = options.axis || 'xy';\n      const includeInvisible = options.includeInvisible || false;\n      return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n    },\n\n    /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    x(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n    },\n\n    /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n    y(chart, e, options, useFinalPosition) {\n      const position = getRelativePosition(e, chart);\n      return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n    }\n  }\n};\n","import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n  return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n  return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n  return array.sort((a, b) => {\n    const v0 = reverse ? b : a;\n    const v1 = reverse ? a : b;\n    return v0.weight === v1.weight ?\n      v0.index - v1.index :\n      v0.weight - v1.weight;\n  });\n}\n\nfunction wrapBoxes(boxes) {\n  const layoutBoxes = [];\n  let i, ilen, box, pos, stack, stackWeight;\n\n  for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n    box = boxes[i];\n    ({position: pos, options: {stack, stackWeight = 1}} = box);\n    layoutBoxes.push({\n      index: i,\n      box,\n      pos,\n      horizontal: box.isHorizontal(),\n      weight: box.weight,\n      stack: stack && (pos + stack),\n      stackWeight\n    });\n  }\n  return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n  const stacks = {};\n  for (const wrap of layouts) {\n    const {stack, pos, stackWeight} = wrap;\n    if (!stack || !STATIC_POSITIONS.includes(pos)) {\n      continue;\n    }\n    const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n    _stack.count++;\n    _stack.weight += stackWeight;\n  }\n  return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n  const stacks = buildStacks(layouts);\n  const {vBoxMaxWidth, hBoxMaxHeight} = params;\n  let i, ilen, layout;\n  for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n    layout = layouts[i];\n    const {fullSize} = layout.box;\n    const stack = stacks[layout.stack];\n    const factor = stack && layout.stackWeight / stack.weight;\n    if (layout.horizontal) {\n      layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n      layout.height = hBoxMaxHeight;\n    } else {\n      layout.width = vBoxMaxWidth;\n      layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n    }\n  }\n  return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n  const layoutBoxes = wrapBoxes(boxes);\n  const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n  const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n  const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n  const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n  const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n  const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n  const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n  return {\n    fullSize,\n    leftAndTop: left.concat(top),\n    rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n    chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n    vertical: left.concat(right).concat(centerVertical),\n    horizontal: top.concat(bottom).concat(centerHorizontal)\n  };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n  return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n  maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n  maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n  maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n  maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n  const {pos, box} = layout;\n  const maxPadding = chartArea.maxPadding;\n\n  // dynamically placed boxes size is not considered\n  if (!isObject(pos)) {\n    if (layout.size) {\n      // this layout was already counted for, lets first reduce old size\n      chartArea[pos] -= layout.size;\n    }\n    const stack = stacks[layout.stack] || {size: 0, count: 1};\n    stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n    layout.size = stack.size / stack.count;\n    chartArea[pos] += layout.size;\n  }\n\n  if (box.getPadding) {\n    updateMaxPadding(maxPadding, box.getPadding());\n  }\n\n  const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n  const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n  const widthChanged = newWidth !== chartArea.w;\n  const heightChanged = newHeight !== chartArea.h;\n  chartArea.w = newWidth;\n  chartArea.h = newHeight;\n\n  // return booleans on the changes per direction\n  return layout.horizontal\n    ? {same: widthChanged, other: heightChanged}\n    : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n  const maxPadding = chartArea.maxPadding;\n\n  function updatePos(pos) {\n    const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n    chartArea[pos] += change;\n    return change;\n  }\n  chartArea.y += updatePos('top');\n  chartArea.x += updatePos('left');\n  updatePos('right');\n  updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n  const maxPadding = chartArea.maxPadding;\n\n  function marginForPositions(positions) {\n    const margin = {left: 0, top: 0, right: 0, bottom: 0};\n    positions.forEach((pos) => {\n      margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n    });\n    return margin;\n  }\n\n  return horizontal\n    ? marginForPositions(['left', 'right'])\n    : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n  const refitBoxes = [];\n  let i, ilen, layout, box, refit, changed;\n\n  for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n    layout = boxes[i];\n    box = layout.box;\n\n    box.update(\n      layout.width || chartArea.w,\n      layout.height || chartArea.h,\n      getMargins(layout.horizontal, chartArea)\n    );\n    const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n    // Dimensions changed and there were non full width boxes before this\n    // -> we have to refit those\n    refit |= same && refitBoxes.length;\n\n    // Chart area changed in the opposite direction\n    changed = changed || other;\n\n    if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n      refitBoxes.push(layout);\n    }\n  }\n\n  return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n  box.top = top;\n  box.left = left;\n  box.right = left + width;\n  box.bottom = top + height;\n  box.width = width;\n  box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n  const userPadding = params.padding;\n  let {x, y} = chartArea;\n\n  for (const layout of boxes) {\n    const box = layout.box;\n    const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n    const weight = (layout.stackWeight / stack.weight) || 1;\n    if (layout.horizontal) {\n      const width = chartArea.w * weight;\n      const height = stack.size || box.height;\n      if (defined(stack.start)) {\n        y = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n      } else {\n        setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n      }\n      stack.start = y;\n      stack.placed += width;\n      y = box.bottom;\n    } else {\n      const height = chartArea.h * weight;\n      const width = stack.size || box.width;\n      if (defined(stack.start)) {\n        x = stack.start;\n      }\n      if (box.fullSize) {\n        setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n      } else {\n        setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n      }\n      stack.start = x;\n      stack.placed += height;\n      x = box.right;\n    }\n  }\n\n  chartArea.x = x;\n  chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] -  Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory.  It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n  /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n  addBox(chart, item) {\n    if (!chart.boxes) {\n      chart.boxes = [];\n    }\n\n    // initialize item with default values\n    item.fullSize = item.fullSize || false;\n    item.position = item.position || 'top';\n    item.weight = item.weight || 0;\n    // @ts-ignore\n    item._layers = item._layers || function() {\n      return [{\n        z: 0,\n        draw(chartArea) {\n          item.draw(chartArea);\n        }\n      }];\n    };\n\n    chart.boxes.push(item);\n  },\n\n  /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n  removeBox(chart, layoutItem) {\n    const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n    if (index !== -1) {\n      chart.boxes.splice(index, 1);\n    }\n  },\n\n  /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n  configure(chart, item, options) {\n    item.fullSize = options.fullSize;\n    item.position = options.position;\n    item.weight = options.weight;\n  },\n\n  /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n   * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n  update(chart, width, height, minPadding) {\n    if (!chart) {\n      return;\n    }\n\n    const padding = toPadding(chart.options.layout.padding);\n    const availableWidth = Math.max(width - padding.width, 0);\n    const availableHeight = Math.max(height - padding.height, 0);\n    const boxes = buildLayoutBoxes(chart.boxes);\n    const verticalBoxes = boxes.vertical;\n    const horizontalBoxes = boxes.horizontal;\n\n    // Before any changes are made, notify boxes that an update is about to being\n    // This is used to clear any cached data (e.g. scale limits)\n    each(chart.boxes, box => {\n      if (typeof box.beforeLayout === 'function') {\n        box.beforeLayout();\n      }\n    });\n\n    // Essentially we now have any number of boxes on each of the 4 sides.\n    // Our canvas looks like the following.\n    // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n    // B1 is the bottom axis\n    // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n    // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n    // an error will be thrown.\n    //\n    // |----------------------------------------------------|\n    // |                  T1 (Full Width)                   |\n    // |----------------------------------------------------|\n    // |    |    |                 T2                  |    |\n    // |    |----|-------------------------------------|----|\n    // |    |    | C1 |                           | C2 |    |\n    // |    |    |----|                           |----|    |\n    // |    |    |                                     |    |\n    // | L1 | L2 |           ChartArea (C0)            | R1 |\n    // |    |    |                                     |    |\n    // |    |    |----|                           |----|    |\n    // |    |    | C3 |                           | C4 |    |\n    // |    |----|-------------------------------------|----|\n    // |    |    |                 B1                  |    |\n    // |----------------------------------------------------|\n    // |                  B2 (Full Width)                   |\n    // |----------------------------------------------------|\n    //\n\n    const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n      wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n    const params = Object.freeze({\n      outerWidth: width,\n      outerHeight: height,\n      padding,\n      availableWidth,\n      availableHeight,\n      vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n      hBoxMaxHeight: availableHeight / 2\n    });\n    const maxPadding = Object.assign({}, padding);\n    updateMaxPadding(maxPadding, toPadding(minPadding));\n    const chartArea = Object.assign({\n      maxPadding,\n      w: availableWidth,\n      h: availableHeight,\n      x: padding.left,\n      y: padding.top\n    }, padding);\n\n    const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n    // First fit the fullSize boxes, to reduce probability of re-fitting.\n    fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n    // Then fit vertical boxes\n    fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n    // Then fit horizontal boxes\n    if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n      // if the area changed, re-fit vertical boxes\n      fitBoxes(verticalBoxes, chartArea, params, stacks);\n    }\n\n    handleMaxPadding(chartArea);\n\n    // Finally place the boxes to correct coordinates\n    placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n    // Move to opposite side of chart\n    chartArea.x += chartArea.w;\n    chartArea.y += chartArea.h;\n\n    placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n    chart.chartArea = {\n      left: chartArea.left,\n      top: chartArea.top,\n      right: chartArea.left + chartArea.w,\n      bottom: chartArea.top + chartArea.h,\n      height: chartArea.h,\n      width: chartArea.w,\n    };\n\n    // Finally update boxes in chartArea (radial scale for example)\n    each(boxes.chartArea, (layout) => {\n      const box = layout.box;\n      Object.assign(box, chart.chartArea);\n      box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n    });\n  }\n};\n","\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n  /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n  acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n  releaseContext(context) { // eslint-disable-line no-unused-vars\n    return false;\n  }\n\n  /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n  addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n  removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n  getDevicePixelRatio() {\n    return 1;\n  }\n\n  /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n  getMaximumSize(element, width, height, aspectRatio) {\n    width = Math.max(0, width || element.width);\n    height = height || element.height;\n    return {\n      width,\n      height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n    };\n  }\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n  isAttached(canvas) { // eslint-disable-line no-unused-vars\n    return true;\n  }\n\n  /**\n   * Updates config with platform specific requirements\n   * @param {import('../core/core.config.js').default} config\n   */\n  updateConfig(config) { // eslint-disable-line no-unused-vars\n    // no-op\n  }\n}\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n  acquireContext(item) {\n    // To prevent canvas fingerprinting, some add-ons undefine the getContext\n    // method, for example: https://github.com/kkapsner/CanvasBlocker\n    // https://github.com/chartjs/Chart.js/issues/2807\n    return item && item.getContext && item.getContext('2d') || null;\n  }\n  updateConfig(config) {\n    config.options.animation = false;\n  }\n}\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n  touchstart: 'mousedown',\n  touchmove: 'mousemove',\n  touchend: 'mouseup',\n  pointerenter: 'mouseenter',\n  pointerdown: 'mousedown',\n  pointermove: 'mousemove',\n  pointerup: 'mouseup',\n  pointerleave: 'mouseout',\n  pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n  const style = canvas.style;\n\n  // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n  // returns null or '' if no explicit value has been set to the canvas attribute.\n  const renderHeight = canvas.getAttribute('height');\n  const renderWidth = canvas.getAttribute('width');\n\n  // Chart.js modifies some canvas values that we want to restore on destroy\n  canvas[EXPANDO_KEY] = {\n    initial: {\n      height: renderHeight,\n      width: renderWidth,\n      style: {\n        display: style.display,\n        height: style.height,\n        width: style.width\n      }\n    }\n  };\n\n  // Force canvas to display as block to avoid extra space caused by inline\n  // elements, which would interfere with the responsive resize process.\n  // https://github.com/chartjs/Chart.js/issues/2538\n  style.display = style.display || 'block';\n  // Include possible borders in the size\n  style.boxSizing = style.boxSizing || 'border-box';\n\n  if (isNullOrEmpty(renderWidth)) {\n    const displayWidth = readUsedSize(canvas, 'width');\n    if (displayWidth !== undefined) {\n      canvas.width = displayWidth;\n    }\n  }\n\n  if (isNullOrEmpty(renderHeight)) {\n    if (canvas.style.height === '') {\n      // If no explicit render height and style height, let's apply the aspect ratio,\n      // which one can be specified by the user but also by charts as default option\n      // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n      canvas.height = canvas.width / (aspectRatio || 2);\n    } else {\n      const displayHeight = readUsedSize(canvas, 'height');\n      if (displayHeight !== undefined) {\n        canvas.height = displayHeight;\n      }\n    }\n  }\n\n  return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n  if (node) {\n    node.addEventListener(type, listener, eventListenerOptions);\n  }\n}\n\nfunction removeListener(chart, type, listener) {\n  if (chart && chart.canvas) {\n    chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n  }\n}\n\nfunction fromNativeEvent(event, chart) {\n  const type = EVENT_TYPES[event.type] || event.type;\n  const {x, y} = getRelativePosition(event, chart);\n  return {\n    type,\n    chart,\n    native: event,\n    x: x !== undefined ? x : null,\n    y: y !== undefined ? y : null,\n  };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n  for (const node of nodeList) {\n    if (node === canvas || node.contains(canvas)) {\n      return true;\n    }\n  }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const observer = new MutationObserver(entries => {\n    let trigger = false;\n    for (const entry of entries) {\n      trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n      trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n    }\n    if (trigger) {\n      listener();\n    }\n  });\n  observer.observe(document, {childList: true, subtree: true});\n  return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n  const dpr = window.devicePixelRatio;\n  if (dpr === oldDevicePixelRatio) {\n    return;\n  }\n  oldDevicePixelRatio = dpr;\n  drpListeningCharts.forEach((resize, chart) => {\n    if (chart.currentDevicePixelRatio !== dpr) {\n      resize();\n    }\n  });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n  if (!drpListeningCharts.size) {\n    window.addEventListener('resize', onWindowResize);\n  }\n  drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n  drpListeningCharts.delete(chart);\n  if (!drpListeningCharts.size) {\n    window.removeEventListener('resize', onWindowResize);\n  }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n  const canvas = chart.canvas;\n  const container = canvas && _getParentNode(canvas);\n  if (!container) {\n    return;\n  }\n  const resize = throttled((width, height) => {\n    const w = container.clientWidth;\n    listener(width, height);\n    if (w < container.clientWidth) {\n      // If the container size shrank during chart resize, let's assume\n      // scrollbar appeared. So we resize again with the scrollbar visible -\n      // effectively making chart smaller and the scrollbar hidden again.\n      // Because we are inside `throttled`, and currently `ticking`, scroll\n      // events are ignored during this whole 2 resize process.\n      // If we assumed wrong and something else happened, we are resizing\n      // twice in a frame (potential performance issue)\n      listener();\n    }\n  }, window);\n\n  // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n  const observer = new ResizeObserver(entries => {\n    const entry = entries[0];\n    const width = entry.contentRect.width;\n    const height = entry.contentRect.height;\n    // When its container's display is set to 'none' the callback will be called with a\n    // size of (0, 0), which will cause the chart to lose its original height, so skip\n    // resizing in such case.\n    if (width === 0 && height === 0) {\n      return;\n    }\n    resize(width, height);\n  });\n  observer.observe(container);\n  listenDevicePixelRatioChanges(chart, resize);\n\n  return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n  if (observer) {\n    observer.disconnect();\n  }\n  if (type === 'resize') {\n    unlistenDevicePixelRatioChanges(chart);\n  }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n  const canvas = chart.canvas;\n  const proxy = throttled((event) => {\n    // This case can occur if the chart is destroyed while waiting\n    // for the throttled function to occur. We prevent crashes by checking\n    // for a destroyed chart\n    if (chart.ctx !== null) {\n      listener(fromNativeEvent(event, chart));\n    }\n  }, chart);\n\n  addListener(canvas, type, proxy);\n\n  return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n  acquireContext(canvas, aspectRatio) {\n    // To prevent canvas fingerprinting, some add-ons undefine the getContext\n    // method, for example: https://github.com/kkapsner/CanvasBlocker\n    // https://github.com/chartjs/Chart.js/issues/2807\n    const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n    // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n    // inside an iframe or when running in a protected environment. We could guess the\n    // types from their toString() value but let's keep things flexible and assume it's\n    // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n    // https://github.com/chartjs/Chart.js/issues/3887\n    // https://github.com/chartjs/Chart.js/issues/4102\n    // https://github.com/chartjs/Chart.js/issues/4152\n    if (context && context.canvas === canvas) {\n      // Load platform resources on first chart creation, to make it possible to\n      // import the library before setting platform options.\n      initCanvas(canvas, aspectRatio);\n      return context;\n    }\n\n    return null;\n  }\n\n  /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n  releaseContext(context) {\n    const canvas = context.canvas;\n    if (!canvas[EXPANDO_KEY]) {\n      return false;\n    }\n\n    const initial = canvas[EXPANDO_KEY].initial;\n    ['height', 'width'].forEach((prop) => {\n      const value = initial[prop];\n      if (isNullOrUndef(value)) {\n        canvas.removeAttribute(prop);\n      } else {\n        canvas.setAttribute(prop, value);\n      }\n    });\n\n    const style = initial.style || {};\n    Object.keys(style).forEach((key) => {\n      canvas.style[key] = style[key];\n    });\n\n    // The canvas render size might have been changed (and thus the state stack discarded),\n    // we can't use save() and restore() to restore the initial state. So make sure that at\n    // least the canvas context is reset to the default state by setting the canvas width.\n    // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n    // eslint-disable-next-line no-self-assign\n    canvas.width = canvas.width;\n\n    delete canvas[EXPANDO_KEY];\n    return true;\n  }\n\n  /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n  addEventListener(chart, type, listener) {\n    // Can have only one listener per type, so make sure previous is removed\n    this.removeEventListener(chart, type);\n\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const handlers = {\n      attach: createAttachObserver,\n      detach: createDetachObserver,\n      resize: createResizeObserver\n    };\n    const handler = handlers[type] || createProxyAndListen;\n    proxies[type] = handler(chart, type, listener);\n  }\n\n\n  /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n  removeEventListener(chart, type) {\n    const proxies = chart.$proxies || (chart.$proxies = {});\n    const proxy = proxies[type];\n\n    if (!proxy) {\n      return;\n    }\n\n    const handlers = {\n      attach: releaseObserver,\n      detach: releaseObserver,\n      resize: releaseObserver\n    };\n    const handler = handlers[type] || removeListener;\n    handler(chart, type, proxy);\n    proxies[type] = undefined;\n  }\n\n  getDevicePixelRatio() {\n    return window.devicePixelRatio;\n  }\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n  getMaximumSize(canvas, width, height, aspectRatio) {\n    return getMaximumSize(canvas, width, height, aspectRatio);\n  }\n\n  /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n  isAttached(canvas) {\n    const container = canvas && _getParentNode(canvas);\n    return !!(container && container.isConnected);\n  }\n}\n","import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element<T = AnyObject, O = AnyObject> {\n\n  static defaults = {};\n  static defaultRoutes = undefined;\n\n  x: number;\n  y: number;\n  active = false;\n  options: O;\n  $animations: Record<keyof T, Animation>;\n\n  tooltipPosition(useFinalPosition: boolean): Point {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y} as Point;\n  }\n\n  hasValue() {\n    return isNumber(this.x) && isNumber(this.y);\n  }\n\n  /**\n   * Gets the current or final value of each prop. Can return extra properties (whole object).\n   * @param props - properties to get\n   * @param [final] - get the final value (animation target)\n   */\n  getProps<P extends (keyof T)[]>(props: P, final?: boolean): Pick<T, P[number]>;\n  getProps<P extends string>(props: P[], final?: boolean): Partial<Record<P, unknown>>;\n  getProps(props: string[], final?: boolean): Partial<Record<string, unknown>> {\n    const anims = this.$animations;\n    if (!final || !anims) {\n      // let's not create an object, if not needed\n      return this as Record<string, unknown>;\n    }\n    const ret: Record<string, unknown> = {};\n    props.forEach((prop) => {\n      ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n    });\n    return ret;\n  }\n}\n","import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n  const tickOpts = scale.options.ticks;\n  const determinedMaxTicks = determineMaxTicks(scale);\n  const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n  const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n  const numMajorIndices = majorIndices.length;\n  const first = majorIndices[0];\n  const last = majorIndices[numMajorIndices - 1];\n  const newTicks = [];\n\n  // If there are too many major ticks to display them all\n  if (numMajorIndices > ticksLimit) {\n    skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n    return newTicks;\n  }\n\n  const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n  if (numMajorIndices > 0) {\n    let i, ilen;\n    const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n    skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n    for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n      skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n    }\n    skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n    return newTicks;\n  }\n  skip(ticks, newTicks, spacing);\n  return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n  const offset = scale.options.offset;\n  const tickLength = scale._tickSize();\n  const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n  const maxChart = scale._maxLength / tickLength;\n  return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n  const evenMajorSpacing = getEvenSpacing(majorIndices);\n  const spacing = ticks.length / ticksLimit;\n\n  // If the major ticks are evenly spaced apart, place the minor ticks\n  // so that they divide the major ticks into even chunks\n  if (!evenMajorSpacing) {\n    return Math.max(spacing, 1);\n  }\n\n  const factors = _factorize(evenMajorSpacing);\n  for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n    const factor = factors[i];\n    if (factor > spacing) {\n      return factor;\n    }\n  }\n  return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n  const result = [];\n  let i, ilen;\n  for (i = 0, ilen = ticks.length; i < ilen; i++) {\n    if (ticks[i].major) {\n      result.push(i);\n    }\n  }\n  return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n  let count = 0;\n  let next = majorIndices[0];\n  let i;\n\n  spacing = Math.ceil(spacing);\n  for (i = 0; i < ticks.length; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = majorIndices[count * spacing];\n    }\n  }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n  const start = valueOrDefault(majorStart, 0);\n  const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n  let count = 0;\n  let length, i, next;\n\n  spacing = Math.ceil(spacing);\n  if (majorEnd) {\n    length = majorEnd - majorStart;\n    spacing = length / Math.floor(length / spacing);\n  }\n\n  next = start;\n\n  while (next < 0) {\n    count++;\n    next = Math.round(start + count * spacing);\n  }\n\n  for (i = Math.max(start, 0); i < end; i++) {\n    if (i === next) {\n      newTicks.push(ticks[i]);\n      count++;\n      next = Math.round(start + count * spacing);\n    }\n  }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n  const len = arr.length;\n  let i, diff;\n\n  if (len < 2) {\n    return false;\n  }\n\n  for (diff = arr[0], i = 1; i < len; ++i) {\n    if (arr[i] - arr[i - 1] !== diff) {\n      return false;\n    }\n  }\n  return diff;\n}\n","import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n  const result = [];\n  const increment = arr.length / numItems;\n  const len = arr.length;\n  let i = 0;\n\n  for (; i < len; i += increment) {\n    result.push(arr[Math.floor(i)]);\n  }\n  return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n  const length = scale.ticks.length;\n  const validIndex = Math.min(index, length - 1);\n  const start = scale._startPixel;\n  const end = scale._endPixel;\n  const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n  let lineValue = scale.getPixelForTick(validIndex);\n  let offset;\n\n  if (offsetGridLines) {\n    if (length === 1) {\n      offset = Math.max(lineValue - start, end - lineValue);\n    } else if (index === 0) {\n      offset = (scale.getPixelForTick(1) - lineValue) / 2;\n    } else {\n      offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n    }\n    lineValue += validIndex < index ? offset : -offset;\n\n    // Return undefined if the pixel is out of the range\n    if (lineValue < start - epsilon || lineValue > end + epsilon) {\n      return;\n    }\n  }\n  return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n  each(caches, (cache) => {\n    const gc = cache.gc;\n    const gcLen = gc.length / 2;\n    let i;\n    if (gcLen > length) {\n      for (i = 0; i < gcLen; ++i) {\n        delete cache.data[gc[i]];\n      }\n      gc.splice(0, gcLen);\n    }\n  });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n  return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n  if (!options.display) {\n    return 0;\n  }\n\n  const font = toFont(options.font, fallback);\n  const padding = toPadding(options.padding);\n  const lines = isArray(options.text) ? options.text.length : 1;\n\n  return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n  return createContext(parent, {\n    scale,\n    type: 'scale'\n  });\n}\n\nfunction createTickContext(parent, index, tick) {\n  return createContext(parent, {\n    tick,\n    index,\n    type: 'tick'\n  });\n}\n\nfunction titleAlign(align, position, reverse) {\n  /** @type {CanvasTextAlign} */\n  let ret = _toLeftRightCenter(align);\n  if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n    ret = reverseAlign(ret);\n  }\n  return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n  const {top, left, bottom, right, chart} = scale;\n  const {chartArea, scales} = chart;\n  let rotation = 0;\n  let maxWidth, titleX, titleY;\n  const height = bottom - top;\n  const width = right - left;\n\n  if (scale.isHorizontal()) {\n    titleX = _alignStartEnd(align, left, right);\n\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n    } else if (position === 'center') {\n      titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n    } else {\n      titleY = offsetFromEdge(scale, position, offset);\n    }\n    maxWidth = right - left;\n  } else {\n    if (isObject(position)) {\n      const positionAxisID = Object.keys(position)[0];\n      const value = position[positionAxisID];\n      titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n    } else if (position === 'center') {\n      titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n    } else {\n      titleX = offsetFromEdge(scale, position, offset);\n    }\n    titleY = _alignStartEnd(align, bottom, top);\n    rotation = position === 'left' ? -HALF_PI : HALF_PI;\n  }\n  return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n  // eslint-disable-next-line max-statements\n  constructor(cfg) {\n    super();\n\n    /** @type {string} */\n    this.id = cfg.id;\n    /** @type {string} */\n    this.type = cfg.type;\n    /** @type {any} */\n    this.options = undefined;\n    /** @type {CanvasRenderingContext2D} */\n    this.ctx = cfg.ctx;\n    /** @type {Chart} */\n    this.chart = cfg.chart;\n\n    // implements box\n    /** @type {number} */\n    this.top = undefined;\n    /** @type {number} */\n    this.bottom = undefined;\n    /** @type {number} */\n    this.left = undefined;\n    /** @type {number} */\n    this.right = undefined;\n    /** @type {number} */\n    this.width = undefined;\n    /** @type {number} */\n    this.height = undefined;\n    this._margins = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    /** @type {number} */\n    this.maxWidth = undefined;\n    /** @type {number} */\n    this.maxHeight = undefined;\n    /** @type {number} */\n    this.paddingTop = undefined;\n    /** @type {number} */\n    this.paddingBottom = undefined;\n    /** @type {number} */\n    this.paddingLeft = undefined;\n    /** @type {number} */\n    this.paddingRight = undefined;\n\n    // scale-specific properties\n    /** @type {string=} */\n    this.axis = undefined;\n    /** @type {number=} */\n    this.labelRotation = undefined;\n    this.min = undefined;\n    this.max = undefined;\n    this._range = undefined;\n    /** @type {Tick[]} */\n    this.ticks = [];\n    /** @type {object[]|null} */\n    this._gridLineItems = null;\n    /** @type {object[]|null} */\n    this._labelItems = null;\n    /** @type {object|null} */\n    this._labelSizes = null;\n    this._length = 0;\n    this._maxLength = 0;\n    this._longestTextCache = {};\n    /** @type {number} */\n    this._startPixel = undefined;\n    /** @type {number} */\n    this._endPixel = undefined;\n    this._reversePixels = false;\n    this._userMax = undefined;\n    this._userMin = undefined;\n    this._suggestedMax = undefined;\n    this._suggestedMin = undefined;\n    this._ticksLength = 0;\n    this._borderValue = 0;\n    this._cache = {};\n    this._dataLimitsCached = false;\n    this.$context = undefined;\n  }\n\n  /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n  init(options) {\n    this.options = options.setContext(this.getContext());\n\n    this.axis = options.axis;\n\n    // parse min/max value, so we can properly determine min/max for other scales\n    this._userMin = this.parse(options.min);\n    this._userMax = this.parse(options.max);\n    this._suggestedMin = this.parse(options.suggestedMin);\n    this._suggestedMax = this.parse(options.suggestedMax);\n  }\n\n  /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n  parse(raw, index) { // eslint-disable-line no-unused-vars\n    return raw;\n  }\n\n  /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n  getUserBounds() {\n    let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n    _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n    _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n    _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n    _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n    return {\n      min: finiteOrDefault(_userMin, _suggestedMin),\n      max: finiteOrDefault(_userMax, _suggestedMax),\n      minDefined: isFinite(_userMin),\n      maxDefined: isFinite(_userMax)\n    };\n  }\n\n  /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n  getMinMax(canStack) {\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n    let range;\n\n    if (minDefined && maxDefined) {\n      return {min, max};\n    }\n\n    const metas = this.getMatchingVisibleMetas();\n    for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n      range = metas[i].controller.getMinMax(this, canStack);\n      if (!minDefined) {\n        min = Math.min(min, range.min);\n      }\n      if (!maxDefined) {\n        max = Math.max(max, range.max);\n      }\n    }\n\n    // Make sure min <= max when only min or max is defined by user and the data is outside that range\n    min = maxDefined && min > max ? max : min;\n    max = minDefined && min > max ? min : max;\n\n    return {\n      min: finiteOrDefault(min, finiteOrDefault(max, min)),\n      max: finiteOrDefault(max, finiteOrDefault(min, max))\n    };\n  }\n\n  /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n  getPadding() {\n    return {\n      left: this.paddingLeft || 0,\n      top: this.paddingTop || 0,\n      right: this.paddingRight || 0,\n      bottom: this.paddingBottom || 0\n    };\n  }\n\n  /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n  getTicks() {\n    return this.ticks;\n  }\n\n  /**\n\t * @return {string[]}\n\t */\n  getLabels() {\n    const data = this.chart.data;\n    return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n  }\n\n  /**\n   * @return {import('../types.js').LabelItem[]}\n   */\n  getLabelItems(chartArea = this.chart.chartArea) {\n    const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n    return items;\n  }\n\n  // When a new layout is created, reset the data limits cache\n  beforeLayout() {\n    this._cache = {};\n    this._dataLimitsCached = false;\n  }\n\n  // These methods are ordered by lifecycle. Utilities then follow.\n  // Any function defined here is inherited by all scale types.\n  // Any function can be extended by the scale type\n\n  beforeUpdate() {\n    call(this.options.beforeUpdate, [this]);\n  }\n\n  /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t *   This space comes from two sources:\n\t *     - padding - space that's required to show the labels at the edges of the scale\n\t *     - thickness of scales or legends in another orientation\n\t */\n  update(maxWidth, maxHeight, margins) {\n    const {beginAtZero, grace, ticks: tickOpts} = this.options;\n    const sampleSize = tickOpts.sampleSize;\n\n    // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n    this.beforeUpdate();\n\n    // Absorb the master measurements\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins = Object.assign({\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    }, margins);\n\n    this.ticks = null;\n    this._labelSizes = null;\n    this._gridLineItems = null;\n    this._labelItems = null;\n\n    // Dimensions\n    this.beforeSetDimensions();\n    this.setDimensions();\n    this.afterSetDimensions();\n\n    this._maxLength = this.isHorizontal()\n      ? this.width + margins.left + margins.right\n      : this.height + margins.top + margins.bottom;\n\n    // Data min/max\n    if (!this._dataLimitsCached) {\n      this.beforeDataLimits();\n      this.determineDataLimits();\n      this.afterDataLimits();\n      this._range = _addGrace(this, grace, beginAtZero);\n      this._dataLimitsCached = true;\n    }\n\n    this.beforeBuildTicks();\n\n    this.ticks = this.buildTicks() || [];\n\n    // Allow modification of ticks in callback.\n    this.afterBuildTicks();\n\n    // Compute tick rotation and fit using a sampled subset of labels\n    // We generally don't need to compute the size of every single label for determining scale size\n    const samplingEnabled = sampleSize < this.ticks.length;\n    this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n    // configure is called twice, once here, once from core.controller.updateLayout.\n    // Here we haven't been positioned yet, but dimensions are correct.\n    // Variables set in configure are needed for calculateLabelRotation, and\n    // it's ok that coordinates are not correct there, only dimensions matter.\n    this.configure();\n\n    // Tick Rotation\n    this.beforeCalculateLabelRotation();\n    this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n    this.afterCalculateLabelRotation();\n\n    // Auto-skip\n    if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n      this.ticks = autoSkip(this, this.ticks);\n      this._labelSizes = null;\n      this.afterAutoSkip();\n    }\n\n    if (samplingEnabled) {\n      // Generate labels using all non-skipped ticks\n      this._convertTicksToLabels(this.ticks);\n    }\n\n    this.beforeFit();\n    this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n    this.afterFit();\n\n    // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n    this.afterUpdate();\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    let reversePixels = this.options.reverse;\n    let startPixel, endPixel;\n\n    if (this.isHorizontal()) {\n      startPixel = this.left;\n      endPixel = this.right;\n    } else {\n      startPixel = this.top;\n      endPixel = this.bottom;\n      // by default vertical scales are from bottom to top, so pixels are reversed\n      reversePixels = !reversePixels;\n    }\n    this._startPixel = startPixel;\n    this._endPixel = endPixel;\n    this._reversePixels = reversePixels;\n    this._length = endPixel - startPixel;\n    this._alignToPixels = this.options.alignToPixels;\n  }\n\n  afterUpdate() {\n    call(this.options.afterUpdate, [this]);\n  }\n\n  //\n\n  beforeSetDimensions() {\n    call(this.options.beforeSetDimensions, [this]);\n  }\n  setDimensions() {\n    // Set the unconstrained dimension before label rotation\n    if (this.isHorizontal()) {\n      // Reset position before calculating rotation\n      this.width = this.maxWidth;\n      this.left = 0;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n\n      // Reset position before calculating rotation\n      this.top = 0;\n      this.bottom = this.height;\n    }\n\n    // Reset padding\n    this.paddingLeft = 0;\n    this.paddingTop = 0;\n    this.paddingRight = 0;\n    this.paddingBottom = 0;\n  }\n  afterSetDimensions() {\n    call(this.options.afterSetDimensions, [this]);\n  }\n\n  _callHooks(name) {\n    this.chart.notifyPlugins(name, this.getContext());\n    call(this.options[name], [this]);\n  }\n\n  // Data limits\n  beforeDataLimits() {\n    this._callHooks('beforeDataLimits');\n  }\n  determineDataLimits() {}\n  afterDataLimits() {\n    this._callHooks('afterDataLimits');\n  }\n\n  //\n  beforeBuildTicks() {\n    this._callHooks('beforeBuildTicks');\n  }\n  /**\n\t * @return {object[]} the ticks\n\t */\n  buildTicks() {\n    return [];\n  }\n  afterBuildTicks() {\n    this._callHooks('afterBuildTicks');\n  }\n\n  beforeTickToLabelConversion() {\n    call(this.options.beforeTickToLabelConversion, [this]);\n  }\n  /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n  generateTickLabels(ticks) {\n    const tickOpts = this.options.ticks;\n    let i, ilen, tick;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      tick = ticks[i];\n      tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n    }\n  }\n  afterTickToLabelConversion() {\n    call(this.options.afterTickToLabelConversion, [this]);\n  }\n\n  //\n\n  beforeCalculateLabelRotation() {\n    call(this.options.beforeCalculateLabelRotation, [this]);\n  }\n  calculateLabelRotation() {\n    const options = this.options;\n    const tickOpts = options.ticks;\n    const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n    const minRotation = tickOpts.minRotation || 0;\n    const maxRotation = tickOpts.maxRotation;\n    let labelRotation = minRotation;\n    let tickWidth, maxHeight, maxLabelDiagonal;\n\n    if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n      this.labelRotation = minRotation;\n      return;\n    }\n\n    const labelSizes = this._getLabelSizes();\n    const maxLabelWidth = labelSizes.widest.width;\n    const maxLabelHeight = labelSizes.highest.height;\n\n    // Estimate the width of each grid based on the canvas width, the maximum\n    // label width and the number of tick intervals\n    const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n    tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n    // Allow 3 pixels x2 padding either side for label readability\n    if (maxLabelWidth + 6 > tickWidth) {\n      tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n      maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n      maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n      labelRotation = toDegrees(Math.min(\n        Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n        Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n      ));\n      labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n    }\n\n    this.labelRotation = labelRotation;\n  }\n  afterCalculateLabelRotation() {\n    call(this.options.afterCalculateLabelRotation, [this]);\n  }\n  afterAutoSkip() {}\n\n  //\n\n  beforeFit() {\n    call(this.options.beforeFit, [this]);\n  }\n  fit() {\n    // Reset\n    const minSize = {\n      width: 0,\n      height: 0\n    };\n\n    const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n    const display = this._isVisible();\n    const isHorizontal = this.isHorizontal();\n\n    if (display) {\n      const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n      if (isHorizontal) {\n        minSize.width = this.maxWidth;\n        minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n      } else {\n        minSize.height = this.maxHeight; // fill all the height\n        minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n      }\n\n      // Don't bother fitting the ticks if we are not showing the labels\n      if (tickOpts.display && this.ticks.length) {\n        const {first, last, widest, highest} = this._getLabelSizes();\n        const tickPadding = tickOpts.padding * 2;\n        const angleRadians = toRadians(this.labelRotation);\n        const cos = Math.cos(angleRadians);\n        const sin = Math.sin(angleRadians);\n\n        if (isHorizontal) {\n        // A horizontal axis is more constrained by the height.\n          const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n          minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n        } else {\n        // A vertical axis is more constrained by the width. Labels are the\n        // dominant factor here, so get that length first and account for padding\n          const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n          minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n        }\n        this._calculatePadding(first, last, sin, cos);\n      }\n    }\n\n    this._handleMargins();\n\n    if (isHorizontal) {\n      this.width = this._length = chart.width - this._margins.left - this._margins.right;\n      this.height = minSize.height;\n    } else {\n      this.width = minSize.width;\n      this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n    }\n  }\n\n  _calculatePadding(first, last, sin, cos) {\n    const {ticks: {align, padding}, position} = this.options;\n    const isRotated = this.labelRotation !== 0;\n    const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n    if (this.isHorizontal()) {\n      const offsetLeft = this.getPixelForTick(0) - this.left;\n      const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n      let paddingLeft = 0;\n      let paddingRight = 0;\n\n      // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n      // which means that the right padding is dominated by the font height\n      if (isRotated) {\n        if (labelsBelowTicks) {\n          paddingLeft = cos * first.width;\n          paddingRight = sin * last.height;\n        } else {\n          paddingLeft = sin * first.height;\n          paddingRight = cos * last.width;\n        }\n      } else if (align === 'start') {\n        paddingRight = last.width;\n      } else if (align === 'end') {\n        paddingLeft = first.width;\n      } else if (align !== 'inner') {\n        paddingLeft = first.width / 2;\n        paddingRight = last.width / 2;\n      }\n\n      // Adjust padding taking into account changes in offsets\n      this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n      this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n    } else {\n      let paddingTop = last.height / 2;\n      let paddingBottom = first.height / 2;\n\n      if (align === 'start') {\n        paddingTop = 0;\n        paddingBottom = first.height;\n      } else if (align === 'end') {\n        paddingTop = last.height;\n        paddingBottom = 0;\n      }\n\n      this.paddingTop = paddingTop + padding;\n      this.paddingBottom = paddingBottom + padding;\n    }\n  }\n\n  /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n  _handleMargins() {\n    if (this._margins) {\n      this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n      this._margins.top = Math.max(this.paddingTop, this._margins.top);\n      this._margins.right = Math.max(this.paddingRight, this._margins.right);\n      this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n    }\n  }\n\n  afterFit() {\n    call(this.options.afterFit, [this]);\n  }\n\n  // Shared Methods\n  /**\n\t * @return {boolean}\n\t */\n  isHorizontal() {\n    const {axis, position} = this.options;\n    return position === 'top' || position === 'bottom' || axis === 'x';\n  }\n  /**\n\t * @return {boolean}\n\t */\n  isFullSize() {\n    return this.options.fullSize;\n  }\n\n  /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n  _convertTicksToLabels(ticks) {\n    this.beforeTickToLabelConversion();\n\n    this.generateTickLabels(ticks);\n\n    // Ticks should be skipped when callback returns null or undef, so lets remove those.\n    let i, ilen;\n    for (i = 0, ilen = ticks.length; i < ilen; i++) {\n      if (isNullOrUndef(ticks[i].label)) {\n        ticks.splice(i, 1);\n        ilen--;\n        i--;\n      }\n    }\n\n    this.afterTickToLabelConversion();\n  }\n\n  /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n  _getLabelSizes() {\n    let labelSizes = this._labelSizes;\n\n    if (!labelSizes) {\n      const sampleSize = this.options.ticks.sampleSize;\n      let ticks = this.ticks;\n      if (sampleSize < ticks.length) {\n        ticks = sample(ticks, sampleSize);\n      }\n\n      this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n    }\n\n    return labelSizes;\n  }\n\n  /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n  _computeLabelSizes(ticks, length, maxTicksLimit) {\n    const {ctx, _longestTextCache: caches} = this;\n    const widths = [];\n    const heights = [];\n    const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n    let widestLabelSize = 0;\n    let highestLabelSize = 0;\n    let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n    for (i = 0; i < length; i += increment) {\n      label = ticks[i].label;\n      tickFont = this._resolveTickFontOptions(i);\n      ctx.font = fontString = tickFont.string;\n      cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n      lineHeight = tickFont.lineHeight;\n      width = height = 0;\n      // Undefined labels and arrays should not be measured\n      if (!isNullOrUndef(label) && !isArray(label)) {\n        width = _measureText(ctx, cache.data, cache.gc, width, label);\n        height = lineHeight;\n      } else if (isArray(label)) {\n        // if it is an array let's measure each element\n        for (j = 0, jlen = label.length; j < jlen; ++j) {\n          nestedLabel = /** @type {string} */ (label[j]);\n          // Undefined labels and arrays should not be measured\n          if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n            width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n            height += lineHeight;\n          }\n        }\n      }\n      widths.push(width);\n      heights.push(height);\n      widestLabelSize = Math.max(width, widestLabelSize);\n      highestLabelSize = Math.max(height, highestLabelSize);\n    }\n    garbageCollect(caches, length);\n\n    const widest = widths.indexOf(widestLabelSize);\n    const highest = heights.indexOf(highestLabelSize);\n\n    const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n    return {\n      first: valueAt(0),\n      last: valueAt(length - 1),\n      widest: valueAt(widest),\n      highest: valueAt(highest),\n      widths,\n      heights,\n    };\n  }\n\n  /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n  getLabelForValue(value) {\n    return value;\n  }\n\n  /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n  getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n    return NaN;\n  }\n\n  /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n  getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n  /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n\n  /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n  getPixelForDecimal(decimal) {\n    if (this._reversePixels) {\n      decimal = 1 - decimal;\n    }\n\n    const pixel = this._startPixel + decimal * this._length;\n    return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n  }\n\n  /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n  getDecimalForPixel(pixel) {\n    const decimal = (pixel - this._startPixel) / this._length;\n    return this._reversePixels ? 1 - decimal : decimal;\n  }\n\n  /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n  getBasePixel() {\n    return this.getPixelForValue(this.getBaseValue());\n  }\n\n  /**\n\t * @return {number}\n\t */\n  getBaseValue() {\n    const {min, max} = this;\n\n    return min < 0 && max < 0 ? max :\n      min > 0 && max > 0 ? min :\n      0;\n  }\n\n  /**\n\t * @protected\n\t */\n  getContext(index) {\n    const ticks = this.ticks || [];\n\n    if (index >= 0 && index < ticks.length) {\n      const tick = ticks[index];\n      return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n    }\n    return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n  }\n\n  /**\n\t * @return {number}\n\t * @private\n\t */\n  _tickSize() {\n    const optionTicks = this.options.ticks;\n\n    // Calculate space needed by label in axis direction.\n    const rot = toRadians(this.labelRotation);\n    const cos = Math.abs(Math.cos(rot));\n    const sin = Math.abs(Math.sin(rot));\n\n    const labelSizes = this._getLabelSizes();\n    const padding = optionTicks.autoSkipPadding || 0;\n    const w = labelSizes ? labelSizes.widest.width + padding : 0;\n    const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n    // Calculate space needed for 1 tick in axis direction.\n    return this.isHorizontal()\n      ? h * cos > w * sin ? w / cos : h / sin\n      : h * sin < w * cos ? h / cos : w / sin;\n  }\n\n  /**\n\t * @return {boolean}\n\t * @private\n\t */\n  _isVisible() {\n    const display = this.options.display;\n\n    if (display !== 'auto') {\n      return !!display;\n    }\n\n    return this.getMatchingVisibleMetas().length > 0;\n  }\n\n  /**\n\t * @private\n\t */\n  _computeGridLineItems(chartArea) {\n    const axis = this.axis;\n    const chart = this.chart;\n    const options = this.options;\n    const {grid, position, border} = options;\n    const offset = grid.offset;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const ticksLength = ticks.length + (offset ? 1 : 0);\n    const tl = getTickMarkLength(grid);\n    const items = [];\n\n    const borderOpts = border.setContext(this.getContext());\n    const axisWidth = borderOpts.display ? borderOpts.width : 0;\n    const axisHalfWidth = axisWidth / 2;\n    const alignBorderValue = function(pixel) {\n      return _alignPixel(chart, pixel, axisWidth);\n    };\n    let borderValue, i, lineValue, alignedLineValue;\n    let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n    if (position === 'top') {\n      borderValue = alignBorderValue(this.bottom);\n      ty1 = this.bottom - tl;\n      ty2 = borderValue - axisHalfWidth;\n      y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n      y2 = chartArea.bottom;\n    } else if (position === 'bottom') {\n      borderValue = alignBorderValue(this.top);\n      y1 = chartArea.top;\n      y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = this.top + tl;\n    } else if (position === 'left') {\n      borderValue = alignBorderValue(this.right);\n      tx1 = this.right - tl;\n      tx2 = borderValue - axisHalfWidth;\n      x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n      x2 = chartArea.right;\n    } else if (position === 'right') {\n      borderValue = alignBorderValue(this.left);\n      x1 = chartArea.left;\n      x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n      tx1 = borderValue + axisHalfWidth;\n      tx2 = this.left + tl;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n\n      y1 = chartArea.top;\n      y2 = chartArea.bottom;\n      ty1 = borderValue + axisHalfWidth;\n      ty2 = ty1 + tl;\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n      }\n\n      tx1 = borderValue - axisHalfWidth;\n      tx2 = tx1 - tl;\n      x1 = chartArea.left;\n      x2 = chartArea.right;\n    }\n\n    const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n    const step = Math.max(1, Math.ceil(ticksLength / limit));\n    for (i = 0; i < ticksLength; i += step) {\n      const context = this.getContext(i);\n      const optsAtIndex = grid.setContext(context);\n      const optsAtIndexBorder = border.setContext(context);\n\n      const lineWidth = optsAtIndex.lineWidth;\n      const lineColor = optsAtIndex.color;\n      const borderDash = optsAtIndexBorder.dash || [];\n      const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n      const tickWidth = optsAtIndex.tickWidth;\n      const tickColor = optsAtIndex.tickColor;\n      const tickBorderDash = optsAtIndex.tickBorderDash || [];\n      const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n      lineValue = getPixelForGridLine(this, i, offset);\n\n      // Skip if the pixel is out of the range\n      if (lineValue === undefined) {\n        continue;\n      }\n\n      alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n      if (isHorizontal) {\n        tx1 = tx2 = x1 = x2 = alignedLineValue;\n      } else {\n        ty1 = ty2 = y1 = y2 = alignedLineValue;\n      }\n\n      items.push({\n        tx1,\n        ty1,\n        tx2,\n        ty2,\n        x1,\n        y1,\n        x2,\n        y2,\n        width: lineWidth,\n        color: lineColor,\n        borderDash,\n        borderDashOffset,\n        tickWidth,\n        tickColor,\n        tickBorderDash,\n        tickBorderDashOffset,\n      });\n    }\n\n    this._ticksLength = ticksLength;\n    this._borderValue = borderValue;\n\n    return items;\n  }\n\n  /**\n\t * @private\n\t */\n  _computeLabelItems(chartArea) {\n    const axis = this.axis;\n    const options = this.options;\n    const {position, ticks: optionTicks} = options;\n    const isHorizontal = this.isHorizontal();\n    const ticks = this.ticks;\n    const {align, crossAlign, padding, mirror} = optionTicks;\n    const tl = getTickMarkLength(options.grid);\n    const tickAndPadding = tl + padding;\n    const hTickAndPadding = mirror ? -padding : tickAndPadding;\n    const rotation = -toRadians(this.labelRotation);\n    const items = [];\n    let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n    let textBaseline = 'middle';\n\n    if (position === 'top') {\n      y = this.bottom - hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'bottom') {\n      y = this.top + hTickAndPadding;\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (position === 'left') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (position === 'right') {\n      const ret = this._getYAxisLabelAlignment(tl);\n      textAlign = ret.textAlign;\n      x = ret.x;\n    } else if (axis === 'x') {\n      if (position === 'center') {\n        y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n      }\n      textAlign = this._getXAxisLabelAlignment();\n    } else if (axis === 'y') {\n      if (position === 'center') {\n        x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n      } else if (isObject(position)) {\n        const positionAxisID = Object.keys(position)[0];\n        const value = position[positionAxisID];\n        x = this.chart.scales[positionAxisID].getPixelForValue(value);\n      }\n      textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n    }\n\n    if (axis === 'y') {\n      if (align === 'start') {\n        textBaseline = 'top';\n      } else if (align === 'end') {\n        textBaseline = 'bottom';\n      }\n    }\n\n    const labelSizes = this._getLabelSizes();\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      label = tick.label;\n\n      const optsAtIndex = optionTicks.setContext(this.getContext(i));\n      pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n      font = this._resolveTickFontOptions(i);\n      lineHeight = font.lineHeight;\n      lineCount = isArray(label) ? label.length : 1;\n      const halfCount = lineCount / 2;\n      const color = optsAtIndex.color;\n      const strokeColor = optsAtIndex.textStrokeColor;\n      const strokeWidth = optsAtIndex.textStrokeWidth;\n      let tickTextAlign = textAlign;\n\n      if (isHorizontal) {\n        x = pixel;\n\n        if (textAlign === 'inner') {\n          if (i === ilen - 1) {\n            tickTextAlign = !this.options.reverse ? 'right' : 'left';\n          } else if (i === 0) {\n            tickTextAlign = !this.options.reverse ? 'left' : 'right';\n          } else {\n            tickTextAlign = 'center';\n          }\n        }\n\n        if (position === 'top') {\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = -lineCount * lineHeight + lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n          } else {\n            textOffset = -labelSizes.highest.height + lineHeight / 2;\n          }\n        } else {\n          // eslint-disable-next-line no-lonely-if\n          if (crossAlign === 'near' || rotation !== 0) {\n            textOffset = lineHeight / 2;\n          } else if (crossAlign === 'center') {\n            textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n          } else {\n            textOffset = labelSizes.highest.height - lineCount * lineHeight;\n          }\n        }\n        if (mirror) {\n          textOffset *= -1;\n        }\n        if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n          x += (lineHeight / 2) * Math.sin(rotation);\n        }\n      } else {\n        y = pixel;\n        textOffset = (1 - lineCount) * lineHeight / 2;\n      }\n\n      let backdrop;\n\n      if (optsAtIndex.showLabelBackdrop) {\n        const labelPadding = toPadding(optsAtIndex.backdropPadding);\n        const height = labelSizes.heights[i];\n        const width = labelSizes.widths[i];\n\n        let top = textOffset - labelPadding.top;\n        let left = 0 - labelPadding.left;\n\n        switch (textBaseline) {\n        case 'middle':\n          top -= height / 2;\n          break;\n        case 'bottom':\n          top -= height;\n          break;\n        default:\n          break;\n        }\n\n        switch (textAlign) {\n        case 'center':\n          left -= width / 2;\n          break;\n        case 'right':\n          left -= width;\n          break;\n        case 'inner':\n          if (i === ilen - 1) {\n            left -= width;\n          } else if (i > 0) {\n            left -= width / 2;\n          }\n          break;\n        default:\n          break;\n        }\n\n        backdrop = {\n          left,\n          top,\n          width: width + labelPadding.width,\n          height: height + labelPadding.height,\n\n          color: optsAtIndex.backdropColor,\n        };\n      }\n\n      items.push({\n        label,\n        font,\n        textOffset,\n        options: {\n          rotation,\n          color,\n          strokeColor,\n          strokeWidth,\n          textAlign: tickTextAlign,\n          textBaseline,\n          translation: [x, y],\n          backdrop,\n        }\n      });\n    }\n\n    return items;\n  }\n\n  _getXAxisLabelAlignment() {\n    const {position, ticks} = this.options;\n    const rotation = -toRadians(this.labelRotation);\n\n    if (rotation) {\n      return position === 'top' ? 'left' : 'right';\n    }\n\n    let align = 'center';\n\n    if (ticks.align === 'start') {\n      align = 'left';\n    } else if (ticks.align === 'end') {\n      align = 'right';\n    } else if (ticks.align === 'inner') {\n      align = 'inner';\n    }\n\n    return align;\n  }\n\n  _getYAxisLabelAlignment(tl) {\n    const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n    const labelSizes = this._getLabelSizes();\n    const tickAndPadding = tl + padding;\n    const widest = labelSizes.widest.width;\n\n    let textAlign;\n    let x;\n\n    if (position === 'left') {\n      if (mirror) {\n        x = this.right + padding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += (widest / 2);\n        } else {\n          textAlign = 'right';\n          x += widest;\n        }\n      } else {\n        x = this.right - tickAndPadding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x = this.left;\n        }\n      }\n    } else if (position === 'right') {\n      if (mirror) {\n        x = this.left + padding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'right';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x -= (widest / 2);\n        } else {\n          textAlign = 'left';\n          x -= widest;\n        }\n      } else {\n        x = this.left + tickAndPadding;\n\n        if (crossAlign === 'near') {\n          textAlign = 'left';\n        } else if (crossAlign === 'center') {\n          textAlign = 'center';\n          x += widest / 2;\n        } else {\n          textAlign = 'right';\n          x = this.right;\n        }\n      }\n    } else {\n      textAlign = 'right';\n    }\n\n    return {textAlign, x};\n  }\n\n  /**\n\t * @private\n\t */\n  _computeLabelArea() {\n    if (this.options.ticks.mirror) {\n      return;\n    }\n\n    const chart = this.chart;\n    const position = this.options.position;\n\n    if (position === 'left' || position === 'right') {\n      return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n    } if (position === 'top' || position === 'bottom') {\n      return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n    }\n  }\n\n  /**\n   * @protected\n   */\n  drawBackground() {\n    const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n    if (backgroundColor) {\n      ctx.save();\n      ctx.fillStyle = backgroundColor;\n      ctx.fillRect(left, top, width, height);\n      ctx.restore();\n    }\n  }\n\n  getLineWidthForValue(value) {\n    const grid = this.options.grid;\n    if (!this._isVisible() || !grid.display) {\n      return 0;\n    }\n    const ticks = this.ticks;\n    const index = ticks.findIndex(t => t.value === value);\n    if (index >= 0) {\n      const opts = grid.setContext(this.getContext(index));\n      return opts.lineWidth;\n    }\n    return 0;\n  }\n\n  /**\n\t * @protected\n\t */\n  drawGrid(chartArea) {\n    const grid = this.options.grid;\n    const ctx = this.ctx;\n    const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n    let i, ilen;\n\n    const drawLine = (p1, p2, style) => {\n      if (!style.width || !style.color) {\n        return;\n      }\n      ctx.save();\n      ctx.lineWidth = style.width;\n      ctx.strokeStyle = style.color;\n      ctx.setLineDash(style.borderDash || []);\n      ctx.lineDashOffset = style.borderDashOffset;\n\n      ctx.beginPath();\n      ctx.moveTo(p1.x, p1.y);\n      ctx.lineTo(p2.x, p2.y);\n      ctx.stroke();\n      ctx.restore();\n    };\n\n    if (grid.display) {\n      for (i = 0, ilen = items.length; i < ilen; ++i) {\n        const item = items[i];\n\n        if (grid.drawOnChartArea) {\n          drawLine(\n            {x: item.x1, y: item.y1},\n            {x: item.x2, y: item.y2},\n            item\n          );\n        }\n\n        if (grid.drawTicks) {\n          drawLine(\n            {x: item.tx1, y: item.ty1},\n            {x: item.tx2, y: item.ty2},\n            {\n              color: item.tickColor,\n              width: item.tickWidth,\n              borderDash: item.tickBorderDash,\n              borderDashOffset: item.tickBorderDashOffset\n            }\n          );\n        }\n      }\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawBorder() {\n    const {chart, ctx, options: {border, grid}} = this;\n    const borderOpts = border.setContext(this.getContext());\n    const axisWidth = border.display ? borderOpts.width : 0;\n    if (!axisWidth) {\n      return;\n    }\n    const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n    const borderValue = this._borderValue;\n    let x1, x2, y1, y2;\n\n    if (this.isHorizontal()) {\n      x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n      x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n      y1 = y2 = borderValue;\n    } else {\n      y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n      y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n      x1 = x2 = borderValue;\n    }\n    ctx.save();\n    ctx.lineWidth = borderOpts.width;\n    ctx.strokeStyle = borderOpts.color;\n\n    ctx.beginPath();\n    ctx.moveTo(x1, y1);\n    ctx.lineTo(x2, y2);\n    ctx.stroke();\n\n    ctx.restore();\n  }\n\n  /**\n\t * @protected\n\t */\n  drawLabels(chartArea) {\n    const optionTicks = this.options.ticks;\n\n    if (!optionTicks.display) {\n      return;\n    }\n\n    const ctx = this.ctx;\n\n    const area = this._computeLabelArea();\n    if (area) {\n      clipArea(ctx, area);\n    }\n\n    const items = this.getLabelItems(chartArea);\n    for (const item of items) {\n      const renderTextOptions = item.options;\n      const tickFont = item.font;\n      const label = item.label;\n      const y = item.textOffset;\n      renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n    }\n\n    if (area) {\n      unclipArea(ctx);\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawTitle() {\n    const {ctx, options: {position, title, reverse}} = this;\n\n    if (!title.display) {\n      return;\n    }\n\n    const font = toFont(title.font);\n    const padding = toPadding(title.padding);\n    const align = title.align;\n    let offset = font.lineHeight / 2;\n\n    if (position === 'bottom' || position === 'center' || isObject(position)) {\n      offset += padding.bottom;\n      if (isArray(title.text)) {\n        offset += font.lineHeight * (title.text.length - 1);\n      }\n    } else {\n      offset += padding.top;\n    }\n\n    const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n    renderText(ctx, title.text, 0, 0, font, {\n      color: title.color,\n      maxWidth,\n      rotation,\n      textAlign: titleAlign(align, position, reverse),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n\n  draw(chartArea) {\n    if (!this._isVisible()) {\n      return;\n    }\n\n    this.drawBackground();\n    this.drawGrid(chartArea);\n    this.drawBorder();\n    this.drawTitle();\n    this.drawLabels(chartArea);\n  }\n\n  /**\n\t * @return {object[]}\n\t * @private\n\t */\n  _layers() {\n    const opts = this.options;\n    const tz = opts.ticks && opts.ticks.z || 0;\n    const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n    const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n    if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n      // backward compatibility: draw has been overridden by custom scale\n      return [{\n        z: tz,\n        draw: (chartArea) => {\n          this.draw(chartArea);\n        }\n      }];\n    }\n\n    return [{\n      z: gz,\n      draw: (chartArea) => {\n        this.drawBackground();\n        this.drawGrid(chartArea);\n        this.drawTitle();\n      }\n    }, {\n      z: bz,\n      draw: () => {\n        this.drawBorder();\n      }\n    }, {\n      z: tz,\n      draw: (chartArea) => {\n        this.drawLabels(chartArea);\n      }\n    }];\n  }\n\n  /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n  getMatchingVisibleMetas(type) {\n    const metas = this.chart.getSortedVisibleDatasetMetas();\n    const axisID = this.axis + 'AxisID';\n    const result = [];\n    let i, ilen;\n\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      const meta = metas[i];\n      if (meta[axisID] === this.id && (!type || meta.type === type)) {\n        result.push(meta);\n      }\n    }\n    return result;\n  }\n\n  /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n  _resolveTickFontOptions(index) {\n    const opts = this.options.ticks.setContext(this.getContext(index));\n    return toFont(opts.font);\n  }\n\n  /**\n   * @protected\n   */\n  _maxDigits() {\n    const fontSize = this._resolveTickFontOptions(0).lineHeight;\n    return (this.isHorizontal() ? this.width : this.height) / fontSize;\n  }\n}\n","import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n  constructor(type, scope, override) {\n    this.type = type;\n    this.scope = scope;\n    this.override = override;\n    this.items = Object.create(null);\n  }\n\n  isForType(type) {\n    return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n  }\n\n  /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n  register(item) {\n    const proto = Object.getPrototypeOf(item);\n    let parentScope;\n\n    if (isIChartComponent(proto)) {\n      // Make sure the parent is registered and note the scope where its defaults are.\n      parentScope = this.register(proto);\n    }\n\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope + '.' + id;\n\n    if (!id) {\n      throw new Error('class does not have id: ' + item);\n    }\n\n    if (id in items) {\n      // already registered\n      return scope;\n    }\n\n    items[id] = item;\n    registerDefaults(item, scope, parentScope);\n    if (this.override) {\n      defaults.override(item.id, item.overrides);\n    }\n\n    return scope;\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n  get(id) {\n    return this.items[id];\n  }\n\n  /**\n\t * @param {IChartComponent} item\n\t */\n  unregister(item) {\n    const items = this.items;\n    const id = item.id;\n    const scope = this.scope;\n\n    if (id in items) {\n      delete items[id];\n    }\n\n    if (scope && id in defaults[scope]) {\n      delete defaults[scope][id];\n      if (this.override) {\n        delete overrides[id];\n      }\n    }\n  }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n  // Inherit the parent's defaults and keep existing defaults\n  const itemDefaults = merge(Object.create(null), [\n    parentScope ? defaults.get(parentScope) : {},\n    defaults.get(scope),\n    item.defaults\n  ]);\n\n  defaults.set(scope, itemDefaults);\n\n  if (item.defaultRoutes) {\n    routeDefaults(scope, item.defaultRoutes);\n  }\n\n  if (item.descriptors) {\n    defaults.describe(scope, item.descriptors);\n  }\n}\n\nfunction routeDefaults(scope, routes) {\n  Object.keys(routes).forEach(property => {\n    const propertyParts = property.split('.');\n    const sourceName = propertyParts.pop();\n    const sourceScope = [scope].concat(propertyParts).join('.');\n    const parts = routes[property].split('.');\n    const targetName = parts.pop();\n    const targetScope = parts.join('.');\n    defaults.route(sourceScope, sourceName, targetScope, targetName);\n  });\n}\n\nfunction isIChartComponent(proto) {\n  return 'id' in proto && 'defaults' in proto;\n}\n","import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n  constructor() {\n    this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n    this.elements = new TypedRegistry(Element, 'elements');\n    this.plugins = new TypedRegistry(Object, 'plugins');\n    this.scales = new TypedRegistry(Scale, 'scales');\n    // Order is important, Scale has Element in prototype chain,\n    // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n    this._typedRegistries = [this.controllers, this.scales, this.elements];\n  }\n\n  /**\n\t * @param  {...any} args\n\t */\n  add(...args) {\n    this._each('register', args);\n  }\n\n  remove(...args) {\n    this._each('unregister', args);\n  }\n\n  /**\n\t * @param  {...typeof DatasetController} args\n\t */\n  addControllers(...args) {\n    this._each('register', args, this.controllers);\n  }\n\n  /**\n\t * @param  {...typeof Element} args\n\t */\n  addElements(...args) {\n    this._each('register', args, this.elements);\n  }\n\n  /**\n\t * @param  {...any} args\n\t */\n  addPlugins(...args) {\n    this._each('register', args, this.plugins);\n  }\n\n  /**\n\t * @param  {...typeof Scale} args\n\t */\n  addScales(...args) {\n    this._each('register', args, this.scales);\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n  getController(id) {\n    return this._get(id, this.controllers, 'controller');\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n  getElement(id) {\n    return this._get(id, this.elements, 'element');\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n  getPlugin(id) {\n    return this._get(id, this.plugins, 'plugin');\n  }\n\n  /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n  getScale(id) {\n    return this._get(id, this.scales, 'scale');\n  }\n\n  /**\n\t * @param  {...typeof DatasetController} args\n\t */\n  removeControllers(...args) {\n    this._each('unregister', args, this.controllers);\n  }\n\n  /**\n\t * @param  {...typeof Element} args\n\t */\n  removeElements(...args) {\n    this._each('unregister', args, this.elements);\n  }\n\n  /**\n\t * @param  {...any} args\n\t */\n  removePlugins(...args) {\n    this._each('unregister', args, this.plugins);\n  }\n\n  /**\n\t * @param  {...typeof Scale} args\n\t */\n  removeScales(...args) {\n    this._each('unregister', args, this.scales);\n  }\n\n  /**\n\t * @private\n\t */\n  _each(method, args, typedRegistry) {\n    [...args].forEach(arg => {\n      const reg = typedRegistry || this._getRegistryForType(arg);\n      if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n        this._exec(method, reg, arg);\n      } else {\n        // Handle loopable args\n        // Use case:\n        //  import * as plugins from './plugins.js';\n        //  Chart.register(plugins);\n        each(arg, item => {\n          // If there are mixed types in the loopable, make sure those are\n          // registered in correct registry\n          // Use case: (treemap exporting controller, elements etc)\n          //  import * as treemap from 'chartjs-chart-treemap.js';\n          //  Chart.register(treemap);\n\n          const itemReg = typedRegistry || this._getRegistryForType(item);\n          this._exec(method, itemReg, item);\n        });\n      }\n    });\n  }\n\n  /**\n\t * @private\n\t */\n  _exec(method, registry, component) {\n    const camelMethod = _capitalize(method);\n    call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n    registry[method](component);\n    call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n  }\n\n  /**\n\t * @private\n\t */\n  _getRegistryForType(type) {\n    for (let i = 0; i < this._typedRegistries.length; i++) {\n      const reg = this._typedRegistries[i];\n      if (reg.isForType(type)) {\n        return reg;\n      }\n    }\n    // plugins is the fallback registry\n    return this.plugins;\n  }\n\n  /**\n\t * @private\n\t */\n  _get(id, typedRegistry, type) {\n    const item = typedRegistry.get(id);\n    if (item === undefined) {\n      throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n    }\n    return item;\n  }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n","import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n  constructor() {\n    this._init = [];\n  }\n\n  /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n   * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n  notify(chart, hook, args, filter) {\n    if (hook === 'beforeInit') {\n      this._init = this._createDescriptors(chart, true);\n      this._notify(this._init, chart, 'install');\n    }\n\n    const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n    const result = this._notify(descriptors, chart, hook, args);\n\n    if (hook === 'afterDestroy') {\n      this._notify(descriptors, chart, 'stop');\n      this._notify(this._init, chart, 'uninstall');\n    }\n    return result;\n  }\n\n  /**\n\t * @private\n\t */\n  _notify(descriptors, chart, hook, args) {\n    args = args || {};\n    for (const descriptor of descriptors) {\n      const plugin = descriptor.plugin;\n      const method = plugin[hook];\n      const params = [chart, args, descriptor.options];\n      if (callCallback(method, params, plugin) === false && args.cancelable) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  invalidate() {\n    // When plugins are registered, there is the possibility of a double\n    // invalidate situation. In this case, we only want to invalidate once.\n    // If we invalidate multiple times, the `_oldCache` is lost and all of the\n    // plugins are restarted without being correctly stopped.\n    // See https://github.com/chartjs/Chart.js/issues/8147\n    if (!isNullOrUndef(this._cache)) {\n      this._oldCache = this._cache;\n      this._cache = undefined;\n    }\n  }\n\n  /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n  _descriptors(chart) {\n    if (this._cache) {\n      return this._cache;\n    }\n\n    const descriptors = this._cache = this._createDescriptors(chart);\n\n    this._notifyStateChanges(chart);\n\n    return descriptors;\n  }\n\n  _createDescriptors(chart, all) {\n    const config = chart && chart.config;\n    const options = valueOrDefault(config.options && config.options.plugins, {});\n    const plugins = allPlugins(config);\n    // options === false => all plugins are disabled\n    return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n  }\n\n  /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n  _notifyStateChanges(chart) {\n    const previousDescriptors = this._oldCache || [];\n    const descriptors = this._cache;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n    this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n    this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n  }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n  const localIds = {};\n  const plugins = [];\n  const keys = Object.keys(registry.plugins.items);\n  for (let i = 0; i < keys.length; i++) {\n    plugins.push(registry.getPlugin(keys[i]));\n  }\n\n  const local = config.plugins || [];\n  for (let i = 0; i < local.length; i++) {\n    const plugin = local[i];\n\n    if (plugins.indexOf(plugin) === -1) {\n      plugins.push(plugin);\n      localIds[plugin.id] = true;\n    }\n  }\n\n  return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n  if (!all && options === false) {\n    return null;\n  }\n  if (options === true) {\n    return {};\n  }\n  return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n  const result = [];\n  const context = chart.getContext();\n\n  for (const plugin of plugins) {\n    const id = plugin.id;\n    const opts = getOpts(options[id], all);\n    if (opts === null) {\n      continue;\n    }\n    result.push({\n      plugin,\n      options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n    });\n  }\n\n  return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n  const keys = config.pluginScopeKeys(plugin);\n  const scopes = config.getOptionScopes(opts, keys);\n  if (local && plugin.defaults) {\n    // make sure plugin defaults are in scopes for local (not registered) plugins\n    scopes.push(plugin.defaults);\n  }\n  return config.createResolver(scopes, context, [''], {\n    // These are just defaults that plugins can override\n    scriptable: false,\n    indexable: false,\n    allKeys: true\n  });\n}\n","import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n  const datasetDefaults = defaults.datasets[type] || {};\n  const datasetOptions = (options.datasets || {})[type] || {};\n  return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n  let axis = id;\n  if (id === '_index_') {\n    axis = indexAxis;\n  } else if (id === '_value_') {\n    axis = indexAxis === 'x' ? 'y' : 'x';\n  }\n  return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n  return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n  if (id === 'x' || id === 'y' || id === 'r') {\n    return id;\n  }\n}\n\nfunction axisFromPosition(position) {\n  if (position === 'top' || position === 'bottom') {\n    return 'x';\n  }\n  if (position === 'left' || position === 'right') {\n    return 'y';\n  }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n  if (idMatchesAxis(id)) {\n    return id;\n  }\n  for (const opts of scaleOptions) {\n    const axis = opts.axis\n      || axisFromPosition(opts.position)\n      || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n    if (axis) {\n      return axis;\n    }\n  }\n  throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n  if (dataset[axis + 'AxisID'] === id) {\n    return {axis};\n  }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n  if (config.data && config.data.datasets) {\n    const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n    if (boundDs.length) {\n      return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n    }\n  }\n  return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n  const chartDefaults = overrides[config.type] || {scales: {}};\n  const configScales = options.scales || {};\n  const chartIndexAxis = getIndexAxis(config.type, options);\n  const scales = Object.create(null);\n\n  // First figure out first scale id's per axis.\n  Object.keys(configScales).forEach(id => {\n    const scaleConf = configScales[id];\n    if (!isObject(scaleConf)) {\n      return console.error(`Invalid scale configuration for scale: ${id}`);\n    }\n    if (scaleConf._proxy) {\n      return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n    }\n    const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n    const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n    const defaultScaleOptions = chartDefaults.scales || {};\n    scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n  });\n\n  // Then merge dataset defaults to scale configs\n  config.data.datasets.forEach(dataset => {\n    const type = dataset.type || config.type;\n    const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n    const datasetDefaults = overrides[type] || {};\n    const defaultScaleOptions = datasetDefaults.scales || {};\n    Object.keys(defaultScaleOptions).forEach(defaultID => {\n      const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n      const id = dataset[axis + 'AxisID'] || axis;\n      scales[id] = scales[id] || Object.create(null);\n      mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n    });\n  });\n\n  // apply scale defaults, if not overridden by dataset defaults\n  Object.keys(scales).forEach(key => {\n    const scale = scales[key];\n    mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n  });\n\n  return scales;\n}\n\nfunction initOptions(config) {\n  const options = config.options || (config.options = {});\n\n  options.plugins = valueOrDefault(options.plugins, {});\n  options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n  data = data || {};\n  data.datasets = data.datasets || [];\n  data.labels = data.labels || [];\n  return data;\n}\n\nfunction initConfig(config) {\n  config = config || {};\n  config.data = initData(config.data);\n\n  initOptions(config);\n\n  return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n  let keys = keyCache.get(cacheKey);\n  if (!keys) {\n    keys = generate();\n    keyCache.set(cacheKey, keys);\n    keysCached.add(keys);\n  }\n  return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n  const opts = resolveObjectKey(obj, key);\n  if (opts !== undefined) {\n    set.add(opts);\n  }\n};\n\nexport default class Config {\n  constructor(config) {\n    this._config = initConfig(config);\n    this._scopeCache = new Map();\n    this._resolverCache = new Map();\n  }\n\n  get platform() {\n    return this._config.platform;\n  }\n\n  get type() {\n    return this._config.type;\n  }\n\n  set type(type) {\n    this._config.type = type;\n  }\n\n  get data() {\n    return this._config.data;\n  }\n\n  set data(data) {\n    this._config.data = initData(data);\n  }\n\n  get options() {\n    return this._config.options;\n  }\n\n  set options(options) {\n    this._config.options = options;\n  }\n\n  get plugins() {\n    return this._config.plugins;\n  }\n\n  update() {\n    const config = this._config;\n    this.clearCache();\n    initOptions(config);\n  }\n\n  clearCache() {\n    this._scopeCache.clear();\n    this._resolverCache.clear();\n  }\n\n  /**\n   * Returns the option scope keys for resolving dataset options.\n   * These keys do not include the dataset itself, because it is not under options.\n   * @param {string} datasetType\n   * @return {string[][]}\n   */\n  datasetScopeKeys(datasetType) {\n    return cachedKeys(datasetType,\n      () => [[\n        `datasets.${datasetType}`,\n        ''\n      ]]);\n  }\n\n  /**\n   * Returns the option scope keys for resolving dataset animation options.\n   * These keys do not include the dataset itself, because it is not under options.\n   * @param {string} datasetType\n   * @param {string} transition\n   * @return {string[][]}\n   */\n  datasetAnimationScopeKeys(datasetType, transition) {\n    return cachedKeys(`${datasetType}.transition.${transition}`,\n      () => [\n        [\n          `datasets.${datasetType}.transitions.${transition}`,\n          `transitions.${transition}`,\n        ],\n        // The following are used for looking up the `animations` and `animation` keys\n        [\n          `datasets.${datasetType}`,\n          ''\n        ]\n      ]);\n  }\n\n  /**\n   * Returns the options scope keys for resolving element options that belong\n   * to an dataset. These keys do not include the dataset itself, because it\n   * is not under options.\n   * @param {string} datasetType\n   * @param {string} elementType\n   * @return {string[][]}\n   */\n  datasetElementScopeKeys(datasetType, elementType) {\n    return cachedKeys(`${datasetType}-${elementType}`,\n      () => [[\n        `datasets.${datasetType}.elements.${elementType}`,\n        `datasets.${datasetType}`,\n        `elements.${elementType}`,\n        ''\n      ]]);\n  }\n\n  /**\n   * Returns the options scope keys for resolving plugin options.\n   * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n   * @return {string[][]}\n   */\n  pluginScopeKeys(plugin) {\n    const id = plugin.id;\n    const type = this.type;\n    return cachedKeys(`${type}-plugin-${id}`,\n      () => [[\n        `plugins.${id}`,\n        ...plugin.additionalOptionScopes || [],\n      ]]);\n  }\n\n  /**\n   * @private\n   */\n  _cachedScopes(mainScope, resetCache) {\n    const _scopeCache = this._scopeCache;\n    let cache = _scopeCache.get(mainScope);\n    if (!cache || resetCache) {\n      cache = new Map();\n      _scopeCache.set(mainScope, cache);\n    }\n    return cache;\n  }\n\n  /**\n   * Resolves the objects from options and defaults for option value resolution.\n   * @param {object} mainScope - The main scope object for options\n   * @param {string[][]} keyLists - The arrays of keys in resolution order\n   * @param {boolean} [resetCache] - reset the cache for this mainScope\n   */\n  getOptionScopes(mainScope, keyLists, resetCache) {\n    const {options, type} = this;\n    const cache = this._cachedScopes(mainScope, resetCache);\n    const cached = cache.get(keyLists);\n    if (cached) {\n      return cached;\n    }\n\n    const scopes = new Set();\n\n    keyLists.forEach(keys => {\n      if (mainScope) {\n        scopes.add(mainScope);\n        keys.forEach(key => addIfFound(scopes, mainScope, key));\n      }\n      keys.forEach(key => addIfFound(scopes, options, key));\n      keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n      keys.forEach(key => addIfFound(scopes, defaults, key));\n      keys.forEach(key => addIfFound(scopes, descriptors, key));\n    });\n\n    const array = Array.from(scopes);\n    if (array.length === 0) {\n      array.push(Object.create(null));\n    }\n    if (keysCached.has(keyLists)) {\n      cache.set(keyLists, array);\n    }\n    return array;\n  }\n\n  /**\n   * Returns the option scopes for resolving chart options\n   * @return {object[]}\n   */\n  chartOptionScopes() {\n    const {options, type} = this;\n\n    return [\n      options,\n      overrides[type] || {},\n      defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n      {type},\n      defaults,\n      descriptors\n    ];\n  }\n\n  /**\n   * @param {object[]} scopes\n   * @param {string[]} names\n   * @param {function|object} context\n   * @param {string[]} [prefixes]\n   * @return {object}\n   */\n  resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n    const result = {$shared: true};\n    const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n    let options = resolver;\n    if (needContext(resolver, names)) {\n      result.$shared = false;\n      context = isFunction(context) ? context() : context;\n      // subResolver is passed to scriptable options. It should not resolve to hover options.\n      const subResolver = this.createResolver(scopes, context, subPrefixes);\n      options = _attachContext(resolver, context, subResolver);\n    }\n\n    for (const prop of names) {\n      result[prop] = options[prop];\n    }\n    return result;\n  }\n\n  /**\n   * @param {object[]} scopes\n   * @param {object} [context]\n   * @param {string[]} [prefixes]\n   * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n   */\n  createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n    const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n    return isObject(context)\n      ? _attachContext(resolver, context, undefined, descriptorDefaults)\n      : resolver;\n  }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n  let cache = resolverCache.get(scopes);\n  if (!cache) {\n    cache = new Map();\n    resolverCache.set(scopes, cache);\n  }\n  const cacheKey = prefixes.join();\n  let cached = cache.get(cacheKey);\n  if (!cached) {\n    const resolver = _createResolver(scopes, prefixes);\n    cached = {\n      resolver,\n      subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n    };\n    cache.set(cacheKey, cached);\n  }\n  return cached;\n}\n\nconst hasFunction = value => isObject(value)\n  && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n  const {isScriptable, isIndexable} = _descriptors(proxy);\n\n  for (const prop of names) {\n    const scriptable = isScriptable(prop);\n    const indexable = isIndexable(prop);\n    const value = (indexable || scriptable) && proxy[prop];\n    if ((scriptable && (isFunction(value) || hasFunction(value)))\n      || (indexable && isArray(value))) {\n      return true;\n    }\n  }\n  return false;\n}\n","import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {retinaScale, _isDomSupported} from '../helpers/helpers.dom.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n  return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n  return function(a, b) {\n    return a[l1] === b[l1]\n      ? a[l2] - b[l2]\n      : a[l1] - b[l1];\n  };\n}\n\nfunction onAnimationsComplete(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n\n  chart.notifyPlugins('afterRender');\n  callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n  const chart = context.chart;\n  const animationOptions = chart.options.animation;\n  callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n  if (_isDomSupported() && typeof item === 'string') {\n    item = document.getElementById(item);\n  } else if (item && item.length) {\n    // Support for array based queries (such as jQuery)\n    item = item[0];\n  }\n\n  if (item && item.canvas) {\n    // Support for any object associated to a canvas (including a context2d)\n    item = item.canvas;\n  }\n  return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n  const canvas = getCanvas(key);\n  return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n  const keys = Object.keys(obj);\n  for (const key of keys) {\n    const intKey = +key;\n    if (intKey >= start) {\n      const value = obj[key];\n      delete obj[key];\n      if (move > 0 || intKey > start) {\n        obj[intKey + move] = value;\n      }\n    }\n  }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n  if (!inChartArea || e.type === 'mouseout') {\n    return null;\n  }\n  if (isClick) {\n    return lastEvent;\n  }\n  return e;\n}\n\nfunction getSizeForArea(scale, chartArea, field) {\n  return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta, chartArea) {\n  const {xScale, yScale} = meta;\n  if (xScale && yScale) {\n    return {\n      left: getSizeForArea(xScale, chartArea, 'left'),\n      right: getSizeForArea(xScale, chartArea, 'right'),\n      top: getSizeForArea(yScale, chartArea, 'top'),\n      bottom: getSizeForArea(yScale, chartArea, 'bottom')\n    };\n  }\n  return chartArea;\n}\n\nclass Chart {\n\n  static defaults = defaults;\n  static instances = instances;\n  static overrides = overrides;\n  static registry = registry;\n  static version = version;\n  static getChart = getChart;\n\n  static register(...items) {\n    registry.add(...items);\n    invalidatePlugins();\n  }\n\n  static unregister(...items) {\n    registry.remove(...items);\n    invalidatePlugins();\n  }\n\n  // eslint-disable-next-line max-statements\n  constructor(item, userConfig) {\n    const config = this.config = new Config(userConfig);\n    const initialCanvas = getCanvas(item);\n    const existingChart = getChart(initialCanvas);\n    if (existingChart) {\n      throw new Error(\n        'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n      );\n    }\n\n    const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n    this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n    this.platform.updateConfig(config);\n\n    const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n    const canvas = context && context.canvas;\n    const height = canvas && canvas.height;\n    const width = canvas && canvas.width;\n\n    this.id = uid();\n    this.ctx = context;\n    this.canvas = canvas;\n    this.width = width;\n    this.height = height;\n    this._options = options;\n    // Store the previously used aspect ratio to determine if a resize\n    // is needed during updates. Do this after _options is set since\n    // aspectRatio uses a getter\n    this._aspectRatio = this.aspectRatio;\n    this._layers = [];\n    this._metasets = [];\n    this._stacks = undefined;\n    this.boxes = [];\n    this.currentDevicePixelRatio = undefined;\n    this.chartArea = undefined;\n    this._active = [];\n    this._lastEvent = undefined;\n    this._listeners = {};\n    /** @type {?{attach?: function, detach?: function, resize?: function}} */\n    this._responsiveListeners = undefined;\n    this._sortedMetasets = [];\n    this.scales = {};\n    this._plugins = new PluginService();\n    this.$proxies = {};\n    this._hiddenIndices = {};\n    this.attached = false;\n    this._animationsDisabled = undefined;\n    this.$context = undefined;\n    this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n    this._dataChanges = [];\n\n    // Add the chart instance to the global namespace\n    instances[this.id] = this;\n\n    if (!context || !canvas) {\n      // The given item is not a compatible context2d element, let's return before finalizing\n      // the chart initialization but after setting basic chart / controller properties that\n      // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n      // https://github.com/chartjs/Chart.js/issues/2807\n      console.error(\"Failed to create chart: can't acquire context from the given item\");\n      return;\n    }\n\n    animator.listen(this, 'complete', onAnimationsComplete);\n    animator.listen(this, 'progress', onAnimationProgress);\n\n    this._initialize();\n    if (this.attached) {\n      this.update();\n    }\n  }\n\n  get aspectRatio() {\n    const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n    if (!isNullOrUndef(aspectRatio)) {\n      // If aspectRatio is defined in options, use that.\n      return aspectRatio;\n    }\n\n    if (maintainAspectRatio && _aspectRatio) {\n      // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n      return _aspectRatio;\n    }\n\n    // Calculate\n    return height ? width / height : null;\n  }\n\n  get data() {\n    return this.config.data;\n  }\n\n  set data(data) {\n    this.config.data = data;\n  }\n\n  get options() {\n    return this._options;\n  }\n\n  set options(options) {\n    this.config.options = options;\n  }\n\n  get registry() {\n    return registry;\n  }\n\n  /**\n\t * @private\n\t */\n  _initialize() {\n    // Before init plugin notification\n    this.notifyPlugins('beforeInit');\n\n    if (this.options.responsive) {\n      this.resize();\n    } else {\n      retinaScale(this, this.options.devicePixelRatio);\n    }\n\n    this.bindEvents();\n\n    // After init plugin notification\n    this.notifyPlugins('afterInit');\n\n    return this;\n  }\n\n  clear() {\n    clearCanvas(this.canvas, this.ctx);\n    return this;\n  }\n\n  stop() {\n    animator.stop(this);\n    return this;\n  }\n\n  /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n  resize(width, height) {\n    if (!animator.running(this)) {\n      this._resize(width, height);\n    } else {\n      this._resizeBeforeDraw = {width, height};\n    }\n  }\n\n  _resize(width, height) {\n    const options = this.options;\n    const canvas = this.canvas;\n    const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n    const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n    const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n    const mode = this.width ? 'resize' : 'attach';\n\n    this.width = newSize.width;\n    this.height = newSize.height;\n    this._aspectRatio = this.aspectRatio;\n    if (!retinaScale(this, newRatio, true)) {\n      return;\n    }\n\n    this.notifyPlugins('resize', {size: newSize});\n\n    callCallback(options.onResize, [this, newSize], this);\n\n    if (this.attached) {\n      if (this._doResize(mode)) {\n        // The resize update is delayed, only draw without updating.\n        this.render();\n      }\n    }\n  }\n\n  ensureScalesHaveIDs() {\n    const options = this.options;\n    const scalesOptions = options.scales || {};\n\n    each(scalesOptions, (axisOptions, axisID) => {\n      axisOptions.id = axisID;\n    });\n  }\n\n  /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n  buildOrUpdateScales() {\n    const options = this.options;\n    const scaleOpts = options.scales;\n    const scales = this.scales;\n    const updated = Object.keys(scales).reduce((obj, id) => {\n      obj[id] = false;\n      return obj;\n    }, {});\n    let items = [];\n\n    if (scaleOpts) {\n      items = items.concat(\n        Object.keys(scaleOpts).map((id) => {\n          const scaleOptions = scaleOpts[id];\n          const axis = determineAxis(id, scaleOptions);\n          const isRadial = axis === 'r';\n          const isHorizontal = axis === 'x';\n          return {\n            options: scaleOptions,\n            dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n            dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n          };\n        })\n      );\n    }\n\n    each(items, (item) => {\n      const scaleOptions = item.options;\n      const id = scaleOptions.id;\n      const axis = determineAxis(id, scaleOptions);\n      const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n      if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n        scaleOptions.position = item.dposition;\n      }\n\n      updated[id] = true;\n      let scale = null;\n      if (id in scales && scales[id].type === scaleType) {\n        scale = scales[id];\n      } else {\n        const scaleClass = registry.getScale(scaleType);\n        scale = new scaleClass({\n          id,\n          type: scaleType,\n          ctx: this.ctx,\n          chart: this\n        });\n        scales[scale.id] = scale;\n      }\n\n      scale.init(scaleOptions, options);\n    });\n    // clear up discarded scales\n    each(updated, (hasUpdated, id) => {\n      if (!hasUpdated) {\n        delete scales[id];\n      }\n    });\n\n    each(scales, (scale) => {\n      layouts.configure(this, scale, scale.options);\n      layouts.addBox(this, scale);\n    });\n  }\n\n  /**\n\t * @private\n\t */\n  _updateMetasets() {\n    const metasets = this._metasets;\n    const numData = this.data.datasets.length;\n    const numMeta = metasets.length;\n\n    metasets.sort((a, b) => a.index - b.index);\n    if (numMeta > numData) {\n      for (let i = numData; i < numMeta; ++i) {\n        this._destroyDatasetMeta(i);\n      }\n      metasets.splice(numData, numMeta - numData);\n    }\n    this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n  }\n\n  /**\n\t * @private\n\t */\n  _removeUnreferencedMetasets() {\n    const {_metasets: metasets, data: {datasets}} = this;\n    if (metasets.length > datasets.length) {\n      delete this._stacks;\n    }\n    metasets.forEach((meta, index) => {\n      if (datasets.filter(x => x === meta._dataset).length === 0) {\n        this._destroyDatasetMeta(index);\n      }\n    });\n  }\n\n  buildOrUpdateControllers() {\n    const newControllers = [];\n    const datasets = this.data.datasets;\n    let i, ilen;\n\n    this._removeUnreferencedMetasets();\n\n    for (i = 0, ilen = datasets.length; i < ilen; i++) {\n      const dataset = datasets[i];\n      let meta = this.getDatasetMeta(i);\n      const type = dataset.type || this.config.type;\n\n      if (meta.type && meta.type !== type) {\n        this._destroyDatasetMeta(i);\n        meta = this.getDatasetMeta(i);\n      }\n      meta.type = type;\n      meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n      meta.order = dataset.order || 0;\n      meta.index = i;\n      meta.label = '' + dataset.label;\n      meta.visible = this.isDatasetVisible(i);\n\n      if (meta.controller) {\n        meta.controller.updateIndex(i);\n        meta.controller.linkScales();\n      } else {\n        const ControllerClass = registry.getController(type);\n        const {datasetElementType, dataElementType} = defaults.datasets[type];\n        Object.assign(ControllerClass, {\n          dataElementType: registry.getElement(dataElementType),\n          datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n        });\n        meta.controller = new ControllerClass(this, i);\n        newControllers.push(meta.controller);\n      }\n    }\n\n    this._updateMetasets();\n    return newControllers;\n  }\n\n  /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n  _resetElements() {\n    each(this.data.datasets, (dataset, datasetIndex) => {\n      this.getDatasetMeta(datasetIndex).controller.reset();\n    }, this);\n  }\n\n  /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n  reset() {\n    this._resetElements();\n    this.notifyPlugins('reset');\n  }\n\n  update(mode) {\n    const config = this.config;\n\n    config.update();\n    const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n    const animsDisabled = this._animationsDisabled = !options.animation;\n\n    this._updateScales();\n    this._checkEventBindings();\n    this._updateHiddenIndices();\n\n    // plugins options references might have change, let's invalidate the cache\n    // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n    this._plugins.invalidate();\n\n    if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n\n    // Make sure dataset controllers are updated and new controllers are reset\n    const newControllers = this.buildOrUpdateControllers();\n\n    this.notifyPlugins('beforeElementsUpdate');\n\n    // Make sure all dataset controllers have correct meta data counts\n    let minPadding = 0;\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n      const {controller} = this.getDatasetMeta(i);\n      const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n      // New controllers will be reset after the layout pass, so we only want to modify\n      // elements added to new datasets\n      controller.buildOrUpdateElements(reset);\n      minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n    }\n    minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n    this._updateLayout(minPadding);\n\n    // Only reset the controllers if we have animations\n    if (!animsDisabled) {\n      // Can only reset the new controllers after the scales have been updated\n      // Reset is done to get the starting point for the initial animation\n      each(newControllers, (controller) => {\n        controller.reset();\n      });\n    }\n\n    this._updateDatasets(mode);\n\n    // Do this before render so that any plugins that need final scale updates can use it\n    this.notifyPlugins('afterUpdate', {mode});\n\n    this._layers.sort(compare2Level('z', '_idx'));\n\n    // Replay last event from before update, or set hover styles on active elements\n    const {_active, _lastEvent} = this;\n    if (_lastEvent) {\n      this._eventHandler(_lastEvent, true);\n    } else if (_active.length) {\n      this._updateHoverStyles(_active, _active, true);\n    }\n\n    this.render();\n  }\n\n  /**\n   * @private\n   */\n  _updateScales() {\n    each(this.scales, (scale) => {\n      layouts.removeBox(this, scale);\n    });\n\n    this.ensureScalesHaveIDs();\n    this.buildOrUpdateScales();\n  }\n\n  /**\n   * @private\n   */\n  _checkEventBindings() {\n    const options = this.options;\n    const existingEvents = new Set(Object.keys(this._listeners));\n    const newEvents = new Set(options.events);\n\n    if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n      // The configured events have changed. Rebind.\n      this.unbindEvents();\n      this.bindEvents();\n    }\n  }\n\n  /**\n   * @private\n   */\n  _updateHiddenIndices() {\n    const {_hiddenIndices} = this;\n    const changes = this._getUniformDataChanges() || [];\n    for (const {method, start, count} of changes) {\n      const move = method === '_removeElements' ? -count : count;\n      moveNumericKeys(_hiddenIndices, start, move);\n    }\n  }\n\n  /**\n   * @private\n   */\n  _getUniformDataChanges() {\n    const _dataChanges = this._dataChanges;\n    if (!_dataChanges || !_dataChanges.length) {\n      return;\n    }\n\n    this._dataChanges = [];\n    const datasetCount = this.data.datasets.length;\n    const makeSet = (idx) => new Set(\n      _dataChanges\n        .filter(c => c[0] === idx)\n        .map((c, i) => i + ',' + c.splice(1).join(','))\n    );\n\n    const changeSet = makeSet(0);\n    for (let i = 1; i < datasetCount; i++) {\n      if (!setsEqual(changeSet, makeSet(i))) {\n        return;\n      }\n    }\n    return Array.from(changeSet)\n      .map(c => c.split(','))\n      .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n  }\n\n  /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n  _updateLayout(minPadding) {\n    if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n      return;\n    }\n\n    layouts.update(this, this.width, this.height, minPadding);\n\n    const area = this.chartArea;\n    const noArea = area.width <= 0 || area.height <= 0;\n\n    this._layers = [];\n    each(this.boxes, (box) => {\n      if (noArea && box.position === 'chartArea') {\n        // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n        return;\n      }\n\n      // configure is called twice, once in core.scale.update and once here.\n      // Here the boxes are fully updated and at their final positions.\n      if (box.configure) {\n        box.configure();\n      }\n      this._layers.push(...box._layers());\n    }, this);\n\n    this._layers.forEach((item, index) => {\n      item._idx = index;\n    });\n\n    this.notifyPlugins('afterLayout');\n  }\n\n  /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n  _updateDatasets(mode) {\n    if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n      return;\n    }\n\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this.getDatasetMeta(i).controller.configure();\n    }\n\n    for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n    }\n\n    this.notifyPlugins('afterDatasetsUpdate', {mode});\n  }\n\n  /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n  _updateDataset(index, mode) {\n    const meta = this.getDatasetMeta(index);\n    const args = {meta, index, mode, cancelable: true};\n\n    if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n      return;\n    }\n\n    meta.controller._update(mode);\n\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetUpdate', args);\n  }\n\n  render() {\n    if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n      return;\n    }\n\n    if (animator.has(this)) {\n      if (this.attached && !animator.running(this)) {\n        animator.start(this);\n      }\n    } else {\n      this.draw();\n      onAnimationsComplete({chart: this});\n    }\n  }\n\n  draw() {\n    let i;\n    if (this._resizeBeforeDraw) {\n      const {width, height} = this._resizeBeforeDraw;\n      // Unset pending resize request now to avoid possible recursion within _resize\n      this._resizeBeforeDraw = null;\n      this._resize(width, height);\n    }\n    this.clear();\n\n    if (this.width <= 0 || this.height <= 0) {\n      return;\n    }\n\n    if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n      return;\n    }\n\n    // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n    // currently be part of layers. Instead, we draw\n    // layers <= 0 before(default, backward compat), and the rest after\n    const layers = this._layers;\n    for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n\n    this._drawDatasets();\n\n    // Rest of layers\n    for (; i < layers.length; ++i) {\n      layers[i].draw(this.chartArea);\n    }\n\n    this.notifyPlugins('afterDraw');\n  }\n\n  /**\n\t * @private\n\t */\n  _getSortedDatasetMetas(filterVisible) {\n    const metasets = this._sortedMetasets;\n    const result = [];\n    let i, ilen;\n\n    for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n      const meta = metasets[i];\n      if (!filterVisible || meta.visible) {\n        result.push(meta);\n      }\n    }\n\n    return result;\n  }\n\n  /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n  getSortedVisibleDatasetMetas() {\n    return this._getSortedDatasetMetas(true);\n  }\n\n  /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n  _drawDatasets() {\n    if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n      return;\n    }\n\n    const metasets = this.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      this._drawDataset(metasets[i]);\n    }\n\n    this.notifyPlugins('afterDatasetsDraw');\n  }\n\n  /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n  _drawDataset(meta) {\n    const ctx = this.ctx;\n    const clip = meta._clip;\n    const useClip = !clip.disabled;\n    const area = getDatasetArea(meta, this.chartArea);\n    const args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n\n    if (useClip) {\n      clipArea(ctx, {\n        left: clip.left === false ? 0 : area.left - clip.left,\n        right: clip.right === false ? this.width : area.right + clip.right,\n        top: clip.top === false ? 0 : area.top - clip.top,\n        bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n      });\n    }\n\n    meta.controller.draw();\n\n    if (useClip) {\n      unclipArea(ctx);\n    }\n\n    args.cancelable = false;\n    this.notifyPlugins('afterDatasetDraw', args);\n  }\n\n  /**\n   * Checks whether the given point is in the chart area.\n   * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n   * @returns {boolean}\n   */\n  isPointInArea(point) {\n    return _isPointInArea(point, this.chartArea, this._minPadding);\n  }\n\n  getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n    const method = Interaction.modes[mode];\n    if (typeof method === 'function') {\n      return method(this, e, options, useFinalPosition);\n    }\n\n    return [];\n  }\n\n  getDatasetMeta(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    const metasets = this._metasets;\n    let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n    if (!meta) {\n      meta = {\n        type: null,\n        data: [],\n        dataset: null,\n        controller: null,\n        hidden: null,\t\t\t// See isDatasetVisible() comment\n        xAxisID: null,\n        yAxisID: null,\n        order: dataset && dataset.order || 0,\n        index: datasetIndex,\n        _dataset: dataset,\n        _parsed: [],\n        _sorted: false\n      };\n      metasets.push(meta);\n    }\n\n    return meta;\n  }\n\n  getContext() {\n    return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n  }\n\n  getVisibleDatasetCount() {\n    return this.getSortedVisibleDatasetMetas().length;\n  }\n\n  isDatasetVisible(datasetIndex) {\n    const dataset = this.data.datasets[datasetIndex];\n    if (!dataset) {\n      return false;\n    }\n\n    const meta = this.getDatasetMeta(datasetIndex);\n\n    // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n    // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n    return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n  }\n\n  setDatasetVisibility(datasetIndex, visible) {\n    const meta = this.getDatasetMeta(datasetIndex);\n    meta.hidden = !visible;\n  }\n\n  toggleDataVisibility(index) {\n    this._hiddenIndices[index] = !this._hiddenIndices[index];\n  }\n\n  getDataVisibility(index) {\n    return !this._hiddenIndices[index];\n  }\n\n  /**\n\t * @private\n\t */\n  _updateVisibility(datasetIndex, dataIndex, visible) {\n    const mode = visible ? 'show' : 'hide';\n    const meta = this.getDatasetMeta(datasetIndex);\n    const anims = meta.controller._resolveAnimations(undefined, mode);\n\n    if (defined(dataIndex)) {\n      meta.data[dataIndex].hidden = !visible;\n      this.update();\n    } else {\n      this.setDatasetVisibility(datasetIndex, visible);\n      // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n      anims.update(meta, {visible});\n      this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n    }\n  }\n\n  hide(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, false);\n  }\n\n  show(datasetIndex, dataIndex) {\n    this._updateVisibility(datasetIndex, dataIndex, true);\n  }\n\n  /**\n\t * @private\n\t */\n  _destroyDatasetMeta(datasetIndex) {\n    const meta = this._metasets[datasetIndex];\n    if (meta && meta.controller) {\n      meta.controller._destroy();\n    }\n    delete this._metasets[datasetIndex];\n  }\n\n  _stop() {\n    let i, ilen;\n    this.stop();\n    animator.remove(this);\n\n    for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n      this._destroyDatasetMeta(i);\n    }\n  }\n\n  destroy() {\n    this.notifyPlugins('beforeDestroy');\n    const {canvas, ctx} = this;\n\n    this._stop();\n    this.config.clearCache();\n\n    if (canvas) {\n      this.unbindEvents();\n      clearCanvas(canvas, ctx);\n      this.platform.releaseContext(ctx);\n      this.canvas = null;\n      this.ctx = null;\n    }\n\n    delete instances[this.id];\n\n    this.notifyPlugins('afterDestroy');\n  }\n\n  toBase64Image(...args) {\n    return this.canvas.toDataURL(...args);\n  }\n\n  /**\n\t * @private\n\t */\n  bindEvents() {\n    this.bindUserEvents();\n    if (this.options.responsive) {\n      this.bindResponsiveEvents();\n    } else {\n      this.attached = true;\n    }\n  }\n\n  /**\n   * @private\n   */\n  bindUserEvents() {\n    const listeners = this._listeners;\n    const platform = this.platform;\n\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n\n    const listener = (e, x, y) => {\n      e.offsetX = x;\n      e.offsetY = y;\n      this._eventHandler(e);\n    };\n\n    each(this.options.events, (type) => _add(type, listener));\n  }\n\n  /**\n   * @private\n   */\n  bindResponsiveEvents() {\n    if (!this._responsiveListeners) {\n      this._responsiveListeners = {};\n    }\n    const listeners = this._responsiveListeners;\n    const platform = this.platform;\n\n    const _add = (type, listener) => {\n      platform.addEventListener(this, type, listener);\n      listeners[type] = listener;\n    };\n    const _remove = (type, listener) => {\n      if (listeners[type]) {\n        platform.removeEventListener(this, type, listener);\n        delete listeners[type];\n      }\n    };\n\n    const listener = (width, height) => {\n      if (this.canvas) {\n        this.resize(width, height);\n      }\n    };\n\n    let detached; // eslint-disable-line prefer-const\n    const attached = () => {\n      _remove('attach', attached);\n\n      this.attached = true;\n      this.resize();\n\n      _add('resize', listener);\n      _add('detach', detached);\n    };\n\n    detached = () => {\n      this.attached = false;\n\n      _remove('resize', listener);\n\n      // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n      this._stop();\n      this._resize(0, 0);\n\n      _add('attach', attached);\n    };\n\n    if (platform.isAttached(this.canvas)) {\n      attached();\n    } else {\n      detached();\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  unbindEvents() {\n    each(this._listeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._listeners = {};\n\n    each(this._responsiveListeners, (listener, type) => {\n      this.platform.removeEventListener(this, type, listener);\n    });\n    this._responsiveListeners = undefined;\n  }\n\n  updateHoverStyle(items, mode, enabled) {\n    const prefix = enabled ? 'set' : 'remove';\n    let meta, item, i, ilen;\n\n    if (mode === 'dataset') {\n      meta = this.getDatasetMeta(items[0].datasetIndex);\n      meta.controller['_' + prefix + 'DatasetHoverStyle']();\n    }\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      item = items[i];\n      const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n      if (controller) {\n        controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n      }\n    }\n  }\n\n  /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n  getActiveElements() {\n    return this._active || [];\n  }\n\n  /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n  setActiveElements(activeElements) {\n    const lastActive = this._active || [];\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.getDatasetMeta(datasetIndex);\n      if (!meta) {\n        throw new Error('No dataset found at index ' + datasetIndex);\n      }\n\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(active, lastActive);\n\n    if (changed) {\n      this._active = active;\n      // Make sure we don't use the previous mouse event to override the active elements in update.\n      this._lastEvent = null;\n      this._updateHoverStyles(active, lastActive);\n    }\n  }\n\n  /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n   * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n  notifyPlugins(hook, args, filter) {\n    return this._plugins.notify(this, hook, args, filter);\n  }\n\n  /**\n   * Check if a plugin with the specific ID is registered and enabled\n   * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n   * @returns {boolean}\n   */\n  isPluginEnabled(pluginId) {\n    return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n  }\n\n  /**\n\t * @private\n\t */\n  _updateHoverStyles(active, lastActive, replay) {\n    const hoverOptions = this.options.hover;\n    const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n    const deactivated = diff(lastActive, active);\n    const activated = replay ? active : diff(active, lastActive);\n\n    if (deactivated.length) {\n      this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n    }\n\n    if (activated.length && hoverOptions.mode) {\n      this.updateHoverStyle(activated, hoverOptions.mode, true);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _eventHandler(e, replay) {\n    const args = {\n      event: e,\n      replay,\n      cancelable: true,\n      inChartArea: this.isPointInArea(e)\n    };\n    const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n    if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n      return;\n    }\n\n    const changed = this._handleEvent(e, replay, args.inChartArea);\n\n    args.cancelable = false;\n    this.notifyPlugins('afterEvent', args, eventFilter);\n\n    if (changed || args.changed) {\n      this.render();\n    }\n\n    return this;\n  }\n\n  /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n   * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n  _handleEvent(e, replay, inChartArea) {\n    const {_active: lastActive = [], options} = this;\n\n    // If the event is replayed from `update`, we should evaluate with the final positions.\n    //\n    // The `replay`:\n    // It's the last event (excluding click) that has occurred before `update`.\n    // So mouse has not moved. It's also over the chart, because there is a `replay`.\n    //\n    // The why:\n    // If animations are active, the elements haven't moved yet compared to state before update.\n    // But if they will, we are activating the elements that would be active, if this check\n    // was done after the animations have completed. => \"final positions\".\n    // If there is no animations, the \"final\" and \"current\" positions are equal.\n    // This is done so we do not have to evaluate the active elements each animation frame\n    // - it would be expensive.\n    const useFinalPosition = replay;\n    const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n    const isClick = _isClickEvent(e);\n    const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n    if (inChartArea) {\n      // Set _lastEvent to null while we are processing the event handlers.\n      // This prevents recursion if the handler calls chart.update()\n      this._lastEvent = null;\n\n      // Invoke onHover hook\n      callCallback(options.onHover, [e, active, this], this);\n\n      if (isClick) {\n        callCallback(options.onClick, [e, active, this], this);\n      }\n    }\n\n    const changed = !_elementsEqual(active, lastActive);\n    if (changed || replay) {\n      this._active = active;\n      this._updateHoverStyles(active, lastActive, replay);\n    }\n\n    this._lastEvent = lastEvent;\n\n    return changed;\n  }\n\n  /**\n   * @param {ChartEvent} e - The event\n   * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n   * @param {boolean} inChartArea - Is the event inside chartArea\n   * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n   * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n   * @pravate\n   */\n  _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n    if (e.type === 'mouseout') {\n      return [];\n    }\n\n    if (!inChartArea) {\n      // Let user control the active elements outside chartArea. Eg. using Legend.\n      return lastActive;\n    }\n\n    const hoverOptions = this.options.hover;\n    return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n  }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n  return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n","import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n  if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n    return BasicPlatform;\n  }\n  return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n","import Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n  const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n  let angleMargin = pixelMargin / outerRadius;\n\n  // Draw an inner border by clipping the arc and drawing a double-width border\n  // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n  if (innerRadius > pixelMargin) {\n    angleMargin = pixelMargin / innerRadius;\n    ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n  } else {\n    ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n  }\n  ctx.closePath();\n  ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n  return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n  const o = toRadiusCorners(arc.options.borderRadius);\n  const halfThickness = (outerRadius - innerRadius) / 2;\n  const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n  // Outer limits are complicated. We want to compute the available angular distance at\n  // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n  // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n  //\n  // If the borderRadius is large, that value can become negative.\n  // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n  // we know that the thickness term will dominate and compute the limits at that point\n  const computeOuterLimit = (val) => {\n    const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n    return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n  };\n\n  return {\n    outerStart: computeOuterLimit(o.outerStart),\n    outerEnd: computeOuterLimit(o.outerEnd),\n    innerStart: _limitValue(o.innerStart, 0, innerLimit),\n    innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n  };\n}\n\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n  return {\n    x: x + r * Math.cos(theta),\n    y: y + r * Math.sin(theta),\n  };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n *   Start      End\n *\n *    1--->a--->2    Outer\n *   /           \\\n *   8           3\n *   |           |\n *   |           |\n *   7           4\n *   \\           /\n *    6<---b<---5    Inner\n */\nfunction pathArc(\n  ctx: CanvasRenderingContext2D,\n  element: ArcElement,\n  offset: number,\n  spacing: number,\n  end: number,\n  circular: boolean,\n) {\n  const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n  const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n  const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n  let spacingOffset = 0;\n  const alpha = end - start;\n\n  if (spacing) {\n    // When spacing is present, it is the same for all items\n    // So we adjust the start and end angle of the arc such that\n    // the distance is the same as it would be without the spacing\n    const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n    const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n    const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n    const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n    spacingOffset = (alpha - adjustedAngle) / 2;\n  }\n\n  const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n  const angleOffset = (alpha - beta) / 2;\n  const startAngle = start + angleOffset + spacingOffset;\n  const endAngle = end - angleOffset - spacingOffset;\n  const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n  const outerStartAdjustedRadius = outerRadius - outerStart;\n  const outerEndAdjustedRadius = outerRadius - outerEnd;\n  const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n  const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n  const innerStartAdjustedRadius = innerRadius + innerStart;\n  const innerEndAdjustedRadius = innerRadius + innerEnd;\n  const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n  const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n  ctx.beginPath();\n\n  if (circular) {\n    // The first arc segments from point 1 to point a to point 2\n    const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n    ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n    ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n    // The corner segment from point 2 to point 3\n    if (outerEnd > 0) {\n      const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n    }\n\n    // The line from point 3 to point 4\n    const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n    ctx.lineTo(p4.x, p4.y);\n\n    // The corner segment from point 4 to point 5\n    if (innerEnd > 0) {\n      const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n    }\n\n    // The inner arc from point 5 to point b to point 6\n    const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n    ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n    ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n    // The corner segment from point 6 to point 7\n    if (innerStart > 0) {\n      const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n    }\n\n    // The line from point 7 to point 8\n    const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n    ctx.lineTo(p8.x, p8.y);\n\n    // The corner segment from point 8 to point 1\n    if (outerStart > 0) {\n      const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n      ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n    }\n  } else {\n    ctx.moveTo(x, y);\n\n    const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n    const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerStartX, outerStartY);\n\n    const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n    const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n    ctx.lineTo(outerEndX, outerEndY);\n  }\n\n  ctx.closePath();\n}\n\nfunction drawArc(\n  ctx: CanvasRenderingContext2D,\n  element: ArcElement,\n  offset: number,\n  spacing: number,\n  circular: boolean,\n) {\n  const {fullCircles, startAngle, circumference} = element;\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, endAngle, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.fill();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + (circumference % TAU || TAU);\n    }\n  }\n  pathArc(ctx, element, offset, spacing, endAngle, circular);\n  ctx.fill();\n  return endAngle;\n}\n\nfunction drawBorder(\n  ctx: CanvasRenderingContext2D,\n  element: ArcElement,\n  offset: number,\n  spacing: number,\n  circular: boolean,\n) {\n  const {fullCircles, startAngle, circumference, options} = element;\n  const {borderWidth, borderJoinStyle, borderDash, borderDashOffset} = options;\n  const inner = options.borderAlign === 'inner';\n\n  if (!borderWidth) {\n    return;\n  }\n\n  ctx.setLineDash(borderDash || []);\n  ctx.lineDashOffset = borderDashOffset;\n\n  if (inner) {\n    ctx.lineWidth = borderWidth * 2;\n    ctx.lineJoin = borderJoinStyle || 'round';\n  } else {\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = borderJoinStyle || 'bevel';\n  }\n\n  let endAngle = element.endAngle;\n  if (fullCircles) {\n    pathArc(ctx, element, offset, spacing, endAngle, circular);\n    for (let i = 0; i < fullCircles; ++i) {\n      ctx.stroke();\n    }\n    if (!isNaN(circumference)) {\n      endAngle = startAngle + (circumference % TAU || TAU);\n    }\n  }\n\n  if (inner) {\n    clipArc(ctx, element, endAngle);\n  }\n\n  if (!fullCircles) {\n    pathArc(ctx, element, offset, spacing, endAngle, circular);\n    ctx.stroke();\n  }\n}\n\nexport interface ArcProps extends Point {\n  startAngle: number;\n  endAngle: number;\n  innerRadius: number;\n  outerRadius: number;\n  circumference: number;\n}\n\nexport default class ArcElement extends Element<ArcProps, ArcOptions> {\n\n  static id = 'arc';\n\n  static defaults = {\n    borderAlign: 'center',\n    borderColor: '#fff',\n    borderDash: [],\n    borderDashOffset: 0,\n    borderJoinStyle: undefined,\n    borderRadius: 0,\n    borderWidth: 2,\n    offset: 0,\n    spacing: 0,\n    angle: undefined,\n    circular: true,\n  };\n\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor'\n  };\n\n  static descriptors = {\n    _scriptable: true,\n    _indexable: (name) => name !== 'borderDash'\n  };\n\n  circumference: number;\n  endAngle: number;\n  fullCircles: number;\n  innerRadius: number;\n  outerRadius: number;\n  pixelMargin: number;\n  startAngle: number;\n\n  constructor(cfg) {\n    super();\n\n    this.options = undefined;\n    this.circumference = undefined;\n    this.startAngle = undefined;\n    this.endAngle = undefined;\n    this.innerRadius = undefined;\n    this.outerRadius = undefined;\n    this.pixelMargin = 0;\n    this.fullCircles = 0;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n    const point = this.getProps(['x', 'y'], useFinalPosition);\n    const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n    const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius',\n      'circumference'\n    ], useFinalPosition);\n    const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n    const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n    const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n    const betweenAngles = _circumference >= TAU || nonZeroBetween;\n    const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n    return (betweenAngles && withinRadius);\n  }\n\n  getCenterPoint(useFinalPosition: boolean) {\n    const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n      'x',\n      'y',\n      'startAngle',\n      'endAngle',\n      'innerRadius',\n      'outerRadius'\n    ], useFinalPosition);\n    const {offset, spacing} = this.options;\n    const halfAngle = (startAngle + endAngle) / 2;\n    const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n    return {\n      x: x + Math.cos(halfAngle) * halfRadius,\n      y: y + Math.sin(halfAngle) * halfRadius\n    };\n  }\n\n  tooltipPosition(useFinalPosition: boolean) {\n    return this.getCenterPoint(useFinalPosition);\n  }\n\n  draw(ctx: CanvasRenderingContext2D) {\n    const {options, circumference} = this;\n    const offset = (options.offset || 0) / 4;\n    const spacing = (options.spacing || 0) / 2;\n    const circular = options.circular;\n    this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n    this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n    if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n      return;\n    }\n\n    ctx.save();\n\n    const halfAngle = (this.startAngle + this.endAngle) / 2;\n    ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n    const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n    const radiusOffset = offset * fix;\n\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n\n    drawArc(ctx, this, radiusOffset, spacing, circular);\n    drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n    ctx.restore();\n  }\n}\n","import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n  ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n  ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n  ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n  ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n  ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n  ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n  ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @returns {any}\n */\nfunction getLineMethod(options) {\n  if (options.stepped) {\n    return _steppedLineTo;\n  }\n\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierCurveTo;\n  }\n\n  return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n  const count = points.length;\n  const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n  const {start: segmentStart, end: segmentEnd} = segment;\n  const start = Math.max(paramsStart, segmentStart);\n  const end = Math.min(paramsEnd, segmentEnd);\n  const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n  return {\n    count,\n    start,\n    loop: segment.loop,\n    ilen: end < start && !outside ? count + end - start : end - start\n  };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n  const {points, options} = line;\n  const {count, start, loop, ilen} = pathVars(points, segment, params);\n  const lineMethod = getLineMethod(options);\n  // eslint-disable-next-line prefer-const\n  let {move = true, reverse} = params || {};\n  let i, point, prev;\n\n  for (i = 0; i <= ilen; ++i) {\n    point = points[(start + (reverse ? ilen - i : i)) % count];\n\n    if (point.skip) {\n      // If there is a skipped point inside a segment, spanGaps must be true\n      continue;\n    } else if (move) {\n      ctx.moveTo(point.x, point.y);\n      move = false;\n    } else {\n      lineMethod(ctx, prev, point, reverse, options.stepped);\n    }\n\n    prev = point;\n  }\n\n  if (loop) {\n    point = points[(start + (reverse ? ilen : 0)) % count];\n    lineMethod(ctx, prev, point, reverse, options.stepped);\n  }\n\n  return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n  const points = line.points;\n  const {count, start, ilen} = pathVars(points, segment, params);\n  const {move = true, reverse} = params || {};\n  let avgX = 0;\n  let countX = 0;\n  let i, point, prevX, minY, maxY, lastY;\n\n  const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n  const drawX = () => {\n    if (minY !== maxY) {\n      // Draw line to maxY and minY, using the average x-coordinate\n      ctx.lineTo(avgX, maxY);\n      ctx.lineTo(avgX, minY);\n      // Line to y-value of last point in group. So the line continues\n      // from correct position. Not using move, to have solid path.\n      ctx.lineTo(avgX, lastY);\n    }\n  };\n\n  if (move) {\n    point = points[pointIndex(0)];\n    ctx.moveTo(point.x, point.y);\n  }\n\n  for (i = 0; i <= ilen; ++i) {\n    point = points[pointIndex(i)];\n\n    if (point.skip) {\n      // If there is a skipped point inside a segment, spanGaps must be true\n      continue;\n    }\n\n    const x = point.x;\n    const y = point.y;\n    const truncX = x | 0; // truncated x-coordinate\n\n    if (truncX === prevX) {\n      // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n      if (y < minY) {\n        minY = y;\n      } else if (y > maxY) {\n        maxY = y;\n      }\n      // For first point in group, countX is `0`, so average will be `x` / 1.\n      avgX = (countX * avgX + x) / ++countX;\n    } else {\n      drawX();\n      // Draw line to next x-position, using the first (or only)\n      // y-value in that group\n      ctx.lineTo(x, y);\n\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n    }\n    // Keep track of the last y-value in group\n    lastY = y;\n  }\n  drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n  const opts = line.options;\n  const borderDash = opts.borderDash && opts.borderDash.length;\n  const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n  return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n  if (options.stepped) {\n    return _steppedInterpolation;\n  }\n\n  if (options.tension || options.cubicInterpolationMode === 'monotone') {\n    return _bezierInterpolation;\n  }\n\n  return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n  let path = line._path;\n  if (!path) {\n    path = line._path = new Path2D();\n    if (line.path(path, start, count)) {\n      path.closePath();\n    }\n  }\n  setStyle(ctx, line.options);\n  ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n  const {segments, options} = line;\n  const segmentMethod = _getSegmentMethod(line);\n\n  for (const segment of segments) {\n    setStyle(ctx, options, segment.style);\n    ctx.beginPath();\n    if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n      ctx.closePath();\n    }\n    ctx.stroke();\n  }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n  if (usePath2D && !line.options.segment) {\n    strokePathWithCache(ctx, line, start, count);\n  } else {\n    strokePathDirect(ctx, line, start, count);\n  }\n}\n\nexport default class LineElement extends Element {\n\n  static id = 'line';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    borderCapStyle: 'butt',\n    borderDash: [],\n    borderDashOffset: 0,\n    borderJoinStyle: 'miter',\n    borderWidth: 3,\n    capBezierPoints: true,\n    cubicInterpolationMode: 'default',\n    fill: false,\n    spanGaps: false,\n    stepped: false,\n    tension: 0,\n  };\n\n  /**\n   * @type {any}\n   */\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor',\n    borderColor: 'borderColor'\n  };\n\n\n  static descriptors = {\n    _scriptable: true,\n    _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n  };\n\n\n  constructor(cfg) {\n    super();\n\n    this.animated = true;\n    this.options = undefined;\n    this._chart = undefined;\n    this._loop = undefined;\n    this._fullLoop = undefined;\n    this._path = undefined;\n    this._points = undefined;\n    this._segments = undefined;\n    this._decimated = false;\n    this._pointsUpdated = false;\n    this._datasetIndex = undefined;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  updateControlPoints(chartArea, indexAxis) {\n    const options = this.options;\n    if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n      const loop = options.spanGaps ? this._loop : this._fullLoop;\n      _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n      this._pointsUpdated = true;\n    }\n  }\n\n  set points(points) {\n    this._points = points;\n    delete this._segments;\n    delete this._path;\n    this._pointsUpdated = false;\n  }\n\n  get points() {\n    return this._points;\n  }\n\n  get segments() {\n    return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n  }\n\n  /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n  first() {\n    const segments = this.segments;\n    const points = this.points;\n    return segments.length && points[segments[0].start];\n  }\n\n  /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n  last() {\n    const segments = this.segments;\n    const points = this.points;\n    const count = segments.length;\n    return count && points[segments[count - 1].end];\n  }\n\n  /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n  interpolate(point, property) {\n    const options = this.options;\n    const value = point[property];\n    const points = this.points;\n    const segments = _boundSegments(this, {property, start: value, end: value});\n\n    if (!segments.length) {\n      return;\n    }\n\n    const result = [];\n    const _interpolate = _getInterpolationMethod(options);\n    let i, ilen;\n    for (i = 0, ilen = segments.length; i < ilen; ++i) {\n      const {start, end} = segments[i];\n      const p1 = points[start];\n      const p2 = points[end];\n      if (p1 === p2) {\n        result.push(p1);\n        continue;\n      }\n      const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n      const interpolated = _interpolate(p1, p2, t, options.stepped);\n      interpolated[property] = point[property];\n      result.push(interpolated);\n    }\n    return result.length === 1 ? result[0] : result;\n  }\n\n  /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n  pathSegment(ctx, segment, params) {\n    const segmentMethod = _getSegmentMethod(this);\n    return segmentMethod(ctx, this, segment, params);\n  }\n\n  /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n  path(ctx, start, count) {\n    const segments = this.segments;\n    const segmentMethod = _getSegmentMethod(this);\n    let loop = this._loop;\n\n    start = start || 0;\n    count = count || (this.points.length - start);\n\n    for (const segment of segments) {\n      loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n    }\n    return !!loop;\n  }\n\n  /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n  draw(ctx, chartArea, start, count) {\n    const options = this.options || {};\n    const points = this.points || [];\n\n    if (points.length && options.borderWidth) {\n      ctx.save();\n\n      draw(ctx, this, start, count);\n\n      ctx.restore();\n    }\n\n    if (this.animated) {\n      // When line is animated, the control points and path are not cached.\n      this._pointsUpdated = false;\n      this._path = undefined;\n    }\n  }\n}\n","import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n  CartesianParsedData,\n  ChartArea,\n  Point,\n  PointHoverOptions,\n  PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n  const options = el.options;\n  const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n  return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element<PointProps, PointOptions & PointHoverOptions> {\n\n  static id = 'point';\n\n  parsed: CartesianParsedData;\n  skip?: boolean;\n  stop?: boolean;\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    borderWidth: 1,\n    hitRadius: 1,\n    hoverBorderWidth: 1,\n    hoverRadius: 4,\n    pointStyle: 'circle',\n    radius: 3,\n    rotation: 0\n  };\n\n  /**\n   * @type {any}\n   */\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor',\n    borderColor: 'borderColor'\n  };\n\n  constructor(cfg) {\n    super();\n\n    this.options = undefined;\n    this.parsed = undefined;\n    this.skip = undefined;\n    this.stop = undefined;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n    const options = this.options;\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n  }\n\n  inXRange(mouseX: number, useFinalPosition?: boolean) {\n    return inRange(this, mouseX, 'x', useFinalPosition);\n  }\n\n  inYRange(mouseY: number, useFinalPosition?: boolean) {\n    return inRange(this, mouseY, 'y', useFinalPosition);\n  }\n\n  getCenterPoint(useFinalPosition?: boolean) {\n    const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n    return {x, y};\n  }\n\n  size(options?: Partial<PointOptions & PointHoverOptions>) {\n    options = options || this.options || {};\n    let radius = options.radius || 0;\n    radius = Math.max(radius, radius && options.hoverRadius || 0);\n    const borderWidth = radius && options.borderWidth || 0;\n    return (radius + borderWidth) * 2;\n  }\n\n  draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n    const options = this.options;\n\n    if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n      return;\n    }\n\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n    ctx.fillStyle = options.backgroundColor;\n    drawPoint(ctx, options, this.x, this.y);\n  }\n\n  getRange() {\n    const options = this.options || {};\n    // @ts-expect-error Fallbacks should never be hit in practice\n    return options.radius + options.hitRadius;\n  }\n}\n","import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n  const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n  let left, right, top, bottom, half;\n\n  if (bar.horizontal) {\n    half = height / 2;\n    left = Math.min(x, base);\n    right = Math.max(x, base);\n    top = y - half;\n    bottom = y + half;\n  } else {\n    half = width / 2;\n    left = x - half;\n    right = x + half;\n    top = Math.min(y, base);\n    bottom = Math.max(y, base);\n  }\n\n  return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n  return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n  const value = bar.options.borderWidth;\n  const skip = bar.borderSkipped;\n  const o = toTRBL(value);\n\n  return {\n    t: skipOrLimit(skip.top, o.top, 0, maxH),\n    r: skipOrLimit(skip.right, o.right, 0, maxW),\n    b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n    l: skipOrLimit(skip.left, o.left, 0, maxW)\n  };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n  const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n  const value = bar.options.borderRadius;\n  const o = toTRBLCorners(value);\n  const maxR = Math.min(maxW, maxH);\n  const skip = bar.borderSkipped;\n\n  // If the value is an object, assume the user knows what they are doing\n  // and apply as directed.\n  const enableBorder = enableBorderRadius || isObject(value);\n\n  return {\n    topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n    topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n    bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n    bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n  };\n}\n\nfunction boundingRects(bar) {\n  const bounds = getBarBounds(bar);\n  const width = bounds.right - bounds.left;\n  const height = bounds.bottom - bounds.top;\n  const border = parseBorderWidth(bar, width / 2, height / 2);\n  const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n  return {\n    outer: {\n      x: bounds.left,\n      y: bounds.top,\n      w: width,\n      h: height,\n      radius\n    },\n    inner: {\n      x: bounds.left + border.l,\n      y: bounds.top + border.t,\n      w: width - border.l - border.r,\n      h: height - border.t - border.b,\n      radius: {\n        topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n        topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n        bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n        bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n      }\n    }\n  };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n  const skipX = x === null;\n  const skipY = y === null;\n  const skipBoth = skipX && skipY;\n  const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n  return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n  return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n  ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n  const x = rect.x !== refRect.x ? -amount : 0;\n  const y = rect.y !== refRect.y ? -amount : 0;\n  const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n  const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n  return {\n    x: rect.x + x,\n    y: rect.y + y,\n    w: rect.w + w,\n    h: rect.h + h,\n    radius: rect.radius\n  };\n}\n\nexport default class BarElement extends Element {\n\n  static id = 'bar';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    borderSkipped: 'start',\n    borderWidth: 0,\n    borderRadius: 0,\n    inflateAmount: 'auto',\n    pointStyle: undefined\n  };\n\n  /**\n   * @type {any}\n   */\n  static defaultRoutes = {\n    backgroundColor: 'backgroundColor',\n    borderColor: 'borderColor'\n  };\n\n  constructor(cfg) {\n    super();\n\n    this.options = undefined;\n    this.horizontal = undefined;\n    this.base = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.inflateAmount = undefined;\n\n    if (cfg) {\n      Object.assign(this, cfg);\n    }\n  }\n\n  draw(ctx) {\n    const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n    const {inner, outer} = boundingRects(this);\n    const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n    ctx.save();\n\n    if (outer.w !== inner.w || outer.h !== inner.h) {\n      ctx.beginPath();\n      addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n      ctx.clip();\n      addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n      ctx.fillStyle = borderColor;\n      ctx.fill('evenodd');\n    }\n\n    ctx.beginPath();\n    addRectPath(ctx, inflateRect(inner, inflateAmount));\n    ctx.fillStyle = backgroundColor;\n    ctx.fill();\n\n    ctx.restore();\n  }\n\n  inRange(mouseX, mouseY, useFinalPosition) {\n    return inRange(this, mouseX, mouseY, useFinalPosition);\n  }\n\n  inXRange(mouseX, useFinalPosition) {\n    return inRange(this, mouseX, null, useFinalPosition);\n  }\n\n  inYRange(mouseY, useFinalPosition) {\n    return inRange(this, null, mouseY, useFinalPosition);\n  }\n\n  getCenterPoint(useFinalPosition) {\n    const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n    return {\n      x: horizontal ? (x + base) / 2 : x,\n      y: horizontal ? y : (y + base) / 2\n    };\n  }\n\n  getRange(axis) {\n    return axis === 'x' ? this.width / 2 : this.height / 2;\n  }\n}\n","import {DoughnutController, PolarAreaController, defaults} from '../index.js';\nimport type {Chart, ChartDataset} from '../types.js';\n\nexport interface ColorsPluginOptions {\n  enabled?: boolean;\n  forceOverride?: boolean;\n}\n\ninterface ColorsDescriptor {\n  backgroundColor?: unknown;\n  borderColor?: unknown;\n}\n\nconst BORDER_COLORS = [\n  'rgb(54, 162, 235)', // blue\n  'rgb(255, 99, 132)', // red\n  'rgb(255, 159, 64)', // orange\n  'rgb(255, 205, 86)', // yellow\n  'rgb(75, 192, 192)', // green\n  'rgb(153, 102, 255)', // purple\n  'rgb(201, 203, 207)' // grey\n];\n\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map(color => color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\n\nfunction getBorderColor(i: number) {\n  return BORDER_COLORS[i % BORDER_COLORS.length];\n}\n\nfunction getBackgroundColor(i: number) {\n  return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\n\nfunction colorizeDefaultDataset(dataset: ChartDataset, i: number) {\n  dataset.borderColor = getBorderColor(i);\n  dataset.backgroundColor = getBackgroundColor(i);\n\n  return ++i;\n}\n\nfunction colorizeDoughnutDataset(dataset: ChartDataset, i: number) {\n  dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++));\n\n  return i;\n}\n\nfunction colorizePolarAreaDataset(dataset: ChartDataset, i: number) {\n  dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++));\n\n  return i;\n}\n\nfunction getColorizer(chart: Chart) {\n  let i = 0;\n\n  return (dataset: ChartDataset, datasetIndex: number) => {\n    const controller = chart.getDatasetMeta(datasetIndex).controller;\n\n    if (controller instanceof DoughnutController) {\n      i = colorizeDoughnutDataset(dataset, i);\n    } else if (controller instanceof PolarAreaController) {\n      i = colorizePolarAreaDataset(dataset, i);\n    } else if (controller) {\n      i = colorizeDefaultDataset(dataset, i);\n    }\n  };\n}\n\nfunction containsColorsDefinitions(\n  descriptors: ColorsDescriptor[] | Record<string, ColorsDescriptor>\n) {\n  let k: number | string;\n\n  for (k in descriptors) {\n    if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction containsColorsDefinition(\n  descriptor: ColorsDescriptor\n) {\n  return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\n\nfunction containsDefaultColorsDefenitions() {\n  return defaults.borderColor !== 'rgba(0,0,0,0.1)' || defaults.backgroundColor !== 'rgba(0,0,0,0.1)';\n}\n\nexport default {\n  id: 'colors',\n\n  defaults: {\n    enabled: true,\n    forceOverride: false\n  } as ColorsPluginOptions,\n\n  beforeLayout(chart: Chart, _args, options: ColorsPluginOptions) {\n    if (!options.enabled) {\n      return;\n    }\n\n    const {\n      data: {datasets},\n      options: chartOptions\n    } = chart.config;\n    const {elements} = chartOptions;\n\n    const containsColorDefenition = (\n      containsColorsDefinitions(datasets) ||\n      containsColorsDefinition(chartOptions) ||\n      (elements && containsColorsDefinitions(elements)) ||\n      containsDefaultColorsDefenitions());\n\n    if (!options.forceOverride && containsColorDefenition) {\n      return;\n    }\n\n    const colorizer = getColorizer(chart);\n\n    datasets.forEach(colorizer);\n  }\n};\n","import {_limitValue, _lookupByKey, isNullOrUndef, resolve} from '../helpers/index.js';\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n  /**\n   * Implementation of the Largest Triangle Three Buckets algorithm.\n   *\n   * This implementation is based on the original implementation by Sveinn Steinarsson\n   * in https://github.com/sveinn-steinarsson/flot-downsample/blob/master/jquery.flot.downsample.js\n   *\n   * The original implementation is MIT licensed.\n   */\n  const samples = options.samples || availableWidth;\n  // There are less points than the threshold, returning the whole array\n  if (samples >= count) {\n    return data.slice(start, start + count);\n  }\n\n  const decimated = [];\n\n  const bucketWidth = (count - 2) / (samples - 2);\n  let sampledIndex = 0;\n  const endIndex = start + count - 1;\n  // Starting from offset\n  let a = start;\n  let i, maxAreaPoint, maxArea, area, nextA;\n\n  decimated[sampledIndex++] = data[a];\n\n  for (i = 0; i < samples - 2; i++) {\n    let avgX = 0;\n    let avgY = 0;\n    let j;\n\n    // Adding offset\n    const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n    const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n    const avgRangeLength = avgRangeEnd - avgRangeStart;\n\n    for (j = avgRangeStart; j < avgRangeEnd; j++) {\n      avgX += data[j].x;\n      avgY += data[j].y;\n    }\n\n    avgX /= avgRangeLength;\n    avgY /= avgRangeLength;\n\n    // Adding offset\n    const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n    const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n    const {x: pointAx, y: pointAy} = data[a];\n\n    // Note that this is changed from the original algorithm which initializes these\n    // values to 1. The reason for this change is that if the area is small, nextA\n    // would never be set and thus a crash would occur in the next loop as `a` would become\n    // `undefined`. Since the area is always positive, but could be 0 in the case of a flat trace,\n    // initializing with a negative number is the correct solution.\n    maxArea = area = -1;\n\n    for (j = rangeOffs; j < rangeTo; j++) {\n      area = 0.5 * Math.abs(\n        (pointAx - avgX) * (data[j].y - pointAy) -\n        (pointAx - data[j].x) * (avgY - pointAy)\n      );\n\n      if (area > maxArea) {\n        maxArea = area;\n        maxAreaPoint = data[j];\n        nextA = j;\n      }\n    }\n\n    decimated[sampledIndex++] = maxAreaPoint;\n    a = nextA;\n  }\n\n  // Include the last point\n  decimated[sampledIndex++] = data[endIndex];\n\n  return decimated;\n}\n\nfunction minMaxDecimation(data, start, count, availableWidth) {\n  let avgX = 0;\n  let countX = 0;\n  let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n  const decimated = [];\n  const endIndex = start + count - 1;\n\n  const xMin = data[start].x;\n  const xMax = data[endIndex].x;\n  const dx = xMax - xMin;\n\n  for (i = start; i < start + count; ++i) {\n    point = data[i];\n    x = (point.x - xMin) / dx * availableWidth;\n    y = point.y;\n    const truncX = x | 0;\n\n    if (truncX === prevX) {\n      // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n      if (y < minY) {\n        minY = y;\n        minIndex = i;\n      } else if (y > maxY) {\n        maxY = y;\n        maxIndex = i;\n      }\n      // For first point in group, countX is `0`, so average will be `x` / 1.\n      // Use point.x here because we're computing the average data `x` value\n      avgX = (countX * avgX + point.x) / ++countX;\n    } else {\n      // Push up to 4 points, 3 for the last interval and the first point for this interval\n      const lastIndex = i - 1;\n\n      if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n        // The interval is defined by 4 points: start, min, max, end.\n        // The starting point is already considered at this point, so we need to determine which\n        // of the other points to add. We need to sort these points to ensure the decimated data\n        // is still sorted and then ensure there are no duplicates.\n        const intermediateIndex1 = Math.min(minIndex, maxIndex);\n        const intermediateIndex2 = Math.max(minIndex, maxIndex);\n\n        if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex1],\n            x: avgX,\n          });\n        }\n        if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n          decimated.push({\n            ...data[intermediateIndex2],\n            x: avgX\n          });\n        }\n      }\n\n      // lastIndex === startIndex will occur when a range has only 1 point which could\n      // happen with very uneven data\n      if (i > 0 && lastIndex !== startIndex) {\n        // Last point in the previous interval\n        decimated.push(data[lastIndex]);\n      }\n\n      // Start of the new interval\n      decimated.push(point);\n      prevX = truncX;\n      countX = 0;\n      minY = maxY = y;\n      minIndex = maxIndex = startIndex = i;\n    }\n  }\n\n  return decimated;\n}\n\nfunction cleanDecimatedDataset(dataset) {\n  if (dataset._decimated) {\n    const data = dataset._data;\n    delete dataset._decimated;\n    delete dataset._data;\n    Object.defineProperty(dataset, 'data', {\n      configurable: true,\n      enumerable: true,\n      writable: true,\n      value: data,\n    });\n  }\n}\n\nfunction cleanDecimatedData(chart) {\n  chart.data.datasets.forEach((dataset) => {\n    cleanDecimatedDataset(dataset);\n  });\n}\n\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n  const pointCount = points.length;\n\n  let start = 0;\n  let count;\n\n  const {iScale} = meta;\n  const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n  if (minDefined) {\n    start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n  }\n  if (maxDefined) {\n    count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n  } else {\n    count = pointCount - start;\n  }\n\n  return {start, count};\n}\n\nexport default {\n  id: 'decimation',\n\n  defaults: {\n    algorithm: 'min-max',\n    enabled: false,\n  },\n\n  beforeElementsUpdate: (chart, args, options) => {\n    if (!options.enabled) {\n      // The decimation plugin may have been previously enabled. Need to remove old `dataset._data` handlers\n      cleanDecimatedData(chart);\n      return;\n    }\n\n    // Assume the entire chart is available to show a few more points than needed\n    const availableWidth = chart.width;\n\n    chart.data.datasets.forEach((dataset, datasetIndex) => {\n      const {_data, indexAxis} = dataset;\n      const meta = chart.getDatasetMeta(datasetIndex);\n      const data = _data || dataset.data;\n\n      if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n        // Decimation is only supported for lines that have an X indexAxis\n        return;\n      }\n\n      if (!meta.controller.supportsDecimation) {\n        // Only line datasets are supported\n        return;\n      }\n\n      const xAxis = chart.scales[meta.xAxisID];\n      if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n        // Only linear interpolation is supported\n        return;\n      }\n\n      if (chart.options.parsing) {\n        // Plugin only supports data that does not need parsing\n        return;\n      }\n\n      let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n      const threshold = options.threshold || 4 * availableWidth;\n      if (count <= threshold) {\n        // No decimation is required until we are above this threshold\n        cleanDecimatedDataset(dataset);\n        return;\n      }\n\n      if (isNullOrUndef(_data)) {\n        // First time we are seeing this dataset\n        // We override the 'data' property with a setter that stores the\n        // raw data in _data, but reads the decimated data from _decimated\n        dataset._data = data;\n        delete dataset.data;\n        Object.defineProperty(dataset, 'data', {\n          configurable: true,\n          enumerable: true,\n          get: function() {\n            return this._decimated;\n          },\n          set: function(d) {\n            this._data = d;\n          }\n        });\n      }\n\n      // Point the chart to the decimated data\n      let decimated;\n      switch (options.algorithm) {\n      case 'lttb':\n        decimated = lttbDecimation(data, start, count, availableWidth, options);\n        break;\n      case 'min-max':\n        decimated = minMaxDecimation(data, start, count, availableWidth);\n        break;\n      default:\n        throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n      }\n\n      dataset._decimated = decimated;\n    });\n  },\n\n  destroy(chart) {\n    cleanDecimatedData(chart);\n  }\n};\n","import {_boundSegment, _boundSegments, _normalizeAngle} from '../../helpers/index.js';\n\nexport function _segments(line, target, property) {\n  const segments = line.segments;\n  const points = line.points;\n  const tpoints = target.points;\n  const parts = [];\n\n  for (const segment of segments) {\n    let {start, end} = segment;\n    end = _findSegmentEnd(start, end, points);\n\n    const bounds = _getBounds(property, points[start], points[end], segment.loop);\n\n    if (!target.segments) {\n      // Special case for boundary not supporting `segments` (simpleArc)\n      // Bounds are provided as `target` for partial circle, or undefined for full circle\n      parts.push({\n        source: segment,\n        target: bounds,\n        start: points[start],\n        end: points[end]\n      });\n      continue;\n    }\n\n    // Get all segments from `target` that intersect the bounds of current segment of `line`\n    const targetSegments = _boundSegments(target, bounds);\n\n    for (const tgt of targetSegments) {\n      const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n      const fillSources = _boundSegment(segment, points, subBounds);\n\n      for (const fillSource of fillSources) {\n        parts.push({\n          source: fillSource,\n          target: tgt,\n          start: {\n            [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n          },\n          end: {\n            [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n          }\n        });\n      }\n    }\n  }\n  return parts;\n}\n\nexport function _getBounds(property, first, last, loop) {\n  if (loop) {\n    return;\n  }\n  let start = first[property];\n  let end = last[property];\n\n  if (property === 'angle') {\n    start = _normalizeAngle(start);\n    end = _normalizeAngle(end);\n  }\n  return {property, start, end};\n}\n\nexport function _pointsFromSegments(boundary, line) {\n  const {x = null, y = null} = boundary || {};\n  const linePoints = line.points;\n  const points = [];\n  line.segments.forEach(({start, end}) => {\n    end = _findSegmentEnd(start, end, linePoints);\n    const first = linePoints[start];\n    const last = linePoints[end];\n    if (y !== null) {\n      points.push({x: first.x, y});\n      points.push({x: last.x, y});\n    } else if (x !== null) {\n      points.push({x, y: first.y});\n      points.push({x, y: last.y});\n    }\n  });\n  return points;\n}\n\nexport function _findSegmentEnd(start, end, points) {\n  for (;end > start; end--) {\n    const point = points[end];\n    if (!isNaN(point.x) && !isNaN(point.y)) {\n      break;\n    }\n  }\n  return end;\n}\n\nfunction _getEdge(a, b, prop, fn) {\n  if (a && b) {\n    return fn(a[prop], b[prop]);\n  }\n  return a ? a[prop] : b ? b[prop] : 0;\n}\n","/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {isArray} from '../../helpers/index.js';\nimport {_pointsFromSegments} from './filler.segment.js';\n\n/**\n * @param {PointElement[] | { x: number; y: number; }} boundary\n * @param {LineElement} line\n * @return {LineElement?}\n */\nexport function _createBoundaryLine(boundary, line) {\n  let points = [];\n  let _loop = false;\n\n  if (isArray(boundary)) {\n    _loop = true;\n    // @ts-ignore\n    points = boundary;\n  } else {\n    points = _pointsFromSegments(boundary, line);\n  }\n\n  return points.length ? new LineElement({\n    points,\n    options: {tension: 0},\n    _loop,\n    _fullLoop: _loop\n  }) : null;\n}\n\nexport function _shouldApplyFill(source) {\n  return source && source.fill !== false;\n}\n","import {isObject, isFinite, valueOrDefault} from '../../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.line.js').default } LineElement\n * @typedef { import('../../types/index.js').FillTarget } FillTarget\n * @typedef { import('../../types/index.js').ComplexFillTarget } ComplexFillTarget\n */\n\nexport function _resolveTarget(sources, index, propagate) {\n  const source = sources[index];\n  let fill = source.fill;\n  const visited = [index];\n  let target;\n\n  if (!propagate) {\n    return fill;\n  }\n\n  while (fill !== false && visited.indexOf(fill) === -1) {\n    if (!isFinite(fill)) {\n      return fill;\n    }\n\n    target = sources[fill];\n    if (!target) {\n      return false;\n    }\n\n    if (target.visible) {\n      return fill;\n    }\n\n    visited.push(fill);\n    fill = target.fill;\n  }\n\n  return false;\n}\n\n/**\n * @param {LineElement} line\n * @param {number} index\n * @param {number} count\n */\nexport function _decodeFill(line, index, count) {\n  /** @type {string | {value: number}} */\n  const fill = parseFillOption(line);\n\n  if (isObject(fill)) {\n    return isNaN(fill.value) ? false : fill;\n  }\n\n  let target = parseFloat(fill);\n\n  if (isFinite(target) && Math.floor(target) === target) {\n    return decodeTargetIndex(fill[0], index, target, count);\n  }\n\n  return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\n\nfunction decodeTargetIndex(firstCh, index, target, count) {\n  if (firstCh === '-' || firstCh === '+') {\n    target = index + target;\n  }\n\n  if (target === index || target < 0 || target >= count) {\n    return false;\n  }\n\n  return target;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @returns {number | null}\n */\nexport function _getTargetPixel(fill, scale) {\n  let pixel = null;\n  if (fill === 'start') {\n    pixel = scale.bottom;\n  } else if (fill === 'end') {\n    pixel = scale.top;\n  } else if (isObject(fill)) {\n    // @ts-ignore\n    pixel = scale.getPixelForValue(fill.value);\n  } else if (scale.getBasePixel) {\n    pixel = scale.getBasePixel();\n  }\n  return pixel;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @param {number} startValue\n * @returns {number | undefined}\n */\nexport function _getTargetValue(fill, scale, startValue) {\n  let value;\n\n  if (fill === 'start') {\n    value = startValue;\n  } else if (fill === 'end') {\n    value = scale.options.reverse ? scale.min : scale.max;\n  } else if (isObject(fill)) {\n    // @ts-ignore\n    value = fill.value;\n  } else {\n    value = scale.getBaseValue();\n  }\n  return value;\n}\n\n/**\n * @param {LineElement} line\n */\nfunction parseFillOption(line) {\n  const options = line.options;\n  const fillOption = options.fill;\n  let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n  if (fill === undefined) {\n    fill = !!options.backgroundColor;\n  }\n\n  if (fill === false || fill === null) {\n    return false;\n  }\n\n  if (fill === true) {\n    return 'origin';\n  }\n  return fill;\n}\n","/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {_isBetween} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\n\n/**\n * @param {{ chart: Chart; scale: Scale; index: number; line: LineElement; }} source\n * @return {LineElement}\n */\nexport function _buildStackLine(source) {\n  const {scale, index, line} = source;\n  const points = [];\n  const segments = line.segments;\n  const sourcePoints = line.points;\n  const linesBelow = getLinesBelow(scale, index);\n  linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    for (let j = segment.start; j <= segment.end; j++) {\n      addPointsBelow(points, sourcePoints[j], linesBelow);\n    }\n  }\n  return new LineElement({points, options: {}});\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @return {LineElement[]}\n */\nfunction getLinesBelow(scale, index) {\n  const below = [];\n  const metas = scale.getMatchingVisibleMetas('line');\n\n  for (let i = 0; i < metas.length; i++) {\n    const meta = metas[i];\n    if (meta.index === index) {\n      break;\n    }\n    if (!meta.hidden) {\n      below.unshift(meta.dataset);\n    }\n  }\n  return below;\n}\n\n/**\n * @param {PointElement[]} points\n * @param {PointElement} sourcePoint\n * @param {LineElement[]} linesBelow\n */\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n  const postponed = [];\n  for (let j = 0; j < linesBelow.length; j++) {\n    const line = linesBelow[j];\n    const {first, last, point} = findPoint(line, sourcePoint, 'x');\n\n    if (!point || (first && last)) {\n      continue;\n    }\n    if (first) {\n      // First point of an segment -> need to add another point before this,\n      // from next line below.\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        // In the middle of an segment, no need to add more points.\n        break;\n      }\n    }\n  }\n  points.push(...postponed);\n}\n\n/**\n * @param {LineElement} line\n * @param {PointElement} sourcePoint\n * @param {string} property\n * @returns {{point?: PointElement, first?: boolean, last?: boolean}}\n */\nfunction findPoint(line, sourcePoint, property) {\n  const point = line.interpolate(sourcePoint, property);\n  if (!point) {\n    return {};\n  }\n\n  const pointValue = point[property];\n  const segments = line.segments;\n  const linePoints = line.points;\n  let first = false;\n  let last = false;\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const firstValue = linePoints[segment.start][property];\n    const lastValue = linePoints[segment.end][property];\n    if (_isBetween(pointValue, firstValue, lastValue)) {\n      first = pointValue === firstValue;\n      last = pointValue === lastValue;\n      break;\n    }\n  }\n  return {first, last, point};\n}\n","import {TAU} from '../../helpers/index.js';\n\n// TODO: use elements.ArcElement instead\nexport class simpleArc {\n  constructor(opts) {\n    this.x = opts.x;\n    this.y = opts.y;\n    this.radius = opts.radius;\n  }\n\n  pathSegment(ctx, bounds, opts) {\n    const {x, y, radius} = this;\n    bounds = bounds || {start: 0, end: TAU};\n    ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n    return !opts.bounds;\n  }\n\n  interpolate(point) {\n    const {x, y, radius} = this;\n    const angle = point.angle;\n    return {\n      x: x + Math.cos(angle) * radius,\n      y: y + Math.sin(angle) * radius,\n      angle\n    };\n  }\n}\n","import {isFinite} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\nimport {_getTargetPixel, _getTargetValue} from './filler.options.js';\nimport {_buildStackLine} from './filler.target.stack.js';\nimport {simpleArc} from './simpleArc.js';\n\n/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nexport function _getTarget(source) {\n  const {chart, fill, line} = source;\n\n  if (isFinite(fill)) {\n    return getLineByIndex(chart, fill);\n  }\n\n  if (fill === 'stack') {\n    return _buildStackLine(source);\n  }\n\n  if (fill === 'shape') {\n    return true;\n  }\n\n  const boundary = computeBoundary(source);\n\n  if (boundary instanceof simpleArc) {\n    return boundary;\n  }\n\n  return _createBoundaryLine(boundary, line);\n}\n\n/**\n * @param {Chart} chart\n * @param {number} index\n */\nfunction getLineByIndex(chart, index) {\n  const meta = chart.getDatasetMeta(index);\n  const visible = meta && chart.isDatasetVisible(index);\n  return visible ? meta.dataset : null;\n}\n\nfunction computeBoundary(source) {\n  const scale = source.scale || {};\n\n  if (scale.getPointPositionForValue) {\n    return computeCircularBoundary(source);\n  }\n  return computeLinearBoundary(source);\n}\n\n\nfunction computeLinearBoundary(source) {\n  const {scale = {}, fill} = source;\n  const pixel = _getTargetPixel(fill, scale);\n\n  if (isFinite(pixel)) {\n    const horizontal = scale.isHorizontal();\n\n    return {\n      x: horizontal ? pixel : null,\n      y: horizontal ? null : pixel\n    };\n  }\n\n  return null;\n}\n\nfunction computeCircularBoundary(source) {\n  const {scale, fill} = source;\n  const options = scale.options;\n  const length = scale.getLabels().length;\n  const start = options.reverse ? scale.max : scale.min;\n  const value = _getTargetValue(fill, scale, start);\n  const target = [];\n\n  if (options.grid.circular) {\n    const center = scale.getPointPositionForValue(0, start);\n    return new simpleArc({\n      x: center.x,\n      y: center.y,\n      radius: scale.getDistanceFromCenterForValue(value)\n    });\n  }\n\n  for (let i = 0; i < length; ++i) {\n    target.push(scale.getPointPositionForValue(i, value));\n  }\n  return target;\n}\n\n","import {clipArea, unclipArea} from '../../helpers/index.js';\nimport {_findSegmentEnd, _getBounds, _segments} from './filler.segment.js';\nimport {_getTarget} from './filler.target.js';\n\nexport function _drawfill(ctx, source, area) {\n  const target = _getTarget(source);\n  const {line, scale, axis} = source;\n  const lineOpts = line.options;\n  const fillOption = lineOpts.fill;\n  const color = lineOpts.backgroundColor;\n  const {above = color, below = color} = fillOption || {};\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis});\n    unclipArea(ctx);\n  }\n}\n\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n\n  ctx.save();\n\n  if (property === 'x' && below !== above) {\n    clipVertical(ctx, target, area.top);\n    fill(ctx, {line, target, color: above, scale, property});\n    ctx.restore();\n    ctx.save();\n    clipVertical(ctx, target, area.bottom);\n  }\n  fill(ctx, {line, target, color: below, scale, property});\n\n  ctx.restore();\n}\n\nfunction clipVertical(ctx, target, clipY) {\n  const {segments, points} = target;\n  let first = true;\n  let lineLoop = false;\n\n  ctx.beginPath();\n  for (const segment of segments) {\n    const {start, end} = segment;\n    const firstPoint = points[start];\n    const lastPoint = points[_findSegmentEnd(start, end, points)];\n    if (first) {\n      ctx.moveTo(firstPoint.x, firstPoint.y);\n      first = false;\n    } else {\n      ctx.lineTo(firstPoint.x, clipY);\n      ctx.lineTo(firstPoint.x, firstPoint.y);\n    }\n    lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n    if (lineLoop) {\n      ctx.closePath();\n    } else {\n      ctx.lineTo(lastPoint.x, clipY);\n    }\n  }\n\n  ctx.lineTo(target.first().x, clipY);\n  ctx.closePath();\n  ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale} = cfg;\n  const segments = _segments(line, target, property);\n\n  for (const {source: src, target: tgt, start, end} of segments) {\n    const {style: {backgroundColor = color} = {}} = src;\n    const notShape = target !== true;\n\n    ctx.save();\n    ctx.fillStyle = backgroundColor;\n\n    clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n\n    ctx.beginPath();\n\n    const lineLoop = !!line.pathSegment(ctx, src);\n\n    let loop;\n    if (notShape) {\n      if (lineLoop) {\n        ctx.closePath();\n      } else {\n        interpolatedLineTo(ctx, target, end, property);\n      }\n\n      const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n      loop = lineLoop && targetLoop;\n      if (!loop) {\n        interpolatedLineTo(ctx, target, start, property);\n      }\n    }\n\n    ctx.closePath();\n    ctx.fill(loop ? 'evenodd' : 'nonzero');\n\n    ctx.restore();\n  }\n}\n\nfunction clipBounds(ctx, scale, bounds) {\n  const {top, bottom} = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n  if (property === 'x') {\n    ctx.beginPath();\n    ctx.rect(start, top, end - start, bottom - top);\n    ctx.clip();\n  }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n  const interpolatedPoint = target.interpolate(point, property);\n  if (interpolatedPoint) {\n    ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n  }\n}\n\n","/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\nimport LineElement from '../../elements/element.line.js';\nimport {_drawfill} from './filler.drawing.js';\nimport {_shouldApplyFill} from './filler.helper.js';\nimport {_decodeFill, _resolveTarget} from './filler.options.js';\n\nexport default {\n  id: 'filler',\n\n  afterDatasetsUpdate(chart, _args, options) {\n    const count = (chart.data.datasets || []).length;\n    const sources = [];\n    let meta, i, line, source;\n\n    for (i = 0; i < count; ++i) {\n      meta = chart.getDatasetMeta(i);\n      line = meta.dataset;\n      source = null;\n\n      if (line && line.options && line instanceof LineElement) {\n        source = {\n          visible: chart.isDatasetVisible(i),\n          index: i,\n          fill: _decodeFill(line, i, count),\n          chart,\n          axis: meta.controller.options.indexAxis,\n          scale: meta.vScale,\n          line,\n        };\n      }\n\n      meta.$filler = source;\n      sources.push(source);\n    }\n\n    for (i = 0; i < count; ++i) {\n      source = sources[i];\n      if (!source || source.fill === false) {\n        continue;\n      }\n\n      source.fill = _resolveTarget(sources, i, options.propagate);\n    }\n  },\n\n  beforeDraw(chart, _args, options) {\n    const draw = options.drawTime === 'beforeDraw';\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    const area = chart.chartArea;\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n      if (!source) {\n        continue;\n      }\n\n      source.line.updateControlPoints(area, source.axis);\n      if (draw && source.fill) {\n        _drawfill(chart.ctx, source, area);\n      }\n    }\n  },\n\n  beforeDatasetsDraw(chart, _args, options) {\n    if (options.drawTime !== 'beforeDatasetsDraw') {\n      return;\n    }\n\n    const metasets = chart.getSortedVisibleDatasetMetas();\n    for (let i = metasets.length - 1; i >= 0; --i) {\n      const source = metasets[i].$filler;\n\n      if (_shouldApplyFill(source)) {\n        _drawfill(chart.ctx, source, chart.chartArea);\n      }\n    }\n  },\n\n  beforeDatasetDraw(chart, args, options) {\n    const source = args.meta.$filler;\n\n    if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n      return;\n    }\n\n    _drawfill(chart.ctx, source, chart.chartArea);\n  },\n\n  defaults: {\n    propagate: true,\n    drawTime: 'beforeDatasetDraw'\n  }\n};\n","import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n  _isBetween,\n  callback as call,\n  clipArea,\n  getRtlAdapter,\n  overrideTextDirection,\n  restoreTextDirection,\n  toFont,\n  toPadding,\n  unclipArea,\n  valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n  let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n  if (labelOpts.usePointStyle) {\n    boxHeight = Math.min(boxHeight, fontSize);\n    boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n  }\n\n  return {\n    boxWidth,\n    boxHeight,\n    itemHeight: Math.max(fontSize, boxHeight)\n  };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n  /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n  constructor(config) {\n    super();\n\n    this._added = false;\n\n    // Contains hit boxes for each dataset (in dataset order)\n    this.legendHitBoxes = [];\n\n    /**\n \t\t * @private\n \t\t */\n    this._hoveredItem = null;\n\n    // Are we in doughnut mode which has a different data type\n    this.doughnutMode = false;\n\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this.legendItems = undefined;\n    this.columnSizes = undefined;\n    this.lineWidths = undefined;\n    this.maxHeight = undefined;\n    this.maxWidth = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this._margins = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n\n  update(maxWidth, maxHeight, margins) {\n    this.maxWidth = maxWidth;\n    this.maxHeight = maxHeight;\n    this._margins = margins;\n\n    this.setDimensions();\n    this.buildLabels();\n    this.fit();\n  }\n\n  setDimensions() {\n    if (this.isHorizontal()) {\n      this.width = this.maxWidth;\n      this.left = this._margins.left;\n      this.right = this.width;\n    } else {\n      this.height = this.maxHeight;\n      this.top = this._margins.top;\n      this.bottom = this.height;\n    }\n  }\n\n  buildLabels() {\n    const labelOpts = this.options.labels || {};\n    let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n    if (labelOpts.filter) {\n      legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n    }\n\n    if (labelOpts.sort) {\n      legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n    }\n\n    if (this.options.reverse) {\n      legendItems.reverse();\n    }\n\n    this.legendItems = legendItems;\n  }\n\n  fit() {\n    const {options, ctx} = this;\n\n    // The legend may not be displayed for a variety of reasons including\n    // the fact that the defaults got set to `false`.\n    // When the legend is not displayed, there are no guarantees that the options\n    // are correctly formatted so we need to bail out as early as possible.\n    if (!options.display) {\n      this.width = this.height = 0;\n      return;\n    }\n\n    const labelOpts = options.labels;\n    const labelFont = toFont(labelOpts.font);\n    const fontSize = labelFont.size;\n    const titleHeight = this._computeTitleHeight();\n    const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n    let width, height;\n\n    ctx.font = labelFont.string;\n\n    if (this.isHorizontal()) {\n      width = this.maxWidth; // fill all the width\n      height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n    } else {\n      height = this.maxHeight; // fill all the height\n      width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n    }\n\n    this.width = Math.min(width, options.maxWidth || this.maxWidth);\n    this.height = Math.min(height, options.maxHeight || this.maxHeight);\n  }\n\n  /**\n\t * @private\n\t */\n  _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n    const {ctx, maxWidth, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n    const lineWidths = this.lineWidths = [0];\n    const lineHeight = itemHeight + padding;\n    let totalHeight = titleHeight;\n\n    ctx.textAlign = 'left';\n    ctx.textBaseline = 'middle';\n\n    let row = -1;\n    let top = -lineHeight;\n    this.legendItems.forEach((legendItem, i) => {\n      const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n      if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n        totalHeight += lineHeight;\n        lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n        top += lineHeight;\n        row++;\n      }\n\n      hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n      lineWidths[lineWidths.length - 1] += itemWidth + padding;\n    });\n\n    return totalHeight;\n  }\n\n  _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n    const {ctx, maxHeight, options: {labels: {padding}}} = this;\n    const hitboxes = this.legendHitBoxes = [];\n    const columnSizes = this.columnSizes = [];\n    const heightLimit = maxHeight - titleHeight;\n\n    let totalWidth = padding;\n    let currentColWidth = 0;\n    let currentColHeight = 0;\n\n    let left = 0;\n    let col = 0;\n\n    this.legendItems.forEach((legendItem, i) => {\n      const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n      // If too tall, go to new column\n      if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n        totalWidth += currentColWidth + padding;\n        columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n        left += currentColWidth + padding;\n        col++;\n        currentColWidth = currentColHeight = 0;\n      }\n\n      // Store the hitbox width and height here. Final position will be updated in `draw`\n      hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n      // Get max width\n      currentColWidth = Math.max(currentColWidth, itemWidth);\n      currentColHeight += itemHeight + padding;\n    });\n\n    totalWidth += currentColWidth;\n    columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n    return totalWidth;\n  }\n\n  adjustHitBoxes() {\n    if (!this.options.display) {\n      return;\n    }\n    const titleHeight = this._computeTitleHeight();\n    const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n    const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n    if (this.isHorizontal()) {\n      let row = 0;\n      let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n      for (const hitbox of hitboxes) {\n        if (row !== hitbox.row) {\n          row = hitbox.row;\n          left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n        }\n        hitbox.top += this.top + titleHeight + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n        left += hitbox.width + padding;\n      }\n    } else {\n      let col = 0;\n      let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n      for (const hitbox of hitboxes) {\n        if (hitbox.col !== col) {\n          col = hitbox.col;\n          top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n        }\n        hitbox.top = top;\n        hitbox.left += this.left + padding;\n        hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n        top += hitbox.height + padding;\n      }\n    }\n  }\n\n  isHorizontal() {\n    return this.options.position === 'top' || this.options.position === 'bottom';\n  }\n\n  draw() {\n    if (this.options.display) {\n      const ctx = this.ctx;\n      clipArea(ctx, this);\n\n      this._draw();\n\n      unclipArea(ctx);\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _draw() {\n    const {options: opts, columnSizes, lineWidths, ctx} = this;\n    const {align, labels: labelOpts} = opts;\n    const defaultColor = defaults.color;\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const labelFont = toFont(labelOpts.font);\n    const {padding} = labelOpts;\n    const fontSize = labelFont.size;\n    const halfFontSize = fontSize / 2;\n    let cursor;\n\n    this.drawTitle();\n\n    // Canvas setup\n    ctx.textAlign = rtlHelper.textAlign('left');\n    ctx.textBaseline = 'middle';\n    ctx.lineWidth = 0.5;\n    ctx.font = labelFont.string;\n\n    const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n    // current position\n    const drawLegendBox = function(x, y, legendItem) {\n      if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n        return;\n      }\n\n      // Set the ctx for the box\n      ctx.save();\n\n      const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n      ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n      ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n      ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n      ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n      ctx.lineWidth = lineWidth;\n      ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n      ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n      if (labelOpts.usePointStyle) {\n        // Recalculate x and y for drawPoint() because its expecting\n        // x and y to be center of figure (instead of top left)\n        const drawOptions = {\n          radius: boxHeight * Math.SQRT2 / 2,\n          pointStyle: legendItem.pointStyle,\n          rotation: legendItem.rotation,\n          borderWidth: lineWidth\n        };\n        const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n        const centerY = y + halfFontSize;\n\n        // Draw pointStyle as legend symbol\n        drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n      } else {\n        // Draw box as legend symbol\n        // Adjust position when boxHeight < fontSize (want it centered)\n        const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n        const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n        const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n        ctx.beginPath();\n\n        if (Object.values(borderRadius).some(v => v !== 0)) {\n          addRoundedRectPath(ctx, {\n            x: xBoxLeft,\n            y: yBoxTop,\n            w: boxWidth,\n            h: boxHeight,\n            radius: borderRadius,\n          });\n        } else {\n          ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n        }\n\n        ctx.fill();\n        if (lineWidth !== 0) {\n          ctx.stroke();\n        }\n      }\n\n      ctx.restore();\n    };\n\n    const fillText = function(x, y, legendItem) {\n      renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n        strikethrough: legendItem.hidden,\n        textAlign: rtlHelper.textAlign(legendItem.textAlign)\n      });\n    };\n\n    // Horizontal\n    const isHorizontal = this.isHorizontal();\n    const titleHeight = this._computeTitleHeight();\n    if (isHorizontal) {\n      cursor = {\n        x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n        y: this.top + padding + titleHeight,\n        line: 0\n      };\n    } else {\n      cursor = {\n        x: this.left + padding,\n        y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n        line: 0\n      };\n    }\n\n    overrideTextDirection(this.ctx, opts.textDirection);\n\n    const lineHeight = itemHeight + padding;\n    this.legendItems.forEach((legendItem, i) => {\n      ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n      ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n      const textWidth = ctx.measureText(legendItem.text).width;\n      const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n      const width = boxWidth + halfFontSize + textWidth;\n      let x = cursor.x;\n      let y = cursor.y;\n\n      rtlHelper.setWidth(this.width);\n\n      if (isHorizontal) {\n        if (i > 0 && x + width + padding > this.right) {\n          y = cursor.y += lineHeight;\n          cursor.line++;\n          x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n        }\n      } else if (i > 0 && y + lineHeight > this.bottom) {\n        x = cursor.x = x + columnSizes[cursor.line].width + padding;\n        cursor.line++;\n        y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n      }\n\n      const realX = rtlHelper.x(x);\n\n      drawLegendBox(realX, y, legendItem);\n\n      x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n      // Fill the actual label\n      fillText(rtlHelper.x(x), y, legendItem);\n\n      if (isHorizontal) {\n        cursor.x += width + padding;\n      } else if (typeof legendItem.text !== 'string') {\n        const fontLineHeight = labelFont.lineHeight;\n        cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n      } else {\n        cursor.y += lineHeight;\n      }\n    });\n\n    restoreTextDirection(this.ctx, opts.textDirection);\n  }\n\n  /**\n\t * @protected\n\t */\n  drawTitle() {\n    const opts = this.options;\n    const titleOpts = opts.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n\n    if (!titleOpts.display) {\n      return;\n    }\n\n    const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n    const ctx = this.ctx;\n    const position = titleOpts.position;\n    const halfFontSize = titleFont.size / 2;\n    const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n    let y;\n\n    // These defaults are used when the legend is vertical.\n    // When horizontal, they are computed below.\n    let left = this.left;\n    let maxWidth = this.width;\n\n    if (this.isHorizontal()) {\n      // Move left / right so that the title is above the legend lines\n      maxWidth = Math.max(...this.lineWidths);\n      y = this.top + topPaddingPlusHalfFontSize;\n      left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n    } else {\n      // Move down so that the title is above the legend stack in every alignment\n      const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n      y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n    }\n\n    // Now that we know the left edge of the inner legend box, compute the correct\n    // X coordinate from the title alignment\n    const x = _alignStartEnd(position, left, left + maxWidth);\n\n    // Canvas setup\n    ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n    ctx.textBaseline = 'middle';\n    ctx.strokeStyle = titleOpts.color;\n    ctx.fillStyle = titleOpts.color;\n    ctx.font = titleFont.string;\n\n    renderText(ctx, titleOpts.text, x, y, titleFont);\n  }\n\n  /**\n\t * @private\n\t */\n  _computeTitleHeight() {\n    const titleOpts = this.options.title;\n    const titleFont = toFont(titleOpts.font);\n    const titlePadding = toPadding(titleOpts.padding);\n    return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n  }\n\n  /**\n\t * @private\n\t */\n  _getLegendItemAt(x, y) {\n    let i, hitBox, lh;\n\n    if (_isBetween(x, this.left, this.right)\n      && _isBetween(y, this.top, this.bottom)) {\n      // See if we are touching one of the dataset boxes\n      lh = this.legendHitBoxes;\n      for (i = 0; i < lh.length; ++i) {\n        hitBox = lh[i];\n\n        if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n          && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n          // Touching an element\n          return this.legendItems[i];\n        }\n      }\n    }\n\n    return null;\n  }\n\n  /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n  handleEvent(e) {\n    const opts = this.options;\n    if (!isListened(e.type, opts)) {\n      return;\n    }\n\n    // Chart event already has relative position in it\n    const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n    if (e.type === 'mousemove' || e.type === 'mouseout') {\n      const previous = this._hoveredItem;\n      const sameItem = itemsEqual(previous, hoveredItem);\n      if (previous && !sameItem) {\n        call(opts.onLeave, [e, previous, this], this);\n      }\n\n      this._hoveredItem = hoveredItem;\n\n      if (hoveredItem && !sameItem) {\n        call(opts.onHover, [e, hoveredItem, this], this);\n      }\n    } else if (hoveredItem) {\n      call(opts.onClick, [e, hoveredItem, this], this);\n    }\n  }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n  const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n  const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n  return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n  let legendItemText = legendItem.text;\n  if (legendItemText && typeof legendItemText !== 'string') {\n    legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n  }\n  return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n  let itemHeight = _itemHeight;\n  if (typeof legendItem.text !== 'string') {\n    itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n  }\n  return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n  const labelHeight = legendItem.text ? legendItem.text.length : 0;\n  return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n  if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n    return true;\n  }\n  if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n    return true;\n  }\n  return false;\n}\n\nexport default {\n  id: 'legend',\n\n  /**\n\t * For tests\n\t * @private\n\t */\n  _element: Legend,\n\n  start(chart, _args, options) {\n    const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n    layouts.configure(chart, legend, options);\n    layouts.addBox(chart, legend);\n  },\n\n  stop(chart) {\n    layouts.removeBox(chart, chart.legend);\n    delete chart.legend;\n  },\n\n  // During the beforeUpdate step, the layout configuration needs to run\n  // This ensures that if the legend position changes (via an option update)\n  // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n  beforeUpdate(chart, _args, options) {\n    const legend = chart.legend;\n    layouts.configure(chart, legend, options);\n    legend.options = options;\n  },\n\n  // The labels need to be built after datasets are updated to ensure that colors\n  // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n  afterUpdate(chart) {\n    const legend = chart.legend;\n    legend.buildLabels();\n    legend.adjustHitBoxes();\n  },\n\n\n  afterEvent(chart, args) {\n    if (!args.replay) {\n      chart.legend.handleEvent(args.event);\n    }\n  },\n\n  defaults: {\n    display: true,\n    position: 'top',\n    align: 'center',\n    fullSize: true,\n    reverse: false,\n    weight: 1000,\n\n    // a callback that will handle\n    onClick(e, legendItem, legend) {\n      const index = legendItem.datasetIndex;\n      const ci = legend.chart;\n      if (ci.isDatasetVisible(index)) {\n        ci.hide(index);\n        legendItem.hidden = true;\n      } else {\n        ci.show(index);\n        legendItem.hidden = false;\n      }\n    },\n\n    onHover: null,\n    onLeave: null,\n\n    labels: {\n      color: (ctx) => ctx.chart.options.color,\n      boxWidth: 40,\n      padding: 10,\n      // Generates labels shown in the legend\n      // Valid properties to return:\n      // text : text to display\n      // fillStyle : fill of coloured box\n      // strokeStyle: stroke of coloured box\n      // hidden : if this legend item refers to a hidden item\n      // lineCap : cap style for line\n      // lineDash\n      // lineDashOffset :\n      // lineJoin :\n      // lineWidth :\n      generateLabels(chart) {\n        const datasets = chart.data.datasets;\n        const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n        return chart._getSortedDatasetMetas().map((meta) => {\n          const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n          const borderWidth = toPadding(style.borderWidth);\n\n          return {\n            text: datasets[meta.index].label,\n            fillStyle: style.backgroundColor,\n            fontColor: color,\n            hidden: !meta.visible,\n            lineCap: style.borderCapStyle,\n            lineDash: style.borderDash,\n            lineDashOffset: style.borderDashOffset,\n            lineJoin: style.borderJoinStyle,\n            lineWidth: (borderWidth.width + borderWidth.height) / 4,\n            strokeStyle: style.borderColor,\n            pointStyle: pointStyle || style.pointStyle,\n            rotation: style.rotation,\n            textAlign: textAlign || style.textAlign,\n            borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n            // Below is extra data used for toggling the datasets\n            datasetIndex: meta.index\n          };\n        }, this);\n      }\n    },\n\n    title: {\n      color: (ctx) => ctx.chart.options.color,\n      display: false,\n      position: 'center',\n      text: '',\n    }\n  },\n\n  descriptors: {\n    _scriptable: (name) => !name.startsWith('on'),\n    labels: {\n      _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n    }\n  },\n};\n","import Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {PI, isArray, toPadding, toFont} from '../helpers/index.js';\nimport {_toLeftRightCenter, _alignStartEnd} from '../helpers/helpers.extras.js';\nimport {renderText} from '../helpers/helpers.canvas.js';\n\nexport class Title extends Element {\n  /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n  constructor(config) {\n    super();\n\n    this.chart = config.chart;\n    this.options = config.options;\n    this.ctx = config.ctx;\n    this._padding = undefined;\n    this.top = undefined;\n    this.bottom = undefined;\n    this.left = undefined;\n    this.right = undefined;\n    this.width = undefined;\n    this.height = undefined;\n    this.position = undefined;\n    this.weight = undefined;\n    this.fullSize = undefined;\n  }\n\n  update(maxWidth, maxHeight) {\n    const opts = this.options;\n\n    this.left = 0;\n    this.top = 0;\n\n    if (!opts.display) {\n      this.width = this.height = this.right = this.bottom = 0;\n      return;\n    }\n\n    this.width = this.right = maxWidth;\n    this.height = this.bottom = maxHeight;\n\n    const lineCount = isArray(opts.text) ? opts.text.length : 1;\n    this._padding = toPadding(opts.padding);\n    const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n    if (this.isHorizontal()) {\n      this.height = textSize;\n    } else {\n      this.width = textSize;\n    }\n  }\n\n  isHorizontal() {\n    const pos = this.options.position;\n    return pos === 'top' || pos === 'bottom';\n  }\n\n  _drawArgs(offset) {\n    const {top, left, bottom, right, options} = this;\n    const align = options.align;\n    let rotation = 0;\n    let maxWidth, titleX, titleY;\n\n    if (this.isHorizontal()) {\n      titleX = _alignStartEnd(align, left, right);\n      titleY = top + offset;\n      maxWidth = right - left;\n    } else {\n      if (options.position === 'left') {\n        titleX = left + offset;\n        titleY = _alignStartEnd(align, bottom, top);\n        rotation = PI * -0.5;\n      } else {\n        titleX = right - offset;\n        titleY = _alignStartEnd(align, top, bottom);\n        rotation = PI * 0.5;\n      }\n      maxWidth = bottom - top;\n    }\n    return {titleX, titleY, maxWidth, rotation};\n  }\n\n  draw() {\n    const ctx = this.ctx;\n    const opts = this.options;\n\n    if (!opts.display) {\n      return;\n    }\n\n    const fontOpts = toFont(opts.font);\n    const lineHeight = fontOpts.lineHeight;\n    const offset = lineHeight / 2 + this._padding.top;\n    const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n\n    renderText(ctx, opts.text, 0, 0, fontOpts, {\n      color: opts.color,\n      maxWidth,\n      rotation,\n      textAlign: _toLeftRightCenter(opts.align),\n      textBaseline: 'middle',\n      translation: [titleX, titleY],\n    });\n  }\n}\n\nfunction createTitle(chart, titleOpts) {\n  const title = new Title({\n    ctx: chart.ctx,\n    options: titleOpts,\n    chart\n  });\n\n  layouts.configure(chart, title, titleOpts);\n  layouts.addBox(chart, title);\n  chart.titleBlock = title;\n}\n\nexport default {\n  id: 'title',\n\n  /**\n\t * For tests\n\t * @private\n\t */\n  _element: Title,\n\n  start(chart, _args, options) {\n    createTitle(chart, options);\n  },\n\n  stop(chart) {\n    const titleBlock = chart.titleBlock;\n    layouts.removeBox(chart, titleBlock);\n    delete chart.titleBlock;\n  },\n\n  beforeUpdate(chart, _args, options) {\n    const title = chart.titleBlock;\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'bold',\n    },\n    fullSize: true,\n    padding: 10,\n    position: 'top',\n    text: '',\n    weight: 2000         // by default greater than legend (1000) to be above\n  },\n\n  defaultRoutes: {\n    color: 'color'\n  },\n\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n","import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n  id: 'subtitle',\n\n  start(chart, _args, options) {\n    const title = new Title({\n      ctx: chart.ctx,\n      options,\n      chart\n    });\n\n    layouts.configure(chart, title, options);\n    layouts.addBox(chart, title);\n    map.set(chart, title);\n  },\n\n  stop(chart) {\n    layouts.removeBox(chart, map.get(chart));\n    map.delete(chart);\n  },\n\n  beforeUpdate(chart, _args, options) {\n    const title = map.get(chart);\n    layouts.configure(chart, title, options);\n    title.options = options;\n  },\n\n  defaults: {\n    align: 'center',\n    display: false,\n    font: {\n      weight: 'normal',\n    },\n    fullSize: true,\n    padding: 0,\n    position: 'top',\n    text: '',\n    weight: 1500         // by default greater than legend (1000) and smaller than title (2000)\n  },\n\n  defaultRoutes: {\n    color: 'color'\n  },\n\n  descriptors: {\n    _scriptable: true,\n    _indexable: false,\n  },\n};\n","import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n  /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n  average(items) {\n    if (!items.length) {\n      return false;\n    }\n\n    let i, len;\n    let xSet = new Set();\n    let y = 0;\n    let count = 0;\n\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const pos = el.tooltipPosition();\n        xSet.add(pos.x);\n        y += pos.y;\n        ++count;\n      }\n    }\n\n    // No visible items where found, return false so we don't have to divide by 0 which reduces in NaN\n    if (count === 0 || xSet.size === 0) {\n      return false;\n    }\n\n    const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n    return {\n      x: xAverage,\n      y: y / count\n    };\n  },\n\n  /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n  nearest(items, eventPosition) {\n    if (!items.length) {\n      return false;\n    }\n\n    let x = eventPosition.x;\n    let y = eventPosition.y;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let i, len, nearestElement;\n\n    for (i = 0, len = items.length; i < len; ++i) {\n      const el = items[i].element;\n      if (el && el.hasValue()) {\n        const center = el.getCenterPoint();\n        const d = distanceBetweenPoints(eventPosition, center);\n\n        if (d < minDistance) {\n          minDistance = d;\n          nearestElement = el;\n        }\n      }\n    }\n\n    if (nearestElement) {\n      const tp = nearestElement.tooltipPosition();\n      x = tp.x;\n      y = tp.y;\n    }\n\n    return {\n      x,\n      y\n    };\n  }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n  if (toPush) {\n    if (isArray(toPush)) {\n      // base = base.concat(toPush);\n      Array.prototype.push.apply(base, toPush);\n    } else {\n      base.push(toPush);\n    }\n  }\n\n  return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n  if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n    return str.split('\\n');\n  }\n  return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n  const {element, datasetIndex, index} = item;\n  const controller = chart.getDatasetMeta(datasetIndex).controller;\n  const {label, value} = controller.getLabelAndValue(index);\n\n  return {\n    chart,\n    label,\n    parsed: controller.getParsed(index),\n    raw: chart.data.datasets[datasetIndex].data[index],\n    formattedValue: value,\n    dataset: controller.getDataset(),\n    dataIndex: index,\n    datasetIndex,\n    element\n  };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n  const ctx = tooltip.chart.ctx;\n  const {body, footer, title} = tooltip;\n  const {boxWidth, boxHeight} = options;\n  const bodyFont = toFont(options.bodyFont);\n  const titleFont = toFont(options.titleFont);\n  const footerFont = toFont(options.footerFont);\n  const titleLineCount = title.length;\n  const footerLineCount = footer.length;\n  const bodyLineItemCount = body.length;\n\n  const padding = toPadding(options.padding);\n  let height = padding.height;\n  let width = 0;\n\n  // Count of all lines in the body\n  let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n  combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n  if (titleLineCount) {\n    height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n  }\n  if (combinedBodyLength) {\n    // Body lines may include some extra height depending on boxHeight\n    const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n    height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n  }\n  if (footerLineCount) {\n    height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n  }\n\n  // Title width\n  let widthPadding = 0;\n  const maxLineWidth = function(line) {\n    width = Math.max(width, ctx.measureText(line).width + widthPadding);\n  };\n\n  ctx.save();\n\n  ctx.font = titleFont.string;\n  each(tooltip.title, maxLineWidth);\n\n  // Body width\n  ctx.font = bodyFont.string;\n  each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n  // Body lines may include some extra width due to the color box\n  widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n  each(body, (bodyItem) => {\n    each(bodyItem.before, maxLineWidth);\n    each(bodyItem.lines, maxLineWidth);\n    each(bodyItem.after, maxLineWidth);\n  });\n\n  // Reset back to 0\n  widthPadding = 0;\n\n  // Footer width\n  ctx.font = footerFont.string;\n  each(tooltip.footer, maxLineWidth);\n\n  ctx.restore();\n\n  // Add padding\n  width += padding.width;\n\n  return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n  const {y, height} = size;\n\n  if (y < height / 2) {\n    return 'top';\n  } else if (y > (chart.height - height / 2)) {\n    return 'bottom';\n  }\n  return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n  const {x, width} = size;\n  const caret = options.caretSize + options.caretPadding;\n  if (xAlign === 'left' && x + width + caret > chart.width) {\n    return true;\n  }\n\n  if (xAlign === 'right' && x - width - caret < 0) {\n    return true;\n  }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n  const {x, width} = size;\n  const {width: chartWidth, chartArea: {left, right}} = chart;\n  let xAlign = 'center';\n\n  if (yAlign === 'center') {\n    xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n  } else if (x <= width / 2) {\n    xAlign = 'left';\n  } else if (x >= chartWidth - width / 2) {\n    xAlign = 'right';\n  }\n\n  if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n    xAlign = 'center';\n  }\n\n  return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n  const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n  return {\n    xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n    yAlign\n  };\n}\n\nfunction alignX(size, xAlign) {\n  let {x, width} = size;\n  if (xAlign === 'right') {\n    x -= width;\n  } else if (xAlign === 'center') {\n    x -= (width / 2);\n  }\n  return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n  // eslint-disable-next-line prefer-const\n  let {y, height} = size;\n  if (yAlign === 'top') {\n    y += paddingAndSize;\n  } else if (yAlign === 'bottom') {\n    y -= height + paddingAndSize;\n  } else {\n    y -= (height / 2);\n  }\n  return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n  const {caretSize, caretPadding, cornerRadius} = options;\n  const {xAlign, yAlign} = alignment;\n  const paddingAndSize = caretSize + caretPadding;\n  const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n  let x = alignX(size, xAlign);\n  const y = alignY(size, yAlign, paddingAndSize);\n\n  if (yAlign === 'center') {\n    if (xAlign === 'left') {\n      x += paddingAndSize;\n    } else if (xAlign === 'right') {\n      x -= paddingAndSize;\n    }\n  } else if (xAlign === 'left') {\n    x -= Math.max(topLeft, bottomLeft) + caretSize;\n  } else if (xAlign === 'right') {\n    x += Math.max(topRight, bottomRight) + caretSize;\n  }\n\n  return {\n    x: _limitValue(x, 0, chart.width - size.width),\n    y: _limitValue(y, 0, chart.height - size.height)\n  };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n  const padding = toPadding(options.padding);\n\n  return align === 'center'\n    ? tooltip.x + tooltip.width / 2\n    : align === 'right'\n      ? tooltip.x + tooltip.width - padding.right\n      : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n  return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n  return createContext(parent, {\n    tooltip,\n    tooltipItems,\n    type: 'tooltip'\n  });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n  const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n  return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n  // Args are: (tooltipItems, data)\n  beforeTitle: noop,\n  title(tooltipItems) {\n    if (tooltipItems.length > 0) {\n      const item = tooltipItems[0];\n      const labels = item.chart.data.labels;\n      const labelCount = labels ? labels.length : 0;\n\n      if (this && this.options && this.options.mode === 'dataset') {\n        return item.dataset.label || '';\n      } else if (item.label) {\n        return item.label;\n      } else if (labelCount > 0 && item.dataIndex < labelCount) {\n        return labels[item.dataIndex];\n      }\n    }\n\n    return '';\n  },\n  afterTitle: noop,\n\n  // Args are: (tooltipItems, data)\n  beforeBody: noop,\n\n  // Args are: (tooltipItem, data)\n  beforeLabel: noop,\n  label(tooltipItem) {\n    if (this && this.options && this.options.mode === 'dataset') {\n      return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n    }\n\n    let label = tooltipItem.dataset.label || '';\n\n    if (label) {\n      label += ': ';\n    }\n    const value = tooltipItem.formattedValue;\n    if (!isNullOrUndef(value)) {\n      label += value;\n    }\n    return label;\n  },\n  labelColor(tooltipItem) {\n    const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n    const options = meta.controller.getStyle(tooltipItem.dataIndex);\n    return {\n      borderColor: options.borderColor,\n      backgroundColor: options.backgroundColor,\n      borderWidth: options.borderWidth,\n      borderDash: options.borderDash,\n      borderDashOffset: options.borderDashOffset,\n      borderRadius: 0,\n    };\n  },\n  labelTextColor() {\n    return this.options.bodyColor;\n  },\n  labelPointStyle(tooltipItem) {\n    const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n    const options = meta.controller.getStyle(tooltipItem.dataIndex);\n    return {\n      pointStyle: options.pointStyle,\n      rotation: options.rotation,\n    };\n  },\n  afterLabel: noop,\n\n  // Args are: (tooltipItems, data)\n  afterBody: noop,\n\n  // Args are: (tooltipItems, data)\n  beforeFooter: noop,\n  footer: noop,\n  afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record<keyof typeof defaultCallbacks, Function>} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n  const result = callbacks[name].call(ctx, arg);\n\n  if (typeof result === 'undefined') {\n    return defaultCallbacks[name].call(ctx, arg);\n  }\n\n  return result;\n}\n\nexport class Tooltip extends Element {\n\n  /**\n   * @namespace Chart.Tooltip.positioners\n   */\n  static positioners = positioners;\n\n  constructor(config) {\n    super();\n\n    this.opacity = 0;\n    this._active = [];\n    this._eventPosition = undefined;\n    this._size = undefined;\n    this._cachedAnimations = undefined;\n    this._tooltipItems = [];\n    this.$animations = undefined;\n    this.$context = undefined;\n    this.chart = config.chart;\n    this.options = config.options;\n    this.dataPoints = undefined;\n    this.title = undefined;\n    this.beforeBody = undefined;\n    this.body = undefined;\n    this.afterBody = undefined;\n    this.footer = undefined;\n    this.xAlign = undefined;\n    this.yAlign = undefined;\n    this.x = undefined;\n    this.y = undefined;\n    this.height = undefined;\n    this.width = undefined;\n    this.caretX = undefined;\n    this.caretY = undefined;\n    // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n    // and `labelTextColors` to create a single variable\n    this.labelColors = undefined;\n    this.labelPointStyles = undefined;\n    this.labelTextColors = undefined;\n  }\n\n  initialize(options) {\n    this.options = options;\n    this._cachedAnimations = undefined;\n    this.$context = undefined;\n  }\n\n  /**\n\t * @private\n\t */\n  _resolveAnimations() {\n    const cached = this._cachedAnimations;\n\n    if (cached) {\n      return cached;\n    }\n\n    const chart = this.chart;\n    const options = this.options.setContext(this.getContext());\n    const opts = options.enabled && chart.options.animation && options.animations;\n    const animations = new Animations(this.chart, opts);\n    if (opts._cacheable) {\n      this._cachedAnimations = Object.freeze(animations);\n    }\n\n    return animations;\n  }\n\n  /**\n\t * @protected\n\t */\n  getContext() {\n    return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n  }\n\n  getTitle(context, options) {\n    const {callbacks} = options;\n\n    const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n    const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n    const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n    lines = pushOrConcat(lines, splitNewlines(title));\n    lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n    return lines;\n  }\n\n  getBeforeBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(\n      invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n    );\n  }\n\n  getBody(tooltipItems, options) {\n    const {callbacks} = options;\n    const bodyItems = [];\n\n    each(tooltipItems, (context) => {\n      const bodyItem = {\n        before: [],\n        lines: [],\n        after: []\n      };\n      const scoped = overrideCallbacks(callbacks, context);\n      pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n      pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n      pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n      bodyItems.push(bodyItem);\n    });\n\n    return bodyItems;\n  }\n\n  getAfterBody(tooltipItems, options) {\n    return getBeforeAfterBodyLines(\n      invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n    );\n  }\n\n  // Get the footer and beforeFooter and afterFooter lines\n  getFooter(tooltipItems, options) {\n    const {callbacks} = options;\n\n    const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n    const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n    const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n    let lines = [];\n    lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n    lines = pushOrConcat(lines, splitNewlines(footer));\n    lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n    return lines;\n  }\n\n  /**\n\t * @private\n\t */\n  _createItems(options) {\n    const active = this._active;\n    const data = this.chart.data;\n    const labelColors = [];\n    const labelPointStyles = [];\n    const labelTextColors = [];\n    let tooltipItems = [];\n    let i, len;\n\n    for (i = 0, len = active.length; i < len; ++i) {\n      tooltipItems.push(createTooltipItem(this.chart, active[i]));\n    }\n\n    // If the user provided a filter function, use it to modify the tooltip items\n    if (options.filter) {\n      tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n    }\n\n    // If the user provided a sorting function, use it to modify the tooltip items\n    if (options.itemSort) {\n      tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n    }\n\n    // Determine colors for boxes\n    each(tooltipItems, (context) => {\n      const scoped = overrideCallbacks(options.callbacks, context);\n      labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n      labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n      labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n    });\n\n    this.labelColors = labelColors;\n    this.labelPointStyles = labelPointStyles;\n    this.labelTextColors = labelTextColors;\n    this.dataPoints = tooltipItems;\n    return tooltipItems;\n  }\n\n  update(changed, replay) {\n    const options = this.options.setContext(this.getContext());\n    const active = this._active;\n    let properties;\n    let tooltipItems = [];\n\n    if (!active.length) {\n      if (this.opacity !== 0) {\n        properties = {\n          opacity: 0\n        };\n      }\n    } else {\n      const position = positioners[options.position].call(this, active, this._eventPosition);\n      tooltipItems = this._createItems(options);\n\n      this.title = this.getTitle(tooltipItems, options);\n      this.beforeBody = this.getBeforeBody(tooltipItems, options);\n      this.body = this.getBody(tooltipItems, options);\n      this.afterBody = this.getAfterBody(tooltipItems, options);\n      this.footer = this.getFooter(tooltipItems, options);\n\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, size);\n      const alignment = determineAlignment(this.chart, options, positionAndSize);\n      const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n      this.xAlign = alignment.xAlign;\n      this.yAlign = alignment.yAlign;\n\n      properties = {\n        opacity: 1,\n        x: backgroundPoint.x,\n        y: backgroundPoint.y,\n        width: size.width,\n        height: size.height,\n        caretX: position.x,\n        caretY: position.y\n      };\n    }\n\n    this._tooltipItems = tooltipItems;\n    this.$context = undefined;\n\n    if (properties) {\n      this._resolveAnimations().update(this, properties);\n    }\n\n    if (changed && options.external) {\n      options.external.call(this, {chart: this.chart, tooltip: this, replay});\n    }\n  }\n\n  drawCaret(tooltipPoint, ctx, size, options) {\n    const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n    ctx.lineTo(caretPosition.x1, caretPosition.y1);\n    ctx.lineTo(caretPosition.x2, caretPosition.y2);\n    ctx.lineTo(caretPosition.x3, caretPosition.y3);\n  }\n\n  getCaretPosition(tooltipPoint, size, options) {\n    const {xAlign, yAlign} = this;\n    const {caretSize, cornerRadius} = options;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n    const {x: ptX, y: ptY} = tooltipPoint;\n    const {width, height} = size;\n    let x1, x2, x3, y1, y2, y3;\n\n    if (yAlign === 'center') {\n      y2 = ptY + (height / 2);\n\n      if (xAlign === 'left') {\n        x1 = ptX;\n        x2 = x1 - caretSize;\n\n        // Left draws bottom -> top, this y1 is on the bottom\n        y1 = y2 + caretSize;\n        y3 = y2 - caretSize;\n      } else {\n        x1 = ptX + width;\n        x2 = x1 + caretSize;\n\n        // Right draws top -> bottom, thus y1 is on the top\n        y1 = y2 - caretSize;\n        y3 = y2 + caretSize;\n      }\n\n      x3 = x1;\n    } else {\n      if (xAlign === 'left') {\n        x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n      } else if (xAlign === 'right') {\n        x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n      } else {\n        x2 = this.caretX;\n      }\n\n      if (yAlign === 'top') {\n        y1 = ptY;\n        y2 = y1 - caretSize;\n\n        // Top draws left -> right, thus x1 is on the left\n        x1 = x2 - caretSize;\n        x3 = x2 + caretSize;\n      } else {\n        y1 = ptY + height;\n        y2 = y1 + caretSize;\n\n        // Bottom draws right -> left, thus x1 is on the right\n        x1 = x2 + caretSize;\n        x3 = x2 - caretSize;\n      }\n      y3 = y1;\n    }\n    return {x1, x2, x3, y1, y2, y3};\n  }\n\n  drawTitle(pt, ctx, options) {\n    const title = this.title;\n    const length = title.length;\n    let titleFont, titleSpacing, i;\n\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n      pt.x = getAlignedX(this, options.titleAlign, options);\n\n      ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n      ctx.textBaseline = 'middle';\n\n      titleFont = toFont(options.titleFont);\n      titleSpacing = options.titleSpacing;\n\n      ctx.fillStyle = options.titleColor;\n      ctx.font = titleFont.string;\n\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n        pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n        if (i + 1 === length) {\n          pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n        }\n      }\n    }\n  }\n\n  /**\n\t * @private\n\t */\n  _drawColorBox(ctx, pt, i, rtlHelper, options) {\n    const labelColor = this.labelColors[i];\n    const labelPointStyle = this.labelPointStyles[i];\n    const {boxHeight, boxWidth} = options;\n    const bodyFont = toFont(options.bodyFont);\n    const colorX = getAlignedX(this, 'left', options);\n    const rtlColorX = rtlHelper.x(colorX);\n    const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n    const colorY = pt.y + yOffSet;\n\n    if (options.usePointStyle) {\n      const drawOptions = {\n        radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n        pointStyle: labelPointStyle.pointStyle,\n        rotation: labelPointStyle.rotation,\n        borderWidth: 1\n      };\n      // Recalculate x and y for drawPoint() because its expecting\n      // x and y to be center of figure (instead of top left)\n      const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n      const centerY = colorY + boxHeight / 2;\n\n      // Fill the point with white so that colours merge nicely if the opacity is < 1\n      ctx.strokeStyle = options.multiKeyBackground;\n      ctx.fillStyle = options.multiKeyBackground;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n\n      // Draw the point\n      ctx.strokeStyle = labelColor.borderColor;\n      ctx.fillStyle = labelColor.backgroundColor;\n      drawPoint(ctx, drawOptions, centerX, centerY);\n    } else {\n      // Border\n      ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n      ctx.strokeStyle = labelColor.borderColor;\n      ctx.setLineDash(labelColor.borderDash || []);\n      ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n      // Fill a white rect so that colours merge nicely if the opacity is < 1\n      const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n      const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n      const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n      if (Object.values(borderRadius).some(v => v !== 0)) {\n        ctx.beginPath();\n        ctx.fillStyle = options.multiKeyBackground;\n        addRoundedRectPath(ctx, {\n          x: outerX,\n          y: colorY,\n          w: boxWidth,\n          h: boxHeight,\n          radius: borderRadius,\n        });\n        ctx.fill();\n        ctx.stroke();\n\n        // Inner square\n        ctx.fillStyle = labelColor.backgroundColor;\n        ctx.beginPath();\n        addRoundedRectPath(ctx, {\n          x: innerX,\n          y: colorY + 1,\n          w: boxWidth - 2,\n          h: boxHeight - 2,\n          radius: borderRadius,\n        });\n        ctx.fill();\n      } else {\n        // Normal rect\n        ctx.fillStyle = options.multiKeyBackground;\n        ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n        ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n        // Inner square\n        ctx.fillStyle = labelColor.backgroundColor;\n        ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n      }\n    }\n\n    // restore fillStyle\n    ctx.fillStyle = this.labelTextColors[i];\n  }\n\n  drawBody(pt, ctx, options) {\n    const {body} = this;\n    const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n    const bodyFont = toFont(options.bodyFont);\n    let bodyLineHeight = bodyFont.lineHeight;\n    let xLinePadding = 0;\n\n    const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n    const fillLineOfText = function(line) {\n      ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n      pt.y += bodyLineHeight + bodySpacing;\n    };\n\n    const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n    let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n    ctx.textAlign = bodyAlign;\n    ctx.textBaseline = 'middle';\n    ctx.font = bodyFont.string;\n\n    pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n    // Before body lines\n    ctx.fillStyle = options.bodyColor;\n    each(this.beforeBody, fillLineOfText);\n\n    xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n      ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n      : 0;\n\n    // Draw body lines now\n    for (i = 0, ilen = body.length; i < ilen; ++i) {\n      bodyItem = body[i];\n      textColor = this.labelTextColors[i];\n\n      ctx.fillStyle = textColor;\n      each(bodyItem.before, fillLineOfText);\n\n      lines = bodyItem.lines;\n      // Draw Legend-like boxes if needed\n      if (displayColors && lines.length) {\n        this._drawColorBox(ctx, pt, i, rtlHelper, options);\n        bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n      }\n\n      for (j = 0, jlen = lines.length; j < jlen; ++j) {\n        fillLineOfText(lines[j]);\n        // Reset for any lines that don't include colorbox\n        bodyLineHeight = bodyFont.lineHeight;\n      }\n\n      each(bodyItem.after, fillLineOfText);\n    }\n\n    // Reset back to 0 for after body\n    xLinePadding = 0;\n    bodyLineHeight = bodyFont.lineHeight;\n\n    // After body lines\n    each(this.afterBody, fillLineOfText);\n    pt.y -= bodySpacing; // Remove last body spacing\n  }\n\n  drawFooter(pt, ctx, options) {\n    const footer = this.footer;\n    const length = footer.length;\n    let footerFont, i;\n\n    if (length) {\n      const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n      pt.x = getAlignedX(this, options.footerAlign, options);\n      pt.y += options.footerMarginTop;\n\n      ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n      ctx.textBaseline = 'middle';\n\n      footerFont = toFont(options.footerFont);\n\n      ctx.fillStyle = options.footerColor;\n      ctx.font = footerFont.string;\n\n      for (i = 0; i < length; ++i) {\n        ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n        pt.y += footerFont.lineHeight + options.footerSpacing;\n      }\n    }\n  }\n\n  drawBackground(pt, ctx, tooltipSize, options) {\n    const {xAlign, yAlign} = this;\n    const {x, y} = pt;\n    const {width, height} = tooltipSize;\n    const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n    ctx.fillStyle = options.backgroundColor;\n    ctx.strokeStyle = options.borderColor;\n    ctx.lineWidth = options.borderWidth;\n\n    ctx.beginPath();\n    ctx.moveTo(x + topLeft, y);\n    if (yAlign === 'top') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width - topRight, y);\n    ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n    if (yAlign === 'center' && xAlign === 'right') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + width, y + height - bottomRight);\n    ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n    if (yAlign === 'bottom') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x + bottomLeft, y + height);\n    ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n    if (yAlign === 'center' && xAlign === 'left') {\n      this.drawCaret(pt, ctx, tooltipSize, options);\n    }\n    ctx.lineTo(x, y + topLeft);\n    ctx.quadraticCurveTo(x, y, x + topLeft, y);\n    ctx.closePath();\n\n    ctx.fill();\n\n    if (options.borderWidth > 0) {\n      ctx.stroke();\n    }\n  }\n\n  /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n  _updateAnimationTarget(options) {\n    const chart = this.chart;\n    const anims = this.$animations;\n    const animX = anims && anims.x;\n    const animY = anims && anims.y;\n    if (animX || animY) {\n      const position = positioners[options.position].call(this, this._active, this._eventPosition);\n      if (!position) {\n        return;\n      }\n      const size = this._size = getTooltipSize(this, options);\n      const positionAndSize = Object.assign({}, position, this._size);\n      const alignment = determineAlignment(chart, options, positionAndSize);\n      const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n      if (animX._to !== point.x || animY._to !== point.y) {\n        this.xAlign = alignment.xAlign;\n        this.yAlign = alignment.yAlign;\n        this.width = size.width;\n        this.height = size.height;\n        this.caretX = position.x;\n        this.caretY = position.y;\n        this._resolveAnimations().update(this, point);\n      }\n    }\n  }\n\n  /**\n   * Determine if the tooltip will draw anything\n   * @returns {boolean} True if the tooltip will render\n   */\n  _willRender() {\n    return !!this.opacity;\n  }\n\n  draw(ctx) {\n    const options = this.options.setContext(this.getContext());\n    let opacity = this.opacity;\n\n    if (!opacity) {\n      return;\n    }\n\n    this._updateAnimationTarget(options);\n\n    const tooltipSize = {\n      width: this.width,\n      height: this.height\n    };\n    const pt = {\n      x: this.x,\n      y: this.y\n    };\n\n    // IE11/Edge does not like very small opacities, so snap to 0\n    opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n    const padding = toPadding(options.padding);\n\n    // Truthy/falsey value for empty tooltip\n    const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n    if (options.enabled && hasTooltipContent) {\n      ctx.save();\n      ctx.globalAlpha = opacity;\n\n      // Draw Background\n      this.drawBackground(pt, ctx, tooltipSize, options);\n\n      overrideTextDirection(ctx, options.textDirection);\n\n      pt.y += padding.top;\n\n      // Titles\n      this.drawTitle(pt, ctx, options);\n\n      // Body\n      this.drawBody(pt, ctx, options);\n\n      // Footer\n      this.drawFooter(pt, ctx, options);\n\n      restoreTextDirection(ctx, options.textDirection);\n\n      ctx.restore();\n    }\n  }\n\n  /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n  getActiveElements() {\n    return this._active || [];\n  }\n\n  /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n  setActiveElements(activeElements, eventPosition) {\n    const lastActive = this._active;\n    const active = activeElements.map(({datasetIndex, index}) => {\n      const meta = this.chart.getDatasetMeta(datasetIndex);\n\n      if (!meta) {\n        throw new Error('Cannot find a dataset at index ' + datasetIndex);\n      }\n\n      return {\n        datasetIndex,\n        element: meta.data[index],\n        index,\n      };\n    });\n    const changed = !_elementsEqual(lastActive, active);\n    const positionChanged = this._positionChanged(active, eventPosition);\n\n    if (changed || positionChanged) {\n      this._active = active;\n      this._eventPosition = eventPosition;\n      this._ignoreReplayEvents = true;\n      this.update(true);\n    }\n  }\n\n  /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n  handleEvent(e, replay, inChartArea = true) {\n    if (replay && this._ignoreReplayEvents) {\n      return false;\n    }\n    this._ignoreReplayEvents = false;\n\n    const options = this.options;\n    const lastActive = this._active || [];\n    const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n    // When there are multiple items shown, but the tooltip position is nearest mode\n    // an update may need to be made because our position may have changed even though\n    // the items are the same as before.\n    const positionChanged = this._positionChanged(active, e);\n\n    // Remember Last Actives\n    const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n    // Only handle target event on tooltip change\n    if (changed) {\n      this._active = active;\n\n      if (options.enabled || options.external) {\n        this._eventPosition = {\n          x: e.x,\n          y: e.y\n        };\n\n        this.update(true, replay);\n      }\n    }\n\n    return changed;\n  }\n\n  /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n  _getActiveElements(e, lastActive, replay, inChartArea) {\n    const options = this.options;\n\n    if (e.type === 'mouseout') {\n      return [];\n    }\n\n    if (!inChartArea) {\n      // Let user control the active elements outside chartArea. Eg. using Legend.\n      // But make sure that active elements are still valid.\n      return lastActive.filter(i =>\n        this.chart.data.datasets[i.datasetIndex] &&\n        this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n      );\n    }\n\n    // Find Active Elements for tooltips\n    const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n    if (options.reverse) {\n      active.reverse();\n    }\n\n    return active;\n  }\n\n  /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n  _positionChanged(active, e) {\n    const {caretX, caretY, options} = this;\n    const position = positioners[options.position].call(this, active, e);\n    return position !== false && (caretX !== position.x || caretY !== position.y);\n  }\n}\n\nexport default {\n  id: 'tooltip',\n  _element: Tooltip,\n  positioners,\n\n  afterInit(chart, _args, options) {\n    if (options) {\n      chart.tooltip = new Tooltip({chart, options});\n    }\n  },\n\n  beforeUpdate(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n\n  reset(chart, _args, options) {\n    if (chart.tooltip) {\n      chart.tooltip.initialize(options);\n    }\n  },\n\n  afterDraw(chart) {\n    const tooltip = chart.tooltip;\n\n    if (tooltip && tooltip._willRender()) {\n      const args = {\n        tooltip\n      };\n\n      if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n        return;\n      }\n\n      tooltip.draw(chart.ctx);\n\n      chart.notifyPlugins('afterTooltipDraw', args);\n    }\n  },\n\n  afterEvent(chart, args) {\n    if (chart.tooltip) {\n      // If the event is replayed from `update`, we should evaluate with the final positions.\n      const useFinalPosition = args.replay;\n      if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n        // notify chart about the change, so it will render\n        args.changed = true;\n      }\n    }\n  },\n\n  defaults: {\n    enabled: true,\n    external: null,\n    position: 'average',\n    backgroundColor: 'rgba(0,0,0,0.8)',\n    titleColor: '#fff',\n    titleFont: {\n      weight: 'bold',\n    },\n    titleSpacing: 2,\n    titleMarginBottom: 6,\n    titleAlign: 'left',\n    bodyColor: '#fff',\n    bodySpacing: 2,\n    bodyFont: {\n    },\n    bodyAlign: 'left',\n    footerColor: '#fff',\n    footerSpacing: 2,\n    footerMarginTop: 6,\n    footerFont: {\n      weight: 'bold',\n    },\n    footerAlign: 'left',\n    padding: 6,\n    caretPadding: 2,\n    caretSize: 5,\n    cornerRadius: 6,\n    boxHeight: (ctx, opts) => opts.bodyFont.size,\n    boxWidth: (ctx, opts) => opts.bodyFont.size,\n    multiKeyBackground: '#fff',\n    displayColors: true,\n    boxPadding: 0,\n    borderColor: 'rgba(0,0,0,0)',\n    borderWidth: 0,\n    animation: {\n      duration: 400,\n      easing: 'easeOutQuart',\n    },\n    animations: {\n      numbers: {\n        type: 'number',\n        properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n      },\n      opacity: {\n        easing: 'linear',\n        duration: 200\n      }\n    },\n    callbacks: defaultCallbacks\n  },\n\n  defaultRoutes: {\n    bodyFont: 'font',\n    footerFont: 'font',\n    titleFont: 'font'\n  },\n\n  descriptors: {\n    _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n    _indexable: false,\n    callbacks: {\n      _scriptable: false,\n      _indexable: false,\n    },\n    animation: {\n      _fallback: false\n    },\n    animations: {\n      _fallback: 'animation'\n    }\n  },\n\n  // Resolve additionally from `interaction` options and defaults.\n  additionalOptionScopes: ['interaction']\n};\n","import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n  if (typeof raw === 'string') {\n    index = labels.push(raw) - 1;\n    addedLabels.unshift({index, label: raw});\n  } else if (isNaN(raw)) {\n    index = null;\n  }\n  return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n  const first = labels.indexOf(raw);\n  if (first === -1) {\n    return addIfString(labels, raw, index, addedLabels);\n  }\n  const last = labels.lastIndexOf(raw);\n  return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n  const labels = this.getLabels();\n\n  if (value >= 0 && value < labels.length) {\n    return labels[value];\n  }\n  return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n  static id = 'category';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    ticks: {\n      callback: _getLabelForValue\n    }\n  };\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this._startValue = undefined;\n    this._valueRange = 0;\n    this._addedLabels = [];\n  }\n\n  init(scaleOptions) {\n    const added = this._addedLabels;\n    if (added.length) {\n      const labels = this.getLabels();\n      for (const {index, label} of added) {\n        if (labels[index] === label) {\n          labels.splice(index, 1);\n        }\n      }\n      this._addedLabels = [];\n    }\n    super.init(scaleOptions);\n  }\n\n  parse(raw, index) {\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    const labels = this.getLabels();\n    index = isFinite(index) && labels[index] === raw ? index\n      : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n    return validIndex(index, labels.length - 1);\n  }\n\n  determineDataLimits() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this.getMinMax(true);\n\n    if (this.options.bounds === 'ticks') {\n      if (!minDefined) {\n        min = 0;\n      }\n      if (!maxDefined) {\n        max = this.getLabels().length - 1;\n      }\n    }\n\n    this.min = min;\n    this.max = max;\n  }\n\n  buildTicks() {\n    const min = this.min;\n    const max = this.max;\n    const offset = this.options.offset;\n    const ticks = [];\n    let labels = this.getLabels();\n\n    // If we are viewing some subset of labels, slice the original array\n    labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n    this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n    this._startValue = this.min - (offset ? 0.5 : 0);\n\n    for (let value = min; value <= max; value++) {\n      ticks.push({value});\n    }\n    return ticks;\n  }\n\n  getLabelForValue(value) {\n    return _getLabelForValue.call(this, value);\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    super.configure();\n\n    if (!this.isHorizontal()) {\n      // For backward compatibility, vertical category scale reverse is inverted.\n      this._reversePixels = !this._reversePixels;\n    }\n  }\n\n  // Used to get data value locations. Value can either be an index or a numerical value\n  getPixelForValue(value) {\n    if (typeof value !== 'number') {\n      value = this.parse(value);\n    }\n\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n\n  // Must override base implementation because it calls getPixelForValue\n  // and category scale can have duplicate values\n  getPixelForTick(index) {\n    const ticks = this.ticks;\n    if (index < 0 || index > ticks.length - 1) {\n      return null;\n    }\n    return this.getPixelForValue(ticks[index].value);\n  }\n\n  getValueForPixel(pixel) {\n    return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n  }\n\n  getBasePixel() {\n    return this.bottom;\n  }\n}\n","import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n *    if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n *    Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n *    spacing = (max - min) / count\n *    Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n *    spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n  const ticks = [];\n  // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n  // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n  // for details.\n\n  const MIN_SPACING = 1e-14;\n  const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n  const unit = step || 1;\n  const maxSpaces = maxTicks - 1;\n  const {min: rmin, max: rmax} = dataRange;\n  const minDefined = !isNullOrUndef(min);\n  const maxDefined = !isNullOrUndef(max);\n  const countDefined = !isNullOrUndef(count);\n  const minSpacing = (rmax - rmin) / (maxDigits + 1);\n  let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n  let factor, niceMin, niceMax, numSpaces;\n\n  // Beyond MIN_SPACING floating point numbers being to lose precision\n  // such that we can't do the math necessary to generate ticks\n  if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n    return [{value: rmin}, {value: rmax}];\n  }\n\n  numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n  if (numSpaces > maxSpaces) {\n    // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n    spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n  }\n\n  if (!isNullOrUndef(precision)) {\n    // If the user specified a precision, round to that number of decimal places\n    factor = Math.pow(10, precision);\n    spacing = Math.ceil(spacing * factor) / factor;\n  }\n\n  if (bounds === 'ticks') {\n    niceMin = Math.floor(rmin / spacing) * spacing;\n    niceMax = Math.ceil(rmax / spacing) * spacing;\n  } else {\n    niceMin = rmin;\n    niceMax = rmax;\n  }\n\n  if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n    // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n    // spacing = step;\n    // numSpaces = (max - min) / spacing;\n    // Note that we round here to handle the case where almostWhole translated an FP error\n    numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n    spacing = (max - min) / numSpaces;\n    niceMin = min;\n    niceMax = max;\n  } else if (countDefined) {\n    // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n    // Sometimes these are no-ops, but it makes the code a lot clearer\n    // and when a user defined range is specified, we want the correct ticks\n    niceMin = minDefined ? min : niceMin;\n    niceMax = maxDefined ? max : niceMax;\n    numSpaces = count - 1;\n    spacing = (niceMax - niceMin) / numSpaces;\n  } else {\n    // Case 4\n    numSpaces = (niceMax - niceMin) / spacing;\n\n    // If very close to our rounded value, use it.\n    if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n      numSpaces = Math.round(numSpaces);\n    } else {\n      numSpaces = Math.ceil(numSpaces);\n    }\n  }\n\n  // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n  // until this point\n  const decimalPlaces = Math.max(\n    _decimalPlaces(spacing),\n    _decimalPlaces(niceMin)\n  );\n  factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n  niceMin = Math.round(niceMin * factor) / factor;\n  niceMax = Math.round(niceMax * factor) / factor;\n\n  let j = 0;\n  if (minDefined) {\n    if (includeBounds && niceMin !== min) {\n      ticks.push({value: min});\n\n      if (niceMin < min) {\n        j++; // Skip niceMin\n      }\n      // If the next nice tick is close to min, skip it\n      if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n        j++;\n      }\n    } else if (niceMin < min) {\n      j++;\n    }\n  }\n\n  for (; j < numSpaces; ++j) {\n    const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n    if (maxDefined && tickValue > max) {\n      break;\n    }\n    ticks.push({value: tickValue});\n  }\n\n  if (maxDefined && includeBounds && niceMax !== max) {\n    // If the previous tick is too close to max, replace it with max, else add max\n    if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n      ticks[ticks.length - 1].value = max;\n    } else {\n      ticks.push({value: max});\n    }\n  } else if (!maxDefined || niceMax === max) {\n    ticks.push({value: niceMax});\n  }\n\n  return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n  const rad = toRadians(minRotation);\n  const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n  const length = 0.75 * minSpacing * ('' + value).length;\n  return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this.start = undefined;\n    /** @type {number} */\n    this.end = undefined;\n    /** @type {number} */\n    this._startValue = undefined;\n    /** @type {number} */\n    this._endValue = undefined;\n    this._valueRange = 0;\n  }\n\n  parse(raw, index) { // eslint-disable-line no-unused-vars\n    if (isNullOrUndef(raw)) {\n      return null;\n    }\n    if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n      return null;\n    }\n\n    return +raw;\n  }\n\n  handleTickRangeOptions() {\n    const {beginAtZero} = this.options;\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let {min, max} = this;\n\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n\n    if (beginAtZero) {\n      const minSign = sign(min);\n      const maxSign = sign(max);\n\n      if (minSign < 0 && maxSign < 0) {\n        setMax(0);\n      } else if (minSign > 0 && maxSign > 0) {\n        setMin(0);\n      }\n    }\n\n    if (min === max) {\n      let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n      setMax(max + offset);\n\n      if (!beginAtZero) {\n        setMin(min - offset);\n      }\n    }\n    this.min = min;\n    this.max = max;\n  }\n\n  getTickLimit() {\n    const tickOpts = this.options.ticks;\n    // eslint-disable-next-line prefer-const\n    let {maxTicksLimit, stepSize} = tickOpts;\n    let maxTicks;\n\n    if (stepSize) {\n      maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n      if (maxTicks > 1000) {\n        console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n        maxTicks = 1000;\n      }\n    } else {\n      maxTicks = this.computeTickLimit();\n      maxTicksLimit = maxTicksLimit || 11;\n    }\n\n    if (maxTicksLimit) {\n      maxTicks = Math.min(maxTicksLimit, maxTicks);\n    }\n\n    return maxTicks;\n  }\n\n  /**\n\t * @protected\n\t */\n  computeTickLimit() {\n    return Number.POSITIVE_INFINITY;\n  }\n\n  buildTicks() {\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n\n    // Figure out what the max number of ticks we can support it is based on the size of\n    // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n    // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n    // the graph. Make sure we always have at least 2 ticks\n    let maxTicks = this.getTickLimit();\n    maxTicks = Math.max(2, maxTicks);\n\n    const numericGeneratorOptions = {\n      maxTicks,\n      bounds: opts.bounds,\n      min: opts.min,\n      max: opts.max,\n      precision: tickOpts.precision,\n      step: tickOpts.stepSize,\n      count: tickOpts.count,\n      maxDigits: this._maxDigits(),\n      horizontal: this.isHorizontal(),\n      minRotation: tickOpts.minRotation || 0,\n      includeBounds: tickOpts.includeBounds !== false\n    };\n    const dataRange = this._range || this;\n    const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n    // At this point, we need to update our max and min given the tick values,\n    // since we probably have expanded the range of the scale\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n\n    if (opts.reverse) {\n      ticks.reverse();\n\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n\n    return ticks;\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    const ticks = this.ticks;\n    let start = this.min;\n    let end = this.max;\n\n    super.configure();\n\n    if (this.options.offset && ticks.length) {\n      const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n      start -= offset;\n      end += offset;\n    }\n    this._startValue = start;\n    this._endValue = end;\n    this._valueRange = end - start;\n  }\n\n  getLabelForValue(value) {\n    return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n}\n","import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n  static id = 'linear';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    ticks: {\n      callback: Ticks.formatters.numeric\n    }\n  };\n\n\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n\n    this.min = isFinite(min) ? min : 0;\n    this.max = isFinite(max) ? max : 1;\n\n    // Common base implementation to handle min, max, beginAtZero\n    this.handleTickRangeOptions();\n  }\n\n  /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n  computeTickLimit() {\n    const horizontal = this.isHorizontal();\n    const length = horizontal ? this.width : this.height;\n    const minRotation = toRadians(this.options.ticks.minRotation);\n    const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n    const tickFont = this._resolveTickFontOptions(0);\n    return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n  }\n\n  // Utils\n  getPixelForValue(value) {\n    return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n  }\n\n  getValueForPixel(pixel) {\n    return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n  }\n}\n","import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n  const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n  return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n  const rangeStep = Math.pow(10, rangeExp);\n  const start = Math.floor(min / rangeStep);\n  const end = Math.ceil(max / rangeStep);\n  return end - start;\n}\n\nfunction startExp(min, max) {\n  const range = max - min;\n  let rangeExp = log10Floor(range);\n  while (steps(min, max, rangeExp) > 10) {\n    rangeExp++;\n  }\n  while (steps(min, max, rangeExp) < 10) {\n    rangeExp--;\n  }\n  return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n  min = finiteOrDefault(generationOptions.min, min);\n  const ticks = [];\n  const minExp = log10Floor(min);\n  let exp = startExp(min, max);\n  let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n  const stepSize = Math.pow(10, exp);\n  const base = minExp > exp ? Math.pow(10, minExp) : 0;\n  const start = Math.round((min - base) * precision) / precision;\n  const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n  let significand = Math.floor((start - offset) / Math.pow(10, exp));\n  let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n  while (value < max) {\n    ticks.push({value, major: isMajor(value), significand});\n    if (significand >= 10) {\n      significand = significand < 15 ? 15 : 20;\n    } else {\n      significand++;\n    }\n    if (significand >= 20) {\n      exp++;\n      significand = 2;\n      precision = exp >= 0 ? 1 : precision;\n    }\n    value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n  }\n  const lastTick = finiteOrDefault(generationOptions.max, value);\n  ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n  return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n  static id = 'logarithmic';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    ticks: {\n      callback: Ticks.formatters.logarithmic,\n      major: {\n        enabled: true\n      }\n    }\n  };\n\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this.start = undefined;\n    /** @type {number} */\n    this.end = undefined;\n    /** @type {number} */\n    this._startValue = undefined;\n    this._valueRange = 0;\n  }\n\n  parse(raw, index) {\n    const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n    if (value === 0) {\n      this._zero = true;\n      return undefined;\n    }\n    return isFinite(value) && value > 0 ? value : null;\n  }\n\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(true);\n\n    this.min = isFinite(min) ? Math.max(0, min) : null;\n    this.max = isFinite(max) ? Math.max(0, max) : null;\n\n    if (this.options.beginAtZero) {\n      this._zero = true;\n    }\n\n    // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n    // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n    if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n      this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n    }\n\n    this.handleTickRangeOptions();\n  }\n\n  handleTickRangeOptions() {\n    const {minDefined, maxDefined} = this.getUserBounds();\n    let min = this.min;\n    let max = this.max;\n\n    const setMin = v => (min = minDefined ? min : v);\n    const setMax = v => (max = maxDefined ? max : v);\n\n    if (min === max) {\n      if (min <= 0) { // includes null\n        setMin(1);\n        setMax(10);\n      } else {\n        setMin(changeExponent(min, -1));\n        setMax(changeExponent(max, +1));\n      }\n    }\n    if (min <= 0) {\n      setMin(changeExponent(max, -1));\n    }\n    if (max <= 0) {\n\n      setMax(changeExponent(min, +1));\n    }\n\n    this.min = min;\n    this.max = max;\n  }\n\n  buildTicks() {\n    const opts = this.options;\n\n    const generationOptions = {\n      min: this._userMin,\n      max: this._userMax\n    };\n    const ticks = generateTicks(generationOptions, this);\n\n    // At this point, we need to update our max and min given the tick values,\n    // since we probably have expanded the range of the scale\n    if (opts.bounds === 'ticks') {\n      _setMinAndMaxByKey(ticks, this, 'value');\n    }\n\n    if (opts.reverse) {\n      ticks.reverse();\n\n      this.start = this.max;\n      this.end = this.min;\n    } else {\n      this.start = this.min;\n      this.end = this.max;\n    }\n\n    return ticks;\n  }\n\n  /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n  getLabelForValue(value) {\n    return value === undefined\n      ? '0'\n      : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n  }\n\n  /**\n\t * @protected\n\t */\n  configure() {\n    const start = this.min;\n\n    super.configure();\n\n    this._startValue = log10(start);\n    this._valueRange = log10(this.max) - log10(start);\n  }\n\n  getPixelForValue(value) {\n    if (value === undefined || value === 0) {\n      value = this.min;\n    }\n    if (value === null || isNaN(value)) {\n      return NaN;\n    }\n    return this.getPixelForDecimal(value === this.min\n      ? 0\n      : (log10(value) - this._startValue) / this._valueRange);\n  }\n\n  getValueForPixel(pixel) {\n    const decimal = this.getDecimalForPixel(pixel);\n    return Math.pow(10, this._startValue + decimal * this._valueRange);\n  }\n}\n","import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n  const tickOpts = opts.ticks;\n\n  if (tickOpts.display && opts.display) {\n    const padding = toPadding(tickOpts.backdropPadding);\n    return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n  }\n  return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n  label = isArray(label) ? label : [label];\n  return {\n    w: _longestText(ctx, font.string, label),\n    h: label.length * font.lineHeight\n  };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n  if (angle === min || angle === max) {\n    return {\n      start: pos - (size / 2),\n      end: pos + (size / 2)\n    };\n  } else if (angle < min || angle > max) {\n    return {\n      start: pos - size,\n      end: pos\n    };\n  }\n\n  return {\n    start: pos,\n    end: pos + size\n  };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n  // Right, this is really confusing and there is a lot of maths going on here\n  // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n  //\n  // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n  //\n  // Solution:\n  //\n  // We assume the radius of the polygon is half the size of the canvas at first\n  // at each index we check if the text overlaps.\n  //\n  // Where it does, we store that angle and that index.\n  //\n  // After finding the largest index and angle we calculate how much we need to remove\n  // from the shape radius to move the point inwards by that x.\n  //\n  // We average the left and right distances to get the maximum shape radius that can fit in the box\n  // along with labels.\n  //\n  // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n  // on each side, removing that from the size, halving it and adding the left x protrusion width.\n  //\n  // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n  // and position it in the most space efficient manner\n  //\n  // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n  // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n  // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n  const orig = {\n    l: scale.left + scale._padding.left,\n    r: scale.right - scale._padding.right,\n    t: scale.top + scale._padding.top,\n    b: scale.bottom - scale._padding.bottom\n  };\n  const limits = Object.assign({}, orig);\n  const labelSizes = [];\n  const padding = [];\n  const valueCount = scale._pointLabels.length;\n  const pointLabelOpts = scale.options.pointLabels;\n  const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n  for (let i = 0; i < valueCount; i++) {\n    const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n    padding[i] = opts.padding;\n    const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n    const plFont = toFont(opts.font);\n    const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n    labelSizes[i] = textSize;\n\n    const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n    const angle = Math.round(toDegrees(angleRadians));\n    const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n    const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n    updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n  }\n\n  scale.setCenterPoint(\n    orig.l - limits.l,\n    limits.r - orig.r,\n    orig.t - limits.t,\n    limits.b - orig.b\n  );\n\n  // Now that text size is determined, compute the full positions\n  scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n  const sin = Math.abs(Math.sin(angle));\n  const cos = Math.abs(Math.cos(angle));\n  let x = 0;\n  let y = 0;\n  if (hLimits.start < orig.l) {\n    x = (orig.l - hLimits.start) / sin;\n    limits.l = Math.min(limits.l, orig.l - x);\n  } else if (hLimits.end > orig.r) {\n    x = (hLimits.end - orig.r) / sin;\n    limits.r = Math.max(limits.r, orig.r + x);\n  }\n  if (vLimits.start < orig.t) {\n    y = (orig.t - vLimits.start) / cos;\n    limits.t = Math.min(limits.t, orig.t - y);\n  } else if (vLimits.end > orig.b) {\n    y = (vLimits.end - orig.b) / cos;\n    limits.b = Math.max(limits.b, orig.b + y);\n  }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n  const outerDistance = scale.drawingArea;\n  const {extra, additionalAngle, padding, size} = itemOpts;\n  const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n  const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n  const y = yForAngle(pointLabelPosition.y, size.h, angle);\n  const textAlign = getTextAlignForAngle(angle);\n  const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n  return {\n    // if to draw or overlapped\n    visible: true,\n\n    // Text position\n    x: pointLabelPosition.x,\n    y,\n\n    // Text rendering data\n    textAlign,\n\n    // Bounding box\n    left,\n    top: y,\n    right: left + size.w,\n    bottom: y + size.h\n  };\n}\n\nfunction isNotOverlapped(item, area) {\n  if (!area) {\n    return true;\n  }\n  const {left, top, right, bottom} = item;\n  const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n    _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n  return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n  const items = [];\n  const valueCount = scale._pointLabels.length;\n  const opts = scale.options;\n  const {centerPointLabels, display} = opts.pointLabels;\n  const itemOpts = {\n    extra: getTickBackdropHeight(opts) / 2,\n    additionalAngle: centerPointLabels ? PI / valueCount : 0\n  };\n  let area;\n\n  for (let i = 0; i < valueCount; i++) {\n    itemOpts.padding = padding[i];\n    itemOpts.size = labelSizes[i];\n\n    const item = createPointLabelItem(scale, i, itemOpts);\n    items.push(item);\n    if (display === 'auto') {\n      item.visible = isNotOverlapped(item, area);\n      if (item.visible) {\n        area = item;\n      }\n    }\n  }\n  return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n  if (angle === 0 || angle === 180) {\n    return 'center';\n  } else if (angle < 180) {\n    return 'left';\n  }\n\n  return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n  if (align === 'right') {\n    x -= w;\n  } else if (align === 'center') {\n    x -= (w / 2);\n  }\n  return x;\n}\n\nfunction yForAngle(y, h, angle) {\n  if (angle === 90 || angle === 270) {\n    y -= (h / 2);\n  } else if (angle > 270 || angle < 90) {\n    y -= h;\n  }\n  return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n  const {left, top, right, bottom} = item;\n  const {backdropColor} = opts;\n\n  if (!isNullOrUndef(backdropColor)) {\n    const borderRadius = toTRBLCorners(opts.borderRadius);\n    const padding = toPadding(opts.backdropPadding);\n    ctx.fillStyle = backdropColor;\n\n    const backdropLeft = left - padding.left;\n    const backdropTop = top - padding.top;\n    const backdropWidth = right - left + padding.width;\n    const backdropHeight = bottom - top + padding.height;\n\n    if (Object.values(borderRadius).some(v => v !== 0)) {\n      ctx.beginPath();\n      addRoundedRectPath(ctx, {\n        x: backdropLeft,\n        y: backdropTop,\n        w: backdropWidth,\n        h: backdropHeight,\n        radius: borderRadius,\n      });\n      ctx.fill();\n    } else {\n      ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n    }\n  }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n  const {ctx, options: {pointLabels}} = scale;\n\n  for (let i = labelCount - 1; i >= 0; i--) {\n    const item = scale._pointLabelItems[i];\n    if (!item.visible) {\n      // overlapping\n      continue;\n    }\n    const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n    drawPointLabelBox(ctx, optsAtIndex, item);\n    const plFont = toFont(optsAtIndex.font);\n    const {x, y, textAlign} = item;\n\n    renderText(\n      ctx,\n      scale._pointLabels[i],\n      x,\n      y + (plFont.lineHeight / 2),\n      plFont,\n      {\n        color: optsAtIndex.color,\n        textAlign: textAlign,\n        textBaseline: 'middle'\n      }\n    );\n  }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n  const {ctx} = scale;\n  if (circular) {\n    // Draw circular arcs between the points\n    ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n  } else {\n    // Draw straight lines connecting each index\n    let pointPosition = scale.getPointPosition(0, radius);\n    ctx.moveTo(pointPosition.x, pointPosition.y);\n\n    for (let i = 1; i < labelCount; i++) {\n      pointPosition = scale.getPointPosition(i, radius);\n      ctx.lineTo(pointPosition.x, pointPosition.y);\n    }\n  }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n  const ctx = scale.ctx;\n  const circular = gridLineOpts.circular;\n\n  const {color, lineWidth} = gridLineOpts;\n\n  if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n    return;\n  }\n\n  ctx.save();\n  ctx.strokeStyle = color;\n  ctx.lineWidth = lineWidth;\n  ctx.setLineDash(borderOpts.dash || []);\n  ctx.lineDashOffset = borderOpts.dashOffset;\n\n  ctx.beginPath();\n  pathRadiusLine(scale, radius, circular, labelCount);\n  ctx.closePath();\n  ctx.stroke();\n  ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n  return createContext(parent, {\n    label,\n    index,\n    type: 'pointLabel'\n  });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n  static id = 'radialLinear';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    display: true,\n\n    // Boolean - Whether to animate scaling the chart from the centre\n    animate: true,\n    position: 'chartArea',\n\n    angleLines: {\n      display: true,\n      lineWidth: 1,\n      borderDash: [],\n      borderDashOffset: 0.0\n    },\n\n    grid: {\n      circular: false\n    },\n\n    startAngle: 0,\n\n    // label settings\n    ticks: {\n      // Boolean - Show a backdrop to the scale label\n      showLabelBackdrop: true,\n\n      callback: Ticks.formatters.numeric\n    },\n\n    pointLabels: {\n      backdropColor: undefined,\n\n      // Number - The backdrop padding above & below the label in pixels\n      backdropPadding: 2,\n\n      // Boolean - if true, show point labels\n      display: true,\n\n      // Number - Point label font size in pixels\n      font: {\n        size: 10\n      },\n\n      // Function - Used to convert point labels\n      callback(label) {\n        return label;\n      },\n\n      // Number - Additionl padding between scale and pointLabel\n      padding: 5,\n\n      // Boolean - if true, center point labels to slices in polar chart\n      centerPointLabels: false\n    }\n  };\n\n  static defaultRoutes = {\n    'angleLines.color': 'borderColor',\n    'pointLabels.color': 'color',\n    'ticks.color': 'color'\n  };\n\n  static descriptors = {\n    angleLines: {\n      _fallback: 'grid'\n    }\n  };\n\n  constructor(cfg) {\n    super(cfg);\n\n    /** @type {number} */\n    this.xCenter = undefined;\n    /** @type {number} */\n    this.yCenter = undefined;\n    /** @type {number} */\n    this.drawingArea = undefined;\n    /** @type {string[]} */\n    this._pointLabels = [];\n    this._pointLabelItems = [];\n  }\n\n  setDimensions() {\n    // Set the unconstrained dimension before label rotation\n    const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n    const w = this.width = this.maxWidth - padding.width;\n    const h = this.height = this.maxHeight - padding.height;\n    this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n    this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n    this.drawingArea = Math.floor(Math.min(w, h) / 2);\n  }\n\n  determineDataLimits() {\n    const {min, max} = this.getMinMax(false);\n\n    this.min = isFinite(min) && !isNaN(min) ? min : 0;\n    this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n    // Common base implementation to handle min, max, beginAtZero\n    this.handleTickRangeOptions();\n  }\n\n  /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n  computeTickLimit() {\n    return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n  }\n\n  generateTickLabels(ticks) {\n    LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n    // Point labels\n    this._pointLabels = this.getLabels()\n      .map((value, index) => {\n        const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n        return label || label === 0 ? label : '';\n      })\n      .filter((v, i) => this.chart.getDataVisibility(i));\n  }\n\n  fit() {\n    const opts = this.options;\n\n    if (opts.display && opts.pointLabels.display) {\n      fitWithPointLabels(this);\n    } else {\n      this.setCenterPoint(0, 0, 0, 0);\n    }\n  }\n\n  setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n    this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n    this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n    this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n  }\n\n  getIndexAngle(index) {\n    const angleMultiplier = TAU / (this._pointLabels.length || 1);\n    const startAngle = this.options.startAngle || 0;\n\n    return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n  }\n\n  getDistanceFromCenterForValue(value) {\n    if (isNullOrUndef(value)) {\n      return NaN;\n    }\n\n    // Take into account half font size + the yPadding of the top value\n    const scalingFactor = this.drawingArea / (this.max - this.min);\n    if (this.options.reverse) {\n      return (this.max - value) * scalingFactor;\n    }\n    return (value - this.min) * scalingFactor;\n  }\n\n  getValueForDistanceFromCenter(distance) {\n    if (isNullOrUndef(distance)) {\n      return NaN;\n    }\n\n    const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n    return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n  }\n\n  getPointLabelContext(index) {\n    const pointLabels = this._pointLabels || [];\n\n    if (index >= 0 && index < pointLabels.length) {\n      const pointLabel = pointLabels[index];\n      return createPointLabelContext(this.getContext(), index, pointLabel);\n    }\n  }\n\n  getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n    const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n    return {\n      x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n      y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n      angle\n    };\n  }\n\n  getPointPositionForValue(index, value) {\n    return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n  }\n\n  getBasePosition(index) {\n    return this.getPointPositionForValue(index || 0, this.getBaseValue());\n  }\n\n  getPointLabelPosition(index) {\n    const {left, top, right, bottom} = this._pointLabelItems[index];\n    return {\n      left,\n      top,\n      right,\n      bottom,\n    };\n  }\n\n  /**\n\t * @protected\n\t */\n  drawBackground() {\n    const {backgroundColor, grid: {circular}} = this.options;\n    if (backgroundColor) {\n      const ctx = this.ctx;\n      ctx.save();\n      ctx.beginPath();\n      pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n      ctx.closePath();\n      ctx.fillStyle = backgroundColor;\n      ctx.fill();\n      ctx.restore();\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawGrid() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const {angleLines, grid, border} = opts;\n    const labelCount = this._pointLabels.length;\n\n    let i, offset, position;\n\n    if (opts.pointLabels.display) {\n      drawPointLabels(this, labelCount);\n    }\n\n    if (grid.display) {\n      this.ticks.forEach((tick, index) => {\n        if (index !== 0 || (index === 0 && this.min < 0)) {\n          offset = this.getDistanceFromCenterForValue(tick.value);\n          const context = this.getContext(index);\n          const optsAtIndex = grid.setContext(context);\n          const optsAtIndexBorder = border.setContext(context);\n\n          drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n        }\n      });\n    }\n\n    if (angleLines.display) {\n      ctx.save();\n\n      for (i = labelCount - 1; i >= 0; i--) {\n        const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n        const {color, lineWidth} = optsAtIndex;\n\n        if (!lineWidth || !color) {\n          continue;\n        }\n\n        ctx.lineWidth = lineWidth;\n        ctx.strokeStyle = color;\n\n        ctx.setLineDash(optsAtIndex.borderDash);\n        ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n        offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n        position = this.getPointPosition(i, offset);\n        ctx.beginPath();\n        ctx.moveTo(this.xCenter, this.yCenter);\n        ctx.lineTo(position.x, position.y);\n        ctx.stroke();\n      }\n\n      ctx.restore();\n    }\n  }\n\n  /**\n\t * @protected\n\t */\n  drawBorder() {}\n\n  /**\n\t * @protected\n\t */\n  drawLabels() {\n    const ctx = this.ctx;\n    const opts = this.options;\n    const tickOpts = opts.ticks;\n\n    if (!tickOpts.display) {\n      return;\n    }\n\n    const startAngle = this.getIndexAngle(0);\n    let offset, width;\n\n    ctx.save();\n    ctx.translate(this.xCenter, this.yCenter);\n    ctx.rotate(startAngle);\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n\n    this.ticks.forEach((tick, index) => {\n      if ((index === 0 && this.min >= 0) && !opts.reverse) {\n        return;\n      }\n\n      const optsAtIndex = tickOpts.setContext(this.getContext(index));\n      const tickFont = toFont(optsAtIndex.font);\n      offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n      if (optsAtIndex.showLabelBackdrop) {\n        ctx.font = tickFont.string;\n        width = ctx.measureText(tick.label).width;\n        ctx.fillStyle = optsAtIndex.backdropColor;\n\n        const padding = toPadding(optsAtIndex.backdropPadding);\n        ctx.fillRect(\n          -width / 2 - padding.left,\n          -offset - tickFont.size / 2 - padding.top,\n          width + padding.width,\n          tickFont.size + padding.height\n        );\n      }\n\n      renderText(ctx, tick.label, 0, -offset, tickFont, {\n        color: optsAtIndex.color,\n        strokeColor: optsAtIndex.textStrokeColor,\n        strokeWidth: optsAtIndex.textStrokeWidth,\n      });\n    });\n\n    ctx.restore();\n  }\n\n  /**\n\t * @protected\n\t */\n  drawTitle() {}\n}\n","import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object<Unit, Interval>}\n */\nconst INTERVALS = {\n  millisecond: {common: true, size: 1, steps: 1000},\n  second: {common: true, size: 1000, steps: 60},\n  minute: {common: true, size: 60000, steps: 60},\n  hour: {common: true, size: 3600000, steps: 24},\n  day: {common: true, size: 86400000, steps: 30},\n  week: {common: false, size: 604800000, steps: 4},\n  month: {common: true, size: 2.628e9, steps: 12},\n  quarter: {common: false, size: 7.884e9, steps: 4},\n  year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n  return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n  if (isNullOrUndef(input)) {\n    return null;\n  }\n\n  const adapter = scale._adapter;\n  const {parser, round, isoWeekday} = scale._parseOpts;\n  let value = input;\n\n  if (typeof parser === 'function') {\n    value = parser(value);\n  }\n\n  // Only parse if it's not a timestamp already\n  if (!isFinite(value)) {\n    value = typeof parser === 'string'\n      ? adapter.parse(value, /** @type {Unit} */ (parser))\n      : adapter.parse(value);\n  }\n\n  if (value === null) {\n    return null;\n  }\n\n  if (round) {\n    value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n      ? adapter.startOf(value, 'isoWeek', isoWeekday)\n      : adapter.startOf(value, round);\n  }\n\n  return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n  const ilen = UNITS.length;\n\n  for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n    const interval = INTERVALS[UNITS[i]];\n    const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n    if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n      return UNITS[i];\n    }\n  }\n\n  return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n  for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n    const unit = UNITS[i];\n    if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n      return unit;\n    }\n  }\n\n  return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n  for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n    if (INTERVALS[UNITS[i]].common) {\n      return UNITS[i];\n    }\n  }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n  if (!timestamps) {\n    ticks[time] = true;\n  } else if (timestamps.length) {\n    const {lo, hi} = _lookup(timestamps, time);\n    const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n    ticks[timestamp] = true;\n  }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n  const adapter = scale._adapter;\n  const first = +adapter.startOf(ticks[0].value, majorUnit);\n  const last = ticks[ticks.length - 1].value;\n  let major, index;\n\n  for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n    index = map[major];\n    if (index >= 0) {\n      ticks[index].major = true;\n    }\n  }\n  return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n  const ticks = [];\n  /** @type {Object<number,object>} */\n  const map = {};\n  const ilen = values.length;\n  let i, value;\n\n  for (i = 0; i < ilen; ++i) {\n    value = values[i];\n    map[value] = i;\n\n    ticks.push({\n      value,\n      major: false\n    });\n  }\n\n  // We set the major ticks separately from the above loop because calling startOf for every tick\n  // is expensive when there is a large number of ticks\n  return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n  static id = 'time';\n\n  /**\n   * @type {any}\n   */\n  static defaults = {\n    /**\n     * Scale boundary strategy (bypassed by min/max time options)\n     * - `data`: make sure data are fully visible, ticks outside are removed\n     * - `ticks`: make sure ticks are fully visible, data outside are truncated\n     * @see https://github.com/chartjs/Chart.js/pull/4556\n     * @since 2.7.0\n     */\n    bounds: 'data',\n\n    adapters: {},\n    time: {\n      parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n      unit: false, // false == automatic or override with week, month, year, etc.\n      round: false, // none, or override with week, month, year, etc.\n      isoWeekday: false, // override week start day\n      minUnit: 'millisecond',\n      displayFormats: {}\n    },\n    ticks: {\n      /**\n       * Ticks generation input values:\n       * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n       * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n       * - 'labels': generates ticks from user given `data.labels` values ONLY.\n       * @see https://github.com/chartjs/Chart.js/pull/4507\n       * @since 2.7.0\n       */\n      source: 'auto',\n\n      callback: false,\n\n      major: {\n        enabled: false\n      }\n    }\n  };\n\n  /**\n\t * @param {object} props\n\t */\n  constructor(props) {\n    super(props);\n\n    /** @type {{data: number[], labels: number[], all: number[]}} */\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n\n    /** @type {Unit} */\n    this._unit = 'day';\n    /** @type {Unit=} */\n    this._majorUnit = undefined;\n    this._offsets = {};\n    this._normalized = false;\n    this._parseOpts = undefined;\n  }\n\n  init(scaleOpts, opts = {}) {\n    const time = scaleOpts.time || (scaleOpts.time = {});\n    /** @type {DateAdapter} */\n    const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n    adapter.init(opts);\n\n    // Backward compatibility: before introducing adapter, `displayFormats` was\n    // supposed to contain *all* unit/string pairs but this can't be resolved\n    // when loading the scale (adapters are loaded afterward), so let's populate\n    // missing formats on update\n    mergeIf(time.displayFormats, adapter.formats());\n\n    this._parseOpts = {\n      parser: time.parser,\n      round: time.round,\n      isoWeekday: time.isoWeekday\n    };\n\n    super.init(scaleOpts);\n\n    this._normalized = opts.normalized;\n  }\n\n  /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n  parse(raw, index) { // eslint-disable-line no-unused-vars\n    if (raw === undefined) {\n      return null;\n    }\n    return parse(this, raw);\n  }\n\n  beforeLayout() {\n    super.beforeLayout();\n    this._cache = {\n      data: [],\n      labels: [],\n      all: []\n    };\n  }\n\n  determineDataLimits() {\n    const options = this.options;\n    const adapter = this._adapter;\n    const unit = options.time.unit || 'day';\n    // eslint-disable-next-line prefer-const\n    let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n    /**\n\t\t * @param {object} bounds\n\t\t */\n    function _applyBounds(bounds) {\n      if (!minDefined && !isNaN(bounds.min)) {\n        min = Math.min(min, bounds.min);\n      }\n      if (!maxDefined && !isNaN(bounds.max)) {\n        max = Math.max(max, bounds.max);\n      }\n    }\n\n    // If we have user provided `min` and `max` labels / data bounds can be ignored\n    if (!minDefined || !maxDefined) {\n      // Labels are always considered, when user did not force bounds\n      _applyBounds(this._getLabelBounds());\n\n      // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n      // data bounds are ignored (and don't need to be determined)\n      if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n        _applyBounds(this.getMinMax(false));\n      }\n    }\n\n    min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n    max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n    // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n    this.min = Math.min(min, max - 1);\n    this.max = Math.max(min + 1, max);\n  }\n\n  /**\n\t * @private\n\t */\n  _getLabelBounds() {\n    const arr = this.getLabelTimestamps();\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n\n    if (arr.length) {\n      min = arr[0];\n      max = arr[arr.length - 1];\n    }\n    return {min, max};\n  }\n\n  /**\n\t * @return {object[]}\n\t */\n  buildTicks() {\n    const options = this.options;\n    const timeOpts = options.time;\n    const tickOpts = options.ticks;\n    const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n    if (options.bounds === 'ticks' && timestamps.length) {\n      this.min = this._userMin || timestamps[0];\n      this.max = this._userMax || timestamps[timestamps.length - 1];\n    }\n\n    const min = this.min;\n    const max = this.max;\n\n    const ticks = _filterBetween(timestamps, min, max);\n\n    // PRIVATE\n    // determineUnitForFormatting relies on the number of ticks so we don't use it when\n    // autoSkip is enabled because we don't yet know what the final number of ticks will be\n    this._unit = timeOpts.unit || (tickOpts.autoSkip\n      ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n      : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n    this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n      : determineMajorUnit(this._unit);\n    this.initOffsets(timestamps);\n\n    if (options.reverse) {\n      ticks.reverse();\n    }\n\n    return ticksFromTimestamps(this, ticks, this._majorUnit);\n  }\n\n  afterAutoSkip() {\n    // Offsets for bar charts need to be handled with the auto skipped\n    // ticks. Once ticks have been skipped, we re-compute the offsets.\n    if (this.options.offsetAfterAutoskip) {\n      this.initOffsets(this.ticks.map(tick => +tick.value));\n    }\n  }\n\n  /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n  initOffsets(timestamps = []) {\n    let start = 0;\n    let end = 0;\n    let first, last;\n\n    if (this.options.offset && timestamps.length) {\n      first = this.getDecimalForValue(timestamps[0]);\n      if (timestamps.length === 1) {\n        start = 1 - first;\n      } else {\n        start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n      }\n      last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n      if (timestamps.length === 1) {\n        end = last;\n      } else {\n        end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n      }\n    }\n    const limit = timestamps.length < 3 ? 0.5 : 0.25;\n    start = _limitValue(start, 0, limit);\n    end = _limitValue(end, 0, limit);\n\n    this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n  }\n\n  /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n  _generate() {\n    const adapter = this._adapter;\n    const min = this.min;\n    const max = this.max;\n    const options = this.options;\n    const timeOpts = options.time;\n    // @ts-ignore\n    const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n    const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n    const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n    const hasWeekday = isNumber(weekday) || weekday === true;\n    const ticks = {};\n    let first = min;\n    let time, count;\n\n    // For 'week' unit, handle the first day of week option\n    if (hasWeekday) {\n      first = +adapter.startOf(first, 'isoWeek', weekday);\n    }\n\n    // Align first ticks on unit\n    first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n    // Prevent browser from freezing in case user options request millions of milliseconds\n    if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n      throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n    }\n\n    const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n    for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n      addTick(ticks, time, timestamps);\n    }\n\n    if (time === max || options.bounds === 'ticks' || count === 1) {\n      addTick(ticks, time, timestamps);\n    }\n\n    // @ts-ignore\n    return Object.keys(ticks).sort(sorter).map(x => +x);\n  }\n\n  /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n  getLabelForValue(value) {\n    const adapter = this._adapter;\n    const timeOpts = this.options.time;\n\n    if (timeOpts.tooltipFormat) {\n      return adapter.format(value, timeOpts.tooltipFormat);\n    }\n    return adapter.format(value, timeOpts.displayFormats.datetime);\n  }\n\n  /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n  format(value, format) {\n    const options = this.options;\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const fmt = format || formats[unit];\n    return this._adapter.format(value, fmt);\n  }\n\n  /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n  _tickFormatFunction(time, index, ticks, format) {\n    const options = this.options;\n    const formatter = options.ticks.callback;\n\n    if (formatter) {\n      return call(formatter, [time, index, ticks], this);\n    }\n\n    const formats = options.time.displayFormats;\n    const unit = this._unit;\n    const majorUnit = this._majorUnit;\n    const minorFormat = unit && formats[unit];\n    const majorFormat = majorUnit && formats[majorUnit];\n    const tick = ticks[index];\n    const major = majorUnit && majorFormat && tick && tick.major;\n\n    return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n  }\n\n  /**\n\t * @param {object[]} ticks\n\t */\n  generateTickLabels(ticks) {\n    let i, ilen, tick;\n\n    for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n      tick = ticks[i];\n      tick.label = this._tickFormatFunction(tick.value, i, ticks);\n    }\n  }\n\n  /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n  getDecimalForValue(value) {\n    return value === null ? NaN : (value - this.min) / (this.max - this.min);\n  }\n\n  /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n  getPixelForValue(value) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForValue(value);\n    return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n  }\n\n  /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return this.min + pos * (this.max - this.min);\n  }\n\n  /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n  _getLabelSize(label) {\n    const ticksOpts = this.options.ticks;\n    const tickLabelWidth = this.ctx.measureText(label).width;\n    const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n    const cosRotation = Math.cos(angle);\n    const sinRotation = Math.sin(angle);\n    const tickFontSize = this._resolveTickFontOptions(0).size;\n\n    return {\n      w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n      h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n    };\n  }\n\n  /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n  _getLabelCapacity(exampleTime) {\n    const timeOpts = this.options.time;\n    const displayFormats = timeOpts.displayFormats;\n\n    // pick the longest format (milliseconds) for guesstimation\n    const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n    const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n    const size = this._getLabelSize(exampleLabel);\n    // subtract 1 - if offset then there's one less label than tick\n    // if not offset then one half label padding is added to each end leaving room for one less label\n    const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n    return capacity > 0 ? capacity : 1;\n  }\n\n  /**\n\t * @protected\n\t */\n  getDataTimestamps() {\n    let timestamps = this._cache.data || [];\n    let i, ilen;\n\n    if (timestamps.length) {\n      return timestamps;\n    }\n\n    const metas = this.getMatchingVisibleMetas();\n\n    if (this._normalized && metas.length) {\n      return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n    }\n\n    for (i = 0, ilen = metas.length; i < ilen; ++i) {\n      timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n    }\n\n    return (this._cache.data = this.normalize(timestamps));\n  }\n\n  /**\n\t * @protected\n\t */\n  getLabelTimestamps() {\n    const timestamps = this._cache.labels || [];\n    let i, ilen;\n\n    if (timestamps.length) {\n      return timestamps;\n    }\n\n    const labels = this.getLabels();\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      timestamps.push(parse(this, labels[i]));\n    }\n\n    return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n  }\n\n  /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n  normalize(values) {\n    // It seems to be somewhat faster to do sorting first\n    return _arrayUnique(values.sort(sorter));\n  }\n}\n","import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n  let lo = 0;\n  let hi = table.length - 1;\n  let prevSource, nextSource, prevTarget, nextTarget;\n  if (reverse) {\n    if (val >= table[lo].pos && val <= table[hi].pos) {\n      ({lo, hi} = _lookupByKey(table, 'pos', val));\n    }\n    ({pos: prevSource, time: prevTarget} = table[lo]);\n    ({pos: nextSource, time: nextTarget} = table[hi]);\n  } else {\n    if (val >= table[lo].time && val <= table[hi].time) {\n      ({lo, hi} = _lookupByKey(table, 'time', val));\n    }\n    ({time: prevSource, pos: prevTarget} = table[lo]);\n    ({time: nextSource, pos: nextTarget} = table[hi]);\n  }\n\n  const span = nextSource - prevSource;\n  return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n  static id = 'timeseries';\n\n  /**\n   * @type {any}\n   */\n  static defaults = TimeScale.defaults;\n\n  /**\n\t * @param {object} props\n\t */\n  constructor(props) {\n    super(props);\n\n    /** @type {object[]} */\n    this._table = [];\n    /** @type {number} */\n    this._minPos = undefined;\n    /** @type {number} */\n    this._tableRange = undefined;\n  }\n\n  /**\n\t * @protected\n\t */\n  initOffsets() {\n    const timestamps = this._getTimestampsForTable();\n    const table = this._table = this.buildLookupTable(timestamps);\n    this._minPos = interpolate(table, this.min);\n    this._tableRange = interpolate(table, this.max) - this._minPos;\n    super.initOffsets(timestamps);\n  }\n\n  /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n  buildLookupTable(timestamps) {\n    const {min, max} = this;\n    const items = [];\n    const table = [];\n    let i, ilen, prev, curr, next;\n\n    for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n      curr = timestamps[i];\n      if (curr >= min && curr <= max) {\n        items.push(curr);\n      }\n    }\n\n    if (items.length < 2) {\n      // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n      return [\n        {time: min, pos: 0},\n        {time: max, pos: 1}\n      ];\n    }\n\n    for (i = 0, ilen = items.length; i < ilen; ++i) {\n      next = items[i + 1];\n      prev = items[i - 1];\n      curr = items[i];\n\n      // only add points that breaks the scale linearity\n      if (Math.round((next + prev) / 2) !== curr) {\n        table.push({time: curr, pos: i / (ilen - 1)});\n      }\n    }\n    return table;\n  }\n\n  /**\n    * Generates all timestamps defined in the data.\n    * Important: this method can return ticks outside the min and max range, it's the\n    * responsibility of the calling code to clamp values if needed.\n    * @protected\n    */\n  _generate() {\n    const min = this.min;\n    const max = this.max;\n    let timestamps = super.getDataTimestamps();\n    if (!timestamps.includes(min) || !timestamps.length) {\n      timestamps.splice(0, 0, min);\n    }\n    if (!timestamps.includes(max) || timestamps.length === 1) {\n      timestamps.push(max);\n    }\n    return timestamps.sort((a, b) => a - b);\n  }\n\n  /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n  _getTimestampsForTable() {\n    let timestamps = this._cache.all || [];\n\n    if (timestamps.length) {\n      return timestamps;\n    }\n\n    const data = this.getDataTimestamps();\n    const label = this.getLabelTimestamps();\n    if (data.length && label.length) {\n      // If combining labels and data (data might not contain all labels),\n      // we need to recheck uniqueness and sort\n      timestamps = this.normalize(data.concat(label));\n    } else {\n      timestamps = data.length ? data : label;\n    }\n    timestamps = this._cache.all = timestamps;\n\n    return timestamps;\n  }\n\n  /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n  getDecimalForValue(value) {\n    return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n  }\n\n  /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n  getValueForPixel(pixel) {\n    const offsets = this._offsets;\n    const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n    return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n  }\n}\n\nexport default TimeSeriesScale;\n","export * from './controllers/index.js';\nexport * from './core/index.js';\nexport * from './elements/index.js';\nexport * from './platform/index.js';\nexport * from './plugins/index.js';\nexport * from './scales/index.js';\n\nimport * as controllers from './controllers/index.js';\nimport * as elements from './elements/index.js';\nimport * as plugins from './plugins/index.js';\nimport * as scales from './scales/index.js';\n\nexport {\n  controllers,\n  elements,\n  plugins,\n  scales,\n};\n\nexport const registerables = [\n  controllers,\n  elements,\n  plugins,\n  scales,\n];\n","import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n","import React, {useRef, useEffect} from \"react\";\nimport Chart from 'chart.js/auto';\nimport { defineCustomElements, TdsBlock } from '@scania/tegel-react';\nimport \"../App.css\";\n\ndefineCustomElements();\n\nconst LineChart = ({language, chartData, dataRequested}) => {\n\n//Translations\n  const translations = {\n      german: {\n          xAxe:  \"Jahre im Einsatz\",\n          yAxe: \"Gesamtkosten in CHF\",\n      },\n      french: {\n          xAxe:  \"Années d'utilisation\",\n          yAxe: \"Coût total en CHF\",\n      }\n  };\n  const uiLanguage = translations[language];\n\n//Create chart\n  const chartRef = useRef(null);\n  const dataCount = chartData.yearsInUse+1;\n  const labels = [];\n  for (let i = 0; i < dataCount; ++i) {\n    labels.push(i.toString());\n  }\n  let dataBev = [];\n  dataBev[0] = chartData.netInvestmentBev;\n  for (let i = 2; i < dataCount; ++i) {\n      dataBev.push(NaN);\n    }\n  dataBev[dataCount-1] = chartData.totalInvestmentBev;\n\n  let dataDiesel = [];\n  dataDiesel[0] = chartData.netInvestmentDiesel;\n  for (let i = 2; i < dataCount; ++i) {\n      dataDiesel.push(NaN);\n    }\n  dataDiesel[dataCount-1] = chartData.totalInvestmentDiesel;\n\n  useEffect(() => {\n    const ctx = chartRef.current.getContext('2d');\n    Chart.defaults.font.family = \"Scania Sans\";\n    Chart.defaults.font.size = \"14px\";\n    const myChart = new Chart(ctx, {\n      type: 'line',\n      data: {\n          labels: labels,\n          datasets: [{\n              label: 'BEV',\n              data: dataBev,\n              fill: false,\n              borderColor: '#16417F',\n              backgroundColor: '#16417F',\n              tension: 0.1,\n              spanGaps: true\n            }, {\n              label: 'Diesel',\n              data: dataDiesel,\n              fill: false,\n              borderColor: '#950A16',\n              backgroundColor: '#950A16',\n              tension: 0.1,\n              spanGaps: true\n            }]\n        },\n        options: {\n          plugins: {\n              legend: {\n                  position: \"bottom\",\n              },\n          },\n          elements: {\n            point: {\n              pointStyle: false\n            }\n          },\n          scales: {\n              x: {\n                display: true,\n                title: {\n                  display: true,\n                  text: uiLanguage.xAxe\n                }\n              },\n              y: {\n                display: true,\n                title: {\n                  display: true,\n                  text: uiLanguage.yAxe\n                }\n              }\n            }\n          }\n      });\n\n    return () => {\n      myChart.destroy();\n    };\n  },// eslint-disable-next-line\n  [dataRequested, chartData, language]);\n\nreturn (\n  <div className=\"chart-container-print\">\n    <TdsBlock className=\"chart-container\">\n      <canvas ref={chartRef} />\n    </TdsBlock>\n  </div>\n)};\n  \n\nexport default LineChart;","import React, { useState, useEffect } from \"react\";\nimport \"./App.css\";\nimport { defineCustomElements, TdsFooter } from '@scania/tegel-react';\nimport Header from './components/Header';\nimport Disclaimer from \"./components/Disclaimer\";\nimport UserInputs from \"./components/UserInputs\";\nimport Footer from \"./components/Footer\";\nimport LineChart from \"./components/LineChart\";\n\n\ndefineCustomElements();\nconst App = () => {\n    const appVersion = \"2.0.3\";\n\n    const languageMap = {\n        \"de-CH\": \"german\",\n        \"de-DE\": \"german\",\n        \"fr-CH\": \"french\"\n    };\n\n    const browserLanguage = navigator.language;\n    const [language, setLanguage] = useState(languageMap[browserLanguage] || \"german\");\n    \n    useEffect(() => {\n        setLanguage(languageMap[browserLanguage] || \"german\");\n    }, // eslint-disable-next-line\n    [browserLanguage]);\n    \n    const translations = {\n        german: {\n            version: \"Version \",\n            savings: \"Mit Scania BEV sparen Sie \",\n        },\n        french: {\n            version: \"Version \",\n            savings: \"Avec Scania BEV, vous économisez \",\n        }\n    };\n    const uiLanguage = translations[language];\n\n    const [savings, setSavings] = useState(0);\n    const [chartData, setChartData] =useState('');\n\n    return (\n        <div>\n            <Header \n                language={language} \n                setLanguage={setLanguage} \n            />\n            \n            <div className=\"user-interface\">\n                <UserInputs \n                    language={language} \n                    setSavings={setSavings} \n                    setChartData={setChartData} \n                />\n\n{savings ?      <h1 style={{textAlign: \"center\", fontSize: \"2.5rem\"}}>{uiLanguage.savings+savings+\" CHF\"}</h1> : null}\n{savings ?      <LineChart \n                    language={language} \n                    chartData={chartData} \n                /> : null}\n\n                <Disclaimer \n                    language={language} \n                />\n\n                <p style={{textAlign: \"right\"}}>{uiLanguage.version+appVersion}</p>\n\n                <Footer \n                    language={language} \n                    savings={savings} \n                />\n            </div>\n                <TdsFooter />\n        </div>\n    );\n\n};\n\nexport default App;","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport App from './App';\n\n\nconst rootElement = document.getElementById(\"root\");\nconst root = createRoot(rootElement);\nroot.render(<App />);"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","Scheduler","require","React","ReactDOM","formatProdErrorMessage","url","arguments","length","encodeURIComponent","i","isValidContainer","node","nodeType","REACT_LEGACY_ELEMENT_TYPE","Symbol","for","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","REACT_MEMO_CACHE_SENTINEL","MAYBE_ITERATOR_SYMBOL","iterator","getIteratorFn","maybeIterable","REACT_CLIENT_REFERENCE","getComponentNameFromType","type","$$typeof","displayName","name","_context","innerType","render","_payload","_init","x","prefix","suffix","ReactSharedInternals","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","assign","describeBuiltInComponentFrame","match","stack","trim","indexOf","reentry","describeNativeComponentFrame","fn","construct","previousPrepareStackTrace","prepareStackTrace","RunInRootFrame","DetermineComponentFrameRoot","Fake","defineProperty","prototype","set","Reflect","control","call","x$0","x$1","catch","sample","namePropDescriptor","getOwnPropertyDescriptor","configurable","value","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","split","controlLines","includes","frame","replace","describeFiber","fiber","tag","getStackByFiberInDevAndProd","workInProgress","info","return","message","getNearestMountedFiber","nearestMounted","alternate","flags","getSuspenseInstanceFromFiber","suspenseState","memoizedState","dehydrated","assertIsMounted","findCurrentHostFiberImpl","child","sibling","isArrayImpl","Array","isArray","ReactDOMSharedInternals","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","sharedNotPendingObject","pending","data","method","action","valueStack","index","createCursor","defaultValue","current","pop","cursor","push","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","documentElement","namespaceURI","getOwnHostContext","parentNode","tagName","getChildHostContextProd","popHostContainer","pushHostContext","context","JSCompiler_inline_result","popHostContext","HostTransitionContext","_currentValue","hasOwnProperty","scheduleCallback$3","unstable_scheduleCallback","cancelCallback$1","unstable_cancelCallback","shouldYield","unstable_shouldYield","requestPaint","unstable_requestPaint","now","unstable_now","getCurrentPriorityLevel","unstable_getCurrentPriorityLevel","ImmediatePriority","unstable_ImmediatePriority","UserBlockingPriority","unstable_UserBlockingPriority","NormalPriority$1","unstable_NormalPriority","LowPriority","unstable_LowPriority","IdlePriority","unstable_IdlePriority","log$1","log","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","setStrictMode","err","clz32","Math","LN2","nextTransitionLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","root","wipLanes","pendingLanes","nextLanes","suspendedLanes","pingedLanes","warmLanes","finishedLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","lane","currentTime","claimNextTransitionLane","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markSpawnedDeferredLane","spawnedLane","entangledLanes","spawnedLaneIndex","entanglements","markRootEntangled","rootEntangledLanes","index$8","lanesToEventPriority","resolveUpdatePriority","updatePriority","p","window","event","getEventPriority","randomKey","random","toString","slice","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","getParentSuspenseInstance","getInstanceFromNode","getNodeFromInstance","inst","stateNode","getResourcesFromRoot","resources","hoistableStyles","Map","hoistableScripts","markNodeAsHoistable","allNativeEvents","Set","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","add","canUseDOM","document","createElement","VALID_ATTRIBUTE_NAME_REGEX","RegExp","illegalAttributeNameCache","validatedAttributeNameCache","setValueForAttribute","attributeName","test","removeAttribute","prefix$10","toLowerCase","setAttribute","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","setAttributeNS","getToStringValue","isCheckable","elem","nodeName","track","_valueTracker","valueField","descriptor","constructor","currentValue","get","this","enumerable","getValue","setValue","stopTracking","trackValueOnNode","updateValueIfChanged","tracker","lastValue","checked","getActiveElement","doc","activeElement","body","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","ch","charCodeAt","updateInput","element","lastDefaultValue","defaultChecked","setDefaultValue","initInput","isHydrating","ownerDocument","updateOptions","multiple","propValue","setDefaultSelected","options","selected","defaultSelected","disabled","updateTextarea","initTextarea","children","textContent","setTextContent","text","firstChild","lastChild","nodeValue","unitlessNumbers","setValueForStyle","style","styleName","isCustomProperty","setProperty","cssFloat","has","setValueForStyles","styles","prevStyles","styleName$16","styleName$17","isCustomElement","aliases","isJavaScriptProtocol","sanitizeURL","currentReplayingEvent","getEventTarget","nativeEvent","target","srcElement","correspondingUseElement","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","props","a","querySelectorAll","otherNode","form","otherProps","isInsideEventHandler","batchedUpdates$1","b","flushSyncWork$1","getListener","passiveBrowserEventsSupported","addEventListener","removeEventListener","startText","fallbackText","getData","start","end","startValue","startLength","endValue","endLength","minEnd","getEventCharCode","keyCode","charCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","propName","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","lastMovementX","lastMovementY","lastMouseEvent","EventInterface","eventPhase","bubbles","cancelable","timeStamp","Date","isTrusted","SyntheticEvent","UIEventInterface","view","detail","SyntheticUIEvent","MouseEventInterface","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","getEventModifierState","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","SyntheticMouseEvent","SyntheticDragEvent","dataTransfer","SyntheticFocusEvent","SyntheticAnimationEvent","animationName","elapsedTime","pseudoElement","SyntheticClipboardEvent","clipboardData","SyntheticCompositionEvent","normalizeKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","translateToKey","modifierKeyToProp","Alt","Control","Meta","Shift","modifierStateGetter","keyArg","SyntheticKeyboardEvent","key","String","fromCharCode","location","repeat","locale","which","SyntheticPointerEvent","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","SyntheticTouchEvent","touches","targetTouches","changedTouches","SyntheticTransitionEvent","propertyName","SyntheticWheelEvent","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","SyntheticToggleEvent","newState","oldState","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","supportedInputTypes","color","date","datetime","email","month","number","password","range","search","tel","time","week","isTextInputElement","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","listeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$283","isSupported$jscomp$inline_418","element$jscomp$inline_419","oninput","stopWatchingForValueChange","detachEvent","handlePropertyChange","handleEventsForInputEventPolyfill","attachEvent","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","objectIs","is","y","shallowEqual","objA","objB","keysA","keysB","currentKey","getLeafNode","getNodeForCharacterOffset","offset","nodeEnd","nextSibling","containsNode","outerNode","innerNode","contains","compareDocumentPosition","getActiveElementDeep","containerInfo","defaultView","HTMLIFrameElement","contentWindow","href","hasSelectionCapabilities","contentEditable","restoreSelection","priorSelectionInformation","curFocusedElem","focusedElem","priorSelectionRange","selectionRange","selectionStart","selectionEnd","min","getSelection","extend","endMarker","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","skipSelectionChangeEvent","activeElementInst","lastSelection","mouseDown","constructSelectEvent","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","animationend","animationiteration","animationstart","transitionrun","transitionstart","transitioncancel","transitionend","prefixedEventNames","getVendorPrefixedEventName","prefixMap","animation","transition","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","endIndex","queue","update","next","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","isHidden","parent","childLanes","_visibility","hiddenUpdates","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","CapturedStacks","WeakMap","createCapturedValueAtFiber","source","existing","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","instance","memoizedProps","listenToNonDelegatedEvent","mediaEventTypes","suppressHydrationWarning","checkForUnmatchedText","popover","onScroll","onScrollEnd","onClick","onclick","noop$1","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldClear","shouldSetTextContent","getNextHydratable","resetHydrationState","error","SuspenseException","SuspenseyCommitException","noopSuspenseyCommitThenable","isThenableResolved","thenable","status","noop$3","trackUsedThenable","thenableState","reason","workInProgressRoot","shellSuspendCounter","fulfilledValue","fulfilledThenable","rejectedThenable","suspendedThenable","getSuspendedThenable","thenableState$1","thenableIndexCounter$1","unwrapThenable","coerceRef","ref","throwOnInvalidObjectType","returnFiber","newChild","join","resolveLazy","lazyType","init","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deletions","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","pendingProps","createWorkInProgress","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","createFiberFromText","mode","updateElement","elementType","updateFragment","createFiberFromTypeAndProps","updatePortal","portal","implementation","createFiberFromPortal","fragment","createFiberFromFragment","createChild","readContextDuringReconciliation","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildFibersImpl","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","delete","forEach","reconcileChildrenArray","step","done","reconcileChildrenIterator","firstChildFiber","createFiberImplClass","reconcileChildFibers","mountChildFibers","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","baseLanes","reuseHiddenContextOnStack","popHiddenContext","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","handler","suspenseStackCursor","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","row","state","revealOrder","AbortControllerLocal","AbortController","signal","aborted","listener","abort","scheduleCallback$2","NormalPriority","CacheContext","Consumer","Provider","_currentValue2","_threadCount","createCache","controller","refCount","releaseCache","cache","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","pingEngtangledActionScope","prevOnStartTransitionFinish","S","entangledListeners","requestTransitionLane","entangleAsyncAction","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","pooledCache","pushTransition","offscreenWorkInProgress","prevCachePool","pool","getSuspendedCache","cacheFromPool","currentlyRenderingFiber$1","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","Component","secondArg","nextRenderLanes","updateQueue","H","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","checkIfContextChanged","numberOfReRenders","lastEffect","events","stores","memoCache","HooksDispatcherOnRerender","TransitionAwareHostComponent","dispatcher","maybeThenable","useState","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","hook","baseState","baseQueue","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","use","usable","readContext","useMemoCache","size","array","basicStateReducer","updateReducer","reducer","updateReducerImpl","lastRenderedReducer","pendingQueue","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$54","workInProgressRootRenderLanes","revertLane","hasEagerState","eagerState","workInProgressRootSkippedLanes","lastRenderedState","dispatch","rerenderReducer","lastRenderPhaseUpdate","updateSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","isHydrating$jscomp$0","snapshotChanged","updateEffect","subscribeToStore","bind","pushEffect","updateStoreInstance","destroy","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","nextValue","scheduleUpdateOnFiber","mountStateImpl","initialState","initialStateInitializer","updateOptimisticImpl","passthrough","dispatchActionState","actionQueue","setPendingState","setState","payload","isRenderPhaseUpdate","actionNode","isTransition","T","runActionStateAction","prevState","prevTransition","currentTransition","onStartTransitionFinish","handleActionReturnValue","onActionError","error$60","nextState","onActionSuccess","notifyActionListeners","last","actionStateReducer","mountActionState","initialStateProp","ssrFormState","formState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","updateActionStateImpl","stateHook","currentStateHook","actionQueueHook","actionStateActionEffect","rerenderActionState","create","deps","updateRef","mountEffectImpl","fiberFlags","hookFlags","updateEffectImpl","mountEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","refCleanup","updateImperativeHandle","concat","mountDebugValue","updateCallback","callback","updateMemo","nextCreate","mountDeferredValueImpl","initialValue","requestDeferredLane","updateDeferredValueImpl","prevValue","startTransition","pendingState","finishedState","previousPriority","dispatchSetStateInternal","result","thenableWithOverride","chainThenableValue","requestUpdateLane","noop$2","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","useHostTransitionStatus","updateId","updateRefresh","refreshCache","provider","root$63","enqueueUpdate","createUpdate","entangleTransitions","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","throwIfDuringRender","queueLanes","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useInsertionEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useSyncExternalStore","useId","useCacheRefresh","useFormState","useActionState","useOptimistic","initialArg","identifierPrefix","booleanOrThenable","applyDerivedStateFromProps","ctor","getDerivedStateFromProps","nextProps","classComponentUpdater","isMounted","component","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","checkShouldComponentUpdate","oldProps","newProps","nextContext","shouldComponentUpdate","isPureReactComponent","callComponentWillReceiveProps","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","resolveClassComponentProps","baseProps","defaultProps","propName$67","reportGlobalError","reportError","ErrorEvent","dispatchEvent","process","emit","console","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","componentStack","e$68","setTimeout","logCaughtError","boundary","onCaughtError","errorBoundary","e$69","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","componentDidCatch","legacyErrorBoundariesThatAlreadyFailed","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","prepareToReadContext","bailoutOnAlreadyFinishedWork","updateMemoComponent","shouldConstruct","compare","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","nextIsDetached","_pendingVisibility","markRef","deferHiddenOffscreenComponent","cachePool","nextBaseLanes","propagateParentContextChanges","replayFunctionComponent","updateClassComponent","contextType","updater","refs","initializeUpdateQueue","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","processUpdateQueue","suspendIfUpdateReadFromEntangledAsyncAction","componentDidMount","unresolvedOldProps","oldContext","contextType$jscomp$0","hasForceUpdate","cloneUpdateQueue","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","mountHostRootWithoutHydrating","SUSPENDED_MARKER","treeContext","retryLane","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","didSuspend","JSCompiler_temp$jscomp$0","nextInstance","c","overflow","fallback","mountWorkInProgressOffscreenFiber","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","dataset","digest","dgst","renderDidSuspendDelayIfPossible","retryDehydratedSuspenseBoundary","_reactRetry","subtreeFlags","primaryChildren","offscreenProps","createFiberFromOffscreen","scheduleSuspenseWorkOnFiber","propagationRoot","scheduleContextWorkOnParentPath","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","rendering","renderingStartTime","updateSuspenseListComponent","beginWork","pushProvider","didSuspendBefore","attemptEarlyBailoutIfNoScheduledUpdate","lazyComponent","propagateContextChanges","isDehydrated","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","anyProps","hasAttribute","getAttribute","rel","crossOrigin","title","src","canHydrateInstance","canHydrateTextInstance","pooledCacheLanes","valueCursor","currentlyRenderingFiber","lastContextDependency","providerFiber","popProvider","contexts","forcePropagateEntireTree","list","nextFiber","firstContext","dependency","isInsidePropagationBailout","currentParent","currentDependencies","memoizedValue","readContextForConsumer","consumer","firstBaseUpdate","lastBaseUpdate","shared","hiddenCallbacks","callbacks","executionContext","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","clone","didReadFromEntangledAsyncAction","workInProgress$jscomp$0","instance$jscomp$0","lastPendingUpdate","firstPendingUpdate","isHiddenUpdate","callCallback","commitCallbacks","commitHookEffectListMount","finishedWork","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","nearestMountedAncestor","commitClassCallbacks","safelyCallComponentWillUnmount","componentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$112","commitHostMount","autoFocus","srcSet","srcset","commitHostUpdate","domElement","lastProps","propKey","lastProp","setProp","propKey$203","propKey$219","propKey$224","propKey$229","setPropOnCustomElement","propKey$234","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","before","insertBefore","appendChild","_reactRootContainer","insertOrAppendPlacementNode","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","WeakSet","nextEffect","shouldFireAfterActiveInstanceBlur","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","__reactInternalSnapshotBeforeUpdate","error$111","commitSuspenseHydrationCallbacks","prevOffscreenSubtreeIsHidden","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","onCommitFiberUnmount","count","removeChild","prevHostParent","prevHostParentIsContainer","attributes","removeAttributeNode","prevHostParentIsContainer$119","clearSuspenseBoundary","retryIfBlockedOn","attachSuspenseRetryListeners","wakeables","retryCache","_retryCache","getRetryCache","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","getElementsByTagName","head","querySelector","maybeNodes","getHydratableHoistableCache","splice","content","property","httpEquiv","charSet","mountHoistable","acquireResource","nextNode","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","_current","recursivelyTraverseDisappearLayoutEffects","display","retryQueue","parent$jscomp$0","parent$113","parent$115","reset","finishedRoot$jscomp$0","includeWorkInProgressEffects","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","onPostCommit","passiveEffectDuration","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","resource","suspendedState","media","matchMedia","matches","loading","getStyleKey","getStylesheetSelectorFromKey","_p","onUnsuspend","stylesheetPropsFromRawProps","preloadPropsMap","adoptPreloadPropsForStylesheet","linkInstance","reject","onload","onerror","stylesheets","preload","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","FiberNode","isReactComponent","resetWorkInProgress","owner","fiberTag","hostContext","itemProp","precedence","onLoad","onError","async","isHostHoistableType","elements","primaryChildInstance","_pendingMarkers","_transitions","detach","attach","pendingChildren","markUpdate","preloadResourceAndSuspendIfNeeded","preloadResource","scheduleRetryEffect","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$131","bubbleProperties","completedWork","didBailout","newChildLanes","child$132","completeWork","pendingContext","queueRecoverableErrors","createElementNS","innerHTML","createTextNode","cache$144","listenToAllSupportedEvents","workInProgressRootExitStatus","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","DefaultAsyncDispatcher","getCacheForType","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootConcurrentErrors","workInProgressRootRecoverableErrors","workInProgressRootDidIncludeRecursiveRenderUpdate","Infinity","workInProgressTransitions","rootDoesHavePassiveEffects","rootWithPendingPassiveEffects","pendingPassiveEffectsLanes","pendingPassiveEffectsRemainingLanes","pendingPassiveTransitions","suspenseHandler","cancelPendingCommit","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","expiredLanes","exitStatus","prevExecutionContext","prevDispatcher","pushDispatcher","prevAsyncDispatcher","pushAsyncDispatcher","thrownValue","throwAndUnwindWorkLoop","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","resetWorkInProgressStack","workLoopConcurrent","thrownValue$166","handleThrow","A","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","errorRecoveryDisabledLanes","wasRootDehydrated","timeoutHandle","scheduleTimeout","commitRootWhenReady","errors","apply","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","updatedLanes","suspendedRetryLanes","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","unsuspend","noop","insertSuspendedStylesheets","commit","stylesheetTimer","clearTimeout","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","expirationTimes","index$6","flushSyncWorkAcrossRoots_impl","cancelTimeout","allEntangledLanes","index$4","shouldYieldForPrerendering","unitOfWork","workLoopSync","thrownValue$164","performUnitOfWork","suspendedReason","rootRenderLanes","attachPingListener","markerInstances","cause","wrapperError","throwException","unwindUnitOfWork","skipSiblings","previousUpdateLanePriority","renderPriorityLevel","flushPassiveEffects","callbackNode","callbackPriority","remainingLanes","previouslyPendingLanes","index$7","hiddenUpdatesForLane","markRootFinished","priorityLevel","scheduleCallback$1","eventsEnabled","_enabled","selection","e$20","indexWithinAnchor","indexWithinFocus","selectionInformation","resolvedPrevProps","clearContainerSparingly","commitBeforeMutationEffects","releaseRootPooledCache","onCommitFiberRoot","onCommitRoot","onRecoverableError","commitRootImpl","root$170","renderPriority","onPostCommitFiberRoot","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","cb","processRootScheduleInMicrotask","scheduleMicrotask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$172","performSyncWorkOnRoot","currentPopstateTransitionEvent","shouldAttemptEagerTransition","prev","scheduleTaskForRootDuringMicrotask","index$5","expirationTime","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","temp","FormData","i$jscomp$inline_1439","eventName$jscomp$inline_1440","toUpperCase","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","capture","passive","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","container","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","parentWindow","getParent","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","getNativeBeforeInputChars","char","getFallbackBeforeInputChars","maybeTargetInst","formAction","extractEvents$1","targetFiber","captureName","_instance2","unshift","common","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","formEncType","formMethod","formTarget","encType","__html","muted","isNaN","endsWith","hasSrc","hasSrcSet","propValue$186","parentNamespace","dangerouslySetInnerHTML","localPromise","queueMicrotask","handleErrorInNextTick","parentInstance","suspenseInstance","depth","targetInstance","previousSibling","rootContainerInstance","preconnectsSet","getRootNode","previousDispatcher","d","f","previousWasRendering","wasRendering","r","formInst","D","preconnectAs","C","L","as","globalDocument","preloadSelector","imageSrcSet","imageSizes","getScriptKey","getScriptSelectorFromKey","m","X","scripts","adoptPreloadPropsForScript","link","insertStylesheet","M","limitedEscapedHref","currentProps","preloadProps","styles$242","resource$243","integrity","hrefLang","referrerPolicy","rawProps","styleProps","instance$248","nodes","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","incompleteTransitions","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","transitionCallbacks","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queuedFocus","accumulateOrCreateContinuousQueuedReplayableEvent","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedExplicitHydrationTargets","existingQueuedEvent","targetContainers","attemptExplicitHydrationTarget","queuedTarget","priority","runWithPriority","attemptReplayContinuousQueuedEvent","queuedEvent","nextBlockedOn","nativeEventClone","shift","attemptReplayContinuousQueuedEventInMap","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","$$reactFormReplay","formProps","ReactDOMRoot","internalRoot","_internalRoot","ReactDOMHydrationRoot","unmount","unstable_scheduleHydration","isomorphicReactPackageVersion$jscomp$inline_1686","version","findDOMNode","componentOrElement","parentA","parentB","didFindChild","child$2","findCurrentFiberUsingSlowPath","internals$jscomp$inline_2165","bundleType","rendererPackageName","currentDispatcherRef","findFiberByHostInstance","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","hook$jscomp$inline_2166","isDisabled","supportsFiber","inject","createRoot","unstable_strictMode","unstable_transitionCallbacks","Internals","getCrossOriginStringAs","input","createPortal","createPortal$1","flushSync","previousTransition","previousUpdatePriority","preconnect","prefetchDNS","preinit","fetchPriority","nonce","preinitModule","preloadModule","requestFormReset","unstable_batchedUpdates","permalink","useFormStatus","checkDCE","jsxProd","config","maybeKey","Fragment","jsx","jsxs","ReactNoopUpdateQueue","emptyObject","ComponentDummy","PureComponent","partialState","forceUpdate","pureComponentPrototype","ReactElement","self","isValidElement","object","userProvidedKeyEscapeRegex","getElementKey","escaperLookup","escape","mapIntoArray","escapedPrefix","nameSoFar","oldElement","newKey","invokeCallback","nextNamePrefix","resolveThenable","mapChildren","func","lazyInitializer","_status","_result","moduleObject","default","Children","forEachFunc","forEachContext","n","toArray","only","Profiler","StrictMode","Suspense","act","cloneElement","childArray","createContext","childrenLength","createRef","forwardRef","lazy","memo","scope","unstable_useCacheRefresh","Context","heap","parentIndex","peek","first","halfLength","leftIndex","rightIndex","right","diff","sortIndex","performance","localPerformance","localDate","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","localSetTimeout","localClearTimeout","localSetImmediate","setImmediate","advanceTimers","timer","startTime","handleTimeout","requestHostCallback","firstTimer","requestHostTimeout","schedulePerformWorkUntilDeadline","isMessageLoopRunning","taskTimeoutID","frameInterval","shouldYieldToHost","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","continuationCallback","MessageChannel","channel","port","port2","port1","onmessage","postMessage","ms","unstable_Profiling","task","unstable_continueExecution","unstable_forceFrameRate","fps","floor","unstable_getFirstCallbackNode","unstable_next","eventHandler","unstable_pauseExecution","unstable_runWithPriority","delay","timeout","unstable_wrapCallback","parentPriorityLevel","_typeof","toPropertyKey","t","toPrimitive","TypeError","Number","_defineProperty","writable","ownKeys","getOwnPropertySymbols","filter","_objectSpread2","getOwnPropertyDescriptors","defineProperties","BUILD","__defProp","hostRefs","getHostRef","registerInstance","lazyInstance","hostRef","$lazyInstance$","isMemberInElement","elm","memberName","consoleError","el","cmpModules","SLOT_FB_CSS","XLINK_NS","win","plt","$flags$","$resourcesUrl$","jmp","h2","raf","requestAnimationFrame","ael","opts","ce","CustomEvent","supportsListenerOptions","supportsListenerOptions2","supportsConstructableStylesheets","CSSStyleSheet","replaceSync","queuePending","queueDomReads","queueDomWrites","queueTask","write","nextTick","flush","consume","i2","promiseResolve","v","writeTask","EMPTY_OBJ","isComplexType","queryNonceMetaTagContent","doc2","_a","_b","_c","__export","all","ok","unwrap","unwrapErr","isOk","isErr","val","newVal","scopeId","contentRef","hostTagName","h","vnodeData","slotName","simple","lastSimple","vNodeChildren","walk","$text$","newVNode","_len","_key","classData","className","class","k","vdomFnUtils","vnode","$attrs$","$children$","$key$","$name$","$tag$","$elm$","Host","convertToPublic","convertToPrivate","vattrs","vchildren","vkey","vname","vtag","vtext","_objectSpread","getElement","$hostElement$","createEvent","emitEvent","composed","ev","rootAppliedStyles","attachStyles","cmpMeta","$cmpMeta$","endAttachStyles","$tagName$","scopeId2","addStyle","styleContainerNode","getScopeId","styleElm","appliedStyles","$nonce$","adoptedStyleSheets","shadowRoot","classList","cmp","setAccessor","oldValue","newValue","isSvg","isProp","ln","oldClasses","parseClassList","newClasses","remove","prop","removeProperty","isComplex","xlink","removeAttributeNS","CAPTURE_EVENT_SUFFIX","CAPTURE_EVENT_REGEX","parseClassListRegex","oldVnode","newVnode","isSvgMode2","host","oldVnodeAttrs","newVnodeAttrs","sortedAttrNames","attrNames","attr","useNativeShadowDom","checkSlotFallbackVisibility","checkSlotRelocate","isSvgMode","createElm","oldParentVNode","newParentVNode","childIndex","parentElm","newVNode2","childNode","oldVNode","updateElementScopeIds","putBackInOriginalLocation","recursive","oldSlotChildNodes","from","childNodes","parentReferenceNode","referenceNode","addVnodes","parentVNode","vnodes","startIdx","endIdx","containerElm","removeVnodes","nullifyVNodeRefs","isSameVnode","leftVNode","rightVNode","isInitialRender","undefined","patch","oldChildren","defaultHolder","oldCh","newCh","elmToMove","oldStartIdx","newStartIdx","idxInOld","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateChildren","updateFallbackSlotVisibility","hidden","siblingNode","relocateNodes","markSlotContentForRelocation","hostContentNodes","j","isNodeLocatedInSlot","relocateNodeData","find","$nodeToRelocate$","$slotRefNode$","relocateNode","some","nodeToRelocate","vNode","newNode","reference","inserted","findScopeIds","scopeIds","parentElement","iterateChildNodes","Boolean","renderVdom","renderFnResults","isInitialLoad","_d","hostElm","$vnode$","rootVnode","$attrsToReflect$","_ref","attribute","relocateData","orgLocationNode","slotRefNode","parentNodeRef","insertBeforeNode","refNode","attachToAncestor","ancestorComponent","$onRenderResolve$","scheduleUpdate","$ancestorComponent$","dispatchHooks","endSchedule","maybePromise","$queuedListeners$","_ref2","methodName","safeCall","enqueue","updateComponent","isPromisey","err2","endUpdate","rc","endRender","callRender","childrenPromises","postUpdate","postUpdateComponent","endPostUpdate","addHydratedFlag","$onReadyResolve$","appDidLoad","$onInstanceResolve$","who","arg","oldVal","$instanceValues$","parsePropertyValue","propType","$members$","parseFloat","areBothNaN","$watchers$","watchMethods","watchMethodName","proxyComponent","Cstr","watchers","members","entries","_ref3","memberFlags","_len2","args","_key2","_a2","$onInstancePromise$","_a3","attrNameToPropName","attributeChangedCallback","attrName","flags2","entry","callbackName","observedAttributes","_ref4","_","_ref5","initializeComponent","hmrVersionId","$lazyBundleId$","CstrImport","loadModule","exportName","bundleId","processMod","importedModule","endLoad","$modeName$","isProxied","endNewInstance","fireConnectedCallback","cmpTag","localName","customElements","whenDefined","endRegisterStyles","registerStyle","cssText","allowCS","schedule","setContentReference","contentRefElm","createComment","disconnectInstance","bootstrapLazy","lazyBundles","endBootstrap","cmpTags","exclude","customElements2","metaCharset","dataStyles","deferredConnectedCallbacks","appLoadFallback","isBootstrapping","URL","resourcesUrl","baseURI","hasSlotRelocation","lazyBundle","compactMeta","$listeners$","transformTagName","HostElement","HTMLElement","super","hasRegisteredEventListeners","registerHost","hostElement","$onReadyPromise$","attachShadow","delegatesFocus","connectedCallback","addHostEventListeners","endConnected","_ref6","disconnectedCallback","$rmListeners$","rmListener","componentOnReady","define","sort","attachParentListeners","_ref7","getHostListenerTarget","hostListenerProxy","hostListenerOpts","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","definition","chunkId","reduce","promises","u","miniCssF","obj","inProgress","dataWebpackPrefix","l","script","needAttach","s","charset","nc","onScriptComplete","doneFns","toStringTag","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","camelToDashCase","str","getClassName","newClassProp","oldClassProp","currentClasses","arrayToMap","incomingPropClasses","oldPropClasses","finalClassNames","currentClass","isCoveredByReact","eventNameSuffix","transformReactEventName","isSupported","syncEvent","newEventHandler","eventStore","__events","oldEventHandler","arr","mergeRefs","setRef","__rest","propertyIsEnumerable","createReactComponent","ReactComponentContext","manipulatePropsFunction","defineCustomElement","segment","charAt","ReactComponent","setComponentElRef","componentEl","Element","substring","eventNameLc","attachProps","forwardedRef","cProps","propsToPass","acc","createForwardRef","_jsx","TdsBlock","TdsBodyCell","TdsButton","TdsDatetime","TdsDropdown","TdsDropdownOption","TdsFooter","TdsHeader","TdsHeaderBrandSymbol","TdsHeaderCell","TdsHeaderDropdown","TdsHeaderDropdownList","TdsHeaderLauncherListItem","TdsHeaderTitle","TdsIcon","TdsTable","TdsTableBody","TdsTableBodyRow","TdsTableHeader","TdsTextField","TdsToggle","TdsTooltip","defineCustomElements","globalScripts","JSON","parse","setPrototypeOf","setLanguage","language","uiLanguage","german","infoHeader","infoBody1","infoBody2","infoBody3","french","_jsxs","slot","priceInfo","disclaimer","agb","setSavings","setChartData","annualMileageLabel","annualMileageSuffix","yearsInUseLabel","yearsInUseSuffix","lsvaClassLabel","lsvaWeightLabel","lsvaWeightSuffix","tableParamHeader","tableBevHeader","tableDieselHeader","netInvestment","repairAndMaintanenceCost","chargingInfrastructureCost","energyCost","energyConsumption","totalCost","payAsYouDrive","notApplicable","respective","calculationButton","missingData","lsvaToggle","startDate","lsvaDescription","basicData","setBasicData","annualMileage","yearsInUse","lsvaClass","lsvaWeight","withLsva","updateBasicData","bevVehicle","setBevVehicle","chargingInfrastructure","totalInvestment","kmCost","payAsYouDriveRate","updateBevVehicle","iceVehicle","setIceVehicle","updateIceVehicle","paydRate","buttonDisabled","setButtonDisabled","every","updatedChartParams","netInvestmentBev","netInvestmentDiesel","totalInvestmentBev","totalInvestmentDiesel","onTdsChange","format","updateFunction","modeVariant","helper","label","responsive","cellKey","cellValue","disablePadding","textAlign","onTdsToggle","alignItems","padding","placement","selector","trigger","_Fragment","max","placeholder","repairAndMaintanance","repairAndMaintanence","toLocaleString","variant","fullbleed","handleCalculations","calculateSavings","totalMileage","lsvaYearBev","lsvaMileageBev","lsvaCostBev","endDate","setFullYear","getFullYear","lsvaYearsDiffBev","abs","lsvaYearsBev","lsvaCostDiesel","operationCostBev","operationCostDiesel","totalCostBev","totalCostDiesel","toFixed","monthsInUse","annuity","pow","paydCostPerKm","bestSavings","savings","printPage","reloadPage","print","reload","round","lim","p2b","n2b","b2n","n2p","map$1","B","E","F","hex","h1","eq","hexString","g","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","exec","p1","p2","hwb2rgb","hsv2rgb","Z","Y","W","V","U","R","Q","P","O","N","K","G","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names","nameParse","unpacked","tkeys","nk","parseInt","unpack","transparent","RGB_RE","to","modHSL","ratio","tmp","proto","fromObject","functionParse","rgbParse","Color","ret","len","hexParse","_rgb","_valid","valid","rgbString","hslString","mix","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","uid","isNullOrUndef","isObject","isNumberFinite","isFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","thisArg","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","parts","part","_splitKey","_getKeyResolver","_capitalize","defined","isFunction","setsEqual","item","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","niceNum","roundedRange","niceRange","fraction","isNumber","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","mid","hi","lo","_lookupByKey","ti","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","items","requestAnimFrame","throttled","argsToUse","ticking","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","numbers","colors","intlCache","formatNumber","num","cacheKey","stringify","formatter","Intl","NumberFormat","getNumberFormat","formatters","values","numeric","tickValue","ticks","chart","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","Ticks","overrides","descriptors","getScope$1","Defaults","_descriptors","_appliers","backgroundColor","borderColor","datasets","devicePixelRatio","platform","getDevicePixelRatio","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","plugins","scale","scales","showLine","drawActiveElementsOnTop","describe","override","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","local","appliers","defaults","_scriptable","startsWith","_indexable","_fallback","duration","easing","loop","properties","active","resize","show","animations","visible","hide","autoPadding","bottom","beginAtZero","bounds","clip","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","decorateText","line","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","strokeStyle","fillStyle","decorationWidth","drawBackdrop","oldColor","fillRect","renderText","lines","strokeWidth","strokeColor","translation","textBaseline","setRenderOpts","backdrop","strokeText","maxWidth","fillText","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","warn","toFontString","inputs","cacheable","parentContext","_createResolver","scopes","getTarget","finalRootScopes","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","proxy","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getPrototypeOf","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","receiver","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","rootScopes","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","positions","getPositionedStyle","pos","getRelativePosition","borderBox","boxSizing","paddings","borders","box","offsetX","offsetY","useOffsetPos","getBoundingClientRect","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","startBound","endBound","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","replacer","Animator","_request","_charts","_running","_lastDate","_notify","anims","numSteps","currentStep","_refresh","_update","remaining","running","draw","_active","_total","tick","_getAnims","charts","complete","progress","listen","cur","_duration","stop","cancel","animator","interpolators","boolean","factor","c0","Animation","cfg","_fn","_easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","wait","res","rej","resolved","Animations","_properties","configure","animationOptions","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","found","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","_visualValues","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","_stacked","addElements","isPluginEnabled","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","iAxisKey","vAxisKey","adata","convertObjectDataToArray","isExtensible","base","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","getAllScaleValues","curr","_length","updateMinAndPrev","getPixelForTick","parseValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","bars","getBasePixel","isHorizontal","ruler","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","grouped","currentParsed","iScaleValue","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","_value_","BubbleController","DoughnutController","innerRadius","outerRadius","getter","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","toPercentage","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","fontColor","legendItem","toggleDataVisibility","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","registry","abstract","DateAdapterBase","formats","startOf","endOf","adapters","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","params","wrap","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","addBox","_layers","z","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","addListener","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","isConnected","tooltipPosition","hasValue","final","tickOpts","determinedMaxTicks","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","newTicks","ceil","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","offsetFromEdge","getTicksLimit","ticksLength","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","drawBorder","lastLineWidth","drawLabels","renderTextOptions","drawTitle","titleX","titleY","titleArgs","tz","gz","bz","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","itemDefaults","defaultRoutes","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","unregister","Registry","controllers","_typedRegistries","_each","addControllers","_len3","_key3","_len4","_key4","addPlugins","_len5","_key5","addScales","_len6","_key6","getController","_get","getPlugin","getScale","removeControllers","_len7","_key7","removeElements","_len8","_key8","removePlugins","_len9","_key9","removeScales","_len10","_key10","typedRegistry","reg","_getRegistryForType","_exec","itemReg","camelMethod","PluginService","notify","_createDescriptors","plugin","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","idMatchesAxis","determineAxis","_len11","scaleOptions","_key11","getAxisFromDataset","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","boundDs","retrieveAxisFromDatasets","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initOptions","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","getSizeForArea","field","Chart","invalidatePlugins","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","inner","lineJoin","angleMargin","clipArc","ArcElement","chartX","chartY","rAdjust","nonZeroBetween","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","amount","refRect","BarElement","addRectPath","BORDER_COLORS","BACKGROUND_COLORS","getBorderColor","getBackgroundColor","getColorizer","colorizeDoughnutDataset","colorizePolarAreaDataset","colorizeDefaultDataset","containsColorsDefinitions","plugin_colors","forceOverride","_args","chartOptions","containsColorDefenition","colorizer","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","getStartAndCountOfVisiblePointsSimplified","threshold","decimated","samples","bucketWidth","sampledIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","firstValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","itemsEqual","plugin_legend","_element","afterEvent","ci","useBorderRadius","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","plugin_subtitle","positioners","average","xSet","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","formattedValue","getTooltipSize","tooltip","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","findOrAddLabel","addedLabels","addIfString","lastIndexOf","_getLabelForValue","CategoryScale","_startValue","_valueRange","_addedLabels","added","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","stepSize","computeTickLimit","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","generateTicks","_ref8","minExp","exp","startExp","lastTick","LogarithmicScale","_zero","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","itemOpts","extra","createPointLabelItem","isNotOverlapped","buildPointLabelItems","hLimits","vLimits","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","second","minute","hour","day","quarter","year","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","fmt","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","chartData","dataRequested","xAxe","yAxe","chartRef","dataCount","dataBev","dataDiesel","myChart","App","languageMap","browserLanguage","navigator","Header","UserInputs","LineChart","Disclaimer","Footer","rootElement"],"sourceRoot":""}