@onepercentio/one-ui 0.21.3 → 0.21.5

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 (172) hide show
  1. package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.d.ts +15 -0
  2. package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.js +37 -0
  3. package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.js.map +1 -0
  4. package/ai/hooks/ui/useAlternating.ai.d.ts +9 -0
  5. package/ai/hooks/ui/useAlternating.ai.js +17 -0
  6. package/ai/hooks/ui/useAlternating.ai.js.map +1 -0
  7. package/ai/hooks/useHero.ai.d.ts +9 -0
  8. package/ai/hooks/useHero.ai.js +21 -0
  9. package/ai/hooks/useHero.ai.js.map +1 -0
  10. package/ai/types.d.ts +9 -0
  11. package/ai/types.js +3 -0
  12. package/ai/types.js.map +1 -0
  13. package/dist/assets/styles/variables.scss +0 -5
  14. package/dist/components/AdaptiveButton/AdaptiveButton.d.ts +2 -2
  15. package/dist/components/AdaptiveContainer/AdaptiveContainer.d.ts +2 -2
  16. package/dist/components/AdaptiveDialog/AdaptiveDialog.d.ts +4 -3
  17. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +6 -3
  18. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.d.ts +3 -0
  19. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +7 -6
  20. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.d.ts +2 -0
  21. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +13 -0
  22. package/dist/components/AnchoredTooltip/AnchoredTooltip.d.ts +3 -0
  23. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +5 -5
  24. package/dist/components/AnimatedEntrance/AnimatedEntrance.d.ts +3 -3
  25. package/dist/components/AsyncWrapper/AsyncWrapper.d.ts +2 -2
  26. package/dist/components/Avatar/Avatar.d.ts +2 -1
  27. package/dist/components/BucketFill/BucketFill.d.ts +3 -3
  28. package/dist/components/Button/Button.d.ts +2 -2
  29. package/dist/components/Button/Button.js +5 -4
  30. package/dist/components/Button/Button.module.scss +5 -2
  31. package/dist/components/Card/Card.d.ts +2 -2
  32. package/dist/components/Chart/Chart.logic.d.ts +3 -1
  33. package/dist/components/Chart/Chart.logic.js +2 -1
  34. package/dist/components/Chart/Chart.view.d.ts +2 -1
  35. package/dist/components/CheckBox/CheckBox.d.ts +1 -1
  36. package/dist/components/CodeInput/CodeInput.d.ts +9 -0
  37. package/dist/components/CodeInput/CodeInput.js +85 -0
  38. package/dist/components/CodeInput/CodeInput.module.scss +5 -0
  39. package/dist/components/CodeInput/index.d.ts +1 -0
  40. package/dist/components/CodeInput/index.js +14 -0
  41. package/dist/components/Collapsable/Collapsable.d.ts +5 -2
  42. package/dist/components/Collapsable/Collapsable.js +22 -7
  43. package/dist/components/Countdown/Countdown.d.ts +2 -1
  44. package/dist/components/Divider/Divider.d.ts +2 -1
  45. package/dist/components/EmailInput/EmailInput.d.ts +3 -0
  46. package/dist/components/EmailInput/EmailInput.js +5 -5
  47. package/dist/components/FadeIn/FadeIn.d.ts +3 -0
  48. package/dist/components/FadeIn/FadeIn.js +5 -4
  49. package/dist/components/FileInput/FileInput.d.ts +1 -1
  50. package/dist/components/FileInput/View/BigFactory/BigFactory.d.ts +2 -2
  51. package/dist/components/FileInput/View/Compact/Compact.d.ts +2 -1
  52. package/dist/components/FlowController/FlowController.d.ts +2 -2
  53. package/dist/components/Form/v2/Form.d.ts +18 -0
  54. package/dist/components/Form/v2/Form.hook.d.ts +21 -0
  55. package/dist/components/Form/v2/Form.hook.js +214 -0
  56. package/dist/components/Form/v2/Form.js +69 -0
  57. package/dist/components/Form/v2/Form.module.scss +0 -0
  58. package/dist/components/Form/v2/Form.types.d.ts +97 -0
  59. package/dist/components/Form/v2/Form.types.js +45 -0
  60. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.d.ts +12 -0
  61. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.js +74 -0
  62. package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.module.scss +0 -0
  63. package/dist/components/Form/v2/FormField/Extensions/DateField/index.d.ts +1 -0
  64. package/dist/components/Form/v2/FormField/Extensions/DateField/index.js +14 -0
  65. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.d.ts +10 -0
  66. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.js +92 -0
  67. package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.module.scss +0 -0
  68. package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.d.ts +1 -0
  69. package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.js +14 -0
  70. package/dist/components/Form/v2/FormField/FormField.d.ts +6 -0
  71. package/dist/components/Form/v2/FormField/FormField.js +309 -0
  72. package/dist/components/Form/v2/FormField/FormField.module.scss +0 -0
  73. package/dist/components/Form/v2/FormField/FormField.types.d.ts +83 -0
  74. package/dist/components/Form/v2/FormField/FormField.types.js +13 -0
  75. package/dist/components/Form/v2/FormField/index.d.ts +1 -0
  76. package/dist/components/Form/v2/FormField/index.js +14 -0
  77. package/dist/components/Form/v2/index.d.ts +1 -0
  78. package/dist/components/Form/v2/index.js +14 -0
  79. package/dist/components/HSForms/HSForms.d.ts +2 -1
  80. package/dist/components/Header/Header.d.ts +2 -2
  81. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.d.ts +2 -1
  82. package/dist/components/InfinityScroll/InfinityScroll.d.ts +3 -0
  83. package/dist/components/InfinityScroll/InfinityScroll.js +5 -5
  84. package/dist/components/Input/Input.d.ts +3 -0
  85. package/dist/components/Input/Input.js +4 -4
  86. package/dist/components/InstantCounter/InstantCounter.d.ts +3 -0
  87. package/dist/components/InstantCounter/InstantCounter.js +5 -4
  88. package/dist/components/LavaLamp/LavaLamp.d.ts +2 -2
  89. package/dist/components/LavaLamp/LavaLamp.js +1 -1
  90. package/dist/components/LavaLamp/v2/LavaLamp.d.ts +2 -2
  91. package/dist/components/LinkToId/LinkToId.d.ts +2 -2
  92. package/dist/components/Loader/Loader.d.ts +1 -1
  93. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.d.ts +5 -2
  94. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +9 -3
  95. package/dist/components/LoopableVideo/LoopableVideo.d.ts +2 -2
  96. package/dist/components/MainGrid/MainGrid.d.ts +3 -0
  97. package/dist/components/MainGrid/MainGrid.js +5 -4
  98. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.d.ts +1 -1
  99. package/dist/components/NodesNavigator/NodesNavigator.d.ts +17 -0
  100. package/dist/components/NodesNavigator/NodesNavigator.js +108 -0
  101. package/dist/components/NodesNavigator/NodesNavigator.module.scss +19 -0
  102. package/dist/components/NodesNavigator/index.d.ts +1 -0
  103. package/dist/components/NodesNavigator/index.js +14 -0
  104. package/dist/components/Notification/Notification.d.ts +2 -2
  105. package/dist/components/OrderableList/OrderableList.d.ts +1 -1
  106. package/dist/components/PaginationIndicator/PaginationIndicator.d.ts +9 -6
  107. package/dist/components/PaginationIndicator/PaginationIndicator.js +49 -11
  108. package/dist/components/Parallax/Parallax.d.ts +3 -0
  109. package/dist/components/Parallax/Parallax.js +5 -4
  110. package/dist/components/PasswordInput/PasswordInput.d.ts +3 -0
  111. package/dist/components/PasswordInput/PasswordInput.js +5 -5
  112. package/dist/components/PingPongText/PingPongText.d.ts +2 -2
  113. package/dist/components/PixelatedScan/PixelatedScan.d.ts +2 -1
  114. package/dist/components/Portal/Portal.d.ts +1 -1
  115. package/dist/components/ProgressBar/ProgressBar.d.ts +3 -3
  116. package/dist/components/ProgressTexts/ProgressTexts.d.ts +1 -1
  117. package/dist/components/Radio/Radio.d.ts +1 -1
  118. package/dist/components/SectionContainer/SectionContainer.d.ts +3 -0
  119. package/dist/components/SectionContainer/SectionContainer.js +5 -4
  120. package/dist/components/Select/Select.d.ts +3 -3
  121. package/dist/components/Select/Select.js +1 -1
  122. package/dist/components/Skeleton/Skeleton.d.ts +2 -1
  123. package/dist/components/Spacing/Spacing.d.ts +2 -1
  124. package/dist/components/StaticScroller/StaticScroller.d.ts +3 -0
  125. package/dist/components/StaticScroller/StaticScroller.js +5 -4
  126. package/dist/components/Switch/Switch.d.ts +2 -2
  127. package/dist/components/Table/Table.d.ts +2 -1
  128. package/dist/components/Tabs/Tabs.d.ts +2 -2
  129. package/dist/components/Text/Text.d.ts +7 -5
  130. package/dist/components/Text/Text.js +5 -4
  131. package/dist/components/Text/Text.module.scss +4 -0
  132. package/dist/components/Transition/Transition.d.ts +8 -5
  133. package/dist/components/Transition/Transition.js +18 -16
  134. package/dist/components/Transition/Transition.module.scss +1 -1
  135. package/dist/components/UncontrolledTransition/UncontrolledTransition.d.ts +3 -0
  136. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +25 -13
  137. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.d.ts +2 -0
  138. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +44 -0
  139. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.d.ts +6 -3
  140. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +14 -7
  141. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.d.ts +2 -2
  142. package/dist/context/AsyncProcess.d.ts +2 -1
  143. package/dist/context/ContextAsyncControl.d.ts +24 -0
  144. package/dist/context/ContextAsyncControl.js +101 -0
  145. package/dist/context/CustomBrowserRouter.d.ts +2 -2
  146. package/dist/context/OneUIProvider.d.ts +29 -1
  147. package/dist/context/OneUIProvider.js +1 -1
  148. package/dist/hooks/persistence/useLocalStorage.d.ts +1 -1
  149. package/dist/hooks/persistence/useLocalStorage.js +5 -1
  150. package/dist/hooks/ui/useAlternating.d.ts +4 -0
  151. package/dist/hooks/ui/useAlternating.js +34 -0
  152. package/dist/hooks/ui/usePaginationControls.d.ts +2 -2
  153. package/dist/hooks/useAsyncControl.d.ts +15 -3
  154. package/dist/hooks/useAsyncControl.js +24 -20
  155. package/dist/hooks/useHero.d.ts +4 -2
  156. package/dist/hooks/useHero.js +39 -15
  157. package/dist/hooks/useHero.module.scss +1 -1
  158. package/dist/hooks/useShortIntl.d.ts +1 -1
  159. package/dist/hooks/useShortIntl.js +1 -1
  160. package/dist/models/GenericContract.d.ts +3 -3
  161. package/dist/models/GenericContract.js +5 -3
  162. package/dist/storybookUtils/index.d.ts +2 -2
  163. package/dist/type-utils.d.ts +5 -0
  164. package/dist/type-utils.js +1 -1
  165. package/dist/utility.d.js +1 -1
  166. package/package.json +19 -4
  167. package/src_ai/components/UncontrolledTransition/UncontrolledTransition.ai.ts +35 -0
  168. package/src_ai/hooks/ui/useAlternating.ai.ts +15 -0
  169. package/src_ai/hooks/useHero.ai.ts +18 -0
  170. package/src_ai/types.ts +10 -0
  171. package/tsconfig-ai.json +9 -0
  172. package/tsconfig.vite.json +109 -0
@@ -1,4 +1,4 @@
1
- import { DetailedHTMLProps, HTMLAttributes } from "react";
1
+ import React, { DetailedHTMLProps, HTMLAttributes } from "react";
2
2
  /**
3
3
  * Switchs between states
4
4
  **/
@@ -7,4 +7,4 @@ export default function Switch({ enabled, onToggle, size, disabled, ...props }:
7
7
  onToggle: (newState: boolean) => void;
8
8
  size: number;
9
9
  disabled?: boolean;
10
- } & Omit<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">): JSX.Element;
10
+ } & Omit<DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">): React.JSX.Element;
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  export declare type TableProps<I extends any> = {
2
3
  className?: string;
3
4
  heading: {
@@ -16,4 +17,4 @@ export declare type TableProps<I extends any> = {
16
17
  /**
17
18
  * A simple table layout
18
19
  **/
19
- export default function Table<I extends any>({ paginable, heading, order, items, className, }: TableProps<I>): JSX.Element;
20
+ export default function Table<I extends any>({ paginable, heading, order, items, className, }: TableProps<I>): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- import { ReactElement } from "react";
1
+ import React, { ReactElement } from "react";
2
2
  export declare enum TabType {
3
3
  FULL = 0,
4
4
  UNDERLINE = 1
@@ -16,4 +16,4 @@ export default function Tabs<O extends string | number>({ options, selected, onS
16
16
  itemClassName?: string;
17
17
  className?: string;
18
18
  type?: TabType;
19
- }): JSX.Element;
19
+ }): React.JSX.Element;
@@ -1,15 +1,17 @@
1
1
  import React, { ForwardedRef } from "react";
2
- /**
3
- * A component to hold all text variantions
4
- **/
5
2
  export declare function _Text({ type, children, className, ...otherProps }: React.PropsWithChildren<{
6
3
  className?: string;
7
4
  type: OnepercentUtility.UIElements.TextVariants;
8
- } & React.HTMLAttributes<HTMLParagraphElement>>, _ref?: ForwardedRef<HTMLParagraphElement>): JSX.Element;
5
+ color?: OnepercentUtility.UIElements.TextColors;
6
+ } & Omit<React.HTMLAttributes<HTMLParagraphElement>, "color">>, _ref?: ForwardedRef<HTMLParagraphElement>): React.JSX.Element;
7
+ /**
8
+ * A component to hold all text variantions
9
+ **/
9
10
  declare const Text: React.ForwardRefExoticComponent<{
10
11
  className?: string | undefined;
11
12
  type: OnepercentUtility.UIElements.TextVariants;
12
- } & React.HTMLAttributes<HTMLParagraphElement> & {
13
+ color?: OnepercentUtility.UIElements.TextColors;
14
+ } & Omit<React.HTMLAttributes<HTMLParagraphElement>, "color"> & {
13
15
  children?: React.ReactNode;
14
16
  } & React.RefAttributes<HTMLParagraphElement>>;
15
17
  export default Text;
@@ -16,9 +16,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
16
16
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
17
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
18
18
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
19
- /**
20
- * A component to hold all text variantions
21
- **/
22
19
  function _Text(_ref2, _ref) {
23
20
  let type = _ref2.type,
24
21
  children = _ref2.children,
@@ -33,7 +30,11 @@ function _Text(_ref2, _ref) {
33
30
  className: "".concat(_TextModule.default.text, " ").concat(classNameType[type] || _TextModule.default[type], " ").concat(className, " ").concat(otherProps.onClick ? _TextModule.default.iteractible : "")
34
31
  }, otherProps), children);
35
32
  }
33
+
34
+ /**
35
+ * A component to hold all text variantions
36
+ **/
36
37
  const Text = /*#__PURE__*/(0, _react.forwardRef)(_Text);
37
38
  var _default = Text;
38
39
  exports.default = _default;
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfT25lVUlQcm92aWRlciIsIl9UZXh0TW9kdWxlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9leGNsdWRlZCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwiX3R5cGVvZiIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwia2V5cyIsIl9UZXh0IiwiX3JlZjIiLCJfcmVmIiwidHlwZSIsImNoaWxkcmVuIiwiX3JlZjIkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwib3RoZXJQcm9wcyIsImNsYXNzTmFtZVR5cGUiLCJ1c2VPbmVVSUNvbmZpZyIsInRhZ0J5VHlwZSIsIlRhZ1R5cGUiLCJjcmVhdGVFbGVtZW50IiwicmVmIiwiY29uY2F0IiwiU3R5bGVzIiwidGV4dCIsIm9uQ2xpY2siLCJpdGVyYWN0aWJsZSIsIlRleHQiLCJmb3J3YXJkUmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVGV4dC9UZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50UHJvcHMsIEZvcndhcmRlZFJlZiwgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlT25lVUlDb25maWcgfSBmcm9tIFwiLi4vLi4vY29udGV4dC9PbmVVSVByb3ZpZGVyXCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL1RleHQubW9kdWxlLnNjc3NcIjtcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0byBob2xkIGFsbCB0ZXh0IHZhcmlhbnRpb25zXG4gKiovXG5leHBvcnQgZnVuY3Rpb24gX1RleHQoXG4gIHtcbiAgICB0eXBlLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSA9IFwiXCIsXG4gICAgLi4ub3RoZXJQcm9wc1xuICB9OiBSZWFjdC5Qcm9wc1dpdGhDaGlsZHJlbjxcbiAgICB7XG4gICAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgICB0eXBlOiBPbmVwZXJjZW50VXRpbGl0eS5VSUVsZW1lbnRzLlRleHRWYXJpYW50cztcbiAgICB9ICYgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFBhcmFncmFwaEVsZW1lbnQ+XG4gID4sXG4gIF9yZWY/OiBGb3J3YXJkZWRSZWY8SFRNTFBhcmFncmFwaEVsZW1lbnQ+XG4pIHtcbiAgY29uc3QgY2xhc3NOYW1lVHlwZSA9IHVzZU9uZVVJQ29uZmlnKFwiY29tcG9uZW50LnRleHQuY2xhc3NOYW1lXCIsIHt9KTtcbiAgY29uc3QgdGFnQnlUeXBlID0gdXNlT25lVUlDb25maWcoXCJjb21wb25lbnQudGV4dC5odG1sVGFnXCIsIHt9KTtcblxuICBjb25zdCBUYWdUeXBlID0gdGFnQnlUeXBlW3R5cGVdIHx8IFwicFwiO1xuXG4gIHJldHVybiAoXG4gICAgPFRhZ1R5cGVcbiAgICAgIHJlZj17X3JlZn1cbiAgICAgIGNsYXNzTmFtZT17YCR7U3R5bGVzLnRleHR9ICR7XG4gICAgICAgIGNsYXNzTmFtZVR5cGVbdHlwZV0gfHwgU3R5bGVzW3R5cGVdXG4gICAgICB9ICR7Y2xhc3NOYW1lfSAke290aGVyUHJvcHMub25DbGljayA/IFN0eWxlcy5pdGVyYWN0aWJsZSA6IFwiXCJ9YH1cbiAgICAgIHsuLi5vdGhlclByb3BzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1RhZ1R5cGU+XG4gICk7XG59XG5cbmNvbnN0IFRleHQgPSBmb3J3YXJkUmVmKF9UZXh0KTtcbmV4cG9ydCBkZWZhdWx0IFRleHQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQXdDLE1BQUFJLFNBQUE7QUFBQSxTQUFBRCx1QkFBQUUsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUFBLFNBQUFHLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBVix3QkFBQU0sR0FBQSxFQUFBSSxXQUFBLFNBQUFBLFdBQUEsSUFBQUosR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLGFBQUFRLE9BQUEsQ0FBQVIsR0FBQSx5QkFBQUEsR0FBQSw0QkFBQUUsT0FBQSxFQUFBRixHQUFBLFVBQUFTLEtBQUEsR0FBQU4sd0JBQUEsQ0FBQUMsV0FBQSxPQUFBSyxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxD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
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfT25lVUlQcm92aWRlciIsIl9UZXh0TW9kdWxlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9leGNsdWRlZCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwiX3R5cGVvZiIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwia2V5cyIsIl9UZXh0IiwiX3JlZjIiLCJfcmVmIiwidHlwZSIsImNoaWxkcmVuIiwiX3JlZjIkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwib3RoZXJQcm9wcyIsImNsYXNzTmFtZVR5cGUiLCJ1c2VPbmVVSUNvbmZpZyIsInRhZ0J5VHlwZSIsIlRhZ1R5cGUiLCJjcmVhdGVFbGVtZW50IiwicmVmIiwiY29uY2F0IiwiU3R5bGVzIiwidGV4dCIsIm9uQ2xpY2siLCJpdGVyYWN0aWJsZSIsIlRleHQiLCJmb3J3YXJkUmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVGV4dC9UZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50UHJvcHMsIEZvcndhcmRlZFJlZiwgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlT25lVUlDb25maWcgfSBmcm9tIFwiLi4vLi4vY29udGV4dC9PbmVVSVByb3ZpZGVyXCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL1RleHQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIF9UZXh0KFxuICB7XG4gICAgdHlwZSxcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUgPSBcIlwiLFxuICAgIC4uLm90aGVyUHJvcHNcbiAgfTogUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48XG4gICAge1xuICAgICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgICAgdHlwZTogT25lcGVyY2VudFV0aWxpdHkuVUlFbGVtZW50cy5UZXh0VmFyaWFudHM7XG4gICAgICBjb2xvcj86IE9uZXBlcmNlbnRVdGlsaXR5LlVJRWxlbWVudHMuVGV4dENvbG9ycztcbiAgICB9ICYgT21pdDxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MUGFyYWdyYXBoRWxlbWVudD4sIFwiY29sb3JcIj5cbiAgPixcbiAgX3JlZj86IEZvcndhcmRlZFJlZjxIVE1MUGFyYWdyYXBoRWxlbWVudD5cbikge1xuICBjb25zdCBjbGFzc05hbWVUeXBlID0gdXNlT25lVUlDb25maWcoXCJjb21wb25lbnQudGV4dC5jbGFzc05hbWVcIiwge30pO1xuICBjb25zdCB0YWdCeVR5cGUgPSB1c2VPbmVVSUNvbmZpZyhcImNvbXBvbmVudC50ZXh0Lmh0bWxUYWdcIiwge30pO1xuXG4gIGNvbnN0IFRhZ1R5cGUgPSB0YWdCeVR5cGVbdHlwZV0gfHwgXCJwXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFnVHlwZVxuICAgICAgcmVmPXtfcmVmfVxuICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMudGV4dH0gJHtcbiAgICAgICAgY2xhc3NOYW1lVHlwZVt0eXBlXSB8fCBTdHlsZXNbdHlwZV1cbiAgICAgIH0gJHtjbGFzc05hbWV9ICR7b3RoZXJQcm9wcy5vbkNsaWNrID8gU3R5bGVzLml0ZXJhY3RpYmxlIDogXCJcIn1gfVxuICAgICAgey4uLm90aGVyUHJvcHN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvVGFnVHlwZT5cbiAgKTtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0byBob2xkIGFsbCB0ZXh0IHZhcmlhbnRpb25zXG4gKiovXG5jb25zdCBUZXh0ID0gZm9yd2FyZFJlZihfVGV4dCk7XG5leHBvcnQgZGVmYXVsdCBUZXh0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUF3QyxNQUFBSSxTQUFBO0FBQUEsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQVYsd0JBQUFNLEdBQUEsRUFBQUksV0FBQSxTQUFBQSxXQUFBLElBQUFKLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxhQUFBUSxPQUFBLENBQUFSLEdBQUEseUJBQUFBLEdBQUEsNEJBQUFFLE9BQUEsRUFBQUYs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
@@ -75,3 +75,7 @@
75
75
  line-height: 20px;
76
76
  color: $sunsetPink;
77
77
  }
78
+
79
+ .text[color="primary"] {
80
+ color: var(--digital-blue);
81
+ }
@@ -20,7 +20,7 @@ export declare type TransitionProps = {
20
20
  contentStyle?: React.CSSProperties;
21
21
  contentClassName?: string;
22
22
  children: (React.ReactElement | undefined)[];
23
- onDiscardStep?: (discardedKey: React.Key) => void;
23
+ onDiscardStep?: (discardedKey: React.Key, startedAnimationAt: number) => void;
24
24
  lockTransitionWidth?: boolean;
25
25
  lockTransitionHeight?: boolean;
26
26
  } & TransitionTypeDefinitions & Omit<DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, any>, "className" | "children">;
@@ -49,13 +49,16 @@ export declare enum TransitionAnimationTypes {
49
49
  MASK = 5,
50
50
  CUSTOM = 6
51
51
  }
52
+ /**
53
+ * Handles the transition between multiple children and recycling of elements
54
+ **/
52
55
  declare const Transition: React.ForwardRefExoticComponent<(Omit<{
53
56
  step: number;
54
57
  className?: string | undefined;
55
58
  contentStyle?: React.CSSProperties | undefined;
56
59
  contentClassName?: string | undefined;
57
60
  children: (React.ReactElement | undefined)[];
58
- onDiscardStep?: ((discardedKey: React.Key) => void) | undefined;
61
+ onDiscardStep?: ((discardedKey: React.Key, startedAnimationAt: number) => void) | undefined;
59
62
  lockTransitionWidth?: boolean | undefined;
60
63
  lockTransitionHeight?: boolean | undefined;
61
64
  } & {
@@ -66,7 +69,7 @@ declare const Transition: React.ForwardRefExoticComponent<(Omit<{
66
69
  contentStyle?: React.CSSProperties | undefined;
67
70
  contentClassName?: string | undefined;
68
71
  children: (React.ReactElement | undefined)[];
69
- onDiscardStep?: ((discardedKey: React.Key) => void) | undefined;
72
+ onDiscardStep?: ((discardedKey: React.Key, startedAnimationAt: number) => void) | undefined;
70
73
  lockTransitionWidth?: boolean | undefined;
71
74
  lockTransitionHeight?: boolean | undefined;
72
75
  } & {
@@ -78,7 +81,7 @@ declare const Transition: React.ForwardRefExoticComponent<(Omit<{
78
81
  contentStyle?: React.CSSProperties | undefined;
79
82
  contentClassName?: string | undefined;
80
83
  children: (React.ReactElement | undefined)[];
81
- onDiscardStep?: ((discardedKey: React.Key) => void) | undefined;
84
+ onDiscardStep?: ((discardedKey: React.Key, startedAnimationAt: number) => void) | undefined;
82
85
  lockTransitionWidth?: boolean | undefined;
83
86
  lockTransitionHeight?: boolean | undefined;
84
87
  } & {
@@ -93,7 +96,7 @@ declare const Transition: React.ForwardRefExoticComponent<(Omit<{
93
96
  contentStyle?: React.CSSProperties | undefined;
94
97
  contentClassName?: string | undefined;
95
98
  children: (React.ReactElement | undefined)[];
96
- onDiscardStep?: ((discardedKey: React.Key) => void) | undefined;
99
+ onDiscardStep?: ((discardedKey: React.Key, startedAnimationAt: number) => void) | undefined;
97
100
  lockTransitionWidth?: boolean | undefined;
98
101
  lockTransitionHeight?: boolean | undefined;
99
102
  } & {
@@ -90,16 +90,14 @@ function TransitionClasses(type) {
90
90
  };
91
91
  }
92
92
  }
93
- function ChildrenWrapperFactory(func, key, externalPropsContainer, toRemoveKeys) {
93
+ function ChildrenWrapperFactory(func, key, externalPropsContainer, /** This is used to prevent newer "duplicated" keys from being removed after the new element finished animation */
94
+ timestamp, toRemoveKeys) {
95
+ func.createdAt = timestamp;
94
96
  func.associatedKey = key;
95
97
  func.toRemoveKeys = toRemoveKeys;
96
98
  func.externalProps = externalPropsContainer;
97
99
  return func;
98
100
  }
99
-
100
- /**
101
- * Handles the transition between multiple children and recycling of elements
102
- **/
103
101
  function _Transition(_ref, _containerRef) {
104
102
  let step = _ref.step,
105
103
  contentStyle = _ref.contentStyle,
@@ -129,7 +127,7 @@ function _Transition(_ref, _containerRef) {
129
127
  const func = ChildrenWrapperFactory(function (_ref2) {
130
128
  let children = _ref2.children;
131
129
  return /*#__PURE__*/_react.default.createElement("div", externalProps, children);
132
- }, children[step].key || step, externalProps, []);
130
+ }, children[step].key || step, externalProps, Date.now(), []);
133
131
  return [func];
134
132
  }),
135
133
  _useState2 = _slicedToArray(_useState, 2),
@@ -156,6 +154,7 @@ function _Transition(_ref, _containerRef) {
156
154
  if (prevStep.current !== step && lockTransitionWidth) containerRef.current.style.width = "".concat(containerRef.current.clientWidth, "px");
157
155
  if (prevStep.current !== step && lockTransitionHeight) containerRef.current.style.height = "".concat(containerRef.current.clientHeight, "px");
158
156
  const transitionMask = props.transitionType === TransitionAnimationTypes.MASK ? props.maskFactory(containerRef.current) : "";
157
+ const insertedAt = Date.now();
159
158
 
160
159
  /** This runs on backwards */
161
160
  if (prevStep.current > step) {
@@ -185,14 +184,14 @@ function _Transition(_ref, _containerRef) {
185
184
  (_enteringScreenRef$cu2 = enteringScreenRef.current) === null || _enteringScreenRef$cu2 === void 0 ? void 0 : _enteringScreenRef$cu2.classList.remove(transitionClasses.backward.elementEntering);
186
185
  setChildrenWrappers(function (screensAfterTheCurrentStepEntered) {
187
186
  if (onDiscardStep) {
188
- if (isAnimationFromExpectedState) onDiscardStep(prevKeyToRemove);
187
+ if (isAnimationFromExpectedState) onDiscardStep(prevKeyToRemove, insertedAt);
189
188
  if (FirstNextScreen && FirstNextScreen.toRemoveKeys) FirstNextScreen.toRemoveKeys.forEach(onDiscardStep);
190
189
  }
191
190
  return screensAfterTheCurrentStepEntered.filter(function (s) {
192
191
  var _FirstNextScreen$toRe;
193
192
  const shouldKeep = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove) && !(FirstNextScreen !== null && FirstNextScreen !== void 0 && (_FirstNextScreen$toRe = FirstNextScreen.toRemoveKeys) !== null && _FirstNextScreen$toRe !== void 0 && _FirstNextScreen$toRe.some(function (k) {
194
193
  return String(k) === String(s === null || s === void 0 ? void 0 : s.associatedKey);
195
- }));
194
+ })) || s.createdAt > insertedAt;
196
195
  return shouldKeep;
197
196
  });
198
197
  });
@@ -208,10 +207,10 @@ function _Transition(_ref, _containerRef) {
208
207
  const newWrapper = ChildrenWrapperFactory(function (_ref3) {
209
208
  let children = _ref3.children;
210
209
  return /*#__PURE__*/_react.default.createElement("div", propsContainer, children);
211
- }, key, propsContainer, [prevKeyToRemove].concat(_toConsumableArray((FirstNextScreen === null || FirstNextScreen === void 0 ? void 0 : FirstNextScreen.toRemoveKeys) || [])));
210
+ }, key, propsContainer, insertedAt, [prevKeyToRemove].concat(_toConsumableArray((FirstNextScreen === null || FirstNextScreen === void 0 ? void 0 : FirstNextScreen.toRemoveKeys) || [])));
212
211
  if (FirstNextScreen) return [newWrapper, FirstNextScreen || ChildrenWrapperFactory(function () {
213
212
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
214
- }, "", {})].concat(_toConsumableArray(restOfScreens));else return [newWrapper];
213
+ }, "", {}, insertedAt)].concat(_toConsumableArray(restOfScreens));else return [newWrapper];
215
214
  });
216
215
  } else if (prevStep.current < step) {
217
216
  var _prevChild$current3;
@@ -231,10 +230,10 @@ function _Transition(_ref, _containerRef) {
231
230
  var _nextScreenRef$curren;
232
231
  if (e.target !== e.currentTarget) return;
233
232
  if (transitionClasses.forward.elementEntering) (_nextScreenRef$curren = nextScreenRef.current) === null || _nextScreenRef$curren === void 0 ? void 0 : _nextScreenRef$curren.classList.remove(transitionClasses.forward.elementEntering);
234
- if (onDiscardStep) onDiscardStep(prevKeyToRemove);
233
+ if (onDiscardStep) onDiscardStep(prevKeyToRemove, insertedAt);
235
234
  setChildrenWrappers(function (screensAfterTheCurrentStepEntered) {
236
235
  const nextState = screensAfterTheCurrentStepEntered.filter(function (s) {
237
- const shouldMantain = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove);
236
+ const shouldMantain = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove) || s.createdAt > insertedAt;
238
237
  return shouldMantain;
239
238
  });
240
239
  return nextState;
@@ -251,10 +250,10 @@ function _Transition(_ref, _containerRef) {
251
250
  const newWrapper = ChildrenWrapperFactory(function (_ref4) {
252
251
  let children = _ref4.children;
253
252
  return /*#__PURE__*/_react.default.createElement("div", propsContainer, children);
254
- }, key, propsContainer);
253
+ }, key, propsContainer, insertedAt);
255
254
  return [].concat(_toConsumableArray(screensBeforeChangingStep.slice(0, lastIndex)), [lastWrapper || ChildrenWrapperFactory(function () {
256
255
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
257
- }, "fallback", {}), newWrapper]);
256
+ }, "fallback", {}, insertedAt), newWrapper]);
258
257
  });
259
258
  }
260
259
  return function () {
@@ -314,7 +313,7 @@ function _Transition(_ref, _containerRef) {
314
313
  return ((a === null || a === void 0 ? void 0 : a.key) || i) === (Wrapper === null || Wrapper === void 0 ? void 0 : Wrapper.associatedKey);
315
314
  });
316
315
  return /*#__PURE__*/_react.default.createElement(Wrapper, {
317
- key: Wrapper === null || Wrapper === void 0 ? void 0 : Wrapper.associatedKey
316
+ key: "".concat(Wrapper.associatedKey, " ").concat(Wrapper.createdAt)
318
317
  }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childToRender));
319
318
  })));
320
319
  }
@@ -328,8 +327,11 @@ let TransitionAnimationTypes = /*#__PURE__*/function (TransitionAnimationTypes)
328
327
  TransitionAnimationTypes[TransitionAnimationTypes["CUSTOM"] = 6] = "CUSTOM";
329
328
  return TransitionAnimationTypes;
330
329
  }({});
330
+ /**
331
+ * Handles the transition between multiple children and recycling of elements
332
+ **/
331
333
  exports.TransitionAnimationTypes = TransitionAnimationTypes;
332
334
  const Transition = /*#__PURE__*/(0, _react.forwardRef)(_Transition);
333
335
  var _default = Transition;
334
336
  exports.default = _default;
335
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIl90eXBlb2YiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiTnVtYmVyIiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiaXRlciIsIml0ZXJhdG9yIiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwibyIsIm1pbkxlbiIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJfaSIsIl9zIiwiX2UiLCJfeCIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJuZXh0IiwiZG9uZSIsImVyciIsInJldHVybiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsIlRyYW5zaXRpb25DbGFzc2VzIiwidHlwZSIsIlRyYW5zaXRpb25BbmltYXRpb25UeXBlcyIsIkNPSU5fRkxJUCIsImJhY2t3YXJkIiwiZWxlbWVudEV4aXRpbmciLCJTdHlsZXMiLCJmbGlwQm90dG9tVXBPdXQiLCJlbGVtZW50RW50ZXJpbmciLCJmbGlwQm90dG9tVXBJbiIsImZvcndhcmQiLCJGQURFIiwiZmFkZU91dEFic29sdXRlIiwiZmFkZUluRGVsYXllZCIsIlNMSURFIiwiZW50cmFuY2VMZWZ0IiwiZXhpdExlZnQiLCJQT1BfRlJPTV9DTElDS19PUklHSU4iLCJQT1BfRlJPTV9FTEVNRU5UX0lEIiwiZmFkZUluIiwic2NhbGVPdXQiLCJzY2FsZUluIiwiZmFkZU91dCIsIk1BU0siLCJzdHViRW50ZXJpbmciLCJzdHViIiwiQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeSIsImZ1bmMiLCJleHRlcm5hbFByb3BzQ29udGFpbmVyIiwidG9SZW1vdmVLZXlzIiwiYXNzb2NpYXRlZEtleSIsImV4dGVybmFsUHJvcHMiLCJfVHJhbnNpdGlvbiIsIl9yZWYiLCJfY29udGFpbmVyUmVmIiwic3RlcCIsImNvbnRlbnRTdHlsZSIsIl9yZWYkY29udGVudENsYXNzTmFtZSIsImNvbnRlbnRDbGFzc05hbWUiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm9uRGlzY2FyZFN0ZXAiLCJfcmVmJGxvY2tUcmFuc2l0aW9uV2kiLCJsb2NrVHJhbnNpdGlvbldpZHRoIiwiX3JlZiRsb2NrVHJhbnNpdGlvbkhlIiwibG9ja1RyYW5zaXRpb25IZWlnaHQiLCJwcm9wcyIsImNvbnRhaW5lclJlZiIsInVzZU1lbW8iLCJjcmVhdGVSZWYiLCJwcmVUcmFuc2l0aW9uRGV0YWlscyIsInVzZVJlZiIsInRyYW5zZm9ybU9yaWdpbiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX2NoaWxkcmVuJHN0ZXAiLCJzdHlsZSIsIl9yZWYyIiwiY3JlYXRlRWxlbWVudCIsIl91c2VTdGF0ZTIiLCJjaGlsZHJlbldyYXBwZXJzIiwic2V0Q2hpbGRyZW5XcmFwcGVycyIsInByZXZTdGVwIiwicHJldkNoaWxkIiwidXNlRWZmZWN0IiwiY3VycmVudCIsIl9jaGlsZHJlbiRzdGVwMiIsIl9wcmV2Q2hpbGQkY3VycmVudCIsIl9jaGlsZHJlbiRzdGVwMyIsIm92ZXJmbG93IiwidHJhbnNpdGlvbkNsYXNzZXMiLCJ0cmFuc2l0aW9uVHlwZSIsIkNVU1RPTSIsImNvbmZpZyIsIndpZHRoIiwiY29uY2F0IiwiY2xpZW50V2lkdGgiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJ0cmFuc2l0aW9uTWFzayIsIm1hc2tGYWN0b3J5IiwiX3ByZXZDaGlsZCRjdXJyZW50MiIsInN0ZXBUb1JlbW92ZSIsInByZXZLZXlUb1JlbW92ZSIsInNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXAiLCJlbnRlcmluZ1NjcmVlblJlZiIsIl9zY3JlZW5zQmVmb3JlQ2hhbmdpbiIsImEiLCJfc2NyZWVuc0JlZm9yZUNoYW5naW4yIiwiRmlyc3ROZXh0U2NyZWVuIiwicmVzdE9mU2NyZWVucyIsIldlYmtpdE1hc2tJbWFnZSIsImFuaW1hdGlvbkVuZExpc3RlbmVyIiwiZXZlbnQiLCJfZW50ZXJpbmdTY3JlZW5SZWYkY3UiLCJfZW50ZXJpbmdTY3JlZW5SZWYkY3UyIiwiY3VycmVudFRhcmdldCIsImlzQW5pbWF0aW9uRnJvbUV4cGVjdGVkU3RhdGUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInJlbW92ZSIsInNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCIsInMiLCJfRmlyc3ROZXh0U2NyZWVuJHRvUmUiLCJzaG91bGRLZWVwIiwic29tZSIsImsiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicHJvcHNDb250YWluZXIiLCJyZWYiLCJvbkFuaW1hdGlvbkVuZCIsIm5ld1dyYXBwZXIiLCJfcmVmMyIsIkZyYWdtZW50IiwiX3ByZXZDaGlsZCRjdXJyZW50MyIsInN0ZXBUb0RlbGV0ZSIsImxhc3RJbmRleCIsImxhc3RXcmFwcGVyIiwibmV4dFNjcmVlblJlZiIsImUiLCJfbmV4dFNjcmVlblJlZiRjdXJyZW4iLCJuZXh0U3RhdGUiLCJzaG91bGRNYW50YWluIiwiX3JlZjQiLCJlbGVtZW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxlbWVudElkIiwiX3JlZjUiLCJvZmZzZXRYIiwiY2xpZW50TGVmdCIsIm9mZnNldExlZnQiLCJvZmZzZXRZIiwiY2xpZW50VG9wIiwib2Zmc2V0VG9wIiwicGVyY2VudFgiLCJwZXJjZW50WSIsInByb3BzVG9TcHJlYWQiLCJvbkNsaWNrIiwiX2UkY3VycmVudFRhcmdldCIsImNsaWVudFgiLCJjbGllbnRZIiwic2VjdGlvbiIsIm1hcCIsIldyYXBwZXIiLCJjaGlsZFRvUmVuZGVyIiwiZmluZCIsImV4cG9ydHMiLCJUcmFuc2l0aW9uIiwiZm9yd2FyZFJlZiIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVHJhbnNpdGlvbi9UcmFuc2l0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgQW5pbWF0aW9uRXZlbnQsXG4gIGNyZWF0ZVJlZixcbiAgQ1NTUHJvcGVydGllcyxcbiAgRGV0YWlsZWRIVE1MUHJvcHMsXG4gIEZvcndhcmRlZFJlZixcbiAgZm9yd2FyZFJlZixcbiAgS2V5LFxuICBNdXRhYmxlUmVmT2JqZWN0LFxuICBSZWFjdEVsZW1lbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL1RyYW5zaXRpb24ubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgVHJhbnNpdGlvblR5cGVEZWZpbml0aW9ucyA9XG4gIHwge1xuICAgICAgdHJhbnNpdGlvblR5cGU/OlxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5TTElERVxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9DTElDS19PUklHSU5cbiAgICAgICAgfCBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuRkFERVxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5DT0lOX0ZMSVA7XG4gICAgfVxuICB8IHtcbiAgICAgIHRyYW5zaXRpb25UeXBlPzogVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQ7XG4gICAgICBlbGVtZW50SWQ6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHJhbnNpdGlvblR5cGU/OiBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuTUFTSztcbiAgICAgIC8qKlxuICAgICAgICogSXQgcHJvdmlkZXMgdGhlIHRyYW5zaXRpb24gY29udGFpbmVyIHNvIHlvdSBjYW4gY3JlYXRlIGEgZHluYW1pYyBzdmcgdG8gbWFzayB3aXRoXG4gICAgICAgKi9cbiAgICAgIG1hc2tGYWN0b3J5OiAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCkgPT4gc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5DVVNUT007XG4gICAgICBjb25maWc6IFJldHVyblR5cGU8dHlwZW9mIFRyYW5zaXRpb25DbGFzc2VzPjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBUcmFuc2l0aW9uUHJvcHMgPSB7XG4gIHN0ZXA6IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBjb250ZW50U3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBjb250ZW50Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBjaGlsZHJlbjogKFJlYWN0LlJlYWN0RWxlbWVudCB8IHVuZGVmaW5lZClbXTtcbiAgb25EaXNjYXJkU3RlcD86IChkaXNjYXJkZWRLZXk6IFJlYWN0LktleSkgPT4gdm9pZDtcbiAgbG9ja1RyYW5zaXRpb25XaWR0aD86IGJvb2xlYW47XG4gIGxvY2tUcmFuc2l0aW9uSGVpZ2h0PzogYm9vbGVhbjtcbn0gJiBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zICZcbiAgT21pdDxcbiAgICBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIGFueT4sXG4gICAgXCJjbGFzc05hbWVcIiB8IFwiY2hpbGRyZW5cIlxuICA+O1xuXG5mdW5jdGlvbiBUcmFuc2l0aW9uQ2xhc3NlcyhcbiAgdHlwZTogTm9uTnVsbGFibGU8XG4gICAgRXhjbHVkZTxUcmFuc2l0aW9uUHJvcHNbXCJ0cmFuc2l0aW9uVHlwZVwiXSwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTT5cbiAgPlxuKToge1xuICAvKipcbiAgICogQXBwbGllZCB0byB0aGUgZWxlbWVudCB0aGF0IHdhcyBub3QgdmlzaWJsZSBhbmQgaXMgbm93IGVudGVyaW5nIHRoZSBzY3JlZW5cbiAgICovXG4gIGJhY2t3YXJkOiB7XG4gICAgZWxlbWVudEVudGVyaW5nOiBzdHJpbmc7XG4gICAgZWxlbWVudEV4aXRpbmc6IHN0cmluZztcbiAgfTtcbiAgLyoqXG4gICAqIEFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgdmlzaWJsZSBhbmQgbm93IGlzIGV4aXRpbmcgdGhlIHNjcmVlblxuICAgKi9cbiAgZm9yd2FyZDoge1xuICAgIGVsZW1lbnRFbnRlcmluZzogc3RyaW5nO1xuICAgIGVsZW1lbnRFeGl0aW5nOiBzdHJpbmc7XG4gIH07XG59IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuQ09JTl9GTElQOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZsaXBCb3R0b21VcE91dCxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mbGlwQm90dG9tVXBJbixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmxpcEJvdHRvbVVwT3V0LFxuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmZsaXBCb3R0b21VcEluLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5GQURFOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZhZGVPdXRBYnNvbHV0ZSxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mYWRlSW5EZWxheWVkLFxuICAgICAgICB9LFxuICAgICAgICBmb3J3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5mYWRlT3V0QWJzb2x1dGUsXG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluRGVsYXllZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuU0xJREU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmVudHJhbmNlTGVmdCxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogXCJcIixcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmV4aXRMZWZ0LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9DTElDS19PUklHSU46XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuc2NhbGVPdXQsXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5zY2FsZUluLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmFkZU91dCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuTUFTSzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuc3R1YkVudGVyaW5nLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuc3R1YixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLnN0dWJFbnRlcmluZyxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLnN0dWIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICB9XG59XG5cbnR5cGUgQ2hpbGRyZW5XcmFwcGVyID0gKChwcm9wczoge1xuICBjaGlsZHJlbjogVHJhbnNpdGlvblByb3BzW1wiY2hpbGRyZW5cIl1bbnVtYmVyXTtcbn0pID0+IFJlYWN0RWxlbWVudCkgJiB7XG4gIGFzc29jaWF0ZWRLZXk6IEtleTtcbiAgdG9SZW1vdmVLZXlzPzogS2V5W107XG4gIGV4dGVybmFsUHJvcHM6IHsgW2s6IHN0cmluZ106IGFueSB9O1xufTtcblxuZnVuY3Rpb24gQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgZnVuYzogKHA6IHsgY2hpbGRyZW46IFRyYW5zaXRpb25Qcm9wc1tcImNoaWxkcmVuXCJdIH0pID0+IFJlYWN0RWxlbWVudCxcbiAga2V5OiBLZXksXG4gIGV4dGVybmFsUHJvcHNDb250YWluZXI6IHsgW2s6IHN0cmluZ106IGFueSB9LFxuICB0b1JlbW92ZUtleXM/OiBLZXlbXVxuKTogQ2hpbGRyZW5XcmFwcGVyIHtcbiAgKGZ1bmMgYXMgYW55KS5hc3NvY2lhdGVkS2V5ID0ga2V5O1xuICAoZnVuYyBhcyBhbnkpLnRvUmVtb3ZlS2V5cyA9IHRvUmVtb3ZlS2V5cztcbiAgKGZ1bmMgYXMgYW55KS5leHRlcm5hbFByb3BzID0gZXh0ZXJuYWxQcm9wc0NvbnRhaW5lcjtcbiAgcmV0dXJuIGZ1bmMgYXMgdW5rbm93biBhcyBDaGlsZHJlbldyYXBwZXI7XG59XG5cbi8qKlxuICogSGFuZGxlcyB0aGUgdHJhbnNpdGlvbiBiZXR3ZWVuIG11bHRpcGxlIGNoaWxkcmVuIGFuZCByZWN5Y2xpbmcgb2YgZWxlbWVudHNcbiAqKi9cbmZ1bmN0aW9uIF9UcmFuc2l0aW9uKFxuICB7XG4gICAgc3RlcCxcbiAgICBjb250ZW50U3R5bGUsXG4gICAgY29udGVudENsYXNzTmFtZSA9IFwiXCIsXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIG9uRGlzY2FyZFN0ZXAsXG4gICAgbG9ja1RyYW5zaXRpb25XaWR0aCA9IGZhbHNlLFxuICAgIGxvY2tUcmFuc2l0aW9uSGVpZ2h0ID0gZmFsc2UsXG4gICAgLi4ucHJvcHNcbiAgfTogVHJhbnNpdGlvblByb3BzLFxuICBfY29udGFpbmVyUmVmOiBGb3J3YXJkZWRSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuKSB7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIChfY29udGFpbmVyUmVmIGFzIE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPikgfHwgY3JlYXRlUmVmKCksXG4gICAgW19jb250YWluZXJSZWZdXG4gICk7XG4gIGNvbnN0IHByZVRyYW5zaXRpb25EZXRhaWxzID0gdXNlUmVmPENTU1Byb3BlcnRpZXM+KHtcbiAgICB0cmFuc2Zvcm1PcmlnaW46IFwiaW5pdGlhbFwiLFxuICB9KTtcbiAgY29uc3QgW2NoaWxkcmVuV3JhcHBlcnMsIHNldENoaWxkcmVuV3JhcHBlcnNdID0gdXNlU3RhdGU8XG4gICAgKENoaWxkcmVuV3JhcHBlciB8IHVuZGVmaW5lZClbXVxuICA+KCgpID0+IHtcbiAgICBjb25zdCBleHRlcm5hbFByb3BzID0ge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRyYW5zaXRpb24tY29udGFpbmVyXCIsXG4gICAgICBrZXk6IFN0cmluZyhjaGlsZHJlbltzdGVwXT8ua2V5IHx8IHN0ZXApLFxuICAgICAgc3R5bGU6IGNvbnRlbnRTdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogY29udGVudENsYXNzTmFtZSxcbiAgICB9O1xuICAgIGNvbnN0IGZ1bmMgPSBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgKHsgY2hpbGRyZW4gfSkgPT4gPGRpdiB7Li4uZXh0ZXJuYWxQcm9wc30+e2NoaWxkcmVufTwvZGl2PixcbiAgICAgIGNoaWxkcmVuW3N0ZXBdIS5rZXkgfHwgc3RlcCxcbiAgICAgIGV4dGVybmFsUHJvcHMsXG4gICAgICBbXVxuICAgICk7XG4gICAgcmV0dXJuIFtmdW5jXTtcbiAgfSk7XG5cbiAgY29uc3QgcHJldlN0ZXAgPSB1c2VSZWYoc3RlcCk7XG4gIGNvbnN0IHByZXZDaGlsZCA9IHVzZVJlZihjaGlsZHJlbltzdGVwXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+ICgpID0+IHtcbiAgICBwcmV2Q2hpbGQuY3VycmVudCA9IGNoaWxkcmVuW3N0ZXBdO1xuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG4gICAgY29uc3QgdHJhbnNpdGlvbkNsYXNzZXMgPVxuICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5DVVNUT01cbiAgICAgICAgPyBwcm9wcy5jb25maWdcbiAgICAgICAgOiBUcmFuc2l0aW9uQ2xhc3NlcyhcbiAgICAgICAgICAgIHByb3BzLnRyYW5zaXRpb25UeXBlIHx8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5TTElERVxuICAgICAgICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBwcmV2Q2hpbGQuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgICAgY2hpbGRyZW5bc3RlcF0/LmtleSA9PT0gcHJldkNoaWxkLmN1cnJlbnQ/LmtleSAvLyBJJ20gcmVuZGVyaW5nIHRoZSBzYW1lIHNjcmVlblxuICAgICkge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgcHJldlN0ZXAuY3VycmVudCA9IHN0ZXA7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGNoaWxkcmVuW3N0ZXBdPy5rZXkgfHwgc3RlcDtcblxuICAgIGlmIChwcmV2U3RlcC5jdXJyZW50ICE9PSBzdGVwICYmIGxvY2tUcmFuc2l0aW9uV2lkdGgpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUud2lkdGggPSBgJHtcbiAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLmNsaWVudFdpZHRoXG4gICAgICB9cHhgO1xuXG4gICAgaWYgKHByZXZTdGVwLmN1cnJlbnQgIT09IHN0ZXAgJiYgbG9ja1RyYW5zaXRpb25IZWlnaHQpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUuaGVpZ2h0ID0gYCR7XG4gICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5jbGllbnRIZWlnaHRcbiAgICAgIH1weGA7XG4gICAgY29uc3QgdHJhbnNpdGlvbk1hc2sgPVxuICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5NQVNLXG4gICAgICAgID8gcHJvcHMubWFza0ZhY3RvcnkoY29udGFpbmVyUmVmLmN1cnJlbnQhKVxuICAgICAgICA6IFwiXCI7XG5cbiAgICAvKiogVGhpcyBydW5zIG9uIGJhY2t3YXJkcyAqL1xuICAgIGlmIChwcmV2U3RlcC5jdXJyZW50ID4gc3RlcCkge1xuICAgICAgY29uc3Qgc3RlcFRvUmVtb3ZlID0gcHJldlN0ZXAuY3VycmVudDtcbiAgICAgIGNvbnN0IHByZXZLZXlUb1JlbW92ZSA9IHByZXZDaGlsZC5jdXJyZW50Py5rZXkgfHwgc3RlcFRvUmVtb3ZlO1xuICAgICAgc2V0Q2hpbGRyZW5XcmFwcGVycygoc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcCkgPT4ge1xuICAgICAgICBjb25zdCBlbnRlcmluZ1NjcmVlblJlZiA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgICAgICAgY29uc3QgW0ZpcnN0TmV4dFNjcmVlbiwgLi4ucmVzdE9mU2NyZWVuc10gPVxuICAgICAgICAgIHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXAuZmlsdGVyKFxuICAgICAgICAgICAgKGEpID0+IGE/LmFzc29jaWF0ZWRLZXkgIT09IFN0cmluZyhrZXkpXG4gICAgICAgICAgKTtcblxuICAgICAgICBpZiAoRmlyc3ROZXh0U2NyZWVuKSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihGaXJzdE5leHRTY3JlZW4uZXh0ZXJuYWxQcm9wcywge1xuICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRyYW5zaXRpb24tY29udGFpbmVyXCIsXG4gICAgICAgICAgICBzdHlsZTogeyAuLi5jb250ZW50U3R5bGUsIFdlYmtpdE1hc2tJbWFnZTogdHJhbnNpdGlvbk1hc2sgfSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogYCR7dHJhbnNpdGlvbkNsYXNzZXMuYmFja3dhcmQuZWxlbWVudEV4aXRpbmd9YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25FbmRMaXN0ZW5lcihldmVudDogQW5pbWF0aW9uRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSB7XG4gICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgaXNBbmltYXRpb25Gcm9tRXhwZWN0ZWRTdGF0ZSA9XG4gICAgICAgICAgICBlbnRlcmluZ1NjcmVlblJlZi5jdXJyZW50Py5jbGFzc0xpc3QuY29udGFpbnMoXG4gICAgICAgICAgICAgIHRyYW5zaXRpb25DbGFzc2VzLmJhY2t3YXJkLmVsZW1lbnRFbnRlcmluZ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICBlbnRlcmluZ1NjcmVlblJlZi5jdXJyZW50Py5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgdHJhbnNpdGlvbkNsYXNzZXMuYmFja3dhcmQuZWxlbWVudEVudGVyaW5nXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQpID0+IHtcbiAgICAgICAgICAgIGlmIChvbkRpc2NhcmRTdGVwKSB7XG4gICAgICAgICAgICAgIGlmIChpc0FuaW1hdGlvbkZyb21FeHBlY3RlZFN0YXRlKSBvbkRpc2NhcmRTdGVwKHByZXZLZXlUb1JlbW92ZSk7XG4gICAgICAgICAgICAgIGlmIChGaXJzdE5leHRTY3JlZW4gJiYgRmlyc3ROZXh0U2NyZWVuLnRvUmVtb3ZlS2V5cylcbiAgICAgICAgICAgICAgICBGaXJzdE5leHRTY3JlZW4udG9SZW1vdmVLZXlzLmZvckVhY2gob25EaXNjYXJkU3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2NyZWVuc0FmdGVyVGhlQ3VycmVudFN0ZXBFbnRlcmVkLmZpbHRlcigocykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzaG91bGRLZWVwID1cbiAgICAgICAgICAgICAgICBzPy5hc3NvY2lhdGVkS2V5ICE9PSBTdHJpbmcocHJldktleVRvUmVtb3ZlKSAmJlxuICAgICAgICAgICAgICAgICFGaXJzdE5leHRTY3JlZW4/LnRvUmVtb3ZlS2V5cz8uc29tZShcbiAgICAgICAgICAgICAgICAgIChrKSA9PiBTdHJpbmcoaykgPT09IFN0cmluZyhzPy5hc3NvY2lhdGVkS2V5KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiBzaG91bGRLZWVwO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgXCJhbmltYXRpb25lbmRcIixcbiAgICAgICAgICAgIGFuaW1hdGlvbkVuZExpc3RlbmVyIGFzIGFueVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvcHNDb250YWluZXIgPSB7XG4gICAgICAgICAgcmVmOiBlbnRlcmluZ1NjcmVlblJlZixcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwidHJhbnNpdGlvbi1jb250YWluZXJcIixcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY2xhc3NOYW1lOiBgJHt0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RW50ZXJpbmd9ICR7Y29udGVudENsYXNzTmFtZX1gLFxuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5jb250ZW50U3R5bGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkFuaW1hdGlvbkVuZDogYW5pbWF0aW9uRW5kTGlzdGVuZXIsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5ld1dyYXBwZXIgPSBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgICAgICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IHsuLi5wcm9wc0NvbnRhaW5lcn0+e2NoaWxkcmVufTwvZGl2PjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBwcm9wc0NvbnRhaW5lcixcbiAgICAgICAgICBbcHJldktleVRvUmVtb3ZlLCAuLi4oRmlyc3ROZXh0U2NyZWVuPy50b1JlbW92ZUtleXMgfHwgW10pXVxuICAgICAgICApO1xuICAgICAgICBpZiAoRmlyc3ROZXh0U2NyZWVuKVxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXdXcmFwcGVyLFxuICAgICAgICAgICAgRmlyc3ROZXh0U2NyZWVuIHx8XG4gICAgICAgICAgICAgIENoaWxkcmVuV3JhcHBlckZhY3RvcnkoKCkgPT4gPFJlYWN0LkZyYWdtZW50IC8+LCBcIlwiLCB7fSksXG4gICAgICAgICAgICAuLi5yZXN0T2ZTY3JlZW5zLFxuICAgICAgICAgIF07XG4gICAgICAgIGVsc2UgcmV0dXJuIFtuZXdXcmFwcGVyXTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJldlN0ZXAuY3VycmVudCA8IHN0ZXApIHtcbiAgICAgIGNvbnN0IHN0ZXBUb0RlbGV0ZSA9IHByZXZTdGVwLmN1cnJlbnQ7XG4gICAgICBjb25zdCBwcmV2S2V5VG9SZW1vdmUgPSBTdHJpbmcocHJldkNoaWxkLmN1cnJlbnQ/LmtleSB8fCBzdGVwVG9EZWxldGUpO1xuICAgICAgc2V0Q2hpbGRyZW5XcmFwcGVycygoc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcCkgPT4ge1xuICAgICAgICBjb25zdCBsYXN0SW5kZXggPSBzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGxhc3RXcmFwcGVyID0gc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcFtsYXN0SW5kZXhdO1xuICAgICAgICBjb25zdCBuZXh0U2NyZWVuUmVmID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICAgICAgICBpZiAobGFzdFdyYXBwZXIpIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGxhc3RXcmFwcGVyLmV4dGVybmFsUHJvcHMsIHtcbiAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0cmFuc2l0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICAgICAgc3R5bGU6IHsgLi4uY29udGVudFN0eWxlLCBXZWJraXRNYXNrSW1hZ2U6IHRyYW5zaXRpb25NYXNrIH0sXG4gICAgICAgICAgICBjbGFzc05hbWU6IGAke2NvbnRlbnRDbGFzc05hbWV9ICR7dHJhbnNpdGlvbkNsYXNzZXMuZm9yd2FyZC5lbGVtZW50RXhpdGluZ31gLFxuICAgICAgICAgICAgb25BbmltYXRpb25FbmQ6IChlOiBBbmltYXRpb25FdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgIT09IGUuY3VycmVudFRhcmdldCkgcmV0dXJuO1xuICAgICAgICAgICAgICBpZiAodHJhbnNpdGlvbkNsYXNzZXMuZm9yd2FyZC5lbGVtZW50RW50ZXJpbmcpXG4gICAgICAgICAgICAgICAgbmV4dFNjcmVlblJlZi5jdXJyZW50Py5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbkNsYXNzZXMuZm9yd2FyZC5lbGVtZW50RW50ZXJpbmdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAob25EaXNjYXJkU3RlcCkgb25EaXNjYXJkU3RlcChwcmV2S2V5VG9SZW1vdmUpO1xuICAgICAgICAgICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgKHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkTWFudGFpbiA9XG4gICAgICAgICAgICAgICAgICAgICAgcz8uYXNzb2NpYXRlZEtleSAhPT0gU3RyaW5nKHByZXZLZXlUb1JlbW92ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRNYW50YWluO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb3BzQ29udGFpbmVyID0ge1xuICAgICAgICAgIHJlZjogbmV4dFNjcmVlblJlZixcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwidHJhbnNpdGlvbi1jb250YWluZXJcIixcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsYXNzTmFtZTogYCR7Y29udGVudENsYXNzTmFtZX0gJHt0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFbnRlcmluZ31gLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdXcmFwcGVyID0gQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgICAgICAgICAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gPGRpdiB7Li4ucHJvcHNDb250YWluZXJ9PntjaGlsZHJlbn08L2Rpdj47XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcHJvcHNDb250YWluZXJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5zY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwLnNsaWNlKDAsIGxhc3RJbmRleCksXG4gICAgICAgICAgbGFzdFdyYXBwZXIgfHxcbiAgICAgICAgICAgIENoaWxkcmVuV3JhcHBlckZhY3RvcnkoKCkgPT4gPFJlYWN0LkZyYWdtZW50IC8+LCBcImZhbGxiYWNrXCIsIHt9KSxcbiAgICAgICAgICBuZXdXcmFwcGVyLFxuICAgICAgICBdO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwcmV2U3RlcC5jdXJyZW50ID0gc3RlcDtcbiAgICB9O1xuICB9LCBbc3RlcF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoaWxkcmVuV3JhcHBlcnMubGVuZ3RoID09PSAxICYmIGxvY2tUcmFuc2l0aW9uV2lkdGgpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUud2lkdGggPSBcIlwiO1xuICAgIGlmIChjaGlsZHJlbldyYXBwZXJzLmxlbmd0aCA9PT0gMSAmJiBsb2NrVHJhbnNpdGlvbkhlaWdodClcbiAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS5oZWlnaHQgPSBcIlwiO1xuICB9LCBbY2hpbGRyZW5XcmFwcGVycy5sZW5ndGggIT09IDFdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHByb3BzLnRyYW5zaXRpb25UeXBlID09PSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRCAmJlxuICAgICAgXCJlbGVtZW50SWRcIiBpbiBwcm9wc1xuICAgICkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIGAjJHtwcm9wcy5lbGVtZW50SWR9YFxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJSZWYuY3VycmVudCE7XG5cbiAgICAgICAgY29uc3Qgb2Zmc2V0WCA9XG4gICAgICAgICAgZWxlbWVudC5jbGllbnRMZWZ0ICsgZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IG9mZnNldFkgPVxuICAgICAgICAgIGVsZW1lbnQuY2xpZW50VG9wICsgZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50LmNsaWVudEhlaWdodCAvIDI7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRYID0gKG9mZnNldFggKiAxMDApIC8gY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRZID0gKG9mZnNldFkgKiAxMDApIC8gY2xpZW50SGVpZ2h0O1xuICAgICAgICBwcmVUcmFuc2l0aW9uRGV0YWlscy5jdXJyZW50LnRyYW5zZm9ybU9yaWdpbiA9IGAke3BlcmNlbnRYfSUgJHtwZXJjZW50WX0lYDtcblxuICAgICAgICBPYmplY3QuYXNzaWduKGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZSwge1xuICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogYCR7cGVyY2VudFh9JSAke3BlcmNlbnRZfSVgLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmFzc2lnbihjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUsIHByZVRyYW5zaXRpb25EZXRhaWxzLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIGlmIChjaGlsZHJlbldyYXBwZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLm92ZXJmbG93ID0gXCJcIjtcbiAgICB9XG4gIH0sIFtjaGlsZHJlbldyYXBwZXJzLmxlbmd0aF0pO1xuICBcbiAgY29uc3QgcHJvcHNUb1NwcmVhZCA9IHsgLi4ucHJvcHMgfSBhcyBhbnk7XG4gIGRlbGV0ZSBwcm9wc1RvU3ByZWFkLnRyYW5zaXRpb25UeXBlO1xuICBkZWxldGUgcHJvcHNUb1NwcmVhZC5jb25maWc7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgey4uLnByb3BzVG9TcHJlYWR9XG4gICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY3VycmVudFRhcmdldDogeyBvZmZzZXRUb3AsIG9mZnNldExlZnQsIGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgfSxcbiAgICAgICAgICAgIGNsaWVudFgsXG4gICAgICAgICAgICBjbGllbnRZLFxuICAgICAgICAgIH0gPSBlO1xuICAgICAgICAgIGNvbnN0IG9mZnNldFggPSBjbGllbnRYIC0gb2Zmc2V0TGVmdDtcbiAgICAgICAgICBjb25zdCBvZmZzZXRZID0gY2xpZW50WSAtIG9mZnNldFRvcDtcbiAgICAgICAgICBjb25zdCBwZXJjZW50WCA9IChvZmZzZXRYICogMTAwKSAvIGNsaWVudFdpZHRoO1xuICAgICAgICAgIGNvbnN0IHBlcmNlbnRZID0gKG9mZnNldFkgKiAxMDApIC8gY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09XG4gICAgICAgICAgICAgIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9FTEVNRU5UX0lEIHx8XG4gICAgICAgICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT1cbiAgICAgICAgICAgICAgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0NMSUNLX09SSUdJTlxuICAgICAgICAgIClcbiAgICAgICAgICAgIHByZVRyYW5zaXRpb25EZXRhaWxzLmN1cnJlbnQudHJhbnNmb3JtT3JpZ2luID0gYCR7cGVyY2VudFh9JSAke3BlcmNlbnRZfSVgO1xuICAgICAgICAgIGlmIChwcm9wcy5vbkNsaWNrKSBwcm9wcy5vbkNsaWNrKGUgYXMgYW55KTtcbiAgICAgICAgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0cmFuc2l0aW9uLWNvbnRyb2xsZXJcIlxuICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMuc2VjdGlvbn0gJHtjbGFzc05hbWV9YH1cbiAgICAgID5cbiAgICAgICAgeyhjaGlsZHJlbldyYXBwZXJzIGFzIENoaWxkcmVuV3JhcHBlcltdKS5tYXAoKFdyYXBwZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZFRvUmVuZGVyID0gY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgIChhLCBpKSA9PiAoYT8ua2V5IHx8IGkpID09PSBXcmFwcGVyPy5hc3NvY2lhdGVkS2V5XG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFdyYXBwZXIga2V5PXtXcmFwcGVyPy5hc3NvY2lhdGVkS2V5fT5cbiAgICAgICAgICAgICAgPD57Y2hpbGRUb1JlbmRlcn08Lz5cbiAgICAgICAgICAgIDwvV3JhcHBlcj5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzIHtcbiAgU0xJREUsXG4gIFBPUF9GUk9NX0NMSUNLX09SSUdJTixcbiAgUE9QX0ZST01fRUxFTUVOVF9JRCxcbiAgRkFERSxcbiAgQ09JTl9GTElQLFxuICBNQVNLLFxuICBDVVNUT00sXG59XG5cbmNvbnN0IFRyYW5zaXRpb24gPSBmb3J3YXJkUmVmKF9U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
337
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIl90eXBlb2YiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiTnVtYmVyIiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiaXRlciIsIml0ZXJhdG9yIiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwibyIsIm1pbkxlbiIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJfaSIsIl9zIiwiX2UiLCJfeCIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJuZXh0IiwiZG9uZSIsImVyciIsInJldHVybiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsIlRyYW5zaXRpb25DbGFzc2VzIiwidHlwZSIsIlRyYW5zaXRpb25BbmltYXRpb25UeXBlcyIsIkNPSU5fRkxJUCIsImJhY2t3YXJkIiwiZWxlbWVudEV4aXRpbmciLCJTdHlsZXMiLCJmbGlwQm90dG9tVXBPdXQiLCJlbGVtZW50RW50ZXJpbmciLCJmbGlwQm90dG9tVXBJbiIsImZvcndhcmQiLCJGQURFIiwiZmFkZU91dEFic29sdXRlIiwiZmFkZUluRGVsYXllZCIsIlNMSURFIiwiZW50cmFuY2VMZWZ0IiwiZXhpdExlZnQiLCJQT1BfRlJPTV9DTElDS19PUklHSU4iLCJQT1BfRlJPTV9FTEVNRU5UX0lEIiwiZmFkZUluIiwic2NhbGVPdXQiLCJzY2FsZUluIiwiZmFkZU91dCIsIk1BU0siLCJzdHViRW50ZXJpbmciLCJzdHViIiwiQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeSIsImZ1bmMiLCJleHRlcm5hbFByb3BzQ29udGFpbmVyIiwidGltZXN0YW1wIiwidG9SZW1vdmVLZXlzIiwiY3JlYXRlZEF0IiwiYXNzb2NpYXRlZEtleSIsImV4dGVybmFsUHJvcHMiLCJfVHJhbnNpdGlvbiIsIl9yZWYiLCJfY29udGFpbmVyUmVmIiwic3RlcCIsImNvbnRlbnRTdHlsZSIsIl9yZWYkY29udGVudENsYXNzTmFtZSIsImNvbnRlbnRDbGFzc05hbWUiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm9uRGlzY2FyZFN0ZXAiLCJfcmVmJGxvY2tUcmFuc2l0aW9uV2kiLCJsb2NrVHJhbnNpdGlvbldpZHRoIiwiX3JlZiRsb2NrVHJhbnNpdGlvbkhlIiwibG9ja1RyYW5zaXRpb25IZWlnaHQiLCJwcm9wcyIsImNvbnRhaW5lclJlZiIsInVzZU1lbW8iLCJjcmVhdGVSZWYiLCJwcmVUcmFuc2l0aW9uRGV0YWlscyIsInVzZVJlZiIsInRyYW5zZm9ybU9yaWdpbiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX2NoaWxkcmVuJHN0ZXAiLCJzdHlsZSIsIl9yZWYyIiwiY3JlYXRlRWxlbWVudCIsIkRhdGUiLCJub3ciLCJfdXNlU3RhdGUyIiwiY2hpbGRyZW5XcmFwcGVycyIsInNldENoaWxkcmVuV3JhcHBlcnMiLCJwcmV2U3RlcCIsInByZXZDaGlsZCIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJfY2hpbGRyZW4kc3RlcDIiLCJfcHJldkNoaWxkJGN1cnJlbnQiLCJfY2hpbGRyZW4kc3RlcDMiLCJvdmVyZmxvdyIsInRyYW5zaXRpb25DbGFzc2VzIiwidHJhbnNpdGlvblR5cGUiLCJDVVNUT00iLCJjb25maWciLCJ3aWR0aCIsImNvbmNhdCIsImNsaWVudFdpZHRoIiwiaGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwidHJhbnNpdGlvbk1hc2siLCJtYXNrRmFjdG9yeSIsImluc2VydGVkQXQiLCJfcHJldkNoaWxkJGN1cnJlbnQyIiwic3RlcFRvUmVtb3ZlIiwicHJldktleVRvUmVtb3ZlIiwic2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcCIsImVudGVyaW5nU2NyZWVuUmVmIiwiX3NjcmVlbnNCZWZvcmVDaGFuZ2luIiwiYSIsIl9zY3JlZW5zQmVmb3JlQ2hhbmdpbjIiLCJGaXJzdE5leHRTY3JlZW4iLCJyZXN0T2ZTY3JlZW5zIiwiV2Via2l0TWFza0ltYWdlIiwiYW5pbWF0aW9uRW5kTGlzdGVuZXIiLCJldmVudCIsIl9lbnRlcmluZ1NjcmVlblJlZiRjdSIsIl9lbnRlcmluZ1NjcmVlblJlZiRjdTIiLCJjdXJyZW50VGFyZ2V0IiwiaXNBbmltYXRpb25Gcm9tRXhwZWN0ZWRTdGF0ZSIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwic2NyZWVuc0FmdGVyVGhlQ3VycmVudFN0ZXBFbnRlcmVkIiwicyIsIl9GaXJzdE5leHRTY3JlZW4kdG9SZSIsInNob3VsZEtlZXAiLCJzb21lIiwiayIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJwcm9wc0NvbnRhaW5lciIsInJlZiIsIm9uQW5pbWF0aW9uRW5kIiwibmV3V3JhcHBlciIsIl9yZWYzIiwiRnJhZ21lbnQiLCJfcHJldkNoaWxkJGN1cnJlbnQzIiwic3RlcFRvRGVsZXRlIiwibGFzdEluZGV4IiwibGFzdFdyYXBwZXIiLCJuZXh0U2NyZWVuUmVmIiwiZSIsIl9uZXh0U2NyZWVuUmVmJGN1cnJlbiIsIm5leHRTdGF0ZSIsInNob3VsZE1hbnRhaW4iLCJfcmVmNCIsImVsZW1lbnQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbGVtZW50SWQiLCJfcmVmNSIsIm9mZnNldFgiLCJjbGllbnRMZWZ0Iiwib2Zmc2V0TGVmdCIsIm9mZnNldFkiLCJjbGllbnRUb3AiLCJvZmZzZXRUb3AiLCJwZXJjZW50WCIsInBlcmNlbnRZIiwicHJvcHNUb1NwcmVhZCIsIm9uQ2xpY2siLCJfZSRjdXJyZW50VGFyZ2V0IiwiY2xpZW50WCIsImNsaWVudFkiLCJzZWN0aW9uIiwibWFwIiwiV3JhcHBlciIsImNoaWxkVG9SZW5kZXIiLCJmaW5kIiwiZXhwb3J0cyIsIlRyYW5zaXRpb24iLCJmb3J3YXJkUmVmIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UcmFuc2l0aW9uL1RyYW5zaXRpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBBbmltYXRpb25FdmVudCxcbiAgY3JlYXRlUmVmLFxuICBDU1NQcm9wZXJ0aWVzLFxuICBEZXRhaWxlZEhUTUxQcm9wcyxcbiAgRm9yd2FyZGVkUmVmLFxuICBmb3J3YXJkUmVmLFxuICBLZXksXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIFJlYWN0RWxlbWVudCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vVHJhbnNpdGlvbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zID1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86XG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFXG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0NMSUNLX09SSUdJTlxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5GQURFXG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNPSU5fRkxJUDtcbiAgICB9XG4gIHwge1xuICAgICAgdHJhbnNpdGlvblR5cGU/OiBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRDtcbiAgICAgIGVsZW1lbnRJZDogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5NQVNLO1xuICAgICAgLyoqXG4gICAgICAgKiBJdCBwcm92aWRlcyB0aGUgdHJhbnNpdGlvbiBjb250YWluZXIgc28geW91IGNhbiBjcmVhdGUgYSBkeW5hbWljIHN2ZyB0byBtYXNrIHdpdGhcbiAgICAgICAqL1xuICAgICAgbWFza0ZhY3Rvcnk6IChjb250YWluZXI6IEhUTUxEaXZFbGVtZW50KSA9PiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHRyYW5zaXRpb25UeXBlPzogVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTTtcbiAgICAgIGNvbmZpZzogUmV0dXJuVHlwZTx0eXBlb2YgVHJhbnNpdGlvbkNsYXNzZXM+O1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRyYW5zaXRpb25Qcm9wcyA9IHtcbiAgc3RlcDogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNvbnRlbnRTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGNvbnRlbnRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiAoUmVhY3QuUmVhY3RFbGVtZW50IHwgdW5kZWZpbmVkKVtdO1xuICBvbkRpc2NhcmRTdGVwPzogKGRpc2NhcmRlZEtleTogUmVhY3QuS2V5LCBzdGFydGVkQW5pbWF0aW9uQXQ6IG51bWJlcikgPT4gdm9pZDtcbiAgbG9ja1RyYW5zaXRpb25XaWR0aD86IGJvb2xlYW47XG4gIGxvY2tUcmFuc2l0aW9uSGVpZ2h0PzogYm9vbGVhbjtcbn0gJiBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zICZcbiAgT21pdDxcbiAgICBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIGFueT4sXG4gICAgXCJjbGFzc05hbWVcIiB8IFwiY2hpbGRyZW5cIlxuICA+O1xuXG5mdW5jdGlvbiBUcmFuc2l0aW9uQ2xhc3NlcyhcbiAgdHlwZTogTm9uTnVsbGFibGU8XG4gICAgRXhjbHVkZTxUcmFuc2l0aW9uUHJvcHNbXCJ0cmFuc2l0aW9uVHlwZVwiXSwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTT5cbiAgPlxuKToge1xuICAvKipcbiAgICogQXBwbGllZCB0byB0aGUgZWxlbWVudCB0aGF0IHdhcyBub3QgdmlzaWJsZSBhbmQgaXMgbm93IGVudGVyaW5nIHRoZSBzY3JlZW5cbiAgICovXG4gIGJhY2t3YXJkOiB7XG4gICAgZWxlbWVudEVudGVyaW5nOiBzdHJpbmc7XG4gICAgZWxlbWVudEV4aXRpbmc6IHN0cmluZztcbiAgfTtcbiAgLyoqXG4gICAqIEFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgdmlzaWJsZSBhbmQgbm93IGlzIGV4aXRpbmcgdGhlIHNjcmVlblxuICAgKi9cbiAgZm9yd2FyZDoge1xuICAgIGVsZW1lbnRFbnRlcmluZzogc3RyaW5nO1xuICAgIGVsZW1lbnRFeGl0aW5nOiBzdHJpbmc7XG4gIH07XG59IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuQ09JTl9GTElQOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZsaXBCb3R0b21VcE91dCxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mbGlwQm90dG9tVXBJbixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmxpcEJvdHRvbVVwT3V0LFxuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmZsaXBCb3R0b21VcEluLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5GQURFOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZhZGVPdXRBYnNvbHV0ZSxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mYWRlSW5EZWxheWVkLFxuICAgICAgICB9LFxuICAgICAgICBmb3J3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5mYWRlT3V0QWJzb2x1dGUsXG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluRGVsYXllZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuU0xJREU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmVudHJhbmNlTGVmdCxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogXCJcIixcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmV4aXRMZWZ0LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9DTElDS19PUklHSU46XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuc2NhbGVPdXQsXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5zY2FsZUluLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmFkZU91dCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuTUFTSzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuc3R1YkVudGVyaW5nLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuc3R1YixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLnN0dWJFbnRlcmluZyxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLnN0dWIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICB9XG59XG5cbnR5cGUgQ2hpbGRyZW5XcmFwcGVyID0gKChwcm9wczoge1xuICBjaGlsZHJlbjogVHJhbnNpdGlvblByb3BzW1wiY2hpbGRyZW5cIl1bbnVtYmVyXTtcbn0pID0+IFJlYWN0RWxlbWVudCkgJiB7XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICBhc3NvY2lhdGVkS2V5OiBLZXk7XG4gIHRvUmVtb3ZlS2V5cz86IEtleVtdO1xuICBleHRlcm5hbFByb3BzOiB7IFtrOiBzdHJpbmddOiBhbnkgfTtcbn07XG5cbmZ1bmN0aW9uIENoaWxkcmVuV3JhcHBlckZhY3RvcnkoXG4gIGZ1bmM6IChwOiB7IGNoaWxkcmVuOiBUcmFuc2l0aW9uUHJvcHNbXCJjaGlsZHJlblwiXSB9KSA9PiBSZWFjdEVsZW1lbnQsXG4gIGtleTogS2V5LFxuICBleHRlcm5hbFByb3BzQ29udGFpbmVyOiB7IFtrOiBzdHJpbmddOiBhbnkgfSxcbiAgLyoqIFRoaXMgaXMgdXNlZCB0byBwcmV2ZW50IG5ld2VyIFwiZHVwbGljYXRlZFwiIGtleXMgZnJvbSBiZWluZyByZW1vdmVkIGFmdGVyIHRoZSBuZXcgZWxlbWVudCBmaW5pc2hlZCBhbmltYXRpb24gKi9cbiAgdGltZXN0YW1wOiBudW1iZXIsXG4gIHRvUmVtb3ZlS2V5cz86IEtleVtdXG4pOiBDaGlsZHJlbldyYXBwZXIge1xuICAoZnVuYyBhcyBhbnkpLmNyZWF0ZWRBdCA9IHRpbWVzdGFtcDtcbiAgKGZ1bmMgYXMgYW55KS5hc3NvY2lhdGVkS2V5ID0ga2V5O1xuICAoZnVuYyBhcyBhbnkpLnRvUmVtb3ZlS2V5cyA9IHRvUmVtb3ZlS2V5cztcbiAgKGZ1bmMgYXMgYW55KS5leHRlcm5hbFByb3BzID0gZXh0ZXJuYWxQcm9wc0NvbnRhaW5lcjtcbiAgcmV0dXJuIGZ1bmMgYXMgdW5rbm93biBhcyBDaGlsZHJlbldyYXBwZXI7XG59XG5mdW5jdGlvbiBfVHJhbnNpdGlvbihcbiAge1xuICAgIHN0ZXAsXG4gICAgY29udGVudFN0eWxlLFxuICAgIGNvbnRlbnRDbGFzc05hbWUgPSBcIlwiLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBvbkRpc2NhcmRTdGVwLFxuICAgIGxvY2tUcmFuc2l0aW9uV2lkdGggPSBmYWxzZSxcbiAgICBsb2NrVHJhbnNpdGlvbkhlaWdodCA9IGZhbHNlLFxuICAgIC4uLnByb3BzXG4gIH06IFRyYW5zaXRpb25Qcm9wcyxcbiAgX2NvbnRhaW5lclJlZjogRm9yd2FyZGVkUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbikge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICAoX2NvbnRhaW5lclJlZiBhcyBNdXRhYmxlUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD4pIHx8IGNyZWF0ZVJlZigpLFxuICAgIFtfY29udGFpbmVyUmVmXVxuICApO1xuICBjb25zdCBwcmVUcmFuc2l0aW9uRGV0YWlscyA9IHVzZVJlZjxDU1NQcm9wZXJ0aWVzPih7XG4gICAgdHJhbnNmb3JtT3JpZ2luOiBcImluaXRpYWxcIixcbiAgfSk7XG4gIGNvbnN0IFtjaGlsZHJlbldyYXBwZXJzLCBzZXRDaGlsZHJlbldyYXBwZXJzXSA9IHVzZVN0YXRlPFxuICAgIChDaGlsZHJlbldyYXBwZXIgfCB1bmRlZmluZWQpW11cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZXh0ZXJuYWxQcm9wcyA9IHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0cmFuc2l0aW9uLWNvbnRhaW5lclwiLFxuICAgICAga2V5OiBTdHJpbmcoY2hpbGRyZW5bc3RlcF0/LmtleSB8fCBzdGVwKSxcbiAgICAgIHN0eWxlOiBjb250ZW50U3R5bGUsXG4gICAgICBjbGFzc05hbWU6IGNvbnRlbnRDbGFzc05hbWUsXG4gICAgfTtcbiAgICBjb25zdCBmdW5jID0gQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgICAgICh7IGNoaWxkcmVuIH0pID0+IDxkaXYgey4uLmV4dGVybmFsUHJvcHN9PntjaGlsZHJlbn08L2Rpdj4sXG4gICAgICBjaGlsZHJlbltzdGVwXSEua2V5IHx8IHN0ZXAsXG4gICAgICBleHRlcm5hbFByb3BzLFxuICAgICAgRGF0ZS5ub3coKSxcbiAgICAgIFtdXG4gICAgKTtcbiAgICByZXR1cm4gW2Z1bmNdO1xuICB9KTtcblxuICBjb25zdCBwcmV2U3RlcCA9IHVzZVJlZihzdGVwKTtcbiAgY29uc3QgcHJldkNoaWxkID0gdXNlUmVmKGNoaWxkcmVuW3N0ZXBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4ge1xuICAgIHByZXZDaGlsZC5jdXJyZW50ID0gY2hpbGRyZW5bc3RlcF07XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICBjb25zdCB0cmFuc2l0aW9uQ2xhc3NlcyA9XG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTVxuICAgICAgICA/IHByb3BzLmNvbmZpZ1xuICAgICAgICA6IFRyYW5zaXRpb25DbGFzc2VzKFxuICAgICAgICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgfHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFXG4gICAgICAgICAgKTtcblxuICAgIGlmIChcbiAgICAgIHByZXZDaGlsZC5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgICBjaGlsZHJlbltzdGVwXT8ua2V5ID09PSBwcmV2Q2hpbGQuY3VycmVudD8ua2V5IC8vIEknbSByZW5kZXJpbmcgdGhlIHNhbWUgc2NyZWVuXG4gICAgKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBwcmV2U3RlcC5jdXJyZW50ID0gc3RlcDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gY2hpbGRyZW5bc3RlcF0/LmtleSB8fCBzdGVwO1xuXG4gICAgaWYgKHByZXZTdGVwLmN1cnJlbnQgIT09IHN0ZXAgJiYgbG9ja1RyYW5zaXRpb25XaWR0aClcbiAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS53aWR0aCA9IGAke1xuICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCEuY2xpZW50V2lkdGhcbiAgICAgIH1weGA7XG5cbiAgICBpZiAocHJldlN0ZXAuY3VycmVudCAhPT0gc3RlcCAmJiBsb2NrVHJhbnNpdGlvbkhlaWdodClcbiAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS5oZWlnaHQgPSBgJHtcbiAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLmNsaWVudEhlaWdodFxuICAgICAgfXB4YDtcbiAgICBjb25zdCB0cmFuc2l0aW9uTWFzayA9XG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLk1BU0tcbiAgICAgICAgPyBwcm9wcy5tYXNrRmFjdG9yeShjb250YWluZXJSZWYuY3VycmVudCEpXG4gICAgICAgIDogXCJcIjtcbiAgICBjb25zdCBpbnNlcnRlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgIC8qKiBUaGlzIHJ1bnMgb24gYmFja3dhcmRzICovXG4gICAgaWYgKHByZXZTdGVwLmN1cnJlbnQgPiBzdGVwKSB7XG4gICAgICBjb25zdCBzdGVwVG9SZW1vdmUgPSBwcmV2U3RlcC5jdXJyZW50O1xuICAgICAgY29uc3QgcHJldktleVRvUmVtb3ZlID0gcHJldkNoaWxkLmN1cnJlbnQ/LmtleSB8fCBzdGVwVG9SZW1vdmU7XG4gICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwKSA9PiB7XG4gICAgICAgIGNvbnN0IGVudGVyaW5nU2NyZWVuUmVmID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICAgICAgICBjb25zdCBbRmlyc3ROZXh0U2NyZWVuLCAuLi5yZXN0T2ZTY3JlZW5zXSA9XG4gICAgICAgICAgc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcC5maWx0ZXIoXG4gICAgICAgICAgICAoYSkgPT4gYT8uYXNzb2NpYXRlZEtleSAhPT0gU3RyaW5nKGtleSlcbiAgICAgICAgICApO1xuXG4gICAgICAgIGlmIChGaXJzdE5leHRTY3JlZW4pIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKEZpcnN0TmV4dFNjcmVlbi5leHRlcm5hbFByb3BzLCB7XG4gICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwidHJhbnNpdGlvbi1jb250YWluZXJcIixcbiAgICAgICAgICAgIHN0eWxlOiB7IC4uLmNvbnRlbnRTdHlsZSwgV2Via2l0TWFza0ltYWdlOiB0cmFuc2l0aW9uTWFzayB9LFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBgJHt0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RXhpdGluZ31gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZExpc3RlbmVyKGV2ZW50OiBBbmltYXRpb25FdmVudDxIVE1MRGl2RWxlbWVudD4pIHtcbiAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBpc0FuaW1hdGlvbkZyb21FeHBlY3RlZFN0YXRlID1cbiAgICAgICAgICAgIGVudGVyaW5nU2NyZWVuUmVmLmN1cnJlbnQ/LmNsYXNzTGlzdC5jb250YWlucyhcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbkNsYXNzZXMuYmFja3dhcmQuZWxlbWVudEVudGVyaW5nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGVudGVyaW5nU2NyZWVuUmVmLmN1cnJlbnQ/LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RW50ZXJpbmdcbiAgICAgICAgICApO1xuICAgICAgICAgIHNldENoaWxkcmVuV3JhcHBlcnMoKHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCkgPT4ge1xuICAgICAgICAgICAgaWYgKG9uRGlzY2FyZFN0ZXApIHtcbiAgICAgICAgICAgICAgaWYgKGlzQW5pbWF0aW9uRnJvbUV4cGVjdGVkU3RhdGUpXG4gICAgICAgICAgICAgICAgb25EaXNjYXJkU3RlcChwcmV2S2V5VG9SZW1vdmUsIGluc2VydGVkQXQpO1xuICAgICAgICAgICAgICBpZiAoRmlyc3ROZXh0U2NyZWVuICYmIEZpcnN0TmV4dFNjcmVlbi50b1JlbW92ZUtleXMpXG4gICAgICAgICAgICAgICAgRmlyc3ROZXh0U2NyZWVuLnRvUmVtb3ZlS2V5cy5mb3JFYWNoKG9uRGlzY2FyZFN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZC5maWx0ZXIoKHMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkS2VlcCA9XG4gICAgICAgICAgICAgICAgKHM/LmFzc29jaWF0ZWRLZXkgIT09IFN0cmluZyhwcmV2S2V5VG9SZW1vdmUpICYmXG4gICAgICAgICAgICAgICAgICAhRmlyc3ROZXh0U2NyZWVuPy50b1JlbW92ZUtleXM/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgIChrKSA9PiBTdHJpbmcoaykgPT09IFN0cmluZyhzPy5hc3NvY2lhdGVkS2V5KVxuICAgICAgICAgICAgICAgICAgKSkgfHxcbiAgICAgICAgICAgICAgICBzIS5jcmVhdGVkQXQhID4gaW5zZXJ0ZWRBdDtcbiAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEtlZXA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBcImFuaW1hdGlvbmVuZFwiLFxuICAgICAgICAgICAgYW5pbWF0aW9uRW5kTGlzdGVuZXIgYXMgYW55XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wc0NvbnRhaW5lciA9IHtcbiAgICAgICAgICByZWY6IGVudGVyaW5nU2NyZWVuUmVmLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0cmFuc2l0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBjbGFzc05hbWU6IGAke3RyYW5zaXRpb25DbGFzc2VzLmJhY2t3YXJkLmVsZW1lbnRFbnRlcmluZ30gJHtjb250ZW50Q2xhc3NOYW1lfWAsXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiBhbmltYXRpb25FbmRMaXN0ZW5lcixcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3V3JhcHBlciA9IENoaWxkcmVuV3JhcHBlckZhY3RvcnkoXG4gICAgICAgICAgKHsgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYgey4uLnByb3BzQ29udGFpbmVyfT57Y2hpbGRyZW59PC9kaXY+O1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHByb3BzQ29udGFpbmVyLFxuICAgICAgICAgIGluc2VydGVkQXQsXG4gICAgICAgICAgW3ByZXZLZXlUb1JlbW92ZSwgLi4uKEZpcnN0TmV4dFNjcmVlbj8udG9SZW1vdmVLZXlzIHx8IFtdKV1cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKEZpcnN0TmV4dFNjcmVlbilcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3V3JhcHBlcixcbiAgICAgICAgICAgIEZpcnN0TmV4dFNjcmVlbiB8fFxuICAgICAgICAgICAgICBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgICAgICAgICAgICgpID0+IDxSZWFjdC5GcmFnbWVudCAvPixcbiAgICAgICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIGluc2VydGVkQXRcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC4uLnJlc3RPZlNjcmVlbnMsXG4gICAgICAgICAgXTtcbiAgICAgICAgZWxzZSByZXR1cm4gW25ld1dyYXBwZXJdO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwcmV2U3RlcC5jdXJyZW50IDwgc3RlcCkge1xuICAgICAgY29uc3Qgc3RlcFRvRGVsZXRlID0gcHJldlN0ZXAuY3VycmVudDtcbiAgICAgIGNvbnN0IHByZXZLZXlUb1JlbW92ZSA9IFN0cmluZyhwcmV2Q2hpbGQuY3VycmVudD8ua2V5IHx8IHN0ZXBUb0RlbGV0ZSk7XG4gICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RJbmRleCA9IHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXAubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgbGFzdFdyYXBwZXIgPSBzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwW2xhc3RJbmRleF07XG4gICAgICAgIGNvbnN0IG5leHRTY3JlZW5SZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgICAgIGlmIChsYXN0V3JhcHBlcikge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24obGFzdFdyYXBwZXIuZXh0ZXJuYWxQcm9wcywge1xuICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRyYW5zaXRpb24tY29udGFpbmVyXCIsXG4gICAgICAgICAgICBzdHlsZTogeyAuLi5jb250ZW50U3R5bGUsIFdlYmtpdE1hc2tJbWFnZTogdHJhbnNpdGlvbk1hc2sgfSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogYCR7Y29udGVudENsYXNzTmFtZX0gJHt0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFeGl0aW5nfWAsXG4gICAgICAgICAgICBvbkFuaW1hdGlvbkVuZDogKGU6IEFuaW1hdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlLnRhcmdldCAhPT0gZS5jdXJyZW50VGFyZ2V0KSByZXR1cm47XG4gICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFbnRlcmluZylcbiAgICAgICAgICAgICAgICBuZXh0U2NyZWVuUmVmLmN1cnJlbnQ/LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFbnRlcmluZ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChvbkRpc2NhcmRTdGVwKSBvbkRpc2NhcmRTdGVwKHByZXZLZXlUb1JlbW92ZSwgaW5zZXJ0ZWRBdCk7XG4gICAgICAgICAgICAgIHNldENoaWxkcmVuV3JhcHBlcnMoKHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAocykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRNYW50YWluID1cbiAgICAgICAgICAgICAgICAgICAgICBzPy5hc3NvY2lhdGVkS2V5ICE9PSBTdHJpbmcocHJldktleVRvUmVtb3ZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIHMuY3JlYXRlZEF0ID4gaW5zZXJ0ZWRBdDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZE1hbnRhaW47XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvcHNDb250YWluZXIgPSB7XG4gICAgICAgICAgcmVmOiBuZXh0U2NyZWVuUmVmLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0cmFuc2l0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uY29udGVudFN0eWxlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xhc3NOYW1lOiBgJHtjb250ZW50Q2xhc3NOYW1lfSAke3RyYW5zaXRpb25DbGFzc2VzLmZvcndhcmQuZWxlbWVudEVudGVyaW5nfWAsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5ld1dyYXBwZXIgPSBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgICAgICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IHsuLi5wcm9wc0NvbnRhaW5lcn0+e2NoaWxkcmVufTwvZGl2PjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBwcm9wc0NvbnRhaW5lcixcbiAgICAgICAgICBpbnNlcnRlZEF0XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4uc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcC5zbGljZSgwLCBsYXN0SW5kZXgpLFxuICAgICAgICAgIGxhc3RXcmFwcGVyIHx8XG4gICAgICAgICAgICBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgICAgICAgICAoKSA9PiA8UmVhY3QuRnJhZ21lbnQgLz4sXG4gICAgICAgICAgICAgIFwiZmFsbGJhY2tcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgIGluc2VydGVkQXRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgbmV3V3JhcHBlcixcbiAgICAgICAgXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcHJldlN0ZXAuY3VycmVudCA9IHN0ZXA7XG4gICAgfTtcbiAgfSwgW3N0ZXBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGlsZHJlbldyYXBwZXJzLmxlbmd0aCA9PT0gMSAmJiBsb2NrVHJhbnNpdGlvbldpZHRoKVxuICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLndpZHRoID0gXCJcIjtcbiAgICBpZiAoY2hpbGRyZW5XcmFwcGVycy5sZW5ndGggPT09IDEgJiYgbG9ja1RyYW5zaXRpb25IZWlnaHQpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUuaGVpZ2h0ID0gXCJcIjtcbiAgfSwgW2NoaWxkcmVuV3JhcHBlcnMubGVuZ3RoICE9PSAxXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQgJiZcbiAgICAgIFwiZWxlbWVudElkXCIgaW4gcHJvcHNcbiAgICApIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBgIyR7cHJvcHMuZWxlbWVudElkfWBcbiAgICAgICkgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyUmVmLmN1cnJlbnQhO1xuXG4gICAgICAgIGNvbnN0IG9mZnNldFggPVxuICAgICAgICAgIGVsZW1lbnQuY2xpZW50TGVmdCArIGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGggLyAyO1xuICAgICAgICBjb25zdCBvZmZzZXRZID1cbiAgICAgICAgICBlbGVtZW50LmNsaWVudFRvcCArIGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBwZXJjZW50WCA9IChvZmZzZXRYICogMTAwKSAvIGNsaWVudFdpZHRoO1xuICAgICAgICBjb25zdCBwZXJjZW50WSA9IChvZmZzZXRZICogMTAwKSAvIGNsaWVudEhlaWdodDtcbiAgICAgICAgcHJlVHJhbnNpdGlvbkRldGFpbHMuY3VycmVudC50cmFuc2Zvcm1PcmlnaW4gPSBgJHtwZXJjZW50WH0lICR7cGVyY2VudFl9JWA7XG5cbiAgICAgICAgT2JqZWN0LmFzc2lnbihjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUsIHtcbiAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46IGAke3BlcmNlbnRYfSUgJHtwZXJjZW50WX0lYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLCBwcmVUcmFuc2l0aW9uRGV0YWlscy5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGRyZW5XcmFwcGVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS5vdmVyZmxvdyA9IFwiXCI7XG4gICAgfVxuICB9LCBbY2hpbGRyZW5XcmFwcGVycy5sZW5ndGhdKTtcblxuICBjb25zdCBwcm9wc1RvU3ByZWFkID0geyAuLi5wcm9wcyB9IGFzIGFueTtcbiAgZGVsZXRlIHByb3BzVG9TcHJlYWQudHJhbnNpdGlvblR5cGU7XG4gIGRlbGV0ZSBwcm9wc1RvU3ByZWFkLmNvbmZpZztcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8c2VjdGlvblxuICAgICAgICB7Li4ucHJvcHNUb1NwcmVhZH1cbiAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0OiB7IG9mZnNldFRvcCwgb2Zmc2V0TGVmdCwgY2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCB9LFxuICAgICAgICAgICAgY2xpZW50WCxcbiAgICAgICAgICAgIGNsaWVudFksXG4gICAgICAgICAgfSA9IGU7XG4gICAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IGNsaWVudFggLSBvZmZzZXRMZWZ0O1xuICAgICAgICAgIGNvbnN0IG9mZnNldFkgPSBjbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgICAgIGNvbnN0IHBlcmNlbnRYID0gKG9mZnNldFggKiAxMDApIC8gY2xpZW50V2lkdGg7XG4gICAgICAgICAgY29uc3QgcGVyY2VudFkgPSAob2Zmc2V0WSAqIDEwMCkgLyBjbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT1cbiAgICAgICAgICAgICAgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQgfHxcbiAgICAgICAgICAgIHByb3BzLnRyYW5zaXRpb25UeXBlID09PVxuICAgICAgICAgICAgICBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fQ0xJQ0tfT1JJR0lOXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcHJlVHJhbnNpdGlvbkRldGFpbHMuY3VycmVudC50cmFuc2Zvcm1PcmlnaW4gPSBgJHtwZXJjZW50WH0lICR7cGVyY2VudFl9JWA7XG4gICAgICAgICAgaWYgKHByb3BzLm9uQ2xpY2spIHByb3BzLm9uQ2xpY2soZSBhcyBhbnkpO1xuICAgICAgICB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cInRyYW5zaXRpb24tY29udHJvbGxlclwiXG4gICAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlcy5zZWN0aW9ufSAke2NsYXNzTmFtZX1gfVxuICAgICAgPlxuICAgICAgICB7KGNoaWxkcmVuV3JhcHBlcnMgYXMgQ2hpbGRyZW5XcmFwcGVyW10pLm1hcCgoV3JhcHBlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkVG9SZW5kZXIgPSBjaGlsZHJlbi5maW5kKFxuICAgICAgICAgICAgKGEsIGkpID0+IChhPy5rZXkgfHwgaSkgPT09IFdyYXBwZXI/LmFzc29jaWF0ZWRLZXlcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8V3JhcHBlciBrZXk9e2Ake1dyYXBwZXIhLmFzc29jaWF0ZWRLZXl9ICR7V3JhcHBlci5jcmVhdGVkQXR9YH0+XG4gICAgICAgICAgICAgIDw+e2NoaWxkVG9SZW5kZXJ9PC8+XG4gICAgICAgICAgICA8L1dyYXBwZXI+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcyB7XG4gIFNMSURFLFxuICBQT1BfRlJPTV9DTElDS19PUklHSU4sXG4gIFBPUF9GUk9NX0VMRU1FTlRfSUQsXG4gIEZBREUsXG4gIENPSU5fRkxJUCxcbiAgTUFTSyxcbiAgQ1VTVE9NLFxufVxuXG4vKipcbiAqIEhhbmRsZXMgdGhlIHRyYW5zaXRpb24gYmV0d2VlbiBtdWx0aXBsZSBjaGlsZHJlbiBhbmQgcmVjeWNsaW5nIG9mIGVsZW1lbnRzXG4gKiovXG5jb25zdCBUcmFuc2l0aW9uID0gZm9yd2FyZFJlZihfVHJhbnNpdGlvbik7XG5leHBvcnQgZGVmYXVsdCBUcmFuc2l0aW9uO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBZUEsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUE4QyxNQUFBRyxTQUFBO0FBQUEs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
@@ -6,7 +6,7 @@
6
6
  }
7
7
  position: relative;
8
8
  display: flex;
9
- align-items: center;
9
+ align-items: flex-start;
10
10
  > div {
11
11
  display: flex;
12
12
  flex-direction: column;
@@ -1,5 +1,8 @@
1
1
  import React, { Key, RefObject } from "react";
2
2
  import { TransitionProps, TransitionTypeDefinitions } from "../Transition/Transition";
3
+ /**
4
+ * This component receives child with key and applies a transition when the key changes, allowing to swap elements with a fine transition.
5
+ **/
3
6
  declare const UncontrolledTransition: React.ForwardRefExoticComponent<({
4
7
  className?: string | undefined;
5
8
  contentClassName?: string | undefined;