@expressivecss/expressive 0.1.0-alpha.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/LICENSE +82 -2
  2. package/README.md +153 -43
  3. package/dist/css/expressive.css +7066 -9658
  4. package/dist/css/expressive.css.map +1 -0
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -0
  7. package/dist/js/expressive.cjs +7451 -0
  8. package/dist/js/expressive.cjs.map +7 -0
  9. package/dist/js/expressive.js +7313 -8099
  10. package/dist/js/expressive.js.map +7 -1
  11. package/dist/js/expressive.min.js +75 -1
  12. package/dist/js/expressive.min.js.map +7 -1
  13. package/dist/js/expressive.mjs +7222 -7998
  14. package/dist/js/expressive.mjs.map +7 -1
  15. package/dist/{js → types}/components/autocomplete.d.ts +10 -1
  16. package/dist/{js → types}/components/buttons.d.ts +11 -1
  17. package/dist/{js → types}/components/cards.d.ts +10 -1
  18. package/dist/{js → types}/components/carousel.d.ts +4 -5
  19. package/dist/{js/forms/character-counter.d.ts → types/components/characterCounter.d.ts} +1 -1
  20. package/dist/{js → types}/components/chips.d.ts +1 -1
  21. package/dist/{js → types}/components/collapsible.d.ts +1 -1
  22. package/dist/{js → types}/components/datepicker.d.ts +63 -2
  23. package/dist/{js → types}/components/dropdown.d.ts +3 -3
  24. package/dist/types/components/index.d.ts +23 -0
  25. package/dist/{js/components/materialbox.d.ts → types/components/lightbox.d.ts} +21 -21
  26. package/dist/{js → types}/components/modal.d.ts +1 -1
  27. package/dist/{js → types}/components/parallax.d.ts +11 -5
  28. package/dist/{js → types}/components/pushpin.d.ts +1 -1
  29. package/dist/{js/forms → types/components}/range.d.ts +3 -3
  30. package/dist/types/components/registry.d.ts +107 -0
  31. package/dist/{js → types}/components/scrollspy.d.ts +6 -9
  32. package/dist/{js/forms → types/components}/select.d.ts +11 -2
  33. package/dist/{js → types}/components/sidenav.d.ts +1 -1
  34. package/dist/{js → types}/components/slider.d.ts +3 -2
  35. package/dist/{js → types}/components/tabs.d.ts +3 -2
  36. package/dist/{js/components/tap-target.d.ts → types/components/tapTarget.d.ts} +2 -2
  37. package/dist/{js → types}/components/timepicker.d.ts +13 -5
  38. package/dist/{js/components/toast.d.ts → types/components/toasts.d.ts} +28 -4
  39. package/dist/{js → types}/components/tooltip.d.ts +2 -2
  40. package/dist/types/core/bounding.d.ts +6 -0
  41. package/dist/{js/foundation → types/core}/component.d.ts +1 -1
  42. package/dist/types/core/edges.d.ts +6 -0
  43. package/dist/{js/foundation → types/core}/utils.d.ts +21 -14
  44. package/dist/types/index.d.ts +6 -0
  45. package/dist/{js/plugins/docked-display.d.ts → types/plugins/dockedDisplayPlugin.d.ts} +7 -0
  46. package/package.json +60 -36
  47. package/src/sass/README.md +200 -0
  48. package/src/sass/abstracts/_breakpoints.scss +69 -0
  49. package/src/sass/abstracts/_elevation.scss +34 -0
  50. package/src/sass/abstracts/_index.scss +7 -0
  51. package/src/sass/abstracts/_mixins.scss +171 -0
  52. package/src/sass/abstracts/_variables.scss +57 -0
  53. package/src/{scss/layout/_table.scss → sass/base/_global.scss} +64 -2
  54. package/src/{scss/layout → sass/base}/_grid.scss +6 -6
  55. package/src/sass/base/_index.scss +6 -0
  56. package/src/{scss/foundation → sass/base}/_normalize.scss +51 -139
  57. package/src/sass/base/_typography.scss +90 -0
  58. package/src/sass/components/_badges.scss +77 -0
  59. package/src/{scss → sass}/components/_breadcrumb.scss +2 -0
  60. package/src/sass/components/_buttons.scss +407 -0
  61. package/src/sass/components/_cards.scss +328 -0
  62. package/src/{scss → sass}/components/_carousel.scss +5 -3
  63. package/src/sass/components/_chips.scss +140 -0
  64. package/src/sass/components/_collapsible.scss +81 -0
  65. package/src/{scss → sass}/components/_collection.scss +2 -2
  66. package/src/{scss/components/_date-picker.scss → sass/components/_datepicker.scss} +51 -44
  67. package/src/sass/components/_docked-display.scss +11 -0
  68. package/src/sass/components/_dropdown.scss +129 -0
  69. package/src/{scss/components/_material-icons.scss → sass/components/_icons-material-design.scss} +2 -0
  70. package/src/sass/components/_index.scss +35 -0
  71. package/src/{scss/components/_material-box.scss → sass/components/_lightbox.scss} +6 -4
  72. package/src/sass/components/_modal.scss +144 -0
  73. package/src/sass/components/_navbar.scss +345 -0
  74. package/src/{scss/layout/_footer.scss → sass/components/_page-footer.scss} +7 -6
  75. package/src/{scss → sass}/components/_pagination.scss +4 -3
  76. package/src/{scss → sass}/components/_parallax.scss +4 -1
  77. package/src/{scss → sass}/components/_preloader.scss +19 -97
  78. package/src/{scss → sass}/components/_pulse.scss +2 -0
  79. package/src/sass/components/_pushpin.scss +11 -0
  80. package/src/{scss → sass}/components/_sidenav.scss +99 -82
  81. package/src/{scss → sass}/components/_slider.scss +3 -1
  82. package/src/{scss/components/_table-of-contents.scss → sass/components/_table_of_contents.scss} +2 -0
  83. package/src/sass/components/_tabs.scss +232 -0
  84. package/src/{scss/components/_tap-target.scss → sass/components/_tapTarget.scss} +24 -22
  85. package/src/{scss/components/_time-picker.scss → sass/components/_timepicker.scss} +56 -56
  86. package/src/sass/components/_toast.scss +260 -0
  87. package/src/sass/components/_toolbar.scss +192 -0
  88. package/src/sass/components/_tooltip.scss +166 -0
  89. package/src/{scss → sass}/components/_transitions.scss +4 -4
  90. package/src/sass/components/forms/_checkboxes.scss +288 -0
  91. package/src/sass/components/forms/_fieldset.scss +128 -0
  92. package/src/{scss → sass/components}/forms/_file-input.scss +11 -9
  93. package/src/{scss → sass/components}/forms/_index.scss +2 -0
  94. package/src/sass/components/forms/_input-fields.scss +326 -0
  95. package/src/sass/components/forms/_radio-buttons.scss +190 -0
  96. package/src/sass/components/forms/_range.scss +310 -0
  97. package/src/sass/components/forms/_select.scss +103 -0
  98. package/src/sass/components/forms/_switches.scss +239 -0
  99. package/src/sass/expressive.scss +60 -0
  100. package/src/sass/tokens/_index.scss +4 -0
  101. package/src/sass/tokens/_reference.scss +265 -0
  102. package/src/sass/tokens/_theme.scss +49 -0
  103. package/src/{scss → sass}/utilities/_helpers.scss +33 -30
  104. package/src/sass/utilities/_index.scss +8 -0
  105. package/src/{scss → sass}/utilities/_spacing.scss +4 -3
  106. package/src/sass/utilities/_typescale.scss +45 -0
  107. package/src/sass/utilities/_visibility.scss +63 -0
  108. package/src/sass/utilities/_z-depth.scss +18 -0
  109. package/dist/js/components/index.d.ts +0 -21
  110. package/dist/js/forms/index.d.ts +0 -4
  111. package/dist/js/foundation/index.d.ts +0 -2
  112. package/dist/js/index.d.ts +0 -52
  113. package/dist/js/plugins/index.d.ts +0 -1
  114. package/src/scss/components/_appbar.scss +0 -454
  115. package/src/scss/components/_badges.scss +0 -77
  116. package/src/scss/components/_buttons.scss +0 -412
  117. package/src/scss/components/_cards.scss +0 -267
  118. package/src/scss/components/_chips.scss +0 -147
  119. package/src/scss/components/_collapsible.scss +0 -84
  120. package/src/scss/components/_dropdown.scss +0 -98
  121. package/src/scss/components/_index.scss +0 -28
  122. package/src/scss/components/_modal.scss +0 -84
  123. package/src/scss/components/_tabs.scss +0 -176
  124. package/src/scss/components/_toast.scss +0 -70
  125. package/src/scss/components/_tooltip.scss +0 -49
  126. package/src/scss/components/_video.scss +0 -15
  127. package/src/scss/expressive.scss +0 -7
  128. package/src/scss/forms/_checkboxes.scss +0 -199
  129. package/src/scss/forms/_input-fields.scss +0 -360
  130. package/src/scss/forms/_radio-buttons.scss +0 -114
  131. package/src/scss/forms/_range.scss +0 -148
  132. package/src/scss/forms/_select.scss +0 -108
  133. package/src/scss/forms/_switches.scss +0 -127
  134. package/src/scss/foundation/_base.scss +0 -71
  135. package/src/scss/foundation/_color-palette.scss +0 -402
  136. package/src/scss/foundation/_index.scss +0 -10
  137. package/src/scss/foundation/_mixins.scss +0 -198
  138. package/src/scss/foundation/_motion.scss +0 -70
  139. package/src/scss/foundation/_shape.scss +0 -30
  140. package/src/scss/foundation/_state-layers.scss +0 -68
  141. package/src/scss/foundation/_theme.scss +0 -238
  142. package/src/scss/foundation/_tokens.scss +0 -511
  143. package/src/scss/foundation/_variables.scss +0 -57
  144. package/src/scss/layout/_index.scss +0 -3
  145. package/src/scss/utilities/_a11y.scss +0 -77
  146. package/src/scss/utilities/_elevation.scss +0 -63
  147. package/src/scss/utilities/_index.scss +0 -7
  148. package/src/scss/utilities/_responsive.scss +0 -62
  149. package/src/scss/utilities/_typography.scss +0 -115
  150. /package/dist/{js/forms → types/behaviors}/forms.d.ts +0 -0
  151. /package/dist/{js/components → types/behaviors}/waves.d.ts +0 -0
  152. /package/src/{scss → sass}/utilities/_colors.scss +0 -0
@@ -1 +1,7 @@
1
- {"version":3,"file":"expressive.mjs","sources":["../../src/ts/foundation/utils.ts","../../src/ts/foundation/component.ts","../../src/ts/components/dropdown.ts","../../src/ts/components/autocomplete.ts","../../src/ts/components/buttons.ts","../../src/ts/components/cards.ts","../../src/ts/components/carousel.ts","../../src/ts/components/chips.ts","../../src/ts/components/collapsible.ts","../../src/ts/forms/select.ts","../../src/ts/plugins/docked-display.ts","../../src/ts/components/datepicker.ts","../../src/ts/components/materialbox.ts","../../src/ts/components/modal.ts","../../src/ts/components/parallax.ts","../../src/ts/components/pushpin.ts","../../src/ts/components/scrollspy.ts","../../src/ts/components/sidenav.ts","../../src/ts/components/slider.ts","../../src/ts/components/tabs.ts","../../src/ts/components/tap-target.ts","../../src/ts/components/timepicker.ts","../../src/ts/components/toast.ts","../../src/ts/components/tooltip.ts","../../src/ts/components/waves.ts","../../src/ts/forms/character-counter.ts","../../src/ts/forms/forms.ts","../../src/ts/forms/range.ts","../../src/ts/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["_defaults"],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ts/core/utils.ts", "../../src/ts/core/component.ts", "../../src/ts/components/cards.ts", "../../src/ts/components/dropdown.ts", "../../src/ts/components/autocomplete.ts", "../../src/ts/components/chips.ts", "../../src/ts/components/range.ts", "../../src/ts/behaviors/forms.ts", "../../src/ts/behaviors/waves.ts", "../../src/ts/components/buttons.ts", "../../src/ts/components/carousel.ts", "../../src/ts/components/characterCounter.ts", "../../src/ts/components/collapsible.ts", "../../src/ts/components/select.ts", "../../src/ts/plugins/dockedDisplayPlugin.ts", "../../src/ts/components/datepicker.ts", "../../src/ts/components/lightbox.ts", "../../src/ts/components/modal.ts", "../../src/ts/components/parallax.ts", "../../src/ts/components/pushpin.ts", "../../src/ts/components/scrollspy.ts", "../../src/ts/components/sidenav.ts", "../../src/ts/components/slider.ts", "../../src/ts/components/tabs.ts", "../../src/ts/components/tapTarget.ts", "../../src/ts/components/timepicker.ts", "../../src/ts/components/toasts.ts", "../../src/ts/components/tooltip.ts", "../../src/ts/components/registry.ts", "../../src/ts/index.ts"],
4
+ "sourcesContent": ["import { Edges } from './edges';\nimport { Bounding } from './bounding';\n\n/**\n * Class with utilitary functions for global usage.\n */\nexport class Utils {\n /** Specifies wether tab is pressed or not. */\n static tabPressed: boolean = false;\n /** Specifies wether there is a key pressed. */\n static keyDown: boolean = false;\n\n /**\n * Key maps.\n */\n static keys = {\n TAB: ['Tab'],\n ENTER: ['Enter'],\n ESC: ['Escape', 'Esc'],\n BACKSPACE: ['Backspace'],\n ARROW_UP: ['ArrowUp', 'Up'],\n ARROW_DOWN: ['ArrowDown', 'Down'],\n ARROW_LEFT: ['ArrowLeft', 'Left'],\n ARROW_RIGHT: ['ArrowRight', 'Right'],\n DELETE: ['Delete', 'Del']\n };\n\n /**\n * Keys that count as keyboard navigation, precomputed.\n *\n * These handlers run at capture phase on the document for every keystroke on\n * the page, and used to rebuild three arrays and spread them into a fourth\n * on each one.\n */\n private static _navigationKeys = new Set([\n ...Utils.keys.TAB,\n ...Utils.keys.ARROW_DOWN,\n ...Utils.keys.ARROW_UP\n ]);\n\n /**\n * Detects when a key is pressed.\n * @param e Event instance.\n */\n static docHandleKeydown(e: KeyboardEvent) {\n Utils.keyDown = true;\n if (Utils._navigationKeys.has(e.key)) {\n Utils.tabPressed = true;\n }\n }\n\n /**\n * Detects when a key is released.\n * @param e Event instance.\n */\n static docHandleKeyup(e: KeyboardEvent) {\n Utils.keyDown = false;\n if (Utils._navigationKeys.has(e.key)) {\n Utils.tabPressed = false;\n }\n }\n\n /**\n * Detects when document is focused.\n * @param e Event instance.\n */\n /* eslint-disabled as of required event type condition check */\n /* eslint-disable-next-line */\n static docHandleFocus(e: FocusEvent) {\n if (Utils.keyDown) {\n document.body.classList.add('keyboard-focused');\n }\n }\n\n /**\n * Detects when document is not focused.\n * @param e Event instance.\n */\n /* eslint-disabled as of required event type condition check */\n /* eslint-disable-next-line */\n static docHandleBlur(e: FocusEvent) {\n document.body.classList.remove('keyboard-focused');\n }\n\n /**\n * Run `callback` once the document is parsed.\n *\n * The document-level behaviors all used a bare DOMContentLoaded listener,\n * which never fires if the bundle is loaded after that event - an async or\n * deferred script tag, or a dynamic import. Checking readyState first covers\n * both orders.\n */\n static onDocumentReady(callback: () => void): void {\n if (typeof document === 'undefined') return;\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback, { once: true });\n } else {\n callback();\n }\n }\n\n /**\n * Generates a unique string identifier.\n */\n static guid(): string {\n const s4 = (): string => {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n };\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n }\n\n /**\n * Checks for exceeded edges\n * @param container Container element.\n * @param bounding Bounding rect.\n * @param offset Element offset.\n */\n static checkWithinContainer(container: HTMLElement, bounding: Bounding, offset: number): Edges {\n const edges = {\n top: false,\n right: false,\n bottom: false,\n left: false\n };\n\n const containerRect = container.getBoundingClientRect();\n // If body element is smaller than viewport, use viewport height instead.\n const containerBottom =\n container === document.body\n ? Math.max(containerRect.bottom, window.innerHeight)\n : containerRect.bottom;\n\n const scrollLeft = container.scrollLeft;\n const scrollTop = container.scrollTop;\n\n const scrolledX = bounding.left - scrollLeft;\n const scrolledY = bounding.top - scrollTop;\n\n // Check for container and viewport for each edge\n if (scrolledX < containerRect.left + offset || scrolledX < offset) {\n edges.left = true;\n }\n\n if (\n scrolledX + bounding.width > containerRect.right - offset ||\n scrolledX + bounding.width > window.innerWidth - offset\n ) {\n edges.right = true;\n }\n\n if (scrolledY < containerRect.top + offset || scrolledY < offset) {\n edges.top = true;\n }\n\n if (\n scrolledY + bounding.height > containerBottom - offset ||\n scrolledY + bounding.height > window.innerHeight - offset\n ) {\n edges.bottom = true;\n }\n\n return edges;\n }\n\n /**\n * Checks if element can be aligned in multiple directions.\n * @param el Element to be inspected.\n * @param container Container element.\n * @param bounding Bounding rect.\n * @param offset Element offset.\n */\n static checkPossibleAlignments(\n el: HTMLElement,\n container: HTMLElement,\n bounding: Bounding,\n offset: number\n ) {\n const canAlign: {\n top: boolean;\n right: boolean;\n bottom: boolean;\n left: boolean;\n spaceOnTop: number;\n spaceOnRight: number;\n spaceOnBottom: number;\n spaceOnLeft: number;\n } = {\n top: true,\n right: true,\n bottom: true,\n left: true,\n spaceOnTop: null,\n spaceOnRight: null,\n spaceOnBottom: null,\n spaceOnLeft: null\n };\n\n const containerAllowsOverflow = getComputedStyle(container).overflow === 'visible';\n const containerRect = container.getBoundingClientRect();\n const containerHeight = Math.min(containerRect.height, window.innerHeight);\n const containerWidth = Math.min(containerRect.width, window.innerWidth);\n const elOffsetRect = el.getBoundingClientRect();\n\n const scrollLeft = container.scrollLeft;\n const scrollTop = container.scrollTop;\n\n const scrolledX = bounding.left - scrollLeft;\n const scrolledYTopEdge = bounding.top - scrollTop;\n const scrolledYBottomEdge = bounding.top + elOffsetRect.height - scrollTop;\n\n // Check for container and viewport for left\n canAlign.spaceOnRight = !containerAllowsOverflow\n ? containerWidth - (scrolledX + bounding.width)\n : window.innerWidth - (elOffsetRect.left + bounding.width);\n if (canAlign.spaceOnRight < 0) {\n canAlign.left = false;\n }\n\n // Check for container and viewport for Right\n canAlign.spaceOnLeft = !containerAllowsOverflow\n ? scrolledX - bounding.width + elOffsetRect.width\n : elOffsetRect.right - bounding.width;\n if (canAlign.spaceOnLeft < 0) {\n canAlign.right = false;\n }\n\n // Check for container and viewport for Top\n canAlign.spaceOnBottom = !containerAllowsOverflow\n ? containerHeight - (scrolledYTopEdge + bounding.height + offset)\n : window.innerHeight - (elOffsetRect.top + bounding.height + offset);\n if (canAlign.spaceOnBottom < 0) {\n canAlign.top = false;\n }\n\n // Check for container and viewport for Bottom\n canAlign.spaceOnTop = !containerAllowsOverflow\n ? scrolledYBottomEdge - (bounding.height - offset)\n : elOffsetRect.bottom - (bounding.height + offset);\n if (canAlign.spaceOnTop < 0) {\n canAlign.bottom = false;\n }\n\n return canAlign;\n }\n\n /**\n * Retrieves target element id from trigger.\n * @param trigger Trigger element.\n */\n static getIdFromTrigger(trigger: HTMLElement): string {\n let id = trigger.dataset.target;\n if (!id) {\n id = trigger.getAttribute('href');\n return id ? id.slice(1) : '';\n }\n return id;\n }\n\n /**\n * Retrieves document scroll postion from top.\n */\n static getDocumentScrollTop(): number {\n return window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0;\n }\n\n /**\n * Retrieves document scroll postion from left.\n */\n static getDocumentScrollLeft(): number {\n return window.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n }\n\n /**\n * Fires the given function after a certain ammount of time.\n * @param func Function to be fired.\n * @param wait Wait time.\n * @param options Additional options.\n */\n static throttle(\n func: (...args: unknown[]) => void,\n wait: number,\n options: Partial<{ leading: boolean; trailing: boolean }> = {}\n ) {\n // `options` is nullable because callers pass an explicit null.\n let lastArgs: unknown[] = null,\n result,\n timeout = null,\n previous = 0;\n\n const later = () => {\n previous = options?.leading === false ? 0 : Date.now();\n timeout = null;\n // The trailing call replays the most recent arguments; without this it\n // used to fire with none at all.\n result = func(...(lastArgs ?? []));\n lastArgs = null;\n };\n\n return (...args: unknown[]) => {\n const now = Date.now();\n if (!previous && options?.leading === false) previous = now;\n const remaining = wait - (now - previous);\n lastArgs = args;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n lastArgs = null;\n result = func(...args);\n } else if (!timeout && options?.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n }\n\n /**\n * Renders confirm/close buttons with callback function\n */\n static createConfirmationContainer(\n container: HTMLElement,\n confirmText: string,\n cancelText: string,\n onConfirm: (Function: object) => void,\n onCancel: (Function: object) => void\n ): void {\n const confirmationButtonsContainer = document.createElement('div');\n confirmationButtonsContainer.classList.add('confirmation-btns');\n container.append(confirmationButtonsContainer);\n\n this.createButton(confirmationButtonsContainer, cancelText, ['btn-cancel'], true, onCancel);\n this.createButton(confirmationButtonsContainer, confirmText, ['btn-confirm'], true, onConfirm);\n }\n\n /**\n * Renders a button with optional callback function\n */\n static createButton(\n container: HTMLElement,\n text: string,\n className: string[] = [],\n visibility: boolean = true,\n callback: (Function: object) => void = null\n ): void {\n className = className.concat(['btn', 'waves-effect', 'text']);\n const button = document.createElement('button');\n button.className = className.join(' ');\n button.style.visibility = visibility ? 'visible' : 'hidden';\n button.type = 'button';\n button.tabIndex = !!visibility ? 0 : -1;\n button.innerText = text;\n // The keypress handler used to call `callback` unconditionally, so a\n // button created without one threw on Enter.\n if (typeof callback === 'function') {\n button.addEventListener('click', callback);\n button.addEventListener('keypress', (e) => {\n if (Utils.keys.ENTER.includes(e.key)) callback(e);\n });\n }\n container.append(button);\n }\n\n static _setAbsolutePosition(\n origin: HTMLElement,\n container: HTMLElement,\n position: string,\n margin: number,\n transitionMovement: number,\n align: string = 'center'\n ) {\n const originHeight = origin.offsetHeight,\n originWidth = origin.offsetWidth,\n containerHeight = container.offsetHeight,\n containerWidth = container.offsetWidth,\n originRect = origin.getBoundingClientRect(); // one rect, read twice below\n let xMovement = 0,\n yMovement = 0,\n targetTop = originRect.top + Utils.getDocumentScrollTop(),\n targetLeft = originRect.left + Utils.getDocumentScrollLeft();\n\n if (position === 'top') {\n targetTop += -containerHeight - margin;\n if (align === 'center') {\n targetLeft += originWidth / 2 - containerWidth / 2; // This is center align\n }\n yMovement = -transitionMovement;\n } else if (position === 'right') {\n targetTop += originHeight / 2 - containerHeight / 2;\n targetLeft = originWidth + margin;\n xMovement = transitionMovement;\n } else if (position === 'left') {\n targetTop += originHeight / 2 - containerHeight / 2;\n targetLeft = -containerWidth - margin;\n xMovement = -transitionMovement;\n } else {\n targetTop += originHeight + margin;\n if (align === 'center') {\n targetLeft += originWidth / 2 - containerWidth / 2; // This is center align\n }\n yMovement = transitionMovement;\n }\n if (align === 'right') {\n targetLeft += originWidth - containerWidth - margin;\n }\n\n const newCoordinates = Utils._repositionWithinScreen(\n targetLeft,\n targetTop,\n containerWidth,\n containerHeight,\n margin,\n transitionMovement,\n align\n );\n\n container.style.top = newCoordinates.y + 'px';\n container.style.left = newCoordinates.x + 'px';\n\n return {x: xMovement, y: yMovement};\n }\n\n static _repositionWithinScreen(\n x: number,\n y: number,\n width: number,\n height: number,\n margin: number,\n transitionMovement: number,\n align: string\n ) {\n const scrollLeft = Utils.getDocumentScrollLeft();\n const scrollTop = Utils.getDocumentScrollTop();\n let newX = x - scrollLeft;\n let newY = y - scrollTop;\n\n const bounding: Bounding = {\n left: newX,\n top: newY,\n width: width,\n height: height\n };\n let offset: number;\n if (align === 'left' || align == 'center') {\n offset = margin + transitionMovement;\n } else if (align === 'right') {\n offset = margin - transitionMovement;\n }\n const edges = Utils.checkWithinContainer(document.body, bounding, offset);\n\n if (edges.left) {\n newX = offset;\n } else if (edges.right) {\n newX -= newX + width - window.innerWidth;\n }\n if (edges.top) {\n newY = offset;\n } else if (edges.bottom) {\n newY -= newY + height - window.innerHeight;\n }\n return {\n x: newX + scrollLeft,\n y: newY + scrollTop\n };\n }\n}\n", "/**\n * Base options for component initialization.\n */\nexport interface BaseOptions {}\n\nexport type MElement = HTMLElement | Element;\nexport type InitElements<T extends MElement> = NodeListOf<T> | HTMLCollectionOf<T>;\ntype ComponentConstructor<T extends Component<O>, O extends BaseOptions> = {\n new (el: HTMLElement, options: Partial<O>): T;\n};\ntype ComponentType<C extends Component<O>, O extends BaseOptions> = ComponentConstructor<C, O> &\n typeof Component<O>;\n\nexport interface I18nOptions {\n cancel: string;\n clear: string;\n done: string;\n}\n\nexport interface Openable {\n isOpen: boolean;\n open(): void;\n close(): void;\n}\n\n/**\n * Base class implementation for Expressive components.\n */\nexport class Component<O extends BaseOptions> {\n /**\n * The DOM element the plugin was initialized with.\n */\n el: HTMLElement;\n /**\n * The options the instance was initialized with.\n */\n options: O;\n\n /**\n * Constructs component instance and set everything up.\n */\n constructor(el: HTMLElement, options: Partial<O>, classDef: ComponentType<Component<O>, O>) {\n // Display error if el is not a valid HTML Element\n if (!(el instanceof HTMLElement)) {\n console.error(Error(el + ' is not an HTML Element'));\n }\n // If exists, destroy and reinitialize in child\n const ins = classDef.getInstance(el);\n if (!!ins) {\n ins.destroy();\n }\n this.el = el;\n }\n\n /**\n * Initializes component instance.\n * @param el HTML element.\n * @param options Component options.\n * @param classDef Class definition.\n */\n protected static init<I extends HTMLElement, O extends BaseOptions, C extends Component<O>>(\n el: I,\n options: O,\n classDef: ComponentType<C, O>\n ): C;\n /**\n * Initializes component instances.\n * @param els HTML elements.\n * @param options Component options.\n * @param classDef Class definition.\n */\n protected static init<I extends MElement, O extends BaseOptions, C extends Component<O>>(\n els: InitElements<I>,\n options: Partial<O>,\n classDef: ComponentType<C, O>\n ): C[];\n /**\n * Initializes component instances.\n * @param els HTML elements.\n * @param options Component options.\n * @param classDef Class definition.\n */\n protected static init<I extends MElement, O extends BaseOptions, C extends Component<O>>(\n els: I | InitElements<I>,\n options: Partial<O>,\n classDef: ComponentType<C, O>\n ): C | C[];\n /**\n * Initializes component instances.\n * @param els HTML elements.\n * @param options Component options.\n * @param classDef Class definition.\n */\n protected static init<I extends MElement, O extends BaseOptions, C extends Component<O>>(\n els: I | InitElements<I>,\n options: Partial<O>,\n classDef: ComponentType<C, O>\n ): C | C[] {\n let instances = null;\n if (els instanceof Element) {\n instances = new classDef(<HTMLElement>els, options);\n } else if (!!els && els.length) {\n instances = [];\n for (let i = 0; i < els.length; i++) {\n instances.push(new classDef(<HTMLElement>els[i], options));\n }\n }\n return instances;\n }\n\n /**\n * @returns default options for component instance.\n */\n static get defaults(): BaseOptions {\n return {};\n }\n\n /**\n * Retrieves component instance for the given element.\n * @param el Associated HTML Element.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static getInstance(el: HTMLElement): Component<BaseOptions> {\n throw new Error('This method must be implemented.');\n }\n\n /**\n * Destroy plugin instance and teardown.\n */\n destroy(): void {\n throw new Error('This method must be implemented.');\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement, Openable } from '../core/component';\n\nexport interface CardsOptions extends BaseOptions {\n onOpen: (el: Element) => void;\n onClose: (el: Element) => void;\n inDuration: number;\n outDuration: number;\n}\n\nconst _defaults: CardsOptions = {\n onOpen: null,\n onClose: null,\n inDuration: 225,\n outDuration: 300\n};\n\n/**\n * What counts as a card.\n *\n * Shared with `components/registry.ts` rather than written out twice: the\n * registry used to claim `.cards`, which matches nothing this component\n * actually initializes, so the AutoInit entry was dead while `Cards.Init()`\n * quietly did the work through the selector below.\n */\nexport const CARDS_SELECTOR = '.card, article:has(> aside), article:has(.card-reveal)';\n\nexport class Cards extends Component<CardsOptions> implements Openable {\n isOpen: boolean = false;\n private readonly cardReveal: HTMLElement | null;\n private readonly initialOverflow: string;\n private _activators: HTMLElement[] | null;\n private cardRevealClose: HTMLElement | null;\n\n constructor(el: HTMLElement, options: Partial<CardsOptions>) {\n super(el, options, Cards);\n this.el['Expressive_Cards'] = this;\n\n this.options = {\n ...Cards.defaults,\n ...options\n };\n\n this._activators = [];\n\n this.cardReveal = this.el.querySelector(':scope > aside, .card-reveal');\n if (this.cardReveal) {\n this.initialOverflow = getComputedStyle(this.el).overflow;\n this._activators = Array.from(this.el.querySelectorAll('.activator'));\n this._activators.forEach((el: HTMLElement) => {\n if (el) el.tabIndex = 0;\n });\n\n this.cardRevealClose = this.cardReveal.querySelector(\n '.card-title, :scope > :is(h1, h2, h3, h4, h5, h6)'\n );\n if (this.cardRevealClose) this.cardRevealClose.tabIndex = -1;\n\n this.cardReveal.ariaExpanded = 'false';\n this._setupEventHandlers();\n }\n }\n\n static get defaults(): CardsOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Cards.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<CardsOptions>): Cards;\n /**\n * Initializes instances of Cards.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<CardsOptions>): Cards[];\n /**\n * Initializes instances of Cards.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options?: Partial<CardsOptions>\n ): Cards | Cards[] {\n return super.init(els, options, Cards);\n }\n\n static getInstance(el: HTMLElement): Cards {\n return el['Expressive_Cards'];\n }\n\n /**\n * {@inheritDoc}\n */\n destroy() {\n this._removeEventHandlers();\n if (this.cardRevealClose) this._removeRevealCloseEventHandlers();\n this._activators = [];\n this.el['Expressive_Cards'] = undefined;\n }\n\n _setupEventHandlers = () => {\n this._activators.forEach((el: HTMLElement) => {\n el.addEventListener('click', this._handleClickInteraction);\n el.addEventListener('keypress', this._handleKeypressEvent);\n });\n };\n\n _removeEventHandlers = () => {\n this._activators.forEach((el: HTMLElement) => {\n el.removeEventListener('click', this._handleClickInteraction);\n el.removeEventListener('keypress', this._handleKeypressEvent);\n });\n };\n\n _handleClickInteraction = () => {\n this._handleRevealEvent();\n };\n\n _handleKeypressEvent: (e: KeyboardEvent) => void = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n this._handleRevealEvent();\n }\n };\n\n _handleRevealEvent = () => {\n // Reveal Card\n this._activators.forEach((el: HTMLElement) => (el.tabIndex = -1));\n this.open();\n };\n\n _setupRevealCloseEventHandlers = () => {\n this.cardRevealClose.addEventListener('click', this.close);\n this.cardRevealClose.addEventListener('keypress', this._handleKeypressCloseEvent);\n };\n\n _removeRevealCloseEventHandlers = () => {\n this.cardRevealClose.removeEventListener('click', this.close);\n this.cardRevealClose.removeEventListener('keypress', this._handleKeypressCloseEvent);\n };\n\n _handleKeypressCloseEvent: (e: KeyboardEvent) => void = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n this.close();\n }\n };\n\n /**\n * Show card reveal.\n */\n open: () => void = () => {\n if (this.isOpen) return;\n this.isOpen = true;\n this.el.style.overflow = 'hidden';\n this.cardReveal.style.display = 'block';\n this.cardReveal.ariaExpanded = 'true';\n // A reveal without a title has no close affordance; that is allowed.\n if (this.cardRevealClose) this.cardRevealClose.tabIndex = 0;\n setTimeout(() => {\n this.cardReveal.style.transition = `transform ${this.options.outDuration}ms ease`; //easeInOutQuad\n this.cardReveal.style.transform = 'translateY(-100%)';\n }, 1);\n if (typeof this.options.onOpen === 'function') {\n this.options.onOpen.call(this);\n }\n if (this.cardRevealClose) this._setupRevealCloseEventHandlers();\n };\n\n /**\n * Hide card reveal.\n */\n close: () => void = () => {\n if (!this.isOpen) return;\n this.isOpen = false;\n this.cardReveal.style.transition = `transform ${this.options.inDuration}ms ease`; //easeInOutQuad\n this.cardReveal.style.transform = 'translateY(0)';\n setTimeout(() => {\n this.cardReveal.style.display = 'none';\n this.cardReveal.ariaExpanded = 'false';\n this._activators.forEach((el: HTMLElement) => (el.tabIndex = 0));\n if (this.cardRevealClose) this.cardRevealClose.tabIndex = -1;\n this.el.style.overflow = this.initialOverflow;\n }, this.options.inDuration);\n if (typeof this.options.onClose === 'function') {\n this.options.onClose.call(this);\n }\n if (this.cardRevealClose) this._removeRevealCloseEventHandlers();\n };\n\n static Init() {\n // Handle initialization of static cards.\n Utils.onDocumentReady(() => {\n const cards = document.querySelectorAll(CARDS_SELECTOR);\n cards.forEach((el) => {\n if (el && el['Expressive_Cards'] == undefined) this.init(el as HTMLElement);\n });\n });\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement, Openable } from '../core/component';\n\nexport interface DropdownOptions extends BaseOptions {\n /**\n * Defines the edge the menu is aligned to.\n * @default 'left'\n */\n alignment: 'left' | 'right';\n /**\n * If true, automatically focus dropdown el for keyboard.\n * @default true\n */\n autoFocus: boolean;\n /**\n * If true, constrainWidth to the size of the dropdown activator.\n * @default true\n */\n constrainWidth: boolean;\n /**\n * Provide an element that will be the bounding container of the dropdown.\n * @default null\n */\n container: Element;\n /**\n * If false, the dropdown will show below the trigger.\n * @default true\n */\n coverTrigger: boolean;\n /**\n * If true, close dropdown on item click.\n * @default true\n */\n closeOnClick: boolean;\n /**\n * If true, the dropdown will open on hover.\n * @default false\n */\n hover: boolean;\n /**\n * The duration of the transition enter in milliseconds.\n * @default 150\n */\n inDuration: number;\n /**\n * The duration of the transition out in milliseconds.\n * @default 250\n */\n outDuration: number;\n /**\n * Function called when dropdown starts entering.\n * @default null\n */\n onOpenStart: (el: HTMLElement) => void;\n /**\n * Function called when dropdown finishes entering.\n * @default null\n */\n onOpenEnd: (el: HTMLElement) => void;\n /**\n * Function called when dropdown starts exiting.\n * @default null\n */\n onCloseStart: (el: HTMLElement) => void;\n /**\n * Function called when dropdown finishes exiting.\n * @default null\n */\n onCloseEnd: (el: HTMLElement) => void;\n /**\n * Function called when item is clicked.\n * @default null\n */\n onItemClick: (el: HTMLLIElement) => void;\n}\n\nconst _defaults: DropdownOptions = {\n alignment: 'left',\n autoFocus: true,\n constrainWidth: true,\n container: null,\n coverTrigger: true,\n closeOnClick: true,\n hover: false,\n inDuration: 150,\n outDuration: 250,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n onItemClick: null\n};\n\nexport class Dropdown extends Component<DropdownOptions> implements Openable {\n static _dropdowns: Dropdown[] = [];\n /** ID of the dropdown element. */\n id: string;\n /** The DOM element of the dropdown. */\n dropdownEl: HTMLElement;\n /** If the dropdown is open. */\n isOpen: boolean;\n /** If the dropdown content is scrollable. */\n isScrollable: boolean;\n isTouchMoving: boolean;\n /** The index of the item focused. */\n focusedIndex: number;\n filterQuery: string[];\n filterTimeout: ReturnType<typeof setTimeout>;\n\n constructor(el: HTMLElement, options: Partial<DropdownOptions>) {\n super(el, options, Dropdown);\n this.el['Expressive_Dropdown'] = this;\n\n Dropdown._dropdowns.push(this);\n this.id = Utils.getIdFromTrigger(el);\n this.dropdownEl = document.getElementById(this.id);\n this.dropdownEl?.classList.add('dropdown-content');\n\n this.options = {\n ...Dropdown.defaults,\n ...options\n };\n\n this.isOpen = false;\n this.isScrollable = false;\n this.isTouchMoving = false;\n this.focusedIndex = -1;\n this.filterQuery = [];\n this.el.ariaExpanded = 'false';\n\n // Move dropdown-content after dropdown-trigger\n this._moveDropdownToElement();\n this._makeDropdownFocusable();\n this._setupEventHandlers();\n }\n\n static get defaults(): DropdownOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Dropdown.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<DropdownOptions>): Dropdown;\n /**\n * Initializes instances of Dropdown.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<DropdownOptions>): Dropdown[];\n /**\n * Initializes instances of Dropdown.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<DropdownOptions> = {}\n ): Dropdown | Dropdown[] {\n return super.init(els, options, Dropdown);\n }\n\n static getInstance(el: HTMLElement): Dropdown {\n return el['Expressive_Dropdown'];\n }\n\n destroy() {\n clearTimeout(this.filterTimeout);\n this._resetDropdownStyles();\n this._removeEventHandlers();\n // Temporary handlers only exist while open, but removing them is a no-op\n // otherwise and leaving them attached leaks the instance.\n this._removeTemporaryEventHandlers();\n const index = Dropdown._dropdowns.indexOf(this);\n if (index >= 0) Dropdown._dropdowns.splice(index, 1);\n this.el['Expressive_Dropdown'] = undefined;\n }\n\n _setupEventHandlers() {\n // Trigger keydown handler\n this.el.addEventListener('keydown', this._handleTriggerKeydown);\n // Item click handler\n this.dropdownEl?.addEventListener('click', this._handleDropdownClick);\n // Hover event handlers\n if (this.options.hover) {\n this.el.addEventListener('mouseenter', this._handleMouseEnter);\n this.el.addEventListener('mouseleave', this._handleMouseLeave);\n this.dropdownEl.addEventListener('mouseleave', this._handleMouseLeave);\n // Click event handlers\n } else {\n this.el.addEventListener('click', this._handleClick);\n }\n }\n\n _removeEventHandlers() {\n // `dropdownEl` is optional-chained on the way in (the trigger may point at\n // an id that does not resolve); it has to be here too, or destroy() throws\n // before it can detach anything else.\n this.el.removeEventListener('keydown', this._handleTriggerKeydown);\n this.dropdownEl?.removeEventListener('click', this._handleDropdownClick);\n if (this.options.hover) {\n this.el.removeEventListener('mouseenter', this._handleMouseEnter);\n this.el.removeEventListener('mouseleave', this._handleMouseLeave);\n this.dropdownEl?.removeEventListener('mouseleave', this._handleMouseLeave);\n } else {\n this.el.removeEventListener('click', this._handleClick);\n }\n }\n\n _setupTemporaryEventHandlers() {\n document.body.addEventListener('click', this._handleDocumentClick);\n document.body.addEventListener('touchmove', this._handleDocumentTouchmove, { passive: true });\n this.dropdownEl?.addEventListener('keydown', this._handleDropdownKeydown);\n window.addEventListener('resize', this._handleWindowResize);\n }\n\n _removeTemporaryEventHandlers() {\n document.body.removeEventListener('click', this._handleDocumentClick);\n document.body.removeEventListener('touchmove', this._handleDocumentTouchmove);\n this.dropdownEl?.removeEventListener('keydown', this._handleDropdownKeydown);\n window.removeEventListener('resize', this._handleWindowResize);\n }\n\n _handleClick = (e: MouseEvent) => {\n e.preventDefault();\n //this._moveDropdown((<HTMLElement>e.target).closest('li'));\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n };\n\n _handleMouseEnter = () => {\n //this._moveDropdown((<HTMLElement>e.target).closest('li'));\n this.open();\n };\n\n _handleMouseLeave = (e: MouseEvent) => {\n const toEl = e.relatedTarget as HTMLElement;\n // relatedTarget is null when the pointer leaves the window entirely.\n if (!toEl) {\n this.close();\n return;\n }\n const leaveToDropdownContent = !!toEl.closest('.dropdown-content, menu');\n let leaveToActiveDropdownTrigger = false;\n const closestTrigger = toEl.closest('.dropdown-trigger');\n if (closestTrigger && !!closestTrigger['Expressive_Dropdown'] && closestTrigger['Expressive_Dropdown'].isOpen) {\n leaveToActiveDropdownTrigger = true;\n }\n // Close hover dropdown if mouse did not leave to either active dropdown-trigger or dropdown-content\n if (!leaveToActiveDropdownTrigger && !leaveToDropdownContent) {\n this.close();\n }\n };\n\n _handleDocumentClick = (e: MouseEvent) => {\n const target = <HTMLElement>e.target;\n if (this.options.closeOnClick && target.closest('.dropdown-content, menu') && !this.isTouchMoving) {\n // isTouchMoving to check if scrolling on mobile.\n this.close();\n } else if (!target.closest('.dropdown-content, menu')) {\n // Do this one frame later so that if the element clicked also triggers _handleClick\n // For example, if a label for a select was clicked, that we don't close/open the dropdown\n setTimeout(() => {\n if (this.isOpen) {\n this.close();\n }\n }, 0);\n }\n this.isTouchMoving = false;\n };\n\n _handleTriggerKeydown = (e: KeyboardEvent) => {\n // ARROW DOWN OR ENTER WHEN SELECT IS CLOSED - open Dropdown\n const arrowDownOrEnter =\n Utils.keys.ARROW_DOWN.includes(e.key) || Utils.keys.ENTER.includes(e.key);\n if (arrowDownOrEnter && !this.isOpen) {\n e.preventDefault();\n this.open();\n }\n };\n\n _handleDocumentTouchmove = (e: TouchEvent) => {\n const target = <HTMLElement>e.target;\n if (target.closest('.dropdown-content, menu')) {\n this.isTouchMoving = true;\n }\n };\n\n _handleDropdownClick = (e: MouseEvent) => {\n // onItemClick callback\n if (typeof this.options.onItemClick === 'function') {\n const itemEl = (<HTMLElement>e.target).closest('li');\n this.options.onItemClick.call(this, itemEl);\n }\n };\n\n _handleDropdownKeydown = (e: KeyboardEvent) => {\n const arrowUpOrDown =\n Utils.keys.ARROW_DOWN.includes(e.key) || Utils.keys.ARROW_UP.includes(e.key);\n if (Utils.keys.TAB.includes(e.key)) {\n e.preventDefault();\n this.close();\n }\n // Navigate down dropdown list\n else if (arrowUpOrDown && this.isOpen) {\n e.preventDefault();\n const direction = Utils.keys.ARROW_DOWN.includes(e.key) ? 1 : -1;\n let newFocusedIndex = this.focusedIndex;\n let hasFoundNewIndex = false;\n do {\n newFocusedIndex = newFocusedIndex + direction;\n if (\n !!this.dropdownEl.children[newFocusedIndex] &&\n (<HTMLLIElement>this.dropdownEl.children[newFocusedIndex]).tabIndex !== -1\n ) {\n hasFoundNewIndex = true;\n break;\n }\n } while (newFocusedIndex < this.dropdownEl.children.length && newFocusedIndex >= 0);\n\n if (hasFoundNewIndex) {\n // Remove active class from old element\n if (this.focusedIndex >= 0)\n this.dropdownEl.children[this.focusedIndex].classList.remove('active');\n this.focusedIndex = newFocusedIndex;\n this._focusFocusedItem();\n }\n }\n // ENTER selects choice on focused item\n else if (Utils.keys.ENTER.includes(e.key) && this.isOpen) {\n // Search for <a> and <button>\n const focusedElement = this.dropdownEl.children[this.focusedIndex];\n const activatableElement = <HTMLElement>focusedElement?.querySelector('a, button');\n // Click a or button tag if exists, otherwise click li tag\n if (!!activatableElement) {\n activatableElement.click();\n } else if (!!focusedElement) {\n if (focusedElement instanceof HTMLElement) {\n focusedElement.click();\n }\n }\n }\n // Close dropdown on ESC\n else if (Utils.keys.ESC.includes(e.key) && this.isOpen) {\n e.preventDefault();\n this.close();\n }\n\n // CASE WHEN USER TYPE LTTERS\n const keyText = e.key.toLowerCase();\n const isLetter = /[a-zA-Z0-9-_]/.test(keyText);\n const specialKeys = [\n ...Utils.keys.ARROW_DOWN,\n ...Utils.keys.ARROW_UP,\n ...Utils.keys.ENTER,\n ...Utils.keys.ESC,\n ...Utils.keys.TAB\n ];\n if (isLetter && !specialKeys.includes(e.key)) {\n this.filterQuery.push(keyText);\n const string = this.filterQuery.join('');\n // textContent rather than innerText: this scans every item on every\n // keystroke, and innerText forces a layout flush per item.\n const newOptionEl = Array.from(this.dropdownEl.querySelectorAll('li')).find(\n (el) => el.textContent.trim().toLowerCase().indexOf(string) === 0\n );\n if (newOptionEl) {\n this.focusedIndex = [...newOptionEl.parentNode.children].indexOf(newOptionEl);\n this._focusFocusedItem();\n }\n }\n // Re-arm rather than stack: without the clear, every keystroke left a live\n // timer behind and the query could reset while the user was still typing.\n clearTimeout(this.filterTimeout);\n this.filterTimeout = setTimeout(this._resetFilterQuery, 1000);\n };\n\n _handleWindowResize = () => {\n // Only re-place the dropdown if it's still visible\n // Accounts for elements hiding via media queries\n if (this.el.offsetParent) {\n this.recalculateDimensions();\n }\n };\n\n _resetFilterQuery = () => {\n this.filterQuery = [];\n };\n\n _resetDropdownStyles() {\n this.dropdownEl.style.display = '';\n this._resetDropdownPositioningStyles();\n this.dropdownEl.style.transform = '';\n this.dropdownEl.style.opacity = '';\n }\n\n _resetDropdownPositioningStyles() {\n this.dropdownEl.style.width = '';\n this.dropdownEl.style.height = '';\n this.dropdownEl.style.left = '';\n this.dropdownEl.style.top = '';\n this.dropdownEl.style.transformOrigin = '';\n }\n\n _moveDropdownToElement(containerEl: HTMLElement = null) {\n if (this.options.container) {\n this.options.container.append(this.dropdownEl);\n return;\n }\n if (containerEl) {\n if (!containerEl.contains(this.dropdownEl)) containerEl.append(this.dropdownEl);\n return;\n }\n this.el.after(this.dropdownEl);\n }\n\n _makeDropdownFocusable() {\n if (!this.dropdownEl) return;\n this.dropdownEl.popover = '';\n // Needed for arrow key navigation\n this.dropdownEl.tabIndex = 0;\n // Only set tabindex if it hasn't been set by user\n Array.from(this.dropdownEl.children).forEach((el) => {\n if (el instanceof HTMLHRElement || el.classList.contains('divider')) {\n el.setAttribute('tabindex', '-1');\n return;\n }\n if (!el.getAttribute('tabindex')) el.setAttribute('tabindex', '0');\n });\n }\n\n _focusFocusedItem() {\n if (\n this.focusedIndex >= 0 &&\n this.focusedIndex < this.dropdownEl.children.length &&\n this.options.autoFocus\n ) {\n (this.dropdownEl.children[this.focusedIndex] as HTMLElement).focus({\n preventScroll: true\n });\n this.dropdownEl.children[this.focusedIndex].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }\n\n _getDropdownPosition(closestOverflowParent: HTMLElement) {\n // const offsetParentBRect = this.el.offsetParent.getBoundingClientRect();\n const triggerBRect = this.el.getBoundingClientRect();\n const dropdownBRect = this.dropdownEl.getBoundingClientRect();\n\n let idealHeight = dropdownBRect.height;\n let idealWidth = dropdownBRect.width;\n let idealXPos = triggerBRect.left - dropdownBRect.left;\n let idealYPos = triggerBRect.top - dropdownBRect.top;\n\n const dropdownBounds = {\n left: idealXPos,\n top: idealYPos,\n height: idealHeight,\n width: idealWidth\n };\n\n const alignments = Utils.checkPossibleAlignments(\n this.el,\n closestOverflowParent,\n dropdownBounds,\n this.options.coverTrigger ? 0 : triggerBRect.height\n );\n\n let verticalAlignment = 'top';\n let horizontalAlignment = this.options.alignment;\n idealYPos += this.options.coverTrigger ? 0 : triggerBRect.height;\n\n // Reset isScrollable\n this.isScrollable = false;\n\n if (!alignments.top) {\n if (alignments.bottom) {\n verticalAlignment = 'bottom';\n\n if (!this.options.coverTrigger) {\n idealYPos -= triggerBRect.height;\n }\n } else {\n this.isScrollable = true;\n\n // Determine which side has most space and cutoff at correct height\n idealHeight -= 20; // Add padding when cutoff\n if (alignments.spaceOnTop > alignments.spaceOnBottom) {\n verticalAlignment = 'bottom';\n idealHeight += alignments.spaceOnTop;\n idealYPos -= this.options.coverTrigger\n ? alignments.spaceOnTop - 20\n : alignments.spaceOnTop - 20 + triggerBRect.height;\n } else {\n idealHeight += alignments.spaceOnBottom;\n }\n }\n }\n\n // If preferred horizontal alignment is possible\n if (!alignments[horizontalAlignment]) {\n const oppositeAlignment = horizontalAlignment === 'left' ? 'right' : 'left';\n if (alignments[oppositeAlignment]) {\n horizontalAlignment = oppositeAlignment;\n } else {\n // Determine which side has most space and cutoff at correct height\n if (alignments.spaceOnLeft > alignments.spaceOnRight) {\n horizontalAlignment = 'right';\n idealWidth += alignments.spaceOnLeft;\n idealXPos -= alignments.spaceOnLeft;\n } else {\n horizontalAlignment = 'left';\n idealWidth += alignments.spaceOnRight;\n }\n }\n }\n\n if (verticalAlignment === 'bottom') {\n idealYPos =\n idealYPos - dropdownBRect.height + (this.options.coverTrigger ? triggerBRect.height : 0);\n }\n if (horizontalAlignment === 'right') {\n idealXPos = idealXPos - dropdownBRect.width + triggerBRect.width;\n }\n return {\n x: idealXPos,\n y: idealYPos,\n verticalAlignment: verticalAlignment,\n horizontalAlignment: horizontalAlignment,\n height: idealHeight,\n width: idealWidth\n };\n }\n\n _animateIn() {\n const duration = this.options.inDuration;\n this.dropdownEl.style.transition = 'none';\n // from\n this.dropdownEl.style.opacity = '0';\n this.dropdownEl.style.transform = 'scale(0.3, 0.3)';\n setTimeout(() => {\n // easeOutQuad (opacity) & easeOutQuint\n this.dropdownEl.style.transition = `opacity ${duration}ms ease, transform ${duration}ms ease`;\n // to\n this.dropdownEl.style.opacity = '1';\n this.dropdownEl.style.transform = 'scale(1, 1)';\n }, 1);\n setTimeout(() => {\n if (this.options.autoFocus) this.dropdownEl.focus();\n if (typeof this.options.onOpenEnd === 'function') this.options.onOpenEnd.call(this, this.el);\n }, duration);\n }\n\n _animateOut() {\n const duration = this.options.outDuration;\n // easeOutQuad (opacity) & easeOutQuint\n this.dropdownEl.style.transition = `opacity ${duration}ms ease, transform ${duration}ms ease`;\n // to\n this.dropdownEl.style.opacity = '0';\n this.dropdownEl.style.transform = 'scale(0.3, 0.3)';\n setTimeout(() => {\n this._resetDropdownStyles();\n if (typeof this.options.onCloseEnd === 'function')\n this.options.onCloseEnd.call(this, this.el);\n }, duration);\n }\n\n private _getClosestAncestor(el: HTMLElement, condition: (Function) => boolean): HTMLElement {\n let ancestor = el.parentNode;\n while (ancestor !== null && ancestor !== document) {\n if (condition(ancestor)) {\n return <HTMLElement>ancestor;\n }\n ancestor = ancestor.parentElement;\n }\n return null;\n }\n\n _placeDropdown() {\n // Container here will be closest ancestor with overflow: hidden\n let closestOverflowParent: HTMLElement = this._getClosestAncestor(\n this.dropdownEl,\n (ancestor: HTMLElement) => {\n return (\n !['HTML', 'BODY'].includes(ancestor.tagName) &&\n getComputedStyle(ancestor).overflow !== 'visible'\n );\n }\n );\n // Fallback\n if (!closestOverflowParent) {\n closestOverflowParent = <HTMLElement>(\n (!!this.dropdownEl.offsetParent ? this.dropdownEl.offsetParent : this.dropdownEl.parentNode)\n );\n }\n\n if (getComputedStyle(closestOverflowParent).position === 'static')\n closestOverflowParent.style.position = 'relative';\n\n //this._moveDropdown(closestOverflowParent);\n\n // Set width before calculating positionInfo\n const idealWidth = this.options.constrainWidth\n ? this.el.getBoundingClientRect().width\n : this.dropdownEl.getBoundingClientRect().width;\n this.dropdownEl.style.width = idealWidth + 'px';\n\n const positionInfo = this._getDropdownPosition(closestOverflowParent);\n this.dropdownEl.style.left = positionInfo.x + 'px';\n this.dropdownEl.style.top = positionInfo.y + 'px';\n this.dropdownEl.style.height = positionInfo.height + 'px';\n this.dropdownEl.style.width = positionInfo.width + 'px';\n this.dropdownEl.style.transformOrigin = `${\n positionInfo.horizontalAlignment === 'left' ? '0' : '100%'\n } ${positionInfo.verticalAlignment === 'top' ? '0' : '100%'}`;\n }\n\n /**\n * Open dropdown.\n */\n open = () => {\n if (this.isOpen) return;\n this.isOpen = true;\n // onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, this.el);\n }\n // Reset styles\n this._resetDropdownStyles();\n this.dropdownEl.style.display = 'block';\n this._placeDropdown();\n this._animateIn();\n // Do this one frame later so that we don't bind an event handler that's immediately\n // called when the event bubbles up to the document and closes the dropdown\n setTimeout(() => this._setupTemporaryEventHandlers(), 0);\n this.el.ariaExpanded = 'true';\n };\n\n /**\n * Close dropdown.\n */\n close = () => {\n if (!this.isOpen) return;\n this.isOpen = false;\n this.focusedIndex = -1;\n // onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, this.el);\n }\n this._animateOut();\n this._removeTemporaryEventHandlers();\n if (this.options.autoFocus) {\n this.el.focus();\n }\n this.el.ariaExpanded = 'false';\n };\n\n /**\n * While dropdown is open, you can recalculate its dimensions if its contents have changed.\n */\n recalculateDimensions = () => {\n if (this.isOpen) {\n this._resetDropdownPositioningStyles();\n this._placeDropdown();\n }\n };\n}\n", "import { Utils } from '../core/utils';\nimport { Dropdown, DropdownOptions } from './dropdown';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface AutocompleteData {\n /**\n * A primitive value that can be converted to string.\n * If \"text\" is not provided, it will also be used as \"option text\" as well\n */\n id: string | number;\n /**\n * This optional attribute is used as \"display value\" for the current entry.\n * When provided, it will also be taken into consideration by the standard search function.\n */\n text?: string;\n /**\n * This optional attribute is used to provide a valid image URL to the current option.\n */\n image?: string;\n /**\n * Optional attributes which describes the option.\n */\n description?: string;\n}\n\nexport interface AutocompleteOptions extends BaseOptions {\n /**\n * Data object defining autocomplete options with\n * optional icon strings.\n */\n data: AutocompleteData[];\n /**\n * Flag which can be set if multiple values can be selected. The Result will be an Array.\n * @default false\n */\n isMultiSelect: boolean;\n /**\n * Callback for when autocompleted.\n */\n onAutocomplete: (entries: AutocompleteData[]) => void;\n /**\n * Minimum number of characters before autocomplete starts.\n * @default 1\n */\n minLength: number;\n /**\n * The height of the Menu which can be set via css-property.\n * @default '300px'\n */\n maxDropDownHeight: string;\n /**\n * Function is called when the input text is altered and data can also be loaded asynchronously.\n * If the results are collected the items in the list can be updated via the function setMenuItems(collectedItems).\n * @param text Searched text.\n * @param autocomplete Current autocomplete instance.\n */\n onSearch: (text: string, autocomplete: Autocomplete) => void;\n /**\n * If true will render the key from each item directly as HTML.\n * User input MUST be properly sanitized first.\n * @default false\n */\n allowUnsafeHTML: boolean;\n /**\n * Pass options object to select dropdown initialization.\n * @default {}\n */\n dropdownOptions: Partial<DropdownOptions>;\n /**\n * Predefined selected values\n */\n selected: number[] | string[];\n}\n\nconst _defaults: AutocompleteOptions = {\n data: [], // Autocomplete data set\n onAutocomplete: null, // Callback for when autocompleted\n dropdownOptions: {\n // Default dropdown options\n autoFocus: false,\n closeOnClick: false,\n coverTrigger: false\n },\n minLength: 1, // Min characters before autocomplete starts\n isMultiSelect: false,\n onSearch: (text: string, autocomplete: Autocomplete) => {\n const normSearch = text.toLocaleLowerCase();\n autocomplete.setMenuItems(\n\n autocomplete.options.data.filter((option) =>\n option.id.toString().toLocaleLowerCase().includes(normSearch)\n || option.text?.toLocaleLowerCase().includes(normSearch)\n\n )\n );\n },\n maxDropDownHeight: '300px',\n allowUnsafeHTML: false,\n selected: []\n};\n\nexport class Autocomplete extends Component<AutocompleteOptions> {\n declare el: HTMLInputElement;\n /** If the autocomplete is open. */\n isOpen: boolean;\n /** Number of matching autocomplete options. */\n count: number;\n /** Index of the current selected option. */\n activeIndex: number;\n private oldVal: string;\n private $active: HTMLElement | null;\n private _mousedown: boolean;\n container: HTMLElement;\n /** Instance of the dropdown plugin for this autocomplete. */\n dropdown: Dropdown;\n static _keydown: boolean;\n selectedValues: AutocompleteData[];\n menuItems: AutocompleteData[];\n\n constructor(el: HTMLInputElement, options: Partial<AutocompleteOptions>) {\n super(el, options, Autocomplete);\n this.el['Expressive_Autocomplete'] = this;\n\n this.options = {\n ...Autocomplete.defaults,\n ...options\n };\n\n this.isOpen = false;\n this.count = 0;\n this.activeIndex = -1;\n this.oldVal = '';\n this.selectedValues = this.selectedValues || this.options.selected.map((value) => <AutocompleteData>{ id: value }) || [];\n this.menuItems = this.options.data || [];\n this.$active = null;\n this._mousedown = false;\n this._setupDropdown();\n this._setupEventHandlers();\n }\n\n static get defaults(): AutocompleteOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Autocomplete.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLInputElement, options?: Partial<AutocompleteOptions>): Autocomplete;\n /**\n * Initializes instances of Autocomplete.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: InitElements<HTMLInputElement | MElement>,\n options?: Partial<AutocompleteOptions>\n ): Autocomplete[];\n /**\n * Initializes instances of Autocomplete.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLInputElement | InitElements<HTMLInputElement | MElement>,\n options: Partial<AutocompleteOptions> = {}\n ): Autocomplete | Autocomplete[] {\n return super.init(els, options, Autocomplete);\n }\n\n static getInstance(el: HTMLElement): Autocomplete {\n return el['Expressive_Autocomplete'];\n }\n\n /**\n * The three-dot loading indicator, parsed once and cloned thereafter.\n *\n * It is shown on every input change, and it used to be assigned as an\n * innerHTML string each time - re-running the HTML parser over the same\n * fixed markup on every keystroke.\n */\n private static _loadingTemplate: HTMLElement = null;\n\n private static _loadingIndicator(): HTMLElement {\n if (!Autocomplete._loadingTemplate) {\n const template = document.createElement('template');\n template.innerHTML = `<div style=\"height:100%;width:50px;\"><svg version=\"1.1\" id=\"L4\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" enable-background=\"new 0 0 0 0\" xml:space=\"preserve\">\n <circle fill=\"#888c\" stroke=\"none\" cx=\"6\" cy=\"50\" r=\"6\"><animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.1\"/></circle>\n <circle fill=\"#888c\" stroke=\"none\" cx=\"26\" cy=\"50\" r=\"6\"><animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.2\"/></circle>\n <circle fill=\"#888c\" stroke=\"none\" cx=\"46\" cy=\"50\" r=\"6\"><animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.3\"/></circle>\n </svg></div>`;\n Autocomplete._loadingTemplate = template.content.firstElementChild as HTMLElement;\n }\n return Autocomplete._loadingTemplate.cloneNode(true) as HTMLElement;\n }\n\n destroy() {\n this._removeEventHandlers();\n this._removeDropdown();\n this.el['Expressive_Autocomplete'] = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('blur', this._handleInputBlur);\n this.el.addEventListener('keyup', this._handleInputKeyup);\n this.el.addEventListener('focus', this._handleInputFocus);\n this.el.addEventListener('keydown', this._handleInputKeydown);\n this.el.addEventListener('click', this._handleInputClick);\n this.container.addEventListener('mousedown', this._handleContainerMousedownAndTouchstart);\n this.container.addEventListener('mouseup', this._handleContainerMouseupAndTouchend);\n if (typeof window.ontouchstart !== 'undefined') {\n this.container.addEventListener('touchstart', this._handleContainerMousedownAndTouchstart);\n this.container.addEventListener('touchend', this._handleContainerMouseupAndTouchend);\n }\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('blur', this._handleInputBlur);\n this.el.removeEventListener('keyup', this._handleInputKeyup);\n this.el.removeEventListener('focus', this._handleInputFocus);\n this.el.removeEventListener('keydown', this._handleInputKeydown);\n this.el.removeEventListener('click', this._handleInputClick);\n this.container.removeEventListener('mousedown', this._handleContainerMousedownAndTouchstart);\n this.container.removeEventListener('mouseup', this._handleContainerMouseupAndTouchend);\n\n if (typeof window.ontouchstart !== 'undefined') {\n this.container.removeEventListener('touchstart', this._handleContainerMousedownAndTouchstart);\n this.container.removeEventListener('touchend', this._handleContainerMouseupAndTouchend);\n }\n }\n\n _setupDropdown() {\n this.container = document.createElement('ul');\n this.container.style.maxHeight = this.options.maxDropDownHeight;\n this.container.id = `autocomplete-options-${Utils.guid()}`;\n this.container.classList.add('autocomplete-content', 'dropdown-content');\n this.container.ariaExpanded = 'true';\n this.el.setAttribute('data-target', this.container.id);\n\n this.menuItems.forEach((menuItem) => {\n const itemElement = this._createDropdownItem(menuItem);\n this.container.append(itemElement);\n });\n\n // ! Issue in Component Dropdown: _placeDropdown moves dom-position\n this.el.parentElement.appendChild(this.container);\n\n // Initialize dropdown\n const dropdownOptions = {\n ...Autocomplete.defaults.dropdownOptions,\n ...this.options.dropdownOptions\n };\n // @todo shouldn't we conditionally check if dropdownOptions.onItemClick is set in first place?\n const userOnItemClick = dropdownOptions.onItemClick;\n // Ensuring the select Option call when user passes custom onItemClick function to dropdown\n dropdownOptions.onItemClick = (li) => {\n if (!li) return;\n const entryID = li.getAttribute('data-id');\n this.selectOption(entryID);\n // Handle user declared onItemClick if needed\n if (userOnItemClick && typeof userOnItemClick === 'function')\n userOnItemClick.call(this.dropdown, this.el);\n };\n this.dropdown = Dropdown.init(this.el, dropdownOptions);\n\n // ! Workaround for Label: move label up again\n // TODO: Just use PopperJS in future!\n const label = this.el.parentElement.querySelector('label');\n if (label) this.el.after(label);\n\n // Sketchy removal of dropdown click handler\n this.el.removeEventListener('click', this.dropdown._handleClick);\n if(!this.options.isMultiSelect && !(this.options.selected.length === 0)) {\n const selectedValue = this.menuItems.filter((value) => value.id === this.selectedValues[0].id);\n this.el.value = selectedValue[0].text;\n }\n // Set Value if already set in HTML\n if (this.el.value) this.selectOption(this.el.value);\n // Add StatusInfo\n const div = document.createElement('div');\n div.classList.add('status-info');\n div.setAttribute('style', 'position: absolute;right:0;top:0;');\n this.el.parentElement.appendChild(div);\n this._updateSelectedInfo();\n }\n\n _removeDropdown() {\n this.container.ariaExpanded = 'false';\n this.container.parentNode.removeChild(this.container);\n }\n\n _handleInputBlur = () => {\n if (!this._mousedown) {\n this.close();\n this._resetAutocomplete();\n }\n };\n\n _handleInputKeyup = (e: KeyboardEvent) => {\n if (e.type === 'keyup') Autocomplete._keydown = false;\n this.count = 0;\n const actualValue = this.el.value.toLocaleLowerCase();\n // Don't capture enter or arrow key usage.\n if (\n Utils.keys.ENTER.includes(e.key) ||\n Utils.keys.ARROW_UP.includes(e.key) ||\n Utils.keys.ARROW_DOWN.includes(e.key)\n )\n return;\n // Check if the input isn't empty\n // Check if focus triggered by tab\n if (this.oldVal !== actualValue && Utils.tabPressed) {\n this.open();\n }\n this._inputChangeDetection(actualValue);\n };\n\n _handleInputFocus = () => {\n this.count = 0;\n const actualValue = this.el.value.toLocaleLowerCase();\n this._inputChangeDetection(actualValue);\n };\n\n _inputChangeDetection = (value: string) => {\n // Value has changed!\n if (this.oldVal !== value) {\n this._setStatusLoading();\n this.options.onSearch(this.el.value, this);\n }\n // Reset Single-Select when Input cleared\n if (!this.options.isMultiSelect && this.el.value.length === 0) {\n this.selectedValues = [];\n this._triggerChanged();\n }\n this.oldVal = value;\n };\n\n _handleInputKeydown = (e: KeyboardEvent) => {\n Autocomplete._keydown = true;\n // Arrow keys and enter key usage\n const numItems = this.container.querySelectorAll('li').length;\n // select element on Enter\n if (Utils.keys.ENTER.includes(e.key) && this.activeIndex >= 0) {\n const liElement = this.container.querySelectorAll('li')[this.activeIndex];\n if (liElement) {\n this.selectOption(liElement.getAttribute('data-id'));\n e.preventDefault();\n }\n return;\n }\n // Capture up and down key\n if (Utils.keys.ARROW_UP.includes(e.key) || Utils.keys.ARROW_DOWN.includes(e.key)) {\n e.preventDefault();\n if (Utils.keys.ARROW_UP.includes(e.key) && this.activeIndex > 0) this.activeIndex--;\n if (Utils.keys.ARROW_DOWN.includes(e.key) && this.activeIndex < numItems - 1)\n this.activeIndex++;\n this.$active?.classList.remove('active');\n if (this.activeIndex >= 0) {\n this.$active = this.container.querySelectorAll('li')[this.activeIndex];\n this.$active?.classList.add('active');\n // Focus selected\n this.container.children[this.activeIndex].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }\n };\n\n _handleInputClick = () => {\n this.open();\n };\n\n _handleContainerMousedownAndTouchstart = () => {\n this._mousedown = true;\n };\n\n _handleContainerMouseupAndTouchend = () => {\n this._mousedown = false;\n };\n\n _resetCurrentElementPosition() {\n this.activeIndex = -1;\n this.$active?.classList.remove('active');\n }\n\n _resetAutocomplete() {\n this.container.replaceChildren();\n this._resetCurrentElementPosition();\n this.oldVal = null;\n this.isOpen = false;\n this._mousedown = false;\n }\n\n _highlightPartialText(input: string, label: string) {\n const start = label.toLocaleLowerCase().indexOf('' + input.toLocaleLowerCase() + '');\n const end = start + input.length - 1;\n //custom filters may return results where the string does not match any part\n if (start == -1 || end == -1) {\n return [label, '', ''];\n }\n return [label.slice(0, start), label.slice(start, end + 1), label.slice(end + 1)];\n }\n\n _createDropdownItem(entry: AutocompleteData) {\n const item = document.createElement('li');\n item.setAttribute('data-id', <string>entry.id);\n item.setAttribute(\n 'style',\n 'display:grid; grid-auto-flow: column; user-select: none; align-items: center;'\n );\n item.tabIndex = 0;\n // Checkbox\n if (this.options.isMultiSelect) {\n const selection = document.createElement('div');\n selection.classList.add('item-selection');\n selection.style.textAlign = 'center';\n const checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.checked = this.selectedValues.some((sel) => sel.id === entry.id);\n const spacer = document.createElement('span');\n spacer.style.paddingLeft = '21px';\n selection.append(checkbox, spacer);\n item.appendChild(selection);\n }\n // Image\n if (entry.image) {\n const img = document.createElement('img');\n img.classList.add('circle');\n img.src = entry.image;\n item.appendChild(img);\n }\n\n // Text\n const inputText = this.el.value.toLocaleLowerCase();\n const parts = this._highlightPartialText(inputText, (entry.text || entry.id).toString());\n const div = document.createElement('div');\n div.setAttribute('style', 'line-height:1.2;font-weight:500;');\n if (this.options.allowUnsafeHTML) {\n div.innerHTML = parts[0] + '<span class=\"highlight\">' + parts[1] + '</span>' + parts[2];\n } else {\n div.appendChild(document.createTextNode(parts[0]));\n if (parts[1]) {\n const highlight = document.createElement('span');\n highlight.textContent = parts[1];\n highlight.classList.add('highlight');\n div.appendChild(highlight);\n div.appendChild(document.createTextNode(parts[2]));\n }\n }\n\n const itemText = document.createElement('div');\n itemText.classList.add('item-text');\n itemText.setAttribute('style', 'padding:5px;overflow:hidden;');\n item.appendChild(itemText);\n item.querySelector('.item-text').appendChild(div);\n // Description\n if (\n typeof entry.description === 'string' ||\n (typeof entry.description === 'number' && !isNaN(entry.description))\n ) {\n const description = document.createElement('small');\n description.setAttribute(\n 'style',\n 'line-height:1.3;color:grey;white-space:nowrap;text-overflow:ellipsis;display:block;width:90%;overflow:hidden;'\n );\n description.innerText = entry.description;\n item.querySelector('.item-text').appendChild(description);\n }\n // Set Grid\n const getGridConfig = () => {\n if (this.options.isMultiSelect) {\n if (entry.image) return '40px min-content auto'; // cb-img-txt\n return '40px auto'; // cb-txt\n }\n if (entry.image) return 'min-content auto'; // img-txt\n return 'auto'; // txt\n };\n item.style.gridTemplateColumns = getGridConfig();\n return item;\n }\n\n _renderDropdown() {\n this._resetAutocomplete();\n // Check if Data is empty\n if (this.menuItems.length === 0) {\n this.menuItems = this.selectedValues; // Show selected Items\n }\n for (let i = 0; i < this.menuItems.length; i++) {\n const item = this._createDropdownItem(this.menuItems[i]);\n this.container.append(item);\n }\n }\n\n _setStatusLoading() {\n const statusElement = this.el.parentElement.querySelector('.status-info');\n if (statusElement) statusElement.replaceChildren(Autocomplete._loadingIndicator());\n }\n\n _updateSelectedInfo() {\n const statusElement = this.el.parentElement.querySelector('.status-info');\n if (statusElement) {\n if (this.options.isMultiSelect)\n statusElement.textContent = this.selectedValues.length.toString();\n else statusElement.replaceChildren();\n }\n }\n\n _refreshInputText() {\n if (this.selectedValues.length === 1) {\n const entry = this.selectedValues[0];\n this.el.value = entry.text || <string>entry.id; // Write Text to Input\n }\n }\n\n _triggerChanged() {\n this.el.dispatchEvent(new Event('change'));\n // Trigger Autocomplete Event\n if (typeof this.options.onAutocomplete === 'function')\n this.options.onAutocomplete.call(this, this.selectedValues);\n }\n\n /**\n * Show autocomplete.\n */\n open = () => {\n const inputText = this.el.value.toLocaleLowerCase();\n this._resetAutocomplete();\n if (inputText.length >= this.options.minLength) {\n this.isOpen = true;\n this._renderDropdown();\n }\n // Open dropdown\n if (!this.dropdown.isOpen) {\n setTimeout(() => {\n this.dropdown.open();\n }, 0); // TODO: why?\n } else this.dropdown.recalculateDimensions(); // Recalculate dropdown when its already open\n };\n\n /**\n * Hide autocomplete.\n */\n close = () => {\n this.dropdown.close();\n };\n\n /**\n * Updates the visible or selectable items shown in the menu.\n * @param menuItems Items to be available.\n * @param selected Selected item ids\n * @param open Option to conditionally open dropdown\n */\n setMenuItems(menuItems: AutocompleteData[], selected: number[] | string[] = null, open: boolean = true) {\n this.menuItems = menuItems;\n this.options.data = menuItems;\n if (selected) {\n this.selectedValues = this.menuItems.filter(\n (item) => !(selected.indexOf(<never>item.id) === -1)\n );\n }\n if (this.options.isMultiSelect) {\n this._renderDropdown();\n } else {\n this._refreshInputText();\n }\n if (open) this.open();\n this._updateSelectedInfo();\n this._triggerChanged();\n }\n\n /**\n * Sets selected values.\n * @deprecated @see https://github.com/materializecss/materialize/issues/552\n * @param entries\n */\n setValues(entries: AutocompleteData[]) {\n this.selectedValues = entries;\n this._updateSelectedInfo();\n if (!this.options.isMultiSelect) {\n this._refreshInputText();\n }\n this._triggerChanged();\n }\n\n /**\n * Select a specific autocomplete option via id-property.\n * @param id The id of a data-entry.\n */\n selectOption(id: number | string) {\n const entry = this.menuItems.find((item) => item.id == id);\n if (!entry) return;\n // Toggle Checkbox\n /* const li = this.container.querySelector('li[data-id=\"' + id + '\"]');\n if (!li) return;*/\n if (this.options.isMultiSelect) {\n /* const checkbox = <HTMLInputElement | null>li.querySelector('input[type=\"checkbox\"]');\n checkbox.checked = !checkbox.checked;*/\n if (!(this.selectedValues.filter(\n (selectedEntry) => selectedEntry.id === entry.id\n ).length >= 1)) this.selectedValues.push(entry);\n else this.selectedValues = this.selectedValues.filter(\n (selectedEntry) => selectedEntry.id !== entry.id\n );\n this._renderDropdown();\n this.el.focus();\n } else {\n // Single-Select\n this.selectedValues = [entry];\n this._refreshInputText();\n this._resetAutocomplete();\n this.close();\n }\n this._updateSelectedInfo();\n this._triggerChanged();\n }\n\n selectOptions(ids: []) {\n const entries = this.menuItems.filter(\n (item) => !(ids.indexOf(<never>item.id) === -1)\n );\n if (!entries) return;\n this.selectedValues = entries;\n this._renderDropdown();\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Autocomplete, AutocompleteOptions } from './autocomplete';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface ChipData {\n /**\n * Unique identifier.\n */\n id: number | string;\n /**\n * Chip text. If not specified, \"id\" will be used.\n */\n text?: string;\n /**\n * Chip image (URL).\n */\n image?: string;\n}\n\nexport interface ChipsOptions extends BaseOptions {\n /**\n * Set the chip data.\n * @default []\n */\n data: ChipData[];\n /**\n * Set first placeholder when there are no tags.\n * @default \"\"\n */\n placeholder: string;\n /**\n * Set second placeholder when adding additional tags.\n * @default \"\"\n */\n secondaryPlaceholder: string;\n /**\n * Set autocomplete options.\n * @default {}\n */\n autocompleteOptions: Partial<AutocompleteOptions>;\n /**\n * Toggles abililty to add custom value not in autocomplete list.\n * @default false\n */\n autocompleteOnly: boolean;\n /**\n * Set chips limit.\n * @default Infinity\n */\n limit: number;\n /**\n * Specifies class to be used in \"close\" button (useful when working with Material Symbols icon set).\n * @default 'material-icons'\n */\n closeIconClass: string;\n /**\n * Specifies option to render user input field\n * @default false;\n */\n allowUserInput: boolean;\n /**\n * Callback for chip add.\n * @default null\n */\n onChipAdd: (element: HTMLElement, chip: HTMLElement) => void;\n /**\n * Callback for chip select.\n * @default null\n */\n onChipSelect: (element: HTMLElement, chip: HTMLElement) => void;\n /**\n * Callback for chip delete.\n * @default null\n */\n onChipDelete: (element: HTMLElement, chip: HTMLElement) => void;\n}\n\nconst _defaults: ChipsOptions = {\n data: [],\n placeholder: '',\n secondaryPlaceholder: '',\n closeIconClass: 'material-icons',\n autocompleteOptions: {},\n autocompleteOnly: false,\n limit: Infinity,\n allowUserInput: false,\n onChipAdd: null,\n onChipSelect: null,\n onChipDelete: null\n};\n\nexport class Chips extends Component<ChipsOptions> {\n /** Array of the current chips data. */\n chipsData: ChipData[];\n /** If the chips has autocomplete enabled. */\n hasAutocomplete: boolean;\n /** Autocomplete instance, if any. */\n autocomplete: Autocomplete;\n _input: HTMLInputElement;\n _label: HTMLLabelElement;\n _chips: HTMLElement[];\n static _keydown: boolean;\n private _selectedChip: HTMLElement;\n\n constructor(el: HTMLElement, options: Partial<ChipsOptions>) {\n super(el, options, Chips);\n this.el['Expressive_Chips'] = this;\n\n this.options = {\n ...Chips.defaults,\n ...options\n };\n\n this.el.classList.add('chips');\n this.chipsData = [];\n this._chips = [];\n\n // Render initial chips\n if (this.options.data.length) {\n this.chipsData = this.options.data;\n this._renderChips();\n }\n\n // Render input element, setup event handlers\n if (this.options.allowUserInput) {\n this.el.classList.add('input-field');\n this._setupInput();\n this._setupEventHandlers();\n // move input to end\n this.el.append(this._input);\n }\n // After _setupInput: the label points at the input's id, which is only\n // assigned there. Running this first threw on any .chips with a <label>.\n this._setupLabel();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n /**\n * Initializes instance of Chips.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<ChipsOptions>): Chips;\n /**\n * Initializes instances of Chips.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<ChipsOptions>): Chips[];\n /**\n * Initializes instances of Chips.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<ChipsOptions> = {}\n ): Chips | Chips[] {\n return super.init(els, options, Chips);\n }\n\n static getInstance(el: HTMLElement): Chips {\n return el['Expressive_Chips'];\n }\n\n getData() {\n return this.chipsData;\n }\n\n destroy() {\n if (this.options.allowUserInput) {\n this._removeEventHandlers();\n }\n this._chips.forEach((c) => c.remove());\n this._chips = [];\n this.el['Expressive_Chips'] = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('click', this._handleChipClick);\n // @todo why do we need this as document event listener, shouldn't we apply it to the element wrapper itself?\n document.addEventListener('keydown', Chips._handleChipsKeydown);\n document.addEventListener('keyup', Chips._handleChipsKeyup);\n this.el.addEventListener('blur', Chips._handleChipsBlur, true);\n this._input.addEventListener('focus', this._handleInputFocus);\n this._input.addEventListener('blur', this._handleInputBlur);\n this._input.addEventListener('keydown', this._handleInputKeydown);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleChipClick);\n document.removeEventListener('keydown', Chips._handleChipsKeydown);\n document.removeEventListener('keyup', Chips._handleChipsKeyup);\n this.el.removeEventListener('blur', Chips._handleChipsBlur, true);\n this._input.removeEventListener('focus', this._handleInputFocus);\n this._input.removeEventListener('blur', this._handleInputBlur);\n this._input.removeEventListener('keydown', this._handleInputKeydown);\n }\n\n _handleChipClick = (e: MouseEvent) => {\n const _chip = (<HTMLElement>e.target).closest('.chip');\n const clickedClose = (<HTMLElement>e.target).classList.contains('close');\n if (_chip) {\n // Index into the chip list, not into the container's children: the\n // container also holds the label and the input, so counting children\n // gave an index that did not line up with chipsData.\n const index = this._chips.indexOf(_chip as HTMLElement);\n if (index < 0) return;\n if (clickedClose) {\n this.deleteChip(index);\n this._input.focus();\n } else {\n this.selectChip(index);\n }\n // Default handle click to focus on input\n } else {\n this._input.focus();\n }\n };\n\n static _handleChipsKeydown(e: KeyboardEvent) {\n Chips._keydown = true;\n const chips = (<HTMLElement>e.target).closest('.chips');\n const chipsKeydown = e.target && chips;\n\n // Don't handle keydown inputs on input and textarea\n const tag = (<HTMLElement>e.target).tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || !chipsKeydown) return;\n\n const currChips: Chips = chips['Expressive_Chips'];\n if (!currChips) return; // .chips markup without an instance behind it\n\n if (Utils.keys.BACKSPACE.includes(e.key) || Utils.keys.DELETE.includes(e.key)) {\n e.preventDefault();\n let selectIndex = currChips.chipsData.length;\n if (currChips._selectedChip) {\n const index = currChips._chips.indexOf(currChips._selectedChip);\n currChips.deleteChip(index);\n currChips._selectedChip = null;\n // Make sure selectIndex doesn't go negative\n selectIndex = Math.max(index - 1, 0);\n }\n if (currChips.chipsData.length) currChips.selectChip(selectIndex);\n else currChips._input.focus();\n } else if (Utils.keys.ARROW_LEFT.includes(e.key)) {\n if (currChips._selectedChip) {\n const selectIndex = currChips._chips.indexOf(currChips._selectedChip) - 1;\n if (selectIndex < 0) return;\n currChips.selectChip(selectIndex);\n }\n } else if (Utils.keys.ARROW_RIGHT.includes(e.key)) {\n if (currChips._selectedChip) {\n const selectIndex = currChips._chips.indexOf(currChips._selectedChip) + 1;\n if (selectIndex >= currChips.chipsData.length) currChips._input.focus();\n else currChips.selectChip(selectIndex);\n }\n }\n }\n\n static _handleChipsKeyup() {\n Chips._keydown = false;\n }\n\n static _handleChipsBlur(e: Event) {\n if (!Chips._keydown && document.hidden) {\n const chips = (<HTMLElement>e.target).closest('.chips');\n const currChips: Chips = chips?.['Expressive_Chips'];\n if (currChips) currChips._selectedChip = null;\n }\n }\n\n _handleInputFocus = () => {\n this.el.classList.add('focus');\n };\n\n _handleInputBlur = () => {\n this.el.classList.remove('focus');\n };\n\n _handleInputKeydown = (e: KeyboardEvent) => {\n Chips._keydown = true;\n if (Utils.keys.ENTER.includes(e.key)) {\n // Override enter if autocompleting.\n if (this.hasAutocomplete && this.autocomplete && this.autocomplete.isOpen) {\n return;\n }\n e.preventDefault();\n if (!this.hasAutocomplete || (this.hasAutocomplete && !this.options.autocompleteOnly)) {\n this.addChip({ id: this._input.value });\n }\n this._input.value = '';\n } else if (\n (Utils.keys.BACKSPACE.includes(e.key) || Utils.keys.ARROW_LEFT.includes(e.key)) &&\n this._input.value === '' &&\n this.chipsData.length\n ) {\n e.preventDefault();\n this.selectChip(this.chipsData.length - 1);\n }\n };\n\n _renderChip(chip: ChipData): HTMLDivElement {\n if (!chip.id) return;\n const renderedChip = document.createElement('div');\n renderedChip.classList.add('chip');\n renderedChip.innerText = chip.text || <string>chip.id;\n // attach image if needed\n if (chip.image) {\n const img = document.createElement('img');\n img.setAttribute('src', chip.image);\n renderedChip.insertBefore(img, renderedChip.firstChild);\n }\n if (this.options.allowUserInput) {\n renderedChip.setAttribute('tabindex', '0');\n const closeIcon = document.createElement('i');\n closeIcon.classList.add(this.options.closeIconClass, 'close');\n closeIcon.innerText = 'close';\n renderedChip.appendChild(closeIcon);\n }\n return renderedChip;\n }\n\n _renderChips() {\n this._chips = []; //.remove();\n for (let i = 0; i < this.chipsData.length; i++) {\n const chipElem = this._renderChip(this.chipsData[i]);\n this.el.appendChild(chipElem);\n this._chips.push(chipElem);\n }\n }\n\n _setupAutocomplete() {\n this.options.autocompleteOptions.onAutocomplete = (items) => {\n if (items.length > 0)\n this.addChip({\n id: items[0].id,\n text: items[0].text,\n image: items[0].image\n });\n this._input.value = '';\n this._input.focus();\n };\n this.autocomplete = Autocomplete.init(this._input, this.options.autocompleteOptions);\n }\n\n _setupInput() {\n this._input = this.el.querySelector('input');\n if (!this._input) {\n this._input = document.createElement('input');\n this.el.append(this._input);\n }\n this._input.classList.add('input');\n this.hasAutocomplete = Object.keys(this.options.autocompleteOptions).length > 0;\n // Setup autocomplete if needed\n if (this.hasAutocomplete) this._setupAutocomplete();\n this._setPlaceholder();\n // Set input id\n if (!this._input.getAttribute('id')) this._input.setAttribute('id', Utils.guid());\n }\n\n _setupLabel() {\n this._label = this.el.querySelector('label');\n // No input to point at when allowUserInput is off.\n if (this._label && this._input) this._label.setAttribute('for', this._input.getAttribute('id'));\n }\n\n _setPlaceholder() {\n if (this.chipsData !== undefined && !this.chipsData.length && this.options.placeholder) {\n this._input.placeholder = this.options.placeholder;\n } else if (\n (this.chipsData === undefined || !!this.chipsData.length) &&\n this.options.secondaryPlaceholder\n ) {\n this._input.placeholder = this.options.secondaryPlaceholder;\n }\n }\n\n _isValidAndNotExist(chip: ChipData) {\n const isValid = !!chip.id;\n const doesNotExist = !this.chipsData.some((item) => item.id == chip.id);\n return isValid && doesNotExist;\n }\n\n /**\n * Add chip to input.\n * @param chip Chip data object\n */\n addChip(chip: ChipData) {\n if (!this._isValidAndNotExist(chip) || this.chipsData.length >= this.options.limit) return;\n const renderedChip = this._renderChip(chip);\n this._chips.push(renderedChip);\n this.chipsData.push(chip);\n //$(this._input).before(renderedChip);\n this._input.before(renderedChip);\n this._setPlaceholder();\n // fire chipAdd callback\n if (typeof this.options.onChipAdd === 'function') {\n this.options.onChipAdd(this.el, renderedChip);\n }\n }\n\n /**\n * Delete nth chip.\n * @param chipIndex Index of chip\n */\n deleteChip(chipIndex: number) {\n const chip = this._chips[chipIndex];\n if (!chip) return;\n chip.remove();\n this._chips.splice(chipIndex, 1);\n this.chipsData.splice(chipIndex, 1);\n this._setPlaceholder();\n // fire chipDelete callback\n if (typeof this.options.onChipDelete === 'function') {\n this.options.onChipDelete(this.el, chip);\n }\n }\n\n /**\n * Select nth chip.\n * @param chipIndex Index of chip\n */\n selectChip(chipIndex: number) {\n const chip = this._chips[chipIndex];\n if (!chip) return;\n this._selectedChip = chip;\n chip.focus();\n // fire chipSelect callback\n if (typeof this.options.onChipSelect === 'function') {\n this.options.onChipSelect(this.el, chip);\n }\n }\n\n static Init() {\n // Handle removal of static chips - markup written by hand, with no Chips\n // instance behind it. Where there *is* an instance, _handleChipClick owns\n // the close button: removing the node here as well left chipsData holding\n // an entry whose element was gone.\n Utils.onDocumentReady(() => {\n const chips = document.querySelectorAll('.chips');\n chips.forEach((el) => {\n el.addEventListener('click', (e) => {\n if (el['Expressive_Chips']) return;\n if ((<HTMLElement>e.target).classList.contains('close')) {\n const chip = (<HTMLElement>e.target).closest('.chip');\n if (chip) chip.remove();\n }\n });\n });\n });\n }\n\n static {\n Chips._keydown = false;\n }\n}\n", "import { Component, BaseOptions, InitElements, MElement } from '../core/component';\nimport { Utils } from '../core/utils';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface RangeOptions extends BaseOptions {}\n\nconst _defaults: RangeOptions = {};\n\nexport class Range extends Component<RangeOptions> {\n declare el: HTMLInputElement;\n private _mousedown: boolean;\n value: HTMLElement;\n thumb: HTMLElement;\n\n constructor(el: HTMLInputElement, options: Partial<RangeOptions>) {\n super(el, options, Range);\n this.el['Expressive_Range'] = this;\n\n this.options = {\n ...Range.defaults,\n ...options\n };\n\n this._mousedown = false;\n this._setupThumb();\n this._sync();\n this._setupEventHandlers();\n }\n\n static get defaults(): RangeOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Range.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLInputElement, options?: Partial<RangeOptions>): Range;\n /**\n * Initializes instances of Range.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: InitElements<HTMLInputElement | MElement>,\n options?: Partial<RangeOptions>\n ): Range[];\n /**\n * Initializes instances of Range.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLInputElement | InitElements<HTMLInputElement | MElement>,\n options: Partial<RangeOptions> = {}\n ): Range | Range[] {\n return super.init(els, options, Range);\n }\n\n static getInstance(el: HTMLInputElement): Range {\n return el['Expressive_Range'];\n }\n\n destroy() {\n this._removeEventHandlers();\n this._removeThumb();\n this.el['Expressive_Range'] = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('change', this._handleRangeChange);\n this.el.addEventListener('mousedown', this._handleRangeMousedownTouchstart);\n this.el.addEventListener('touchstart', this._handleRangeMousedownTouchstart);\n this.el.addEventListener('input', this._handleRangeInputMousemoveTouchmove);\n this.el.addEventListener('mousemove', this._handleRangeInputMousemoveTouchmove);\n // Never calls preventDefault, so it does not need to block scrolling.\n this.el.addEventListener('touchmove', this._handleRangeInputMousemoveTouchmove, {\n passive: true\n });\n this.el.addEventListener('mouseup', this._handleRangeMouseupTouchend);\n this.el.addEventListener('touchend', this._handleRangeMouseupTouchend);\n this.el.addEventListener('blur', this._handleRangeBlurMouseoutTouchleave);\n this.el.addEventListener('mouseout', this._handleRangeBlurMouseoutTouchleave);\n this.el.addEventListener('touchleave', this._handleRangeBlurMouseoutTouchleave);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('change', this._handleRangeChange);\n this.el.removeEventListener('mousedown', this._handleRangeMousedownTouchstart);\n this.el.removeEventListener('touchstart', this._handleRangeMousedownTouchstart);\n this.el.removeEventListener('input', this._handleRangeInputMousemoveTouchmove);\n this.el.removeEventListener('mousemove', this._handleRangeInputMousemoveTouchmove);\n this.el.removeEventListener('touchmove', this._handleRangeInputMousemoveTouchmove);\n this.el.removeEventListener('mouseup', this._handleRangeMouseupTouchend);\n this.el.removeEventListener('touchend', this._handleRangeMouseupTouchend);\n this.el.removeEventListener('blur', this._handleRangeBlurMouseoutTouchleave);\n this.el.removeEventListener('mouseout', this._handleRangeBlurMouseoutTouchleave);\n this.el.removeEventListener('touchleave', this._handleRangeBlurMouseoutTouchleave);\n }\n\n _handleRangeChange = () => {\n this._sync();\n this.thumb.classList.add('active');\n };\n\n _handleRangeMousedownTouchstart = (e: MouseEvent | TouchEvent) => {\n this._mousedown = true;\n this.el.classList.add('active');\n this._sync();\n if (e.type !== 'input') {\n this.thumb.classList.add('active');\n }\n };\n\n _handleRangeInputMousemoveTouchmove = () => {\n if (this._mousedown) {\n this._sync();\n this.thumb.classList.add('active');\n }\n };\n\n _handleRangeMouseupTouchend = () => {\n this._mousedown = false;\n this.el.classList.remove('active');\n };\n\n _handleRangeBlurMouseoutTouchleave = () => {\n if (!this._mousedown) {\n this.thumb.classList.remove('active');\n }\n };\n\n _setupThumb() {\n this.thumb = document.createElement('span');\n this.value = document.createElement('span');\n this.thumb.classList.add('thumb');\n this.value.classList.add('value');\n this.thumb.append(this.value);\n this.el.after(this.thumb);\n }\n\n _removeThumb() {\n this.thumb.remove();\n }\n\n _isVertical(): boolean {\n return !!this.el.closest('.vertical');\n }\n\n _sync() {\n const max = parseFloat(this.el.getAttribute('max')) || 100;\n const min = parseFloat(this.el.getAttribute('min')) || 0;\n const val = parseFloat(this.el.value) || 0;\n const percent = max === min ? 0 : (val - min) / (max - min);\n\n // Read before writing. This runs on every pointer move during a drag, and\n // setting the custom property first made each of the four offset reads\n // below flush a fresh layout.\n const left = this.el.offsetLeft;\n const top = this.el.offsetTop;\n const width = this.el.offsetWidth;\n const height = this.el.offsetHeight;\n\n this.el.style.setProperty('--md-comp-slider-active-fraction', `${percent * 100}%`);\n this.value.textContent = this.el.value;\n if (this._isVertical()) {\n this.thumb.style.left = `${left + width / 2}px`;\n this.thumb.style.top = `${top + (1 - percent) * height}px`;\n } else {\n this.thumb.style.left = `${left + percent * width}px`;\n this.thumb.style.top = `${top}px`;\n }\n }\n\n /**\n * Initializes every range input in the current document.\n */\n static Init() {\n // Deferred like every other Init(): this ran at import time, so a bundle\n // loaded in <head> found no inputs at all.\n Utils.onDocumentReady(() => {\n Range.init(document.querySelectorAll('input[type=range]') as NodeListOf<HTMLInputElement>, {});\n });\n }\n}\n", "import { Utils } from '../core/utils';\n\nexport class Forms {\n /**\n * Checks if the label has validation and apply\n * the correct class and styles\n * @param textfield\n */\n static validateField(textfield: HTMLInputElement) {\n if (!textfield) {\n console.error('No text field element found');\n return;\n }\n\n const hasLength = textfield.getAttribute('data-length') !== null;\n const lenAttr = parseInt(textfield.getAttribute('data-length'));\n const len = textfield.value.length;\n\n if (\n len === 0 &&\n textfield.validity.badInput === false &&\n !textfield.required &&\n textfield.classList.contains('validate')\n ) {\n textfield.classList.remove('invalid');\n } else if (textfield.classList.contains('validate')) {\n // Check for character counter attributes\n if (\n (textfield.validity.valid && hasLength && len <= lenAttr) ||\n (textfield.validity.valid && !hasLength)\n ) {\n textfield.classList.remove('invalid');\n } else {\n textfield.classList.add('invalid');\n }\n }\n }\n\n /**\n * Resizes the given TextArea after updating the\n * value content dynamically.\n * @param e EventTarget\n */\n static textareaAutoResize(e: EventTarget) {\n const textarea = e as HTMLTextAreaElement;\n if (!textarea) return;\n\n // Measure the textarea against itself: collapse it to its natural height,\n // then read the content height back. `.expressive-textarea` is\n // `overflow-y: hidden`, so scrollHeight is the full content height and\n // offsetHeight - clientHeight is exactly the borders (no scrollbar to\n // account for) - which border-box sizing needs added back.\n //\n // This replaces a mirror div that the value was copied into via\n // `innerHTML = innerHTML.replace(...)` - a full serialize and reparse of\n // the text on every keystroke, plus getComputedStyle and seven style\n // writes, run twice per keystroke because it was bound to keydown and\n // keyup both.\n if (!textarea.hasAttribute('original-height')) {\n textarea.setAttribute('original-height', textarea.getBoundingClientRect().height.toString());\n }\n const originalHeight = parseInt(textarea.getAttribute('original-height'));\n if (isNaN(originalHeight)) return;\n\n textarea.style.height = 'auto';\n // Three reads after a single write: one layout flush for the whole resize.\n const borders = textarea.offsetHeight - textarea.clientHeight;\n const contentHeight = textarea.scrollHeight + borders;\n textarea.style.height = Math.max(originalHeight, contentHeight) + 'px';\n }\n\n static Init() {\n Utils.onDocumentReady(() => {\n document.addEventListener('change', (e: KeyboardEvent) => {\n const target = <HTMLInputElement>e.target;\n if (target instanceof HTMLInputElement) {\n // The sibling-label loop that used to live here compared\n // `tagName == 'label'` (tagName is uppercase) so it never matched,\n // and no rule in the Sass styles `label.active` anyway - the\n // floating label is driven by CSS, not by a class from here.\n Forms.validateField(target);\n }\n });\n\n document.addEventListener('keyup', (e: KeyboardEvent) => {\n const target = <HTMLInputElement>e.target;\n // Radio and Checkbox focus class\n if (target instanceof HTMLInputElement && ['radio', 'checkbox'].includes(target.type)) {\n // TAB, check if tabbing to radio or checkbox.\n if (Utils.keys.TAB.includes(e.key)) {\n target.classList.add('tabbed');\n target.addEventListener('blur', () => target.classList.remove('tabbed'), {\n once: true\n });\n }\n }\n });\n\n document.querySelectorAll('.expressive-textarea').forEach((textArea: HTMLTextAreaElement) => {\n Forms.InitTextarea(textArea);\n });\n\n // File Input Path\n document\n .querySelectorAll('.file-field input[type=\"file\"]')\n .forEach((fileInput: HTMLInputElement) => {\n Forms.InitFileInputPath(fileInput);\n });\n });\n }\n\n static InitTextarea(textarea: HTMLTextAreaElement) {\n // Save Data in Element\n textarea.setAttribute('original-height', textarea.getBoundingClientRect().height.toString());\n Forms.textareaAutoResize(textarea);\n // `input` rather than keydown + keyup: it fires once per actual value\n // change and also covers paste, drag-drop and IME composition, which the\n // key events missed.\n textarea.addEventListener('input', (e) => Forms.textareaAutoResize(e.target));\n }\n\n static InitFileInputPath(fileInput: HTMLInputElement) {\n fileInput.addEventListener('change', () => {\n const fileField = fileInput.closest('.file-field');\n const pathInput = <HTMLInputElement>fileField.querySelector('input.file-path');\n const files = fileInput.files;\n const filenames = [];\n for (let i = 0; i < files.length; i++) {\n filenames.push(files[i].name);\n }\n pathInput.value = filenames.join(', ');\n pathInput.dispatchEvent(\n new Event('change', { bubbles: true, cancelable: true, composed: true })\n );\n });\n }\n}\n", "import { Utils } from '../core/utils';\n\ntype RGBColor = {\n r: number;\n g: number;\n b: number;\n};\n\ntype Position = {\n x: number;\n y: number;\n};\n\nexport class Waves {\n private static _offset(el: HTMLElement) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.pageYOffset - docElem.clientTop,\n left: box.left + window.pageXOffset - docElem.clientLeft\n };\n }\n\n // https://phoenix-dx.com/css-techniques-for-material-ripple-effect/\n\n static renderWaveEffect(\n targetElement: HTMLElement,\n position: Position | null = null,\n color: RGBColor | null = null\n ): void {\n const isCentered = position === null;\n const duration = 500;\n let animationFrame: number, animationStart: number;\n const animationStep = function (timestamp: number) {\n if (!animationStart) {\n animationStart = timestamp;\n }\n const frame = timestamp - animationStart;\n if (frame < duration) {\n const easing = (frame / duration) * (2 - frame / duration);\n const circle = isCentered\n ? 'circle at 50% 50%'\n : `circle at ${position.x}px ${position.y}px`;\n const waveColor = `rgba(${color?.r || 0}, ${color?.g || 0}, ${color?.b || 0}, ${0.3 * (1 - easing)})`;\n const stop = 90 * easing + '%';\n targetElement.style.backgroundImage =\n 'radial-gradient(' +\n circle +\n ', ' +\n waveColor +\n ' ' +\n stop +\n ', transparent ' +\n stop +\n ')';\n animationFrame = window.requestAnimationFrame(animationStep);\n } else {\n targetElement.style.backgroundImage = 'none';\n window.cancelAnimationFrame(animationFrame);\n }\n };\n animationFrame = window.requestAnimationFrame(animationStep);\n }\n\n static Init() {\n Utils.onDocumentReady(() => {\n document.body.addEventListener('click', (e) => {\n const trigger = <HTMLElement>e.target;\n const el = <HTMLElement>trigger.closest('.waves-effect');\n if (el && el.contains(trigger)) {\n const isCircular = el.classList.contains('waves-circle');\n const offset = Waves._offset(el); // one rect, not one per axis\n const x = e.pageX - offset.left;\n const y = e.pageY - offset.top;\n\n let color = null;\n if (el.classList.contains('waves-light')) color = { r: 255, g: 255, b: 255 };\n\n Waves.renderWaveEffect(el, isCircular ? null : { x, y }, color);\n }\n });\n });\n }\n}\n", "import { Component, BaseOptions, InitElements, MElement, Openable } from \"../core/component\";\nimport { Utils } from '../core/utils';\n\nexport interface FloatingActionButtonOptions extends BaseOptions {\n /**\n * Direction FAB menu opens.\n * @default \"top\"\n */\n direction: 'top' | 'right' | 'bottom' | 'left';\n /**\n * true: FAB menu appears on hover, false: FAB menu appears on click.\n * @default true\n */\n hoverEnabled: boolean;\n /**\n * Enable transit the FAB into a toolbar on click.\n * @default false\n */\n toolbarEnabled: boolean;\n}\n\nconst _defaults: FloatingActionButtonOptions = {\n direction: 'top',\n hoverEnabled: true,\n toolbarEnabled: false\n};\n\nexport class FloatingActionButton\n extends Component<FloatingActionButtonOptions>\n implements Openable\n{\n /**\n * Describes open/close state of FAB.\n */\n isOpen: boolean;\n\n private _anchor: HTMLElement;\n private _menu: HTMLElement | null;\n private _floatingBtns: HTMLElement[];\n private _floatingBtnsReverse: HTMLElement[];\n /** Toolbar-mode backdrop, kept so closing can take it back out. */\n private _backdrop: HTMLElement | null = null;\n\n offsetY: number;\n offsetX: number;\n btnBottom: number;\n btnLeft: number;\n btnWidth: number;\n\n constructor(el: HTMLElement, options: Partial<FloatingActionButtonOptions>) {\n super(el, options, FloatingActionButton);\n this.el['Expressive_FloatingActionButton'] = this;\n\n this.options = {\n ...FloatingActionButton.defaults,\n ...options\n };\n\n this.isOpen = false;\n this._anchor = this.el.querySelector('a, button');\n this._menu = this.el.querySelector('ul');\n this._floatingBtns = Array.from(this.el.querySelectorAll('ul .btn-floating'));\n this._floatingBtnsReverse = this._floatingBtns.reverse();\n this.offsetY = 0;\n this.offsetX = 0;\n\n this.el.classList.add(`direction-${this.options.direction}`);\n if (this._anchor) this._anchor.tabIndex = 0;\n if (this._menu) this._menu.ariaExpanded = 'false';\n if (this.options.direction === 'top')\n this.offsetY = 40;\n else if (this.options.direction === 'right')\n this.offsetX = -40;\n else if (this.options.direction === 'bottom')\n this.offsetY = -40;\n else\n this.offsetX = 40;\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n /**\n * Initializes instance of FloatingActionButton.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(\n el: HTMLElement,\n options?: Partial<FloatingActionButtonOptions>\n ): FloatingActionButton;\n /**\n * Initializes instances of FloatingActionButton.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: InitElements<MElement>,\n options?: Partial<FloatingActionButtonOptions>\n ): FloatingActionButton[];\n /**\n * Initializes instances of FloatingActionButton.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<FloatingActionButtonOptions> = {}\n ): FloatingActionButton | FloatingActionButton[] {\n return super.init(els, options, FloatingActionButton);\n }\n\n static getInstance(el: HTMLElement): FloatingActionButton {\n return el['Expressive_FloatingActionButton'];\n }\n\n destroy() {\n this._removeEventHandlers();\n // Toolbar mode parks a capture-phase scroll listener and a body click\n // listener on the document; close() is what takes them back off.\n this.close();\n this.el['Expressive_FloatingActionButton'] = undefined;\n }\n\n _setupEventHandlers() {\n if (this.options.hoverEnabled && !this.options.toolbarEnabled) {\n this.el.addEventListener('mouseenter', this.open);\n this.el.addEventListener('mouseleave', this.close);\n } else {\n this.el.addEventListener('click', this._handleFABClick);\n }\n this.el.addEventListener('keypress', this._handleFABKeyPress);\n }\n\n _removeEventHandlers() {\n if (this.options.hoverEnabled && !this.options.toolbarEnabled) {\n this.el.removeEventListener('mouseenter', this.open);\n this.el.removeEventListener('mouseleave', this.close);\n } else {\n this.el.removeEventListener('click', this._handleFABClick);\n }\n this.el.removeEventListener('keypress', this._handleFABKeyPress);\n }\n\n _handleFABClick = () => {\n this._handleFABToggle()\n}\n\n _handleFABKeyPress = (e) => {\n if(Utils.keys.ENTER.includes(e.key)) {\n this._handleFABToggle();\n }\n }\n\n _handleFABToggle = () => {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n };\n\n _handleDocumentClick = (e: MouseEvent) => {\n const elem = e.target;\n if (elem !== this._menu) this.close();\n };\n\n /**\n * Open FAB.\n */\n open = (): void => {\n if (this.isOpen) return;\n if (this.options.toolbarEnabled) this._animateInToolbar();\n else this._animateInFAB();\n this.isOpen = true;\n };\n\n /**\n * Close FAB.\n */\n close = (): void => {\n if (!this.isOpen) return;\n if (this.options.toolbarEnabled) {\n window.removeEventListener('scroll', this.close, true);\n document.body.removeEventListener('click', this._handleDocumentClick, true);\n this._animateOutToolbar();\n } else {\n this._animateOutFAB();\n }\n this.isOpen = false;\n };\n\n _animateInFAB() {\n this.el.classList.add('active');\n if (this._menu) this._menu.ariaExpanded = 'true';\n const delayIncrement = 40;\n const duration = 275;\n\n this._floatingBtnsReverse.forEach((el, index) => {\n const delay = delayIncrement * index;\n el.style.transition = 'none';\n el.style.opacity = '0';\n el.style.transform = `translate(${this.offsetX}px, ${this.offsetY}px) scale(0.4)`;\n setTimeout(() => {\n // from:\n el.style.opacity = '0.4';\n // easeInOutQuad\n setTimeout(() => {\n // to:\n el.style.transition = `opacity ${duration}ms ease, transform ${duration}ms ease`;\n el.style.opacity = '1';\n el.style.transform = 'translate(0, 0) scale(1)';\n el.tabIndex = 0;\n }, 1);\n }, delay);\n });\n }\n\n _animateOutFAB() {\n const duration = 175;\n setTimeout(() => {\n this.el.classList.remove('active');\n if (this._menu) this._menu.ariaExpanded = 'false';\n }, duration);\n this._floatingBtnsReverse.forEach((el) => {\n el.style.transition = `opacity ${duration}ms ease, transform ${duration}ms ease`;\n // to\n el.style.opacity = '0';\n el.style.transform = `translate(${this.offsetX}px, ${this.offsetY}px) scale(0.4)`;\n el.tabIndex = -1;\n });\n }\n\n _animateInToolbar() {\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const btnRect = this.el.getBoundingClientRect();\n const fabColor = getComputedStyle(this._anchor).backgroundColor;\n\n // The backdrop has to be in the document before it has a width. Reading\n // `backdrop[0].clientWidth` off a bare element - a leftover from the\n // cash-based original, where [0] unwrapped the collection - threw here and\n // took the whole of toolbar mode with it.\n const backdrop = document.createElement('div');\n backdrop.classList.add('fab-backdrop');\n backdrop.style.backgroundColor = fabColor;\n this._anchor.append(backdrop);\n this._backdrop = backdrop;\n const backdropWidth = backdrop.clientWidth;\n const scaleFactor = backdropWidth > 0 ? windowWidth / backdropWidth : 1;\n\n this.offsetX = btnRect.left - windowWidth / 2 + btnRect.width / 2;\n this.offsetY = windowHeight - btnRect.bottom;\n this.btnBottom = btnRect.bottom;\n this.btnLeft = btnRect.left;\n this.btnWidth = btnRect.width;\n\n // Set initial state\n this.el.classList.add('active');\n this.el.style.textAlign = 'center';\n this.el.style.width = '100%';\n this.el.style.bottom = '0';\n this.el.style.left = '0';\n this.el.style.transform = 'translateX(' + this.offsetX + 'px)';\n this.el.style.transition = 'none';\n if (this._menu) this._menu.ariaExpanded = 'true';\n\n // Was missing its closing paren, so the browser dropped the declaration.\n this._anchor.style.transform = `translateY(${this.offsetY}px)`;\n this._anchor.style.transition = 'none';\n\n setTimeout(() => {\n this.el.style.transform = '';\n this.el.style.transition =\n 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s';\n\n this._anchor.style.overflow = 'visible';\n this._anchor.style.transform = '';\n this._anchor.style.transition = 'transform .2s';\n\n setTimeout(() => {\n this.el.style.overflow = 'hidden';\n this.el.style.backgroundColor = fabColor;\n\n backdrop.style.transform = 'scale(' + scaleFactor + ')';\n backdrop.style.transition = 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)';\n\n this._menu.querySelectorAll('li > a').forEach((a: HTMLAnchorElement) => {\n a.style.opacity = '1';\n a.tabIndex = 0;\n });\n\n // Scroll to close.\n window.addEventListener('scroll', this.close, true);\n document.body.addEventListener('click', this._handleDocumentClick, true);\n }, 100);\n }, 0);\n }\n\n /**\n * Reverse {@link _animateInToolbar}.\n *\n * Closing used to only unbind the listeners, leaving the FAB stretched\n * across the viewport with its backdrop still in the DOM - and a fresh\n * backdrop appended on every subsequent open.\n */\n _animateOutToolbar() {\n const backdrop = this._backdrop;\n this._backdrop = null;\n\n this._menu?.querySelectorAll('li > a').forEach((a: HTMLAnchorElement) => {\n a.style.opacity = '';\n a.tabIndex = -1;\n });\n\n if (backdrop) {\n backdrop.style.transition = 'transform .2s';\n backdrop.style.transform = 'scale(0)';\n }\n\n this.el.style.overflow = '';\n this.el.style.backgroundColor = '';\n this.el.style.transition = 'transform .2s';\n this.el.style.transform = `translateX(${this.offsetX}px)`;\n this._anchor.style.transition = 'transform .2s';\n this._anchor.style.transform = `translateY(${this.offsetY}px)`;\n\n setTimeout(() => {\n backdrop?.remove();\n this.el.classList.remove('active');\n if (this._menu) this._menu.ariaExpanded = 'false';\n // Clear every inline style _animateInToolbar wrote.\n this.el.style.textAlign = '';\n this.el.style.width = '';\n this.el.style.bottom = '';\n this.el.style.left = '';\n this.el.style.transform = '';\n this.el.style.transition = '';\n this._anchor.style.overflow = '';\n this._anchor.style.transform = '';\n this._anchor.style.transition = '';\n }, 200);\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface CarouselOptions extends BaseOptions {\n /**\n * Transition duration in milliseconds.\n * @default 200\n */\n duration: number;\n /**\n * Perspective zoom. If 0, all items are the same size.\n * @default -100\n */\n dist: number;\n /**\n * Set the spacing of the center item.\n * @default 0\n */\n shift: number;\n /**\n * Set the padding between non center items.\n * @default 0\n */\n padding: number;\n /**\n * Set the number of visible items.\n * @default 5\n */\n numVisible: number;\n /**\n * Make the carousel a full width slider like the second example.\n * @default false\n */\n fullWidth: boolean;\n /**\n * Set to true to show indicators.\n * @default false\n */\n indicators: boolean;\n /**\n * Don't wrap around and cycle through items.\n * @default false\n */\n noWrap: boolean;\n /**\n * Callback for when a new slide is cycled to.\n * @default null\n */\n onCycleTo: (current: Element, dragged: boolean) => void;\n}\n\nconst _defaults: CarouselOptions = {\n duration: 200, // ms\n dist: -100, // zoom scale TODO: make this more intuitive as an option\n shift: 0, // spacing for center image\n padding: 0, // Padding between non center items\n numVisible: 5, // Number of visible items in carousel\n fullWidth: false, // Change to full width styles\n indicators: false, // Toggle indicators\n noWrap: false, // Don't wrap around and cycle through items.\n onCycleTo: null // Callback for when a new slide is cycled to.\n};\n\nexport class Carousel extends Component<CarouselOptions> {\n hasMultipleSlides: boolean;\n showIndicators: boolean;\n noWrap: boolean;\n /** If the carousel is being clicked or tapped. */\n pressed: boolean;\n /** If the carousel is currently being dragged. */\n dragged: boolean;\n offset: number;\n target: number;\n images: HTMLElement[];\n itemWidth: number;\n itemHeight: number;\n dim: number;\n _indicators: HTMLUListElement;\n count: number;\n verticalDragged: boolean;\n reference: number;\n referenceY: number;\n velocity: number;\n frame: number;\n timestamp: number;\n ticker: ReturnType<typeof setTimeout>;\n amplitude: number;\n /** The index of the center carousel item. */\n center: number = 0;\n imageHeight: number;\n scrollingTimeout: ReturnType<typeof setTimeout>;\n oneTimeCallback: (current: Element, dragged: boolean) => void | null;\n\n constructor(el: HTMLElement, options: Partial<CarouselOptions>) {\n super(el, options, Carousel);\n this.el['Expressive_Carousel'] = this;\n\n this.options = {\n ...Carousel.defaults,\n ...options\n };\n\n // Setup\n this.hasMultipleSlides = this.el.querySelectorAll('.carousel-item').length > 1;\n this.showIndicators = this.options.indicators && this.hasMultipleSlides;\n this.noWrap = this.options.noWrap || !this.hasMultipleSlides;\n this.pressed = false;\n this.dragged = false;\n this.offset = this.target = 0;\n this.images = [];\n const firstItem = this.el.querySelector('.carousel-item');\n if (!firstItem) {\n console.error('Carousel: no .carousel-item elements to show');\n return;\n }\n this.itemWidth = firstItem.clientWidth;\n this.itemHeight = firstItem.clientHeight;\n this.dim = this.itemWidth * 2 + this.options.padding || 1; // Make sure dim is non zero for divisions.\n\n // Full Width carousel setup\n if (this.options.fullWidth) {\n this.options.dist = 0;\n this._setCarouselHeight();\n\n // Offset fixed items when indicators.\n if (this.showIndicators) {\n this.el.querySelector('.carousel-fixed-item')?.classList.add('with-indicators');\n }\n }\n\n // Iterate through slides\n this._indicators = document.createElement('ul');\n this._indicators.classList.add('indicators');\n\n this.el.querySelectorAll('.carousel-item').forEach((item: HTMLElement, i) => {\n this.images.push(item);\n if (this.showIndicators) {\n const indicator = document.createElement('li');\n indicator.classList.add('indicator-item');\n indicator.tabIndex = 0;\n if (i === 0) {\n indicator.classList.add('active');\n }\n this._indicators.appendChild(indicator);\n }\n });\n\n if (this.showIndicators) this.el.appendChild(this._indicators);\n\n this.count = this.images.length;\n\n // Cap numVisible at count\n this.options.numVisible = Math.min(this.count, this.options.numVisible);\n\n this._setupEventHandlers();\n this._scroll(this.offset);\n }\n\n static get defaults(): CarouselOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Carousel.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<CarouselOptions>): Carousel;\n /**\n * Initializes instances of Carousel.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<CarouselOptions>): Carousel[];\n /**\n * Initializes instances of Carousel.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<CarouselOptions> = {}\n ): Carousel | Carousel[] {\n return super.init(els, options, Carousel);\n }\n\n static getInstance(el: HTMLElement): Carousel {\n return el['Expressive_Carousel'];\n }\n\n destroy() {\n this._removeEventHandlers();\n this.el['Expressive_Carousel'] = undefined;\n }\n\n _setupEventHandlers() {\n if (typeof window.ontouchstart !== 'undefined') {\n this.el.addEventListener('touchstart', this._handleCarouselTap);\n this.el.addEventListener('touchmove', this._handleCarouselDrag);\n this.el.addEventListener('touchend', this._handleCarouselRelease);\n }\n this.el.addEventListener('mousedown', this._handleCarouselTap);\n this.el.addEventListener('mousemove', this._handleCarouselDrag);\n this.el.addEventListener('mouseup', this._handleCarouselRelease);\n this.el.addEventListener('mouseleave', this._handleCarouselRelease);\n this.el.addEventListener('click', this._handleCarouselClick);\n if (this.showIndicators && this._indicators) {\n this._indicators.querySelectorAll('.indicator-item').forEach((el) => {\n el.addEventListener('click', this._handleIndicatorClick);\n el.addEventListener('keypress', this._handleIndicatorKeyPress);\n });\n }\n // Resize\n window.addEventListener('resize', this._handleThrottledResize);\n }\n\n _removeEventHandlers() {\n if (typeof window.ontouchstart !== 'undefined') {\n this.el.removeEventListener('touchstart', this._handleCarouselTap);\n this.el.removeEventListener('touchmove', this._handleCarouselDrag);\n this.el.removeEventListener('touchend', this._handleCarouselRelease);\n }\n this.el.removeEventListener('mousedown', this._handleCarouselTap);\n this.el.removeEventListener('mousemove', this._handleCarouselDrag);\n this.el.removeEventListener('mouseup', this._handleCarouselRelease);\n this.el.removeEventListener('mouseleave', this._handleCarouselRelease);\n this.el.removeEventListener('click', this._handleCarouselClick);\n if (this.showIndicators && this._indicators) {\n this._indicators.querySelectorAll('.indicator-item').forEach((el) => {\n el.removeEventListener('click', this._handleIndicatorClick);\n });\n }\n window.removeEventListener('resize', this._handleThrottledResize);\n }\n\n // Built once per instance. Creating the throttled function inside the\n // handler - as this used to - produced a fresh closure per resize event and\n // never actually called it, so resizing did nothing at all.\n _handleThrottledResize = Utils.throttle(() => this._handleResize(), 200);\n\n _handleCarouselTap = (e: MouseEvent | TouchEvent) => {\n // Fixes firefox draggable image bug\n if (e.type === 'mousedown' && (<HTMLElement>e.target).tagName === 'IMG') {\n e.preventDefault();\n }\n this.pressed = true;\n this.dragged = false;\n this.verticalDragged = false;\n this.reference = this._xpos(e);\n this.referenceY = this._ypos(e);\n\n this.velocity = this.amplitude = 0;\n this.frame = this.offset;\n this.timestamp = Date.now();\n clearInterval(this.ticker);\n this.ticker = setInterval(this._track, 100);\n };\n\n _handleCarouselDrag = (e: MouseEvent | TouchEvent) => {\n let x: number, y: number, delta: number, deltaY: number;\n if (this.pressed) {\n x = this._xpos(e);\n y = this._ypos(e);\n delta = this.reference - x;\n deltaY = Math.abs(this.referenceY - y);\n if (deltaY < 30 && !this.verticalDragged) {\n // If vertical scrolling don't allow dragging.\n if (delta > 2 || delta < -2) {\n this.dragged = true;\n this.reference = x;\n this._scroll(this.offset + delta);\n }\n } else if (this.dragged) {\n // If dragging don't allow vertical scroll.\n e.preventDefault();\n e.stopPropagation();\n return false;\n } else {\n // Vertical scrolling.\n this.verticalDragged = true;\n }\n }\n if (this.dragged) {\n // If dragging don't allow vertical scroll.\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n };\n\n _handleCarouselRelease = (e: MouseEvent | TouchEvent) => {\n if (this.pressed) {\n this.pressed = false;\n } else {\n return;\n }\n clearInterval(this.ticker);\n this.target = this.offset;\n if (this.velocity > 10 || this.velocity < -10) {\n this.amplitude = 0.9 * this.velocity;\n this.target = this.offset + this.amplitude;\n }\n this.target = Math.round(this.target / this.dim) * this.dim;\n // No wrap of items.\n if (this.noWrap) {\n if (this.target >= this.dim * (this.count - 1)) {\n this.target = this.dim * (this.count - 1);\n } else if (this.target < 0) {\n this.target = 0;\n }\n }\n this.amplitude = this.target - this.offset;\n this.timestamp = Date.now();\n requestAnimationFrame(this._autoScroll);\n if (this.dragged) {\n e.preventDefault();\n e.stopPropagation();\n }\n return false;\n };\n\n _handleCarouselClick = (e: MouseEvent | TouchEvent) => {\n // Disable clicks if carousel was dragged.\n if (this.dragged) {\n e.preventDefault();\n e.stopPropagation();\n return false;\n } else if (!this.options.fullWidth) {\n const clickedElem = (<HTMLElement>e.target).closest('.carousel-item');\n if (!clickedElem) return;\n const clickedIndex = [...clickedElem.parentNode.children].indexOf(clickedElem);\n const diff = this._wrap(this.center) - clickedIndex;\n // Disable clicks if carousel was shifted by click\n if (diff !== 0) {\n e.preventDefault();\n e.stopPropagation();\n }\n // fixes https://github.com/materializecss/materialize/issues/180\n if (clickedIndex < 0) {\n // relative X position > center of carousel = clicked at the right part of the carousel\n if (\n (e as MouseEvent).clientX - (e.target as HTMLElement).getBoundingClientRect().left >\n this.el.clientWidth / 2\n ) {\n this.next();\n } else {\n this.prev();\n }\n } else {\n this._cycleTo(clickedIndex);\n }\n }\n };\n\n _handleIndicatorClick = (e: Event) => {\n e.stopPropagation();\n this._handleIndicatorInteraction(e);\n };\n\n _handleIndicatorKeyPress = (e: KeyboardEvent) => {\n e.stopPropagation();\n if (Utils.keys.ENTER.includes(e.key)) {\n this._handleIndicatorInteraction(e);\n }\n };\n\n _handleIndicatorInteraction = (e: Event) => {\n const indicator = (<HTMLElement>e.target).closest('.indicator-item');\n if (indicator) {\n const index = [...indicator.parentNode.children].indexOf(indicator);\n this._cycleTo(index);\n }\n };\n\n _handleResize = () => {\n if (this.options.fullWidth) {\n const firstItem = this.el.querySelector('.carousel-item');\n const activeItem = this.el.querySelector('.carousel-item.active');\n if (!firstItem || !activeItem) return;\n this.itemWidth = firstItem.clientWidth;\n this.imageHeight = activeItem.clientHeight;\n this.dim = this.itemWidth * 2 + this.options.padding;\n this.offset = this.center * 2 * this.itemWidth;\n this.target = this.offset;\n this._setCarouselHeight(true);\n } else {\n this._scroll();\n }\n };\n\n _setCarouselHeight(imageOnly: boolean = false) {\n const firstSlide = this.el.querySelector('.carousel-item.active')\n ? this.el.querySelector('.carousel-item.active')\n : this.el.querySelector('.carousel-item');\n\n const firstImage = firstSlide.querySelector('img');\n if (firstImage) {\n if (firstImage.complete) {\n // If image won't trigger the load event\n const imageHeight = firstImage.clientHeight;\n if (imageHeight > 0) {\n this.el.style.height = imageHeight + 'px';\n } else {\n // If image still has no height, use the natural dimensions to calculate\n const naturalWidth = firstImage.naturalWidth;\n const naturalHeight = firstImage.naturalHeight;\n const adjustedHeight = (this.el.clientWidth / naturalWidth) * naturalHeight;\n this.el.style.height = adjustedHeight + 'px';\n }\n } else {\n // Get height when image is loaded normally\n firstImage.addEventListener('load', () => {\n this.el.style.height = firstImage.offsetHeight + 'px';\n });\n }\n } else if (!imageOnly) {\n const slideHeight = firstSlide.clientHeight;\n this.el.style.height = slideHeight + 'px';\n }\n }\n\n _xpos(e: MouseEvent | TouchEvent) {\n // touch event\n if (e.type.startsWith('touch') && (e as TouchEvent).targetTouches.length >= 1) {\n return (e as TouchEvent).targetTouches[0].clientX;\n }\n // mouse event\n return (e as MouseEvent).clientX;\n }\n\n _ypos(e: MouseEvent | TouchEvent) {\n // touch event\n if (e.type.startsWith('touch') && (e as TouchEvent).targetTouches.length >= 1) {\n return (e as TouchEvent).targetTouches[0].clientY;\n }\n // mouse event\n return (e as MouseEvent).clientY;\n }\n\n _wrap(x: number) {\n return x >= this.count ? x % this.count : x < 0 ? this._wrap(this.count + (x % this.count)) : x;\n }\n\n _track = () => {\n const now: number = Date.now(),\n elapsed: number = now - this.timestamp,\n delta: number = this.offset - this.frame,\n v: number = (1000 * delta) / (1 + elapsed);\n // now = Date.now();\n // elapsed = now - this.timestamp;\n this.timestamp = now;\n // delta = this.offset - this.frame;\n this.frame = this.offset;\n // v = (1000 * delta) / (1 + elapsed);\n this.velocity = 0.8 * v + 0.2 * this.velocity;\n };\n\n _autoScroll = () => {\n let elapsed: number, delta: number;\n if (this.amplitude) {\n elapsed = Date.now() - this.timestamp;\n delta = this.amplitude * Math.exp(-elapsed / this.options.duration);\n if (delta > 2 || delta < -2) {\n this._scroll(this.target - delta);\n requestAnimationFrame(this._autoScroll);\n } else {\n this._scroll(this.target);\n }\n }\n };\n\n _scroll(x: number = 0) {\n // Track scrolling state\n if (!this.el.classList.contains('scrolling')) {\n this.el.classList.add('scrolling');\n }\n if (this.scrollingTimeout != null) {\n clearTimeout(this.scrollingTimeout);\n }\n this.scrollingTimeout = setTimeout(() => {\n this.el.classList.remove('scrolling');\n }, this.options.duration);\n\n // Start actual scroll\n this.offset = typeof x === 'number' ? x : this.offset;\n this.center = Math.floor((this.offset + this.dim / 2) / this.dim);\n\n const half: number = this.count >> 1,\n delta: number = this.offset - this.center * this.dim,\n dir: number = delta < 0 ? 1 : -1,\n tween: number = (-dir * delta * 2) / this.dim;\n let i: number,\n el: HTMLElement,\n alignment: string,\n zTranslation: number,\n tweenedOpacity: number,\n centerTweenedOpacity: number;\n const lastCenter = this.center;\n const numVisibleOffset = 1 / this.options.numVisible;\n\n // delta = this.offset - this.center * this.dim;\n // dir = delta < 0 ? 1 : -1;\n // tween = (-dir * delta * 2) / this.dim;\n // half = this.count >> 1;\n\n if (this.options.fullWidth) {\n alignment = 'translateX(0)';\n centerTweenedOpacity = 1;\n } else {\n alignment = 'translateX(' + (this.el.clientWidth - this.itemWidth) / 2 + 'px) ';\n alignment += 'translateY(' + (this.el.clientHeight - this.itemHeight) / 2 + 'px)';\n centerTweenedOpacity = 1 - numVisibleOffset * tween;\n }\n\n // Set indicator active\n if (this.showIndicators) {\n const diff = this.center % this.count;\n const activeIndicator = this._indicators.querySelector('.indicator-item.active');\n const activeIndicatorIndex = [...activeIndicator.parentNode.children].indexOf(\n activeIndicator\n );\n if (activeIndicatorIndex !== diff) {\n activeIndicator.classList.remove('active');\n const pos = diff < 0 ? this.count + diff : diff;\n this._indicators.querySelectorAll('.indicator-item')[pos].classList.add('active');\n }\n }\n\n // center\n // Don't show wrapped items.\n if (!this.noWrap || (this.center >= 0 && this.center < this.count)) {\n el = this.images[this._wrap(this.center)];\n\n // Add active class to center item. Clear it off whichever item actually\n // has it - this used to unconditionally clear the *first* item.\n if (!el.classList.contains('active')) {\n this.el.querySelector('.carousel-item.active')?.classList.remove('active');\n el.classList.add('active');\n }\n // The transform for the centre item is written once, after the loop\n // below. A second copy used to be written here too, multiplied by `i` -\n // which is not assigned until the loop starts, so it produced\n // `translateX(NaNpx)` and the browser dropped the declaration.\n }\n\n for (i = 1; i <= half; ++i) {\n // right side\n if (this.options.fullWidth) {\n zTranslation = this.options.dist;\n tweenedOpacity = i === half && delta < 0 ? 1 - tween : 1;\n } else {\n zTranslation = this.options.dist * (i * 2 + tween * dir);\n tweenedOpacity = 1 - numVisibleOffset * (i * 2 + tween * dir);\n }\n // Don't show wrapped items.\n if (!this.noWrap || this.center + i < this.count) {\n el = this.images[this._wrap(this.center + i)];\n const transformString = `${alignment} translateX(${\n this.options.shift + (this.dim * i - delta) / 2\n }px) translateZ(${zTranslation}px)`;\n this._updateItemStyle(el, tweenedOpacity, -i, transformString);\n }\n // left side\n if (this.options.fullWidth) {\n zTranslation = this.options.dist;\n tweenedOpacity = i === half && delta > 0 ? 1 - tween : 1;\n } else {\n zTranslation = this.options.dist * (i * 2 - tween * dir);\n tweenedOpacity = 1 - numVisibleOffset * (i * 2 - tween * dir);\n }\n // Don't show wrapped items.\n if (!this.noWrap || this.center - i >= 0) {\n el = this.images[this._wrap(this.center - i)];\n const transformString = `${alignment} translateX(${\n -this.options.shift + (-this.dim * i - delta) / 2\n }px) translateZ(${zTranslation}px)`;\n this._updateItemStyle(el, tweenedOpacity, -i, transformString);\n }\n }\n // center\n // Don't show wrapped items.\n if (!this.noWrap || (this.center >= 0 && this.center < this.count)) {\n el = this.images[this._wrap(this.center)];\n const transformString = `${alignment} translateX(${-delta / 2}px) translateX(${\n dir * this.options.shift * tween\n }px) translateZ(${this.options.dist * tween}px)`;\n this._updateItemStyle(el, centerTweenedOpacity, 0, transformString);\n }\n // onCycleTo callback\n const _currItem = this.el.querySelectorAll('.carousel-item')[this._wrap(this.center)];\n\n if (lastCenter !== this.center && typeof this.options.onCycleTo === 'function') {\n this.options.onCycleTo.call(this, _currItem, this.dragged);\n }\n // One time callback\n if (typeof this.oneTimeCallback === 'function') {\n this.oneTimeCallback.call(this, _currItem, this.dragged);\n this.oneTimeCallback = null;\n }\n }\n\n _updateItemStyle(el: HTMLElement, opacity: number, zIndex: number, transform: string) {\n el.style.transform = transform;\n el.style.zIndex = zIndex.toString();\n el.style.opacity = opacity.toString();\n el.style.visibility = 'visible';\n }\n\n _cycleTo(n: number, callback: CarouselOptions['onCycleTo'] = null) {\n let diff = (this.center % this.count) - n;\n // Account for wraparound.\n if (!this.noWrap) {\n if (diff < 0) {\n if (Math.abs(diff + this.count) < Math.abs(diff)) {\n diff += this.count;\n }\n } else if (diff > 0) {\n if (Math.abs(diff - this.count) < diff) {\n diff -= this.count;\n }\n }\n }\n this.target = this.dim * Math.round(this.offset / this.dim);\n // Next\n if (diff < 0) {\n this.target += this.dim * Math.abs(diff);\n } // Prev\n else if (diff > 0) {\n this.target -= this.dim * diff;\n }\n // Set one time callback\n if (typeof callback === 'function') {\n this.oneTimeCallback = callback;\n }\n // Scroll\n if (this.offset !== this.target) {\n this.amplitude = this.target - this.offset;\n this.timestamp = Date.now();\n requestAnimationFrame(this._autoScroll);\n }\n }\n\n /**\n * Move carousel to next slide or go forward a given amount of slides.\n * @param n How many times the carousel slides.\n */\n next(n: number = 1) {\n if (n === undefined || isNaN(n)) {\n n = 1;\n }\n let index = this.center + n;\n if (index >= this.count || index < 0) {\n if (this.noWrap) return;\n index = this._wrap(index);\n }\n this._cycleTo(index);\n }\n\n /**\n * Move carousel to previous slide or go back a given amount of slides.\n * @param n How many times the carousel slides.\n */\n prev(n: number = 1) {\n if (n === undefined || isNaN(n)) {\n n = 1;\n }\n let index = this.center - n;\n if (index >= this.count || index < 0) {\n if (this.noWrap) return;\n index = this._wrap(index);\n }\n this._cycleTo(index);\n }\n\n /**\n * Move carousel to nth slide.\n * @param n Index of slide.\n * @param callback \"onCycleTo\" optional callback.\n */\n set(n: number, callback?: CarouselOptions['onCycleTo']) {\n if (n === undefined || isNaN(n)) {\n n = 0;\n }\n if (n > this.count || n < 0) {\n if (this.noWrap) return;\n n = this._wrap(n);\n }\n this._cycleTo(n, callback);\n }\n}\n", "import { Component, InitElements, MElement } from '../core/component';\n\nexport interface BaseOptions {}\n\nconst _defaults = Object.freeze({});\n\ntype InputElement = HTMLInputElement | HTMLTextAreaElement;\n\nexport class CharacterCounter extends Component<object> {\n declare el: InputElement;\n /** Stores the reference to the counter HTML element. */\n counterEl: HTMLSpanElement;\n /** Specifies whether the input is valid or not. */\n isInvalid: boolean;\n /** Specifies whether the input text has valid length or not. */\n isValidLength: boolean;\n\n constructor(el: HTMLInputElement | HTMLTextAreaElement, options: Partial<BaseOptions>) {\n super(el, {}, CharacterCounter);\n this.el['Expressive_CharacterCounter'] = this;\n\n this.options = {\n ...CharacterCounter.defaults,\n ...options\n };\n\n this.isInvalid = false;\n this.isValidLength = false;\n\n this._setupCounter();\n this._setupEventHandlers();\n }\n\n static get defaults(): BaseOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of CharacterCounter.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: InputElement, options?: Partial<BaseOptions>): CharacterCounter;\n /**\n * Initializes instances of CharacterCounter.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: InitElements<InputElement | MElement>,\n options?: Partial<BaseOptions>\n ): CharacterCounter[];\n /**\n * Initializes instances of CharacterCounter.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: InputElement | InitElements<InputElement | MElement>,\n options: Partial<BaseOptions> = {}\n ): CharacterCounter | CharacterCounter[] {\n return super.init(els, options, CharacterCounter);\n }\n\n static getInstance(el: InputElement): CharacterCounter {\n return el['Expressive_CharacterCounter'];\n }\n\n destroy() {\n this._removeEventHandlers();\n this.el['Expressive_CharacterCounter'] = undefined;\n this._removeCounter();\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('focus', this.updateCounter, true);\n this.el.addEventListener('input', this.updateCounter, true);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('focus', this.updateCounter, true);\n this.el.removeEventListener('input', this.updateCounter, true);\n }\n\n _setupCounter() {\n this.counterEl = document.createElement('span');\n this.counterEl.classList.add('character-counter');\n this.counterEl.style.float = 'right';\n this.counterEl.style.fontSize = '12px';\n this.counterEl.style.height = '1';\n this.el.parentElement.appendChild(this.counterEl);\n }\n\n _removeCounter() {\n this.counterEl.remove();\n }\n\n updateCounter = () => {\n const maxLength = parseInt(this.el.getAttribute('maxlength')),\n actualLength = (this.el as HTMLInputElement).value.length;\n\n this.isValidLength = actualLength <= maxLength;\n let counterString = actualLength.toString();\n if (maxLength) {\n counterString += '/' + maxLength;\n this._validateInput();\n }\n this.counterEl.textContent = counterString;\n };\n\n _validateInput() {\n if (this.isValidLength && this.isInvalid) {\n this.isInvalid = false;\n this.el.classList.remove('invalid');\n } else if (!this.isValidLength && !this.isInvalid) {\n this.isInvalid = true;\n this.el.classList.remove('valid');\n this.el.classList.add('invalid');\n }\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface CollapsibleOptions extends BaseOptions {\n /**\n * If accordion versus collapsible.\n * @default true\n */\n accordion: boolean;\n /**\n * Transition in duration in milliseconds.\n * @default 300\n */\n inDuration: number;\n /**\n * Transition out duration in milliseconds.\n * @default 300\n */\n outDuration: number;\n /**\n * Callback function called before collapsible is opened.\n * @default null\n */\n onOpenStart: (el: Element) => void;\n /**\n * Callback function called after collapsible is opened.\n * @default null\n */\n onOpenEnd: (el: Element) => void;\n /**\n * Callback function called before collapsible is closed.\n * @default null\n */\n onCloseStart: (el: Element) => void;\n /**\n * Callback function called after collapsible is closed.\n * @default null\n */\n onCloseEnd: (el: Element) => void;\n}\n\nconst _defaults: CollapsibleOptions = {\n accordion: true,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n inDuration: 300,\n outDuration: 300\n};\n\nexport class Collapsible extends Component<CollapsibleOptions> {\n private _headers: HTMLElement[];\n\n constructor(el: HTMLElement, options: Partial<CollapsibleOptions>) {\n super(el, options, Collapsible);\n this.el['Expressive_Collapsible'] = this;\n\n this.options = {\n ...Collapsible.defaults,\n ...options\n };\n\n // Setup tab indices\n this._headers = Array.from(this.el.querySelectorAll('li > .collapsible-header'));\n this._headers.forEach((el) => (el.tabIndex = 0));\n this._setupEventHandlers();\n\n // Open active\n const activeBodies: HTMLElement[] = Array.from(\n this.el.querySelectorAll('li.active > .collapsible-body')\n );\n if (this.options.accordion) {\n if (activeBodies.length > 0) {\n // Accordion => open first active only\n this._setExpanded(activeBodies[0]);\n }\n } else {\n // Expandables => all active\n activeBodies.forEach((el) => this._setExpanded(el));\n }\n }\n\n static get defaults(): CollapsibleOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Collapsible.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<CollapsibleOptions>): Collapsible;\n /**\n * Initializes instances of Collapsible.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<CollapsibleOptions>): Collapsible[];\n /**\n * Initializes instances of Collapsible.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<CollapsibleOptions> = {}\n ): Collapsible | Collapsible[] {\n return super.init(els, options, Collapsible);\n }\n\n static getInstance(el: HTMLElement): Collapsible {\n return el['Expressive_Collapsible'];\n }\n\n destroy() {\n this._removeEventHandlers();\n this.el['Expressive_Collapsible'] = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('click', this._handleCollapsibleClick);\n this._headers.forEach((header) =>\n header.addEventListener('keydown', this._handleCollapsibleKeydown)\n );\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleCollapsibleClick);\n this._headers.forEach((header) =>\n header.removeEventListener('keydown', this._handleCollapsibleKeydown)\n );\n }\n\n _handleCollapsibleClick = (e: MouseEvent | KeyboardEvent) => {\n const header = (e.target as HTMLElement).closest('.collapsible-header');\n if (e.target && header) {\n const collapsible = header.closest('.collapsible');\n if (collapsible !== this.el) return;\n\n const li = header.closest('li');\n const isActive = li.classList.contains('active');\n const index = [...li.parentNode.children].indexOf(li);\n\n if (isActive) this.close(index);\n else this.open(index);\n }\n };\n\n _handleCollapsibleKeydown = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n this._handleCollapsibleClick(e);\n }\n };\n\n private _setExpanded(li: HTMLElement): void {\n li.style.maxHeight = li.scrollHeight + 'px';\n }\n\n _animateIn(index: number) {\n const li = <HTMLLIElement>this.el.children[index];\n if (!li) return;\n const body: HTMLElement = li.querySelector('.collapsible-body');\n const duration = this.options.inDuration; // easeInOutCubic\n body.style.transition = `max-height ${duration}ms ease-out`;\n this._setExpanded(body);\n setTimeout(() => {\n if (typeof this.options.onOpenEnd === 'function') {\n this.options.onOpenEnd.call(this, li);\n }\n }, duration);\n }\n\n _animateOut(index: number) {\n const li = this.el.children[index];\n if (!li) return;\n const body: HTMLElement = li.querySelector('.collapsible-body');\n const duration = this.options.outDuration; // easeInOutCubic\n body.style.transition = `max-height ${duration}ms ease-out`;\n body.style.maxHeight = '0';\n setTimeout(() => {\n if (typeof this.options.onCloseEnd === 'function') {\n this.options.onCloseEnd.call(this, li);\n }\n }, duration);\n }\n\n /**\n * Open collapsible section.\n * @param n Nth section to open.\n */\n open = (index: number) => {\n const listItems = Array.from(this.el.children).filter((c) => c.tagName === 'LI');\n const li = listItems[index];\n if (li && !li.classList.contains('active')) {\n // onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, li);\n }\n // Handle accordion behavior\n if (this.options.accordion) {\n const activeLis = listItems.filter((li) => li.classList.contains('active'));\n activeLis.forEach((activeLi) => {\n const index = listItems.indexOf(activeLi);\n this.close(index);\n });\n }\n // Animate in\n li.classList.add('active');\n this._animateIn(index);\n }\n };\n\n /**\n * Close collapsible section.\n * @param n Nth section to close.\n */\n close = (index: number) => {\n const li = Array.from(this.el.children).filter((c) => c.tagName === 'LI')[index];\n if (li && li.classList.contains('active')) {\n // onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, li);\n }\n // Animate out\n li.classList.remove('active');\n this._animateOut(index);\n }\n };\n}\n", "import { Utils } from '../core/utils';\nimport { Dropdown, DropdownOptions } from './dropdown';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface FormSelectOptions extends BaseOptions {\n /**\n * Classes to be added to the select wrapper element.\n * @default \"\"\n */\n classes: string;\n /**\n * Pass options object to select dropdown initialization.\n * @default {}\n */\n dropdownOptions: Partial<DropdownOptions>;\n}\n\nconst _defaults: FormSelectOptions = {\n classes: '',\n dropdownOptions: {}\n};\n\ntype ValueStruct = {\n el: HTMLOptionElement;\n optionEl: HTMLElement;\n};\n\nexport class FormSelect extends Component<FormSelectOptions> {\n declare el: HTMLSelectElement;\n /** If this is a multiple select. */\n isMultiple: boolean;\n /**\n * Label associated with the current select element.\n * Is \"null\", if not detected.\n */\n labelEl: HTMLLabelElement;\n /** Dropdown UL element. */\n dropdownOptions: HTMLUListElement;\n /** Text input that shows current selected option. */\n input: HTMLInputElement;\n /** Instance of the dropdown plugin for this select. */\n dropdown: Dropdown;\n /** The select wrapper element. */\n wrapper: HTMLDivElement;\n selectOptions: (HTMLOptionElement | HTMLOptGroupElement)[];\n private _values: ValueStruct[];\n nativeTabIndex: number;\n\n constructor(el: HTMLSelectElement, options: FormSelectOptions) {\n super(el, options, FormSelect);\n if (this.el.classList.contains('browser-default')) return;\n this.el['Expressive_FormSelect'] = this;\n\n this.options = {\n ...FormSelect.defaults,\n ...options\n };\n\n this.isMultiple = this.el.multiple;\n this.nativeTabIndex = this.el.tabIndex ?? -1;\n this.el.tabIndex = -1;\n this._values = [];\n this._setupDropdown();\n this._setupEventHandlers();\n }\n\n static get defaults(): FormSelectOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of FormSelect.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLSelectElement, options?: Partial<FormSelectOptions>): FormSelect;\n /**\n * Initializes instances of FormSelect.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: InitElements<HTMLSelectElement | MElement>,\n options?: Partial<FormSelectOptions>\n ): FormSelect[];\n /**\n * Initializes instances of FormSelect.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLSelectElement | InitElements<HTMLSelectElement | MElement>,\n options: Partial<FormSelectOptions> = {}\n ): FormSelect | FormSelect[] {\n return super.init(els, options, FormSelect);\n }\n\n static getInstance(el: HTMLElement): FormSelect {\n return el['Expressive_FormSelect'];\n }\n\n destroy() {\n this._removeEventHandlers();\n // The Dropdown holds itself in the static Dropdown._dropdowns registry\n // until its own destroy() runs, so dropping the elements is not enough -\n // every rebuilt select used to leave an instance behind for good.\n this.dropdown?.destroy();\n this._removeDropdown();\n this.el['Expressive_FormSelect'] = undefined;\n }\n\n /**\n * Re-read the native `<select>` and update the generated dropdown to match.\n *\n * Assigning `select.value` from script fires no `change` event, so nothing\n * else syncs the visible input text or the `.selected` state on the virtual\n * options. Call this after mutating the underlying select programmatically.\n */\n refresh() {\n this._setValueToInput();\n this._setSelectedStates();\n }\n\n _setupEventHandlers() {\n this.dropdownOptions.querySelectorAll('li:not(.optgroup)').forEach((el) => {\n el.addEventListener('click', this._handleOptionClick);\n el.addEventListener('keydown', this._handleOptionKeydown);\n });\n this.el.addEventListener('change', this._handleSelectChange);\n this.input.addEventListener('click', this._handleInputClick);\n }\n\n _removeEventHandlers() {\n this.dropdownOptions.querySelectorAll('li:not(.optgroup)').forEach((el) => {\n el.removeEventListener('click', this._handleOptionClick);\n el.removeEventListener('keydown', this._handleOptionKeydown);\n });\n this.el.removeEventListener('change', this._handleSelectChange);\n this.input.removeEventListener('click', this._handleInputClick);\n }\n\n _handleSelectChange = () => {\n this._setValueToInput();\n };\n\n // Named rather than inline so that _removeEventHandlers can actually detach\n // it - an anonymous listener per option was unremovable.\n _handleOptionKeydown = (e: KeyboardEvent) => {\n if (e.key === ' ' || e.key === 'Enter') this._handleOptionClick(e);\n };\n\n _handleOptionClick = (e: MouseEvent | KeyboardEvent) => {\n e.preventDefault();\n const virtualOption = (e.target as HTMLLIElement).closest('li');\n this._selectOptionElement(virtualOption);\n e.stopPropagation();\n };\n\n _arraysEqual<T, E>(a: T[], b: (E | T)[]) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; ++i) if (a[i] !== b[i]) return false;\n return true;\n }\n\n _selectOptionElement(virtualOption: HTMLElement) {\n if (\n !virtualOption.classList.contains('disabled') &&\n !virtualOption.classList.contains('optgroup')\n ) {\n const value = this._values.find((value) => value.optionEl === virtualOption);\n const previousSelectedValues = this.getSelectedValues();\n if (this.isMultiple) {\n // Multi-Select\n this._toggleEntryFromArray(value);\n } else {\n // Single-Select\n this._deselectAll();\n this._selectValue(value);\n }\n // Refresh Input-Text\n this._setValueToInput();\n // Trigger Change-Event only when data is different\n const actualSelectedValues = this.getSelectedValues();\n const selectionHasChanged = !this._arraysEqual(previousSelectedValues, actualSelectedValues);\n if (selectionHasChanged)\n this.el.dispatchEvent(\n new Event('change', { bubbles: true, cancelable: true, composed: true })\n ); // trigger('change');\n }\n if (!this.isMultiple) this.dropdown.close();\n }\n\n _handleInputClick = () => {\n if (this.dropdown && this.dropdown.isOpen) {\n this._setValueToInput();\n this._setSelectedStates();\n }\n };\n\n _setupDropdown() {\n // The DOM already knows which labels belong to this control. Building a\n // selector out of the id instead meant an id with any CSS-special\n // character either threw or matched something else entirely.\n this.labelEl = this.el.labels?.[0] ?? null;\n\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add('select-wrapper', 'input-field');\n if (this.options.classes.length > 0) {\n this.wrapper.classList.add(...this.options.classes.split(' ').filter(Boolean));\n }\n this.el.before(this.wrapper);\n\n // Move actual select element into overflow hidden wrapper\n const hiddenDiv = document.createElement('div');\n hiddenDiv.classList.add('hide-select');\n this.wrapper.append(hiddenDiv);\n hiddenDiv.appendChild(this.el);\n\n if (this.el.disabled) this.wrapper.classList.add('disabled');\n\n this.selectOptions = <(HTMLOptGroupElement | HTMLOptionElement)[]>(\n Array.from(this.el.children).filter((el) => ['OPTION', 'OPTGROUP'].includes(el.tagName))\n );\n\n // Create dropdown\n this.dropdownOptions = document.createElement('ul');\n this.dropdownOptions.id = `select-options-${Utils.guid()}`;\n this.dropdownOptions.setAttribute('popover', 'auto');\n this.dropdownOptions.classList.add('dropdown-content', 'select-dropdown');\n this.dropdownOptions.setAttribute('role', 'listbox');\n this.dropdownOptions.ariaMultiSelectable = this.isMultiple.toString();\n if (this.isMultiple) this.dropdownOptions.classList.add('multiple-select-dropdown');\n\n // Create dropdown structure\n if (this.selectOptions.length > 0) {\n this.selectOptions.forEach((realOption) => {\n if (realOption.tagName === 'OPTION') {\n // Option\n const virtualOption = this._createAndAppendOptionWithIcon(\n realOption,\n this.isMultiple ? 'multiple' : undefined\n );\n this._addOptionToValues(realOption as HTMLOptionElement, virtualOption);\n } else if (realOption.tagName === 'OPTGROUP') {\n // Optgroup\n const groupId = 'opt-group-' + Utils.guid();\n const groupParent = document.createElement('li');\n groupParent.classList.add('optgroup');\n groupParent.tabIndex = -1;\n groupParent.setAttribute('role', 'group');\n groupParent.setAttribute('aria-labelledby', groupId);\n // Built as nodes, not markup: the optgroup's label attribute is\n // author content that may come from a server, and interpolating it\n // into innerHTML let it close the span and inject an element.\n const groupLabel = document.createElement('span');\n groupLabel.id = groupId;\n groupLabel.setAttribute('role', 'presentation');\n groupLabel.textContent = realOption.getAttribute('label') ?? '';\n groupParent.replaceChildren(groupLabel);\n this.dropdownOptions.append(groupParent);\n\n const groupChildren = [];\n const selectOptions = <HTMLOptionElement[]>(\n Array.from(realOption.children).filter((el) => el.tagName === 'OPTION')\n );\n selectOptions.forEach((realOption) => {\n const virtualOption = this._createAndAppendOptionWithIcon(\n realOption,\n 'optgroup-option'\n );\n const childId = 'opt-child-' + Utils.guid();\n virtualOption.id = childId;\n groupChildren.push(childId);\n this._addOptionToValues(realOption, virtualOption);\n });\n groupParent.setAttribute('aria-owns', groupChildren.join(' '));\n }\n });\n }\n this.wrapper.append(this.dropdownOptions);\n\n // Add input dropdown\n this.input = document.createElement('input');\n this.input.id = 'm_select-input-' + Utils.guid();\n this.input.classList.add('select-dropdown', 'dropdown-trigger');\n this.input.type = 'text';\n this.input.readOnly = true;\n this.input.setAttribute('data-target', this.dropdownOptions.id);\n this.input.ariaReadOnly = 'true';\n this.input.ariaRequired = this.el.hasAttribute('required').toString(); //setAttribute(\"aria-required\", this.el.hasAttribute(\"required\"));\n if (this.el.disabled) this.input.disabled = true; // 'true');\n this.input.setAttribute('tabindex', this.nativeTabIndex.toString());\n\n const attrs = this.el.attributes;\n for (let i = 0; i < attrs.length; ++i) {\n const attr = attrs[i];\n if (attr.name.startsWith('aria-')) this.input.setAttribute(attr.name, attr.value);\n }\n\n // Adds aria-attributes to input element\n this.input.setAttribute('role', 'combobox');\n this.input.ariaExpanded = 'false';\n this.input.setAttribute('aria-owns', this.dropdownOptions.id);\n this.input.setAttribute('aria-controls', this.dropdownOptions.id);\n this.input.placeholder = ' ';\n\n this.wrapper.prepend(this.input);\n this._setValueToInput();\n\n // Add caret\n const dropdownIcon = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); //document.createElement('svg')\n dropdownIcon.classList.add('caret');\n dropdownIcon.setAttribute('height', '24');\n dropdownIcon.setAttribute('width', '24');\n dropdownIcon.setAttribute('viewBox', '0 0 24 24');\n dropdownIcon.ariaHidden = 'true';\n dropdownIcon.innerHTML = `<path d=\"M7 10l5 5 5-5z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/>`;\n this.wrapper.prepend(dropdownIcon);\n\n // Initialize dropdown\n if (!this.el.disabled) {\n const dropdownOptions = { ...this.options.dropdownOptions };\n dropdownOptions.coverTrigger = false;\n const userOnOpenEnd = dropdownOptions.onOpenEnd;\n const userOnCloseEnd = dropdownOptions.onCloseEnd;\n // Add callback for centering selected option when dropdown content is scrollable\n dropdownOptions.onOpenEnd = () => {\n const selectedOption = this.dropdownOptions.querySelector('.selected');\n if (selectedOption) {\n // Focus selected option in dropdown\n Utils.keyDown = true;\n this.dropdown.focusedIndex = [...selectedOption.parentNode.children].indexOf(\n selectedOption\n );\n this.dropdown._focusFocusedItem();\n Utils.keyDown = false;\n // Handle scrolling to selected option\n if (this.dropdown.isScrollable) {\n let scrollOffset =\n selectedOption.getBoundingClientRect().top -\n (this.dropdownOptions as HTMLElement).getBoundingClientRect().top; // scroll to selected option\n scrollOffset -= this.dropdownOptions.clientHeight / 2; // center in dropdown\n this.dropdownOptions.scrollTop = scrollOffset;\n }\n }\n this.input.ariaExpanded = 'true';\n // Handle user declared onOpenEnd if needed\n if (userOnOpenEnd && typeof userOnOpenEnd === 'function')\n userOnOpenEnd.call(this.dropdown, this.el);\n };\n // Add callback for reseting \"expanded\" state\n dropdownOptions.onCloseEnd = () => {\n this.input.ariaExpanded = 'false';\n // Handle user declared onOpenEnd if needed\n if (userOnCloseEnd && typeof userOnCloseEnd === 'function')\n userOnCloseEnd.call(this.dropdown, this.el);\n };\n // Prevent dropdown from closing too early\n dropdownOptions.closeOnClick = false;\n this.dropdown = Dropdown.init(this.input, dropdownOptions);\n }\n // Add initial selections\n this._setSelectedStates();\n // move label\n if (this.labelEl) this.input.after(this.labelEl);\n }\n\n _addOptionToValues(realOption: HTMLOptionElement, virtualOption: HTMLElement) {\n this._values.push({ el: realOption, optionEl: virtualOption });\n }\n\n _removeDropdown() {\n this.wrapper.querySelector('.caret').remove();\n this.input.remove();\n this.dropdownOptions.remove();\n this.wrapper.before(this.el);\n this.wrapper.remove();\n }\n\n _createAndAppendOptionWithIcon(\n realOption: HTMLOptionElement | HTMLOptGroupElement,\n type: string\n ) {\n const li = document.createElement('li');\n li.setAttribute('role', 'option');\n if (realOption.disabled) {\n li.classList.add('disabled');\n li.ariaDisabled = 'true';\n }\n if (type === 'optgroup-option') li.classList.add(type);\n\n // Text / Checkbox. An <option>'s content model is text, so its markup is\n // its text - copying it as nodes rather than through innerHTML keeps it\n // that way instead of handing it back to the parser.\n const optionText = realOption.textContent;\n const span = document.createElement('span');\n if (this.isMultiple && !realOption.disabled) {\n const label = document.createElement('label');\n const checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n const labelText = document.createElement('span');\n labelText.textContent = optionText;\n label.append(checkbox, labelText);\n span.appendChild(label);\n } else {\n span.textContent = optionText;\n }\n li.appendChild(span);\n\n // add Icon\n const iconUrl = realOption.getAttribute('data-icon');\n // filter(Boolean): a doubled or trailing space yields an empty string,\n // and classList.add('') throws.\n const classes = realOption.getAttribute('class')?.split(' ').filter(Boolean);\n if (iconUrl) {\n const img = document.createElement('img');\n if (classes?.length) img.classList.add(...classes);\n img.src = iconUrl;\n img.ariaHidden = 'true';\n li.prepend(img);\n }\n // Check for multiple type\n this.dropdownOptions.append(li);\n return li;\n }\n\n _selectValue(value: ValueStruct) {\n value.el.selected = true;\n value.optionEl.classList.add('selected');\n value.optionEl.ariaSelected = 'true'; // setAttribute(\"aria-selected\", true);\n const checkbox = <HTMLInputElement>value.optionEl.querySelector('input[type=\"checkbox\"]');\n if (checkbox) checkbox.checked = true;\n }\n\n _deselectValue(value: ValueStruct) {\n value.el.selected = false;\n value.optionEl.classList.remove('selected');\n value.optionEl.ariaSelected = 'false'; //setAttribute(\"aria-selected\", false);\n const checkbox = <HTMLInputElement>value.optionEl.querySelector('input[type=\"checkbox\"]');\n if (checkbox) checkbox.checked = false;\n }\n\n _deselectAll() {\n this._values.forEach((value) => this._deselectValue(value));\n }\n\n _isValueSelected(value: ValueStruct) {\n const realValues = this.getSelectedValues();\n return realValues.some((realValue) => realValue === value.el.value);\n }\n\n _toggleEntryFromArray(value: ValueStruct) {\n if (this._isValueSelected(value)) this._deselectValue(value);\n else this._selectValue(value);\n }\n\n _getSelectedOptions(): HTMLOptionElement[] {\n // remove null, false, ... values\n return Array.prototype.filter.call(\n this.el.selectedOptions,\n (realOption: HTMLOptionElement) => realOption\n );\n }\n\n _setValueToInput() {\n const selectedRealOptions = this._getSelectedOptions();\n const selectedOptionPairs = this._values.filter(\n (value) => selectedRealOptions.indexOf(value.el) >= 0\n );\n // Filter not disabled\n const notDisabledOptionPairs = selectedOptionPairs.filter((op) => !op.el.disabled);\n // textContent, not innerText: innerText is layout-dependent, so reading it\n // once per selected option forced a reflow each time.\n const texts = notDisabledOptionPairs.map((value) =>\n value.optionEl.querySelector('span').textContent.trim()\n );\n // Set input-text to first Option with empty value which indicates a description like \"choose your option\"\n if (texts.length === 0) {\n const firstDisabledOption = <HTMLOptionElement>this.el.querySelector('option:disabled');\n if (firstDisabledOption && firstDisabledOption.value === '') {\n this.input.value = firstDisabledOption.innerText;\n return;\n }\n }\n this.input.value = texts.join(', ');\n }\n\n _setSelectedStates() {\n this._values.forEach((value) => {\n const optionIsSelected = value.el.selected;\n const cb = <HTMLInputElement>value.optionEl.querySelector('input[type=\"checkbox\"]');\n if (cb) cb.checked = optionIsSelected;\n if (optionIsSelected) {\n this._activateOption(this.dropdownOptions, value.optionEl);\n } else {\n value.optionEl.classList.remove('selected');\n value.optionEl.ariaSelected = 'false'; // attr(\"aria-selected\", 'false');\n }\n });\n }\n\n _activateOption(ul: HTMLElement, li: HTMLElement) {\n if (!li) return;\n if (!this.isMultiple)\n ul.querySelectorAll('li.selected').forEach((li) => li.classList.remove('selected'));\n li.classList.add('selected');\n li.ariaSelected = 'true';\n }\n\n getSelectedValues() {\n return this._getSelectedOptions().map((realOption) => realOption.value);\n }\n}\n", "import { Utils } from '../core/utils';\n\nexport interface DockedDisplayPluginOptions {\n /**\n * Margin between element and docked container\n */\n margin: number,\n /**\n * Transition movement\n */\n transition: number,\n /**\n * Transition duration\n */\n duration: number,\n /**\n * The alignment of the docked container\n */\n align: string\n}\n\nconst _defaults: DockedDisplayPluginOptions = {\n margin: 5,\n transition: 10,\n duration: 250,\n align: 'left'\n}\n\nexport class DockedDisplayPlugin {\n private readonly el: HTMLElement;\n private readonly container: HTMLDivElement;\n private options: Partial<DockedDisplayPluginOptions>;\n private visible: boolean;\n\n constructor(el: HTMLElement, container: HTMLElement, options: Partial<DockedDisplayPluginOptions>) {\n this.el = el;\n this.options = {\n ..._defaults,\n ...options\n };\n\n this.container = document.createElement('div');\n this.container.classList.add('display-docked');\n this.container.append(container);\n el.parentElement.append(this.container);\n\n document.addEventListener('click', this._handleDocumentClick);\n }\n\n private _handleDocumentClick = (e: MouseEvent) => {\n if (this.visible && !(this.el === <HTMLElement>e.target) && !((<HTMLElement>e.target).closest('.display-docked'))) {\n this.hide();\n }\n };\n\n /**\n * Tears the plugin down. The document listener holds a reference to this\n * instance - and through it the whole picker subtree - so the owning\n * component must call this from its own destroy().\n */\n destroy = () => {\n document.removeEventListener('click', this._handleDocumentClick);\n this.container.remove();\n };\n\n /**\n * Initializes instance of DockedDisplayPlugin\n * @param el HTMLElement to position to\n * @param container HTMLElement to be positioned\n * @param options Plugin options\n */\n static init(el: HTMLElement, container: HTMLElement, options?: Partial<DockedDisplayPluginOptions>): DockedDisplayPlugin {\n return new DockedDisplayPlugin(el, container, options);\n }\n\n show = () => {\n if (this.visible) return;\n this.visible = true;\n const coordinates = Utils._setAbsolutePosition(this.el, this.container, 'bottom', this.options.margin, this.options.transition, this.options.align);\n\n // @todo move to Util? -> duplicate code fragment with tooltip\n // easeOutCubic\n this.container.style.visibility = 'visible';\n this.container.style.transition = `\n transform ${this.options.duration}ms ease-out,\n opacity ${this.options.duration}ms ease-out`;\n setTimeout(() => {\n this.container.style.transform = `translateX(${coordinates.x}px) translateY(${coordinates.y}px)`;\n this.container.style.opacity = (1).toString();\n }, 1);\n };\n\n hide = () => {\n if (!this.visible) return;\n this.visible = false;\n // @todo move to Util? -> duplicate code fragment with tooltip\n this.container.removeAttribute('style');\n this.container.style.transition = `\n transform ${this.options.duration}ms ease-out,\n opacity ${this.options.duration}ms ease-out`;\n setTimeout(() => {\n this.container.style.transform = `translateX(0px) translateY(0px)`;\n this.container.style.opacity = '0';\n }, 1);\n };\n}\n", "import { Utils } from '../core/utils';\nimport { FormSelect } from './select';\nimport { BaseOptions, Component, I18nOptions, InitElements, MElement } from '../core/component';\nimport { DockedDisplayPlugin } from '../plugins/dockedDisplayPlugin';\n\nexport interface DateI18nOptions extends I18nOptions {\n previousMonth: string;\n nextMonth: string;\n months: string[];\n monthsShort: string[];\n weekdays: string[];\n weekdaysShort: string[];\n weekdaysAbbrev: string[];\n}\n\nexport interface DatepickerOptions extends BaseOptions {\n /**\n * The date output format for the input field value\n * or a function taking the date and outputting the\n * formatted date string.\n * @default 'mmm dd, yyyy'\n */\n format: string | ((d: Date) => string);\n /**\n * Used to create date object from current input string.\n * @default null\n */\n parse: ((value: string, format: string) => Date) | null;\n /**\n * The initial condition if the datepicker is based on date range.\n * @default false\n */\n isDateRange: boolean;\n /**\n * The selector of the user specified date range end element\n */\n dateRangeEndEl: string | null;\n /**\n * The initial condition if the datepicker is based on multiple date selection.\n * @default false\n */\n isMultipleSelection: boolean;\n /**\n * The initial date to view when first opened.\n * @default null\n */\n defaultDate: Date | null;\n /**\n * The initial end date to view when first opened.\n * @default null\n */\n defaultEndDate: Date | null;\n /**\n * Make the `defaultDate` the initial selected value.\n * @default false\n */\n setDefaultDate: boolean;\n /**\n * Make the `defaultEndDate` the initial selected value.\n * @default false\n */\n setDefaultEndDate: boolean;\n /**\n * Prevent selection of any date on the weekend.\n * @default false\n */\n disableWeekends: boolean;\n /**\n * Custom function to disable certain days.\n * @default null\n */\n disableDayFn: ((day: Date) => boolean) | null;\n /**\n * First day of week (0: Sunday, 1: Monday etc).\n * @default 0\n */\n firstDay: number;\n /**\n * The earliest date that can be selected.\n * @default null\n */\n minDate: Date | null;\n /**\n * The latest date that can be selected.\n * @default null\n */\n maxDate: Date | null;\n /**\n * Number of years either side, or array of upper/lower range.\n * @default 10\n */\n yearRange: number | number[];\n /**\n * Sort year range in reverse order.\n * @default false\n */\n yearRangeReverse: boolean;\n /**\n * Changes Datepicker to RTL.\n * @default false\n */\n isRTL: boolean;\n /**\n * Show month after year in Datepicker title.\n * @default false\n */\n showMonthAfterYear: boolean;\n /**\n * Render days of the calendar grid that fall in the next\n * or previous month.\n * @default false\n */\n showDaysInNextAndPreviousMonths: boolean;\n /**\n * Specify if the docked datepicker is in open state by default\n */\n openByDefault: boolean;\n /**\n * Specify a DOM element OR selector for a DOM element to render\n * the calendar in, by default it will be placed before the input.\n * @default null\n */\n container: HTMLElement | string | null;\n /**\n * Show the clear button in the datepicker.\n * @default false\n */\n showClearBtn: boolean;\n /**\n * Autosubmit calendar day select to input field\n * @default false\n */\n autoSubmit: true;\n /**\n * Internationalization options.\n */\n i18n: Partial<DateI18nOptions>;\n /**\n * An array of string returned by `Date.toDateString()`,\n * indicating there are events in the specified days.\n * @default []\n */\n events: string[];\n /**\n * Callback function when date is selected,\n * first parameter is the newly selected date.\n * @default null\n */\n onSelect: ((selectedDate: Date) => void) | null;\n /**\n * Callback function when Datepicker is closed.\n * @default null\n */\n //onClose: (() => void) | null; // TODO: Remove\n /**\n * Callback function when Datepicker HTML is refreshed.\n * @default null\n */\n onDraw: (() => void) | null;\n /**\n * Callback function for interaction with input field.\n * @default null\n */\n onInputInteraction: (() => void) | null;\n /**\n * Callback function for interaction with confirm button.\n * @default null\n */\n onConfirm: (() => void) | null;\n /**\n * Callback function for interaction with close button.\n * @default null\n */\n onCancel: (() => void) | null;\n\n /** Field used for internal calculations DO NOT CHANGE IT */\n minYear?: number;\n /** Field used for internal calculations DO NOT CHANGE IT */\n maxYear?: number;\n /** Field used for internal calculations DO NOT CHANGE IT */\n minMonth?: number;\n /** Field used for internal calculations DO NOT CHANGE IT */\n maxMonth?: number;\n /** Field used for internal calculations DO NOT CHANGE IT */\n startRange?: Date;\n /** Field used for internal calculations DO NOT CHANGE IT */\n endRange?: Date;\n /**\n * Display plugin\n */\n displayPlugin: string;\n /**\n * Configurable display plugin options\n */\n displayPluginOptions: object;\n}\n\nconst _defaults: DatepickerOptions = {\n // the default output format for the input field value\n format: 'mmm dd, yyyy',\n // Used to create date object from current input string\n parse: null,\n // The initial condition if the datepicker is based on date range\n isDateRange: false,\n // The selector of the user specified date range end element\n dateRangeEndEl: null,\n // The initial condition if the datepicker is based on multiple date selection\n isMultipleSelection: false,\n // The initial date to view when first opened\n defaultDate: null,\n // The initial end date to view when first opened\n defaultEndDate: null,\n // Make the `defaultDate` the initial selected value\n setDefaultDate: false,\n // Make the `defaultEndDate` the initial selected value\n setDefaultEndDate: false,\n disableWeekends: false,\n disableDayFn: null,\n // First day of week (0: Sunday, 1: Monday etc)\n firstDay: 0,\n // The earliest date that can be selected\n minDate: null,\n // Thelatest date that can be selected\n maxDate: null,\n // Number of years either side, or array of upper/lower range\n yearRange: 10,\n // used internally (don't config outside)\n minYear: 0,\n maxYear: 9999,\n minMonth: undefined,\n maxMonth: undefined,\n startRange: null,\n endRange: null,\n isRTL: false,\n yearRangeReverse: false,\n // Render the month after year in the calendar title\n showMonthAfterYear: false,\n // Render days of the calendar grid that fall in the next or previous month\n showDaysInNextAndPreviousMonths: false,\n // Specify if docked picker is in open state by default\n openByDefault: false,\n // Specify a DOM element to render the calendar in\n container: null,\n // Show clear button\n showClearBtn: false,\n // Autosubmit\n autoSubmit: true,\n // internationalization\n i18n: {\n cancel: 'Cancel',\n clear: 'Clear',\n done: 'Ok',\n previousMonth: '\u2039',\n nextMonth: '\u203A',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n monthsShort: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysAbbrev: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n },\n // events array\n events: [],\n // callback function\n onSelect: null,\n onDraw: null,\n onInputInteraction: null,\n displayPlugin: null,\n displayPluginOptions: null,\n onConfirm: null,\n onCancel: null,\n};\n\nexport class Datepicker extends Component<DatepickerOptions> {\n declare el: HTMLInputElement;\n id: string;\n multiple: boolean = false;\n calendarEl: HTMLElement;\n\n /** CLEAR button instance. */\n // clearBtn: HTMLElement;\n /** DONE button instance */\n /*doneBtn: HTMLElement;\n cancelBtn: HTMLElement;*/\n\n containerEl: HTMLElement;\n yearTextEl: HTMLElement;\n dateTextEl: HTMLElement;\n endDateEl: HTMLInputElement;\n dateEls: HTMLInputElement[];\n /** The selected Date. */\n date: Date;\n endDate: null | Date;\n dates: Date[];\n formats: object;\n calendars: [{ month: number; year: number }];\n private _y: number;\n private _m: number;\n private displayPlugin: DockedDisplayPlugin;\n private footer: HTMLElement;\n /** Nesting depth of {@link _batchDraws}; > 0 means draws are being collected. */\n private _drawDepth = 0;\n /** Whether a draw was requested while batching. */\n private _drawDirty = false;\n /** Shape of the currently rendered controls; see {@link _controlsCacheKey}. */\n private _controlsKey: string = null;\n /** id linking the controls element to the table's aria-labelledby. */\n private _randId: string = null;\n static _template: string;\n\n constructor(el: HTMLInputElement, options: Partial<DatepickerOptions>) {\n super(el, options, Datepicker);\n this.el['Expressive_Datepicker'] = this;\n\n this.options = {\n ...Datepicker.defaults,\n ...options\n };\n\n // make sure i18n defaults are not lost when only few i18n option properties are passed\n if (!!options && options.hasOwnProperty('i18n') && typeof options.i18n === 'object') {\n this.options.i18n = { ...Datepicker.defaults.i18n, ...options.i18n };\n }\n\n // Remove time component from minDate and maxDate options\n if (this.options.minDate) this.options.minDate.setHours(0, 0, 0, 0);\n if (this.options.maxDate) this.options.maxDate.setHours(0, 0, 0, 0);\n\n this.id = Utils.guid();\n\n this._setupVariables();\n this._insertHTMLIntoDOM();\n this._setupEventHandlers();\n\n if (!this.options.defaultDate) {\n this.options.defaultDate = new Date(Date.parse(this.el.value));\n }\n\n const defDate = this.options.defaultDate;\n if (Datepicker._isDate(defDate)) {\n if (this.options.setDefaultDate) {\n this.setDate(defDate, true);\n this.setInputValue(this.el, defDate);\n } else {\n this.gotoDate(defDate);\n }\n } else {\n this.gotoDate(new Date());\n }\n if (this.options.isDateRange) {\n this.multiple = true;\n const defEndDate = this.options.defaultEndDate;\n if (Datepicker._isDate(defEndDate)) {\n if (this.options.setDefaultEndDate) {\n this.setDate(defEndDate, true, true);\n this.setInputValue(this.endDateEl, defEndDate);\n }\n }\n }\n if (this.options.isMultipleSelection) {\n this.multiple = true;\n this.dates = [];\n this.dateEls = [];\n this.dateEls.push(el);\n }\n if (this.options.displayPlugin) {\n if (this.options.displayPlugin === 'docked') this.displayPlugin = DockedDisplayPlugin.init(this.el, this.containerEl, this.options.displayPluginOptions);\n }\n }\n\n static get defaults() {\n return _defaults;\n }\n\n /**\n * Initializes instance of Datepicker.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLInputElement, options?: Partial<DatepickerOptions>): Datepicker;\n /**\n * Initializes instances of Datepicker.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: InitElements<HTMLInputElement | MElement>,\n options?: Partial<DatepickerOptions>\n ): Datepicker[];\n /**\n * Initializes instances of Datepicker.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLInputElement | InitElements<HTMLInputElement | MElement>,\n options: Partial<DatepickerOptions> = {}\n ): Datepicker | Datepicker[] {\n return super.init(els, options, Datepicker);\n }\n\n /**\n * Escape a value for interpolation into the calendar markup.\n *\n * `draw()` assembles the calendar as an HTML string, so every value that is\n * not a number this class computed itself has to go through here. In\n * practice that means the i18n strings: month and weekday names are the one\n * part of a datepicker that routinely comes from a translation file, and a\n * translation file is as trustworthy as whatever wrote it.\n */\n static _escape(value: unknown): string {\n return String(value ?? '')\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n }\n\n static _isDate(obj) {\n return /Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n }\n\n static _isWeekend(date) {\n const day = date.getDay();\n return day === 0 || day === 6;\n }\n\n /**\n * @deprecated as this function has no effect without any return statement or global parameter setter.\n */\n static _setToStartOfDay(date) {\n if (Datepicker._isDate(date)) date.setHours(0, 0, 0, 0);\n }\n\n static _getDaysInMonth(year, month) {\n return [31, Datepicker._isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][\n month\n ];\n }\n\n static _isLeapYear(year) {\n // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n static _compareDates(a, b) {\n // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n return a.getTime() === b.getTime();\n }\n\n static _compareWithinRange(day: Date, date: Date, dateEnd: Date) {\n return day.getTime() > date.getTime() && day.getTime() < dateEnd.getTime();\n }\n\n static _comparePastDate(a: Date, b: Date) {\n return a.getTime() < b.getTime();\n }\n\n static getInstance(el: HTMLElement): Datepicker {\n return el['Expressive_Datepicker'];\n }\n\n destroy() {\n this._removeEventHandlers();\n this.displayPlugin?.destroy();\n this.containerEl.remove();\n this.destroySelects();\n this.el['Expressive_Datepicker'] = undefined;\n }\n\n destroySelects() {\n const oldYearSelect = this.calendarEl.querySelector('.orig-select-year');\n if (oldYearSelect) {\n FormSelect.getInstance(oldYearSelect as HTMLElement).destroy();\n }\n const oldMonthSelect = this.calendarEl.querySelector('.orig-select-month');\n if (oldMonthSelect) {\n FormSelect.getInstance(oldMonthSelect as HTMLElement).destroy();\n }\n }\n\n _insertHTMLIntoDOM() {\n // HTML5 input date field support\n if (this.el.type == 'date') {\n this.el.classList.add('datepicker-date-input');\n }\n\n // `!x === null` is always false, so this never ran; _renderDateInputFormat\n // now no-ops on its own when there is no hint element to fill in.\n this._renderDateInputFormat(this.el);\n\n if (this.options.isDateRange) {\n this.containerEl.classList.add('daterange');\n if (!this.options.dateRangeEndEl) {\n this.endDateEl = this.createDateInput();\n this.endDateEl.classList.add('datepicker-end-date');\n } else {\n // querySelector returns null, never undefined: the old check compared\n // against undefined, so a miss skipped the warning and fell through to\n // dereferencing null.\n this.endDateEl = document.querySelector(this.options.dateRangeEndEl);\n if (!this.endDateEl) {\n console.warn('Specified date range end input element in dateRangeEndEl not found');\n } else {\n this._renderDateInputFormat(this.endDateEl);\n }\n }\n }\n\n /*if (this.options.showClearBtn) {\n this.clearBtn.style.visibility = '';\n this.clearBtn.innerText = this.options.i18n.clear;\n }\n this.doneBtn.innerText = this.options.i18n.done;\n this.cancelBtn.innerText = this.options.i18n.cancel;*/\n Utils.createButton(this.footer, this.options.i18n.clear, ['datepicker-clear'], this.options.showClearBtn, this._handleClearClick);\n\n if (!this.options.autoSubmit) {\n Utils.createConfirmationContainer(this.footer, this.options.i18n.done, this.options.i18n.cancel, this._confirm, this._cancel);\n }\n\n if (this.options.container) {\n const optEl = this.options.container;\n this.options.container =\n optEl instanceof HTMLElement ? optEl : (document.querySelector(optEl) as HTMLElement);\n this.options.container.append(this.containerEl);\n } else {\n //this.containerEl.before(this.el);\n const appendTo = !this.endDateEl ? this.el : this.endDateEl;\n if (!this.options.openByDefault) (this.containerEl as HTMLElement).setAttribute('style', 'display: none; visibility: hidden;');\n appendTo.parentElement.after(this.containerEl);\n }\n }\n\n /**\n * Renders the date input format into the optional `.datepicker-format` hint\n * next to the input, if the consumer provided one.\n */\n _renderDateInputFormat(el: HTMLInputElement) {\n const formatEl = el.parentElement?.querySelector('.datepicker-format');\n if (!formatEl) return;\n // textContent, and nothing at all for a function format: this used to be\n // `innerHTML = format.toString()`, which rendered a format string as\n // markup and dumped a function's entire source into the page.\n formatEl.textContent =\n typeof this.options.format === 'function' ? '' : String(this.options.format);\n }\n\n /**\n * Gets a string representation of the given date.\n */\n toString(date: Date = this.date, format: string | ((d: Date) => string) = null): string {\n format = format || this.options.format;\n if (typeof format === 'function') return format(date);\n if (!Datepicker._isDate(date)) return '';\n // String Format\n return this.formatDate(date, format);\n }\n\n /**\n * Returns the formatted date.\n */\n formatDate(date: Date, format: string) {\n const formatArray = format.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g);\n return formatArray\n .map((label) => (this.formats[label] ? this.formats[label](date) : label))\n .join('');\n }\n\n /**\n * Sets date from input field.\n */\n setDateFromInput(el: HTMLInputElement) {\n const date = new Date(Date.parse(el.value));\n this.setDate(date, false, el == this.endDateEl, true);\n }\n\n /**\n * Set a date on the datepicker.\n * @param date Date to set on the datepicker.\n * @param preventOnSelect Undocumented as of 5 March 2018.\n * @param isEndDate\n * @param fromUserInput\n */\n setDate(\n date: Date = null,\n preventOnSelect: boolean = false,\n isEndDate: boolean = false,\n fromUserInput: boolean = false\n ) {\n const selectedDate = this.validateDate(date);\n if (!selectedDate) {\n return;\n }\n if (!this.options.isMultipleSelection) this.setSingleDate(selectedDate, isEndDate);\n else if (!fromUserInput) this.setMultiDate(selectedDate);\n Datepicker._setToStartOfDay(selectedDate);\n this.gotoDate(selectedDate);\n if (!preventOnSelect && typeof this.options.onSelect === 'function') {\n this.options.onSelect.call(this, selectedDate);\n }\n }\n\n validateDate(date: Date) {\n if (!date) {\n this._renderDateDisplay(date);\n return this.draw();\n }\n if (typeof date === 'string') {\n date = new Date(Date.parse(date));\n }\n if (!Datepicker._isDate(date)) {\n return;\n }\n const min = this.options.minDate,\n max = this.options.maxDate;\n if (Datepicker._isDate(min) && date < min) {\n date = min;\n } else if (Datepicker._isDate(max) && date > max) {\n date = max;\n }\n return new Date(date.getTime());\n }\n\n /**\n * Set a single date on the datepicker.\n * @param date Date to set on the datepicker.\n * @param isEndDate\n */\n setSingleDate(date: Date, isEndDate: boolean) {\n if (!isEndDate) {\n this.date = date;\n } else if (isEndDate) {\n this.endDate = date;\n }\n }\n\n /**\n * Set a multi date on the datepicker.\n * @param date Date to set on the datepicker.\n */\n setMultiDate(date: Date) {\n const selectedDate = this.dates?.find((item) => {\n return item.getTime() === date.getTime() ? item : false;\n });\n if (!selectedDate) {\n this.dates.push(date);\n } else {\n this.dates.splice(this.dates.indexOf(selectedDate), 1);\n }\n this.dates.sort((a: Date, b: Date) => (a.getTime() < b.getTime() ? -1 : 0));\n }\n\n /**\n * Sets the data-date attribute on the date input field\n */\n setDataDate(el, date) {\n el.setAttribute('data-date', this.toString(date));\n }\n\n /**\n * Sets dates on the input values.\n */\n setInputValues() {\n if (!this.options?.isMultipleSelection) {\n this.setInputValue(this.el, this.date);\n if (this.options?.isDateRange) {\n this.setInputValue(this.endDateEl, this.endDate);\n }\n return;\n }\n this.setMultipleSelectionInputValues();\n }\n\n setMultipleSelectionInputValues() {\n const dateElsArr = Array.from(this.dateEls).filter((el, index) => {\n if (index > this.dates.length - 1) return el;\n });\n dateElsArr.forEach((el) => {\n el.remove();\n });\n this.dates.forEach((date: Date, index: number) => {\n if (Array.from(this.dateEls)[index]) {\n this.setInputValue(this.dateEls[index], date);\n return;\n }\n\n const dateEl = this.createDateInput();\n this.setInputValue(dateEl, date);\n this.dateEls.push(dateEl);\n });\n }\n\n /**\n * Sets given date as the input value on the given element.\n */\n setInputValue(el, date) {\n if (el.type == 'date') {\n this.setDataDate(el, date);\n el.value = this.formatDate(date, 'yyyy-mm-dd');\n } else {\n el.value = this.toString(date);\n }\n this.el.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: { firedBy: this }\n })\n );\n }\n\n /**\n * Renders the date in the modal head section.\n */\n _renderDateDisplay(date: Date, endDate: Date = null) {\n const displayDate = Datepicker._isDate(date) ? date : new Date();\n // this.yearTextEl.innerHTML = displayDate.getFullYear().toString();\n // @todo should we include an option for date formatting by component options?\n // textContent: formatDate splices i18n month and weekday names in.\n if (!this.options.isDateRange) {\n this.dateTextEl.textContent = this.formatDate(displayDate, 'ddd, mmm d');\n } else {\n const displayEndDate = Datepicker._isDate(endDate) ? endDate : new Date();\n this.dateTextEl.textContent = `${this.formatDate(displayDate, 'mmm d')} - ${this.formatDate(displayEndDate, 'mmm d')}`;\n }\n }\n\n /**\n * Change date view to a specific date on the datepicker.\n * @param date Date to show on the datepicker.\n */\n gotoDate(date: Date) {\n let newCalendar = true;\n if (!Datepicker._isDate(date)) {\n return;\n }\n if (this.calendars) {\n const firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n lastVisibleDate = new Date(\n this.calendars[this.calendars.length - 1].year,\n this.calendars[this.calendars.length - 1].month,\n 1\n ),\n visibleDate = date.getTime();\n // get the end of the month\n lastVisibleDate.setMonth(lastVisibleDate.getMonth() + 1);\n lastVisibleDate.setDate(lastVisibleDate.getDate() - 1);\n newCalendar =\n visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate;\n }\n if (newCalendar) {\n this.calendars = [\n {\n month: date.getMonth(),\n year: date.getFullYear()\n }\n ];\n }\n this.adjustCalendars();\n }\n\n adjustCalendars() {\n this.calendars[0] = this.adjustCalendar(this.calendars[0]);\n this.draw();\n }\n\n adjustCalendar(calendar) {\n if (calendar.month < 0) {\n calendar.year -= Math.ceil(Math.abs(calendar.month) / 12);\n calendar.month += 12;\n }\n if (calendar.month > 11) {\n calendar.year += Math.floor(Math.abs(calendar.month) / 12);\n calendar.month -= 12;\n }\n return calendar;\n }\n\n nextMonth() {\n this.calendars[0].month++;\n this.adjustCalendars();\n }\n\n prevMonth() {\n this.calendars[0].month--;\n this.adjustCalendars();\n }\n\n render(year, month, randId) {\n const now = new Date(),\n days = Datepicker._getDaysInMonth(year, month),\n data = [];\n let before = new Date(year, month, 1).getDay(),\n row = [];\n Datepicker._setToStartOfDay(now);\n if (this.options.firstDay > 0) {\n before -= this.options.firstDay;\n if (before < 0) {\n before += 7;\n }\n }\n const previousMonth = month === 0 ? 11 : month - 1,\n nextMonth = month === 11 ? 0 : month + 1,\n yearOfPreviousMonth = month === 0 ? year - 1 : year,\n yearOfNextMonth = month === 11 ? year + 1 : year,\n daysInPreviousMonth = Datepicker._getDaysInMonth(yearOfPreviousMonth, previousMonth);\n let cells = days + before,\n after = cells;\n while (after > 7) {\n after -= 7;\n }\n cells += 7 - after;\n let isWeekSelected = false;\n for (let i = 0, r = 0; i < cells; i++) {\n const day = new Date(year, month, 1 + (i - before)),\n isToday = Datepicker._compareDates(day, now),\n hasEvent = this.options.events.indexOf(day.toDateString()) !== -1,\n isEmpty = i < before || i >= days + before,\n isStartRange =\n this.options.startRange && Datepicker._compareDates(this.options.startRange, day),\n isEndRange = this.options.endRange && Datepicker._compareDates(this.options.endRange, day),\n isInRange =\n this.options.startRange &&\n this.options.endRange &&\n this.options.startRange < day &&\n day < this.options.endRange,\n isDisabled =\n (this.options.minDate && day < this.options.minDate) ||\n (this.options.maxDate && day > this.options.maxDate) ||\n (this.options.disableWeekends && Datepicker._isWeekend(day)) ||\n (this.options.disableDayFn && this.options.disableDayFn(day)),\n isDateRangeStart = this.options.isDateRange && this.date && this.endDate && Datepicker._compareDates(this.date, day),\n isDateRangeEnd = this.options.isDateRange && this.endDate && Datepicker._compareDates(this.endDate, day),\n isDateRange =\n this.options.isDateRange &&\n Datepicker._isDate(this.endDate) &&\n Datepicker._compareWithinRange(day, this.date, this.endDate);\n let dayNumber = 1 + (i - before),\n monthNumber = month,\n yearNumber = year;\n\n let isSelected = false;\n if (Datepicker._isDate(this.date)) {\n isSelected = Datepicker._compareDates(day, this.date);\n }\n\n if (!isSelected && Datepicker._isDate(this.endDate)) {\n isSelected = Datepicker._compareDates(day, this.endDate);\n }\n\n if (\n this.options.isMultipleSelection &&\n this.dates?.some((item) => item.getTime() === day.getTime())\n ) {\n isSelected = true;\n }\n\n if (isEmpty) {\n if (i < before) {\n dayNumber = daysInPreviousMonth + dayNumber;\n monthNumber = previousMonth;\n yearNumber = yearOfPreviousMonth;\n } else {\n dayNumber = dayNumber - days;\n monthNumber = nextMonth;\n yearNumber = yearOfNextMonth;\n }\n }\n\n const dayConfig = {\n day: dayNumber,\n month: monthNumber,\n year: yearNumber,\n hasEvent: hasEvent,\n isSelected: isSelected,\n isToday: isToday,\n isDisabled: isDisabled,\n isEmpty: isEmpty,\n isStartRange: isStartRange,\n isEndRange: isEndRange,\n isInRange: isInRange,\n showDaysInNextAndPreviousMonths: this.options.showDaysInNextAndPreviousMonths,\n isDateRangeStart: isDateRangeStart,\n isDateRangeEnd: isDateRangeEnd,\n isDateRange: isDateRange\n };\n\n row.push(this.renderDay(dayConfig));\n\n if (++r === 7) {\n data.push(this.renderRow(row, this.options.isRTL, isWeekSelected));\n row = [];\n r = 0;\n isWeekSelected = false;\n }\n }\n return this.renderTable(this.options, data, randId);\n }\n\n renderDay(opts) {\n const classMap = {\n isDisabled: 'is-disabled',\n isToday: 'is-today',\n isSelected: 'is-selected',\n hasEvent: 'has-event',\n isInRange: 'is-inrange',\n isStartRange: 'is-startrange',\n isEndRange: 'is-endrange',\n isDateRangeStart: 'is-daterange-start',\n isDateRangeEnd: 'is-daterange-end',\n isDateRange: 'is-daterange'\n },\n ariaSelected = !(['isSelected', 'isDateRange'].filter((prop) => !!(opts.hasOwnProperty(prop) && opts[prop] === true)).length === 0),\n arr = ['datepicker-day'];\n\n if (opts.isEmpty) {\n if (opts.showDaysInNextAndPreviousMonths) {\n arr.push('is-outside-current-month');\n arr.push('is-selection-disabled');\n } else {\n return '<td class=\"is-empty\"></td>';\n }\n }\n\n for (const [property, className] of Object.entries(classMap)) {\n if (opts.hasOwnProperty(property) && opts[property]) {\n arr.push(className);\n }\n }\n\n return (\n `<td data-day=\"${opts.day}\" class=\"${arr.join(' ')}\" aria-selected=\"${ariaSelected}\">` +\n `<button class=\"datepicker-day-button\" type=\"button\" data-year=\"${opts.year}\" data-month=\"${opts.month}\" data-day=\"${opts.day}\">${opts.day}</button>` +\n '</td>'\n );\n }\n\n renderRow(days, isRTL, isRowSelected) {\n return (\n '<tr class=\"datepicker-row' +\n (isRowSelected ? ' is-selected' : '') +\n '\">' +\n (isRTL ? days.reverse() : days).join('') +\n '</tr>'\n );\n }\n\n renderTable(opts, data, randId) {\n return (\n '<div class=\"datepicker-table-wrapper\"><table cellpadding=\"0\" cellspacing=\"0\" class=\"datepicker-table\" role=\"grid\" aria-labelledby=\"' +\n randId +\n '\">' +\n this.renderHead(opts) +\n this.renderBody(data) +\n '</table></div>'\n );\n }\n\n renderHead(opts) {\n const arr = [];\n let i;\n for (i = 0; i < 7; i++) {\n const full = Datepicker._escape(this.renderDayName(opts, i));\n const abbrev = Datepicker._escape(this.renderDayName(opts, i, true));\n arr.push(`<th scope=\"col\"><abbr title=\"${full}\">${abbrev}</abbr></th>`);\n }\n return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n }\n\n renderBody(rows) {\n return '<tbody>' + rows.join('') + '</tbody>';\n }\n\n /**\n * Whether each month arrow is usable at this position in the allowed range.\n *\n * Depends on the month, which is deliberately *not* part of the controls\n * cache key - so the reuse path has to recompute and reapply it.\n */\n private _arrowState(year: number, month: number) {\n const opts = this.options;\n const isMinYear = year === opts.minYear;\n const isMaxYear = year === opts.maxYear;\n return {\n prev: !(isMinYear && (month === 0 || opts.minMonth >= month)),\n next: !(isMaxYear && (month === 11 || opts.maxMonth <= month))\n };\n }\n\n /**\n * Identifies the *shape* of the controls - everything that changes which\n * options the month and year selects contain, as opposed to which one is\n * picked. While this is stable the two FormSelects can be left alone.\n *\n * `year` is in the key because a numeric `yearRange` centres the year list\n * on the displayed year, so paging across a year boundary does change it.\n */\n private _controlsCacheKey(year: number): string {\n const o = this.options;\n return [\n year,\n o.minYear,\n o.maxYear,\n o.minMonth,\n o.maxMonth,\n Array.isArray(o.yearRange) ? o.yearRange.join('-') : o.yearRange,\n o.yearRangeReverse,\n o.showMonthAfterYear\n ].join('|');\n }\n\n renderTitle(instance, c, year, month, refYear, randId) {\n const opts = this.options,\n isMinYear = year === opts.minYear,\n isMaxYear = year === opts.maxYear;\n let i,\n j,\n arr = [],\n html =\n '<div id=\"' +\n randId +\n '\" class=\"datepicker-controls\" role=\"heading\" aria-live=\"assertive\">';\n\n // Decided up front. These used to be computed *below* the month-prev\n // button that reads `prev`, so the previous arrow was never disabled at\n // the start of the allowed range.\n const { prev, next } = this._arrowState(year, month);\n\n for (i = 0; i < 12; i++) {\n arr.push(\n '<option value=\"' +\n (year === refYear ? i - c : 12 + i - c) +\n '\"' +\n (i === month ? ' selected=\"selected\"' : '') +\n ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth)\n ? 'disabled=\"disabled\"'\n : '') +\n '>' +\n Datepicker._escape(opts.i18n.months[i]) +\n '</option>'\n );\n }\n\n const monthHtml =\n '<select class=\"datepicker-select orig-select-month\" tabindex=\"-1\">' +\n arr.join('') +\n '</select>';\n\n if (Array.isArray(opts.yearRange)) {\n i = opts.yearRange[0];\n j = opts.yearRange[1] + 1;\n } else {\n i = year - opts.yearRange;\n j = 1 + year + opts.yearRange;\n }\n\n for (arr = []; i < j && i <= opts.maxYear; i++) {\n if (i >= opts.minYear) {\n arr.push(`<option value=\"${i}\" ${i === year ? 'selected=\"selected\"' : ''}>${i}</option>`);\n }\n }\n if (opts.yearRangeReverse) arr.reverse();\n\n const yearHtml = `<select class=\"datepicker-select orig-select-year\" tabindex=\"-1\">${arr.join('')}</select>`;\n\n const leftArrow =\n '<svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"/><path d=\"M0-.5h24v24H0z\" fill=\"none\"/></svg>';\n html += `<button class=\"month-prev${\n prev ? '' : ' is-disabled'\n // @todo remove button class and add scss mixin, current implementation temporary for focus states, @see https://github.com/materializecss/materialize/issues/566\n } btn\" type=\"button\">${leftArrow}</button>`;\n\n html += '<div class=\"selects-container\">';\n if (opts.showMonthAfterYear) {\n html += yearHtml + monthHtml;\n } else {\n html += monthHtml + yearHtml;\n }\n html += '</div>';\n\n const rightArrow =\n '<svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"/><path d=\"M0-.25h24v24H0z\" fill=\"none\"/></svg>';\n html += `<button class=\"month-next${\n next ? '' : ' is-disabled'\n // @todo remove button class and add scss mixin, current implementation temporary for focus states, @see https://github.com/materializecss/materialize/issues/566\n } btn\" type=\"button\">${rightArrow}</button>`;\n\n return (html += '</div>');\n }\n\n /**\n * Run `fn`, collapsing every draw it triggers into a single one at the end.\n *\n * A single input click reaches draw() three times - once through\n * setDateFromInput -> setDate -> gotoDate, once directly, and once through\n * the trailing gotoDate - and each one destroys two FormSelect instances,\n * reparses the calendar and builds two fresh FormSelects. The three calls\n * cannot simply be deleted: the direct draw() is what covers an empty input\n * (setDate bails before drawing when the value does not parse), and the\n * trailing gotoDate re-centres on a date validateDate may have clamped to\n * minDate/maxDate. So they are collected instead of removed.\n *\n * Deliberately synchronous: the constructor and callers read calendarEl\n * immediately after init(), which a microtask-deferred draw would leave\n * empty.\n */\n private _batchDraws(fn: () => void) {\n this._drawDepth++;\n try {\n fn();\n } finally {\n this._drawDepth--;\n if (this._drawDepth === 0 && this._drawDirty) {\n this._drawDirty = false;\n this.draw();\n }\n }\n }\n\n // refresh HTML\n draw() {\n // Inside a batch, note that a draw is due and let the batch do it once.\n if (this._drawDepth > 0) {\n this._drawDirty = true;\n return;\n }\n const opts = this.options,\n minYear = opts.minYear,\n maxYear = opts.maxYear,\n minMonth = opts.minMonth,\n maxMonth = opts.maxMonth;\n\n if (this._y <= minYear) {\n this._y = minYear;\n if (!isNaN(minMonth) && this._m < minMonth) {\n this._m = minMonth;\n }\n }\n if (this._y >= maxYear) {\n this._y = maxYear;\n if (!isNaN(maxMonth) && this._m > maxMonth) {\n this._m = maxMonth;\n }\n }\n\n const year = this.calendars[0].year;\n const month = this.calendars[0].month;\n\n if (!this.options.isDateRange) {\n this._renderDateDisplay(this.date);\n } else {\n this._renderDateDisplay(this.date, this.endDate);\n }\n\n // Only the day grid changes when you page within a year. Rebuilding the\n // controls as well meant tearing down and reconstructing two FormSelects -\n // each with its own <ul> of 12 or 21+ options, an input, a caret and a\n // Dropdown - on every single draw.\n const key = this._controlsCacheKey(year);\n if (key === this._controlsKey && this.calendarEl.querySelector('.datepicker-controls')) {\n this._reuseControls(year, month);\n } else {\n this._controlsKey = key;\n // Held across table re-renders: the table's aria-labelledby points at\n // the controls element's id.\n this._randId = 'datepicker-title-' + Utils.guid();\n this._rebuildControls(year, month);\n }\n this._renderCalendarTable(year, month);\n\n if (typeof this.options.onDraw === 'function') {\n this.options.onDraw.call(this);\n }\n }\n\n /** Tear down the two FormSelects and render the controls from scratch. */\n private _rebuildControls(year: number, month: number) {\n this.destroySelects();\n this.calendarEl.innerHTML = this.renderTitle(this, 0, year, month, year, this._randId);\n\n const yearSelect = this.calendarEl.querySelector('.orig-select-year') as HTMLSelectElement;\n const monthSelect = this.calendarEl.querySelector('.orig-select-month') as HTMLSelectElement;\n // @todo fix accessibility @see https://github.com/materializecss/materialize/issues/522\n FormSelect.init(yearSelect, {\n classes: 'select-year',\n dropdownOptions: { container: document.body, constrainWidth: false }\n });\n FormSelect.init(monthSelect, {\n classes: 'select-month',\n dropdownOptions: { container: document.body, constrainWidth: false }\n });\n\n // Add change handlers for select\n yearSelect.addEventListener('change', this._handleYearChange);\n monthSelect.addEventListener('change', this._handleMonthChange);\n }\n\n /**\n * Keep the existing controls and bring them up to date: the selected month,\n * and the arrow states, which depend on the month rather than on the key.\n */\n private _reuseControls(year: number, month: number) {\n const monthSelect = this.calendarEl.querySelector('.orig-select-month') as HTMLSelectElement;\n if (monthSelect && monthSelect.value !== month.toString()) {\n monthSelect.value = month.toString();\n // Assigning .value fires no change event, so the wrapper needs telling.\n FormSelect.getInstance(monthSelect)?.refresh();\n }\n\n const { prev, next } = this._arrowState(year, month);\n this.calendarEl.querySelector('.month-prev')?.classList.toggle('is-disabled', !prev);\n this.calendarEl.querySelector('.month-next')?.classList.toggle('is-disabled', !next);\n }\n\n /** Replace just the day grid, leaving the controls in place. */\n private _renderCalendarTable(year: number, month: number) {\n const html = this.render(year, month, this._randId);\n const existing = this.calendarEl.querySelector('.datepicker-table-wrapper');\n if (existing) existing.outerHTML = html;\n else this.calendarEl.insertAdjacentHTML('beforeend', html);\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('click', this._handleInputClick);\n this.el.addEventListener('keydown', this._handleInputKeydown);\n this.el.addEventListener('change', this._handleInputChange);\n this.calendarEl.addEventListener('click', this._handleCalendarClick);\n /* this.doneBtn.addEventListener('click', this._confirm);\n this.cancelBtn.addEventListener('click', this._cancel);\n\n if (this.options.showClearBtn) {\n this.clearBtn.addEventListener('click', this._handleClearClick);\n }*/\n }\n\n _setupVariables() {\n const template = document.createElement('template');\n template.innerHTML = Datepicker._template.trim();\n\n this.containerEl = <HTMLElement>template.content.firstChild;\n\n this.calendarEl = this.containerEl.querySelector('.datepicker-calendar');\n this.yearTextEl = this.containerEl.querySelector('.year-text');\n this.dateTextEl = this.containerEl.querySelector('.date-text');\n /* if (this.options.showClearBtn) {\n this.clearBtn = this.containerEl.querySelector('.datepicker-clear');\n }\n this.doneBtn = this.containerEl.querySelector('.datepicker-done');\n this.cancelBtn = this.containerEl.querySelector('.datepicker-cancel');*/\n this.footer = this.containerEl.querySelector('.datepicker-footer');\n\n this.formats = {\n d: (date: Date) => {\n return date.getDate();\n },\n dd: (date: Date) => {\n const d = date.getDate();\n return (d < 10 ? '0' : '') + d;\n },\n ddd: (date: Date) => {\n return this.options.i18n.weekdaysShort[date.getDay()];\n },\n dddd: (date: Date) => {\n return this.options.i18n.weekdays[date.getDay()];\n },\n m: (date: Date) => {\n return date.getMonth() + 1;\n },\n mm: (date: Date) => {\n const m = date.getMonth() + 1;\n return (m < 10 ? '0' : '') + m;\n },\n mmm: (date: Date) => {\n return this.options.i18n.monthsShort[date.getMonth()];\n },\n mmmm: (date: Date) => {\n return this.options.i18n.months[date.getMonth()];\n },\n yy: (date: Date) => {\n return ('' + date.getFullYear()).slice(2);\n },\n yyyy: (date: Date) => {\n return date.getFullYear();\n }\n };\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleInputClick);\n this.el.removeEventListener('keydown', this._handleInputKeydown);\n this.el.removeEventListener('change', this._handleInputChange);\n this.calendarEl.removeEventListener('click', this._handleCalendarClick);\n if (this.options.isDateRange && this.endDateEl) {\n this.endDateEl.removeEventListener('click', this._handleInputClick);\n this.endDateEl.removeEventListener('keypress', this._handleInputKeydown);\n this.endDateEl.removeEventListener('change', this._handleInputChange);\n }\n }\n\n _handleInputClick = (e) => {\n // Prevents default browser datepicker modal rendering\n if (e.type == 'date') {\n e.preventDefault();\n }\n this._batchDraws(() => {\n this.setDateFromInput(e.target as HTMLInputElement);\n this.draw();\n this.gotoDate(<HTMLElement>e.target === this.el ? this.date : this.endDate);\n });\n if (this.displayPlugin) this.displayPlugin.show();\n if (this.options.onInputInteraction) this.options.onInputInteraction.call(this);\n };\n\n _handleInputKeydown = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n e.preventDefault();\n this._batchDraws(() => {\n this.setDateFromInput(e.target as HTMLInputElement);\n this.draw();\n });\n if (this.displayPlugin) this.displayPlugin.show();\n if (this.options.onInputInteraction) this.options.onInputInteraction.call(this);\n }\n };\n\n _handleCalendarClick = (e) => {\n const target = <HTMLElement>e.target;\n if (target.classList.contains('is-disabled')) return;\n\n this._batchDraws(() => {\n if (\n target.classList.contains('datepicker-day-button') &&\n !target.classList.contains('is-empty') &&\n !target.parentElement.classList.contains('is-disabled')\n ) {\n const selectedDate = new Date(\n e.target.getAttribute('data-year'),\n e.target.getAttribute('data-month'),\n e.target.getAttribute('data-day')\n );\n\n if (!this.multiple || (this.multiple && this.options.isMultipleSelection)) {\n this.setDate(selectedDate);\n }\n\n // Selecting a range end draws a second time on top of setDate's.\n if (this.options.isDateRange) {\n this._handleDateRangeCalendarClick(selectedDate);\n }\n\n if (this.options.autoSubmit) this._finishSelection();\n } else if (target.closest('.month-prev')) {\n this.prevMonth();\n } else if (target.closest('.month-next')) {\n this.nextMonth();\n }\n });\n };\n\n _handleDateRangeCalendarClick = (date: Date) => {\n if (this.endDate == null || !Datepicker._compareDates(date, this.endDate)) {\n if (Datepicker._isDate(this.date) && Datepicker._comparePastDate(date, this.date)) {\n return;\n }\n\n this.setDate(date, false, Datepicker._isDate(this.date));\n return;\n }\n\n this._clearDates();\n this.draw();\n };\n\n _handleClearClick = () => {\n this._clearDates();\n this.setInputValues();\n };\n\n _clearDates = () => {\n this.date = null;\n this.endDate = null;\n this.draw();\n };\n\n _handleMonthChange = (e) => {\n this.gotoMonth(e.target.value);\n };\n\n _handleYearChange = (e) => {\n this.gotoYear(e.target.value);\n };\n\n // change view to a specific month (zero-index, e.g. 0: January)\n gotoMonth(month) {\n if (!isNaN(month)) {\n this.calendars[0].month = parseInt(month, 10);\n this.adjustCalendars();\n }\n }\n\n // change view to a specific full year (e.g. \"2012\")\n gotoYear(year) {\n if (!isNaN(year)) {\n this.calendars[0].year = parseInt(year, 10);\n this.adjustCalendars();\n }\n }\n\n _handleInputChange = (e: Event) => {\n let date;\n const el = e.target as HTMLElement;\n // Prevent change event from being fired when triggered by the plugin\n if (e['detail']?.firedBy === this) return;\n // Prevent change event from being fired if an end date is set without a start date\n if (el == this.endDateEl && !this.date) return;\n if (this.options.parse) {\n date = this.options.parse(\n (e.target as HTMLInputElement).value,\n typeof this.options.format === 'function'\n ? this.options.format(new Date(this.el.value))\n : this.options.format\n );\n } else {\n date = new Date(Date.parse((e.target as HTMLInputElement).value));\n }\n if (Datepicker._isDate(date)) {\n this.setDate(date, false, el == this.endDateEl, true);\n if (e.type == 'date') {\n this.setDataDate(e, date);\n this.setInputValues();\n }\n }\n };\n\n renderDayName(opts, day, abbr: boolean = false) {\n day += opts.firstDay;\n while (day >= 7) {\n day -= 7;\n }\n return abbr ? opts.i18n.weekdaysAbbrev[day] : opts.i18n.weekdays[day];\n }\n\n createDateInput() {\n const dateInput = <HTMLInputElement>this.el.cloneNode(true);\n // cloneNode copies the id too, and two elements sharing one id break every\n // lookup that goes through it.\n dateInput.removeAttribute('id');\n dateInput.addEventListener('click', this._handleInputClick);\n dateInput.addEventListener('keypress', this._handleInputKeydown);\n dateInput.addEventListener('change', this._handleInputChange);\n this.el.parentElement.appendChild(dateInput);\n return dateInput;\n }\n\n // Set input value to the selected date and close Datepicker\n _finishSelection = () => {\n this.setInputValues();\n // Commented out because of function deprecations\n // this.close();\n };\n\n _confirm = () => {\n this._finishSelection();\n if (typeof this.options.onConfirm === 'function') this.options.onConfirm.call(this);\n }\n\n _cancel = () => {\n if (typeof this.options.onCancel === 'function') this.options.onCancel.call(this);\n };\n\n // deprecated\n open() {\n console.warn('Datepicker.open() is deprecated. Remove this method and wrap in modal yourself.');\n return this;\n }\n close() {\n console.warn(\n 'Datepicker.close() is deprecated. Remove this method and wrap in modal yourself.'\n );\n return this;\n }\n\n static {\n Datepicker._template = `\n <div class=\"datepicker-container\">\n <div class=\"datepicker-date-display\">\n <span class=\"year-text\"></span>\n <span class=\"date-text\"></span>\n </div>\n <div class=\"datepicker-calendar-container\">\n <div class=\"datepicker-calendar\"></div>\n <div class=\"datepicker-footer\">\n <!--<button class=\"btn-flat datepicker-clear waves-effect\" style=\"visibility: hidden;\" type=\"button\"></button>\n <div class=\"confirmation-btns\">\n <button class=\"btn-flat datepicker-cancel waves-effect\" type=\"button\"></button>\n <button class=\"btn-flat datepicker-done waves-effect\" type=\"button\"></button>\n </div>-->\n </div>\n </div>\n </div>`;\n }\n}\n", "import { Utils } from '../core/utils';\nimport { BaseOptions, Component, InitElements, MElement } from '../core/component';\n\nexport interface LightboxOptions extends BaseOptions {\n /**\n * Transition in duration in milliseconds.\n * @default 275\n */\n inDuration: number;\n /**\n * Transition out duration in milliseconds.\n * @default 200\n */\n outDuration: number;\n /**\n * Callback function called before lightbox is opened.\n * @default null\n */\n onOpenStart: (el: Element) => void;\n /**\n * Callback function called after lightbox is opened.\n * @default null\n */\n onOpenEnd: (el: Element) => void;\n /**\n * Callback function called before lightbox is closed.\n * @default null\n */\n onCloseStart: (el: Element) => void;\n /**\n * Callback function called after lightbox is closed.\n * @default null\n */\n onCloseEnd: (el: Element) => void;\n}\n\nconst _defaults: LightboxOptions = {\n inDuration: 275,\n outDuration: 200,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null\n};\n\nexport class Lightbox extends Component<LightboxOptions> {\n /** If the lightbox overlay is showing. */\n overlayActive: boolean;\n /** If the lightbox is no longer being animated. */\n doneAnimating: boolean;\n /** Caption, if specified. */\n caption: string;\n /** Original width of image. */\n originalWidth: number;\n /** Original height of image. */\n originalHeight: number;\n private originInlineStyles: string;\n private placeholder: HTMLElement;\n private _changedAncestorList: HTMLElement[];\n private newHeight: number;\n private newWidth: number;\n private windowWidth: number;\n private windowHeight: number;\n private attrWidth: string;\n private attrHeight: string;\n private _overlay: HTMLElement;\n private _photoCaption: HTMLElement;\n\n constructor(el: HTMLElement, options: Partial<LightboxOptions>) {\n super(el, options, Lightbox);\n this.el['Expressive_Lightbox'] = this;\n\n this.options = {\n ...Lightbox.defaults,\n ...options\n };\n\n this.overlayActive = false;\n this.doneAnimating = true;\n this.placeholder = document.createElement('div');\n this.placeholder.classList.add('material-placeholder');\n this.originalWidth = 0;\n this.originalHeight = 0;\n this.originInlineStyles = this.el.getAttribute('style');\n this.caption = this.el.getAttribute('data-caption') || '';\n this.el.tabIndex = 0;\n // Wrap\n this.el.before(this.placeholder);\n this.placeholder.append(this.el);\n this._setupEventHandlers();\n }\n\n static get defaults(): LightboxOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Lightbox.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<LightboxOptions>): Lightbox;\n /**\n * Initializes instances of Lightbox.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<LightboxOptions>): Lightbox[];\n /**\n * Initializes instances of Lightbox.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<LightboxOptions> = {}\n ): Lightbox | Lightbox[] {\n return super.init(els, options, Lightbox);\n }\n\n static getInstance(el: HTMLElement): Lightbox {\n return el['Expressive_Lightbox'];\n }\n\n destroy() {\n this._removeEventHandlers();\n this.el['Expressive_Lightbox'] = undefined;\n // Unwrap image\n //this.placeholder.after(this.el).remove();\n this.placeholder.remove();\n this.el.removeAttribute('style');\n }\n\n private _setupEventHandlers() {\n this.el.addEventListener('click', this._handleLightboxClick);\n this.el.addEventListener('keypress', this._handleLightboxKeypress);\n }\n\n private _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleLightboxClick);\n this.el.removeEventListener('keypress', this._handleLightboxKeypress);\n }\n\n private _handleLightboxClick = () => {\n this._handleLightboxToggle();\n };\n\n private _handleLightboxKeypress = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n this._handleLightboxToggle();\n }\n };\n\n private _handleLightboxToggle = () => {\n // If already modal, return to original\n if (this.doneAnimating === false || (this.overlayActive && this.doneAnimating)) this.close();\n else this.open();\n };\n\n private _handleWindowScroll = () => {\n if (this.overlayActive) this.close();\n };\n\n private _handleWindowResize = () => {\n if (this.overlayActive) this.close();\n };\n\n private _handleWindowEscape = (e: KeyboardEvent) => {\n if (Utils.keys.ESC.includes(e.key) && this.doneAnimating && this.overlayActive) this.close();\n };\n\n private _makeAncestorsOverflowVisible() {\n this._changedAncestorList = [];\n let ancestor = this.placeholder.parentNode;\n while (ancestor !== null && ancestor !== document) {\n const curr = <HTMLElement>ancestor;\n if (curr.style.overflow !== 'visible') {\n curr.style.overflow = 'visible';\n this._changedAncestorList.push(curr);\n }\n ancestor = ancestor.parentNode;\n }\n }\n\n private _offset(el: HTMLElement) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.scrollY - docElem.clientTop,\n left: box.left + window.scrollX - docElem.clientLeft\n };\n }\n private _updateVars(): void {\n this.windowWidth = window.innerWidth;\n this.windowHeight = window.innerHeight;\n this.caption = this.el.getAttribute('data-caption') || '';\n }\n\n // Image\n private _animateImageIn(): void {\n this.el.style.maxHeight = this.newHeight.toString() + 'px';\n this.el.style.maxWidth = this.newWidth.toString() + 'px';\n const duration = this.options.inDuration;\n // from\n this.el.style.transition = 'none';\n this.el.style.height = this.originalHeight + 'px';\n this.el.style.width = this.originalWidth + 'px';\n setTimeout(() => {\n // One offset for both axes, read before any of the writes below.\n const placeholderOffset = this._offset(this.placeholder);\n // easeOutQuad\n this.el.style.transition = `height ${duration}ms ease,\n width ${duration}ms ease,\n left ${duration}ms ease,\n top ${duration}ms ease\n `;\n // to\n this.el.style.height = this.newHeight + 'px';\n this.el.style.width = this.newWidth + 'px';\n this.el.style.left =\n Utils.getDocumentScrollLeft() +\n this.windowWidth / 2 -\n placeholderOffset.left -\n this.newWidth / 2 +\n 'px';\n\n this.el.style.top =\n Utils.getDocumentScrollTop() +\n this.windowHeight / 2 -\n placeholderOffset.top -\n this.newHeight / 2 +\n 'px';\n }, 1);\n\n setTimeout(() => {\n this.doneAnimating = true;\n if (typeof this.options.onOpenEnd === 'function') this.options.onOpenEnd.call(this, this.el);\n }, duration);\n\n /*\n anim({\n targets: this.el, // image\n height: [this.originalHeight, this.newHeight],\n width: [this.originalWidth, this.newWidth],\n left:\n Utils.getDocumentScrollLeft() +\n this.windowWidth / 2 -\n this._offset(this.placeholder).left -\n this.newWidth / 2,\n top:\n Utils.getDocumentScrollTop() +\n this.windowHeight / 2 -\n this._offset(this.placeholder).top -\n this.newHeight / 2,\n\n duration: this.options.inDuration,\n easing: 'easeOutQuad',\n complete: () => {\n this.doneAnimating = true;\n if (typeof this.options.onOpenEnd === 'function') this.options.onOpenEnd.call(this, this.el);\n }\n });\n */\n }\n private _animateImageOut(): void {\n const duration = this.options.outDuration;\n // easeOutQuad\n this.el.style.transition = `height ${duration}ms ease,\n width ${duration}ms ease,\n left ${duration}ms ease,\n top ${duration}ms ease\n `;\n // to\n this.el.style.height = this.originalHeight + 'px'; // was originalWidth\n this.el.style.width = this.originalWidth + 'px';\n this.el.style.left = '0';\n this.el.style.top = '0';\n setTimeout(() => {\n this.placeholder.style.height = '';\n this.placeholder.style.width = '';\n this.placeholder.style.position = '';\n this.placeholder.style.top = '';\n this.placeholder.style.left = '';\n // Revert to width or height attribute\n if (this.attrWidth) this.el.setAttribute('width', this.attrWidth.toString());\n if (this.attrHeight) this.el.setAttribute('height', this.attrHeight.toString());\n this.el.removeAttribute('style');\n if (this.originInlineStyles) this.el.setAttribute('style', this.originInlineStyles);\n // Remove class\n this.el.classList.remove('active');\n this.doneAnimating = true;\n // Remove overflow overrides on ancestors\n this._changedAncestorList.forEach((anchestor) => (anchestor.style.overflow = ''));\n // onCloseEnd callback\n if (typeof this.options.onCloseEnd === 'function')\n this.options.onCloseEnd.call(this, this.el);\n }, duration);\n }\n\n // Caption\n private _addCaption(): void {\n this._photoCaption = document.createElement('div');\n this._photoCaption.classList.add('lightbox-caption');\n this._photoCaption.innerText = this.caption;\n document.body.append(this._photoCaption);\n this._photoCaption.style.display = 'inline';\n // Animate\n this._photoCaption.style.transition = 'none';\n this._photoCaption.style.opacity = '0';\n const duration = this.options.inDuration;\n setTimeout(() => {\n this._photoCaption.style.transition = `opacity ${duration}ms ease`;\n this._photoCaption.style.opacity = '1';\n }, 1);\n }\n private _removeCaption(): void {\n const duration = this.options.outDuration;\n this._photoCaption.style.transition = `opacity ${duration}ms ease`;\n this._photoCaption.style.opacity = '0';\n setTimeout(() => {\n this._photoCaption.remove();\n }, duration);\n }\n\n // Overlay\n private _addOverlay(): void {\n this._overlay = document.createElement('div');\n this._overlay.id = 'lightbox-overlay';\n this._overlay.addEventListener(\n 'click',\n () => {\n if (this.doneAnimating) this.close();\n },\n { once: true }\n );\n\n // Put before in origin image to preserve z-index layering.\n this.el.before(this._overlay);\n\n // Set dimensions if needed\n const overlayOffset = this._overlay.getBoundingClientRect();\n this._overlay.style.width = this.windowWidth + 'px';\n this._overlay.style.height = this.windowHeight + 'px';\n this._overlay.style.left = -1 * overlayOffset.left + 'px';\n this._overlay.style.top = -1 * overlayOffset.top + 'px';\n\n // Animate\n this._overlay.style.transition = 'none';\n this._overlay.style.opacity = '0';\n const duration = this.options.inDuration;\n setTimeout(() => {\n this._overlay.style.transition = `opacity ${duration}ms ease`;\n this._overlay.style.opacity = '1';\n }, 1);\n }\n private _removeOverlay(): void {\n const duration = this.options.outDuration;\n this._overlay.style.transition = `opacity ${duration}ms ease`;\n this._overlay.style.opacity = '0';\n setTimeout(() => {\n this.overlayActive = false;\n this._overlay.remove();\n }, duration);\n }\n\n /**\n * Open lightbox.\n */\n open = () => {\n this._updateVars();\n // Both rects are read up front: measuring the placeholder after writing\n // its width forced a second layout for the height.\n const originRect = this.el.getBoundingClientRect();\n const placeholderRect = this.placeholder.getBoundingClientRect();\n this.originalWidth = originRect.width;\n this.originalHeight = originRect.height;\n // Set states\n this.doneAnimating = false;\n this.el.classList.add('active');\n this.overlayActive = true;\n // onOpenStart callback\n if (typeof this.options.onOpenStart === 'function')\n this.options.onOpenStart.call(this, this.el);\n // Set positioning for placeholder\n this.placeholder.style.width = placeholderRect.width + 'px';\n this.placeholder.style.height = placeholderRect.height + 'px';\n this.placeholder.style.position = 'relative';\n this.placeholder.style.top = '0';\n this.placeholder.style.left = '0';\n this._makeAncestorsOverflowVisible();\n // Set css on origin\n this.el.style.position = 'absolute';\n this.el.style.zIndex = '1000';\n this.el.style.willChange = 'left, top, width, height';\n // Change from width or height attribute to css\n this.attrWidth = this.el.getAttribute('width');\n this.attrHeight = this.el.getAttribute('height');\n if (this.attrWidth) {\n this.el.style.width = this.attrWidth + 'px';\n this.el.removeAttribute('width');\n }\n if (this.attrHeight) {\n this.el.style.height = this.attrHeight + 'px'; // was width, from the height attribute\n this.el.removeAttribute('height');\n }\n this._addOverlay();\n // Add and animate caption if it exists\n if (this.caption !== '') this._addCaption();\n // Resize Image\n const widthPercent = this.originalWidth / this.windowWidth;\n const heightPercent = this.originalHeight / this.windowHeight;\n this.newWidth = 0;\n this.newHeight = 0;\n if (widthPercent > heightPercent) {\n // Width first\n const ratio = this.originalHeight / this.originalWidth;\n this.newWidth = this.windowWidth * 0.9;\n this.newHeight = this.windowWidth * 0.9 * ratio;\n } else {\n // Height first\n const ratio = this.originalWidth / this.originalHeight;\n this.newWidth = this.windowHeight * 0.9 * ratio;\n this.newHeight = this.windowHeight * 0.9;\n }\n this._animateImageIn();\n // Handle Exit triggers\n window.addEventListener('scroll', this._handleWindowScroll, { passive: true });\n window.addEventListener('resize', this._handleWindowResize, { passive: true });\n window.addEventListener('keyup', this._handleWindowEscape);\n };\n\n /**\n * Close lightbox.\n */\n close = () => {\n this._updateVars();\n this.doneAnimating = false;\n // onCloseStart callback\n if (typeof this.options.onCloseStart === 'function')\n this.options.onCloseStart.call(this, this.el);\n //anim.remove(this.el);\n //anim.remove(this._overlay);\n //if (this.caption !== '') anim.remove(this._photoCaption);\n // disable exit handlers\n window.removeEventListener('scroll', this._handleWindowScroll);\n window.removeEventListener('resize', this._handleWindowResize);\n window.removeEventListener('keyup', this._handleWindowEscape);\n this._removeOverlay();\n this._animateImageOut();\n if (this.caption !== '') this._removeCaption();\n };\n}\n", "import { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\n// Obsolete for versions > 2.1.1\n\nexport interface ModalOptions extends BaseOptions {\n opacity: number;\n inDuration: number;\n outDuration: number;\n preventScrolling: boolean;\n onOpenStart: (this: Modal, el: HTMLElement) => void;\n onOpenEnd: (this: Modal, el: HTMLElement) => void;\n onCloseStart: (el: HTMLElement) => void;\n onCloseEnd: (el: HTMLElement) => void;\n dismissible: boolean;\n startingTop: string;\n endingTop: string;\n}\n\nconst _defaults = {\n opacity: 0.5,\n inDuration: 250,\n outDuration: 250,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n preventScrolling: true,\n dismissible: true,\n startingTop: '4%',\n endingTop: '10%'\n};\n\nexport class Modal extends Component<ModalOptions> {\n constructor(el: HTMLElement, options: Partial<ModalOptions>) {\n super(el, options, Modal);\n this.el['Expressive_Modal'] = this;\n this.options = {\n ...Modal.defaults,\n ...options\n };\n this.el.tabIndex = 0;\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(el: HTMLElement, options?: Partial<ModalOptions>): Modal;\n static init(els: InitElements<MElement>, options?: Partial<ModalOptions>): Modal[];\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<ModalOptions> = {}\n ): Modal | Modal[] {\n return super.init(els, options, Modal);\n }\n\n static getInstance(el: HTMLElement): Modal {\n return el['Expressive_Modal'];\n }\n\n destroy() {}\n _setupEventHandlers() {}\n _removeEventHandlers() {}\n _handleTriggerClick() {}\n _handleOverlayClick() {}\n _handleModalCloseClick() {}\n _handleKeydown() {}\n _handleFocus() {}\n open() {\n return this;\n }\n close() {\n return this;\n }\n\n // Experimental!\n\n static #createHtml(config: ModalCreateConfig) {\n const title = config.header\n ? `<h2>${typeof config.header === 'string' ? config.header : ''}</h2>`\n : '';\n const actions = config.footer\n ? `<form method=\"dialog\">${typeof config.footer === 'string' ? config.footer : ''}</form>`\n : '';\n return `<dialog id=\"${config.id}\">\n ${title}\n <div>${typeof config.content === 'string' ? config.content : ''}</div>\n ${actions}\n </dialog>`;\n }\n\n static #createHtmlElement(config: ModalCreateConfig) {\n const dialog = document.createElement('dialog');\n dialog.id = config.id;\n return dialog;\n }\n\n static create(config) {\n const isServer = false;\n if (isServer) return this.#createHtml(config);\n return this.#createHtmlElement(config);\n }\n\n static {}\n}\n\ninterface ModalCreateConfig {\n id: string;\n header: string | HTMLElement;\n content: string | HTMLElement;\n footer: string | HTMLElement;\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface ParallaxOptions extends BaseOptions {\n /**\n * The minimum width of the screen, in pixels, where the parallax functionality starts working.\n * @default 0\n */\n responsiveThreshold: number;\n}\n\nconst _defaults: ParallaxOptions = {\n responsiveThreshold: 0 // breakpoint for swipeable\n};\n\nexport class Parallax extends Component<ParallaxOptions> {\n private _enabled: boolean;\n private _img: HTMLImageElement;\n static _parallaxes: Parallax[] = [];\n static _handleWindowResizeThrottled: (...args: unknown[]) => void;\n private static _scrollFrame: number = null;\n\n constructor(el: HTMLElement, options: Partial<ParallaxOptions>) {\n super(el, options, Parallax);\n this.el['Expressive_Parallax'] = this;\n\n this.options = {\n ...Parallax.defaults,\n ...options\n };\n\n this._enabled = window.innerWidth > this.options.responsiveThreshold;\n this._img = this.el.querySelector('img');\n if (!this._img) {\n console.error('Parallax: no <img> to move inside the .parallax element');\n return;\n }\n this._updateParallax();\n this._setupEventHandlers();\n this._setupStyles();\n Parallax._parallaxes.push(this);\n }\n\n static get defaults(): ParallaxOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Parallax.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<ParallaxOptions>): Parallax;\n /**\n * Initializes instances of Parallax.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<ParallaxOptions>): Parallax[];\n /**\n * Initializes instances of Parallax.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<ParallaxOptions> = {}\n ): Parallax | Parallax[] {\n return super.init(els, options, Parallax);\n }\n\n static getInstance(el: HTMLElement): Parallax {\n return el['Expressive_Parallax'];\n }\n\n destroy() {\n const index = Parallax._parallaxes.indexOf(this);\n if (index >= 0) Parallax._parallaxes.splice(index, 1);\n if (this._img) this._img.style.transform = '';\n this._removeEventHandlers();\n this.el['Expressive_Parallax'] = undefined;\n }\n\n static _handleScroll() {\n for (let i = 0; i < Parallax._parallaxes.length; i++) {\n const parallaxInstance = Parallax._parallaxes[i];\n parallaxInstance._updateParallax.call(parallaxInstance);\n }\n }\n\n /**\n * Coalesce scroll events onto animation frames.\n *\n * The handler reads layout and then writes a transform, so running it more\n * than once per frame is wasted work - and the 5ms throttle it replaces was\n * short enough to let several run per frame anyway.\n */\n static _requestScrollUpdate = () => {\n if (Parallax._scrollFrame !== null) return;\n Parallax._scrollFrame = requestAnimationFrame(() => {\n Parallax._scrollFrame = null;\n Parallax._handleScroll();\n });\n };\n\n static _handleWindowResize() {\n for (let i = 0; i < Parallax._parallaxes.length; i++) {\n const parallaxInstance = Parallax._parallaxes[i];\n parallaxInstance._enabled = window.innerWidth > parallaxInstance.options.responsiveThreshold;\n }\n }\n\n _setupEventHandlers() {\n this._img?.addEventListener('load', this._handleImageLoad);\n if (Parallax._parallaxes.length === 0) {\n if (!Parallax._handleWindowResizeThrottled) {\n Parallax._handleWindowResizeThrottled = Utils.throttle(Parallax._handleWindowResize, 100);\n }\n window.addEventListener('scroll', Parallax._requestScrollUpdate, { passive: true });\n window.addEventListener('resize', Parallax._handleWindowResizeThrottled, { passive: true });\n }\n }\n\n _removeEventHandlers() {\n this._img?.removeEventListener('load', this._handleImageLoad);\n if (Parallax._parallaxes.length === 0) {\n window.removeEventListener('scroll', Parallax._requestScrollUpdate);\n window.removeEventListener('resize', Parallax._handleWindowResizeThrottled);\n if (Parallax._scrollFrame !== null) {\n cancelAnimationFrame(Parallax._scrollFrame);\n Parallax._scrollFrame = null;\n }\n }\n }\n\n _setupStyles() {\n if (this._img) this._img.style.opacity = '1';\n }\n\n _handleImageLoad = () => {\n this._updateParallax();\n };\n\n _updateParallax() {\n // Runs for every parallax element on every scroll tick, so it reads\n // layout once: one rect for the element, reused for the height check and\n // both offsets.\n const rect = this.el.getBoundingClientRect();\n const containerHeight = rect.height > 0 ? this.el.parentElement.offsetHeight : 500;\n const imgHeight = this._img.offsetHeight;\n const parallaxDist = imgHeight - containerHeight;\n const top = rect.top + window.scrollY - document.documentElement.clientTop;\n const bottom = top + containerHeight;\n const scrollTop = Utils.getDocumentScrollTop();\n const windowHeight = window.innerHeight;\n const windowBottom = scrollTop + windowHeight;\n const percentScrolled = (windowBottom - top) / (containerHeight + windowHeight);\n const parallax = parallaxDist * percentScrolled;\n\n if (!this._enabled) {\n this._img.style.transform = '';\n } else if (bottom > scrollTop && top < scrollTop + windowHeight) {\n this._img.style.transform = `translate3D(-50%, ${parallax}px, 0)`;\n }\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface PushpinOptions extends BaseOptions {\n /**\n * The distance in pixels from the top of the page where\n * the element becomes fixed.\n * @default 0\n */\n top: number;\n /**\n * The distance in pixels from the top of the page where\n * the elements stops being fixed.\n * @default Infinity\n */\n bottom: number;\n /**\n * The offset from the top the element will be fixed at.\n * @default 0\n */\n offset: number;\n /**\n * Callback function called when pushpin position changes.\n * You are provided with a position string.\n * @default null\n */\n onPositionChange: (position: 'pinned' | 'pin-top' | 'pin-bottom') => void;\n}\n\nconst _defaults = {\n top: 0,\n bottom: Infinity,\n offset: 0,\n onPositionChange: null\n};\n\nexport class Pushpin extends Component<PushpinOptions> {\n static _pushpins: Pushpin[];\n originalOffset: number;\n\n constructor(el: HTMLElement, options: Partial<PushpinOptions>) {\n super(el, options, Pushpin);\n this.el['Expressive_Pushpin'] = this;\n\n this.options = {\n ...Pushpin.defaults,\n ...options\n };\n\n this.originalOffset = (this.el as HTMLElement).offsetTop;\n Pushpin._pushpins.push(this);\n this._setupEventHandlers();\n this._updatePosition();\n }\n\n static get defaults(): PushpinOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Pushpin.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<PushpinOptions>): Pushpin;\n /**\n * Initializes instances of Pushpin.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<PushpinOptions>): Pushpin[];\n /**\n * Initializes instances of Pushpin.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<PushpinOptions> = {}\n ): Pushpin | Pushpin[] {\n return super.init(els, options, Pushpin);\n }\n\n static getInstance(el: HTMLElement): Pushpin {\n return el['Expressive_Pushpin'];\n }\n\n destroy() {\n (this.el as HTMLElement).style.top = null;\n this._removePinClasses();\n // Remove pushpin Inst\n const index = Pushpin._pushpins.indexOf(this);\n Pushpin._pushpins.splice(index, 1);\n if (Pushpin._pushpins.length === 0) {\n this._removeEventHandlers();\n }\n this.el['Expressive_Pushpin'] = undefined;\n }\n\n static _updateElements() {\n for (let i = 0; i < Pushpin._pushpins.length; i++) {\n Pushpin._pushpins[i]._updatePosition();\n }\n }\n\n _setupEventHandlers() {\n document.addEventListener('scroll', Pushpin._updateElements, { passive: true });\n }\n\n _removeEventHandlers() {\n document.removeEventListener('scroll', Pushpin._updateElements);\n }\n\n _updatePosition() {\n const scrolled = Utils.getDocumentScrollTop() + this.options.offset;\n\n if (\n this.options.top <= scrolled &&\n this.options.bottom >= scrolled &&\n !this.el.classList.contains('pinned')\n ) {\n this._removePinClasses();\n (this.el as HTMLElement).style.top = `${this.options.offset}px`;\n this.el.classList.add('pinned');\n\n // onPositionChange callback\n if (typeof this.options.onPositionChange === 'function') {\n this.options.onPositionChange.call(this, 'pinned');\n }\n }\n\n // Add pin-top (when scrolled position is above top)\n if (scrolled < this.options.top && !this.el.classList.contains('pin-top')) {\n this._removePinClasses();\n (this.el as HTMLElement).style.top = '0';\n this.el.classList.add('pin-top');\n\n // onPositionChange callback\n if (typeof this.options.onPositionChange === 'function') {\n this.options.onPositionChange.call(this, 'pin-top');\n }\n }\n\n // Add pin-bottom (when scrolled position is below bottom)\n if (scrolled > this.options.bottom && !this.el.classList.contains('pin-bottom')) {\n this._removePinClasses();\n this.el.classList.add('pin-bottom');\n (this.el as HTMLElement).style.top = `${this.options.bottom - this.originalOffset}px`;\n\n // onPositionChange callback\n if (typeof this.options.onPositionChange === 'function') {\n this.options.onPositionChange.call(this, 'pin-bottom');\n }\n }\n }\n\n _removePinClasses() {\n this.el.classList.remove('pin-top', 'pinned', 'pin-bottom');\n }\n\n static {\n Pushpin._pushpins = [];\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface ScrollSpyOptions extends BaseOptions {\n /**\n * Throttle of scroll handler.\n * @default 100\n */\n throttle: number;\n /**\n * Offset for centering element when scrolled to.\n * @default 200\n */\n scrollOffset: number;\n /**\n * Class applied to active elements.\n * @default 'active'\n */\n activeClass: string;\n /**\n * Used to find active element.\n * @default id => 'a[href=\"#' + id + '\"]'\n */\n getActiveElement: (id: string) => string;\n /**\n * Used to keep last top element active even if\n * scrollbar goes outside of scrollspy elements.\n *\n * If there is no last top element,\n * then the active one will be the first element.\n *\n * @default false\n */\n keepTopElementActive: boolean;\n /**\n * Used to set scroll animation duration in milliseconds.\n * @default null (browser's native animation implementation/duration)\n */\n animationDuration: number | null;\n}\n\nconst _defaults: ScrollSpyOptions = {\n throttle: 100,\n scrollOffset: 200, // offset - 200 allows elements near bottom of page to scroll\n activeClass: 'active',\n getActiveElement: (id: string): string => {\n return 'a[href=\"#' + id + '\"]';\n },\n keepTopElementActive: false,\n animationDuration: null\n};\n\nexport class ScrollSpy extends Component<ScrollSpyOptions> {\n static _elements: ScrollSpy[];\n static _count: number;\n static _increment: number;\n static _elementsInView: ScrollSpy[];\n static _visibleElements: HTMLElement[];\n static _ticks: number;\n static _keptTopActiveElement: HTMLElement | null = null;\n // The document-level listeners are shared by every instance, so the\n // references they are registered with have to be shared too - registering\n // with one instance's bound handler and unregistering with another's is a\n // silent no-op that leaves the listener attached forever.\n private static _throttledScroll: (...args: unknown[]) => void = null;\n private static _throttledResize: (...args: unknown[]) => void = null;\n\n private tickId: number;\n private id: string;\n\n constructor(el: HTMLElement, options: Partial<ScrollSpyOptions>) {\n super(el, options, ScrollSpy);\n this.el['Expressive_ScrollSpy'] = this;\n\n this.options = {\n ...ScrollSpy.defaults,\n ...options\n };\n\n ScrollSpy._elements.push(this);\n ScrollSpy._count++;\n ScrollSpy._increment++;\n this.tickId = -1;\n this.id = ScrollSpy._increment.toString();\n this._setupEventHandlers();\n ScrollSpy._handleWindowScroll();\n }\n\n static get defaults(): ScrollSpyOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of ScrollSpy.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<ScrollSpyOptions>): ScrollSpy;\n /**\n * Initializes instances of ScrollSpy.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<ScrollSpyOptions>): ScrollSpy[];\n /**\n * Initializes instances of ScrollSpy.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<ScrollSpyOptions> = {}\n ): ScrollSpy | ScrollSpy[] {\n return super.init(els, options, ScrollSpy);\n }\n\n static getInstance(el: HTMLElement): ScrollSpy {\n return el['Expressive_ScrollSpy'];\n }\n\n destroy() {\n const elementIndex = ScrollSpy._elements.indexOf(this);\n if (elementIndex >= 0) ScrollSpy._elements.splice(elementIndex, 1);\n const inViewIndex = ScrollSpy._elementsInView.indexOf(this);\n if (inViewIndex >= 0) ScrollSpy._elementsInView.splice(inViewIndex, 1);\n const visibleIndex = ScrollSpy._visibleElements.indexOf(this.el);\n if (visibleIndex >= 0) ScrollSpy._visibleElements.splice(visibleIndex, 1);\n ScrollSpy._count--;\n this._removeEventHandlers();\n // Optional: the trigger may already be gone from the DOM, and throwing\n // here would abort the rest of the teardown.\n const actElem = document.querySelector(this.options.getActiveElement(this.el.id));\n actElem?.classList.remove(this.options.activeClass);\n this.el['Expressive_ScrollSpy'] = undefined;\n }\n\n _setupEventHandlers() {\n if (ScrollSpy._count === 1) {\n // Honour the documented `throttle` option - the scroll handler reads\n // layout for every spied element, so running it on every scroll event\n // was the single most expensive thing this component did.\n ScrollSpy._throttledScroll = Utils.throttle(ScrollSpy._handleWindowScroll, this.options.throttle);\n ScrollSpy._throttledResize = Utils.throttle(ScrollSpy._handleWindowScroll, 200);\n window.addEventListener('scroll', ScrollSpy._throttledScroll, { passive: true });\n window.addEventListener('resize', ScrollSpy._throttledResize, { passive: true });\n document.body.addEventListener('click', ScrollSpy._handleTriggerClick);\n }\n }\n\n _removeEventHandlers() {\n if (ScrollSpy._count === 0) {\n window.removeEventListener('scroll', ScrollSpy._throttledScroll);\n window.removeEventListener('resize', ScrollSpy._throttledResize);\n document.body.removeEventListener('click', ScrollSpy._handleTriggerClick);\n ScrollSpy._throttledScroll = null;\n ScrollSpy._throttledResize = null;\n }\n }\n\n static _handleTriggerClick = (e: MouseEvent) => {\n const trigger = e.target;\n for (let i = ScrollSpy._elements.length - 1; i >= 0; i--) {\n const scrollspy = ScrollSpy._elements[i];\n const x = document.querySelector('a[href=\"#' + scrollspy.el.id + '\"]');\n if (trigger === x) {\n e.preventDefault();\n\n if (scrollspy.el['Expressive_ScrollSpy'].options.animationDuration) {\n ScrollSpy._smoothScrollIntoView(\n scrollspy.el,\n scrollspy.el['Expressive_ScrollSpy'].options.animationDuration\n );\n } else {\n scrollspy.el.scrollIntoView({ behavior: 'smooth' });\n }\n break;\n }\n }\n };\n\n static _handleWindowScroll = () => {\n // unique tick id\n ScrollSpy._ticks++;\n\n // viewport rectangle\n const top = Utils.getDocumentScrollTop(),\n left = Utils.getDocumentScrollLeft(),\n right = left + window.innerWidth,\n bottom = top + window.innerHeight;\n\n // determine which elements are in view\n const intersections = ScrollSpy._findElements(top, right, bottom, left);\n for (let i = 0; i < intersections.length; i++) {\n const scrollspy = intersections[i];\n const lastTick = scrollspy.tickId;\n if (lastTick < 0) {\n // entered into view\n scrollspy._enter();\n }\n\n // update tick id\n scrollspy.tickId = ScrollSpy._ticks;\n }\n\n for (let i = 0; i < ScrollSpy._elementsInView.length; i++) {\n const scrollspy = ScrollSpy._elementsInView[i];\n const lastTick = scrollspy.tickId;\n if (lastTick >= 0 && lastTick !== ScrollSpy._ticks) {\n // exited from view\n scrollspy._exit();\n scrollspy.tickId = -1;\n }\n }\n // remember elements in view for next tick\n ScrollSpy._elementsInView = intersections;\n if (ScrollSpy._elements.length) {\n const options = ScrollSpy._elements[0].el['Expressive_ScrollSpy'].options;\n if (options.keepTopElementActive && ScrollSpy._visibleElements.length === 0) {\n ScrollSpy._resetKeptTopActiveElement(options.activeClass);\n // Measure once per element, then sort on the numbers. Reading the\n // distance inside the comparator meant O(n log n) forced layouts.\n const topElements = ScrollSpy._elements\n .map((value) => ({ value, distance: ScrollSpy._getDistanceToViewport(value.el) }))\n .filter((entry) => entry.distance <= 0)\n .sort((a, b) => a.distance - b.distance)\n .map((entry) => entry.value);\n const nearestTopElement = topElements.length\n ? topElements[topElements.length - 1]\n : ScrollSpy._elements[0];\n const actElem = document.querySelector(options.getActiveElement(nearestTopElement.el.id));\n actElem?.classList.add(options.activeClass);\n ScrollSpy._keptTopActiveElement = actElem as HTMLElement;\n }\n }\n };\n\n static _findElements(top: number, right: number, bottom: number, left: number): ScrollSpy[] {\n const hits = [];\n // Hoisted out of the loop: these are per-document, not per-element, and\n // reading them inside would force a layout flush on every iteration.\n const docElem = document.documentElement;\n const clientTop = docElem.clientTop;\n const clientLeft = docElem.clientLeft;\n const scrollY = window.scrollY;\n const scrollX = window.scrollX;\n\n for (let i = 0; i < ScrollSpy._elements.length; i++) {\n const scrollspy = ScrollSpy._elements[i];\n const currTop = top + scrollspy.options.scrollOffset || 200;\n\n // One rect per element per tick. This used to take five - a height\n // check, two _offset() calls that each built their own rect, and two\n // more reads for width and height - and it runs for every spied element\n // on every scroll tick.\n const box = scrollspy.el.getBoundingClientRect();\n if (box.height > 0) {\n const elTop = box.top + scrollY - clientTop,\n elLeft = box.left + scrollX - clientLeft,\n elRight = elLeft + box.width,\n elBottom = elTop + box.height;\n\n const isIntersect = !(\n elLeft > right ||\n elRight < left ||\n elTop > bottom ||\n elBottom < currTop\n );\n\n if (isIntersect) {\n hits.push(scrollspy);\n }\n }\n }\n return hits;\n }\n\n _enter() {\n ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter(\n (value) => value.getBoundingClientRect().height !== 0\n );\n\n if (ScrollSpy._visibleElements[0]) {\n const actElem = document.querySelector(\n this.options.getActiveElement(ScrollSpy._visibleElements[0].id)\n );\n actElem?.classList.remove(this.options.activeClass);\n\n if (\n ScrollSpy._visibleElements[0]['Expressive_ScrollSpy'] &&\n this.id < ScrollSpy._visibleElements[0]['Expressive_ScrollSpy'].id\n ) {\n ScrollSpy._visibleElements.unshift(this.el);\n } else {\n ScrollSpy._visibleElements.push(this.el);\n }\n } else {\n ScrollSpy._visibleElements.push(this.el);\n }\n ScrollSpy._resetKeptTopActiveElement(this.options.activeClass);\n const selector = this.options.getActiveElement(ScrollSpy._visibleElements[0].id);\n document.querySelector(selector)?.classList.add(this.options.activeClass);\n }\n\n _exit() {\n ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter(\n (value) => value.getBoundingClientRect().height !== 0\n );\n\n if (ScrollSpy._visibleElements[0]) {\n const actElem = document.querySelector(\n this.options.getActiveElement(ScrollSpy._visibleElements[0].id)\n );\n actElem?.classList.remove(this.options.activeClass);\n\n ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter((x) => x.id != this.el.id);\n\n if (ScrollSpy._visibleElements[0]) {\n // Check if empty\n const selector = this.options.getActiveElement(ScrollSpy._visibleElements[0].id);\n document.querySelector(selector)?.classList.add(this.options.activeClass);\n ScrollSpy._resetKeptTopActiveElement(this.options.activeClass);\n }\n }\n }\n\n private static _resetKeptTopActiveElement(activeClass: string) {\n if (ScrollSpy._keptTopActiveElement) {\n ScrollSpy._keptTopActiveElement.classList.remove(activeClass);\n ScrollSpy._keptTopActiveElement = null;\n }\n }\n\n private static _getDistanceToViewport(element) {\n const rect = element.getBoundingClientRect();\n const distance = rect.top;\n return distance;\n }\n\n private static _smoothScrollIntoView(element, duration = 300) {\n const targetPosition =\n element.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n const startPosition = window.scrollY || window.pageYOffset;\n const distance = targetPosition - startPosition;\n const startTime = performance.now();\n\n function scrollStep(currentTime) {\n const elapsed = currentTime - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const scrollY = startPosition + distance * progress;\n\n if (progress < 1) {\n window.scrollTo(0, scrollY);\n requestAnimationFrame(scrollStep);\n } else {\n window.scrollTo(0, targetPosition);\n }\n }\n requestAnimationFrame(scrollStep);\n }\n\n static {\n ScrollSpy._elements = [];\n ScrollSpy._elementsInView = [];\n ScrollSpy._visibleElements = []; // Array.<cash>\n ScrollSpy._count = 0;\n ScrollSpy._increment = 0;\n ScrollSpy._ticks = 0;\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement, Openable } from '../core/component';\n\nexport interface SidenavOptions extends BaseOptions {\n /**\n * Side of screen on which Sidenav appears.\n * @default 'left'\n */\n edge: 'left' | 'right';\n /**\n * Allow swipe gestures to open/close Sidenav.\n * @default true\n */\n draggable: boolean;\n /**\n * Width of the area where you can start dragging.\n * @default '10px'\n */\n dragTargetWidth: string;\n /**\n * Length in ms of enter transition.\n * @default 250\n */\n inDuration: number;\n /**\n * Length in ms of exit transition.\n * @default 200\n */\n outDuration: number;\n /**\n * Prevent page from scrolling while sidenav is open.\n * @default true\n */\n preventScrolling: boolean;\n /**\n * Function called when sidenav starts entering.\n */\n onOpenStart: (elem: HTMLElement) => void;\n /**\n * Function called when sidenav finishes entering.\n */\n onOpenEnd: (elem: HTMLElement) => void;\n /**\n * Function called when sidenav starts exiting.\n */\n onCloseStart: (elem: HTMLElement) => void;\n /**\n * Function called when sidenav finishes exiting.\n */\n onCloseEnd: (elem: HTMLElement) => void;\n}\n\nconst _defaults: SidenavOptions = {\n edge: 'left',\n draggable: true,\n dragTargetWidth: '10px',\n inDuration: 250,\n outDuration: 200,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n preventScrolling: true\n};\n\nexport class Sidenav extends Component<SidenavOptions> implements Openable {\n id: string;\n /** Describes open/close state of Sidenav. */\n isOpen: boolean;\n /** Describes if sidenav is fixed. */\n isFixed: boolean;\n /** Describes if Sidenav is being dragged. */\n isDragged: boolean;\n lastWindowWidth: number;\n lastWindowHeight: number;\n static _sidenavs: Sidenav[];\n private _overlay: HTMLElement;\n dragTarget: Element;\n private _startingXpos: number;\n private _xPos: number;\n private _time: number;\n private _width: number;\n private _initialScrollTop: number;\n private _verticallyScrolling: boolean;\n private deltaX: number;\n private velocityX: number;\n private percentOpen: number;\n\n constructor(el: HTMLElement, options: Partial<SidenavOptions>) {\n super(el, options, Sidenav);\n this.el['Expressive_Sidenav'] = this;\n\n this.options = {\n ...Sidenav.defaults,\n ...options\n };\n\n this.id = this.el.id;\n this.isOpen = false;\n this.isFixed = this.el.classList.contains('sidenav-fixed');\n this.isDragged = false;\n // Window size variables for window resize checks\n this.lastWindowWidth = window.innerWidth;\n this.lastWindowHeight = window.innerHeight;\n this._createOverlay();\n this._createDragTarget();\n this._setupEventHandlers();\n this._setupClasses();\n this._setupFixed();\n Sidenav._sidenavs.push(this);\n }\n\n static get defaults(): SidenavOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Sidenav.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<SidenavOptions>): Sidenav;\n /**\n * Initializes instances of Sidenav.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<SidenavOptions>): Sidenav[];\n /**\n * Initializes instances of Sidenav.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<SidenavOptions> = {}\n ): Sidenav | Sidenav[] {\n return super.init(els, options, Sidenav);\n }\n\n static getInstance(el: HTMLElement): Sidenav {\n return el['Expressive_Sidenav'];\n }\n\n destroy() {\n this._removeEventHandlers();\n this._enableBodyScrolling();\n this._overlay.parentNode.removeChild(this._overlay);\n this.dragTarget.parentNode.removeChild(this.dragTarget);\n this.el['Expressive_Sidenav'] = undefined;\n this.el.style.transform = '';\n const index = Sidenav._sidenavs.indexOf(this);\n if (index >= 0) {\n Sidenav._sidenavs.splice(index, 1);\n }\n }\n\n private _createOverlay() {\n this._overlay = document.createElement('div');\n this._overlay.classList.add('sidenav-overlay');\n this._overlay.addEventListener('click', this.close);\n document.body.appendChild(this._overlay);\n }\n\n private _setupEventHandlers() {\n if (Sidenav._sidenavs.length === 0) {\n document.body.addEventListener('click', this._handleTriggerClick);\n }\n // The drag handlers only set transforms and opacity - none of them calls\n // preventDefault - so they can be passive and stay off the scroll path.\n const passive = { passive: true } as const;\n this.dragTarget.addEventListener('touchmove', this._handleDragTargetDrag, passive);\n this.dragTarget.addEventListener('touchend', this._handleDragTargetRelease);\n this._overlay.addEventListener('touchmove', this._handleCloseDrag, passive);\n this._overlay.addEventListener('touchend', this._handleCloseRelease);\n this.el.addEventListener('touchmove', this._handleCloseDrag, passive);\n this.el.addEventListener('touchend', this._handleCloseRelease);\n this.el.addEventListener('click', this._handleCloseTriggerClick);\n // Add resize for side nav fixed\n if (this.isFixed) {\n window.addEventListener('resize', this._handleWindowResize, passive);\n }\n /* Set aria-hidden state */\n this._setAriaHidden();\n this._setTabIndex();\n }\n\n private _removeEventHandlers() {\n if (Sidenav._sidenavs.length === 1) {\n document.body.removeEventListener('click', this._handleTriggerClick);\n }\n this.dragTarget.removeEventListener('touchmove', this._handleDragTargetDrag);\n this.dragTarget.removeEventListener('touchend', this._handleDragTargetRelease);\n this._overlay.removeEventListener('touchmove', this._handleCloseDrag);\n this._overlay.removeEventListener('touchend', this._handleCloseRelease);\n this.el.removeEventListener('touchmove', this._handleCloseDrag);\n this.el.removeEventListener('touchend', this._handleCloseRelease);\n this.el.removeEventListener('click', this._handleCloseTriggerClick);\n\n // Remove resize for side nav fixed\n if (this.isFixed) {\n window.removeEventListener('resize', this._handleWindowResize);\n }\n }\n\n private _handleTriggerClick(e) {\n const trigger = e.target.closest('.sidenav-trigger');\n if (e.target && trigger) {\n const sidenavId = Utils.getIdFromTrigger(trigger);\n // The trigger can name an id that is not in the document.\n const sidenavInstance = document.getElementById(sidenavId)?.['Expressive_Sidenav'];\n if (sidenavInstance) {\n sidenavInstance.open();\n }\n e.preventDefault();\n }\n }\n\n // Set variables needed at the beginning of drag and stop any current transition.\n private _startDrag(e) {\n const clientX = e.targetTouches[0].clientX;\n this.isDragged = true;\n this._startingXpos = clientX;\n this._xPos = this._startingXpos;\n this._time = Date.now();\n this._width = this.el.getBoundingClientRect().width;\n this._overlay.style.display = 'block';\n this._initialScrollTop = this.isOpen ? this.el.scrollTop : Utils.getDocumentScrollTop();\n this._verticallyScrolling = false;\n }\n\n //Set variables needed at each drag move update tick\n private _dragMoveUpdate(e) {\n const clientX = e.targetTouches[0].clientX;\n const currentScrollTop = this.isOpen ? this.el.scrollTop : Utils.getDocumentScrollTop();\n this.deltaX = Math.abs(this._xPos - clientX);\n this._xPos = clientX;\n this.velocityX = this.deltaX / (Date.now() - this._time);\n this._time = Date.now();\n if (this._initialScrollTop !== currentScrollTop) {\n this._verticallyScrolling = true;\n }\n }\n\n private _handleDragTargetDrag = (e) => {\n // Check if draggable\n if (!this._isDraggable()) return;\n let totalDeltaX = this._calculateDelta(e);\n const dragDirection = totalDeltaX > 0 ? 'right' : 'left';\n // Don't allow totalDeltaX to exceed Sidenav width or be dragged in the opposite direction\n totalDeltaX = Math.min(this._width, Math.abs(totalDeltaX));\n if (this.options.edge === dragDirection) {\n totalDeltaX = 0;\n }\n /**\n * transformX is the drag displacement\n * transformPrefix is the initial transform placement\n * Invert values if Sidenav is right edge\n */\n let transformX = totalDeltaX;\n let transformPrefix = 'translateX(-100%)';\n if (this.options.edge === 'right') {\n transformPrefix = 'translateX(100%)';\n transformX = -transformX;\n }\n // Calculate open/close percentage of sidenav, with open = 1 and close = 0\n this.percentOpen = Math.min(1, totalDeltaX / this._width);\n // Set transform and opacity styles\n this.el.style.transform = `${transformPrefix} translateX(${transformX}px)`;\n this._overlay.style.opacity = this.percentOpen.toString();\n };\n\n private _handleDragTargetRelease = () => {\n if (this.isDragged) {\n if (this.percentOpen > 0.2) {\n this.open();\n } else {\n this._animateOut();\n }\n this.isDragged = false;\n this._verticallyScrolling = false;\n }\n };\n\n private _handleCloseDrag = (e) => {\n // Check if open and draggable\n if (!this.isOpen || !this._isDraggable()) return;\n let totalDeltaX = this._calculateDelta(e);\n // dragDirection is the attempted user drag direction\n const dragDirection = totalDeltaX > 0 ? 'right' : 'left';\n totalDeltaX = Math.min(this._width, Math.abs(totalDeltaX));\n if (this.options.edge !== dragDirection) {\n totalDeltaX = 0;\n }\n let transformX = -totalDeltaX;\n if (this.options.edge === 'right') {\n transformX = -transformX;\n }\n // Calculate open/close percentage of sidenav, with open = 1 and close = 0\n this.percentOpen = Math.min(1, 1 - totalDeltaX / this._width);\n // Set transform and opacity styles\n this.el.style.transform = `translateX(${transformX}px)`;\n this._overlay.style.opacity = this.percentOpen.toString();\n };\n\n private _calculateDelta = (e) => {\n // If not being dragged, set initial drag start variables\n if (!this.isDragged) {\n this._startDrag(e);\n }\n // Run touchmove updates\n this._dragMoveUpdate(e);\n // Calculate raw deltaX\n return this._xPos - this._startingXpos;\n };\n\n private _handleCloseRelease = () => {\n if (this.isOpen && this.isDragged) {\n if (this.percentOpen > 0.8) {\n this._animateIn();\n } else {\n this.close();\n }\n this.isDragged = false;\n this._verticallyScrolling = false;\n }\n };\n\n // Handles closing of Sidenav when element with class .sidenav-close\n private _handleCloseTriggerClick = (e) => {\n const closeTrigger = e.target.closest('.sidenav-close');\n if (closeTrigger && !this._isCurrentlyFixed()) {\n this.close();\n }\n };\n\n private _handleWindowResize = () => {\n // Only handle horizontal resizes\n if (this.lastWindowWidth !== window.innerWidth) {\n if (window.innerWidth > 992) {\n this.open();\n } else {\n this.close();\n }\n }\n this.lastWindowWidth = window.innerWidth;\n this.lastWindowHeight = window.innerHeight;\n };\n\n private _setupClasses() {\n if (this.options.edge === 'right') {\n this.el.classList.add('right-aligned');\n this.dragTarget.classList.add('right-aligned');\n }\n }\n\n private _removeClasses() {\n this.el.classList.remove('right-aligned');\n this.dragTarget.classList.remove('right-aligned');\n }\n\n private _setupFixed() {\n if (this._isCurrentlyFixed()) this.open();\n }\n\n private _isDraggable() {\n return this.options.draggable && !this._isCurrentlyFixed() && !this._verticallyScrolling;\n }\n\n private _isCurrentlyFixed() {\n return this.isFixed && window.innerWidth > 992;\n }\n\n private _createDragTarget() {\n const dragTarget = document.createElement('div');\n dragTarget.classList.add('drag-target');\n dragTarget.style.width = this.options.dragTargetWidth;\n document.body.appendChild(dragTarget);\n this.dragTarget = dragTarget;\n }\n\n private _preventBodyScrolling() {\n document.body.style.overflow = 'hidden';\n }\n\n private _enableBodyScrolling() {\n document.body.style.overflow = '';\n }\n\n /**\n * Opens Sidenav.\n */\n open = () => {\n if (this.isOpen === true) return;\n this.isOpen = true;\n // Run onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, this.el);\n }\n // Handle fixed Sidenav\n if (this._isCurrentlyFixed()) {\n // Show if fixed\n this.el.style.transform = 'translateX(0)';\n this._enableBodyScrolling();\n this._overlay.style.display = 'none';\n }\n // Handle non-fixed Sidenav\n else {\n if (this.options.preventScrolling) this._preventBodyScrolling();\n if (!this.isDragged || this.percentOpen != 1) this._animateIn();\n /* Set aria-hidden state */\n this._setAriaHidden();\n this._setTabIndex();\n }\n };\n\n /**\n * Closes Sidenav.\n */\n close = () => {\n if (this.isOpen === false) return;\n this.isOpen = false;\n // Run onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, this.el);\n }\n // Handle fixed Sidenav\n if (this._isCurrentlyFixed()) {\n const transformX = this.options.edge === 'left' ? '-105%' : '105%';\n this.el.style.transform = `translateX(${transformX})`;\n }\n // Handle non-fixed Sidenav\n else {\n this._enableBodyScrolling();\n if (!this.isDragged || this.percentOpen != 0) {\n this._animateOut();\n } else {\n this._overlay.style.display = 'none';\n }\n /* Set aria-hidden state */\n this._setAriaHidden();\n this._setTabIndex();\n }\n };\n\n private _animateIn() {\n this._animateSidenavIn();\n this._animateOverlayIn();\n }\n\n private _animateOut() {\n this._animateSidenavOut();\n this._animateOverlayOut();\n }\n\n private _animateSidenavIn() {\n let slideOutPercent = this.options.edge === 'left' ? -1 : 1;\n if (this.isDragged) {\n slideOutPercent =\n this.options.edge === 'left'\n ? slideOutPercent + this.percentOpen\n : slideOutPercent - this.percentOpen;\n }\n const duration = this.options.inDuration;\n // from\n this.el.style.transition = 'none';\n this.el.style.transform = 'translateX(' + slideOutPercent * 100 + '%)';\n setTimeout(() => {\n this.el.style.transition = `transform ${duration}ms ease`; // easeOutQuad\n // to\n this.el.style.transform = 'translateX(0)';\n }, 1);\n setTimeout(() => {\n if (typeof this.options.onOpenEnd === 'function') this.options.onOpenEnd.call(this, this.el);\n }, duration);\n }\n\n private _animateSidenavOut() {\n const endPercent = this.options.edge === 'left' ? -1 : 1;\n // let slideOutPercent = 0;\n // if (this.isDragged) {\n // // @todo unused variable\n // slideOutPercent =\n // this.options.edge === 'left'\n // ? endPercent + this.percentOpen\n // : endPercent - this.percentOpen;\n // }\n\n const duration = this.options.outDuration;\n this.el.style.transition = `transform ${duration}ms ease`; // easeOutQuad\n // to\n this.el.style.transform = 'translateX(' + endPercent * 100 + '%)';\n setTimeout(() => {\n if (typeof this.options.onCloseEnd === 'function')\n this.options.onCloseEnd.call(this, this.el);\n }, duration);\n }\n\n private _animateOverlayIn() {\n let start = 0;\n if (this.isDragged) start = this.percentOpen;\n else this._overlay.style.display = 'block';\n // Animation\n const duration = this.options.inDuration;\n // from\n this._overlay.style.transition = 'none';\n this._overlay.style.opacity = start.toString();\n // easeOutQuad\n setTimeout(() => {\n this._overlay.style.transition = `opacity ${duration}ms ease`;\n // to\n this._overlay.style.opacity = '1';\n }, 1);\n }\n\n private _animateOverlayOut() {\n const duration = this.options.outDuration;\n // easeOutQuad\n this._overlay.style.transition = `opacity ${duration}ms ease`;\n // to\n this._overlay.style.opacity = '0';\n setTimeout(() => {\n this._overlay.style.display = 'none';\n }, duration);\n }\n\n private _setAriaHidden = () => {\n this.el.ariaHidden = this.isOpen ? 'false' : 'true';\n const navWrapper = document.querySelector('.nav-wrapper ul') as HTMLUListElement;\n if (navWrapper) navWrapper.ariaHidden = this.isOpen.toString();\n };\n\n private _setTabIndex = () => {\n const navLinks = document.querySelectorAll('.nav-wrapper ul li a');\n const sideNavLinks = document.querySelectorAll('.sidenav li a');\n if (navLinks)\n navLinks.forEach((navLink: HTMLAnchorElement) => {\n navLink.tabIndex = this.isOpen ? -1 : 0;\n });\n if (sideNavLinks)\n sideNavLinks.forEach((sideNavLink: HTMLAnchorElement) => {\n sideNavLink.tabIndex = this.isOpen ? 0 : -1;\n });\n };\n\n static {\n Sidenav._sidenavs = [];\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface SliderOptions extends BaseOptions {\n /**\n * Set to false to hide slide indicators.\n * @default true\n */\n indicators: boolean;\n /**\n * Set height of slider.\n * @default 400\n */\n height: number;\n /**\n * Set the duration of the transition animation in ms.\n * @default 500\n */\n duration: number;\n /**\n * Set the duration between transitions in ms.\n * @default 6000\n */\n interval: number;\n /**\n * If slider should pause when keyboard focus is received.\n * @default true\n */\n pauseOnFocus: boolean;\n /**\n * If slider should pause when is hovered by a pointer.\n * @default true\n */\n pauseOnHover: boolean;\n /**\n * Optional function used to generate ARIA label to indicators (for accessibility purposes).\n * @param index Current index, starting from \"1\".\n * @param current A which indicates whether it is the current element or not\n * @returns a string to be used as label indicator.\n * @default null\n */\n indicatorLabelFunc: (index: number, current: boolean) => string;\n}\n\nconst _defaults: SliderOptions = {\n indicators: true,\n height: 400,\n duration: 500,\n interval: 6000,\n pauseOnFocus: true,\n pauseOnHover: true,\n indicatorLabelFunc: null // Function which will generate a label for the indicators (ARIA)\n};\n\nexport class Slider extends Component<SliderOptions> {\n /** Index of current slide. */\n activeIndex: number;\n interval: ReturnType<typeof setTimeout>;\n eventPause: boolean;\n _slider: HTMLUListElement;\n _slides: HTMLLIElement[];\n _activeSlide: HTMLLIElement;\n _indicators: HTMLLIElement[];\n _hovered: boolean;\n _focused: boolean;\n _focusCurrent: boolean;\n _sliderId: string;\n\n constructor(el: HTMLElement, options: Partial<SliderOptions>) {\n super(el, options, Slider);\n this.el['Expressive_Slider'] = this;\n\n this.options = {\n ...Slider.defaults,\n ...options\n };\n\n // init props\n this.interval = null;\n this.eventPause = false;\n this._hovered = false;\n this._focused = false;\n this._focusCurrent = false;\n\n // setup\n this._slider = this.el.querySelector('.slides');\n this._slides = Array.from(this._slider.querySelectorAll('li'));\n this.activeIndex = this._slides.findIndex((li) => li.classList.contains('active'));\n\n if (this.activeIndex !== -1) {\n this._activeSlide = this._slides[this.activeIndex];\n }\n\n this._setSliderHeight();\n\n // Sets element id if it does not have one\n if (this._slider.hasAttribute('id')) this._sliderId = this._slider.getAttribute('id');\n else {\n this._sliderId = 'slider-' + Utils.guid();\n this._slider.setAttribute('id', this._sliderId);\n }\n\n const placeholderBase64 =\n 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n // Set initial positions of captions\n this._slides.forEach((slide) => {\n // Caption\n //const caption = <HTMLElement|null>slide.querySelector('.caption');\n //if (caption) this._animateCaptionIn(caption, 0);\n // Set Images as Background Images\n const img = slide.querySelector('img');\n if (img) {\n if (img.src !== placeholderBase64) {\n img.style.backgroundImage = 'url(' + img.src + ')';\n img.src = placeholderBase64;\n }\n }\n // Sets slide as focusable by code\n if (!slide.hasAttribute('tabindex')) slide.setAttribute('tabindex', '-1');\n // Removes initial visibility from \"inactive\" slides\n slide.style.visibility = 'hidden';\n });\n\n this._setupIndicators();\n\n // Show active slide\n if (this._activeSlide) {\n this._activeSlide.style.display = 'block';\n this._activeSlide.style.visibility = 'visible';\n } else {\n this.activeIndex = 0;\n this._slides[0].classList.add('active');\n this._slides[0].style.visibility = 'visible';\n this._activeSlide = this._slides[0];\n this._animateSlide(this._slides[0], true);\n // Update indicators\n if (this.options.indicators) {\n this._indicators[this.activeIndex].children[0].classList.add('active');\n }\n }\n this._setupEventHandlers();\n // auto scroll\n this.start();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n /**\n * Initializes instance of Slider.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<SliderOptions>): Slider;\n /**\n * Initializes instances of Slider.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<SliderOptions>): Slider[];\n /**\n * Initializes instances of Slider.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<SliderOptions> = {}\n ): Slider | Slider[] {\n return super.init(els, options, Slider);\n }\n\n static getInstance(el: HTMLElement): Slider {\n return el['Expressive_Slider'];\n }\n\n destroy() {\n this.pause();\n this._removeIndicators();\n this._removeEventHandlers();\n this.el['Expressive_Slider'] = undefined;\n }\n\n private _setupEventHandlers() {\n if (this.options.pauseOnFocus) {\n this.el.addEventListener('focusin', this._handleAutoPauseFocus);\n this.el.addEventListener('focusout', this._handleAutoStartFocus);\n }\n if (this.options.pauseOnHover) {\n this.el.addEventListener('mouseenter', this._handleAutoPauseHover);\n this.el.addEventListener('mouseleave', this._handleAutoStartHover);\n }\n if (this.options.indicators) {\n this._indicators.forEach((el) => {\n el.addEventListener('click', this._handleIndicatorClick);\n });\n }\n document.addEventListener('visibilitychange', this._handleVisibilityChange);\n }\n\n private _removeEventHandlers() {\n if (this.options.pauseOnFocus) {\n this.el.removeEventListener('focusin', this._handleAutoPauseFocus);\n this.el.removeEventListener('focusout', this._handleAutoStartFocus);\n }\n if (this.options.pauseOnHover) {\n this.el.removeEventListener('mouseenter', this._handleAutoPauseHover);\n this.el.removeEventListener('mouseleave', this._handleAutoStartHover);\n }\n if (this.options.indicators) {\n this._indicators.forEach((el) => {\n el.removeEventListener('click', this._handleIndicatorClick);\n });\n }\n document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n }\n\n // Nobody is watching a backgrounded tab. Browsers clamp the timer rather\n // than stopping it, so without this the slider keeps cycling slides - and\n // running their transitions - out of sight.\n private _handleVisibilityChange = () => {\n if (document.hidden) {\n if (this.interval != null) this._pause(true);\n } else if (\n this.eventPause &&\n !(this.options.pauseOnHover && this._hovered) &&\n !(this.options.pauseOnFocus && this._focused)\n ) {\n this.start();\n }\n };\n\n private _handleIndicatorClick = (e: MouseEvent) => {\n const el = (<HTMLElement>e.target).parentElement;\n const currIndex = [...el.parentNode.children].indexOf(el);\n this._focusCurrent = true;\n this.set(currIndex);\n };\n\n private _handleAutoPauseHover = () => {\n this._hovered = true;\n if (this.interval != null) {\n this._pause(true);\n }\n };\n\n private _handleAutoPauseFocus = () => {\n this._focused = true;\n if (this.interval != null) {\n this._pause(true);\n }\n };\n\n private _handleAutoStartHover = () => {\n this._hovered = false;\n if (!(this.options.pauseOnFocus && this._focused) && this.eventPause) {\n this.start();\n }\n };\n\n private _handleAutoStartFocus = () => {\n this._focused = false;\n if (!(this.options.pauseOnHover && this._hovered) && this.eventPause) {\n this.start();\n }\n };\n\n private _handleInterval = () => {\n const activeElem = this._slider.querySelector('.active');\n let newActiveIndex = [...activeElem.parentNode.children].indexOf(activeElem);\n if (this._slides.length === newActiveIndex + 1)\n newActiveIndex = 0; // loop to start\n else newActiveIndex += 1;\n this.set(newActiveIndex);\n };\n\n private _animateSlide(slide: HTMLElement, isDirectionIn: boolean): void {\n let dx = 0,\n dy = 0;\n // from\n slide.style.opacity = isDirectionIn ? '0' : '1';\n setTimeout(() => {\n slide.style.transition = `opacity ${this.options.duration}ms ease`;\n // to\n slide.style.opacity = isDirectionIn ? '1' : '0';\n }, 1);\n // Caption\n const caption: HTMLElement = slide.querySelector('.caption');\n if (!caption) return;\n if (caption.classList.contains('center-align')) dy = -100;\n else if (caption.classList.contains('right-align')) dx = 100;\n else if (caption.classList.contains('left-align')) dx = -100;\n // from\n caption.style.opacity = isDirectionIn ? '0' : '1';\n caption.style.transform = isDirectionIn ? `translate(${dx}px, ${dy}px)` : `translate(0, 0)`;\n setTimeout(() => {\n caption.style.transition = `opacity ${this.options.duration}ms ease, transform ${this.options.duration}ms ease`;\n // to\n caption.style.opacity = isDirectionIn ? '1' : '0';\n caption.style.transform = isDirectionIn ? `translate(0, 0)` : `translate(${dx}px, ${dy}px)`;\n }, this.options.duration); // delay\n }\n\n private _setSliderHeight() {\n // If fullscreen, do nothing\n if (!this.el.classList.contains('fullscreen')) {\n if (this.options.indicators) {\n // Add height if indicators are present\n this.el.style.height = this.options.height + 40 + 'px'; //.css('height', this.options.height + 40 + 'px');\n } else {\n this.el.style.height = this.options.height + 'px';\n }\n this._slider.style.height = this.options.height + 'px';\n }\n }\n\n private _setupIndicators() {\n if (this.options.indicators) {\n const ul = document.createElement('ul');\n ul.classList.add('indicators');\n\n const arrLi = [];\n this._slides.forEach((el, i) => {\n const label = this.options.indicatorLabelFunc\n ? this.options.indicatorLabelFunc.call(this, i + 1, i === 0)\n : `${i + 1}`;\n const li = document.createElement('li');\n li.classList.add('indicator-item');\n // setAttribute, not an interpolated attribute in markup: the label\n // comes from indicatorLabelFunc and a quote in it would break out.\n const button = document.createElement('button');\n button.type = 'button';\n button.classList.add('indicator-item-btn');\n button.setAttribute('aria-label', label);\n button.setAttribute('aria-controls', this._sliderId);\n li.appendChild(button);\n arrLi.push(li);\n ul.append(li);\n });\n\n this.el.append(ul);\n this._indicators = arrLi;\n }\n }\n\n private _removeIndicators() {\n this.el.querySelector('ul.indicators').remove(); //find('ul.indicators').remove();\n }\n\n set(index: number) {\n // Wrap around indices.\n if (index >= this._slides.length) index = 0;\n else if (index < 0) index = this._slides.length - 1;\n\n // Only do if index changes\n if (this.activeIndex === index) return;\n\n this._activeSlide = this._slides[this.activeIndex];\n const _caption = <HTMLElement | null>this._activeSlide.querySelector('.caption');\n\n this._activeSlide.classList.remove('active');\n // Enables every slide\n this._slides.forEach((slide) => (slide.style.visibility = 'visible'));\n\n //--- Hide active Slide + Caption\n this._activeSlide.style.opacity = '0';\n setTimeout(() => {\n this._slides.forEach((slide) => {\n if (slide.classList.contains('active')) return;\n slide.style.opacity = '0';\n slide.style.transform = 'translate(0, 0)';\n // Disables invisible slides (for assistive technologies)\n slide.style.visibility = 'hidden';\n });\n }, this.options.duration);\n\n // Hide active Caption - a slide is not required to have one.\n //this._animateCaptionIn(_caption, this.options.duration);\n if (_caption) _caption.style.opacity = '0';\n\n // Update indicators\n if (this.options.indicators) {\n const activeIndicator = this._indicators[this.activeIndex].children[0];\n const nextIndicator = this._indicators[index].children[0];\n activeIndicator.classList.remove('active');\n nextIndicator.classList.add('active');\n if (typeof this.options.indicatorLabelFunc === 'function') {\n activeIndicator.ariaLabel = this.options.indicatorLabelFunc.call(\n this,\n this.activeIndex,\n false\n );\n nextIndicator.ariaLabel = this.options.indicatorLabelFunc.call(this, index, true);\n }\n }\n\n //--- Show new Slide + Caption\n this._animateSlide(this._slides[index], true);\n this._slides[index].classList.add('active');\n this.activeIndex = index;\n\n // Reset interval, if allowed. This check prevents autostart\n // when slider is paused, since it can be changed though indicators.\n if (this.interval != null) {\n this.start();\n }\n }\n\n _pause(fromEvent: boolean) {\n clearInterval(this.interval);\n this.eventPause = fromEvent;\n this.interval = null;\n }\n\n /**\n * Pause slider autoslide.\n */\n pause = () => {\n this._pause(false);\n };\n\n /**\n * Start slider autoslide.\n */\n start = () => {\n clearInterval(this.interval);\n this.interval = setInterval(\n this._handleInterval,\n this.options.duration + this.options.interval\n );\n this.eventPause = false;\n };\n\n /**\n * Move to next slider.\n */\n next = () => {\n let newIndex = this.activeIndex + 1;\n // Wrap around indices.\n if (newIndex >= this._slides.length) newIndex = 0;\n else if (newIndex < 0) newIndex = this._slides.length - 1;\n this.set(newIndex);\n };\n\n /**\n * Move to prev slider.\n */\n prev = () => {\n let newIndex = this.activeIndex - 1;\n // Wrap around indices.\n if (newIndex >= this._slides.length) newIndex = 0;\n else if (newIndex < 0) newIndex = this._slides.length - 1;\n this.set(newIndex);\n };\n}\n", "import { Carousel } from './carousel';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport interface TabsOptions extends BaseOptions {\n /**\n * Transition duration in milliseconds.\n * @default 300\n */\n duration: number;\n /**\n * Callback for when a new tab content is shown.\n * @default null\n */\n onShow: (newContent: Element) => void;\n /**\n * Set to true to enable swipeable tabs.\n * This also uses the responsiveThreshold option.\n * @default false\n */\n swipeable: boolean;\n /**\n * The maximum width of the screen, in pixels,\n * where the swipeable functionality initializes.\n * @default infinity\n */\n responsiveThreshold: number;\n}\n\nconst _defaults: TabsOptions = {\n duration: 300,\n onShow: null,\n swipeable: false,\n responsiveThreshold: Infinity // breakpoint for swipeable\n};\n\nexport class Tabs extends Component<TabsOptions> {\n _tabLinks: NodeListOf<HTMLAnchorElement>;\n _index: number;\n _indicator: HTMLElement;\n _tabWidth: number;\n _tabsWidth: number;\n _tabsCarousel: Carousel;\n _activeTabLink: HTMLAnchorElement;\n _content: HTMLElement;\n\n constructor(el: HTMLElement, options: Partial<TabsOptions>) {\n super(el, options, Tabs);\n this.el['Expressive_Tabs'] = this;\n\n this.options = {\n ...Tabs.defaults,\n ...options\n };\n\n this._tabLinks = this._queryTabLinks();\n this._index = 0;\n this._setupActiveTabLink();\n if (this.options.swipeable) {\n this._setupSwipeableTabs();\n } else {\n this._setupNormalTabs();\n }\n // Setup tabs indicator after content to ensure accurate widths\n this._setTabsAndTabWidth();\n this._createIndicator();\n this._setupEventHandlers();\n }\n\n static get defaults(): TabsOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Tabs.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<TabsOptions>): Tabs;\n /**\n * Initializes instances of Tabs.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<TabsOptions>): Tabs[];\n /**\n * Initializes instances of Tabs.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<TabsOptions> = {}\n ): Tabs | Tabs[] {\n return super.init(els, options, Tabs);\n }\n\n static getInstance(el: HTMLElement): Tabs {\n return el['Expressive_Tabs'];\n }\n\n destroy() {\n this._removeEventHandlers();\n this._indicator.parentNode.removeChild(this._indicator);\n if (this.options.swipeable) {\n this._teardownSwipeableTabs();\n } else {\n this._teardownNormalTabs();\n }\n this.el['Expressive_Tabs'] = undefined;\n }\n\n /**\n * The index of tab that is currently shown.\n */\n get index() {\n return this._index;\n }\n\n _setupEventHandlers() {\n window.addEventListener('resize', this._handleWindowResize);\n this.el.addEventListener('click', this._handleTabClick);\n }\n\n _removeEventHandlers() {\n window.removeEventListener('resize', this._handleWindowResize);\n this.el.removeEventListener('click', this._handleTabClick);\n }\n\n _handleWindowResize = () => {\n this._setTabsAndTabWidth();\n if (this._tabWidth !== 0 && this._tabsWidth !== 0) {\n this._indicator.style.left = this._calcLeftPos(this._activeTabLink) + 'px';\n this._indicator.style.right = this._calcRightPos(this._activeTabLink) + 'px';\n }\n };\n\n _queryTabLinks() {\n return this.el.querySelectorAll<HTMLAnchorElement>(\n ':scope > a, :scope > .tab > a, :scope > li.tab > a'\n );\n }\n\n _handleTabClick = (e: MouseEvent) => {\n const target = e.target as Element | null;\n if (!target) return;\n const tabLink = target.closest('a') as HTMLAnchorElement | null;\n if (!tabLink || !Array.from(this._tabLinks).includes(tabLink)) return;\n\n const tab = tabLink.parentElement;\n const disabled =\n tabLink.classList.contains('disabled') ||\n tabLink.getAttribute('aria-disabled') === 'true' ||\n tab?.classList.contains('disabled');\n if (disabled) {\n e.preventDefault();\n return;\n }\n // Act as regular link if target attribute is specified.\n if (tabLink.hasAttribute('target')) return;\n // Make the old tab inactive.\n this._activeTabLink.classList.remove('active');\n const _oldContent = this._content;\n // Update the variables with the new link and content\n\n this._activeTabLink = tabLink;\n if (tabLink.hash) this._content = document.querySelector(tabLink.hash);\n this._tabLinks = this._queryTabLinks();\n // Make the tab active\n this._activeTabLink.classList.add('active');\n const prevIndex = this._index;\n this._index = Math.max(Array.from(this._tabLinks).indexOf(tabLink), 0);\n\n // Swap content\n if (this.options.swipeable) {\n if (this._tabsCarousel) {\n this._tabsCarousel.set(this._index, () => {\n if (typeof this.options.onShow === 'function')\n this.options.onShow.call(this, this._content);\n });\n }\n } else {\n if (this._content) {\n this._content.style.display = 'block';\n this._content.classList.add('active');\n if (typeof this.options.onShow === 'function')\n this.options.onShow.call(this, this._content);\n if (_oldContent && _oldContent !== this._content) {\n _oldContent.style.display = 'none';\n _oldContent.classList.remove('active');\n }\n }\n }\n // Update widths after content is swapped (scrollbar bugfix)\n this._setTabsAndTabWidth();\n this._animateIndicator(prevIndex);\n e.preventDefault();\n };\n\n _createIndicator() {\n const tag = this.el.tagName === 'UL' || this.el.tagName === 'OL' ? 'li' : 'span';\n const indicator = document.createElement(tag);\n indicator.classList.add('indicator');\n this.el.appendChild(indicator);\n this._indicator = indicator;\n this._indicator.style.left = this._calcLeftPos(this._activeTabLink) + 'px';\n this._indicator.style.right = this._calcRightPos(this._activeTabLink) + 'px';\n }\n\n _setupActiveTabLink() {\n // If the location.hash matches one of the links, use that as the active tab.\n this._activeTabLink = Array.from(this._tabLinks).find(\n (a: HTMLAnchorElement) => a.getAttribute('href') === location.hash\n );\n // If no match is found, use the first link or any with class 'active' as the initial active tab.\n if (!this._activeTabLink) {\n let activeTabLink = this.el.querySelector('a.active');\n if (!activeTabLink) {\n activeTabLink = this._tabLinks[0];\n }\n this._activeTabLink = activeTabLink as HTMLAnchorElement;\n }\n Array.from(this._tabLinks).forEach((a: HTMLAnchorElement) => a.classList.remove('active'));\n this._activeTabLink.classList.add('active');\n\n this._index = Math.max(Array.from(this._tabLinks).indexOf(this._activeTabLink), 0);\n if (this._activeTabLink && this._activeTabLink.hash) {\n this._content = document.querySelector(this._activeTabLink.hash);\n if (this._content) this._content.classList.add('active');\n }\n }\n\n _setupSwipeableTabs() {\n // Change swipeable according to responsive threshold\n if (window.innerWidth > this.options.responsiveThreshold) this.options.swipeable = false;\n\n const tabsContent = [];\n this._tabLinks.forEach((a) => {\n if (a.hash) {\n const currContent = document.querySelector(a.hash);\n currContent.classList.add('carousel-item');\n tabsContent.push(currContent);\n }\n });\n\n // Create Carousel-Wrapper around Tab-Contents\n const tabsWrapper = document.createElement('div');\n tabsWrapper.classList.add('tabs-content', 'carousel', 'carousel-slider');\n\n // Wrap around\n tabsContent[0].parentElement.insertBefore(tabsWrapper, tabsContent[0]);\n tabsContent.forEach((tabContent) => {\n tabsWrapper.appendChild(tabContent);\n tabContent.style.display = '';\n });\n\n this._tabsCarousel = Carousel.init(tabsWrapper, {\n fullWidth: true,\n noWrap: true,\n onCycleTo: (item) => {\n const prevIndex = this._index;\n this._index = Array.from(item.parentNode.children).indexOf(item);\n this._activeTabLink.classList.remove('active');\n this._activeTabLink = Array.from(this._tabLinks)[this._index];\n this._activeTabLink.classList.add('active');\n this._animateIndicator(prevIndex);\n if (typeof this.options.onShow === 'function')\n this.options.onShow.call(this, this._content);\n }\n });\n // Set initial carousel slide to active tab\n this._tabsCarousel.set(this._index);\n }\n\n _teardownSwipeableTabs() {\n const tabsWrapper = this._tabsCarousel.el;\n this._tabsCarousel.destroy();\n // Unwrap\n tabsWrapper.append(tabsWrapper.parentElement);\n tabsWrapper.remove();\n }\n\n _setupNormalTabs() {\n // Hide Tabs Content\n Array.from(this._tabLinks).forEach((a) => {\n if (a === this._activeTabLink) return;\n if ((<HTMLAnchorElement>a).hash) {\n const currContent = document.querySelector((<HTMLAnchorElement>a).hash);\n if (currContent) (<HTMLElement>currContent).style.display = 'none';\n }\n });\n }\n\n _teardownNormalTabs() {\n // show Tabs Content\n this._tabLinks.forEach((a) => {\n if (a.hash) {\n const currContent = document.querySelector(a.hash) as HTMLElement;\n if (currContent) currContent.style.display = '';\n }\n });\n }\n\n _setTabsAndTabWidth() {\n this._tabsWidth = this.el.getBoundingClientRect().width;\n this._tabWidth = Math.max(this._tabsWidth, this.el.scrollWidth) / this._tabLinks.length;\n }\n\n _calcRightPos(el) {\n return Math.ceil(this._tabsWidth - el.offsetLeft - el.getBoundingClientRect().width);\n }\n\n _calcLeftPos(el) {\n return Math.floor(el.offsetLeft);\n }\n\n /**\n * Recalculate tab indicator position. This is useful when\n * the indicator position is not correct.\n */\n updateTabIndicator() {\n this._setTabsAndTabWidth();\n this._animateIndicator(this._index);\n }\n\n _animateIndicator(prevIndex) {\n let leftDelay = 0,\n rightDelay = 0;\n\n const isMovingLeftOrStaying = this._index - prevIndex >= 0;\n if (isMovingLeftOrStaying) leftDelay = 90;\n else rightDelay = 90;\n\n // in v1: easeOutQuad\n this._indicator.style.transition = `\n left ${this.options.duration}ms ease-out ${leftDelay}ms,\n right ${this.options.duration}ms ease-out ${rightDelay}ms`;\n\n this._indicator.style.left = this._calcLeftPos(this._activeTabLink) + 'px';\n this._indicator.style.right = this._calcRightPos(this._activeTabLink) + 'px';\n }\n\n /**\n * Show tab content that corresponds to the tab with the id.\n * @param tabId The id of the tab that you want to switch to.\n */\n select(tabId: string) {\n const tab = Array.from(this._tabLinks).find(\n (a: HTMLAnchorElement) => a.getAttribute('href') === '#' + tabId\n );\n if (tab) (<HTMLAnchorElement>tab).click();\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement, Openable } from '../core/component';\n\nexport interface TapTargetOptions extends BaseOptions {\n /**\n * Callback function called when Tap Target is opened.\n * @default null\n */\n onOpen: (origin: HTMLElement) => void;\n /**\n * Callback function called when Tap Target is closed.\n * @default null\n */\n onClose: (origin: HTMLElement) => void;\n}\n\nconst _defaults: TapTargetOptions = {\n onOpen: null,\n onClose: null\n};\n\nexport class TapTarget extends Component<TapTargetOptions> implements Openable {\n /**\n * If the tap target is open.\n */\n isOpen: boolean;\n\n static _taptargets: TapTarget[];\n private wrapper: HTMLElement;\n // private _origin: HTMLElement;\n private originEl: HTMLElement;\n private waveEl: HTMLElement & Element & Node;\n private contentEl: HTMLElement;\n\n constructor(el: HTMLElement, options: Partial<TapTargetOptions>) {\n super(el, options, TapTarget);\n this.el['Expressive_TapTarget'] = this;\n\n this.options = {\n ...TapTarget.defaults,\n ...options\n };\n\n this.isOpen = false;\n // setup\n // getElementById, not a `#${...}` selector: data-target is author content\n // and anything that is not a bare identifier either threw a SyntaxError\n // here or steered the query somewhere else.\n this.originEl = el.dataset.target ? document.getElementById(el.dataset.target) : null;\n if (!this.originEl) {\n console.error(`TapTarget: no element with id \"${el.dataset.target ?? ''}\" to attach to`);\n return;\n }\n this.originEl.tabIndex = 0;\n\n this._setup();\n this._calculatePositioning();\n this._setupEventHandlers();\n\n TapTarget._taptargets.push(this);\n }\n\n static get defaults(): TapTargetOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of TapTarget.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<TapTargetOptions>): TapTarget;\n /**\n * Initializes instances of TapTarget.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<TapTargetOptions>): TapTarget[];\n /**\n * Initializes instances of TapTarget.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<TapTargetOptions> = {}\n ): TapTarget | TapTarget[] {\n return super.init(els, options, TapTarget);\n }\n\n static getInstance(el: HTMLElement): TapTarget {\n return el['Expressive_TapTarget'];\n }\n\n destroy() {\n // close() detaches the document-level handlers registered by open(); they\n // are not covered by _removeEventHandlers and would otherwise survive.\n this.close();\n this._removeEventHandlers();\n this.el['Expressive_TapTarget'] = undefined;\n const index = TapTarget._taptargets.indexOf(this);\n if (index >= 0) {\n TapTarget._taptargets.splice(index, 1);\n }\n }\n\n _setupEventHandlers() {\n if (!this.originEl) return; // constructor bailed: nothing was ever wired up\n this.originEl.addEventListener('click', this._handleTargetToggle);\n this.originEl.addEventListener('keypress', this._handleKeyboardInteraction, true);\n // this.originEl.addEventListener('click', this._handleOriginClick);\n // Resize\n window.addEventListener('resize', this._handleThrottledResize);\n }\n\n _removeEventHandlers() {\n if (!this.originEl) return;\n this.originEl.removeEventListener('click', this._handleTargetToggle);\n this.originEl.removeEventListener('keypress', this._handleKeyboardInteraction, true);\n // this.originEl.removeEventListener('click', this._handleOriginClick);\n window.removeEventListener('resize', this._handleThrottledResize);\n }\n\n // Built once per instance; see the note in carousel.ts - the previous form\n // returned a new throttled function on every resize and never invoked it.\n _handleThrottledResize = Utils.throttle(() => this._handleResize(), 200);\n\n _handleKeyboardInteraction = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n this._handleTargetToggle();\n }\n };\n\n _handleTargetToggle = () => {\n if (!this.isOpen) this.open();\n else this.close();\n };\n\n /*_handleOriginClick = () => {\n this.close();\n }*/\n\n _handleResize = () => {\n this._calculatePositioning();\n };\n\n _handleDocumentClick = (e: MouseEvent | TouchEvent | KeyboardEvent) => {\n const target = e.target;\n if (!(target instanceof Element)) return;\n // \"outside the origin and outside the tap target\" - expressed against the\n // elements themselves rather than by rebuilding a selector from\n // data-target on every document click.\n if (!this.originEl.contains(target) && !target.closest('.tap-target-wrapper')) {\n this.close();\n // e.preventDefault();\n // e.stopPropagation();\n }\n };\n\n _setup() {\n // Creating tap target\n this.wrapper = this.el.parentElement;\n this.waveEl = this.wrapper.querySelector('.tap-target-wave');\n this.el.parentElement.ariaExpanded = 'false';\n this.originEl.style.zIndex = '1002';\n // this.originEl = this.wrapper.querySelector('.tap-target-origin');\n this.contentEl = this.el.querySelector('.tap-target-content');\n // Creating wrapper\n if (!this.wrapper.classList.contains('.tap-target-wrapper')) {\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add('tap-target-wrapper');\n this.el.before(this.wrapper);\n this.wrapper.append(this.el);\n }\n // Creating content\n if (!this.contentEl) {\n this.contentEl = document.createElement('div');\n this.contentEl.classList.add('tap-target-content');\n this.el.append(this.contentEl);\n }\n // Creating foreground wave\n if (!this.waveEl) {\n this.waveEl = document.createElement('div');\n this.waveEl.classList.add('tap-target-wave');\n // Creating origin\n /*if (!this.originEl) {\n this.originEl = <HTMLElement>this._origin.cloneNode(true); // .clone(true, true);\n this.originEl.classList.add('tap-target-origin');\n this.originEl.removeAttribute('id');\n this.originEl.removeAttribute('style');\n this.waveEl.append(this.originEl);\n }*/\n this.wrapper.append(this.waveEl);\n }\n }\n\n private _offset(el: HTMLElement) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.pageYOffset - docElem.clientTop,\n left: box.left + window.pageXOffset - docElem.clientLeft\n };\n }\n\n _calculatePositioning() {\n // Element or parent is fixed position?\n let isFixed = getComputedStyle(this.originEl).position === 'fixed';\n if (!isFixed) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let currentElem: any = this.originEl;\n const parents = [];\n while ((currentElem = currentElem.parentNode) && currentElem !== document)\n parents.push(currentElem);\n\n for (let i = 0; i < parents.length; i++) {\n isFixed = getComputedStyle(parents[i]).position === 'fixed';\n if (isFixed) break;\n }\n }\n // Calculating origin - one rect, reused for both axes and both branches.\n const originWidth = this.originEl.offsetWidth;\n const originHeight = this.originEl.offsetHeight;\n const originOffset = this._offset(this.originEl);\n const originTop = isFixed\n ? originOffset.top - Utils.getDocumentScrollTop()\n : originOffset.top;\n const originLeft = isFixed\n ? originOffset.left - Utils.getDocumentScrollLeft()\n : originOffset.left;\n\n // Calculating screen\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const scrollBarWidth = windowWidth - document.documentElement.clientWidth;\n const centerX = windowWidth / 2;\n const centerY = windowHeight / 2;\n const isLeft = originLeft <= centerX;\n const isRight = originLeft > centerX;\n const isTop = originTop <= centerY;\n const isBottom = originTop > centerY;\n const isCenterX = originLeft >= windowWidth * 0.25 && originLeft <= windowWidth * 0.75;\n\n // Calculating tap target\n const tapTargetWidth = this.el.offsetWidth;\n const tapTargetHeight = this.el.offsetHeight;\n const tapTargetTop = originTop + originHeight / 2 - tapTargetHeight / 2;\n const tapTargetLeft = originLeft + originWidth / 2 - tapTargetWidth / 2;\n const tapTargetPosition = isFixed ? 'fixed' : 'absolute';\n\n // Calculating content\n const tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth / 2 + originWidth;\n const tapTargetTextHeight = tapTargetHeight / 2;\n const tapTargetTextTop = isTop ? tapTargetHeight / 2 : 0;\n const tapTargetTextBottom = 0;\n const tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth / 2 - originWidth : 0;\n const tapTargetTextRight = 0;\n const tapTargetTextPadding = originWidth;\n const tapTargetTextAlign = isBottom ? 'bottom' : 'top';\n\n // Calculating wave\n const tapTargetWaveWidth = originWidth > originHeight ? originWidth * 2 : originWidth * 2;\n const tapTargetWaveHeight = tapTargetWaveWidth;\n const tapTargetWaveTop = tapTargetHeight / 2 - tapTargetWaveHeight / 2;\n const tapTargetWaveLeft = tapTargetWidth / 2 - tapTargetWaveWidth / 2;\n\n // Setting tap target\n this.wrapper.style.top = isTop ? tapTargetTop + 'px' : '';\n this.wrapper.style.right = isRight\n ? windowWidth - tapTargetLeft - tapTargetWidth - scrollBarWidth + 'px'\n : '';\n this.wrapper.style.bottom = isBottom\n ? windowHeight - tapTargetTop - tapTargetHeight + 'px'\n : '';\n this.wrapper.style.left = isLeft ? tapTargetLeft + 'px' : '';\n this.wrapper.style.position = tapTargetPosition;\n\n // Setting content\n this.contentEl.style.width = tapTargetTextWidth + 'px';\n this.contentEl.style.height = tapTargetTextHeight + 'px';\n this.contentEl.style.top = tapTargetTextTop + 'px';\n this.contentEl.style.right = tapTargetTextRight + 'px';\n this.contentEl.style.bottom = tapTargetTextBottom + 'px';\n this.contentEl.style.left = tapTargetTextLeft + 'px';\n this.contentEl.style.padding = tapTargetTextPadding + 'px';\n this.contentEl.style.verticalAlign = tapTargetTextAlign;\n\n // Setting wave\n this.waveEl.style.top = tapTargetWaveTop + 'px';\n this.waveEl.style.left = tapTargetWaveLeft + 'px';\n this.waveEl.style.width = tapTargetWaveWidth + 'px';\n this.waveEl.style.height = tapTargetWaveHeight + 'px';\n }\n\n /**\n * Open Tap Target.\n */\n open = () => {\n if (this.isOpen) return;\n // onOpen callback\n if (typeof this.options.onOpen === 'function') {\n this.options.onOpen.call(this, this.originEl);\n }\n this.isOpen = true;\n this.wrapper.classList.add('open');\n this.wrapper.ariaExpanded = 'true';\n document.body.addEventListener('click', this._handleDocumentClick, true);\n document.body.addEventListener('keypress', this._handleDocumentClick, true);\n document.body.addEventListener('touchend', this._handleDocumentClick);\n };\n\n /**\n * Close Tap Target.\n */\n close = () => {\n if (!this.isOpen) return;\n // onClose callback\n if (typeof this.options.onClose === 'function') {\n this.options.onClose.call(this, this.originEl);\n }\n this.isOpen = false;\n this.wrapper.classList.remove('open');\n this.wrapper.ariaExpanded = 'false';\n document.body.removeEventListener('click', this._handleDocumentClick, true);\n document.body.removeEventListener('keypress', this._handleDocumentClick, true);\n document.body.removeEventListener('touchend', this._handleDocumentClick);\n };\n\n static {\n TapTarget._taptargets = [];\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, MElement, I18nOptions } from '../core/component';\nimport { DockedDisplayPlugin } from '../plugins/dockedDisplayPlugin';\n\nexport type Views = 'hours' | 'minutes';\n\nexport interface TimepickerOptions extends BaseOptions {\n /**\n * Dial radius.\n * @default 135\n */\n dialRadius: number;\n /**\n * Outer radius.\n * @default 105\n */\n outerRadius: number;\n /**\n * Inner radius.\n * @default 70\n */\n innerRadius: number;\n /**\n * Tick radius.\n * @default 20\n */\n tickRadius: number;\n /**\n * Duration of the transition from/to the hours/minutes view.\n * @default 350\n */\n duration: number;\n /**\n * Specify a DOM element OR selector for a DOM element to render\n * the time picker in, by default it will be placed before the input.\n * @default null\n */\n container: HTMLElement | string | null;\n /**\n * Show the clear button in the Timepicker.\n * @default false\n */\n showClearBtn: boolean;\n /**\n * Autosubmit timepicker selection to input field\n * @default true\n */\n autoSubmit: true;\n /**\n * Default time to set on the timepicker 'now' or '13:14'.\n * @default 'now';\n */\n defaultTime: string;\n /**\n * Millisecond offset from the defaultTime.\n * @default 0\n */\n fromNow: number;\n /**\n * Internationalization options.\n */\n i18n: Partial<I18nOptions>;\n /**\n * Use 12 hour AM/PM clock instead of 24 hour clock.\n * @default true\n */\n twelveHour: boolean;\n /**\n * Vibrate device when dragging clock hand.\n * @default true\n */\n vibrate: boolean;\n /**\n * Callback function when a time is selected.\n * @default null\n */\n onSelect: (hour: number, minute: number) => void;\n /**\n * Callback function for interaction with input field.\n * @default null\n */\n onInputInteraction: (() => void) | null;\n /**\n * Callback function for done.\n * @default null\n */\n onDone: (() => void) | null;\n /**\n * Callback function for cancel.\n * @default null\n */\n onCancel: (() => void) | null;\n /**\n * Display plugin\n */\n displayPlugin: string;\n /**\n * Configurable display plugin options\n */\n displayPluginOptions: object;\n}\n\nconst _defaults: TimepickerOptions = {\n dialRadius: 135,\n outerRadius: 105,\n innerRadius: 70,\n tickRadius: 20,\n duration: 350,\n container: null,\n defaultTime: 'now', // default time, 'now' or '13:14' e.g.\n fromNow: 0, // Millisecond offset from the defaultTime\n showClearBtn: false,\n autoSubmit: true,\n // internationalization\n i18n: {\n cancel: 'Cancel',\n clear: 'Clear',\n done: 'Ok'\n },\n twelveHour: true, // change to 12 hour AM/PM clock from 24 hour\n vibrate: true, // vibrate the device when dragging clock hand\n // Callbacks\n onSelect: null,\n onInputInteraction: null,\n onDone: null,\n onCancel: null,\n displayPlugin: null,\n displayPluginOptions: null,\n};\n\ntype Point = {\n x: number;\n y: number;\n};\n\nexport class Timepicker extends Component<TimepickerOptions> {\n declare el: HTMLInputElement;\n id: string;\n containerEl: HTMLElement;\n plate: HTMLElement;\n digitalClock: HTMLElement;\n inputHours: HTMLInputElement;\n inputMinutes: HTMLInputElement;\n x0: number;\n y0: number;\n moved: boolean;\n dx: number;\n dy: number;\n /**\n * Current view on the timepicker.\n * @default 'hours'\n */\n currentView: Views;\n hand: SVGElement;\n minutesView: HTMLElement;\n hours: number;\n minutes: number;\n /** The selected time. */\n time: string;\n /**\n * If the time is AM or PM on twelve-hour clock.\n * @default 'PM'\n */\n amOrPm: 'AM' | 'PM';\n static _template;\n /** Whether this device exposes the Vibration API at all. */\n canVibrate: boolean;\n _canvas: HTMLElement;\n hoursView: HTMLElement;\n spanAmPm: HTMLSpanElement;\n footer: HTMLElement;\n private _amBtn: HTMLElement;\n private _pmBtn: HTMLElement;\n bg: Element;\n bearing: Element;\n g: Element;\n toggleViewTimer: ReturnType<typeof setTimeout>;\n vibrateTimer: ReturnType<typeof setTimeout>;\n private displayPlugin: DockedDisplayPlugin;\n /** Whether the dial (ticks + SVG + AM/PM buttons) has been built yet. */\n private _clockBuilt = false;\n\n constructor(el: HTMLInputElement, options: Partial<TimepickerOptions>) {\n super(el, options, Timepicker);\n this.el['Expressive_Timepicker'] = this;\n this.options = {\n ...Timepicker.defaults,\n ...options\n };\n this.id = Utils.guid();\n this._insertHTMLIntoDOM();\n this._setupVariables();\n this._setupEventHandlers();\n // The dial is ~40 elements (12 or 24 hour ticks, 12 minute ticks, the SVG\n // hand and the AM/PM buttons) and is built by _ensureClockBuilt() rather\n // than here - see _pickerSetup for when that first happens.\n this._pickerSetup();\n\n if (this.options.displayPlugin) {\n if (this.options.displayPlugin === 'docked') this.displayPlugin = DockedDisplayPlugin.init(this.el, this.containerEl, this.options.displayPluginOptions);\n }\n }\n\n static get defaults(): TimepickerOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Timepicker.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLInputElement, options?: Partial<TimepickerOptions>): Timepicker;\n /**\n * Initializes instances of Timepicker.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: InitElements<HTMLInputElement | MElement>,\n options?: Partial<TimepickerOptions>\n ): Timepicker[];\n /**\n * Initializes instances of Timepicker.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLInputElement | InitElements<HTMLInputElement | MElement>,\n options: Partial<TimepickerOptions> = {}\n ): Timepicker | Timepicker[] {\n return super.init(els, options, Timepicker);\n }\n\n static _addLeadingZero(num: number) {\n return (num < 10 ? '0' : '') + num;\n }\n\n static _createSVGEl(name: string) {\n const svgNS = 'http://www.w3.org/2000/svg';\n return document.createElementNS(svgNS, name);\n }\n\n static _Pos(e: TouchEvent | MouseEvent): Point {\n if (e.type.startsWith('touch') && (e as TouchEvent).targetTouches.length >= 1) {\n return {\n x: (e as TouchEvent).targetTouches[0].clientX,\n y: (e as TouchEvent).targetTouches[0].clientY\n };\n }\n // mouse event\n return { x: (e as MouseEvent).clientX, y: (e as MouseEvent).clientY };\n }\n\n static getInstance(el: HTMLElement): Timepicker {\n return el['Expressive_Timepicker'];\n }\n\n destroy() {\n this._removeEventHandlers();\n this.displayPlugin?.destroy();\n this.containerEl.remove();\n this.el['Expressive_Timepicker'] = undefined;\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('click', this._handleInputClick);\n this.el.addEventListener('keydown', this._handleInputKeydown);\n this.plate.addEventListener('mousedown', this._handleClockClickStart);\n this.plate.addEventListener('touchstart', this._handleClockClickStart);\n this.digitalClock.addEventListener('keyup', this._inputFromTextField);\n this.inputHours.addEventListener('focus', () => this.showView('hours'));\n this.inputHours.addEventListener('focusout', () => this.formatHours());\n this.inputMinutes.addEventListener('focus', () => this.showView('minutes'));\n this.inputMinutes.addEventListener('focusout', () => this.formatMinutes());\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleInputClick);\n this.el.removeEventListener('keydown', this._handleInputKeydown);\n // Drag handlers live on the document while the clock hand is held; if the\n // component is destroyed mid-drag they would otherwise outlive it.\n document.removeEventListener('mousemove', this._handleDocumentClickMove);\n document.removeEventListener('touchmove', this._handleDocumentClickMove);\n document.removeEventListener('mouseup', this._handleDocumentClickEnd);\n document.removeEventListener('touchend', this._handleDocumentClickEnd);\n }\n\n _handleInputClick = () => {\n // Before focus(): focusing inputHours fires the handler that calls\n // showView, and an already-focused input fires nothing at all.\n this._ensureClockBuilt();\n this.inputHours.focus();\n if (typeof this.options.onInputInteraction === 'function') this.options.onInputInteraction.call(this);\n if (this.displayPlugin) this.displayPlugin.show();\n };\n\n _handleInputKeydown = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n e.preventDefault();\n this._ensureClockBuilt();\n this.inputHours.focus();\n if (typeof this.options.onInputInteraction === 'function') this.options.onInputInteraction.call(this);\n if (this.displayPlugin) this.displayPlugin.show();\n }\n };\n\n _handleTimeInputEnterKey = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n e.preventDefault();\n this._inputFromTextField();\n }\n };\n\n _handleClockClickStart = (e) => {\n e.preventDefault();\n this._ensureClockBuilt();\n const clockPlateBR = this.plate.getBoundingClientRect();\n const offset = { x: clockPlateBR.left, y: clockPlateBR.top };\n\n this.x0 = offset.x + this.options.dialRadius;\n this.y0 = offset.y + this.options.dialRadius;\n this.moved = false;\n const clickPos = Timepicker._Pos(e);\n this.dx = clickPos.x - this.x0;\n this.dy = clickPos.y - this.y0;\n\n // Set clock hands\n this.setHand(this.dx, this.dy, false);\n // Mousemove on document\n document.addEventListener('mousemove', this._handleDocumentClickMove);\n document.addEventListener('touchmove', this._handleDocumentClickMove);\n // Mouseup on document\n document.addEventListener('mouseup', this._handleDocumentClickEnd);\n document.addEventListener('touchend', this._handleDocumentClickEnd);\n };\n\n _handleDocumentClickMove = (e) => {\n e.preventDefault();\n const clickPos = Timepicker._Pos(e);\n const x = clickPos.x - this.x0;\n const y = clickPos.y - this.y0;\n this.moved = true;\n this.setHand(x, y, false);\n };\n\n _handleDocumentClickEnd = (e) => {\n e.preventDefault();\n document.removeEventListener('mouseup', this._handleDocumentClickEnd);\n document.removeEventListener('touchend', this._handleDocumentClickEnd);\n const clickPos = Timepicker._Pos(e);\n const x = clickPos.x - this.x0;\n const y = clickPos.y - this.y0;\n if (this.moved && x === this.dx && y === this.dy) {\n this.setHand(x, y);\n }\n\n if (this.currentView === 'hours') {\n this.inputMinutes.focus();\n this.showView('minutes', this.options.duration / 2);\n } else {\n // this.minutesView.classList.add('timepicker-dial-out');\n setTimeout(() => {\n if (this.options.autoSubmit) this.done();\n }, this.options.duration / 2);\n }\n\n if (typeof this.options.onSelect === 'function') {\n this.options.onSelect.call(this, this.hours, this.minutes);\n }\n // Unbind mousemove event\n document.removeEventListener('mousemove', this._handleDocumentClickMove);\n document.removeEventListener('touchmove', this._handleDocumentClickMove);\n };\n\n _insertHTMLIntoDOM() {\n const template = document.createElement('template');\n template.innerHTML = Timepicker._template.trim();\n\n this.containerEl = <HTMLElement>template.content.firstChild;\n this.containerEl.id = 'container-' + this.id;\n\n // Append popover to input by default\n const optEl = this.options.container;\n const containerEl = optEl instanceof HTMLElement ? optEl : document.querySelector(optEl);\n\n if (this.options.container && !!containerEl) {\n containerEl.append(this.containerEl);\n } else {\n this.el.parentElement.appendChild(this.containerEl);\n }\n }\n\n _setupVariables() {\n this.currentView = 'hours';\n // `navigator.webkitVibrate` never shipped in any browser - the probe it\n // came from was folklore. A plain feature check is the whole of it.\n this.canVibrate = typeof navigator.vibrate === 'function';\n this._canvas = this.containerEl.querySelector('.timepicker-canvas');\n this.plate = this.containerEl.querySelector('.timepicker-plate');\n this.digitalClock = this.containerEl.querySelector('.timepicker-display-column');\n this.hoursView = this.containerEl.querySelector('.timepicker-hours');\n this.minutesView = this.containerEl.querySelector('.timepicker-minutes');\n this.inputHours = this.containerEl.querySelector('.timepicker-input-hours');\n this.inputMinutes = this.containerEl.querySelector('.timepicker-input-minutes');\n this.spanAmPm = this.containerEl.querySelector('.timepicker-span-am-pm');\n this.footer = this.containerEl.querySelector('.timepicker-footer');\n this.amOrPm = 'PM';\n }\n\n /*private _createButton(text: string, visibility: string): HTMLButtonElement {\n const button = document.createElement('button');\n button.classList.add('btn', 'waves-effect', 'text');\n button.style.visibility = visibility;\n button.type = 'button';\n button.tabIndex = -1;\n button.innerText = text;\n return button;\n }*/\n\n _pickerSetup() {\n // clearButton.classList.add('timepicker-clear');\n // clearButton.addEventListener('click', this.clear);\n // this.footer.appendChild(clearButton);\n Utils.createButton(\n this.footer,\n this.options.i18n.clear,\n ['timepicker-clear'],\n this.options.showClearBtn,\n this.clear\n );\n\n if (!this.options.autoSubmit) {\n /*const confirmationBtnsContainer = document.createElement('div');\n confirmationBtnsContainer.classList.add('confirmation-btns');\n this.footer.append(confirmationBtnsContainer);\n\n const cancelButton = this._createButton(this.options.i18n.cancel, '');\n cancelButton.classList.add('timepicker-close');\n cancelButton.addEventListener('click', this.close);\n confirmationBtnsContainer.appendChild(cancelButton);\n\n const doneButton = this._createButton(this.options.i18n.done, '');\n doneButton.classList.add('timepicker-close');\n //doneButton.addEventListener('click', this._finishSelection);\n confirmationBtnsContainer.appendChild(doneButton);*/\n Utils.createConfirmationContainer(\n this.footer,\n this.options.i18n.done,\n this.options.i18n.cancel,\n this.confirm,\n this.cancel\n );\n }\n\n this._updateTimeFromInput();\n\n // With a docked display the container is `visibility: hidden` until\n // show(), so the dial can wait for the first interaction. Without one it\n // is on screen from the moment it is inserted and has to be ready now.\n if (!this.options.displayPlugin) this.showView('hours');\n }\n\n /**\n * Build the dial, once. Cheap to call repeatedly - every entry point that\n * touches the clock calls it first, so the picker cannot be interacted with\n * before it exists.\n */\n private _ensureClockBuilt() {\n if (this._clockBuilt) return;\n this._clockBuilt = true;\n this._clockSetup();\n // Applies the AM/PM state _updateTimeFromInput worked out before the\n // buttons existed.\n this._updateAmPmView();\n }\n\n _clockSetup() {\n if (this.options.twelveHour) {\n // AM Button\n this._amBtn = document.createElement('div');\n this._amBtn.classList.add('am-btn', 'btn');\n this._amBtn.innerText = 'AM';\n this._amBtn.tabIndex = 0;\n this._amBtn.addEventListener('click', this._handleAmPmClick);\n this._amBtn.addEventListener('keypress', this._handleAmPmKeypress);\n this.spanAmPm.appendChild(this._amBtn);\n // PM Button\n this._pmBtn = document.createElement('div');\n this._pmBtn.classList.add('pm-btn', 'btn');\n this._pmBtn.innerText = 'PM';\n this._pmBtn.tabIndex = 0;\n this._pmBtn.addEventListener('click', this._handleAmPmClick);\n this._pmBtn.addEventListener('keypress', this._handleAmPmKeypress);\n this.spanAmPm.appendChild(this._pmBtn);\n }\n this._buildHoursView();\n this._buildMinutesView();\n this._buildSVGClock();\n }\n\n _buildSVGClock() {\n // Draw clock hands and others\n const dialRadius = this.options.dialRadius;\n const tickRadius = this.options.tickRadius;\n const diameter = dialRadius * 2;\n const svg = Timepicker._createSVGEl('svg');\n svg.setAttribute('class', 'timepicker-svg');\n svg.setAttribute('width', diameter.toString());\n svg.setAttribute('height', diameter.toString());\n const g = Timepicker._createSVGEl('g');\n g.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\n const bearing = Timepicker._createSVGEl('circle');\n bearing.setAttribute('class', 'timepicker-canvas-bearing');\n bearing.setAttribute('cx', '0');\n bearing.setAttribute('cy', '0');\n bearing.setAttribute('r', '4');\n const hand = Timepicker._createSVGEl('line');\n hand.setAttribute('x1', '0');\n hand.setAttribute('y1', '0');\n const bg = Timepicker._createSVGEl('circle');\n bg.setAttribute('class', 'timepicker-canvas-bg');\n bg.setAttribute('r', tickRadius.toString());\n g.appendChild(hand);\n g.appendChild(bg);\n g.appendChild(bearing);\n svg.appendChild(g);\n this._canvas.appendChild(svg);\n this.hand = hand;\n this.bg = bg;\n this.bearing = bearing;\n this.g = g;\n }\n\n _buildHoursView() {\n // const $tick = document.createElement('div');\n // $tick.classList.add('timepicker-tick');\n // Hours view\n if (this.options.twelveHour) {\n for (let i = 1; i < 13; i += 1) {\n // const tick = <HTMLElement>$tick.cloneNode(true);\n const radian = (i / 6) * Math.PI;\n const radius = this.options.outerRadius;\n this._buildHoursTick(i, radian, radius);\n }\n } else {\n for (let i = 0; i < 24; i += 1) {\n // const tick = <HTMLElement>$tick.cloneNode(true);\n const radian = (i / 6) * Math.PI;\n const inner = i > 0 && i < 13;\n const radius = inner ? this.options.innerRadius : this.options.outerRadius;\n this._buildHoursTick(i, radian, radius);\n }\n }\n }\n\n _buildHoursTick(i: number, radian: number, radius: number) {\n const tick = document.createElement('div');\n tick.classList.add('timepicker-tick');\n tick.style.left =\n this.options.dialRadius + Math.sin(radian) * radius - this.options.tickRadius + 'px';\n tick.style.top =\n this.options.dialRadius - Math.cos(radian) * radius - this.options.tickRadius + 'px';\n tick.textContent = i === 0 ? '00' : i.toString();\n this.hoursView.appendChild(tick);\n }\n\n _buildMinutesView() {\n const _tick = document.createElement('div');\n _tick.classList.add('timepicker-tick');\n // Minutes view\n for (let i = 0; i < 60; i += 5) {\n const tick = <HTMLElement>_tick.cloneNode(true);\n const radian = (i / 30) * Math.PI;\n tick.style.left =\n this.options.dialRadius +\n Math.sin(radian) * this.options.outerRadius -\n this.options.tickRadius +\n 'px';\n tick.style.top =\n this.options.dialRadius -\n Math.cos(radian) * this.options.outerRadius -\n this.options.tickRadius +\n 'px';\n tick.textContent = Timepicker._addLeadingZero(i);\n this.minutesView.appendChild(tick);\n }\n }\n\n _handleAmPmClick = (e: MouseEvent) => {\n this._handleAmPmInteraction(<HTMLElement>e.target);\n };\n\n _handleAmPmKeypress = (e: KeyboardEvent) => {\n if (Utils.keys.ENTER.includes(e.key)) {\n this._handleAmPmInteraction(<HTMLElement>e.target);\n }\n };\n\n _handleAmPmInteraction = (e: HTMLElement) => {\n this.amOrPm = e.classList.contains('am-btn') ? 'AM' : 'PM';\n this._updateAmPmView();\n }\n\n _updateAmPmView() {\n // _updateTimeFromInput settles amOrPm before the dial is built; the\n // buttons pick the state up in _ensureClockBuilt.\n if (!this._amBtn || !this._pmBtn) return;\n if (this.options.twelveHour) {\n if (this.amOrPm === 'PM') {\n this._amBtn.classList.remove('filled');\n this._pmBtn.classList.add('filled');\n } else if (this.amOrPm === 'AM') {\n this._amBtn.classList.add('filled');\n this._pmBtn.classList.remove('filled');\n }\n }\n }\n\n _updateTimeFromInput() {\n // Get the time\n let value = ((this.el.value || this.options.defaultTime || '') + '').split(':');\n if (this.options.twelveHour && !(typeof value[1] === 'undefined')) {\n if (value[1].toUpperCase().indexOf('AM') > 0) {\n this.amOrPm = 'AM';\n } else {\n this.amOrPm = 'PM';\n }\n value[1] = value[1].replace('AM', '').replace('PM', '');\n }\n if (value[0] === 'now') {\n const now = new Date(+new Date() + this.options.fromNow);\n value = [now.getHours().toString(), now.getMinutes().toString()];\n if (this.options.twelveHour) {\n this.amOrPm = parseInt(value[0]) >= 12 && parseInt(value[0]) < 24 ? 'PM' : 'AM';\n }\n }\n this.hours = +value[0] || 0;\n this.minutes = +value[1] || 0;\n this.inputHours.value = Timepicker._addLeadingZero(this.hours);\n this.inputMinutes.value = Timepicker._addLeadingZero(this.minutes);\n\n this._updateAmPmView();\n }\n\n /**\n * Show hours or minutes view on timepicker.\n * @param view The name of the view you want to switch to, 'hours' or 'minutes'.\n * @param delay\n */\n showView = (view: Views, delay: number = null) => {\n this._ensureClockBuilt();\n if (view === 'minutes' && getComputedStyle(this.hoursView).visibility === 'visible') {\n // raiseCallback(this.options.beforeHourSelect);\n }\n const isHours = view === 'hours',\n nextView = isHours ? this.hoursView : this.minutesView,\n hideView = isHours ? this.minutesView : this.hoursView;\n this.currentView = view;\n\n /*if (isHours) {\n this.inputHours.classList.add('text-primary');\n this.inputMinutes.classList.remove('text-primary');\n } else {\n this.inputHours.classList.remove('text-primary');\n this.inputMinutes.classList.add('text-primary');\n }*/\n\n // Transition view\n hideView.classList.add('timepicker-dial-out');\n\n nextView.style.visibility = 'visible';\n nextView.classList.remove('timepicker-dial-out');\n\n // Reset clock hand\n this.resetClock(delay);\n // After transitions ended\n clearTimeout(this.toggleViewTimer);\n this.toggleViewTimer = setTimeout(() => {\n hideView.style.visibility = 'hidden';\n }, this.options.duration);\n };\n\n resetClock(delay) {\n const view = this.currentView,\n value = this[view],\n isHours = view === 'hours',\n unit = Math.PI / (isHours ? 6 : 30),\n radian = value * unit,\n radius =\n isHours && value > 0 && value < 13 ? this.options.innerRadius : this.options.outerRadius,\n x = Math.sin(radian) * radius,\n y = -Math.cos(radian) * radius;\n\n if (delay) {\n this._canvas?.classList.add('timepicker-canvas-out');\n setTimeout(() => {\n this._canvas?.classList.remove('timepicker-canvas-out');\n this.setHand(x, y);\n }, delay);\n } else {\n this.setHand(x, y);\n }\n }\n\n _inputFromTextField = () => {\n const isHours = this.currentView === 'hours';\n if (isHours && this.inputHours.value !== '') {\n const value = parseInt(this.inputHours.value);\n if (value > 0 && value < (this.options.twelveHour ? 13 : 24)) {\n this.hours = value;\n } else {\n this.setHoursDefault();\n }\n this.drawClockFromTimeInput(this.hours, isHours);\n } else if (!isHours && this.inputMinutes.value !== '') {\n const value = parseInt(this.inputMinutes.value);\n if (value >= 0 && value < 60) {\n this.minutes = value;\n } else {\n this.minutes = new Date().getMinutes();\n this.inputMinutes.value = this.minutes.toString();\n }\n this.drawClockFromTimeInput(this.minutes, isHours);\n }\n };\n\n drawClockFromTimeInput(value, isHours) {\n const unit = Math.PI / (isHours ? 6 : 30);\n const radian = value * unit;\n let radius;\n if (this.options.twelveHour) {\n radius = this.options.outerRadius;\n } else {\n radius =\n isHours && value > 0 && value < 13 ? this.options.innerRadius : this.options.outerRadius;\n }\n this.setClockAttributes(radian, radius);\n }\n\n setHand(x, y, roundBy5: boolean = false) {\n const isHours = this.currentView === 'hours',\n unit = Math.PI / (isHours || roundBy5 ? 6 : 30),\n z = Math.sqrt(x * x + y * y),\n inner = isHours && z < (this.options.outerRadius + this.options.innerRadius) / 2;\n let radian = Math.atan2(x, -y),\n radius = inner ? this.options.innerRadius : this.options.outerRadius;\n\n if (this.options.twelveHour) {\n radius = this.options.outerRadius;\n }\n\n // Radian should in range [0, 2PI]\n if (radian < 0) {\n radian = Math.PI * 2 + radian;\n }\n\n // Get the round value\n let value = Math.round(radian / unit);\n\n // Get the round radian\n radian = value * unit;\n\n // Correct the hours or minutes\n if (this.options.twelveHour) {\n if (isHours) {\n if (value === 0) value = 12;\n } else {\n if (roundBy5) value *= 5;\n if (value === 60) value = 0;\n }\n } else {\n if (isHours) {\n if (value === 12) {\n value = 0;\n }\n value = inner ? (value === 0 ? 12 : value) : value === 0 ? 0 : value + 12;\n } else {\n if (roundBy5) {\n value *= 5;\n }\n if (value === 60) {\n value = 0;\n }\n }\n }\n\n // Once hours or minutes changed, vibrate the device\n if (this[this.currentView] !== value) {\n if (this.canVibrate && this.options.vibrate) {\n // Do not vibrate too frequently\n if (!this.vibrateTimer) {\n navigator.vibrate(10);\n this.vibrateTimer = setTimeout(() => {\n this.vibrateTimer = null;\n }, 100);\n }\n }\n }\n\n this[this.currentView] = value;\n if (isHours) {\n this.inputHours.value = Timepicker._addLeadingZero(value);\n } else {\n this.inputMinutes.value = Timepicker._addLeadingZero(value);\n }\n\n // Set clock hand and others' position\n this.setClockAttributes(radian, radius);\n }\n\n setClockAttributes(radian: number, radius: number) {\n // Nothing to point at until the SVG exists.\n if (!this.hand || !this.bg) return;\n const cx1 = Math.sin(radian) * (radius - this.options.tickRadius),\n cy1 = -Math.cos(radian) * (radius - this.options.tickRadius),\n cx2 = Math.sin(radian) * radius,\n cy2 = -Math.cos(radian) * radius;\n this.hand.setAttribute('x2', cx1.toString());\n this.hand.setAttribute('y2', cy1.toString());\n this.bg.setAttribute('cx', cx2.toString());\n this.bg.setAttribute('cy', cy2.toString());\n }\n\n formatHours() {\n if (this.inputHours.value == '') this.setHoursDefault();\n this.inputHours.value = Timepicker._addLeadingZero(Number(this.inputHours.value));\n }\n\n formatMinutes() {\n if (this.inputMinutes.value == '') this.minutes = new Date().getMinutes();\n this.inputMinutes.value = Timepicker._addLeadingZero(Number(this.inputMinutes.value));\n }\n\n setHoursDefault() {\n this.hours = new Date().getHours();\n this.inputHours.value = (this.hours % (this.options.twelveHour ? 12 : 24)).toString();\n }\n\n done = (clearValue = null) => {\n // Set input value\n const last = this.el.value;\n let value = clearValue\n ? ''\n : Timepicker._addLeadingZero(this.hours) + ':' + Timepicker._addLeadingZero(this.minutes);\n this.time = value;\n if (!clearValue && this.options.twelveHour) {\n value = `${value} ${this.amOrPm}`;\n }\n this.el.value = value;\n // Trigger change event\n if (value !== last) {\n this.el.dispatchEvent(\n new Event('change', { bubbles: true, cancelable: true, composed: true })\n );\n }\n };\n\n confirm = () => {\n this.done();\n if (typeof this.options.onDone === 'function') this.options.onDone.call(this);\n }\n\n cancel = () => {\n // not logical clearing the input field on cancel, since the end user might want to make use of the previously submitted value\n // this.clear();\n if (typeof this.options.onCancel === 'function') this.options.onCancel.call(this);\n }\n\n clear = () => {\n this.done(true);\n };\n\n // deprecated\n open() {\n console.warn(\n 'Timepicker.close() is deprecated. Remove this method and wrap in modal yourself.'\n );\n return this;\n }\n\n close() {\n console.warn(\n 'Timepicker.close() is deprecated. Remove this method and wrap in modal yourself.'\n );\n return this;\n }\n\n static {\n Timepicker._template = `<div class=\"timepicker-container\">\n <div class=\"timepicker-digital-display\">\n <div class=\"timepicker-text-container\">\n <div class=\"timepicker-display-column timepicker-display-digital-clock\">\n <div class=\"timepicker-input-hours-wrapper\">\n <input type=\"text\" maxlength=\"2\" class=\"timepicker-input-hours text-primary\" />\n </div>\n <div class=\"timepicker-input-divider-wrapper\">\n <span class=\"timepicker-input-divider\">:</span>\n </div>\n <div class=\"timepicker-input-minutes-wrapper\">\n <input type=\"text\" maxlength=\"2\" class=\"timepicker-input-minutes\" />\n </div>\n </div>\n <div class=\"timepicker-display-column timepicker-display-am-pm\">\n <div class=\"timepicker-span-am-pm\"></div>\n </div>\n </div>\n </div>\n <div class=\"timepicker-analog-display\">\n <div class=\"timepicker-plate\">\n <div class=\"timepicker-canvas\"></div>\n <div class=\"timepicker-dial timepicker-hours\"></div>\n <div class=\"timepicker-dial timepicker-minutes timepicker-dial-out\"></div>\n </div>\n <div class=\"timepicker-footer\"></div>\n </div>\n </div>`;\n }\n}\n", "import { BaseOptions } from '../core/component';\n\nexport interface ToastOptions extends BaseOptions {\n /**\n * The content of the Toast.\n * @default \"\"\n */\n text: string;\n /**\n * Optional action label. Rendered as a trailing text button.\n * @default \"\"\n */\n action: string;\n /**\n * Called when the action button is pressed. The toast still dismisses.\n * @default null\n */\n onAction: () => void;\n /**\n * Show a trailing close icon button.\n * @default false\n */\n dismissible: boolean;\n /**\n * Element Id for the tooltip.\n * @default \"\"\n */\n toastId?: string;\n /**\n * Length in ms the Toast stays before dismissal.\n * @default 4000\n */\n displayLength: number;\n /**\n * Transition in duration in milliseconds.\n * @default 300\n */\n inDuration: number;\n /**\n * Transition out duration in milliseconds.\n * @default 375\n */\n outDuration: number;\n /**\n * Classes to be added to the toast element.\n * @default \"\"\n */\n classes: string;\n /**\n * Callback function called when toast is dismissed.\n * @default null\n */\n completeCallback: () => void;\n /**\n * The percentage of the toast's width it takes fora drag\n * to dismiss a Toast.\n * @default 0.8\n */\n activationPercent: number;\n}\n\nconst _defaults: ToastOptions = {\n text: '',\n action: '',\n onAction: null,\n dismissible: false,\n displayLength: 4000,\n inDuration: 300,\n outDuration: 375,\n classes: '',\n completeCallback: null,\n activationPercent: 0.8\n};\n\nexport class Toast {\n /** The toast element. */\n el: HTMLElement;\n /**\n * The remaining amount of time in ms that the toast\n * will stay before dismissal.\n */\n timeRemaining: number;\n /**\n * Describes the current pan state of the Toast.\n */\n panning: boolean;\n options: ToastOptions;\n message: string;\n counterTimeout: ReturnType<typeof setTimeout>;\n /** Wall-clock time the toast is due to dismiss, for pause/resume. */\n private _deadline: number;\n wasSwiped: boolean;\n startingXPos: number;\n xPos: number;\n time: number;\n deltaX: number;\n velocityX: number;\n\n static _toasts: Toast[];\n static _container: HTMLElement;\n static _draggedToast: Toast;\n\n constructor(options: Partial<ToastOptions>) {\n this.options = {\n ...Toast.defaults,\n ...options\n };\n this.message = this.options.text;\n this.panning = false;\n this.timeRemaining = this.options.displayLength;\n if (Toast._toasts.length === 0) {\n Toast._createContainer();\n }\n // Create new toast\n Toast._toasts.push(this);\n const toastElement = this._createToast();\n toastElement['Expressive_Toast'] = this;\n this.el = toastElement;\n this._animateIn();\n this._setTimer();\n }\n\n static get defaults(): ToastOptions {\n return _defaults;\n }\n\n static getInstance(el: HTMLElement): Toast {\n return el['Expressive_Toast'];\n }\n\n static _createContainer() {\n const container = document.createElement('div');\n container.setAttribute('id', 'toast-container');\n // Add event handler\n container.addEventListener('touchstart', Toast._onDragStart);\n container.addEventListener('touchmove', Toast._onDragMove);\n container.addEventListener('touchend', Toast._onDragEnd);\n container.addEventListener('mousedown', Toast._onDragStart);\n document.addEventListener('mousemove', Toast._onDragMove);\n document.addEventListener('mouseup', Toast._onDragEnd);\n document.body.appendChild(container);\n Toast._container = container;\n }\n\n static _removeContainer() {\n document.removeEventListener('mousemove', Toast._onDragMove);\n document.removeEventListener('mouseup', Toast._onDragEnd);\n Toast._container.remove();\n Toast._container = null;\n }\n\n static _onDragStart(e: TouchEvent | MouseEvent) {\n const target = e.target as HTMLElement | null;\n // Don't start a swipe from the action or close \u2014 those are buttons.\n if (target && !target.closest('button, a') && target.closest('.toast, .snackbar')) {\n const toastElem = target.closest('.toast, .snackbar') as HTMLElement;\n const toast: Toast = toastElem['Expressive_Toast'];\n if (!toast) return;\n toast.panning = true;\n toast._pauseTimer();\n Toast._draggedToast = toast;\n toast.el.classList.add('panning');\n toast.el.style.transition = '';\n toast.startingXPos = Toast._xPos(e);\n toast.time = Date.now();\n toast.xPos = Toast._xPos(e);\n }\n }\n\n static _onDragMove(e: TouchEvent | MouseEvent) {\n if (!!Toast._draggedToast) {\n e.preventDefault();\n const toast = Toast._draggedToast;\n toast.deltaX = Math.abs(toast.xPos - Toast._xPos(e));\n toast.xPos = Toast._xPos(e);\n toast.velocityX = toast.deltaX / (Date.now() - toast.time);\n toast.time = Date.now();\n\n const totalDeltaX = toast.xPos - toast.startingXPos;\n const activationDistance = toast.el.offsetWidth * toast.options.activationPercent;\n toast.el.style.transform = `translateX(${totalDeltaX}px)`;\n toast.el.style.opacity = (1 - Math.abs(totalDeltaX / activationDistance)).toString();\n }\n }\n\n static _onDragEnd() {\n if (!!Toast._draggedToast) {\n const toast = Toast._draggedToast;\n toast.panning = false;\n toast.el.classList.remove('panning');\n\n const totalDeltaX = toast.xPos - toast.startingXPos;\n const activationDistance = toast.el.offsetWidth * toast.options.activationPercent;\n const shouldBeDismissed = Math.abs(totalDeltaX) > activationDistance || toast.velocityX > 1;\n\n // Remove toast\n if (shouldBeDismissed) {\n toast.wasSwiped = true;\n toast.dismiss();\n // Animate toast back to original position\n } else {\n toast.el.style.transition = 'transform .2s, opacity .2s';\n toast.el.style.transform = '';\n toast.el.style.opacity = '';\n toast._resumeTimer();\n }\n Toast._draggedToast = null;\n }\n }\n\n static _xPos(e: TouchEvent | MouseEvent) {\n if (e.type.startsWith('touch') && (e as TouchEvent).targetTouches.length >= 1) {\n return (e as TouchEvent).targetTouches[0].clientX;\n }\n // mouse event\n return (e as MouseEvent).clientX;\n }\n\n /**\n * dismiss all toasts.\n */\n static dismissAll() {\n // Copy first: dismiss() splices the list it is iterating.\n for (const toast of [...Toast._toasts]) {\n toast.dismiss();\n }\n }\n\n _createToast() {\n let toast: HTMLElement = this.options.toastId\n ? document.getElementById(this.options.toastId)\n : document.createElement('div');\n if (toast instanceof HTMLTemplateElement) {\n const node = (toast as HTMLTemplateElement).content.cloneNode(true);\n toast = (node as HTMLElement).firstElementChild as HTMLElement;\n }\n toast.classList.add('toast', 'snackbar');\n toast.setAttribute('role', 'status');\n toast.setAttribute('aria-live', 'polite');\n toast.setAttribute('aria-atomic', 'true');\n // Add custom classes onto toast\n if (this.options.classes.length > 0) {\n toast.classList.add(...this.options.classes.split(' ').filter(Boolean));\n }\n if (this.message) {\n const text = document.createElement('p');\n text.textContent = this.message;\n toast.replaceChildren(text);\n }\n if (this.options.action) {\n const action = document.createElement('button');\n action.type = 'button';\n action.textContent = this.options.action;\n action.addEventListener('click', (e) => {\n e.stopPropagation();\n if (typeof this.options.onAction === 'function') {\n this.options.onAction();\n }\n this.dismiss();\n });\n toast.appendChild(action);\n }\n if (this.options.dismissible) {\n const close = document.createElement('button');\n close.type = 'button';\n close.className = 'circle';\n close.setAttribute('aria-label', 'Dismiss');\n const icon = document.createElement('i');\n icon.className = 'material-icons';\n icon.setAttribute('aria-hidden', 'true');\n icon.textContent = 'close';\n close.appendChild(icon);\n close.addEventListener('click', (e) => {\n e.stopPropagation();\n this.dismiss();\n });\n toast.appendChild(close);\n }\n Toast._container.appendChild(toast);\n return toast;\n }\n\n _animateIn() {\n // Animate toast in\n this.el.style.display = '';\n this.el.style.opacity = '0';\n // easeOutCubic\n this.el.style.transition = `\n top ${this.options.inDuration}ms ease,\n opacity ${this.options.inDuration}ms ease\n `;\n setTimeout(() => {\n this.el.style.top = '0';\n this.el.style.opacity = '1';\n }, 1);\n }\n\n /**\n * Arm the dismissal timer.\n *\n * One timeout, not a 20ms interval ticking a counter down: the old form woke\n * the page up 50 times a second per toast purely to subtract 20 from a\n * number. Dragging pauses the countdown via _pauseTimer/_resumeTimer instead.\n */\n _setTimer() {\n if (this.timeRemaining === Infinity) return;\n this._deadline = Date.now() + this.timeRemaining;\n this.counterTimeout = setTimeout(() => this.dismiss(), this.timeRemaining);\n }\n\n /** Stop the countdown, banking the time that was left on it. */\n _pauseTimer() {\n if (this.counterTimeout == null) return;\n clearTimeout(this.counterTimeout);\n this.counterTimeout = null;\n this.timeRemaining = Math.max(0, this._deadline - Date.now());\n }\n\n /** Restart a countdown stopped by {@link _pauseTimer}. */\n _resumeTimer() {\n if (this.counterTimeout != null) return;\n this._setTimer();\n }\n\n /**\n * Dismiss toast with animation.\n */\n dismiss() {\n clearTimeout(this.counterTimeout);\n this.counterTimeout = null;\n const activationDistance = this.el.offsetWidth * this.options.activationPercent;\n\n if (this.wasSwiped) {\n this.el.style.transition = 'transform .05s, opacity .05s';\n this.el.style.transform = `translateX(${activationDistance}px)`;\n this.el.style.opacity = '0';\n }\n\n // easeOutExpo\n this.el.style.transition = `\n margin ${this.options.outDuration}ms ease,\n opacity ${this.options.outDuration}ms ease`;\n\n setTimeout(() => {\n this.el.style.opacity = '0';\n this.el.style.marginTop = '-40px';\n }, 1);\n\n setTimeout(() => {\n // Call the optional callback\n if (typeof this.options.completeCallback === 'function') {\n this.options.completeCallback();\n }\n // Remove toast from DOM\n if (this.el.id != this.options.toastId) {\n this.el.remove();\n // Guarded: splice(-1, 1) on an already-removed toast would drop an\n // unrelated one off the end of the list.\n const index = Toast._toasts.indexOf(this);\n if (index >= 0) Toast._toasts.splice(index, 1);\n if (Toast._toasts.length === 0 && Toast._container) {\n Toast._removeContainer();\n }\n }\n }, this.options.outDuration);\n }\n\n static {\n Toast._toasts = [];\n Toast._container = null;\n Toast._draggedToast = null;\n }\n}\n", "import { Utils } from '../core/utils';\nimport { Bounding } from '../core/bounding';\nimport { Component, BaseOptions, InitElements, MElement } from '../core/component';\n\nexport type TooltipPosition = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipOptions extends BaseOptions {\n /**\n * Delay time before tooltip disappears.\n * @default 200\n */\n exitDelay: number;\n /**\n * Delay time before tooltip appears.\n * @default 0\n */\n enterDelay: number;\n /**\n * Element Id for the tooltip.\n * @default \"\"\n */\n tooltipId?: string;\n /**\n * Text string for the tooltip.\n * @default \"\"\n */\n text: string;\n /**\n * Set distance tooltip appears away from its activator\n * excluding transitionMovement.\n * @default 4\n */\n margin: number;\n /**\n * Enter transition duration.\n * @default 300\n */\n inDuration: number;\n /**\n * Opacity of the tooltip.\n * @default 1\n */\n opacity: number;\n /**\n * Exit transition duration.\n * @default 250\n */\n outDuration: number;\n /**\n * Set the direction of the tooltip.\n * @default 'bottom'\n */\n position: TooltipPosition;\n /**\n * Amount in px that the tooltip moves during its transition.\n * @default 10\n */\n transitionMovement: number;\n}\n\nconst _defaults: TooltipOptions = {\n exitDelay: 200,\n enterDelay: 0,\n text: '',\n margin: 4,\n inDuration: 250,\n outDuration: 200,\n position: 'bottom' as TooltipPosition,\n transitionMovement: 10,\n opacity: 1\n};\n\nexport class Tooltip extends Component<TooltipOptions> {\n /**\n * If tooltip is open.\n */\n isOpen: boolean;\n /**\n * If tooltip is hovered.\n */\n isHovered: boolean;\n /**\n * If tooltip is focused.\n */\n isFocused: boolean;\n tooltipEl: HTMLElement;\n private _exitDelayTimeout: ReturnType<typeof setTimeout>;\n private _enterDelayTimeout: ReturnType<typeof setTimeout>;\n xMovement: number;\n yMovement: number;\n\n constructor(el: HTMLElement, options: Partial<TooltipOptions>) {\n super(el, options, Tooltip);\n this.el['Expressive_Tooltip'] = this;\n\n this.options = {\n ...Tooltip.defaults,\n ...this._getAttributeOptions(),\n ...options\n };\n\n this.isOpen = false;\n this.isHovered = false;\n this.isFocused = false;\n this._appendTooltipEl();\n this._setupEventHandlers();\n }\n\n static get defaults(): TooltipOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Tooltip.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<TooltipOptions>): Tooltip;\n /**\n * Initializes instances of Tooltip.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<MElement>, options?: Partial<TooltipOptions>): Tooltip[];\n /**\n * Initializes instances of Tooltip.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<MElement>,\n options: Partial<TooltipOptions> = {}\n ): Tooltip | Tooltip[] {\n return super.init(els, options, Tooltip);\n }\n\n static getInstance(el: HTMLElement): Tooltip {\n return el['Expressive_Tooltip'];\n }\n\n destroy() {\n if (this.el.getAttribute('aria-describedby') === this.tooltipEl.id) {\n this.el.removeAttribute('aria-describedby');\n }\n this.tooltipEl.remove();\n this._removeEventHandlers();\n this.el['Expressive_Tooltip'] = undefined;\n }\n\n _appendTooltipEl() {\n this.tooltipEl = document.createElement('div');\n this.tooltipEl.classList.add('tooltip', 'material-tooltip');\n this.tooltipEl.id = `tooltip-${Utils.guid()}`;\n this.tooltipEl.setAttribute('role', 'tooltip');\n this.el.setAttribute('aria-describedby', this.tooltipEl.id);\n\n const tooltipContentEl = this.options.tooltipId\n ? document.getElementById(this.options.tooltipId)\n : document.createElement('div');\n if (this.options.tooltipId) {\n this.tooltipEl.classList.add('rich');\n }\n tooltipContentEl.style.display = '';\n tooltipContentEl.classList.add('tooltip-content');\n this._setTooltipContent(tooltipContentEl);\n this.tooltipEl.appendChild(tooltipContentEl);\n document.body.appendChild(this.tooltipEl);\n }\n\n _setTooltipContent(tooltipContentEl: HTMLElement) {\n if (this.options.tooltipId) return;\n tooltipContentEl.innerText = this.options.text;\n }\n\n _updateTooltipContent() {\n this._setTooltipContent(this.tooltipEl.querySelector('.tooltip-content'));\n }\n\n _setupEventHandlers() {\n this.el.addEventListener('mouseenter', this._handleMouseEnter);\n this.el.addEventListener('mouseleave', this._handleMouseLeave);\n this.el.addEventListener('focus', this._handleFocus, true);\n this.el.addEventListener('blur', this._handleBlur, true);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('mouseenter', this._handleMouseEnter);\n this.el.removeEventListener('mouseleave', this._handleMouseLeave);\n this.el.removeEventListener('focus', this._handleFocus, true);\n this.el.removeEventListener('blur', this._handleBlur, true);\n }\n\n /**\n * Show tooltip.\n */\n open = (isManual: boolean) => {\n if (this.isOpen) return;\n isManual = isManual === undefined ? true : undefined; // Default value true\n this.isOpen = true;\n // Update tooltip content with HTML attribute options\n this.options = { ...this.options, ...this._getAttributeOptions() };\n this._updateTooltipContent();\n this._setEnterDelayTimeout(isManual);\n };\n\n /**\n * Hide tooltip.\n */\n close = () => {\n if (!this.isOpen) return;\n this.isHovered = false;\n this.isFocused = false;\n this.isOpen = false;\n this._setExitDelayTimeout();\n };\n\n _setExitDelayTimeout() {\n clearTimeout(this._exitDelayTimeout);\n this._exitDelayTimeout = setTimeout(() => {\n if (this.isHovered || this.isFocused) return;\n this._animateOut();\n }, this.options.exitDelay);\n }\n\n _setEnterDelayTimeout(isManual) {\n clearTimeout(this._enterDelayTimeout);\n this._enterDelayTimeout = setTimeout(() => {\n if (!this.isHovered && !this.isFocused && !isManual) return;\n this._animateIn();\n }, this.options.enterDelay);\n }\n\n _positionTooltip() {\n const tooltip: HTMLElement = this.tooltipEl;\n const origin = this.el as HTMLElement,\n originHeight = origin.offsetHeight,\n originWidth = origin.offsetWidth,\n tooltipHeight = tooltip.offsetHeight,\n tooltipWidth = tooltip.offsetWidth,\n margin = this.options.margin;\n\n this.xMovement = 0;\n this.yMovement = 0;\n\n const originRect = origin.getBoundingClientRect();\n let targetTop = originRect.top + Utils.getDocumentScrollTop();\n let targetLeft = originRect.left + Utils.getDocumentScrollLeft();\n if (this.options.position === 'top') {\n targetTop += -tooltipHeight - margin;\n targetLeft += originWidth / 2 - tooltipWidth / 2;\n this.yMovement = -this.options.transitionMovement;\n } else if (this.options.position === 'right') {\n targetTop += originHeight / 2 - tooltipHeight / 2;\n targetLeft += originWidth + margin;\n this.xMovement = this.options.transitionMovement;\n } else if (this.options.position === 'left') {\n targetTop += originHeight / 2 - tooltipHeight / 2;\n targetLeft += -tooltipWidth - margin;\n this.xMovement = -this.options.transitionMovement;\n } else {\n targetTop += originHeight + margin;\n targetLeft += originWidth / 2 - tooltipWidth / 2;\n this.yMovement = this.options.transitionMovement;\n }\n\n const newCoordinates = this._repositionWithinScreen(\n targetLeft,\n targetTop,\n tooltipWidth,\n tooltipHeight\n );\n\n tooltip.style.top = newCoordinates.y + 'px';\n tooltip.style.left = newCoordinates.x + 'px';\n }\n\n _repositionWithinScreen(x: number, y: number, width: number, height: number) {\n const scrollLeft = Utils.getDocumentScrollLeft();\n const scrollTop = Utils.getDocumentScrollTop();\n let newX = x - scrollLeft;\n let newY = y - scrollTop;\n\n const bounding: Bounding = {\n left: newX,\n top: newY,\n width: width,\n height: height\n };\n const offset = this.options.margin + this.options.transitionMovement;\n const edges = Utils.checkWithinContainer(document.body, bounding, offset);\n\n if (edges.left) {\n newX = offset;\n } else if (edges.right) {\n newX -= newX + width - window.innerWidth;\n }\n if (edges.top) {\n newY = offset;\n } else if (edges.bottom) {\n newY -= newY + height - window.innerHeight;\n }\n return {\n x: newX + scrollLeft,\n y: newY + scrollTop\n };\n }\n\n _animateIn() {\n this._positionTooltip();\n this.tooltipEl.style.visibility = 'visible';\n const duration = this.options.inDuration;\n // easeOutCubic\n this.tooltipEl.style.transition = `\n transform ${duration}ms ease-out,\n opacity ${duration}ms ease-out`;\n setTimeout(() => {\n this.tooltipEl.style.transform = `translateX(${this.xMovement}px) translateY(${this.yMovement}px)`;\n this.tooltipEl.style.opacity = (this.options.opacity || 1).toString();\n }, 1);\n }\n\n _animateOut() {\n const duration = this.options.outDuration;\n // easeOutCubic\n this.tooltipEl.style.transition = `\n transform ${duration}ms ease-out,\n opacity ${duration}ms ease-out`;\n setTimeout(() => {\n this.tooltipEl.style.transform = `translateX(0px) translateY(0px)`;\n this.tooltipEl.style.opacity = '0';\n }, 1);\n /*\n anim.remove(this.tooltipEl);\n anim({\n targets: this.tooltipEl,\n opacity: 0,\n translateX: 0,\n translateY: 0,\n duration: this.options.outDuration,\n easing: 'easeOutCubic'\n });\n */\n }\n\n _handleMouseEnter = () => {\n this.isHovered = true;\n this.isFocused = false; // Allows close of tooltip when opened by focus.\n this.open(false);\n };\n\n _handleMouseLeave = () => {\n this.isHovered = false;\n this.isFocused = false; // Allows close of tooltip when opened by focus.\n this.close();\n };\n\n _handleFocus = () => {\n if (Utils.tabPressed) {\n this.isFocused = true;\n this.open(false);\n }\n };\n\n _handleBlur = () => {\n this.isFocused = false;\n this.close();\n };\n\n _getAttributeOptions(): Partial<TooltipOptions> {\n const attributeOptions: Partial<TooltipOptions> = {};\n const tooltipTextOption = this.el.getAttribute('data-tooltip');\n const tooltipId = this.el.getAttribute('data-tooltip-id');\n const positionOption = this.el.getAttribute('data-position');\n if (tooltipTextOption) {\n attributeOptions.text = tooltipTextOption;\n }\n if (positionOption) {\n attributeOptions.position = positionOption as TooltipPosition;\n }\n if (tooltipId) {\n attributeOptions.tooltipId = tooltipId;\n }\n\n return attributeOptions;\n }\n}\n", "import { InitElements, MElement } from '../core/component';\nimport * as Components from './index';\nimport { CARDS_SELECTOR } from './cards';\n\n/**\n * The components `AutoInit()` starts, in initialization order, with the\n * selector each one claims.\n *\n * This table is the single source of truth: the options type below and the\n * init calls in `AutoInit()` are both derived from it, so wiring up a new\n * auto-initialized component means adding one line here (plus its export in\n * ./index.ts) - not four hand-synchronized edits that fail silently when one\n * is forgotten.\n *\n * A component that should only ever be constructed explicitly (Toast,\n * CharacterCounter, Range, ...) simply stays out of this table.\n */\nexport const AUTO_INIT_COMPONENTS = {\n Autocomplete: { component: Components.Autocomplete, selector: '.autocomplete' },\n // Shared with Cards.Init() - see CARDS_SELECTOR. This entry used to read\n // '.cards', which no card markup uses.\n Cards: { component: Components.Cards, selector: CARDS_SELECTOR },\n Carousel: { component: Components.Carousel, selector: '.carousel' },\n Chips: { component: Components.Chips, selector: '.chips' },\n Collapsible: { component: Components.Collapsible, selector: '.collapsible' },\n Datepicker: { component: Components.Datepicker, selector: '.datepicker' },\n Dropdown: { component: Components.Dropdown, selector: '.dropdown-trigger' },\n Lightbox: { component: Components.Lightbox, selector: '.lightboxed' },\n Modal: { component: Components.Modal, selector: '.modal' },\n Parallax: { component: Components.Parallax, selector: '.parallax' },\n Pushpin: { component: Components.Pushpin, selector: '.pushpin' },\n ScrollSpy: { component: Components.ScrollSpy, selector: '.scrollspy' },\n FormSelect: { component: Components.FormSelect, selector: 'select' },\n Sidenav: { component: Components.Sidenav, selector: '.sidenav' },\n Tabs: { component: Components.Tabs, selector: '.tabs' },\n TapTarget: { component: Components.TapTarget, selector: '.tap-target' },\n Timepicker: { component: Components.Timepicker, selector: '.timepicker' },\n Tooltip: { component: Components.Tooltip, selector: '.tooltipped' },\n FloatingActionButton: {\n component: Components.FloatingActionButton,\n selector: '.fixed-action-btn'\n }\n};\n\ntype Registry = typeof AUTO_INIT_COMPONENTS;\n\n/**\n * Per-component options accepted by {@link AutoInit}, derived from the table\n * above - each key takes that component's own options type.\n */\nexport type AutoInitOptions = {\n [K in keyof Registry]?: Partial<InstanceType<Registry[K]['component']>['options']>;\n};\n\n/** The shape every entry in the table satisfies; see the cast in AutoInit. */\ntype AutoInitable = {\n init(els: InitElements<MElement>, options: Partial<object>): unknown;\n};\n\n/**\n * Automatically initialize components.\n * @param context Root element to initialize. Defaults to `document.body`.\n * @param options Options for each component.\n */\nexport function AutoInit(\n context: HTMLElement = document.body,\n options?: Partial<AutoInitOptions>\n) {\n for (const name of Object.keys(AUTO_INIT_COMPONENTS) as (keyof Registry)[]) {\n const { component, selector } = AUTO_INIT_COMPONENTS[name];\n // `:is()` so that `:not(.no-autoinit)` applies to the whole selector. A\n // bare `${selector}:not(...)` binds the negation to the last alternative\n // only, which would silently break the opt-out for any comma-separated\n // entry (Cards is the first).\n const els = context.querySelectorAll(`:is(${selector}):not(.no-autoinit)`);\n // Each component's static `init` is overloaded; indexing the table widens\n // it to a union TypeScript cannot call, so narrow it once, here.\n (component as unknown as AutoInitable).init(els, options?.[name] ?? {});\n }\n}\n", "// Public entry point of the bundle.\n//\n// Layout:\n// core/ Component base class, Utils, shared types\n// components/ per-element widgets (+ index.ts barrel, registry.ts)\n// behaviors/ document-level enhancers, started below at import time\n// plugins/ helpers that are not Components\n//\n// See src/ts/README.md before adding anything.\n\nimport { Utils } from './core/utils';\nimport { Cards } from './components/cards';\nimport { Chips } from './components/chips';\nimport { Range } from './components/range';\nimport { Forms } from './behaviors/forms';\nimport { Waves } from './behaviors/waves';\n\nexport * from './components';\nexport { Forms } from './behaviors/forms';\nexport { Waves } from './behaviors/waves';\nexport { AutoInit } from './components/registry';\nexport type { AutoInitOptions } from './components/registry';\n\nexport const version = '0.1.0';\n\n// Side effects: importing the bundle wires up the document-level behaviors and\n// the delegated listeners the components below rely on. Order is preserved from\n// the original bundle - do not reorder without checking the event handlers.\n\nif (typeof document !== 'undefined') {\n document.addEventListener('keydown', Utils.docHandleKeydown, true);\n document.addEventListener('keyup', Utils.docHandleKeyup, true);\n document.addEventListener('focus', Utils.docHandleFocus, true);\n document.addEventListener('blur', Utils.docHandleBlur, true);\n}\nForms.Init();\nChips.Init();\nWaves.Init();\nRange.Init();\nCards.Init();\n"],
5
+ "mappings": ";;;;;;;;AAMO,IAAM,SAAN,MAAM,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA,EAsCjB,OAAO,iBAAiB,GAAkB;AACxC,WAAM,UAAU;AAChB,QAAI,OAAM,gBAAgB,IAAI,EAAE,GAAG,GAAG;AACpC,aAAM,aAAa;AAAA,IACrB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,eAAe,GAAkB;AACtC,WAAM,UAAU;AAChB,QAAI,OAAM,gBAAgB,IAAI,EAAE,GAAG,GAAG;AACpC,aAAM,aAAa;AAAA,IACrB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,eAAe,GAAe;AACnC,QAAI,OAAM,SAAS;AACjB,eAAS,KAAK,UAAU,IAAI,kBAAkB;AAAA,IAChD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,cAAc,GAAe;AAClC,aAAS,KAAK,UAAU,OAAO,kBAAkB;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAO,gBAAgB,UAA4B;AACjD,QAAI,OAAO,aAAa,YAAa;AACrC,QAAI,SAAS,eAAe,WAAW;AACrC,eAAS,iBAAiB,oBAAoB,UAAU,EAAE,MAAM,KAAK,CAAC;AAAA,IACxE,OAAO;AACL,eAAS;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,OAAe;AACpB,UAAM,KAAK,MAAc;AACvB,aAAO,KAAK,OAAO,IAAI,KAAK,OAAO,KAAK,KAAO,EAC5C,SAAS,EAAE,EACX,UAAU,CAAC;AAAA,IAChB;AACA,WAAO,GAAG,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,qBAAqB,WAAwB,UAAoB,QAAuB;AAC7F,UAAM,QAAQ;AAAA,MACZ,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAEA,UAAM,gBAAgB,UAAU,sBAAsB;AAEtD,UAAM,kBACJ,cAAc,SAAS,OACnB,KAAK,IAAI,cAAc,QAAQ,OAAO,WAAW,IACjD,cAAc;AAEpB,UAAM,aAAa,UAAU;AAC7B,UAAM,YAAY,UAAU;AAE5B,UAAM,YAAY,SAAS,OAAO;AAClC,UAAM,YAAY,SAAS,MAAM;AAGjC,QAAI,YAAY,cAAc,OAAO,UAAU,YAAY,QAAQ;AACjE,YAAM,OAAO;AAAA,IACf;AAEA,QACE,YAAY,SAAS,QAAQ,cAAc,QAAQ,UACnD,YAAY,SAAS,QAAQ,OAAO,aAAa,QACjD;AACA,YAAM,QAAQ;AAAA,IAChB;AAEA,QAAI,YAAY,cAAc,MAAM,UAAU,YAAY,QAAQ;AAChE,YAAM,MAAM;AAAA,IACd;AAEA,QACE,YAAY,SAAS,SAAS,kBAAkB,UAChD,YAAY,SAAS,SAAS,OAAO,cAAc,QACnD;AACA,YAAM,SAAS;AAAA,IACjB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,wBACL,IACA,WACA,UACA,QACA;AACA,UAAM,WASF;AAAA,MACF,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,IACf;AAEA,UAAM,0BAA0B,iBAAiB,SAAS,EAAE,aAAa;AACzE,UAAM,gBAAgB,UAAU,sBAAsB;AACtD,UAAM,kBAAkB,KAAK,IAAI,cAAc,QAAQ,OAAO,WAAW;AACzE,UAAM,iBAAiB,KAAK,IAAI,cAAc,OAAO,OAAO,UAAU;AACtE,UAAM,eAAe,GAAG,sBAAsB;AAE9C,UAAM,aAAa,UAAU;AAC7B,UAAM,YAAY,UAAU;AAE5B,UAAM,YAAY,SAAS,OAAO;AAClC,UAAM,mBAAmB,SAAS,MAAM;AACxC,UAAM,sBAAsB,SAAS,MAAM,aAAa,SAAS;AAGjE,aAAS,eAAe,CAAC,0BACrB,kBAAkB,YAAY,SAAS,SACvC,OAAO,cAAc,aAAa,OAAO,SAAS;AACtD,QAAI,SAAS,eAAe,GAAG;AAC7B,eAAS,OAAO;AAAA,IAClB;AAGA,aAAS,cAAc,CAAC,0BACpB,YAAY,SAAS,QAAQ,aAAa,QAC1C,aAAa,QAAQ,SAAS;AAClC,QAAI,SAAS,cAAc,GAAG;AAC5B,eAAS,QAAQ;AAAA,IACnB;AAGA,aAAS,gBAAgB,CAAC,0BACtB,mBAAmB,mBAAmB,SAAS,SAAS,UACxD,OAAO,eAAe,aAAa,MAAM,SAAS,SAAS;AAC/D,QAAI,SAAS,gBAAgB,GAAG;AAC9B,eAAS,MAAM;AAAA,IACjB;AAGA,aAAS,aAAa,CAAC,0BACnB,uBAAuB,SAAS,SAAS,UACzC,aAAa,UAAU,SAAS,SAAS;AAC7C,QAAI,SAAS,aAAa,GAAG;AAC3B,eAAS,SAAS;AAAA,IACpB;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,iBAAiB,SAA8B;AACpD,QAAI,KAAK,QAAQ,QAAQ;AACzB,QAAI,CAAC,IAAI;AACP,WAAK,QAAQ,aAAa,MAAM;AAChC,aAAO,KAAK,GAAG,MAAM,CAAC,IAAI;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,uBAA+B;AACpC,WAAO,OAAO,WAAW,SAAS,gBAAgB,aAAa,SAAS,KAAK,aAAa;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,wBAAgC;AACrC,WAAO,OAAO,WAAW,SAAS,gBAAgB,cAAc,SAAS,KAAK,cAAc;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,SACL,MACA,MACA,UAA4D,CAAC,GAC7D;AAEA,QAAI,WAAsB,MACxB,QACA,UAAU,MACV,WAAW;AAEb,UAAM,QAAQ,MAAM;AAClB,iBAAW,SAAS,YAAY,QAAQ,IAAI,KAAK,IAAI;AACrD,gBAAU;AAGV,eAAS,KAAK,GAAI,YAAY,CAAC,CAAE;AACjC,iBAAW;AAAA,IACb;AAEA,WAAO,IAAI,SAAoB;AAC7B,YAAM,MAAM,KAAK,IAAI;AACrB,UAAI,CAAC,YAAY,SAAS,YAAY,MAAO,YAAW;AACxD,YAAM,YAAY,QAAQ,MAAM;AAChC,iBAAW;AACX,UAAI,aAAa,GAAG;AAClB,qBAAa,OAAO;AACpB,kBAAU;AACV,mBAAW;AACX,mBAAW;AACX,iBAAS,KAAK,GAAG,IAAI;AAAA,MACvB,WAAW,CAAC,WAAW,SAAS,aAAa,OAAO;AAClD,kBAAU,WAAW,OAAO,SAAS;AAAA,MACvC;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,4BACL,WACA,aACA,YACA,WACA,UACM;AACN,UAAM,+BAA+B,SAAS,cAAc,KAAK;AACjE,iCAA6B,UAAU,IAAI,mBAAmB;AAC9D,cAAU,OAAO,4BAA4B;AAE7C,SAAK,aAAa,8BAA8B,YAAY,CAAC,YAAY,GAAG,MAAM,QAAQ;AAC1F,SAAK,aAAa,8BAA8B,aAAa,CAAC,aAAa,GAAG,MAAM,SAAS;AAAA,EAC/F;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,aACL,WACA,MACA,YAAsB,CAAC,GACvB,aAAsB,MACtB,WAAuC,MACjC;AACN,gBAAY,UAAU,OAAO,CAAC,OAAO,gBAAgB,MAAM,CAAC;AAC5D,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,YAAY,UAAU,KAAK,GAAG;AACrC,WAAO,MAAM,aAAa,aAAa,YAAY;AACnD,WAAO,OAAO;AACd,WAAO,WAAW,CAAC,CAAC,aAAa,IAAI;AACrC,WAAO,YAAY;AAGnB,QAAI,OAAO,aAAa,YAAY;AAClC,aAAO,iBAAiB,SAAS,QAAQ;AACzC,aAAO,iBAAiB,YAAY,CAAC,MAAM;AACzC,YAAI,OAAM,KAAK,MAAM,SAAS,EAAE,GAAG,EAAG,UAAS,CAAC;AAAA,MAClD,CAAC;AAAA,IACH;AACA,cAAU,OAAO,MAAM;AAAA,EACzB;AAAA,EAEA,OAAO,qBACL,QACA,WACA,UACA,QACA,oBACA,QAAgB,UAChB;AACA,UAAM,eAAe,OAAO,cAC1B,cAAc,OAAO,aACrB,kBAAkB,UAAU,cAC5B,iBAAiB,UAAU,aAC3B,aAAa,OAAO,sBAAsB;AAC5C,QAAI,YAAY,GACd,YAAY,GACZ,YAAY,WAAW,MAAM,OAAM,qBAAqB,GACxD,aAAa,WAAW,OAAO,OAAM,sBAAsB;AAE7D,QAAI,aAAa,OAAO;AACtB,mBAAa,CAAC,kBAAkB;AAChC,UAAI,UAAU,UAAU;AACtB,sBAAc,cAAc,IAAI,iBAAiB;AAAA,MACnD;AACA,kBAAY,CAAC;AAAA,IACf,WAAW,aAAa,SAAS;AAC/B,mBAAa,eAAe,IAAI,kBAAkB;AAClD,mBAAa,cAAc;AAC3B,kBAAY;AAAA,IACd,WAAW,aAAa,QAAQ;AAC9B,mBAAa,eAAe,IAAI,kBAAkB;AAClD,mBAAa,CAAC,iBAAiB;AAC/B,kBAAY,CAAC;AAAA,IACf,OAAO;AACL,mBAAa,eAAe;AAC5B,UAAI,UAAU,UAAU;AACtB,sBAAc,cAAc,IAAI,iBAAiB;AAAA,MACnD;AACA,kBAAY;AAAA,IACd;AACA,QAAI,UAAU,SAAS;AACrB,oBAAc,cAAc,iBAAiB;AAAA,IAC/C;AAEA,UAAM,iBAAiB,OAAM;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,cAAU,MAAM,MAAM,eAAe,IAAI;AACzC,cAAU,MAAM,OAAO,eAAe,IAAI;AAE1C,WAAO,EAAC,GAAG,WAAW,GAAG,UAAS;AAAA,EACpC;AAAA,EAEA,OAAO,wBACL,GACA,GACA,OACA,QACA,QACA,oBACA,OACA;AACA,UAAM,aAAa,OAAM,sBAAsB;AAC/C,UAAM,YAAY,OAAM,qBAAqB;AAC7C,QAAI,OAAO,IAAI;AACf,QAAI,OAAO,IAAI;AAEf,UAAM,WAAqB;AAAA,MACzB,MAAM;AAAA,MACN,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IACF;AACA,QAAI;AACJ,QAAI,UAAU,UAAU,SAAS,UAAU;AACzC,eAAS,SAAS;AAAA,IACpB,WAAW,UAAU,SAAS;AAC5B,eAAS,SAAS;AAAA,IACpB;AACA,UAAM,QAAQ,OAAM,qBAAqB,SAAS,MAAM,UAAU,MAAM;AAExE,QAAI,MAAM,MAAM;AACd,aAAO;AAAA,IACT,WAAW,MAAM,OAAO;AACtB,cAAQ,OAAO,QAAQ,OAAO;AAAA,IAChC;AACA,QAAI,MAAM,KAAK;AACb,aAAO;AAAA,IACT,WAAW,MAAM,QAAQ;AACvB,cAAQ,OAAO,SAAS,OAAO;AAAA,IACjC;AACA,WAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,IACZ;AAAA,EACF;AACF;AAAA;AA5ca,OAEJ,aAAsB;AAAA;AAFlB,OAIJ,UAAmB;AAAA;AAAA;AAAA;AAJf,OASJ,OAAO;AAAA,EACZ,KAAK,CAAC,KAAK;AAAA,EACX,OAAO,CAAC,OAAO;AAAA,EACf,KAAK,CAAC,UAAU,KAAK;AAAA,EACrB,WAAW,CAAC,WAAW;AAAA,EACvB,UAAU,CAAC,WAAW,IAAI;AAAA,EAC1B,YAAY,CAAC,aAAa,MAAM;AAAA,EAChC,YAAY,CAAC,aAAa,MAAM;AAAA,EAChC,aAAa,CAAC,cAAc,OAAO;AAAA,EACnC,QAAQ,CAAC,UAAU,KAAK;AAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAnBW,OA4BI,kBAAkB,oBAAI,IAAI;AAAA,EACvC,GAAG,OAAM,KAAK;AAAA,EACd,GAAG,OAAM,KAAK;AAAA,EACd,GAAG,OAAM,KAAK;AAChB,CAAC;AAhCI,IAAM,QAAN;;;ACsBA,IAAM,YAAN,MAAuC;AAAA;AAAA;AAAA;AAAA,EAa5C,YAAY,IAAiB,SAAqB,UAA0C;AAE1F,QAAI,EAAE,cAAc,cAAc;AAChC,cAAQ,MAAM,MAAM,KAAK,yBAAyB,CAAC;AAAA,IACrD;AAEA,UAAM,MAAM,SAAS,YAAY,EAAE;AACnC,QAAI,CAAC,CAAC,KAAK;AACT,UAAI,QAAQ;AAAA,IACd;AACA,SAAK,KAAK;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyCA,OAAiB,KACf,KACA,SACA,UACS;AACT,QAAI,YAAY;AAChB,QAAI,eAAe,SAAS;AAC1B,kBAAY,IAAI,SAAsB,KAAK,OAAO;AAAA,IACpD,WAAW,CAAC,CAAC,OAAO,IAAI,QAAQ;AAC9B,kBAAY,CAAC;AACb,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,kBAAU,KAAK,IAAI,SAAsB,IAAI,CAAC,GAAG,OAAO,CAAC;AAAA,MAC3D;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,WAAwB;AACjC,WAAO,CAAC;AAAA,EACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,YAAY,IAAyC;AAC1D,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAKA,UAAgB;AACd,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACF;;;AC1HA,IAAM,YAA0B;AAAA,EAC9B,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,aAAa;AACf;AAUO,IAAM,iBAAiB;AAEvB,IAAM,QAAN,MAAM,eAAc,UAA4C;AAAA,EAOrE,YAAY,IAAiB,SAAgC;AAC3D,UAAM,IAAI,SAAS,MAAK;AAP1B,kBAAkB;AA6ElB,+BAAsB,MAAM;AAC1B,WAAK,YAAY,QAAQ,CAAC,OAAoB;AAC5C,WAAG,iBAAiB,SAAS,KAAK,uBAAuB;AACzD,WAAG,iBAAiB,YAAY,KAAK,oBAAoB;AAAA,MAC3D,CAAC;AAAA,IACH;AAEA,gCAAuB,MAAM;AAC3B,WAAK,YAAY,QAAQ,CAAC,OAAoB;AAC5C,WAAG,oBAAoB,SAAS,KAAK,uBAAuB;AAC5D,WAAG,oBAAoB,YAAY,KAAK,oBAAoB;AAAA,MAC9D,CAAC;AAAA,IACH;AAEA,mCAA0B,MAAM;AAC9B,WAAK,mBAAmB;AAAA,IAC1B;AAEA,gCAAmD,CAAC,MAAqB;AACvE,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,aAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF;AAEA,8BAAqB,MAAM;AAEzB,WAAK,YAAY,QAAQ,CAAC,OAAqB,GAAG,WAAW,EAAG;AAChE,WAAK,KAAK;AAAA,IACZ;AAEA,0CAAiC,MAAM;AACrC,WAAK,gBAAgB,iBAAiB,SAAS,KAAK,KAAK;AACzD,WAAK,gBAAgB,iBAAiB,YAAY,KAAK,yBAAyB;AAAA,IAClF;AAEA,2CAAkC,MAAM;AACtC,WAAK,gBAAgB,oBAAoB,SAAS,KAAK,KAAK;AAC5D,WAAK,gBAAgB,oBAAoB,YAAY,KAAK,yBAAyB;AAAA,IACrF;AAEA,qCAAwD,CAAC,MAAqB;AAC5E,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAKA;AAAA;AAAA;AAAA,gBAAmB,MAAM;AACvB,UAAI,KAAK,OAAQ;AACjB,WAAK,SAAS;AACd,WAAK,GAAG,MAAM,WAAW;AACzB,WAAK,WAAW,MAAM,UAAU;AAChC,WAAK,WAAW,eAAe;AAE/B,UAAI,KAAK,gBAAiB,MAAK,gBAAgB,WAAW;AAC1D,iBAAW,MAAM;AACf,aAAK,WAAW,MAAM,aAAa,aAAa,KAAK,QAAQ,WAAW;AACxE,aAAK,WAAW,MAAM,YAAY;AAAA,MACpC,GAAG,CAAC;AACJ,UAAI,OAAO,KAAK,QAAQ,WAAW,YAAY;AAC7C,aAAK,QAAQ,OAAO,KAAK,IAAI;AAAA,MAC/B;AACA,UAAI,KAAK,gBAAiB,MAAK,+BAA+B;AAAA,IAChE;AAKA;AAAA;AAAA;AAAA,iBAAoB,MAAM;AACxB,UAAI,CAAC,KAAK,OAAQ;AAClB,WAAK,SAAS;AACd,WAAK,WAAW,MAAM,aAAa,aAAa,KAAK,QAAQ,UAAU;AACvE,WAAK,WAAW,MAAM,YAAY;AAClC,iBAAW,MAAM;AACf,aAAK,WAAW,MAAM,UAAU;AAChC,aAAK,WAAW,eAAe;AAC/B,aAAK,YAAY,QAAQ,CAAC,OAAqB,GAAG,WAAW,CAAE;AAC/D,YAAI,KAAK,gBAAiB,MAAK,gBAAgB,WAAW;AAC1D,aAAK,GAAG,MAAM,WAAW,KAAK;AAAA,MAChC,GAAG,KAAK,QAAQ,UAAU;AAC1B,UAAI,OAAO,KAAK,QAAQ,YAAY,YAAY;AAC9C,aAAK,QAAQ,QAAQ,KAAK,IAAI;AAAA,MAChC;AACA,UAAI,KAAK,gBAAiB,MAAK,gCAAgC;AAAA,IACjE;AA3JE,SAAK,GAAG,kBAAkB,IAAI;AAE9B,SAAK,UAAU;AAAA,MACb,GAAG,OAAM;AAAA,MACT,GAAG;AAAA,IACL;AAEA,SAAK,cAAc,CAAC;AAEpB,SAAK,aAAa,KAAK,GAAG,cAAc,8BAA8B;AACtE,QAAI,KAAK,YAAY;AACnB,WAAK,kBAAkB,iBAAiB,KAAK,EAAE,EAAE;AACjD,WAAK,cAAc,MAAM,KAAK,KAAK,GAAG,iBAAiB,YAAY,CAAC;AACpE,WAAK,YAAY,QAAQ,CAACA,QAAoB;AAC5C,YAAIA,IAAI,CAAAA,IAAG,WAAW;AAAA,MACxB,CAAC;AAED,WAAK,kBAAkB,KAAK,WAAW;AAAA,QACrC;AAAA,MACF;AACA,UAAI,KAAK,gBAAiB,MAAK,gBAAgB,WAAW;AAE1D,WAAK,WAAW,eAAe;AAC/B,WAAK,oBAAoB;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,WAAW,WAAyB;AAClC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,SACiB;AACjB,WAAO,MAAM,KAAK,KAAK,SAAS,MAAK;AAAA,EACvC;AAAA,EAEA,OAAO,YAAY,IAAwB;AACzC,WAAO,GAAG,kBAAkB;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,SAAK,qBAAqB;AAC1B,QAAI,KAAK,gBAAiB,MAAK,gCAAgC;AAC/D,SAAK,cAAc,CAAC;AACpB,SAAK,GAAG,kBAAkB,IAAI;AAAA,EAChC;AAAA,EA0FA,OAAO,OAAO;AAEZ,UAAM,gBAAgB,MAAM;AAC1B,YAAM,QAAQ,SAAS,iBAAiB,cAAc;AACtD,YAAM,QAAQ,CAAC,OAAO;AACpB,YAAI,MAAM,GAAG,kBAAkB,KAAK,OAAW,MAAK,KAAK,EAAiB;AAAA,MAC5E,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;AC9HA,IAAMC,aAA6B;AAAA,EACjC,WAAW;AAAA,EACX,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,cAAc;AAAA,EACd,cAAc;AAAA,EACd,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AACf;AAEO,IAAM,YAAN,MAAM,kBAAiB,UAA+C;AAAA,EAgB3E,YAAY,IAAiB,SAAmC;AAC9D,UAAM,IAAI,SAAS,SAAQ;AAmH7B,wBAAe,CAAC,MAAkB;AAChC,QAAE,eAAe;AAEjB,UAAI,KAAK,QAAQ;AACf,aAAK,MAAM;AAAA,MACb,OAAO;AACL,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAEA,6BAAoB,MAAM;AAExB,WAAK,KAAK;AAAA,IACZ;AAEA,6BAAoB,CAAC,MAAkB;AACrC,YAAM,OAAO,EAAE;AAEf,UAAI,CAAC,MAAM;AACT,aAAK,MAAM;AACX;AAAA,MACF;AACA,YAAM,yBAAyB,CAAC,CAAC,KAAK,QAAQ,yBAAyB;AACvE,UAAI,+BAA+B;AACnC,YAAM,iBAAiB,KAAK,QAAQ,mBAAmB;AACvD,UAAI,kBAAkB,CAAC,CAAC,eAAe,qBAAqB,KAAK,eAAe,qBAAqB,EAAE,QAAQ;AAC7G,uCAA+B;AAAA,MACjC;AAEA,UAAI,CAAC,gCAAgC,CAAC,wBAAwB;AAC5D,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAEA,gCAAuB,CAAC,MAAkB;AACxC,YAAM,SAAsB,EAAE;AAC9B,UAAI,KAAK,QAAQ,gBAAgB,OAAO,QAAQ,yBAAyB,KAAK,CAAC,KAAK,eAAe;AAEjG,aAAK,MAAM;AAAA,MACb,WAAW,CAAC,OAAO,QAAQ,yBAAyB,GAAG;AAGrD,mBAAW,MAAM;AACf,cAAI,KAAK,QAAQ;AACf,iBAAK,MAAM;AAAA,UACb;AAAA,QACF,GAAG,CAAC;AAAA,MACN;AACA,WAAK,gBAAgB;AAAA,IACvB;AAEA,iCAAwB,CAAC,MAAqB;AAE5C,YAAM,mBACJ,MAAM,KAAK,WAAW,SAAS,EAAE,GAAG,KAAK,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG;AAC1E,UAAI,oBAAoB,CAAC,KAAK,QAAQ;AACpC,UAAE,eAAe;AACjB,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAEA,oCAA2B,CAAC,MAAkB;AAC5C,YAAM,SAAsB,EAAE;AAC9B,UAAI,OAAO,QAAQ,yBAAyB,GAAG;AAC7C,aAAK,gBAAgB;AAAA,MACvB;AAAA,IACF;AAEA,gCAAuB,CAAC,MAAkB;AAExC,UAAI,OAAO,KAAK,QAAQ,gBAAgB,YAAY;AAClD,cAAM,SAAuB,EAAE,OAAQ,QAAQ,IAAI;AACnD,aAAK,QAAQ,YAAY,KAAK,MAAM,MAAM;AAAA,MAC5C;AAAA,IACF;AAEA,kCAAyB,CAAC,MAAqB;AAC7C,YAAM,gBACJ,MAAM,KAAK,WAAW,SAAS,EAAE,GAAG,KAAK,MAAM,KAAK,SAAS,SAAS,EAAE,GAAG;AAC7E,UAAI,MAAM,KAAK,IAAI,SAAS,EAAE,GAAG,GAAG;AAClC,UAAE,eAAe;AACjB,aAAK,MAAM;AAAA,MACb,WAES,iBAAiB,KAAK,QAAQ;AACrC,UAAE,eAAe;AACjB,cAAM,YAAY,MAAM,KAAK,WAAW,SAAS,EAAE,GAAG,IAAI,IAAI;AAC9D,YAAI,kBAAkB,KAAK;AAC3B,YAAI,mBAAmB;AACvB,WAAG;AACD,4BAAkB,kBAAkB;AACpC,cACE,CAAC,CAAC,KAAK,WAAW,SAAS,eAAe,KAC1B,KAAK,WAAW,SAAS,eAAe,EAAG,aAAa,IACxE;AACA,+BAAmB;AACnB;AAAA,UACF;AAAA,QACF,SAAS,kBAAkB,KAAK,WAAW,SAAS,UAAU,mBAAmB;AAEjF,YAAI,kBAAkB;AAEpB,cAAI,KAAK,gBAAgB;AACvB,iBAAK,WAAW,SAAS,KAAK,YAAY,EAAE,UAAU,OAAO,QAAQ;AACvE,eAAK,eAAe;AACpB,eAAK,kBAAkB;AAAA,QACzB;AAAA,MACF,WAES,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,KAAK,KAAK,QAAQ;AAExD,cAAM,iBAAiB,KAAK,WAAW,SAAS,KAAK,YAAY;AACjE,cAAM,qBAAkC,gBAAgB,cAAc,WAAW;AAEjF,YAAI,CAAC,CAAC,oBAAoB;AACxB,6BAAmB,MAAM;AAAA,QAC3B,WAAW,CAAC,CAAC,gBAAgB;AAC3B,cAAI,0BAA0B,aAAa;AACzC,2BAAe,MAAM;AAAA,UACvB;AAAA,QACF;AAAA,MACF,WAES,MAAM,KAAK,IAAI,SAAS,EAAE,GAAG,KAAK,KAAK,QAAQ;AACtD,UAAE,eAAe;AACjB,aAAK,MAAM;AAAA,MACb;AAGA,YAAM,UAAU,EAAE,IAAI,YAAY;AAClC,YAAM,WAAW,gBAAgB,KAAK,OAAO;AAC7C,YAAM,cAAc;AAAA,QAClB,GAAG,MAAM,KAAK;AAAA,QACd,GAAG,MAAM,KAAK;AAAA,QACd,GAAG,MAAM,KAAK;AAAA,QACd,GAAG,MAAM,KAAK;AAAA,QACd,GAAG,MAAM,KAAK;AAAA,MAChB;AACA,UAAI,YAAY,CAAC,YAAY,SAAS,EAAE,GAAG,GAAG;AAC5C,aAAK,YAAY,KAAK,OAAO;AAC7B,cAAM,SAAS,KAAK,YAAY,KAAK,EAAE;AAGvC,cAAM,cAAc,MAAM,KAAK,KAAK,WAAW,iBAAiB,IAAI,CAAC,EAAE;AAAA,UACrE,CAAC,OAAO,GAAG,YAAY,KAAK,EAAE,YAAY,EAAE,QAAQ,MAAM,MAAM;AAAA,QAClE;AACA,YAAI,aAAa;AACf,eAAK,eAAe,CAAC,GAAG,YAAY,WAAW,QAAQ,EAAE,QAAQ,WAAW;AAC5E,eAAK,kBAAkB;AAAA,QACzB;AAAA,MACF;AAGA,mBAAa,KAAK,aAAa;AAC/B,WAAK,gBAAgB,WAAW,KAAK,mBAAmB,GAAI;AAAA,IAC9D;AAEA,+BAAsB,MAAM;AAG1B,UAAI,KAAK,GAAG,cAAc;AACxB,aAAK,sBAAsB;AAAA,MAC7B;AAAA,IACF;AAEA,6BAAoB,MAAM;AACxB,WAAK,cAAc,CAAC;AAAA,IACtB;AA6OA;AAAA;AAAA;AAAA,gBAAO,MAAM;AACX,UAAI,KAAK,OAAQ;AACjB,WAAK,SAAS;AAEd,UAAI,OAAO,KAAK,QAAQ,gBAAgB,YAAY;AAClD,aAAK,QAAQ,YAAY,KAAK,MAAM,KAAK,EAAE;AAAA,MAC7C;AAEA,WAAK,qBAAqB;AAC1B,WAAK,WAAW,MAAM,UAAU;AAChC,WAAK,eAAe;AACpB,WAAK,WAAW;AAGhB,iBAAW,MAAM,KAAK,6BAA6B,GAAG,CAAC;AACvD,WAAK,GAAG,eAAe;AAAA,IACzB;AAKA;AAAA;AAAA;AAAA,iBAAQ,MAAM;AACZ,UAAI,CAAC,KAAK,OAAQ;AAClB,WAAK,SAAS;AACd,WAAK,eAAe;AAEpB,UAAI,OAAO,KAAK,QAAQ,iBAAiB,YAAY;AACnD,aAAK,QAAQ,aAAa,KAAK,MAAM,KAAK,EAAE;AAAA,MAC9C;AACA,WAAK,YAAY;AACjB,WAAK,8BAA8B;AACnC,UAAI,KAAK,QAAQ,WAAW;AAC1B,aAAK,GAAG,MAAM;AAAA,MAChB;AACA,WAAK,GAAG,eAAe;AAAA,IACzB;AAKA;AAAA;AAAA;AAAA,iCAAwB,MAAM;AAC5B,UAAI,KAAK,QAAQ;AACf,aAAK,gCAAgC;AACrC,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAnjBE,SAAK,GAAG,qBAAqB,IAAI;AAEjC,cAAS,WAAW,KAAK,IAAI;AAC7B,SAAK,KAAK,MAAM,iBAAiB,EAAE;AACnC,SAAK,aAAa,SAAS,eAAe,KAAK,EAAE;AACjD,SAAK,YAAY,UAAU,IAAI,kBAAkB;AAEjD,SAAK,UAAU;AAAA,MACb,GAAG,UAAS;AAAA,MACZ,GAAG;AAAA,IACL;AAEA,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,gBAAgB;AACrB,SAAK,eAAe;AACpB,SAAK,cAAc,CAAC;AACpB,SAAK,GAAG,eAAe;AAGvB,SAAK,uBAAuB;AAC5B,SAAK,uBAAuB;AAC5B,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAA4B;AACrC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAoC,CAAC,GACd;AACvB,WAAO,MAAM,KAAK,KAAK,SAAS,SAAQ;AAAA,EAC1C;AAAA,EAEA,OAAO,YAAY,IAA2B;AAC5C,WAAO,GAAG,qBAAqB;AAAA,EACjC;AAAA,EAEA,UAAU;AACR,iBAAa,KAAK,aAAa;AAC/B,SAAK,qBAAqB;AAC1B,SAAK,qBAAqB;AAG1B,SAAK,8BAA8B;AACnC,UAAM,QAAQ,UAAS,WAAW,QAAQ,IAAI;AAC9C,QAAI,SAAS,EAAG,WAAS,WAAW,OAAO,OAAO,CAAC;AACnD,SAAK,GAAG,qBAAqB,IAAI;AAAA,EACnC;AAAA,EAEA,sBAAsB;AAEpB,SAAK,GAAG,iBAAiB,WAAW,KAAK,qBAAqB;AAE9D,SAAK,YAAY,iBAAiB,SAAS,KAAK,oBAAoB;AAEpE,QAAI,KAAK,QAAQ,OAAO;AACtB,WAAK,GAAG,iBAAiB,cAAc,KAAK,iBAAiB;AAC7D,WAAK,GAAG,iBAAiB,cAAc,KAAK,iBAAiB;AAC7D,WAAK,WAAW,iBAAiB,cAAc,KAAK,iBAAiB;AAAA,IAEvE,OAAO;AACL,WAAK,GAAG,iBAAiB,SAAS,KAAK,YAAY;AAAA,IACrD;AAAA,EACF;AAAA,EAEA,uBAAuB;AAIrB,SAAK,GAAG,oBAAoB,WAAW,KAAK,qBAAqB;AACjE,SAAK,YAAY,oBAAoB,SAAS,KAAK,oBAAoB;AACvE,QAAI,KAAK,QAAQ,OAAO;AACtB,WAAK,GAAG,oBAAoB,cAAc,KAAK,iBAAiB;AAChE,WAAK,GAAG,oBAAoB,cAAc,KAAK,iBAAiB;AAChE,WAAK,YAAY,oBAAoB,cAAc,KAAK,iBAAiB;AAAA,IAC3E,OAAO;AACL,WAAK,GAAG,oBAAoB,SAAS,KAAK,YAAY;AAAA,IACxD;AAAA,EACF;AAAA,EAEA,+BAA+B;AAC7B,aAAS,KAAK,iBAAiB,SAAS,KAAK,oBAAoB;AACjE,aAAS,KAAK,iBAAiB,aAAa,KAAK,0BAA0B,EAAE,SAAS,KAAK,CAAC;AAC5F,SAAK,YAAY,iBAAiB,WAAW,KAAK,sBAAsB;AACxE,WAAO,iBAAiB,UAAU,KAAK,mBAAmB;AAAA,EAC5D;AAAA,EAEA,gCAAgC;AAC9B,aAAS,KAAK,oBAAoB,SAAS,KAAK,oBAAoB;AACpE,aAAS,KAAK,oBAAoB,aAAa,KAAK,wBAAwB;AAC5E,SAAK,YAAY,oBAAoB,WAAW,KAAK,sBAAsB;AAC3E,WAAO,oBAAoB,UAAU,KAAK,mBAAmB;AAAA,EAC/D;AAAA,EA2KA,uBAAuB;AACrB,SAAK,WAAW,MAAM,UAAU;AAChC,SAAK,gCAAgC;AACrC,SAAK,WAAW,MAAM,YAAY;AAClC,SAAK,WAAW,MAAM,UAAU;AAAA,EAClC;AAAA,EAEA,kCAAkC;AAChC,SAAK,WAAW,MAAM,QAAQ;AAC9B,SAAK,WAAW,MAAM,SAAS;AAC/B,SAAK,WAAW,MAAM,OAAO;AAC7B,SAAK,WAAW,MAAM,MAAM;AAC5B,SAAK,WAAW,MAAM,kBAAkB;AAAA,EAC1C;AAAA,EAEA,uBAAuB,cAA2B,MAAM;AACtD,QAAI,KAAK,QAAQ,WAAW;AAC1B,WAAK,QAAQ,UAAU,OAAO,KAAK,UAAU;AAC7C;AAAA,IACF;AACA,QAAI,aAAa;AACf,UAAI,CAAC,YAAY,SAAS,KAAK,UAAU,EAAG,aAAY,OAAO,KAAK,UAAU;AAC9E;AAAA,IACF;AACA,SAAK,GAAG,MAAM,KAAK,UAAU;AAAA,EAC/B;AAAA,EAEA,yBAAyB;AACvB,QAAI,CAAC,KAAK,WAAY;AACtB,SAAK,WAAW,UAAU;AAE1B,SAAK,WAAW,WAAW;AAE3B,UAAM,KAAK,KAAK,WAAW,QAAQ,EAAE,QAAQ,CAAC,OAAO;AACnD,UAAI,cAAc,iBAAiB,GAAG,UAAU,SAAS,SAAS,GAAG;AACnE,WAAG,aAAa,YAAY,IAAI;AAChC;AAAA,MACF;AACA,UAAI,CAAC,GAAG,aAAa,UAAU,EAAG,IAAG,aAAa,YAAY,GAAG;AAAA,IACnE,CAAC;AAAA,EACH;AAAA,EAEA,oBAAoB;AAClB,QACE,KAAK,gBAAgB,KACrB,KAAK,eAAe,KAAK,WAAW,SAAS,UAC7C,KAAK,QAAQ,WACb;AACA,MAAC,KAAK,WAAW,SAAS,KAAK,YAAY,EAAkB,MAAM;AAAA,QACjE,eAAe;AAAA,MACjB,CAAC;AACD,WAAK,WAAW,SAAS,KAAK,YAAY,EAAE,eAAe;AAAA,QACzD,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,qBAAqB,uBAAoC;AAEvD,UAAM,eAAe,KAAK,GAAG,sBAAsB;AACnD,UAAM,gBAAgB,KAAK,WAAW,sBAAsB;AAE5D,QAAI,cAAc,cAAc;AAChC,QAAI,aAAa,cAAc;AAC/B,QAAI,YAAY,aAAa,OAAO,cAAc;AAClD,QAAI,YAAY,aAAa,MAAM,cAAc;AAEjD,UAAM,iBAAiB;AAAA,MACrB,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAEA,UAAM,aAAa,MAAM;AAAA,MACvB,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,KAAK,QAAQ,eAAe,IAAI,aAAa;AAAA,IAC/C;AAEA,QAAI,oBAAoB;AACxB,QAAI,sBAAsB,KAAK,QAAQ;AACvC,iBAAa,KAAK,QAAQ,eAAe,IAAI,aAAa;AAG1D,SAAK,eAAe;AAEpB,QAAI,CAAC,WAAW,KAAK;AACnB,UAAI,WAAW,QAAQ;AACrB,4BAAoB;AAEpB,YAAI,CAAC,KAAK,QAAQ,cAAc;AAC9B,uBAAa,aAAa;AAAA,QAC5B;AAAA,MACF,OAAO;AACL,aAAK,eAAe;AAGpB,uBAAe;AACf,YAAI,WAAW,aAAa,WAAW,eAAe;AACpD,8BAAoB;AACpB,yBAAe,WAAW;AAC1B,uBAAa,KAAK,QAAQ,eACtB,WAAW,aAAa,KACxB,WAAW,aAAa,KAAK,aAAa;AAAA,QAChD,OAAO;AACL,yBAAe,WAAW;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAGA,QAAI,CAAC,WAAW,mBAAmB,GAAG;AACpC,YAAM,oBAAoB,wBAAwB,SAAS,UAAU;AACrE,UAAI,WAAW,iBAAiB,GAAG;AACjC,8BAAsB;AAAA,MACxB,OAAO;AAEL,YAAI,WAAW,cAAc,WAAW,cAAc;AACpD,gCAAsB;AACtB,wBAAc,WAAW;AACzB,uBAAa,WAAW;AAAA,QAC1B,OAAO;AACL,gCAAsB;AACtB,wBAAc,WAAW;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAEA,QAAI,sBAAsB,UAAU;AAClC,kBACE,YAAY,cAAc,UAAU,KAAK,QAAQ,eAAe,aAAa,SAAS;AAAA,IAC1F;AACA,QAAI,wBAAwB,SAAS;AACnC,kBAAY,YAAY,cAAc,QAAQ,aAAa;AAAA,IAC7D;AACA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,aAAa;AACX,UAAM,WAAW,KAAK,QAAQ;AAC9B,SAAK,WAAW,MAAM,aAAa;AAEnC,SAAK,WAAW,MAAM,UAAU;AAChC,SAAK,WAAW,MAAM,YAAY;AAClC,eAAW,MAAM;AAEf,WAAK,WAAW,MAAM,aAAa,WAAW,QAAQ,sBAAsB,QAAQ;AAEpF,WAAK,WAAW,MAAM,UAAU;AAChC,WAAK,WAAW,MAAM,YAAY;AAAA,IACpC,GAAG,CAAC;AACJ,eAAW,MAAM;AACf,UAAI,KAAK,QAAQ,UAAW,MAAK,WAAW,MAAM;AAClD,UAAI,OAAO,KAAK,QAAQ,cAAc,WAAY,MAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,EAAE;AAAA,IAC7F,GAAG,QAAQ;AAAA,EACb;AAAA,EAEA,cAAc;AACZ,UAAM,WAAW,KAAK,QAAQ;AAE9B,SAAK,WAAW,MAAM,aAAa,WAAW,QAAQ,sBAAsB,QAAQ;AAEpF,SAAK,WAAW,MAAM,UAAU;AAChC,SAAK,WAAW,MAAM,YAAY;AAClC,eAAW,MAAM;AACf,WAAK,qBAAqB;AAC1B,UAAI,OAAO,KAAK,QAAQ,eAAe;AACrC,aAAK,QAAQ,WAAW,KAAK,MAAM,KAAK,EAAE;AAAA,IAC9C,GAAG,QAAQ;AAAA,EACb;AAAA,EAEQ,oBAAoB,IAAiB,WAA+C;AAC1F,QAAI,WAAW,GAAG;AAClB,WAAO,aAAa,QAAQ,aAAa,UAAU;AACjD,UAAI,UAAU,QAAQ,GAAG;AACvB,eAAoB;AAAA,MACtB;AACA,iBAAW,SAAS;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB;AAEf,QAAI,wBAAqC,KAAK;AAAA,MAC5C,KAAK;AAAA,MACL,CAAC,aAA0B;AACzB,eACE,CAAC,CAAC,QAAQ,MAAM,EAAE,SAAS,SAAS,OAAO,KAC3C,iBAAiB,QAAQ,EAAE,aAAa;AAAA,MAE5C;AAAA,IACF;AAEA,QAAI,CAAC,uBAAuB;AAC1B,8BACG,CAAC,CAAC,KAAK,WAAW,eAAe,KAAK,WAAW,eAAe,KAAK,WAAW;AAAA,IAErF;AAEA,QAAI,iBAAiB,qBAAqB,EAAE,aAAa;AACvD,4BAAsB,MAAM,WAAW;AAKzC,UAAM,aAAa,KAAK,QAAQ,iBAC5B,KAAK,GAAG,sBAAsB,EAAE,QAChC,KAAK,WAAW,sBAAsB,EAAE;AAC5C,SAAK,WAAW,MAAM,QAAQ,aAAa;AAE3C,UAAM,eAAe,KAAK,qBAAqB,qBAAqB;AACpE,SAAK,WAAW,MAAM,OAAO,aAAa,IAAI;AAC9C,SAAK,WAAW,MAAM,MAAM,aAAa,IAAI;AAC7C,SAAK,WAAW,MAAM,SAAS,aAAa,SAAS;AACrD,SAAK,WAAW,MAAM,QAAQ,aAAa,QAAQ;AACnD,SAAK,WAAW,MAAM,kBAAkB,GACtC,aAAa,wBAAwB,SAAS,MAAM,MACtD,IAAI,aAAa,sBAAsB,QAAQ,MAAM,MAAM;AAAA,EAC7D;AAmDF;AAtkBa,UACJ,aAAyB,CAAC;AAD5B,IAAM,WAAN;;;ACnBP,IAAMC,aAAiC;AAAA,EACrC,MAAM,CAAC;AAAA;AAAA,EACP,gBAAgB;AAAA;AAAA,EAChB,iBAAiB;AAAA;AAAA,IAEf,WAAW;AAAA,IACX,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AAAA,EACA,WAAW;AAAA;AAAA,EACX,eAAe;AAAA,EACf,UAAU,CAAC,MAAc,iBAA+B;AACtD,UAAM,aAAa,KAAK,kBAAkB;AAC1C,iBAAa;AAAA,MAEX,aAAa,QAAQ,KAAK;AAAA,QAAO,CAAC,WAChC,OAAO,GAAG,SAAS,EAAE,kBAAkB,EAAE,SAAS,UAAU,KACvD,OAAO,MAAM,kBAAkB,EAAE,SAAS,UAAU;AAAA,MAE3D;AAAA,IACF;AAAA,EACF;AAAA,EACA,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,UAAU,CAAC;AACb;AAEO,IAAM,gBAAN,MAAM,sBAAqB,UAA+B;AAAA,EAkB/D,YAAY,IAAsB,SAAuC;AACvE,UAAM,IAAI,SAAS,aAAY;AA4KjC,4BAAmB,MAAM;AACvB,UAAI,CAAC,KAAK,YAAY;AACpB,aAAK,MAAM;AACX,aAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF;AAEA,6BAAoB,CAAC,MAAqB;AACxC,UAAI,EAAE,SAAS,QAAS,eAAa,WAAW;AAChD,WAAK,QAAQ;AACb,YAAM,cAAc,KAAK,GAAG,MAAM,kBAAkB;AAEpD,UACE,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,KAC/B,MAAM,KAAK,SAAS,SAAS,EAAE,GAAG,KAClC,MAAM,KAAK,WAAW,SAAS,EAAE,GAAG;AAEpC;AAGF,UAAI,KAAK,WAAW,eAAe,MAAM,YAAY;AACnD,aAAK,KAAK;AAAA,MACZ;AACA,WAAK,sBAAsB,WAAW;AAAA,IACxC;AAEA,6BAAoB,MAAM;AACxB,WAAK,QAAQ;AACb,YAAM,cAAc,KAAK,GAAG,MAAM,kBAAkB;AACpD,WAAK,sBAAsB,WAAW;AAAA,IACxC;AAEA,iCAAwB,CAAC,UAAkB;AAEzC,UAAI,KAAK,WAAW,OAAO;AACzB,aAAK,kBAAkB;AACvB,aAAK,QAAQ,SAAS,KAAK,GAAG,OAAO,IAAI;AAAA,MAC3C;AAEA,UAAI,CAAC,KAAK,QAAQ,iBAAiB,KAAK,GAAG,MAAM,WAAW,GAAG;AAC7D,aAAK,iBAAiB,CAAC;AACvB,aAAK,gBAAgB;AAAA,MACvB;AACA,WAAK,SAAS;AAAA,IAChB;AAEA,+BAAsB,CAAC,MAAqB;AAC1C,oBAAa,WAAW;AAExB,YAAM,WAAW,KAAK,UAAU,iBAAiB,IAAI,EAAE;AAEvD,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,KAAK,KAAK,eAAe,GAAG;AAC7D,cAAM,YAAY,KAAK,UAAU,iBAAiB,IAAI,EAAE,KAAK,WAAW;AACxE,YAAI,WAAW;AACb,eAAK,aAAa,UAAU,aAAa,SAAS,CAAC;AACnD,YAAE,eAAe;AAAA,QACnB;AACA;AAAA,MACF;AAEA,UAAI,MAAM,KAAK,SAAS,SAAS,EAAE,GAAG,KAAK,MAAM,KAAK,WAAW,SAAS,EAAE,GAAG,GAAG;AAChF,UAAE,eAAe;AACjB,YAAI,MAAM,KAAK,SAAS,SAAS,EAAE,GAAG,KAAK,KAAK,cAAc,EAAG,MAAK;AACtE,YAAI,MAAM,KAAK,WAAW,SAAS,EAAE,GAAG,KAAK,KAAK,cAAc,WAAW;AACzE,eAAK;AACP,aAAK,SAAS,UAAU,OAAO,QAAQ;AACvC,YAAI,KAAK,eAAe,GAAG;AACzB,eAAK,UAAU,KAAK,UAAU,iBAAiB,IAAI,EAAE,KAAK,WAAW;AACrE,eAAK,SAAS,UAAU,IAAI,QAAQ;AAEpC,eAAK,UAAU,SAAS,KAAK,WAAW,EAAE,eAAe;AAAA,YACvD,UAAU;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,UACV,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,6BAAoB,MAAM;AACxB,WAAK,KAAK;AAAA,IACZ;AAEA,kDAAyC,MAAM;AAC7C,WAAK,aAAa;AAAA,IACpB;AAEA,8CAAqC,MAAM;AACzC,WAAK,aAAa;AAAA,IACpB;AAkJA;AAAA;AAAA;AAAA,gBAAO,MAAM;AACX,YAAM,YAAY,KAAK,GAAG,MAAM,kBAAkB;AAClD,WAAK,mBAAmB;AACxB,UAAI,UAAU,UAAU,KAAK,QAAQ,WAAW;AAC9C,aAAK,SAAS;AACd,aAAK,gBAAgB;AAAA,MACvB;AAEA,UAAI,CAAC,KAAK,SAAS,QAAQ;AACzB,mBAAW,MAAM;AACf,eAAK,SAAS,KAAK;AAAA,QACrB,GAAG,CAAC;AAAA,MACN,MAAO,MAAK,SAAS,sBAAsB;AAAA,IAC7C;AAKA;AAAA;AAAA;AAAA,iBAAQ,MAAM;AACZ,WAAK,SAAS,MAAM;AAAA,IACtB;AA1aE,SAAK,GAAG,yBAAyB,IAAI;AAErC,SAAK,UAAU;AAAA,MACb,GAAG,cAAa;AAAA,MAChB,GAAG;AAAA,IACL;AAEA,SAAK,SAAS;AACd,SAAK,QAAQ;AACb,SAAK,cAAc;AACnB,SAAK,SAAS;AACd,SAAK,iBAAiB,KAAK,kBAAkB,KAAK,QAAQ,SAAS,IAAI,CAAC,WAA4B,EAAE,IAAI,MAAM,EAAC,KAAK,CAAC;AACvH,SAAK,YAAY,KAAK,QAAQ,QAAQ,CAAC;AACvC,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,eAAe;AACpB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAAgC;AACzC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,OAAO,KACL,KACA,UAAwC,CAAC,GACV;AAC/B,WAAO,MAAM,KAAK,KAAK,SAAS,aAAY;AAAA,EAC9C;AAAA,EAEA,OAAO,YAAY,IAA+B;AAChD,WAAO,GAAG,yBAAyB;AAAA,EACrC;AAAA,EAWA,OAAe,oBAAiC;AAC9C,QAAI,CAAC,cAAa,kBAAkB;AAClC,YAAM,WAAW,SAAS,cAAc,UAAU;AAClD,eAAS,YAAY;AAAA;AAAA;AAAA;AAAA;AAKrB,oBAAa,mBAAmB,SAAS,QAAQ;AAAA,IACnD;AACA,WAAO,cAAa,iBAAiB,UAAU,IAAI;AAAA,EACrD;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,gBAAgB;AACrB,SAAK,GAAG,yBAAyB,IAAI;AAAA,EACvC;AAAA,EAEA,sBAAsB;AACpB,SAAK,GAAG,iBAAiB,QAAQ,KAAK,gBAAgB;AACtD,SAAK,GAAG,iBAAiB,SAAS,KAAK,iBAAiB;AACxD,SAAK,GAAG,iBAAiB,SAAS,KAAK,iBAAiB;AACxD,SAAK,GAAG,iBAAiB,WAAW,KAAK,mBAAmB;AAC5D,SAAK,GAAG,iBAAiB,SAAS,KAAK,iBAAiB;AACxD,SAAK,UAAU,iBAAiB,aAAa,KAAK,sCAAsC;AACxF,SAAK,UAAU,iBAAiB,WAAW,KAAK,kCAAkC;AAClF,QAAI,OAAO,OAAO,iBAAiB,aAAa;AAC9C,WAAK,UAAU,iBAAiB,cAAc,KAAK,sCAAsC;AACzF,WAAK,UAAU,iBAAiB,YAAY,KAAK,kCAAkC;AAAA,IACrF;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,SAAK,GAAG,oBAAoB,QAAQ,KAAK,gBAAgB;AACzD,SAAK,GAAG,oBAAoB,SAAS,KAAK,iBAAiB;AAC3D,SAAK,GAAG,oBAAoB,SAAS,KAAK,iBAAiB;AAC3D,SAAK,GAAG,oBAAoB,WAAW,KAAK,mBAAmB;AAC/D,SAAK,GAAG,oBAAoB,SAAS,KAAK,iBAAiB;AAC3D,SAAK,UAAU,oBAAoB,aAAa,KAAK,sCAAsC;AAC3F,SAAK,UAAU,oBAAoB,WAAW,KAAK,kCAAkC;AAErF,QAAI,OAAO,OAAO,iBAAiB,aAAa;AAC9C,WAAK,UAAU,oBAAoB,cAAc,KAAK,sCAAsC;AAC5F,WAAK,UAAU,oBAAoB,YAAY,KAAK,kCAAkC;AAAA,IACxF;AAAA,EACF;AAAA,EAEA,iBAAiB;AACf,SAAK,YAAY,SAAS,cAAc,IAAI;AAC5C,SAAK,UAAU,MAAM,YAAY,KAAK,QAAQ;AAC9C,SAAK,UAAU,KAAK,wBAAwB,MAAM,KAAK,CAAC;AACxD,SAAK,UAAU,UAAU,IAAI,wBAAwB,kBAAkB;AACvE,SAAK,UAAU,eAAe;AAC9B,SAAK,GAAG,aAAa,eAAe,KAAK,UAAU,EAAE;AAErD,SAAK,UAAU,QAAQ,CAAC,aAAa;AACnC,YAAM,cAAc,KAAK,oBAAoB,QAAQ;AACrD,WAAK,UAAU,OAAO,WAAW;AAAA,IACnC,CAAC;AAGD,SAAK,GAAG,cAAc,YAAY,KAAK,SAAS;AAGhD,UAAM,kBAAkB;AAAA,MACtB,GAAG,cAAa,SAAS;AAAA,MACzB,GAAG,KAAK,QAAQ;AAAA,IAClB;AAEA,UAAM,kBAAkB,gBAAgB;AAExC,oBAAgB,cAAc,CAAC,OAAO;AACpC,UAAI,CAAC,GAAI;AACT,YAAM,UAAU,GAAG,aAAa,SAAS;AACzC,WAAK,aAAa,OAAO;AAEzB,UAAI,mBAAmB,OAAO,oBAAoB;AAChD,wBAAgB,KAAK,KAAK,UAAU,KAAK,EAAE;AAAA,IAC/C;AACA,SAAK,WAAW,SAAS,KAAK,KAAK,IAAI,eAAe;AAItD,UAAM,QAAQ,KAAK,GAAG,cAAc,cAAc,OAAO;AACzD,QAAI,MAAO,MAAK,GAAG,MAAM,KAAK;AAG9B,SAAK,GAAG,oBAAoB,SAAS,KAAK,SAAS,YAAY;AAC/D,QAAG,CAAC,KAAK,QAAQ,iBAAiB,EAAE,KAAK,QAAQ,SAAS,WAAW,IAAI;AACvE,YAAM,gBAAgB,KAAK,UAAU,OAAO,CAAC,UAAU,MAAM,OAAO,KAAK,eAAe,CAAC,EAAE,EAAE;AAC7F,WAAK,GAAG,QAAQ,cAAc,CAAC,EAAE;AAAA,IACnC;AAEA,QAAI,KAAK,GAAG,MAAO,MAAK,aAAa,KAAK,GAAG,KAAK;AAElD,UAAM,MAAM,SAAS,cAAc,KAAK;AACxC,QAAI,UAAU,IAAI,aAAa;AAC/B,QAAI,aAAa,SAAS,mCAAmC;AAC7D,SAAK,GAAG,cAAc,YAAY,GAAG;AACrC,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,kBAAkB;AAChB,SAAK,UAAU,eAAe;AAC9B,SAAK,UAAU,WAAW,YAAY,KAAK,SAAS;AAAA,EACtD;AAAA,EA6FA,+BAA+B;AAC7B,SAAK,cAAc;AACnB,SAAK,SAAS,UAAU,OAAO,QAAQ;AAAA,EACzC;AAAA,EAEA,qBAAqB;AACnB,SAAK,UAAU,gBAAgB;AAC/B,SAAK,6BAA6B;AAClC,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,sBAAsB,OAAe,OAAe;AAClD,UAAM,QAAQ,MAAM,kBAAkB,EAAE,QAAQ,KAAK,MAAM,kBAAkB,CAAM;AACnF,UAAM,MAAM,QAAQ,MAAM,SAAS;AAEnC,QAAI,SAAS,MAAM,OAAO,IAAI;AAC5B,aAAO,CAAC,OAAO,IAAI,EAAE;AAAA,IACvB;AACA,WAAO,CAAC,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,MAAM,OAAO,MAAM,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC,CAAC;AAAA,EAClF;AAAA,EAEA,oBAAoB,OAAyB;AAC3C,UAAM,OAAO,SAAS,cAAc,IAAI;AACxC,SAAK,aAAa,WAAmB,MAAM,EAAE;AAC7C,SAAK;AAAA,MACH;AAAA,MACA;AAAA,IACF;AACA,SAAK,WAAW;AAEhB,QAAI,KAAK,QAAQ,eAAe;AAC9B,YAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,gBAAU,UAAU,IAAI,gBAAgB;AACxC,gBAAU,MAAM,YAAY;AAC5B,YAAM,WAAW,SAAS,cAAc,OAAO;AAC/C,eAAS,OAAO;AAChB,eAAS,UAAU,KAAK,eAAe,KAAK,CAAC,QAAQ,IAAI,OAAO,MAAM,EAAE;AACxE,YAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,aAAO,MAAM,cAAc;AAC3B,gBAAU,OAAO,UAAU,MAAM;AACjC,WAAK,YAAY,SAAS;AAAA,IAC5B;AAEA,QAAI,MAAM,OAAO;AACf,YAAM,MAAM,SAAS,cAAc,KAAK;AACxC,UAAI,UAAU,IAAI,QAAQ;AAC1B,UAAI,MAAM,MAAM;AAChB,WAAK,YAAY,GAAG;AAAA,IACtB;AAGA,UAAM,YAAY,KAAK,GAAG,MAAM,kBAAkB;AAClD,UAAM,QAAQ,KAAK,sBAAsB,YAAY,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC;AACvF,UAAM,MAAM,SAAS,cAAc,KAAK;AACxC,QAAI,aAAa,SAAS,kCAAkC;AAC5D,QAAI,KAAK,QAAQ,iBAAiB;AAChC,UAAI,YAAY,MAAM,CAAC,IAAI,6BAA6B,MAAM,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,IACxF,OAAO;AACL,UAAI,YAAY,SAAS,eAAe,MAAM,CAAC,CAAC,CAAC;AACjD,UAAI,MAAM,CAAC,GAAG;AACZ,cAAM,YAAY,SAAS,cAAc,MAAM;AAC/C,kBAAU,cAAc,MAAM,CAAC;AAC/B,kBAAU,UAAU,IAAI,WAAW;AACnC,YAAI,YAAY,SAAS;AACzB,YAAI,YAAY,SAAS,eAAe,MAAM,CAAC,CAAC,CAAC;AAAA,MACnD;AAAA,IACF;AAEA,UAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,aAAS,UAAU,IAAI,WAAW;AAClC,aAAS,aAAa,SAAS,8BAA8B;AAC7D,SAAK,YAAY,QAAQ;AACzB,SAAK,cAAc,YAAY,EAAE,YAAY,GAAG;AAEhD,QACE,OAAO,MAAM,gBAAgB,YAC5B,OAAO,MAAM,gBAAgB,YAAY,CAAC,MAAM,MAAM,WAAW,GAClE;AACA,YAAM,cAAc,SAAS,cAAc,OAAO;AAClD,kBAAY;AAAA,QACV;AAAA,QACA;AAAA,MACF;AACA,kBAAY,YAAY,MAAM;AAC9B,WAAK,cAAc,YAAY,EAAE,YAAY,WAAW;AAAA,IAC1D;AAEA,UAAM,gBAAgB,MAAM;AAC1B,UAAI,KAAK,QAAQ,eAAe;AAC9B,YAAI,MAAM,MAAO,QAAO;AACxB,eAAO;AAAA,MACT;AACA,UAAI,MAAM,MAAO,QAAO;AACxB,aAAO;AAAA,IACT;AACA,SAAK,MAAM,sBAAsB,cAAc;AAC/C,WAAO;AAAA,EACT;AAAA,EAEA,kBAAkB;AAChB,SAAK,mBAAmB;AAExB,QAAI,KAAK,UAAU,WAAW,GAAG;AAC/B,WAAK,YAAY,KAAK;AAAA,IACxB;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,YAAM,OAAO,KAAK,oBAAoB,KAAK,UAAU,CAAC,CAAC;AACvD,WAAK,UAAU,OAAO,IAAI;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,oBAAoB;AAClB,UAAM,gBAAgB,KAAK,GAAG,cAAc,cAAc,cAAc;AACxE,QAAI,cAAe,eAAc,gBAAgB,cAAa,kBAAkB,CAAC;AAAA,EACnF;AAAA,EAEA,sBAAsB;AACpB,UAAM,gBAAgB,KAAK,GAAG,cAAc,cAAc,cAAc;AACxE,QAAI,eAAe;AACjB,UAAI,KAAK,QAAQ;AACf,sBAAc,cAAc,KAAK,eAAe,OAAO,SAAS;AAAA,UAC7D,eAAc,gBAAgB;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,oBAAoB;AAClB,QAAI,KAAK,eAAe,WAAW,GAAG;AACpC,YAAM,QAAQ,KAAK,eAAe,CAAC;AACnC,WAAK,GAAG,QAAQ,MAAM,QAAgB,MAAM;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,SAAK,GAAG,cAAc,IAAI,MAAM,QAAQ,CAAC;AAEzC,QAAI,OAAO,KAAK,QAAQ,mBAAmB;AACzC,WAAK,QAAQ,eAAe,KAAK,MAAM,KAAK,cAAc;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiCA,aAAa,WAA+B,WAAgC,MAAM,OAAgB,MAAM;AACtG,SAAK,YAAY;AACjB,SAAK,QAAQ,OAAO;AACpB,QAAI,UAAU;AACZ,WAAK,iBAAiB,KAAK,UAAU;AAAA,QACnC,CAAC,SAAS,EAAE,SAAS,QAAe,KAAK,EAAE,MAAM;AAAA,MACnD;AAAA,IACF;AACA,QAAI,KAAK,QAAQ,eAAe;AAC9B,WAAK,gBAAgB;AAAA,IACvB,OAAO;AACL,WAAK,kBAAkB;AAAA,IACzB;AACA,QAAI,KAAM,MAAK,KAAK;AACpB,SAAK,oBAAoB;AACzB,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,SAA6B;AACrC,SAAK,iBAAiB;AACtB,SAAK,oBAAoB;AACzB,QAAI,CAAC,KAAK,QAAQ,eAAe;AAC/B,WAAK,kBAAkB;AAAA,IACzB;AACA,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,IAAqB;AAChC,UAAM,QAAQ,KAAK,UAAU,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE;AACzD,QAAI,CAAC,MAAO;AAIZ,QAAI,KAAK,QAAQ,eAAe;AAG9B,UAAI,EAAE,KAAK,eAAe;AAAA,QACxB,CAAC,kBAAkB,cAAc,OAAO,MAAM;AAAA,MAChD,EAAE,UAAU,GAAI,MAAK,eAAe,KAAK,KAAK;AAAA,UACzC,MAAK,iBAAiB,KAAK,eAAe;AAAA,QAC7C,CAAC,kBAAkB,cAAc,OAAO,MAAM;AAAA,MAChD;AACA,WAAK,gBAAgB;AACrB,WAAK,GAAG,MAAM;AAAA,IAChB,OAAO;AAEL,WAAK,iBAAiB,CAAC,KAAK;AAC5B,WAAK,kBAAkB;AACvB,WAAK,mBAAmB;AACxB,WAAK,MAAM;AAAA,IACb;AACA,SAAK,oBAAoB;AACzB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,cAAc,KAAS;AACrB,UAAM,UAAU,KAAK,UAAU;AAAA,MAC7B,CAAC,SAAS,EAAE,IAAI,QAAe,KAAK,EAAE,MAAM;AAAA,IAC9C;AACA,QAAI,CAAC,QAAS;AACd,SAAK,iBAAiB;AACtB,SAAK,gBAAgB;AAAA,EACvB;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA9gBa,cAiFI,mBAAgC;AAjF1C,IAAM,eAAN;;;ACxBP,IAAMC,aAA0B;AAAA,EAC9B,MAAM,CAAC;AAAA,EACP,aAAa;AAAA,EACb,sBAAsB;AAAA,EACtB,gBAAgB;AAAA,EAChB,qBAAqB,CAAC;AAAA,EACtB,kBAAkB;AAAA,EAClB,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,cAAc;AAAA,EACd,cAAc;AAChB;AAEO,IAAM,SAAN,MAAM,eAAc,UAAwB;AAAA,EAajD,YAAY,IAAiB,SAAgC;AAC3D,UAAM,IAAI,SAAS,MAAK;AAiG1B,4BAAmB,CAAC,MAAkB;AACpC,YAAM,QAAsB,EAAE,OAAQ,QAAQ,OAAO;AACrD,YAAM,eAA6B,EAAE,OAAQ,UAAU,SAAS,OAAO;AACvE,UAAI,OAAO;AAIT,cAAM,QAAQ,KAAK,OAAO,QAAQ,KAAoB;AACtD,YAAI,QAAQ,EAAG;AACf,YAAI,cAAc;AAChB,eAAK,WAAW,KAAK;AACrB,eAAK,OAAO,MAAM;AAAA,QACpB,OAAO;AACL,eAAK,WAAW,KAAK;AAAA,QACvB;AAAA,MAEF,OAAO;AACL,aAAK,OAAO,MAAM;AAAA,MACpB;AAAA,IACF;AAqDA,6BAAoB,MAAM;AACxB,WAAK,GAAG,UAAU,IAAI,OAAO;AAAA,IAC/B;AAEA,4BAAmB,MAAM;AACvB,WAAK,GAAG,UAAU,OAAO,OAAO;AAAA,IAClC;AAEA,+BAAsB,CAAC,MAAqB;AAC1C,aAAM,WAAW;AACjB,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AAEpC,YAAI,KAAK,mBAAmB,KAAK,gBAAgB,KAAK,aAAa,QAAQ;AACzE;AAAA,QACF;AACA,UAAE,eAAe;AACjB,YAAI,CAAC,KAAK,mBAAoB,KAAK,mBAAmB,CAAC,KAAK,QAAQ,kBAAmB;AACrF,eAAK,QAAQ,EAAE,IAAI,KAAK,OAAO,MAAM,CAAC;AAAA,QACxC;AACA,aAAK,OAAO,QAAQ;AAAA,MACtB,YACG,MAAM,KAAK,UAAU,SAAS,EAAE,GAAG,KAAK,MAAM,KAAK,WAAW,SAAS,EAAE,GAAG,MAC7E,KAAK,OAAO,UAAU,MACtB,KAAK,UAAU,QACf;AACA,UAAE,eAAe;AACjB,aAAK,WAAW,KAAK,UAAU,SAAS,CAAC;AAAA,MAC3C;AAAA,IACF;AApME,SAAK,GAAG,kBAAkB,IAAI;AAE9B,SAAK,UAAU;AAAA,MACb,GAAG,OAAM;AAAA,MACT,GAAG;AAAA,IACL;AAEA,SAAK,GAAG,UAAU,IAAI,OAAO;AAC7B,SAAK,YAAY,CAAC;AAClB,SAAK,SAAS,CAAC;AAGf,QAAI,KAAK,QAAQ,KAAK,QAAQ;AAC5B,WAAK,YAAY,KAAK,QAAQ;AAC9B,WAAK,aAAa;AAAA,IACpB;AAGA,QAAI,KAAK,QAAQ,gBAAgB;AAC/B,WAAK,GAAG,UAAU,IAAI,aAAa;AACnC,WAAK,YAAY;AACjB,WAAK,oBAAoB;AAEzB,WAAK,GAAG,OAAO,KAAK,MAAM;AAAA,IAC5B;AAGA,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,WAAW,WAAW;AACpB,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAiC,CAAC,GACjB;AACjB,WAAO,MAAM,KAAK,KAAK,SAAS,MAAK;AAAA,EACvC;AAAA,EAEA,OAAO,YAAY,IAAwB;AACzC,WAAO,GAAG,kBAAkB;AAAA,EAC9B;AAAA,EAEA,UAAU;AACR,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU;AACR,QAAI,KAAK,QAAQ,gBAAgB;AAC/B,WAAK,qBAAqB;AAAA,IAC5B;AACA,SAAK,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;AACrC,SAAK,SAAS,CAAC;AACf,SAAK,GAAG,kBAAkB,IAAI;AAAA,EAChC;AAAA,EAEA,sBAAsB;AACpB,SAAK,GAAG,iBAAiB,SAAS,KAAK,gBAAgB;AAEvD,aAAS,iBAAiB,WAAW,OAAM,mBAAmB;AAC9D,aAAS,iBAAiB,SAAS,OAAM,iBAAiB;AAC1D,SAAK,GAAG,iBAAiB,QAAQ,OAAM,kBAAkB,IAAI;AAC7D,SAAK,OAAO,iBAAiB,SAAS,KAAK,iBAAiB;AAC5D,SAAK,OAAO,iBAAiB,QAAQ,KAAK,gBAAgB;AAC1D,SAAK,OAAO,iBAAiB,WAAW,KAAK,mBAAmB;AAAA,EAClE;AAAA,EAEA,uBAAuB;AACrB,SAAK,GAAG,oBAAoB,SAAS,KAAK,gBAAgB;AAC1D,aAAS,oBAAoB,WAAW,OAAM,mBAAmB;AACjE,aAAS,oBAAoB,SAAS,OAAM,iBAAiB;AAC7D,SAAK,GAAG,oBAAoB,QAAQ,OAAM,kBAAkB,IAAI;AAChE,SAAK,OAAO,oBAAoB,SAAS,KAAK,iBAAiB;AAC/D,SAAK,OAAO,oBAAoB,QAAQ,KAAK,gBAAgB;AAC7D,SAAK,OAAO,oBAAoB,WAAW,KAAK,mBAAmB;AAAA,EACrE;AAAA,EAuBA,OAAO,oBAAoB,GAAkB;AAC3C,WAAM,WAAW;AACjB,UAAM,QAAsB,EAAE,OAAQ,QAAQ,QAAQ;AACtD,UAAM,eAAe,EAAE,UAAU;AAGjC,UAAM,MAAoB,EAAE,OAAQ;AACpC,QAAI,QAAQ,WAAW,QAAQ,cAAc,CAAC,aAAc;AAE5D,UAAM,YAAmB,MAAM,kBAAkB;AACjD,QAAI,CAAC,UAAW;AAEhB,QAAI,MAAM,KAAK,UAAU,SAAS,EAAE,GAAG,KAAK,MAAM,KAAK,OAAO,SAAS,EAAE,GAAG,GAAG;AAC7E,QAAE,eAAe;AACjB,UAAI,cAAc,UAAU,UAAU;AACtC,UAAI,UAAU,eAAe;AAC3B,cAAM,QAAQ,UAAU,OAAO,QAAQ,UAAU,aAAa;AAC9D,kBAAU,WAAW,KAAK;AAC1B,kBAAU,gBAAgB;AAE1B,sBAAc,KAAK,IAAI,QAAQ,GAAG,CAAC;AAAA,MACrC;AACA,UAAI,UAAU,UAAU,OAAQ,WAAU,WAAW,WAAW;AAAA,UAC3D,WAAU,OAAO,MAAM;AAAA,IAC9B,WAAW,MAAM,KAAK,WAAW,SAAS,EAAE,GAAG,GAAG;AAChD,UAAI,UAAU,eAAe;AAC3B,cAAM,cAAc,UAAU,OAAO,QAAQ,UAAU,aAAa,IAAI;AACxE,YAAI,cAAc,EAAG;AACrB,kBAAU,WAAW,WAAW;AAAA,MAClC;AAAA,IACF,WAAW,MAAM,KAAK,YAAY,SAAS,EAAE,GAAG,GAAG;AACjD,UAAI,UAAU,eAAe;AAC3B,cAAM,cAAc,UAAU,OAAO,QAAQ,UAAU,aAAa,IAAI;AACxE,YAAI,eAAe,UAAU,UAAU,OAAQ,WAAU,OAAO,MAAM;AAAA,YACjE,WAAU,WAAW,WAAW;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,oBAAoB;AACzB,WAAM,WAAW;AAAA,EACnB;AAAA,EAEA,OAAO,iBAAiB,GAAU;AAChC,QAAI,CAAC,OAAM,YAAY,SAAS,QAAQ;AACtC,YAAM,QAAsB,EAAE,OAAQ,QAAQ,QAAQ;AACtD,YAAM,YAAmB,QAAQ,kBAAkB;AACnD,UAAI,UAAW,WAAU,gBAAgB;AAAA,IAC3C;AAAA,EACF;AAAA,EAgCA,YAAY,MAAgC;AAC1C,QAAI,CAAC,KAAK,GAAI;AACd,UAAM,eAAe,SAAS,cAAc,KAAK;AACjD,iBAAa,UAAU,IAAI,MAAM;AACjC,iBAAa,YAAY,KAAK,QAAgB,KAAK;AAEnD,QAAI,KAAK,OAAO;AACd,YAAM,MAAM,SAAS,cAAc,KAAK;AACxC,UAAI,aAAa,OAAO,KAAK,KAAK;AAClC,mBAAa,aAAa,KAAK,aAAa,UAAU;AAAA,IACxD;AACA,QAAI,KAAK,QAAQ,gBAAgB;AAC/B,mBAAa,aAAa,YAAY,GAAG;AACzC,YAAM,YAAY,SAAS,cAAc,GAAG;AAC5C,gBAAU,UAAU,IAAI,KAAK,QAAQ,gBAAgB,OAAO;AAC5D,gBAAU,YAAY;AACtB,mBAAa,YAAY,SAAS;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,eAAe;AACb,SAAK,SAAS,CAAC;AACf,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,YAAM,WAAW,KAAK,YAAY,KAAK,UAAU,CAAC,CAAC;AACnD,WAAK,GAAG,YAAY,QAAQ;AAC5B,WAAK,OAAO,KAAK,QAAQ;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,qBAAqB;AACnB,SAAK,QAAQ,oBAAoB,iBAAiB,CAAC,UAAU;AAC3D,UAAI,MAAM,SAAS;AACjB,aAAK,QAAQ;AAAA,UACX,IAAI,MAAM,CAAC,EAAE;AAAA,UACb,MAAM,MAAM,CAAC,EAAE;AAAA,UACf,OAAO,MAAM,CAAC,EAAE;AAAA,QAClB,CAAC;AACH,WAAK,OAAO,QAAQ;AACpB,WAAK,OAAO,MAAM;AAAA,IACpB;AACA,SAAK,eAAe,aAAa,KAAK,KAAK,QAAQ,KAAK,QAAQ,mBAAmB;AAAA,EACrF;AAAA,EAEA,cAAc;AACZ,SAAK,SAAS,KAAK,GAAG,cAAc,OAAO;AAC3C,QAAI,CAAC,KAAK,QAAQ;AAChB,WAAK,SAAS,SAAS,cAAc,OAAO;AAC5C,WAAK,GAAG,OAAO,KAAK,MAAM;AAAA,IAC5B;AACA,SAAK,OAAO,UAAU,IAAI,OAAO;AACjC,SAAK,kBAAkB,OAAO,KAAK,KAAK,QAAQ,mBAAmB,EAAE,SAAS;AAE9E,QAAI,KAAK,gBAAiB,MAAK,mBAAmB;AAClD,SAAK,gBAAgB;AAErB,QAAI,CAAC,KAAK,OAAO,aAAa,IAAI,EAAG,MAAK,OAAO,aAAa,MAAM,MAAM,KAAK,CAAC;AAAA,EAClF;AAAA,EAEA,cAAc;AACZ,SAAK,SAAS,KAAK,GAAG,cAAc,OAAO;AAE3C,QAAI,KAAK,UAAU,KAAK,OAAQ,MAAK,OAAO,aAAa,OAAO,KAAK,OAAO,aAAa,IAAI,CAAC;AAAA,EAChG;AAAA,EAEA,kBAAkB;AAChB,QAAI,KAAK,cAAc,UAAa,CAAC,KAAK,UAAU,UAAU,KAAK,QAAQ,aAAa;AACtF,WAAK,OAAO,cAAc,KAAK,QAAQ;AAAA,IACzC,YACG,KAAK,cAAc,UAAa,CAAC,CAAC,KAAK,UAAU,WAClD,KAAK,QAAQ,sBACb;AACA,WAAK,OAAO,cAAc,KAAK,QAAQ;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,oBAAoB,MAAgB;AAClC,UAAM,UAAU,CAAC,CAAC,KAAK;AACvB,UAAM,eAAe,CAAC,KAAK,UAAU,KAAK,CAAC,SAAS,KAAK,MAAM,KAAK,EAAE;AACtE,WAAO,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,MAAgB;AACtB,QAAI,CAAC,KAAK,oBAAoB,IAAI,KAAK,KAAK,UAAU,UAAU,KAAK,QAAQ,MAAO;AACpF,UAAM,eAAe,KAAK,YAAY,IAAI;AAC1C,SAAK,OAAO,KAAK,YAAY;AAC7B,SAAK,UAAU,KAAK,IAAI;AAExB,SAAK,OAAO,OAAO,YAAY;AAC/B,SAAK,gBAAgB;AAErB,QAAI,OAAO,KAAK,QAAQ,cAAc,YAAY;AAChD,WAAK,QAAQ,UAAU,KAAK,IAAI,YAAY;AAAA,IAC9C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,WAAmB;AAC5B,UAAM,OAAO,KAAK,OAAO,SAAS;AAClC,QAAI,CAAC,KAAM;AACX,SAAK,OAAO;AACZ,SAAK,OAAO,OAAO,WAAW,CAAC;AAC/B,SAAK,UAAU,OAAO,WAAW,CAAC;AAClC,SAAK,gBAAgB;AAErB,QAAI,OAAO,KAAK,QAAQ,iBAAiB,YAAY;AACnD,WAAK,QAAQ,aAAa,KAAK,IAAI,IAAI;AAAA,IACzC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,WAAmB;AAC5B,UAAM,OAAO,KAAK,OAAO,SAAS;AAClC,QAAI,CAAC,KAAM;AACX,SAAK,gBAAgB;AACrB,SAAK,MAAM;AAEX,QAAI,OAAO,KAAK,QAAQ,iBAAiB,YAAY;AACnD,WAAK,QAAQ,aAAa,KAAK,IAAI,IAAI;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,OAAO,OAAO;AAKZ,UAAM,gBAAgB,MAAM;AAC1B,YAAM,QAAQ,SAAS,iBAAiB,QAAQ;AAChD,YAAM,QAAQ,CAAC,OAAO;AACpB,WAAG,iBAAiB,SAAS,CAAC,MAAM;AAClC,cAAI,GAAG,kBAAkB,EAAG;AAC5B,cAAkB,EAAE,OAAQ,UAAU,SAAS,OAAO,GAAG;AACvD,kBAAM,OAAqB,EAAE,OAAQ,QAAQ,OAAO;AACpD,gBAAI,KAAM,MAAK,OAAO;AAAA,UACxB;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAKF;AAFI,OAAM,WAAW;AA7Wd,IAAM,QAAN;;;ACrFP,IAAMC,aAA0B,CAAC;AAE1B,IAAM,QAAN,MAAM,eAAc,UAAwB;AAAA,EAMjD,YAAY,IAAsB,SAAgC;AAChE,UAAM,IAAI,SAAS,MAAK;AAsF1B,8BAAqB,MAAM;AACzB,WAAK,MAAM;AACX,WAAK,MAAM,UAAU,IAAI,QAAQ;AAAA,IACnC;AAEA,2CAAkC,CAAC,MAA+B;AAChE,WAAK,aAAa;AAClB,WAAK,GAAG,UAAU,IAAI,QAAQ;AAC9B,WAAK,MAAM;AACX,UAAI,EAAE,SAAS,SAAS;AACtB,aAAK,MAAM,UAAU,IAAI,QAAQ;AAAA,MACnC;AAAA,IACF;AAEA,+CAAsC,MAAM;AAC1C,UAAI,KAAK,YAAY;AACnB,aAAK,MAAM;AACX,aAAK,MAAM,UAAU,IAAI,QAAQ;AAAA,MACnC;AAAA,IACF;AAEA,uCAA8B,MAAM;AAClC,WAAK,aAAa;AAClB,WAAK,GAAG,UAAU,OAAO,QAAQ;AAAA,IACnC;AAEA,8CAAqC,MAAM;AACzC,UAAI,CAAC,KAAK,YAAY;AACpB,aAAK,MAAM,UAAU,OAAO,QAAQ;AAAA,MACtC;AAAA,IACF;AAnHE,SAAK,GAAG,kBAAkB,IAAI;AAE9B,SAAK,UAAU;AAAA,MACb,GAAG,OAAM;AAAA,MACT,GAAG;AAAA,IACL;AAEA,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,MAAM;AACX,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAAyB;AAClC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,OAAO,KACL,KACA,UAAiC,CAAC,GACjB;AACjB,WAAO,MAAM,KAAK,KAAK,SAAS,MAAK;AAAA,EACvC;AAAA,EAEA,OAAO,YAAY,IAA6B;AAC9C,WAAO,GAAG,kBAAkB;AAAA,EAC9B;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,aAAa;AAClB,SAAK,GAAG,kBAAkB,IAAI;AAAA,EAChC;AAAA,EAEA,sBAAsB;AACpB,SAAK,GAAG,iBAAiB,UAAU,KAAK,kBAAkB;AAC1D,SAAK,GAAG,iBAAiB,aAAa,KAAK,+BAA+B;AAC1E,SAAK,GAAG,iBAAiB,cAAc,KAAK,+BAA+B;AAC3E,SAAK,GAAG,iBAAiB,SAAS,KAAK,mCAAmC;AAC1E,SAAK,GAAG,iBAAiB,aAAa,KAAK,mCAAmC;AAE9E,SAAK,GAAG,iBAAiB,aAAa,KAAK,qCAAqC;AAAA,MAC9E,SAAS;AAAA,IACX,CAAC;AACD,SAAK,GAAG,iBAAiB,WAAW,KAAK,2BAA2B;AACpE,SAAK,GAAG,iBAAiB,YAAY,KAAK,2BAA2B;AACrE,SAAK,GAAG,iBAAiB,QAAQ,KAAK,kCAAkC;AACxE,SAAK,GAAG,iBAAiB,YAAY,KAAK,kCAAkC;AAC5E,SAAK,GAAG,iBAAiB,cAAc,KAAK,kCAAkC;AAAA,EAChF;AAAA,EAEA,uBAAuB;AACrB,SAAK,GAAG,oBAAoB,UAAU,KAAK,kBAAkB;AAC7D,SAAK,GAAG,oBAAoB,aAAa,KAAK,+BAA+B;AAC7E,SAAK,GAAG,oBAAoB,cAAc,KAAK,+BAA+B;AAC9E,SAAK,GAAG,oBAAoB,SAAS,KAAK,mCAAmC;AAC7E,SAAK,GAAG,oBAAoB,aAAa,KAAK,mCAAmC;AACjF,SAAK,GAAG,oBAAoB,aAAa,KAAK,mCAAmC;AACjF,SAAK,GAAG,oBAAoB,WAAW,KAAK,2BAA2B;AACvE,SAAK,GAAG,oBAAoB,YAAY,KAAK,2BAA2B;AACxE,SAAK,GAAG,oBAAoB,QAAQ,KAAK,kCAAkC;AAC3E,SAAK,GAAG,oBAAoB,YAAY,KAAK,kCAAkC;AAC/E,SAAK,GAAG,oBAAoB,cAAc,KAAK,kCAAkC;AAAA,EACnF;AAAA,EAkCA,cAAc;AACZ,SAAK,QAAQ,SAAS,cAAc,MAAM;AAC1C,SAAK,QAAQ,SAAS,cAAc,MAAM;AAC1C,SAAK,MAAM,UAAU,IAAI,OAAO;AAChC,SAAK,MAAM,UAAU,IAAI,OAAO;AAChC,SAAK,MAAM,OAAO,KAAK,KAAK;AAC5B,SAAK,GAAG,MAAM,KAAK,KAAK;AAAA,EAC1B;AAAA,EAEA,eAAe;AACb,SAAK,MAAM,OAAO;AAAA,EACpB;AAAA,EAEA,cAAuB;AACrB,WAAO,CAAC,CAAC,KAAK,GAAG,QAAQ,WAAW;AAAA,EACtC;AAAA,EAEA,QAAQ;AACN,UAAM,MAAM,WAAW,KAAK,GAAG,aAAa,KAAK,CAAC,KAAK;AACvD,UAAM,MAAM,WAAW,KAAK,GAAG,aAAa,KAAK,CAAC,KAAK;AACvD,UAAM,MAAM,WAAW,KAAK,GAAG,KAAK,KAAK;AACzC,UAAM,UAAU,QAAQ,MAAM,KAAK,MAAM,QAAQ,MAAM;AAKvD,UAAM,OAAO,KAAK,GAAG;AACrB,UAAM,MAAM,KAAK,GAAG;AACpB,UAAM,QAAQ,KAAK,GAAG;AACtB,UAAM,SAAS,KAAK,GAAG;AAEvB,SAAK,GAAG,MAAM,YAAY,oCAAoC,GAAG,UAAU,GAAG,GAAG;AACjF,SAAK,MAAM,cAAc,KAAK,GAAG;AACjC,QAAI,KAAK,YAAY,GAAG;AACtB,WAAK,MAAM,MAAM,OAAO,GAAG,OAAO,QAAQ,CAAC;AAC3C,WAAK,MAAM,MAAM,MAAM,GAAG,OAAO,IAAI,WAAW,MAAM;AAAA,IACxD,OAAO;AACL,WAAK,MAAM,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK;AACjD,WAAK,MAAM,MAAM,MAAM,GAAG,GAAG;AAAA,IAC/B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,OAAO;AAGZ,UAAM,gBAAgB,MAAM;AAC1B,aAAM,KAAK,SAAS,iBAAiB,mBAAmB,GAAmC,CAAC,CAAC;AAAA,IAC/F,CAAC;AAAA,EACH;AACF;;;ACvLO,IAAM,QAAN,MAAM,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMjB,OAAO,cAAc,WAA6B;AAChD,QAAI,CAAC,WAAW;AACd,cAAQ,MAAM,6BAA6B;AAC3C;AAAA,IACF;AAEA,UAAM,YAAY,UAAU,aAAa,aAAa,MAAM;AAC5D,UAAM,UAAU,SAAS,UAAU,aAAa,aAAa,CAAC;AAC9D,UAAM,MAAM,UAAU,MAAM;AAE5B,QACE,QAAQ,KACR,UAAU,SAAS,aAAa,SAChC,CAAC,UAAU,YACX,UAAU,UAAU,SAAS,UAAU,GACvC;AACA,gBAAU,UAAU,OAAO,SAAS;AAAA,IACtC,WAAW,UAAU,UAAU,SAAS,UAAU,GAAG;AAEnD,UACG,UAAU,SAAS,SAAS,aAAa,OAAO,WAChD,UAAU,SAAS,SAAS,CAAC,WAC9B;AACA,kBAAU,UAAU,OAAO,SAAS;AAAA,MACtC,OAAO;AACL,kBAAU,UAAU,IAAI,SAAS;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,mBAAmB,GAAgB;AACxC,UAAM,WAAW;AACjB,QAAI,CAAC,SAAU;AAaf,QAAI,CAAC,SAAS,aAAa,iBAAiB,GAAG;AAC7C,eAAS,aAAa,mBAAmB,SAAS,sBAAsB,EAAE,OAAO,SAAS,CAAC;AAAA,IAC7F;AACA,UAAM,iBAAiB,SAAS,SAAS,aAAa,iBAAiB,CAAC;AACxE,QAAI,MAAM,cAAc,EAAG;AAE3B,aAAS,MAAM,SAAS;AAExB,UAAM,UAAU,SAAS,eAAe,SAAS;AACjD,UAAM,gBAAgB,SAAS,eAAe;AAC9C,aAAS,MAAM,SAAS,KAAK,IAAI,gBAAgB,aAAa,IAAI;AAAA,EACpE;AAAA,EAEA,OAAO,OAAO;AACZ,UAAM,gBAAgB,MAAM;AAC1B,eAAS,iBAAiB,UAAU,CAAC,MAAqB;AACxD,cAAM,SAA2B,EAAE;AACnC,YAAI,kBAAkB,kBAAkB;AAKtC,iBAAM,cAAc,MAAM;AAAA,QAC5B;AAAA,MACF,CAAC;AAED,eAAS,iBAAiB,SAAS,CAAC,MAAqB;AACvD,cAAM,SAA2B,EAAE;AAEnC,YAAI,kBAAkB,oBAAoB,CAAC,SAAS,UAAU,EAAE,SAAS,OAAO,IAAI,GAAG;AAErF,cAAI,MAAM,KAAK,IAAI,SAAS,EAAE,GAAG,GAAG;AAClC,mBAAO,UAAU,IAAI,QAAQ;AAC7B,mBAAO,iBAAiB,QAAQ,MAAM,OAAO,UAAU,OAAO,QAAQ,GAAG;AAAA,cACvE,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,CAAC;AAED,eAAS,iBAAiB,sBAAsB,EAAE,QAAQ,CAAC,aAAkC;AAC3F,eAAM,aAAa,QAAQ;AAAA,MAC7B,CAAC;AAGD,eACG,iBAAiB,gCAAgC,EACjD,QAAQ,CAAC,cAAgC;AACxC,eAAM,kBAAkB,SAAS;AAAA,MACnC,CAAC;AAAA,IACL,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,aAAa,UAA+B;AAEjD,aAAS,aAAa,mBAAmB,SAAS,sBAAsB,EAAE,OAAO,SAAS,CAAC;AAC3F,WAAM,mBAAmB,QAAQ;AAIjC,aAAS,iBAAiB,SAAS,CAAC,MAAM,OAAM,mBAAmB,EAAE,MAAM,CAAC;AAAA,EAC9E;AAAA,EAEA,OAAO,kBAAkB,WAA6B;AACpD,cAAU,iBAAiB,UAAU,MAAM;AACzC,YAAM,YAAY,UAAU,QAAQ,aAAa;AACjD,YAAM,YAA8B,UAAU,cAAc,iBAAiB;AAC7E,YAAM,QAAQ,UAAU;AACxB,YAAM,YAAY,CAAC;AACnB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,kBAAU,KAAK,MAAM,CAAC,EAAE,IAAI;AAAA,MAC9B;AACA,gBAAU,QAAQ,UAAU,KAAK,IAAI;AACrC,gBAAU;AAAA,QACR,IAAI,MAAM,UAAU,EAAE,SAAS,MAAM,YAAY,MAAM,UAAU,KAAK,CAAC;AAAA,MACzE;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC3HO,IAAM,QAAN,MAAM,OAAM;AAAA,EACjB,OAAe,QAAQ,IAAiB;AACtC,UAAM,MAAM,GAAG,sBAAsB;AACrC,UAAM,UAAU,SAAS;AACzB,WAAO;AAAA,MACL,KAAK,IAAI,MAAM,OAAO,cAAc,QAAQ;AAAA,MAC5C,MAAM,IAAI,OAAO,OAAO,cAAc,QAAQ;AAAA,IAChD;AAAA,EACF;AAAA;AAAA,EAIA,OAAO,iBACL,eACA,WAA4B,MAC5B,QAAyB,MACnB;AACN,UAAM,aAAa,aAAa;AAChC,UAAM,WAAW;AACjB,QAAI,gBAAwB;AAC5B,UAAM,gBAAgB,SAAU,WAAmB;AACjD,UAAI,CAAC,gBAAgB;AACnB,yBAAiB;AAAA,MACnB;AACA,YAAM,QAAQ,YAAY;AAC1B,UAAI,QAAQ,UAAU;AACpB,cAAM,SAAU,QAAQ,YAAa,IAAI,QAAQ;AACjD,cAAM,SAAS,aACX,sBACA,aAAa,SAAS,CAAC,MAAM,SAAS,CAAC;AAC3C,cAAM,YAAY,QAAQ,OAAO,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,OAAO,IAAI,OAAO;AAClG,cAAM,OAAO,KAAK,SAAS;AAC3B,sBAAc,MAAM,kBAClB,qBACA,SACA,OACA,YACA,MACA,OACA,mBACA,OACA;AACF,yBAAiB,OAAO,sBAAsB,aAAa;AAAA,MAC7D,OAAO;AACL,sBAAc,MAAM,kBAAkB;AACtC,eAAO,qBAAqB,cAAc;AAAA,MAC5C;AAAA,IACF;AACA,qBAAiB,OAAO,sBAAsB,aAAa;AAAA,EAC7D;AAAA,EAEA,OAAO,OAAO;AACZ,UAAM,gBAAgB,MAAM;AAC1B,eAAS,KAAK,iBAAiB,SAAS,CAAC,MAAM;AAC7C,cAAM,UAAuB,EAAE;AAC/B,cAAM,KAAkB,QAAQ,QAAQ,eAAe;AACvD,YAAI,MAAM,GAAG,SAAS,OAAO,GAAG;AAC9B,gBAAM,aAAa,GAAG,UAAU,SAAS,cAAc;AACvD,gBAAM,SAAS,OAAM,QAAQ,EAAE;AAC/B,gBAAM,IAAI,EAAE,QAAQ,OAAO;AAC3B,gBAAM,IAAI,EAAE,QAAQ,OAAO;AAE3B,cAAI,QAAQ;AACZ,cAAI,GAAG,UAAU,SAAS,aAAa,EAAG,SAAQ,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI;AAE3E,iBAAM,iBAAiB,IAAI,aAAa,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK;AAAA,QAChE;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;AC9DA,IAAMC,aAAyC;AAAA,EAC7C,WAAW;AAAA,EACX,cAAc;AAAA,EACd,gBAAgB;AAClB;AAEO,IAAM,uBAAN,MAAM,8BACH,UAEV;AAAA,EAmBE,YAAY,IAAiB,SAA+C;AAC1E,UAAM,IAAI,SAAS,qBAAoB;AATzC;AAAA,SAAQ,YAAgC;AAyGxC,2BAAkB,MAAM;AACtB,WAAK,iBAAiB;AAAA,IAC1B;AAEE,8BAAqB,CAAC,MAAM;AAC1B,UAAG,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACnC,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAEA,4BAAmB,MAAM;AACvB,UAAI,KAAK,QAAQ;AACf,aAAK,MAAM;AAAA,MACb,OAAO;AACL,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAEA,gCAAuB,CAAC,MAAkB;AACxC,YAAM,OAAO,EAAE;AACf,UAAI,SAAS,KAAK,MAAO,MAAK,MAAM;AAAA,IACtC;AAKA;AAAA;AAAA;AAAA,gBAAO,MAAY;AACjB,UAAI,KAAK,OAAQ;AACjB,UAAI,KAAK,QAAQ,eAAgB,MAAK,kBAAkB;AAAA,UACnD,MAAK,cAAc;AACxB,WAAK,SAAS;AAAA,IAChB;AAKA;AAAA;AAAA;AAAA,iBAAQ,MAAY;AAClB,UAAI,CAAC,KAAK,OAAQ;AAClB,UAAI,KAAK,QAAQ,gBAAgB;AAC/B,eAAO,oBAAoB,UAAU,KAAK,OAAO,IAAI;AACrD,iBAAS,KAAK,oBAAoB,SAAS,KAAK,sBAAsB,IAAI;AAC1E,aAAK,mBAAmB;AAAA,MAC1B,OAAO;AACL,aAAK,eAAe;AAAA,MACtB;AACA,WAAK,SAAS;AAAA,IAChB;AA7IE,SAAK,GAAG,iCAAiC,IAAI;AAE7C,SAAK,UAAU;AAAA,MACb,GAAG,sBAAqB;AAAA,MACxB,GAAG;AAAA,IACL;AAEA,SAAK,SAAS;AACd,SAAK,UAAU,KAAK,GAAG,cAAc,WAAW;AAChD,SAAK,QAAQ,KAAK,GAAG,cAAc,IAAI;AACvC,SAAK,gBAAgB,MAAM,KAAK,KAAK,GAAG,iBAAiB,kBAAkB,CAAC;AAC5E,SAAK,uBAAuB,KAAK,cAAc,QAAQ;AACvD,SAAK,UAAU;AACf,SAAK,UAAU;AAEf,SAAK,GAAG,UAAU,IAAI,aAAa,KAAK,QAAQ,SAAS,EAAE;AAC3D,QAAI,KAAK,QAAS,MAAK,QAAQ,WAAW;AAC1C,QAAI,KAAK,MAAO,MAAK,MAAM,eAAe;AAC1C,QAAI,KAAK,QAAQ,cAAc;AAC7B,WAAK,UAAU;AAAA,aACR,KAAK,QAAQ,cAAc;AAClC,WAAK,UAAU;AAAA,aACR,KAAK,QAAQ,cAAc;AAClC,WAAK,UAAU;AAAA;AAEf,WAAK,UAAU;AACjB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAAW;AACpB,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBA,OAAO,KACL,KACA,UAAgD,CAAC,GACF;AAC/C,WAAO,MAAM,KAAK,KAAK,SAAS,qBAAoB;AAAA,EACtD;AAAA,EAEA,OAAO,YAAY,IAAuC;AACxD,WAAO,GAAG,iCAAiC;AAAA,EAC7C;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAG1B,SAAK,MAAM;AACX,SAAK,GAAG,iCAAiC,IAAI;AAAA,EAC/C;AAAA,EAEA,sBAAsB;AACpB,QAAI,KAAK,QAAQ,gBAAgB,CAAC,KAAK,QAAQ,gBAAgB;AAC7D,WAAK,GAAG,iBAAiB,cAAc,KAAK,IAAI;AAChD,WAAK,GAAG,iBAAiB,cAAc,KAAK,KAAK;AAAA,IACnD,OAAO;AACL,WAAK,GAAG,iBAAiB,SAAS,KAAK,eAAe;AAAA,IACxD;AACA,SAAK,GAAG,iBAAiB,YAAY,KAAK,kBAAkB;AAAA,EAC9D;AAAA,EAEA,uBAAuB;AACrB,QAAI,KAAK,QAAQ,gBAAgB,CAAC,KAAK,QAAQ,gBAAgB;AAC7D,WAAK,GAAG,oBAAoB,cAAc,KAAK,IAAI;AACnD,WAAK,GAAG,oBAAoB,cAAc,KAAK,KAAK;AAAA,IACtD,OAAO;AACL,WAAK,GAAG,oBAAoB,SAAS,KAAK,eAAe;AAAA,IAC3D;AACA,SAAK,GAAG,oBAAoB,YAAY,KAAK,kBAAkB;AAAA,EACjE;AAAA,EAkDA,gBAAgB;AACd,SAAK,GAAG,UAAU,IAAI,QAAQ;AAC9B,QAAI,KAAK,MAAO,MAAK,MAAM,eAAe;AAC1C,UAAM,iBAAiB;AACvB,UAAM,WAAW;AAEjB,SAAK,qBAAqB,QAAQ,CAAC,IAAI,UAAU;AAC/C,YAAM,QAAQ,iBAAiB;AAC/B,SAAG,MAAM,aAAa;AACtB,SAAG,MAAM,UAAU;AACnB,SAAG,MAAM,YAAY,aAAa,KAAK,OAAO,OAAO,KAAK,OAAO;AACjE,iBAAW,MAAM;AAEf,WAAG,MAAM,UAAU;AAEnB,mBAAW,MAAM;AAEf,aAAG,MAAM,aAAa,WAAW,QAAQ,sBAAsB,QAAQ;AACvE,aAAG,MAAM,UAAU;AACnB,aAAG,MAAM,YAAY;AACrB,aAAG,WAAW;AAAA,QAChB,GAAG,CAAC;AAAA,MACN,GAAG,KAAK;AAAA,IACV,CAAC;AAAA,EACH;AAAA,EAEA,iBAAiB;AACf,UAAM,WAAW;AACjB,eAAW,MAAM;AACf,WAAK,GAAG,UAAU,OAAO,QAAQ;AACjC,UAAI,KAAK,MAAO,MAAK,MAAM,eAAe;AAAA,IAC5C,GAAG,QAAQ;AACX,SAAK,qBAAqB,QAAQ,CAAC,OAAO;AACxC,SAAG,MAAM,aAAa,WAAW,QAAQ,sBAAsB,QAAQ;AAEvE,SAAG,MAAM,UAAU;AACnB,SAAG,MAAM,YAAY,aAAa,KAAK,OAAO,OAAO,KAAK,OAAO;AACjE,SAAG,WAAW;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,oBAAoB;AAClB,UAAM,cAAc,OAAO;AAC3B,UAAM,eAAe,OAAO;AAC5B,UAAM,UAAU,KAAK,GAAG,sBAAsB;AAC9C,UAAM,WAAW,iBAAiB,KAAK,OAAO,EAAE;AAMhD,UAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,aAAS,UAAU,IAAI,cAAc;AACrC,aAAS,MAAM,kBAAkB;AACjC,SAAK,QAAQ,OAAO,QAAQ;AAC5B,SAAK,YAAY;AACjB,UAAM,gBAAgB,SAAS;AAC/B,UAAM,cAAc,gBAAgB,IAAI,cAAc,gBAAgB;AAEtE,SAAK,UAAU,QAAQ,OAAO,cAAc,IAAI,QAAQ,QAAQ;AAChE,SAAK,UAAU,eAAe,QAAQ;AACtC,SAAK,YAAY,QAAQ;AACzB,SAAK,UAAU,QAAQ;AACvB,SAAK,WAAW,QAAQ;AAGxB,SAAK,GAAG,UAAU,IAAI,QAAQ;AAC9B,SAAK,GAAG,MAAM,YAAY;AAC1B,SAAK,GAAG,MAAM,QAAQ;AACtB,SAAK,GAAG,MAAM,SAAS;AACvB,SAAK,GAAG,MAAM,OAAO;AACrB,SAAK,GAAG,MAAM,YAAY,gBAAgB,KAAK,UAAU;AACzD,SAAK,GAAG,MAAM,aAAa;AAC3B,QAAI,KAAK,MAAO,MAAK,MAAM,eAAe;AAG1C,SAAK,QAAQ,MAAM,YAAY,cAAc,KAAK,OAAO;AACzD,SAAK,QAAQ,MAAM,aAAa;AAEhC,eAAW,MAAM;AACf,WAAK,GAAG,MAAM,YAAY;AAC1B,WAAK,GAAG,MAAM,aACZ;AAEF,WAAK,QAAQ,MAAM,WAAW;AAC9B,WAAK,QAAQ,MAAM,YAAY;AAC/B,WAAK,QAAQ,MAAM,aAAa;AAEhC,iBAAW,MAAM;AACf,aAAK,GAAG,MAAM,WAAW;AACzB,aAAK,GAAG,MAAM,kBAAkB;AAEhC,iBAAS,MAAM,YAAY,WAAW,cAAc;AACpD,iBAAS,MAAM,aAAa;AAE5B,aAAK,MAAM,iBAAiB,QAAQ,EAAE,QAAQ,CAAC,MAAyB;AACtE,YAAE,MAAM,UAAU;AAClB,YAAE,WAAW;AAAA,QACf,CAAC;AAGD,eAAO,iBAAiB,UAAU,KAAK,OAAO,IAAI;AAClD,iBAAS,KAAK,iBAAiB,SAAS,KAAK,sBAAsB,IAAI;AAAA,MACzE,GAAG,GAAG;AAAA,IACR,GAAG,CAAC;AAAA,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,qBAAqB;AACnB,UAAM,WAAW,KAAK;AACtB,SAAK,YAAY;AAEjB,SAAK,OAAO,iBAAiB,QAAQ,EAAE,QAAQ,CAAC,MAAyB;AACvE,QAAE,MAAM,UAAU;AAClB,QAAE,WAAW;AAAA,IACf,CAAC;AAED,QAAI,UAAU;AACZ,eAAS,MAAM,aAAa;AAC5B,eAAS,MAAM,YAAY;AAAA,IAC7B;AAEA,SAAK,GAAG,MAAM,WAAW;AACzB,SAAK,GAAG,MAAM,kBAAkB;AAChC,SAAK,GAAG,MAAM,aAAa;AAC3B,SAAK,GAAG,MAAM,YAAY,cAAc,KAAK,OAAO;AACpD,SAAK,QAAQ,MAAM,aAAa;AAChC,SAAK,QAAQ,MAAM,YAAY,cAAc,KAAK,OAAO;AAEzD,eAAW,MAAM;AACf,gBAAU,OAAO;AACjB,WAAK,GAAG,UAAU,OAAO,QAAQ;AACjC,UAAI,KAAK,MAAO,MAAK,MAAM,eAAe;AAE1C,WAAK,GAAG,MAAM,YAAY;AAC1B,WAAK,GAAG,MAAM,QAAQ;AACtB,WAAK,GAAG,MAAM,SAAS;AACvB,WAAK,GAAG,MAAM,OAAO;AACrB,WAAK,GAAG,MAAM,YAAY;AAC1B,WAAK,GAAG,MAAM,aAAa;AAC3B,WAAK,QAAQ,MAAM,WAAW;AAC9B,WAAK,QAAQ,MAAM,YAAY;AAC/B,WAAK,QAAQ,MAAM,aAAa;AAAA,IAClC,GAAG,GAAG;AAAA,EACR;AACF;;;ACtSA,IAAMC,aAA6B;AAAA,EACjC,UAAU;AAAA;AAAA,EACV,MAAM;AAAA;AAAA,EACN,OAAO;AAAA;AAAA,EACP,SAAS;AAAA;AAAA,EACT,YAAY;AAAA;AAAA,EACZ,WAAW;AAAA;AAAA,EACX,YAAY;AAAA;AAAA,EACZ,QAAQ;AAAA;AAAA,EACR,WAAW;AAAA;AACb;AAEO,IAAM,WAAN,MAAM,kBAAiB,UAA2B;AAAA,EA8BvD,YAAY,IAAiB,SAAmC;AAC9D,UAAM,IAAI,SAAS,SAAQ;AAN7B;AAAA,kBAAiB;AAsJjB;AAAA;AAAA;AAAA,kCAAyB,MAAM,SAAS,MAAM,KAAK,cAAc,GAAG,GAAG;AAEvE,8BAAqB,CAAC,MAA+B;AAEnD,UAAI,EAAE,SAAS,eAA6B,EAAE,OAAQ,YAAY,OAAO;AACvE,UAAE,eAAe;AAAA,MACnB;AACA,WAAK,UAAU;AACf,WAAK,UAAU;AACf,WAAK,kBAAkB;AACvB,WAAK,YAAY,KAAK,MAAM,CAAC;AAC7B,WAAK,aAAa,KAAK,MAAM,CAAC;AAE9B,WAAK,WAAW,KAAK,YAAY;AACjC,WAAK,QAAQ,KAAK;AAClB,WAAK,YAAY,KAAK,IAAI;AAC1B,oBAAc,KAAK,MAAM;AACzB,WAAK,SAAS,YAAY,KAAK,QAAQ,GAAG;AAAA,IAC5C;AAEA,+BAAsB,CAAC,MAA+B;AACpD,UAAI,GAAW,GAAW,OAAe;AACzC,UAAI,KAAK,SAAS;AAChB,YAAI,KAAK,MAAM,CAAC;AAChB,YAAI,KAAK,MAAM,CAAC;AAChB,gBAAQ,KAAK,YAAY;AACzB,iBAAS,KAAK,IAAI,KAAK,aAAa,CAAC;AACrC,YAAI,SAAS,MAAM,CAAC,KAAK,iBAAiB;AAExC,cAAI,QAAQ,KAAK,QAAQ,IAAI;AAC3B,iBAAK,UAAU;AACf,iBAAK,YAAY;AACjB,iBAAK,QAAQ,KAAK,SAAS,KAAK;AAAA,UAClC;AAAA,QACF,WAAW,KAAK,SAAS;AAEvB,YAAE,eAAe;AACjB,YAAE,gBAAgB;AAClB,iBAAO;AAAA,QACT,OAAO;AAEL,eAAK,kBAAkB;AAAA,QACzB;AAAA,MACF;AACA,UAAI,KAAK,SAAS;AAEhB,UAAE,eAAe;AACjB,UAAE,gBAAgB;AAClB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,kCAAyB,CAAC,MAA+B;AACvD,UAAI,KAAK,SAAS;AAChB,aAAK,UAAU;AAAA,MACjB,OAAO;AACL;AAAA,MACF;AACA,oBAAc,KAAK,MAAM;AACzB,WAAK,SAAS,KAAK;AACnB,UAAI,KAAK,WAAW,MAAM,KAAK,WAAW,KAAK;AAC7C,aAAK,YAAY,MAAM,KAAK;AAC5B,aAAK,SAAS,KAAK,SAAS,KAAK;AAAA,MACnC;AACA,WAAK,SAAS,KAAK,MAAM,KAAK,SAAS,KAAK,GAAG,IAAI,KAAK;AAExD,UAAI,KAAK,QAAQ;AACf,YAAI,KAAK,UAAU,KAAK,OAAO,KAAK,QAAQ,IAAI;AAC9C,eAAK,SAAS,KAAK,OAAO,KAAK,QAAQ;AAAA,QACzC,WAAW,KAAK,SAAS,GAAG;AAC1B,eAAK,SAAS;AAAA,QAChB;AAAA,MACF;AACA,WAAK,YAAY,KAAK,SAAS,KAAK;AACpC,WAAK,YAAY,KAAK,IAAI;AAC1B,4BAAsB,KAAK,WAAW;AACtC,UAAI,KAAK,SAAS;AAChB,UAAE,eAAe;AACjB,UAAE,gBAAgB;AAAA,MACpB;AACA,aAAO;AAAA,IACT;AAEA,gCAAuB,CAAC,MAA+B;AAErD,UAAI,KAAK,SAAS;AAChB,UAAE,eAAe;AACjB,UAAE,gBAAgB;AAClB,eAAO;AAAA,MACT,WAAW,CAAC,KAAK,QAAQ,WAAW;AAClC,cAAM,cAA4B,EAAE,OAAQ,QAAQ,gBAAgB;AACpE,YAAI,CAAC,YAAa;AAClB,cAAM,eAAe,CAAC,GAAG,YAAY,WAAW,QAAQ,EAAE,QAAQ,WAAW;AAC7E,cAAM,OAAO,KAAK,MAAM,KAAK,MAAM,IAAI;AAEvC,YAAI,SAAS,GAAG;AACd,YAAE,eAAe;AACjB,YAAE,gBAAgB;AAAA,QACpB;AAEA,YAAI,eAAe,GAAG;AAEpB,cACG,EAAiB,UAAW,EAAE,OAAuB,sBAAsB,EAAE,OAC9E,KAAK,GAAG,cAAc,GACtB;AACA,iBAAK,KAAK;AAAA,UACZ,OAAO;AACL,iBAAK,KAAK;AAAA,UACZ;AAAA,QACF,OAAO;AACL,eAAK,SAAS,YAAY;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAEA,iCAAwB,CAAC,MAAa;AACpC,QAAE,gBAAgB;AAClB,WAAK,4BAA4B,CAAC;AAAA,IACpC;AAEA,oCAA2B,CAAC,MAAqB;AAC/C,QAAE,gBAAgB;AAClB,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,aAAK,4BAA4B,CAAC;AAAA,MACpC;AAAA,IACF;AAEA,uCAA8B,CAAC,MAAa;AAC1C,YAAM,YAA0B,EAAE,OAAQ,QAAQ,iBAAiB;AACnE,UAAI,WAAW;AACb,cAAM,QAAQ,CAAC,GAAG,UAAU,WAAW,QAAQ,EAAE,QAAQ,SAAS;AAClE,aAAK,SAAS,KAAK;AAAA,MACrB;AAAA,IACF;AAEA,yBAAgB,MAAM;AACpB,UAAI,KAAK,QAAQ,WAAW;AAC1B,cAAM,YAAY,KAAK,GAAG,cAAc,gBAAgB;AACxD,cAAM,aAAa,KAAK,GAAG,cAAc,uBAAuB;AAChE,YAAI,CAAC,aAAa,CAAC,WAAY;AAC/B,aAAK,YAAY,UAAU;AAC3B,aAAK,cAAc,WAAW;AAC9B,aAAK,MAAM,KAAK,YAAY,IAAI,KAAK,QAAQ;AAC7C,aAAK,SAAS,KAAK,SAAS,IAAI,KAAK;AACrC,aAAK,SAAS,KAAK;AACnB,aAAK,mBAAmB,IAAI;AAAA,MAC9B,OAAO;AACL,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAuDA,kBAAS,MAAM;AACb,YAAM,MAAc,KAAK,IAAI,GAC3B,UAAkB,MAAM,KAAK,WAC7B,QAAgB,KAAK,SAAS,KAAK,OACnC,IAAa,MAAO,SAAU,IAAI;AAGpC,WAAK,YAAY;AAEjB,WAAK,QAAQ,KAAK;AAElB,WAAK,WAAW,MAAM,IAAI,MAAM,KAAK;AAAA,IACvC;AAEA,uBAAc,MAAM;AAClB,UAAI,SAAiB;AACrB,UAAI,KAAK,WAAW;AAClB,kBAAU,KAAK,IAAI,IAAI,KAAK;AAC5B,gBAAQ,KAAK,YAAY,KAAK,IAAI,CAAC,UAAU,KAAK,QAAQ,QAAQ;AAClE,YAAI,QAAQ,KAAK,QAAQ,IAAI;AAC3B,eAAK,QAAQ,KAAK,SAAS,KAAK;AAChC,gCAAsB,KAAK,WAAW;AAAA,QACxC,OAAO;AACL,eAAK,QAAQ,KAAK,MAAM;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAtXE,SAAK,GAAG,qBAAqB,IAAI;AAEjC,SAAK,UAAU;AAAA,MACb,GAAG,UAAS;AAAA,MACZ,GAAG;AAAA,IACL;AAGA,SAAK,oBAAoB,KAAK,GAAG,iBAAiB,gBAAgB,EAAE,SAAS;AAC7E,SAAK,iBAAiB,KAAK,QAAQ,cAAc,KAAK;AACtD,SAAK,SAAS,KAAK,QAAQ,UAAU,CAAC,KAAK;AAC3C,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,SAAS,KAAK,SAAS;AAC5B,SAAK,SAAS,CAAC;AACf,UAAM,YAAY,KAAK,GAAG,cAAc,gBAAgB;AACxD,QAAI,CAAC,WAAW;AACd,cAAQ,MAAM,8CAA8C;AAC5D;AAAA,IACF;AACA,SAAK,YAAY,UAAU;AAC3B,SAAK,aAAa,UAAU;AAC5B,SAAK,MAAM,KAAK,YAAY,IAAI,KAAK,QAAQ,WAAW;AAGxD,QAAI,KAAK,QAAQ,WAAW;AAC1B,WAAK,QAAQ,OAAO;AACpB,WAAK,mBAAmB;AAGxB,UAAI,KAAK,gBAAgB;AACvB,aAAK,GAAG,cAAc,sBAAsB,GAAG,UAAU,IAAI,iBAAiB;AAAA,MAChF;AAAA,IACF;AAGA,SAAK,cAAc,SAAS,cAAc,IAAI;AAC9C,SAAK,YAAY,UAAU,IAAI,YAAY;AAE3C,SAAK,GAAG,iBAAiB,gBAAgB,EAAE,QAAQ,CAAC,MAAmB,MAAM;AAC3E,WAAK,OAAO,KAAK,IAAI;AACrB,UAAI,KAAK,gBAAgB;AACvB,cAAM,YAAY,SAAS,cAAc,IAAI;AAC7C,kBAAU,UAAU,IAAI,gBAAgB;AACxC,kBAAU,WAAW;AACrB,YAAI,MAAM,GAAG;AACX,oBAAU,UAAU,IAAI,QAAQ;AAAA,QAClC;AACA,aAAK,YAAY,YAAY,SAAS;AAAA,MACxC;AAAA,IACF,CAAC;AAED,QAAI,KAAK,eAAgB,MAAK,GAAG,YAAY,KAAK,WAAW;AAE7D,SAAK,QAAQ,KAAK,OAAO;AAGzB,SAAK,QAAQ,aAAa,KAAK,IAAI,KAAK,OAAO,KAAK,QAAQ,UAAU;AAEtE,SAAK,oBAAoB;AACzB,SAAK,QAAQ,KAAK,MAAM;AAAA,EAC1B;AAAA,EAEA,WAAW,WAA4B;AACrC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAoC,CAAC,GACd;AACvB,WAAO,MAAM,KAAK,KAAK,SAAS,SAAQ;AAAA,EAC1C;AAAA,EAEA,OAAO,YAAY,IAA2B;AAC5C,WAAO,GAAG,qBAAqB;AAAA,EACjC;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,GAAG,qBAAqB,IAAI;AAAA,EACnC;AAAA,EAEA,sBAAsB;AACpB,QAAI,OAAO,OAAO,iBAAiB,aAAa;AAC9C,WAAK,GAAG,iBAAiB,cAAc,KAAK,kBAAkB;AAC9D,WAAK,GAAG,iBAAiB,aAAa,KAAK,mBAAmB;AAC9D,WAAK,GAAG,iBAAiB,YAAY,KAAK,sBAAsB;AAAA,IAClE;AACA,SAAK,GAAG,iBAAiB,aAAa,KAAK,kBAAkB;AAC7D,SAAK,GAAG,iBAAiB,aAAa,KAAK,mBAAmB;AAC9D,SAAK,GAAG,iBAAiB,WAAW,KAAK,sBAAsB;AAC/D,SAAK,GAAG,iBAAiB,cAAc,KAAK,sBAAsB;AAClE,SAAK,GAAG,iBAAiB,SAAS,KAAK,oBAAoB;AAC3D,QAAI,KAAK,kBAAkB,KAAK,aAAa;AAC3C,WAAK,YAAY,iBAAiB,iBAAiB,EAAE,QAAQ,CAAC,OAAO;AACnE,WAAG,iBAAiB,SAAS,KAAK,qBAAqB;AACvD,WAAG,iBAAiB,YAAY,KAAK,wBAAwB;AAAA,MAC/D,CAAC;AAAA,IACH;AAEA,WAAO,iBAAiB,UAAU,KAAK,sBAAsB;AAAA,EAC/D;AAAA,EAEA,uBAAuB;AACrB,QAAI,OAAO,OAAO,iBAAiB,aAAa;AAC9C,WAAK,GAAG,oBAAoB,cAAc,KAAK,kBAAkB;AACjE,WAAK,GAAG,oBAAoB,aAAa,KAAK,mBAAmB;AACjE,WAAK,GAAG,oBAAoB,YAAY,KAAK,sBAAsB;AAAA,IACrE;AACA,SAAK,GAAG,oBAAoB,aAAa,KAAK,kBAAkB;AAChE,SAAK,GAAG,oBAAoB,aAAa,KAAK,mBAAmB;AACjE,SAAK,GAAG,oBAAoB,WAAW,KAAK,sBAAsB;AAClE,SAAK,GAAG,oBAAoB,cAAc,KAAK,sBAAsB;AACrE,SAAK,GAAG,oBAAoB,SAAS,KAAK,oBAAoB;AAC9D,QAAI,KAAK,kBAAkB,KAAK,aAAa;AAC3C,WAAK,YAAY,iBAAiB,iBAAiB,EAAE,QAAQ,CAAC,OAAO;AACnE,WAAG,oBAAoB,SAAS,KAAK,qBAAqB;AAAA,MAC5D,CAAC;AAAA,IACH;AACA,WAAO,oBAAoB,UAAU,KAAK,sBAAsB;AAAA,EAClE;AAAA,EA6JA,mBAAmB,YAAqB,OAAO;AAC7C,UAAM,aAAa,KAAK,GAAG,cAAc,uBAAuB,IAC5D,KAAK,GAAG,cAAc,uBAAuB,IAC7C,KAAK,GAAG,cAAc,gBAAgB;AAE1C,UAAM,aAAa,WAAW,cAAc,KAAK;AACjD,QAAI,YAAY;AACd,UAAI,WAAW,UAAU;AAEvB,cAAM,cAAc,WAAW;AAC/B,YAAI,cAAc,GAAG;AACnB,eAAK,GAAG,MAAM,SAAS,cAAc;AAAA,QACvC,OAAO;AAEL,gBAAM,eAAe,WAAW;AAChC,gBAAM,gBAAgB,WAAW;AACjC,gBAAM,iBAAkB,KAAK,GAAG,cAAc,eAAgB;AAC9D,eAAK,GAAG,MAAM,SAAS,iBAAiB;AAAA,QAC1C;AAAA,MACF,OAAO;AAEL,mBAAW,iBAAiB,QAAQ,MAAM;AACxC,eAAK,GAAG,MAAM,SAAS,WAAW,eAAe;AAAA,QACnD,CAAC;AAAA,MACH;AAAA,IACF,WAAW,CAAC,WAAW;AACrB,YAAM,cAAc,WAAW;AAC/B,WAAK,GAAG,MAAM,SAAS,cAAc;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,MAAM,GAA4B;AAEhC,QAAI,EAAE,KAAK,WAAW,OAAO,KAAM,EAAiB,cAAc,UAAU,GAAG;AAC7E,aAAQ,EAAiB,cAAc,CAAC,EAAE;AAAA,IAC5C;AAEA,WAAQ,EAAiB;AAAA,EAC3B;AAAA,EAEA,MAAM,GAA4B;AAEhC,QAAI,EAAE,KAAK,WAAW,OAAO,KAAM,EAAiB,cAAc,UAAU,GAAG;AAC7E,aAAQ,EAAiB,cAAc,CAAC,EAAE;AAAA,IAC5C;AAEA,WAAQ,EAAiB;AAAA,EAC3B;AAAA,EAEA,MAAM,GAAW;AACf,WAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM,KAAK,QAAS,IAAI,KAAK,KAAM,IAAI;AAAA,EAChG;AAAA,EA8BA,QAAQ,IAAY,GAAG;AAErB,QAAI,CAAC,KAAK,GAAG,UAAU,SAAS,WAAW,GAAG;AAC5C,WAAK,GAAG,UAAU,IAAI,WAAW;AAAA,IACnC;AACA,QAAI,KAAK,oBAAoB,MAAM;AACjC,mBAAa,KAAK,gBAAgB;AAAA,IACpC;AACA,SAAK,mBAAmB,WAAW,MAAM;AACvC,WAAK,GAAG,UAAU,OAAO,WAAW;AAAA,IACtC,GAAG,KAAK,QAAQ,QAAQ;AAGxB,SAAK,SAAS,OAAO,MAAM,WAAW,IAAI,KAAK;AAC/C,SAAK,SAAS,KAAK,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,KAAK,GAAG;AAEhE,UAAM,OAAe,KAAK,SAAS,GACjC,QAAgB,KAAK,SAAS,KAAK,SAAS,KAAK,KACjD,MAAc,QAAQ,IAAI,IAAI,IAC9B,QAAiB,CAAC,MAAM,QAAQ,IAAK,KAAK;AAC5C,QAAI,GACF,IACA,WACA,cACA,gBACA;AACF,UAAM,aAAa,KAAK;AACxB,UAAM,mBAAmB,IAAI,KAAK,QAAQ;AAO1C,QAAI,KAAK,QAAQ,WAAW;AAC1B,kBAAY;AACZ,6BAAuB;AAAA,IACzB,OAAO;AACL,kBAAY,iBAAiB,KAAK,GAAG,cAAc,KAAK,aAAa,IAAI;AACzE,mBAAa,iBAAiB,KAAK,GAAG,eAAe,KAAK,cAAc,IAAI;AAC5E,6BAAuB,IAAI,mBAAmB;AAAA,IAChD;AAGA,QAAI,KAAK,gBAAgB;AACvB,YAAM,OAAO,KAAK,SAAS,KAAK;AAChC,YAAM,kBAAkB,KAAK,YAAY,cAAc,wBAAwB;AAC/E,YAAM,uBAAuB,CAAC,GAAG,gBAAgB,WAAW,QAAQ,EAAE;AAAA,QACpE;AAAA,MACF;AACA,UAAI,yBAAyB,MAAM;AACjC,wBAAgB,UAAU,OAAO,QAAQ;AACzC,cAAM,MAAM,OAAO,IAAI,KAAK,QAAQ,OAAO;AAC3C,aAAK,YAAY,iBAAiB,iBAAiB,EAAE,GAAG,EAAE,UAAU,IAAI,QAAQ;AAAA,MAClF;AAAA,IACF;AAIA,QAAI,CAAC,KAAK,UAAW,KAAK,UAAU,KAAK,KAAK,SAAS,KAAK,OAAQ;AAClE,WAAK,KAAK,OAAO,KAAK,MAAM,KAAK,MAAM,CAAC;AAIxC,UAAI,CAAC,GAAG,UAAU,SAAS,QAAQ,GAAG;AACpC,aAAK,GAAG,cAAc,uBAAuB,GAAG,UAAU,OAAO,QAAQ;AACzE,WAAG,UAAU,IAAI,QAAQ;AAAA,MAC3B;AAAA,IAKF;AAEA,SAAK,IAAI,GAAG,KAAK,MAAM,EAAE,GAAG;AAE1B,UAAI,KAAK,QAAQ,WAAW;AAC1B,uBAAe,KAAK,QAAQ;AAC5B,yBAAiB,MAAM,QAAQ,QAAQ,IAAI,IAAI,QAAQ;AAAA,MACzD,OAAO;AACL,uBAAe,KAAK,QAAQ,QAAQ,IAAI,IAAI,QAAQ;AACpD,yBAAiB,IAAI,oBAAoB,IAAI,IAAI,QAAQ;AAAA,MAC3D;AAEA,UAAI,CAAC,KAAK,UAAU,KAAK,SAAS,IAAI,KAAK,OAAO;AAChD,aAAK,KAAK,OAAO,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC;AAC5C,cAAM,kBAAkB,GAAG,SAAS,eAClC,KAAK,QAAQ,SAAS,KAAK,MAAM,IAAI,SAAS,CAChD,kBAAkB,YAAY;AAC9B,aAAK,iBAAiB,IAAI,gBAAgB,CAAC,GAAG,eAAe;AAAA,MAC/D;AAEA,UAAI,KAAK,QAAQ,WAAW;AAC1B,uBAAe,KAAK,QAAQ;AAC5B,yBAAiB,MAAM,QAAQ,QAAQ,IAAI,IAAI,QAAQ;AAAA,MACzD,OAAO;AACL,uBAAe,KAAK,QAAQ,QAAQ,IAAI,IAAI,QAAQ;AACpD,yBAAiB,IAAI,oBAAoB,IAAI,IAAI,QAAQ;AAAA,MAC3D;AAEA,UAAI,CAAC,KAAK,UAAU,KAAK,SAAS,KAAK,GAAG;AACxC,aAAK,KAAK,OAAO,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC;AAC5C,cAAM,kBAAkB,GAAG,SAAS,eAClC,CAAC,KAAK,QAAQ,SAAS,CAAC,KAAK,MAAM,IAAI,SAAS,CAClD,kBAAkB,YAAY;AAC9B,aAAK,iBAAiB,IAAI,gBAAgB,CAAC,GAAG,eAAe;AAAA,MAC/D;AAAA,IACF;AAGA,QAAI,CAAC,KAAK,UAAW,KAAK,UAAU,KAAK,KAAK,SAAS,KAAK,OAAQ;AAClE,WAAK,KAAK,OAAO,KAAK,MAAM,KAAK,MAAM,CAAC;AACxC,YAAM,kBAAkB,GAAG,SAAS,eAAe,CAAC,QAAQ,CAAC,kBAC3D,MAAM,KAAK,QAAQ,QAAQ,KAC7B,kBAAkB,KAAK,QAAQ,OAAO,KAAK;AAC3C,WAAK,iBAAiB,IAAI,sBAAsB,GAAG,eAAe;AAAA,IACpE;AAEA,UAAM,YAAY,KAAK,GAAG,iBAAiB,gBAAgB,EAAE,KAAK,MAAM,KAAK,MAAM,CAAC;AAEpF,QAAI,eAAe,KAAK,UAAU,OAAO,KAAK,QAAQ,cAAc,YAAY;AAC9E,WAAK,QAAQ,UAAU,KAAK,MAAM,WAAW,KAAK,OAAO;AAAA,IAC3D;AAEA,QAAI,OAAO,KAAK,oBAAoB,YAAY;AAC9C,WAAK,gBAAgB,KAAK,MAAM,WAAW,KAAK,OAAO;AACvD,WAAK,kBAAkB;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,iBAAiB,IAAiB,SAAiB,QAAgB,WAAmB;AACpF,OAAG,MAAM,YAAY;AACrB,OAAG,MAAM,SAAS,OAAO,SAAS;AAClC,OAAG,MAAM,UAAU,QAAQ,SAAS;AACpC,OAAG,MAAM,aAAa;AAAA,EACxB;AAAA,EAEA,SAAS,GAAW,WAAyC,MAAM;AACjE,QAAI,OAAQ,KAAK,SAAS,KAAK,QAAS;AAExC,QAAI,CAAC,KAAK,QAAQ;AAChB,UAAI,OAAO,GAAG;AACZ,YAAI,KAAK,IAAI,OAAO,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG;AAChD,kBAAQ,KAAK;AAAA,QACf;AAAA,MACF,WAAW,OAAO,GAAG;AACnB,YAAI,KAAK,IAAI,OAAO,KAAK,KAAK,IAAI,MAAM;AACtC,kBAAQ,KAAK;AAAA,QACf;AAAA,MACF;AAAA,IACF;AACA,SAAK,SAAS,KAAK,MAAM,KAAK,MAAM,KAAK,SAAS,KAAK,GAAG;AAE1D,QAAI,OAAO,GAAG;AACZ,WAAK,UAAU,KAAK,MAAM,KAAK,IAAI,IAAI;AAAA,IACzC,WACS,OAAO,GAAG;AACjB,WAAK,UAAU,KAAK,MAAM;AAAA,IAC5B;AAEA,QAAI,OAAO,aAAa,YAAY;AAClC,WAAK,kBAAkB;AAAA,IACzB;AAEA,QAAI,KAAK,WAAW,KAAK,QAAQ;AAC/B,WAAK,YAAY,KAAK,SAAS,KAAK;AACpC,WAAK,YAAY,KAAK,IAAI;AAC1B,4BAAsB,KAAK,WAAW;AAAA,IACxC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,KAAK,IAAY,GAAG;AAClB,QAAI,MAAM,UAAa,MAAM,CAAC,GAAG;AAC/B,UAAI;AAAA,IACN;AACA,QAAI,QAAQ,KAAK,SAAS;AAC1B,QAAI,SAAS,KAAK,SAAS,QAAQ,GAAG;AACpC,UAAI,KAAK,OAAQ;AACjB,cAAQ,KAAK,MAAM,KAAK;AAAA,IAC1B;AACA,SAAK,SAAS,KAAK;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,KAAK,IAAY,GAAG;AAClB,QAAI,MAAM,UAAa,MAAM,CAAC,GAAG;AAC/B,UAAI;AAAA,IACN;AACA,QAAI,QAAQ,KAAK,SAAS;AAC1B,QAAI,SAAS,KAAK,SAAS,QAAQ,GAAG;AACpC,UAAI,KAAK,OAAQ;AACjB,cAAQ,KAAK,MAAM,KAAK;AAAA,IAC1B;AACA,SAAK,SAAS,KAAK;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,GAAW,UAAyC;AACtD,QAAI,MAAM,UAAa,MAAM,CAAC,GAAG;AAC/B,UAAI;AAAA,IACN;AACA,QAAI,IAAI,KAAK,SAAS,IAAI,GAAG;AAC3B,UAAI,KAAK,OAAQ;AACjB,UAAI,KAAK,MAAM,CAAC;AAAA,IAClB;AACA,SAAK,SAAS,GAAG,QAAQ;AAAA,EAC3B;AACF;;;AC7qBA,IAAMC,aAAY,OAAO,OAAO,CAAC,CAAC;AAI3B,IAAM,mBAAN,MAAM,0BAAyB,UAAkB;AAAA,EAStD,YAAY,IAA4C,SAA+B;AACrF,UAAM,IAAI,CAAC,GAAG,iBAAgB;AA+EhC,yBAAgB,MAAM;AACpB,YAAM,YAAY,SAAS,KAAK,GAAG,aAAa,WAAW,CAAC,GAC1D,eAAgB,KAAK,GAAwB,MAAM;AAErD,WAAK,gBAAgB,gBAAgB;AACrC,UAAI,gBAAgB,aAAa,SAAS;AAC1C,UAAI,WAAW;AACb,yBAAiB,MAAM;AACvB,aAAK,eAAe;AAAA,MACtB;AACA,WAAK,UAAU,cAAc;AAAA,IAC/B;AAzFE,SAAK,GAAG,6BAA6B,IAAI;AAEzC,SAAK,UAAU;AAAA,MACb,GAAG,kBAAiB;AAAA,MACpB,GAAG;AAAA,IACL;AAEA,SAAK,YAAY;AACjB,SAAK,gBAAgB;AAErB,SAAK,cAAc;AACnB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAAwB;AACjC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,OAAO,KACL,KACA,UAAgC,CAAC,GACM;AACvC,WAAO,MAAM,KAAK,KAAK,SAAS,iBAAgB;AAAA,EAClD;AAAA,EAEA,OAAO,YAAY,IAAoC;AACrD,WAAO,GAAG,6BAA6B;AAAA,EACzC;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,GAAG,6BAA6B,IAAI;AACzC,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,sBAAsB;AACpB,SAAK,GAAG,iBAAiB,SAAS,KAAK,eAAe,IAAI;AAC1D,SAAK,GAAG,iBAAiB,SAAS,KAAK,eAAe,IAAI;AAAA,EAC5D;AAAA,EAEA,uBAAuB;AACrB,SAAK,GAAG,oBAAoB,SAAS,KAAK,eAAe,IAAI;AAC7D,SAAK,GAAG,oBAAoB,SAAS,KAAK,eAAe,IAAI;AAAA,EAC/D;AAAA,EAEA,gBAAgB;AACd,SAAK,YAAY,SAAS,cAAc,MAAM;AAC9C,SAAK,UAAU,UAAU,IAAI,mBAAmB;AAChD,SAAK,UAAU,MAAM,QAAQ;AAC7B,SAAK,UAAU,MAAM,WAAW;AAChC,SAAK,UAAU,MAAM,SAAS;AAC9B,SAAK,GAAG,cAAc,YAAY,KAAK,SAAS;AAAA,EAClD;AAAA,EAEA,iBAAiB;AACf,SAAK,UAAU,OAAO;AAAA,EACxB;AAAA,EAeA,iBAAiB;AACf,QAAI,KAAK,iBAAiB,KAAK,WAAW;AACxC,WAAK,YAAY;AACjB,WAAK,GAAG,UAAU,OAAO,SAAS;AAAA,IACpC,WAAW,CAAC,KAAK,iBAAiB,CAAC,KAAK,WAAW;AACjD,WAAK,YAAY;AACjB,WAAK,GAAG,UAAU,OAAO,OAAO;AAChC,WAAK,GAAG,UAAU,IAAI,SAAS;AAAA,IACjC;AAAA,EACF;AACF;;;AC/EA,IAAMC,aAAgC;AAAA,EACpC,WAAW;AAAA,EACX,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AACf;AAEO,IAAM,cAAN,MAAM,qBAAoB,UAA8B;AAAA,EAG7D,YAAY,IAAiB,SAAsC;AACjE,UAAM,IAAI,SAAS,YAAW;AA+EhC,mCAA0B,CAAC,MAAkC;AAC3D,YAAM,SAAU,EAAE,OAAuB,QAAQ,qBAAqB;AACtE,UAAI,EAAE,UAAU,QAAQ;AACtB,cAAM,cAAc,OAAO,QAAQ,cAAc;AACjD,YAAI,gBAAgB,KAAK,GAAI;AAE7B,cAAM,KAAK,OAAO,QAAQ,IAAI;AAC9B,cAAM,WAAW,GAAG,UAAU,SAAS,QAAQ;AAC/C,cAAM,QAAQ,CAAC,GAAG,GAAG,WAAW,QAAQ,EAAE,QAAQ,EAAE;AAEpD,YAAI,SAAU,MAAK,MAAM,KAAK;AAAA,YACzB,MAAK,KAAK,KAAK;AAAA,MACtB;AAAA,IACF;AAEA,qCAA4B,CAAC,MAAqB;AAChD,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,aAAK,wBAAwB,CAAC;AAAA,MAChC;AAAA,IACF;AAsCA;AAAA;AAAA;AAAA;AAAA,gBAAO,CAAC,UAAkB;AACxB,YAAM,YAAY,MAAM,KAAK,KAAK,GAAG,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,IAAI;AAC/E,YAAM,KAAK,UAAU,KAAK;AAC1B,UAAI,MAAM,CAAC,GAAG,UAAU,SAAS,QAAQ,GAAG;AAE1C,YAAI,OAAO,KAAK,QAAQ,gBAAgB,YAAY;AAClD,eAAK,QAAQ,YAAY,KAAK,MAAM,EAAE;AAAA,QACxC;AAEA,YAAI,KAAK,QAAQ,WAAW;AAC1B,gBAAM,YAAY,UAAU,OAAO,CAACC,QAAOA,IAAG,UAAU,SAAS,QAAQ,CAAC;AAC1E,oBAAU,QAAQ,CAAC,aAAa;AAC9B,kBAAMC,SAAQ,UAAU,QAAQ,QAAQ;AACxC,iBAAK,MAAMA,MAAK;AAAA,UAClB,CAAC;AAAA,QACH;AAEA,WAAG,UAAU,IAAI,QAAQ;AACzB,aAAK,WAAW,KAAK;AAAA,MACvB;AAAA,IACF;AAMA;AAAA;AAAA;AAAA;AAAA,iBAAQ,CAAC,UAAkB;AACzB,YAAM,KAAK,MAAM,KAAK,KAAK,GAAG,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,YAAY,IAAI,EAAE,KAAK;AAC/E,UAAI,MAAM,GAAG,UAAU,SAAS,QAAQ,GAAG;AAEzC,YAAI,OAAO,KAAK,QAAQ,iBAAiB,YAAY;AACnD,eAAK,QAAQ,aAAa,KAAK,MAAM,EAAE;AAAA,QACzC;AAEA,WAAG,UAAU,OAAO,QAAQ;AAC5B,aAAK,YAAY,KAAK;AAAA,MACxB;AAAA,IACF;AA5KE,SAAK,GAAG,wBAAwB,IAAI;AAEpC,SAAK,UAAU;AAAA,MACb,GAAG,aAAY;AAAA,MACf,GAAG;AAAA,IACL;AAGA,SAAK,WAAW,MAAM,KAAK,KAAK,GAAG,iBAAiB,0BAA0B,CAAC;AAC/E,SAAK,SAAS,QAAQ,CAACC,QAAQA,IAAG,WAAW,CAAE;AAC/C,SAAK,oBAAoB;AAGzB,UAAM,eAA8B,MAAM;AAAA,MACxC,KAAK,GAAG,iBAAiB,+BAA+B;AAAA,IAC1D;AACA,QAAI,KAAK,QAAQ,WAAW;AAC1B,UAAI,aAAa,SAAS,GAAG;AAE3B,aAAK,aAAa,aAAa,CAAC,CAAC;AAAA,MACnC;AAAA,IACF,OAAO;AAEL,mBAAa,QAAQ,CAACA,QAAO,KAAK,aAAaA,GAAE,CAAC;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,WAAW,WAA+B;AACxC,WAAOH;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAuC,CAAC,GACX;AAC7B,WAAO,MAAM,KAAK,KAAK,SAAS,YAAW;AAAA,EAC7C;AAAA,EAEA,OAAO,YAAY,IAA8B;AAC/C,WAAO,GAAG,wBAAwB;AAAA,EACpC;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,GAAG,wBAAwB,IAAI;AAAA,EACtC;AAAA,EAEA,sBAAsB;AACpB,SAAK,GAAG,iBAAiB,SAAS,KAAK,uBAAuB;AAC9D,SAAK,SAAS;AAAA,MAAQ,CAAC,WACrB,OAAO,iBAAiB,WAAW,KAAK,yBAAyB;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,SAAK,GAAG,oBAAoB,SAAS,KAAK,uBAAuB;AACjE,SAAK,SAAS;AAAA,MAAQ,CAAC,WACrB,OAAO,oBAAoB,WAAW,KAAK,yBAAyB;AAAA,IACtE;AAAA,EACF;AAAA,EAuBQ,aAAa,IAAuB;AAC1C,OAAG,MAAM,YAAY,GAAG,eAAe;AAAA,EACzC;AAAA,EAEA,WAAW,OAAe;AACxB,UAAM,KAAoB,KAAK,GAAG,SAAS,KAAK;AAChD,QAAI,CAAC,GAAI;AACT,UAAM,OAAoB,GAAG,cAAc,mBAAmB;AAC9D,UAAM,WAAW,KAAK,QAAQ;AAC9B,SAAK,MAAM,aAAa,cAAc,QAAQ;AAC9C,SAAK,aAAa,IAAI;AACtB,eAAW,MAAM;AACf,UAAI,OAAO,KAAK,QAAQ,cAAc,YAAY;AAChD,aAAK,QAAQ,UAAU,KAAK,MAAM,EAAE;AAAA,MACtC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAAA,EAEA,YAAY,OAAe;AACzB,UAAM,KAAK,KAAK,GAAG,SAAS,KAAK;AACjC,QAAI,CAAC,GAAI;AACT,UAAM,OAAoB,GAAG,cAAc,mBAAmB;AAC9D,UAAM,WAAW,KAAK,QAAQ;AAC9B,SAAK,MAAM,aAAa,cAAc,QAAQ;AAC9C,SAAK,MAAM,YAAY;AACvB,eAAW,MAAM;AACf,UAAI,OAAO,KAAK,QAAQ,eAAe,YAAY;AACjD,aAAK,QAAQ,WAAW,KAAK,MAAM,EAAE;AAAA,MACvC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AA4CF;;;ACpNA,IAAMI,cAA+B;AAAA,EACnC,SAAS;AAAA,EACT,iBAAiB,CAAC;AACpB;AAOO,IAAM,aAAN,MAAM,oBAAmB,UAA6B;AAAA,EAqB3D,YAAY,IAAuB,SAA4B;AAC7D,UAAM,IAAI,SAAS,WAAU;AA4F/B,+BAAsB,MAAM;AAC1B,WAAK,iBAAiB;AAAA,IACxB;AAIA;AAAA;AAAA,gCAAuB,CAAC,MAAqB;AAC3C,UAAI,EAAE,QAAQ,OAAO,EAAE,QAAQ,QAAS,MAAK,mBAAmB,CAAC;AAAA,IACnE;AAEA,8BAAqB,CAAC,MAAkC;AACtD,QAAE,eAAe;AACjB,YAAM,gBAAiB,EAAE,OAAyB,QAAQ,IAAI;AAC9D,WAAK,qBAAqB,aAAa;AACvC,QAAE,gBAAgB;AAAA,IACpB;AAsCA,6BAAoB,MAAM;AACxB,UAAI,KAAK,YAAY,KAAK,SAAS,QAAQ;AACzC,aAAK,iBAAiB;AACtB,aAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF;AArJE,QAAI,KAAK,GAAG,UAAU,SAAS,iBAAiB,EAAG;AACnD,SAAK,GAAG,uBAAuB,IAAI;AAEnC,SAAK,UAAU;AAAA,MACb,GAAG,YAAW;AAAA,MACd,GAAG;AAAA,IACL;AAEA,SAAK,aAAa,KAAK,GAAG;AAC1B,SAAK,iBAAiB,KAAK,GAAG,YAAY;AAC1C,SAAK,GAAG,WAAW;AACnB,SAAK,UAAU,CAAC;AAChB,SAAK,eAAe;AACpB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAA8B;AACvC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,OAAO,KACL,KACA,UAAsC,CAAC,GACZ;AAC3B,WAAO,MAAM,KAAK,KAAK,SAAS,WAAU;AAAA,EAC5C;AAAA,EAEA,OAAO,YAAY,IAA6B;AAC9C,WAAO,GAAG,uBAAuB;AAAA,EACnC;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAI1B,SAAK,UAAU,QAAQ;AACvB,SAAK,gBAAgB;AACrB,SAAK,GAAG,uBAAuB,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAU;AACR,SAAK,iBAAiB;AACtB,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEA,sBAAsB;AACpB,SAAK,gBAAgB,iBAAiB,mBAAmB,EAAE,QAAQ,CAAC,OAAO;AACzE,SAAG,iBAAiB,SAAS,KAAK,kBAAkB;AACpD,SAAG,iBAAiB,WAAW,KAAK,oBAAoB;AAAA,IAC1D,CAAC;AACD,SAAK,GAAG,iBAAiB,UAAU,KAAK,mBAAmB;AAC3D,SAAK,MAAM,iBAAiB,SAAS,KAAK,iBAAiB;AAAA,EAC7D;AAAA,EAEA,uBAAuB;AACrB,SAAK,gBAAgB,iBAAiB,mBAAmB,EAAE,QAAQ,CAAC,OAAO;AACzE,SAAG,oBAAoB,SAAS,KAAK,kBAAkB;AACvD,SAAG,oBAAoB,WAAW,KAAK,oBAAoB;AAAA,IAC7D,CAAC;AACD,SAAK,GAAG,oBAAoB,UAAU,KAAK,mBAAmB;AAC9D,SAAK,MAAM,oBAAoB,SAAS,KAAK,iBAAiB;AAAA,EAChE;AAAA,EAmBA,aAAmB,GAAQ,GAAc;AACvC,QAAI,MAAM,EAAG,QAAO;AACpB,QAAI,KAAK,QAAQ,KAAK,KAAM,QAAO;AACnC,QAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAG,KAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAG,QAAO;AAC7D,WAAO;AAAA,EACT;AAAA,EAEA,qBAAqB,eAA4B;AAC/C,QACE,CAAC,cAAc,UAAU,SAAS,UAAU,KAC5C,CAAC,cAAc,UAAU,SAAS,UAAU,GAC5C;AACA,YAAM,QAAQ,KAAK,QAAQ,KAAK,CAACC,WAAUA,OAAM,aAAa,aAAa;AAC3E,YAAM,yBAAyB,KAAK,kBAAkB;AACtD,UAAI,KAAK,YAAY;AAEnB,aAAK,sBAAsB,KAAK;AAAA,MAClC,OAAO;AAEL,aAAK,aAAa;AAClB,aAAK,aAAa,KAAK;AAAA,MACzB;AAEA,WAAK,iBAAiB;AAEtB,YAAM,uBAAuB,KAAK,kBAAkB;AACpD,YAAM,sBAAsB,CAAC,KAAK,aAAa,wBAAwB,oBAAoB;AAC3F,UAAI;AACF,aAAK,GAAG;AAAA,UACN,IAAI,MAAM,UAAU,EAAE,SAAS,MAAM,YAAY,MAAM,UAAU,KAAK,CAAC;AAAA,QACzE;AAAA,IACJ;AACA,QAAI,CAAC,KAAK,WAAY,MAAK,SAAS,MAAM;AAAA,EAC5C;AAAA,EASA,iBAAiB;AAIf,SAAK,UAAU,KAAK,GAAG,SAAS,CAAC,KAAK;AAEtC,SAAK,UAAU,SAAS,cAAc,KAAK;AAC3C,SAAK,QAAQ,UAAU,IAAI,kBAAkB,aAAa;AAC1D,QAAI,KAAK,QAAQ,QAAQ,SAAS,GAAG;AACnC,WAAK,QAAQ,UAAU,IAAI,GAAG,KAAK,QAAQ,QAAQ,MAAM,GAAG,EAAE,OAAO,OAAO,CAAC;AAAA,IAC/E;AACA,SAAK,GAAG,OAAO,KAAK,OAAO;AAG3B,UAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,cAAU,UAAU,IAAI,aAAa;AACrC,SAAK,QAAQ,OAAO,SAAS;AAC7B,cAAU,YAAY,KAAK,EAAE;AAE7B,QAAI,KAAK,GAAG,SAAU,MAAK,QAAQ,UAAU,IAAI,UAAU;AAE3D,SAAK,gBACH,MAAM,KAAK,KAAK,GAAG,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC;AAIzF,SAAK,kBAAkB,SAAS,cAAc,IAAI;AAClD,SAAK,gBAAgB,KAAK,kBAAkB,MAAM,KAAK,CAAC;AACxD,SAAK,gBAAgB,aAAa,WAAW,MAAM;AACnD,SAAK,gBAAgB,UAAU,IAAI,oBAAoB,iBAAiB;AACxE,SAAK,gBAAgB,aAAa,QAAQ,SAAS;AACnD,SAAK,gBAAgB,sBAAsB,KAAK,WAAW,SAAS;AACpE,QAAI,KAAK,WAAY,MAAK,gBAAgB,UAAU,IAAI,0BAA0B;AAGlF,QAAI,KAAK,cAAc,SAAS,GAAG;AACjC,WAAK,cAAc,QAAQ,CAAC,eAAe;AACzC,YAAI,WAAW,YAAY,UAAU;AAEnC,gBAAM,gBAAgB,KAAK;AAAA,YACzB;AAAA,YACA,KAAK,aAAa,aAAa;AAAA,UACjC;AACA,eAAK,mBAAmB,YAAiC,aAAa;AAAA,QACxE,WAAW,WAAW,YAAY,YAAY;AAE5C,gBAAM,UAAU,eAAe,MAAM,KAAK;AAC1C,gBAAM,cAAc,SAAS,cAAc,IAAI;AAC/C,sBAAY,UAAU,IAAI,UAAU;AACpC,sBAAY,WAAW;AACvB,sBAAY,aAAa,QAAQ,OAAO;AACxC,sBAAY,aAAa,mBAAmB,OAAO;AAInD,gBAAM,aAAa,SAAS,cAAc,MAAM;AAChD,qBAAW,KAAK;AAChB,qBAAW,aAAa,QAAQ,cAAc;AAC9C,qBAAW,cAAc,WAAW,aAAa,OAAO,KAAK;AAC7D,sBAAY,gBAAgB,UAAU;AACtC,eAAK,gBAAgB,OAAO,WAAW;AAEvC,gBAAM,gBAAgB,CAAC;AACvB,gBAAM,gBACJ,MAAM,KAAK,WAAW,QAAQ,EAAE,OAAO,CAAC,OAAO,GAAG,YAAY,QAAQ;AAExE,wBAAc,QAAQ,CAACC,gBAAe;AACpC,kBAAM,gBAAgB,KAAK;AAAA,cACzBA;AAAA,cACA;AAAA,YACF;AACA,kBAAM,UAAU,eAAe,MAAM,KAAK;AAC1C,0BAAc,KAAK;AACnB,0BAAc,KAAK,OAAO;AAC1B,iBAAK,mBAAmBA,aAAY,aAAa;AAAA,UACnD,CAAC;AACD,sBAAY,aAAa,aAAa,cAAc,KAAK,GAAG,CAAC;AAAA,QAC/D;AAAA,MACF,CAAC;AAAA,IACH;AACA,SAAK,QAAQ,OAAO,KAAK,eAAe;AAGxC,SAAK,QAAQ,SAAS,cAAc,OAAO;AAC3C,SAAK,MAAM,KAAK,oBAAoB,MAAM,KAAK;AAC/C,SAAK,MAAM,UAAU,IAAI,mBAAmB,kBAAkB;AAC9D,SAAK,MAAM,OAAO;AAClB,SAAK,MAAM,WAAW;AACtB,SAAK,MAAM,aAAa,eAAe,KAAK,gBAAgB,EAAE;AAC9D,SAAK,MAAM,eAAe;AAC1B,SAAK,MAAM,eAAe,KAAK,GAAG,aAAa,UAAU,EAAE,SAAS;AACpE,QAAI,KAAK,GAAG,SAAU,MAAK,MAAM,WAAW;AAC5C,SAAK,MAAM,aAAa,YAAY,KAAK,eAAe,SAAS,CAAC;AAElE,UAAM,QAAQ,KAAK,GAAG;AACtB,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACrC,YAAM,OAAO,MAAM,CAAC;AACpB,UAAI,KAAK,KAAK,WAAW,OAAO,EAAG,MAAK,MAAM,aAAa,KAAK,MAAM,KAAK,KAAK;AAAA,IAClF;AAGA,SAAK,MAAM,aAAa,QAAQ,UAAU;AAC1C,SAAK,MAAM,eAAe;AAC1B,SAAK,MAAM,aAAa,aAAa,KAAK,gBAAgB,EAAE;AAC5D,SAAK,MAAM,aAAa,iBAAiB,KAAK,gBAAgB,EAAE;AAChE,SAAK,MAAM,cAAc;AAEzB,SAAK,QAAQ,QAAQ,KAAK,KAAK;AAC/B,SAAK,iBAAiB;AAGtB,UAAM,eAAe,SAAS,gBAAgB,8BAA8B,KAAK;AACjF,iBAAa,UAAU,IAAI,OAAO;AAClC,iBAAa,aAAa,UAAU,IAAI;AACxC,iBAAa,aAAa,SAAS,IAAI;AACvC,iBAAa,aAAa,WAAW,WAAW;AAChD,iBAAa,aAAa;AAC1B,iBAAa,YAAY;AACzB,SAAK,QAAQ,QAAQ,YAAY;AAGjC,QAAI,CAAC,KAAK,GAAG,UAAU;AACrB,YAAM,kBAAkB,EAAE,GAAG,KAAK,QAAQ,gBAAgB;AAC1D,sBAAgB,eAAe;AAC/B,YAAM,gBAAgB,gBAAgB;AACtC,YAAM,iBAAiB,gBAAgB;AAEvC,sBAAgB,YAAY,MAAM;AAChC,cAAM,iBAAiB,KAAK,gBAAgB,cAAc,WAAW;AACrE,YAAI,gBAAgB;AAElB,gBAAM,UAAU;AAChB,eAAK,SAAS,eAAe,CAAC,GAAG,eAAe,WAAW,QAAQ,EAAE;AAAA,YACnE;AAAA,UACF;AACA,eAAK,SAAS,kBAAkB;AAChC,gBAAM,UAAU;AAEhB,cAAI,KAAK,SAAS,cAAc;AAC9B,gBAAI,eACF,eAAe,sBAAsB,EAAE,MACtC,KAAK,gBAAgC,sBAAsB,EAAE;AAChE,4BAAgB,KAAK,gBAAgB,eAAe;AACpD,iBAAK,gBAAgB,YAAY;AAAA,UACnC;AAAA,QACF;AACA,aAAK,MAAM,eAAe;AAE1B,YAAI,iBAAiB,OAAO,kBAAkB;AAC5C,wBAAc,KAAK,KAAK,UAAU,KAAK,EAAE;AAAA,MAC7C;AAEA,sBAAgB,aAAa,MAAM;AACjC,aAAK,MAAM,eAAe;AAE1B,YAAI,kBAAkB,OAAO,mBAAmB;AAC9C,yBAAe,KAAK,KAAK,UAAU,KAAK,EAAE;AAAA,MAC9C;AAEA,sBAAgB,eAAe;AAC/B,WAAK,WAAW,SAAS,KAAK,KAAK,OAAO,eAAe;AAAA,IAC3D;AAEA,SAAK,mBAAmB;AAExB,QAAI,KAAK,QAAS,MAAK,MAAM,MAAM,KAAK,OAAO;AAAA,EACjD;AAAA,EAEA,mBAAmB,YAA+B,eAA4B;AAC5E,SAAK,QAAQ,KAAK,EAAE,IAAI,YAAY,UAAU,cAAc,CAAC;AAAA,EAC/D;AAAA,EAEA,kBAAkB;AAChB,SAAK,QAAQ,cAAc,QAAQ,EAAE,OAAO;AAC5C,SAAK,MAAM,OAAO;AAClB,SAAK,gBAAgB,OAAO;AAC5B,SAAK,QAAQ,OAAO,KAAK,EAAE;AAC3B,SAAK,QAAQ,OAAO;AAAA,EACtB;AAAA,EAEA,+BACE,YACA,MACA;AACA,UAAM,KAAK,SAAS,cAAc,IAAI;AACtC,OAAG,aAAa,QAAQ,QAAQ;AAChC,QAAI,WAAW,UAAU;AACvB,SAAG,UAAU,IAAI,UAAU;AAC3B,SAAG,eAAe;AAAA,IACpB;AACA,QAAI,SAAS,kBAAmB,IAAG,UAAU,IAAI,IAAI;AAKrD,UAAM,aAAa,WAAW;AAC9B,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,QAAI,KAAK,cAAc,CAAC,WAAW,UAAU;AAC3C,YAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,YAAM,WAAW,SAAS,cAAc,OAAO;AAC/C,eAAS,OAAO;AAChB,YAAM,YAAY,SAAS,cAAc,MAAM;AAC/C,gBAAU,cAAc;AACxB,YAAM,OAAO,UAAU,SAAS;AAChC,WAAK,YAAY,KAAK;AAAA,IACxB,OAAO;AACL,WAAK,cAAc;AAAA,IACrB;AACA,OAAG,YAAY,IAAI;AAGnB,UAAM,UAAU,WAAW,aAAa,WAAW;AAGnD,UAAM,UAAU,WAAW,aAAa,OAAO,GAAG,MAAM,GAAG,EAAE,OAAO,OAAO;AAC3E,QAAI,SAAS;AACX,YAAM,MAAM,SAAS,cAAc,KAAK;AACxC,UAAI,SAAS,OAAQ,KAAI,UAAU,IAAI,GAAG,OAAO;AACjD,UAAI,MAAM;AACV,UAAI,aAAa;AACjB,SAAG,QAAQ,GAAG;AAAA,IAChB;AAEA,SAAK,gBAAgB,OAAO,EAAE;AAC9B,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,OAAoB;AAC/B,UAAM,GAAG,WAAW;AACpB,UAAM,SAAS,UAAU,IAAI,UAAU;AACvC,UAAM,SAAS,eAAe;AAC9B,UAAM,WAA6B,MAAM,SAAS,cAAc,wBAAwB;AACxF,QAAI,SAAU,UAAS,UAAU;AAAA,EACnC;AAAA,EAEA,eAAe,OAAoB;AACjC,UAAM,GAAG,WAAW;AACpB,UAAM,SAAS,UAAU,OAAO,UAAU;AAC1C,UAAM,SAAS,eAAe;AAC9B,UAAM,WAA6B,MAAM,SAAS,cAAc,wBAAwB;AACxF,QAAI,SAAU,UAAS,UAAU;AAAA,EACnC;AAAA,EAEA,eAAe;AACb,SAAK,QAAQ,QAAQ,CAAC,UAAU,KAAK,eAAe,KAAK,CAAC;AAAA,EAC5D;AAAA,EAEA,iBAAiB,OAAoB;AACnC,UAAM,aAAa,KAAK,kBAAkB;AAC1C,WAAO,WAAW,KAAK,CAAC,cAAc,cAAc,MAAM,GAAG,KAAK;AAAA,EACpE;AAAA,EAEA,sBAAsB,OAAoB;AACxC,QAAI,KAAK,iBAAiB,KAAK,EAAG,MAAK,eAAe,KAAK;AAAA,QACtD,MAAK,aAAa,KAAK;AAAA,EAC9B;AAAA,EAEA,sBAA2C;AAEzC,WAAO,MAAM,UAAU,OAAO;AAAA,MAC5B,KAAK,GAAG;AAAA,MACR,CAAC,eAAkC;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,mBAAmB;AACjB,UAAM,sBAAsB,KAAK,oBAAoB;AACrD,UAAM,sBAAsB,KAAK,QAAQ;AAAA,MACvC,CAAC,UAAU,oBAAoB,QAAQ,MAAM,EAAE,KAAK;AAAA,IACtD;AAEA,UAAM,yBAAyB,oBAAoB,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,QAAQ;AAGjF,UAAM,QAAQ,uBAAuB;AAAA,MAAI,CAAC,UACxC,MAAM,SAAS,cAAc,MAAM,EAAE,YAAY,KAAK;AAAA,IACxD;AAEA,QAAI,MAAM,WAAW,GAAG;AACtB,YAAM,sBAAyC,KAAK,GAAG,cAAc,iBAAiB;AACtF,UAAI,uBAAuB,oBAAoB,UAAU,IAAI;AAC3D,aAAK,MAAM,QAAQ,oBAAoB;AACvC;AAAA,MACF;AAAA,IACF;AACA,SAAK,MAAM,QAAQ,MAAM,KAAK,IAAI;AAAA,EACpC;AAAA,EAEA,qBAAqB;AACnB,SAAK,QAAQ,QAAQ,CAAC,UAAU;AAC9B,YAAM,mBAAmB,MAAM,GAAG;AAClC,YAAM,KAAuB,MAAM,SAAS,cAAc,wBAAwB;AAClF,UAAI,GAAI,IAAG,UAAU;AACrB,UAAI,kBAAkB;AACpB,aAAK,gBAAgB,KAAK,iBAAiB,MAAM,QAAQ;AAAA,MAC3D,OAAO;AACL,cAAM,SAAS,UAAU,OAAO,UAAU;AAC1C,cAAM,SAAS,eAAe;AAAA,MAChC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,gBAAgB,IAAiB,IAAiB;AAChD,QAAI,CAAC,GAAI;AACT,QAAI,CAAC,KAAK;AACR,SAAG,iBAAiB,aAAa,EAAE,QAAQ,CAACC,QAAOA,IAAG,UAAU,OAAO,UAAU,CAAC;AACpF,OAAG,UAAU,IAAI,UAAU;AAC3B,OAAG,eAAe;AAAA,EACpB;AAAA,EAEA,oBAAoB;AAClB,WAAO,KAAK,oBAAoB,EAAE,IAAI,CAAC,eAAe,WAAW,KAAK;AAAA,EACxE;AACF;;;AC7eA,IAAMC,cAAwC;AAAA,EAC5C,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,OAAO;AACT;AAEO,IAAM,sBAAN,MAAM,qBAAoB;AAAA,EAM/B,YAAY,IAAiB,WAAwB,SAA8C;AAenG,SAAQ,uBAAuB,CAAC,MAAkB;AAChD,UAAI,KAAK,WAAW,EAAE,KAAK,OAAoB,EAAE,WAAW,CAAgB,EAAE,OAAQ,QAAQ,iBAAiB,GAAI;AACjH,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAU,MAAM;AACd,eAAS,oBAAoB,SAAS,KAAK,oBAAoB;AAC/D,WAAK,UAAU,OAAO;AAAA,IACxB;AAYA,gBAAO,MAAM;AACX,UAAI,KAAK,QAAS;AAClB,WAAK,UAAU;AACf,YAAM,cAAc,MAAM,qBAAqB,KAAK,IAAI,KAAK,WAAW,UAAU,KAAK,QAAQ,QAAQ,KAAK,QAAQ,YAAY,KAAK,QAAQ,KAAK;AAIlJ,WAAK,UAAU,MAAM,aAAa;AAClC,WAAK,UAAU,MAAM,aAAa;AAAA,kBACpB,KAAK,QAAQ,QAAQ;AAAA,gBACvB,KAAK,QAAQ,QAAQ;AACjC,iBAAW,MAAM;AACf,aAAK,UAAU,MAAM,YAAY,cAAc,YAAY,CAAC,kBAAkB,YAAY,CAAC;AAC3F,aAAK,UAAU,MAAM,UAAW,GAAG,SAAS;AAAA,MAC9C,GAAG,CAAC;AAAA,IACN;AAEA,gBAAO,MAAM;AACX,UAAI,CAAC,KAAK,QAAS;AACnB,WAAK,UAAU;AAEf,WAAK,UAAU,gBAAgB,OAAO;AACtC,WAAK,UAAU,MAAM,aAAa;AAAA,kBACpB,KAAK,QAAQ,QAAQ;AAAA,gBACvB,KAAK,QAAQ,QAAQ;AACjC,iBAAW,MAAM;AACf,aAAK,UAAU,MAAM,YAAY;AACjC,aAAK,UAAU,MAAM,UAAU;AAAA,MACjC,GAAG,CAAC;AAAA,IACN;AArEE,SAAK,KAAK;AACV,SAAK,UAAU;AAAA,MACb,GAAGA;AAAA,MACH,GAAG;AAAA,IACL;AAEA,SAAK,YAAY,SAAS,cAAc,KAAK;AAC7C,SAAK,UAAU,UAAU,IAAI,gBAAgB;AAC7C,SAAK,UAAU,OAAO,SAAS;AAC/B,OAAG,cAAc,OAAO,KAAK,SAAS;AAEtC,aAAS,iBAAiB,SAAS,KAAK,oBAAoB;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBA,OAAO,KAAK,IAAiB,WAAwB,SAAoE;AACvH,WAAO,IAAI,qBAAoB,IAAI,WAAW,OAAO;AAAA,EACvD;AAgCF;;;AC4FA,IAAMC,cAA+B;AAAA;AAAA,EAEnC,QAAQ;AAAA;AAAA,EAER,OAAO;AAAA;AAAA,EAEP,aAAa;AAAA;AAAA,EAEb,gBAAgB;AAAA;AAAA,EAEhB,qBAAqB;AAAA;AAAA,EAErB,aAAa;AAAA;AAAA,EAEb,gBAAgB;AAAA;AAAA,EAEhB,gBAAgB;AAAA;AAAA,EAEhB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,cAAc;AAAA;AAAA,EAEd,UAAU;AAAA;AAAA,EAEV,SAAS;AAAA;AAAA,EAET,SAAS;AAAA;AAAA,EAET,WAAW;AAAA;AAAA,EAEX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,OAAO;AAAA,EACP,kBAAkB;AAAA;AAAA,EAElB,oBAAoB;AAAA;AAAA,EAEpB,iCAAiC;AAAA;AAAA,EAEjC,eAAe;AAAA;AAAA,EAEf,WAAW;AAAA;AAAA,EAEX,cAAc;AAAA;AAAA,EAEd,YAAY;AAAA;AAAA,EAEZ,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,eAAe;AAAA,IACf,WAAW;AAAA,IACX,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,UAAU,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAAA,IACvF,eAAe,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IAC/D,gBAAgB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACpD;AAAA;AAAA,EAEA,QAAQ,CAAC;AAAA;AAAA,EAET,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,sBAAsB;AAAA,EACtB,WAAW;AAAA,EACX,UAAU;AACZ;AAEO,IAAM,cAAN,MAAM,oBAAmB,UAA6B;AAAA,EAqC3D,YAAY,IAAsB,SAAqC;AACrE,UAAM,IAAI,SAAS,WAAU;AAnC/B,oBAAoB;AAyBpB;AAAA,SAAQ,aAAa;AAErB;AAAA,SAAQ,aAAa;AAErB;AAAA,SAAQ,eAAuB;AAE/B;AAAA,SAAQ,UAAkB;AAm+B1B,6BAAoB,CAAC,MAAM;AAEzB,UAAI,EAAE,QAAQ,QAAQ;AACpB,UAAE,eAAe;AAAA,MACnB;AACA,WAAK,YAAY,MAAM;AACrB,aAAK,iBAAiB,EAAE,MAA0B;AAClD,aAAK,KAAK;AACV,aAAK,SAAsB,EAAE,WAAW,KAAK,KAAK,KAAK,OAAO,KAAK,OAAO;AAAA,MAC5E,CAAC;AACD,UAAI,KAAK,cAAe,MAAK,cAAc,KAAK;AAChD,UAAI,KAAK,QAAQ,mBAAoB,MAAK,QAAQ,mBAAmB,KAAK,IAAI;AAAA,IAChF;AAEA,+BAAsB,CAAC,MAAqB;AAC1C,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,UAAE,eAAe;AACjB,aAAK,YAAY,MAAM;AACrB,eAAK,iBAAiB,EAAE,MAA0B;AAClD,eAAK,KAAK;AAAA,QACZ,CAAC;AACD,YAAI,KAAK,cAAe,MAAK,cAAc,KAAK;AAChD,YAAI,KAAK,QAAQ,mBAAoB,MAAK,QAAQ,mBAAmB,KAAK,IAAI;AAAA,MAChF;AAAA,IACF;AAEA,gCAAuB,CAAC,MAAM;AAC5B,YAAM,SAAsB,EAAE;AAC9B,UAAI,OAAO,UAAU,SAAS,aAAa,EAAG;AAE9C,WAAK,YAAY,MAAM;AACrB,YACE,OAAO,UAAU,SAAS,uBAAuB,KACjD,CAAC,OAAO,UAAU,SAAS,UAAU,KACrC,CAAC,OAAO,cAAc,UAAU,SAAS,aAAa,GACtD;AACA,gBAAM,eAAe,IAAI;AAAA,YACvB,EAAE,OAAO,aAAa,WAAW;AAAA,YACjC,EAAE,OAAO,aAAa,YAAY;AAAA,YAClC,EAAE,OAAO,aAAa,UAAU;AAAA,UAClC;AAEA,cAAI,CAAC,KAAK,YAAa,KAAK,YAAY,KAAK,QAAQ,qBAAsB;AACzE,iBAAK,QAAQ,YAAY;AAAA,UAC3B;AAGA,cAAI,KAAK,QAAQ,aAAa;AAC5B,iBAAK,8BAA8B,YAAY;AAAA,UACjD;AAEA,cAAI,KAAK,QAAQ,WAAY,MAAK,iBAAiB;AAAA,QACrD,WAAW,OAAO,QAAQ,aAAa,GAAG;AACxC,eAAK,UAAU;AAAA,QACjB,WAAW,OAAO,QAAQ,aAAa,GAAG;AACxC,eAAK,UAAU;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAEA,yCAAgC,CAAC,SAAe;AAC9C,UAAI,KAAK,WAAW,QAAQ,CAAC,YAAW,cAAc,MAAM,KAAK,OAAO,GAAG;AACzE,YAAI,YAAW,QAAQ,KAAK,IAAI,KAAK,YAAW,iBAAiB,MAAM,KAAK,IAAI,GAAG;AACjF;AAAA,QACF;AAEA,aAAK,QAAQ,MAAM,OAAO,YAAW,QAAQ,KAAK,IAAI,CAAC;AACvD;AAAA,MACF;AAEA,WAAK,YAAY;AACjB,WAAK,KAAK;AAAA,IACZ;AAEA,6BAAoB,MAAM;AACxB,WAAK,YAAY;AACjB,WAAK,eAAe;AAAA,IACtB;AAEA,uBAAc,MAAM;AAClB,WAAK,OAAO;AACZ,WAAK,UAAU;AACf,WAAK,KAAK;AAAA,IACZ;AAEA,8BAAqB,CAAC,MAAM;AAC1B,WAAK,UAAU,EAAE,OAAO,KAAK;AAAA,IAC/B;AAEA,6BAAoB,CAAC,MAAM;AACzB,WAAK,SAAS,EAAE,OAAO,KAAK;AAAA,IAC9B;AAkBA,8BAAqB,CAAC,MAAa;AACjC,UAAI;AACJ,YAAM,KAAK,EAAE;AAEb,UAAI,EAAE,QAAQ,GAAG,YAAY,KAAM;AAEnC,UAAI,MAAM,KAAK,aAAa,CAAC,KAAK,KAAM;AACxC,UAAI,KAAK,QAAQ,OAAO;AACtB,eAAO,KAAK,QAAQ;AAAA,UACjB,EAAE,OAA4B;AAAA,UAC/B,OAAO,KAAK,QAAQ,WAAW,aAC3B,KAAK,QAAQ,OAAO,IAAI,KAAK,KAAK,GAAG,KAAK,CAAC,IAC3C,KAAK,QAAQ;AAAA,QACnB;AAAA,MACF,OAAO;AACL,eAAO,IAAI,KAAK,KAAK,MAAO,EAAE,OAA4B,KAAK,CAAC;AAAA,MAClE;AACA,UAAI,YAAW,QAAQ,IAAI,GAAG;AAC5B,aAAK,QAAQ,MAAM,OAAO,MAAM,KAAK,WAAW,IAAI;AACpD,YAAI,EAAE,QAAQ,QAAQ;AACpB,eAAK,YAAY,GAAG,IAAI;AACxB,eAAK,eAAe;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAuBA;AAAA,4BAAmB,MAAM;AACvB,WAAK,eAAe;AAAA,IAGtB;AAEA,oBAAW,MAAM;AACf,WAAK,iBAAiB;AACtB,UAAI,OAAO,KAAK,QAAQ,cAAc,WAAY,MAAK,QAAQ,UAAU,KAAK,IAAI;AAAA,IACpF;AAEA,mBAAU,MAAM;AACd,UAAI,OAAO,KAAK,QAAQ,aAAa,WAAY,MAAK,QAAQ,SAAS,KAAK,IAAI;AAAA,IAClF;AAvoCE,SAAK,GAAG,uBAAuB,IAAI;AAEnC,SAAK,UAAU;AAAA,MACb,GAAG,YAAW;AAAA,MACd,GAAG;AAAA,IACL;AAGA,QAAI,CAAC,CAAC,WAAW,QAAQ,eAAe,MAAM,KAAK,OAAO,QAAQ,SAAS,UAAU;AACnF,WAAK,QAAQ,OAAO,EAAE,GAAG,YAAW,SAAS,MAAM,GAAG,QAAQ,KAAK;AAAA,IACrE;AAGA,QAAI,KAAK,QAAQ,QAAS,MAAK,QAAQ,QAAQ,SAAS,GAAG,GAAG,GAAG,CAAC;AAClE,QAAI,KAAK,QAAQ,QAAS,MAAK,QAAQ,QAAQ,SAAS,GAAG,GAAG,GAAG,CAAC;AAElE,SAAK,KAAK,MAAM,KAAK;AAErB,SAAK,gBAAgB;AACrB,SAAK,mBAAmB;AACxB,SAAK,oBAAoB;AAEzB,QAAI,CAAC,KAAK,QAAQ,aAAa;AAC7B,WAAK,QAAQ,cAAc,IAAI,KAAK,KAAK,MAAM,KAAK,GAAG,KAAK,CAAC;AAAA,IAC/D;AAEA,UAAM,UAAU,KAAK,QAAQ;AAC7B,QAAI,YAAW,QAAQ,OAAO,GAAG;AAC/B,UAAI,KAAK,QAAQ,gBAAgB;AAC/B,aAAK,QAAQ,SAAS,IAAI;AAC1B,aAAK,cAAc,KAAK,IAAI,OAAO;AAAA,MACrC,OAAO;AACL,aAAK,SAAS,OAAO;AAAA,MACvB;AAAA,IACF,OAAO;AACL,WAAK,SAAS,oBAAI,KAAK,CAAC;AAAA,IAC1B;AACA,QAAI,KAAK,QAAQ,aAAa;AAC5B,WAAK,WAAW;AAChB,YAAM,aAAa,KAAK,QAAQ;AAChC,UAAI,YAAW,QAAQ,UAAU,GAAG;AAClC,YAAI,KAAK,QAAQ,mBAAmB;AAClC,eAAK,QAAQ,YAAY,MAAM,IAAI;AACnC,eAAK,cAAc,KAAK,WAAW,UAAU;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AACA,QAAI,KAAK,QAAQ,qBAAqB;AACpC,WAAK,WAAW;AAChB,WAAK,QAAQ,CAAC;AACd,WAAK,UAAU,CAAC;AAChB,WAAK,QAAQ,KAAK,EAAE;AAAA,IACtB;AACA,QAAI,KAAK,QAAQ,eAAe;AAC9B,UAAI,KAAK,QAAQ,kBAAkB,SAAU,MAAK,gBAAgB,oBAAoB,KAAK,KAAK,IAAI,KAAK,aAAa,KAAK,QAAQ,oBAAoB;AAAA,IACzJ;AAAA,EACF;AAAA,EAEA,WAAW,WAAW;AACpB,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,OAAO,KACL,KACA,UAAsC,CAAC,GACZ;AAC3B,WAAO,MAAM,KAAK,KAAK,SAAS,WAAU;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,QAAQ,OAAwB;AACrC,WAAO,OAAO,SAAS,EAAE,EACtB,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,OAAO;AAAA,EAC1B;AAAA,EAEA,OAAO,QAAQ,KAAK;AAClB,WAAO,OAAO,KAAK,OAAO,UAAU,SAAS,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC;AAAA,EACjF;AAAA,EAEA,OAAO,WAAW,MAAM;AACtB,UAAM,MAAM,KAAK,OAAO;AACxB,WAAO,QAAQ,KAAK,QAAQ;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,iBAAiB,MAAM;AAC5B,QAAI,YAAW,QAAQ,IAAI,EAAG,MAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAAA,EACxD;AAAA,EAEA,OAAO,gBAAgB,MAAM,OAAO;AAClC,WAAO,CAAC,IAAI,YAAW,YAAY,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EACxF,KACF;AAAA,EACF;AAAA,EAEA,OAAO,YAAY,MAAM;AAEvB,WAAQ,OAAO,MAAM,KAAK,OAAO,QAAQ,KAAM,OAAO,QAAQ;AAAA,EAChE;AAAA,EAEA,OAAO,cAAc,GAAG,GAAG;AAEzB,WAAO,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAAA,EACnC;AAAA,EAEA,OAAO,oBAAoB,KAAW,MAAY,SAAe;AAC/D,WAAO,IAAI,QAAQ,IAAI,KAAK,QAAQ,KAAK,IAAI,QAAQ,IAAI,QAAQ,QAAQ;AAAA,EAC3E;AAAA,EAEA,OAAO,iBAAiB,GAAS,GAAS;AACxC,WAAO,EAAE,QAAQ,IAAI,EAAE,QAAQ;AAAA,EACjC;AAAA,EAEA,OAAO,YAAY,IAA6B;AAC9C,WAAO,GAAG,uBAAuB;AAAA,EACnC;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,eAAe,QAAQ;AAC5B,SAAK,YAAY,OAAO;AACxB,SAAK,eAAe;AACpB,SAAK,GAAG,uBAAuB,IAAI;AAAA,EACrC;AAAA,EAEA,iBAAiB;AACf,UAAM,gBAAgB,KAAK,WAAW,cAAc,mBAAmB;AACvE,QAAI,eAAe;AACjB,iBAAW,YAAY,aAA4B,EAAE,QAAQ;AAAA,IAC/D;AACA,UAAM,iBAAiB,KAAK,WAAW,cAAc,oBAAoB;AACzE,QAAI,gBAAgB;AAClB,iBAAW,YAAY,cAA6B,EAAE,QAAQ;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,qBAAqB;AAEnB,QAAI,KAAK,GAAG,QAAQ,QAAQ;AAC1B,WAAK,GAAG,UAAU,IAAI,uBAAuB;AAAA,IAC/C;AAIA,SAAK,uBAAuB,KAAK,EAAE;AAEnC,QAAI,KAAK,QAAQ,aAAa;AAC5B,WAAK,YAAY,UAAU,IAAI,WAAW;AAC1C,UAAI,CAAC,KAAK,QAAQ,gBAAgB;AAChC,aAAK,YAAY,KAAK,gBAAgB;AACtC,aAAK,UAAU,UAAU,IAAI,qBAAqB;AAAA,MACpD,OAAO;AAIL,aAAK,YAAY,SAAS,cAAc,KAAK,QAAQ,cAAc;AACnE,YAAI,CAAC,KAAK,WAAW;AACnB,kBAAQ,KAAK,oEAAoE;AAAA,QACnF,OAAO;AACL,eAAK,uBAAuB,KAAK,SAAS;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAQA,UAAM,aAAa,KAAK,QAAQ,KAAK,QAAQ,KAAK,OAAO,CAAC,kBAAkB,GAAG,KAAK,QAAQ,cAAc,KAAK,iBAAiB;AAEhI,QAAI,CAAC,KAAK,QAAQ,YAAY;AAC5B,YAAM,4BAA4B,KAAK,QAAQ,KAAK,QAAQ,KAAK,MAAM,KAAK,QAAQ,KAAK,QAAQ,KAAK,UAAU,KAAK,OAAO;AAAA,IAC9H;AAEA,QAAI,KAAK,QAAQ,WAAW;AAC1B,YAAM,QAAQ,KAAK,QAAQ;AAC3B,WAAK,QAAQ,YACX,iBAAiB,cAAc,QAAS,SAAS,cAAc,KAAK;AACtE,WAAK,QAAQ,UAAU,OAAO,KAAK,WAAW;AAAA,IAChD,OAAO;AAEL,YAAM,WAAW,CAAC,KAAK,YAAY,KAAK,KAAK,KAAK;AAClD,UAAI,CAAC,KAAK,QAAQ,cAAe,CAAC,KAAK,YAA4B,aAAa,SAAS,oCAAoC;AAC7H,eAAS,cAAc,MAAM,KAAK,WAAW;AAAA,IAC/C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB,IAAsB;AAC3C,UAAM,WAAW,GAAG,eAAe,cAAc,oBAAoB;AACrE,QAAI,CAAC,SAAU;AAIf,aAAS,cACP,OAAO,KAAK,QAAQ,WAAW,aAAa,KAAK,OAAO,KAAK,QAAQ,MAAM;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,OAAa,KAAK,MAAM,SAAyC,MAAc;AACtF,aAAS,UAAU,KAAK,QAAQ;AAChC,QAAI,OAAO,WAAW,WAAY,QAAO,OAAO,IAAI;AACpD,QAAI,CAAC,YAAW,QAAQ,IAAI,EAAG,QAAO;AAEtC,WAAO,KAAK,WAAW,MAAM,MAAM;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,MAAY,QAAgB;AACrC,UAAM,cAAc,OAAO,MAAM,6BAA6B;AAC9D,WAAO,YACJ,IAAI,CAAC,UAAW,KAAK,QAAQ,KAAK,IAAI,KAAK,QAAQ,KAAK,EAAE,IAAI,IAAI,KAAM,EACxE,KAAK,EAAE;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB,IAAsB;AACrC,UAAM,OAAO,IAAI,KAAK,KAAK,MAAM,GAAG,KAAK,CAAC;AAC1C,SAAK,QAAQ,MAAM,OAAO,MAAM,KAAK,WAAW,IAAI;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QACE,OAAa,MACb,kBAA2B,OAC3B,YAAqB,OACrB,gBAAyB,OACzB;AACA,UAAM,eAAe,KAAK,aAAa,IAAI;AAC3C,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AACA,QAAI,CAAC,KAAK,QAAQ,oBAAqB,MAAK,cAAc,cAAc,SAAS;AAAA,aACxE,CAAC,cAAe,MAAK,aAAa,YAAY;AACvD,gBAAW,iBAAiB,YAAY;AACxC,SAAK,SAAS,YAAY;AAC1B,QAAI,CAAC,mBAAmB,OAAO,KAAK,QAAQ,aAAa,YAAY;AACnE,WAAK,QAAQ,SAAS,KAAK,MAAM,YAAY;AAAA,IAC/C;AAAA,EACF;AAAA,EAEA,aAAa,MAAY;AACvB,QAAI,CAAC,MAAM;AACT,WAAK,mBAAmB,IAAI;AAC5B,aAAO,KAAK,KAAK;AAAA,IACnB;AACA,QAAI,OAAO,SAAS,UAAU;AAC5B,aAAO,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC;AAAA,IAClC;AACA,QAAI,CAAC,YAAW,QAAQ,IAAI,GAAG;AAC7B;AAAA,IACF;AACA,UAAM,MAAM,KAAK,QAAQ,SACvB,MAAM,KAAK,QAAQ;AACrB,QAAI,YAAW,QAAQ,GAAG,KAAK,OAAO,KAAK;AACzC,aAAO;AAAA,IACT,WAAW,YAAW,QAAQ,GAAG,KAAK,OAAO,KAAK;AAChD,aAAO;AAAA,IACT;AACA,WAAO,IAAI,KAAK,KAAK,QAAQ,CAAC;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAc,MAAY,WAAoB;AAC5C,QAAI,CAAC,WAAW;AACd,WAAK,OAAO;AAAA,IACd,WAAW,WAAW;AACpB,WAAK,UAAU;AAAA,IACjB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,MAAY;AACvB,UAAM,eAAe,KAAK,OAAO,KAAK,CAAC,SAAS;AAC9C,aAAO,KAAK,QAAQ,MAAM,KAAK,QAAQ,IAAI,OAAO;AAAA,IACpD,CAAC;AACD,QAAI,CAAC,cAAc;AACjB,WAAK,MAAM,KAAK,IAAI;AAAA,IACtB,OAAO;AACL,WAAK,MAAM,OAAO,KAAK,MAAM,QAAQ,YAAY,GAAG,CAAC;AAAA,IACvD;AACA,SAAK,MAAM,KAAK,CAAC,GAAS,MAAa,EAAE,QAAQ,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAE;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,IAAI,MAAM;AACpB,OAAG,aAAa,aAAa,KAAK,SAAS,IAAI,CAAC;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB;AACf,QAAI,CAAC,KAAK,SAAS,qBAAqB;AACtC,WAAK,cAAc,KAAK,IAAI,KAAK,IAAI;AACrC,UAAI,KAAK,SAAS,aAAa;AAC7B,aAAK,cAAc,KAAK,WAAW,KAAK,OAAO;AAAA,MACjD;AACA;AAAA,IACF;AACA,SAAK,gCAAgC;AAAA,EACvC;AAAA,EAEA,kCAAkC;AAChC,UAAM,aAAa,MAAM,KAAK,KAAK,OAAO,EAAE,OAAO,CAAC,IAAI,UAAU;AAChE,UAAI,QAAQ,KAAK,MAAM,SAAS,EAAG,QAAO;AAAA,IAC5C,CAAC;AACD,eAAW,QAAQ,CAAC,OAAO;AACzB,SAAG,OAAO;AAAA,IACZ,CAAC;AACD,SAAK,MAAM,QAAQ,CAAC,MAAY,UAAkB;AAChD,UAAI,MAAM,KAAK,KAAK,OAAO,EAAE,KAAK,GAAG;AACnC,aAAK,cAAc,KAAK,QAAQ,KAAK,GAAG,IAAI;AAC5C;AAAA,MACF;AAEA,YAAM,SAAS,KAAK,gBAAgB;AACpC,WAAK,cAAc,QAAQ,IAAI;AAC/B,WAAK,QAAQ,KAAK,MAAM;AAAA,IAC1B,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,IAAI,MAAM;AACtB,QAAI,GAAG,QAAQ,QAAQ;AACrB,WAAK,YAAY,IAAI,IAAI;AACzB,SAAG,QAAQ,KAAK,WAAW,MAAM,YAAY;AAAA,IAC/C,OAAO;AACL,SAAG,QAAQ,KAAK,SAAS,IAAI;AAAA,IAC/B;AACA,SAAK,GAAG;AAAA,MACN,IAAI,YAAY,UAAU;AAAA,QACxB,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,QAAQ,EAAE,SAAS,KAAK;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAmB,MAAY,UAAgB,MAAM;AACnD,UAAM,cAAc,YAAW,QAAQ,IAAI,IAAI,OAAO,oBAAI,KAAK;AAI/D,QAAI,CAAC,KAAK,QAAQ,aAAa;AAC7B,WAAK,WAAW,cAAc,KAAK,WAAW,aAAa,YAAY;AAAA,IACzE,OAAO;AACL,YAAM,iBAAiB,YAAW,QAAQ,OAAO,IAAI,UAAU,oBAAI,KAAK;AACxE,WAAK,WAAW,cAAc,GAAG,KAAK,WAAW,aAAa,OAAO,CAAC,MAAM,KAAK,WAAW,gBAAgB,OAAO,CAAC;AAAA,IACtH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,MAAY;AACnB,QAAI,cAAc;AAClB,QAAI,CAAC,YAAW,QAAQ,IAAI,GAAG;AAC7B;AAAA,IACF;AACA,QAAI,KAAK,WAAW;AAClB,YAAM,mBAAmB,IAAI,KAAK,KAAK,UAAU,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC,EAAE,OAAO,CAAC,GAClF,kBAAkB,IAAI;AAAA,QACpB,KAAK,UAAU,KAAK,UAAU,SAAS,CAAC,EAAE;AAAA,QAC1C,KAAK,UAAU,KAAK,UAAU,SAAS,CAAC,EAAE;AAAA,QAC1C;AAAA,MACF,GACA,cAAc,KAAK,QAAQ;AAE7B,sBAAgB,SAAS,gBAAgB,SAAS,IAAI,CAAC;AACvD,sBAAgB,QAAQ,gBAAgB,QAAQ,IAAI,CAAC;AACrD,oBACE,cAAc,iBAAiB,QAAQ,KAAK,gBAAgB,QAAQ,IAAI;AAAA,IAC5E;AACA,QAAI,aAAa;AACf,WAAK,YAAY;AAAA,QACf;AAAA,UACE,OAAO,KAAK,SAAS;AAAA,UACrB,MAAM,KAAK,YAAY;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AACA,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,kBAAkB;AAChB,SAAK,UAAU,CAAC,IAAI,KAAK,eAAe,KAAK,UAAU,CAAC,CAAC;AACzD,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,eAAe,UAAU;AACvB,QAAI,SAAS,QAAQ,GAAG;AACtB,eAAS,QAAQ,KAAK,KAAK,KAAK,IAAI,SAAS,KAAK,IAAI,EAAE;AACxD,eAAS,SAAS;AAAA,IACpB;AACA,QAAI,SAAS,QAAQ,IAAI;AACvB,eAAS,QAAQ,KAAK,MAAM,KAAK,IAAI,SAAS,KAAK,IAAI,EAAE;AACzD,eAAS,SAAS;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,YAAY;AACV,SAAK,UAAU,CAAC,EAAE;AAClB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,YAAY;AACV,SAAK,UAAU,CAAC,EAAE;AAClB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,OAAO,MAAM,OAAO,QAAQ;AAC1B,UAAM,MAAM,oBAAI,KAAK,GACnB,OAAO,YAAW,gBAAgB,MAAM,KAAK,GAC7C,OAAO,CAAC;AACV,QAAI,SAAS,IAAI,KAAK,MAAM,OAAO,CAAC,EAAE,OAAO,GAC3C,MAAM,CAAC;AACT,gBAAW,iBAAiB,GAAG;AAC/B,QAAI,KAAK,QAAQ,WAAW,GAAG;AAC7B,gBAAU,KAAK,QAAQ;AACvB,UAAI,SAAS,GAAG;AACd,kBAAU;AAAA,MACZ;AAAA,IACF;AACA,UAAM,gBAAgB,UAAU,IAAI,KAAK,QAAQ,GAC/C,YAAY,UAAU,KAAK,IAAI,QAAQ,GACvC,sBAAsB,UAAU,IAAI,OAAO,IAAI,MAC/C,kBAAkB,UAAU,KAAK,OAAO,IAAI,MAC5C,sBAAsB,YAAW,gBAAgB,qBAAqB,aAAa;AACrF,QAAI,QAAQ,OAAO,QACjB,QAAQ;AACV,WAAO,QAAQ,GAAG;AAChB,eAAS;AAAA,IACX;AACA,aAAS,IAAI;AACb,QAAI,iBAAiB;AACrB,aAAS,IAAI,GAAG,IAAI,GAAG,IAAI,OAAO,KAAK;AACrC,YAAM,MAAM,IAAI,KAAK,MAAM,OAAO,KAAK,IAAI,OAAO,GAChD,UAAU,YAAW,cAAc,KAAK,GAAG,GAC3C,WAAW,KAAK,QAAQ,OAAO,QAAQ,IAAI,aAAa,CAAC,MAAM,IAC/D,UAAU,IAAI,UAAU,KAAK,OAAO,QACpC,eACE,KAAK,QAAQ,cAAc,YAAW,cAAc,KAAK,QAAQ,YAAY,GAAG,GAClF,aAAa,KAAK,QAAQ,YAAY,YAAW,cAAc,KAAK,QAAQ,UAAU,GAAG,GACzF,YACE,KAAK,QAAQ,cACb,KAAK,QAAQ,YACb,KAAK,QAAQ,aAAa,OAC1B,MAAM,KAAK,QAAQ,UACrB,aACG,KAAK,QAAQ,WAAW,MAAM,KAAK,QAAQ,WAC3C,KAAK,QAAQ,WAAW,MAAM,KAAK,QAAQ,WAC3C,KAAK,QAAQ,mBAAmB,YAAW,WAAW,GAAG,KACzD,KAAK,QAAQ,gBAAgB,KAAK,QAAQ,aAAa,GAAG,GAC7D,mBAAmB,KAAK,QAAQ,eAAe,KAAK,QAAQ,KAAK,WAAW,YAAW,cAAc,KAAK,MAAM,GAAG,GACnH,iBAAiB,KAAK,QAAQ,eAAe,KAAK,WAAW,YAAW,cAAc,KAAK,SAAS,GAAG,GACvG,cACE,KAAK,QAAQ,eACb,YAAW,QAAQ,KAAK,OAAO,KAC/B,YAAW,oBAAoB,KAAK,KAAK,MAAM,KAAK,OAAO;AAC/D,UAAI,YAAY,KAAK,IAAI,SACvB,cAAc,OACd,aAAa;AAEf,UAAI,aAAa;AACjB,UAAI,YAAW,QAAQ,KAAK,IAAI,GAAG;AACjC,qBAAa,YAAW,cAAc,KAAK,KAAK,IAAI;AAAA,MACtD;AAEA,UAAI,CAAC,cAAc,YAAW,QAAQ,KAAK,OAAO,GAAG;AACnD,qBAAa,YAAW,cAAc,KAAK,KAAK,OAAO;AAAA,MACzD;AAEA,UACE,KAAK,QAAQ,uBACb,KAAK,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,MAAM,IAAI,QAAQ,CAAC,GAC3D;AACA,qBAAa;AAAA,MACf;AAEA,UAAI,SAAS;AACX,YAAI,IAAI,QAAQ;AACd,sBAAY,sBAAsB;AAClC,wBAAc;AACd,uBAAa;AAAA,QACf,OAAO;AACL,sBAAY,YAAY;AACxB,wBAAc;AACd,uBAAa;AAAA,QACf;AAAA,MACF;AAEA,YAAM,YAAY;AAAA,QAChB,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iCAAiC,KAAK,QAAQ;AAAA,QAC9C;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,UAAI,KAAK,KAAK,UAAU,SAAS,CAAC;AAElC,UAAI,EAAE,MAAM,GAAG;AACb,aAAK,KAAK,KAAK,UAAU,KAAK,KAAK,QAAQ,OAAO,cAAc,CAAC;AACjE,cAAM,CAAC;AACP,YAAI;AACJ,yBAAiB;AAAA,MACnB;AAAA,IACF;AACA,WAAO,KAAK,YAAY,KAAK,SAAS,MAAM,MAAM;AAAA,EACpD;AAAA,EAEA,UAAU,MAAM;AACd,UAAM,WAAW;AAAA,MACb,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA,MACX,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,aAAa;AAAA,IACf,GACA,eAAe,EAAE,CAAC,cAAc,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,eAAe,IAAI,KAAK,KAAK,IAAI,MAAM,KAAK,EAAE,WAAW,IACjI,MAAM,CAAC,gBAAgB;AAEzB,QAAI,KAAK,SAAS;AAChB,UAAI,KAAK,iCAAiC;AACxC,YAAI,KAAK,0BAA0B;AACnC,YAAI,KAAK,uBAAuB;AAAA,MAClC,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAEA,eAAW,CAAC,UAAU,SAAS,KAAK,OAAO,QAAQ,QAAQ,GAAG;AAC5D,UAAI,KAAK,eAAe,QAAQ,KAAK,KAAK,QAAQ,GAAG;AACnD,YAAI,KAAK,SAAS;AAAA,MACpB;AAAA,IACF;AAEA,WACE,iBAAiB,KAAK,GAAG,YAAY,IAAI,KAAK,GAAG,CAAC,oBAAoB,YAAY,oEAChB,KAAK,IAAI,iBAAiB,KAAK,KAAK,eAAe,KAAK,GAAG,KAAK,KAAK,GAAG;AAAA,EAG9I;AAAA,EAEA,UAAU,MAAM,OAAO,eAAe;AACpC,WACE,+BACC,gBAAgB,iBAAiB,MAClC,QACC,QAAQ,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE,IACvC;AAAA,EAEJ;AAAA,EAEA,YAAY,MAAM,MAAM,QAAQ;AAC9B,WACE,wIACA,SACA,OACA,KAAK,WAAW,IAAI,IACpB,KAAK,WAAW,IAAI,IACpB;AAAA,EAEJ;AAAA,EAEA,WAAW,MAAM;AACf,UAAM,MAAM,CAAC;AACb,QAAI;AACJ,SAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,YAAM,OAAO,YAAW,QAAQ,KAAK,cAAc,MAAM,CAAC,CAAC;AAC3D,YAAM,SAAS,YAAW,QAAQ,KAAK,cAAc,MAAM,GAAG,IAAI,CAAC;AACnE,UAAI,KAAK,gCAAgC,IAAI,KAAK,MAAM,cAAc;AAAA,IACxE;AACA,WAAO,iBAAiB,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,KAAK,EAAE,IAAI;AAAA,EACvE;AAAA,EAEA,WAAW,MAAM;AACf,WAAO,YAAY,KAAK,KAAK,EAAE,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,YAAY,MAAc,OAAe;AAC/C,UAAM,OAAO,KAAK;AAClB,UAAM,YAAY,SAAS,KAAK;AAChC,UAAM,YAAY,SAAS,KAAK;AAChC,WAAO;AAAA,MACL,MAAM,EAAE,cAAc,UAAU,KAAK,KAAK,YAAY;AAAA,MACtD,MAAM,EAAE,cAAc,UAAU,MAAM,KAAK,YAAY;AAAA,IACzD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUQ,kBAAkB,MAAsB;AAC9C,UAAM,IAAI,KAAK;AACf,WAAO;AAAA,MACL;AAAA,MACA,EAAE;AAAA,MACF,EAAE;AAAA,MACF,EAAE;AAAA,MACF,EAAE;AAAA,MACF,MAAM,QAAQ,EAAE,SAAS,IAAI,EAAE,UAAU,KAAK,GAAG,IAAI,EAAE;AAAA,MACvD,EAAE;AAAA,MACF,EAAE;AAAA,IACJ,EAAE,KAAK,GAAG;AAAA,EACZ;AAAA,EAEA,YAAY,UAAU,GAAG,MAAM,OAAO,SAAS,QAAQ;AACrD,UAAM,OAAO,KAAK,SAChB,YAAY,SAAS,KAAK,SAC1B,YAAY,SAAS,KAAK;AAC5B,QAAI,GACF,GACA,MAAM,CAAC,GACP,OACE,cACA,SACA;AAKJ,UAAM,EAAE,MAAM,KAAK,IAAI,KAAK,YAAY,MAAM,KAAK;AAEnD,SAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,UAAI;AAAA,QACF,qBACG,SAAS,UAAU,IAAI,IAAI,KAAK,IAAI,KACrC,OACC,MAAM,QAAQ,yBAAyB,OACtC,aAAa,IAAI,KAAK,YAAc,aAAa,IAAI,KAAK,WACxD,wBACA,MACJ,MACA,YAAW,QAAQ,KAAK,KAAK,OAAO,CAAC,CAAC,IACtC;AAAA,MACJ;AAAA,IACF;AAEA,UAAM,YACJ,uEACA,IAAI,KAAK,EAAE,IACX;AAEF,QAAI,MAAM,QAAQ,KAAK,SAAS,GAAG;AACjC,UAAI,KAAK,UAAU,CAAC;AACpB,UAAI,KAAK,UAAU,CAAC,IAAI;AAAA,IAC1B,OAAO;AACL,UAAI,OAAO,KAAK;AAChB,UAAI,IAAI,OAAO,KAAK;AAAA,IACtB;AAEA,SAAK,MAAM,CAAC,GAAG,IAAI,KAAK,KAAK,KAAK,SAAS,KAAK;AAC9C,UAAI,KAAK,KAAK,SAAS;AACrB,YAAI,KAAK,kBAAkB,CAAC,KAAK,MAAM,OAAO,wBAAwB,EAAE,IAAI,CAAC,WAAW;AAAA,MAC1F;AAAA,IACF;AACA,QAAI,KAAK,iBAAkB,KAAI,QAAQ;AAEvC,UAAM,WAAW,oEAAoE,IAAI,KAAK,EAAE,CAAC;AAEjG,UAAM,YACJ;AACF,YAAQ,4BACN,OAAO,KAAK,cAEd,uBAAuB,SAAS;AAEhC,YAAQ;AACR,QAAI,KAAK,oBAAoB;AAC3B,cAAQ,WAAW;AAAA,IACrB,OAAO;AACL,cAAQ,YAAY;AAAA,IACtB;AACA,YAAQ;AAER,UAAM,aACJ;AACF,YAAQ,4BACN,OAAO,KAAK,cAEd,uBAAuB,UAAU;AAEjC,WAAQ,QAAQ;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBQ,YAAY,IAAgB;AAClC,SAAK;AACL,QAAI;AACF,SAAG;AAAA,IACL,UAAE;AACA,WAAK;AACL,UAAI,KAAK,eAAe,KAAK,KAAK,YAAY;AAC5C,aAAK,aAAa;AAClB,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,OAAO;AAEL,QAAI,KAAK,aAAa,GAAG;AACvB,WAAK,aAAa;AAClB;AAAA,IACF;AACA,UAAM,OAAO,KAAK,SAChB,UAAU,KAAK,SACf,UAAU,KAAK,SACf,WAAW,KAAK,UAChB,WAAW,KAAK;AAElB,QAAI,KAAK,MAAM,SAAS;AACtB,WAAK,KAAK;AACV,UAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,KAAK,UAAU;AAC1C,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AACA,QAAI,KAAK,MAAM,SAAS;AACtB,WAAK,KAAK;AACV,UAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,KAAK,UAAU;AAC1C,aAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAEA,UAAM,OAAO,KAAK,UAAU,CAAC,EAAE;AAC/B,UAAM,QAAQ,KAAK,UAAU,CAAC,EAAE;AAEhC,QAAI,CAAC,KAAK,QAAQ,aAAa;AAC7B,WAAK,mBAAmB,KAAK,IAAI;AAAA,IACnC,OAAO;AACL,WAAK,mBAAmB,KAAK,MAAM,KAAK,OAAO;AAAA,IACjD;AAMA,UAAM,MAAM,KAAK,kBAAkB,IAAI;AACvC,QAAI,QAAQ,KAAK,gBAAgB,KAAK,WAAW,cAAc,sBAAsB,GAAG;AACtF,WAAK,eAAe,MAAM,KAAK;AAAA,IACjC,OAAO;AACL,WAAK,eAAe;AAGpB,WAAK,UAAU,sBAAsB,MAAM,KAAK;AAChD,WAAK,iBAAiB,MAAM,KAAK;AAAA,IACnC;AACA,SAAK,qBAAqB,MAAM,KAAK;AAErC,QAAI,OAAO,KAAK,QAAQ,WAAW,YAAY;AAC7C,WAAK,QAAQ,OAAO,KAAK,IAAI;AAAA,IAC/B;AAAA,EACF;AAAA;AAAA,EAGQ,iBAAiB,MAAc,OAAe;AACpD,SAAK,eAAe;AACpB,SAAK,WAAW,YAAY,KAAK,YAAY,MAAM,GAAG,MAAM,OAAO,MAAM,KAAK,OAAO;AAErF,UAAM,aAAa,KAAK,WAAW,cAAc,mBAAmB;AACpE,UAAM,cAAc,KAAK,WAAW,cAAc,oBAAoB;AAEtE,eAAW,KAAK,YAAY;AAAA,MAC1B,SAAS;AAAA,MACT,iBAAiB,EAAE,WAAW,SAAS,MAAM,gBAAgB,MAAM;AAAA,IACrE,CAAC;AACD,eAAW,KAAK,aAAa;AAAA,MAC3B,SAAS;AAAA,MACT,iBAAiB,EAAE,WAAW,SAAS,MAAM,gBAAgB,MAAM;AAAA,IACrE,CAAC;AAGD,eAAW,iBAAiB,UAAU,KAAK,iBAAiB;AAC5D,gBAAY,iBAAiB,UAAU,KAAK,kBAAkB;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,eAAe,MAAc,OAAe;AAClD,UAAM,cAAc,KAAK,WAAW,cAAc,oBAAoB;AACtE,QAAI,eAAe,YAAY,UAAU,MAAM,SAAS,GAAG;AACzD,kBAAY,QAAQ,MAAM,SAAS;AAEnC,iBAAW,YAAY,WAAW,GAAG,QAAQ;AAAA,IAC/C;AAEA,UAAM,EAAE,MAAM,KAAK,IAAI,KAAK,YAAY,MAAM,KAAK;AACnD,SAAK,WAAW,cAAc,aAAa,GAAG,UAAU,OAAO,eAAe,CAAC,IAAI;AACnF,SAAK,WAAW,cAAc,aAAa,GAAG,UAAU,OAAO,eAAe,CAAC,IAAI;AAAA,EACrF;AAAA;AAAA,EAGQ,qBAAqB,MAAc,OAAe;AACxD,UAAM,OAAO,KAAK,OAAO,MAAM,OAAO,KAAK,OAAO;AAClD,UAAM,WAAW,KAAK,WAAW,cAAc,2BAA2B;AAC1E,QAAI,SAAU,UAAS,YAAY;AAAA,QAC9B,MAAK,WAAW,mBAAmB,aAAa,IAAI;AAAA,EAC3D;AAAA,EAEA,sBAAsB;AACpB,SAAK,GAAG,iBAAiB,SAAS,KAAK,iBAAiB;AACxD,SAAK,GAAG,iBAAiB,WAAW,KAAK,mBAAmB;AAC5D,SAAK,GAAG,iBAAiB,UAAU,KAAK,kBAAkB;AAC1D,SAAK,WAAW,iBAAiB,SAAS,KAAK,oBAAoB;AAAA,EAOrE;AAAA,EAEA,kBAAkB;AAChB,UAAM,WAAW,SAAS,cAAc,UAAU;AAClD,aAAS,YAAY,YAAW,UAAU,KAAK;AAE/C,SAAK,cAA2B,SAAS,QAAQ;AAEjD,SAAK,aAAa,KAAK,YAAY,cAAc,sBAAsB;AACvE,SAAK,aAAa,KAAK,YAAY,cAAc,YAAY;AAC7D,SAAK,aAAa,KAAK,YAAY,cAAc,YAAY;AAM7D,SAAK,SAAS,KAAK,YAAY,cAAc,oBAAoB;AAEjE,SAAK,UAAU;AAAA,MACb,GAAG,CAAC,SAAe;AACjB,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,MACA,IAAI,CAAC,SAAe;AAClB,cAAM,IAAI,KAAK,QAAQ;AACvB,gBAAQ,IAAI,KAAK,MAAM,MAAM;AAAA,MAC/B;AAAA,MACA,KAAK,CAAC,SAAe;AACnB,eAAO,KAAK,QAAQ,KAAK,cAAc,KAAK,OAAO,CAAC;AAAA,MACtD;AAAA,MACA,MAAM,CAAC,SAAe;AACpB,eAAO,KAAK,QAAQ,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,MACjD;AAAA,MACA,GAAG,CAAC,SAAe;AACjB,eAAO,KAAK,SAAS,IAAI;AAAA,MAC3B;AAAA,MACA,IAAI,CAAC,SAAe;AAClB,cAAM,IAAI,KAAK,SAAS,IAAI;AAC5B,gBAAQ,IAAI,KAAK,MAAM,MAAM;AAAA,MAC/B;AAAA,MACA,KAAK,CAAC,SAAe;AACnB,eAAO,KAAK,QAAQ,KAAK,YAAY,KAAK,SAAS,CAAC;AAAA,MACtD;AAAA,MACA,MAAM,CAAC,SAAe;AACpB,eAAO,KAAK,QAAQ,KAAK,OAAO,KAAK,SAAS,CAAC;AAAA,MACjD;AAAA,MACA,IAAI,CAAC,SAAe;AAClB,gBAAQ,KAAK,KAAK,YAAY,GAAG,MAAM,CAAC;AAAA,MAC1C;AAAA,MACA,MAAM,CAAC,SAAe;AACpB,eAAO,KAAK,YAAY;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,SAAK,GAAG,oBAAoB,SAAS,KAAK,iBAAiB;AAC3D,SAAK,GAAG,oBAAoB,WAAW,KAAK,mBAAmB;AAC/D,SAAK,GAAG,oBAAoB,UAAU,KAAK,kBAAkB;AAC7D,SAAK,WAAW,oBAAoB,SAAS,KAAK,oBAAoB;AACtE,QAAI,KAAK,QAAQ,eAAe,KAAK,WAAW;AAC9C,WAAK,UAAU,oBAAoB,SAAS,KAAK,iBAAiB;AAClE,WAAK,UAAU,oBAAoB,YAAY,KAAK,mBAAmB;AACvE,WAAK,UAAU,oBAAoB,UAAU,KAAK,kBAAkB;AAAA,IACtE;AAAA,EACF;AAAA;AAAA,EAgGA,UAAU,OAAO;AACf,QAAI,CAAC,MAAM,KAAK,GAAG;AACjB,WAAK,UAAU,CAAC,EAAE,QAAQ,SAAS,OAAO,EAAE;AAC5C,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA;AAAA,EAGA,SAAS,MAAM;AACb,QAAI,CAAC,MAAM,IAAI,GAAG;AAChB,WAAK,UAAU,CAAC,EAAE,OAAO,SAAS,MAAM,EAAE;AAC1C,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EA4BA,cAAc,MAAM,KAAK,OAAgB,OAAO;AAC9C,WAAO,KAAK;AACZ,WAAO,OAAO,GAAG;AACf,aAAO;AAAA,IACT;AACA,WAAO,OAAO,KAAK,KAAK,eAAe,GAAG,IAAI,KAAK,KAAK,SAAS,GAAG;AAAA,EACtE;AAAA,EAEA,kBAAkB;AAChB,UAAM,YAA8B,KAAK,GAAG,UAAU,IAAI;AAG1D,cAAU,gBAAgB,IAAI;AAC9B,cAAU,iBAAiB,SAAS,KAAK,iBAAiB;AAC1D,cAAU,iBAAiB,YAAY,KAAK,mBAAmB;AAC/D,cAAU,iBAAiB,UAAU,KAAK,kBAAkB;AAC5D,SAAK,GAAG,cAAc,YAAY,SAAS;AAC3C,WAAO;AAAA,EACT;AAAA;AAAA,EAmBA,OAAO;AACL,YAAQ,KAAK,iFAAiF;AAC9F,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,YAAQ;AAAA,MACN;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAqBF;AAlBI,YAAW,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA7rCpB,IAAM,aAAN;;;ACtQP,IAAMC,cAA6B;AAAA,EACjC,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AACd;AAEO,IAAM,WAAN,MAAM,kBAAiB,UAA2B;AAAA,EAuBvD,YAAY,IAAiB,SAAmC;AAC9D,UAAM,IAAI,SAAS,SAAQ;AA0E7B,SAAQ,uBAAuB,MAAM;AACnC,WAAK,sBAAsB;AAAA,IAC7B;AAEA,SAAQ,0BAA0B,CAAC,MAAqB;AACtD,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,aAAK,sBAAsB;AAAA,MAC7B;AAAA,IACF;AAEA,SAAQ,wBAAwB,MAAM;AAEpC,UAAI,KAAK,kBAAkB,SAAU,KAAK,iBAAiB,KAAK,cAAgB,MAAK,MAAM;AAAA,UACtF,MAAK,KAAK;AAAA,IACjB;AAEA,SAAQ,sBAAsB,MAAM;AAClC,UAAI,KAAK,cAAe,MAAK,MAAM;AAAA,IACrC;AAEA,SAAQ,sBAAsB,MAAM;AAClC,UAAI,KAAK,cAAe,MAAK,MAAM;AAAA,IACrC;AAEA,SAAQ,sBAAsB,CAAC,MAAqB;AAClD,UAAI,MAAM,KAAK,IAAI,SAAS,EAAE,GAAG,KAAK,KAAK,iBAAiB,KAAK,cAAe,MAAK,MAAM;AAAA,IAC7F;AAuMA;AAAA;AAAA;AAAA,gBAAO,MAAM;AACX,WAAK,YAAY;AAGjB,YAAM,aAAa,KAAK,GAAG,sBAAsB;AACjD,YAAM,kBAAkB,KAAK,YAAY,sBAAsB;AAC/D,WAAK,gBAAgB,WAAW;AAChC,WAAK,iBAAiB,WAAW;AAEjC,WAAK,gBAAgB;AACrB,WAAK,GAAG,UAAU,IAAI,QAAQ;AAC9B,WAAK,gBAAgB;AAErB,UAAI,OAAO,KAAK,QAAQ,gBAAgB;AACtC,aAAK,QAAQ,YAAY,KAAK,MAAM,KAAK,EAAE;AAE7C,WAAK,YAAY,MAAM,QAAQ,gBAAgB,QAAQ;AACvD,WAAK,YAAY,MAAM,SAAS,gBAAgB,SAAS;AACzD,WAAK,YAAY,MAAM,WAAW;AAClC,WAAK,YAAY,MAAM,MAAM;AAC7B,WAAK,YAAY,MAAM,OAAO;AAC9B,WAAK,8BAA8B;AAEnC,WAAK,GAAG,MAAM,WAAW;AACzB,WAAK,GAAG,MAAM,SAAS;AACvB,WAAK,GAAG,MAAM,aAAa;AAE3B,WAAK,YAAY,KAAK,GAAG,aAAa,OAAO;AAC7C,WAAK,aAAa,KAAK,GAAG,aAAa,QAAQ;AAC/C,UAAI,KAAK,WAAW;AAClB,aAAK,GAAG,MAAM,QAAQ,KAAK,YAAY;AACvC,aAAK,GAAG,gBAAgB,OAAO;AAAA,MACjC;AACA,UAAI,KAAK,YAAY;AACnB,aAAK,GAAG,MAAM,SAAS,KAAK,aAAa;AACzC,aAAK,GAAG,gBAAgB,QAAQ;AAAA,MAClC;AACA,WAAK,YAAY;AAEjB,UAAI,KAAK,YAAY,GAAI,MAAK,YAAY;AAE1C,YAAM,eAAe,KAAK,gBAAgB,KAAK;AAC/C,YAAM,gBAAgB,KAAK,iBAAiB,KAAK;AACjD,WAAK,WAAW;AAChB,WAAK,YAAY;AACjB,UAAI,eAAe,eAAe;AAEhC,cAAM,QAAQ,KAAK,iBAAiB,KAAK;AACzC,aAAK,WAAW,KAAK,cAAc;AACnC,aAAK,YAAY,KAAK,cAAc,MAAM;AAAA,MAC5C,OAAO;AAEL,cAAM,QAAQ,KAAK,gBAAgB,KAAK;AACxC,aAAK,WAAW,KAAK,eAAe,MAAM;AAC1C,aAAK,YAAY,KAAK,eAAe;AAAA,MACvC;AACA,WAAK,gBAAgB;AAErB,aAAO,iBAAiB,UAAU,KAAK,qBAAqB,EAAE,SAAS,KAAK,CAAC;AAC7E,aAAO,iBAAiB,UAAU,KAAK,qBAAqB,EAAE,SAAS,KAAK,CAAC;AAC7E,aAAO,iBAAiB,SAAS,KAAK,mBAAmB;AAAA,IAC3D;AAKA;AAAA;AAAA;AAAA,iBAAQ,MAAM;AACZ,WAAK,YAAY;AACjB,WAAK,gBAAgB;AAErB,UAAI,OAAO,KAAK,QAAQ,iBAAiB;AACvC,aAAK,QAAQ,aAAa,KAAK,MAAM,KAAK,EAAE;AAK9C,aAAO,oBAAoB,UAAU,KAAK,mBAAmB;AAC7D,aAAO,oBAAoB,UAAU,KAAK,mBAAmB;AAC7D,aAAO,oBAAoB,SAAS,KAAK,mBAAmB;AAC5D,WAAK,eAAe;AACpB,WAAK,iBAAiB;AACtB,UAAI,KAAK,YAAY,GAAI,MAAK,eAAe;AAAA,IAC/C;AA5XE,SAAK,GAAG,qBAAqB,IAAI;AAEjC,SAAK,UAAU;AAAA,MACb,GAAG,UAAS;AAAA,MACZ,GAAG;AAAA,IACL;AAEA,SAAK,gBAAgB;AACrB,SAAK,gBAAgB;AACrB,SAAK,cAAc,SAAS,cAAc,KAAK;AAC/C,SAAK,YAAY,UAAU,IAAI,sBAAsB;AACrD,SAAK,gBAAgB;AACrB,SAAK,iBAAiB;AACtB,SAAK,qBAAqB,KAAK,GAAG,aAAa,OAAO;AACtD,SAAK,UAAU,KAAK,GAAG,aAAa,cAAc,KAAK;AACvD,SAAK,GAAG,WAAW;AAEnB,SAAK,GAAG,OAAO,KAAK,WAAW;AAC/B,SAAK,YAAY,OAAO,KAAK,EAAE;AAC/B,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAA4B;AACrC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAoC,CAAC,GACd;AACvB,WAAO,MAAM,KAAK,KAAK,SAAS,SAAQ;AAAA,EAC1C;AAAA,EAEA,OAAO,YAAY,IAA2B;AAC5C,WAAO,GAAG,qBAAqB;AAAA,EACjC;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,GAAG,qBAAqB,IAAI;AAGjC,SAAK,YAAY,OAAO;AACxB,SAAK,GAAG,gBAAgB,OAAO;AAAA,EACjC;AAAA,EAEQ,sBAAsB;AAC5B,SAAK,GAAG,iBAAiB,SAAS,KAAK,oBAAoB;AAC3D,SAAK,GAAG,iBAAiB,YAAY,KAAK,uBAAuB;AAAA,EACnE;AAAA,EAEQ,uBAAuB;AAC7B,SAAK,GAAG,oBAAoB,SAAS,KAAK,oBAAoB;AAC9D,SAAK,GAAG,oBAAoB,YAAY,KAAK,uBAAuB;AAAA,EACtE;AAAA,EA8BQ,gCAAgC;AACtC,SAAK,uBAAuB,CAAC;AAC7B,QAAI,WAAW,KAAK,YAAY;AAChC,WAAO,aAAa,QAAQ,aAAa,UAAU;AACjD,YAAM,OAAoB;AAC1B,UAAI,KAAK,MAAM,aAAa,WAAW;AACrC,aAAK,MAAM,WAAW;AACtB,aAAK,qBAAqB,KAAK,IAAI;AAAA,MACrC;AACA,iBAAW,SAAS;AAAA,IACtB;AAAA,EACF;AAAA,EAEQ,QAAQ,IAAiB;AAC/B,UAAM,MAAM,GAAG,sBAAsB;AACrC,UAAM,UAAU,SAAS;AACzB,WAAO;AAAA,MACL,KAAK,IAAI,MAAM,OAAO,UAAU,QAAQ;AAAA,MACxC,MAAM,IAAI,OAAO,OAAO,UAAU,QAAQ;AAAA,IAC5C;AAAA,EACF;AAAA,EACQ,cAAoB;AAC1B,SAAK,cAAc,OAAO;AAC1B,SAAK,eAAe,OAAO;AAC3B,SAAK,UAAU,KAAK,GAAG,aAAa,cAAc,KAAK;AAAA,EACzD;AAAA;AAAA,EAGQ,kBAAwB;AAC9B,SAAK,GAAG,MAAM,YAAY,KAAK,UAAU,SAAS,IAAI;AACtD,SAAK,GAAG,MAAM,WAAW,KAAK,SAAS,SAAS,IAAI;AACpD,UAAM,WAAW,KAAK,QAAQ;AAE9B,SAAK,GAAG,MAAM,aAAa;AAC3B,SAAK,GAAG,MAAM,SAAS,KAAK,iBAAiB;AAC7C,SAAK,GAAG,MAAM,QAAQ,KAAK,gBAAgB;AAC3C,eAAW,MAAM;AAEf,YAAM,oBAAoB,KAAK,QAAQ,KAAK,WAAW;AAEvD,WAAK,GAAG,MAAM,aAAa,UAAU,QAAQ;AAAA,gBACnC,QAAQ;AAAA,eACT,QAAQ;AAAA,cACT,QAAQ;AAAA;AAGhB,WAAK,GAAG,MAAM,SAAS,KAAK,YAAY;AACxC,WAAK,GAAG,MAAM,QAAQ,KAAK,WAAW;AACtC,WAAK,GAAG,MAAM,OACZ,MAAM,sBAAsB,IAC5B,KAAK,cAAc,IACnB,kBAAkB,OAClB,KAAK,WAAW,IAChB;AAEF,WAAK,GAAG,MAAM,MACZ,MAAM,qBAAqB,IAC3B,KAAK,eAAe,IACpB,kBAAkB,MAClB,KAAK,YAAY,IACjB;AAAA,IACJ,GAAG,CAAC;AAEJ,eAAW,MAAM;AACf,WAAK,gBAAgB;AACrB,UAAI,OAAO,KAAK,QAAQ,cAAc,WAAY,MAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,EAAE;AAAA,IAC7F,GAAG,QAAQ;AAAA,EA0Bb;AAAA,EACQ,mBAAyB;AAC/B,UAAM,WAAW,KAAK,QAAQ;AAE9B,SAAK,GAAG,MAAM,aAAa,UAAU,QAAQ;AAAA,cACnC,QAAQ;AAAA,aACT,QAAQ;AAAA,YACT,QAAQ;AAAA;AAGhB,SAAK,GAAG,MAAM,SAAS,KAAK,iBAAiB;AAC7C,SAAK,GAAG,MAAM,QAAQ,KAAK,gBAAgB;AAC3C,SAAK,GAAG,MAAM,OAAO;AACrB,SAAK,GAAG,MAAM,MAAM;AACpB,eAAW,MAAM;AACf,WAAK,YAAY,MAAM,SAAS;AAChC,WAAK,YAAY,MAAM,QAAQ;AAC/B,WAAK,YAAY,MAAM,WAAW;AAClC,WAAK,YAAY,MAAM,MAAM;AAC7B,WAAK,YAAY,MAAM,OAAO;AAE9B,UAAI,KAAK,UAAW,MAAK,GAAG,aAAa,SAAS,KAAK,UAAU,SAAS,CAAC;AAC3E,UAAI,KAAK,WAAY,MAAK,GAAG,aAAa,UAAU,KAAK,WAAW,SAAS,CAAC;AAC9E,WAAK,GAAG,gBAAgB,OAAO;AAC/B,UAAI,KAAK,mBAAoB,MAAK,GAAG,aAAa,SAAS,KAAK,kBAAkB;AAElF,WAAK,GAAG,UAAU,OAAO,QAAQ;AACjC,WAAK,gBAAgB;AAErB,WAAK,qBAAqB,QAAQ,CAAC,cAAe,UAAU,MAAM,WAAW,EAAG;AAEhF,UAAI,OAAO,KAAK,QAAQ,eAAe;AACrC,aAAK,QAAQ,WAAW,KAAK,MAAM,KAAK,EAAE;AAAA,IAC9C,GAAG,QAAQ;AAAA,EACb;AAAA;AAAA,EAGQ,cAAoB;AAC1B,SAAK,gBAAgB,SAAS,cAAc,KAAK;AACjD,SAAK,cAAc,UAAU,IAAI,kBAAkB;AACnD,SAAK,cAAc,YAAY,KAAK;AACpC,aAAS,KAAK,OAAO,KAAK,aAAa;AACvC,SAAK,cAAc,MAAM,UAAU;AAEnC,SAAK,cAAc,MAAM,aAAa;AACtC,SAAK,cAAc,MAAM,UAAU;AACnC,UAAM,WAAW,KAAK,QAAQ;AAC9B,eAAW,MAAM;AACf,WAAK,cAAc,MAAM,aAAa,WAAW,QAAQ;AACzD,WAAK,cAAc,MAAM,UAAU;AAAA,IACrC,GAAG,CAAC;AAAA,EACN;AAAA,EACQ,iBAAuB;AAC7B,UAAM,WAAW,KAAK,QAAQ;AAC9B,SAAK,cAAc,MAAM,aAAa,WAAW,QAAQ;AACzD,SAAK,cAAc,MAAM,UAAU;AACnC,eAAW,MAAM;AACf,WAAK,cAAc,OAAO;AAAA,IAC5B,GAAG,QAAQ;AAAA,EACb;AAAA;AAAA,EAGQ,cAAoB;AAC1B,SAAK,WAAW,SAAS,cAAc,KAAK;AAC5C,SAAK,SAAS,KAAK;AACnB,SAAK,SAAS;AAAA,MACZ;AAAA,MACA,MAAM;AACJ,YAAI,KAAK,cAAe,MAAK,MAAM;AAAA,MACrC;AAAA,MACA,EAAE,MAAM,KAAK;AAAA,IACf;AAGA,SAAK,GAAG,OAAO,KAAK,QAAQ;AAG5B,UAAM,gBAAgB,KAAK,SAAS,sBAAsB;AAC1D,SAAK,SAAS,MAAM,QAAQ,KAAK,cAAc;AAC/C,SAAK,SAAS,MAAM,SAAS,KAAK,eAAe;AACjD,SAAK,SAAS,MAAM,OAAO,KAAK,cAAc,OAAO;AACrD,SAAK,SAAS,MAAM,MAAM,KAAK,cAAc,MAAM;AAGnD,SAAK,SAAS,MAAM,aAAa;AACjC,SAAK,SAAS,MAAM,UAAU;AAC9B,UAAM,WAAW,KAAK,QAAQ;AAC9B,eAAW,MAAM;AACf,WAAK,SAAS,MAAM,aAAa,WAAW,QAAQ;AACpD,WAAK,SAAS,MAAM,UAAU;AAAA,IAChC,GAAG,CAAC;AAAA,EACN;AAAA,EACQ,iBAAuB;AAC7B,UAAM,WAAW,KAAK,QAAQ;AAC9B,SAAK,SAAS,MAAM,aAAa,WAAW,QAAQ;AACpD,SAAK,SAAS,MAAM,UAAU;AAC9B,eAAW,MAAM;AACf,WAAK,gBAAgB;AACrB,WAAK,SAAS,OAAO;AAAA,IACvB,GAAG,QAAQ;AAAA,EACb;AAwFF;;;ACjbA,IAAMC,cAAY;AAAA,EAChB,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AACb;AA9BA;AAgCO,IAAM,SAAN,MAAM,eAAc,UAAwB;AAAA,EACjD,YAAY,IAAiB,SAAgC;AAC3D,UAAM,IAAI,SAAS,MAAK;AACxB,SAAK,GAAG,kBAAkB,IAAI;AAC9B,SAAK,UAAU;AAAA,MACb,GAAG,OAAM;AAAA,MACT,GAAG;AAAA,IACL;AACA,SAAK,GAAG,WAAW;AACnB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAAW;AACpB,WAAOA;AAAA,EACT;AAAA,EAIA,OAAO,KACL,KACA,UAAiC,CAAC,GACjB;AACjB,WAAO,MAAM,KAAK,KAAK,SAAS,MAAK;AAAA,EACvC;AAAA,EAEA,OAAO,YAAY,IAAwB;AACzC,WAAO,GAAG,kBAAkB;AAAA,EAC9B;AAAA,EAEA,UAAU;AAAA,EAAC;AAAA,EACX,sBAAsB;AAAA,EAAC;AAAA,EACvB,uBAAuB;AAAA,EAAC;AAAA,EACxB,sBAAsB;AAAA,EAAC;AAAA,EACvB,sBAAsB;AAAA,EAAC;AAAA,EACvB,yBAAyB;AAAA,EAAC;AAAA,EAC1B,iBAAiB;AAAA,EAAC;AAAA,EAClB,eAAe;AAAA,EAAC;AAAA,EAChB,OAAO;AACL,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,WAAO;AAAA,EACT;AAAA,EAwBA,OAAO,OAAO,QAAQ;AACpB,UAAM,WAAW;AACjB,QAAI,SAAU,QAAO,sBAAK,8BAAL,WAAiB;AACtC,WAAO,sBAAK,qCAAL,WAAwB;AAAA,EACjC;AAGF;AAzEO;AA8CE,gBAAW,SAAC,QAA2B;AAC5C,QAAM,QAAQ,OAAO,SACjB,OAAO,OAAO,OAAO,WAAW,WAAW,OAAO,SAAS,EAAE,UAC7D;AACJ,QAAM,UAAU,OAAO,SACnB,yBAAyB,OAAO,OAAO,WAAW,WAAW,OAAO,SAAS,EAAE,YAC/E;AACJ,SAAO,eAAe,OAAO,EAAE;AAAA,QAC3B,KAAK;AAAA,aACA,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU,EAAE;AAAA,QAC7D,OAAO;AAAA;AAEb;AAEO,uBAAkB,SAAC,QAA2B;AACnD,QAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,SAAO,KAAK,OAAO;AACnB,SAAO;AACT;AAhEK,aAAM,QAAN;AAAA,IAAM,QAAN;;;ACrBP,IAAMC,cAA6B;AAAA,EACjC,qBAAqB;AAAA;AACvB;AAEO,IAAM,YAAN,MAAM,kBAAiB,UAA2B;AAAA,EAOvD,YAAY,IAAiB,SAAmC;AAC9D,UAAM,IAAI,SAAS,SAAQ;AAoH7B,4BAAmB,MAAM;AACvB,WAAK,gBAAgB;AAAA,IACvB;AArHE,SAAK,GAAG,qBAAqB,IAAI;AAEjC,SAAK,UAAU;AAAA,MACb,GAAG,UAAS;AAAA,MACZ,GAAG;AAAA,IACL;AAEA,SAAK,WAAW,OAAO,aAAa,KAAK,QAAQ;AACjD,SAAK,OAAO,KAAK,GAAG,cAAc,KAAK;AACvC,QAAI,CAAC,KAAK,MAAM;AACd,cAAQ,MAAM,yDAAyD;AACvE;AAAA,IACF;AACA,SAAK,gBAAgB;AACrB,SAAK,oBAAoB;AACzB,SAAK,aAAa;AAClB,cAAS,YAAY,KAAK,IAAI;AAAA,EAChC;AAAA,EAEA,WAAW,WAA4B;AACrC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAoC,CAAC,GACd;AACvB,WAAO,MAAM,KAAK,KAAK,SAAS,SAAQ;AAAA,EAC1C;AAAA,EAEA,OAAO,YAAY,IAA2B;AAC5C,WAAO,GAAG,qBAAqB;AAAA,EACjC;AAAA,EAEA,UAAU;AACR,UAAM,QAAQ,UAAS,YAAY,QAAQ,IAAI;AAC/C,QAAI,SAAS,EAAG,WAAS,YAAY,OAAO,OAAO,CAAC;AACpD,QAAI,KAAK,KAAM,MAAK,KAAK,MAAM,YAAY;AAC3C,SAAK,qBAAqB;AAC1B,SAAK,GAAG,qBAAqB,IAAI;AAAA,EACnC;AAAA,EAEA,OAAO,gBAAgB;AACrB,aAAS,IAAI,GAAG,IAAI,UAAS,YAAY,QAAQ,KAAK;AACpD,YAAM,mBAAmB,UAAS,YAAY,CAAC;AAC/C,uBAAiB,gBAAgB,KAAK,gBAAgB;AAAA,IACxD;AAAA,EACF;AAAA,EAiBA,OAAO,sBAAsB;AAC3B,aAAS,IAAI,GAAG,IAAI,UAAS,YAAY,QAAQ,KAAK;AACpD,YAAM,mBAAmB,UAAS,YAAY,CAAC;AAC/C,uBAAiB,WAAW,OAAO,aAAa,iBAAiB,QAAQ;AAAA,IAC3E;AAAA,EACF;AAAA,EAEA,sBAAsB;AACpB,SAAK,MAAM,iBAAiB,QAAQ,KAAK,gBAAgB;AACzD,QAAI,UAAS,YAAY,WAAW,GAAG;AACrC,UAAI,CAAC,UAAS,8BAA8B;AAC1C,kBAAS,+BAA+B,MAAM,SAAS,UAAS,qBAAqB,GAAG;AAAA,MAC1F;AACA,aAAO,iBAAiB,UAAU,UAAS,sBAAsB,EAAE,SAAS,KAAK,CAAC;AAClF,aAAO,iBAAiB,UAAU,UAAS,8BAA8B,EAAE,SAAS,KAAK,CAAC;AAAA,IAC5F;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,SAAK,MAAM,oBAAoB,QAAQ,KAAK,gBAAgB;AAC5D,QAAI,UAAS,YAAY,WAAW,GAAG;AACrC,aAAO,oBAAoB,UAAU,UAAS,oBAAoB;AAClE,aAAO,oBAAoB,UAAU,UAAS,4BAA4B;AAC1E,UAAI,UAAS,iBAAiB,MAAM;AAClC,6BAAqB,UAAS,YAAY;AAC1C,kBAAS,eAAe;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,eAAe;AACb,QAAI,KAAK,KAAM,MAAK,KAAK,MAAM,UAAU;AAAA,EAC3C;AAAA,EAMA,kBAAkB;AAIhB,UAAM,OAAO,KAAK,GAAG,sBAAsB;AAC3C,UAAM,kBAAkB,KAAK,SAAS,IAAI,KAAK,GAAG,cAAc,eAAe;AAC/E,UAAM,YAAY,KAAK,KAAK;AAC5B,UAAM,eAAe,YAAY;AACjC,UAAM,MAAM,KAAK,MAAM,OAAO,UAAU,SAAS,gBAAgB;AACjE,UAAM,SAAS,MAAM;AACrB,UAAM,YAAY,MAAM,qBAAqB;AAC7C,UAAM,eAAe,OAAO;AAC5B,UAAM,eAAe,YAAY;AACjC,UAAM,mBAAmB,eAAe,QAAQ,kBAAkB;AAClE,UAAM,WAAW,eAAe;AAEhC,QAAI,CAAC,KAAK,UAAU;AAClB,WAAK,KAAK,MAAM,YAAY;AAAA,IAC9B,WAAW,SAAS,aAAa,MAAM,YAAY,cAAc;AAC/D,WAAK,KAAK,MAAM,YAAY,qBAAqB,QAAQ;AAAA,IAC3D;AAAA,EACF;AACF;AAtJa,UAGJ,cAA0B,CAAC;AAHvB,UAKI,eAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAL3B,UAkFJ,uBAAuB,MAAM;AAClC,MAAI,UAAS,iBAAiB,KAAM;AACpC,YAAS,eAAe,sBAAsB,MAAM;AAClD,cAAS,eAAe;AACxB,cAAS,cAAc;AAAA,EACzB,CAAC;AACH;AAxFK,IAAM,WAAN;;;ACcP,IAAMC,cAAY;AAAA,EAChB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,kBAAkB;AACpB;AAEO,IAAM,WAAN,MAAM,iBAAgB,UAA0B;AAAA,EAIrD,YAAY,IAAiB,SAAkC;AAC7D,UAAM,IAAI,SAAS,QAAO;AAC1B,SAAK,GAAG,oBAAoB,IAAI;AAEhC,SAAK,UAAU;AAAA,MACb,GAAG,SAAQ;AAAA,MACX,GAAG;AAAA,IACL;AAEA,SAAK,iBAAkB,KAAK,GAAmB;AAC/C,aAAQ,UAAU,KAAK,IAAI;AAC3B,SAAK,oBAAoB;AACzB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,WAAW,WAA2B;AACpC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAmC,CAAC,GACf;AACrB,WAAO,MAAM,KAAK,KAAK,SAAS,QAAO;AAAA,EACzC;AAAA,EAEA,OAAO,YAAY,IAA0B;AAC3C,WAAO,GAAG,oBAAoB;AAAA,EAChC;AAAA,EAEA,UAAU;AACR,IAAC,KAAK,GAAmB,MAAM,MAAM;AACrC,SAAK,kBAAkB;AAEvB,UAAM,QAAQ,SAAQ,UAAU,QAAQ,IAAI;AAC5C,aAAQ,UAAU,OAAO,OAAO,CAAC;AACjC,QAAI,SAAQ,UAAU,WAAW,GAAG;AAClC,WAAK,qBAAqB;AAAA,IAC5B;AACA,SAAK,GAAG,oBAAoB,IAAI;AAAA,EAClC;AAAA,EAEA,OAAO,kBAAkB;AACvB,aAAS,IAAI,GAAG,IAAI,SAAQ,UAAU,QAAQ,KAAK;AACjD,eAAQ,UAAU,CAAC,EAAE,gBAAgB;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,sBAAsB;AACpB,aAAS,iBAAiB,UAAU,SAAQ,iBAAiB,EAAE,SAAS,KAAK,CAAC;AAAA,EAChF;AAAA,EAEA,uBAAuB;AACrB,aAAS,oBAAoB,UAAU,SAAQ,eAAe;AAAA,EAChE;AAAA,EAEA,kBAAkB;AAChB,UAAM,WAAW,MAAM,qBAAqB,IAAI,KAAK,QAAQ;AAE7D,QACE,KAAK,QAAQ,OAAO,YACpB,KAAK,QAAQ,UAAU,YACvB,CAAC,KAAK,GAAG,UAAU,SAAS,QAAQ,GACpC;AACA,WAAK,kBAAkB;AACvB,MAAC,KAAK,GAAmB,MAAM,MAAM,GAAG,KAAK,QAAQ,MAAM;AAC3D,WAAK,GAAG,UAAU,IAAI,QAAQ;AAG9B,UAAI,OAAO,KAAK,QAAQ,qBAAqB,YAAY;AACvD,aAAK,QAAQ,iBAAiB,KAAK,MAAM,QAAQ;AAAA,MACnD;AAAA,IACF;AAGA,QAAI,WAAW,KAAK,QAAQ,OAAO,CAAC,KAAK,GAAG,UAAU,SAAS,SAAS,GAAG;AACzE,WAAK,kBAAkB;AACvB,MAAC,KAAK,GAAmB,MAAM,MAAM;AACrC,WAAK,GAAG,UAAU,IAAI,SAAS;AAG/B,UAAI,OAAO,KAAK,QAAQ,qBAAqB,YAAY;AACvD,aAAK,QAAQ,iBAAiB,KAAK,MAAM,SAAS;AAAA,MACpD;AAAA,IACF;AAGA,QAAI,WAAW,KAAK,QAAQ,UAAU,CAAC,KAAK,GAAG,UAAU,SAAS,YAAY,GAAG;AAC/E,WAAK,kBAAkB;AACvB,WAAK,GAAG,UAAU,IAAI,YAAY;AAClC,MAAC,KAAK,GAAmB,MAAM,MAAM,GAAG,KAAK,QAAQ,SAAS,KAAK,cAAc;AAGjF,UAAI,OAAO,KAAK,QAAQ,qBAAqB,YAAY;AACvD,aAAK,QAAQ,iBAAiB,KAAK,MAAM,YAAY;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAAoB;AAClB,SAAK,GAAG,UAAU,OAAO,WAAW,UAAU,YAAY;AAAA,EAC5D;AAKF;AAFI,SAAQ,YAAY,CAAC;AA7HlB,IAAM,UAAN;;;ACKP,IAAMC,cAA8B;AAAA,EAClC,UAAU;AAAA,EACV,cAAc;AAAA;AAAA,EACd,aAAa;AAAA,EACb,kBAAkB,CAAC,OAAuB;AACxC,WAAO,cAAc,KAAK;AAAA,EAC5B;AAAA,EACA,sBAAsB;AAAA,EACtB,mBAAmB;AACrB;AAEO,IAAM,aAAN,MAAM,mBAAkB,UAA4B;AAAA,EAkBzD,YAAY,IAAiB,SAAoC;AAC/D,UAAM,IAAI,SAAS,UAAS;AAC5B,SAAK,GAAG,sBAAsB,IAAI;AAElC,SAAK,UAAU;AAAA,MACb,GAAG,WAAU;AAAA,MACb,GAAG;AAAA,IACL;AAEA,eAAU,UAAU,KAAK,IAAI;AAC7B,eAAU;AACV,eAAU;AACV,SAAK,SAAS;AACd,SAAK,KAAK,WAAU,WAAW,SAAS;AACxC,SAAK,oBAAoB;AACzB,eAAU,oBAAoB;AAAA,EAChC;AAAA,EAEA,WAAW,WAA6B;AACtC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAqC,CAAC,GACb;AACzB,WAAO,MAAM,KAAK,KAAK,SAAS,UAAS;AAAA,EAC3C;AAAA,EAEA,OAAO,YAAY,IAA4B;AAC7C,WAAO,GAAG,sBAAsB;AAAA,EAClC;AAAA,EAEA,UAAU;AACR,UAAM,eAAe,WAAU,UAAU,QAAQ,IAAI;AACrD,QAAI,gBAAgB,EAAG,YAAU,UAAU,OAAO,cAAc,CAAC;AACjE,UAAM,cAAc,WAAU,gBAAgB,QAAQ,IAAI;AAC1D,QAAI,eAAe,EAAG,YAAU,gBAAgB,OAAO,aAAa,CAAC;AACrE,UAAM,eAAe,WAAU,iBAAiB,QAAQ,KAAK,EAAE;AAC/D,QAAI,gBAAgB,EAAG,YAAU,iBAAiB,OAAO,cAAc,CAAC;AACxE,eAAU;AACV,SAAK,qBAAqB;AAG1B,UAAM,UAAU,SAAS,cAAc,KAAK,QAAQ,iBAAiB,KAAK,GAAG,EAAE,CAAC;AAChF,aAAS,UAAU,OAAO,KAAK,QAAQ,WAAW;AAClD,SAAK,GAAG,sBAAsB,IAAI;AAAA,EACpC;AAAA,EAEA,sBAAsB;AACpB,QAAI,WAAU,WAAW,GAAG;AAI1B,iBAAU,mBAAmB,MAAM,SAAS,WAAU,qBAAqB,KAAK,QAAQ,QAAQ;AAChG,iBAAU,mBAAmB,MAAM,SAAS,WAAU,qBAAqB,GAAG;AAC9E,aAAO,iBAAiB,UAAU,WAAU,kBAAkB,EAAE,SAAS,KAAK,CAAC;AAC/E,aAAO,iBAAiB,UAAU,WAAU,kBAAkB,EAAE,SAAS,KAAK,CAAC;AAC/E,eAAS,KAAK,iBAAiB,SAAS,WAAU,mBAAmB;AAAA,IACvE;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,QAAI,WAAU,WAAW,GAAG;AAC1B,aAAO,oBAAoB,UAAU,WAAU,gBAAgB;AAC/D,aAAO,oBAAoB,UAAU,WAAU,gBAAgB;AAC/D,eAAS,KAAK,oBAAoB,SAAS,WAAU,mBAAmB;AACxE,iBAAU,mBAAmB;AAC7B,iBAAU,mBAAmB;AAAA,IAC/B;AAAA,EACF;AAAA,EA+EA,OAAO,cAAc,KAAa,OAAe,QAAgB,MAA2B;AAC1F,UAAM,OAAO,CAAC;AAGd,UAAM,UAAU,SAAS;AACzB,UAAM,YAAY,QAAQ;AAC1B,UAAM,aAAa,QAAQ;AAC3B,UAAM,UAAU,OAAO;AACvB,UAAM,UAAU,OAAO;AAEvB,aAAS,IAAI,GAAG,IAAI,WAAU,UAAU,QAAQ,KAAK;AACnD,YAAM,YAAY,WAAU,UAAU,CAAC;AACvC,YAAM,UAAU,MAAM,UAAU,QAAQ,gBAAgB;AAMxD,YAAM,MAAM,UAAU,GAAG,sBAAsB;AAC/C,UAAI,IAAI,SAAS,GAAG;AAClB,cAAM,QAAQ,IAAI,MAAM,UAAU,WAChC,SAAS,IAAI,OAAO,UAAU,YAC9B,UAAU,SAAS,IAAI,OACvB,WAAW,QAAQ,IAAI;AAEzB,cAAM,cAAc,EAClB,SAAS,SACT,UAAU,QACV,QAAQ,UACR,WAAW;AAGb,YAAI,aAAa;AACf,eAAK,KAAK,SAAS;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,SAAS;AACP,eAAU,mBAAmB,WAAU,iBAAiB;AAAA,MACtD,CAAC,UAAU,MAAM,sBAAsB,EAAE,WAAW;AAAA,IACtD;AAEA,QAAI,WAAU,iBAAiB,CAAC,GAAG;AACjC,YAAM,UAAU,SAAS;AAAA,QACvB,KAAK,QAAQ,iBAAiB,WAAU,iBAAiB,CAAC,EAAE,EAAE;AAAA,MAChE;AACA,eAAS,UAAU,OAAO,KAAK,QAAQ,WAAW;AAElD,UACE,WAAU,iBAAiB,CAAC,EAAE,sBAAsB,KACpD,KAAK,KAAK,WAAU,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,IAChE;AACA,mBAAU,iBAAiB,QAAQ,KAAK,EAAE;AAAA,MAC5C,OAAO;AACL,mBAAU,iBAAiB,KAAK,KAAK,EAAE;AAAA,MACzC;AAAA,IACF,OAAO;AACL,iBAAU,iBAAiB,KAAK,KAAK,EAAE;AAAA,IACzC;AACA,eAAU,2BAA2B,KAAK,QAAQ,WAAW;AAC7D,UAAM,WAAW,KAAK,QAAQ,iBAAiB,WAAU,iBAAiB,CAAC,EAAE,EAAE;AAC/E,aAAS,cAAc,QAAQ,GAAG,UAAU,IAAI,KAAK,QAAQ,WAAW;AAAA,EAC1E;AAAA,EAEA,QAAQ;AACN,eAAU,mBAAmB,WAAU,iBAAiB;AAAA,MACtD,CAAC,UAAU,MAAM,sBAAsB,EAAE,WAAW;AAAA,IACtD;AAEA,QAAI,WAAU,iBAAiB,CAAC,GAAG;AACjC,YAAM,UAAU,SAAS;AAAA,QACvB,KAAK,QAAQ,iBAAiB,WAAU,iBAAiB,CAAC,EAAE,EAAE;AAAA,MAChE;AACA,eAAS,UAAU,OAAO,KAAK,QAAQ,WAAW;AAElD,iBAAU,mBAAmB,WAAU,iBAAiB,OAAO,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,EAAE;AAExF,UAAI,WAAU,iBAAiB,CAAC,GAAG;AAEjC,cAAM,WAAW,KAAK,QAAQ,iBAAiB,WAAU,iBAAiB,CAAC,EAAE,EAAE;AAC/E,iBAAS,cAAc,QAAQ,GAAG,UAAU,IAAI,KAAK,QAAQ,WAAW;AACxE,mBAAU,2BAA2B,KAAK,QAAQ,WAAW;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAe,2BAA2B,aAAqB;AAC7D,QAAI,WAAU,uBAAuB;AACnC,iBAAU,sBAAsB,UAAU,OAAO,WAAW;AAC5D,iBAAU,wBAAwB;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,OAAe,uBAAuB,SAAS;AAC7C,UAAM,OAAO,QAAQ,sBAAsB;AAC3C,UAAM,WAAW,KAAK;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,OAAe,sBAAsB,SAAS,WAAW,KAAK;AAC5D,UAAM,iBACJ,QAAQ,sBAAsB,EAAE,OAAO,OAAO,WAAW,OAAO;AAClE,UAAM,gBAAgB,OAAO,WAAW,OAAO;AAC/C,UAAM,WAAW,iBAAiB;AAClC,UAAM,YAAY,YAAY,IAAI;AAElC,aAAS,WAAW,aAAa;AAC/B,YAAM,UAAU,cAAc;AAC9B,YAAM,WAAW,KAAK,IAAI,UAAU,UAAU,CAAC;AAC/C,YAAM,UAAU,gBAAgB,WAAW;AAE3C,UAAI,WAAW,GAAG;AAChB,eAAO,SAAS,GAAG,OAAO;AAC1B,8BAAsB,UAAU;AAAA,MAClC,OAAO;AACL,eAAO,SAAS,GAAG,cAAc;AAAA,MACnC;AAAA,IACF;AACA,0BAAsB,UAAU;AAAA,EAClC;AAUF;AA5Ta,WAOJ,wBAA4C;AAAA;AAAA;AAAA;AAAA;AAPxC,WAYI,mBAAiD;AAZrD,WAaI,mBAAiD;AAbrD,WA2GJ,sBAAsB,CAAC,MAAkB;AAC9C,QAAM,UAAU,EAAE;AAClB,WAAS,IAAI,WAAU,UAAU,SAAS,GAAG,KAAK,GAAG,KAAK;AACxD,UAAM,YAAY,WAAU,UAAU,CAAC;AACvC,UAAM,IAAI,SAAS,cAAc,cAAc,UAAU,GAAG,KAAK,IAAI;AACrE,QAAI,YAAY,GAAG;AACjB,QAAE,eAAe;AAEjB,UAAI,UAAU,GAAG,sBAAsB,EAAE,QAAQ,mBAAmB;AAClE,mBAAU;AAAA,UACR,UAAU;AAAA,UACV,UAAU,GAAG,sBAAsB,EAAE,QAAQ;AAAA,QAC/C;AAAA,MACF,OAAO;AACL,kBAAU,GAAG,eAAe,EAAE,UAAU,SAAS,CAAC;AAAA,MACpD;AACA;AAAA,IACF;AAAA,EACF;AACF;AA9HW,WAgIJ,sBAAsB,MAAM;AAEjC,aAAU;AAGV,QAAM,MAAM,MAAM,qBAAqB,GACrC,OAAO,MAAM,sBAAsB,GACnC,QAAQ,OAAO,OAAO,YACtB,SAAS,MAAM,OAAO;AAGxB,QAAM,gBAAgB,WAAU,cAAc,KAAK,OAAO,QAAQ,IAAI;AACtE,WAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,UAAM,YAAY,cAAc,CAAC;AACjC,UAAM,WAAW,UAAU;AAC3B,QAAI,WAAW,GAAG;AAEhB,gBAAU,OAAO;AAAA,IACnB;AAGA,cAAU,SAAS,WAAU;AAAA,EAC/B;AAEA,WAAS,IAAI,GAAG,IAAI,WAAU,gBAAgB,QAAQ,KAAK;AACzD,UAAM,YAAY,WAAU,gBAAgB,CAAC;AAC7C,UAAM,WAAW,UAAU;AAC3B,QAAI,YAAY,KAAK,aAAa,WAAU,QAAQ;AAElD,gBAAU,MAAM;AAChB,gBAAU,SAAS;AAAA,IACrB;AAAA,EACF;AAEA,aAAU,kBAAkB;AAC5B,MAAI,WAAU,UAAU,QAAQ;AAC9B,UAAM,UAAU,WAAU,UAAU,CAAC,EAAE,GAAG,sBAAsB,EAAE;AAClE,QAAI,QAAQ,wBAAwB,WAAU,iBAAiB,WAAW,GAAG;AAC3E,iBAAU,2BAA2B,QAAQ,WAAW;AAGxD,YAAM,cAAc,WAAU,UAC3B,IAAI,CAAC,WAAW,EAAE,OAAO,UAAU,WAAU,uBAAuB,MAAM,EAAE,EAAE,EAAE,EAChF,OAAO,CAAC,UAAU,MAAM,YAAY,CAAC,EACrC,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ,EACtC,IAAI,CAAC,UAAU,MAAM,KAAK;AAC7B,YAAM,oBAAoB,YAAY,SAClC,YAAY,YAAY,SAAS,CAAC,IAClC,WAAU,UAAU,CAAC;AACzB,YAAM,UAAU,SAAS,cAAc,QAAQ,iBAAiB,kBAAkB,GAAG,EAAE,CAAC;AACxF,eAAS,UAAU,IAAI,QAAQ,WAAW;AAC1C,iBAAU,wBAAwB;AAAA,IACpC;AAAA,EACF;AACF;AA+HE,WAAU,YAAY,CAAC;AACvB,WAAU,kBAAkB,CAAC;AAC7B,WAAU,mBAAmB,CAAC;AAC9B,WAAU,SAAS;AACnB,WAAU,aAAa;AACvB,WAAU,SAAS;AA1ThB,IAAM,YAAN;;;ACAP,IAAMC,cAA4B;AAAA,EAChC,MAAM;AAAA,EACN,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,kBAAkB;AACpB;AAEO,IAAM,WAAN,MAAM,iBAAgB,UAA8C;AAAA,EAuBzE,YAAY,IAAiB,SAAkC;AAC7D,UAAM,IAAI,SAAS,QAAO;AA2J5B,SAAQ,wBAAwB,CAAC,MAAM;AAErC,UAAI,CAAC,KAAK,aAAa,EAAG;AAC1B,UAAI,cAAc,KAAK,gBAAgB,CAAC;AACxC,YAAM,gBAAgB,cAAc,IAAI,UAAU;AAElD,oBAAc,KAAK,IAAI,KAAK,QAAQ,KAAK,IAAI,WAAW,CAAC;AACzD,UAAI,KAAK,QAAQ,SAAS,eAAe;AACvC,sBAAc;AAAA,MAChB;AAMA,UAAI,aAAa;AACjB,UAAI,kBAAkB;AACtB,UAAI,KAAK,QAAQ,SAAS,SAAS;AACjC,0BAAkB;AAClB,qBAAa,CAAC;AAAA,MAChB;AAEA,WAAK,cAAc,KAAK,IAAI,GAAG,cAAc,KAAK,MAAM;AAExD,WAAK,GAAG,MAAM,YAAY,GAAG,eAAe,eAAe,UAAU;AACrE,WAAK,SAAS,MAAM,UAAU,KAAK,YAAY,SAAS;AAAA,IAC1D;AAEA,SAAQ,2BAA2B,MAAM;AACvC,UAAI,KAAK,WAAW;AAClB,YAAI,KAAK,cAAc,KAAK;AAC1B,eAAK,KAAK;AAAA,QACZ,OAAO;AACL,eAAK,YAAY;AAAA,QACnB;AACA,aAAK,YAAY;AACjB,aAAK,uBAAuB;AAAA,MAC9B;AAAA,IACF;AAEA,SAAQ,mBAAmB,CAAC,MAAM;AAEhC,UAAI,CAAC,KAAK,UAAU,CAAC,KAAK,aAAa,EAAG;AAC1C,UAAI,cAAc,KAAK,gBAAgB,CAAC;AAExC,YAAM,gBAAgB,cAAc,IAAI,UAAU;AAClD,oBAAc,KAAK,IAAI,KAAK,QAAQ,KAAK,IAAI,WAAW,CAAC;AACzD,UAAI,KAAK,QAAQ,SAAS,eAAe;AACvC,sBAAc;AAAA,MAChB;AACA,UAAI,aAAa,CAAC;AAClB,UAAI,KAAK,QAAQ,SAAS,SAAS;AACjC,qBAAa,CAAC;AAAA,MAChB;AAEA,WAAK,cAAc,KAAK,IAAI,GAAG,IAAI,cAAc,KAAK,MAAM;AAE5D,WAAK,GAAG,MAAM,YAAY,cAAc,UAAU;AAClD,WAAK,SAAS,MAAM,UAAU,KAAK,YAAY,SAAS;AAAA,IAC1D;AAEA,SAAQ,kBAAkB,CAAC,MAAM;AAE/B,UAAI,CAAC,KAAK,WAAW;AACnB,aAAK,WAAW,CAAC;AAAA,MACnB;AAEA,WAAK,gBAAgB,CAAC;AAEtB,aAAO,KAAK,QAAQ,KAAK;AAAA,IAC3B;AAEA,SAAQ,sBAAsB,MAAM;AAClC,UAAI,KAAK,UAAU,KAAK,WAAW;AACjC,YAAI,KAAK,cAAc,KAAK;AAC1B,eAAK,WAAW;AAAA,QAClB,OAAO;AACL,eAAK,MAAM;AAAA,QACb;AACA,aAAK,YAAY;AACjB,aAAK,uBAAuB;AAAA,MAC9B;AAAA,IACF;AAGA;AAAA,SAAQ,2BAA2B,CAAC,MAAM;AACxC,YAAM,eAAe,EAAE,OAAO,QAAQ,gBAAgB;AACtD,UAAI,gBAAgB,CAAC,KAAK,kBAAkB,GAAG;AAC7C,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAEA,SAAQ,sBAAsB,MAAM;AAElC,UAAI,KAAK,oBAAoB,OAAO,YAAY;AAC9C,YAAI,OAAO,aAAa,KAAK;AAC3B,eAAK,KAAK;AAAA,QACZ,OAAO;AACL,eAAK,MAAM;AAAA,QACb;AAAA,MACF;AACA,WAAK,kBAAkB,OAAO;AAC9B,WAAK,mBAAmB,OAAO;AAAA,IACjC;AA6CA;AAAA;AAAA;AAAA,gBAAO,MAAM;AACX,UAAI,KAAK,WAAW,KAAM;AAC1B,WAAK,SAAS;AAEd,UAAI,OAAO,KAAK,QAAQ,gBAAgB,YAAY;AAClD,aAAK,QAAQ,YAAY,KAAK,MAAM,KAAK,EAAE;AAAA,MAC7C;AAEA,UAAI,KAAK,kBAAkB,GAAG;AAE5B,aAAK,GAAG,MAAM,YAAY;AAC1B,aAAK,qBAAqB;AAC1B,aAAK,SAAS,MAAM,UAAU;AAAA,MAChC,OAEK;AACH,YAAI,KAAK,QAAQ,iBAAkB,MAAK,sBAAsB;AAC9D,YAAI,CAAC,KAAK,aAAa,KAAK,eAAe,EAAG,MAAK,WAAW;AAE9D,aAAK,eAAe;AACpB,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAKA;AAAA;AAAA;AAAA,iBAAQ,MAAM;AACZ,UAAI,KAAK,WAAW,MAAO;AAC3B,WAAK,SAAS;AAEd,UAAI,OAAO,KAAK,QAAQ,iBAAiB,YAAY;AACnD,aAAK,QAAQ,aAAa,KAAK,MAAM,KAAK,EAAE;AAAA,MAC9C;AAEA,UAAI,KAAK,kBAAkB,GAAG;AAC5B,cAAM,aAAa,KAAK,QAAQ,SAAS,SAAS,UAAU;AAC5D,aAAK,GAAG,MAAM,YAAY,cAAc,UAAU;AAAA,MACpD,OAEK;AACH,aAAK,qBAAqB;AAC1B,YAAI,CAAC,KAAK,aAAa,KAAK,eAAe,GAAG;AAC5C,eAAK,YAAY;AAAA,QACnB,OAAO;AACL,eAAK,SAAS,MAAM,UAAU;AAAA,QAChC;AAEA,aAAK,eAAe;AACpB,aAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAmFA,SAAQ,iBAAiB,MAAM;AAC7B,WAAK,GAAG,aAAa,KAAK,SAAS,UAAU;AAC7C,YAAM,aAAa,SAAS,cAAc,iBAAiB;AAC3D,UAAI,WAAY,YAAW,aAAa,KAAK,OAAO,SAAS;AAAA,IAC/D;AAEA,SAAQ,eAAe,MAAM;AAC3B,YAAM,WAAW,SAAS,iBAAiB,sBAAsB;AACjE,YAAM,eAAe,SAAS,iBAAiB,eAAe;AAC9D,UAAI;AACF,iBAAS,QAAQ,CAAC,YAA+B;AAC/C,kBAAQ,WAAW,KAAK,SAAS,KAAK;AAAA,QACxC,CAAC;AACH,UAAI;AACF,qBAAa,QAAQ,CAAC,gBAAmC;AACvD,sBAAY,WAAW,KAAK,SAAS,IAAI;AAAA,QAC3C,CAAC;AAAA,IACL;AArcE,SAAK,GAAG,oBAAoB,IAAI;AAEhC,SAAK,UAAU;AAAA,MACb,GAAG,SAAQ;AAAA,MACX,GAAG;AAAA,IACL;AAEA,SAAK,KAAK,KAAK,GAAG;AAClB,SAAK,SAAS;AACd,SAAK,UAAU,KAAK,GAAG,UAAU,SAAS,eAAe;AACzD,SAAK,YAAY;AAEjB,SAAK,kBAAkB,OAAO;AAC9B,SAAK,mBAAmB,OAAO;AAC/B,SAAK,eAAe;AACpB,SAAK,kBAAkB;AACvB,SAAK,oBAAoB;AACzB,SAAK,cAAc;AACnB,SAAK,YAAY;AACjB,aAAQ,UAAU,KAAK,IAAI;AAAA,EAC7B;AAAA,EAEA,WAAW,WAA2B;AACpC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAmC,CAAC,GACf;AACrB,WAAO,MAAM,KAAK,KAAK,SAAS,QAAO;AAAA,EACzC;AAAA,EAEA,OAAO,YAAY,IAA0B;AAC3C,WAAO,GAAG,oBAAoB;AAAA,EAChC;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,qBAAqB;AAC1B,SAAK,SAAS,WAAW,YAAY,KAAK,QAAQ;AAClD,SAAK,WAAW,WAAW,YAAY,KAAK,UAAU;AACtD,SAAK,GAAG,oBAAoB,IAAI;AAChC,SAAK,GAAG,MAAM,YAAY;AAC1B,UAAM,QAAQ,SAAQ,UAAU,QAAQ,IAAI;AAC5C,QAAI,SAAS,GAAG;AACd,eAAQ,UAAU,OAAO,OAAO,CAAC;AAAA,IACnC;AAAA,EACF;AAAA,EAEQ,iBAAiB;AACvB,SAAK,WAAW,SAAS,cAAc,KAAK;AAC5C,SAAK,SAAS,UAAU,IAAI,iBAAiB;AAC7C,SAAK,SAAS,iBAAiB,SAAS,KAAK,KAAK;AAClD,aAAS,KAAK,YAAY,KAAK,QAAQ;AAAA,EACzC;AAAA,EAEQ,sBAAsB;AAC5B,QAAI,SAAQ,UAAU,WAAW,GAAG;AAClC,eAAS,KAAK,iBAAiB,SAAS,KAAK,mBAAmB;AAAA,IAClE;AAGA,UAAM,UAAU,EAAE,SAAS,KAAK;AAChC,SAAK,WAAW,iBAAiB,aAAa,KAAK,uBAAuB,OAAO;AACjF,SAAK,WAAW,iBAAiB,YAAY,KAAK,wBAAwB;AAC1E,SAAK,SAAS,iBAAiB,aAAa,KAAK,kBAAkB,OAAO;AAC1E,SAAK,SAAS,iBAAiB,YAAY,KAAK,mBAAmB;AACnE,SAAK,GAAG,iBAAiB,aAAa,KAAK,kBAAkB,OAAO;AACpE,SAAK,GAAG,iBAAiB,YAAY,KAAK,mBAAmB;AAC7D,SAAK,GAAG,iBAAiB,SAAS,KAAK,wBAAwB;AAE/D,QAAI,KAAK,SAAS;AAChB,aAAO,iBAAiB,UAAU,KAAK,qBAAqB,OAAO;AAAA,IACrE;AAEA,SAAK,eAAe;AACpB,SAAK,aAAa;AAAA,EACpB;AAAA,EAEQ,uBAAuB;AAC7B,QAAI,SAAQ,UAAU,WAAW,GAAG;AAClC,eAAS,KAAK,oBAAoB,SAAS,KAAK,mBAAmB;AAAA,IACrE;AACA,SAAK,WAAW,oBAAoB,aAAa,KAAK,qBAAqB;AAC3E,SAAK,WAAW,oBAAoB,YAAY,KAAK,wBAAwB;AAC7E,SAAK,SAAS,oBAAoB,aAAa,KAAK,gBAAgB;AACpE,SAAK,SAAS,oBAAoB,YAAY,KAAK,mBAAmB;AACtE,SAAK,GAAG,oBAAoB,aAAa,KAAK,gBAAgB;AAC9D,SAAK,GAAG,oBAAoB,YAAY,KAAK,mBAAmB;AAChE,SAAK,GAAG,oBAAoB,SAAS,KAAK,wBAAwB;AAGlE,QAAI,KAAK,SAAS;AAChB,aAAO,oBAAoB,UAAU,KAAK,mBAAmB;AAAA,IAC/D;AAAA,EACF;AAAA,EAEQ,oBAAoB,GAAG;AAC7B,UAAM,UAAU,EAAE,OAAO,QAAQ,kBAAkB;AACnD,QAAI,EAAE,UAAU,SAAS;AACvB,YAAM,YAAY,MAAM,iBAAiB,OAAO;AAEhD,YAAM,kBAAkB,SAAS,eAAe,SAAS,IAAI,oBAAoB;AACjF,UAAI,iBAAiB;AACnB,wBAAgB,KAAK;AAAA,MACvB;AACA,QAAE,eAAe;AAAA,IACnB;AAAA,EACF;AAAA;AAAA,EAGQ,WAAW,GAAG;AACpB,UAAM,UAAU,EAAE,cAAc,CAAC,EAAE;AACnC,SAAK,YAAY;AACjB,SAAK,gBAAgB;AACrB,SAAK,QAAQ,KAAK;AAClB,SAAK,QAAQ,KAAK,IAAI;AACtB,SAAK,SAAS,KAAK,GAAG,sBAAsB,EAAE;AAC9C,SAAK,SAAS,MAAM,UAAU;AAC9B,SAAK,oBAAoB,KAAK,SAAS,KAAK,GAAG,YAAY,MAAM,qBAAqB;AACtF,SAAK,uBAAuB;AAAA,EAC9B;AAAA;AAAA,EAGQ,gBAAgB,GAAG;AACzB,UAAM,UAAU,EAAE,cAAc,CAAC,EAAE;AACnC,UAAM,mBAAmB,KAAK,SAAS,KAAK,GAAG,YAAY,MAAM,qBAAqB;AACtF,SAAK,SAAS,KAAK,IAAI,KAAK,QAAQ,OAAO;AAC3C,SAAK,QAAQ;AACb,SAAK,YAAY,KAAK,UAAU,KAAK,IAAI,IAAI,KAAK;AAClD,SAAK,QAAQ,KAAK,IAAI;AACtB,QAAI,KAAK,sBAAsB,kBAAkB;AAC/C,WAAK,uBAAuB;AAAA,IAC9B;AAAA,EACF;AAAA,EA2GQ,gBAAgB;AACtB,QAAI,KAAK,QAAQ,SAAS,SAAS;AACjC,WAAK,GAAG,UAAU,IAAI,eAAe;AACrC,WAAK,WAAW,UAAU,IAAI,eAAe;AAAA,IAC/C;AAAA,EACF;AAAA,EAEQ,iBAAiB;AACvB,SAAK,GAAG,UAAU,OAAO,eAAe;AACxC,SAAK,WAAW,UAAU,OAAO,eAAe;AAAA,EAClD;AAAA,EAEQ,cAAc;AACpB,QAAI,KAAK,kBAAkB,EAAG,MAAK,KAAK;AAAA,EAC1C;AAAA,EAEQ,eAAe;AACrB,WAAO,KAAK,QAAQ,aAAa,CAAC,KAAK,kBAAkB,KAAK,CAAC,KAAK;AAAA,EACtE;AAAA,EAEQ,oBAAoB;AAC1B,WAAO,KAAK,WAAW,OAAO,aAAa;AAAA,EAC7C;AAAA,EAEQ,oBAAoB;AAC1B,UAAM,aAAa,SAAS,cAAc,KAAK;AAC/C,eAAW,UAAU,IAAI,aAAa;AACtC,eAAW,MAAM,QAAQ,KAAK,QAAQ;AACtC,aAAS,KAAK,YAAY,UAAU;AACpC,SAAK,aAAa;AAAA,EACpB;AAAA,EAEQ,wBAAwB;AAC9B,aAAS,KAAK,MAAM,WAAW;AAAA,EACjC;AAAA,EAEQ,uBAAuB;AAC7B,aAAS,KAAK,MAAM,WAAW;AAAA,EACjC;AAAA,EA0DQ,aAAa;AACnB,SAAK,kBAAkB;AACvB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEQ,cAAc;AACpB,SAAK,mBAAmB;AACxB,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEQ,oBAAoB;AAC1B,QAAI,kBAAkB,KAAK,QAAQ,SAAS,SAAS,KAAK;AAC1D,QAAI,KAAK,WAAW;AAClB,wBACE,KAAK,QAAQ,SAAS,SAClB,kBAAkB,KAAK,cACvB,kBAAkB,KAAK;AAAA,IAC/B;AACA,UAAM,WAAW,KAAK,QAAQ;AAE9B,SAAK,GAAG,MAAM,aAAa;AAC3B,SAAK,GAAG,MAAM,YAAY,gBAAgB,kBAAkB,MAAM;AAClE,eAAW,MAAM;AACf,WAAK,GAAG,MAAM,aAAa,aAAa,QAAQ;AAEhD,WAAK,GAAG,MAAM,YAAY;AAAA,IAC5B,GAAG,CAAC;AACJ,eAAW,MAAM;AACf,UAAI,OAAO,KAAK,QAAQ,cAAc,WAAY,MAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,EAAE;AAAA,IAC7F,GAAG,QAAQ;AAAA,EACb;AAAA,EAEQ,qBAAqB;AAC3B,UAAM,aAAa,KAAK,QAAQ,SAAS,SAAS,KAAK;AAUvD,UAAM,WAAW,KAAK,QAAQ;AAC9B,SAAK,GAAG,MAAM,aAAa,aAAa,QAAQ;AAEhD,SAAK,GAAG,MAAM,YAAY,gBAAgB,aAAa,MAAM;AAC7D,eAAW,MAAM;AACf,UAAI,OAAO,KAAK,QAAQ,eAAe;AACrC,aAAK,QAAQ,WAAW,KAAK,MAAM,KAAK,EAAE;AAAA,IAC9C,GAAG,QAAQ;AAAA,EACb;AAAA,EAEQ,oBAAoB;AAC1B,QAAI,QAAQ;AACZ,QAAI,KAAK,UAAW,SAAQ,KAAK;AAAA,QAC5B,MAAK,SAAS,MAAM,UAAU;AAEnC,UAAM,WAAW,KAAK,QAAQ;AAE9B,SAAK,SAAS,MAAM,aAAa;AACjC,SAAK,SAAS,MAAM,UAAU,MAAM,SAAS;AAE7C,eAAW,MAAM;AACf,WAAK,SAAS,MAAM,aAAa,WAAW,QAAQ;AAEpD,WAAK,SAAS,MAAM,UAAU;AAAA,IAChC,GAAG,CAAC;AAAA,EACN;AAAA,EAEQ,qBAAqB;AAC3B,UAAM,WAAW,KAAK,QAAQ;AAE9B,SAAK,SAAS,MAAM,aAAa,WAAW,QAAQ;AAEpD,SAAK,SAAS,MAAM,UAAU;AAC9B,eAAW,MAAM;AACf,WAAK,SAAS,MAAM,UAAU;AAAA,IAChC,GAAG,QAAQ;AAAA,EACb;AAwBF;AAFI,SAAQ,YAAY,CAAC;AAjelB,IAAM,UAAN;;;ACrBP,IAAMC,cAA2B;AAAA,EAC/B,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,cAAc;AAAA,EACd,oBAAoB;AAAA;AACtB;AAEO,IAAM,SAAN,MAAM,gBAAe,UAAyB;AAAA,EAcnD,YAAY,IAAiB,SAAiC;AAC5D,UAAM,IAAI,SAAS,OAAM;AAwJ3B;AAAA;AAAA;AAAA,SAAQ,0BAA0B,MAAM;AACtC,UAAI,SAAS,QAAQ;AACnB,YAAI,KAAK,YAAY,KAAM,MAAK,OAAO,IAAI;AAAA,MAC7C,WACE,KAAK,cACL,EAAE,KAAK,QAAQ,gBAAgB,KAAK,aACpC,EAAE,KAAK,QAAQ,gBAAgB,KAAK,WACpC;AACA,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAEA,SAAQ,wBAAwB,CAAC,MAAkB;AACjD,YAAM,KAAmB,EAAE,OAAQ;AACnC,YAAM,YAAY,CAAC,GAAG,GAAG,WAAW,QAAQ,EAAE,QAAQ,EAAE;AACxD,WAAK,gBAAgB;AACrB,WAAK,IAAI,SAAS;AAAA,IACpB;AAEA,SAAQ,wBAAwB,MAAM;AACpC,WAAK,WAAW;AAChB,UAAI,KAAK,YAAY,MAAM;AACzB,aAAK,OAAO,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,SAAQ,wBAAwB,MAAM;AACpC,WAAK,WAAW;AAChB,UAAI,KAAK,YAAY,MAAM;AACzB,aAAK,OAAO,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,SAAQ,wBAAwB,MAAM;AACpC,WAAK,WAAW;AAChB,UAAI,EAAE,KAAK,QAAQ,gBAAgB,KAAK,aAAa,KAAK,YAAY;AACpE,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAEA,SAAQ,wBAAwB,MAAM;AACpC,WAAK,WAAW;AAChB,UAAI,EAAE,KAAK,QAAQ,gBAAgB,KAAK,aAAa,KAAK,YAAY;AACpE,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AAEA,SAAQ,kBAAkB,MAAM;AAC9B,YAAM,aAAa,KAAK,QAAQ,cAAc,SAAS;AACvD,UAAI,iBAAiB,CAAC,GAAG,WAAW,WAAW,QAAQ,EAAE,QAAQ,UAAU;AAC3E,UAAI,KAAK,QAAQ,WAAW,iBAAiB;AAC3C,yBAAiB;AAAA,UACd,mBAAkB;AACvB,WAAK,IAAI,cAAc;AAAA,IACzB;AA+IA;AAAA;AAAA;AAAA,iBAAQ,MAAM;AACZ,WAAK,OAAO,KAAK;AAAA,IACnB;AAKA;AAAA;AAAA;AAAA,iBAAQ,MAAM;AACZ,oBAAc,KAAK,QAAQ;AAC3B,WAAK,WAAW;AAAA,QACd,KAAK;AAAA,QACL,KAAK,QAAQ,WAAW,KAAK,QAAQ;AAAA,MACvC;AACA,WAAK,aAAa;AAAA,IACpB;AAKA;AAAA;AAAA;AAAA,gBAAO,MAAM;AACX,UAAI,WAAW,KAAK,cAAc;AAElC,UAAI,YAAY,KAAK,QAAQ,OAAQ,YAAW;AAAA,eACvC,WAAW,EAAG,YAAW,KAAK,QAAQ,SAAS;AACxD,WAAK,IAAI,QAAQ;AAAA,IACnB;AAKA;AAAA;AAAA;AAAA,gBAAO,MAAM;AACX,UAAI,WAAW,KAAK,cAAc;AAElC,UAAI,YAAY,KAAK,QAAQ,OAAQ,YAAW;AAAA,eACvC,WAAW,EAAG,YAAW,KAAK,QAAQ,SAAS;AACxD,WAAK,IAAI,QAAQ;AAAA,IACnB;AAhYE,SAAK,GAAG,mBAAmB,IAAI;AAE/B,SAAK,UAAU;AAAA,MACb,GAAG,QAAO;AAAA,MACV,GAAG;AAAA,IACL;AAGA,SAAK,WAAW;AAChB,SAAK,aAAa;AAClB,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,gBAAgB;AAGrB,SAAK,UAAU,KAAK,GAAG,cAAc,SAAS;AAC9C,SAAK,UAAU,MAAM,KAAK,KAAK,QAAQ,iBAAiB,IAAI,CAAC;AAC7D,SAAK,cAAc,KAAK,QAAQ,UAAU,CAAC,OAAO,GAAG,UAAU,SAAS,QAAQ,CAAC;AAEjF,QAAI,KAAK,gBAAgB,IAAI;AAC3B,WAAK,eAAe,KAAK,QAAQ,KAAK,WAAW;AAAA,IACnD;AAEA,SAAK,iBAAiB;AAGtB,QAAI,KAAK,QAAQ,aAAa,IAAI,EAAG,MAAK,YAAY,KAAK,QAAQ,aAAa,IAAI;AAAA,SAC/E;AACH,WAAK,YAAY,YAAY,MAAM,KAAK;AACxC,WAAK,QAAQ,aAAa,MAAM,KAAK,SAAS;AAAA,IAChD;AAEA,UAAM,oBACJ;AAEF,SAAK,QAAQ,QAAQ,CAAC,UAAU;AAK9B,YAAM,MAAM,MAAM,cAAc,KAAK;AACrC,UAAI,KAAK;AACP,YAAI,IAAI,QAAQ,mBAAmB;AACjC,cAAI,MAAM,kBAAkB,SAAS,IAAI,MAAM;AAC/C,cAAI,MAAM;AAAA,QACZ;AAAA,MACF;AAEA,UAAI,CAAC,MAAM,aAAa,UAAU,EAAG,OAAM,aAAa,YAAY,IAAI;AAExE,YAAM,MAAM,aAAa;AAAA,IAC3B,CAAC;AAED,SAAK,iBAAiB;AAGtB,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,MAAM,UAAU;AAClC,WAAK,aAAa,MAAM,aAAa;AAAA,IACvC,OAAO;AACL,WAAK,cAAc;AACnB,WAAK,QAAQ,CAAC,EAAE,UAAU,IAAI,QAAQ;AACtC,WAAK,QAAQ,CAAC,EAAE,MAAM,aAAa;AACnC,WAAK,eAAe,KAAK,QAAQ,CAAC;AAClC,WAAK,cAAc,KAAK,QAAQ,CAAC,GAAG,IAAI;AAExC,UAAI,KAAK,QAAQ,YAAY;AAC3B,aAAK,YAAY,KAAK,WAAW,EAAE,SAAS,CAAC,EAAE,UAAU,IAAI,QAAQ;AAAA,MACvE;AAAA,IACF;AACA,SAAK,oBAAoB;AAEzB,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,WAAW,WAAW;AACpB,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAkC,CAAC,GAChB;AACnB,WAAO,MAAM,KAAK,KAAK,SAAS,OAAM;AAAA,EACxC;AAAA,EAEA,OAAO,YAAY,IAAyB;AAC1C,WAAO,GAAG,mBAAmB;AAAA,EAC/B;AAAA,EAEA,UAAU;AACR,SAAK,MAAM;AACX,SAAK,kBAAkB;AACvB,SAAK,qBAAqB;AAC1B,SAAK,GAAG,mBAAmB,IAAI;AAAA,EACjC;AAAA,EAEQ,sBAAsB;AAC5B,QAAI,KAAK,QAAQ,cAAc;AAC7B,WAAK,GAAG,iBAAiB,WAAW,KAAK,qBAAqB;AAC9D,WAAK,GAAG,iBAAiB,YAAY,KAAK,qBAAqB;AAAA,IACjE;AACA,QAAI,KAAK,QAAQ,cAAc;AAC7B,WAAK,GAAG,iBAAiB,cAAc,KAAK,qBAAqB;AACjE,WAAK,GAAG,iBAAiB,cAAc,KAAK,qBAAqB;AAAA,IACnE;AACA,QAAI,KAAK,QAAQ,YAAY;AAC3B,WAAK,YAAY,QAAQ,CAAC,OAAO;AAC/B,WAAG,iBAAiB,SAAS,KAAK,qBAAqB;AAAA,MACzD,CAAC;AAAA,IACH;AACA,aAAS,iBAAiB,oBAAoB,KAAK,uBAAuB;AAAA,EAC5E;AAAA,EAEQ,uBAAuB;AAC7B,QAAI,KAAK,QAAQ,cAAc;AAC7B,WAAK,GAAG,oBAAoB,WAAW,KAAK,qBAAqB;AACjE,WAAK,GAAG,oBAAoB,YAAY,KAAK,qBAAqB;AAAA,IACpE;AACA,QAAI,KAAK,QAAQ,cAAc;AAC7B,WAAK,GAAG,oBAAoB,cAAc,KAAK,qBAAqB;AACpE,WAAK,GAAG,oBAAoB,cAAc,KAAK,qBAAqB;AAAA,IACtE;AACA,QAAI,KAAK,QAAQ,YAAY;AAC3B,WAAK,YAAY,QAAQ,CAAC,OAAO;AAC/B,WAAG,oBAAoB,SAAS,KAAK,qBAAqB;AAAA,MAC5D,CAAC;AAAA,IACH;AACA,aAAS,oBAAoB,oBAAoB,KAAK,uBAAuB;AAAA,EAC/E;AAAA,EA6DQ,cAAc,OAAoB,eAA8B;AACtE,QAAI,KAAK,GACP,KAAK;AAEP,UAAM,MAAM,UAAU,gBAAgB,MAAM;AAC5C,eAAW,MAAM;AACf,YAAM,MAAM,aAAa,WAAW,KAAK,QAAQ,QAAQ;AAEzD,YAAM,MAAM,UAAU,gBAAgB,MAAM;AAAA,IAC9C,GAAG,CAAC;AAEJ,UAAM,UAAuB,MAAM,cAAc,UAAU;AAC3D,QAAI,CAAC,QAAS;AACd,QAAI,QAAQ,UAAU,SAAS,cAAc,EAAG,MAAK;AAAA,aAC5C,QAAQ,UAAU,SAAS,aAAa,EAAG,MAAK;AAAA,aAChD,QAAQ,UAAU,SAAS,YAAY,EAAG,MAAK;AAExD,YAAQ,MAAM,UAAU,gBAAgB,MAAM;AAC9C,YAAQ,MAAM,YAAY,gBAAgB,aAAa,EAAE,OAAO,EAAE,QAAQ;AAC1E,eAAW,MAAM;AACf,cAAQ,MAAM,aAAa,WAAW,KAAK,QAAQ,QAAQ,sBAAsB,KAAK,QAAQ,QAAQ;AAEtG,cAAQ,MAAM,UAAU,gBAAgB,MAAM;AAC9C,cAAQ,MAAM,YAAY,gBAAgB,oBAAoB,aAAa,EAAE,OAAO,EAAE;AAAA,IACxF,GAAG,KAAK,QAAQ,QAAQ;AAAA,EAC1B;AAAA,EAEQ,mBAAmB;AAEzB,QAAI,CAAC,KAAK,GAAG,UAAU,SAAS,YAAY,GAAG;AAC7C,UAAI,KAAK,QAAQ,YAAY;AAE3B,aAAK,GAAG,MAAM,SAAS,KAAK,QAAQ,SAAS,KAAK;AAAA,MACpD,OAAO;AACL,aAAK,GAAG,MAAM,SAAS,KAAK,QAAQ,SAAS;AAAA,MAC/C;AACA,WAAK,QAAQ,MAAM,SAAS,KAAK,QAAQ,SAAS;AAAA,IACpD;AAAA,EACF;AAAA,EAEQ,mBAAmB;AACzB,QAAI,KAAK,QAAQ,YAAY;AAC3B,YAAM,KAAK,SAAS,cAAc,IAAI;AACtC,SAAG,UAAU,IAAI,YAAY;AAE7B,YAAM,QAAQ,CAAC;AACf,WAAK,QAAQ,QAAQ,CAAC,IAAI,MAAM;AAC9B,cAAM,QAAQ,KAAK,QAAQ,qBACvB,KAAK,QAAQ,mBAAmB,KAAK,MAAM,IAAI,GAAG,MAAM,CAAC,IACzD,GAAG,IAAI,CAAC;AACZ,cAAM,KAAK,SAAS,cAAc,IAAI;AACtC,WAAG,UAAU,IAAI,gBAAgB;AAGjC,cAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,OAAO;AACd,eAAO,UAAU,IAAI,oBAAoB;AACzC,eAAO,aAAa,cAAc,KAAK;AACvC,eAAO,aAAa,iBAAiB,KAAK,SAAS;AACnD,WAAG,YAAY,MAAM;AACrB,cAAM,KAAK,EAAE;AACb,WAAG,OAAO,EAAE;AAAA,MACd,CAAC;AAED,WAAK,GAAG,OAAO,EAAE;AACjB,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAEQ,oBAAoB;AAC1B,SAAK,GAAG,cAAc,eAAe,EAAE,OAAO;AAAA,EAChD;AAAA,EAEA,IAAI,OAAe;AAEjB,QAAI,SAAS,KAAK,QAAQ,OAAQ,SAAQ;AAAA,aACjC,QAAQ,EAAG,SAAQ,KAAK,QAAQ,SAAS;AAGlD,QAAI,KAAK,gBAAgB,MAAO;AAEhC,SAAK,eAAe,KAAK,QAAQ,KAAK,WAAW;AACjD,UAAM,WAA+B,KAAK,aAAa,cAAc,UAAU;AAE/E,SAAK,aAAa,UAAU,OAAO,QAAQ;AAE3C,SAAK,QAAQ,QAAQ,CAAC,UAAW,MAAM,MAAM,aAAa,SAAU;AAGpE,SAAK,aAAa,MAAM,UAAU;AAClC,eAAW,MAAM;AACf,WAAK,QAAQ,QAAQ,CAAC,UAAU;AAC9B,YAAI,MAAM,UAAU,SAAS,QAAQ,EAAG;AACxC,cAAM,MAAM,UAAU;AACtB,cAAM,MAAM,YAAY;AAExB,cAAM,MAAM,aAAa;AAAA,MAC3B,CAAC;AAAA,IACH,GAAG,KAAK,QAAQ,QAAQ;AAIxB,QAAI,SAAU,UAAS,MAAM,UAAU;AAGvC,QAAI,KAAK,QAAQ,YAAY;AAC3B,YAAM,kBAAkB,KAAK,YAAY,KAAK,WAAW,EAAE,SAAS,CAAC;AACrE,YAAM,gBAAgB,KAAK,YAAY,KAAK,EAAE,SAAS,CAAC;AACxD,sBAAgB,UAAU,OAAO,QAAQ;AACzC,oBAAc,UAAU,IAAI,QAAQ;AACpC,UAAI,OAAO,KAAK,QAAQ,uBAAuB,YAAY;AACzD,wBAAgB,YAAY,KAAK,QAAQ,mBAAmB;AAAA,UAC1D;AAAA,UACA,KAAK;AAAA,UACL;AAAA,QACF;AACA,sBAAc,YAAY,KAAK,QAAQ,mBAAmB,KAAK,MAAM,OAAO,IAAI;AAAA,MAClF;AAAA,IACF;AAGA,SAAK,cAAc,KAAK,QAAQ,KAAK,GAAG,IAAI;AAC5C,SAAK,QAAQ,KAAK,EAAE,UAAU,IAAI,QAAQ;AAC1C,SAAK,cAAc;AAInB,QAAI,KAAK,YAAY,MAAM;AACzB,WAAK,MAAM;AAAA,IACb;AAAA,EACF;AAAA,EAEA,OAAO,WAAoB;AACzB,kBAAc,KAAK,QAAQ;AAC3B,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AA0CF;;;AC3aA,IAAMC,cAAyB;AAAA,EAC7B,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,qBAAqB;AAAA;AACvB;AAEO,IAAM,OAAN,MAAM,cAAa,UAAuB;AAAA,EAU/C,YAAY,IAAiB,SAA+B;AAC1D,UAAM,IAAI,SAAS,KAAI;AAkFzB,+BAAsB,MAAM;AAC1B,WAAK,oBAAoB;AACzB,UAAI,KAAK,cAAc,KAAK,KAAK,eAAe,GAAG;AACjD,aAAK,WAAW,MAAM,OAAO,KAAK,aAAa,KAAK,cAAc,IAAI;AACtE,aAAK,WAAW,MAAM,QAAQ,KAAK,cAAc,KAAK,cAAc,IAAI;AAAA,MAC1E;AAAA,IACF;AAQA,2BAAkB,CAAC,MAAkB;AACnC,YAAM,SAAS,EAAE;AACjB,UAAI,CAAC,OAAQ;AACb,YAAM,UAAU,OAAO,QAAQ,GAAG;AAClC,UAAI,CAAC,WAAW,CAAC,MAAM,KAAK,KAAK,SAAS,EAAE,SAAS,OAAO,EAAG;AAE/D,YAAM,MAAM,QAAQ;AACpB,YAAM,WACJ,QAAQ,UAAU,SAAS,UAAU,KACrC,QAAQ,aAAa,eAAe,MAAM,UAC1C,KAAK,UAAU,SAAS,UAAU;AACpC,UAAI,UAAU;AACZ,UAAE,eAAe;AACjB;AAAA,MACF;AAEA,UAAI,QAAQ,aAAa,QAAQ,EAAG;AAEpC,WAAK,eAAe,UAAU,OAAO,QAAQ;AAC7C,YAAM,cAAc,KAAK;AAGzB,WAAK,iBAAiB;AACtB,UAAI,QAAQ,KAAM,MAAK,WAAW,SAAS,cAAc,QAAQ,IAAI;AACrE,WAAK,YAAY,KAAK,eAAe;AAErC,WAAK,eAAe,UAAU,IAAI,QAAQ;AAC1C,YAAM,YAAY,KAAK;AACvB,WAAK,SAAS,KAAK,IAAI,MAAM,KAAK,KAAK,SAAS,EAAE,QAAQ,OAAO,GAAG,CAAC;AAGrE,UAAI,KAAK,QAAQ,WAAW;AAC1B,YAAI,KAAK,eAAe;AACtB,eAAK,cAAc,IAAI,KAAK,QAAQ,MAAM;AACxC,gBAAI,OAAO,KAAK,QAAQ,WAAW;AACjC,mBAAK,QAAQ,OAAO,KAAK,MAAM,KAAK,QAAQ;AAAA,UAChD,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,YAAI,KAAK,UAAU;AACjB,eAAK,SAAS,MAAM,UAAU;AAC9B,eAAK,SAAS,UAAU,IAAI,QAAQ;AACpC,cAAI,OAAO,KAAK,QAAQ,WAAW;AACjC,iBAAK,QAAQ,OAAO,KAAK,MAAM,KAAK,QAAQ;AAC9C,cAAI,eAAe,gBAAgB,KAAK,UAAU;AAChD,wBAAY,MAAM,UAAU;AAC5B,wBAAY,UAAU,OAAO,QAAQ;AAAA,UACvC;AAAA,QACF;AAAA,MACF;AAEA,WAAK,oBAAoB;AACzB,WAAK,kBAAkB,SAAS;AAChC,QAAE,eAAe;AAAA,IACnB;AArJE,SAAK,GAAG,iBAAiB,IAAI;AAE7B,SAAK,UAAU;AAAA,MACb,GAAG,MAAK;AAAA,MACR,GAAG;AAAA,IACL;AAEA,SAAK,YAAY,KAAK,eAAe;AACrC,SAAK,SAAS;AACd,SAAK,oBAAoB;AACzB,QAAI,KAAK,QAAQ,WAAW;AAC1B,WAAK,oBAAoB;AAAA,IAC3B,OAAO;AACL,WAAK,iBAAiB;AAAA,IACxB;AAEA,SAAK,oBAAoB;AACzB,SAAK,iBAAiB;AACtB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAAwB;AACjC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAgC,CAAC,GAClB;AACf,WAAO,MAAM,KAAK,KAAK,SAAS,KAAI;AAAA,EACtC;AAAA,EAEA,OAAO,YAAY,IAAuB;AACxC,WAAO,GAAG,iBAAiB;AAAA,EAC7B;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,WAAW,WAAW,YAAY,KAAK,UAAU;AACtD,QAAI,KAAK,QAAQ,WAAW;AAC1B,WAAK,uBAAuB;AAAA,IAC9B,OAAO;AACL,WAAK,oBAAoB;AAAA,IAC3B;AACA,SAAK,GAAG,iBAAiB,IAAI;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,sBAAsB;AACpB,WAAO,iBAAiB,UAAU,KAAK,mBAAmB;AAC1D,SAAK,GAAG,iBAAiB,SAAS,KAAK,eAAe;AAAA,EACxD;AAAA,EAEA,uBAAuB;AACrB,WAAO,oBAAoB,UAAU,KAAK,mBAAmB;AAC7D,SAAK,GAAG,oBAAoB,SAAS,KAAK,eAAe;AAAA,EAC3D;AAAA,EAUA,iBAAiB;AACf,WAAO,KAAK,GAAG;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EA0DA,mBAAmB;AACjB,UAAM,MAAM,KAAK,GAAG,YAAY,QAAQ,KAAK,GAAG,YAAY,OAAO,OAAO;AAC1E,UAAM,YAAY,SAAS,cAAc,GAAG;AAC5C,cAAU,UAAU,IAAI,WAAW;AACnC,SAAK,GAAG,YAAY,SAAS;AAC7B,SAAK,aAAa;AAClB,SAAK,WAAW,MAAM,OAAO,KAAK,aAAa,KAAK,cAAc,IAAI;AACtE,SAAK,WAAW,MAAM,QAAQ,KAAK,cAAc,KAAK,cAAc,IAAI;AAAA,EAC1E;AAAA,EAEA,sBAAsB;AAEpB,SAAK,iBAAiB,MAAM,KAAK,KAAK,SAAS,EAAE;AAAA,MAC/C,CAAC,MAAyB,EAAE,aAAa,MAAM,MAAM,SAAS;AAAA,IAChE;AAEA,QAAI,CAAC,KAAK,gBAAgB;AACxB,UAAI,gBAAgB,KAAK,GAAG,cAAc,UAAU;AACpD,UAAI,CAAC,eAAe;AAClB,wBAAgB,KAAK,UAAU,CAAC;AAAA,MAClC;AACA,WAAK,iBAAiB;AAAA,IACxB;AACA,UAAM,KAAK,KAAK,SAAS,EAAE,QAAQ,CAAC,MAAyB,EAAE,UAAU,OAAO,QAAQ,CAAC;AACzF,SAAK,eAAe,UAAU,IAAI,QAAQ;AAE1C,SAAK,SAAS,KAAK,IAAI,MAAM,KAAK,KAAK,SAAS,EAAE,QAAQ,KAAK,cAAc,GAAG,CAAC;AACjF,QAAI,KAAK,kBAAkB,KAAK,eAAe,MAAM;AACnD,WAAK,WAAW,SAAS,cAAc,KAAK,eAAe,IAAI;AAC/D,UAAI,KAAK,SAAU,MAAK,SAAS,UAAU,IAAI,QAAQ;AAAA,IACzD;AAAA,EACF;AAAA,EAEA,sBAAsB;AAEpB,QAAI,OAAO,aAAa,KAAK,QAAQ,oBAAqB,MAAK,QAAQ,YAAY;AAEnF,UAAM,cAAc,CAAC;AACrB,SAAK,UAAU,QAAQ,CAAC,MAAM;AAC5B,UAAI,EAAE,MAAM;AACV,cAAM,cAAc,SAAS,cAAc,EAAE,IAAI;AACjD,oBAAY,UAAU,IAAI,eAAe;AACzC,oBAAY,KAAK,WAAW;AAAA,MAC9B;AAAA,IACF,CAAC;AAGD,UAAM,cAAc,SAAS,cAAc,KAAK;AAChD,gBAAY,UAAU,IAAI,gBAAgB,YAAY,iBAAiB;AAGvE,gBAAY,CAAC,EAAE,cAAc,aAAa,aAAa,YAAY,CAAC,CAAC;AACrE,gBAAY,QAAQ,CAAC,eAAe;AAClC,kBAAY,YAAY,UAAU;AAClC,iBAAW,MAAM,UAAU;AAAA,IAC7B,CAAC;AAED,SAAK,gBAAgB,SAAS,KAAK,aAAa;AAAA,MAC9C,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,WAAW,CAAC,SAAS;AACnB,cAAM,YAAY,KAAK;AACvB,aAAK,SAAS,MAAM,KAAK,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI;AAC/D,aAAK,eAAe,UAAU,OAAO,QAAQ;AAC7C,aAAK,iBAAiB,MAAM,KAAK,KAAK,SAAS,EAAE,KAAK,MAAM;AAC5D,aAAK,eAAe,UAAU,IAAI,QAAQ;AAC1C,aAAK,kBAAkB,SAAS;AAChC,YAAI,OAAO,KAAK,QAAQ,WAAW;AACjC,eAAK,QAAQ,OAAO,KAAK,MAAM,KAAK,QAAQ;AAAA,MAChD;AAAA,IACF,CAAC;AAED,SAAK,cAAc,IAAI,KAAK,MAAM;AAAA,EACpC;AAAA,EAEA,yBAAyB;AACvB,UAAM,cAAc,KAAK,cAAc;AACvC,SAAK,cAAc,QAAQ;AAE3B,gBAAY,OAAO,YAAY,aAAa;AAC5C,gBAAY,OAAO;AAAA,EACrB;AAAA,EAEA,mBAAmB;AAEjB,UAAM,KAAK,KAAK,SAAS,EAAE,QAAQ,CAAC,MAAM;AACxC,UAAI,MAAM,KAAK,eAAgB;AAC/B,UAAwB,EAAG,MAAM;AAC/B,cAAM,cAAc,SAAS,cAAkC,EAAG,IAAI;AACtE,YAAI,YAAa,CAAc,YAAa,MAAM,UAAU;AAAA,MAC9D;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,sBAAsB;AAEpB,SAAK,UAAU,QAAQ,CAAC,MAAM;AAC5B,UAAI,EAAE,MAAM;AACV,cAAM,cAAc,SAAS,cAAc,EAAE,IAAI;AACjD,YAAI,YAAa,aAAY,MAAM,UAAU;AAAA,MAC/C;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,sBAAsB;AACpB,SAAK,aAAa,KAAK,GAAG,sBAAsB,EAAE;AAClD,SAAK,YAAY,KAAK,IAAI,KAAK,YAAY,KAAK,GAAG,WAAW,IAAI,KAAK,UAAU;AAAA,EACnF;AAAA,EAEA,cAAc,IAAI;AAChB,WAAO,KAAK,KAAK,KAAK,aAAa,GAAG,aAAa,GAAG,sBAAsB,EAAE,KAAK;AAAA,EACrF;AAAA,EAEA,aAAa,IAAI;AACf,WAAO,KAAK,MAAM,GAAG,UAAU;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,qBAAqB;AACnB,SAAK,oBAAoB;AACzB,SAAK,kBAAkB,KAAK,MAAM;AAAA,EACpC;AAAA,EAEA,kBAAkB,WAAW;AAC3B,QAAI,YAAY,GACd,aAAa;AAEf,UAAM,wBAAwB,KAAK,SAAS,aAAa;AACzD,QAAI,sBAAuB,aAAY;AAAA,QAClC,cAAa;AAGlB,SAAK,WAAW,MAAM,aAAa;AAAA,aAC1B,KAAK,QAAQ,QAAQ,eAAe,SAAS;AAAA,cAC5C,KAAK,QAAQ,QAAQ,eAAe,UAAU;AAExD,SAAK,WAAW,MAAM,OAAO,KAAK,aAAa,KAAK,cAAc,IAAI;AACtE,SAAK,WAAW,MAAM,QAAQ,KAAK,cAAc,KAAK,cAAc,IAAI;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,OAAe;AACpB,UAAM,MAAM,MAAM,KAAK,KAAK,SAAS,EAAE;AAAA,MACrC,CAAC,MAAyB,EAAE,aAAa,MAAM,MAAM,MAAM;AAAA,IAC7D;AACA,QAAI,IAAK,CAAoB,IAAK,MAAM;AAAA,EAC1C;AACF;;;AC/UA,IAAMC,cAA8B;AAAA,EAClC,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,IAAM,aAAN,MAAM,mBAAkB,UAAgD;AAAA,EAa7E,YAAY,IAAiB,SAAoC;AAC/D,UAAM,IAAI,SAAS,UAAS;AA0F9B;AAAA;AAAA,kCAAyB,MAAM,SAAS,MAAM,KAAK,cAAc,GAAG,GAAG;AAEvE,sCAA6B,CAAC,MAAqB;AACjD,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AAEA,+BAAsB,MAAM;AAC1B,UAAI,CAAC,KAAK,OAAQ,MAAK,KAAK;AAAA,UACvB,MAAK,MAAM;AAAA,IAClB;AAMA;AAAA;AAAA;AAAA,yBAAgB,MAAM;AACpB,WAAK,sBAAsB;AAAA,IAC7B;AAEA,gCAAuB,CAAC,MAA+C;AACrE,YAAM,SAAS,EAAE;AACjB,UAAI,EAAE,kBAAkB,SAAU;AAIlC,UAAI,CAAC,KAAK,SAAS,SAAS,MAAM,KAAK,CAAC,OAAO,QAAQ,qBAAqB,GAAG;AAC7E,aAAK,MAAM;AAAA,MAGb;AAAA,IACF;AA4IA;AAAA;AAAA;AAAA,gBAAO,MAAM;AACX,UAAI,KAAK,OAAQ;AAEjB,UAAI,OAAO,KAAK,QAAQ,WAAW,YAAY;AAC7C,aAAK,QAAQ,OAAO,KAAK,MAAM,KAAK,QAAQ;AAAA,MAC9C;AACA,WAAK,SAAS;AACd,WAAK,QAAQ,UAAU,IAAI,MAAM;AACjC,WAAK,QAAQ,eAAe;AAC5B,eAAS,KAAK,iBAAiB,SAAS,KAAK,sBAAsB,IAAI;AACvE,eAAS,KAAK,iBAAiB,YAAY,KAAK,sBAAsB,IAAI;AAC1E,eAAS,KAAK,iBAAiB,YAAY,KAAK,oBAAoB;AAAA,IACtE;AAKA;AAAA;AAAA;AAAA,iBAAQ,MAAM;AACZ,UAAI,CAAC,KAAK,OAAQ;AAElB,UAAI,OAAO,KAAK,QAAQ,YAAY,YAAY;AAC9C,aAAK,QAAQ,QAAQ,KAAK,MAAM,KAAK,QAAQ;AAAA,MAC/C;AACA,WAAK,SAAS;AACd,WAAK,QAAQ,UAAU,OAAO,MAAM;AACpC,WAAK,QAAQ,eAAe;AAC5B,eAAS,KAAK,oBAAoB,SAAS,KAAK,sBAAsB,IAAI;AAC1E,eAAS,KAAK,oBAAoB,YAAY,KAAK,sBAAsB,IAAI;AAC7E,eAAS,KAAK,oBAAoB,YAAY,KAAK,oBAAoB;AAAA,IACzE;AAlSE,SAAK,GAAG,sBAAsB,IAAI;AAElC,SAAK,UAAU;AAAA,MACb,GAAG,WAAU;AAAA,MACb,GAAG;AAAA,IACL;AAEA,SAAK,SAAS;AAKd,SAAK,WAAW,GAAG,QAAQ,SAAS,SAAS,eAAe,GAAG,QAAQ,MAAM,IAAI;AACjF,QAAI,CAAC,KAAK,UAAU;AAClB,cAAQ,MAAM,kCAAkC,GAAG,QAAQ,UAAU,EAAE,gBAAgB;AACvF;AAAA,IACF;AACA,SAAK,SAAS,WAAW;AAEzB,SAAK,OAAO;AACZ,SAAK,sBAAsB;AAC3B,SAAK,oBAAoB;AAEzB,eAAU,YAAY,KAAK,IAAI;AAAA,EACjC;AAAA,EAEA,WAAW,WAA6B;AACtC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAqC,CAAC,GACb;AACzB,WAAO,MAAM,KAAK,KAAK,SAAS,UAAS;AAAA,EAC3C;AAAA,EAEA,OAAO,YAAY,IAA4B;AAC7C,WAAO,GAAG,sBAAsB;AAAA,EAClC;AAAA,EAEA,UAAU;AAGR,SAAK,MAAM;AACX,SAAK,qBAAqB;AAC1B,SAAK,GAAG,sBAAsB,IAAI;AAClC,UAAM,QAAQ,WAAU,YAAY,QAAQ,IAAI;AAChD,QAAI,SAAS,GAAG;AACd,iBAAU,YAAY,OAAO,OAAO,CAAC;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,sBAAsB;AACpB,QAAI,CAAC,KAAK,SAAU;AACpB,SAAK,SAAS,iBAAiB,SAAS,KAAK,mBAAmB;AAChE,SAAK,SAAS,iBAAiB,YAAY,KAAK,4BAA4B,IAAI;AAGhF,WAAO,iBAAiB,UAAU,KAAK,sBAAsB;AAAA,EAC/D;AAAA,EAEA,uBAAuB;AACrB,QAAI,CAAC,KAAK,SAAU;AACpB,SAAK,SAAS,oBAAoB,SAAS,KAAK,mBAAmB;AACnE,SAAK,SAAS,oBAAoB,YAAY,KAAK,4BAA4B,IAAI;AAEnF,WAAO,oBAAoB,UAAU,KAAK,sBAAsB;AAAA,EAClE;AAAA,EAsCA,SAAS;AAEP,SAAK,UAAU,KAAK,GAAG;AACvB,SAAK,SAAS,KAAK,QAAQ,cAAc,kBAAkB;AAC3D,SAAK,GAAG,cAAc,eAAe;AACrC,SAAK,SAAS,MAAM,SAAS;AAE7B,SAAK,YAAY,KAAK,GAAG,cAAc,qBAAqB;AAE5D,QAAI,CAAC,KAAK,QAAQ,UAAU,SAAS,qBAAqB,GAAG;AAC3D,WAAK,UAAU,SAAS,cAAc,KAAK;AAC3C,WAAK,QAAQ,UAAU,IAAI,oBAAoB;AAC/C,WAAK,GAAG,OAAO,KAAK,OAAO;AAC3B,WAAK,QAAQ,OAAO,KAAK,EAAE;AAAA,IAC7B;AAEA,QAAI,CAAC,KAAK,WAAW;AACnB,WAAK,YAAY,SAAS,cAAc,KAAK;AAC7C,WAAK,UAAU,UAAU,IAAI,oBAAoB;AACjD,WAAK,GAAG,OAAO,KAAK,SAAS;AAAA,IAC/B;AAEA,QAAI,CAAC,KAAK,QAAQ;AAChB,WAAK,SAAS,SAAS,cAAc,KAAK;AAC1C,WAAK,OAAO,UAAU,IAAI,iBAAiB;AAS3C,WAAK,QAAQ,OAAO,KAAK,MAAM;AAAA,IACjC;AAAA,EACF;AAAA,EAEQ,QAAQ,IAAiB;AAC/B,UAAM,MAAM,GAAG,sBAAsB;AACrC,UAAM,UAAU,SAAS;AACzB,WAAO;AAAA,MACL,KAAK,IAAI,MAAM,OAAO,cAAc,QAAQ;AAAA,MAC5C,MAAM,IAAI,OAAO,OAAO,cAAc,QAAQ;AAAA,IAChD;AAAA,EACF;AAAA,EAEA,wBAAwB;AAEtB,QAAI,UAAU,iBAAiB,KAAK,QAAQ,EAAE,aAAa;AAC3D,QAAI,CAAC,SAAS;AAEZ,UAAI,cAAmB,KAAK;AAC5B,YAAM,UAAU,CAAC;AACjB,cAAQ,cAAc,YAAY,eAAe,gBAAgB;AAC/D,gBAAQ,KAAK,WAAW;AAE1B,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,kBAAU,iBAAiB,QAAQ,CAAC,CAAC,EAAE,aAAa;AACpD,YAAI,QAAS;AAAA,MACf;AAAA,IACF;AAEA,UAAM,cAAc,KAAK,SAAS;AAClC,UAAM,eAAe,KAAK,SAAS;AACnC,UAAM,eAAe,KAAK,QAAQ,KAAK,QAAQ;AAC/C,UAAM,YAAY,UACd,aAAa,MAAM,MAAM,qBAAqB,IAC9C,aAAa;AACjB,UAAM,aAAa,UACf,aAAa,OAAO,MAAM,sBAAsB,IAChD,aAAa;AAGjB,UAAM,cAAc,OAAO;AAC3B,UAAM,eAAe,OAAO;AAC5B,UAAM,iBAAiB,cAAc,SAAS,gBAAgB;AAC9D,UAAM,UAAU,cAAc;AAC9B,UAAM,UAAU,eAAe;AAC/B,UAAM,SAAS,cAAc;AAC7B,UAAM,UAAU,aAAa;AAC7B,UAAM,QAAQ,aAAa;AAC3B,UAAM,WAAW,YAAY;AAC7B,UAAM,YAAY,cAAc,cAAc,QAAQ,cAAc,cAAc;AAGlF,UAAM,iBAAiB,KAAK,GAAG;AAC/B,UAAM,kBAAkB,KAAK,GAAG;AAChC,UAAM,eAAe,YAAY,eAAe,IAAI,kBAAkB;AACtE,UAAM,gBAAgB,aAAa,cAAc,IAAI,iBAAiB;AACtE,UAAM,oBAAoB,UAAU,UAAU;AAG9C,UAAM,qBAAqB,YAAY,iBAAiB,iBAAiB,IAAI;AAC7E,UAAM,sBAAsB,kBAAkB;AAC9C,UAAM,mBAAmB,QAAQ,kBAAkB,IAAI;AACvD,UAAM,sBAAsB;AAC5B,UAAM,oBAAoB,UAAU,CAAC,YAAY,iBAAiB,IAAI,cAAc;AACpF,UAAM,qBAAqB;AAC3B,UAAM,uBAAuB;AAC7B,UAAM,qBAAqB,WAAW,WAAW;AAGjD,UAAM,qBAAqB,cAAc,eAAe,cAAc,IAAI,cAAc;AACxF,UAAM,sBAAsB;AAC5B,UAAM,mBAAmB,kBAAkB,IAAI,sBAAsB;AACrE,UAAM,oBAAoB,iBAAiB,IAAI,qBAAqB;AAGpE,SAAK,QAAQ,MAAM,MAAM,QAAQ,eAAe,OAAO;AACvD,SAAK,QAAQ,MAAM,QAAQ,UACvB,cAAc,gBAAgB,iBAAiB,iBAAiB,OAChE;AACJ,SAAK,QAAQ,MAAM,SAAS,WACxB,eAAe,eAAe,kBAAkB,OAChD;AACJ,SAAK,QAAQ,MAAM,OAAO,SAAS,gBAAgB,OAAO;AAC1D,SAAK,QAAQ,MAAM,WAAW;AAG9B,SAAK,UAAU,MAAM,QAAQ,qBAAqB;AAClD,SAAK,UAAU,MAAM,SAAS,sBAAsB;AACpD,SAAK,UAAU,MAAM,MAAM,mBAAmB;AAC9C,SAAK,UAAU,MAAM,QAAQ,qBAAqB;AAClD,SAAK,UAAU,MAAM,SAAS,sBAAsB;AACpD,SAAK,UAAU,MAAM,OAAO,oBAAoB;AAChD,SAAK,UAAU,MAAM,UAAU,uBAAuB;AACtD,SAAK,UAAU,MAAM,gBAAgB;AAGrC,SAAK,OAAO,MAAM,MAAM,mBAAmB;AAC3C,SAAK,OAAO,MAAM,OAAO,oBAAoB;AAC7C,SAAK,OAAO,MAAM,QAAQ,qBAAqB;AAC/C,SAAK,OAAO,MAAM,SAAS,sBAAsB;AAAA,EACnD;AAuCF;AAFI,WAAU,cAAc,CAAC;AApTtB,IAAM,YAAN;;;ACiFP,IAAMC,cAA+B;AAAA,EACnC,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,WAAW;AAAA,EACX,aAAa;AAAA;AAAA,EACb,SAAS;AAAA;AAAA,EACT,cAAc;AAAA,EACd,YAAY;AAAA;AAAA,EAEZ,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,YAAY;AAAA;AAAA,EACZ,SAAS;AAAA;AAAA;AAAA,EAET,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,eAAe;AAAA,EACf,sBAAsB;AACxB;AAOO,IAAM,cAAN,MAAM,oBAAmB,UAA6B;AAAA,EA+C3D,YAAY,IAAsB,SAAqC;AACrE,UAAM,IAAI,SAAS,WAAU;AAH/B;AAAA,SAAQ,cAAc;AA4GtB,6BAAoB,MAAM;AAGxB,WAAK,kBAAkB;AACvB,WAAK,WAAW,MAAM;AACtB,UAAI,OAAO,KAAK,QAAQ,uBAAuB,WAAY,MAAK,QAAQ,mBAAmB,KAAK,IAAI;AACpG,UAAI,KAAK,cAAe,MAAK,cAAc,KAAK;AAAA,IAClD;AAEA,+BAAsB,CAAC,MAAqB;AAC1C,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,UAAE,eAAe;AACjB,aAAK,kBAAkB;AACvB,aAAK,WAAW,MAAM;AACtB,YAAI,OAAO,KAAK,QAAQ,uBAAuB,WAAY,MAAK,QAAQ,mBAAmB,KAAK,IAAI;AACpG,YAAI,KAAK,cAAe,MAAK,cAAc,KAAK;AAAA,MAClD;AAAA,IACF;AAEA,oCAA2B,CAAC,MAAqB;AAC/C,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,UAAE,eAAe;AACjB,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AAEA,kCAAyB,CAAC,MAAM;AAC9B,QAAE,eAAe;AACjB,WAAK,kBAAkB;AACvB,YAAM,eAAe,KAAK,MAAM,sBAAsB;AACtD,YAAM,SAAS,EAAE,GAAG,aAAa,MAAM,GAAG,aAAa,IAAI;AAE3D,WAAK,KAAK,OAAO,IAAI,KAAK,QAAQ;AAClC,WAAK,KAAK,OAAO,IAAI,KAAK,QAAQ;AAClC,WAAK,QAAQ;AACb,YAAM,WAAW,YAAW,KAAK,CAAC;AAClC,WAAK,KAAK,SAAS,IAAI,KAAK;AAC5B,WAAK,KAAK,SAAS,IAAI,KAAK;AAG5B,WAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK;AAEpC,eAAS,iBAAiB,aAAa,KAAK,wBAAwB;AACpE,eAAS,iBAAiB,aAAa,KAAK,wBAAwB;AAEpE,eAAS,iBAAiB,WAAW,KAAK,uBAAuB;AACjE,eAAS,iBAAiB,YAAY,KAAK,uBAAuB;AAAA,IACpE;AAEA,oCAA2B,CAAC,MAAM;AAChC,QAAE,eAAe;AACjB,YAAM,WAAW,YAAW,KAAK,CAAC;AAClC,YAAM,IAAI,SAAS,IAAI,KAAK;AAC5B,YAAM,IAAI,SAAS,IAAI,KAAK;AAC5B,WAAK,QAAQ;AACb,WAAK,QAAQ,GAAG,GAAG,KAAK;AAAA,IAC1B;AAEA,mCAA0B,CAAC,MAAM;AAC/B,QAAE,eAAe;AACjB,eAAS,oBAAoB,WAAW,KAAK,uBAAuB;AACpE,eAAS,oBAAoB,YAAY,KAAK,uBAAuB;AACrE,YAAM,WAAW,YAAW,KAAK,CAAC;AAClC,YAAM,IAAI,SAAS,IAAI,KAAK;AAC5B,YAAM,IAAI,SAAS,IAAI,KAAK;AAC5B,UAAI,KAAK,SAAS,MAAM,KAAK,MAAM,MAAM,KAAK,IAAI;AAChD,aAAK,QAAQ,GAAG,CAAC;AAAA,MACnB;AAEA,UAAI,KAAK,gBAAgB,SAAS;AAChC,aAAK,aAAa,MAAM;AACxB,aAAK,SAAS,WAAW,KAAK,QAAQ,WAAW,CAAC;AAAA,MACpD,OAAO;AAEL,mBAAW,MAAM;AACf,cAAI,KAAK,QAAQ,WAAY,MAAK,KAAK;AAAA,QACzC,GAAG,KAAK,QAAQ,WAAW,CAAC;AAAA,MAC9B;AAEA,UAAI,OAAO,KAAK,QAAQ,aAAa,YAAY;AAC/C,aAAK,QAAQ,SAAS,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC3D;AAEA,eAAS,oBAAoB,aAAa,KAAK,wBAAwB;AACvE,eAAS,oBAAoB,aAAa,KAAK,wBAAwB;AAAA,IACzE;AAwNA,4BAAmB,CAAC,MAAkB;AACpC,WAAK,uBAAoC,EAAE,MAAM;AAAA,IACnD;AAEA,+BAAsB,CAAC,MAAqB;AAC1C,UAAI,MAAM,KAAK,MAAM,SAAS,EAAE,GAAG,GAAG;AACpC,aAAK,uBAAoC,EAAE,MAAM;AAAA,MACnD;AAAA,IACF;AAEA,kCAAyB,CAAC,MAAmB;AAC3C,WAAK,SAAS,EAAE,UAAU,SAAS,QAAQ,IAAI,OAAO;AACtD,WAAK,gBAAgB;AAAA,IACvB;AAgDA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAW,CAAC,MAAa,QAAgB,SAAS;AAChD,WAAK,kBAAkB;AACvB,UAAI,SAAS,aAAa,iBAAiB,KAAK,SAAS,EAAE,eAAe,WAAW;AAAA,MAErF;AACA,YAAM,UAAU,SAAS,SACvB,WAAW,UAAU,KAAK,YAAY,KAAK,aAC3C,WAAW,UAAU,KAAK,cAAc,KAAK;AAC/C,WAAK,cAAc;AAWnB,eAAS,UAAU,IAAI,qBAAqB;AAE5C,eAAS,MAAM,aAAa;AAC5B,eAAS,UAAU,OAAO,qBAAqB;AAG/C,WAAK,WAAW,KAAK;AAErB,mBAAa,KAAK,eAAe;AACjC,WAAK,kBAAkB,WAAW,MAAM;AACtC,iBAAS,MAAM,aAAa;AAAA,MAC9B,GAAG,KAAK,QAAQ,QAAQ;AAAA,IAC1B;AAwBA,+BAAsB,MAAM;AAC1B,YAAM,UAAU,KAAK,gBAAgB;AACrC,UAAI,WAAW,KAAK,WAAW,UAAU,IAAI;AAC3C,cAAM,QAAQ,SAAS,KAAK,WAAW,KAAK;AAC5C,YAAI,QAAQ,KAAK,SAAS,KAAK,QAAQ,aAAa,KAAK,KAAK;AAC5D,eAAK,QAAQ;AAAA,QACf,OAAO;AACL,eAAK,gBAAgB;AAAA,QACvB;AACA,aAAK,uBAAuB,KAAK,OAAO,OAAO;AAAA,MACjD,WAAW,CAAC,WAAW,KAAK,aAAa,UAAU,IAAI;AACrD,cAAM,QAAQ,SAAS,KAAK,aAAa,KAAK;AAC9C,YAAI,SAAS,KAAK,QAAQ,IAAI;AAC5B,eAAK,UAAU;AAAA,QACjB,OAAO;AACL,eAAK,WAAU,oBAAI,KAAK,GAAE,WAAW;AACrC,eAAK,aAAa,QAAQ,KAAK,QAAQ,SAAS;AAAA,QAClD;AACA,aAAK,uBAAuB,KAAK,SAAS,OAAO;AAAA,MACnD;AAAA,IACF;AAkHA,gBAAO,CAAC,aAAa,SAAS;AAE5B,YAAM,OAAO,KAAK,GAAG;AACrB,UAAI,QAAQ,aACR,KACA,YAAW,gBAAgB,KAAK,KAAK,IAAI,MAAM,YAAW,gBAAgB,KAAK,OAAO;AAC1F,WAAK,OAAO;AACZ,UAAI,CAAC,cAAc,KAAK,QAAQ,YAAY;AAC1C,gBAAQ,GAAG,KAAK,IAAI,KAAK,MAAM;AAAA,MACjC;AACA,WAAK,GAAG,QAAQ;AAEhB,UAAI,UAAU,MAAM;AAClB,aAAK,GAAG;AAAA,UACN,IAAI,MAAM,UAAU,EAAE,SAAS,MAAM,YAAY,MAAM,UAAU,KAAK,CAAC;AAAA,QACzE;AAAA,MACF;AAAA,IACF;AAEA,mBAAU,MAAM;AACd,WAAK,KAAK;AACV,UAAI,OAAO,KAAK,QAAQ,WAAW,WAAY,MAAK,QAAQ,OAAO,KAAK,IAAI;AAAA,IAC9E;AAEA,kBAAS,MAAM;AAGb,UAAI,OAAO,KAAK,QAAQ,aAAa,WAAY,MAAK,QAAQ,SAAS,KAAK,IAAI;AAAA,IAClF;AAEA,iBAAQ,MAAM;AACZ,WAAK,KAAK,IAAI;AAAA,IAChB;AA/qBE,SAAK,GAAG,uBAAuB,IAAI;AACnC,SAAK,UAAU;AAAA,MACb,GAAG,YAAW;AAAA,MACd,GAAG;AAAA,IACL;AACA,SAAK,KAAK,MAAM,KAAK;AACrB,SAAK,mBAAmB;AACxB,SAAK,gBAAgB;AACrB,SAAK,oBAAoB;AAIzB,SAAK,aAAa;AAElB,QAAI,KAAK,QAAQ,eAAe;AAC9B,UAAI,KAAK,QAAQ,kBAAkB,SAAU,MAAK,gBAAgB,oBAAoB,KAAK,KAAK,IAAI,KAAK,aAAa,KAAK,QAAQ,oBAAoB;AAAA,IACzJ;AAAA,EACF;AAAA,EAEA,WAAW,WAA8B;AACvC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,OAAO,KACL,KACA,UAAsC,CAAC,GACZ;AAC3B,WAAO,MAAM,KAAK,KAAK,SAAS,WAAU;AAAA,EAC5C;AAAA,EAEA,OAAO,gBAAgB,KAAa;AAClC,YAAQ,MAAM,KAAK,MAAM,MAAM;AAAA,EACjC;AAAA,EAEA,OAAO,aAAa,MAAc;AAChC,UAAM,QAAQ;AACd,WAAO,SAAS,gBAAgB,OAAO,IAAI;AAAA,EAC7C;AAAA,EAEA,OAAO,KAAK,GAAmC;AAC7C,QAAI,EAAE,KAAK,WAAW,OAAO,KAAM,EAAiB,cAAc,UAAU,GAAG;AAC7E,aAAO;AAAA,QACL,GAAI,EAAiB,cAAc,CAAC,EAAE;AAAA,QACtC,GAAI,EAAiB,cAAc,CAAC,EAAE;AAAA,MACxC;AAAA,IACF;AAEA,WAAO,EAAE,GAAI,EAAiB,SAAS,GAAI,EAAiB,QAAQ;AAAA,EACtE;AAAA,EAEA,OAAO,YAAY,IAA6B;AAC9C,WAAO,GAAG,uBAAuB;AAAA,EACnC;AAAA,EAEA,UAAU;AACR,SAAK,qBAAqB;AAC1B,SAAK,eAAe,QAAQ;AAC5B,SAAK,YAAY,OAAO;AACxB,SAAK,GAAG,uBAAuB,IAAI;AAAA,EACrC;AAAA,EAEA,sBAAsB;AACpB,SAAK,GAAG,iBAAiB,SAAS,KAAK,iBAAiB;AACxD,SAAK,GAAG,iBAAiB,WAAW,KAAK,mBAAmB;AAC5D,SAAK,MAAM,iBAAiB,aAAa,KAAK,sBAAsB;AACpE,SAAK,MAAM,iBAAiB,cAAc,KAAK,sBAAsB;AACrE,SAAK,aAAa,iBAAiB,SAAS,KAAK,mBAAmB;AACpE,SAAK,WAAW,iBAAiB,SAAS,MAAM,KAAK,SAAS,OAAO,CAAC;AACtE,SAAK,WAAW,iBAAiB,YAAY,MAAM,KAAK,YAAY,CAAC;AACrE,SAAK,aAAa,iBAAiB,SAAS,MAAM,KAAK,SAAS,SAAS,CAAC;AAC1E,SAAK,aAAa,iBAAiB,YAAY,MAAM,KAAK,cAAc,CAAC;AAAA,EAC3E;AAAA,EAEA,uBAAuB;AACrB,SAAK,GAAG,oBAAoB,SAAS,KAAK,iBAAiB;AAC3D,SAAK,GAAG,oBAAoB,WAAW,KAAK,mBAAmB;AAG/D,aAAS,oBAAoB,aAAa,KAAK,wBAAwB;AACvE,aAAS,oBAAoB,aAAa,KAAK,wBAAwB;AACvE,aAAS,oBAAoB,WAAW,KAAK,uBAAuB;AACpE,aAAS,oBAAoB,YAAY,KAAK,uBAAuB;AAAA,EACvE;AAAA,EAyFA,qBAAqB;AACnB,UAAM,WAAW,SAAS,cAAc,UAAU;AAClD,aAAS,YAAY,YAAW,UAAU,KAAK;AAE/C,SAAK,cAA2B,SAAS,QAAQ;AACjD,SAAK,YAAY,KAAK,eAAe,KAAK;AAG1C,UAAM,QAAQ,KAAK,QAAQ;AAC3B,UAAM,cAAc,iBAAiB,cAAc,QAAQ,SAAS,cAAc,KAAK;AAEvF,QAAI,KAAK,QAAQ,aAAa,CAAC,CAAC,aAAa;AAC3C,kBAAY,OAAO,KAAK,WAAW;AAAA,IACrC,OAAO;AACL,WAAK,GAAG,cAAc,YAAY,KAAK,WAAW;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,kBAAkB;AAChB,SAAK,cAAc;AAGnB,SAAK,aAAa,OAAO,UAAU,YAAY;AAC/C,SAAK,UAAU,KAAK,YAAY,cAAc,oBAAoB;AAClE,SAAK,QAAQ,KAAK,YAAY,cAAc,mBAAmB;AAC/D,SAAK,eAAe,KAAK,YAAY,cAAc,4BAA4B;AAC/E,SAAK,YAAY,KAAK,YAAY,cAAc,mBAAmB;AACnE,SAAK,cAAc,KAAK,YAAY,cAAc,qBAAqB;AACvE,SAAK,aAAa,KAAK,YAAY,cAAc,yBAAyB;AAC1E,SAAK,eAAe,KAAK,YAAY,cAAc,2BAA2B;AAC9E,SAAK,WAAW,KAAK,YAAY,cAAc,wBAAwB;AACvE,SAAK,SAAS,KAAK,YAAY,cAAc,oBAAoB;AACjE,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,eAAe;AAIb,UAAM;AAAA,MACJ,KAAK;AAAA,MACL,KAAK,QAAQ,KAAK;AAAA,MAClB,CAAC,kBAAkB;AAAA,MACnB,KAAK,QAAQ;AAAA,MACb,KAAK;AAAA,IACP;AAEA,QAAI,CAAC,KAAK,QAAQ,YAAY;AAc5B,YAAM;AAAA,QACJ,KAAK;AAAA,QACL,KAAK,QAAQ,KAAK;AAAA,QAClB,KAAK,QAAQ,KAAK;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAAA,IACF;AAEA,SAAK,qBAAqB;AAK1B,QAAI,CAAC,KAAK,QAAQ,cAAe,MAAK,SAAS,OAAO;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,oBAAoB;AAC1B,QAAI,KAAK,YAAa;AACtB,SAAK,cAAc;AACnB,SAAK,YAAY;AAGjB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,cAAc;AACZ,QAAI,KAAK,QAAQ,YAAY;AAE3B,WAAK,SAAS,SAAS,cAAc,KAAK;AAC1C,WAAK,OAAO,UAAU,IAAI,UAAU,KAAK;AACzC,WAAK,OAAO,YAAY;AACxB,WAAK,OAAO,WAAW;AACvB,WAAK,OAAO,iBAAiB,SAAS,KAAK,gBAAgB;AAC3D,WAAK,OAAO,iBAAiB,YAAY,KAAK,mBAAmB;AACjE,WAAK,SAAS,YAAY,KAAK,MAAM;AAErC,WAAK,SAAS,SAAS,cAAc,KAAK;AAC1C,WAAK,OAAO,UAAU,IAAI,UAAU,KAAK;AACzC,WAAK,OAAO,YAAY;AACxB,WAAK,OAAO,WAAW;AACvB,WAAK,OAAO,iBAAiB,SAAS,KAAK,gBAAgB;AAC3D,WAAK,OAAO,iBAAiB,YAAY,KAAK,mBAAmB;AACjE,WAAK,SAAS,YAAY,KAAK,MAAM;AAAA,IACvC;AACA,SAAK,gBAAgB;AACrB,SAAK,kBAAkB;AACvB,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,iBAAiB;AAEf,UAAM,aAAa,KAAK,QAAQ;AAChC,UAAM,aAAa,KAAK,QAAQ;AAChC,UAAM,WAAW,aAAa;AAC9B,UAAM,MAAM,YAAW,aAAa,KAAK;AACzC,QAAI,aAAa,SAAS,gBAAgB;AAC1C,QAAI,aAAa,SAAS,SAAS,SAAS,CAAC;AAC7C,QAAI,aAAa,UAAU,SAAS,SAAS,CAAC;AAC9C,UAAM,IAAI,YAAW,aAAa,GAAG;AACrC,MAAE,aAAa,aAAa,eAAe,aAAa,MAAM,aAAa,GAAG;AAC9E,UAAM,UAAU,YAAW,aAAa,QAAQ;AAChD,YAAQ,aAAa,SAAS,2BAA2B;AACzD,YAAQ,aAAa,MAAM,GAAG;AAC9B,YAAQ,aAAa,MAAM,GAAG;AAC9B,YAAQ,aAAa,KAAK,GAAG;AAC7B,UAAM,OAAO,YAAW,aAAa,MAAM;AAC3C,SAAK,aAAa,MAAM,GAAG;AAC3B,SAAK,aAAa,MAAM,GAAG;AAC3B,UAAM,KAAK,YAAW,aAAa,QAAQ;AAC3C,OAAG,aAAa,SAAS,sBAAsB;AAC/C,OAAG,aAAa,KAAK,WAAW,SAAS,CAAC;AAC1C,MAAE,YAAY,IAAI;AAClB,MAAE,YAAY,EAAE;AAChB,MAAE,YAAY,OAAO;AACrB,QAAI,YAAY,CAAC;AACjB,SAAK,QAAQ,YAAY,GAAG;AAC5B,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,UAAU;AACf,SAAK,IAAI;AAAA,EACX;AAAA,EAEA,kBAAkB;AAIhB,QAAI,KAAK,QAAQ,YAAY;AAC3B,eAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAE9B,cAAM,SAAU,IAAI,IAAK,KAAK;AAC9B,cAAM,SAAS,KAAK,QAAQ;AAC5B,aAAK,gBAAgB,GAAG,QAAQ,MAAM;AAAA,MACxC;AAAA,IACF,OAAO;AACL,eAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAE9B,cAAM,SAAU,IAAI,IAAK,KAAK;AAC9B,cAAM,QAAQ,IAAI,KAAK,IAAI;AAC3B,cAAM,SAAS,QAAQ,KAAK,QAAQ,cAAc,KAAK,QAAQ;AAC/D,aAAK,gBAAgB,GAAG,QAAQ,MAAM;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAgB,GAAW,QAAgB,QAAgB;AACzD,UAAM,OAAO,SAAS,cAAc,KAAK;AACzC,SAAK,UAAU,IAAI,iBAAiB;AACpC,SAAK,MAAM,OACT,KAAK,QAAQ,aAAa,KAAK,IAAI,MAAM,IAAI,SAAS,KAAK,QAAQ,aAAa;AAClF,SAAK,MAAM,MACT,KAAK,QAAQ,aAAa,KAAK,IAAI,MAAM,IAAI,SAAS,KAAK,QAAQ,aAAa;AAClF,SAAK,cAAc,MAAM,IAAI,OAAO,EAAE,SAAS;AAC/C,SAAK,UAAU,YAAY,IAAI;AAAA,EACjC;AAAA,EAEA,oBAAoB;AAClB,UAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,UAAM,UAAU,IAAI,iBAAiB;AAErC,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG;AAC9B,YAAM,OAAoB,MAAM,UAAU,IAAI;AAC9C,YAAM,SAAU,IAAI,KAAM,KAAK;AAC/B,WAAK,MAAM,OACT,KAAK,QAAQ,aACb,KAAK,IAAI,MAAM,IAAI,KAAK,QAAQ,cAChC,KAAK,QAAQ,aACb;AACF,WAAK,MAAM,MACT,KAAK,QAAQ,aACb,KAAK,IAAI,MAAM,IAAI,KAAK,QAAQ,cAChC,KAAK,QAAQ,aACb;AACF,WAAK,cAAc,YAAW,gBAAgB,CAAC;AAC/C,WAAK,YAAY,YAAY,IAAI;AAAA,IACnC;AAAA,EACF;AAAA,EAiBA,kBAAkB;AAGhB,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,OAAQ;AAClC,QAAI,KAAK,QAAQ,YAAY;AAC3B,UAAI,KAAK,WAAW,MAAM;AACxB,aAAK,OAAO,UAAU,OAAO,QAAQ;AACrC,aAAK,OAAO,UAAU,IAAI,QAAQ;AAAA,MACpC,WAAW,KAAK,WAAW,MAAM;AAC/B,aAAK,OAAO,UAAU,IAAI,QAAQ;AAClC,aAAK,OAAO,UAAU,OAAO,QAAQ;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,uBAAuB;AAErB,QAAI,UAAU,KAAK,GAAG,SAAS,KAAK,QAAQ,eAAe,MAAM,IAAI,MAAM,GAAG;AAC9E,QAAI,KAAK,QAAQ,cAAc,EAAE,OAAO,MAAM,CAAC,MAAM,cAAc;AACjE,UAAI,MAAM,CAAC,EAAE,YAAY,EAAE,QAAQ,IAAI,IAAI,GAAG;AAC5C,aAAK,SAAS;AAAA,MAChB,OAAO;AACL,aAAK,SAAS;AAAA,MAChB;AACA,YAAM,CAAC,IAAI,MAAM,CAAC,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,MAAM,EAAE;AAAA,IACxD;AACA,QAAI,MAAM,CAAC,MAAM,OAAO;AACtB,YAAM,MAAM,IAAI,KAAK,CAAC,oBAAI,KAAK,IAAI,KAAK,QAAQ,OAAO;AACvD,cAAQ,CAAC,IAAI,SAAS,EAAE,SAAS,GAAG,IAAI,WAAW,EAAE,SAAS,CAAC;AAC/D,UAAI,KAAK,QAAQ,YAAY;AAC3B,aAAK,SAAS,SAAS,MAAM,CAAC,CAAC,KAAK,MAAM,SAAS,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO;AAAA,MAC7E;AAAA,IACF;AACA,SAAK,QAAQ,CAAC,MAAM,CAAC,KAAK;AAC1B,SAAK,UAAU,CAAC,MAAM,CAAC,KAAK;AAC5B,SAAK,WAAW,QAAQ,YAAW,gBAAgB,KAAK,KAAK;AAC7D,SAAK,aAAa,QAAQ,YAAW,gBAAgB,KAAK,OAAO;AAEjE,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAwCA,WAAW,OAAO;AAChB,UAAM,OAAO,KAAK,aAChB,QAAQ,KAAK,IAAI,GACjB,UAAU,SAAS,SACnB,OAAO,KAAK,MAAM,UAAU,IAAI,KAChC,SAAS,QAAQ,MACjB,SACE,WAAW,QAAQ,KAAK,QAAQ,KAAK,KAAK,QAAQ,cAAc,KAAK,QAAQ,aAC/E,IAAI,KAAK,IAAI,MAAM,IAAI,QACvB,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI;AAE1B,QAAI,OAAO;AACT,WAAK,SAAS,UAAU,IAAI,uBAAuB;AACnD,iBAAW,MAAM;AACf,aAAK,SAAS,UAAU,OAAO,uBAAuB;AACtD,aAAK,QAAQ,GAAG,CAAC;AAAA,MACnB,GAAG,KAAK;AAAA,IACV,OAAO;AACL,WAAK,QAAQ,GAAG,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EAwBA,uBAAuB,OAAO,SAAS;AACrC,UAAM,OAAO,KAAK,MAAM,UAAU,IAAI;AACtC,UAAM,SAAS,QAAQ;AACvB,QAAI;AACJ,QAAI,KAAK,QAAQ,YAAY;AAC3B,eAAS,KAAK,QAAQ;AAAA,IACxB,OAAO;AACL,eACE,WAAW,QAAQ,KAAK,QAAQ,KAAK,KAAK,QAAQ,cAAc,KAAK,QAAQ;AAAA,IACjF;AACA,SAAK,mBAAmB,QAAQ,MAAM;AAAA,EACxC;AAAA,EAEA,QAAQ,GAAG,GAAG,WAAoB,OAAO;AACvC,UAAM,UAAU,KAAK,gBAAgB,SACnC,OAAO,KAAK,MAAM,WAAW,WAAW,IAAI,KAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,GAC3B,QAAQ,WAAW,KAAK,KAAK,QAAQ,cAAc,KAAK,QAAQ,eAAe;AACjF,QAAI,SAAS,KAAK,MAAM,GAAG,CAAC,CAAC,GAC3B,SAAS,QAAQ,KAAK,QAAQ,cAAc,KAAK,QAAQ;AAE3D,QAAI,KAAK,QAAQ,YAAY;AAC3B,eAAS,KAAK,QAAQ;AAAA,IACxB;AAGA,QAAI,SAAS,GAAG;AACd,eAAS,KAAK,KAAK,IAAI;AAAA,IACzB;AAGA,QAAI,QAAQ,KAAK,MAAM,SAAS,IAAI;AAGpC,aAAS,QAAQ;AAGjB,QAAI,KAAK,QAAQ,YAAY;AAC3B,UAAI,SAAS;AACX,YAAI,UAAU,EAAG,SAAQ;AAAA,MAC3B,OAAO;AACL,YAAI,SAAU,UAAS;AACvB,YAAI,UAAU,GAAI,SAAQ;AAAA,MAC5B;AAAA,IACF,OAAO;AACL,UAAI,SAAS;AACX,YAAI,UAAU,IAAI;AAChB,kBAAQ;AAAA,QACV;AACA,gBAAQ,QAAS,UAAU,IAAI,KAAK,QAAS,UAAU,IAAI,IAAI,QAAQ;AAAA,MACzE,OAAO;AACL,YAAI,UAAU;AACZ,mBAAS;AAAA,QACX;AACA,YAAI,UAAU,IAAI;AAChB,kBAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAGA,QAAI,KAAK,KAAK,WAAW,MAAM,OAAO;AACpC,UAAI,KAAK,cAAc,KAAK,QAAQ,SAAS;AAE3C,YAAI,CAAC,KAAK,cAAc;AACtB,oBAAU,QAAQ,EAAE;AACpB,eAAK,eAAe,WAAW,MAAM;AACnC,iBAAK,eAAe;AAAA,UACtB,GAAG,GAAG;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,SAAK,KAAK,WAAW,IAAI;AACzB,QAAI,SAAS;AACX,WAAK,WAAW,QAAQ,YAAW,gBAAgB,KAAK;AAAA,IAC1D,OAAO;AACL,WAAK,aAAa,QAAQ,YAAW,gBAAgB,KAAK;AAAA,IAC5D;AAGA,SAAK,mBAAmB,QAAQ,MAAM;AAAA,EACxC;AAAA,EAEA,mBAAmB,QAAgB,QAAgB;AAEjD,QAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,GAAI;AAC5B,UAAM,MAAM,KAAK,IAAI,MAAM,KAAK,SAAS,KAAK,QAAQ,aACpD,MAAM,CAAC,KAAK,IAAI,MAAM,KAAK,SAAS,KAAK,QAAQ,aACjD,MAAM,KAAK,IAAI,MAAM,IAAI,QACzB,MAAM,CAAC,KAAK,IAAI,MAAM,IAAI;AAC5B,SAAK,KAAK,aAAa,MAAM,IAAI,SAAS,CAAC;AAC3C,SAAK,KAAK,aAAa,MAAM,IAAI,SAAS,CAAC;AAC3C,SAAK,GAAG,aAAa,MAAM,IAAI,SAAS,CAAC;AACzC,SAAK,GAAG,aAAa,MAAM,IAAI,SAAS,CAAC;AAAA,EAC3C;AAAA,EAEA,cAAc;AACZ,QAAI,KAAK,WAAW,SAAS,GAAI,MAAK,gBAAgB;AACtD,SAAK,WAAW,QAAQ,YAAW,gBAAgB,OAAO,KAAK,WAAW,KAAK,CAAC;AAAA,EAClF;AAAA,EAEA,gBAAgB;AACd,QAAI,KAAK,aAAa,SAAS,GAAI,MAAK,WAAU,oBAAI,KAAK,GAAE,WAAW;AACxE,SAAK,aAAa,QAAQ,YAAW,gBAAgB,OAAO,KAAK,aAAa,KAAK,CAAC;AAAA,EACtF;AAAA,EAEA,kBAAkB;AAChB,SAAK,SAAQ,oBAAI,KAAK,GAAE,SAAS;AACjC,SAAK,WAAW,SAAS,KAAK,SAAS,KAAK,QAAQ,aAAa,KAAK,KAAK,SAAS;AAAA,EACtF;AAAA;AAAA,EAqCA,OAAO;AACL,YAAQ;AAAA,MACN;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ;AACN,YAAQ;AAAA,MACN;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAgCF;AA7BI,YAAW,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAlvBpB,IAAM,aAAN;;;AC1EP,IAAMC,cAA0B;AAAA,EAC9B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,aAAa;AAAA,EACb,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,mBAAmB;AACrB;AAEO,IAAM,SAAN,MAAM,OAAM;AAAA,EA4BjB,YAAY,SAAgC;AAC1C,SAAK,UAAU;AAAA,MACb,GAAG,OAAM;AAAA,MACT,GAAG;AAAA,IACL;AACA,SAAK,UAAU,KAAK,QAAQ;AAC5B,SAAK,UAAU;AACf,SAAK,gBAAgB,KAAK,QAAQ;AAClC,QAAI,OAAM,QAAQ,WAAW,GAAG;AAC9B,aAAM,iBAAiB;AAAA,IACzB;AAEA,WAAM,QAAQ,KAAK,IAAI;AACvB,UAAM,eAAe,KAAK,aAAa;AACvC,iBAAa,kBAAkB,IAAI;AACnC,SAAK,KAAK;AACV,SAAK,WAAW;AAChB,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,WAAW,WAAyB;AAClC,WAAOA;AAAA,EACT;AAAA,EAEA,OAAO,YAAY,IAAwB;AACzC,WAAO,GAAG,kBAAkB;AAAA,EAC9B;AAAA,EAEA,OAAO,mBAAmB;AACxB,UAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,cAAU,aAAa,MAAM,iBAAiB;AAE9C,cAAU,iBAAiB,cAAc,OAAM,YAAY;AAC3D,cAAU,iBAAiB,aAAa,OAAM,WAAW;AACzD,cAAU,iBAAiB,YAAY,OAAM,UAAU;AACvD,cAAU,iBAAiB,aAAa,OAAM,YAAY;AAC1D,aAAS,iBAAiB,aAAa,OAAM,WAAW;AACxD,aAAS,iBAAiB,WAAW,OAAM,UAAU;AACrD,aAAS,KAAK,YAAY,SAAS;AACnC,WAAM,aAAa;AAAA,EACrB;AAAA,EAEA,OAAO,mBAAmB;AACxB,aAAS,oBAAoB,aAAa,OAAM,WAAW;AAC3D,aAAS,oBAAoB,WAAW,OAAM,UAAU;AACxD,WAAM,WAAW,OAAO;AACxB,WAAM,aAAa;AAAA,EACrB;AAAA,EAEA,OAAO,aAAa,GAA4B;AAC9C,UAAM,SAAS,EAAE;AAEjB,QAAI,UAAU,CAAC,OAAO,QAAQ,WAAW,KAAK,OAAO,QAAQ,mBAAmB,GAAG;AACjF,YAAM,YAAY,OAAO,QAAQ,mBAAmB;AACpD,YAAM,QAAe,UAAU,kBAAkB;AACjD,UAAI,CAAC,MAAO;AACZ,YAAM,UAAU;AAChB,YAAM,YAAY;AAClB,aAAM,gBAAgB;AACtB,YAAM,GAAG,UAAU,IAAI,SAAS;AAChC,YAAM,GAAG,MAAM,aAAa;AAC5B,YAAM,eAAe,OAAM,MAAM,CAAC;AAClC,YAAM,OAAO,KAAK,IAAI;AACtB,YAAM,OAAO,OAAM,MAAM,CAAC;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,OAAO,YAAY,GAA4B;AAC7C,QAAI,CAAC,CAAC,OAAM,eAAe;AACzB,QAAE,eAAe;AACjB,YAAM,QAAQ,OAAM;AACpB,YAAM,SAAS,KAAK,IAAI,MAAM,OAAO,OAAM,MAAM,CAAC,CAAC;AACnD,YAAM,OAAO,OAAM,MAAM,CAAC;AAC1B,YAAM,YAAY,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM;AACrD,YAAM,OAAO,KAAK,IAAI;AAEtB,YAAM,cAAc,MAAM,OAAO,MAAM;AACvC,YAAM,qBAAqB,MAAM,GAAG,cAAc,MAAM,QAAQ;AAChE,YAAM,GAAG,MAAM,YAAY,cAAc,WAAW;AACpD,YAAM,GAAG,MAAM,WAAW,IAAI,KAAK,IAAI,cAAc,kBAAkB,GAAG,SAAS;AAAA,IACrF;AAAA,EACF;AAAA,EAEA,OAAO,aAAa;AAClB,QAAI,CAAC,CAAC,OAAM,eAAe;AACzB,YAAM,QAAQ,OAAM;AACpB,YAAM,UAAU;AAChB,YAAM,GAAG,UAAU,OAAO,SAAS;AAEnC,YAAM,cAAc,MAAM,OAAO,MAAM;AACvC,YAAM,qBAAqB,MAAM,GAAG,cAAc,MAAM,QAAQ;AAChE,YAAM,oBAAoB,KAAK,IAAI,WAAW,IAAI,sBAAsB,MAAM,YAAY;AAG1F,UAAI,mBAAmB;AACrB,cAAM,YAAY;AAClB,cAAM,QAAQ;AAAA,MAEhB,OAAO;AACL,cAAM,GAAG,MAAM,aAAa;AAC5B,cAAM,GAAG,MAAM,YAAY;AAC3B,cAAM,GAAG,MAAM,UAAU;AACzB,cAAM,aAAa;AAAA,MACrB;AACA,aAAM,gBAAgB;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,OAAO,MAAM,GAA4B;AACvC,QAAI,EAAE,KAAK,WAAW,OAAO,KAAM,EAAiB,cAAc,UAAU,GAAG;AAC7E,aAAQ,EAAiB,cAAc,CAAC,EAAE;AAAA,IAC5C;AAEA,WAAQ,EAAiB;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,aAAa;AAElB,eAAW,SAAS,CAAC,GAAG,OAAM,OAAO,GAAG;AACtC,YAAM,QAAQ;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,eAAe;AACb,QAAI,QAAqB,KAAK,QAAQ,UAClC,SAAS,eAAe,KAAK,QAAQ,OAAO,IAC5C,SAAS,cAAc,KAAK;AAChC,QAAI,iBAAiB,qBAAqB;AACxC,YAAM,OAAQ,MAA8B,QAAQ,UAAU,IAAI;AAClE,cAAS,KAAqB;AAAA,IAChC;AACA,UAAM,UAAU,IAAI,SAAS,UAAU;AACvC,UAAM,aAAa,QAAQ,QAAQ;AACnC,UAAM,aAAa,aAAa,QAAQ;AACxC,UAAM,aAAa,eAAe,MAAM;AAExC,QAAI,KAAK,QAAQ,QAAQ,SAAS,GAAG;AACnC,YAAM,UAAU,IAAI,GAAG,KAAK,QAAQ,QAAQ,MAAM,GAAG,EAAE,OAAO,OAAO,CAAC;AAAA,IACxE;AACA,QAAI,KAAK,SAAS;AAChB,YAAM,OAAO,SAAS,cAAc,GAAG;AACvC,WAAK,cAAc,KAAK;AACxB,YAAM,gBAAgB,IAAI;AAAA,IAC5B;AACA,QAAI,KAAK,QAAQ,QAAQ;AACvB,YAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,aAAO,OAAO;AACd,aAAO,cAAc,KAAK,QAAQ;AAClC,aAAO,iBAAiB,SAAS,CAAC,MAAM;AACtC,UAAE,gBAAgB;AAClB,YAAI,OAAO,KAAK,QAAQ,aAAa,YAAY;AAC/C,eAAK,QAAQ,SAAS;AAAA,QACxB;AACA,aAAK,QAAQ;AAAA,MACf,CAAC;AACD,YAAM,YAAY,MAAM;AAAA,IAC1B;AACA,QAAI,KAAK,QAAQ,aAAa;AAC5B,YAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,YAAM,OAAO;AACb,YAAM,YAAY;AAClB,YAAM,aAAa,cAAc,SAAS;AAC1C,YAAM,OAAO,SAAS,cAAc,GAAG;AACvC,WAAK,YAAY;AACjB,WAAK,aAAa,eAAe,MAAM;AACvC,WAAK,cAAc;AACnB,YAAM,YAAY,IAAI;AACtB,YAAM,iBAAiB,SAAS,CAAC,MAAM;AACrC,UAAE,gBAAgB;AAClB,aAAK,QAAQ;AAAA,MACf,CAAC;AACD,YAAM,YAAY,KAAK;AAAA,IACzB;AACA,WAAM,WAAW,YAAY,KAAK;AAClC,WAAO;AAAA,EACT;AAAA,EAEA,aAAa;AAEX,SAAK,GAAG,MAAM,UAAU;AACxB,SAAK,GAAG,MAAM,UAAU;AAExB,SAAK,GAAG,MAAM,aAAa;AAAA,YACnB,KAAK,QAAQ,UAAU;AAAA,gBACnB,KAAK,QAAQ,UAAU;AAAA;AAEnC,eAAW,MAAM;AACf,WAAK,GAAG,MAAM,MAAM;AACpB,WAAK,GAAG,MAAM,UAAU;AAAA,IAC1B,GAAG,CAAC;AAAA,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,YAAY;AACV,QAAI,KAAK,kBAAkB,SAAU;AACrC,SAAK,YAAY,KAAK,IAAI,IAAI,KAAK;AACnC,SAAK,iBAAiB,WAAW,MAAM,KAAK,QAAQ,GAAG,KAAK,aAAa;AAAA,EAC3E;AAAA;AAAA,EAGA,cAAc;AACZ,QAAI,KAAK,kBAAkB,KAAM;AACjC,iBAAa,KAAK,cAAc;AAChC,SAAK,iBAAiB;AACtB,SAAK,gBAAgB,KAAK,IAAI,GAAG,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,EAC9D;AAAA;AAAA,EAGA,eAAe;AACb,QAAI,KAAK,kBAAkB,KAAM;AACjC,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU;AACR,iBAAa,KAAK,cAAc;AAChC,SAAK,iBAAiB;AACtB,UAAM,qBAAqB,KAAK,GAAG,cAAc,KAAK,QAAQ;AAE9D,QAAI,KAAK,WAAW;AAClB,WAAK,GAAG,MAAM,aAAa;AAC3B,WAAK,GAAG,MAAM,YAAY,cAAc,kBAAkB;AAC1D,WAAK,GAAG,MAAM,UAAU;AAAA,IAC1B;AAGA,SAAK,GAAG,MAAM,aAAa;AAAA,eAChB,KAAK,QAAQ,WAAW;AAAA,gBACvB,KAAK,QAAQ,WAAW;AAEpC,eAAW,MAAM;AACf,WAAK,GAAG,MAAM,UAAU;AACxB,WAAK,GAAG,MAAM,YAAY;AAAA,IAC5B,GAAG,CAAC;AAEJ,eAAW,MAAM;AAEf,UAAI,OAAO,KAAK,QAAQ,qBAAqB,YAAY;AACvD,aAAK,QAAQ,iBAAiB;AAAA,MAChC;AAEA,UAAI,KAAK,GAAG,MAAM,KAAK,QAAQ,SAAS;AACtC,aAAK,GAAG,OAAO;AAGf,cAAM,QAAQ,OAAM,QAAQ,QAAQ,IAAI;AACxC,YAAI,SAAS,EAAG,QAAM,QAAQ,OAAO,OAAO,CAAC;AAC7C,YAAI,OAAM,QAAQ,WAAW,KAAK,OAAM,YAAY;AAClD,iBAAM,iBAAiB;AAAA,QACzB;AAAA,MACF;AAAA,IACF,GAAG,KAAK,QAAQ,WAAW;AAAA,EAC7B;AAOF;AAJI,OAAM,UAAU,CAAC;AACjB,OAAM,aAAa;AACnB,OAAM,gBAAgB;AAxSnB,IAAM,QAAN;;;ACdP,IAAMC,cAA4B;AAAA,EAChC,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,SAAS;AACX;AAEO,IAAM,UAAN,MAAM,iBAAgB,UAA0B;AAAA,EAmBrD,YAAY,IAAiB,SAAkC;AAC7D,UAAM,IAAI,SAAS,QAAO;AAuG5B;AAAA;AAAA;AAAA,gBAAO,CAAC,aAAsB;AAC5B,UAAI,KAAK,OAAQ;AACjB,iBAAW,aAAa,SAAY,OAAO;AAC3C,WAAK,SAAS;AAEd,WAAK,UAAU,EAAE,GAAG,KAAK,SAAS,GAAG,KAAK,qBAAqB,EAAE;AACjE,WAAK,sBAAsB;AAC3B,WAAK,sBAAsB,QAAQ;AAAA,IACrC;AAKA;AAAA;AAAA;AAAA,iBAAQ,MAAM;AACZ,UAAI,CAAC,KAAK,OAAQ;AAClB,WAAK,YAAY;AACjB,WAAK,YAAY;AACjB,WAAK,SAAS;AACd,WAAK,qBAAqB;AAAA,IAC5B;AAkIA,6BAAoB,MAAM;AACxB,WAAK,YAAY;AACjB,WAAK,YAAY;AACjB,WAAK,KAAK,KAAK;AAAA,IACjB;AAEA,6BAAoB,MAAM;AACxB,WAAK,YAAY;AACjB,WAAK,YAAY;AACjB,WAAK,MAAM;AAAA,IACb;AAEA,wBAAe,MAAM;AACnB,UAAI,MAAM,YAAY;AACpB,aAAK,YAAY;AACjB,aAAK,KAAK,KAAK;AAAA,MACjB;AAAA,IACF;AAEA,uBAAc,MAAM;AAClB,WAAK,YAAY;AACjB,WAAK,MAAM;AAAA,IACb;AAjRE,SAAK,GAAG,oBAAoB,IAAI;AAEhC,SAAK,UAAU;AAAA,MACb,GAAG,SAAQ;AAAA,MACX,GAAG,KAAK,qBAAqB;AAAA,MAC7B,GAAG;AAAA,IACL;AAEA,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,iBAAiB;AACtB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAA2B;AACpC,WAAOA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAmC,CAAC,GACf;AACrB,WAAO,MAAM,KAAK,KAAK,SAAS,QAAO;AAAA,EACzC;AAAA,EAEA,OAAO,YAAY,IAA0B;AAC3C,WAAO,GAAG,oBAAoB;AAAA,EAChC;AAAA,EAEA,UAAU;AACR,QAAI,KAAK,GAAG,aAAa,kBAAkB,MAAM,KAAK,UAAU,IAAI;AAClE,WAAK,GAAG,gBAAgB,kBAAkB;AAAA,IAC5C;AACA,SAAK,UAAU,OAAO;AACtB,SAAK,qBAAqB;AAC1B,SAAK,GAAG,oBAAoB,IAAI;AAAA,EAClC;AAAA,EAEA,mBAAmB;AACjB,SAAK,YAAY,SAAS,cAAc,KAAK;AAC7C,SAAK,UAAU,UAAU,IAAI,WAAW,kBAAkB;AAC1D,SAAK,UAAU,KAAK,WAAW,MAAM,KAAK,CAAC;AAC3C,SAAK,UAAU,aAAa,QAAQ,SAAS;AAC7C,SAAK,GAAG,aAAa,oBAAoB,KAAK,UAAU,EAAE;AAE1D,UAAM,mBAAmB,KAAK,QAAQ,YAClC,SAAS,eAAe,KAAK,QAAQ,SAAS,IAC9C,SAAS,cAAc,KAAK;AAChC,QAAI,KAAK,QAAQ,WAAW;AAC1B,WAAK,UAAU,UAAU,IAAI,MAAM;AAAA,IACrC;AACA,qBAAiB,MAAM,UAAU;AACjC,qBAAiB,UAAU,IAAI,iBAAiB;AAChD,SAAK,mBAAmB,gBAAgB;AACxC,SAAK,UAAU,YAAY,gBAAgB;AAC3C,aAAS,KAAK,YAAY,KAAK,SAAS;AAAA,EAC1C;AAAA,EAEA,mBAAmB,kBAA+B;AAChD,QAAI,KAAK,QAAQ,UAAW;AAC5B,qBAAiB,YAAY,KAAK,QAAQ;AAAA,EAC5C;AAAA,EAEA,wBAAwB;AACtB,SAAK,mBAAmB,KAAK,UAAU,cAAc,kBAAkB,CAAC;AAAA,EAC1E;AAAA,EAEA,sBAAsB;AACpB,SAAK,GAAG,iBAAiB,cAAc,KAAK,iBAAiB;AAC7D,SAAK,GAAG,iBAAiB,cAAc,KAAK,iBAAiB;AAC7D,SAAK,GAAG,iBAAiB,SAAS,KAAK,cAAc,IAAI;AACzD,SAAK,GAAG,iBAAiB,QAAQ,KAAK,aAAa,IAAI;AAAA,EACzD;AAAA,EAEA,uBAAuB;AACrB,SAAK,GAAG,oBAAoB,cAAc,KAAK,iBAAiB;AAChE,SAAK,GAAG,oBAAoB,cAAc,KAAK,iBAAiB;AAChE,SAAK,GAAG,oBAAoB,SAAS,KAAK,cAAc,IAAI;AAC5D,SAAK,GAAG,oBAAoB,QAAQ,KAAK,aAAa,IAAI;AAAA,EAC5D;AAAA,EA0BA,uBAAuB;AACrB,iBAAa,KAAK,iBAAiB;AACnC,SAAK,oBAAoB,WAAW,MAAM;AACxC,UAAI,KAAK,aAAa,KAAK,UAAW;AACtC,WAAK,YAAY;AAAA,IACnB,GAAG,KAAK,QAAQ,SAAS;AAAA,EAC3B;AAAA,EAEA,sBAAsB,UAAU;AAC9B,iBAAa,KAAK,kBAAkB;AACpC,SAAK,qBAAqB,WAAW,MAAM;AACzC,UAAI,CAAC,KAAK,aAAa,CAAC,KAAK,aAAa,CAAC,SAAU;AACrD,WAAK,WAAW;AAAA,IAClB,GAAG,KAAK,QAAQ,UAAU;AAAA,EAC5B;AAAA,EAEA,mBAAmB;AACjB,UAAM,UAAuB,KAAK;AAClC,UAAM,SAAS,KAAK,IAClB,eAAe,OAAO,cACtB,cAAc,OAAO,aACrB,gBAAgB,QAAQ,cACxB,eAAe,QAAQ,aACvB,SAAS,KAAK,QAAQ;AAExB,SAAK,YAAY;AACjB,SAAK,YAAY;AAEjB,UAAM,aAAa,OAAO,sBAAsB;AAChD,QAAI,YAAY,WAAW,MAAM,MAAM,qBAAqB;AAC5D,QAAI,aAAa,WAAW,OAAO,MAAM,sBAAsB;AAC/D,QAAI,KAAK,QAAQ,aAAa,OAAO;AACnC,mBAAa,CAAC,gBAAgB;AAC9B,oBAAc,cAAc,IAAI,eAAe;AAC/C,WAAK,YAAY,CAAC,KAAK,QAAQ;AAAA,IACjC,WAAW,KAAK,QAAQ,aAAa,SAAS;AAC5C,mBAAa,eAAe,IAAI,gBAAgB;AAChD,oBAAc,cAAc;AAC5B,WAAK,YAAY,KAAK,QAAQ;AAAA,IAChC,WAAW,KAAK,QAAQ,aAAa,QAAQ;AAC3C,mBAAa,eAAe,IAAI,gBAAgB;AAChD,oBAAc,CAAC,eAAe;AAC9B,WAAK,YAAY,CAAC,KAAK,QAAQ;AAAA,IACjC,OAAO;AACL,mBAAa,eAAe;AAC5B,oBAAc,cAAc,IAAI,eAAe;AAC/C,WAAK,YAAY,KAAK,QAAQ;AAAA,IAChC;AAEA,UAAM,iBAAiB,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,YAAQ,MAAM,MAAM,eAAe,IAAI;AACvC,YAAQ,MAAM,OAAO,eAAe,IAAI;AAAA,EAC1C;AAAA,EAEA,wBAAwB,GAAW,GAAW,OAAe,QAAgB;AAC3E,UAAM,aAAa,MAAM,sBAAsB;AAC/C,UAAM,YAAY,MAAM,qBAAqB;AAC7C,QAAI,OAAO,IAAI;AACf,QAAI,OAAO,IAAI;AAEf,UAAM,WAAqB;AAAA,MACzB,MAAM;AAAA,MACN,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IACF;AACA,UAAM,SAAS,KAAK,QAAQ,SAAS,KAAK,QAAQ;AAClD,UAAM,QAAQ,MAAM,qBAAqB,SAAS,MAAM,UAAU,MAAM;AAExE,QAAI,MAAM,MAAM;AACd,aAAO;AAAA,IACT,WAAW,MAAM,OAAO;AACtB,cAAQ,OAAO,QAAQ,OAAO;AAAA,IAChC;AACA,QAAI,MAAM,KAAK;AACb,aAAO;AAAA,IACT,WAAW,MAAM,QAAQ;AACvB,cAAQ,OAAO,SAAS,OAAO;AAAA,IACjC;AACA,WAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,aAAa;AACX,SAAK,iBAAiB;AACtB,SAAK,UAAU,MAAM,aAAa;AAClC,UAAM,WAAW,KAAK,QAAQ;AAE9B,SAAK,UAAU,MAAM,aAAa;AAAA,kBACpB,QAAQ;AAAA,gBACV,QAAQ;AACpB,eAAW,MAAM;AACf,WAAK,UAAU,MAAM,YAAY,cAAc,KAAK,SAAS,kBAAkB,KAAK,SAAS;AAC7F,WAAK,UAAU,MAAM,WAAW,KAAK,QAAQ,WAAW,GAAG,SAAS;AAAA,IACtE,GAAG,CAAC;AAAA,EACN;AAAA,EAEA,cAAc;AACZ,UAAM,WAAW,KAAK,QAAQ;AAE9B,SAAK,UAAU,MAAM,aAAa;AAAA,kBACpB,QAAQ;AAAA,gBACV,QAAQ;AACpB,eAAW,MAAM;AACf,WAAK,UAAU,MAAM,YAAY;AACjC,WAAK,UAAU,MAAM,UAAU;AAAA,IACjC,GAAG,CAAC;AAAA,EAYN;AAAA,EA0BA,uBAAgD;AAC9C,UAAM,mBAA4C,CAAC;AACnD,UAAM,oBAAoB,KAAK,GAAG,aAAa,cAAc;AAC7D,UAAM,YAAY,KAAK,GAAG,aAAa,iBAAiB;AACxD,UAAM,iBAAiB,KAAK,GAAG,aAAa,eAAe;AAC3D,QAAI,mBAAmB;AACrB,uBAAiB,OAAO;AAAA,IAC1B;AACA,QAAI,gBAAgB;AAClB,uBAAiB,WAAW;AAAA,IAC9B;AACA,QAAI,WAAW;AACb,uBAAiB,YAAY;AAAA,IAC/B;AAEA,WAAO;AAAA,EACT;AACF;;;AChXO,IAAM,uBAAuB;AAAA,EAClC,cAAc,EAAE,WAAsB,cAAc,UAAU,gBAAgB;AAAA;AAAA;AAAA,EAG9E,OAAO,EAAE,WAAsB,OAAO,UAAU,eAAe;AAAA,EAC/D,UAAU,EAAE,WAAsB,UAAU,UAAU,YAAY;AAAA,EAClE,OAAO,EAAE,WAAsB,OAAO,UAAU,SAAS;AAAA,EACzD,aAAa,EAAE,WAAsB,aAAa,UAAU,eAAe;AAAA,EAC3E,YAAY,EAAE,WAAsB,YAAY,UAAU,cAAc;AAAA,EACxE,UAAU,EAAE,WAAsB,UAAU,UAAU,oBAAoB;AAAA,EAC1E,UAAU,EAAE,WAAsB,UAAU,UAAU,cAAc;AAAA,EACpE,OAAO,EAAE,WAAsB,OAAO,UAAU,SAAS;AAAA,EACzD,UAAU,EAAE,WAAsB,UAAU,UAAU,YAAY;AAAA,EAClE,SAAS,EAAE,WAAsB,SAAS,UAAU,WAAW;AAAA,EAC/D,WAAW,EAAE,WAAsB,WAAW,UAAU,aAAa;AAAA,EACrE,YAAY,EAAE,WAAsB,YAAY,UAAU,SAAS;AAAA,EACnE,SAAS,EAAE,WAAsB,SAAS,UAAU,WAAW;AAAA,EAC/D,MAAM,EAAE,WAAsB,MAAM,UAAU,QAAQ;AAAA,EACtD,WAAW,EAAE,WAAsB,WAAW,UAAU,cAAc;AAAA,EACtE,YAAY,EAAE,WAAsB,YAAY,UAAU,cAAc;AAAA,EACxE,SAAS,EAAE,WAAsB,SAAS,UAAU,cAAc;AAAA,EAClE,sBAAsB;AAAA,IACpB,WAAsB;AAAA,IACtB,UAAU;AAAA,EACZ;AACF;AAsBO,SAAS,SACd,UAAuB,SAAS,MAChC,SACA;AACA,aAAW,QAAQ,OAAO,KAAK,oBAAoB,GAAyB;AAC1E,UAAM,EAAE,WAAW,SAAS,IAAI,qBAAqB,IAAI;AAKzD,UAAM,MAAM,QAAQ,iBAAiB,OAAO,QAAQ,qBAAqB;AAGzE,IAAC,UAAsC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,CAAC;AAAA,EACxE;AACF;;;ACxDO,IAAM,UAAU;AAMvB,IAAI,OAAO,aAAa,aAAa;AACnC,WAAS,iBAAiB,WAAW,MAAM,kBAAkB,IAAI;AACjE,WAAS,iBAAiB,SAAS,MAAM,gBAAgB,IAAI;AAC7D,WAAS,iBAAiB,SAAS,MAAM,gBAAgB,IAAI;AAC7D,WAAS,iBAAiB,QAAQ,MAAM,eAAe,IAAI;AAC7D;AACA,MAAM,KAAK;AACX,MAAM,KAAK;AACX,MAAM,KAAK;AACX,MAAM,KAAK;AACX,MAAM,KAAK;",
6
+ "names": ["el", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "li", "index", "el", "_defaults", "value", "realOption", "li", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults", "_defaults"]
7
+ }