@ultraviolet/ui 3.0.0-beta.0 → 3.0.0-beta.10

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 (209) hide show
  1. package/dist/components/ActionBar/index.cjs +5 -30
  2. package/dist/components/ActionBar/index.js +5 -28
  3. package/dist/components/ActionBar/styles.css.cjs +10 -0
  4. package/dist/components/ActionBar/styles.css.d.ts +3 -0
  5. package/dist/components/ActionBar/styles.css.js +10 -0
  6. package/dist/components/Alert/index.cjs +8 -76
  7. package/dist/components/Alert/index.d.ts +1 -2
  8. package/dist/components/Alert/index.js +8 -74
  9. package/dist/components/Alert/styles.css.cjs +14 -0
  10. package/dist/components/Alert/styles.css.d.ts +35 -0
  11. package/dist/components/Alert/styles.css.js +14 -0
  12. package/dist/components/Alert/type.d.ts +2 -0
  13. package/dist/components/Avatar/constants.cjs +0 -9
  14. package/dist/components/Avatar/constants.js +0 -9
  15. package/dist/components/Avatar/index.cjs +42 -117
  16. package/dist/components/Avatar/index.js +43 -116
  17. package/dist/components/Avatar/styles.css.cjs +18 -0
  18. package/dist/components/Avatar/styles.css.d.ts +128 -0
  19. package/dist/components/Avatar/styles.css.js +18 -0
  20. package/dist/components/Avatar/variables.css.cjs +8 -0
  21. package/dist/components/Avatar/variables.css.d.ts +3 -0
  22. package/dist/components/Avatar/variables.css.js +8 -0
  23. package/dist/components/Badge/constant.cjs +8 -0
  24. package/dist/components/Badge/constant.d.ts +14 -0
  25. package/dist/components/Badge/constant.js +8 -0
  26. package/dist/components/Badge/index.cjs +10 -88
  27. package/dist/components/Badge/index.d.ts +2 -20
  28. package/dist/components/Badge/index.js +8 -84
  29. package/dist/components/Badge/styles.css.cjs +6 -0
  30. package/dist/components/Badge/styles.css.d.ts +43 -0
  31. package/dist/components/Badge/styles.css.js +6 -0
  32. package/dist/components/Banner/index.cjs +13 -69
  33. package/dist/components/Banner/index.d.ts +3 -5
  34. package/dist/components/Banner/index.js +9 -63
  35. package/dist/components/Banner/styles.css.cjs +10 -0
  36. package/dist/components/Banner/styles.css.d.ts +18 -0
  37. package/dist/components/Banner/styles.css.js +10 -0
  38. package/dist/components/BarStack/index.cjs +22 -96
  39. package/dist/components/BarStack/index.d.ts +2 -1
  40. package/dist/components/BarStack/index.js +22 -94
  41. package/dist/components/BarStack/styles.css.cjs +9 -0
  42. package/dist/components/BarStack/styles.css.d.ts +3 -0
  43. package/dist/components/BarStack/styles.css.js +9 -0
  44. package/dist/components/BarStack/variables.css.cjs +25 -0
  45. package/dist/components/BarStack/variables.css.d.ts +11 -0
  46. package/dist/components/BarStack/variables.css.js +25 -0
  47. package/dist/components/Button/index.cjs +2 -2
  48. package/dist/components/Button/index.js +2 -2
  49. package/dist/components/Button/styles.css.cjs +0 -2
  50. package/dist/components/Button/styles.css.d.ts +4 -4
  51. package/dist/components/Button/styles.css.js +0 -2
  52. package/dist/components/Chip/ChipContext.d.ts +1 -1
  53. package/dist/components/Chip/ChipIcon.cjs +10 -21
  54. package/dist/components/Chip/ChipIcon.js +10 -19
  55. package/dist/components/Chip/index.cjs +2 -56
  56. package/dist/components/Chip/index.d.ts +1 -1
  57. package/dist/components/Chip/index.js +2 -54
  58. package/dist/components/Chip/styles.css.cjs +7 -0
  59. package/dist/components/Chip/styles.css.d.ts +2 -0
  60. package/dist/components/Chip/styles.css.js +7 -0
  61. package/dist/components/Dialog/index.cjs +2 -2
  62. package/dist/components/Dialog/index.d.ts +1 -1
  63. package/dist/components/Dialog/index.js +2 -2
  64. package/dist/components/ExpandableCard/index.cjs +10 -9
  65. package/dist/components/ExpandableCard/index.d.ts +3 -1
  66. package/dist/components/ExpandableCard/index.js +10 -9
  67. package/dist/components/Key/index.cjs +85 -0
  68. package/dist/components/Key/index.d.ts +23 -0
  69. package/dist/components/Key/index.js +83 -0
  70. package/dist/components/Label/index.cjs +20 -24
  71. package/dist/components/Label/index.js +20 -22
  72. package/dist/components/Label/styles.css.cjs +5 -0
  73. package/dist/components/Label/styles.css.d.ts +1 -0
  74. package/dist/components/Label/styles.css.js +5 -0
  75. package/dist/components/List/index.cjs +2 -2
  76. package/dist/components/List/index.js +2 -2
  77. package/dist/components/Loader/index.cjs +4 -36
  78. package/dist/components/Loader/index.d.ts +0 -4
  79. package/dist/components/Loader/index.js +5 -35
  80. package/dist/components/Loader/styles.css.cjs +7 -0
  81. package/dist/components/Loader/styles.css.d.ts +2 -0
  82. package/dist/components/Loader/styles.css.js +7 -0
  83. package/dist/components/Menu/helpers.d.ts +1 -1
  84. package/dist/components/Meter/index.cjs +6 -37
  85. package/dist/components/Meter/index.js +6 -35
  86. package/dist/components/Meter/styles.css.cjs +11 -0
  87. package/dist/components/Meter/styles.css.d.ts +4 -0
  88. package/dist/components/Meter/styles.css.js +11 -0
  89. package/dist/components/Notice/index.cjs +2 -12
  90. package/dist/components/Notice/index.js +2 -10
  91. package/dist/components/Notice/styles.css.cjs +5 -0
  92. package/dist/components/Notice/styles.css.d.ts +1 -0
  93. package/dist/components/Notice/styles.css.js +5 -0
  94. package/dist/components/NumberInput/index.cjs +12 -9
  95. package/dist/components/NumberInput/index.d.ts +1 -1
  96. package/dist/components/NumberInput/index.js +12 -9
  97. package/dist/components/PasswordCheck/index.cjs +2 -12
  98. package/dist/components/PasswordCheck/index.js +2 -10
  99. package/dist/components/PasswordCheck/styles.css.cjs +5 -0
  100. package/dist/components/PasswordCheck/styles.css.d.ts +1 -0
  101. package/dist/components/PasswordCheck/styles.css.js +5 -0
  102. package/dist/components/Popover/constant.d.ts +5 -0
  103. package/dist/components/Popover/index.cjs +6 -41
  104. package/dist/components/Popover/index.d.ts +1 -5
  105. package/dist/components/Popover/index.js +6 -39
  106. package/dist/components/Popover/styles.css.cjs +8 -0
  107. package/dist/components/Popover/styles.css.d.ts +35 -0
  108. package/dist/components/Popover/styles.css.js +8 -0
  109. package/dist/components/Popup/index.cjs +25 -62
  110. package/dist/components/Popup/index.d.ts +9 -4
  111. package/dist/components/Popup/index.js +27 -62
  112. package/dist/components/Popup/styles.css.cjs +12 -0
  113. package/dist/components/Popup/styles.css.d.ts +45 -0
  114. package/dist/components/Popup/styles.css.js +12 -0
  115. package/dist/components/Popup/variables.css.cjs +19 -0
  116. package/dist/components/Popup/variables.css.d.ts +9 -0
  117. package/dist/components/Popup/variables.css.js +19 -0
  118. package/dist/components/Radio/index.d.ts +29 -12
  119. package/dist/components/Row/index.cjs +28 -38
  120. package/dist/components/Row/index.d.ts +8 -10
  121. package/dist/components/Row/index.js +29 -37
  122. package/dist/components/Row/styles.css.cjs +17 -0
  123. package/dist/components/Row/styles.css.d.ts +460 -0
  124. package/dist/components/Row/styles.css.js +17 -0
  125. package/dist/components/Row/variables.css.cjs +7 -0
  126. package/dist/components/Row/variables.css.d.ts +4 -0
  127. package/dist/components/Row/variables.css.js +7 -0
  128. package/dist/components/SearchInput/KeyGroup.cjs +5 -5
  129. package/dist/components/SearchInput/KeyGroup.d.ts +1 -1
  130. package/dist/components/SearchInput/KeyGroup.js +3 -3
  131. package/dist/components/SelectInput/Dropdown.cjs +11 -11
  132. package/dist/components/SelectInput/Dropdown.js +11 -11
  133. package/dist/components/SelectInput/SelectBar.cjs +15 -22
  134. package/dist/components/SelectInput/SelectBar.js +16 -23
  135. package/dist/components/Separator/index.cjs +26 -39
  136. package/dist/components/Separator/index.d.ts +2 -5
  137. package/dist/components/Separator/index.js +26 -37
  138. package/dist/components/Separator/styles.css.cjs +10 -0
  139. package/dist/components/Separator/styles.css.d.ts +125 -0
  140. package/dist/components/Separator/styles.css.js +10 -0
  141. package/dist/components/Slider/styles.d.ts +30 -13
  142. package/dist/components/Snippet/index.cjs +15 -14
  143. package/dist/components/Snippet/index.js +15 -14
  144. package/dist/components/Stack/index.cjs +69 -44
  145. package/dist/components/Stack/index.d.ts +17 -19
  146. package/dist/components/Stack/index.js +69 -42
  147. package/dist/components/Stack/styles.css.cjs +19 -0
  148. package/dist/components/Stack/styles.css.d.ts +470 -0
  149. package/dist/components/Stack/styles.css.js +19 -0
  150. package/dist/components/Stack/types.d.ts +8 -0
  151. package/dist/components/Stack/variables.css.cjs +11 -0
  152. package/dist/components/Stack/variables.css.d.ts +4 -0
  153. package/dist/components/Stack/variables.css.js +11 -0
  154. package/dist/components/Status/constant.d.ts +1 -0
  155. package/dist/components/Status/index.cjs +10 -66
  156. package/dist/components/Status/index.d.ts +2 -20
  157. package/dist/components/Status/index.js +10 -64
  158. package/dist/components/Status/styles.css.cjs +11 -0
  159. package/dist/components/Status/styles.css.d.ts +23 -0
  160. package/dist/components/Status/styles.css.js +11 -0
  161. package/dist/components/StepList/index.cjs +9 -41
  162. package/dist/components/StepList/index.d.ts +2 -1
  163. package/dist/components/StepList/index.js +9 -39
  164. package/dist/components/StepList/styles.css.cjs +10 -0
  165. package/dist/components/StepList/styles.css.d.ts +23 -0
  166. package/dist/components/StepList/styles.css.js +10 -0
  167. package/dist/components/Table/index.cjs +2 -2
  168. package/dist/components/Table/index.d.ts +1 -1
  169. package/dist/components/Table/index.js +2 -2
  170. package/dist/components/Tabs/index.d.ts +1 -1
  171. package/dist/components/Text/constant.d.ts +6 -0
  172. package/dist/components/Text/index.cjs +22 -60
  173. package/dist/components/Text/index.d.ts +3 -7
  174. package/dist/components/Text/index.js +22 -58
  175. package/dist/components/Text/style.css.cjs +7 -0
  176. package/dist/components/Text/style.css.d.ts +52 -0
  177. package/dist/components/Text/style.css.js +7 -0
  178. package/dist/components/Text/variables.css.cjs +6 -0
  179. package/dist/components/Text/variables.css.d.ts +2 -0
  180. package/dist/components/Text/variables.css.js +6 -0
  181. package/dist/components/TextArea/index.cjs +6 -6
  182. package/dist/components/TextArea/index.js +6 -6
  183. package/dist/components/TextInput/index.d.ts +59 -25
  184. package/dist/components/Tooltip/index.cjs +2 -20
  185. package/dist/components/Tooltip/index.d.ts +1 -1
  186. package/dist/components/Tooltip/index.js +2 -18
  187. package/dist/components/Tooltip/styles.css.cjs +5 -0
  188. package/dist/components/Tooltip/styles.css.d.ts +1 -0
  189. package/dist/components/Tooltip/styles.css.js +5 -0
  190. package/dist/components/index.d.ts +1 -0
  191. package/dist/index.cjs +102 -100
  192. package/dist/index.js +2 -0
  193. package/dist/theme/ThemeProvider.cjs +23 -1
  194. package/dist/theme/ThemeProvider.d.ts +1 -1
  195. package/dist/theme/ThemeProvider.js +25 -3
  196. package/dist/ui.css +1 -1
  197. package/dist/utils/animationVanillaExtract.css.d.ts +2 -0
  198. package/dist/utils/index.d.ts +1 -0
  199. package/package.json +8 -6
  200. package/dist/components/Popup/animations.cjs +0 -25
  201. package/dist/components/Popup/animations.d.ts +0 -21
  202. package/dist/components/Popup/animations.js +0 -25
  203. package/dist/components/SearchInput/Key.cjs +0 -55
  204. package/dist/components/SearchInput/Key.d.ts +0 -21
  205. package/dist/components/SearchInput/Key.js +0 -53
  206. package/dist/themes/dist/vanilla/themes.css.js.vanilla.css.cjs +0 -1
  207. package/dist/themes/dist/vanilla/themes.css.js.vanilla.css.js +0 -1
  208. package/dist/themes/dist/vanilla/themes.css.ts.vanilla.css.js.vanilla.css.cjs +0 -1
  209. package/dist/themes/dist/vanilla/themes.css.ts.vanilla.css.js.vanilla.css.js +0 -1
@@ -1,15 +1,12 @@
1
1
  "use client";
2
2
  import { jsx, jsxs, Fragment } from "@emotion/react/jsx-runtime";
3
- import _styled from "@emotion/styled/base";
4
- import { css } from "@emotion/react";
3
+ import { assignInlineVars } from "@vanilla-extract/dynamic";
5
4
  import { forwardRef, useRef, useImperativeHandle, useMemo, useState, useId, useCallback, startTransition, useEffect } from "react";
6
5
  import { createPortal } from "react-dom";
7
6
  import { isClientSide } from "../../helpers/isClientSide.js";
8
- import { animation, exitAnimation } from "./animations.js";
9
- import { DEFAULT_POSITIONS, computePositions, DEFAULT_ARROW_WIDTH } from "./helpers.js";
10
- function _EMOTION_STRINGIFIED_CSS_ERROR__() {
11
- return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
12
- }
7
+ import { DEFAULT_POSITIONS, computePositions } from "./helpers.js";
8
+ import { childrenContainerPopup, popup, animationPopup, containerPopup } from "./styles.css.js";
9
+ import { maxHeightPopup, maxWidthPopup, popupInitialPosition, animationDurationPopup, popupPosition, arrowTransform, arrowLeft, arrowTop } from "./variables.css.js";
13
10
  const DEFAULT_ANIMATION_DURATION = 230;
14
11
  const DEFAULT_DEBOUNCE_DURATION = 200;
15
12
  const noop = () => {
@@ -17,57 +14,6 @@ const noop = () => {
17
14
  const stopClickPropagation = (event) => {
18
15
  event.nativeEvent.stopImmediatePropagation();
19
16
  };
20
- const StyledPopup = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "production" ? {
21
- shouldForwardProp: (prop) => !["maxWidth", "positions", "reverseAnimation", "maxHeight", "animationDuration", "isDialog"].includes(prop),
22
- target: "e4h1g861"
23
- } : {
24
- shouldForwardProp: (prop) => !["maxWidth", "positions", "reverseAnimation", "maxHeight", "animationDuration", "isDialog"].includes(prop),
25
- target: "e4h1g861",
26
- label: "StyledPopup"
27
- })("background:", ({
28
- theme
29
- }) => theme.colors.neutral.backgroundStronger, ";color:", ({
30
- theme
31
- }) => theme.colors.neutral.textStronger, ";border-radius:", ({
32
- theme
33
- }) => theme.radii.default, ";padding:", ({
34
- theme
35
- }) => `${theme.space["0.5"]} ${theme.space["1"]}`, ";text-align:center;position:absolute;max-width:", ({
36
- maxWidth
37
- }) => typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth, ";max-height:", ({
38
- maxHeight
39
- }) => typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight, ";overflow:", ({
40
- maxHeight
41
- }) => maxHeight ? "auto" : void 0, ";overflow-wrap:break-word;font-size:0.8rem;inset:0 auto auto 0;top:0;left:0;opacity:0;z-index:1;transform:", ({
42
- positions
43
- }) => positions.popupPosition, ';&[data-animated="true"]{animation:', ({
44
- positions,
45
- reverseAnimation,
46
- animationDuration
47
- }) => /* @__PURE__ */ css(animationDuration, "ms ", !reverseAnimation ? animation(positions) : exitAnimation(positions), " forwards;" + (process.env.NODE_ENV === "production" ? "" : ";label:StyledPopup;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1RjRFIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG4gIFJlZixcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgaXNDbGllbnRTaWRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pc0NsaWVudFNpZGUnXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwQWxpZ24sIFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHtcbiAgY29tcHV0ZVBvc2l0aW9ucyxcbiAgREVGQVVMVF9BUlJPV19XSURUSCxcbiAgREVGQVVMVF9QT1NJVElPTlMsXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBUaGlzIGV2ZW50IGhhbmRsZSBhbGxvdyB1cyB0byBub3QgYnViYmxlIHRoZSBldmVudCB0byBkb2N1bWVudC5ib2R5IGxpa2UgdGhpcyByZWFjdC1zZWxlY3Qgd29ya3MgZmluZVxuICovXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG59XG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKCdkaXYnLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+XG4gICAgIVtcbiAgICAgICdtYXhXaWR0aCcsXG4gICAgICAncG9zaXRpb25zJyxcbiAgICAgICdyZXZlcnNlQW5pbWF0aW9uJyxcbiAgICAgICdtYXhIZWlnaHQnLFxuICAgICAgJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICdpc0RpYWxvZycsXG4gICAgXS5pbmNsdWRlcyhwcm9wKSxcbn0pPFN0eWxlZFBvcHVwUHJvcHM+YFxuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdlcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gYCR7dGhlbWUuc3BhY2VbJzAuNSddfSAke3RoZW1lLnNwYWNlWycxJ119YH07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6ICR7KHsgbWF4V2lkdGggfSkgPT5cbiAgICB0eXBlb2YgbWF4V2lkdGggPT09ICdudW1iZXInID8gYCR7bWF4V2lkdGh9cHhgIDogbWF4V2lkdGh9O1xuICBtYXgtaGVpZ2h0OiAkeyh7IG1heEhlaWdodCB9KSA9PlxuICAgIHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodH07XG4gIG92ZXJmbG93OiAkeyh7IG1heEhlaWdodCB9KSA9PiAobWF4SGVpZ2h0ID8gJ2F1dG8nIDogdW5kZWZpbmVkKX07XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBpbnNldDogMCBhdXRvIGF1dG8gMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06ICR7KHsgcG9zaXRpb25zIH0pID0+IHBvc2l0aW9ucy5wb3B1cFBvc2l0aW9ufTtcblxuICAmW2RhdGEtYW5pbWF0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBhbmltYXRpb246ICR7KHsgcG9zaXRpb25zLCByZXZlcnNlQW5pbWF0aW9uLCBhbmltYXRpb25EdXJhdGlvbiB9KSA9PiBjc3NgXG4gICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7XG4gICAgICAgICFyZXZlcnNlQW5pbWF0aW9uID8gYW5pbWF0aW9uKHBvc2l0aW9ucykgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgIH0gZm9yd2FyZHNcbiAgICBgfTtcbiAgfVxuXG4gICZbZGF0YS1oYXMtYXJyb3c9XCJ0cnVlXCJdIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0RFRkFVTFRfQVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfVxuICAgICAgICB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS12aXNpYmxlLWluLWRvbT1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDaGlsZHJlbkNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGluaGVyaXQ7XG5cblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtaGVpZ2h0PVwidHJ1ZVwiXSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgJltkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPVwidHJ1ZVwiXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbmBcblxudHlwZSBQb3B1cFByb3BzID0ge1xuICAvKipcbiAgICogSWQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWYgbm90IHNldC4gSXQgaXMgdXNlZCBmb3IgYXNzb2NpYXRpbmcgcG9wdXAgd3JhcHBlciB3aXRoIHBvcHVwIHBvcnRhbC5cbiAgICovXG4gIGlkPzogc3RyaW5nXG4gIGNoaWxkcmVuOlxuICAgIHwgUmVhY3ROb2RlXG4gICAgfCAoKHJlbmRlclByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICAgICAgICBvbkJsdXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Gb2N1czogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogKCkgPT4gdm9pZFxuICAgICAgICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gICAgICB9KSA9PiBSZWFjdE5vZGUpXG4gIG1heFdpZHRoPzogbnVtYmVyIHwgc3RyaW5nXG4gIC8qKlxuICAgKiBgYXV0b2AgcGxhY2VtZW50IHdpbGwgY2hhbmdlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wdXAgaWYgaXQgZG9lc24ndCBmaXQgaW4gdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgcGxhY2VtZW50PzogUG9wdXBQbGFjZW1lbnRcbiAgLyoqXG4gICAqIEFsaWduIHRoZSBwb3B1cCB0byB0aGUgc3RhcnQgb3IgY2VudGVyIG9mIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIGFsaWduPzogUG9wdXBBbGlnblxuICAvKipcbiAgICogQ29udGVudCBvZiB0aGUgcG9wdXAsIHByZWZlcmFibHkgdGV4dCBpbnNpZGUuXG4gICAqL1xuICB0ZXh0PzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYHdpZHRoOiAxMDAlYCB0byB0aGUgcG9wdXAgY29udGFpbmVyLlxuICAgKi9cbiAgY29udGFpbmVyRnVsbFdpZHRoPzogYm9vbGVhblxuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYGhlaWdodDogMTAwJWAgdG8gdGhlIHBvcHVwIGNvbnRhaW5lci5cbiAgICovXG4gIGNvbnRhaW5lckZ1bGxIZWlnaHQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIGNvbnRhaW5lckZ1bGxIZWlnaHQsXG4gICAgICBtYXhXaWR0aCA9ICcxNC41cmVtJyxcbiAgICAgIG1heEhlaWdodCxcbiAgICAgIHZpc2libGUsXG4gICAgICBpbm5lclJlZixcbiAgICAgIHJvbGUgPSAncG9wdXAnLFxuICAgICAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbiAgICAgIGhhc0Fycm93ID0gdHJ1ZSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB0YWJJbmRleCA9IDAsXG4gICAgICBvbktleURvd24sXG4gICAgICAnYXJpYS1oYXNwb3B1cCc6IGFyaWFIYXNQb3B1cCxcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSA9IGZhbHNlLFxuICAgICAgZGVib3VuY2VEZWxheSA9IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICBwb3J0YWxUYXJnZXQsXG4gICAgICBkeW5hbWljRG9tUmVuZGVyaW5nID0gdHJ1ZSxcbiAgICB9OiBQb3B1cFByb3BzLFxuICAgIHJlZjogUmVmPEhUTUxEaXZFbGVtZW50PixcbiAgKSA9PiB7XG4gICAgY29uc3QgY2hpbGRyZW5SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShpbm5lclJlZiwgKCkgPT4gY2hpbGRyZW5SZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IGlubmVyUG9wdXBSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IGlubmVyUG9wdXBSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IHRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgcG9wdXBQb3J0YWxUYXJnZXQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChwb3J0YWxUYXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHBvcnRhbFRhcmdldFxuICAgICAgfVxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW5SZWYuY3VycmVudFxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NsaWVudFNpZGUpIHtcbiAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2UgY2hlY2sgaWYgd2luZG93IGV4aXN0cyBmb3IgU1NSXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9ydGFsVGFyZ2V0LCByb2xlLCBjaGlsZHJlblJlZi5jdXJyZW50XSlcblxuICAgIC8vIFRoZXJlIGFyZSBzb21lIGlzc3VlIHdoZW4gbWl4aW5nIGFuaW1hdGlvbiBhbmQgbWF4SGVpZ2h0IG9uIHNvbWUgYnJvd3NlcnMsIHNvIHdlIGRpc2FibGUgYW5pbWF0aW9uIGlmIG1heEhlaWdodCBpcyBzZXQuXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPVxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiB8fCBtYXhIZWlnaHQgPyAwIDogREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT05cblxuICAgIC8vIERlYm91bmNlIHRpbWVyIHdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBwb3B1cCBmcm9tIGZsaWNrZXJpbmcgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IGFuZCBpbiB0aGUgY2hpbGRyZW4gZWxlbWVudC5cbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgW3Zpc2libGVJbkRvbSwgc2V0VmlzaWJsZUluRG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtyZXZlcnNlQW5pbWF0aW9uLCBzZXRSZXZlcnNlQW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxQb3NpdGlvbnNUeXBlPih7XG4gICAgICAuLi5ERUZBVUxUX1BPU0lUSU9OUyxcbiAgICB9KVxuICAgIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKVxuICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQgPz8gdW5pcXVlSWRcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSB2aXNpYmxlICE9PSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0UG9zaXRpb25zKFxuICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnMoe1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIGhhc0Fycm93LFxuICAgICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgcG9wdXBSZWY6IGlubmVyUG9wdXBSZWYsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbaGFzQXJyb3csIHBsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXQsIGFsaWduXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwIGR1ZSB0byB3aW5kb3cgc2Nyb2xsIG9yIHJlc2l6ZS5cbiAgICAgKi9cbiAgICBjb25zdCBvbldpbmRvd0NoYW5nZURldGVjdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gV2UgcmVtb3ZlIGFuaW1hdGlvbiBvbiBzY3JvbGwgb3IgdGhlIGFuaW1hdGlvbiB3aWxsIHJlc3RhcnQgb24gZXZlcnkgc2Nyb2xsXG4gICAgICBpZiAoaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSdcbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG4gICAgfSwgW2dlbmVyYXRlUG9wdXBQb3NpdGlvbnMsIGlubmVyUG9wdXBSZWZdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlbW92ZSBwb3B1cCBwb3J0YWwgZnJvbSBET00gYW5kIHJlbW92ZSBldmVudCBsaXN0ZW5lciB0byBpdC5cbiAgICAgKi9cbiAgICBjb25zdCB1bm1vdW50UG9wdXBGcm9tRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0VmlzaWJsZUluRG9tKGZhbHNlKVxuICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbihmYWxzZSlcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgfSwgW29uV2luZG93Q2hhbmdlRGV0ZWN0ZWRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uIGVuZCwgdGhlbiByZW1vdmVcbiAgICAgKiBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBjbG9zZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY2xvc2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uQ2xvc2U/LigpXG4gICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRnVuY3Rpb24oKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Nsb3NlUG9wdXAsIGRlYm91bmNlRGVsYXksIHZpc2libGVdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIE9uY2UgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tIHdlIGNhbiBjb21wdXRlIHBvc2l0aW9ucywgdGhlbiBzZXQgaXQgdmlzaWJsZSBvbiBzY3JlZW4gYW5kIGFkZCBldmVudCB0b1xuICAgICAqIHJlY29tcHV0ZSBwb3NpdGlvbnMgb24gc2Nyb2xsIG9yIHNjcmVlbiByZXNpemUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG5cbiAgICAgICAgaWYgKHBvcHVwUG9ydGFsVGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgLy8gV2Ugd2FudCB0byBkZXRlY3Qgc2Nyb2xsIGFuZCByZXNpemUgaW4gb3JkZXIgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cFxuICAgICAgICAgIC8vIEFkZGluZyB0cnVlIGFzIHRoaXJkIHBhcmFtZXRlciB0byBldmVudCBsaXN0ZW5lciB3aWxsIGRldGVjdCBuZXN0ZWQgc2Nyb2xscy5cbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICBpZiAodGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5jdXJyZW50KVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMsXG4gICAgICBvbldpbmRvd0NoYW5nZURldGVjdGVkLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBwb3B1cFBvcnRhbFRhcmdldCxcbiAgICBdKVxuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHBvc2l0aW9ucyBhcmUgY29tcHV0ZWQgYW5kIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9zaXRpb25zXSlcblxuICAgIC8qKlxuICAgICAqIElmIHBvcHVwIGhhcyBgdmlzaWJsZWAgcHJvcCBpdCBtZWFucyB0aGUgcG9wdXAgaXMgbWFudWFsbHkgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgcHJvcC5cbiAgICAgKiBJbiB0aGlzIGNhcyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgcG9wdXAgb24gaG92ZXIsIGJ1dCBvbmx5IHdoZW4gYHZpc2libGVgIGlzIHRydWUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgb25Qb2ludGVyRXZlbnQodmlzaWJsZSkoKVxuICAgICAgfVxuICAgIH0sIFtpc0NvbnRyb2xsZWQsIG9uUG9pbnRlckV2ZW50LCB2aXNpYmxlXSlcblxuICAgIC8vIEhhbmRsZSBoaWRlIG9uIGVzYyBwcmVzcyBhbmQgaGlkZSBvbiBjbGljayBvdXRzaWRlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwQ3VycmVudCA9IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICBjb25zdCBjaGlsZHJlbkN1cnJlbnQgPSBjaGlsZHJlblJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBvcHVwQ3VycmVudCAmJlxuICAgICAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSAmJlxuICAgICAgICAgICFldmVudC5kZWZhdWx0UHJldmVudGVkICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICBldmVudC50YXJnZXQgIT09IGNoaWxkcmVuQ3VycmVudCAmJlxuICAgICAgICAgICFjaGlsZHJlbkN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9e2FyaWFIYXNQb3B1cH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLWhlaWdodD17Y29udGFpbmVyRnVsbEhlaWdodH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPXtjb250YWluZXJGdWxsV2lkdGh9XG4gICAgICAgICAgb25CbHVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICBvbkZvY3VzPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgb25LZXlEb3duPy4oZXZlbnQpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsSGVpZ2h0LFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgZ2VuZXJhdGVkSWQsXG4gICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblBvaW50ZXJFdmVudCxcbiAgICAgIHRhYkluZGV4LFxuICAgIF0pXG5cbiAgICBjb25zdCBzaG91bGRSZW5kZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZHluYW1pY0RvbVJlbmRlcmluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZHluYW1pY0RvbVJlbmRlcmluZyAmJiB2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgW2R5bmFtaWNEb21SZW5kZXJpbmcsIHZpc2libGVJbkRvbV0pXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtyZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICB7c2hvdWxkUmVuZGVyXG4gICAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRQb3B1cFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPXthbmltYXRpb25EdXJhdGlvbn1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICBkYXRhLWFuaW1hdGVkPXthbmltYXRpb25EdXJhdGlvbiA+IDAgJiYgIW1heEhlaWdodH1cbiAgICAgICAgICAgICAgICBkYXRhLWhhcy1hcnJvdz17aGFzQXJyb3d9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgICAgICAgICAgICAgZGF0YS12aXNpYmxlLWluLWRvbT17XG4gICAgICAgICAgICAgICAgICAhZHluYW1pY0RvbVJlbmRlcmluZyA/IHZpc2libGVJbkRvbSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvbktleURvd249e3JvbGUgPT09ICdkaWFsb2cnID8gaGFuZGxlRm9jdXNUcmFwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckVudGVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckxlYXZlPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM9e3Bvc2l0aW9uc31cbiAgICAgICAgICAgICAgICByZWY9e2lubmVyUG9wdXBSZWZ9XG4gICAgICAgICAgICAgICAgcmV2ZXJzZUFuaW1hdGlvbj17cmV2ZXJzZUFuaW1hdGlvbn1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgIDwvU3R5bGVkUG9wdXA+LFxuICAgICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG4iXX0= */"), ';}&[data-has-arrow="true"]{&::after{content:" ";position:absolute;top:', ({
48
- positions
49
- }) => positions.arrowTop, "px;left:", ({
50
- positions
51
- }) => positions.arrowLeft, "px;transform:", ({
52
- positions
53
- }) => positions.arrowTransform, " rotate(", ({
54
- positions
55
- }) => positions.rotate, "deg);margin-left:-", DEFAULT_ARROW_WIDTH, "px;border-width:", DEFAULT_ARROW_WIDTH, "px;border-style:solid;border-color:", ({
56
- theme
57
- }) => theme.colors.neutral.backgroundStronger, ' transparent transparent transparent;pointer-events:none;}}&[data-visible-in-dom="false"]{display:none;}' + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpRW9CIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG4gIFJlZixcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgaXNDbGllbnRTaWRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pc0NsaWVudFNpZGUnXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwQWxpZ24sIFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHtcbiAgY29tcHV0ZVBvc2l0aW9ucyxcbiAgREVGQVVMVF9BUlJPV19XSURUSCxcbiAgREVGQVVMVF9QT1NJVElPTlMsXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBUaGlzIGV2ZW50IGhhbmRsZSBhbGxvdyB1cyB0byBub3QgYnViYmxlIHRoZSBldmVudCB0byBkb2N1bWVudC5ib2R5IGxpa2UgdGhpcyByZWFjdC1zZWxlY3Qgd29ya3MgZmluZVxuICovXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG59XG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKCdkaXYnLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+XG4gICAgIVtcbiAgICAgICdtYXhXaWR0aCcsXG4gICAgICAncG9zaXRpb25zJyxcbiAgICAgICdyZXZlcnNlQW5pbWF0aW9uJyxcbiAgICAgICdtYXhIZWlnaHQnLFxuICAgICAgJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICdpc0RpYWxvZycsXG4gICAgXS5pbmNsdWRlcyhwcm9wKSxcbn0pPFN0eWxlZFBvcHVwUHJvcHM+YFxuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdlcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gYCR7dGhlbWUuc3BhY2VbJzAuNSddfSAke3RoZW1lLnNwYWNlWycxJ119YH07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6ICR7KHsgbWF4V2lkdGggfSkgPT5cbiAgICB0eXBlb2YgbWF4V2lkdGggPT09ICdudW1iZXInID8gYCR7bWF4V2lkdGh9cHhgIDogbWF4V2lkdGh9O1xuICBtYXgtaGVpZ2h0OiAkeyh7IG1heEhlaWdodCB9KSA9PlxuICAgIHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodH07XG4gIG92ZXJmbG93OiAkeyh7IG1heEhlaWdodCB9KSA9PiAobWF4SGVpZ2h0ID8gJ2F1dG8nIDogdW5kZWZpbmVkKX07XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBpbnNldDogMCBhdXRvIGF1dG8gMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06ICR7KHsgcG9zaXRpb25zIH0pID0+IHBvc2l0aW9ucy5wb3B1cFBvc2l0aW9ufTtcblxuICAmW2RhdGEtYW5pbWF0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBhbmltYXRpb246ICR7KHsgcG9zaXRpb25zLCByZXZlcnNlQW5pbWF0aW9uLCBhbmltYXRpb25EdXJhdGlvbiB9KSA9PiBjc3NgXG4gICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7XG4gICAgICAgICFyZXZlcnNlQW5pbWF0aW9uID8gYW5pbWF0aW9uKHBvc2l0aW9ucykgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgIH0gZm9yd2FyZHNcbiAgICBgfTtcbiAgfVxuXG4gICZbZGF0YS1oYXMtYXJyb3c9XCJ0cnVlXCJdIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0RFRkFVTFRfQVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfVxuICAgICAgICB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS12aXNpYmxlLWluLWRvbT1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDaGlsZHJlbkNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGluaGVyaXQ7XG5cblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtaGVpZ2h0PVwidHJ1ZVwiXSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgJltkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPVwidHJ1ZVwiXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbmBcblxudHlwZSBQb3B1cFByb3BzID0ge1xuICAvKipcbiAgICogSWQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWYgbm90IHNldC4gSXQgaXMgdXNlZCBmb3IgYXNzb2NpYXRpbmcgcG9wdXAgd3JhcHBlciB3aXRoIHBvcHVwIHBvcnRhbC5cbiAgICovXG4gIGlkPzogc3RyaW5nXG4gIGNoaWxkcmVuOlxuICAgIHwgUmVhY3ROb2RlXG4gICAgfCAoKHJlbmRlclByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICAgICAgICBvbkJsdXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Gb2N1czogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogKCkgPT4gdm9pZFxuICAgICAgICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gICAgICB9KSA9PiBSZWFjdE5vZGUpXG4gIG1heFdpZHRoPzogbnVtYmVyIHwgc3RyaW5nXG4gIC8qKlxuICAgKiBgYXV0b2AgcGxhY2VtZW50IHdpbGwgY2hhbmdlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wdXAgaWYgaXQgZG9lc24ndCBmaXQgaW4gdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgcGxhY2VtZW50PzogUG9wdXBQbGFjZW1lbnRcbiAgLyoqXG4gICAqIEFsaWduIHRoZSBwb3B1cCB0byB0aGUgc3RhcnQgb3IgY2VudGVyIG9mIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIGFsaWduPzogUG9wdXBBbGlnblxuICAvKipcbiAgICogQ29udGVudCBvZiB0aGUgcG9wdXAsIHByZWZlcmFibHkgdGV4dCBpbnNpZGUuXG4gICAqL1xuICB0ZXh0PzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYHdpZHRoOiAxMDAlYCB0byB0aGUgcG9wdXAgY29udGFpbmVyLlxuICAgKi9cbiAgY29udGFpbmVyRnVsbFdpZHRoPzogYm9vbGVhblxuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYGhlaWdodDogMTAwJWAgdG8gdGhlIHBvcHVwIGNvbnRhaW5lci5cbiAgICovXG4gIGNvbnRhaW5lckZ1bGxIZWlnaHQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIGNvbnRhaW5lckZ1bGxIZWlnaHQsXG4gICAgICBtYXhXaWR0aCA9ICcxNC41cmVtJyxcbiAgICAgIG1heEhlaWdodCxcbiAgICAgIHZpc2libGUsXG4gICAgICBpbm5lclJlZixcbiAgICAgIHJvbGUgPSAncG9wdXAnLFxuICAgICAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbiAgICAgIGhhc0Fycm93ID0gdHJ1ZSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB0YWJJbmRleCA9IDAsXG4gICAgICBvbktleURvd24sXG4gICAgICAnYXJpYS1oYXNwb3B1cCc6IGFyaWFIYXNQb3B1cCxcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSA9IGZhbHNlLFxuICAgICAgZGVib3VuY2VEZWxheSA9IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICBwb3J0YWxUYXJnZXQsXG4gICAgICBkeW5hbWljRG9tUmVuZGVyaW5nID0gdHJ1ZSxcbiAgICB9OiBQb3B1cFByb3BzLFxuICAgIHJlZjogUmVmPEhUTUxEaXZFbGVtZW50PixcbiAgKSA9PiB7XG4gICAgY29uc3QgY2hpbGRyZW5SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShpbm5lclJlZiwgKCkgPT4gY2hpbGRyZW5SZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IGlubmVyUG9wdXBSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IGlubmVyUG9wdXBSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IHRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgcG9wdXBQb3J0YWxUYXJnZXQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChwb3J0YWxUYXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHBvcnRhbFRhcmdldFxuICAgICAgfVxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW5SZWYuY3VycmVudFxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NsaWVudFNpZGUpIHtcbiAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2UgY2hlY2sgaWYgd2luZG93IGV4aXN0cyBmb3IgU1NSXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9ydGFsVGFyZ2V0LCByb2xlLCBjaGlsZHJlblJlZi5jdXJyZW50XSlcblxuICAgIC8vIFRoZXJlIGFyZSBzb21lIGlzc3VlIHdoZW4gbWl4aW5nIGFuaW1hdGlvbiBhbmQgbWF4SGVpZ2h0IG9uIHNvbWUgYnJvd3NlcnMsIHNvIHdlIGRpc2FibGUgYW5pbWF0aW9uIGlmIG1heEhlaWdodCBpcyBzZXQuXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPVxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiB8fCBtYXhIZWlnaHQgPyAwIDogREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT05cblxuICAgIC8vIERlYm91bmNlIHRpbWVyIHdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBwb3B1cCBmcm9tIGZsaWNrZXJpbmcgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IGFuZCBpbiB0aGUgY2hpbGRyZW4gZWxlbWVudC5cbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgW3Zpc2libGVJbkRvbSwgc2V0VmlzaWJsZUluRG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtyZXZlcnNlQW5pbWF0aW9uLCBzZXRSZXZlcnNlQW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxQb3NpdGlvbnNUeXBlPih7XG4gICAgICAuLi5ERUZBVUxUX1BPU0lUSU9OUyxcbiAgICB9KVxuICAgIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKVxuICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQgPz8gdW5pcXVlSWRcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSB2aXNpYmxlICE9PSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0UG9zaXRpb25zKFxuICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnMoe1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIGhhc0Fycm93LFxuICAgICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgcG9wdXBSZWY6IGlubmVyUG9wdXBSZWYsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbaGFzQXJyb3csIHBsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXQsIGFsaWduXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwIGR1ZSB0byB3aW5kb3cgc2Nyb2xsIG9yIHJlc2l6ZS5cbiAgICAgKi9cbiAgICBjb25zdCBvbldpbmRvd0NoYW5nZURldGVjdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gV2UgcmVtb3ZlIGFuaW1hdGlvbiBvbiBzY3JvbGwgb3IgdGhlIGFuaW1hdGlvbiB3aWxsIHJlc3RhcnQgb24gZXZlcnkgc2Nyb2xsXG4gICAgICBpZiAoaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSdcbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG4gICAgfSwgW2dlbmVyYXRlUG9wdXBQb3NpdGlvbnMsIGlubmVyUG9wdXBSZWZdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlbW92ZSBwb3B1cCBwb3J0YWwgZnJvbSBET00gYW5kIHJlbW92ZSBldmVudCBsaXN0ZW5lciB0byBpdC5cbiAgICAgKi9cbiAgICBjb25zdCB1bm1vdW50UG9wdXBGcm9tRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0VmlzaWJsZUluRG9tKGZhbHNlKVxuICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbihmYWxzZSlcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgfSwgW29uV2luZG93Q2hhbmdlRGV0ZWN0ZWRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uIGVuZCwgdGhlbiByZW1vdmVcbiAgICAgKiBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBjbG9zZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY2xvc2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uQ2xvc2U/LigpXG4gICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRnVuY3Rpb24oKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Nsb3NlUG9wdXAsIGRlYm91bmNlRGVsYXksIHZpc2libGVdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIE9uY2UgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tIHdlIGNhbiBjb21wdXRlIHBvc2l0aW9ucywgdGhlbiBzZXQgaXQgdmlzaWJsZSBvbiBzY3JlZW4gYW5kIGFkZCBldmVudCB0b1xuICAgICAqIHJlY29tcHV0ZSBwb3NpdGlvbnMgb24gc2Nyb2xsIG9yIHNjcmVlbiByZXNpemUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG5cbiAgICAgICAgaWYgKHBvcHVwUG9ydGFsVGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgLy8gV2Ugd2FudCB0byBkZXRlY3Qgc2Nyb2xsIGFuZCByZXNpemUgaW4gb3JkZXIgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cFxuICAgICAgICAgIC8vIEFkZGluZyB0cnVlIGFzIHRoaXJkIHBhcmFtZXRlciB0byBldmVudCBsaXN0ZW5lciB3aWxsIGRldGVjdCBuZXN0ZWQgc2Nyb2xscy5cbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICBpZiAodGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5jdXJyZW50KVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMsXG4gICAgICBvbldpbmRvd0NoYW5nZURldGVjdGVkLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBwb3B1cFBvcnRhbFRhcmdldCxcbiAgICBdKVxuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHBvc2l0aW9ucyBhcmUgY29tcHV0ZWQgYW5kIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9zaXRpb25zXSlcblxuICAgIC8qKlxuICAgICAqIElmIHBvcHVwIGhhcyBgdmlzaWJsZWAgcHJvcCBpdCBtZWFucyB0aGUgcG9wdXAgaXMgbWFudWFsbHkgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgcHJvcC5cbiAgICAgKiBJbiB0aGlzIGNhcyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgcG9wdXAgb24gaG92ZXIsIGJ1dCBvbmx5IHdoZW4gYHZpc2libGVgIGlzIHRydWUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgb25Qb2ludGVyRXZlbnQodmlzaWJsZSkoKVxuICAgICAgfVxuICAgIH0sIFtpc0NvbnRyb2xsZWQsIG9uUG9pbnRlckV2ZW50LCB2aXNpYmxlXSlcblxuICAgIC8vIEhhbmRsZSBoaWRlIG9uIGVzYyBwcmVzcyBhbmQgaGlkZSBvbiBjbGljayBvdXRzaWRlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwQ3VycmVudCA9IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICBjb25zdCBjaGlsZHJlbkN1cnJlbnQgPSBjaGlsZHJlblJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBvcHVwQ3VycmVudCAmJlxuICAgICAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSAmJlxuICAgICAgICAgICFldmVudC5kZWZhdWx0UHJldmVudGVkICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICBldmVudC50YXJnZXQgIT09IGNoaWxkcmVuQ3VycmVudCAmJlxuICAgICAgICAgICFjaGlsZHJlbkN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9e2FyaWFIYXNQb3B1cH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLWhlaWdodD17Y29udGFpbmVyRnVsbEhlaWdodH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPXtjb250YWluZXJGdWxsV2lkdGh9XG4gICAgICAgICAgb25CbHVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICBvbkZvY3VzPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgb25LZXlEb3duPy4oZXZlbnQpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsSGVpZ2h0LFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgZ2VuZXJhdGVkSWQsXG4gICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblBvaW50ZXJFdmVudCxcbiAgICAgIHRhYkluZGV4LFxuICAgIF0pXG5cbiAgICBjb25zdCBzaG91bGRSZW5kZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZHluYW1pY0RvbVJlbmRlcmluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZHluYW1pY0RvbVJlbmRlcmluZyAmJiB2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgW2R5bmFtaWNEb21SZW5kZXJpbmcsIHZpc2libGVJbkRvbV0pXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtyZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICB7c2hvdWxkUmVuZGVyXG4gICAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRQb3B1cFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPXthbmltYXRpb25EdXJhdGlvbn1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICBkYXRhLWFuaW1hdGVkPXthbmltYXRpb25EdXJhdGlvbiA+IDAgJiYgIW1heEhlaWdodH1cbiAgICAgICAgICAgICAgICBkYXRhLWhhcy1hcnJvdz17aGFzQXJyb3d9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgICAgICAgICAgICAgZGF0YS12aXNpYmxlLWluLWRvbT17XG4gICAgICAgICAgICAgICAgICAhZHluYW1pY0RvbVJlbmRlcmluZyA/IHZpc2libGVJbkRvbSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvbktleURvd249e3JvbGUgPT09ICdkaWFsb2cnID8gaGFuZGxlRm9jdXNUcmFwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckVudGVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckxlYXZlPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM9e3Bvc2l0aW9uc31cbiAgICAgICAgICAgICAgICByZWY9e2lubmVyUG9wdXBSZWZ9XG4gICAgICAgICAgICAgICAgcmV2ZXJzZUFuaW1hdGlvbj17cmV2ZXJzZUFuaW1hdGlvbn1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgIDwvU3R5bGVkUG9wdXA+LFxuICAgICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG4iXX0= */"));
58
- const StyledChildrenContainer = /* @__PURE__ */ _styled("div", process.env.NODE_ENV === "production" ? {
59
- target: "e4h1g860"
60
- } : {
61
- target: "e4h1g860",
62
- label: "StyledChildrenContainer"
63
- })(process.env.NODE_ENV === "production" ? {
64
- name: "1e1nei5",
65
- styles: 'display:inherit;&[data-container-full-height="true"]{height:100%;}&[data-container-full-width="true"]{width:100%;}'
66
- } : {
67
- name: "1e1nei5",
68
- styles: 'display:inherit;&[data-container-full-height="true"]{height:100%;}&[data-container-full-width="true"]{width:100%;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvSGlEIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1BvcHVwL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUge1xuICBIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG4gIFJlZixcbiAgUmVmT2JqZWN0LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIHN0YXJ0VHJhbnNpdGlvbixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSWQsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgaXNDbGllbnRTaWRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9pc0NsaWVudFNpZGUnXG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uc1R5cGUgfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBhbmltYXRpb24sIGV4aXRBbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFBvcHVwQWxpZ24sIFBvcHVwUGxhY2VtZW50IH0gZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHtcbiAgY29tcHV0ZVBvc2l0aW9ucyxcbiAgREVGQVVMVF9BUlJPV19XSURUSCxcbiAgREVGQVVMVF9QT1NJVElPTlMsXG59IGZyb20gJy4vaGVscGVycydcblxuY29uc3QgREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT04gPSAyMzAgLy8gaW4gbXNcbmNvbnN0IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04gPSAyMDAgLy8gaW4gbXNcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbnR5cGUgU3R5bGVkUG9wdXBQcm9wcyA9IHtcbiAgbWF4V2lkdGg6IG51bWJlciB8IHN0cmluZ1xuICBwb3NpdGlvbnM6IFBvc2l0aW9uc1R5cGVcbiAgcmV2ZXJzZUFuaW1hdGlvbjogYm9vbGVhblxuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgYW5pbWF0aW9uRHVyYXRpb24/OiBudW1iZXJcbiAgaXNEaWFsb2c6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBUaGlzIGV2ZW50IGhhbmRsZSBhbGxvdyB1cyB0byBub3QgYnViYmxlIHRoZSBldmVudCB0byBkb2N1bWVudC5ib2R5IGxpa2UgdGhpcyByZWFjdC1zZWxlY3Qgd29ya3MgZmluZVxuICovXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbjogTW91c2VFdmVudEhhbmRsZXIgPSBldmVudCA9PiB7XG4gIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG59XG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKCdkaXYnLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+XG4gICAgIVtcbiAgICAgICdtYXhXaWR0aCcsXG4gICAgICAncG9zaXRpb25zJyxcbiAgICAgICdyZXZlcnNlQW5pbWF0aW9uJyxcbiAgICAgICdtYXhIZWlnaHQnLFxuICAgICAgJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICdpc0RpYWxvZycsXG4gICAgXS5pbmNsdWRlcyhwcm9wKSxcbn0pPFN0eWxlZFBvcHVwUHJvcHM+YFxuICBiYWNrZ3JvdW5kOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRTdHJvbmdlcn07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdlcn07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gYCR7dGhlbWUuc3BhY2VbJzAuNSddfSAke3RoZW1lLnNwYWNlWycxJ119YH07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBtYXgtd2lkdGg6ICR7KHsgbWF4V2lkdGggfSkgPT5cbiAgICB0eXBlb2YgbWF4V2lkdGggPT09ICdudW1iZXInID8gYCR7bWF4V2lkdGh9cHhgIDogbWF4V2lkdGh9O1xuICBtYXgtaGVpZ2h0OiAkeyh7IG1heEhlaWdodCB9KSA9PlxuICAgIHR5cGVvZiBtYXhIZWlnaHQgPT09ICdudW1iZXInID8gYCR7bWF4SGVpZ2h0fXB4YCA6IG1heEhlaWdodH07XG4gIG92ZXJmbG93OiAkeyh7IG1heEhlaWdodCB9KSA9PiAobWF4SGVpZ2h0ID8gJ2F1dG8nIDogdW5kZWZpbmVkKX07XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBpbnNldDogMCBhdXRvIGF1dG8gMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xuICB0cmFuc2Zvcm06ICR7KHsgcG9zaXRpb25zIH0pID0+IHBvc2l0aW9ucy5wb3B1cFBvc2l0aW9ufTtcblxuICAmW2RhdGEtYW5pbWF0ZWQ9XCJ0cnVlXCJdIHtcbiAgICBhbmltYXRpb246ICR7KHsgcG9zaXRpb25zLCByZXZlcnNlQW5pbWF0aW9uLCBhbmltYXRpb25EdXJhdGlvbiB9KSA9PiBjc3NgXG4gICAgICAke2FuaW1hdGlvbkR1cmF0aW9ufW1zICR7XG4gICAgICAgICFyZXZlcnNlQW5pbWF0aW9uID8gYW5pbWF0aW9uKHBvc2l0aW9ucykgOiBleGl0QW5pbWF0aW9uKHBvc2l0aW9ucylcbiAgICAgIH0gZm9yd2FyZHNcbiAgICBgfTtcbiAgfVxuXG4gICZbZGF0YS1oYXMtYXJyb3c9XCJ0cnVlXCJdIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VG9wfXB4O1xuICAgICAgbGVmdDogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93TGVmdH1weDtcbiAgICAgIHRyYW5zZm9ybTogJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLmFycm93VHJhbnNmb3JtfVxuICAgICAgICByb3RhdGUoJHsoeyBwb3NpdGlvbnMgfSkgPT4gcG9zaXRpb25zLnJvdGF0ZX1kZWcpO1xuICAgICAgbWFyZ2luLWxlZnQ6IC0ke0RFRkFVTFRfQVJST1dfV0lEVEh9cHg7XG4gICAgICBib3JkZXItd2lkdGg6ICR7REVGQVVMVF9BUlJPV19XSURUSH1weDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ2VyfVxuICAgICAgICB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS12aXNpYmxlLWluLWRvbT1cImZhbHNlXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDaGlsZHJlbkNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGluaGVyaXQ7XG5cblxuICAmW2RhdGEtY29udGFpbmVyLWZ1bGwtaGVpZ2h0PVwidHJ1ZVwiXSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgJltkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPVwidHJ1ZVwiXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbmBcblxudHlwZSBQb3B1cFByb3BzID0ge1xuICAvKipcbiAgICogSWQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgaWYgbm90IHNldC4gSXQgaXMgdXNlZCBmb3IgYXNzb2NpYXRpbmcgcG9wdXAgd3JhcHBlciB3aXRoIHBvcHVwIHBvcnRhbC5cbiAgICovXG4gIGlkPzogc3RyaW5nXG4gIGNoaWxkcmVuOlxuICAgIHwgUmVhY3ROb2RlXG4gICAgfCAoKHJlbmRlclByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZ1xuICAgICAgICBvbkJsdXI6ICgpID0+IHZvaWRcbiAgICAgICAgb25Gb2N1czogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJFbnRlcjogKCkgPT4gdm9pZFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogKCkgPT4gdm9pZFxuICAgICAgICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gICAgICB9KSA9PiBSZWFjdE5vZGUpXG4gIG1heFdpZHRoPzogbnVtYmVyIHwgc3RyaW5nXG4gIC8qKlxuICAgKiBgYXV0b2AgcGxhY2VtZW50IHdpbGwgY2hhbmdlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wdXAgaWYgaXQgZG9lc24ndCBmaXQgaW4gdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgcGxhY2VtZW50PzogUG9wdXBQbGFjZW1lbnRcbiAgLyoqXG4gICAqIEFsaWduIHRoZSBwb3B1cCB0byB0aGUgc3RhcnQgb3IgY2VudGVyIG9mIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIGFsaWduPzogUG9wdXBBbGlnblxuICAvKipcbiAgICogQ29udGVudCBvZiB0aGUgcG9wdXAsIHByZWZlcmFibHkgdGV4dCBpbnNpZGUuXG4gICAqL1xuICB0ZXh0PzogUmVhY3ROb2RlXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYHdpZHRoOiAxMDAlYCB0byB0aGUgcG9wdXAgY29udGFpbmVyLlxuICAgKi9cbiAgY29udGFpbmVyRnVsbFdpZHRoPzogYm9vbGVhblxuICAvKipcbiAgICogSXQgd2lsbCBhZGQgYGhlaWdodDogMTAwJWAgdG8gdGhlIHBvcHVwIGNvbnRhaW5lci5cbiAgICovXG4gIGNvbnRhaW5lckZ1bGxIZWlnaHQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiBJdCB3aWxsIGZvcmNlIGRpc3BsYXkgcG9wdXAuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byBhbHdheXMgZGlzcGxheSB0aGUgcG9wdXAgd2l0aG91dCBob3ZlciBuZWVkZWQuXG4gICAqL1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBpbm5lclJlZj86IFJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIHJvbGU/OiBzdHJpbmdcbiAgJ2RhdGEtdGVzdGlkJz86IHN0cmluZ1xuICBoYXNBcnJvdz86IGJvb2xlYW5cbiAgb25DbG9zZT86ICgpID0+IHZvaWRcbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgb25LZXlEb3duPzogS2V5Ym9hcmRFdmVudEhhbmRsZXJcbiAgJ2FyaWEtaGFzcG9wdXAnPzogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+WydhcmlhLWhhc3BvcHVwJ11cbiAgaGlkZU9uQ2xpY2tPdXRzaWRlPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgeW91IHNldCBkZWJvdW5jZVRpbWUgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIG5vdCBkZWJvdW5jZSB0aGUgaG92ZXIgZXZlbnQgYW5kIHdpbGwgYmUgZGlzcGxheWVkIGluc3RhbnRseS5cbiAgICogSWYgc2V0IHRvIDAgaXQgd2lsbCBkaXNhYmxlIGRlYm91bmNlLlxuICAgKi9cbiAgZGVib3VuY2VEZWxheT86IG51bWJlclxuICAvKipcbiAgICogSWYgeW91IHNldCBhIG1heCBoZWlnaHQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGFuaW1hdGlvbiBpcyBkaXNhYmxlZCwgb3IgaXQgd2lsbCBub3Qgd29yayBwcm9wZXJseSBvbiBzb21lIGJyb3dzZXJzLlxuICAgKi9cbiAgbWF4SGVpZ2h0Pzogc3RyaW5nIHwgbnVtYmVyXG4gIC8qKlxuICAgKiBXaWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIG9uIHRoZSBwb3B1cCBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBkaXNhYmxlQW5pbWF0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgdGhlIHBvcnRhbCB0YXJnZXQgaXMgY2hpbGRyZW4gY29udGFpbmVyIG9yIGRvY3VtZW50LmJvZHkgaWYgY2hpbGRyZW4gaXMgYSBmdW5jdGlvbi4gWW91IGNhbiBvdmVycmlkZSB0aGlzXG4gICAqIGJlaGF2aW9yIGJ5IHNldHRpbmcgYSBwb3J0YWxUYXJnZXQgcHJvcC5cbiAgICovXG4gIHBvcnRhbFRhcmdldD86IEhUTUxFbGVtZW50XG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gdHJ1ZSwgdGhlIHBvcHVwIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlIERPTSBvbmx5IHdoZW4gaXQgaXMgdmlzaWJsZS5cbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHRoZSBwb3B1cCB3aWxsIGFsd2F5cyBiZSByZW5kZXJlZCBpbiB0aGUgRE9NLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIGB0cnVlYCwgaWYgZm9yIHNvbWVcbiAgICogcmVhc29uIHlvdSBuZWVkIHRvIGRpc2FibGUgaXQsIHlvdSBjYW4gc2V0IGl0IHRvIGBmYWxzZWAuXG4gICAqL1xuICBkeW5hbWljRG9tUmVuZGVyaW5nPzogYm9vbGVhblxufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBjb21wb25lbnQgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjb25zdCBQb3B1cCA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIHRleHQgPSAnJyxcbiAgICAgIHBsYWNlbWVudCA9ICdhdXRvJyxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBpZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbnRhaW5lckZ1bGxXaWR0aCxcbiAgICAgIGNvbnRhaW5lckZ1bGxIZWlnaHQsXG4gICAgICBtYXhXaWR0aCA9ICcxNC41cmVtJyxcbiAgICAgIG1heEhlaWdodCxcbiAgICAgIHZpc2libGUsXG4gICAgICBpbm5lclJlZixcbiAgICAgIHJvbGUgPSAncG9wdXAnLFxuICAgICAgJ2RhdGEtdGVzdGlkJzogZGF0YVRlc3RJZCxcbiAgICAgIGhhc0Fycm93ID0gdHJ1ZSxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICB0YWJJbmRleCA9IDAsXG4gICAgICBvbktleURvd24sXG4gICAgICAnYXJpYS1oYXNwb3B1cCc6IGFyaWFIYXNQb3B1cCxcbiAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSA9IGZhbHNlLFxuICAgICAgZGVib3VuY2VEZWxheSA9IERFRkFVTFRfREVCT1VOQ0VfRFVSQVRJT04sXG4gICAgICBkaXNhYmxlQW5pbWF0aW9uID0gZmFsc2UsXG4gICAgICBwb3J0YWxUYXJnZXQsXG4gICAgICBkeW5hbWljRG9tUmVuZGVyaW5nID0gdHJ1ZSxcbiAgICB9OiBQb3B1cFByb3BzLFxuICAgIHJlZjogUmVmPEhUTUxEaXZFbGVtZW50PixcbiAgKSA9PiB7XG4gICAgY29uc3QgY2hpbGRyZW5SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShpbm5lclJlZiwgKCkgPT4gY2hpbGRyZW5SZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IGlubmVyUG9wdXBSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IGlubmVyUG9wdXBSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudClcblxuICAgIGNvbnN0IHRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgcG9wdXBQb3J0YWxUYXJnZXQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChwb3J0YWxUYXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHBvcnRhbFRhcmdldFxuICAgICAgfVxuXG4gICAgICBpZiAocm9sZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW5SZWYuY3VycmVudFxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NsaWVudFNpZGUpIHtcbiAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgLy8gV2UgY2hlY2sgaWYgd2luZG93IGV4aXN0cyBmb3IgU1NSXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGxcbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9ydGFsVGFyZ2V0LCByb2xlLCBjaGlsZHJlblJlZi5jdXJyZW50XSlcblxuICAgIC8vIFRoZXJlIGFyZSBzb21lIGlzc3VlIHdoZW4gbWl4aW5nIGFuaW1hdGlvbiBhbmQgbWF4SGVpZ2h0IG9uIHNvbWUgYnJvd3NlcnMsIHNvIHdlIGRpc2FibGUgYW5pbWF0aW9uIGlmIG1heEhlaWdodCBpcyBzZXQuXG4gICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPVxuICAgICAgZGlzYWJsZUFuaW1hdGlvbiB8fCBtYXhIZWlnaHQgPyAwIDogREVGQVVMVF9BTklNQVRJT05fRFVSQVRJT05cblxuICAgIC8vIERlYm91bmNlIHRpbWVyIHdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBwb3B1cCBmcm9tIGZsaWNrZXJpbmcgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IGFuZCBpbiB0aGUgY2hpbGRyZW4gZWxlbWVudC5cbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+Pih1bmRlZmluZWQpXG4gICAgY29uc3QgW3Zpc2libGVJbkRvbSwgc2V0VmlzaWJsZUluRG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtyZXZlcnNlQW5pbWF0aW9uLCBzZXRSZXZlcnNlQW5pbWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAgIGNvbnN0IFtwb3NpdGlvbnMsIHNldFBvc2l0aW9uc10gPSB1c2VTdGF0ZTxQb3NpdGlvbnNUeXBlPih7XG4gICAgICAuLi5ERUZBVUxUX1BPU0lUSU9OUyxcbiAgICB9KVxuICAgIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKVxuICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQgPz8gdW5pcXVlSWRcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSB2aXNpYmxlICE9PSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoY2hpbGRyZW5SZWYuY3VycmVudCAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0UG9zaXRpb25zKFxuICAgICAgICAgIGNvbXB1dGVQb3NpdGlvbnMoe1xuICAgICAgICAgICAgYWxpZ24sXG4gICAgICAgICAgICBjaGlsZHJlblJlZixcbiAgICAgICAgICAgIGhhc0Fycm93LFxuICAgICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgICAgcG9wdXBQb3J0YWxUYXJnZXQ6IHBvcHVwUG9ydGFsVGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgcG9wdXBSZWY6IGlubmVyUG9wdXBSZWYsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LCBbaGFzQXJyb3csIHBsYWNlbWVudCwgcG9wdXBQb3J0YWxUYXJnZXQsIGFsaWduXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byByZWNvbXB1dGUgcG9zaXRpb25zIG9mIHBvcHVwIGR1ZSB0byB3aW5kb3cgc2Nyb2xsIG9yIHJlc2l6ZS5cbiAgICAgKi9cbiAgICBjb25zdCBvbldpbmRvd0NoYW5nZURldGVjdGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gV2UgcmVtb3ZlIGFuaW1hdGlvbiBvbiBzY3JvbGwgb3IgdGhlIGFuaW1hdGlvbiB3aWxsIHJlc3RhcnQgb24gZXZlcnkgc2Nyb2xsXG4gICAgICBpZiAoaW5uZXJQb3B1cFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlubmVyUG9wdXBSZWYuY3VycmVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSdcbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG4gICAgfSwgW2dlbmVyYXRlUG9wdXBQb3NpdGlvbnMsIGlubmVyUG9wdXBSZWZdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIHJlbW92ZSBwb3B1cCBwb3J0YWwgZnJvbSBET00gYW5kIHJlbW92ZSBldmVudCBsaXN0ZW5lciB0byBpdC5cbiAgICAgKi9cbiAgICBjb25zdCB1bm1vdW50UG9wdXBGcm9tRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0VmlzaWJsZUluRG9tKGZhbHNlKVxuICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbihmYWxzZSlcblxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgfSwgW29uV2luZG93Q2hhbmdlRGV0ZWN0ZWRdKVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIGhpZGUgcG9wdXAuIEEgdGltZW91dCBpcyBzZXQgdG8gYWxsb3cgYW5pbWF0aW9uIGVuZCwgdGhlbiByZW1vdmVcbiAgICAgKiBwb3B1cCBmcm9tIGRvbS5cbiAgICAgKi9cbiAgICBjb25zdCBjbG9zZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY2xvc2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgICAgc2V0UmV2ZXJzZUFuaW1hdGlvbih0cnVlKVxuXG4gICAgICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZT8uKClcbiAgICAgICAgICAgIHVubW91bnRQb3B1cEZyb21Eb20oKVxuICAgICAgICAgIH0sIGFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uQ2xvc2U/LigpXG4gICAgICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlQW5pbWF0aW9uKSB7XG4gICAgICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY2xvc2VGdW5jdGlvbigpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWJvdW5jZURlbGF5ICYmICFkaXNhYmxlQW5pbWF0aW9uID8gZGVib3VuY2VEZWxheSA6IDAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsb3NlRnVuY3Rpb24oKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgZGlzYWJsZUFuaW1hdGlvbixcbiAgICAgIGRlYm91bmNlRGVsYXksXG4gICAgICBvbkNsb3NlLFxuICAgICAgdW5tb3VudFBvcHVwRnJvbURvbSxcbiAgICBdKVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBob3ZlciBvciBzdG9wIGhvdmVyaW5nIGNoaWxkcmVuIHRoaXMgZnVuY3Rpb24gZGlzcGxheSBvciBoaWRlIHBvcHVwLiBBIHRpbWVvdXQgaXMgc2V0IHRvIGFsbG93IGFuaW1hdGlvblxuICAgICAqIGVuZCwgdGhlbiByZW1vdmUgcG9wdXAgZnJvbSBkb20uXG4gICAgICovXG4gICAgY29uc3Qgb25Qb2ludGVyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChpc1Zpc2libGU6IGJvb2xlYW4pID0+ICgpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWJvdW5jZURlbGF5IGFuZCB0aGUgcG9wdXAgaXMgbm90IHZpc2libGUsIHdlIGNsZWFyIHRoZSBkZWJvdW5jZSB0aW1lclxuICAgICAgICBpZiAoIXZpc2libGUgJiYgZGVib3VuY2VEZWxheSA+IDAgJiYgZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudClcbiAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gdW5tb3VudCB0aGUgcG9wdXBcbiAgICAgICAgLy8gVGhlcmUgaXMgZGVib3VuY2UgaW4gb3JkZXIgdG8gYXZvaWQgcG9wdXAgdG8gZmxpY2tlciB3aGVuIHdlIG1vdmUgdGhlIG1vdXNlIGZyb20gY2hpbGRyZW4gdG8gcG9wdXBcbiAgICAgICAgLy8gVGltZXIgaXMgdXNlZCB0byBmb2xsb3cgdGhlIGFuaW1hdGlvbiBkdXJhdGlvblxuICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQgJiYgIWRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9IGVsc2UgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uIGlzIGZvciB3aGVuIHdlIHdhbnQgdG8gbW91bnQgdGhlIHBvcHVwXG4gICAgICAgICAgLy8gSWYgdGhlIHRpbWVyIGV4aXN0cyBpdCBtZWFucyB0aGUgcG9wdXAgd2FzIGFib3V0IHRvIHVtb3VudCwgYnV0IHdlIGhvdmVyZWQgdGhlIGNoaWxkcmVuIGFnYWluLFxuICAgICAgICAgIC8vIHNvIHdlIGNsZWFyIHRoZSB0aW1lciBhbmQgdGhlIHBvcHVwIHdpbGwgbm90IGJlIHVubW91bnRlZFxuICAgICAgICAgIGlmICh0aW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRSZXZlcnNlQW5pbWF0aW9uKGZhbHNlKVxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICB0aW1lci5jdXJyZW50ID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFuZCBoZXJlIGlzIHdoZW4gd2UgY3VycmVudGx5IGFyZSBpbiBhIGRlYm91bmNlIHRpbWVyLCBpdCBtZWFucyBwb3B1cCB3YXMgaG92ZXJlZCBkdXJpbmdcbiAgICAgICAgICAvLyB0aGF0IHBlcmlvZCwgYW5kIHNvIHdlIGNhbiBjbGVhciBkZWJvdW5jZSB0aW1lclxuICAgICAgICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlYm91bmNlRGVsYXkgPiAwKSB7XG4gICAgICAgICAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJsZUluRG9tKHRydWUpXG4gICAgICAgICAgICB9LCBkZWJvdW5jZURlbGF5KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmxlSW5Eb20odHJ1ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2Nsb3NlUG9wdXAsIGRlYm91bmNlRGVsYXksIHZpc2libGVdLFxuICAgIClcblxuICAgIC8qKlxuICAgICAqIE9uY2UgcG9wdXAgaXMgdmlzaWJsZSBpbiB0aGUgZG9tIHdlIGNhbiBjb21wdXRlIHBvc2l0aW9ucywgdGhlbiBzZXQgaXQgdmlzaWJsZSBvbiBzY3JlZW4gYW5kIGFkZCBldmVudCB0b1xuICAgICAqIHJlY29tcHV0ZSBwb3NpdGlvbnMgb24gc2Nyb2xsIG9yIHNjcmVlbiByZXNpemUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgZ2VuZXJhdGVQb3B1cFBvc2l0aW9ucygpXG5cbiAgICAgICAgaWYgKHBvcHVwUG9ydGFsVGFyZ2V0ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgLy8gV2Ugd2FudCB0byBkZXRlY3Qgc2Nyb2xsIGFuZCByZXNpemUgaW4gb3JkZXIgdG8gcmVjb21wdXRlIHBvc2l0aW9ucyBvZiBwb3B1cFxuICAgICAgICAgIC8vIEFkZGluZyB0cnVlIGFzIHRoaXJkIHBhcmFtZXRlciB0byBldmVudCBsaXN0ZW5lciB3aWxsIGRldGVjdCBuZXN0ZWQgc2Nyb2xscy5cbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dDaGFuZ2VEZXRlY3RlZCwgdHJ1ZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uV2luZG93Q2hhbmdlRGV0ZWN0ZWQsIHRydWUpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvbldpbmRvd0NoYW5nZURldGVjdGVkLCB0cnVlKVxuICAgICAgICBpZiAodGltZXIuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5jdXJyZW50KVxuICAgICAgICAgIHRpbWVyLmN1cnJlbnQgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGdlbmVyYXRlUG9wdXBQb3NpdGlvbnMsXG4gICAgICBvbldpbmRvd0NoYW5nZURldGVjdGVkLFxuICAgICAgdmlzaWJsZUluRG9tLFxuICAgICAgbWF4V2lkdGgsXG4gICAgICBwb3B1cFBvcnRhbFRhcmdldCxcbiAgICBdKVxuXG4gICAgLy8gVGhpcyB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHBvc2l0aW9ucyBhcmUgY29tcHV0ZWQgYW5kIHBvcHVwIGlzIHZpc2libGUgaW4gdGhlIGRvbS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHZpc2libGVJbkRvbSAmJiBpbm5lclBvcHVwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW5uZXJQb3B1cFJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbcG9zaXRpb25zXSlcblxuICAgIC8qKlxuICAgICAqIElmIHBvcHVwIGhhcyBgdmlzaWJsZWAgcHJvcCBpdCBtZWFucyB0aGUgcG9wdXAgaXMgbWFudWFsbHkgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgcHJvcC5cbiAgICAgKiBJbiB0aGlzIGNhcyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgcG9wdXAgb24gaG92ZXIsIGJ1dCBvbmx5IHdoZW4gYHZpc2libGVgIGlzIHRydWUuXG4gICAgICovXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgb25Qb2ludGVyRXZlbnQodmlzaWJsZSkoKVxuICAgICAgfVxuICAgIH0sIFtpc0NvbnRyb2xsZWQsIG9uUG9pbnRlckV2ZW50LCB2aXNpYmxlXSlcblxuICAgIC8vIEhhbmRsZSBoaWRlIG9uIGVzYyBwcmVzcyBhbmQgaGlkZSBvbiBjbGljayBvdXRzaWRlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZUVzY1ByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2VQb3B1cCgpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcHVwQ3VycmVudCA9IGlubmVyUG9wdXBSZWYuY3VycmVudFxuICAgICAgICBjb25zdCBjaGlsZHJlbkN1cnJlbnQgPSBjaGlsZHJlblJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBvcHVwQ3VycmVudCAmJlxuICAgICAgICAgIGhpZGVPbkNsaWNrT3V0c2lkZSAmJlxuICAgICAgICAgICFldmVudC5kZWZhdWx0UHJldmVudGVkICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSBwb3B1cEN1cnJlbnQgJiZcbiAgICAgICAgICBldmVudC50YXJnZXQgIT09IGNoaWxkcmVuQ3VycmVudCAmJlxuICAgICAgICAgICFjaGlsZHJlbkN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICFwb3B1cEN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIGNsb3NlUG9wdXAoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmlzaWJsZUluRG9tKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVFc2NQcmVzcylcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIGhhbmRsZUVzY1ByZXNzKVxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGNsb3NlUG9wdXAsXG4gICAgICB2aXNpYmxlSW5Eb20sXG4gICAgICBpbm5lclBvcHVwUmVmLFxuICAgICAgY2hpbGRyZW5SZWYsXG4gICAgICBoaWRlT25DbGlja091dHNpZGUsXG4gICAgXSlcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZXZlbnQgd2lsbCBvY2N1ciBvbmx5IGZvciBkaWFsb2cgYW5kIHdpbGwgdHJhcCBmb2N1cyBpbnNpZGUgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25zdCBoYW5kbGVGb2N1c1RyYXA6IEtleWJvYXJkRXZlbnRIYW5kbGVyID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgY29uc3QgaXNUYWJQcmVzc2VkID0gZXZlbnQua2V5ID09PSAnVGFiJ1xuICAgICAgaWYgKCFpc1RhYlByZXNzZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBjb25zdCBmb2N1c2FibGVFbHMgPVxuICAgICAgICBpbm5lclBvcHVwUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgJ2FbaHJlZl06bm90KFtkaXNhYmxlZF0pLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSksIGlucHV0Om5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICAgICAgICkgPz8gW11cblxuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBubyBpbnRlcmFjdGl2ZSBlbGVtZW50IGFyZSB3aXRoaW4gdGhlIG1vZGFsIChpbmNsdWRpbmcgY2xvc2UgaWNvbilcbiAgICAgIGlmIChmb2N1c2FibGVFbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IGZvY3VzYWJsZUVsc1swXSBhcyBIVE1MRWxlbWVudFxuICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUVsID0gZm9jdXNhYmxlRWxzW1xuICAgICAgICBmb2N1c2FibGVFbHMubGVuZ3RoIC0gMVxuICAgICAgXSBhcyBIVE1MRWxlbWVudFxuXG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0Rm9jdXNhYmxlRWwgfHxcbiAgICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGFzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3RGb2N1c2FibGVFbCB8fFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBpbm5lclBvcHVwUmVmLmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdEZvY3VzYWJsZUVsLmZvY3VzKClcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgLyoqXG4gICAgICogV2lsbCByZW5kZXIgY2hpbGRyZW4gY29uZGl0aW9uYWxseSBpZiBjaGlsZHJlbiBpcyBhIGZ1bmN0aW9uIG9yIG5vdC5cbiAgICAgKi9cbiAgICBjb25zdCByZW5kZXJDaGlsZHJlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgICAgICBvbkJsdXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyRW50ZXI6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudCh0cnVlKSA6IG5vb3AsXG4gICAgICAgICAgb25Qb2ludGVyTGVhdmU6ICFpc0NvbnRyb2xsZWQgPyBvblBvaW50ZXJFdmVudChmYWxzZSkgOiBub29wLFxuICAgICAgICAgIHJlZjogY2hpbGRyZW5SZWYsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRDaGlsZHJlbkNvbnRhaW5lclxuICAgICAgICAgIGFyaWEtY29udHJvbHM9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e2dlbmVyYXRlZElkfVxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9e2FyaWFIYXNQb3B1cH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLWhlaWdodD17Y29udGFpbmVyRnVsbEhlaWdodH1cbiAgICAgICAgICBkYXRhLWNvbnRhaW5lci1mdWxsLXdpZHRoPXtjb250YWluZXJGdWxsV2lkdGh9XG4gICAgICAgICAgb25CbHVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICBvbkZvY3VzPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgb25LZXlEb3duPy4oZXZlbnQpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBvaW50ZXJFbnRlcj17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KHRydWUpIDogbm9vcH1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17IWlzQ29udHJvbGxlZCA/IG9uUG9pbnRlckV2ZW50KGZhbHNlKSA6IG5vb3B9XG4gICAgICAgICAgcmVmPXtjaGlsZHJlblJlZn1cbiAgICAgICAgICB0YWJJbmRleD17dGFiSW5kZXh9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R5bGVkQ2hpbGRyZW5Db250YWluZXI+XG4gICAgICApXG4gICAgfSwgW1xuICAgICAgYXJpYUhhc1BvcHVwLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXJGdWxsSGVpZ2h0LFxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoLFxuICAgICAgZ2VuZXJhdGVkSWQsXG4gICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblBvaW50ZXJFdmVudCxcbiAgICAgIHRhYkluZGV4LFxuICAgIF0pXG5cbiAgICBjb25zdCBzaG91bGRSZW5kZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghZHluYW1pY0RvbVJlbmRlcmluZykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZHluYW1pY0RvbVJlbmRlcmluZyAmJiB2aXNpYmxlSW5Eb20pIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSwgW2R5bmFtaWNEb21SZW5kZXJpbmcsIHZpc2libGVJbkRvbV0pXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHtyZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICB7c2hvdWxkUmVuZGVyXG4gICAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICAgIDxTdHlsZWRQb3B1cFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPXthbmltYXRpb25EdXJhdGlvbn1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICBkYXRhLWFuaW1hdGVkPXthbmltYXRpb25EdXJhdGlvbiA+IDAgJiYgIW1heEhlaWdodH1cbiAgICAgICAgICAgICAgICBkYXRhLWhhcy1hcnJvdz17aGFzQXJyb3d9XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgICAgICAgICAgICAgZGF0YS12aXNpYmxlLWluLWRvbT17XG4gICAgICAgICAgICAgICAgICAhZHluYW1pY0RvbVJlbmRlcmluZyA/IHZpc2libGVJbkRvbSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZD17Z2VuZXJhdGVkSWR9XG4gICAgICAgICAgICAgICAgaXNEaWFsb2c9e3JvbGUgPT09ICdkaWFsb2cnfVxuICAgICAgICAgICAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgICAgICAgICAgIG1heFdpZHRoPXttYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgICAgICAgICBvbktleURvd249e3JvbGUgPT09ICdkaWFsb2cnID8gaGFuZGxlRm9jdXNUcmFwIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckVudGVyPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQodHJ1ZSkgOiBub29wfVxuICAgICAgICAgICAgICAgIG9uUG9pbnRlckxlYXZlPXshaXNDb250cm9sbGVkID8gb25Qb2ludGVyRXZlbnQoZmFsc2UpIDogbm9vcH1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM9e3Bvc2l0aW9uc31cbiAgICAgICAgICAgICAgICByZWY9e2lubmVyUG9wdXBSZWZ9XG4gICAgICAgICAgICAgICAgcmV2ZXJzZUFuaW1hdGlvbj17cmV2ZXJzZUFuaW1hdGlvbn1cbiAgICAgICAgICAgICAgICByb2xlPXtyb2xlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgIDwvU3R5bGVkUG9wdXA+LFxuICAgICAgICAgICAgICBwb3B1cFBvcnRhbFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8Lz5cbiAgICApXG4gIH0sXG4pXG4iXX0= */',
69
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
70
- });
71
17
  const Popup = forwardRef(({
72
18
  children,
73
19
  text = "",
@@ -127,6 +73,7 @@ const Popup = forwardRef(({
127
73
  const uniqueId = useId();
128
74
  const generatedId = id ?? uniqueId;
129
75
  const isControlled = visible !== void 0;
76
+ const isAnimated = useMemo(() => animationDuration > 0 && !maxHeight, [animationDuration, maxHeight]);
130
77
  const generatePopupPositions = useCallback(() => {
131
78
  if (childrenRef.current && innerPopupRef.current) {
132
79
  setPositions(computePositions({
@@ -284,7 +231,10 @@ const Popup = forwardRef(({
284
231
  ref: childrenRef
285
232
  });
286
233
  }
287
- return /* @__PURE__ */ jsx(StyledChildrenContainer, { "aria-controls": generatedId, "aria-describedby": generatedId, "aria-haspopup": ariaHasPopup, "data-container-full-height": containerFullHeight, "data-container-full-width": containerFullWidth, onBlur: !isControlled ? onPointerEvent(false) : noop, onFocus: !isControlled ? onPointerEvent(true) : noop, onKeyDown: (event) => {
234
+ return /* @__PURE__ */ jsx("div", { "aria-controls": generatedId, "aria-describedby": generatedId, "aria-haspopup": ariaHasPopup, className: childrenContainerPopup({
235
+ fullHeight: containerFullHeight,
236
+ fullWidth: containerFullWidth
237
+ }), onBlur: !isControlled ? onPointerEvent(false) : noop, onFocus: !isControlled ? onPointerEvent(true) : noop, onKeyDown: (event) => {
288
238
  onKeyDown?.(event);
289
239
  }, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, ref: childrenRef, tabIndex, children });
290
240
  }, [ariaHasPopup, children, containerFullHeight, containerFullWidth, generatedId, isControlled, onKeyDown, onPointerEvent, tabIndex]);
@@ -305,10 +255,25 @@ const Popup = forwardRef(({
305
255
  }
306
256
  return /* @__PURE__ */ jsxs(Fragment, { children: [
307
257
  renderChildren(),
308
- shouldRender ? createPortal(/* @__PURE__ */ jsx(StyledPopup, { animationDuration, className, "data-animated": animationDuration > 0 && !maxHeight, "data-has-arrow": hasArrow, "data-testid": dataTestId, "data-visible-in-dom": !dynamicDomRendering ? visibleInDom : void 0, id: generatedId, isDialog: role === "dialog", maxHeight, maxWidth, onClick: stopClickPropagation, onKeyDown: role === "dialog" ? handleFocusTrap : void 0, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, positions, ref: innerPopupRef, reverseAnimation, role, children: text }), popupPortalTarget) : null
258
+ shouldRender ? createPortal(/* @__PURE__ */ jsx("div", { className: `${className ? `${className} ` : ""}${popup({
259
+ hasArrow,
260
+ visibleInDom: !dynamicDomRendering ? visibleInDom : void 0
261
+ })} ${isAnimated ? animationPopup[reverseAnimation ? "reverse" : "notReverse"] : null}`, "data-testid": dataTestId, "data-visible-in-dom": !dynamicDomRendering ? visibleInDom : void 0, id: generatedId, onClick: stopClickPropagation, onKeyDown: role === "dialog" ? handleFocusTrap : void 0, onPointerEnter: !isControlled ? onPointerEvent(true) : noop, onPointerLeave: !isControlled ? onPointerEvent(false) : noop, ref: innerPopupRef, role, style: assignInlineVars({
262
+ [arrowTop]: `${positions.arrowTop}px`,
263
+ [arrowLeft]: `${positions.arrowLeft}px`,
264
+ [arrowTransform]: `${positions.arrowTransform} rotate(${positions.rotate}deg)`,
265
+ [popupPosition]: positions.popupPosition,
266
+ [animationDurationPopup]: `${animationDuration}ms`,
267
+ [popupInitialPosition]: positions.popupInitialPosition,
268
+ [maxWidthPopup]: `${typeof maxWidth === "number" ? `${maxWidth}px` : maxWidth}`,
269
+ [maxHeightPopup]: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
270
+ }), children: /* @__PURE__ */ jsx("div", { className: containerPopup({
271
+ hasMaxHeight: !!maxHeight
272
+ }), style: assignInlineVars({
273
+ [maxHeightPopup]: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
274
+ }), children: text }) }), popupPortalTarget) : null
309
275
  ] });
310
276
  });
311
277
  export {
312
- Popup,
313
- StyledChildrenContainer
278
+ Popup
314
279
  };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ ;/* empty css */
4
+ const createRuntimeFn = require("@vanilla-extract/recipes/createRuntimeFn");
5
+ var containerPopup = createRuntimeFn.createRuntimeFn({ defaultClassName: "uv_w40vpo2", variantClassNames: { hasMaxHeight: { true: "uv_w40vpo3" } }, defaultVariants: {}, compoundVariants: [] });
6
+ var popup = createRuntimeFn.createRuntimeFn({ defaultClassName: "uv_w40vpo4", variantClassNames: { hasArrow: { true: "uv_w40vpo5" }, visibleInDom: { false: "uv_w40vpo6" } }, defaultVariants: { hasArrow: true, visibleInDom: true }, compoundVariants: [] });
7
+ var animationPopup = { reverse: "uv_w40vpo7", notReverse: "uv_w40vpo8" };
8
+ var childrenContainerPopup = createRuntimeFn.createRuntimeFn({ defaultClassName: "uv_w40vpo9", variantClassNames: { fullHeight: { true: "uv_w40vpoa" }, fullWidth: { true: "uv_w40vpob" } }, defaultVariants: {}, compoundVariants: [] });
9
+ exports.animationPopup = animationPopup;
10
+ exports.childrenContainerPopup = childrenContainerPopup;
11
+ exports.containerPopup = containerPopup;
12
+ exports.popup = popup;
@@ -0,0 +1,45 @@
1
+ export declare const containerPopup: import("@vanilla-extract/recipes").RuntimeFn<{
2
+ hasMaxHeight: {
3
+ true: {
4
+ maxHeight: `calc(var(--${string}) - var(--${string}))`;
5
+ };
6
+ };
7
+ }>;
8
+ export declare const popup: import("@vanilla-extract/recipes").RuntimeFn<{
9
+ hasArrow: {
10
+ true: {
11
+ selectors: {
12
+ '&::after': {
13
+ content: " ";
14
+ position: "absolute";
15
+ top: `var(--${string})`;
16
+ left: `var(--${string})`;
17
+ transform: `var(--${string})`;
18
+ marginLeft: "-8px";
19
+ borderWidth: "8px";
20
+ borderStyle: "solid";
21
+ borderColor: `var(--${string}) transparent transparent transparent`;
22
+ pointerEvents: "none";
23
+ };
24
+ };
25
+ };
26
+ };
27
+ visibleInDom: {
28
+ false: {
29
+ display: "none";
30
+ };
31
+ };
32
+ }>;
33
+ export declare const animationPopup: Record<"reverse" | "notReverse", string>;
34
+ export declare const childrenContainerPopup: import("@vanilla-extract/recipes").RuntimeFn<{
35
+ fullHeight: {
36
+ true: {
37
+ height: "100%";
38
+ };
39
+ };
40
+ fullWidth: {
41
+ true: {
42
+ width: "100%";
43
+ };
44
+ };
45
+ }>;
@@ -0,0 +1,12 @@
1
+ /* empty css */
2
+ import { createRuntimeFn } from "@vanilla-extract/recipes/createRuntimeFn";
3
+ var containerPopup = createRuntimeFn({ defaultClassName: "uv_w40vpo2", variantClassNames: { hasMaxHeight: { true: "uv_w40vpo3" } }, defaultVariants: {}, compoundVariants: [] });
4
+ var popup = createRuntimeFn({ defaultClassName: "uv_w40vpo4", variantClassNames: { hasArrow: { true: "uv_w40vpo5" }, visibleInDom: { false: "uv_w40vpo6" } }, defaultVariants: { hasArrow: true, visibleInDom: true }, compoundVariants: [] });
5
+ var animationPopup = { reverse: "uv_w40vpo7", notReverse: "uv_w40vpo8" };
6
+ var childrenContainerPopup = createRuntimeFn({ defaultClassName: "uv_w40vpo9", variantClassNames: { fullHeight: { true: "uv_w40vpoa" }, fullWidth: { true: "uv_w40vpob" } }, defaultVariants: {}, compoundVariants: [] });
7
+ export {
8
+ animationPopup,
9
+ childrenContainerPopup,
10
+ containerPopup,
11
+ popup
12
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ ;/* empty css */
4
+ var arrowTop = "var(--uv_ozfz3c0)";
5
+ var arrowLeft = "var(--uv_ozfz3c1)";
6
+ var arrowTransform = "var(--uv_ozfz3c2)";
7
+ var maxHeightPopup = "var(--uv_ozfz3c3)";
8
+ var popupInitialPosition = "var(--uv_ozfz3c6)";
9
+ var popupPosition = "var(--uv_ozfz3c4)";
10
+ var animationDurationPopup = "var(--uv_ozfz3c5)";
11
+ var maxWidthPopup = "var(--uv_ozfz3c7)";
12
+ exports.animationDurationPopup = animationDurationPopup;
13
+ exports.arrowLeft = arrowLeft;
14
+ exports.arrowTop = arrowTop;
15
+ exports.arrowTransform = arrowTransform;
16
+ exports.maxHeightPopup = maxHeightPopup;
17
+ exports.maxWidthPopup = maxWidthPopup;
18
+ exports.popupInitialPosition = popupInitialPosition;
19
+ exports.popupPosition = popupPosition;
@@ -0,0 +1,9 @@
1
+ declare const arrowTop: `var(--${string})`;
2
+ declare const arrowLeft: `var(--${string})`;
3
+ declare const arrowTransform: `var(--${string})`;
4
+ declare const maxHeightPopup: `var(--${string})`;
5
+ declare const popupPosition: `var(--${string})`;
6
+ declare const animationDurationPopup: `var(--${string})`;
7
+ declare const popupInitialPosition: `var(--${string})`;
8
+ declare const maxWidthPopup: `var(--${string})`;
9
+ export { arrowTop, arrowLeft, arrowTransform, maxHeightPopup, popupInitialPosition, popupPosition, animationDurationPopup, maxWidthPopup, };
@@ -0,0 +1,19 @@
1
+ /* empty css */
2
+ var arrowTop = "var(--uv_ozfz3c0)";
3
+ var arrowLeft = "var(--uv_ozfz3c1)";
4
+ var arrowTransform = "var(--uv_ozfz3c2)";
5
+ var maxHeightPopup = "var(--uv_ozfz3c3)";
6
+ var popupInitialPosition = "var(--uv_ozfz3c6)";
7
+ var popupPosition = "var(--uv_ozfz3c4)";
8
+ var animationDurationPopup = "var(--uv_ozfz3c5)";
9
+ var maxWidthPopup = "var(--uv_ozfz3c7)";
10
+ export {
11
+ animationDurationPopup,
12
+ arrowLeft,
13
+ arrowTop,
14
+ arrowTransform,
15
+ maxHeightPopup,
16
+ maxWidthPopup,
17
+ popupInitialPosition,
18
+ popupPosition
19
+ };
@@ -5,23 +5,40 @@ export declare const InnerCircleRing: import("@emotion/styled").StyledComponent<
5
5
  as?: React.ElementType;
6
6
  }, import("react").SVGProps<SVGCircleElement>, {}>;
7
7
  export declare const RadioStack: import("@emotion/styled").StyledComponent<{
8
- theme?: import("@emotion/react").Theme;
9
- as?: React.ElementType;
8
+ gap?: 0 | "0" | 2 | 1 | "1" | "0.5" | "0.25" | "1.5" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | 7 | 10 | 3 | 4 | 5 | 6 | 8 | 9 | 0.5 | 0.25 | 1.5 | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", 0 | "0" | 2 | 1 | "1" | "0.5" | "0.25" | "1.5" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | 7 | 10 | 3 | 4 | 5 | 6 | 8 | 9 | 0.5 | 0.25 | 1.5>>;
9
+ direction?: "column" | "column-reverse" | "row" | "row-reverse" | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", "column" | "column-reverse" | "row" | "row-reverse">>;
10
+ alignItems?: "normal" | "stretch" | "center" | "end" | "flex-end" | "flex-start" | "start" | "baseline" | "self-end" | "self-start" | "first baseline" | "last baseline" | "safe center" | "unsafe center" | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", "normal" | "stretch" | "center" | "end" | "flex-end" | "flex-start" | "start" | "baseline" | "self-end" | "self-start" | "first baseline" | "last baseline" | "safe center" | "unsafe center">>;
11
+ justifyContent?: "normal" | "left" | "right" | "space-around" | "space-between" | "space-evenly" | "stretch" | "center" | "end" | "flex-end" | "flex-start" | "start" | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", "normal" | "left" | "right" | "space-around" | "space-between" | "space-evenly" | "stretch" | "center" | "end" | "flex-end" | "flex-start" | "start">>;
12
+ wrap?: boolean | import("csstype").Property.FlexWrap | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", boolean | import("csstype").Property.FlexWrap | undefined>> | undefined;
13
+ width?: import("react").CSSProperties["width"];
14
+ maxWidth?: import("react").CSSProperties["maxWidth"];
15
+ minWidth?: import("react").CSSProperties["minWidth"];
16
+ flex?: import("react").CSSProperties["flex"];
17
+ className?: string;
18
+ children: ReactNode;
19
+ 'data-testid'?: string;
20
+ id?: string;
10
21
  } & {
11
- gap?: keyof import("../..").UltravioletUITheme["space"] | number | Partial<Record<keyof import("../..").UltravioletUITheme["breakpoints"], keyof import("../..").UltravioletUITheme["space"] | number>>;
12
- direction?: "row" | "column" | Partial<Record<keyof import("../..").UltravioletUITheme["breakpoints"], "row" | "column">>;
13
- alignItems?: import("react").CSSProperties["alignItems"] | Partial<Record<keyof import("../..").UltravioletUITheme["breakpoints"], import("react").CSSProperties["alignItems"]>>;
14
- justifyContent?: import("react").CSSProperties["justifyContent"] | Partial<Record<keyof import("../..").UltravioletUITheme["breakpoints"], import("react").CSSProperties["justifyContent"]>>;
15
- wrap?: boolean | import("react").CSSProperties["flexWrap"] | Partial<Record<keyof import("../..").UltravioletUITheme["breakpoints"], boolean | import("react").CSSProperties["flexWrap"]>>;
16
- width?: import("react").CSSProperties["width"] | Partial<Record<keyof import("../..").UltravioletUITheme["breakpoints"], import("react").CSSProperties["width"]>>;
17
- maxWidth?: import("react").CSSProperties["maxWidth"] | Partial<Record<keyof import("../..").UltravioletUITheme["breakpoints"], import("react").CSSProperties["maxWidth"]>>;
18
- minWidth?: import("react").CSSProperties["minWidth"] | Partial<Record<keyof import("../..").UltravioletUITheme["breakpoints"], import("react").CSSProperties["minWidth"]>>;
19
- flex?: import("react").CSSProperties["flex"] | Partial<Record<keyof import("../..").UltravioletUITheme["breakpoints"], import("react").CSSProperties["flex"]>>;
22
+ as?: import("react").ElementType | undefined;
23
+ ref?: any;
24
+ } & Omit<Omit<any, "ref">, keyof {
25
+ as?: E | undefined;
26
+ ref?: import("react").ComponentPropsWithRef<E>["ref"] | undefined;
27
+ } | keyof {
28
+ gap?: 0 | "0" | 2 | 1 | "1" | "0.5" | "0.25" | "1.5" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | 7 | 10 | 3 | 4 | 5 | 6 | 8 | 9 | 0.5 | 0.25 | 1.5 | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", 0 | "0" | 2 | 1 | "1" | "0.5" | "0.25" | "1.5" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | 7 | 10 | 3 | 4 | 5 | 6 | 8 | 9 | 0.5 | 0.25 | 1.5>>;
29
+ direction?: "column" | "column-reverse" | "row" | "row-reverse" | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", "column" | "column-reverse" | "row" | "row-reverse">>;
30
+ alignItems?: "normal" | "stretch" | "center" | "end" | "flex-end" | "flex-start" | "start" | "baseline" | "self-end" | "self-start" | "first baseline" | "last baseline" | "safe center" | "unsafe center" | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", "normal" | "stretch" | "center" | "end" | "flex-end" | "flex-start" | "start" | "baseline" | "self-end" | "self-start" | "first baseline" | "last baseline" | "safe center" | "unsafe center">>;
31
+ justifyContent?: "normal" | "left" | "right" | "space-around" | "space-between" | "space-evenly" | "stretch" | "center" | "end" | "flex-end" | "flex-start" | "start" | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", "normal" | "left" | "right" | "space-around" | "space-between" | "space-evenly" | "stretch" | "center" | "end" | "flex-end" | "flex-start" | "start">>;
32
+ wrap?: boolean | import("csstype").Property.FlexWrap | Partial<Record<"small" | "large" | "medium" | "xlarge" | "xsmall" | "xxsmall", boolean | import("csstype").Property.FlexWrap | undefined>> | undefined;
33
+ width?: import("react").CSSProperties["width"];
34
+ maxWidth?: import("react").CSSProperties["maxWidth"];
35
+ minWidth?: import("react").CSSProperties["minWidth"];
36
+ flex?: import("react").CSSProperties["flex"];
20
37
  className?: string;
21
38
  children: ReactNode;
22
39
  'data-testid'?: string;
23
40
  id?: string;
24
- } & import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
41
+ }> & {
25
42
  theme?: import("@emotion/react").Theme;
26
43
  }, {}, {}>;
27
44
  export declare const Ring: import("@emotion/styled").StyledComponent<{
@@ -2,42 +2,14 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
4
  const jsxRuntime = require("@emotion/react/jsx-runtime");
5
- const _styled = require("@emotion/styled/base");
6
- const _interopDefaultCompat = (e) => e && typeof e === "object" && "default" in e ? e : { default: e };
7
- const _styled__default = /* @__PURE__ */ _interopDefaultCompat(_styled);
8
- const StyledRow = /* @__PURE__ */ _styled__default.default("div", process.env.NODE_ENV === "production" ? {
9
- shouldForwardProp: (prop) => !["templateColumns", "gap", "alignItems", "justifyContent", "padding"].includes(prop),
10
- target: "e3f5lzv0"
11
- } : {
12
- shouldForwardProp: (prop) => !["templateColumns", "gap", "alignItems", "justifyContent", "padding"].includes(prop),
13
- target: "e3f5lzv0",
14
- label: "StyledRow"
15
- })("display:grid;", ({
16
- theme,
17
- gap,
18
- alignItems = "normal",
19
- templateColumns,
20
- justifyContent = "normal",
21
- padding
22
- }) => `
23
-
24
- ${typeof templateColumns === "object" ? Object.entries(templateColumns).map(([breakpoint, value]) => `@media (min-width: ${theme.breakpoints[breakpoint]}) {
25
- grid-template-columns: ${value};
26
- }`).join(" ") : `${templateColumns ? `grid-template-columns: ${templateColumns};` : ""}`}
27
-
28
- ${gap && typeof gap === "object" ? Object.entries(gap).map(([breakpoint, value]) => `@media (min-width: ${theme.breakpoints[breakpoint]}) {
29
- gap: ${theme.space[value.toString()]};
30
- }`).join(" ") : `${gap ? `gap: ${theme.space[gap]};` : ""}`}
31
- ${alignItems && typeof alignItems === "object" ? Object.entries(alignItems).map(([breakpoint, value]) => `@media (min-width: ${theme.breakpoints[breakpoint]}) {
32
- align-items: ${value};
33
- }`).join(" ") : `${alignItems ? `align-items: ${alignItems};` : ""}`}
34
- ${justifyContent && typeof justifyContent === "object" ? Object.entries(justifyContent).map(([breakpoint, value]) => `@media (min-width: ${theme.breakpoints[breakpoint]}) {
35
- justify-content: ${value};
36
- }`).join(" ") : `${justifyContent ? `justify-content: ${justifyContent};` : ""}`}
37
- ${padding && typeof padding === "object" ? Object.entries(padding).map(([breakpoint, value]) => `@media (min-width: ${theme.breakpoints[breakpoint]}) {
38
- padding: ${value};
39
- }`).join(" ") : `${padding ? `padding: ${padding};` : ""}`}
40
- `, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1Jvdy9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JrQiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay91bHRyYXZpb2xldC91bHRyYXZpb2xldC9wYWNrYWdlcy91aS9zcmMvY29tcG9uZW50cy9Sb3cvaW5kZXgudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzLCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgVWx0cmF2aW9sZXRVSVRoZW1lIH0gZnJvbSAnLi4vLi4vdGhlbWUnXG5cbnR5cGUgU3R5bGVkUm93UHJvcHMgPSBQaWNrPFxuICBSb3dQcm9wcyxcbiAgJ2dhcCcgfCAndGVtcGxhdGVDb2x1bW5zJyB8ICdhbGlnbkl0ZW1zJyB8ICdqdXN0aWZ5Q29udGVudCcgfCAncGFkZGluZydcbj5cblxuZXhwb3J0IGNvbnN0IFN0eWxlZFJvdyA9IHN0eWxlZCgnZGl2Jywge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PlxuICAgICFbXG4gICAgICAndGVtcGxhdGVDb2x1bW5zJyxcbiAgICAgICdnYXAnLFxuICAgICAgJ2FsaWduSXRlbXMnLFxuICAgICAgJ2p1c3RpZnlDb250ZW50JyxcbiAgICAgICdwYWRkaW5nJyxcbiAgICBdLmluY2x1ZGVzKHByb3ApLFxufSk8U3R5bGVkUm93UHJvcHM+YFxuICBkaXNwbGF5OiBncmlkO1xuICAkeyh7XG4gICAgdGhlbWUsXG4gICAgZ2FwLFxuICAgIGFsaWduSXRlbXMgPSAnbm9ybWFsJyxcbiAgICB0ZW1wbGF0ZUNvbHVtbnMsXG4gICAganVzdGlmeUNvbnRlbnQgPSAnbm9ybWFsJyxcbiAgICBwYWRkaW5nLFxuICB9KSA9PiBgXG5cbiAgICAke1xuICAgICAgdHlwZW9mIHRlbXBsYXRlQ29sdW1ucyA9PT0gJ29iamVjdCdcbiAgICAgICAgPyBPYmplY3QuZW50cmllcyh0ZW1wbGF0ZUNvbHVtbnMpXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAoW2JyZWFrcG9pbnQsIHZhbHVlXSkgPT5cbiAgICAgICAgICAgICAgICBgQG1lZGlhIChtaW4td2lkdGg6ICR7dGhlbWUuYnJlYWtwb2ludHNbYnJlYWtwb2ludCBhcyBrZXlvZiBVbHRyYXZpb2xldFVJVGhlbWVbJ2JyZWFrcG9pbnRzJ11dfSkge1xuICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAke3ZhbHVlfTtcbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcgJylcbiAgICAgICAgOiBgJHt0ZW1wbGF0ZUNvbHVtbnMgPyBgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAke3RlbXBsYXRlQ29sdW1uc307YCA6ICcnfWBcbiAgICB9XG5cbiAgICAke1xuICAgICAgZ2FwICYmIHR5cGVvZiBnYXAgPT09ICdvYmplY3QnXG4gICAgICAgID8gT2JqZWN0LmVudHJpZXMoZ2FwKVxuICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgKFticmVha3BvaW50LCB2YWx1ZV0pID0+XG4gICAgICAgICAgICAgICAgYEBtZWRpYSAobWluLXdpZHRoOiAke3RoZW1lLmJyZWFrcG9pbnRzW2JyZWFrcG9pbnQgYXMga2V5b2YgVWx0cmF2aW9sZXRVSVRoZW1lWydicmVha3BvaW50cyddXX0pIHtcbiAgICAgICAgICAgICAgICBnYXA6ICR7dGhlbWUuc3BhY2VbdmFsdWUudG9TdHJpbmcoKSBhcyBrZXlvZiBVbHRyYXZpb2xldFVJVGhlbWVbJ3NwYWNlJ11dfTtcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgIDogYCR7Z2FwID8gYGdhcDogJHt0aGVtZS5zcGFjZVtnYXAgYXMga2V5b2YgVWx0cmF2aW9sZXRVSVRoZW1lWydzcGFjZSddXX07YCA6ICcnfWBcbiAgICB9XG4gICAgJHtcbiAgICAgIGFsaWduSXRlbXMgJiYgdHlwZW9mIGFsaWduSXRlbXMgPT09ICdvYmplY3QnXG4gICAgICAgID8gT2JqZWN0LmVudHJpZXMoYWxpZ25JdGVtcylcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgIChbYnJlYWtwb2ludCwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgICAgIGBAbWVkaWEgKG1pbi13aWR0aDogJHt0aGVtZS5icmVha3BvaW50c1ticmVha3BvaW50IGFzIGtleW9mIFVsdHJhdmlvbGV0VUlUaGVtZVsnYnJlYWtwb2ludHMnXV19KSB7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6ICR7dmFsdWV9O1xuICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcgJylcbiAgICAgICAgOiBgJHthbGlnbkl0ZW1zID8gYGFsaWduLWl0ZW1zOiAke2FsaWduSXRlbXN9O2AgOiAnJ31gXG4gICAgfVxuICAgICR7XG4gICAgICBqdXN0aWZ5Q29udGVudCAmJiB0eXBlb2YganVzdGlmeUNvbnRlbnQgPT09ICdvYmplY3QnXG4gICAgICAgID8gT2JqZWN0LmVudHJpZXMoanVzdGlmeUNvbnRlbnQpXG4gICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAoW2JyZWFrcG9pbnQsIHZhbHVlXSkgPT5cbiAgICAgICAgICAgICAgICBgQG1lZGlhIChtaW4td2lkdGg6ICR7dGhlbWUuYnJlYWtwb2ludHNbYnJlYWtwb2ludCBhcyBrZXlvZiBVbHRyYXZpb2xldFVJVGhlbWVbJ2JyZWFrcG9pbnRzJ11dfSkge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogJHt2YWx1ZX07XG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICA6IGAke2p1c3RpZnlDb250ZW50ID8gYGp1c3RpZnktY29udGVudDogJHtqdXN0aWZ5Q29udGVudH07YCA6ICcnfWBcbiAgICB9XG4gICAgJHtcbiAgICAgIHBhZGRpbmcgJiYgdHlwZW9mIHBhZGRpbmcgPT09ICdvYmplY3QnXG4gICAgICAgID8gT2JqZWN0LmVudHJpZXMocGFkZGluZylcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgIChbYnJlYWtwb2ludCwgdmFsdWVdKSA9PlxuICAgICAgICAgICAgICAgIGBAbWVkaWEgKG1pbi13aWR0aDogJHt0aGVtZS5icmVha3BvaW50c1ticmVha3BvaW50IGFzIGtleW9mIFVsdHJhdmlvbGV0VUlUaGVtZVsnYnJlYWtwb2ludHMnXV19KSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogJHt2YWx1ZX07XG4gICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICA6IGAke3BhZGRpbmcgPyBgcGFkZGluZzogJHtwYWRkaW5nfTtgIDogJyd9YFxuICAgIH1cbiAgYH1cbmBcblxudHlwZSBSb3dQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gICdkYXRhLXRlc3RpZCc/OiBzdHJpbmdcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICB0ZW1wbGF0ZUNvbHVtbnM6XG4gICAgfCBzdHJpbmdcbiAgICB8IFBhcnRpYWw8UmVjb3JkPGtleW9mIFVsdHJhdmlvbGV0VUlUaGVtZVsnYnJlYWtwb2ludHMnXSwgc3RyaW5nPj5cbiAgZ2FwPzpcbiAgICB8IGtleW9mIFVsdHJhdmlvbGV0VUlUaGVtZVsnc3BhY2UnXVxuICAgIHwgbnVtYmVyXG4gICAgfCBQYXJ0aWFsPFxuICAgICAgICBSZWNvcmQ8XG4gICAgICAgICAga2V5b2YgVWx0cmF2aW9sZXRVSVRoZW1lWydicmVha3BvaW50cyddLFxuICAgICAgICAgIGtleW9mIFVsdHJhdmlvbGV0VUlUaGVtZVsnc3BhY2UnXSB8IG51bWJlclxuICAgICAgICA+XG4gICAgICA+XG4gIGFsaWduSXRlbXM/OlxuICAgIHwgQ1NTUHJvcGVydGllc1snYWxpZ25JdGVtcyddXG4gICAgfCBQYXJ0aWFsPFxuICAgICAgICBSZWNvcmQ8XG4gICAgICAgICAga2V5b2YgVWx0cmF2aW9sZXRVSVRoZW1lWydicmVha3BvaW50cyddLFxuICAgICAgICAgIENTU1Byb3BlcnRpZXNbJ2FsaWduSXRlbXMnXVxuICAgICAgICA+XG4gICAgICA+XG4gIGp1c3RpZnlDb250ZW50PzpcbiAgICB8IENTU1Byb3BlcnRpZXNbJ2p1c3RpZnlDb250ZW50J11cbiAgICB8IFBhcnRpYWw8XG4gICAgICAgIFJlY29yZDxcbiAgICAgICAgICBrZXlvZiBVbHRyYXZpb2xldFVJVGhlbWVbJ2JyZWFrcG9pbnRzJ10sXG4gICAgICAgICAgQ1NTUHJvcGVydGllc1snanVzdGlmeUNvbnRlbnQnXVxuICAgICAgICA+XG4gICAgICA+XG4gIHBhZGRpbmc/OlxuICAgIHwgQ1NTUHJvcGVydGllc1sncGFkZGluZyddXG4gICAgfCBQYXJ0aWFsPFxuICAgICAgICBSZWNvcmQ8XG4gICAgICAgICAga2V5b2YgVWx0cmF2aW9sZXRVSVRoZW1lWydicmVha3BvaW50cyddLFxuICAgICAgICAgIENTU1Byb3BlcnRpZXNbJ3BhZGRpbmcnXVxuICAgICAgICA+XG4gICAgICA+XG59XG5cbi8qKlxuICogUm93IGNvbXBvbmVudCBpcyBhIHdyYXBwZXIgZm9yIGdyaWQgbGF5b3V0LlxuICovXG5leHBvcnQgY29uc3QgUm93ID0gKHtcbiAgY2xhc3NOYW1lLFxuICAnZGF0YS10ZXN0aWQnOiBkYXRhVGVzdElkLFxuICBjaGlsZHJlbixcbiAgdGVtcGxhdGVDb2x1bW5zLFxuICBhbGlnbkl0ZW1zLFxuICBqdXN0aWZ5Q29udGVudCxcbiAgZ2FwLFxuICBwYWRkaW5nLFxufTogUm93UHJvcHMpID0+IChcbiAgPFN0eWxlZFJvd1xuICAgIGFsaWduSXRlbXM9e2FsaWduSXRlbXN9XG4gICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgZ2FwPXtnYXB9XG4gICAganVzdGlmeUNvbnRlbnQ9e2p1c3RpZnlDb250ZW50fVxuICAgIHBhZGRpbmc9e3BhZGRpbmd9XG4gICAgdGVtcGxhdGVDb2x1bW5zPXt0ZW1wbGF0ZUNvbHVtbnN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gIDwvU3R5bGVkUm93PlxuKVxuIl19 */"));
5
+ const themes = require("@ultraviolet/themes");
6
+ const dynamic = require("@vanilla-extract/dynamic");
7
+ const styles_css = require("./styles.css.cjs");
8
+ const variables_css = require("./variables.css.cjs");
9
+ const mapRepsonsiveGap = (object) => object ? Object.keys(object).reduce((acc, key) => ({
10
+ ...acc,
11
+ [key]: themes.consoleLightTheme.space[object[key]]
12
+ }), {}) : {};
41
13
  const Row = ({
42
14
  className,
43
15
  "data-testid": dataTestId,
@@ -47,6 +19,24 @@ const Row = ({
47
19
  justifyContent,
48
20
  gap,
49
21
  padding
50
- }) => /* @__PURE__ */ jsxRuntime.jsx(StyledRow, { alignItems, className, "data-testid": dataTestId, gap, justifyContent, padding, templateColumns, children });
22
+ }) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${className ? `${className} ` : ""}${styles_css.row} ${styles_css.sprinkles({
23
+ alignItems: typeof alignItems === "object" ? alignItems : {
24
+ xxsmall: alignItems
25
+ },
26
+ gap: typeof gap === "object" ? mapRepsonsiveGap(gap) : {
27
+ xxsmall: gap ? themes.consoleLightTheme.space[gap] : void 0
28
+ },
29
+ justifyContent: typeof justifyContent === "object" ? justifyContent : {
30
+ xxsmall: justifyContent
31
+ }
32
+ })}`, "data-testid": dataTestId, style: dynamic.assignInlineVars({
33
+ ...Object.keys(variables_css.templateColumn).reduce((acc, column) => ({
34
+ ...acc,
35
+ [variables_css.templateColumn[column]]: typeof templateColumns === "object" ? templateColumns[column] || "" : templateColumns
36
+ }), {}),
37
+ ...Object.keys(variables_css.paddings).reduce((acc, localPadding) => ({
38
+ ...acc,
39
+ [variables_css.paddings[localPadding]]: typeof padding === "object" ? padding[localPadding] || "" : padding
40
+ }), {})
41
+ }), children });
51
42
  exports.Row = Row;
52
- exports.StyledRow = StyledRow;