@projectcor/maia-components 2.35.9 → 2.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +2 -0
  2. package/lib/components/atoms/ActionableButton.js +1 -6
  3. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +12 -1
  4. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +127 -5
  5. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +2 -29
  6. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +24 -33
  7. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +2 -19
  8. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +4 -14
  9. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +3 -12
  10. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +4 -20
  11. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -18
  12. package/lib/components/atoms/MAIAInput/MAIAInput.js +243 -42
  13. package/lib/components/atoms/MAIAInput/styles.js +41 -44
  14. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +208 -0
  15. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +77 -0
  16. package/lib/components/atoms/SkillsDropdown/index.js +2 -0
  17. package/lib/components/atoms/icons/PlusIcon.js +29 -0
  18. package/lib/components/atoms/icons/SkillCreatedByIcon.js +20 -0
  19. package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +23 -0
  20. package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +23 -0
  21. package/lib/components/atoms/icons/SkillsNavIcon.js +4 -7
  22. package/lib/components/atoms/icons/index.js +5 -1
  23. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +5 -3
  24. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +5 -16
  25. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +2 -23
  26. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +5 -33
  27. package/lib/components/molecules/ChatAIHome/styles.js +2 -11
  28. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +20 -31
  29. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +2 -7
  30. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +61 -21
  31. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  32. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +1 -8
  33. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +9 -15
  34. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +3 -14
  35. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -2
  36. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +11 -17
  37. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +5 -14
  38. package/lib/components/molecules/ChatAIModal/layout.js +2 -2
  39. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +2 -12
  40. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +3 -3
  41. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +334 -272
  42. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +132 -109
  43. package/lib/components/molecules/ChatFooter/ChatFooter.js +57 -63
  44. package/lib/components/molecules/ChatFooter/styles.js +6 -12
  45. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +1 -3
  46. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +5 -15
  47. package/lib/components/molecules/Sidebar/Sidebar.js +15 -7
  48. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +3 -3
  49. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +11 -30
  50. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +25 -31
  51. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +430 -203
  52. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +131 -74
  53. package/lib/components/organisms/ChatAI/ChatAI.js +1 -6
  54. package/lib/constants/config.js +1 -4
  55. package/lib/constants/permissions/utils.js +3 -3
  56. package/lib/hooks/useChatManager/useChatManager.js +34 -55
  57. package/lib/hooks/useContextMentions.js +96 -56
  58. package/lib/hooks/useEntitySearch.js +92 -278
  59. package/lib/hooks/useEvent.js +15 -2
  60. package/lib/hooks/useMentionAllowedTypes.js +9 -25
  61. package/lib/hooks/useMentionPopover.js +9 -33
  62. package/lib/hooks/useSkillsCatalog.js +66 -0
  63. package/lib/lang/br/index.js +35 -12
  64. package/lib/lang/en/index.js +35 -12
  65. package/lib/lang/es/index.js +36 -13
  66. package/lib/lang/fr/index.js +36 -13
  67. package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
  68. package/lib/services/maia/Orchestrator/orchestrator.js +11 -5
  69. package/lib/services/maia/Skills/createSkill.js +1 -1
  70. package/lib/services/maia/Skills/getSkills.js +70 -40
  71. package/lib/services/maia/Skills/updateSkill.js +1 -1
  72. package/lib/services/maia/index.js +2 -4
  73. package/lib/services/utils/fetchCOR.js +57 -106
  74. package/lib/services/utils/index.js +1 -2
  75. package/lib/store/faqsStore.types.js +1 -1
  76. package/lib/store/index.js +1 -2
  77. package/lib/store/sessions/sessionStreamManager.js +35 -61
  78. package/lib/store/sessions/sessions.types.js +1 -1
  79. package/lib/store/useChatsStore.js +3 -3
  80. package/lib/test/buttonMock.js +22 -0
  81. package/lib/test/fetchPolyfill.js +160 -0
  82. package/lib/test/fileMock.js +2 -0
  83. package/lib/test/global-context.js +49 -0
  84. package/lib/test/iconMock.js +19 -0
  85. package/lib/test/mockFetch.js +49 -0
  86. package/lib/test/portalRoot.js +13 -0
  87. package/lib/test/styleMock.js +2 -0
  88. package/lib/test/test-utils.js +26 -0
  89. package/lib/test/tooltipMock.js +11 -0
  90. package/lib/types/Chat.js +1 -1
  91. package/lib/types/FrequentlyAskedQuestion.js +1 -1
  92. package/lib/types/skill.js +1 -1
  93. package/lib/utils/contextMentionTriggers.js +2 -5
  94. package/lib/utils/renderContextMentions.js +39 -18
  95. package/package.json +9 -6
  96. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.js +0 -28
  97. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.styles.js +0 -47
  98. package/lib/components/molecules/UsageBlockedBanner/index.js +0 -2
  99. package/lib/services/maia/Usage/getUsage.js +0 -45
  100. package/lib/services/maia/Usage/index.js +0 -6
  101. package/lib/services/utils/MaiaApiError.js +0 -34
  102. package/lib/store/useUsageStore.js +0 -111
  103. package/lib/types/usage.js +0 -9
  104. package/lib/utils/usageBlockedMessage.js +0 -11
@@ -12,21 +12,14 @@ var customInputStyles = css(["outline:none;background:linear-gradient(white,whit
12
12
  export var StyledMAIAInputWrapper = styled.div.withConfig({
13
13
  displayName: "styles__StyledMAIAInputWrapper",
14
14
  componentId: "sc-cs6u9w-0"
15
- })(["box-sizing:border-box;position:relative;width:100%;border-radius:8px;transition:border-color 0.2s ease,box-shadow 0.2s ease;padding:8px;cursor:", ";display:flex;min-height:58px;max-height:", "px;gap:", "px;flex-direction:column;align-items:flex-start;overflow:hidden;border:1px solid ", ";box-shadow:none;", " &:focus-within{", "}", " ", ""], function (_ref) {
15
+ })(["box-sizing:border-box;position:relative;width:100%;border-radius:8px;transition:border-color 0.2s ease,box-shadow 0.2s ease;padding:8px;cursor:", ";display:flex;min-height:58px;max-height:", "px;gap:", "px;flex-direction:column;align-items:flex-start;overflow:hidden;border:1px solid ", ";box-shadow:none;&:focus-within{", "}", " ", ""], function (_ref) {
16
16
  var disabled = _ref.disabled;
17
17
  return disabled ? 'not-allowed' : 'auto';
18
- }, MAIA_INPUT_WRAPPER_MAX_HEIGHT_PX, MAIA_INPUT_CHIPS_CONTENT_GAP_PX, colors.text.disabled, function (_ref2) {
19
- var $usageBlocked = _ref2.$usageBlocked;
20
- return $usageBlocked && css(["position:relative;z-index:1;border-color:#b3b3b3;background:#ffffff;&:focus-within{border:1px solid #b3b3b3;box-shadow:none;animation:none;background:#ffffff;}"]);
18
+ }, MAIA_INPUT_WRAPPER_MAX_HEIGHT_PX, MAIA_INPUT_CHIPS_CONTENT_GAP_PX, colors.text.disabled, customInputStyles, function (_ref2) {
19
+ var hasAttachments = _ref2.hasAttachments;
20
+ return hasAttachments && css(["", ""], customInputStyles);
21
21
  }, function (_ref3) {
22
- var $usageBlocked = _ref3.$usageBlocked;
23
- return !$usageBlocked && css(["", ""], customInputStyles);
24
- }, function (_ref4) {
25
- var hasAttachments = _ref4.hasAttachments,
26
- $usageBlocked = _ref4.$usageBlocked;
27
- return hasAttachments && !$usageBlocked && css(["", ""], customInputStyles);
28
- }, function (_ref5) {
29
- var $fileDragActive = _ref5.$fileDragActive;
22
+ var $fileDragActive = _ref3.$fileDragActive;
30
23
  return $fileDragActive && css(["border:1px dashed ", ";background:rgba(45,119,189,0.06);box-shadow:none;animation:none;"], BLUE_IA_COLORS[500]);
31
24
  });
32
25
  export var StyledMAIADropOverlay = styled.div.withConfig({
@@ -82,14 +75,14 @@ export var StyledMAIAInput = styled.textarea.withConfig({
82
75
  export var StyledMAIASendButton = styled(ClearButton).withConfig({
83
76
  displayName: "styles__StyledMAIASendButton",
84
77
  componentId: "sc-cs6u9w-11"
85
- })(["background-color:", ";height:30px;width:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:background-color 0.2s ease;svg{transition:transform 0.2s ease;", "}&:hover{background-color:", " !important;}&:active{transform:scale(0.9);svg{transition:transform 0.2s ease;path{stroke:white !important;}}}transition:transform 0.2s ease;&:disabled{cursor:not-allowed;background-color:#f2f2f2 !important;", " &:hover{svg{transform:none;}}&:active{transform:none;}}"], function (_ref6) {
86
- var hasValues = _ref6.hasValues;
78
+ })(["background-color:", ";height:30px;width:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:background-color 0.2s ease;svg{transition:transform 0.2s ease;", "}&:hover{background-color:", " !important;}&:active{transform:scale(0.9);svg{transition:transform 0.2s ease;path{stroke:white !important;}}}transition:transform 0.2s ease;&:disabled{cursor:not-allowed;background-color:#f2f2f2 !important;", " &:hover{svg{transform:none;}}&:active{transform:none;}}"], function (_ref4) {
79
+ var hasValues = _ref4.hasValues;
87
80
  return hasValues ? "".concat(BLUE_IA_COLORS[500]) : '#f2f2f2';
88
- }, function (_ref7) {
89
- var hasValues = _ref7.hasValues;
81
+ }, function (_ref5) {
82
+ var hasValues = _ref5.hasValues;
90
83
  return hasValues && css(["path{stroke:white !important;}"]);
91
- }, BLUE_IA_COLORS[700], function (_ref8) {
92
- var hasValues = _ref8.hasValues;
84
+ }, BLUE_IA_COLORS[700], function (_ref6) {
85
+ var hasValues = _ref6.hasValues;
93
86
  return !hasValues && css(["svg path{stroke:", " !important;}"], colors.text.disabled);
94
87
  });
95
88
  export var SCMIWrapperAttachments = styled.div.withConfig({
@@ -123,67 +116,71 @@ export var PlusMenuToolsRow = styled.div.withConfig({
123
116
  export var PlusToggleButton = styled.button.withConfig({
124
117
  displayName: "styles__PlusToggleButton",
125
118
  componentId: "sc-cs6u9w-19"
126
- })(["display:flex;width:32px;height:32px;box-sizing:border-box;padding:0;justify-content:center;align-items:center;border:none;border-radius:8px;background:", ";cursor:pointer;flex-shrink:0;&:hover:not(:disabled),&:focus-visible:not(:disabled){background:#f2f2f2;}&:disabled{cursor:not-allowed;opacity:0.5;}&:focus-visible{outline:none;}"], function (_ref9) {
127
- var $menuOpen = _ref9.$menuOpen;
119
+ })(["display:flex;width:32px;height:32px;box-sizing:border-box;padding:0;justify-content:center;align-items:center;border:none;border-radius:8px;background:", ";cursor:pointer;flex-shrink:0;&:hover:not(:disabled),&:focus-visible:not(:disabled){background:#f2f2f2;}&:disabled{cursor:not-allowed;opacity:0.5;}&:focus-visible{outline:none;}"], function (_ref7) {
120
+ var $menuOpen = _ref7.$menuOpen;
128
121
  return $menuOpen ? '#f2f2f2' : colors.white.main;
129
122
  });
123
+ export var SkillsToggleButton = styled.button.withConfig({
124
+ displayName: "styles__SkillsToggleButton",
125
+ componentId: "sc-cs6u9w-20"
126
+ })(["display:flex;align-items:center;gap:var(--cor-space-space-xs,4px);box-sizing:border-box;height:32px;padding:0 8px;border:none;border-radius:8px;background:", ";cursor:pointer;flex-shrink:0;color:var(--cor-color-icon-subtle,#808080);font-family:var(--cor-typography-font-family,'Work Sans');font-size:var(--cor-typography-font-size-sm,14px);font-style:normal;font-weight:400;line-height:var(--cor-typography-line-height-20,20px);letter-spacing:var(--cor-typography-letter-spacing-0,0);white-space:nowrap;& > svg{flex-shrink:0;}&:hover:not(:disabled),&:focus-visible:not(:disabled){background:#f2f2f2;}&:disabled{cursor:not-allowed;opacity:0.5;}&:focus-visible{outline:none;}"], colors.white.main);
130
127
  export var PlusMenuPaper = styled.div.withConfig({
131
128
  displayName: "styles__PlusMenuPaper",
132
- componentId: "sc-cs6u9w-20"
129
+ componentId: "sc-cs6u9w-21"
133
130
  })(["display:flex;flex-direction:column;align-items:stretch;width:209px;box-sizing:border-box;padding:12px 8px;border-radius:4px;border:1px solid ", ";background:", ";box-shadow:0 1px 4px rgba(0,0,0,0.08),0 1px 4px rgba(0,0,0,0.04);"], colors.colors.gray.light, colors.white.main);
134
131
  export var PlusMenuInnerColumn = styled.div.withConfig({
135
132
  displayName: "styles__PlusMenuInnerColumn",
136
- componentId: "sc-cs6u9w-21"
133
+ componentId: "sc-cs6u9w-22"
137
134
  })(["display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;align-self:stretch;"]);
138
135
  export var PlusMenuDivider = styled.div.withConfig({
139
136
  displayName: "styles__PlusMenuDivider",
140
- componentId: "sc-cs6u9w-22"
137
+ componentId: "sc-cs6u9w-23"
141
138
  })(["width:170px;height:1px;background:", ";flex-shrink:0;"], colors.colors.gray.light);
142
139
  export var PlusMenuItemButton = styled.button.withConfig({
143
140
  displayName: "styles__PlusMenuItemButton",
144
- componentId: "sc-cs6u9w-23"
145
- })(["display:flex;width:100%;padding:8px;align-items:center;gap:8px;border:none;background:transparent;border-radius:4px;cursor:pointer;font-family:inherit;text-align:left;box-sizing:border-box;&:hover:not(:disabled){background:", ";}&:disabled{cursor:not-allowed;opacity:0.5;}&:focus-visible{outline:2px solid ", ";outline-offset:-2px;}"], colors.background.secondary, BLUE_IA_COLORS[500]);
141
+ componentId: "sc-cs6u9w-24"
142
+ })(["display:flex;width:100%;padding:8px;align-items:center;gap:8px;border:none;background:transparent;border-radius:4px;cursor:pointer;font-family:inherit;text-align:left;box-sizing:border-box;&:hover{background:", ";}&:focus-visible{outline:2px solid ", ";outline-offset:-2px;}"], colors.background.secondary, BLUE_IA_COLORS[500]);
146
143
  export var PlusMenuItemLabel = styled.span.withConfig({
147
144
  displayName: "styles__PlusMenuItemLabel",
148
- componentId: "sc-cs6u9w-24"
145
+ componentId: "sc-cs6u9w-25"
149
146
  })(["flex:1;min-width:0;color:", ";font-size:14px;font-weight:400;line-height:20px;"], MAIA_CHAT_INPUT_UI.menuIcon);
150
147
  export var ActiveToolChipRoot = styled.div.withConfig({
151
148
  displayName: "styles__ActiveToolChipRoot",
152
- componentId: "sc-cs6u9w-25"
153
- })(["display:flex;max-width:144px;padding:4px 8px;align-items:center;gap:2px;box-sizing:border-box;cursor:default;border-radius:", ";background:", ";box-shadow:", ";transition:background-color 0.22s ease,border-radius 0.22s ease,box-shadow 0.22s ease;", ""], function (_ref0) {
154
- var $hovered = _ref0.$hovered;
149
+ componentId: "sc-cs6u9w-26"
150
+ })(["display:flex;max-width:144px;padding:4px 8px;align-items:center;gap:2px;box-sizing:border-box;cursor:default;border-radius:", ";background:", ";box-shadow:", ";transition:background-color 0.22s ease,border-radius 0.22s ease,box-shadow 0.22s ease;", ""], function (_ref8) {
151
+ var $hovered = _ref8.$hovered;
155
152
  return $hovered ? '16px' : '0';
156
- }, function (_ref1) {
157
- var $hovered = _ref1.$hovered;
153
+ }, function (_ref9) {
154
+ var $hovered = _ref9.$hovered;
158
155
  return $hovered ? MAIA_CHAT_INPUT_UI.chipSurfaceHover : 'transparent';
159
- }, function (_ref10) {
160
- var $hovered = _ref10.$hovered;
156
+ }, function (_ref0) {
157
+ var $hovered = _ref0.$hovered;
161
158
  return $hovered ? '0 1px 3px rgba(0, 0, 0, 0.07)' : 'none';
162
- }, function (_ref11) {
163
- var $exiting = _ref11.$exiting;
159
+ }, function (_ref1) {
160
+ var $exiting = _ref1.$exiting;
164
161
  return $exiting && css(["pointer-events:none;animation:", " 0.22s ease forwards;"], activeToolChipOut);
165
162
  });
166
163
  export var ActiveToolChipIconButton = styled.button.withConfig({
167
164
  displayName: "styles__ActiveToolChipIconButton",
168
- componentId: "sc-cs6u9w-26"
169
- })(["display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;background:transparent;cursor:pointer;flex-shrink:0;transition:transform 0.2s ease;svg{display:block;}", " &:hover{", "}&:focus-visible{outline:2px solid ", ";outline-offset:1px;}"], function (_ref12) {
170
- var $closeShown = _ref12.$closeShown;
165
+ componentId: "sc-cs6u9w-27"
166
+ })(["display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;background:transparent;cursor:pointer;flex-shrink:0;transition:transform 0.2s ease;svg{display:block;}", " &:hover{", "}&:focus-visible{outline:2px solid ", ";outline-offset:1px;}"], function (_ref10) {
167
+ var $closeShown = _ref10.$closeShown;
171
168
  return $closeShown && css(["svg{animation:", " 0.24s ease forwards;}"], activeToolChipCloseIconIn);
172
- }, function (_ref13) {
173
- var $closeShown = _ref13.$closeShown;
169
+ }, function (_ref11) {
170
+ var $closeShown = _ref11.$closeShown;
174
171
  return $closeShown && css(["transform:scale(1.06);"]);
175
172
  }, BLUE_IA_COLORS[500]);
176
173
  export var ActiveToolChipLabel = styled.span.withConfig({
177
174
  displayName: "styles__ActiveToolChipLabel",
178
- componentId: "sc-cs6u9w-27"
175
+ componentId: "sc-cs6u9w-28"
179
176
  })(["color:", ";font-size:12px;line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:default;user-select:none;"], colors.text.primary);
180
177
  var stopPulse = keyframes(["0%,100%{transform:scale(1);}50%{transform:scale(0.9);}"]);
181
178
  export var StyledMAIAStopIcon = styled.div.withConfig({
182
179
  displayName: "styles__StyledMAIAStopIcon",
183
- componentId: "sc-cs6u9w-28"
180
+ componentId: "sc-cs6u9w-29"
184
181
  })(["width:13px;height:13px;background-color:#8c8c8c;border-radius:2px;animation:", " 1.6s ease-in-out infinite;"], stopPulse);
185
182
  export var StyledMAIAStopButton = styled.button.withConfig({
186
183
  displayName: "styles__StyledMAIAStopButton",
187
- componentId: "sc-cs6u9w-29"
184
+ componentId: "sc-cs6u9w-30"
188
185
  })(["background:none;border:none;padding:0;font:inherit;background-color:#f2f2f2 !important;height:30px;width:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;&:hover{background-color:", " !important;", "{background-color:", " !important;}}&:disabled{cursor:not-allowed;background-color:#f2f2f2 !important;opacity:0.6;}"], BLUE_IA_COLORS[50], StyledMAIAStopIcon, BLUE_IA_COLORS[500]);
189
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJrZXlmcmFtZXMiLCJjb2xvcnMiLCJCTFVFX0lBX0NPTE9SUyIsIk1BSUFfQ0hBVF9JTlBVVF9VSSIsInNjcm9sbGFibGVTdHlsZXMiLCJDbGVhckJ1dHRvbiIsIk1BSUFfSU5QVVRfQ0hJUFNfQ09OVEVOVF9HQVBfUFgiLCJNQUlBX0lOUFVUX0lOVEVSTkFMX0dBUF9QWCIsIk1BSUFfSU5QVVRfV1JBUFBFUl9NQVhfSEVJR0hUX1BYIiwiZmxvdyIsImFjdGl2ZVRvb2xDaGlwQ2xvc2VJY29uSW4iLCJhY3RpdmVUb29sQ2hpcE91dCIsImN1c3RvbUlucHV0U3R5bGVzIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiX3JlZiIsImRpc2FibGVkIiwidGV4dCIsIl9yZWYyIiwiJHVzYWdlQmxvY2tlZCIsIl9yZWYzIiwiX3JlZjQiLCJoYXNBdHRhY2htZW50cyIsIl9yZWY1IiwiJGZpbGVEcmFnQWN0aXZlIiwiU3R5bGVkTUFJQURyb3BPdmVybGF5IiwiU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCIsIlNDSW5wdXRFZGl0b3JDZWxsIiwiU0NJbnB1dENoaXBzUm93IiwiU0NJbnB1dFRvb2xiYXJSb3ciLCJTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCIsIlNDSW5wdXRNZXRhSW5kaWNhdG9ycyIsIlNDSW5wdXRNZXRhSWNvbkJ1dHRvbiIsInNwYW4iLCJ3aGl0ZSIsIm1haW4iLCJTdHlsZWRNQUlBSW5wdXQiLCJ0ZXh0YXJlYSIsInNlY29uZGFyeSIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiX3JlZjYiLCJoYXNWYWx1ZXMiLCJjb25jYXQiLCJfcmVmNyIsIl9yZWY4IiwiU0NNSVdyYXBwZXJBdHRhY2htZW50cyIsIlNDTUlBdHRhY2htZW50IiwiU0NNSUF0dGFjaG1lbnRJY29uIiwiU0NNSUF0dGFjaG1lbnRGaWxlSWNvbiIsIlNDTUlBdHRhY2htZW50RGVsZXRlSWNvbiIsImJ1dHRvbiIsIlNDTUlBdHRhY2htZW50TmFtZSIsIlBsdXNNZW51VG9vbHNSb3ciLCJQbHVzVG9nZ2xlQnV0dG9uIiwiX3JlZjkiLCIkbWVudU9wZW4iLCJQbHVzTWVudVBhcGVyIiwiZ3JheSIsImxpZ2h0IiwiUGx1c01lbnVJbm5lckNvbHVtbiIsIlBsdXNNZW51RGl2aWRlciIsIlBsdXNNZW51SXRlbUJ1dHRvbiIsImJhY2tncm91bmQiLCJQbHVzTWVudUl0ZW1MYWJlbCIsIm1lbnVJY29uIiwiQWN0aXZlVG9vbENoaXBSb290IiwiX3JlZjAiLCIkaG92ZXJlZCIsIl9yZWYxIiwiY2hpcFN1cmZhY2VIb3ZlciIsIl9yZWYxMCIsIl9yZWYxMSIsIiRleGl0aW5nIiwiQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uIiwiX3JlZjEyIiwiJGNsb3NlU2hvd24iLCJfcmVmMTMiLCJBY3RpdmVUb29sQ2hpcExhYmVsIiwicHJpbWFyeSIsInN0b3BQdWxzZSIsIlN0eWxlZE1BSUFTdG9wSWNvbiIsIlN0eWxlZE1BSUFTdG9wQnV0dG9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L3N0eWxlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG5pbXBvcnQgc3R5bGVkLCB7IGNzcywga2V5ZnJhbWVzIH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnXG5pbXBvcnQgY29sb3JzIGZyb20gJ0Bwcm9qZWN0Y29yL3RoZW1lL2xpYi9iYXNlL2NvbG9ycydcbmltcG9ydCB7IEJMVUVfSUFfQ09MT1JTLCBNQUlBX0NIQVRfSU5QVVRfVUkgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvY29uZmlnJ1xuaW1wb3J0IHsgc2Nyb2xsYWJsZVN0eWxlcyB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9zaGFyZWQvc2Nyb2xsYWJsZSdcbmltcG9ydCB7IENsZWFyQnV0dG9uIH0gZnJvbSAnLi4vQ2xlYXJCdXR0b24nXG5pbXBvcnQge1xuICBNQUlBX0lOUFVUX0NISVBTX0NPTlRFTlRfR0FQX1BYLFxuICBNQUlBX0lOUFVUX0lOVEVSTkFMX0dBUF9QWCxcbiAgTUFJQV9JTlBVVF9XUkFQUEVSX01BWF9IRUlHSFRfUFgsXG59IGZyb20gJy4vbWFpYUlucHV0TGF5b3V0J1xuXG5leHBvcnQgY29uc3QgZmxvdyA9IGtleWZyYW1lc2BcbiAgMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246XG4gICAgICAwJSAwJSxcbiAgICAgIDAlIDUwJTtcbiAgfVxuICA1MCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246XG4gICAgICAwJSAwJSxcbiAgICAgIDEwMCUgNTAlO1xuICB9XG4gIDEwMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246XG4gICAgICAwJSAwJSxcbiAgICAgIDAlIDUwJTtcbiAgfVxuYFxuXG5jb25zdCBhY3RpdmVUb29sQ2hpcENsb3NlSWNvbkluID0ga2V5ZnJhbWVzYFxuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwLjU1O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC44Mik7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuYFxuXG5jb25zdCBhY3RpdmVUb29sQ2hpcE91dCA9IGtleWZyYW1lc2BcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkyKSB0cmFuc2xhdGVZKDNweCk7XG4gIH1cbmBcblxuY29uc3QgY3VzdG9tSW5wdXRTdHlsZXMgPSBjc3NgXG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6XG4gICAgbGluZWFyLWdyYWRpZW50KHdoaXRlLCB3aGl0ZSkgcGFkZGluZy1ib3gsXG4gICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjNGQzNTY5IDAlLCAjODc0MGJmIDU5LjYyJSwgIzJkNzdiZCAxMDAlKSBib3JkZXItYm94O1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1zaXplOlxuICAgIDEwMCUgMTAwJSxcbiAgICAyMDAlIDEwMCU7XG4gIGFuaW1hdGlvbjogJHtmbG93fSAzcyBlYXNlIGluZmluaXRlO1xuICBib3gtc2hhZG93OlxuICAgIDNweCA0cHggMTRweCAwIHJnYmEoMTM1LCA2NCwgMTkxLCAwLjE1KSxcbiAgICAtM3B4IC00cHggMTRweCAwIHJnYmEoNDUsIDExOSwgMTg5LCAwLjE1KTtcbmBcblxuZXhwb3J0IGNvbnN0IFN0eWxlZE1BSUFJbnB1dFdyYXBwZXIgPSBzdHlsZWQuZGl2PHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gICR1c2FnZUJsb2NrZWQ/OiBib29sZWFuXG4gIGFsaWduQnV0dG9ucz86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcbiAgaGFzQXR0YWNobWVudHM6IGJvb2xlYW5cbiAgLyoqIEVzdGFkbyBpbmljaWFsOiB0b29sYmFyIGVuIHVuYSBzb2xhIGzDrW5lYSBzaW4gYWRqdW50b3MgbmkgdG9vbHMgZGVsICsgbmkgbXVsdGlsaW5lICovXG4gIGNvbXBhY3RTaW5nbGVSb3dUb29sYmFyPzogYm9vbGVhblxuICAkZmlsZURyYWdBY3RpdmU/OiBib29sZWFuXG59PmBcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICB0cmFuc2l0aW9uOlxuICAgIGJvcmRlci1jb2xvciAwLjJzIGVhc2UsXG4gICAgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG4gIHBhZGRpbmc6IDhweDtcbiAgY3Vyc29yOiAkeyh7IGRpc2FibGVkIH0pID0+IChkaXNhYmxlZCA/ICdub3QtYWxsb3dlZCcgOiAnYXV0bycpfTtcbiAgZGlzcGxheTogZmxleDtcbiAgbWluLWhlaWdodDogNThweDtcbiAgbWF4LWhlaWdodDogJHtNQUlBX0lOUFVUX1dSQVBQRVJfTUFYX0hFSUdIVF9QWH1weDtcbiAgZ2FwOiAke01BSUFfSU5QVVRfQ0hJUFNfQ09OVEVOVF9HQVBfUFh9cHg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIGJvcmRlcjogMXB4IHNvbGlkICR7Y29sb3JzLnRleHQuZGlzYWJsZWR9O1xuICBib3gtc2hhZG93OiBub25lO1xuXG4gICR7KHsgJHVzYWdlQmxvY2tlZCB9KSA9PlxuICAgICR1c2FnZUJsb2NrZWQgJiZcbiAgICBjc3NgXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjYjNiM2IzO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcblxuICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYjNiM2IzO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICB9XG4gICAgYH1cblxuICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgJHsoeyAkdXNhZ2VCbG9ja2VkIH0pID0+XG4gICAgICAhJHVzYWdlQmxvY2tlZCAmJlxuICAgICAgY3NzYFxuICAgICAgICAke2N1c3RvbUlucHV0U3R5bGVzfVxuICAgICAgYH1cbiAgfVxuXG4gICR7KHsgaGFzQXR0YWNobWVudHMsICR1c2FnZUJsb2NrZWQgfSkgPT5cbiAgICBoYXNBdHRhY2htZW50cyAmJlxuICAgICEkdXNhZ2VCbG9ja2VkICYmXG4gICAgY3NzYFxuICAgICAgJHtjdXN0b21JbnB1dFN0eWxlc31cbiAgICBgfVxuXG4gICR7KHsgJGZpbGVEcmFnQWN0aXZlIH0pID0+XG4gICAgJGZpbGVEcmFnQWN0aXZlICYmXG4gICAgY3NzYFxuICAgICAgYm9yZGVyOiAxcHggZGFzaGVkICR7QkxVRV9JQV9DT0xPUlNbNTAwXX07XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDQ1LCAxMTksIDE4OSwgMC4wNik7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgIGB9XG5gXG5cbmV4cG9ydCBjb25zdCBTdHlsZWRNQUlBRHJvcE92ZXJsYXkgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICB6LWluZGV4OiAyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAke0JMVUVfSUFfQ09MT1JTWzcwMF19O1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbiAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuYFxuXG4vKiogVG9vbGJhciBmaWphIGVuIDIgZmlsYXM6IGlucHV0IGFycmliYSwgKyAvIHNlbmQgYWJham8gKHRvb2xiYXIgbm8gc2Nyb2xsZWEpLiAqL1xuZXhwb3J0IGNvbnN0IFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBncmlkO1xuICB3aWR0aDogMTAwJTtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmciBhdXRvO1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgwLCBhdXRvKSBhdXRvO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgcm93LWdhcDogJHtNQUlBX0lOUFVUX0lOVEVSTkFMX0dBUF9QWH1weDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgZmxleDogMSAxIGF1dG87XG4gIG1pbi1oZWlnaHQ6IDA7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gXG5cbi8qKiBDZWxkYSBkZWwgZWRpdG9yIChlbCBzY3JvbGwgdml2ZSBlbiBlbCBjb250ZW50ZWRpdGFibGUpLiAqL1xuZXhwb3J0IGNvbnN0IFNDSW5wdXRFZGl0b3JDZWxsID0gc3R5bGVkLmRpdmBcbiAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgZ3JpZC1yb3c6IDE7XG4gIG1pbi13aWR0aDogMDtcbiAgbWluLWhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmBcblxuLyoqIEZpbGEgY29tcGFydGlkYTogY2hpcCBkZSBjb250ZXh0byArIGNoaXBzIGRlIGF0dGFjaG1lbnRzICh3cmFwKS4gKi9cbmV4cG9ydCBjb25zdCBTQ0lucHV0Q2hpcHNSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcbiAgZ2FwOiA0cHg7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1pbi13aWR0aDogMDtcbiAgcGFkZGluZy1sZWZ0OiA0cHg7XG5gXG5cbi8qKiBGaWxhIGluZmVyaW9yIGRlIGJvdG9uZXM6IHNpZW1wcmUgdmlzaWJsZSwgbnVuY2Egc2Nyb2xsZWEgY29uIGVsIHRleHRvLiAqL1xuZXhwb3J0IGNvbnN0IFNDSW5wdXRUb29sYmFyUm93ID0gc3R5bGVkLmRpdmBcbiAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgZ3JpZC1yb3c6IDI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZ2FwOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBmbGV4LXNocmluazogMDtcbiAgbWluLWhlaWdodDogMDtcbmBcblxuZXhwb3J0IGNvbnN0IFN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xuICBmbGV4LXNocmluazogMDtcbmBcblxuZXhwb3J0IGNvbnN0IFN0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbiAganVzdGlmeS1zZWxmOiBlbmQ7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbmBcblxuLyoqIEluZGljYWRvcmVzIGEgbGEgaXpxdWllcmRhIGRlbCBzZW5kIChhY2Nlc28gQ09SIC8gbW9kZWxvKSBwYXJhIGFnZW50ZXMgY3VzdG9tLiAqL1xuZXhwb3J0IGNvbnN0IFNDSW5wdXRNZXRhSW5kaWNhdG9ycyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogOHB4O1xuICBmbGV4LXNocmluazogMDtcbmBcblxuZXhwb3J0IGNvbnN0IFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiA9IHN0eWxlZC5zcGFuYFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMzBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBwYWRkaW5nOiAwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYmFja2dyb3VuZDogJHtjb2xvcnMud2hpdGUubWFpbn07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGN1cnNvcjogZGVmYXVsdDtcbmBcblxuZXhwb3J0IGNvbnN0IFN0eWxlZE1BSUFJbnB1dCA9IHN0eWxlZC50ZXh0YXJlYTx7XG4gIGFsaWduQnV0dG9ucz86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCdcbiAgJHRvb2xiYXJMYXlvdXRWYXJpYW50PzogJ3N0YWNrZWRSb3dzJ1xufT5gXG4gICR7c2Nyb2xsYWJsZVN0eWxlc31cbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgcGFkZGluZzogMDtcbiAgcmVzaXplOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIG1pbi1oZWlnaHQ6IDIwcHg7XG4gIG1heC1oZWlnaHQ6IDE3MHB4O1xuICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICBncmlkLXJvdzogMTtcbiAgbWluLXdpZHRoOiAwO1xuICBsaW5lLWhlaWdodDogMjBweDtcblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogJHtjb2xvcnMudGV4dC5zZWNvbmRhcnl9O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjIxcHg7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFN0eWxlZE1BSUFTZW5kQnV0dG9uID0gc3R5bGVkKENsZWFyQnV0dG9uKTx7IGhhc1ZhbHVlcz86IGJvb2xlYW4gfT5gXG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgaGFzVmFsdWVzIH0pID0+IChoYXNWYWx1ZXMgPyBgJHtCTFVFX0lBX0NPTE9SU1s1MDBdfWAgOiAnI2YyZjJmMicpfTtcbiAgaGVpZ2h0OiAzMHB4O1xuICB3aWR0aDogMzBweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG5cbiAgc3ZnIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuICAgICR7KHsgaGFzVmFsdWVzIH0pID0+XG4gICAgICBoYXNWYWx1ZXMgJiZcbiAgICAgIGNzc2BcbiAgICAgICAgcGF0aCB7XG4gICAgICAgICAgc3Ryb2tlOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICBgfVxuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtCTFVFX0lBX0NPTE9SU1s3MDBdfSAhaW1wb3J0YW50O1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcbiAgICBzdmcge1xuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcbiAgICAgIHBhdGgge1xuICAgICAgICBzdHJva2U6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjIgIWltcG9ydGFudDtcblxuICAgICR7KHsgaGFzVmFsdWVzIH0pID0+XG4gICAgICAhaGFzVmFsdWVzICYmXG4gICAgICBjc3NgXG4gICAgICAgIHN2ZyBwYXRoIHtcbiAgICAgICAgICBzdHJva2U6ICR7Y29sb3JzLnRleHQuZGlzYWJsZWR9ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIGB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIHN2ZyB7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTQ01JV3JhcHBlckF0dGFjaG1lbnRzID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAxMnB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYFxuXG5leHBvcnQgY29uc3QgU0NNSUF0dGFjaG1lbnQgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMjRweDtcbiAgbWF4LXdpZHRoOiAxMThweDtcbiAgcGFkZGluZzogNnB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDJweDtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWluLXdpZHRoOiAwO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmMmYyZjI7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFNDTUlBdHRhY2htZW50SWNvbiA9IHN0eWxlZC5zcGFuYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxNHB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICBzdmcsXG4gIGltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFNDTUlBdHRhY2htZW50RmlsZUljb24gPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuXG4gIHN2ZyB7XG4gICAgd2lkdGg6IDEzcHg7XG4gICAgaGVpZ2h0OiAxM3B4O1xuICB9XG5cbiAgJHtTQ01JQXR0YWNobWVudH06aG92ZXIgJiB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NNSUF0dGFjaG1lbnREZWxldGVJY29uID0gc3R5bGVkLmJ1dHRvbmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogIzY2NjY2NjtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuXG4gIHN2ZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcbiAgfVxuXG4gICR7U0NNSUF0dGFjaG1lbnR9OmhvdmVyICYge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIH1cblxuICAmOmhvdmVyIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA2KTtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NNSUF0dGFjaG1lbnROYW1lID0gc3R5bGVkLnNwYW5gXG4gIGZsZXg6IDEgMSBhdXRvO1xuICBtaW4td2lkdGg6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBjb2xvcjogIzY2NjY2NjtcbiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuYFxuXG5leHBvcnQgY29uc3QgUGx1c01lbnVUb29sc1JvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogOHB4O1xuYFxuXG5leHBvcnQgY29uc3QgUGx1c1RvZ2dsZUJ1dHRvbiA9IHN0eWxlZC5idXR0b248eyAkbWVudU9wZW46IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDMycHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDA7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYmFja2dyb3VuZDogJHsoeyAkbWVudU9wZW4gfSkgPT4gKCRtZW51T3BlbiA/ICcjZjJmMmYyJyA6IGNvbG9ycy53aGl0ZS5tYWluKX07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmxleC1zaHJpbms6IDA7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1cy12aXNpYmxlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjJmMmYyO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cblxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFBsdXNNZW51UGFwZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgd2lkdGg6IDIwOXB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAxMnB4IDhweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAke2NvbG9ycy5jb2xvcnMuZ3JheS5saWdodH07XG4gIGJhY2tncm91bmQ6ICR7Y29sb3JzLndoaXRlLm1haW59O1xuICBib3gtc2hhZG93OlxuICAgIDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDgpLFxuICAgIDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuYFxuXG5leHBvcnQgY29uc3QgUGx1c01lbnVJbm5lckNvbHVtbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDRweDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbmBcblxuZXhwb3J0IGNvbnN0IFBsdXNNZW51RGl2aWRlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxNzBweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQ6ICR7Y29sb3JzLmNvbG9ycy5ncmF5LmxpZ2h0fTtcbiAgZmxleC1zaHJpbms6IDA7XG5gXG5cbmV4cG9ydCBjb25zdCBQbHVzTWVudUl0ZW1CdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogOHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6ICR7Y29sb3JzLmJhY2tncm91bmQuc2Vjb25kYXJ5fTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG5cbiAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgJHtCTFVFX0lBX0NPTE9SU1s1MDBdfTtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgUGx1c01lbnVJdGVtTGFiZWwgPSBzdHlsZWQuc3BhbmBcbiAgZmxleDogMTtcbiAgbWluLXdpZHRoOiAwO1xuICBjb2xvcjogJHtNQUlBX0NIQVRfSU5QVVRfVUkubWVudUljb259O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuYFxuXG5leHBvcnQgY29uc3QgQWN0aXZlVG9vbENoaXBSb290ID0gc3R5bGVkLmRpdjx7ICRob3ZlcmVkOiBib29sZWFuOyAkZXhpdGluZzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgbWF4LXdpZHRoOiAxNDRweDtcbiAgcGFkZGluZzogNHB4IDhweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAycHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyAkaG92ZXJlZCB9KSA9PiAoJGhvdmVyZWQgPyAnMTZweCcgOiAnMCcpfTtcbiAgYmFja2dyb3VuZDogJHsoeyAkaG92ZXJlZCB9KSA9PiAoJGhvdmVyZWQgPyBNQUlBX0NIQVRfSU5QVVRfVUkuY2hpcFN1cmZhY2VIb3ZlciA6ICd0cmFuc3BhcmVudCcpfTtcbiAgYm94LXNoYWRvdzogJHsoeyAkaG92ZXJlZCB9KSA9PiAoJGhvdmVyZWQgPyAnMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wNyknIDogJ25vbmUnKX07XG4gIHRyYW5zaXRpb246XG4gICAgYmFja2dyb3VuZC1jb2xvciAwLjIycyBlYXNlLFxuICAgIGJvcmRlci1yYWRpdXMgMC4yMnMgZWFzZSxcbiAgICBib3gtc2hhZG93IDAuMjJzIGVhc2U7XG5cbiAgJHsoeyAkZXhpdGluZyB9KSA9PlxuICAgICRleGl0aW5nICYmXG4gICAgY3NzYFxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBhbmltYXRpb246ICR7YWN0aXZlVG9vbENoaXBPdXR9IDAuMjJzIGVhc2UgZm9yd2FyZHM7XG4gICAgYH1cbmBcblxuZXhwb3J0IGNvbnN0IEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbiA9IHN0eWxlZC5idXR0b248eyAkY2xvc2VTaG93bjogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG5cbiAgc3ZnIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gICR7KHsgJGNsb3NlU2hvd24gfSkgPT5cbiAgICAkY2xvc2VTaG93biAmJlxuICAgIGNzc2BcbiAgICAgIHN2ZyB7XG4gICAgICAgIGFuaW1hdGlvbjogJHthY3RpdmVUb29sQ2hpcENsb3NlSWNvbklufSAwLjI0cyBlYXNlIGZvcndhcmRzO1xuICAgICAgfVxuICAgIGB9XG5cbiAgLyogU2NhbGUgc29sbyBjb24gbGEgY3J1eiB2aXNpYmxlIHkgaG92ZXIgc29icmUgZWxsYSAobm8gc29icmUgZWwgY2hpcC9pY29ubyBkZSB0b29sKSAqL1xuICAmOmhvdmVyIHtcbiAgICAkeyh7ICRjbG9zZVNob3duIH0pID0+XG4gICAgICAkY2xvc2VTaG93biAmJlxuICAgICAgY3NzYFxuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDYpO1xuICAgICAgYH1cbiAgfVxuXG4gICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkICR7QkxVRV9JQV9DT0xPUlNbNTAwXX07XG4gICAgb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgQWN0aXZlVG9vbENoaXBMYWJlbCA9IHN0eWxlZC5zcGFuYFxuICBjb2xvcjogJHtjb2xvcnMudGV4dC5wcmltYXJ5fTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMTZweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5gXG5jb25zdCBzdG9wUHVsc2UgPSBrZXlmcmFtZXNgXG4gIDAlLFxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xuICB9XG5gXG5leHBvcnQgY29uc3QgU3R5bGVkTUFJQVN0b3BJY29uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEzcHg7XG4gIGhlaWdodDogMTNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhjOGM4YztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBhbmltYXRpb246ICR7c3RvcFB1bHNlfSAxLjZzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuYFxuZXhwb3J0IGNvbnN0IFN0eWxlZE1BSUFTdG9wQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBmb250OiBpbmhlcml0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMzBweDtcbiAgd2lkdGg6IDMwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke0JMVUVfSUFfQ09MT1JTWzUwXX0gIWltcG9ydGFudDtcblxuICAgICR7U3R5bGVkTUFJQVN0b3BJY29ufSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke0JMVUVfSUFfQ09MT1JTWzUwMF19ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyICFpbXBvcnRhbnQ7XG4gICAgb3BhY2l0eTogMC42O1xuICB9XG5gXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsT0FBT0EsTUFBTSxJQUFJQyxHQUFHLEVBQUVDLFNBQVMs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
186
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJrZXlmcmFtZXMiLCJjb2xvcnMiLCJCTFVFX0lBX0NPTE9SUyIsIk1BSUFfQ0hBVF9JTlBVVF9VSSIsInNjcm9sbGFibGVTdHlsZXMiLCJDbGVhckJ1dHRvbiIsIk1BSUFfSU5QVVRfQ0hJUFNfQ09OVEVOVF9HQVBfUFgiLCJNQUlBX0lOUFVUX0lOVEVSTkFMX0dBUF9QWCIsIk1BSUFfSU5QVVRfV1JBUFBFUl9NQVhfSEVJR0hUX1BYIiwiZmxvdyIsImFjdGl2ZVRvb2xDaGlwQ2xvc2VJY29uSW4iLCJhY3RpdmVUb29sQ2hpcE91dCIsImN1c3RvbUlucHV0U3R5bGVzIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiX3JlZiIsImRpc2FibGVkIiwidGV4dCIsIl9yZWYyIiwiaGFzQXR0YWNobWVudHMiLCJfcmVmMyIsIiRmaWxlRHJhZ0FjdGl2ZSIsIlN0eWxlZE1BSUFEcm9wT3ZlcmxheSIsIlN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQiLCJTQ0lucHV0RWRpdG9yQ2VsbCIsIlNDSW5wdXRDaGlwc1JvdyIsIlNDSW5wdXRUb29sYmFyUm93IiwiU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbCIsIlN0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGwiLCJTQ0lucHV0TWV0YUluZGljYXRvcnMiLCJTQ0lucHV0TWV0YUljb25CdXR0b24iLCJzcGFuIiwid2hpdGUiLCJtYWluIiwiU3R5bGVkTUFJQUlucHV0IiwidGV4dGFyZWEiLCJzZWNvbmRhcnkiLCJTdHlsZWRNQUlBU2VuZEJ1dHRvbiIsIl9yZWY0IiwiaGFzVmFsdWVzIiwiY29uY2F0IiwiX3JlZjUiLCJfcmVmNiIsIlNDTUlXcmFwcGVyQXR0YWNobWVudHMiLCJTQ01JQXR0YWNobWVudCIsIlNDTUlBdHRhY2htZW50SWNvbiIsIlNDTUlBdHRhY2htZW50RmlsZUljb24iLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJidXR0b24iLCJTQ01JQXR0YWNobWVudE5hbWUiLCJQbHVzTWVudVRvb2xzUm93IiwiUGx1c1RvZ2dsZUJ1dHRvbiIsIl9yZWY3IiwiJG1lbnVPcGVuIiwiU2tpbGxzVG9nZ2xlQnV0dG9uIiwiUGx1c01lbnVQYXBlciIsImdyYXkiLCJsaWdodCIsIlBsdXNNZW51SW5uZXJDb2x1bW4iLCJQbHVzTWVudURpdmlkZXIiLCJQbHVzTWVudUl0ZW1CdXR0b24iLCJiYWNrZ3JvdW5kIiwiUGx1c01lbnVJdGVtTGFiZWwiLCJtZW51SWNvbiIsIkFjdGl2ZVRvb2xDaGlwUm9vdCIsIl9yZWY4IiwiJGhvdmVyZWQiLCJfcmVmOSIsImNoaXBTdXJmYWNlSG92ZXIiLCJfcmVmMCIsIl9yZWYxIiwiJGV4aXRpbmciLCJBY3RpdmVUb29sQ2hpcEljb25CdXR0b24iLCJfcmVmMTAiLCIkY2xvc2VTaG93biIsIl9yZWYxMSIsIkFjdGl2ZVRvb2xDaGlwTGFiZWwiLCJwcmltYXJ5Iiwic3RvcFB1bHNlIiwiU3R5bGVkTUFJQVN0b3BJY29uIiwiU3R5bGVkTUFJQVN0b3BCdXR0b24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9NQUlBSW5wdXQvc3R5bGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbmltcG9ydCBzdHlsZWQsIHsgY3NzLCBrZXlmcmFtZXMgfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcbmltcG9ydCBjb2xvcnMgZnJvbSAnQHByb2plY3Rjb3IvdGhlbWUvbGliL2Jhc2UvY29sb3JzJ1xuaW1wb3J0IHsgQkxVRV9JQV9DT0xPUlMsIE1BSUFfQ0hBVF9JTlBVVF9VSSB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9jb25maWcnXG5pbXBvcnQgeyBzY3JvbGxhYmxlU3R5bGVzIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL3NoYXJlZC9zY3JvbGxhYmxlJ1xuaW1wb3J0IHsgQ2xlYXJCdXR0b24gfSBmcm9tICcuLi9DbGVhckJ1dHRvbidcbmltcG9ydCB7XG4gIE1BSUFfSU5QVVRfQ0hJUFNfQ09OVEVOVF9HQVBfUFgsXG4gIE1BSUFfSU5QVVRfSU5URVJOQUxfR0FQX1BYLFxuICBNQUlBX0lOUFVUX1dSQVBQRVJfTUFYX0hFSUdIVF9QWCxcbn0gZnJvbSAnLi9tYWlhSW5wdXRMYXlvdXQnXG5cbmV4cG9ydCBjb25zdCBmbG93ID0ga2V5ZnJhbWVzYFxuICAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjpcbiAgICAgIDAlIDAlLFxuICAgICAgMCUgNTAlO1xuICB9XG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjpcbiAgICAgIDAlIDAlLFxuICAgICAgMTAwJSA1MCU7XG4gIH1cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjpcbiAgICAgIDAlIDAlLFxuICAgICAgMCUgNTAlO1xuICB9XG5gXG5cbmNvbnN0IGFjdGl2ZVRvb2xDaGlwQ2xvc2VJY29uSW4gPSBrZXlmcmFtZXNgXG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDAuNTU7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgyKTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG5gXG5cbmNvbnN0IGFjdGl2ZVRvb2xDaGlwT3V0ID0ga2V5ZnJhbWVzYFxuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSkgdHJhbnNsYXRlWSgwKTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTIpIHRyYW5zbGF0ZVkoM3B4KTtcbiAgfVxuYFxuXG5jb25zdCBjdXN0b21JbnB1dFN0eWxlcyA9IGNzc2BcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDpcbiAgICBsaW5lYXItZ3JhZGllbnQod2hpdGUsIHdoaXRlKSBwYWRkaW5nLWJveCxcbiAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICM0ZDM1NjkgMCUsICM4NzQwYmYgNTkuNjIlLCAjMmQ3N2JkIDEwMCUpIGJvcmRlci1ib3g7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLXNpemU6XG4gICAgMTAwJSAxMDAlLFxuICAgIDIwMCUgMTAwJTtcbiAgYW5pbWF0aW9uOiAke2Zsb3d9IDNzIGVhc2UgaW5maW5pdGU7XG4gIGJveC1zaGFkb3c6XG4gICAgM3B4IDRweCAxNHB4IDAgcmdiYSgxMzUsIDY0LCAxOTEsIDAuMTUpLFxuICAgIC0zcHggLTRweCAxNHB4IDAgcmdiYSg0NSwgMTE5LCAxODksIDAuMTUpO1xuYFxuXG5leHBvcnQgY29uc3QgU3R5bGVkTUFJQUlucHV0V3JhcHBlciA9IHN0eWxlZC5kaXY8e1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgYWxpZ25CdXR0b25zPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuICBoYXNBdHRhY2htZW50czogYm9vbGVhblxuICAvKiogRXN0YWRvIGluaWNpYWw6IHRvb2xiYXIgZW4gdW5hIHNvbGEgbMOtbmVhIHNpbiBhZGp1bnRvcyBuaSB0b29scyBkZWwgKyBuaSBtdWx0aWxpbmUgKi9cbiAgY29tcGFjdFNpbmdsZVJvd1Rvb2xiYXI/OiBib29sZWFuXG4gICRmaWxlRHJhZ0FjdGl2ZT86IGJvb2xlYW5cbn0+YFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHRyYW5zaXRpb246XG4gICAgYm9yZGVyLWNvbG9yIDAuMnMgZWFzZSxcbiAgICBib3gtc2hhZG93IDAuMnMgZWFzZTtcbiAgcGFkZGluZzogOHB4O1xuICBjdXJzb3I6ICR7KHsgZGlzYWJsZWQgfSkgPT4gKGRpc2FibGVkID8gJ25vdC1hbGxvd2VkJyA6ICdhdXRvJyl9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBtaW4taGVpZ2h0OiA1OHB4O1xuICBtYXgtaGVpZ2h0OiAke01BSUFfSU5QVVRfV1JBUFBFUl9NQVhfSEVJR0hUX1BYfXB4O1xuICBnYXA6ICR7TUFJQV9JTlBVVF9DSElQU19DT05URU5UX0dBUF9QWH1weDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJHtjb2xvcnMudGV4dC5kaXNhYmxlZH07XG4gIGJveC1zaGFkb3c6IG5vbmU7XG5cbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgICR7Y3VzdG9tSW5wdXRTdHlsZXN9XG4gIH1cblxuICAkeyh7IGhhc0F0dGFjaG1lbnRzIH0pID0+XG4gICAgaGFzQXR0YWNobWVudHMgJiZcbiAgICBjc3NgXG4gICAgICAke2N1c3RvbUlucHV0U3R5bGVzfVxuICAgIGB9XG5cbiAgJHsoeyAkZmlsZURyYWdBY3RpdmUgfSkgPT5cbiAgICAkZmlsZURyYWdBY3RpdmUgJiZcbiAgICBjc3NgXG4gICAgICBib3JkZXI6IDFweCBkYXNoZWQgJHtCTFVFX0lBX0NPTE9SU1s1MDBdfTtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoNDUsIDExOSwgMTg5LCAwLjA2KTtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgYH1cbmBcblxuZXhwb3J0IGNvbnN0IFN0eWxlZE1BSUFEcm9wT3ZlcmxheSA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBmb250LWZhbWlseTogJ1dvcmsgU2FucycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6ICR7QkxVRV9JQV9DT0xPUlNbNzAwXX07XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG5gXG5cbi8qKiBUb29sYmFyIGZpamEgZW4gMiBmaWxhczogaW5wdXQgYXJyaWJhLCArIC8gc2VuZCBhYmFqbyAodG9vbGJhciBubyBzY3JvbGxlYSkuICovXG5leHBvcnQgY29uc3QgU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIHdpZHRoOiAxMDAlO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyIGF1dG87XG4gIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDAsIGF1dG8pIGF1dG87XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICByb3ctZ2FwOiAke01BSUFfSU5QVVRfSU5URVJOQUxfR0FQX1BYfXB4O1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4OiAxIDEgYXV0bztcbiAgbWluLWhlaWdodDogMDtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmBcblxuLyoqIENlbGRhIGRlbCBlZGl0b3IgKGVsIHNjcm9sbCB2aXZlIGVuIGVsIGNvbnRlbnRlZGl0YWJsZSkuICovXG5leHBvcnQgY29uc3QgU0NJbnB1dEVkaXRvckNlbGwgPSBzdHlsZWQuZGl2YFxuICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICBncmlkLXJvdzogMTtcbiAgbWluLXdpZHRoOiAwO1xuICBtaW4taGVpZ2h0OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuYFxuXG4vKiogRmlsYSBjb21wYXJ0aWRhOiBjaGlwIGRlIGNvbnRleHRvICsgY2hpcHMgZGUgYXR0YWNobWVudHMgKHdyYXApLiAqL1xuZXhwb3J0IGNvbnN0IFNDSW5wdXRDaGlwc1JvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBnYXA6IDRweDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBmbGV4LXNocmluazogMDtcbiAgbWluLXdpZHRoOiAwO1xuICBwYWRkaW5nLWxlZnQ6IDRweDtcbmBcblxuLyoqIEZpbGEgaW5mZXJpb3IgZGUgYm90b25lczogc2llbXByZSB2aXNpYmxlLCBudW5jYSBzY3JvbGxlYSBjb24gZWwgdGV4dG8uICovXG5leHBvcnQgY29uc3QgU0NJbnB1dFRvb2xiYXJSb3cgPSBzdHlsZWQuZGl2YFxuICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICBncmlkLXJvdzogMjtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBtaW4taGVpZ2h0OiAwO1xuYFxuXG5leHBvcnQgY29uc3QgU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktc2VsZjogc3RhcnQ7XG4gIGZsZXgtc2hyaW5rOiAwO1xuYFxuXG5leHBvcnQgY29uc3QgU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogOHB4O1xuICBqdXN0aWZ5LXNlbGY6IGVuZDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuYFxuXG4vKiogSW5kaWNhZG9yZXMgYSBsYSBpenF1aWVyZGEgZGVsIHNlbmQgKGFjY2VzbyBDT1IgLyBtb2RlbG8pIHBhcmEgYWdlbnRlcyBjdXN0b20uICovXG5leHBvcnQgY29uc3QgU0NJbnB1dE1ldGFJbmRpY2F0b3JzID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuYFxuXG5leHBvcnQgY29uc3QgU0NJbnB1dE1ldGFJY29uQnV0dG9uID0gc3R5bGVkLnNwYW5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAzMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIHBhZGRpbmc6IDA7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LXNocmluazogMDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBiYWNrZ3JvdW5kOiAke2NvbG9ycy53aGl0ZS5tYWlufTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuYFxuXG5leHBvcnQgY29uc3QgU3R5bGVkTUFJQUlucHV0ID0gc3R5bGVkLnRleHRhcmVhPHtcbiAgYWxpZ25CdXR0b25zPzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJ1xuICAkdG9vbGJhckxheW91dFZhcmlhbnQ/OiAnc3RhY2tlZFJvd3MnXG59PmBcbiAgJHtzY3JvbGxhYmxlU3R5bGVzfVxuICB3aWR0aDogMTAwJTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwYWRkaW5nOiAwO1xuICByZXNpemU6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgbWluLWhlaWdodDogMjBweDtcbiAgbWF4LWhlaWdodDogMTcwcHg7XG4gIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gIGdyaWQtcm93OiAxO1xuICBtaW4td2lkdGg6IDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAke2NvbG9ycy50ZXh0LnNlY29uZGFyeX07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMjFweDtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU3R5bGVkTUFJQVNlbmRCdXR0b24gPSBzdHlsZWQoQ2xlYXJCdXR0b24pPHsgaGFzVmFsdWVzPzogYm9vbGVhbiB9PmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyBoYXNWYWx1ZXMgfSkgPT4gKGhhc1ZhbHVlcyA/IGAke0JMVUVfSUFfQ09MT1JTWzUwMF19YCA6ICcjZjJmMmYyJyl9O1xuICBoZWlnaHQ6IDMwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZTtcblxuICBzdmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG4gICAgJHsoeyBoYXNWYWx1ZXMgfSkgPT5cbiAgICAgIGhhc1ZhbHVlcyAmJlxuICAgICAgY3NzYFxuICAgICAgICBwYXRoIHtcbiAgICAgICAgICBzdHJva2U6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIGB9XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke0JMVUVfSUFfQ09MT1JTWzcwMF19ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAmOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xuICAgIHN2ZyB7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuICAgICAgcGF0aCB7XG4gICAgICAgIHN0cm9rZTogd2hpdGUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMiAhaW1wb3J0YW50O1xuXG4gICAgJHsoeyBoYXNWYWx1ZXMgfSkgPT5cbiAgICAgICFoYXNWYWx1ZXMgJiZcbiAgICAgIGNzc2BcbiAgICAgICAgc3ZnIHBhdGgge1xuICAgICAgICAgIHN0cm9rZTogJHtjb2xvcnMudGV4dC5kaXNhYmxlZH0gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgYH1cblxuICAgICY6aG92ZXIge1xuICAgICAgc3ZnIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICB9XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFNDTUlXcmFwcGVyQXR0YWNobWVudHMgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDEycHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gXG5cbmV4cG9ydCBjb25zdCBTQ01JQXR0YWNobWVudCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAyNHB4O1xuICBtYXgtd2lkdGg6IDExOHB4O1xuICBwYWRkaW5nOiA2cHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMnB4O1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtaW4td2lkdGg6IDA7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2YyZjJmMjtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NNSUF0dGFjaG1lbnRJY29uID0gc3R5bGVkLnNwYW5gXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDE0cHg7XG4gIGhlaWdodDogMTRweDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIHN2ZyxcbiAgaW1nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NNSUF0dGFjaG1lbnRGaWxlSWNvbiA9IHN0eWxlZC5zcGFuYFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG5cbiAgc3ZnIHtcbiAgICB3aWR0aDogMTNweDtcbiAgICBoZWlnaHQ6IDEzcHg7XG4gIH1cblxuICAke1NDTUlBdHRhY2htZW50fTpob3ZlciAmIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTQ01JQXR0YWNobWVudERlbGV0ZUljb24gPSBzdHlsZWQuYnV0dG9uYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjNjY2NjY2O1xuICBsaW5lLWhlaWdodDogMDtcbiAgb3BhY2l0eTogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG5cbiAgc3ZnIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuICB9XG5cbiAgJHtTQ01JQXR0YWNobWVudH06aG92ZXIgJiB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgfVxuXG4gICY6aG92ZXIgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDYpO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTQ01JQXR0YWNobWVudE5hbWUgPSBzdHlsZWQuc3BhbmBcbiAgZmxleDogMSAxIGF1dG87XG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGNvbG9yOiAjNjY2NjY2O1xuICBmb250LWZhbWlseTogJ1dvcmsgU2FucycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMTZweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG5gXG5cbmV4cG9ydCBjb25zdCBQbHVzTWVudVRvb2xzUm93ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG5gXG5cbmV4cG9ydCBjb25zdCBQbHVzVG9nZ2xlQnV0dG9uID0gc3R5bGVkLmJ1dHRvbjx7ICRtZW51T3BlbjogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMzJweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBiYWNrZ3JvdW5kOiAkeyh7ICRtZW51T3BlbiB9KSA9PiAoJG1lbnVPcGVuID8gJyNmMmYyZjInIDogY29sb3JzLndoaXRlLm1haW4pfTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmbGV4LXNocmluazogMDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzLXZpc2libGU6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6ICNmMmYyZjI7XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuXG4gICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU2tpbGxzVG9nZ2xlQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1jb3Itc3BhY2Utc3BhY2UteHMsIDRweCk7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGhlaWdodDogMzJweDtcbiAgcGFkZGluZzogMCA4cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBiYWNrZ3JvdW5kOiAke2NvbG9ycy53aGl0ZS5tYWlufTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmbGV4LXNocmluazogMDtcbiAgY29sb3I6IHZhcigtLWNvci1jb2xvci1pY29uLXN1YnRsZSwgIzgwODA4MCk7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1jb3ItdHlwb2dyYXBoeS1mb250LWZhbWlseSwgJ1dvcmsgU2FucycpO1xuICBmb250LXNpemU6IHZhcigtLWNvci10eXBvZ3JhcGh5LWZvbnQtc2l6ZS1zbSwgMTRweCk7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWNvci10eXBvZ3JhcGh5LWxpbmUtaGVpZ2h0LTIwLCAyMHB4KTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWNvci10eXBvZ3JhcGh5LWxldHRlci1zcGFjaW5nLTAsIDApO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICYgPiBzdmcge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICB9XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1cy12aXNpYmxlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjJmMmYyO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cblxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFBsdXNNZW51UGFwZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgd2lkdGg6IDIwOXB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAxMnB4IDhweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAke2NvbG9ycy5jb2xvcnMuZ3JheS5saWdodH07XG4gIGJhY2tncm91bmQ6ICR7Y29sb3JzLndoaXRlLm1haW59O1xuICBib3gtc2hhZG93OlxuICAgIDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDgpLFxuICAgIDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuYFxuXG5leHBvcnQgY29uc3QgUGx1c01lbnVJbm5lckNvbHVtbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDRweDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbmBcblxuZXhwb3J0IGNvbnN0IFBsdXNNZW51RGl2aWRlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxNzBweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQ6ICR7Y29sb3JzLmNvbG9ycy5ncmF5LmxpZ2h0fTtcbiAgZmxleC1zaHJpbms6IDA7XG5gXG5cbmV4cG9ydCBjb25zdCBQbHVzTWVudUl0ZW1CdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogOHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICR7Y29sb3JzLmJhY2tncm91bmQuc2Vjb25kYXJ5fTtcbiAgfVxuXG4gICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkICR7QkxVRV9JQV9DT0xPUlNbNTAwXX07XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFBsdXNNZW51SXRlbUxhYmVsID0gc3R5bGVkLnNwYW5gXG4gIGZsZXg6IDE7XG4gIG1pbi13aWR0aDogMDtcbiAgY29sb3I6ICR7TUFJQV9DSEFUX0lOUFVUX1VJLm1lbnVJY29ufTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMjBweDtcbmBcblxuZXhwb3J0IGNvbnN0IEFjdGl2ZVRvb2xDaGlwUm9vdCA9IHN0eWxlZC5kaXY8eyAkaG92ZXJlZDogYm9vbGVhbjsgJGV4aXRpbmc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1heC13aWR0aDogMTQ0cHg7XG4gIHBhZGRpbmc6IDRweCA4cHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgJGhvdmVyZWQgfSkgPT4gKCRob3ZlcmVkID8gJzE2cHgnIDogJzAnKX07XG4gIGJhY2tncm91bmQ6ICR7KHsgJGhvdmVyZWQgfSkgPT4gKCRob3ZlcmVkID8gTUFJQV9DSEFUX0lOUFVUX1VJLmNoaXBTdXJmYWNlSG92ZXIgOiAndHJhbnNwYXJlbnQnKX07XG4gIGJveC1zaGFkb3c6ICR7KHsgJGhvdmVyZWQgfSkgPT4gKCRob3ZlcmVkID8gJzAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDcpJyA6ICdub25lJyl9O1xuICB0cmFuc2l0aW9uOlxuICAgIGJhY2tncm91bmQtY29sb3IgMC4yMnMgZWFzZSxcbiAgICBib3JkZXItcmFkaXVzIDAuMjJzIGVhc2UsXG4gICAgYm94LXNoYWRvdyAwLjIycyBlYXNlO1xuXG4gICR7KHsgJGV4aXRpbmcgfSkgPT5cbiAgICAkZXhpdGluZyAmJlxuICAgIGNzc2BcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgYW5pbWF0aW9uOiAke2FjdGl2ZVRvb2xDaGlwT3V0fSAwLjIycyBlYXNlIGZvcndhcmRzO1xuICAgIGB9XG5gXG5cbmV4cG9ydCBjb25zdCBBY3RpdmVUb29sQ2hpcEljb25CdXR0b24gPSBzdHlsZWQuYnV0dG9uPHsgJGNsb3NlU2hvd246IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuXG4gIHN2ZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAkeyh7ICRjbG9zZVNob3duIH0pID0+XG4gICAgJGNsb3NlU2hvd24gJiZcbiAgICBjc3NgXG4gICAgICBzdmcge1xuICAgICAgICBhbmltYXRpb246ICR7YWN0aXZlVG9vbENoaXBDbG9zZUljb25Jbn0gMC4yNHMgZWFzZSBmb3J3YXJkcztcbiAgICAgIH1cbiAgICBgfVxuXG4gIC8qIFNjYWxlIHNvbG8gY29uIGxhIGNydXogdmlzaWJsZSB5IGhvdmVyIHNvYnJlIGVsbGEgKG5vIHNvYnJlIGVsIGNoaXAvaWNvbm8gZGUgdG9vbCkgKi9cbiAgJjpob3ZlciB7XG4gICAgJHsoeyAkY2xvc2VTaG93biB9KSA9PlxuICAgICAgJGNsb3NlU2hvd24gJiZcbiAgICAgIGNzc2BcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA2KTtcbiAgICAgIGB9XG4gIH1cblxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCAke0JMVUVfSUFfQ09MT1JTWzUwMF19O1xuICAgIG91dGxpbmUtb2Zmc2V0OiAxcHg7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IEFjdGl2ZVRvb2xDaGlwTGFiZWwgPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7Y29sb3JzLnRleHQucHJpbWFyeX07XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuYFxuY29uc3Qgc3RvcFB1bHNlID0ga2V5ZnJhbWVzYFxuICAwJSxcbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcbiAgfVxuYFxuZXhwb3J0IGNvbnN0IFN0eWxlZE1BSUFTdG9wSWNvbiA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxM3B4O1xuICBoZWlnaHQ6IDEzcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4YzhjOGM7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYW5pbWF0aW9uOiAke3N0b3BQdWxzZX0gMS42cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbmBcbmV4cG9ydCBjb25zdCBTdHlsZWRNQUlBU3RvcEJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgZm9udDogaW5oZXJpdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMiAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDMwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtCTFVFX0lBX0NPTE9SU1s1MF19ICFpbXBvcnRhbnQ7XG5cbiAgICAke1N0eWxlZE1BSUFTdG9wSWNvbn0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtCTFVFX0lBX0NPTE9SU1s1MDBdfSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMiAhaW1wb3J0YW50O1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgfVxuYFxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLE9BQU9BLE1BQU0sSUFBSUMsR0FBRyxFQUFFQyxTQUFTLFFBQVEsbUJBQW1CO0FBQzFELE9BQU9DLE1BQU0sTUFBTSxtQ0FBbUM7QUFDdEQsU0FBU0MsY0FBYyxFQUFFQyxrQkFBa0IsUUFBUSx3QkFBd0I7QUFDM0UsU0FBU0MsZ0JBQWdCLFFBQVEsbUNBQW1DO0FBQ3BFLFNBQVNDLFdBQVcsUUFBUSxnQkFBZ0I7QUFDNUMsU0FDRUMsK0JBQStCLEVBQy9CQywwQkFBMEIsRUFDMUJDLGdDQUFnQyxRQUMzQixtQkFBbUI7QUFFMUIsT0FBTyxJQUFNQyxJQUFJLEdBQUdULFNBQVMsMEhBZ0I1QjtBQUVELElBQU1VLHlCQUF5QixHQUFHVixTQUFTLGdGQVMxQztBQUVELElBQU1XLGlCQUFpQixHQUFHWCxTQUFTLDJHQVNsQztBQUVELElBQU1ZLGlCQUFpQixHQUFHYixHQUFHLHlVQVNkVSxJQUFJLENBSWxCO0FBRUQsT0FBTyxJQUFNSSxzQkFBc0IsR0FBR2YsTUFBTSxDQUFDZ0IsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLHVWQWdCcEMsVUFBQUMsSUFBQTtFQUFBLElBQUdDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO0VBQUEsT0FBUUEsUUFBUSxHQUFHLGFBQWEsR0FBRyxNQUFNO0FB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
@@ -0,0 +1,208 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ import { useEffect, useMemo, useRef, useState } from 'react';
6
+ import { InformationCircle } from '@projectcor/icons/lib/components/InformationCircle';
7
+ import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
8
+ import { useT } from '../../../hooks/useT';
9
+ import { PlusIcon } from '../icons/PlusIcon';
10
+ import { Skeleton } from '../Skeleton/Skeleton';
11
+ import { SCSKDAnchor, SCSKDCreateHeader, SCSKDCreateInfoIcon, SCSKDCreateRow, SCSKDDivider, SCSKDDropdown, SCSKDItem, SCSKDItemSubtitle, SCSKDItemTitle, SCSKDList, SCSKDMatchHighlight, SCSKDSkeletonList, SCSKDStateMessage } from './SkillsDropdown.styles';
12
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
+ var renderWithHighlight = function renderWithHighlight(text, query) {
14
+ var needle = query.trim().toLowerCase();
15
+ if (!needle) return text;
16
+ var haystack = text.toLowerCase();
17
+ if (haystack.indexOf(needle) === -1) return text;
18
+ var parts = [];
19
+ var cursor = 0;
20
+ var nextIdx = haystack.indexOf(needle, cursor);
21
+ var chunkKey = 0;
22
+ while (nextIdx !== -1) {
23
+ if (nextIdx > cursor) parts.push(text.slice(cursor, nextIdx));
24
+ parts.push(/*#__PURE__*/_jsx(SCSKDMatchHighlight, {
25
+ children: text.slice(nextIdx, nextIdx + needle.length)
26
+ }, "m-".concat(chunkKey)));
27
+ chunkKey += 1;
28
+ cursor = nextIdx + needle.length;
29
+ nextIdx = haystack.indexOf(needle, cursor);
30
+ }
31
+ if (cursor < text.length) parts.push(text.slice(cursor));
32
+ return parts;
33
+ };
34
+ export var SkillsDropdown = function SkillsDropdown(_ref) {
35
+ var skills = _ref.skills,
36
+ query = _ref.query,
37
+ _ref$loading = _ref.loading,
38
+ loading = _ref$loading === void 0 ? false : _ref$loading,
39
+ _ref$error = _ref.error,
40
+ error = _ref$error === void 0 ? false : _ref$error,
41
+ _ref$canCreate = _ref.canCreate,
42
+ canCreate = _ref$canCreate === void 0 ? false : _ref$canCreate,
43
+ onSelect = _ref.onSelect,
44
+ onCreate = _ref.onCreate,
45
+ onClose = _ref.onClose,
46
+ bottom = _ref.bottom,
47
+ left = _ref.left,
48
+ maxHeight = _ref.maxHeight,
49
+ zIndex = _ref.zIndex,
50
+ anchorRef = _ref.anchorRef;
51
+ var _useT = useT(),
52
+ t = _useT.t;
53
+ var _useState = useState(0),
54
+ _useState2 = _slicedToArray(_useState, 2),
55
+ highlightedIndex = _useState2[0],
56
+ setHighlightedIndex = _useState2[1];
57
+ var dropdownRef = useRef(null);
58
+ var itemRefs = useRef([]);
59
+ var filtered = useMemo(function () {
60
+ var normalized = query.trim().toLowerCase();
61
+ if (!normalized) return skills;
62
+ return skills.filter(function (s) {
63
+ return s.name.toLowerCase().includes(normalized);
64
+ });
65
+ }, [skills, query]);
66
+ useEffect(function () {
67
+ setHighlightedIndex(0);
68
+ }, [query]);
69
+ useEffect(function () {
70
+ itemRefs.current = itemRefs.current.slice(0, filtered.length);
71
+ }, [filtered.length]);
72
+ useEffect(function () {
73
+ var handlePointerDownOutside = function handlePointerDownOutside(mouseEvent) {
74
+ var _dropdownRef$current, _anchorRef$current;
75
+ var target = mouseEvent.target;
76
+ if (!target) return;
77
+ if ((_dropdownRef$current = dropdownRef.current) !== null && _dropdownRef$current !== void 0 && _dropdownRef$current.contains(target)) return;
78
+ if (anchorRef !== null && anchorRef !== void 0 && (_anchorRef$current = anchorRef.current) !== null && _anchorRef$current !== void 0 && _anchorRef$current.contains(target)) return;
79
+ onClose();
80
+ };
81
+ document.addEventListener('mousedown', handlePointerDownOutside);
82
+ return function () {
83
+ return document.removeEventListener('mousedown', handlePointerDownOutside);
84
+ };
85
+ }, [onClose, anchorRef]);
86
+ useEffect(function () {
87
+ var scrollHighlightedIntoView = function scrollHighlightedIntoView(index) {
88
+ requestAnimationFrame(function () {
89
+ var _itemRefs$current$ind;
90
+ (_itemRefs$current$ind = itemRefs.current[index]) === null || _itemRefs$current$ind === void 0 || _itemRefs$current$ind.scrollIntoView({
91
+ block: 'nearest'
92
+ });
93
+ });
94
+ };
95
+ var handler = function handler(e) {
96
+ if (e.key === 'ArrowDown') {
97
+ e.preventDefault();
98
+ var next = filtered.length ? (highlightedIndex + 1) % filtered.length : 0;
99
+ setHighlightedIndex(next);
100
+ scrollHighlightedIntoView(next);
101
+ } else if (e.key === 'ArrowUp') {
102
+ e.preventDefault();
103
+ var _next = filtered.length ? (highlightedIndex - 1 + filtered.length) % filtered.length : 0;
104
+ setHighlightedIndex(_next);
105
+ scrollHighlightedIntoView(_next);
106
+ } else if (e.key === 'Enter') {
107
+ if (filtered[highlightedIndex]) {
108
+ e.preventDefault();
109
+ e.stopPropagation();
110
+ onSelect(filtered[highlightedIndex]);
111
+ }
112
+ } else if (e.key === 'Escape') {
113
+ e.preventDefault();
114
+ onClose();
115
+ }
116
+ };
117
+ document.addEventListener('keydown', handler, true);
118
+ return function () {
119
+ return document.removeEventListener('keydown', handler, true);
120
+ };
121
+ }, [filtered, highlightedIndex, onSelect, onClose]);
122
+ var renderBody = function renderBody() {
123
+ if (loading) {
124
+ return /*#__PURE__*/_jsx(SCSKDSkeletonList, {
125
+ children: [0, 1, 2].map(function (i) {
126
+ return /*#__PURE__*/_jsx(Skeleton, {
127
+ variant: "text",
128
+ height: 20,
129
+ width: i === 0 ? '70%' : '55%'
130
+ }, i);
131
+ })
132
+ });
133
+ }
134
+ if (error) {
135
+ return /*#__PURE__*/_jsx(SCSKDStateMessage, {
136
+ children: t('mySkills.dropdownError')
137
+ });
138
+ }
139
+ if (filtered.length === 0) {
140
+ return /*#__PURE__*/_jsx(SCSKDStateMessage, {
141
+ children: t('mySkills.dropdownEmpty')
142
+ });
143
+ }
144
+ return /*#__PURE__*/_jsx(SCSKDList, {
145
+ children: filtered.map(function (skill, index) {
146
+ return /*#__PURE__*/_jsxs(SCSKDItem, {
147
+ ref: function ref(el) {
148
+ itemRefs.current[index] = el;
149
+ },
150
+ $index: index,
151
+ $highlighted: index === highlightedIndex,
152
+ onMouseEnter: function onMouseEnter() {
153
+ return setHighlightedIndex(index);
154
+ },
155
+ onClick: function onClick() {
156
+ return onSelect(skill);
157
+ },
158
+ type: "button",
159
+ children: [/*#__PURE__*/_jsx(SCSKDItemTitle, {
160
+ children: renderWithHighlight("#".concat(skill.name), query)
161
+ }), skill.description && /*#__PURE__*/_jsx(SCSKDItemSubtitle, {
162
+ children: skill.description
163
+ })]
164
+ }, skill.id);
165
+ })
166
+ });
167
+ };
168
+ return /*#__PURE__*/_jsx(SCSKDAnchor, {
169
+ $bottom: bottom,
170
+ $left: left,
171
+ $maxHeight: maxHeight,
172
+ $zIndex: zIndex,
173
+ onMouseDown: function onMouseDown(e) {
174
+ return e.stopPropagation();
175
+ },
176
+ children: /*#__PURE__*/_jsxs(SCSKDDropdown, {
177
+ ref: dropdownRef,
178
+ children: [canCreate && onCreate && /*#__PURE__*/_jsxs(_Fragment, {
179
+ children: [/*#__PURE__*/_jsxs(SCSKDCreateHeader, {
180
+ children: [/*#__PURE__*/_jsxs(SCSKDCreateRow, {
181
+ type: "button",
182
+ onClick: onCreate,
183
+ children: [/*#__PURE__*/_jsx(PlusIcon, {
184
+ width: 16,
185
+ height: 16
186
+ }), t('mySkills.dropdownCreate')]
187
+ }), /*#__PURE__*/_jsx(Tooltip, _objectSpread(_objectSpread({
188
+ title: t('mySkills.infoTooltip')
189
+ }, zIndex != null ? {
190
+ zIndex: zIndex + 1
191
+ } : {}), {}, {
192
+ children: /*#__PURE__*/_jsx(SCSKDCreateInfoIcon, {
193
+ "aria-label": t('mySkills.infoTooltip'),
194
+ children: /*#__PURE__*/_jsx(InformationCircle, {
195
+ color: "#808080",
196
+ width: 20,
197
+ height: 20
198
+ })
199
+ })
200
+ }))]
201
+ }), /*#__PURE__*/_jsx(SCSKDDivider, {
202
+ children: /*#__PURE__*/_jsx("span", {})
203
+ })]
204
+ }), renderBody()]
205
+ })
206
+ });
207
+ };
208
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJJbmZvcm1hdGlvbkNpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUIiwiUGx1c0ljb24iLCJTa2VsZXRvbiIsIlNDU0tEQW5jaG9yIiwiU0NTS0RDcmVhdGVIZWFkZXIiLCJTQ1NLRENyZWF0ZUluZm9JY29uIiwiU0NTS0RDcmVhdGVSb3ciLCJTQ1NLRERpdmlkZXIiLCJTQ1NLRERyb3Bkb3duIiwiU0NTS0RJdGVtIiwiU0NTS0RJdGVtU3VidGl0bGUiLCJTQ1NLREl0ZW1UaXRsZSIsIlNDU0tETGlzdCIsIlNDU0tETWF0Y2hIaWdobGlnaHQiLCJTQ1NLRFNrZWxldG9uTGlzdCIsIlNDU0tEU3RhdGVNZXNzYWdlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwicmVuZGVyV2l0aEhpZ2hsaWdodCIsInRleHQiLCJxdWVyeSIsIm5lZWRsZSIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsImhheXN0YWNrIiwiaW5kZXhPZiIsInBhcnRzIiwiY3Vyc29yIiwibmV4dElkeCIsImNodW5rS2V5IiwicHVzaCIsInNsaWNlIiwiY2hpbGRyZW4iLCJsZW5ndGgiLCJjb25jYXQiLCJTa2lsbHNEcm9wZG93biIsIl9yZWYiLCJza2lsbHMiLCJfcmVmJGxvYWRpbmciLCJsb2FkaW5nIiwiX3JlZiRlcnJvciIsImVycm9yIiwiX3JlZiRjYW5DcmVhdGUiLCJjYW5DcmVhdGUiLCJvblNlbGVjdCIsIm9uQ3JlYXRlIiwib25DbG9zZSIsImJvdHRvbSIsImxlZnQiLCJtYXhIZWlnaHQiLCJ6SW5kZXgiLCJhbmNob3JSZWYiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJoaWdobGlnaHRlZEluZGV4Iiwic2V0SGlnaGxpZ2h0ZWRJbmRleCIsImRyb3Bkb3duUmVmIiwiaXRlbVJlZnMiLCJmaWx0ZXJlZCIsIm5vcm1hbGl6ZWQiLCJmaWx0ZXIiLCJzIiwibmFtZSIsImluY2x1ZGVzIiwiY3VycmVudCIsImhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSIsIm1vdXNlRXZlbnQiLCJfZHJvcGRvd25SZWYkY3VycmVudCIsIl9hbmNob3JSZWYkY3VycmVudCIsInRhcmdldCIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNjcm9sbEhpZ2hsaWdodGVkSW50b1ZpZXciLCJpbmRleCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9pdGVtUmVmcyRjdXJyZW50JGluZCIsInNjcm9sbEludG9WaWV3IiwiYmxvY2siLCJoYW5kbGVyIiwiZSIsImtleSIsInByZXZlbnREZWZhdWx0IiwibmV4dCIsInN0b3BQcm9wYWdhdGlvbiIsInJlbmRlckJvZHkiLCJtYXAiLCJpIiwidmFyaWFudCIsImhlaWdodCIsIndpZHRoIiwic2tpbGwiLCJyZWYiLCJlbCIsIiRpbmRleCIsIiRoaWdobGlnaHRlZCIsIm9uTW91c2VFbnRlciIsIm9uQ2xpY2siLCJ0eXBlIiwiZGVzY3JpcHRpb24iLCJpZCIsIiRib3R0b20iLCIkbGVmdCIsIiRtYXhIZWlnaHQiLCIkekluZGV4Iiwib25Nb3VzZURvd24iLCJfb2JqZWN0U3ByZWFkIiwidGl0bGUiLCJjb2xvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL1NraWxsc0Ryb3Bkb3duL1NraWxsc0Ryb3Bkb3duLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEluZm9ybWF0aW9uQ2lyY2xlIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvSW5mb3JtYXRpb25DaXJjbGUnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgdHlwZSB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IFBsdXNJY29uIH0gZnJvbSAnLi4vaWNvbnMvUGx1c0ljb24nXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uL1NrZWxldG9uJ1xuaW1wb3J0IHtcbiAgU0NTS0RBbmNob3IsXG4gIFNDU0tEQ3JlYXRlSGVhZGVyLFxuICBTQ1NLRENyZWF0ZUluZm9JY29uLFxuICBTQ1NLRENyZWF0ZVJvdyxcbiAgU0NTS0REaXZpZGVyLFxuICBTQ1NLRERyb3Bkb3duLFxuICBTQ1NLREl0ZW0sXG4gIFNDU0tESXRlbVN1YnRpdGxlLFxuICBTQ1NLREl0ZW1UaXRsZSxcbiAgU0NTS0RMaXN0LFxuICBTQ1NLRE1hdGNoSGlnaGxpZ2h0LFxuICBTQ1NLRFNrZWxldG9uTGlzdCxcbiAgU0NTS0RTdGF0ZU1lc3NhZ2UsXG59IGZyb20gJy4vU2tpbGxzRHJvcGRvd24uc3R5bGVzJ1xuXG50eXBlIFNraWxsc0Ryb3Bkb3duUHJvcHMgPSB7XG4gIHNraWxsczogU2tpbGxbXVxuICBxdWVyeTogc3RyaW5nXG4gIGxvYWRpbmc/OiBib29sZWFuXG4gIGVycm9yPzogYm9vbGVhblxuICBjYW5DcmVhdGU/OiBib29sZWFuXG4gIG9uU2VsZWN0OiAoc2tpbGw6IFNraWxsKSA9PiB2b2lkXG4gIG9uQ3JlYXRlPzogKCkgPT4gdm9pZFxuICBvbkNsb3NlOiAoKSA9PiB2b2lkXG4gIGJvdHRvbTogbnVtYmVyXG4gIGxlZnQ6IG51bWJlclxuICBtYXhIZWlnaHQ/OiBudW1iZXJcbiAgekluZGV4PzogbnVtYmVyXG4gIC8qKiBOb2RvIGFuY2xhIChwLiBlai4gYm90w7NuIGRlIHNraWxscyk6IGNsaWNrcyBhaMOtIG5vIGNpZXJyYW4gZWwgbWVuw7ouICovXG4gIGFuY2hvclJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+XG59XG5cbmNvbnN0IHJlbmRlcldpdGhIaWdobGlnaHQgPSAodGV4dDogc3RyaW5nLCBxdWVyeTogc3RyaW5nKTogUmVhY3ROb2RlID0+IHtcbiAgY29uc3QgbmVlZGxlID0gcXVlcnkudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgaWYgKCFuZWVkbGUpIHJldHVybiB0ZXh0XG4gIGNvbnN0IGhheXN0YWNrID0gdGV4dC50b0xvd2VyQ2FzZSgpXG4gIGlmIChoYXlzdGFjay5pbmRleE9mKG5lZWRsZSkgPT09IC0xKSByZXR1cm4gdGV4dFxuXG4gIGNvbnN0IHBhcnRzOiBSZWFjdE5vZGVbXSA9IFtdXG4gIGxldCBjdXJzb3IgPSAwXG4gIGxldCBuZXh0SWR4ID0gaGF5c3RhY2suaW5kZXhPZihuZWVkbGUsIGN1cnNvcilcbiAgbGV0IGNodW5rS2V5ID0gMFxuICB3aGlsZSAobmV4dElkeCAhPT0gLTEpIHtcbiAgICBpZiAobmV4dElkeCA+IGN1cnNvcikgcGFydHMucHVzaCh0ZXh0LnNsaWNlKGN1cnNvciwgbmV4dElkeCkpXG4gICAgcGFydHMucHVzaChcbiAgICAgIDxTQ1NLRE1hdGNoSGlnaGxpZ2h0IGtleT17YG0tJHtjaHVua0tleX1gfT57dGV4dC5zbGljZShuZXh0SWR4LCBuZXh0SWR4ICsgbmVlZGxlLmxlbmd0aCl9PC9TQ1NLRE1hdGNoSGlnaGxpZ2h0PlxuICAgIClcbiAgICBjaHVua0tleSArPSAxXG4gICAgY3Vyc29yID0gbmV4dElkeCArIG5lZWRsZS5sZW5ndGhcbiAgICBuZXh0SWR4ID0gaGF5c3RhY2suaW5kZXhPZihuZWVkbGUsIGN1cnNvcilcbiAgfVxuICBpZiAoY3Vyc29yIDwgdGV4dC5sZW5ndGgpIHBhcnRzLnB1c2godGV4dC5zbGljZShjdXJzb3IpKVxuICByZXR1cm4gcGFydHNcbn1cblxuZXhwb3J0IGNvbnN0IFNraWxsc0Ryb3Bkb3duID0gKHtcbiAgc2tpbGxzLFxuICBxdWVyeSxcbiAgbG9hZGluZyA9IGZhbHNlLFxuICBlcnJvciA9IGZhbHNlLFxuICBjYW5DcmVhdGUgPSBmYWxzZSxcbiAgb25TZWxlY3QsXG4gIG9uQ3JlYXRlLFxuICBvbkNsb3NlLFxuICBib3R0b20sXG4gIGxlZnQsXG4gIG1heEhlaWdodCxcbiAgekluZGV4LFxuICBhbmNob3JSZWYsXG59OiBTa2lsbHNEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IFtoaWdobGlnaHRlZEluZGV4LCBzZXRIaWdobGlnaHRlZEluZGV4XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IGRyb3Bkb3duUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBpdGVtUmVmcyA9IHVzZVJlZjwoSFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsKVtdPihbXSlcblxuICBjb25zdCBmaWx0ZXJlZCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBxdWVyeS50cmltKCkudG9Mb3dlckNhc2UoKVxuICAgIGlmICghbm9ybWFsaXplZCkgcmV0dXJuIHNraWxsc1xuICAgIHJldHVybiBza2lsbHMuZmlsdGVyKHMgPT4gcy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobm9ybWFsaXplZCkpXG4gIH0sIFtza2lsbHMsIHF1ZXJ5XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoMClcbiAgfSwgW3F1ZXJ5XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGl0ZW1SZWZzLmN1cnJlbnQgPSBpdGVtUmVmcy5jdXJyZW50LnNsaWNlKDAsIGZpbHRlcmVkLmxlbmd0aClcbiAgfSwgW2ZpbHRlcmVkLmxlbmd0aF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUgPSAobW91c2VFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gbW91c2VFdmVudC50YXJnZXQgYXMgTm9kZSB8IG51bGxcbiAgICAgIGlmICghdGFyZ2V0KSByZXR1cm5cbiAgICAgIGlmIChkcm9wZG93blJlZi5jdXJyZW50Py5jb250YWlucyh0YXJnZXQpKSByZXR1cm5cbiAgICAgIGlmIChhbmNob3JSZWY/LmN1cnJlbnQ/LmNvbnRhaW5zKHRhcmdldCkpIHJldHVyblxuICAgICAgb25DbG9zZSgpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUpXG4gIH0sIFtvbkNsb3NlLCBhbmNob3JSZWZdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsSGlnaGxpZ2h0ZWRJbnRvVmlldyA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBpdGVtUmVmcy5jdXJyZW50W2luZGV4XT8uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgY29uc3QgbmV4dCA9IGZpbHRlcmVkLmxlbmd0aCA/IChoaWdobGlnaHRlZEluZGV4ICsgMSkgJSBmaWx0ZXJlZC5sZW5ndGggOiAwXG4gICAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgobmV4dClcbiAgICAgICAgc2Nyb2xsSGlnaGxpZ2h0ZWRJbnRvVmlldyhuZXh0KVxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBjb25zdCBuZXh0ID0gZmlsdGVyZWQubGVuZ3RoID8gKGhpZ2hsaWdodGVkSW5kZXggLSAxICsgZmlsdGVyZWQubGVuZ3RoKSAlIGZpbHRlcmVkLmxlbmd0aCA6IDBcbiAgICAgICAgc2V0SGlnaGxpZ2h0ZWRJbmRleChuZXh0KVxuICAgICAgICBzY3JvbGxIaWdobGlnaHRlZEludG9WaWV3KG5leHQpXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIGlmIChmaWx0ZXJlZFtoaWdobGlnaHRlZEluZGV4XSkge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBvblNlbGVjdChmaWx0ZXJlZFtoaWdobGlnaHRlZEluZGV4XSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIG9uQ2xvc2UoKVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlciwgdHJ1ZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZXIsIHRydWUpXG4gIH0sIFtmaWx0ZXJlZCwgaGlnaGxpZ2h0ZWRJbmRleCwgb25TZWxlY3QsIG9uQ2xvc2VdKVxuXG4gIGNvbnN0IHJlbmRlckJvZHkgPSAoKSA9PiB7XG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTQ1NLRFNrZWxldG9uTGlzdD5cbiAgICAgICAgICB7WzAsIDEsIDJdLm1hcChpID0+IChcbiAgICAgICAgICAgIDxTa2VsZXRvbiBrZXk9e2l9IHZhcmlhbnQ9XCJ0ZXh0XCIgaGVpZ2h0PXsyMH0gd2lkdGg9e2kgPT09IDAgPyAnNzAlJyA6ICc1NSUnfSAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NDU0tEU2tlbGV0b25MaXN0PlxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgcmV0dXJuIDxTQ1NLRFN0YXRlTWVzc2FnZT57dCgnbXlTa2lsbHMuZHJvcGRvd25FcnJvcicpfTwvU0NTS0RTdGF0ZU1lc3NhZ2U+XG4gICAgfVxuXG4gICAgaWYgKGZpbHRlcmVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIDxTQ1NLRFN0YXRlTWVzc2FnZT57dCgnbXlTa2lsbHMuZHJvcGRvd25FbXB0eScpfTwvU0NTS0RTdGF0ZU1lc3NhZ2U+XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1NLRExpc3Q+XG4gICAgICAgIHtmaWx0ZXJlZC5tYXAoKHNraWxsLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxTQ1NLREl0ZW1cbiAgICAgICAgICAgIGtleT17c2tpbGwuaWR9XG4gICAgICAgICAgICByZWY9e2VsID0+IHtcbiAgICAgICAgICAgICAgaXRlbVJlZnMuY3VycmVudFtpbmRleF0gPSBlbFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICRpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAkaGlnaGxpZ2h0ZWQ9e2luZGV4ID09PSBoaWdobGlnaHRlZEluZGV4fVxuICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRIaWdobGlnaHRlZEluZGV4KGluZGV4KX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2VsZWN0KHNraWxsKX1cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTQ1NLREl0ZW1UaXRsZT57cmVuZGVyV2l0aEhpZ2hsaWdodChgIyR7c2tpbGwubmFtZX1gLCBxdWVyeSl9PC9TQ1NLREl0ZW1UaXRsZT5cbiAgICAgICAgICAgIHtza2lsbC5kZXNjcmlwdGlvbiAmJiA8U0NTS0RJdGVtU3VidGl0bGU+e3NraWxsLmRlc2NyaXB0aW9ufTwvU0NTS0RJdGVtU3VidGl0bGU+fVxuICAgICAgICAgIDwvU0NTS0RJdGVtPlxuICAgICAgICApKX1cbiAgICAgIDwvU0NTS0RMaXN0PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDU0tEQW5jaG9yXG4gICAgICAkYm90dG9tPXtib3R0b219XG4gICAgICAkbGVmdD17bGVmdH1cbiAgICAgICRtYXhIZWlnaHQ9e21heEhlaWdodH1cbiAgICAgICR6SW5kZXg9e3pJbmRleH1cbiAgICAgIG9uTW91c2VEb3duPXtlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgPlxuICAgICAgPFNDU0tERHJvcGRvd24gcmVmPXtkcm9wZG93blJlZn0+XG4gICAgICAgIHtjYW5DcmVhdGUgJiYgb25DcmVhdGUgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NTS0RDcmVhdGVIZWFkZXI+XG4gICAgICAgICAgICAgIDxTQ1NLRENyZWF0ZVJvdyB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25DcmVhdGV9PlxuICAgICAgICAgICAgICAgIDxQbHVzSWNvbiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRyb3Bkb3duQ3JlYXRlJyl9XG4gICAgICAgICAgICAgIDwvU0NTS0RDcmVhdGVSb3c+XG4gICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdteVNraWxscy5pbmZvVG9vbHRpcCcpfSB7Li4uKHpJbmRleCAhPSBudWxsID8geyB6SW5kZXg6IHpJbmRleCArIDEgfSA6IHt9KX0+XG4gICAgICAgICAgICAgICAgPFNDU0tEQ3JlYXRlSW5mb0ljb24gYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuaW5mb1Rvb2x0aXAnKX0+XG4gICAgICAgICAgICAgICAgICA8SW5mb3JtYXRpb25DaXJjbGUgY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgIDwvU0NTS0RDcmVhdGVJbmZvSWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9TQ1NLRENyZWF0ZUhlYWRlcj5cbiAgICAgICAgICAgIDxTQ1NLRERpdmlkZXI+XG4gICAgICAgICAgICAgIDxzcGFuIC8+XG4gICAgICAgICAgICA8L1NDU0tERGl2aWRlcj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgICAge3JlbmRlckJvZHkoKX1cbiAgICAgIDwvU0NTS0REcm9wZG93bj5cbiAgICA8L1NDU0tEQW5jaG9yPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFvQkEsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUF3QixPQUFPO0FBQ3ZGLFNBQVNDLGlCQUFpQixRQUFRLG9EQUFvRDtBQUN0RixTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFDMUMsU0FBU0MsUUFBUSxRQUFRLG1CQUFtQjtBQUM1QyxTQUFTQyxRQUFRLFFBQVEsc0JBQXNCO0FBQy9DLFNBQ0VDLFdBQVcsRUFDWEMsaUJBQWlCLEVBQ2pCQyxtQkFBbUIsRUFDbkJDLGNBQWMsRUFDZEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFNBQVMsRUFDVEMsaUJBQWlCLEVBQ2pCQyxjQUFjLEVBQ2RDLFNBQVMsRUFDVEMsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFDakJDLGlCQUFpQixRQUNaLHlCQUF5QjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUEsRUFBQUMsUUFBQSxJQUFBQyxTQUFBO0FBbUJoQyxJQUFNQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJQyxJQUFZLEVBQUVDLEtBQWEsRUFBZ0I7RUFDdEUsSUFBTUMsTUFBTSxHQUFHRCxLQUFLLENBQUNFLElBQUksQ0FBQyxDQUFDLENBQUNDLFdB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