ummaya 0.2.13 → 0.2.15

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 (566) hide show
  1. package/npm-shrinkwrap.json +2 -2
  2. package/package.json +7 -4
  3. package/pyproject.toml +2 -2
  4. package/tui/package.json +1 -1
  5. package/tui/src/buddy/CompanionSprite.tsx +1 -2
  6. package/tui/src/buddy/useBuddyNotification.tsx +1 -2
  7. package/tui/src/cli/controlAuth.ts +20 -0
  8. package/tui/src/cli/handlers/auth.ts +7 -7
  9. package/tui/src/cli/handlers/mcp.tsx +0 -1
  10. package/tui/src/cli/handlers/util.tsx +2 -3
  11. package/tui/src/cli/print.ts +7 -4
  12. package/tui/src/commands/add-dir/add-dir.tsx +1 -2
  13. package/tui/src/commands/agents/agents.tsx +1 -2
  14. package/tui/src/commands/bridge/bridge.tsx +1 -2
  15. package/tui/src/commands/btw/btw.tsx +1 -2
  16. package/tui/src/commands/config/config.tsx +1 -2
  17. package/tui/src/commands/context/context.tsx +1 -2
  18. package/tui/src/commands/copy/copy.tsx +1 -2
  19. package/tui/src/commands/desktop/desktop.tsx +1 -2
  20. package/tui/src/commands/diff/diff.tsx +1 -2
  21. package/tui/src/commands/doctor/doctor.tsx +1 -2
  22. package/tui/src/commands/effort/effort.tsx +1 -2
  23. package/tui/src/commands/exit/exit.tsx +1 -2
  24. package/tui/src/commands/export/export.tsx +1 -2
  25. package/tui/src/commands/extra-usage/extra-usage.tsx +1 -2
  26. package/tui/src/commands/fast/fast.tsx +0 -1
  27. package/tui/src/commands/feedback/feedback.tsx +1 -2
  28. package/tui/src/commands/help/help.tsx +1 -2
  29. package/tui/src/commands/hooks/hooks.tsx +1 -2
  30. package/tui/src/commands/ide/ide.tsx +0 -1
  31. package/tui/src/commands/install-github-app/OAuthFlowStep.tsx +1 -2
  32. package/tui/src/commands/install-github-app/install-github-app.tsx +4 -4
  33. package/tui/src/commands/install.tsx +0 -1
  34. package/tui/src/commands/login/login.tsx +1 -2
  35. package/tui/src/commands/logout/logout.tsx +0 -1
  36. package/tui/src/commands/mcp/mcp.tsx +1 -2
  37. package/tui/src/commands/memory/memory.tsx +0 -1
  38. package/tui/src/commands/mobile/mobile.tsx +0 -1
  39. package/tui/src/commands/model/model.tsx +0 -1
  40. package/tui/src/commands/output-style/output-style.tsx +1 -2
  41. package/tui/src/commands/passes/passes.tsx +1 -2
  42. package/tui/src/commands/permissions/permissions.tsx +1 -2
  43. package/tui/src/commands/plan/plan.tsx +1 -2
  44. package/tui/src/commands/plugin/AddMarketplace.tsx +1 -2
  45. package/tui/src/commands/plugin/BrowseMarketplace.tsx +1 -2
  46. package/tui/src/commands/plugin/DiscoverPlugins.tsx +0 -1
  47. package/tui/src/commands/plugin/ManageMarketplaces.tsx +0 -1
  48. package/tui/src/commands/plugin/ManagePlugins.tsx +1 -2
  49. package/tui/src/commands/plugin/PluginErrors.tsx +1 -2
  50. package/tui/src/commands/plugin/PluginOptionsDialog.tsx +1 -2
  51. package/tui/src/commands/plugin/PluginOptionsFlow.tsx +1 -2
  52. package/tui/src/commands/plugin/PluginSettings.tsx +1 -2
  53. package/tui/src/commands/plugin/PluginTrustWarning.tsx +0 -1
  54. package/tui/src/commands/plugin/UnifiedInstalledCell.tsx +1 -2
  55. package/tui/src/commands/plugin/ValidatePlugin.tsx +1 -2
  56. package/tui/src/commands/plugin/index.tsx +0 -1
  57. package/tui/src/commands/plugin/plugin.tsx +1 -2
  58. package/tui/src/commands/plugin/pluginDetailsHelpers.tsx +1 -2
  59. package/tui/src/commands/privacy-settings/privacy-settings.tsx +0 -1
  60. package/tui/src/commands/rate-limit-options/rate-limit-options.tsx +1 -2
  61. package/tui/src/commands/remote-env/remote-env.tsx +1 -2
  62. package/tui/src/commands/remote-setup/remote-setup.tsx +0 -1
  63. package/tui/src/commands/resume/resume.tsx +1 -2
  64. package/tui/src/commands/review/UltrareviewOverageDialog.tsx +1 -2
  65. package/tui/src/commands/review/ultrareviewCommand.tsx +0 -1
  66. package/tui/src/commands/sandbox-toggle/sandbox-toggle.tsx +1 -2
  67. package/tui/src/commands/session/session.tsx +0 -1
  68. package/tui/src/commands/skills/skills.tsx +1 -2
  69. package/tui/src/commands/stats/stats.tsx +1 -2
  70. package/tui/src/commands/status/status.tsx +1 -2
  71. package/tui/src/commands/statusline.tsx +0 -1
  72. package/tui/src/commands/tag/tag.tsx +1 -2
  73. package/tui/src/commands/tasks/tasks.tsx +1 -2
  74. package/tui/src/commands/terminalSetup/terminalSetup.tsx +1 -2
  75. package/tui/src/commands/theme/theme.tsx +1 -2
  76. package/tui/src/commands/thinkback/thinkback.tsx +0 -1
  77. package/tui/src/commands/ultraplan.tsx +0 -1
  78. package/tui/src/commands/usage/usage.tsx +1 -2
  79. package/tui/src/commands/voice/voice.ts +2 -2
  80. package/tui/src/components/AgentProgressLine.tsx +1 -2
  81. package/tui/src/components/App.tsx +1 -2
  82. package/tui/src/components/ApproveApiKey.tsx +1 -2
  83. package/tui/src/components/AutoModeOptInDialog.tsx +0 -1
  84. package/tui/src/components/AutoUpdater.tsx +1 -2
  85. package/tui/src/components/AutoUpdaterWrapper.tsx +1 -2
  86. package/tui/src/components/AwsAuthStatusBox.tsx +1 -2
  87. package/tui/src/components/BaseTextInput.tsx +0 -1
  88. package/tui/src/components/BashModeProgress.tsx +1 -2
  89. package/tui/src/components/BridgeDialog.tsx +1 -2
  90. package/tui/src/components/BypassPermissionsModeDialog.tsx +0 -1
  91. package/tui/src/components/ChannelDowngradeDialog.tsx +1 -2
  92. package/tui/src/components/ClaudeCodeHint/PluginHintMenu.tsx +1 -2
  93. package/tui/src/components/ClaudeMdExternalIncludesDialog.tsx +0 -1
  94. package/tui/src/components/ClickableImageRef.tsx +1 -2
  95. package/tui/src/components/CompactSummary.tsx +1 -2
  96. package/tui/src/components/ConfigurableShortcutHint.tsx +1 -2
  97. package/tui/src/components/ContextSuggestions.tsx +1 -2
  98. package/tui/src/components/ContextVisualization.tsx +1 -2
  99. package/tui/src/components/CoordinatorAgentStatus.tsx +1 -2
  100. package/tui/src/components/CostThresholdDialog.tsx +0 -1
  101. package/tui/src/components/CtrlOToExpand.tsx +1 -2
  102. package/tui/src/components/CustomSelect/SelectMulti.tsx +1 -2
  103. package/tui/src/components/CustomSelect/select-input-option.tsx +1 -2
  104. package/tui/src/components/CustomSelect/select-option.tsx +1 -2
  105. package/tui/src/components/CustomSelect/select.tsx +1 -2
  106. package/tui/src/components/DesktopHandoff.tsx +0 -1
  107. package/tui/src/components/DesktopUpsell/DesktopUpsellStartup.tsx +0 -1
  108. package/tui/src/components/DevBar.tsx +1 -2
  109. package/tui/src/components/DevChannelsDialog.tsx +1 -2
  110. package/tui/src/components/DiagnosticsDisplay.tsx +1 -2
  111. package/tui/src/components/EffortCallout.tsx +1 -2
  112. package/tui/src/components/ExitFlow.tsx +1 -2
  113. package/tui/src/components/ExportDialog.tsx +1 -2
  114. package/tui/src/components/FallbackToolUseErrorMessage.tsx +0 -1
  115. package/tui/src/components/FallbackToolUseRejectedMessage.tsx +1 -2
  116. package/tui/src/components/FastIcon.tsx +1 -2
  117. package/tui/src/components/Feedback.tsx +0 -1
  118. package/tui/src/components/FeedbackSurvey/FeedbackSurvey.tsx +1 -2
  119. package/tui/src/components/FeedbackSurvey/FeedbackSurveyView.tsx +0 -1
  120. package/tui/src/components/FeedbackSurvey/TranscriptSharePrompt.tsx +0 -1
  121. package/tui/src/components/FeedbackSurvey/useFeedbackSurvey.tsx +0 -1
  122. package/tui/src/components/FeedbackSurvey/useMemorySurvey.tsx +0 -1
  123. package/tui/src/components/FeedbackSurvey/usePostCompactSurvey.tsx +0 -1
  124. package/tui/src/components/FeedbackSurvey/useSurveyState.tsx +1 -2
  125. package/tui/src/components/FileEditToolDiff.tsx +1 -2
  126. package/tui/src/components/FileEditToolUpdatedMessage.tsx +1 -2
  127. package/tui/src/components/FileEditToolUseRejectedMessage.tsx +1 -2
  128. package/tui/src/components/FilePathLink.tsx +1 -2
  129. package/tui/src/components/FullscreenLayout.tsx +1 -2
  130. package/tui/src/components/GlobalSearchDialog.tsx +1 -2
  131. package/tui/src/components/HelpV2/Commands.tsx +1 -2
  132. package/tui/src/components/HelpV2/General.tsx +0 -1
  133. package/tui/src/components/HelpV2/HelpV2.tsx +0 -1
  134. package/tui/src/components/HighlightedCode/Fallback.tsx +1 -2
  135. package/tui/src/components/HighlightedCode.tsx +1 -2
  136. package/tui/src/components/HistorySearchDialog.tsx +1 -2
  137. package/tui/src/components/IdeAutoConnectDialog.tsx +1 -2
  138. package/tui/src/components/IdeOnboardingDialog.tsx +0 -1
  139. package/tui/src/components/IdeStatusIndicator.tsx +1 -2
  140. package/tui/src/components/IdleReturnDialog.tsx +1 -2
  141. package/tui/src/components/InterruptedByUser.tsx +0 -1
  142. package/tui/src/components/InvalidConfigDialog.tsx +1 -2
  143. package/tui/src/components/InvalidSettingsDialog.tsx +1 -2
  144. package/tui/src/components/KeybindingWarnings.tsx +1 -2
  145. package/tui/src/components/LanguagePicker.tsx +1 -2
  146. package/tui/src/components/LogSelector.tsx +0 -1
  147. package/tui/src/components/LogoV2/AnimatedAsterisk.tsx +1 -2
  148. package/tui/src/components/LogoV2/AnimatedClawd.tsx +1 -2
  149. package/tui/src/components/LogoV2/ChannelsNotice.tsx +0 -1
  150. package/tui/src/components/LogoV2/Clawd.tsx +1 -2
  151. package/tui/src/components/LogoV2/CondensedLogo.tsx +0 -1
  152. package/tui/src/components/LogoV2/EmergencyTip.tsx +0 -1
  153. package/tui/src/components/LogoV2/Feed.tsx +1 -2
  154. package/tui/src/components/LogoV2/FeedColumn.tsx +1 -2
  155. package/tui/src/components/LogoV2/GuestPassesUpsell.tsx +0 -1
  156. package/tui/src/components/LogoV2/LogoV2.tsx +0 -1
  157. package/tui/src/components/LogoV2/Opus1mMergeNotice.tsx +1 -2
  158. package/tui/src/components/LogoV2/OverageCreditUpsell.tsx +1 -2
  159. package/tui/src/components/LogoV2/VoiceModeNotice.tsx +1 -2
  160. package/tui/src/components/LogoV2/feedConfigs.tsx +0 -1
  161. package/tui/src/components/LspRecommendation/LspRecommendationMenu.tsx +1 -2
  162. package/tui/src/components/MCPServerApprovalDialog.tsx +1 -2
  163. package/tui/src/components/MCPServerDesktopImportDialog.tsx +0 -1
  164. package/tui/src/components/MCPServerDialogCopy.tsx +0 -1
  165. package/tui/src/components/MCPServerMultiselectDialog.tsx +1 -2
  166. package/tui/src/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.tsx +0 -1
  167. package/tui/src/components/Markdown.tsx +1 -2
  168. package/tui/src/components/MarkdownTable.tsx +1 -2
  169. package/tui/src/components/MemoryUsageIndicator.tsx +1 -2
  170. package/tui/src/components/Message.tsx +1 -2
  171. package/tui/src/components/MessageModel.tsx +1 -2
  172. package/tui/src/components/MessageResponse.tsx +1 -2
  173. package/tui/src/components/MessageRow.tsx +1 -2
  174. package/tui/src/components/MessageSelector.tsx +1 -2
  175. package/tui/src/components/MessageTimestamp.tsx +1 -2
  176. package/tui/src/components/Messages.tsx +0 -1
  177. package/tui/src/components/ModelPicker.tsx +0 -1
  178. package/tui/src/components/NativeAutoUpdater.tsx +1 -2
  179. package/tui/src/components/NotebookEditToolUseRejectedMessage.tsx +1 -2
  180. package/tui/src/components/OffscreenFreeze.tsx +1 -2
  181. package/tui/src/components/Onboarding.tsx +2 -3
  182. package/tui/src/components/OutputStylePicker.tsx +0 -1
  183. package/tui/src/components/PackageManagerAutoUpdater.tsx +0 -1
  184. package/tui/src/components/Passes/Passes.tsx +0 -1
  185. package/tui/src/components/PrBadge.tsx +1 -2
  186. package/tui/src/components/PressEnterToContinue.tsx +1 -2
  187. package/tui/src/components/PromptInput/HistorySearchInput.tsx +1 -2
  188. package/tui/src/components/PromptInput/IssueFlagBanner.tsx +1 -2
  189. package/tui/src/components/PromptInput/Notifications.tsx +1 -2
  190. package/tui/src/components/PromptInput/PromptInput.tsx +0 -1
  191. package/tui/src/components/PromptInput/PromptInputFooter.tsx +1 -2
  192. package/tui/src/components/PromptInput/PromptInputFooterLeftSide.tsx +1 -2
  193. package/tui/src/components/PromptInput/PromptInputFooterSuggestions.tsx +1 -2
  194. package/tui/src/components/PromptInput/PromptInputHelpMenu.tsx +1 -2
  195. package/tui/src/components/PromptInput/PromptInputModeIndicator.tsx +1 -2
  196. package/tui/src/components/PromptInput/PromptInputQueuedCommands.tsx +1 -2
  197. package/tui/src/components/PromptInput/PromptInputStashNotice.tsx +1 -2
  198. package/tui/src/components/PromptInput/SandboxPromptFooterHint.tsx +1 -2
  199. package/tui/src/components/PromptInput/ShimmeredInput.tsx +1 -2
  200. package/tui/src/components/PromptInput/VoiceIndicator.tsx +1 -2
  201. package/tui/src/components/QuickOpenDialog.tsx +1 -2
  202. package/tui/src/components/RemoteCallout.tsx +0 -1
  203. package/tui/src/components/RemoteEnvironmentDialog.tsx +0 -1
  204. package/tui/src/components/ResumeTask.tsx +0 -1
  205. package/tui/src/components/SandboxViolationExpandedView.tsx +1 -2
  206. package/tui/src/components/ScrollKeybindingHandler.tsx +0 -1
  207. package/tui/src/components/SearchBox.tsx +1 -2
  208. package/tui/src/components/SessionBackgroundHint.tsx +1 -2
  209. package/tui/src/components/SessionPreview.tsx +1 -2
  210. package/tui/src/components/Settings/Config.tsx +0 -1
  211. package/tui/src/components/Settings/Settings.tsx +1 -2
  212. package/tui/src/components/Settings/Status.tsx +1 -2
  213. package/tui/src/components/Settings/Usage.tsx +1 -2
  214. package/tui/src/components/ShowInIDEPrompt.tsx +1 -2
  215. package/tui/src/components/SkillImprovementSurvey.tsx +1 -2
  216. package/tui/src/components/Spinner/FlashingChar.tsx +1 -2
  217. package/tui/src/components/Spinner/GlimmerMessage.tsx +1 -2
  218. package/tui/src/components/Spinner/ShimmerChar.tsx +1 -2
  219. package/tui/src/components/Spinner/SpinnerAnimationRow.tsx +1 -2
  220. package/tui/src/components/Spinner/SpinnerGlyph.tsx +1 -2
  221. package/tui/src/components/Spinner/TeammateSpinnerLine.tsx +1 -2
  222. package/tui/src/components/Spinner/TeammateSpinnerTree.tsx +1 -2
  223. package/tui/src/components/Spinner.tsx +0 -1
  224. package/tui/src/components/Stats.tsx +0 -1
  225. package/tui/src/components/StatusLine.tsx +1 -2
  226. package/tui/src/components/StatusNotices.tsx +1 -2
  227. package/tui/src/components/StructuredDiff/Fallback.tsx +1 -2
  228. package/tui/src/components/StructuredDiff.tsx +1 -2
  229. package/tui/src/components/StructuredDiffList.tsx +1 -2
  230. package/tui/src/components/TagTabs.tsx +1 -2
  231. package/tui/src/components/TaskListV2.tsx +1 -2
  232. package/tui/src/components/TeammateViewHeader.tsx +1 -2
  233. package/tui/src/components/TeleportError.tsx +0 -1
  234. package/tui/src/components/TeleportProgress.tsx +1 -2
  235. package/tui/src/components/TeleportRepoMismatchDialog.tsx +0 -1
  236. package/tui/src/components/TeleportStash.tsx +1 -2
  237. package/tui/src/components/TextInput.tsx +1 -2
  238. package/tui/src/components/ThemePicker.tsx +0 -1
  239. package/tui/src/components/ThinkingToggle.tsx +0 -1
  240. package/tui/src/components/TokenWarning.tsx +1 -2
  241. package/tui/src/components/ToolUseLoader.tsx +1 -2
  242. package/tui/src/components/TrustDialog/TrustDialog.tsx +0 -1
  243. package/tui/src/components/ValidationErrorsList.tsx +1 -2
  244. package/tui/src/components/VimTextInput.tsx +1 -2
  245. package/tui/src/components/VirtualMessageList.tsx +1 -2
  246. package/tui/src/components/WorktreeExitDialog.tsx +1 -2
  247. package/tui/src/components/agents/AgentDetail.tsx +0 -1
  248. package/tui/src/components/agents/AgentEditor.tsx +1 -2
  249. package/tui/src/components/agents/AgentNavigationFooter.tsx +1 -2
  250. package/tui/src/components/agents/AgentsList.tsx +0 -1
  251. package/tui/src/components/agents/AgentsMenu.tsx +1 -2
  252. package/tui/src/components/agents/ColorPicker.tsx +1 -2
  253. package/tui/src/components/agents/ModelSelector.tsx +1 -2
  254. package/tui/src/components/agents/ToolSelector.tsx +1 -2
  255. package/tui/src/components/agents/new-agent-creation/CreateAgentWizard.tsx +1 -2
  256. package/tui/src/components/agents/new-agent-creation/wizard-steps/ColorStep.tsx +1 -2
  257. package/tui/src/components/agents/new-agent-creation/wizard-steps/ConfirmStep.tsx +0 -1
  258. package/tui/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.tsx +1 -2
  259. package/tui/src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.tsx +0 -1
  260. package/tui/src/components/agents/new-agent-creation/wizard-steps/GenerateStep.tsx +1 -2
  261. package/tui/src/components/agents/new-agent-creation/wizard-steps/LocationStep.tsx +1 -2
  262. package/tui/src/components/agents/new-agent-creation/wizard-steps/MemoryStep.tsx +1 -2
  263. package/tui/src/components/agents/new-agent-creation/wizard-steps/MethodStep.tsx +0 -1
  264. package/tui/src/components/agents/new-agent-creation/wizard-steps/ModelStep.tsx +1 -2
  265. package/tui/src/components/agents/new-agent-creation/wizard-steps/PromptStep.tsx +1 -2
  266. package/tui/src/components/agents/new-agent-creation/wizard-steps/ToolsStep.tsx +1 -2
  267. package/tui/src/components/agents/new-agent-creation/wizard-steps/TypeStep.tsx +1 -2
  268. package/tui/src/components/design-system/Byline.tsx +1 -2
  269. package/tui/src/components/design-system/Dialog.tsx +1 -2
  270. package/tui/src/components/design-system/Divider.tsx +1 -2
  271. package/tui/src/components/design-system/FuzzyPicker.tsx +1 -2
  272. package/tui/src/components/design-system/KeyboardShortcutHint.tsx +1 -2
  273. package/tui/src/components/design-system/ListItem.tsx +1 -2
  274. package/tui/src/components/design-system/LoadingState.tsx +0 -1
  275. package/tui/src/components/design-system/Pane.tsx +1 -2
  276. package/tui/src/components/design-system/ProgressBar.tsx +1 -2
  277. package/tui/src/components/design-system/Ratchet.tsx +1 -2
  278. package/tui/src/components/design-system/StatusIcon.tsx +1 -2
  279. package/tui/src/components/design-system/Tabs.tsx +1 -2
  280. package/tui/src/components/design-system/ThemeProvider.tsx +1 -2
  281. package/tui/src/components/design-system/ThemedBox.tsx +1 -2
  282. package/tui/src/components/design-system/ThemedText.tsx +1 -2
  283. package/tui/src/components/diff/DiffDetailView.tsx +1 -2
  284. package/tui/src/components/diff/DiffDialog.tsx +1 -2
  285. package/tui/src/components/diff/DiffFileList.tsx +1 -2
  286. package/tui/src/components/grove/Grove.tsx +0 -1
  287. package/tui/src/components/hooks/HooksConfigMenu.tsx +0 -1
  288. package/tui/src/components/hooks/PromptDialog.tsx +1 -2
  289. package/tui/src/components/hooks/SelectEventMode.tsx +0 -1
  290. package/tui/src/components/hooks/SelectHookMode.tsx +0 -1
  291. package/tui/src/components/hooks/SelectMatcherMode.tsx +0 -1
  292. package/tui/src/components/hooks/ViewHookMode.tsx +0 -1
  293. package/tui/src/components/mcp/CapabilitiesSection.tsx +1 -2
  294. package/tui/src/components/mcp/ElicitationDialog.tsx +0 -1
  295. package/tui/src/components/mcp/MCPAgentServerMenu.tsx +1 -2
  296. package/tui/src/components/mcp/MCPListPanel.tsx +0 -1
  297. package/tui/src/components/mcp/MCPReconnect.tsx +1 -2
  298. package/tui/src/components/mcp/MCPRemoteServerMenu.tsx +2 -3
  299. package/tui/src/components/mcp/MCPSettings.tsx +0 -1
  300. package/tui/src/components/mcp/MCPStdioServerMenu.tsx +1 -2
  301. package/tui/src/components/mcp/MCPToolDetailView.tsx +1 -2
  302. package/tui/src/components/mcp/MCPToolListView.tsx +1 -2
  303. package/tui/src/components/mcp/McpParsingWarnings.tsx +0 -1
  304. package/tui/src/components/mcp/utils/reconnectHelpers.tsx +1 -2
  305. package/tui/src/components/memory/MemoryFileSelector.tsx +1 -2
  306. package/tui/src/components/memory/MemoryUpdateNotification.tsx +1 -2
  307. package/tui/src/components/messageActions.tsx +1 -2
  308. package/tui/src/components/messages/AdvisorMessage.tsx +1 -2
  309. package/tui/src/components/messages/AssistantRedactedThinkingMessage.tsx +1 -2
  310. package/tui/src/components/messages/AssistantThinkingMessage.tsx +1 -2
  311. package/tui/src/components/messages/AssistantToolUseMessage.tsx +0 -1
  312. package/tui/src/components/messages/AttachmentMessage.tsx +1 -2
  313. package/tui/src/components/messages/CollapsedReadSearchContent.tsx +1 -2
  314. package/tui/src/components/messages/CompactBoundaryMessage.tsx +1 -2
  315. package/tui/src/components/messages/GroupedToolUseContent.tsx +1 -2
  316. package/tui/src/components/messages/HighlightedThinkingText.tsx +1 -2
  317. package/tui/src/components/messages/HookProgressMessage.tsx +1 -2
  318. package/tui/src/components/messages/PlanApprovalMessage.tsx +1 -2
  319. package/tui/src/components/messages/RateLimitMessage.tsx +1 -2
  320. package/tui/src/components/messages/ShutdownMessage.tsx +1 -2
  321. package/tui/src/components/messages/SystemAPIErrorMessage.tsx +1 -2
  322. package/tui/src/components/messages/SystemTextMessage.tsx +1 -2
  323. package/tui/src/components/messages/TaskAssignmentMessage.tsx +1 -2
  324. package/tui/src/components/messages/UserAgentNotificationMessage.tsx +1 -2
  325. package/tui/src/components/messages/UserBashInputMessage.tsx +1 -2
  326. package/tui/src/components/messages/UserBashOutputMessage.tsx +1 -2
  327. package/tui/src/components/messages/UserChannelMessage.tsx +1 -2
  328. package/tui/src/components/messages/UserCommandMessage.tsx +1 -2
  329. package/tui/src/components/messages/UserImageMessage.tsx +1 -2
  330. package/tui/src/components/messages/UserLocalCommandOutputMessage.tsx +1 -2
  331. package/tui/src/components/messages/UserMemoryInputMessage.tsx +1 -2
  332. package/tui/src/components/messages/UserPlanMessage.tsx +1 -2
  333. package/tui/src/components/messages/UserPromptMessage.tsx +1 -2
  334. package/tui/src/components/messages/UserResourceUpdateMessage.tsx +1 -2
  335. package/tui/src/components/messages/UserTeammateMessage.tsx +1 -2
  336. package/tui/src/components/messages/UserTextMessage.tsx +1 -2
  337. package/tui/src/components/messages/UserToolResultMessage/RejectedPlanMessage.tsx +0 -1
  338. package/tui/src/components/messages/UserToolResultMessage/RejectedToolUseMessage.tsx +1 -2
  339. package/tui/src/components/messages/UserToolResultMessage/UserToolCanceledMessage.tsx +1 -2
  340. package/tui/src/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx +1 -2
  341. package/tui/src/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx +1 -2
  342. package/tui/src/components/messages/UserToolResultMessage/UserToolResultMessage.tsx +1 -2
  343. package/tui/src/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx +1 -2
  344. package/tui/src/components/messages/UserToolResultMessage/utils.tsx +0 -1
  345. package/tui/src/components/messages/teamMemCollapsed.tsx +1 -2
  346. package/tui/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx +1 -2
  347. package/tui/src/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.tsx +1 -2
  348. package/tui/src/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.tsx +1 -2
  349. package/tui/src/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.tsx +1 -2
  350. package/tui/src/components/permissions/AskUserQuestionPermissionRequest/QuestionView.tsx +1 -2
  351. package/tui/src/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.tsx +1 -2
  352. package/tui/src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx +1 -2
  353. package/tui/src/components/permissions/BashPermissionRequest/bashToolUseOptions.tsx +0 -1
  354. package/tui/src/components/permissions/ComputerUseApproval/ComputerUseApproval.tsx +0 -1
  355. package/tui/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx +0 -1
  356. package/tui/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx +0 -1
  357. package/tui/src/components/permissions/FallbackPermissionRequest.tsx +1 -2
  358. package/tui/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.tsx +1 -2
  359. package/tui/src/components/permissions/FilePermissionDialog/FilePermissionDialog.tsx +1 -2
  360. package/tui/src/components/permissions/FilePermissionDialog/permissionOptions.tsx +0 -1
  361. package/tui/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx +1 -2
  362. package/tui/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.tsx +1 -2
  363. package/tui/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.tsx +1 -2
  364. package/tui/src/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.tsx +1 -2
  365. package/tui/src/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.tsx +1 -2
  366. package/tui/src/components/permissions/PermissionDecisionDebugInfo.tsx +1 -2
  367. package/tui/src/components/permissions/PermissionDialog.tsx +1 -2
  368. package/tui/src/components/permissions/PermissionExplanation.tsx +1 -2
  369. package/tui/src/components/permissions/PermissionPrompt.tsx +0 -1
  370. package/tui/src/components/permissions/PermissionRequest.tsx +0 -1
  371. package/tui/src/components/permissions/PermissionRequestTitle.tsx +1 -2
  372. package/tui/src/components/permissions/PermissionRuleExplanation.tsx +1 -2
  373. package/tui/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.tsx +1 -2
  374. package/tui/src/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.tsx +0 -1
  375. package/tui/src/components/permissions/SandboxPermissionRequest.tsx +0 -1
  376. package/tui/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.tsx +1 -2
  377. package/tui/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx +0 -1
  378. package/tui/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.tsx +0 -1
  379. package/tui/src/components/permissions/WorkerBadge.tsx +1 -2
  380. package/tui/src/components/permissions/WorkerPendingPermission.tsx +1 -2
  381. package/tui/src/components/permissions/rules/AddPermissionRules.tsx +0 -1
  382. package/tui/src/components/permissions/rules/AddWorkspaceDirectory.tsx +0 -1
  383. package/tui/src/components/permissions/rules/PermissionRuleDescription.tsx +1 -2
  384. package/tui/src/components/permissions/rules/PermissionRuleInput.tsx +1 -2
  385. package/tui/src/components/permissions/rules/PermissionRuleList.tsx +0 -1
  386. package/tui/src/components/permissions/rules/RecentDenialsTab.tsx +1 -2
  387. package/tui/src/components/permissions/rules/RemoveWorkspaceDirectory.tsx +0 -1
  388. package/tui/src/components/permissions/rules/WorkspaceTab.tsx +1 -2
  389. package/tui/src/components/permissions/shellPermissionHelpers.tsx +1 -2
  390. package/tui/src/components/sandbox/SandboxConfigTab.tsx +1 -2
  391. package/tui/src/components/sandbox/SandboxDependenciesTab.tsx +1 -2
  392. package/tui/src/components/sandbox/SandboxDoctorSection.tsx +1 -2
  393. package/tui/src/components/sandbox/SandboxOverridesTab.tsx +0 -1
  394. package/tui/src/components/sandbox/SandboxSettings.tsx +0 -1
  395. package/tui/src/components/shell/ExpandShellOutputContext.tsx +1 -2
  396. package/tui/src/components/shell/OutputLine.tsx +1 -2
  397. package/tui/src/components/shell/ShellProgressMessage.tsx +1 -2
  398. package/tui/src/components/shell/ShellTimeDisplay.tsx +1 -2
  399. package/tui/src/components/skills/SkillsMenu.tsx +0 -1
  400. package/tui/src/components/tasks/AsyncAgentDetailDialog.tsx +1 -2
  401. package/tui/src/components/tasks/BackgroundTask.tsx +1 -2
  402. package/tui/src/components/tasks/BackgroundTaskStatus.tsx +1 -2
  403. package/tui/src/components/tasks/BackgroundTasksDialog.tsx +1 -2
  404. package/tui/src/components/tasks/DreamDetailDialog.tsx +1 -2
  405. package/tui/src/components/tasks/InProcessTeammateDetailDialog.tsx +1 -2
  406. package/tui/src/components/tasks/RemoteSessionDetailDialog.tsx +0 -1
  407. package/tui/src/components/tasks/RemoteSessionProgress.tsx +1 -2
  408. package/tui/src/components/tasks/ShellDetailDialog.tsx +1 -2
  409. package/tui/src/components/tasks/ShellProgress.tsx +1 -2
  410. package/tui/src/components/tasks/renderToolActivity.tsx +1 -2
  411. package/tui/src/components/tasks/taskStatusUtils.tsx +1 -2
  412. package/tui/src/components/teams/TeamStatus.tsx +1 -2
  413. package/tui/src/components/teams/TeamsDialog.tsx +1 -2
  414. package/tui/src/components/ui/OrderedList.tsx +1 -2
  415. package/tui/src/components/ui/OrderedListItem.tsx +1 -2
  416. package/tui/src/components/ui/TreeSelect.tsx +1 -2
  417. package/tui/src/components/wizard/WizardDialogLayout.tsx +1 -2
  418. package/tui/src/components/wizard/WizardNavigationFooter.tsx +1 -2
  419. package/tui/src/components/wizard/WizardProvider.tsx +1 -2
  420. package/tui/src/context/QueuedMessageContext.tsx +1 -2
  421. package/tui/src/context/fpsMetrics.tsx +1 -2
  422. package/tui/src/context/mailbox.tsx +1 -2
  423. package/tui/src/context/modalContext.tsx +1 -2
  424. package/tui/src/context/notifications.tsx +1 -2
  425. package/tui/src/context/overlayContext.tsx +1 -2
  426. package/tui/src/context/promptOverlayContext.tsx +1 -2
  427. package/tui/src/context/stats.tsx +1 -2
  428. package/tui/src/context/voice.tsx +1 -2
  429. package/tui/src/dialogLaunchers.tsx +0 -1
  430. package/tui/src/entrypoints/cli.tsx +0 -1
  431. package/tui/src/hooks/notifs/useCanSwitchToExistingSubscription.tsx +0 -1
  432. package/tui/src/hooks/notifs/useDeprecationWarningNotification.tsx +1 -2
  433. package/tui/src/hooks/notifs/useFastModeNotification.tsx +1 -2
  434. package/tui/src/hooks/notifs/useIDEStatusIndicator.tsx +1 -2
  435. package/tui/src/hooks/notifs/useInstallMessages.tsx +1 -2
  436. package/tui/src/hooks/notifs/useLspInitializationNotification.tsx +1 -2
  437. package/tui/src/hooks/notifs/useMcpConnectivityStatus.tsx +0 -1
  438. package/tui/src/hooks/notifs/useModelMigrationNotifications.tsx +1 -2
  439. package/tui/src/hooks/notifs/useNpmDeprecationNotification.tsx +1 -2
  440. package/tui/src/hooks/notifs/usePluginAutoupdateNotification.tsx +1 -2
  441. package/tui/src/hooks/notifs/usePluginInstallationStatus.tsx +1 -2
  442. package/tui/src/hooks/notifs/useRateLimitWarningNotification.tsx +1 -2
  443. package/tui/src/hooks/notifs/useSettingsErrors.tsx +1 -2
  444. package/tui/src/hooks/useApiKeyVerification.ts +7 -7
  445. package/tui/src/hooks/useArrowKeyHistory.tsx +1 -2
  446. package/tui/src/hooks/useCanUseTool.tsx +0 -1
  447. package/tui/src/hooks/useChromeExtensionNotification.tsx +0 -1
  448. package/tui/src/hooks/useClaudeCodeHintRecommendation.tsx +1 -2
  449. package/tui/src/hooks/useCommandKeybindings.tsx +1 -2
  450. package/tui/src/hooks/useGlobalKeybindings.tsx +1 -2
  451. package/tui/src/hooks/useIDEIntegration.tsx +1 -2
  452. package/tui/src/hooks/useLspPluginRecommendation.tsx +1 -2
  453. package/tui/src/hooks/useOfficialMarketplaceNotification.tsx +0 -1
  454. package/tui/src/hooks/usePluginRecommendationBase.tsx +1 -2
  455. package/tui/src/hooks/usePromptsFromClaudeInChrome.tsx +1 -2
  456. package/tui/src/hooks/useReplBridge.tsx +1 -2
  457. package/tui/src/hooks/useTypeahead.tsx +0 -1
  458. package/tui/src/hooks/useVoiceIntegration.tsx +1 -2
  459. package/tui/src/ink/Ansi.tsx +1 -2
  460. package/tui/src/ink/components/AlternateScreen.tsx +1 -2
  461. package/tui/src/ink/components/App.tsx +0 -1
  462. package/tui/src/ink/components/Box.tsx +1 -2
  463. package/tui/src/ink/components/Button.tsx +1 -2
  464. package/tui/src/ink/components/ClockContext.tsx +1 -2
  465. package/tui/src/ink/components/ErrorOverview.tsx +1 -2
  466. package/tui/src/ink/components/Link.tsx +1 -2
  467. package/tui/src/ink/components/Newline.tsx +1 -2
  468. package/tui/src/ink/components/NoSelect.tsx +1 -2
  469. package/tui/src/ink/components/RawAnsi.tsx +1 -2
  470. package/tui/src/ink/components/ScrollBox.tsx +1 -2
  471. package/tui/src/ink/components/Spacer.tsx +1 -2
  472. package/tui/src/ink/components/TerminalFocusContext.tsx +1 -2
  473. package/tui/src/ink/components/TerminalSizeContext.tsx +1 -2
  474. package/tui/src/ink/components/Text.tsx +1 -2
  475. package/tui/src/ink/ink.tsx +0 -1
  476. package/tui/src/interactiveHelpers.tsx +0 -1
  477. package/tui/src/keybindings/KeybindingContext.tsx +1 -2
  478. package/tui/src/keybindings/KeybindingProviderSetup.tsx +1 -2
  479. package/tui/src/main.tsx +0 -1
  480. package/tui/src/moreright/useMoreRight.tsx +1 -2
  481. package/tui/src/replLauncher.tsx +1 -2
  482. package/tui/src/screens/Doctor.tsx +0 -1
  483. package/tui/src/screens/REPL.tsx +0 -1
  484. package/tui/src/screens/ResumeConversation.tsx +0 -1
  485. package/tui/src/services/mcp/MCPConnectionManager.tsx +1 -2
  486. package/tui/src/services/mcp/claudeai.ts +1 -1
  487. package/tui/src/services/mcpServerApproval.tsx +1 -2
  488. package/tui/src/services/oauth/client.ts +16 -14
  489. package/tui/src/services/oauth/getOauthProfile.ts +2 -2
  490. package/tui/src/services/oauth/index.ts +12 -16
  491. package/tui/src/services/policyLimits/index.ts +3 -3
  492. package/tui/src/services/remoteManagedSettings/index.ts +3 -3
  493. package/tui/src/services/remoteManagedSettings/securityCheck.tsx +1 -2
  494. package/tui/src/services/remoteManagedSettings/syncCache.ts +3 -3
  495. package/tui/src/services/voiceStreamSTT.ts +2 -2
  496. package/tui/src/state/AppState.tsx +1 -2
  497. package/tui/src/tasks/InProcessTeammateTask/InProcessTeammateTask.tsx +1 -2
  498. package/tui/src/tasks/LocalAgentTask/LocalAgentTask.tsx +1 -2
  499. package/tui/src/tasks/LocalShellTask/LocalShellTask.tsx +1 -2
  500. package/tui/src/tasks/RemoteAgentTask/RemoteAgentTask.tsx +0 -1
  501. package/tui/src/tools/AgentTool/UI.tsx +1 -2
  502. package/tui/src/tools/BashTool/BashToolResultMessage.tsx +0 -1
  503. package/tui/src/tools/BashTool/UI.tsx +1 -2
  504. package/tui/src/tools/BriefTool/UI.tsx +0 -1
  505. package/tui/src/tools/ConfigTool/ConfigTool.ts +2 -2
  506. package/tui/src/tools/ConfigTool/UI.tsx +1 -2
  507. package/tui/src/tools/EnterPlanModeTool/UI.tsx +0 -1
  508. package/tui/src/tools/EnterWorktreeTool/UI.tsx +1 -2
  509. package/tui/src/tools/ExitPlanModeTool/UI.tsx +0 -1
  510. package/tui/src/tools/ExitWorktreeTool/UI.tsx +1 -2
  511. package/tui/src/tools/FileEditTool/UI.tsx +1 -2
  512. package/tui/src/tools/FileReadTool/UI.tsx +1 -2
  513. package/tui/src/tools/FileWriteTool/UI.tsx +1 -2
  514. package/tui/src/tools/GlobTool/UI.tsx +1 -2
  515. package/tui/src/tools/GrepTool/UI.tsx +1 -2
  516. package/tui/src/tools/LSPTool/UI.tsx +1 -2
  517. package/tui/src/tools/ListMcpResourcesTool/UI.tsx +1 -2
  518. package/tui/src/tools/MCPTool/UI.tsx +1 -2
  519. package/tui/src/tools/NotebookEditTool/UI.tsx +1 -2
  520. package/tui/src/tools/PowerShellTool/UI.tsx +0 -1
  521. package/tui/src/tools/ReadMcpResourceTool/UI.tsx +1 -2
  522. package/tui/src/tools/RemoteTriggerTool/UI.tsx +1 -2
  523. package/tui/src/tools/ScheduleCronTool/UI.tsx +1 -2
  524. package/tui/src/tools/SendMessageTool/UI.tsx +1 -2
  525. package/tui/src/tools/SkillTool/UI.tsx +1 -2
  526. package/tui/src/tools/TaskStopTool/UI.tsx +1 -2
  527. package/tui/src/tools/TeamCreateTool/UI.tsx +1 -2
  528. package/tui/src/tools/TeamDeleteTool/UI.tsx +1 -2
  529. package/tui/src/tools/WebFetchTool/UI.tsx +1 -2
  530. package/tui/src/tools/testing/TestingPermissionTool.tsx +1 -2
  531. package/tui/src/utils/auth.ts +8 -8
  532. package/tui/src/utils/autoRunIssue.tsx +1 -2
  533. package/tui/src/utils/billing.ts +2 -2
  534. package/tui/src/utils/computerUse/toolRendering.tsx +1 -2
  535. package/tui/src/utils/computerUse/wrapper.tsx +0 -1
  536. package/tui/src/utils/exportRenderer.tsx +1 -2
  537. package/tui/src/utils/fastMode.ts +2 -2
  538. package/tui/src/utils/highlightMatch.tsx +1 -2
  539. package/tui/src/utils/http.ts +2 -2
  540. package/tui/src/utils/managedEnv.ts +1 -1
  541. package/tui/src/utils/messages/systemInit.ts +2 -2
  542. package/tui/src/utils/plugins/performStartupChecks.tsx +1 -2
  543. package/tui/src/utils/preflightChecks.tsx +0 -1
  544. package/tui/src/utils/processUserInput/processBashCommand.tsx +1 -2
  545. package/tui/src/utils/processUserInput/processSlashCommand.tsx +0 -1
  546. package/tui/src/utils/staticRender.tsx +1 -2
  547. package/tui/src/utils/status.tsx +1 -2
  548. package/tui/src/utils/statusNoticeDefinitions.tsx +5 -6
  549. package/tui/src/utils/swarm/It2SetupPrompt.tsx +1 -2
  550. package/tui/src/utils/teleport.tsx +0 -1
  551. package/tui/src/voice/voiceModeEnabled.ts +3 -3
  552. package/uv.lock +1 -1
  553. package/src/ummaya/llm/_cc_reference/README.md +0 -104
  554. package/src/ummaya/llm/_cc_reference/api.ts +0 -721
  555. package/src/ummaya/llm/_cc_reference/claude.ts +0 -3422
  556. package/src/ummaya/llm/_cc_reference/client.ts +0 -392
  557. package/src/ummaya/llm/_cc_reference/emptyUsage.ts +0 -25
  558. package/src/ummaya/llm/_cc_reference/errors.ts +0 -1210
  559. package/src/ummaya/llm/_cc_reference/messages.ts +0 -5515
  560. package/src/ummaya/llm/_cc_reference/permissions.ts +0 -1489
  561. package/src/ummaya/llm/_cc_reference/prompts.ts +0 -917
  562. package/src/ummaya/llm/_cc_reference/query.ts +0 -1732
  563. package/src/ummaya/llm/_cc_reference/toolExecution.ts +0 -1748
  564. package/src/ummaya/llm/_cc_reference/toolOrchestration.ts +0 -191
  565. package/src/ummaya/llm/_cc_reference/toolResultStorage.ts +0 -1043
  566. package/src/ummaya/llm/_cc_reference/tools.ts +0 -392
@@ -798,5 +798,4 @@ export function BrowseMarketplace({
798
798
 
799
799
  <PluginSelectionKeyHint hasSelection={selectedForInstall.size > 0} />
800
800
  </Box>;
801
- }
802
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWd1cmVzIiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkNvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCIsIkJ5bGluZSIsIkJveCIsIlRleHQiLCJ1c2VLZXliaW5kaW5nIiwidXNlS2V5YmluZGluZ3MiLCJMb2FkZWRQbHVnaW4iLCJjb3VudCIsIm9wZW5Ccm93c2VyIiwibG9nRm9yRGVidWdnaW5nIiwiZXJyb3JNZXNzYWdlIiwiY2xlYXJBbGxDYWNoZXMiLCJmb3JtYXRJbnN0YWxsQ291bnQiLCJnZXRJbnN0YWxsQ291bnRzIiwiaXNQbHVnaW5HbG9iYWxseUluc3RhbGxlZCIsImlzUGx1Z2luSW5zdGFsbGVkIiwiY3JlYXRlUGx1Z2luSWQiLCJmb3JtYXRGYWlsdXJlRGV0YWlscyIsImZvcm1hdE1hcmtldHBsYWNlTG9hZGluZ0Vycm9ycyIsImdldE1hcmtldHBsYWNlU291cmNlRGlzcGxheSIsImxvYWRNYXJrZXRwbGFjZXNXaXRoR3JhY2VmdWxEZWdyYWRhdGlvbiIsImdldE1hcmtldHBsYWNlIiwibG9hZEtub3duTWFya2V0cGxhY2VzQ29uZmlnIiwiT0ZGSUNJQUxfTUFSS0VUUExBQ0VfTkFNRSIsImluc3RhbGxQbHVnaW5Gcm9tTWFya2V0cGxhY2UiLCJpc1BsdWdpbkJsb2NrZWRCeVBvbGljeSIsInBsdXJhbCIsInRydW5jYXRlVG9XaWR0aCIsImZpbmRQbHVnaW5PcHRpb25zVGFyZ2V0IiwiUGx1Z2luT3B0aW9uc0Zsb3ciLCJQbHVnaW5UcnVzdFdhcm5pbmciLCJidWlsZFBsdWdpbkRldGFpbHNNZW51T3B0aW9ucyIsImV4dHJhY3RHaXRIdWJSZXBvIiwiSW5zdGFsbGFibGVQbHVnaW4iLCJQbHVnaW5TZWxlY3Rpb25LZXlIaW50IiwiVmlld1N0YXRlIiwiUGFyZW50Vmlld1N0YXRlIiwidXNlUGFnaW5hdGlvbiIsIlByb3BzIiwiZXJyb3IiLCJzZXRFcnJvciIsInJlc3VsdCIsInNldFJlc3VsdCIsInNldFZpZXdTdGF0ZSIsInN0YXRlIiwib25JbnN0YWxsQ29tcGxldGUiLCJQcm9taXNlIiwidGFyZ2V0TWFya2V0cGxhY2UiLCJ0YXJnZXRQbHVnaW4iLCJ0eXBlIiwicGx1Z2luIiwicGx1Z2luSWQiLCJNYXJrZXRwbGFjZUluZm8iLCJuYW1lIiwidG90YWxQbHVnaW5zIiwiaW5zdGFsbGVkQ291bnQiLCJzb3VyY2UiLCJCcm93c2VNYXJrZXRwbGFjZSIsIl9yZXN1bHQiLCJzZXRQYXJlbnRWaWV3U3RhdGUiLCJSZWFjdE5vZGUiLCJ2aWV3U3RhdGUiLCJzZWxlY3RlZE1hcmtldHBsYWNlIiwic2V0U2VsZWN0ZWRNYXJrZXRwbGFjZSIsInNlbGVjdGVkUGx1Z2luIiwic2V0U2VsZWN0ZWRQbHVnaW4iLCJtYXJrZXRwbGFjZXMiLCJzZXRNYXJrZXRwbGFjZXMiLCJhdmFpbGFibGVQbHVnaW5zIiwic2V0QXZhaWxhYmxlUGx1Z2lucyIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiaW5zdGFsbENvdW50cyIsInNldEluc3RhbGxDb3VudHMiLCJNYXAiLCJzZWxlY3RlZEluZGV4Iiwic2V0U2VsZWN0ZWRJbmRleCIsInNlbGVjdGVkRm9ySW5zdGFsbCIsInNldFNlbGVjdGVkRm9ySW5zdGFsbCIsIlNldCIsImluc3RhbGxpbmdQbHVnaW5zIiwic2V0SW5zdGFsbGluZ1BsdWdpbnMiLCJwYWdpbmF0aW9uIiwidG90YWxJdGVtcyIsImxlbmd0aCIsImRldGFpbHNNZW51SW5kZXgiLCJzZXREZXRhaWxzTWVudUluZGV4IiwiaXNJbnN0YWxsaW5nIiwic2V0SXNJbnN0YWxsaW5nIiwiaW5zdGFsbEVycm9yIiwic2V0SW5zdGFsbEVycm9yIiwid2FybmluZyIsInNldFdhcm5pbmciLCJoYW5kbGVCYWNrIiwidXNlQ2FsbGJhY2siLCJjb250ZXh0IiwibG9hZE1hcmtldHBsYWNlRGF0YSIsImNvbmZpZyIsImZhaWx1cmVzIiwibWFya2V0cGxhY2VJbmZvcyIsIm1hcmtldHBsYWNlQ29uZmlnIiwiZGF0YSIsIm1hcmtldHBsYWNlIiwiaW5zdGFsbGVkRnJvbVRoaXNNYXJrZXRwbGFjZSIsInBsdWdpbnMiLCJwdXNoIiwic29ydCIsImEiLCJiIiwic3VjY2Vzc0NvdW50IiwibSIsImVycm9yUmVzdWx0IiwibWVzc2FnZSIsIkVycm9yIiwic2luZ2xlTWFya2V0cGxhY2UiLCJmb3VuZFBsdWdpbiIsImZvdW5kTWFya2V0cGxhY2UiLCJPYmplY3QiLCJlbnRyaWVzIiwiZmluZCIsInAiLCJlbnRyeSIsIm1hcmtldHBsYWNlTmFtZSIsImlzSW5zdGFsbGVkIiwiZ2xvYmFsbHlJbnN0YWxsZWQiLCJtYXJrZXRwbGFjZUV4aXN0cyIsInNvbWUiLCJlcnIiLCJjYW5jZWxsZWQiLCJsb2FkUGx1Z2luc0Zvck1hcmtldHBsYWNlIiwiaW5zdGFsbGFibGVQbHVnaW5zIiwiY291bnRzIiwiY291bnRBIiwiZ2V0IiwiY291bnRCIiwibG9jYWxlQ29tcGFyZSIsImluc3RhbGxTZWxlY3RlZFBsdWdpbnMiLCJzaXplIiwicGx1Z2luc1RvSW5zdGFsbCIsImZpbHRlciIsImhhcyIsIm1hcCIsImZhaWx1cmVDb3VudCIsIm5ld0ZhaWxlZFBsdWdpbnMiLCJBcnJheSIsInJlYXNvbiIsInNjb3BlIiwic3VjY2VzcyIsImhhbmRsZVNpbmdsZVBsdWdpbkluc3RhbGwiLCJsb2FkZWQiLCJzZWxlY3Q6cHJldmlvdXMiLCJzZWxlY3Q6bmV4dCIsInNlbGVjdDphY2NlcHQiLCJpc0FjdGl2ZSIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsInBsdWdpbjp0b2dnbGUiLCJuZXdTZWxlY3Rpb24iLCJkZWxldGUiLCJhZGQiLCJwbHVnaW46aW5zdGFsbCIsImRldGFpbHNNZW51T3B0aW9ucyIsInVzZU1lbW8iLCJoYXNIb21lcGFnZSIsImhvbWVwYWdlIiwiZ2l0aHViUmVwbyIsImFjdGlvbiIsImZpbmlzaCIsIm1zZyIsIm91dGNvbWUiLCJkZXRhaWwiLCJpbmRleCIsInVuZGVmaW5lZCIsInBvaW50ZXIiLCJtZW51T3B0aW9ucyIsInZlcnNpb24iLCJkZXNjcmlwdGlvbiIsImF1dGhvciIsImNvbW1hbmRzIiwiaXNBcnJheSIsImpvaW4iLCJrZXlzIiwiYWdlbnRzIiwiaG9va3MiLCJtY3BTZXJ2ZXJzIiwib3B0aW9uIiwibGFiZWwiLCJ2aXNpYmxlUGx1Z2lucyIsImdldFZpc2libGVJdGVtcyIsInNjcm9sbFBvc2l0aW9uIiwiY2FuU2Nyb2xsVXAiLCJhcnJvd1VwIiwidmlzaWJsZUluZGV4IiwiYWN0dWFsSW5kZXgiLCJ0b0FjdHVhbEluZGV4IiwiaXNTZWxlY3RlZCIsImlzU2VsZWN0ZWRGb3JJbnN0YWxsIiwiaXNMYXN0IiwidGljayIsImVsbGlwc2lzIiwicmFkaW9PbiIsInJhZGlvT2ZmIiwiY2F0ZWdvcnkiLCJ0YWdzIiwiaW5jbHVkZXMiLCJjYW5TY3JvbGxEb3duIiwiYXJyb3dEb3duIiwiY3Jvc3MiXSwic291cmNlcyI6WyJCcm93c2VNYXJrZXRwbGFjZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZpZ3VyZXMgZnJvbSAnZmlndXJlcydcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ29uZmlndXJhYmxlU2hvcnRjdXRIaW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Db25maWd1cmFibGVTaG9ydGN1dEhpbnQuanMnXG5pbXBvcnQgeyBCeWxpbmUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Rlc2lnbi1zeXN0ZW0vQnlsaW5lLmpzJ1xuaW1wb3J0IHsgQm94LCBUZXh0IH0gZnJvbSAnLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHtcbiAgdXNlS2V5YmluZGluZyxcbiAgdXNlS2V5YmluZGluZ3MsXG59IGZyb20gJy4uLy4uL2tleWJpbmRpbmdzL3VzZUtleWJpbmRpbmcuanMnXG5pbXBvcnQgdHlwZSB7IExvYWRlZFBsdWdpbiB9IGZyb20gJy4uLy4uL3R5cGVzL3BsdWdpbi5qcydcbmltcG9ydCB7IGNvdW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXkuanMnXG5pbXBvcnQgeyBvcGVuQnJvd3NlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Jyb3dzZXIuanMnXG5pbXBvcnQgeyBsb2dGb3JEZWJ1Z2dpbmcgfSBmcm9tICcuLi8uLi91dGlscy9kZWJ1Zy5qcydcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWxzL2Vycm9ycy5qcydcbmltcG9ydCB7IGNsZWFyQWxsQ2FjaGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9jYWNoZVV0aWxzLmpzJ1xuaW1wb3J0IHtcbiAgZm9ybWF0SW5zdGFsbENvdW50LFxuICBnZXRJbnN0YWxsQ291bnRzLFxufSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zL2luc3RhbGxDb3VudHMuanMnXG5pbXBvcnQge1xuICBpc1BsdWdpbkdsb2JhbGx5SW5zdGFsbGVkLFxuICBpc1BsdWdpbkluc3RhbGxlZCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9pbnN0YWxsZWRQbHVnaW5zTWFuYWdlci5qcydcbmltcG9ydCB7XG4gIGNyZWF0ZVBsdWdpbklkLFxuICBmb3JtYXRGYWlsdXJlRGV0YWlscyxcbiAgZm9ybWF0TWFya2V0cGxhY2VMb2FkaW5nRXJyb3JzLFxuICBnZXRNYXJrZXRwbGFjZVNvdXJjZURpc3BsYXksXG4gIGxvYWRNYXJrZXRwbGFjZXNXaXRoR3JhY2VmdWxEZWdyYWRhdGlvbixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9tYXJrZXRwbGFjZUhlbHBlcnMuanMnXG5pbXBvcnQge1xuICBnZXRNYXJrZXRwbGFjZSxcbiAgbG9hZEtub3duTWFya2V0cGxhY2VzQ29uZmlnLFxufSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zL21hcmtldHBsYWNlTWFuYWdlci5qcydcbmltcG9ydCB7IE9GRklDSUFMX01BUktFVFBMQUNFX05BTUUgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zL29mZmljaWFsTWFya2V0cGxhY2UuanMnXG5pbXBvcnQgeyBpbnN0YWxsUGx1Z2luRnJvbU1hcmtldHBsYWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9wbHVnaW5JbnN0YWxsYXRpb25IZWxwZXJzLmpzJ1xuaW1wb3J0IHsgaXNQbHVnaW5CbG9ja2VkQnlQb2xpY3kgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zL3BsdWdpblBvbGljeS5qcydcbmltcG9ydCB7IHBsdXJhbCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZ1V0aWxzLmpzJ1xuaW1wb3J0IHsgdHJ1bmNhdGVUb1dpZHRoIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHJ1bmNhdGUuanMnXG5pbXBvcnQge1xuICBmaW5kUGx1Z2luT3B0aW9uc1RhcmdldCxcbiAgUGx1Z2luT3B0aW9uc0Zsb3csXG59IGZyb20gJy4vUGx1Z2luT3B0aW9uc0Zsb3cuanMnXG5pbXBvcnQgeyBQbHVnaW5UcnVzdFdhcm5pbmcgfSBmcm9tICcuL1BsdWdpblRydXN0V2FybmluZy5qcydcbmltcG9ydCB7XG4gIGJ1aWxkUGx1Z2luRGV0YWlsc01lbnVPcHRpb25zLFxuICBleHRyYWN0R2l0SHViUmVwbyxcbiAgdHlwZSBJbnN0YWxsYWJsZVBsdWdpbixcbiAgUGx1Z2luU2VsZWN0aW9uS2V5SGludCxcbn0gZnJvbSAnLi9wbHVnaW5EZXRhaWxzSGVscGVycy5qcydcbmltcG9ydCB0eXBlIHsgVmlld1N0YXRlIGFzIFBhcmVudFZpZXdTdGF0ZSB9IGZyb20gJy4vdHlwZXMuanMnXG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSAnLi91c2VQYWdpbmF0aW9uLmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbFxuICBzZXRFcnJvcjogKGVycm9yOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkXG4gIHJlc3VsdDogc3RyaW5nIHwgbnVsbFxuICBzZXRSZXN1bHQ6IChyZXN1bHQ6IHN0cmluZyB8IG51bGwpID0+IHZvaWRcbiAgc2V0Vmlld1N0YXRlOiAoc3RhdGU6IFBhcmVudFZpZXdTdGF0ZSkgPT4gdm9pZFxuICBvbkluc3RhbGxDb21wbGV0ZT86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+XG4gIHRhcmdldE1hcmtldHBsYWNlPzogc3RyaW5nXG4gIHRhcmdldFBsdWdpbj86IHN0cmluZ1xufVxuXG50eXBlIFZpZXdTdGF0ZSA9XG4gIHwgJ21hcmtldHBsYWNlLWxpc3QnXG4gIHwgJ3BsdWdpbi1saXN0J1xuICB8ICdwbHVnaW4tZGV0YWlscydcbiAgfCB7IHR5cGU6ICdwbHVnaW4tb3B0aW9ucyc7IHBsdWdpbjogTG9hZGVkUGx1Z2luOyBwbHVnaW5JZDogc3RyaW5nIH1cblxudHlwZSBNYXJrZXRwbGFjZUluZm8gPSB7XG4gIG5hbWU6IHN0cmluZ1xuICB0b3RhbFBsdWdpbnM6IG51bWJlclxuICBpbnN0YWxsZWRDb3VudDogbnVtYmVyXG4gIHNvdXJjZT86IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQnJvd3NlTWFya2V0cGxhY2Uoe1xuICBlcnJvcixcbiAgc2V0RXJyb3IsXG4gIHJlc3VsdDogX3Jlc3VsdCxcbiAgc2V0UmVzdWx0LFxuICBzZXRWaWV3U3RhdGU6IHNldFBhcmVudFZpZXdTdGF0ZSxcbiAgb25JbnN0YWxsQ29tcGxldGUsXG4gIHRhcmdldE1hcmtldHBsYWNlLFxuICB0YXJnZXRQbHVnaW4sXG59OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIC8vIFZpZXcgc3RhdGVcbiAgY29uc3QgW3ZpZXdTdGF0ZSwgc2V0Vmlld1N0YXRlXSA9IHVzZVN0YXRlPFZpZXdTdGF0ZT4oJ21hcmtldHBsYWNlLWxpc3QnKVxuICBjb25zdCBbc2VsZWN0ZWRNYXJrZXRwbGFjZSwgc2V0U2VsZWN0ZWRNYXJrZXRwbGFjZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihcbiAgICBudWxsLFxuICApXG4gIGNvbnN0IFtzZWxlY3RlZFBsdWdpbiwgc2V0U2VsZWN0ZWRQbHVnaW5dID1cbiAgICB1c2VTdGF0ZTxJbnN0YWxsYWJsZVBsdWdpbiB8IG51bGw+KG51bGwpXG5cbiAgLy8gRGF0YSBzdGF0ZVxuICBjb25zdCBbbWFya2V0cGxhY2VzLCBzZXRNYXJrZXRwbGFjZXNdID0gdXNlU3RhdGU8TWFya2V0cGxhY2VJbmZvW10+KFtdKVxuICBjb25zdCBbYXZhaWxhYmxlUGx1Z2lucywgc2V0QXZhaWxhYmxlUGx1Z2luc10gPSB1c2VTdGF0ZTxJbnN0YWxsYWJsZVBsdWdpbltdPihcbiAgICBbXSxcbiAgKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKVxuICBjb25zdCBbaW5zdGFsbENvdW50cywgc2V0SW5zdGFsbENvdW50c10gPSB1c2VTdGF0ZTxNYXA8XG4gICAgc3RyaW5nLFxuICAgIG51bWJlclxuICA+IHwgbnVsbD4obnVsbClcblxuICAvLyBTZWxlY3Rpb24gc3RhdGVcbiAgY29uc3QgW3NlbGVjdGVkSW5kZXgsIHNldFNlbGVjdGVkSW5kZXhdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3NlbGVjdGVkRm9ySW5zdGFsbCwgc2V0U2VsZWN0ZWRGb3JJbnN0YWxsXSA9IHVzZVN0YXRlPFNldDxzdHJpbmc+PihcbiAgICBuZXcgU2V0KCksXG4gIClcbiAgY29uc3QgW2luc3RhbGxpbmdQbHVnaW5zLCBzZXRJbnN0YWxsaW5nUGx1Z2luc10gPSB1c2VTdGF0ZTxTZXQ8c3RyaW5nPj4oXG4gICAgbmV3IFNldCgpLFxuICApXG5cbiAgLy8gUGFnaW5hdGlvbiBmb3IgcGx1Z2luIGxpc3QgKGNvbnRpbnVvdXMgc2Nyb2xsaW5nKVxuICBjb25zdCBwYWdpbmF0aW9uID0gdXNlUGFnaW5hdGlvbjxJbnN0YWxsYWJsZVBsdWdpbj4oe1xuICAgIHRvdGFsSXRlbXM6IGF2YWlsYWJsZVBsdWdpbnMubGVuZ3RoLFxuICAgIHNlbGVjdGVkSW5kZXgsXG4gIH0pXG5cbiAgLy8gRGV0YWlscyB2aWV3IHN0YXRlXG4gIGNvbnN0IFtkZXRhaWxzTWVudUluZGV4LCBzZXREZXRhaWxzTWVudUluZGV4XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc0luc3RhbGxpbmcsIHNldElzSW5zdGFsbGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2luc3RhbGxFcnJvciwgc2V0SW5zdGFsbEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgLy8gV2FybmluZyBzdGF0ZSBmb3Igbm9uLWNyaXRpY2FsIGVycm9ycyAoZS5nLiwgc29tZSBtYXJrZXRwbGFjZXMgZmFpbGVkIHRvIGxvYWQpXG4gIGNvbnN0IFt3YXJuaW5nLCBzZXRXYXJuaW5nXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgLy8gSGFuZGxlIGVzY2FwZSB0byBnbyBiYWNrIC0gdmlld1N0YXRlLWRlcGVuZGVudCBuYXZpZ2F0aW9uXG4gIGNvbnN0IGhhbmRsZUJhY2sgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHZpZXdTdGF0ZSA9PT0gJ3BsdWdpbi1saXN0Jykge1xuICAgICAgLy8gSWYgbmF2aWdhdGVkIGRpcmVjdGx5IHRvIGEgc3BlY2lmaWMgbWFya2V0cGxhY2UgdmlhIHRhcmdldE1hcmtldHBsYWNlLFxuICAgICAgLy8gZ28gYmFjayB0byBtYW5hZ2UtbWFya2V0cGxhY2VzIHNob3dpbmcgdGhhdCBtYXJrZXRwbGFjZSdzIGRldGFpbHNcbiAgICAgIGlmICh0YXJnZXRNYXJrZXRwbGFjZSkge1xuICAgICAgICBzZXRQYXJlbnRWaWV3U3RhdGUoe1xuICAgICAgICAgIHR5cGU6ICdtYW5hZ2UtbWFya2V0cGxhY2VzJyxcbiAgICAgICAgICB0YXJnZXRNYXJrZXRwbGFjZSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAobWFya2V0cGxhY2VzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAvLyBJZiB0aGVyZSdzIG9ubHkgb25lIG1hcmtldHBsYWNlLCBza2lwIHRoZSBtYXJrZXRwbGFjZS1saXN0IHZpZXdcbiAgICAgICAgLy8gc2luY2Ugd2UgYXV0by1uYXZpZ2F0ZWQgcGFzdCBpdCBvbiBsb2FkXG4gICAgICAgIHNldFBhcmVudFZpZXdTdGF0ZSh7IHR5cGU6ICdtZW51JyB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0Vmlld1N0YXRlKCdtYXJrZXRwbGFjZS1saXN0JylcbiAgICAgICAgc2V0U2VsZWN0ZWRNYXJrZXRwbGFjZShudWxsKVxuICAgICAgICBzZXRTZWxlY3RlZEZvckluc3RhbGwobmV3IFNldCgpKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmlld1N0YXRlID09PSAncGx1Z2luLWRldGFpbHMnKSB7XG4gICAgICBzZXRWaWV3U3RhdGUoJ3BsdWdpbi1saXN0JylcbiAgICAgIHNldFNlbGVjdGVkUGx1Z2luKG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEF0IHJvb3QgbGV2ZWwgKG1hcmtldHBsYWNlLWxpc3QpLCBleGl0IHRoZSBwbHVnaW4gbWVudVxuICAgICAgc2V0UGFyZW50Vmlld1N0YXRlKHsgdHlwZTogJ21lbnUnIH0pXG4gICAgfVxuICB9LCBbdmlld1N0YXRlLCB0YXJnZXRNYXJrZXRwbGFjZSwgc2V0UGFyZW50Vmlld1N0YXRlLCBtYXJrZXRwbGFjZXMubGVuZ3RoXSlcblxuICB1c2VLZXliaW5kaW5nKCdjb25maXJtOm5vJywgaGFuZGxlQmFjaywgeyBjb250ZXh0OiAnQ29uZmlybWF0aW9uJyB9KVxuXG4gIC8vIExvYWQgbWFya2V0cGxhY2VzIGFuZCBjb3VudCBpbnN0YWxsZWQgcGx1Z2luc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGFzeW5jIGZ1bmN0aW9uIGxvYWRNYXJrZXRwbGFjZURhdGEoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCBsb2FkS25vd25NYXJrZXRwbGFjZXNDb25maWcoKVxuXG4gICAgICAgIC8vIExvYWQgbWFya2V0cGxhY2VzIHdpdGggZ3JhY2VmdWwgZGVncmFkYXRpb25cbiAgICAgICAgY29uc3QgeyBtYXJrZXRwbGFjZXMsIGZhaWx1cmVzIH0gPVxuICAgICAgICAgIGF3YWl0IGxvYWRNYXJrZXRwbGFjZXNXaXRoR3JhY2VmdWxEZWdyYWRhdGlvbihjb25maWcpXG5cbiAgICAgICAgY29uc3QgbWFya2V0cGxhY2VJbmZvczogTWFya2V0cGxhY2VJbmZvW10gPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGNvbmZpZzogbWFya2V0cGxhY2VDb25maWcsXG4gICAgICAgICAgZGF0YTogbWFya2V0cGxhY2UsXG4gICAgICAgIH0gb2YgbWFya2V0cGxhY2VzKSB7XG4gICAgICAgICAgaWYgKG1hcmtldHBsYWNlKSB7XG4gICAgICAgICAgICAvLyBDb3VudCBob3cgbWFueSBwbHVnaW5zIGZyb20gdGhpcyBtYXJrZXRwbGFjZSBhcmUgaW5zdGFsbGVkXG4gICAgICAgICAgICBjb25zdCBpbnN0YWxsZWRGcm9tVGhpc01hcmtldHBsYWNlID0gY291bnQoXG4gICAgICAgICAgICAgIG1hcmtldHBsYWNlLnBsdWdpbnMsXG4gICAgICAgICAgICAgIHBsdWdpbiA9PiBpc1BsdWdpbkluc3RhbGxlZChjcmVhdGVQbHVnaW5JZChwbHVnaW4ubmFtZSwgbmFtZSkpLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBtYXJrZXRwbGFjZUluZm9zLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICB0b3RhbFBsdWdpbnM6IG1hcmtldHBsYWNlLnBsdWdpbnMubGVuZ3RoLFxuICAgICAgICAgICAgICBpbnN0YWxsZWRDb3VudDogaW5zdGFsbGVkRnJvbVRoaXNNYXJrZXRwbGFjZSxcbiAgICAgICAgICAgICAgc291cmNlOiBnZXRNYXJrZXRwbGFjZVNvdXJjZURpc3BsYXkobWFya2V0cGxhY2VDb25maWcuc291cmNlKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU29ydCBzbyBjbGF1ZGUtcGx1Z2luLWRpcmVjdG9yeSBpcyBhbHdheXMgZmlyc3RcbiAgICAgICAgbWFya2V0cGxhY2VJbmZvcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgaWYgKGEubmFtZSA9PT0gJ2NsYXVkZS1wbHVnaW4tZGlyZWN0b3J5JykgcmV0dXJuIC0xXG4gICAgICAgICAgaWYgKGIubmFtZSA9PT0gJ2NsYXVkZS1wbHVnaW4tZGlyZWN0b3J5JykgcmV0dXJuIDFcbiAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9KVxuXG4gICAgICAgIHNldE1hcmtldHBsYWNlcyhtYXJrZXRwbGFjZUluZm9zKVxuXG4gICAgICAgIC8vIEhhbmRsZSBtYXJrZXRwbGFjZSBsb2FkaW5nIGVycm9ycy93YXJuaW5nc1xuICAgICAgICBjb25zdCBzdWNjZXNzQ291bnQgPSBjb3VudChtYXJrZXRwbGFjZXMsIG0gPT4gbS5kYXRhICE9PSBudWxsKVxuICAgICAgICBjb25zdCBlcnJvclJlc3VsdCA9IGZvcm1hdE1hcmtldHBsYWNlTG9hZGluZ0Vycm9ycyhcbiAgICAgICAgICBmYWlsdXJlcyxcbiAgICAgICAgICBzdWNjZXNzQ291bnQsXG4gICAgICAgIClcbiAgICAgICAgaWYgKGVycm9yUmVzdWx0KSB7XG4gICAgICAgICAgaWYgKGVycm9yUmVzdWx0LnR5cGUgPT09ICd3YXJuaW5nJykge1xuICAgICAgICAgICAgc2V0V2FybmluZyhcbiAgICAgICAgICAgICAgZXJyb3JSZXN1bHQubWVzc2FnZSArICcuIFNob3dpbmcgYXZhaWxhYmxlIG1hcmtldHBsYWNlcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JSZXN1bHQubWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTa2lwIG1hcmtldHBsYWNlIHNlbGVjdGlvbiBpZiB0aGVyZSdzIG9ubHkgb25lIG1hcmtldHBsYWNlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBtYXJrZXRwbGFjZUluZm9zLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgICF0YXJnZXRNYXJrZXRwbGFjZSAmJlxuICAgICAgICAgICF0YXJnZXRQbHVnaW5cbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3Qgc2luZ2xlTWFya2V0cGxhY2UgPSBtYXJrZXRwbGFjZUluZm9zWzBdXG4gICAgICAgICAgaWYgKHNpbmdsZU1hcmtldHBsYWNlKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZE1hcmtldHBsYWNlKHNpbmdsZU1hcmtldHBsYWNlLm5hbWUpXG4gICAgICAgICAgICBzZXRWaWV3U3RhdGUoJ3BsdWdpbi1saXN0JylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgdGFyZ2V0TWFya2V0cGxhY2UgYW5kIHRhcmdldFBsdWdpbiBhZnRlciBtYXJrZXRwbGFjZXMgYXJlIGxvYWRlZFxuICAgICAgICBpZiAodGFyZ2V0UGx1Z2luKSB7XG4gICAgICAgICAgLy8gU2VhcmNoIGZvciB0aGUgcGx1Z2luIGFjcm9zcyBhbGwgbWFya2V0cGxhY2VzXG4gICAgICAgICAgbGV0IGZvdW5kUGx1Z2luOiBJbnN0YWxsYWJsZVBsdWdpbiB8IG51bGwgPSBudWxsXG4gICAgICAgICAgbGV0IGZvdW5kTWFya2V0cGxhY2U6IHN0cmluZyB8IG51bGwgPSBudWxsXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lXSBvZiBPYmplY3QuZW50cmllcyhjb25maWcpKSB7XG4gICAgICAgICAgICBjb25zdCBtYXJrZXRwbGFjZSA9IGF3YWl0IGdldE1hcmtldHBsYWNlKG5hbWUpXG4gICAgICAgICAgICBpZiAobWFya2V0cGxhY2UpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGx1Z2luID0gbWFya2V0cGxhY2UucGx1Z2lucy5maW5kKFxuICAgICAgICAgICAgICAgIHAgPT4gcC5uYW1lID09PSB0YXJnZXRQbHVnaW4sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKHBsdWdpbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsdWdpbklkID0gY3JlYXRlUGx1Z2luSWQocGx1Z2luLm5hbWUsIG5hbWUpXG4gICAgICAgICAgICAgICAgZm91bmRQbHVnaW4gPSB7XG4gICAgICAgICAgICAgICAgICBlbnRyeTogcGx1Z2luLFxuICAgICAgICAgICAgICAgICAgbWFya2V0cGxhY2VOYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgcGx1Z2luSWQsXG4gICAgICAgICAgICAgICAgICAvLyBpc1BsdWdpbkdsb2JhbGx5SW5zdGFsbGVkOiBvbmx5IGJsb2NrIHdoZW4gdXNlci9tYW5hZ2VkIHNjb3BlXG4gICAgICAgICAgICAgICAgICAvLyBleGlzdHMgKG5vdGhpbmcgdG8gYWRkKS4gUHJvamVjdC9sb2NhbC1zY29wZSBpbnN0YWxscyBkb24ndFxuICAgICAgICAgICAgICAgICAgLy8gYmxvY2sg4oCUIHVzZXIgbWF5IHdhbnQgdG8gcHJvbW90ZSB0byB1c2VyIHNjb3BlIChnaC0yOTk5NykuXG4gICAgICAgICAgICAgICAgICBpc0luc3RhbGxlZDogaXNQbHVnaW5HbG9iYWxseUluc3RhbGxlZChwbHVnaW5JZCksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvdW5kTWFya2V0cGxhY2UgPSBuYW1lXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmb3VuZFBsdWdpbiAmJiBmb3VuZE1hcmtldHBsYWNlKSB7XG4gICAgICAgICAgICAvLyBCbG9jayBvbmx5IG9uIGdsb2JhbCAodXNlci9tYW5hZ2VkKSBpbnN0YWxsIOKAlCBwcm9qZWN0L2xvY2FsIHNjb3BlXG4gICAgICAgICAgICAvLyBtZWFucyB0aGUgdXNlciBtaWdodCBzdGlsbCB3YW50IHRvIGFkZCBhIHVzZXItc2NvcGUgZW50cnkgc28gdGhlXG4gICAgICAgICAgICAvLyBwbHVnaW4gaXMgYXZhaWxhYmxlIGluIG90aGVyIHByb2plY3RzIChnaC0yOTk5NywgZ2gtMjkyNDAsIGdoLTI5MzkyKS5cbiAgICAgICAgICAgIC8vIFRoZSBwbHVnaW4tZGV0YWlscyB2aWV3IG9mZmVycyBhbGwgdGhyZWUgc2NvcGUgb3B0aW9uczsgdGhlIGJhY2tlbmRcbiAgICAgICAgICAgIC8vIChpbnN0YWxsUGx1Z2luT3Ag4oaSIGFkZEluc3RhbGxlZFBsdWdpbikgYWxyZWFkeSBzdXBwb3J0cyBtdWx0aXBsZVxuICAgICAgICAgICAgLy8gc2NvcGUgZW50cmllcyBwZXIgcGx1Z2luLlxuICAgICAgICAgICAgY29uc3QgcGx1Z2luSWQgPSBmb3VuZFBsdWdpbi5wbHVnaW5JZFxuICAgICAgICAgICAgY29uc3QgZ2xvYmFsbHlJbnN0YWxsZWQgPSBpc1BsdWdpbkdsb2JhbGx5SW5zdGFsbGVkKHBsdWdpbklkKVxuXG4gICAgICAgICAgICBpZiAoZ2xvYmFsbHlJbnN0YWxsZWQpIHtcbiAgICAgICAgICAgICAgc2V0RXJyb3IoXG4gICAgICAgICAgICAgICAgYFBsdWdpbiAnJHtwbHVnaW5JZH0nIGlzIGFscmVhZHkgaW5zdGFsbGVkIGdsb2JhbGx5LiBVc2UgJy9wbHVnaW4nIHRvIG1hbmFnZSBleGlzdGluZyBwbHVnaW5zLmAsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIE5hdmlnYXRlIHRvIHRoZSBwbHVnaW4gZGV0YWlscyB2aWV3XG4gICAgICAgICAgICAgIHNldFNlbGVjdGVkTWFya2V0cGxhY2UoZm91bmRNYXJrZXRwbGFjZSlcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRQbHVnaW4oZm91bmRQbHVnaW4pXG4gICAgICAgICAgICAgIHNldFZpZXdTdGF0ZSgncGx1Z2luLWRldGFpbHMnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRFcnJvcihgUGx1Z2luIFwiJHt0YXJnZXRQbHVnaW59XCIgbm90IGZvdW5kIGluIGFueSBtYXJrZXRwbGFjZWApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldE1hcmtldHBsYWNlKSB7XG4gICAgICAgICAgLy8gTmF2aWdhdGUgZGlyZWN0bHkgdG8gdGhlIHNwZWNpZmllZCBtYXJrZXRwbGFjZVxuICAgICAgICAgIGNvbnN0IG1hcmtldHBsYWNlRXhpc3RzID0gbWFya2V0cGxhY2VJbmZvcy5zb21lKFxuICAgICAgICAgICAgbSA9PiBtLm5hbWUgPT09IHRhcmdldE1hcmtldHBsYWNlLFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAobWFya2V0cGxhY2VFeGlzdHMpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkTWFya2V0cGxhY2UodGFyZ2V0TWFya2V0cGxhY2UpXG4gICAgICAgICAgICBzZXRWaWV3U3RhdGUoJ3BsdWdpbi1saXN0JylcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0RXJyb3IoYE1hcmtldHBsYWNlIFwiJHt0YXJnZXRNYXJrZXRwbGFjZX1cIiBub3QgZm91bmRgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldEVycm9yKFxuICAgICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnRmFpbGVkIHRvIGxvYWQgbWFya2V0cGxhY2VzJyxcbiAgICAgICAgKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gICAgdm9pZCBsb2FkTWFya2V0cGxhY2VEYXRhKClcbiAgfSwgW3NldEVycm9yLCB0YXJnZXRNYXJrZXRwbGFjZSwgdGFyZ2V0UGx1Z2luXSlcblxuICAvLyBMb2FkIHBsdWdpbnMgd2hlbiBhIG1hcmtldHBsYWNlIGlzIHNlbGVjdGVkXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZE1hcmtldHBsYWNlKSByZXR1cm5cblxuICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gbG9hZFBsdWdpbnNGb3JNYXJrZXRwbGFjZShtYXJrZXRwbGFjZU5hbWU6IHN0cmluZykge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbWFya2V0cGxhY2UgPSBhd2FpdCBnZXRNYXJrZXRwbGFjZShtYXJrZXRwbGFjZU5hbWUpXG4gICAgICAgIGlmIChjYW5jZWxsZWQpIHJldHVyblxuICAgICAgICBpZiAoIW1hcmtldHBsYWNlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBtYXJrZXRwbGFjZTogJHttYXJrZXRwbGFjZU5hbWV9YClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbHRlciBvdXQgYWxyZWFkeSBpbnN0YWxsZWQgcGx1Z2luc1xuICAgICAgICBjb25zdCBpbnN0YWxsYWJsZVBsdWdpbnM6IEluc3RhbGxhYmxlUGx1Z2luW10gPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIG1hcmtldHBsYWNlLnBsdWdpbnMpIHtcbiAgICAgICAgICBjb25zdCBwbHVnaW5JZCA9IGNyZWF0ZVBsdWdpbklkKGVudHJ5Lm5hbWUsIG1hcmtldHBsYWNlTmFtZSlcbiAgICAgICAgICBpZiAoaXNQbHVnaW5CbG9ja2VkQnlQb2xpY3kocGx1Z2luSWQpKSBjb250aW51ZVxuICAgICAgICAgIGluc3RhbGxhYmxlUGx1Z2lucy5wdXNoKHtcbiAgICAgICAgICAgIGVudHJ5LFxuICAgICAgICAgICAgbWFya2V0cGxhY2VOYW1lOiBtYXJrZXRwbGFjZU5hbWUsXG4gICAgICAgICAgICBwbHVnaW5JZCxcbiAgICAgICAgICAgIC8vIE9ubHkgbWFyayBhcyBcImluc3RhbGxlZFwiIHdoZW4gZ2xvYmFsbHkgc2NvcGVkICh1c2VyL21hbmFnZWQpLlxuICAgICAgICAgICAgLy8gUHJvamVjdC9sb2NhbCBpbnN0YWxscyBkb24ndCBibG9jayDigJQgdXNlciBjYW4gYWRkIHVzZXIgc2NvcGVcbiAgICAgICAgICAgIC8vIHZpYSB0aGUgcGx1Z2luLWRldGFpbHMgdmlldyAoZ2gtMjk5OTcpLlxuICAgICAgICAgICAgaXNJbnN0YWxsZWQ6IGlzUGx1Z2luR2xvYmFsbHlJbnN0YWxsZWQocGx1Z2luSWQpLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBGZXRjaCBpbnN0YWxsIGNvdW50cyBhbmQgc29ydCBieSBwb3B1bGFyaXR5XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgY291bnRzID0gYXdhaXQgZ2V0SW5zdGFsbENvdW50cygpXG4gICAgICAgICAgaWYgKGNhbmNlbGxlZCkgcmV0dXJuXG4gICAgICAgICAgc2V0SW5zdGFsbENvdW50cyhjb3VudHMpXG5cbiAgICAgICAgICBpZiAoY291bnRzKSB7XG4gICAgICAgICAgICAvLyBTb3J0IGJ5IGluc3RhbGwgY291bnQgKGRlc2NlbmRpbmcpLCB0aGVuIGFscGhhYmV0aWNhbGx5XG4gICAgICAgICAgICBpbnN0YWxsYWJsZVBsdWdpbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjb3VudEEgPSBjb3VudHMuZ2V0KGEucGx1Z2luSWQpID8/IDBcbiAgICAgICAgICAgICAgY29uc3QgY291bnRCID0gY291bnRzLmdldChiLnBsdWdpbklkKSA/PyAwXG4gICAgICAgICAgICAgIGlmIChjb3VudEEgIT09IGNvdW50QikgcmV0dXJuIGNvdW50QiAtIGNvdW50QVxuICAgICAgICAgICAgICByZXR1cm4gYS5lbnRyeS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5lbnRyeS5uYW1lKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTm8gY291bnRzIGF2YWlsYWJsZSAtIHNvcnQgYWxwaGFiZXRpY2FsbHlcbiAgICAgICAgICAgIGluc3RhbGxhYmxlUGx1Z2lucy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICBhLmVudHJ5Lm5hbWUubG9jYWxlQ29tcGFyZShiLmVudHJ5Lm5hbWUpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm5cbiAgICAgICAgICAvLyBMb2cgdGhlIGVycm9yLCB0aGVuIGdyYWNlZnVsbHkgZGVncmFkZSB0byBhbHBoYWJldGljYWwgc29ydFxuICAgICAgICAgIGxvZ0ZvckRlYnVnZ2luZyhcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggaW5zdGFsbCBjb3VudHM6ICR7ZXJyb3JNZXNzYWdlKGVycm9yKX1gLFxuICAgICAgICAgIClcbiAgICAgICAgICBpbnN0YWxsYWJsZVBsdWdpbnMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgIGEuZW50cnkubmFtZS5sb2NhbGVDb21wYXJlKGIuZW50cnkubmFtZSksXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0QXZhaWxhYmxlUGx1Z2lucyhpbnN0YWxsYWJsZVBsdWdpbnMpXG4gICAgICAgIHNldFNlbGVjdGVkSW5kZXgoMClcbiAgICAgICAgc2V0U2VsZWN0ZWRGb3JJbnN0YWxsKG5ldyBTZXQoKSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm5cbiAgICAgICAgc2V0RXJyb3IoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdGYWlsZWQgdG8gbG9hZCBwbHVnaW5zJylcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdm9pZCBsb2FkUGx1Z2luc0Zvck1hcmtldHBsYWNlKHNlbGVjdGVkTWFya2V0cGxhY2UpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbGxlZCA9IHRydWVcbiAgICB9XG4gIH0sIFtzZWxlY3RlZE1hcmtldHBsYWNlLCBzZXRFcnJvcl0pXG5cbiAgLy8gSW5zdGFsbCBzZWxlY3RlZCBwbHVnaW5zXG4gIGNvbnN0IGluc3RhbGxTZWxlY3RlZFBsdWdpbnMgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkRm9ySW5zdGFsbC5zaXplID09PSAwKSByZXR1cm5cblxuICAgIGNvbnN0IHBsdWdpbnNUb0luc3RhbGwgPSBhdmFpbGFibGVQbHVnaW5zLmZpbHRlcihwID0+XG4gICAgICBzZWxlY3RlZEZvckluc3RhbGwuaGFzKHAucGx1Z2luSWQpLFxuICAgIClcblxuICAgIHNldEluc3RhbGxpbmdQbHVnaW5zKG5ldyBTZXQocGx1Z2luc1RvSW5zdGFsbC5tYXAocCA9PiBwLnBsdWdpbklkKSkpXG5cbiAgICBsZXQgc3VjY2Vzc0NvdW50ID0gMFxuICAgIGxldCBmYWlsdXJlQ291bnQgPSAwXG4gICAgY29uc3QgbmV3RmFpbGVkUGx1Z2luczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHJlYXNvbjogc3RyaW5nIH0+ID0gW11cblxuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHBsdWdpbnNUb0luc3RhbGwpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluc3RhbGxQbHVnaW5Gcm9tTWFya2V0cGxhY2Uoe1xuICAgICAgICBwbHVnaW5JZDogcGx1Z2luLnBsdWdpbklkLFxuICAgICAgICBlbnRyeTogcGx1Z2luLmVudHJ5LFxuICAgICAgICBtYXJrZXRwbGFjZU5hbWU6IHBsdWdpbi5tYXJrZXRwbGFjZU5hbWUsXG4gICAgICAgIHNjb3BlOiAndXNlcicsXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgc3VjY2Vzc0NvdW50KytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhaWx1cmVDb3VudCsrXG4gICAgICAgIG5ld0ZhaWxlZFBsdWdpbnMucHVzaCh7XG4gICAgICAgICAgbmFtZTogcGx1Z2luLmVudHJ5Lm5hbWUsXG4gICAgICAgICAgcmVhc29uOiByZXN1bHQuZXJyb3IsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0SW5zdGFsbGluZ1BsdWdpbnMobmV3IFNldCgpKVxuICAgIHNldFNlbGVjdGVkRm9ySW5zdGFsbChuZXcgU2V0KCkpXG4gICAgY2xlYXJBbGxDYWNoZXMoKVxuXG4gICAgLy8gSGFuZGxlIGluc3RhbGxhdGlvbiByZXN1bHRzXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCkge1xuICAgICAgLy8gQWxsIHN1Y2NlZWRlZFxuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIGDinJMgSW5zdGFsbGVkICR7c3VjY2Vzc0NvdW50fSAke3BsdXJhbChzdWNjZXNzQ291bnQsICdwbHVnaW4nKX0uIGAgK1xuICAgICAgICBgUnVuIC9yZWxvYWQtcGx1Z2lucyB0byBhY3RpdmF0ZS5gXG5cbiAgICAgIHNldFJlc3VsdChtZXNzYWdlKVxuICAgIH0gZWxzZSBpZiAoc3VjY2Vzc0NvdW50ID09PSAwKSB7XG4gICAgICAvLyBBbGwgZmFpbGVkIC0gc2hvdyBlcnJvciB3aXRoIHJlYXNvbnNcbiAgICAgIHNldEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGluc3RhbGw6ICR7Zm9ybWF0RmFpbHVyZURldGFpbHMobmV3RmFpbGVkUGx1Z2lucywgdHJ1ZSl9YCxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWl4ZWQgcmVzdWx0cyAtIHNob3cgcGFydGlhbCBzdWNjZXNzXG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgYOKckyBJbnN0YWxsZWQgJHtzdWNjZXNzQ291bnR9IG9mICR7c3VjY2Vzc0NvdW50ICsgZmFpbHVyZUNvdW50fSBwbHVnaW5zLiBgICtcbiAgICAgICAgYEZhaWxlZDogJHtmb3JtYXRGYWlsdXJlRGV0YWlscyhuZXdGYWlsZWRQbHVnaW5zLCBmYWxzZSl9LiBgICtcbiAgICAgICAgYFJ1biAvcmVsb2FkLXBsdWdpbnMgdG8gYWN0aXZhdGUgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCBwbHVnaW5zLmBcblxuICAgICAgc2V0UmVzdWx0KG1lc3NhZ2UpXG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRpb24gY2FsbGJhY2sgYW5kIG5hdmlnYXRpb25cbiAgICBpZiAoc3VjY2Vzc0NvdW50ID4gMCkge1xuICAgICAgaWYgKG9uSW5zdGFsbENvbXBsZXRlKSB7XG4gICAgICAgIGF3YWl0IG9uSW5zdGFsbENvbXBsZXRlKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRQYXJlbnRWaWV3U3RhdGUoeyB0eXBlOiAnbWVudScgfSlcbiAgfVxuXG4gIC8vIEluc3RhbGwgc2luZ2xlIHBsdWdpbiBmcm9tIGRldGFpbHMgdmlld1xuICBjb25zdCBoYW5kbGVTaW5nbGVQbHVnaW5JbnN0YWxsID0gYXN5bmMgKFxuICAgIHBsdWdpbjogSW5zdGFsbGFibGVQbHVnaW4sXG4gICAgc2NvcGU6ICd1c2VyJyB8ICdwcm9qZWN0JyB8ICdsb2NhbCcgPSAndXNlcicsXG4gICkgPT4ge1xuICAgIHNldElzSW5zdGFsbGluZyh0cnVlKVxuICAgIHNldEluc3RhbGxFcnJvcihudWxsKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5zdGFsbFBsdWdpbkZyb21NYXJrZXRwbGFjZSh7XG4gICAgICBwbHVnaW5JZDogcGx1Z2luLnBsdWdpbklkLFxuICAgICAgZW50cnk6IHBsdWdpbi5lbnRyeSxcbiAgICAgIG1hcmtldHBsYWNlTmFtZTogcGx1Z2luLm1hcmtldHBsYWNlTmFtZSxcbiAgICAgIHNjb3BlLFxuICAgIH0pXG5cbiAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IGZpbmRQbHVnaW5PcHRpb25zVGFyZ2V0KHBsdWdpbi5wbHVnaW5JZClcbiAgICAgIGlmIChsb2FkZWQpIHtcbiAgICAgICAgc2V0SXNJbnN0YWxsaW5nKGZhbHNlKVxuICAgICAgICBzZXRWaWV3U3RhdGUoe1xuICAgICAgICAgIHR5cGU6ICdwbHVnaW4tb3B0aW9ucycsXG4gICAgICAgICAgcGx1Z2luOiBsb2FkZWQsXG4gICAgICAgICAgcGx1Z2luSWQ6IHBsdWdpbi5wbHVnaW5JZCxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBzZXRSZXN1bHQocmVzdWx0Lm1lc3NhZ2UpXG4gICAgICBpZiAob25JbnN0YWxsQ29tcGxldGUpIHtcbiAgICAgICAgYXdhaXQgb25JbnN0YWxsQ29tcGxldGUoKVxuICAgICAgfVxuICAgICAgc2V0UGFyZW50Vmlld1N0YXRlKHsgdHlwZTogJ21lbnUnIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElzSW5zdGFsbGluZyhmYWxzZSlcbiAgICAgIHNldEluc3RhbGxFcnJvcihyZXN1bHQuZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgLy8gSGFuZGxlIGVycm9yIHN0YXRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBzZXRSZXN1bHQoZXJyb3IpXG4gICAgfVxuICB9LCBbZXJyb3IsIHNldFJlc3VsdF0pXG5cbiAgLy8gTWFya2V0cGxhY2UtbGlzdCBuYXZpZ2F0aW9uXG4gIHVzZUtleWJpbmRpbmdzKFxuICAgIHtcbiAgICAgICdzZWxlY3Q6cHJldmlvdXMnOiAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID4gMCkge1xuICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgoc2VsZWN0ZWRJbmRleCAtIDEpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnc2VsZWN0Om5leHQnOiAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgbWFya2V0cGxhY2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4KHNlbGVjdGVkSW5kZXggKyAxKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ3NlbGVjdDphY2NlcHQnOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcmtldHBsYWNlID0gbWFya2V0cGxhY2VzW3NlbGVjdGVkSW5kZXhdXG4gICAgICAgIGlmIChtYXJrZXRwbGFjZSkge1xuICAgICAgICAgIHNldFNlbGVjdGVkTWFya2V0cGxhY2UobWFya2V0cGxhY2UubmFtZSlcbiAgICAgICAgICBzZXRWaWV3U3RhdGUoJ3BsdWdpbi1saXN0JylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHsgY29udGV4dDogJ1NlbGVjdCcsIGlzQWN0aXZlOiB2aWV3U3RhdGUgPT09ICdtYXJrZXRwbGFjZS1saXN0JyB9LFxuICApXG5cbiAgLy8gUGx1Z2luLWxpc3QgbmF2aWdhdGlvblxuICB1c2VLZXliaW5kaW5ncyhcbiAgICB7XG4gICAgICAnc2VsZWN0OnByZXZpb3VzJzogKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IDApIHtcbiAgICAgICAgICBwYWdpbmF0aW9uLmhhbmRsZVNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZEluZGV4IC0gMSwgc2V0U2VsZWN0ZWRJbmRleClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICdzZWxlY3Q6bmV4dCc6ICgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPCBhdmFpbGFibGVQbHVnaW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBwYWdpbmF0aW9uLmhhbmRsZVNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgc2V0U2VsZWN0ZWRJbmRleClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICdzZWxlY3Q6YWNjZXB0JzogKCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2VsZWN0ZWRJbmRleCA9PT0gYXZhaWxhYmxlUGx1Z2lucy5sZW5ndGggJiZcbiAgICAgICAgICBzZWxlY3RlZEZvckluc3RhbGwuc2l6ZSA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdm9pZCBpbnN0YWxsU2VsZWN0ZWRQbHVnaW5zKClcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZEluZGV4IDwgYXZhaWxhYmxlUGx1Z2lucy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBwbHVnaW4gPSBhdmFpbGFibGVQbHVnaW5zW3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgaWYgKHBsdWdpbikge1xuICAgICAgICAgICAgaWYgKHBsdWdpbi5pc0luc3RhbGxlZCkge1xuICAgICAgICAgICAgICBzZXRQYXJlbnRWaWV3U3RhdGUoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdtYW5hZ2UtcGx1Z2lucycsXG4gICAgICAgICAgICAgICAgdGFyZ2V0UGx1Z2luOiBwbHVnaW4uZW50cnkubmFtZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRNYXJrZXRwbGFjZTogcGx1Z2luLm1hcmtldHBsYWNlTmFtZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFNlbGVjdGVkUGx1Z2luKHBsdWdpbilcbiAgICAgICAgICAgICAgc2V0Vmlld1N0YXRlKCdwbHVnaW4tZGV0YWlscycpXG4gICAgICAgICAgICAgIHNldERldGFpbHNNZW51SW5kZXgoMClcbiAgICAgICAgICAgICAgc2V0SW5zdGFsbEVycm9yKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgeyBjb250ZXh0OiAnU2VsZWN0JywgaXNBY3RpdmU6IHZpZXdTdGF0ZSA9PT0gJ3BsdWdpbi1saXN0JyB9LFxuICApXG5cbiAgdXNlS2V5YmluZGluZ3MoXG4gICAge1xuICAgICAgJ3BsdWdpbjp0b2dnbGUnOiAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgYXZhaWxhYmxlUGx1Z2lucy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBwbHVnaW4gPSBhdmFpbGFibGVQbHVnaW5zW3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgaWYgKHBsdWdpbiAmJiAhcGx1Z2luLmlzSW5zdGFsbGVkKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSBuZXcgU2V0KHNlbGVjdGVkRm9ySW5zdGFsbClcbiAgICAgICAgICAgIGlmIChuZXdTZWxlY3Rpb24uaGFzKHBsdWdpbi5wbHVnaW5JZCkpIHtcbiAgICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmRlbGV0ZShwbHVnaW4ucGx1Z2luSWQpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uYWRkKHBsdWdpbi5wbHVnaW5JZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFNlbGVjdGVkRm9ySW5zdGFsbChuZXdTZWxlY3Rpb24pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ3BsdWdpbjppbnN0YWxsJzogKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRGb3JJbnN0YWxsLnNpemUgPiAwKSB7XG4gICAgICAgICAgdm9pZCBpbnN0YWxsU2VsZWN0ZWRQbHVnaW5zKClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHsgY29udGV4dDogJ1BsdWdpbicsIGlzQWN0aXZlOiB2aWV3U3RhdGUgPT09ICdwbHVnaW4tbGlzdCcgfSxcbiAgKVxuXG4gIC8vIFBsdWdpbi1kZXRhaWxzIG5hdmlnYXRpb25cbiAgY29uc3QgZGV0YWlsc01lbnVPcHRpb25zID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZFBsdWdpbikgcmV0dXJuIFtdXG4gICAgY29uc3QgaGFzSG9tZXBhZ2UgPSBzZWxlY3RlZFBsdWdpbi5lbnRyeS5ob21lcGFnZVxuICAgIGNvbnN0IGdpdGh1YlJlcG8gPSBleHRyYWN0R2l0SHViUmVwbyhzZWxlY3RlZFBsdWdpbilcbiAgICByZXR1cm4gYnVpbGRQbHVnaW5EZXRhaWxzTWVudU9wdGlvbnMoaGFzSG9tZXBhZ2UsIGdpdGh1YlJlcG8pXG4gIH0sIFtzZWxlY3RlZFBsdWdpbl0pXG5cbiAgdXNlS2V5YmluZGluZ3MoXG4gICAge1xuICAgICAgJ3NlbGVjdDpwcmV2aW91cyc6ICgpID0+IHtcbiAgICAgICAgaWYgKGRldGFpbHNNZW51SW5kZXggPiAwKSB7XG4gICAgICAgICAgc2V0RGV0YWlsc01lbnVJbmRleChkZXRhaWxzTWVudUluZGV4IC0gMSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICdzZWxlY3Q6bmV4dCc6ICgpID0+IHtcbiAgICAgICAgaWYgKGRldGFpbHNNZW51SW5kZXggPCBkZXRhaWxzTWVudU9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHNldERldGFpbHNNZW51SW5kZXgoZGV0YWlsc01lbnVJbmRleCArIDEpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnc2VsZWN0OmFjY2VwdCc6ICgpID0+IHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFBsdWdpbikgcmV0dXJuXG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGRldGFpbHNNZW51T3B0aW9uc1tkZXRhaWxzTWVudUluZGV4XT8uYWN0aW9uXG4gICAgICAgIGNvbnN0IGhhc0hvbWVwYWdlID0gc2VsZWN0ZWRQbHVnaW4uZW50cnkuaG9tZXBhZ2VcbiAgICAgICAgY29uc3QgZ2l0aHViUmVwbyA9IGV4dHJhY3RHaXRIdWJSZXBvKHNlbGVjdGVkUGx1Z2luKVxuICAgICAgICBpZiAoYWN0aW9uID09PSAnaW5zdGFsbC11c2VyJykge1xuICAgICAgICAgIHZvaWQgaGFuZGxlU2luZ2xlUGx1Z2luSW5zdGFsbChzZWxlY3RlZFBsdWdpbiwgJ3VzZXInKVxuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2luc3RhbGwtcHJvamVjdCcpIHtcbiAgICAgICAgICB2b2lkIGhhbmRsZVNpbmdsZVBsdWdpbkluc3RhbGwoc2VsZWN0ZWRQbHVnaW4sICdwcm9qZWN0JylcbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdpbnN0YWxsLWxvY2FsJykge1xuICAgICAgICAgIHZvaWQgaGFuZGxlU2luZ2xlUGx1Z2luSW5zdGFsbChzZWxlY3RlZFBsdWdpbiwgJ2xvY2FsJylcbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdob21lcGFnZScgJiYgaGFzSG9tZXBhZ2UpIHtcbiAgICAgICAgICB2b2lkIG9wZW5Ccm93c2VyKGhhc0hvbWVwYWdlKVxuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2dpdGh1YicgJiYgZ2l0aHViUmVwbykge1xuICAgICAgICAgIHZvaWQgb3BlbkJyb3dzZXIoYGh0dHBzOi8vZ2l0aHViLmNvbS8ke2dpdGh1YlJlcG99YClcbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdiYWNrJykge1xuICAgICAgICAgIHNldFZpZXdTdGF0ZSgncGx1Z2luLWxpc3QnKVxuICAgICAgICAgIHNldFNlbGVjdGVkUGx1Z2luKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZXh0OiAnU2VsZWN0JyxcbiAgICAgIGlzQWN0aXZlOiB2aWV3U3RhdGUgPT09ICdwbHVnaW4tZGV0YWlscycgJiYgISFzZWxlY3RlZFBsdWdpbixcbiAgICB9LFxuICApXG5cbiAgaWYgKHR5cGVvZiB2aWV3U3RhdGUgPT09ICdvYmplY3QnICYmIHZpZXdTdGF0ZS50eXBlID09PSAncGx1Z2luLW9wdGlvbnMnKSB7XG4gICAgY29uc3QgeyBwbHVnaW4sIHBsdWdpbklkIH0gPSB2aWV3U3RhdGVcbiAgICBmdW5jdGlvbiBmaW5pc2gobXNnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIHNldFJlc3VsdChtc2cpXG4gICAgICBpZiAob25JbnN0YWxsQ29tcGxldGUpIHtcbiAgICAgICAgdm9pZCBvbkluc3RhbGxDb21wbGV0ZSgpXG4gICAgICB9XG4gICAgICBzZXRQYXJlbnRWaWV3U3RhdGUoeyB0eXBlOiAnbWVudScgfSlcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxQbHVnaW5PcHRpb25zRmxvd1xuICAgICAgICBwbHVnaW49e3BsdWdpbn1cbiAgICAgICAgcGx1Z2luSWQ9e3BsdWdpbklkfVxuICAgICAgICBvbkRvbmU9eyhvdXRjb21lLCBkZXRhaWwpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKG91dGNvbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NvbmZpZ3VyZWQnOlxuICAgICAgICAgICAgICBmaW5pc2goXG4gICAgICAgICAgICAgICAgYOKckyBJbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQgJHtwbHVnaW4ubmFtZX0uIFJ1biAvcmVsb2FkLXBsdWdpbnMgdG8gYXBwbHkuYCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAnc2tpcHBlZCc6XG4gICAgICAgICAgICAgIGZpbmlzaChcbiAgICAgICAgICAgICAgICBg4pyTIEluc3RhbGxlZCAke3BsdWdpbi5uYW1lfS4gUnVuIC9yZWxvYWQtcGx1Z2lucyB0byBhcHBseS5gLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgIGZpbmlzaChgSW5zdGFsbGVkIGJ1dCBmYWlsZWQgdG8gc2F2ZSBjb25maWc6ICR7ZGV0YWlsfWApXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICAvLyBMb2FkaW5nIHN0YXRlXG4gIGlmIChsb2FkaW5nKSB7XG4gICAgcmV0dXJuIDxUZXh0PkxvYWRpbmfigKY8L1RleHQ+XG4gIH1cblxuICAvLyBFcnJvciBzdGF0ZVxuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gPFRleHQgY29sb3I9XCJlcnJvclwiPntlcnJvcn08L1RleHQ+XG4gIH1cblxuICAvLyBNYXJrZXRwbGFjZSBzZWxlY3Rpb24gdmlld1xuICBpZiAodmlld1N0YXRlID09PSAnbWFya2V0cGxhY2UtbGlzdCcpIHtcbiAgICBpZiAobWFya2V0cGxhY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgPEJveCBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICAgICAgPFRleHQgYm9sZD5TZWxlY3QgbWFya2V0cGxhY2U8L1RleHQ+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFRleHQ+Tm8gbWFya2V0cGxhY2VzIGNvbmZpZ3VyZWQuPC9UZXh0PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgQWRkIGEgbWFya2V0cGxhY2UgZmlyc3QgdXNpbmcge1wiJ0FkZCBtYXJrZXRwbGFjZSdcIn0uXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfSBwYWRkaW5nTGVmdD17MX0+XG4gICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgICAgPENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludFxuICAgICAgICAgICAgICAgIGFjdGlvbj1cImNvbmZpcm06bm9cIlxuICAgICAgICAgICAgICAgIGNvbnRleHQ9XCJDb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgIGZhbGxiYWNrPVwiRXNjXCJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cImdvIGJhY2tcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8L0JveD5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgIDxCb3ggbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgICA8VGV4dCBib2xkPlNlbGVjdCBtYXJrZXRwbGFjZTwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgey8qIFdhcm5pbmcgYmFubmVyIGZvciBtYXJrZXRwbGFjZSBsb2FkIGZhaWx1cmVzICovfVxuICAgICAgICB7d2FybmluZyAmJiAoXG4gICAgICAgICAgPEJveCBtYXJnaW5Cb3R0b209ezF9IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwid2FybmluZ1wiPlxuICAgICAgICAgICAgICB7ZmlndXJlcy53YXJuaW5nfSB7d2FybmluZ31cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgICAge21hcmtldHBsYWNlcy5tYXAoKG1hcmtldHBsYWNlLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgIGtleT17bWFya2V0cGxhY2UubmFtZX1cbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgbWFyZ2luQm90dG9tPXtpbmRleCA8IG1hcmtldHBsYWNlcy5sZW5ndGggLSAxID8gMSA6IDB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEJveD5cbiAgICAgICAgICAgICAgPFRleHQgY29sb3I9e3NlbGVjdGVkSW5kZXggPT09IGluZGV4ID8gJ3N1Z2dlc3Rpb24nIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICB7c2VsZWN0ZWRJbmRleCA9PT0gaW5kZXggPyBmaWd1cmVzLnBvaW50ZXIgOiAnICd9eycgJ31cbiAgICAgICAgICAgICAgICB7bWFya2V0cGxhY2UubmFtZX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IG1hcmdpbkxlZnQ9ezJ9PlxuICAgICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgICAgICB7bWFya2V0cGxhY2UudG90YWxQbHVnaW5zfXsnICd9XG4gICAgICAgICAgICAgICAge3BsdXJhbChtYXJrZXRwbGFjZS50b3RhbFBsdWdpbnMsICdwbHVnaW4nKX0gYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAge21hcmtldHBsYWNlLmluc3RhbGxlZENvdW50ID4gMCAmJlxuICAgICAgICAgICAgICAgICAgYCDCtyAke21hcmtldHBsYWNlLmluc3RhbGxlZENvdW50fSBhbHJlYWR5IGluc3RhbGxlZGB9XG4gICAgICAgICAgICAgICAge21hcmtldHBsYWNlLnNvdXJjZSAmJiBgIMK3ICR7bWFya2V0cGxhY2Uuc291cmNlfWB9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICApKX1cblxuICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3IgaXRhbGljPlxuICAgICAgICAgICAgPEJ5bGluZT5cbiAgICAgICAgICAgICAgPENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludFxuICAgICAgICAgICAgICAgIGFjdGlvbj1cInNlbGVjdDphY2NlcHRcIlxuICAgICAgICAgICAgICAgIGNvbnRleHQ9XCJTZWxlY3RcIlxuICAgICAgICAgICAgICAgIGZhbGxiYWNrPVwiRW50ZXJcIlxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwic2VsZWN0XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludFxuICAgICAgICAgICAgICAgIGFjdGlvbj1cImNvbmZpcm06bm9cIlxuICAgICAgICAgICAgICAgIGNvbnRleHQ9XCJDb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgIGZhbGxiYWNrPVwiRXNjXCJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cImdvIGJhY2tcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9CeWxpbmU+XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvQm94PlxuICAgIClcbiAgfVxuXG4gIC8vIFBsdWdpbiBkZXRhaWxzIHZpZXdcbiAgaWYgKHZpZXdTdGF0ZSA9PT0gJ3BsdWdpbi1kZXRhaWxzJyAmJiBzZWxlY3RlZFBsdWdpbikge1xuICAgIGNvbnN0IGhhc0hvbWVwYWdlID0gc2VsZWN0ZWRQbHVnaW4uZW50cnkuaG9tZXBhZ2VcbiAgICBjb25zdCBnaXRodWJSZXBvID0gZXh0cmFjdEdpdEh1YlJlcG8oc2VsZWN0ZWRQbHVnaW4pXG5cbiAgICBjb25zdCBtZW51T3B0aW9ucyA9IGJ1aWxkUGx1Z2luRGV0YWlsc01lbnVPcHRpb25zKGhhc0hvbWVwYWdlLCBnaXRodWJSZXBvKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgYm9sZD5QbHVnaW4gRGV0YWlsczwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgey8qIFBsdWdpbiBtZXRhZGF0YSAqL31cbiAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgICA8VGV4dCBib2xkPntzZWxlY3RlZFBsdWdpbi5lbnRyeS5uYW1lfTwvVGV4dD5cbiAgICAgICAgICB7c2VsZWN0ZWRQbHVnaW4uZW50cnkudmVyc2lvbiAmJiAoXG4gICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5WZXJzaW9uOiB7c2VsZWN0ZWRQbHVnaW4uZW50cnkudmVyc2lvbn08L1RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2VsZWN0ZWRQbHVnaW4uZW50cnkuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgICAgICA8VGV4dD57c2VsZWN0ZWRQbHVnaW4uZW50cnkuZGVzY3JpcHRpb259PC9UZXh0PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2VsZWN0ZWRQbHVnaW4uZW50cnkuYXV0aG9yICYmIChcbiAgICAgICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICAgICAgQnk6eycgJ31cbiAgICAgICAgICAgICAgICB7dHlwZW9mIHNlbGVjdGVkUGx1Z2luLmVudHJ5LmF1dGhvciA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gc2VsZWN0ZWRQbHVnaW4uZW50cnkuYXV0aG9yXG4gICAgICAgICAgICAgICAgICA6IHNlbGVjdGVkUGx1Z2luLmVudHJ5LmF1dGhvci5uYW1lfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cblxuICAgICAgICB7LyogV2hhdCB3aWxsIGJlIGluc3RhbGxlZCAqL31cbiAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgICA8VGV4dCBib2xkPldpbGwgaW5zdGFsbDo8L1RleHQ+XG4gICAgICAgICAge3NlbGVjdGVkUGx1Z2luLmVudHJ5LmNvbW1hbmRzICYmIChcbiAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgICDCtyBDb21tYW5kczp7JyAnfVxuICAgICAgICAgICAgICB7QXJyYXkuaXNBcnJheShzZWxlY3RlZFBsdWdpbi5lbnRyeS5jb21tYW5kcylcbiAgICAgICAgICAgICAgICA/IHNlbGVjdGVkUGx1Z2luLmVudHJ5LmNvbW1hbmRzLmpvaW4oJywgJylcbiAgICAgICAgICAgICAgICA6IE9iamVjdC5rZXlzKHNlbGVjdGVkUGx1Z2luLmVudHJ5LmNvbW1hbmRzKS5qb2luKCcsICcpfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3NlbGVjdGVkUGx1Z2luLmVudHJ5LmFnZW50cyAmJiAoXG4gICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgICAgwrcgQWdlbnRzOnsnICd9XG4gICAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KHNlbGVjdGVkUGx1Z2luLmVudHJ5LmFnZW50cylcbiAgICAgICAgICAgICAgICA/IHNlbGVjdGVkUGx1Z2luLmVudHJ5LmFnZW50cy5qb2luKCcsICcpXG4gICAgICAgICAgICAgICAgOiBPYmplY3Qua2V5cyhzZWxlY3RlZFBsdWdpbi5lbnRyeS5hZ2VudHMpLmpvaW4oJywgJyl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2VsZWN0ZWRQbHVnaW4uZW50cnkuaG9va3MgJiYgKFxuICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICAgIMK3IEhvb2tzOiB7T2JqZWN0LmtleXMoc2VsZWN0ZWRQbHVnaW4uZW50cnkuaG9va3MpLmpvaW4oJywgJyl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2VsZWN0ZWRQbHVnaW4uZW50cnkubWNwU2VydmVycyAmJiAoXG4gICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgICAgwrcgTUNQIFNlcnZlcnM6eycgJ31cbiAgICAgICAgICAgICAge0FycmF5LmlzQXJyYXkoc2VsZWN0ZWRQbHVnaW4uZW50cnkubWNwU2VydmVycylcbiAgICAgICAgICAgICAgICA/IHNlbGVjdGVkUGx1Z2luLmVudHJ5Lm1jcFNlcnZlcnMuam9pbignLCAnKVxuICAgICAgICAgICAgICAgIDogdHlwZW9mIHNlbGVjdGVkUGx1Z2luLmVudHJ5Lm1jcFNlcnZlcnMgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICA/IE9iamVjdC5rZXlzKHNlbGVjdGVkUGx1Z2luLmVudHJ5Lm1jcFNlcnZlcnMpLmpvaW4oJywgJylcbiAgICAgICAgICAgICAgICAgIDogJ2NvbmZpZ3VyZWQnfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgICAgeyFzZWxlY3RlZFBsdWdpbi5lbnRyeS5jb21tYW5kcyAmJlxuICAgICAgICAgICAgIXNlbGVjdGVkUGx1Z2luLmVudHJ5LmFnZW50cyAmJlxuICAgICAgICAgICAgIXNlbGVjdGVkUGx1Z2luLmVudHJ5Lmhvb2tzICYmXG4gICAgICAgICAgICAhc2VsZWN0ZWRQbHVnaW4uZW50cnkubWNwU2VydmVycyAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAge3R5cGVvZiBzZWxlY3RlZFBsdWdpbi5lbnRyeS5zb3VyY2UgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgJ3NvdXJjZScgaW4gc2VsZWN0ZWRQbHVnaW4uZW50cnkuc291cmNlICYmXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkUGx1Z2luLmVudHJ5LnNvdXJjZS5zb3VyY2UgPT09ICdnaXRodWInIHx8XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZFBsdWdpbi5lbnRyeS5zb3VyY2Uuc291cmNlID09PSAndXJsJyB8fFxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRQbHVnaW4uZW50cnkuc291cmNlLnNvdXJjZSA9PT0gJ25wbScgfHxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUGx1Z2luLmVudHJ5LnNvdXJjZS5zb3VyY2UgPT09ICdwaXAnKSA/IChcbiAgICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgICAgICAgICDCtyBDb21wb25lbnQgc3VtbWFyeSBub3QgYXZhaWxhYmxlIGZvciByZW1vdGUgcGx1Z2luXG4gICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE86IEFjdHVhbGx5IHNjYW4gbG9jYWwgcGx1Z2luIGRpcmVjdG9yaWVzIHRvIHNob3cgcmVhbCBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAvLyBUaGlzIHdvdWxkIHJlcXVpcmUgYWNjZXNzaW5nIHRoZSBmaWxlc3lzdGVtIHRvIGNoZWNrIGZvcjpcbiAgICAgICAgICAgICAgICAgIC8vIC0gY29tbWFuZHMvIGRpcmVjdG9yeSBhbmQgbGlzdCBmaWxlc1xuICAgICAgICAgICAgICAgICAgLy8gLSBhZ2VudHMvIGRpcmVjdG9yeSBhbmQgbGlzdCBmaWxlc1xuICAgICAgICAgICAgICAgICAgLy8gLSBob29rcy8gZGlyZWN0b3J5IGFuZCBsaXN0IGZpbGVzXG4gICAgICAgICAgICAgICAgICAvLyAtIC5tY3AuanNvbiBvciBtY3Atc2VydmVycy5qc29uIGZpbGVzXG4gICAgICAgICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgICAgICAgICAgwrcgQ29tcG9uZW50cyB3aWxsIGJlIGRpc2NvdmVyZWQgYXQgaW5zdGFsbGF0aW9uXG4gICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cblxuICAgICAgICA8UGx1Z2luVHJ1c3RXYXJuaW5nIC8+XG5cbiAgICAgICAgey8qIEVycm9yIG1lc3NhZ2UgKi99XG4gICAgICAgIHtpbnN0YWxsRXJyb3IgJiYgKFxuICAgICAgICAgIDxCb3ggbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwiZXJyb3JcIj5FcnJvcjoge2luc3RhbGxFcnJvcn08L1RleHQ+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG5cbiAgICAgICAgey8qIE1lbnUgb3B0aW9ucyAqL31cbiAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAge21lbnVPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPEJveCBrZXk9e29wdGlvbi5hY3Rpb259PlxuICAgICAgICAgICAgICB7ZGV0YWlsc01lbnVJbmRleCA9PT0gaW5kZXggJiYgPFRleHQ+eyc+ICd9PC9UZXh0Pn1cbiAgICAgICAgICAgICAge2RldGFpbHNNZW51SW5kZXggIT09IGluZGV4ICYmIDxUZXh0PnsnICAnfTwvVGV4dD59XG4gICAgICAgICAgICAgIDxUZXh0IGJvbGQ9e2RldGFpbHNNZW51SW5kZXggPT09IGluZGV4fT5cbiAgICAgICAgICAgICAgICB7aXNJbnN0YWxsaW5nICYmIG9wdGlvbi5hY3Rpb24gPT09ICdpbnN0YWxsJ1xuICAgICAgICAgICAgICAgICAgPyAnSW5zdGFsbGluZ+KApidcbiAgICAgICAgICAgICAgICAgIDogb3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9IHBhZGRpbmdMZWZ0PXsxfT5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgIDxCeWxpbmU+XG4gICAgICAgICAgICAgIDxDb25maWd1cmFibGVTaG9ydGN1dEhpbnRcbiAgICAgICAgICAgICAgICBhY3Rpb249XCJzZWxlY3Q6YWNjZXB0XCJcbiAgICAgICAgICAgICAgICBjb250ZXh0PVwiU2VsZWN0XCJcbiAgICAgICAgICAgICAgICBmYWxsYmFjaz1cIkVudGVyXCJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cInNlbGVjdFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxDb25maWd1cmFibGVTaG9ydGN1dEhpbnRcbiAgICAgICAgICAgICAgICBhY3Rpb249XCJjb25maXJtOm5vXCJcbiAgICAgICAgICAgICAgICBjb250ZXh0PVwiQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgICBmYWxsYmFjaz1cIkVzY1wiXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJiYWNrXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQnlsaW5lPlxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0JveD5cbiAgICApXG4gIH1cblxuICAvLyBQbHVnaW4gaW5zdGFsbGF0aW9uIHZpZXdcbiAgaWYgKGF2YWlsYWJsZVBsdWdpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgYm9sZD5JbnN0YWxsIHBsdWdpbnM8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8VGV4dCBkaW1Db2xvcj5ObyBuZXcgcGx1Z2lucyBhdmFpbGFibGUgdG8gaW5zdGFsbC48L1RleHQ+XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgIEFsbCBwbHVnaW5zIGZyb20gdGhpcyBtYXJrZXRwbGFjZSBhcmUgYWxyZWFkeSBpbnN0YWxsZWQuXG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAgPEJveCBtYXJnaW5MZWZ0PXszfT5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvciBpdGFsaWM+XG4gICAgICAgICAgICA8Q29uZmlndXJhYmxlU2hvcnRjdXRIaW50XG4gICAgICAgICAgICAgIGFjdGlvbj1cImNvbmZpcm06bm9cIlxuICAgICAgICAgICAgICBjb250ZXh0PVwiQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgZmFsbGJhY2s9XCJFc2NcIlxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cImdvIGJhY2tcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Cb3g+XG4gICAgKVxuICB9XG5cbiAgLy8gR2V0IHZpc2libGUgcGx1Z2lucyBmcm9tIHBhZ2luYXRpb25cbiAgY29uc3QgdmlzaWJsZVBsdWdpbnMgPSBwYWdpbmF0aW9uLmdldFZpc2libGVJdGVtcyhhdmFpbGFibGVQbHVnaW5zKVxuXG4gIHJldHVybiAoXG4gICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgIDxUZXh0IGJvbGQ+SW5zdGFsbCBQbHVnaW5zPC9UZXh0PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIHsvKiBTY3JvbGwgdXAgaW5kaWNhdG9yICovfVxuICAgICAge3BhZ2luYXRpb24uc2Nyb2xsUG9zaXRpb24uY2FuU2Nyb2xsVXAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPiB7ZmlndXJlcy5hcnJvd1VwfSBtb3JlIGFib3ZlPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBQbHVnaW4gbGlzdCAqL31cbiAgICAgIHt2aXNpYmxlUGx1Z2lucy5tYXAoKHBsdWdpbiwgdmlzaWJsZUluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdHVhbEluZGV4ID0gcGFnaW5hdGlvbi50b0FjdHVhbEluZGV4KHZpc2libGVJbmRleClcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkSW5kZXggPT09IGFjdHVhbEluZGV4XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWRGb3JJbnN0YWxsID0gc2VsZWN0ZWRGb3JJbnN0YWxsLmhhcyhwbHVnaW4ucGx1Z2luSWQpXG4gICAgICAgIGNvbnN0IGlzSW5zdGFsbGluZyA9IGluc3RhbGxpbmdQbHVnaW5zLmhhcyhwbHVnaW4ucGx1Z2luSWQpXG4gICAgICAgIGNvbnN0IGlzTGFzdCA9IHZpc2libGVJbmRleCA9PT0gdmlzaWJsZVBsdWdpbnMubGVuZ3RoIC0gMVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPEJveFxuICAgICAgICAgICAga2V5PXtwbHVnaW4ucGx1Z2luSWR9XG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbT17aXNMYXN0ICYmICFlcnJvciA/IDAgOiAxfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICAgIDxUZXh0IGNvbG9yPXtpc1NlbGVjdGVkID8gJ3N1Z2dlc3Rpb24nIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICB7aXNTZWxlY3RlZCA/IGZpZ3VyZXMucG9pbnRlciA6ICcgJ317JyAnfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0IGNvbG9yPXtwbHVnaW4uaXNJbnN0YWxsZWQgPyAnc3VjY2VzcycgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAgICAgIHtwbHVnaW4uaXNJbnN0YWxsZWRcbiAgICAgICAgICAgICAgICAgID8gZmlndXJlcy50aWNrXG4gICAgICAgICAgICAgICAgICA6IGlzSW5zdGFsbGluZ1xuICAgICAgICAgICAgICAgICAgICA/IGZpZ3VyZXMuZWxsaXBzaXNcbiAgICAgICAgICAgICAgICAgICAgOiBpc1NlbGVjdGVkRm9ySW5zdGFsbFxuICAgICAgICAgICAgICAgICAgICAgID8gZmlndXJlcy5yYWRpb09uXG4gICAgICAgICAgICAgICAgICAgICAgOiBmaWd1cmVzLnJhZGlvT2ZmfXsnICd9XG4gICAgICAgICAgICAgICAge3BsdWdpbi5lbnRyeS5uYW1lfVxuICAgICAgICAgICAgICAgIHtwbHVnaW4uZW50cnkuY2F0ZWdvcnkgJiYgKFxuICAgICAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+IFt7cGx1Z2luLmVudHJ5LmNhdGVnb3J5fV08L1RleHQ+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7cGx1Z2luLmVudHJ5LnRhZ3M/LmluY2x1ZGVzKCdjb21tdW5pdHktbWFuYWdlZCcpICYmIChcbiAgICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPiBbQ29tbXVuaXR5IE1hbmFnZWRdPC9UZXh0PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3BsdWdpbi5pc0luc3RhbGxlZCAmJiA8VGV4dCBkaW1Db2xvcj4gKGluc3RhbGxlZCk8L1RleHQ+fVxuICAgICAgICAgICAgICAgIHtpbnN0YWxsQ291bnRzICYmXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZE1hcmtldHBsYWNlID09PSBPRkZJQ0lBTF9NQVJLRVRQTEFDRV9OQU1FICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICAgICAgICAgICAgeycgwrcgJ31cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0SW5zdGFsbENvdW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbENvdW50cy5nZXQocGx1Z2luLnBsdWdpbklkKSA/PyAwLFxuICAgICAgICAgICAgICAgICAgICAgICl9eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsc1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIHtwbHVnaW4uZW50cnkuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICA8Qm94IG1hcmdpbkxlZnQ9ezR9PlxuICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgICAgICAge3RydW5jYXRlVG9XaWR0aChwbHVnaW4uZW50cnkuZGVzY3JpcHRpb24sIDYwKX1cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAge3BsdWdpbi5lbnRyeS52ZXJzaW9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPiDCtyB2e3BsdWdpbi5lbnRyeS52ZXJzaW9ufTwvVGV4dD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIClcbiAgICAgIH0pfVxuXG4gICAgICB7LyogU2Nyb2xsIGRvd24gaW5kaWNhdG9yICovfVxuICAgICAge3BhZ2luYXRpb24uc2Nyb2xsUG9zaXRpb24uY2FuU2Nyb2xsRG93biAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+IHtmaWd1cmVzLmFycm93RG93bn0gbW9yZSBiZWxvdzwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7LyogRXJyb3IgbWVzc2FnZXMgc2hvd24gaW4gdGhlIFVJICovfVxuICAgICAge2Vycm9yICYmIChcbiAgICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgIDxUZXh0IGNvbG9yPVwiZXJyb3JcIj5cbiAgICAgICAgICAgIHtmaWd1cmVzLmNyb3NzfSB7ZXJyb3J9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIDxQbHVnaW5TZWxlY3Rpb25LZXlIaW50IGhhc1NlbGVjdGlvbj17c2VsZWN0ZWRGb3JJbnN0YWxsLnNpemUgPiAwfSAvPlxuICAgIDwvQm94PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE9BQU8sTUFBTSxTQUFTO0FBQzdCLE9BQU8sS0FBS0MsS0FBSyxNQUFNLE9BQU87QUFDOUIsU0FBU0MsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUMzQyxTQUFTQyx3QkFBd0IsUUFBUSw4Q0FBOEM7QUFDdkYsU0FBU0MsTUFBTSxRQUFRLDBDQUEwQztBQUNqRSxTQUFTQyxHQUFHLEVBQUVDLElBQUksUUFBUSxjQUFjO0FBQ3hDLFNBQ0VDLGFBQWEsRUFDYkMsY0FBYyxRQUNULG9DQUFvQztBQUMzQyxjQUFjQyxZQUFZLFFBQVEsdUJBQXVCO0FBQ3pELFNBQVNDLEtBQUssUUFBUSxzQkFBc0I7QUFDNUMsU0FBU0MsV0FBVyxRQUFRLHdCQUF3QjtBQUNwRCxTQUFTQyxlQUFlLFFBQVEsc0JBQXNCO0FBQ3RELFNBQVNDLFlBQVksUUFBUSx1QkFBdUI7QUFDcEQsU0FBU0MsY0FBYyxRQUFRLG1DQUFtQztBQUNsRSxTQUNFQyxrQkFBa0IsRUFDbEJD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
801
+ }
@@ -778,4 +778,3 @@ function EmptyStateMessage(t0) {
778
778
  }
779
779
  }
780
780
  }
781
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWd1cmVzIiwiUmVhY3QiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsIkNvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCIsIkJ5bGluZSIsIlNlYXJjaEJveCIsInVzZVNlYXJjaElucHV0IiwidXNlVGVybWluYWxTaXplIiwiQm94IiwiVGV4dCIsInVzZUlucHV0IiwidXNlVGVybWluYWxGb2N1cyIsInVzZUtleWJpbmRpbmciLCJ1c2VLZXliaW5kaW5ncyIsIkxvYWRlZFBsdWdpbiIsImNvdW50Iiwib3BlbkJyb3dzZXIiLCJsb2dGb3JEZWJ1Z2dpbmciLCJlcnJvck1lc3NhZ2UiLCJjbGVhckFsbENhY2hlcyIsImZvcm1hdEluc3RhbGxDb3VudCIsImdldEluc3RhbGxDb3VudHMiLCJpc1BsdWdpbkdsb2JhbGx5SW5zdGFsbGVkIiwiY3JlYXRlUGx1Z2luSWQiLCJkZXRlY3RFbXB0eU1hcmtldHBsYWNlUmVhc29uIiwiRW1wdHlNYXJrZXRwbGFjZVJlYXNvbiIsImZvcm1hdEZhaWx1cmVEZXRhaWxzIiwiZm9ybWF0TWFya2V0cGxhY2VMb2FkaW5nRXJyb3JzIiwibG9hZE1hcmtldHBsYWNlc1dpdGhHcmFjZWZ1bERlZ3JhZGF0aW9uIiwibG9hZEtub3duTWFya2V0cGxhY2VzQ29uZmlnIiwiT0ZGSUNJQUxfTUFSS0VUUExBQ0VfTkFNRSIsImluc3RhbGxQbHVnaW5Gcm9tTWFya2V0cGxhY2UiLCJpc1BsdWdpbkJsb2NrZWRCeVBvbGljeSIsInBsdXJhbCIsInRydW5jYXRlVG9XaWR0aCIsImZpbmRQbHVnaW5PcHRpb25zVGFyZ2V0IiwiUGx1Z2luT3B0aW9uc0Zsb3ciLCJQbHVnaW5UcnVzdFdhcm5pbmciLCJidWlsZFBsdWdpbkRldGFpbHNNZW51T3B0aW9ucyIsImV4dHJhY3RHaXRIdWJSZXBvIiwiSW5zdGFsbGFibGVQbHVnaW4iLCJWaWV3U3RhdGUiLCJQYXJlbnRWaWV3U3RhdGUiLCJ1c2VQYWdpbmF0aW9uIiwiUHJvcHMiLCJlcnJvciIsInNldEVycm9yIiwicmVzdWx0Iiwic2V0UmVzdWx0Iiwic2V0Vmlld1N0YXRlIiwic3RhdGUiLCJvbkluc3RhbGxDb21wbGV0ZSIsIlByb21pc2UiLCJvblNlYXJjaE1vZGVDaGFuZ2UiLCJpc0FjdGl2ZSIsInRhcmdldFBsdWdpbiIsInR5cGUiLCJwbHVnaW4iLCJwbHVnaW5JZCIsIkRpc2NvdmVyUGx1Z2lucyIsIl9yZXN1bHQiLCJzZXRQYXJlbnRWaWV3U3RhdGUiLCJSZWFjdE5vZGUiLCJ2aWV3U3RhdGUiLCJzZWxlY3RlZFBsdWdpbiIsInNldFNlbGVjdGVkUGx1Z2luIiwiYXZhaWxhYmxlUGx1Z2lucyIsInNldEF2YWlsYWJsZVBsdWdpbnMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsImluc3RhbGxDb3VudHMiLCJzZXRJbnN0YWxsQ291bnRzIiwiTWFwIiwiaXNTZWFyY2hNb2RlIiwic2V0SXNTZWFyY2hNb2RlUmF3Iiwic2V0SXNTZWFyY2hNb2RlIiwiYWN0aXZlIiwicXVlcnkiLCJzZWFyY2hRdWVyeSIsInNldFF1ZXJ5Iiwic2V0U2VhcmNoUXVlcnkiLCJjdXJzb3JPZmZzZXQiLCJzZWFyY2hDdXJzb3JPZmZzZXQiLCJvbkV4aXQiLCJpc1Rlcm1pbmFsRm9jdXNlZCIsImNvbHVtbnMiLCJ0ZXJtaW5hbFdpZHRoIiwiZmlsdGVyZWRQbHVnaW5zIiwibG93ZXJRdWVyeSIsInRvTG93ZXJDYXNlIiwiZmlsdGVyIiwiZW50cnkiLCJuYW1lIiwiaW5jbHVkZXMiLCJkZXNjcmlwdGlvbiIsIm1hcmtldHBsYWNlTmFtZSIsInNlbGVjdGVkSW5kZXgiLCJzZXRTZWxlY3RlZEluZGV4Iiwic2VsZWN0ZWRGb3JJbnN0YWxsIiwic2V0U2VsZWN0ZWRGb3JJbnN0YWxsIiwiU2V0IiwiaW5zdGFsbGluZ1BsdWdpbnMiLCJzZXRJbnN0YWxsaW5nUGx1Z2lucyIsInBhZ2luYXRpb24iLCJ0b3RhbEl0ZW1zIiwibGVuZ3RoIiwiZGV0YWlsc01lbnVJbmRleCIsInNldERldGFpbHNNZW51SW5kZXgiLCJpc0luc3RhbGxpbmciLCJzZXRJc0luc3RhbGxpbmciLCJpbnN0YWxsRXJyb3IiLCJzZXRJbnN0YWxsRXJyb3IiLCJ3YXJuaW5nIiwic2V0V2FybmluZyIsImVtcHR5UmVhc29uIiwic2V0RW1wdHlSZWFzb24iLCJsb2FkQWxsUGx1Z2lucyIsImNvbmZpZyIsIm1hcmtldHBsYWNlcyIsImZhaWx1cmVzIiwiYWxsUGx1Z2lucyIsImRhdGEiLCJtYXJrZXRwbGFjZSIsInBsdWdpbnMiLCJwdXNoIiwiaXNJbnN0YWxsZWQiLCJ1bmluc3RhbGxlZFBsdWdpbnMiLCJwIiwiY291bnRzIiwic29ydCIsImEiLCJiIiwiY291bnRBIiwiZ2V0IiwiY291bnRCIiwibG9jYWxlQ29tcGFyZSIsImNvbmZpZ3VyZWRDb3VudCIsIk9iamVjdCIsImtleXMiLCJyZWFzb24iLCJjb25maWd1cmVkTWFya2V0cGxhY2VDb3VudCIsImZhaWxlZE1hcmtldHBsYWNlQ291bnQiLCJzdWNjZXNzQ291bnQiLCJtIiwiZXJyb3JSZXN1bHQiLCJtZXNzYWdlIiwiRXJyb3IiLCJmb3VuZFBsdWdpbiIsImZpbmQiLCJlcnIiLCJpbnN0YWxsU2VsZWN0ZWRQbHVnaW5zIiwic2l6ZSIsInBsdWdpbnNUb0luc3RhbGwiLCJoYXMiLCJtYXAiLCJmYWlsdXJlQ291bnQiLCJuZXdGYWlsZWRQbHVnaW5zIiwiQXJyYXkiLCJzY29wZSIsInN1Y2Nlc3MiLCJoYW5kbGVTaW5nbGVQbHVnaW5JbnN0YWxsIiwibG9hZGVkIiwiY29udGV4dCIsImlucHV0IiwiX2tleSIsImtleUlzTm90Q3RybE9yTWV0YSIsImN0cmwiLCJtZXRhIiwidGVzdCIsInNlbGVjdDpwcmV2aW91cyIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsInNlbGVjdDpuZXh0Iiwic2VsZWN0OmFjY2VwdCIsInRhcmdldE1hcmtldHBsYWNlIiwicGx1Z2luOnRvZ2dsZSIsIm5ld1NlbGVjdGlvbiIsImRlbGV0ZSIsImFkZCIsInBsdWdpbjppbnN0YWxsIiwiZGV0YWlsc01lbnVPcHRpb25zIiwiaGFzSG9tZXBhZ2UiLCJob21lcGFnZSIsImdpdGh1YlJlcG8iLCJhY3Rpb24iLCJmaW5pc2giLCJtc2ciLCJvdXRjb21lIiwiZGV0YWlsIiwibWVudU9wdGlvbnMiLCJ2ZXJzaW9uIiwiYXV0aG9yIiwib3B0aW9uIiwiaW5kZXgiLCJzdGFydHNXaXRoIiwibGFiZWwiLCJ2aXNpYmxlUGx1Z2lucyIsImdldFZpc2libGVJdGVtcyIsIm5lZWRzUGFnaW5hdGlvbiIsInNjcm9sbFBvc2l0aW9uIiwiY3VycmVudCIsInRvdGFsIiwiY2FuU2Nyb2xsVXAiLCJhcnJvd1VwIiwidmlzaWJsZUluZGV4IiwiYWN0dWFsSW5kZXgiLCJ0b0FjdHVhbEluZGV4IiwiaXNTZWxlY3RlZCIsImlzU2VsZWN0ZWRGb3JJbnN0YWxsIiwiaXNJbnN0YWxsaW5nVGhpcyIsImlzTGFzdCIsInN0YXJ0SW5kZXgiLCJ1bmRlZmluZWQiLCJwb2ludGVyIiwiZWxsaXBzaXMiLCJyYWRpb09uIiwicmFkaW9PZmYiLCJ0YWdzIiwiY2FuU2Nyb2xsRG93biIsImFycm93RG93biIsImNyb3NzIiwiRGlzY292ZXJQbHVnaW5zS2V5SGludCIsInQwIiwiJCIsIl9jIiwiaGFzU2VsZWN0aW9uIiwiY2FuVG9nZ2xlIiwidDEiLCJ0MiIsIlN5bWJvbCIsImZvciIsInQzIiwidDQiLCJ0NSIsInQ2IiwiRW1wdHlTdGF0ZU1lc3NhZ2UiXSwic291cmNlcyI6WyJEaXNjb3ZlclBsdWdpbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaWd1cmVzIGZyb20gJ2ZpZ3VyZXMnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb25maWd1cmFibGVTaG9ydGN1dEhpbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL0NvbmZpZ3VyYWJsZVNob3J0Y3V0SGludC5qcydcbmltcG9ydCB7IEJ5bGluZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVzaWduLXN5c3RlbS9CeWxpbmUuanMnXG5pbXBvcnQgeyBTZWFyY2hCb3ggfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1NlYXJjaEJveC5qcydcbmltcG9ydCB7IHVzZVNlYXJjaElucHV0IH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2VhcmNoSW5wdXQuanMnXG5pbXBvcnQgeyB1c2VUZXJtaW5hbFNpemUgfSBmcm9tICcuLi8uLi9ob29rcy91c2VUZXJtaW5hbFNpemUuanMnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY3VzdG9tLXJ1bGVzL3ByZWZlci11c2Uta2V5YmluZGluZ3MgLS0gdXNlSW5wdXQgbmVlZGVkIGZvciByYXcgc2VhcmNoIG1vZGUgdGV4dCBpbnB1dFxuaW1wb3J0IHsgQm94LCBUZXh0LCB1c2VJbnB1dCwgdXNlVGVybWluYWxGb2N1cyB9IGZyb20gJy4uLy4uL2luay5qcydcbmltcG9ydCB7XG4gIHVzZUtleWJpbmRpbmcsXG4gIHVzZUtleWJpbmRpbmdzLFxufSBmcm9tICcuLi8uLi9rZXliaW5kaW5ncy91c2VLZXliaW5kaW5nLmpzJ1xuaW1wb3J0IHR5cGUgeyBMb2FkZWRQbHVnaW4gfSBmcm9tICcuLi8uLi90eXBlcy9wbHVnaW4uanMnXG5pbXBvcnQgeyBjb3VudCB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5LmpzJ1xuaW1wb3J0IHsgb3BlbkJyb3dzZXIgfSBmcm9tICcuLi8uLi91dGlscy9icm93c2VyLmpzJ1xuaW1wb3J0IHsgbG9nRm9yRGVidWdnaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVidWcuanMnXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlscy9lcnJvcnMuanMnXG5pbXBvcnQgeyBjbGVhckFsbENhY2hlcyB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMvY2FjaGVVdGlscy5qcydcbmltcG9ydCB7XG4gIGZvcm1hdEluc3RhbGxDb3VudCxcbiAgZ2V0SW5zdGFsbENvdW50cyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9pbnN0YWxsQ291bnRzLmpzJ1xuaW1wb3J0IHsgaXNQbHVnaW5HbG9iYWxseUluc3RhbGxlZCB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMvaW5zdGFsbGVkUGx1Z2luc01hbmFnZXIuanMnXG5pbXBvcnQge1xuICBjcmVhdGVQbHVnaW5JZCxcbiAgZGV0ZWN0RW1wdHlNYXJrZXRwbGFjZVJlYXNvbixcbiAgdHlwZSBFbXB0eU1hcmtldHBsYWNlUmVhc29uLFxuICBmb3JtYXRGYWlsdXJlRGV0YWlscyxcbiAgZm9ybWF0TWFya2V0cGxhY2VMb2FkaW5nRXJyb3JzLFxuICBsb2FkTWFya2V0cGxhY2VzV2l0aEdyYWNlZnVsRGVncmFkYXRpb24sXG59IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMvbWFya2V0cGxhY2VIZWxwZXJzLmpzJ1xuaW1wb3J0IHsgbG9hZEtub3duTWFya2V0cGxhY2VzQ29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9tYXJrZXRwbGFjZU1hbmFnZXIuanMnXG5pbXBvcnQgeyBPRkZJQ0lBTF9NQVJLRVRQTEFDRV9OQU1FIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9vZmZpY2lhbE1hcmtldHBsYWNlLmpzJ1xuaW1wb3J0IHsgaW5zdGFsbFBsdWdpbkZyb21NYXJrZXRwbGFjZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsdWdpbnMvcGx1Z2luSW5zdGFsbGF0aW9uSGVscGVycy5qcydcbmltcG9ydCB7IGlzUGx1Z2luQmxvY2tlZEJ5UG9saWN5IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9wbHVnaW5Qb2xpY3kuanMnXG5pbXBvcnQgeyBwbHVyYWwgfSBmcm9tICcuLi8uLi91dGlscy9zdHJpbmdVdGlscy5qcydcbmltcG9ydCB7IHRydW5jYXRlVG9XaWR0aCB9IGZyb20gJy4uLy4uL3V0aWxzL3RydW5jYXRlLmpzJ1xuaW1wb3J0IHtcbiAgZmluZFBsdWdpbk9wdGlvbnNUYXJnZXQsXG4gIFBsdWdpbk9wdGlvbnNGbG93LFxufSBmcm9tICcuL1BsdWdpbk9wdGlvbnNGbG93LmpzJ1xuaW1wb3J0IHsgUGx1Z2luVHJ1c3RXYXJuaW5nIH0gZnJvbSAnLi9QbHVnaW5UcnVzdFdhcm5pbmcuanMnXG5pbXBvcnQge1xuICBidWlsZFBsdWdpbkRldGFpbHNNZW51T3B0aW9ucyxcbiAgZXh0cmFjdEdpdEh1YlJlcG8sXG4gIHR5cGUgSW5zdGFsbGFibGVQbHVnaW4sXG59IGZyb20gJy4vcGx1Z2luRGV0YWlsc0hlbHBlcnMuanMnXG5pbXBvcnQgdHlwZSB7IFZpZXdTdGF0ZSBhcyBQYXJlbnRWaWV3U3RhdGUgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHsgdXNlUGFnaW5hdGlvbiB9IGZyb20gJy4vdXNlUGFnaW5hdGlvbi5qcydcblxudHlwZSBQcm9wcyA9IHtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGxcbiAgc2V0RXJyb3I6IChlcnJvcjogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZFxuICByZXN1bHQ6IHN0cmluZyB8IG51bGxcbiAgc2V0UmVzdWx0OiAocmVzdWx0OiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkXG4gIHNldFZpZXdTdGF0ZTogKHN0YXRlOiBQYXJlbnRWaWV3U3RhdGUpID0+IHZvaWRcbiAgb25JbnN0YWxsQ29tcGxldGU/OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxuICBvblNlYXJjaE1vZGVDaGFuZ2U/OiAoaXNBY3RpdmU6IGJvb2xlYW4pID0+IHZvaWRcbiAgdGFyZ2V0UGx1Z2luPzogc3RyaW5nXG59XG5cbnR5cGUgVmlld1N0YXRlID1cbiAgfCAncGx1Z2luLWxpc3QnXG4gIHwgJ3BsdWdpbi1kZXRhaWxzJ1xuICB8IHsgdHlwZTogJ3BsdWdpbi1vcHRpb25zJzsgcGx1Z2luOiBMb2FkZWRQbHVnaW47IHBsdWdpbklkOiBzdHJpbmcgfVxuXG5leHBvcnQgZnVuY3Rpb24gRGlzY292ZXJQbHVnaW5zKHtcbiAgZXJyb3IsXG4gIHNldEVycm9yLFxuICByZXN1bHQ6IF9yZXN1bHQsXG4gIHNldFJlc3VsdCxcbiAgc2V0Vmlld1N0YXRlOiBzZXRQYXJlbnRWaWV3U3RhdGUsXG4gIG9uSW5zdGFsbENvbXBsZXRlLFxuICBvblNlYXJjaE1vZGVDaGFuZ2UsXG4gIHRhcmdldFBsdWdpbixcbn06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgLy8gVmlldyBzdGF0ZVxuICBjb25zdCBbdmlld1N0YXRlLCBzZXRWaWV3U3RhdGVdID0gdXNlU3RhdGU8Vmlld1N0YXRlPigncGx1Z2luLWxpc3QnKVxuICBjb25zdCBbc2VsZWN0ZWRQbHVnaW4sIHNldFNlbGVjdGVkUGx1Z2luXSA9XG4gICAgdXNlU3RhdGU8SW5zdGFsbGFibGVQbHVnaW4gfCBudWxsPihudWxsKVxuXG4gIC8vIERhdGEgc3RhdGVcbiAgY29uc3QgW2F2YWlsYWJsZVBsdWdpbnMsIHNldEF2YWlsYWJsZVBsdWdpbnNdID0gdXNlU3RhdGU8SW5zdGFsbGFibGVQbHVnaW5bXT4oXG4gICAgW10sXG4gIClcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2luc3RhbGxDb3VudHMsIHNldEluc3RhbGxDb3VudHNdID0gdXNlU3RhdGU8TWFwPFxuICAgIHN0cmluZyxcbiAgICBudW1iZXJcbiAgPiB8IG51bGw+KG51bGwpXG5cbiAgLy8gU2VhcmNoIHN0YXRlXG4gIGNvbnN0IFtpc1NlYXJjaE1vZGUsIHNldElzU2VhcmNoTW9kZVJhd10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3Qgc2V0SXNTZWFyY2hNb2RlID0gdXNlQ2FsbGJhY2soXG4gICAgKGFjdGl2ZTogYm9vbGVhbikgPT4ge1xuICAgICAgc2V0SXNTZWFyY2hNb2RlUmF3KGFjdGl2ZSlcbiAgICAgIG9uU2VhcmNoTW9kZUNoYW5nZT8uKGFjdGl2ZSlcbiAgICB9LFxuICAgIFtvblNlYXJjaE1vZGVDaGFuZ2VdLFxuICApXG4gIGNvbnN0IHtcbiAgICBxdWVyeTogc2VhcmNoUXVlcnksXG4gICAgc2V0UXVlcnk6IHNldFNlYXJjaFF1ZXJ5LFxuICAgIGN1cnNvck9mZnNldDogc2VhcmNoQ3Vyc29yT2Zmc2V0LFxuICB9ID0gdXNlU2VhcmNoSW5wdXQoe1xuICAgIGlzQWN0aXZlOiB2aWV3U3RhdGUgPT09ICdwbHVnaW4tbGlzdCcgJiYgaXNTZWFyY2hNb2RlICYmICFsb2FkaW5nLFxuICAgIG9uRXhpdDogKCkgPT4ge1xuICAgICAgc2V0SXNTZWFyY2hNb2RlKGZhbHNlKVxuICAgIH0sXG4gIH0pXG4gIGNvbnN0IGlzVGVybWluYWxGb2N1c2VkID0gdXNlVGVybWluYWxGb2N1cygpXG4gIGNvbnN0IHsgY29sdW1uczogdGVybWluYWxXaWR0aCB9ID0gdXNlVGVybWluYWxTaXplKClcblxuICAvLyBGaWx0ZXIgcGx1Z2lucyBiYXNlZCBvbiBzZWFyY2ggcXVlcnlcbiAgY29uc3QgZmlsdGVyZWRQbHVnaW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hRdWVyeSkgcmV0dXJuIGF2YWlsYWJsZVBsdWdpbnNcbiAgICBjb25zdCBsb3dlclF1ZXJ5ID0gc2VhcmNoUXVlcnkudG9Mb3dlckNhc2UoKVxuICAgIHJldHVybiBhdmFpbGFibGVQbHVnaW5zLmZpbHRlcihcbiAgICAgIHBsdWdpbiA9PlxuICAgICAgICBwbHVnaW4uZW50cnkubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyUXVlcnkpIHx8XG4gICAgICAgIHBsdWdpbi5lbnRyeS5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlclF1ZXJ5KSB8fFxuICAgICAgICBwbHVnaW4ubWFya2V0cGxhY2VOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJRdWVyeSksXG4gICAgKVxuICB9LCBbYXZhaWxhYmxlUGx1Z2lucywgc2VhcmNoUXVlcnldKVxuXG4gIC8vIFNlbGVjdGlvbiBzdGF0ZVxuICBjb25zdCBbc2VsZWN0ZWRJbmRleCwgc2V0U2VsZWN0ZWRJbmRleF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbc2VsZWN0ZWRGb3JJbnN0YWxsLCBzZXRTZWxlY3RlZEZvckluc3RhbGxdID0gdXNlU3RhdGU8U2V0PHN0cmluZz4+KFxuICAgIG5ldyBTZXQoKSxcbiAgKVxuICBjb25zdCBbaW5zdGFsbGluZ1BsdWdpbnMsIHNldEluc3RhbGxpbmdQbHVnaW5zXSA9IHVzZVN0YXRlPFNldDxzdHJpbmc+PihcbiAgICBuZXcgU2V0KCksXG4gIClcblxuICAvLyBQYWdpbmF0aW9uIGZvciBwbHVnaW4gbGlzdCAoY29udGludW91cyBzY3JvbGxpbmcpXG4gIGNvbnN0IHBhZ2luYXRpb24gPSB1c2VQYWdpbmF0aW9uPEluc3RhbGxhYmxlUGx1Z2luPih7XG4gICAgdG90YWxJdGVtczogZmlsdGVyZWRQbHVnaW5zLmxlbmd0aCxcbiAgICBzZWxlY3RlZEluZGV4LFxuICB9KVxuXG4gIC8vIFJlc2V0IHNlbGVjdGlvbiB3aGVuIHNlYXJjaCBxdWVyeSBjaGFuZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWRJbmRleCgwKVxuICB9LCBbc2VhcmNoUXVlcnldKVxuXG4gIC8vIERldGFpbHMgdmlldyBzdGF0ZVxuICBjb25zdCBbZGV0YWlsc01lbnVJbmRleCwgc2V0RGV0YWlsc01lbnVJbmRleF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbaXNJbnN0YWxsaW5nLCBzZXRJc0luc3RhbGxpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpbnN0YWxsRXJyb3IsIHNldEluc3RhbGxFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIC8vIFdhcm5pbmcgc3RhdGUgZm9yIG5vbi1jcml0aWNhbCBlcnJvcnNcbiAgY29uc3QgW3dhcm5pbmcsIHNldFdhcm5pbmddID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICAvLyBFbXB0eSBzdGF0ZSByZWFzb25cbiAgY29uc3QgW2VtcHR5UmVhc29uLCBzZXRFbXB0eVJlYXNvbl0gPSB1c2VTdGF0ZTxFbXB0eU1hcmtldHBsYWNlUmVhc29uIHwgbnVsbD4oXG4gICAgbnVsbCxcbiAgKVxuXG4gIC8vIExvYWQgYWxsIHBsdWdpbnMgZnJvbSBhbGwgbWFya2V0cGxhY2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYXN5bmMgZnVuY3Rpb24gbG9hZEFsbFBsdWdpbnMoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCBsb2FkS25vd25NYXJrZXRwbGFjZXNDb25maWcoKVxuXG4gICAgICAgIC8vIExvYWQgbWFya2V0cGxhY2VzIHdpdGggZ3JhY2VmdWwgZGVncmFkYXRpb25cbiAgICAgICAgY29uc3QgeyBtYXJrZXRwbGFjZXMsIGZhaWx1cmVzIH0gPVxuICAgICAgICAgIGF3YWl0IGxvYWRNYXJrZXRwbGFjZXNXaXRoR3JhY2VmdWxEZWdyYWRhdGlvbihjb25maWcpXG5cbiAgICAgICAgLy8gQ29sbGVjdCBhbGwgcGx1Z2lucyBmcm9tIGFsbCBtYXJrZXRwbGFjZXNcbiAgICAgICAgY29uc3QgYWxsUGx1Z2luczogSW5zdGFsbGFibGVQbHVnaW5bXSA9IFtdXG5cbiAgICAgICAgZm9yIChjb25zdCB7IG5hbWUsIGRhdGE6IG1hcmtldHBsYWNlIH0gb2YgbWFya2V0cGxhY2VzKSB7XG4gICAgICAgICAgaWYgKG1hcmtldHBsYWNlKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIG1hcmtldHBsYWNlLnBsdWdpbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGx1Z2luSWQgPSBjcmVhdGVQbHVnaW5JZChlbnRyeS5uYW1lLCBuYW1lKVxuICAgICAgICAgICAgICBhbGxQbHVnaW5zLnB1c2goe1xuICAgICAgICAgICAgICAgIGVudHJ5LFxuICAgICAgICAgICAgICAgIG1hcmtldHBsYWNlTmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICBwbHVnaW5JZCxcbiAgICAgICAgICAgICAgICAvLyBPbmx5IGJsb2NrIHdoZW4gZ2xvYmFsbHkgaW5zdGFsbGVkICh1c2VyL21hbmFnZWQgc2NvcGUpLlxuICAgICAgICAgICAgICAgIC8vIFByb2plY3QvbG9jYWwtc2NvcGUgaW5zdGFsbHMgZG9uJ3QgYmxvY2sg4oCUIHVzZXIgbWF5IHdhbnQgdG9cbiAgICAgICAgICAgICAgICAvLyBwcm9tb3RlIHRvIHVzZXIgc2NvcGUgc28gaXQncyBhdmFpbGFibGUgZXZlcnl3aGVyZSAoZ2gtMjk5OTcpLlxuICAgICAgICAgICAgICAgIGlzSW5zdGFsbGVkOiBpc1BsdWdpbkdsb2JhbGx5SW5zdGFsbGVkKHBsdWdpbklkKSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaWx0ZXIgb3V0IGluc3RhbGxlZCBhbmQgcG9saWN5LWJsb2NrZWQgcGx1Z2luc1xuICAgICAgICBjb25zdCB1bmluc3RhbGxlZFBsdWdpbnMgPSBhbGxQbHVnaW5zLmZpbHRlcihcbiAgICAgICAgICBwID0+ICFwLmlzSW5zdGFsbGVkICYmICFpc1BsdWdpbkJsb2NrZWRCeVBvbGljeShwLnBsdWdpbklkKSxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIEZldGNoIGluc3RhbGwgY291bnRzIGFuZCBzb3J0IGJ5IHBvcHVsYXJpdHlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb3VudHMgPSBhd2FpdCBnZXRJbnN0YWxsQ291bnRzKClcbiAgICAgICAgICBzZXRJbnN0YWxsQ291bnRzKGNvdW50cylcblxuICAgICAgICAgIGlmIChjb3VudHMpIHtcbiAgICAgICAgICAgIC8vIFNvcnQgYnkgaW5zdGFsbCBjb3VudCAoZGVzY2VuZGluZyksIHRoZW4gYWxwaGFiZXRpY2FsbHlcbiAgICAgICAgICAgIHVuaW5zdGFsbGVkUGx1Z2lucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvdW50QSA9IGNvdW50cy5nZXQoYS5wbHVnaW5JZCkgPz8gMFxuICAgICAgICAgICAgICBjb25zdCBjb3VudEIgPSBjb3VudHMuZ2V0KGIucGx1Z2luSWQpID8/IDBcbiAgICAgICAgICAgICAgaWYgKGNvdW50QSAhPT0gY291bnRCKSByZXR1cm4gY291bnRCIC0gY291bnRBXG4gICAgICAgICAgICAgIHJldHVybiBhLmVudHJ5Lm5hbWUubG9jYWxlQ29tcGFyZShiLmVudHJ5Lm5hbWUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBObyBjb3VudHMgYXZhaWxhYmxlIC0gc29ydCBhbHBoYWJldGljYWxseVxuICAgICAgICAgICAgdW5pbnN0YWxsZWRQbHVnaW5zLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgIGEuZW50cnkubmFtZS5sb2NhbGVDb21wYXJlKGIuZW50cnkubmFtZSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIExvZyB0aGUgZXJyb3IsIHRoZW4gZ3JhY2VmdWxseSBkZWdyYWRlIHRvIGFscGhhYmV0aWNhbCBzb3J0XG4gICAgICAgICAgbG9nRm9yRGVidWdnaW5nKFxuICAgICAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBpbnN0YWxsIGNvdW50czogJHtlcnJvck1lc3NhZ2UoZXJyb3IpfWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIHVuaW5zdGFsbGVkUGx1Z2lucy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgYS5lbnRyeS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5lbnRyeS5uYW1lKSxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBzZXRBdmFpbGFibGVQbHVnaW5zKHVuaW5zdGFsbGVkUGx1Z2lucylcblxuICAgICAgICAvLyBEZXRlY3QgZW1wdHkgcmVhc29uIGlmIG5vIHBsdWdpbnMgYXZhaWxhYmxlXG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZWRDb3VudCA9IE9iamVjdC5rZXlzKGNvbmZpZykubGVuZ3RoXG4gICAgICAgIGlmICh1bmluc3RhbGxlZFBsdWdpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgcmVhc29uID0gYXdhaXQgZGV0ZWN0RW1wdHlNYXJrZXRwbGFjZVJlYXNvbih7XG4gICAgICAgICAgICBjb25maWd1cmVkTWFya2V0cGxhY2VDb3VudDogY29uZmlndXJlZENvdW50LFxuICAgICAgICAgICAgZmFpbGVkTWFya2V0cGxhY2VDb3VudDogZmFpbHVyZXMubGVuZ3RoLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0RW1wdHlSZWFzb24ocmVhc29uKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxlIG1hcmtldHBsYWNlIGxvYWRpbmcgZXJyb3JzL3dhcm5pbmdzXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NDb3VudCA9IGNvdW50KG1hcmtldHBsYWNlcywgbSA9PiBtLmRhdGEgIT09IG51bGwpXG4gICAgICAgIGNvbnN0IGVycm9yUmVzdWx0ID0gZm9ybWF0TWFya2V0cGxhY2VMb2FkaW5nRXJyb3JzKFxuICAgICAgICAgIGZhaWx1cmVzLFxuICAgICAgICAgIHN1Y2Nlc3NDb3VudCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoZXJyb3JSZXN1bHQpIHtcbiAgICAgICAgICBpZiAoZXJyb3JSZXN1bHQudHlwZSA9PT0gJ3dhcm5pbmcnKSB7XG4gICAgICAgICAgICBzZXRXYXJuaW5nKGVycm9yUmVzdWx0Lm1lc3NhZ2UgKyAnLiBTaG93aW5nIGF2YWlsYWJsZSBwbHVnaW5zLicpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvclJlc3VsdC5tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSB0YXJnZXRQbHVnaW4gLSBuYXZpZ2F0ZSBkaXJlY3RseSB0byBwbHVnaW4gZGV0YWlsc1xuICAgICAgICAvLyBTZWFyY2ggaW4gYWxsUGx1Z2lucyAoYmVmb3JlIGZpbHRlcmluZykgdG8gaGFuZGxlIGluc3RhbGxlZCBwbHVnaW5zIGdyYWNlZnVsbHlcbiAgICAgICAgaWYgKHRhcmdldFBsdWdpbikge1xuICAgICAgICAgIGNvbnN0IGZvdW5kUGx1Z2luID0gYWxsUGx1Z2lucy5maW5kKFxuICAgICAgICAgICAgcCA9PiBwLmVudHJ5Lm5hbWUgPT09IHRhcmdldFBsdWdpbixcbiAgICAgICAgICApXG5cbiAgICAgICAgICBpZiAoZm91bmRQbHVnaW4pIHtcbiAgICAgICAgICAgIGlmIChmb3VuZFBsdWdpbi5pc0luc3RhbGxlZCkge1xuICAgICAgICAgICAgICBzZXRFcnJvcihcbiAgICAgICAgICAgICAgICBgUGx1Z2luICcke2ZvdW5kUGx1Z2luLnBsdWdpbklkfScgaXMgYWxyZWFkeSBpbnN0YWxsZWQuIFVzZSAnL3BsdWdpbicgdG8gbWFuYWdlIGV4aXN0aW5nIHBsdWdpbnMuYCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRQbHVnaW4oZm91bmRQbHVnaW4pXG4gICAgICAgICAgICAgIHNldFZpZXdTdGF0ZSgncGx1Z2luLWRldGFpbHMnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRFcnJvcihgUGx1Z2luIFwiJHt0YXJnZXRQbHVnaW59XCIgbm90IGZvdW5kIGluIGFueSBtYXJrZXRwbGFjZWApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc2V0RXJyb3IoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdGYWlsZWQgdG8gbG9hZCBwbHVnaW5zJylcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICAgIHZvaWQgbG9hZEFsbFBsdWdpbnMoKVxuICB9LCBbc2V0RXJyb3IsIHRhcmdldFBsdWdpbl0pXG5cbiAgLy8gSW5zdGFsbCBzZWxlY3RlZCBwbHVnaW5zXG4gIGNvbnN0IGluc3RhbGxTZWxlY3RlZFBsdWdpbnMgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkRm9ySW5zdGFsbC5zaXplID09PSAwKSByZXR1cm5cblxuICAgIGNvbnN0IHBsdWdpbnNUb0luc3RhbGwgPSBhdmFpbGFibGVQbHVnaW5zLmZpbHRlcihwID0+XG4gICAgICBzZWxlY3RlZEZvckluc3RhbGwuaGFzKHAucGx1Z2luSWQpLFxuICAgIClcblxuICAgIHNldEluc3RhbGxpbmdQbHVnaW5zKG5ldyBTZXQocGx1Z2luc1RvSW5zdGFsbC5tYXAocCA9PiBwLnBsdWdpbklkKSkpXG5cbiAgICBsZXQgc3VjY2Vzc0NvdW50ID0gMFxuICAgIGxldCBmYWlsdXJlQ291bnQgPSAwXG4gICAgY29uc3QgbmV3RmFpbGVkUGx1Z2luczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHJlYXNvbjogc3RyaW5nIH0+ID0gW11cblxuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHBsdWdpbnNUb0luc3RhbGwpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluc3RhbGxQbHVnaW5Gcm9tTWFya2V0cGxhY2Uoe1xuICAgICAgICBwbHVnaW5JZDogcGx1Z2luLnBsdWdpbklkLFxuICAgICAgICBlbnRyeTogcGx1Z2luLmVudHJ5LFxuICAgICAgICBtYXJrZXRwbGFjZU5hbWU6IHBsdWdpbi5tYXJrZXRwbGFjZU5hbWUsXG4gICAgICAgIHNjb3BlOiAndXNlcicsXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgc3VjY2Vzc0NvdW50KytcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhaWx1cmVDb3VudCsrXG4gICAgICAgIG5ld0ZhaWxlZFBsdWdpbnMucHVzaCh7XG4gICAgICAgICAgbmFtZTogcGx1Z2luLmVudHJ5Lm5hbWUsXG4gICAgICAgICAgcmVhc29uOiByZXN1bHQuZXJyb3IsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0SW5zdGFsbGluZ1BsdWdpbnMobmV3IFNldCgpKVxuICAgIHNldFNlbGVjdGVkRm9ySW5zdGFsbChuZXcgU2V0KCkpXG4gICAgY2xlYXJBbGxDYWNoZXMoKVxuXG4gICAgLy8gSGFuZGxlIGluc3RhbGxhdGlvbiByZXN1bHRzXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIGDinJMgSW5zdGFsbGVkICR7c3VjY2Vzc0NvdW50fSAke3BsdXJhbChzdWNjZXNzQ291bnQsICdwbHVnaW4nKX0uIGAgK1xuICAgICAgICBgUnVuIC9yZWxvYWQtcGx1Z2lucyB0byBhY3RpdmF0ZS5gXG4gICAgICBzZXRSZXN1bHQobWVzc2FnZSlcbiAgICB9IGVsc2UgaWYgKHN1Y2Nlc3NDb3VudCA9PT0gMCkge1xuICAgICAgc2V0RXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gaW5zdGFsbDogJHtmb3JtYXRGYWlsdXJlRGV0YWlscyhuZXdGYWlsZWRQbHVnaW5zLCB0cnVlKX1gLFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgYOKckyBJbnN0YWxsZWQgJHtzdWNjZXNzQ291bnR9IG9mICR7c3VjY2Vzc0NvdW50ICsgZmFpbHVyZUNvdW50fSBwbHVnaW5zLiBgICtcbiAgICAgICAgYEZhaWxlZDogJHtmb3JtYXRGYWlsdXJlRGV0YWlscyhuZXdGYWlsZWRQbHVnaW5zLCBmYWxzZSl9LiBgICtcbiAgICAgICAgYFJ1biAvcmVsb2FkLXBsdWdpbnMgdG8gYWN0aXZhdGUgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCBwbHVnaW5zLmBcbiAgICAgIHNldFJlc3VsdChtZXNzYWdlKVxuICAgIH1cblxuICAgIGlmIChzdWNjZXNzQ291bnQgPiAwKSB7XG4gICAgICBpZiAob25JbnN0YWxsQ29tcGxldGUpIHtcbiAgICAgICAgYXdhaXQgb25JbnN0YWxsQ29tcGxldGUoKVxuICAgICAgfVxuICAgIH1cblxuICAgIHNldFBhcmVudFZpZXdTdGF0ZSh7IHR5cGU6ICdtZW51JyB9KVxuICB9XG5cbiAgLy8gSW5zdGFsbCBzaW5nbGUgcGx1Z2luIGZyb20gZGV0YWlscyB2aWV3XG4gIGNvbnN0IGhhbmRsZVNpbmdsZVBsdWdpbkluc3RhbGwgPSBhc3luYyAoXG4gICAgcGx1Z2luOiBJbnN0YWxsYWJsZVBsdWdpbixcbiAgICBzY29wZTogJ3VzZXInIHwgJ3Byb2plY3QnIHwgJ2xvY2FsJyA9ICd1c2VyJyxcbiAgKSA9PiB7XG4gICAgc2V0SXNJbnN0YWxsaW5nKHRydWUpXG4gICAgc2V0SW5zdGFsbEVycm9yKG51bGwpXG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbnN0YWxsUGx1Z2luRnJvbU1hcmtldHBsYWNlKHtcbiAgICAgIHBsdWdpbklkOiBwbHVnaW4ucGx1Z2luSWQsXG4gICAgICBlbnRyeTogcGx1Z2luLmVudHJ5LFxuICAgICAgbWFya2V0cGxhY2VOYW1lOiBwbHVnaW4ubWFya2V0cGxhY2VOYW1lLFxuICAgICAgc2NvcGUsXG4gICAgfSlcblxuICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgY29uc3QgbG9hZGVkID0gYXdhaXQgZmluZFBsdWdpbk9wdGlvbnNUYXJnZXQocGx1Z2luLnBsdWdpbklkKVxuICAgICAgaWYgKGxvYWRlZCkge1xuICAgICAgICBzZXRJc0luc3RhbGxpbmcoZmFsc2UpXG4gICAgICAgIHNldFZpZXdTdGF0ZSh7XG4gICAgICAgICAgdHlwZTogJ3BsdWdpbi1vcHRpb25zJyxcbiAgICAgICAgICBwbHVnaW46IGxvYWRlZCxcbiAgICAgICAgICBwbHVnaW5JZDogcGx1Z2luLnBsdWdpbklkLFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHNldFJlc3VsdChyZXN1bHQubWVzc2FnZSlcbiAgICAgIGlmIChvbkluc3RhbGxDb21wbGV0ZSkge1xuICAgICAgICBhd2FpdCBvbkluc3RhbGxDb21wbGV0ZSgpXG4gICAgICB9XG4gICAgICBzZXRQYXJlbnRWaWV3U3RhdGUoeyB0eXBlOiAnbWVudScgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SXNJbnN0YWxsaW5nKGZhbHNlKVxuICAgICAgc2V0SW5zdGFsbEVycm9yKHJlc3VsdC5lcnJvcilcbiAgICB9XG4gIH1cblxuICAvLyBIYW5kbGUgZXJyb3Igc3RhdGVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHNldFJlc3VsdChlcnJvcilcbiAgICB9XG4gIH0sIFtlcnJvciwgc2V0UmVzdWx0XSlcblxuICAvLyBFc2NhcGUgaW4gcGx1Z2luLWRldGFpbHMgdmlldyAtIGdvIGJhY2sgdG8gcGx1Z2luLWxpc3RcbiAgdXNlS2V5YmluZGluZyhcbiAgICAnY29uZmlybTpubycsXG4gICAgKCkgPT4ge1xuICAgICAgc2V0Vmlld1N0YXRlKCdwbHVnaW4tbGlzdCcpXG4gICAgICBzZXRTZWxlY3RlZFBsdWdpbihudWxsKVxuICAgIH0sXG4gICAge1xuICAgICAgY29udGV4dDogJ0NvbmZpcm1hdGlvbicsXG4gICAgICBpc0FjdGl2ZTogdmlld1N0YXRlID09PSAncGx1Z2luLWRldGFpbHMnLFxuICAgIH0sXG4gIClcblxuICAvLyBFc2NhcGUgaW4gcGx1Z2luLWxpc3QgdmlldyAobm90IHNlYXJjaCBtb2RlKSAtIGV4aXQgdG8gcGFyZW50IG1lbnVcbiAgdXNlS2V5YmluZGluZyhcbiAgICAnY29uZmlybTpubycsXG4gICAgKCkgPT4ge1xuICAgICAgc2V0UGFyZW50Vmlld1N0YXRlKHsgdHlwZTogJ21lbnUnIH0pXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZXh0OiAnQ29uZmlybWF0aW9uJyxcbiAgICAgIGlzQWN0aXZlOiB2aWV3U3RhdGUgPT09ICdwbHVnaW4tbGlzdCcgJiYgIWlzU2VhcmNoTW9kZSxcbiAgICB9LFxuICApXG5cbiAgLy8gSGFuZGxlIGVudGVyaW5nIHNlYXJjaCBtb2RlIChub24tZXNjYXBlIGtleXMpXG4gIHVzZUlucHV0KFxuICAgIChpbnB1dCwgX2tleSkgPT4ge1xuICAgICAgY29uc3Qga2V5SXNOb3RDdHJsT3JNZXRhID0gIV9rZXkuY3RybCAmJiAhX2tleS5tZXRhXG4gICAgICBpZiAoIWlzU2VhcmNoTW9kZSkge1xuICAgICAgICAvLyBFbnRlciBzZWFyY2ggbW9kZSB3aXRoICcvJyBvciBhbnkgcHJpbnRhYmxlIGNoYXJhY3RlclxuICAgICAgICBpZiAoaW5wdXQgPT09ICcvJyAmJiBrZXlJc05vdEN0cmxPck1ldGEpIHtcbiAgICAgICAgICBzZXRJc1NlYXJjaE1vZGUodHJ1ZSlcbiAgICAgICAgICBzZXRTZWFyY2hRdWVyeSgnJylcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBrZXlJc05vdEN0cmxPck1ldGEgJiZcbiAgICAgICAgICBpbnB1dC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgIS9eXFxzKyQvLnRlc3QoaW5wdXQpICYmXG4gICAgICAgICAgLy8gRG9uJ3QgZW50ZXIgc2VhcmNoIG1vZGUgZm9yIG5hdmlnYXRpb24ga2V5c1xuICAgICAgICAgIGlucHV0ICE9PSAnaicgJiZcbiAgICAgICAgICBpbnB1dCAhPT0gJ2snICYmXG4gICAgICAgICAgaW5wdXQgIT09ICdpJ1xuICAgICAgICApIHtcbiAgICAgICAgICBzZXRJc1NlYXJjaE1vZGUodHJ1ZSlcbiAgICAgICAgICBzZXRTZWFyY2hRdWVyeShpbnB1dClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgeyBpc0FjdGl2ZTogdmlld1N0YXRlID09PSAncGx1Z2luLWxpc3QnICYmICFsb2FkaW5nIH0sXG4gIClcblxuICAvLyBQbHVnaW4tbGlzdCBuYXZpZ2F0aW9uIChub24tc2VhcmNoIG1vZGUpXG4gIHVzZUtleWJpbmRpbmdzKFxuICAgIHtcbiAgICAgICdzZWxlY3Q6cHJldmlvdXMnOiAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgc2V0SXNTZWFyY2hNb2RlKHRydWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFnaW5hdGlvbi5oYW5kbGVTZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRJbmRleCAtIDEsIHNldFNlbGVjdGVkSW5kZXgpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnc2VsZWN0Om5leHQnOiAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4IDwgZmlsdGVyZWRQbHVnaW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBwYWdpbmF0aW9uLmhhbmRsZVNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZEluZGV4ICsgMSwgc2V0U2VsZWN0ZWRJbmRleClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICdzZWxlY3Q6YWNjZXB0JzogKCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2VsZWN0ZWRJbmRleCA9PT0gZmlsdGVyZWRQbHVnaW5zLmxlbmd0aCAmJlxuICAgICAgICAgIHNlbGVjdGVkRm9ySW5zdGFsbC5zaXplID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICB2b2lkIGluc3RhbGxTZWxlY3RlZFBsdWdpbnMoKVxuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSW5kZXggPCBmaWx0ZXJlZFBsdWdpbnMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgcGx1Z2luID0gZmlsdGVyZWRQbHVnaW5zW3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgaWYgKHBsdWdpbikge1xuICAgICAgICAgICAgaWYgKHBsdWdpbi5pc0luc3RhbGxlZCkge1xuICAgICAgICAgICAgICBzZXRQYXJlbnRWaWV3U3RhdGUoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdtYW5hZ2UtcGx1Z2lucycsXG4gICAgICAgICAgICAgICAgdGFyZ2V0UGx1Z2luOiBwbHVnaW4uZW50cnkubmFtZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRNYXJrZXRwbGFjZTogcGx1Z2luLm1hcmtldHBsYWNlTmFtZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFNlbGVjdGVkUGx1Z2luKHBsdWdpbilcbiAgICAgICAgICAgICAgc2V0Vmlld1N0YXRlKCdwbHVnaW4tZGV0YWlscycpXG4gICAgICAgICAgICAgIHNldERldGFpbHNNZW51SW5kZXgoMClcbiAgICAgICAgICAgICAgc2V0SW5zdGFsbEVycm9yKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgY29udGV4dDogJ1NlbGVjdCcsXG4gICAgICBpc0FjdGl2ZTogdmlld1N0YXRlID09PSAncGx1Z2luLWxpc3QnICYmICFpc1NlYXJjaE1vZGUsXG4gICAgfSxcbiAgKVxuXG4gIHVzZUtleWJpbmRpbmdzKFxuICAgIHtcbiAgICAgICdwbHVnaW46dG9nZ2xlJzogKCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGZpbHRlcmVkUGx1Z2lucy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBwbHVnaW4gPSBmaWx0ZXJlZFBsdWdpbnNbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICBpZiAocGx1Z2luICYmICFwbHVnaW4uaXNJbnN0YWxsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IG5ldyBTZXQoc2VsZWN0ZWRGb3JJbnN0YWxsKVxuICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGlvbi5oYXMocGx1Z2luLnBsdWdpbklkKSkge1xuICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZGVsZXRlKHBsdWdpbi5wbHVnaW5JZClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5hZGQocGx1Z2luLnBsdWdpbklkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRGb3JJbnN0YWxsKG5ld1NlbGVjdGlvbilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAncGx1Z2luOmluc3RhbGwnOiAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZEZvckluc3RhbGwuc2l6ZSA+IDApIHtcbiAgICAgICAgICB2b2lkIGluc3RhbGxTZWxlY3RlZFBsdWdpbnMoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgY29udGV4dDogJ1BsdWdpbicsXG4gICAgICBpc0FjdGl2ZTogdmlld1N0YXRlID09PSAncGx1Z2luLWxpc3QnICYmICFpc1NlYXJjaE1vZGUsXG4gICAgfSxcbiAgKVxuXG4gIC8vIFBsdWdpbi1kZXRhaWxzIG5hdmlnYXRpb25cbiAgY29uc3QgZGV0YWlsc01lbnVPcHRpb25zID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZFBsdWdpbikgcmV0dXJuIFtdXG4gICAgY29uc3QgaGFzSG9tZXBhZ2UgPSBzZWxlY3RlZFBsdWdpbi5lbnRyeS5ob21lcGFnZVxuICAgIGNvbnN0IGdpdGh1YlJlcG8gPSBleHRyYWN0R2l0SHViUmVwbyhzZWxlY3RlZFBsdWdpbilcbiAgICByZXR1cm4gYnVpbGRQbHVnaW5EZXRhaWxzTWVudU9wdGlvbnMoaGFzSG9tZXBhZ2UsIGdpdGh1YlJlcG8pXG4gIH0sIFtzZWxlY3RlZFBsdWdpbl0pXG5cbiAgdXNlS2V5YmluZGluZ3MoXG4gICAge1xuICAgICAgJ3NlbGVjdDpwcmV2aW91cyc6ICgpID0+IHtcbiAgICAgICAgaWYgKGRldGFpbHNNZW51SW5kZXggPiAwKSB7XG4gICAgICAgICAgc2V0RGV0YWlsc01lbnVJbmRleChkZXRhaWxzTWVudUluZGV4IC0gMSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICdzZWxlY3Q6bmV4dCc6ICgpID0+IHtcbiAgICAgICAgaWYgKGRldGFpbHNNZW51SW5kZXggPCBkZXRhaWxzTWVudU9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHNldERldGFpbHNNZW51SW5kZXgoZGV0YWlsc01lbnVJbmRleCArIDEpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnc2VsZWN0OmFjY2VwdCc6ICgpID0+IHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFBsdWdpbikgcmV0dXJuXG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGRldGFpbHNNZW51T3B0aW9uc1tkZXRhaWxzTWVudUluZGV4XT8uYWN0aW9uXG4gICAgICAgIGNvbnN0IGhhc0hvbWVwYWdlID0gc2VsZWN0ZWRQbHVnaW4uZW50cnkuaG9tZXBhZ2VcbiAgICAgICAgY29uc3QgZ2l0aHViUmVwbyA9IGV4dHJhY3RHaXRIdWJSZXBvKHNlbGVjdGVkUGx1Z2luKVxuICAgICAgICBpZiAoYWN0aW9uID09PSAnaW5zdGFsbC11c2VyJykge1xuICAgICAgICAgIHZvaWQgaGFuZGxlU2luZ2xlUGx1Z2luSW5zdGFsbChzZWxlY3RlZFBsdWdpbiwgJ3VzZXInKVxuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2luc3RhbGwtcHJvamVjdCcpIHtcbiAgICAgICAgICB2b2lkIGhhbmRsZVNpbmdsZVBsdWdpbkluc3RhbGwoc2VsZWN0ZWRQbHVnaW4sICdwcm9qZWN0JylcbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdpbnN0YWxsLWxvY2FsJykge1xuICAgICAgICAgIHZvaWQgaGFuZGxlU2luZ2xlUGx1Z2luSW5zdGFsbChzZWxlY3RlZFBsdWdpbiwgJ2xvY2FsJylcbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdob21lcGFnZScgJiYgaGFzSG9tZXBhZ2UpIHtcbiAgICAgICAgICB2b2lkIG9wZW5Ccm93c2VyKGhhc0hvbWVwYWdlKVxuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2dpdGh1YicgJiYgZ2l0aHViUmVwbykge1xuICAgICAgICAgIHZvaWQgb3BlbkJyb3dzZXIoYGh0dHBzOi8vZ2l0aHViLmNvbS8ke2dpdGh1YlJlcG99YClcbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdiYWNrJykge1xuICAgICAgICAgIHNldFZpZXdTdGF0ZSgncGx1Z2luLWxpc3QnKVxuICAgICAgICAgIHNldFNlbGVjdGVkUGx1Z2luKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZXh0OiAnU2VsZWN0JyxcbiAgICAgIGlzQWN0aXZlOiB2aWV3U3RhdGUgPT09ICdwbHVnaW4tZGV0YWlscycgJiYgISFzZWxlY3RlZFBsdWdpbixcbiAgICB9LFxuICApXG5cbiAgaWYgKHR5cGVvZiB2aWV3U3RhdGUgPT09ICdvYmplY3QnICYmIHZpZXdTdGF0ZS50eXBlID09PSAncGx1Z2luLW9wdGlvbnMnKSB7XG4gICAgY29uc3QgeyBwbHVnaW4sIHBsdWdpbklkIH0gPSB2aWV3U3RhdGVcbiAgICBmdW5jdGlvbiBmaW5pc2gobXNnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgIHNldFJlc3VsdChtc2cpXG4gICAgICBpZiAob25JbnN0YWxsQ29tcGxldGUpIHtcbiAgICAgICAgdm9pZCBvbkluc3RhbGxDb21wbGV0ZSgpXG4gICAgICB9XG4gICAgICBzZXRQYXJlbnRWaWV3U3RhdGUoeyB0eXBlOiAnbWVudScgfSlcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxQbHVnaW5PcHRpb25zRmxvd1xuICAgICAgICBwbHVnaW49e3BsdWdpbn1cbiAgICAgICAgcGx1Z2luSWQ9e3BsdWdpbklkfVxuICAgICAgICBvbkRvbmU9eyhvdXRjb21lLCBkZXRhaWwpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKG91dGNvbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NvbmZpZ3VyZWQnOlxuICAgICAgICAgICAgICBmaW5pc2goXG4gICAgICAgICAgICAgICAgYOKckyBJbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQgJHtwbHVnaW4ubmFtZX0uIFJ1biAvcmVsb2FkLXBsdWdpbnMgdG8gYXBwbHkuYCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAnc2tpcHBlZCc6XG4gICAgICAgICAgICAgIGZpbmlzaChcbiAgICAgICAgICAgICAgICBg4pyTIEluc3RhbGxlZCAke3BsdWdpbi5uYW1lfS4gUnVuIC9yZWxvYWQtcGx1Z2lucyB0byBhcHBseS5gLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgIGZpbmlzaChgSW5zdGFsbGVkIGJ1dCBmYWlsZWQgdG8gc2F2ZSBjb25maWc6ICR7ZGV0YWlsfWApXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICAvLyBMb2FkaW5nIHN0YXRlXG4gIGlmIChsb2FkaW5nKSB7XG4gICAgcmV0dXJuIDxUZXh0PkxvYWRpbmfigKY8L1RleHQ+XG4gIH1cblxuICAvLyBFcnJvciBzdGF0ZVxuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gPFRleHQgY29sb3I9XCJlcnJvclwiPntlcnJvcn08L1RleHQ+XG4gIH1cblxuICAvLyBQbHVnaW4gZGV0YWlscyB2aWV3XG4gIGlmICh2aWV3U3RhdGUgPT09ICdwbHVnaW4tZGV0YWlscycgJiYgc2VsZWN0ZWRQbHVnaW4pIHtcbiAgICBjb25zdCBoYXNIb21lcGFnZSA9IHNlbGVjdGVkUGx1Z2luLmVudHJ5LmhvbWVwYWdlXG4gICAgY29uc3QgZ2l0aHViUmVwbyA9IGV4dHJhY3RHaXRIdWJSZXBvKHNlbGVjdGVkUGx1Z2luKVxuXG4gICAgY29uc3QgbWVudU9wdGlvbnMgPSBidWlsZFBsdWdpbkRldGFpbHNNZW51T3B0aW9ucyhoYXNIb21lcGFnZSwgZ2l0aHViUmVwbylcblxuICAgIHJldHVybiAoXG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgPEJveCBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICAgIDxUZXh0IGJvbGQ+UGx1Z2luIGRldGFpbHM8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuXG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgYm9sZD57c2VsZWN0ZWRQbHVnaW4uZW50cnkubmFtZX08L1RleHQ+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+ZnJvbSB7c2VsZWN0ZWRQbHVnaW4ubWFya2V0cGxhY2VOYW1lfTwvVGV4dD5cbiAgICAgICAgICB7c2VsZWN0ZWRQbHVnaW4uZW50cnkudmVyc2lvbiAmJiAoXG4gICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5WZXJzaW9uOiB7c2VsZWN0ZWRQbHVnaW4uZW50cnkudmVyc2lvbn08L1RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2VsZWN0ZWRQbHVnaW4uZW50cnkuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgICAgICA8VGV4dD57c2VsZWN0ZWRQbHVnaW4uZW50cnkuZGVzY3JpcHRpb259PC9UZXh0PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2VsZWN0ZWRQbHVnaW4uZW50cnkuYXV0aG9yICYmIChcbiAgICAgICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICAgICAgQnk6eycgJ31cbiAgICAgICAgICAgICAgICB7dHlwZW9mIHNlbGVjdGVkUGx1Z2luLmVudHJ5LmF1dGhvciA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gc2VsZWN0ZWRQbHVnaW4uZW50cnkuYXV0aG9yXG4gICAgICAgICAgICAgICAgICA6IHNlbGVjdGVkUGx1Z2luLmVudHJ5LmF1dGhvci5uYW1lfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cblxuICAgICAgICA8UGx1Z2luVHJ1c3RXYXJuaW5nIC8+XG5cbiAgICAgICAge2luc3RhbGxFcnJvciAmJiAoXG4gICAgICAgICAgPEJveCBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJlcnJvclwiPkVycm9yOiB7aW5zdGFsbEVycm9yfTwvVGV4dD5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cblxuICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICB7bWVudU9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8Qm94IGtleT17b3B0aW9uLmFjdGlvbn0+XG4gICAgICAgICAgICAgIHtkZXRhaWxzTWVudUluZGV4ID09PSBpbmRleCAmJiA8VGV4dD57Jz4gJ308L1RleHQ+fVxuICAgICAgICAgICAgICB7ZGV0YWlsc01lbnVJbmRleCAhPT0gaW5kZXggJiYgPFRleHQ+eycgICd9PC9UZXh0Pn1cbiAgICAgICAgICAgICAgPFRleHQgYm9sZD17ZGV0YWlsc01lbnVJbmRleCA9PT0gaW5kZXh9PlxuICAgICAgICAgICAgICAgIHtpc0luc3RhbGxpbmcgJiYgb3B0aW9uLmFjdGlvbi5zdGFydHNXaXRoKCdpbnN0YWxsLScpXG4gICAgICAgICAgICAgICAgICA/ICdJbnN0YWxsaW5n4oCmJ1xuICAgICAgICAgICAgICAgICAgOiBvcHRpb24ubGFiZWx9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0JveD5cblxuICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICA8QnlsaW5lPlxuICAgICAgICAgICAgICA8Q29uZmlndXJhYmxlU2hvcnRjdXRIaW50XG4gICAgICAgICAgICAgICAgYWN0aW9uPVwic2VsZWN0OmFjY2VwdFwiXG4gICAgICAgICAgICAgICAgY29udGV4dD1cIlNlbGVjdFwiXG4gICAgICAgICAgICAgICAgZmFsbGJhY2s9XCJFbnRlclwiXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8Q29uZmlndXJhYmxlU2hvcnRjdXRIaW50XG4gICAgICAgICAgICAgICAgYWN0aW9uPVwiY29uZmlybTpub1wiXG4gICAgICAgICAgICAgICAgY29udGV4dD1cIkNvbmZpcm1hdGlvblwiXG4gICAgICAgICAgICAgICAgZmFsbGJhY2s9XCJFc2NcIlxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiYmFja1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0J5bGluZT5cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Cb3g+XG4gICAgKVxuICB9XG5cbiAgLy8gRW1wdHkgc3RhdGVcbiAgaWYgKGF2YWlsYWJsZVBsdWdpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgPFRleHQgYm9sZD5EaXNjb3ZlciBwbHVnaW5zPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPEVtcHR5U3RhdGVNZXNzYWdlIHJlYXNvbj17ZW1wdHlSZWFzb259IC8+XG4gICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvciBpdGFsaWM+XG4gICAgICAgICAgICBFc2MgdG8gZ28gYmFja1xuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0JveD5cbiAgICApXG4gIH1cblxuICAvLyBHZXQgdmlzaWJsZSBwbHVnaW5zIGZyb20gcGFnaW5hdGlvblxuICBjb25zdCB2aXNpYmxlUGx1Z2lucyA9IHBhZ2luYXRpb24uZ2V0VmlzaWJsZUl0ZW1zKGZpbHRlcmVkUGx1Z2lucylcblxuICByZXR1cm4gKFxuICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgPEJveD5cbiAgICAgICAgPFRleHQgYm9sZD5EaXNjb3ZlciBwbHVnaW5zPC9UZXh0PlxuICAgICAgICB7cGFnaW5hdGlvbi5uZWVkc1BhZ2luYXRpb24gJiYgKFxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgICh7cGFnaW5hdGlvbi5zY3JvbGxQb3NpdGlvbi5jdXJyZW50fS9cbiAgICAgICAgICAgIHtwYWdpbmF0aW9uLnNjcm9sbFBvc2l0aW9uLnRvdGFsfSlcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cblxuICAgICAgey8qIFNlYXJjaCBib3ggKi99XG4gICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgIDxTZWFyY2hCb3hcbiAgICAgICAgICBxdWVyeT17c2VhcmNoUXVlcnl9XG4gICAgICAgICAgaXNGb2N1c2VkPXtpc1NlYXJjaE1vZGV9XG4gICAgICAgICAgaXNUZXJtaW5hbEZvY3VzZWQ9e2lzVGVybWluYWxGb2N1c2VkfVxuICAgICAgICAgIHdpZHRoPXt0ZXJtaW5hbFdpZHRoIC0gNH1cbiAgICAgICAgICBjdXJzb3JPZmZzZXQ9e3NlYXJjaEN1cnNvck9mZnNldH1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuXG4gICAgICB7LyogV2FybmluZyBiYW5uZXIgKi99XG4gICAgICB7d2FybmluZyAmJiAoXG4gICAgICAgIDxCb3ggbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgICA8VGV4dCBjb2xvcj1cIndhcm5pbmdcIj5cbiAgICAgICAgICAgIHtmaWd1cmVzLndhcm5pbmd9IHt3YXJuaW5nfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7LyogTm8gc2VhcmNoIHJlc3VsdHMgKi99XG4gICAgICB7ZmlsdGVyZWRQbHVnaW5zLmxlbmd0aCA9PT0gMCAmJiBzZWFyY2hRdWVyeSAmJiAoXG4gICAgICAgIDxCb3ggbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5ObyBwbHVnaW5zIG1hdGNoICZxdW90O3tzZWFyY2hRdWVyeX0mcXVvdDs8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAgey8qIFNjcm9sbCB1cCBpbmRpY2F0b3IgKi99XG4gICAgICB7cGFnaW5hdGlvbi5zY3JvbGxQb3NpdGlvbi5jYW5TY3JvbGxVcCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+IHtmaWd1cmVzLmFycm93VXB9IG1vcmUgYWJvdmU8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAgey8qIFBsdWdpbiBsaXN0IC0gdXNlIHN0YXJ0SW5kZXggaW4ga2V5IHRvIGZvcmNlIHJlLXJlbmRlciBvbiBzY3JvbGwgKi99XG4gICAgICB7dmlzaWJsZVBsdWdpbnMubWFwKChwbHVnaW4sIHZpc2libGVJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBhY3R1YWxJbmRleCA9IHBhZ2luYXRpb24udG9BY3R1YWxJbmRleCh2aXNpYmxlSW5kZXgpXG4gICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZEluZGV4ID09PSBhY3R1YWxJbmRleFxuICAgICAgICBjb25zdCBpc1NlbGVjdGVkRm9ySW5zdGFsbCA9IHNlbGVjdGVkRm9ySW5zdGFsbC5oYXMocGx1Z2luLnBsdWdpbklkKVxuICAgICAgICBjb25zdCBpc0luc3RhbGxpbmdUaGlzID0gaW5zdGFsbGluZ1BsdWdpbnMuaGFzKHBsdWdpbi5wbHVnaW5JZClcbiAgICAgICAgY29uc3QgaXNMYXN0ID0gdmlzaWJsZUluZGV4ID09PSB2aXNpYmxlUGx1Z2lucy5sZW5ndGggLSAxXG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8Qm94XG4gICAgICAgICAgICBrZXk9e2Ake3BhZ2luYXRpb24uc3RhcnRJbmRleH0tJHtwbHVnaW4ucGx1Z2luSWR9YH1cbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgbWFyZ2luQm90dG9tPXtpc0xhc3QgJiYgIWVycm9yID8gMCA6IDF9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEJveD5cbiAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICBjb2xvcj17aXNTZWxlY3RlZCAmJiAhaXNTZWFyY2hNb2RlID8gJ3N1Z2dlc3Rpb24nIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2lzU2VsZWN0ZWQgJiYgIWlzU2VhcmNoTW9kZSA/IGZpZ3VyZXMucG9pbnRlciA6ICcgJ317JyAnfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICAgIHtpc0luc3RhbGxpbmdUaGlzXG4gICAgICAgICAgICAgICAgICA/IGZpZ3VyZXMuZWxsaXBzaXNcbiAgICAgICAgICAgICAgICAgIDogaXNTZWxlY3RlZEZvckluc3RhbGxcbiAgICAgICAgICAgICAgICAgICAgPyBmaWd1cmVzLnJhZGlvT25cbiAgICAgICAgICAgICAgICAgICAgOiBmaWd1cmVzLnJhZGlvT2ZmfXsnICd9XG4gICAgICAgICAgICAgICAge3BsdWdpbi5lbnRyeS5uYW1lfVxuICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPiDCtyB7cGx1Z2luLm1hcmtldHBsYWNlTmFtZX08L1RleHQ+XG4gICAgICAgICAgICAgICAge3BsdWdpbi5lbnRyeS50YWdzPy5pbmNsdWRlcygnY29tbXVuaXR5LW1hbmFnZWQnKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj4gW0NvbW11bml0eSBNYW5hZ2VkXTwvVGV4dD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtpbnN0YWxsQ291bnRzICYmXG4gICAgICAgICAgICAgICAgICBwbHVnaW4ubWFya2V0cGxhY2VOYW1lID09PSBPRkZJQ0lBTF9NQVJLRVRQTEFDRV9OQU1FICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICAgICAgICAgICAgeycgwrcgJ31cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0SW5zdGFsbENvdW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbENvdW50cy5nZXQocGx1Z2luLnBsdWdpbklkKSA/PyAwLFxuICAgICAgICAgICAgICAgICAgICAgICl9eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsc1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIHtwbHVnaW4uZW50cnkuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICA8Qm94IG1hcmdpbkxlZnQ9ezR9PlxuICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgICAgICAge3RydW5jYXRlVG9XaWR0aChwbHVnaW4uZW50cnkuZGVzY3JpcHRpb24sIDYwKX1cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKVxuICAgICAgfSl9XG5cbiAgICAgIHsvKiBTY3JvbGwgZG93biBpbmRpY2F0b3IgKi99XG4gICAgICB7cGFnaW5hdGlvbi5zY3JvbGxQb3NpdGlvbi5jYW5TY3JvbGxEb3duICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj4ge2ZpZ3VyZXMuYXJyb3dEb3dufSBtb3JlIGJlbG93PC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBFcnJvciBtZXNzYWdlcyAqL31cbiAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICA8VGV4dCBjb2xvcj1cImVycm9yXCI+XG4gICAgICAgICAgICB7ZmlndXJlcy5jcm9zc30ge2Vycm9yfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICA8RGlzY292ZXJQbHVnaW5zS2V5SGludFxuICAgICAgICBoYXNTZWxlY3Rpb249e3NlbGVjdGVkRm9ySW5zdGFsbC5zaXplID4gMH1cbiAgICAgICAgY2FuVG9nZ2xlPXtcbiAgICAgICAgICBzZWxlY3RlZEluZGV4IDwgZmlsdGVyZWRQbHVnaW5zLmxlbmd0aCAmJlxuICAgICAgICAgICFmaWx0ZXJlZFBsdWdpbnNbc2VsZWN0ZWRJbmRleF0/LmlzSW5zdGFsbGVkXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC9Cb3g+XG4gIClcbn1cblxuZnVuY3Rpb24gRGlzY292ZXJQbHVnaW5zS2V5SGludCh7XG4gIGhhc1NlbGVjdGlvbixcbiAgY2FuVG9nZ2xlLFxufToge1xuICBoYXNTZWxlY3Rpb246IGJvb2xlYW5cbiAgY2FuVG9nZ2xlOiBib29sZWFuXG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgcmV0dXJuIChcbiAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICA8VGV4dCBkaW1Db2xvciBpdGFsaWM+XG4gICAgICAgIDxCeWxpbmU+XG4gICAgICAgICAge2hhc1NlbGVjdGlvbiAmJiAoXG4gICAgICAgICAgICA8Q29uZmlndXJhYmxlU2hvcnRjdXRIaW50XG4gICAgICAgICAgICAgIGFjdGlvbj1cInBsdWdpbjppbnN0YWxsXCJcbiAgICAgICAgICAgICAgY29udGV4dD1cIlBsdWdpblwiXG4gICAgICAgICAgICAgIGZhbGxiYWNrPVwiaVwiXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiaW5zdGFsbFwiXG4gICAgICAgICAgICAgIGJvbGRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8VGV4dD50eXBlIHRvIHNlYXJjaDwvVGV4dD5cbiAgICAgICAgICB7Y2FuVG9nZ2xlICYmIChcbiAgICAgICAgICAgIDxDb25maWd1cmFibGVTaG9ydGN1dEhpbnRcbiAgICAgICAgICAgICAgYWN0aW9uPVwicGx1Z2luOnRvZ2dsZVwiXG4gICAgICAgICAgICAgIGNvbnRleHQ9XCJQbHVnaW5cIlxuICAgICAgICAgICAgICBmYWxsYmFjaz1cIlNwYWNlXCJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJ0b2dnbGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxDb25maWd1cmFibGVTaG9ydGN1dEhpbnRcbiAgICAgICAgICAgIGFjdGlvbj1cInNlbGVjdDphY2NlcHRcIlxuICAgICAgICAgICAgY29udGV4dD1cIlNlbGVjdFwiXG4gICAgICAgICAgICBmYWxsYmFjaz1cIkVudGVyXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiZGV0YWlsc1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8Q29uZmlndXJhYmxlU2hvcnRjdXRIaW50XG4gICAgICAgICAgICBhY3Rpb249XCJjb25maXJtOm5vXCJcbiAgICAgICAgICAgIGNvbnRleHQ9XCJDb25maXJtYXRpb25cIlxuICAgICAgICAgICAgZmFsbGJhY2s9XCJFc2NcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJiYWNrXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L0J5bGluZT5cbiAgICAgIDwvVGV4dD5cbiAgICA8L0JveD5cbiAgKVxufVxuXG4vKipcbiAqIENvbnRleHQtYXdhcmUgZW1wdHkgc3RhdGUgbWVzc2FnZSBmb3IgdGhlIERpc2NvdmVyIHNjcmVlblxuICovXG5mdW5jdGlvbiBFbXB0eVN0YXRlTWVzc2FnZSh7XG4gIHJlYXNvbixcbn06IHtcbiAgcmVhc29uOiBFbXB0eU1hcmtldHBsYWNlUmVhc29uIHwgbnVsbFxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIHN3aXRjaCAocmVhc29uKSB7XG4gICAgY2FzZSAnZ2l0LW5vdC1pbnN0YWxsZWQnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5HaXQgaXMgcmVxdWlyZWQgdG8gaW5zdGFsbCBtYXJrZXRwbGFjZXMuPC9UZXh0PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlBsZWFzZSBpbnN0YWxsIGdpdCBhbmQgcmVzdGFydCBDbGF1ZGUgQ29kZS48L1RleHQ+XG4gICAgICAgIDwvPlxuICAgICAgKVxuICAgIGNhc2UgJ2FsbC1ibG9ja2VkLWJ5LXBvbGljeSc6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgWW91ciBvcmdhbml6YXRpb24gcG9saWN5IGRvZXMgbm90IGFsbG93IGFueSBleHRlcm5hbCBtYXJrZXRwbGFjZXMuXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPkNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLjwvVGV4dD5cbiAgICAgICAgPC8+XG4gICAgICApXG4gICAgY2FzZSAncG9saWN5LXJlc3RyaWN0cy1zb3VyY2VzJzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICBZb3VyIG9yZ2FuaXphdGlvbiByZXN0cmljdHMgd2hpY2ggbWFya2V0cGxhY2VzIGNhbiBiZSBhZGRlZC5cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICBTd2l0Y2ggdG8gdGhlIE1hcmtldHBsYWNlcyB0YWIgdG8gdmlldyBhbGxvd2VkIHNvdXJjZXMuXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8Lz5cbiAgICAgIClcbiAgICBjYXNlICdhbGwtbWFya2V0cGxhY2VzLWZhaWxlZCc6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPkZhaWxlZCB0byBsb2FkIG1hcmtldHBsYWNlIGRhdGEuPC9UZXh0PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPkNoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aW9uLjwvVGV4dD5cbiAgICAgICAgPC8+XG4gICAgICApXG4gICAgY2FzZSAnYWxsLXBsdWdpbnMtaW5zdGFsbGVkJzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+QWxsIGF2YWlsYWJsZSBwbHVnaW5zIGFyZSBhbHJlYWR5IGluc3RhbGxlZC48L1RleHQ+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICBDaGVjayBmb3IgbmV3IHBsdWdpbnMgbGF0ZXIgb3IgYWRkIG1vcmUgbWFya2V0cGxhY2VzLlxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC8+XG4gICAgICApXG4gICAgY2FzZSAnbm8tbWFya2V0cGxhY2VzLWNvbmZpZ3VyZWQnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPk5vIHBsdWdpbnMgYXZhaWxhYmxlLjwvVGV4dD5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgIEFkZCBhIG1hcmtldHBsYWNlIGZpcnN0IHVzaW5nIHRoZSBNYXJrZXRwbGFjZXMgdGFiLlxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC8+XG4gICAgICApXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLE9BQU8sTUFBTSxTQUFTO0FBQzdCLE9BQU8sS0FB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
@@ -835,4 +835,3 @@ function ManageMarketplacesKeyHints(t0) {
835
835
  }
836
836
  return t7;
837
837
  }
838
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWd1cmVzIiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMiLCJsb2dFdmVudCIsIkNvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCIsIkJ5bGluZSIsIktleWJvYXJkU2hvcnRjdXRIaW50IiwiQm94IiwiVGV4dCIsInVzZUlucHV0IiwidXNlS2V5YmluZGluZyIsInVzZUtleWJpbmRpbmdzIiwiTG9hZGVkUGx1Z2luIiwiY291bnQiLCJzaG91bGRTa2lwUGx1Z2luQXV0b3VwZGF0ZSIsImVycm9yTWVzc2FnZSIsImNsZWFyQWxsQ2FjaGVzIiwiY3JlYXRlUGx1Z2luSWQiLCJmb3JtYXRNYXJrZXRwbGFjZUxvYWRpbmdFcnJvcnMiLCJnZXRNYXJrZXRwbGFjZVNvdXJjZURpc3BsYXkiLCJsb2FkTWFya2V0cGxhY2VzV2l0aEdyYWNlZnVsRGVncmFkYXRpb24iLCJsb2FkS25vd25NYXJrZXRwbGFjZXNDb25maWciLCJyZWZyZXNoTWFya2V0cGxhY2UiLCJyZW1vdmVNYXJrZXRwbGFjZVNvdXJjZSIsInNldE1hcmtldHBsYWNlQXV0b1VwZGF0ZSIsInVwZGF0ZVBsdWdpbnNGb3JNYXJrZXRwbGFjZXMiLCJsb2FkQWxsUGx1Z2lucyIsImlzTWFya2V0cGxhY2VBdXRvVXBkYXRlIiwiZ2V0U2V0dGluZ3NGb3JTb3VyY2UiLCJ1cGRhdGVTZXR0aW5nc0ZvclNvdXJjZSIsInBsdXJhbCIsIlZpZXdTdGF0ZSIsIlByb3BzIiwic2V0Vmlld1N0YXRlIiwic3RhdGUiLCJlcnJvciIsInNldEVycm9yIiwic2V0UmVzdWx0IiwicmVzdWx0IiwiZXhpdFN0YXRlIiwicGVuZGluZyIsImtleU5hbWUiLCJvbk1hbmFnZUNvbXBsZXRlIiwiUHJvbWlzZSIsInRhcmdldE1hcmtldHBsYWNlIiwiYWN0aW9uIiwiTWFya2V0cGxhY2VTdGF0ZSIsIm5hbWUiLCJzb3VyY2UiLCJsYXN0VXBkYXRlZCIsInBsdWdpbkNvdW50IiwiaW5zdGFsbGVkUGx1Z2lucyIsInBlbmRpbmdVcGRhdGUiLCJwZW5kaW5nUmVtb3ZlIiwiYXV0b1VwZGF0ZSIsIkludGVybmFsVmlld1N0YXRlIiwiTWFuYWdlTWFya2V0cGxhY2VzIiwiUmVhY3ROb2RlIiwibWFya2V0cGxhY2VTdGF0ZXMiLCJzZXRNYXJrZXRwbGFjZVN0YXRlcyIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwic2VsZWN0ZWRJbmRleCIsInNldFNlbGVjdGVkSW5kZXgiLCJpc1Byb2Nlc3NpbmciLCJzZXRJc1Byb2Nlc3NpbmciLCJwcm9jZXNzRXJyb3IiLCJzZXRQcm9jZXNzRXJyb3IiLCJzdWNjZXNzTWVzc2FnZSIsInNldFN1Y2Nlc3NNZXNzYWdlIiwicHJvZ3Jlc3NNZXNzYWdlIiwic2V0UHJvZ3Jlc3NNZXNzYWdlIiwiaW50ZXJuYWxWaWV3Iiwic2V0SW50ZXJuYWxWaWV3Iiwic2VsZWN0ZWRNYXJrZXRwbGFjZSIsInNldFNlbGVjdGVkTWFya2V0cGxhY2UiLCJkZXRhaWxzTWVudUluZGV4Iiwic2V0RGV0YWlsc01lbnVJbmRleCIsImhhc0F0dGVtcHRlZEF1dG9BY3Rpb24iLCJsb2FkTWFya2V0cGxhY2VzIiwiY29uZmlnIiwiZW5hYmxlZCIsImRpc2FibGVkIiwiYWxsUGx1Z2lucyIsIm1hcmtldHBsYWNlcyIsImZhaWx1cmVzIiwic3RhdGVzIiwiZW50cnkiLCJkYXRhIiwibWFya2V0cGxhY2UiLCJpbnN0YWxsZWRGcm9tTWFya2V0cGxhY2UiLCJmaWx0ZXIiLCJwbHVnaW4iLCJlbmRzV2l0aCIsInB1c2giLCJwbHVnaW5zIiwibGVuZ3RoIiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsInN1Y2Nlc3NDb3VudCIsIm0iLCJlcnJvclJlc3VsdCIsInR5cGUiLCJtZXNzYWdlIiwiRXJyb3IiLCJjdXJyZW50IiwidGFyZ2V0SW5kZXgiLCJmaW5kSW5kZXgiLCJzIiwidGFyZ2V0U3RhdGUiLCJuZXdTdGF0ZXMiLCJzZXRUaW1lb3V0IiwiYXBwbHlDaGFuZ2VzIiwiZXJyIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJzb21lIiwiZ2V0UGVuZGluZ0NvdW50cyIsInVwZGF0ZUNvdW50IiwicmVtb3ZlQ291bnQiLCJzdGF0ZXNUb1Byb2Nlc3MiLCJ3YXNJbkRldGFpbHNWaWV3Iiwic2V0dGluZ3MiLCJ1cGRhdGVkQ291bnQiLCJyZW1vdmVkQ291bnQiLCJyZWZyZXNoZWRNYXJrZXRwbGFjZXMiLCJTZXQiLCJuZXdFbmFibGVkUGx1Z2lucyIsImVuYWJsZWRQbHVnaW5zIiwicGx1Z2luSWQiLCJtYXJrZXRwbGFjZV9uYW1lIiwicGx1Z2luc191bmluc3RhbGxlZCIsImFkZCIsInRvTG93ZXJDYXNlIiwidXBkYXRlZFBsdWdpbkNvdW50Iiwic2l6ZSIsInVwZGF0ZWRQbHVnaW5JZHMiLCJ1cGRhdGVkTWFya2V0cGxhY2UiLCJmaW5kIiwiYWN0aW9ucyIsInBsdWdpblBhcnQiLCJzdWNjZXNzTXNnIiwidGljayIsImpvaW4iLCJjb25zdCIsImVycm9yTXNnIiwiY29uZmlybVJlbW92ZSIsIm1hcCIsImJ1aWxkRGV0YWlsc01lbnVPcHRpb25zIiwiQXJyYXkiLCJsYWJlbCIsInNlY29uZGFyeUxhYmVsIiwidmFsdWUiLCJvcHRpb25zIiwiRGF0ZSIsInRvTG9jYWxlRGF0ZVN0cmluZyIsInVuZGVmaW5lZCIsImhhbmRsZVRvZ2dsZUF1dG9VcGRhdGUiLCJuZXdBdXRvVXBkYXRlIiwicHJldiIsImNvbnRleHQiLCJpc0FjdGl2ZSIsInNlbGVjdDpwcmV2aW91cyIsIk1hdGgiLCJtYXgiLCJzZWxlY3Q6bmV4dCIsInRvdGFsSXRlbXMiLCJtaW4iLCJzZWxlY3Q6YWNjZXB0IiwibWFya2V0cGxhY2VJbmRleCIsImlucHV0IiwiaWR4IiwibWVudU9wdGlvbnMiLCJzZWxlY3RlZE9wdGlvbiIsInBvaW50ZXIiLCJpc1VwZGF0aW5nIiwiYnVsbGV0IiwibWFuaWZlc3QiLCJkZXNjcmlwdGlvbiIsIm9wdGlvbiIsImlzU2VsZWN0ZWQiLCJpbmRpY2F0b3JzIiwiY3Jvc3MiLCJNYW5hZ2VNYXJrZXRwbGFjZXNLZXlIaW50c1Byb3BzIiwiaGFzUGVuZGluZ0FjdGlvbnMiLCJNYW5hZ2VNYXJrZXRwbGFjZXNLZXlIaW50cyIsInQwIiwiJCIsIl9jIiwidDEiLCJ0MiIsInQzIiwidDQiLCJ0NSIsInQ2IiwidDciXSwic291cmNlcyI6WyJNYW5hZ2VNYXJrZXRwbGFjZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaWd1cmVzIGZyb20gJ2ZpZ3VyZXMnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgdHlwZSBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICBsb2dFdmVudCxcbn0gZnJvbSAnc3JjL3NlcnZpY2VzL2FuYWx5dGljcy9pbmRleC5qcydcbmltcG9ydCB7IENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvQ29uZmlndXJhYmxlU2hvcnRjdXRIaW50LmpzJ1xuaW1wb3J0IHsgQnlsaW5lIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0J5bGluZS5qcydcbmltcG9ydCB7IEtleWJvYXJkU2hvcnRjdXRIaW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0tleWJvYXJkU2hvcnRjdXRIaW50LmpzJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGN1c3RvbS1ydWxlcy9wcmVmZXItdXNlLWtleWJpbmRpbmdzIC0tIHVzZUlucHV0IG5lZWRlZCBmb3IgbWFya2V0cGxhY2Utc3BlY2lmaWMgdS9yIHNob3J0Y3V0cyBhbmQgeS9uIGNvbmZpcm1hdGlvbiBub3QgaW4ga2V5YmluZGluZyBzY2hlbWFcbmltcG9ydCB7IEJveCwgVGV4dCwgdXNlSW5wdXQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQge1xuICB1c2VLZXliaW5kaW5nLFxuICB1c2VLZXliaW5kaW5ncyxcbn0gZnJvbSAnLi4vLi4va2V5YmluZGluZ3MvdXNlS2V5YmluZGluZy5qcydcbmltcG9ydCB0eXBlIHsgTG9hZGVkUGx1Z2luIH0gZnJvbSAnLi4vLi4vdHlwZXMvcGx1Z2luLmpzJ1xuaW1wb3J0IHsgY291bnQgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheS5qcydcbmltcG9ydCB7IHNob3VsZFNraXBQbHVnaW5BdXRvdXBkYXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnLmpzJ1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZXJyb3JzLmpzJ1xuaW1wb3J0IHsgY2xlYXJBbGxDYWNoZXMgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zL2NhY2hlVXRpbHMuanMnXG5pbXBvcnQge1xuICBjcmVhdGVQbHVnaW5JZCxcbiAgZm9ybWF0TWFya2V0cGxhY2VMb2FkaW5nRXJyb3JzLFxuICBnZXRNYXJrZXRwbGFjZVNvdXJjZURpc3BsYXksXG4gIGxvYWRNYXJrZXRwbGFjZXNXaXRoR3JhY2VmdWxEZWdyYWRhdGlvbixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9tYXJrZXRwbGFjZUhlbHBlcnMuanMnXG5pbXBvcnQge1xuICBsb2FkS25vd25NYXJrZXRwbGFjZXNDb25maWcsXG4gIHJlZnJlc2hNYXJrZXRwbGFjZSxcbiAgcmVtb3ZlTWFya2V0cGxhY2VTb3VyY2UsXG4gIHNldE1hcmtldHBsYWNlQXV0b1VwZGF0ZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9tYXJrZXRwbGFjZU1hbmFnZXIuanMnXG5pbXBvcnQgeyB1cGRhdGVQbHVnaW5zRm9yTWFya2V0cGxhY2VzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9wbHVnaW5BdXRvdXBkYXRlLmpzJ1xuaW1wb3J0IHsgbG9hZEFsbFBsdWdpbnMgfSBmcm9tICcuLi8uLi91dGlscy9wbHVnaW5zL3BsdWdpbkxvYWRlci5qcydcbmltcG9ydCB7IGlzTWFya2V0cGxhY2VBdXRvVXBkYXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGx1Z2lucy9zY2hlbWFzLmpzJ1xuaW1wb3J0IHtcbiAgZ2V0U2V0dGluZ3NGb3JTb3VyY2UsXG4gIHVwZGF0ZVNldHRpbmdzRm9yU291cmNlLFxufSBmcm9tICcuLi8uLi91dGlscy9zZXR0aW5ncy9zZXR0aW5ncy5qcydcbmltcG9ydCB7IHBsdXJhbCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZ1V0aWxzLmpzJ1xuaW1wb3J0IHR5cGUgeyBWaWV3U3RhdGUgfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICBzZXRWaWV3U3RhdGU6IChzdGF0ZTogVmlld1N0YXRlKSA9PiB2b2lkXG4gIGVycm9yPzogc3RyaW5nIHwgbnVsbFxuICBzZXRFcnJvcj86IChlcnJvcjogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZFxuICBzZXRSZXN1bHQ6IChyZXN1bHQ6IHN0cmluZyB8IG51bGwpID0+IHZvaWRcbiAgZXhpdFN0YXRlOiB7XG4gICAgcGVuZGluZzogYm9vbGVhblxuICAgIGtleU5hbWU6ICdDdHJsLUMnIHwgJ0N0cmwtRCcgfCBudWxsXG4gIH1cbiAgb25NYW5hZ2VDb21wbGV0ZT86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+XG4gIHRhcmdldE1hcmtldHBsYWNlPzogc3RyaW5nXG4gIGFjdGlvbj86ICd1cGRhdGUnIHwgJ3JlbW92ZSdcbn1cblxudHlwZSBNYXJrZXRwbGFjZVN0YXRlID0ge1xuICBuYW1lOiBzdHJpbmdcbiAgc291cmNlOiBzdHJpbmdcbiAgbGFzdFVwZGF0ZWQ/OiBzdHJpbmdcbiAgcGx1Z2luQ291bnQ/OiBudW1iZXJcbiAgaW5zdGFsbGVkUGx1Z2lucz86IExvYWRlZFBsdWdpbltdXG4gIHBlbmRpbmdVcGRhdGU/OiBib29sZWFuXG4gIHBlbmRpbmdSZW1vdmU/OiBib29sZWFuXG4gIGF1dG9VcGRhdGU/OiBib29sZWFuXG59XG5cbnR5cGUgSW50ZXJuYWxWaWV3U3RhdGUgPSAnbGlzdCcgfCAnZGV0YWlscycgfCAnY29uZmlybS1yZW1vdmUnXG5cbmV4cG9ydCBmdW5jdGlvbiBNYW5hZ2VNYXJrZXRwbGFjZXMoe1xuICBzZXRWaWV3U3RhdGUsXG4gIGVycm9yLFxuICBzZXRFcnJvcixcbiAgc2V0UmVzdWx0LFxuICBleGl0U3RhdGUsXG4gIG9uTWFuYWdlQ29tcGxldGUsXG4gIHRhcmdldE1hcmtldHBsYWNlLFxuICBhY3Rpb24sXG59OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IFttYXJrZXRwbGFjZVN0YXRlcywgc2V0TWFya2V0cGxhY2VTdGF0ZXNdID0gdXNlU3RhdGU8XG4gICAgTWFya2V0cGxhY2VTdGF0ZVtdXG4gID4oW10pXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpXG4gIGNvbnN0IFtzZWxlY3RlZEluZGV4LCBzZXRTZWxlY3RlZEluZGV4XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtpc1Byb2Nlc3NpbmcsIHNldElzUHJvY2Vzc2luZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Byb2Nlc3NFcnJvciwgc2V0UHJvY2Vzc0Vycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzdWNjZXNzTWVzc2FnZSwgc2V0U3VjY2Vzc01lc3NhZ2VdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3Byb2dyZXNzTWVzc2FnZSwgc2V0UHJvZ3Jlc3NNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpbnRlcm5hbFZpZXcsIHNldEludGVybmFsVmlld10gPSB1c2VTdGF0ZTxJbnRlcm5hbFZpZXdTdGF0ZT4oJ2xpc3QnKVxuICBjb25zdCBbc2VsZWN0ZWRNYXJrZXRwbGFjZSwgc2V0U2VsZWN0ZWRNYXJrZXRwbGFjZV0gPVxuICAgIHVzZVN0YXRlPE1hcmtldHBsYWNlU3RhdGUgfCBudWxsPihudWxsKVxuICBjb25zdCBbZGV0YWlsc01lbnVJbmRleCwgc2V0RGV0YWlsc01lbnVJbmRleF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBoYXNBdHRlbXB0ZWRBdXRvQWN0aW9uID0gdXNlUmVmKGZhbHNlKVxuXG4gIC8vIExvYWQgbWFya2V0cGxhY2VzIGFuZCB0aGVpciBpbnN0YWxsZWQgcGx1Z2luc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGFzeW5jIGZ1bmN0aW9uIGxvYWRNYXJrZXRwbGFjZXMoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCBsb2FkS25vd25NYXJrZXRwbGFjZXNDb25maWcoKVxuICAgICAgICBjb25zdCB7IGVuYWJsZWQsIGRpc2FibGVkIH0gPSBhd2FpdCBsb2FkQWxsUGx1Z2lucygpXG4gICAgICAgIGNvbnN0IGFsbFBsdWdpbnMgPSBbLi4uZW5hYmxlZCwgLi4uZGlzYWJsZWRdXG5cbiAgICAgICAgLy8gTG9hZCBtYXJrZXRwbGFjZXMgd2l0aCBncmFjZWZ1bCBkZWdyYWRhdGlvblxuICAgICAgICBjb25zdCB7IG1hcmtldHBsYWNlcywgZmFpbHVyZXMgfSA9XG4gICAgICAgICAgYXdhaXQgbG9hZE1hcmtldHBsYWNlc1dpdGhHcmFjZWZ1bERlZ3JhZGF0aW9uKGNvbmZpZylcblxuICAgICAgICBjb25zdCBzdGF0ZXM6IE1hcmtldHBsYWNlU3RhdGVbXSA9IFtdXG4gICAgICAgIGZvciAoY29uc3QgeyBuYW1lLCBjb25maWc6IGVudHJ5LCBkYXRhOiBtYXJrZXRwbGFjZSB9IG9mIG1hcmtldHBsYWNlcykge1xuICAgICAgICAgIC8vIEdldCBhbGwgcGx1Z2lucyBpbnN0YWxsZWQgZnJvbSB0aGlzIG1hcmtldHBsYWNlXG4gICAgICAgICAgY29uc3QgaW5zdGFsbGVkRnJvbU1hcmtldHBsYWNlID0gYWxsUGx1Z2lucy5maWx0ZXIocGx1Z2luID0+XG4gICAgICAgICAgICBwbHVnaW4uc291cmNlLmVuZHNXaXRoKGBAJHtuYW1lfWApLFxuICAgICAgICAgIClcblxuICAgICAgICAgIHN0YXRlcy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBzb3VyY2U6IGdldE1hcmtldHBsYWNlU291cmNlRGlzcGxheShlbnRyeS5zb3VyY2UpLFxuICAgICAgICAgICAgbGFzdFVwZGF0ZWQ6IGVudHJ5Lmxhc3RVcGRhdGVkLFxuICAgICAgICAgICAgcGx1Z2luQ291bnQ6IG1hcmtldHBsYWNlPy5wbHVnaW5zLmxlbmd0aCxcbiAgICAgICAgICAgIGluc3RhbGxlZFBsdWdpbnM6IGluc3RhbGxlZEZyb21NYXJrZXRwbGFjZSxcbiAgICAgICAgICAgIHBlbmRpbmdVcGRhdGU6IGZhbHNlLFxuICAgICAgICAgICAgcGVuZGluZ1JlbW92ZTogZmFsc2UsXG4gICAgICAgICAgICBhdXRvVXBkYXRlOiBpc01hcmtldHBsYWNlQXV0b1VwZGF0ZShuYW1lLCBlbnRyeSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNvcnQ6IGNsYXVkZS1wbHVnaW4tZGlyZWN0b3J5IGZpcnN0LCB0aGVuIGFscGhhYmV0aWNhbGx5XG4gICAgICAgIHN0YXRlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgaWYgKGEubmFtZSA9PT0gJ2NsYXVkZS1wbHVnaW4tZGlyZWN0b3J5JykgcmV0dXJuIC0xXG4gICAgICAgICAgaWYgKGIubmFtZSA9PT0gJ2NsYXVkZS1wbHVnaW4tZGlyZWN0b3J5JykgcmV0dXJuIDFcbiAgICAgICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKVxuICAgICAgICB9KVxuICAgICAgICBzZXRNYXJrZXRwbGFjZVN0YXRlcyhzdGF0ZXMpXG5cbiAgICAgICAgLy8gSGFuZGxlIG1hcmtldHBsYWNlIGxvYWRpbmcgZXJyb3JzL3dhcm5pbmdzXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NDb3VudCA9IGNvdW50KG1hcmtldHBsYWNlcywgbSA9PiBtLmRhdGEgIT09IG51bGwpXG4gICAgICAgIGNvbnN0IGVycm9yUmVzdWx0ID0gZm9ybWF0TWFya2V0cGxhY2VMb2FkaW5nRXJyb3JzKFxuICAgICAgICAgIGZhaWx1cmVzLFxuICAgICAgICAgIHN1Y2Nlc3NDb3VudCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoZXJyb3JSZXN1bHQpIHtcbiAgICAgICAgICBpZiAoZXJyb3JSZXN1bHQudHlwZSA9PT0gJ3dhcm5pbmcnKSB7XG4gICAgICAgICAgICBzZXRQcm9jZXNzRXJyb3IoZXJyb3JSZXN1bHQubWVzc2FnZSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yUmVzdWx0Lm1lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXV0by1leGVjdXRlIGlmIHRhcmdldCBhbmQgYWN0aW9uIHByb3ZpZGVkXG4gICAgICAgIGlmICh0YXJnZXRNYXJrZXRwbGFjZSAmJiAhaGFzQXR0ZW1wdGVkQXV0b0FjdGlvbi5jdXJyZW50ICYmICFlcnJvcikge1xuICAgICAgICAgIGhhc0F0dGVtcHRlZEF1dG9BY3Rpb24uY3VycmVudCA9IHRydWVcbiAgICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IHN0YXRlcy5maW5kSW5kZXgoXG4gICAgICAgICAgICBzID0+IHMubmFtZSA9PT0gdGFyZ2V0TWFya2V0cGxhY2UsXG4gICAgICAgICAgKVxuICAgICAgICAgIGlmICh0YXJnZXRJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRTdGF0ZSA9IHN0YXRlc1t0YXJnZXRJbmRleF1cbiAgICAgICAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgLy8gTWFyayB0aGUgYWN0aW9uIGFzIHBlbmRpbmcgYW5kIGV4ZWN1dGVcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleCh0YXJnZXRJbmRleCArIDEpIC8vICsxIGJlY2F1c2UgXCJBZGQgTWFya2V0cGxhY2VcIiBpcyBhdCBpbmRleCAwXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlcyA9IFsuLi5zdGF0ZXNdXG4gICAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICAgICAgbmV3U3RhdGVzW3RhcmdldEluZGV4XSEucGVuZGluZ1VwZGF0ZSA9IHRydWVcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgICAgICAgbmV3U3RhdGVzW3RhcmdldEluZGV4XSEucGVuZGluZ1JlbW92ZSA9IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRNYXJrZXRwbGFjZVN0YXRlcyhuZXdTdGF0ZXMpXG4gICAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBjaGFuZ2UgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgc2V0VGltZW91dChhcHBseUNoYW5nZXMsIDEwMCwgbmV3U3RhdGVzKVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXRTdGF0ZSkge1xuICAgICAgICAgICAgICAvLyBObyBhY3Rpb24gLSBqdXN0IHNob3cgdGhlIGRldGFpbHMgdmlldyBmb3IgdGhpcyBtYXJrZXRwbGFjZVxuICAgICAgICAgICAgICBzZXRTZWxlY3RlZEluZGV4KHRhcmdldEluZGV4ICsgMSkgLy8gKzEgYmVjYXVzZSBcIkFkZCBNYXJrZXRwbGFjZVwiIGlzIGF0IGluZGV4IDBcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRNYXJrZXRwbGFjZSh0YXJnZXRTdGF0ZSlcbiAgICAgICAgICAgICAgc2V0SW50ZXJuYWxWaWV3KCdkZXRhaWxzJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHNldEVycm9yKSB7XG4gICAgICAgICAgICBzZXRFcnJvcihgTWFya2V0cGxhY2Ugbm90IGZvdW5kOiAke3RhcmdldE1hcmtldHBsYWNlfWApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKHNldEVycm9yKSB7XG4gICAgICAgICAgc2V0RXJyb3IoXG4gICAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0ZhaWxlZCB0byBsb2FkIG1hcmtldHBsYWNlcycsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHNldFByb2Nlc3NFcnJvcihcbiAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0ZhaWxlZCB0byBsb2FkIG1hcmtldHBsYWNlcycsXG4gICAgICAgIClcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICAgIHZvaWQgbG9hZE1hcmtldHBsYWNlcygpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IGludGVudGlvbmFsXG4gIH0sIFt0YXJnZXRNYXJrZXRwbGFjZSwgYWN0aW9uLCBlcnJvcl0pXG5cbiAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBwZW5kaW5nIGNoYW5nZXNcbiAgY29uc3QgaGFzUGVuZGluZ0NoYW5nZXMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG1hcmtldHBsYWNlU3RhdGVzLnNvbWUoXG4gICAgICBzdGF0ZSA9PiBzdGF0ZS5wZW5kaW5nVXBkYXRlIHx8IHN0YXRlLnBlbmRpbmdSZW1vdmUsXG4gICAgKVxuICB9XG5cbiAgLy8gR2V0IGNvdW50IG9mIHBlbmRpbmcgb3BlcmF0aW9uc1xuICBjb25zdCBnZXRQZW5kaW5nQ291bnRzID0gKCkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZUNvdW50ID0gY291bnQobWFya2V0cGxhY2VTdGF0ZXMsIHMgPT4gcy5wZW5kaW5nVXBkYXRlKVxuICAgIGNvbnN0IHJlbW92ZUNvdW50ID0gY291bnQobWFya2V0cGxhY2VTdGF0ZXMsIHMgPT4gcy5wZW5kaW5nUmVtb3ZlKVxuICAgIHJldHVybiB7IHVwZGF0ZUNvdW50LCByZW1vdmVDb3VudCB9XG4gIH1cblxuICAvLyBBcHBseSBhbGwgcGVuZGluZyBjaGFuZ2VzXG4gIGNvbnN0IGFwcGx5Q2hhbmdlcyA9IGFzeW5jIChzdGF0ZXM/OiBNYXJrZXRwbGFjZVN0YXRlW10pID0+IHtcbiAgICBjb25zdCBzdGF0ZXNUb1Byb2Nlc3MgPSBzdGF0ZXMgfHwgbWFya2V0cGxhY2VTdGF0ZXNcbiAgICBjb25zdCB3YXNJbkRldGFpbHNWaWV3ID0gaW50ZXJuYWxWaWV3ID09PSAnZGV0YWlscydcbiAgICBzZXRJc1Byb2Nlc3NpbmcodHJ1ZSlcbiAgICBzZXRQcm9jZXNzRXJyb3IobnVsbClcbiAgICBzZXRTdWNjZXNzTWVzc2FnZShudWxsKVxuICAgIHNldFByb2dyZXNzTWVzc2FnZShudWxsKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3NGb3JTb3VyY2UoJ3VzZXJTZXR0aW5ncycpXG4gICAgICBsZXQgdXBkYXRlZENvdW50ID0gMFxuICAgICAgbGV0IHJlbW92ZWRDb3VudCA9IDBcbiAgICAgIGNvbnN0IHJlZnJlc2hlZE1hcmtldHBsYWNlcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG5cbiAgICAgIGZvciAoY29uc3Qgc3RhdGUgb2Ygc3RhdGVzVG9Qcm9jZXNzKSB7XG4gICAgICAgIC8vIEhhbmRsZSByZW1vdmVcbiAgICAgICAgaWYgKHN0YXRlLnBlbmRpbmdSZW1vdmUpIHtcbiAgICAgICAgICAvLyBGaXJzdCB1bmluc3RhbGwgYWxsIHBsdWdpbnMgZnJvbSB0aGlzIG1hcmtldHBsYWNlXG4gICAgICAgICAgaWYgKHN0YXRlLmluc3RhbGxlZFBsdWdpbnMgJiYgc3RhdGUuaW5zdGFsbGVkUGx1Z2lucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdFbmFibGVkUGx1Z2lucyA9IHsgLi4uc2V0dGluZ3M/LmVuYWJsZWRQbHVnaW5zIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHN0YXRlLmluc3RhbGxlZFBsdWdpbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgcGx1Z2luSWQgPSBjcmVhdGVQbHVnaW5JZChwbHVnaW4ubmFtZSwgc3RhdGUubmFtZSlcbiAgICAgICAgICAgICAgLy8gTWFyayBhcyBkaXNhYmxlZC91bmluc3RhbGxlZFxuICAgICAgICAgICAgICBuZXdFbmFibGVkUGx1Z2luc1twbHVnaW5JZF0gPSBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXBkYXRlU2V0dGluZ3NGb3JTb3VyY2UoJ3VzZXJTZXR0aW5ncycsIHtcbiAgICAgICAgICAgICAgZW5hYmxlZFBsdWdpbnM6IG5ld0VuYWJsZWRQbHVnaW5zLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBUaGVuIHJlbW92ZSB0aGUgbWFya2V0cGxhY2VcbiAgICAgICAgICBhd2FpdCByZW1vdmVNYXJrZXRwbGFjZVNvdXJjZShzdGF0ZS5uYW1lKVxuICAgICAgICAgIHJlbW92ZWRDb3VudCsrXG5cbiAgICAgICAgICBsb2dFdmVudCgndGVuZ3VfbWFya2V0cGxhY2VfcmVtb3ZlZCcsIHtcbiAgICAgICAgICAgIG1hcmtldHBsYWNlX25hbWU6XG4gICAgICAgICAgICAgIHN0YXRlLm5hbWUgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgICAgICAgIHBsdWdpbnNfdW5pbnN0YWxsZWQ6IHN0YXRlLmluc3RhbGxlZFBsdWdpbnM/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSB1cGRhdGVcbiAgICAgICAgaWYgKHN0YXRlLnBlbmRpbmdVcGRhdGUpIHtcbiAgICAgICAgICAvLyBSZWZyZXNoIGluZGl2aWR1YWwgbWFya2V0cGxhY2UgZm9yIGVmZmljaWVuY3kgd2l0aCBwcm9ncmVzcyByZXBvcnRpbmdcbiAgICAgICAgICBhd2FpdCByZWZyZXNoTWFya2V0cGxhY2Uoc3RhdGUubmFtZSwgKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgc2V0UHJvZ3Jlc3NNZXNzYWdlKG1lc3NhZ2UpXG4gICAgICAgICAgfSlcbiAgICAgICAgICB1cGRhdGVkQ291bnQrK1xuICAgICAgICAgIHJlZnJlc2hlZE1hcmtldHBsYWNlcy5hZGQoc3RhdGUubmFtZS50b0xvd2VyQ2FzZSgpKVxuXG4gICAgICAgICAgbG9nRXZlbnQoJ3Rlbmd1X21hcmtldHBsYWNlX3VwZGF0ZWQnLCB7XG4gICAgICAgICAgICBtYXJrZXRwbGFjZV9uYW1lOlxuICAgICAgICAgICAgICBzdGF0ZS5uYW1lIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBZnRlciBtYXJrZXRwbGFjZSBjbG9uZXMgYXJlIHJlZnJlc2hlZCwgYnVtcCBpbnN0YWxsZWQgcGx1Z2lucyBmcm9tXG4gICAgICAvLyB0aG9zZSBtYXJrZXRwbGFjZXMgdG8gdGhlIG5ldyB2ZXJzaW9uLiBXaXRob3V0IHRoaXMsIHRoZSBsb2FkZXInc1xuICAgICAgLy8gY2FjaGUtb24tbWlzcyAoY29weVBsdWdpblRvVmVyc2lvbmVkQ2FjaGUpIGNyZWF0ZXMgdGhlIG5ldyB2ZXJzaW9uXG4gICAgICAvLyBkaXIgb24gdGhlIG5leHQgbG9hZEFsbFBsdWdpbnMoKSBjYWxsLCBidXQgaW5zdGFsbGVkX3BsdWdpbnMuanNvblxuICAgICAgLy8gc3RheXMgb24gdGhlIG9sZCB2ZXJzaW9uIOKAlCBzbyBjbGVhbnVwT3JwaGFuZWRQbHVnaW5WZXJzaW9uc0luQmFja2dyb3VuZFxuICAgICAgLy8gc3RhbXBzIHRoZSBORVcgZGlyIHdpdGggLm9ycGhhbmVkX2F0IG9uIHRoZSBuZXh0IHN0YXJ0dXAuIFNlZSAjMjk1MTIuXG4gICAgICAvLyB1cGRhdGVQbHVnaW5PcCAoY2FsbGVkIGluc2lkZSB0aGUgaGVscGVyKSBpcyB3aGF0IGFjdHVhbGx5IHdyaXRlc1xuICAgICAgLy8gaW5zdGFsbGVkX3BsdWdpbnMuanNvbiB2aWEgdXBkYXRlSW5zdGFsbGF0aW9uUGF0aE9uRGlzay5cbiAgICAgIGxldCB1cGRhdGVkUGx1Z2luQ291bnQgPSAwXG4gICAgICBpZiAocmVmcmVzaGVkTWFya2V0cGxhY2VzLnNpemUgPiAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRQbHVnaW5JZHMgPSBhd2FpdCB1cGRhdGVQbHVnaW5zRm9yTWFya2V0cGxhY2VzKFxuICAgICAgICAgIHJlZnJlc2hlZE1hcmtldHBsYWNlcyxcbiAgICAgICAgKVxuICAgICAgICB1cGRhdGVkUGx1Z2luQ291bnQgPSB1cGRhdGVkUGx1Z2luSWRzLmxlbmd0aFxuICAgICAgfVxuXG4gICAgICAvLyBDbGVhciBjYWNoZXMgYWZ0ZXIgY2hhbmdlc1xuICAgICAgY2xlYXJBbGxDYWNoZXMoKVxuXG4gICAgICAvLyBDYWxsIGNvbXBsZXRpb24gY2FsbGJhY2tcbiAgICAgIGlmIChvbk1hbmFnZUNvbXBsZXRlKSB7XG4gICAgICAgIGF3YWl0IG9uTWFuYWdlQ29tcGxldGUoKVxuICAgICAgfVxuXG4gICAgICAvLyBSZWxvYWQgbWFya2V0cGxhY2UgZGF0YSB0byBzaG93IHVwZGF0ZWQgdGltZXN0YW1wc1xuICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZEtub3duTWFya2V0cGxhY2VzQ29uZmlnKClcbiAgICAgIGNvbnN0IHsgZW5hYmxlZCwgZGlzYWJsZWQgfSA9IGF3YWl0IGxvYWRBbGxQbHVnaW5zKClcbiAgICAgIGNvbnN0IGFsbFBsdWdpbnMgPSBbLi4uZW5hYmxlZCwgLi4uZGlzYWJsZWRdXG5cbiAgICAgIGNvbnN0IHsgbWFya2V0cGxhY2VzIH0gPVxuICAgICAgICBhd2FpdCBsb2FkTWFya2V0cGxhY2VzV2l0aEdyYWNlZnVsRGVncmFkYXRpb24oY29uZmlnKVxuXG4gICAgICBjb25zdCBuZXdTdGF0ZXM6IE1hcmtldHBsYWNlU3RhdGVbXSA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHsgbmFtZSwgY29uZmlnOiBlbnRyeSwgZGF0YTogbWFya2V0cGxhY2UgfSBvZiBtYXJrZXRwbGFjZXMpIHtcbiAgICAgICAgY29uc3QgaW5zdGFsbGVkRnJvbU1hcmtldHBsYWNlID0gYWxsUGx1Z2lucy5maWx0ZXIocGx1Z2luID0+XG4gICAgICAgICAgcGx1Z2luLnNvdXJjZS5lbmRzV2l0aChgQCR7bmFtZX1gKSxcbiAgICAgICAgKVxuXG4gICAgICAgIG5ld1N0YXRlcy5wdXNoKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHNvdXJjZTogZ2V0TWFya2V0cGxhY2VTb3VyY2VEaXNwbGF5KGVudHJ5LnNvdXJjZSksXG4gICAgICAgICAgbGFzdFVwZGF0ZWQ6IGVudHJ5Lmxhc3RVcGRhdGVkLFxuICAgICAgICAgIHBsdWdpbkNvdW50OiBtYXJrZXRwbGFjZT8ucGx1Z2lucy5sZW5ndGgsXG4gICAgICAgICAgaW5zdGFsbGVkUGx1Z2luczogaW5zdGFsbGVkRnJvbU1hcmtldHBsYWNlLFxuICAgICAgICAgIHBlbmRpbmdVcGRhdGU6IGZhbHNlLFxuICAgICAgICAgIHBlbmRpbmdSZW1vdmU6IGZhbHNlLFxuICAgICAgICAgIGF1dG9VcGRhdGU6IGlzTWFya2V0cGxhY2VBdXRvVXBkYXRlKG5hbWUsIGVudHJ5KSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gU29ydDogY2xhdWRlLXBsdWdpbi1kaXJlY3RvcnkgZmlyc3QsIHRoZW4gYWxwaGFiZXRpY2FsbHlcbiAgICAgIG5ld1N0YXRlcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhLm5hbWUgPT09ICdjbGF1ZGUtcGx1Z2luLWRpcmVjdG9yeScpIHJldHVybiAtMVxuICAgICAgICBpZiAoYi5uYW1lID09PSAnY2xhdWRlLXBsdWdpbi1kaXJlY3RvcnknKSByZXR1cm4gMVxuICAgICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKVxuICAgICAgfSlcbiAgICAgIHNldE1hcmtldHBsYWNlU3RhdGVzKG5ld1N0YXRlcylcblxuICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkIG1hcmtldHBsYWNlIHJlZmVyZW5jZSB3aXRoIGZyZXNoIGRhdGFcbiAgICAgIGlmICh3YXNJbkRldGFpbHNWaWV3ICYmIHNlbGVjdGVkTWFya2V0cGxhY2UpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZE1hcmtldHBsYWNlID0gbmV3U3RhdGVzLmZpbmQoXG4gICAgICAgICAgcyA9PiBzLm5hbWUgPT09IHNlbGVjdGVkTWFya2V0cGxhY2UubmFtZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAodXBkYXRlZE1hcmtldHBsYWNlKSB7XG4gICAgICAgICAgc2V0U2VsZWN0ZWRNYXJrZXRwbGFjZSh1cGRhdGVkTWFya2V0cGxhY2UpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQnVpbGQgc3VjY2VzcyBtZXNzYWdlXG4gICAgICBjb25zdCBhY3Rpb25zOiBzdHJpbmdbXSA9IFtdXG4gICAgICBpZiAodXBkYXRlZENvdW50ID4gMCkge1xuICAgICAgICBjb25zdCBwbHVnaW5QYXJ0ID1cbiAgICAgICAgICB1cGRhdGVkUGx1Z2luQ291bnQgPiAwXG4gICAgICAgICAgICA/IGAgKCR7dXBkYXRlZFBsdWdpbkNvdW50fSAke3BsdXJhbCh1cGRhdGVkUGx1Z2luQ291bnQsICdwbHVnaW4nKX0gYnVtcGVkKWBcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgYWN0aW9ucy5wdXNoKFxuICAgICAgICAgIGBVcGRhdGVkICR7dXBkYXRlZENvdW50fSAke3BsdXJhbCh1cGRhdGVkQ291bnQsICdtYXJrZXRwbGFjZScpfSR7cGx1Z2luUGFydH1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlZENvdW50ID4gMCkge1xuICAgICAgICBhY3Rpb25zLnB1c2goXG4gICAgICAgICAgYFJlbW92ZWQgJHtyZW1vdmVkQ291bnR9ICR7cGx1cmFsKHJlbW92ZWRDb3VudCwgJ21hcmtldHBsYWNlJyl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNc2cgPSBgJHtmaWd1cmVzLnRpY2t9ICR7YWN0aW9ucy5qb2luKCcsICcpfWBcbiAgICAgICAgLy8gSWYgd2Ugd2VyZSBpbiBkZXRhaWxzIHZpZXcsIHN0YXkgdGhlcmUgYW5kIHNob3cgc3VjY2Vzc1xuICAgICAgICBpZiAod2FzSW5EZXRhaWxzVmlldykge1xuICAgICAgICAgIHNldFN1Y2Nlc3NNZXNzYWdlKHN1Y2Nlc3NNc2cpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIHNob3cgcmVzdWx0IGFuZCBleGl0IHRvIG1lbnVcbiAgICAgICAgICBzZXRSZXN1bHQoc3VjY2Vzc01zZylcbiAgICAgICAgICBzZXRUaW1lb3V0KHNldFZpZXdTdGF0ZSwgMjAwMCwgeyB0eXBlOiAnbWVudScgYXMgY29uc3QgfSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghd2FzSW5EZXRhaWxzVmlldykge1xuICAgICAgICBzZXRWaWV3U3RhdGUoeyB0eXBlOiAnbWVudScgfSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGVycm9yTXNnID0gZXJyb3JNZXNzYWdlKGVycilcbiAgICAgIHNldFByb2Nlc3NFcnJvcihlcnJvck1zZylcbiAgICAgIGlmIChzZXRFcnJvcikge1xuICAgICAgICBzZXRFcnJvcihlcnJvck1zZylcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNQcm9jZXNzaW5nKGZhbHNlKVxuICAgICAgc2V0UHJvZ3Jlc3NNZXNzYWdlKG51bGwpXG4gICAgfVxuICB9XG5cbiAgLy8gSGFuZGxlIGNvbmZpcm1pbmcgbWFya2V0cGxhY2UgcmVtb3ZhbFxuICBjb25zdCBjb25maXJtUmVtb3ZlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghc2VsZWN0ZWRNYXJrZXRwbGFjZSkgcmV0dXJuXG5cbiAgICAvLyBNYXJrIGZvciByZW1vdmFsIGFuZCBhcHBseVxuICAgIGNvbnN0IG5ld1N0YXRlcyA9IG1hcmtldHBsYWNlU3RhdGVzLm1hcChzdGF0ZSA9PlxuICAgICAgc3RhdGUubmFtZSA9PT0gc2VsZWN0ZWRNYXJrZXRwbGFjZS5uYW1lXG4gICAgICAgID8geyAuLi5zdGF0ZSwgcGVuZGluZ1JlbW92ZTogdHJ1ZSB9XG4gICAgICAgIDogc3RhdGUsXG4gICAgKVxuICAgIHNldE1hcmtldHBsYWNlU3RhdGVzKG5ld1N0YXRlcylcbiAgICBhd2FpdCBhcHBseUNoYW5nZXMobmV3U3RhdGVzKVxuICB9XG5cbiAgLy8gQnVpbGQgbWVudSBvcHRpb25zIGZvciBkZXRhaWxzIHZpZXdcbiAgY29uc3QgYnVpbGREZXRhaWxzTWVudU9wdGlvbnMgPSAoXG4gICAgbWFya2V0cGxhY2U6IE1hcmtldHBsYWNlU3RhdGUgfCBudWxsLFxuICApOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHNlY29uZGFyeUxhYmVsPzogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0+IHtcbiAgICBpZiAoIW1hcmtldHBsYWNlKSByZXR1cm4gW11cblxuICAgIGNvbnN0IG9wdGlvbnM6IEFycmF5PHtcbiAgICAgIGxhYmVsOiBzdHJpbmdcbiAgICAgIHNlY29uZGFyeUxhYmVsPzogc3RyaW5nXG4gICAgICB2YWx1ZTogc3RyaW5nXG4gICAgfT4gPSBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiBgQnJvd3NlIHBsdWdpbnMgKCR7bWFya2V0cGxhY2UucGx1Z2luQ291bnQgPz8gMH0pYCxcbiAgICAgICAgdmFsdWU6ICdicm93c2UnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdVcGRhdGUgbWFya2V0cGxhY2UnLFxuICAgICAgICBzZWNvbmRhcnlMYWJlbDogbWFya2V0cGxhY2UubGFzdFVwZGF0ZWRcbiAgICAgICAgICA/IGAobGFzdCB1cGRhdGVkICR7bmV3IERhdGUobWFya2V0cGxhY2UubGFzdFVwZGF0ZWQpLnRvTG9jYWxlRGF0ZVN0cmluZygpfSlgXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIHZhbHVlOiAndXBkYXRlJyxcbiAgICAgIH0sXG4gICAgXVxuXG4gICAgLy8gT25seSBzaG93IGF1dG8tdXBkYXRlIHRvZ2dsZSBpZiBhdXRvLXVwZGF0ZXIgaXMgbm90IGdsb2JhbGx5IGRpc2FibGVkXG4gICAgaWYgKCFzaG91bGRTa2lwUGx1Z2luQXV0b3VwZGF0ZSgpKSB7XG4gICAgICBvcHRpb25zLnB1c2goe1xuICAgICAgICBsYWJlbDogbWFya2V0cGxhY2UuYXV0b1VwZGF0ZVxuICAgICAgICAgID8gJ0Rpc2FibGUgYXV0by11cGRhdGUnXG4gICAgICAgICAgOiAnRW5hYmxlIGF1dG8tdXBkYXRlJyxcbiAgICAgICAgdmFsdWU6ICd0b2dnbGUtYXV0by11cGRhdGUnLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBvcHRpb25zLnB1c2goeyBsYWJlbDogJ1JlbW92ZSBtYXJrZXRwbGFjZScsIHZhbHVlOiAncmVtb3ZlJyB9KVxuXG4gICAgcmV0dXJuIG9wdGlvbnNcbiAgfVxuXG4gIC8vIEhhbmRsZSB0b2dnbGluZyBhdXRvLXVwZGF0ZSBmb3IgYSBtYXJrZXRwbGFjZVxuICBjb25zdCBoYW5kbGVUb2dnbGVBdXRvVXBkYXRlID0gYXN5bmMgKG1hcmtldHBsYWNlOiBNYXJrZXRwbGFjZVN0YXRlKSA9PiB7XG4gICAgY29uc3QgbmV3QXV0b1VwZGF0ZSA9ICFtYXJrZXRwbGFjZS5hdXRvVXBkYXRlXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNldE1hcmtldHBsYWNlQXV0b1VwZGF0ZShtYXJrZXRwbGFjZS5uYW1lLCBuZXdBdXRvVXBkYXRlKVxuXG4gICAgICAvLyBVcGRhdGUgbG9jYWwgc3RhdGVcbiAgICAgIHNldE1hcmtldHBsYWNlU3RhdGVzKHByZXYgPT5cbiAgICAgICAgcHJldi5tYXAoc3RhdGUgPT5cbiAgICAgICAgICBzdGF0ZS5uYW1lID09PSBtYXJrZXRwbGFjZS5uYW1lXG4gICAgICAgICAgICA/IHsgLi4uc3RhdGUsIGF1dG9VcGRhdGU6IG5ld0F1dG9VcGRhdGUgfVxuICAgICAgICAgICAgOiBzdGF0ZSxcbiAgICAgICAgKSxcbiAgICAgIClcblxuICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkIG1hcmtldHBsYWNlIHJlZmVyZW5jZVxuICAgICAgc2V0U2VsZWN0ZWRNYXJrZXRwbGFjZShwcmV2ID0+XG4gICAgICAgIHByZXYgPyB7IC4uLnByZXYsIGF1dG9VcGRhdGU6IG5ld0F1dG9VcGRhdGUgfSA6IHByZXYsXG4gICAgICApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRQcm9jZXNzRXJyb3IoXG4gICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnRmFpbGVkIHRvIHVwZGF0ZSBzZXR0aW5nJyxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBFc2NhcGUgaW4gZGV0YWlscyBvciBjb25maXJtLXJlbW92ZSB2aWV3IC0gZ28gYmFjayB0byBsaXN0XG4gIHVzZUtleWJpbmRpbmcoXG4gICAgJ2NvbmZpcm06bm8nLFxuICAgICgpID0+IHtcbiAgICAgIHNldEludGVybmFsVmlldygnbGlzdCcpXG4gICAgICBzZXREZXRhaWxzTWVudUluZGV4KDApXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZXh0OiAnQ29uZmlybWF0aW9uJyxcbiAgICAgIGlzQWN0aXZlOlxuICAgICAgICAhaXNQcm9jZXNzaW5nICYmXG4gICAgICAgIChpbnRlcm5hbFZpZXcgPT09ICdkZXRhaWxzJyB8fCBpbnRlcm5hbFZpZXcgPT09ICdjb25maXJtLXJlbW92ZScpLFxuICAgIH0sXG4gIClcblxuICAvLyBFc2NhcGUgaW4gbGlzdCB2aWV3IHdpdGggcGVuZGluZyBjaGFuZ2VzIC0gY2xlYXIgcGVuZGluZyBjaGFuZ2VzXG4gIHVzZUtleWJpbmRpbmcoXG4gICAgJ2NvbmZpcm06bm8nLFxuICAgICgpID0+IHtcbiAgICAgIHNldE1hcmtldHBsYWNlU3RhdGVzKHByZXYgPT5cbiAgICAgICAgcHJldi5tYXAoc3RhdGUgPT4gKHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBwZW5kaW5nVXBkYXRlOiBmYWxzZSxcbiAgICAgICAgICBwZW5kaW5nUmVtb3ZlOiBmYWxzZSxcbiAgICAgICAgfSkpLFxuICAgICAgKVxuICAgICAgc2V0U2VsZWN0ZWRJbmRleCgwKVxuICAgIH0sXG4gICAge1xuICAgICAgY29udGV4dDogJ0NvbmZpcm1hdGlvbicsXG4gICAgICBpc0FjdGl2ZTogIWlzUHJvY2Vzc2luZyAmJiBpbnRlcm5hbFZpZXcgPT09ICdsaXN0JyAmJiBoYXNQZW5kaW5nQ2hhbmdlcygpLFxuICAgIH0sXG4gIClcblxuICAvLyBFc2NhcGUgaW4gbGlzdCB2aWV3IHdpdGhvdXQgcGVuZGluZyBjaGFuZ2VzIC0gZXhpdCB0byBwYXJlbnQgbWVudVxuICB1c2VLZXliaW5kaW5nKFxuICAgICdjb25maXJtOm5vJyxcbiAgICAoKSA9PiB7XG4gICAgICBzZXRWaWV3U3RhdGUoeyB0eXBlOiAnbWVudScgfSlcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvbnRleHQ6ICdDb25maXJtYXRpb24nLFxuICAgICAgaXNBY3RpdmU6XG4gICAgICAgICFpc1Byb2Nlc3NpbmcgJiYgaW50ZXJuYWxWaWV3ID09PSAnbGlzdCcgJiYgIWhhc1BlbmRpbmdDaGFuZ2VzKCksXG4gICAgfSxcbiAgKVxuXG4gIC8vIExpc3QgdmlldyDigJQgbmF2aWdhdGlvbiAodXAvZG93bi9lbnRlciB2aWEgY29uZmlndXJhYmxlIGtleWJpbmRpbmdzKVxuICB1c2VLZXliaW5kaW5ncyhcbiAgICB7XG4gICAgICAnc2VsZWN0OnByZXZpb3VzJzogKCkgPT4gc2V0U2VsZWN0ZWRJbmRleChwcmV2ID0+IE1hdGgubWF4KDAsIHByZXYgLSAxKSksXG4gICAgICAnc2VsZWN0Om5leHQnOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsSXRlbXMgPSBtYXJrZXRwbGFjZVN0YXRlcy5sZW5ndGggKyAxXG4gICAgICAgIHNldFNlbGVjdGVkSW5kZXgocHJldiA9PiBNYXRoLm1pbih0b3RhbEl0ZW1zIC0gMSwgcHJldiArIDEpKVxuICAgICAgfSxcbiAgICAgICdzZWxlY3Q6YWNjZXB0JzogKCkgPT4ge1xuICAgICAgICBjb25zdCBtYXJrZXRwbGFjZUluZGV4ID0gc2VsZWN0ZWRJbmRleCAtIDFcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPT09IDApIHtcbiAgICAgICAgICBzZXRWaWV3U3RhdGUoeyB0eXBlOiAnYWRkLW1hcmtldHBsYWNlJyB9KVxuICAgICAgICB9IGVsc2UgaWYgKGhhc1BlbmRpbmdDaGFuZ2VzKCkpIHtcbiAgICAgICAgICB2b2lkIGFwcGx5Q2hhbmdlcygpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbWFya2V0cGxhY2UgPSBtYXJrZXRwbGFjZVN0YXRlc1ttYXJrZXRwbGFjZUluZGV4XVxuICAgICAgICAgIGlmIChtYXJrZXRwbGFjZSkge1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRNYXJrZXRwbGFjZShtYXJrZXRwbGFjZSlcbiAgICAgICAgICAgIHNldEludGVybmFsVmlldygnZGV0YWlscycpXG4gICAgICAgICAgICBzZXREZXRhaWxzTWVudUluZGV4KDApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgeyBjb250ZXh0OiAnU2VsZWN0JywgaXNBY3RpdmU6ICFpc1Byb2Nlc3NpbmcgJiYgaW50ZXJuYWxWaWV3ID09PSAnbGlzdCcgfSxcbiAgKVxuXG4gIC8vIExpc3QgdmlldyDigJQgbWFya2V0cGxhY2Utc3BlY2lmaWMgYWN0aW9ucyAodS9yIHNob3J0Y3V0cylcbiAgdXNlSW5wdXQoXG4gICAgaW5wdXQgPT4ge1xuICAgICAgY29uc3QgbWFya2V0cGxhY2VJbmRleCA9IHNlbGVjdGVkSW5kZXggLSAxXG4gICAgICBpZiAoKGlucHV0ID09PSAndScgfHwgaW5wdXQgPT09ICdVJykgJiYgbWFya2V0cGxhY2VJbmRleCA+PSAwKSB7XG4gICAgICAgIHNldE1hcmtldHBsYWNlU3RhdGVzKHByZXYgPT5cbiAgICAgICAgICBwcmV2Lm1hcCgoc3RhdGUsIGlkeCkgPT5cbiAgICAgICAgICAgIGlkeCA9PT0gbWFya2V0cGxhY2VJbmRleFxuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgcGVuZGluZ1VwZGF0ZTogIXN0YXRlLnBlbmRpbmdVcGRhdGUsXG4gICAgICAgICAgICAgICAgICBwZW5kaW5nUmVtb3ZlOiBzdGF0ZS5wZW5kaW5nVXBkYXRlXG4gICAgICAgICAgICAgICAgICAgID8gc3RhdGUucGVuZGluZ1JlbW92ZVxuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiBzdGF0ZSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9IGVsc2UgaWYgKChpbnB1dCA9PT0gJ3InIHx8IGlucHV0ID09PSAnUicpICYmIG1hcmtldHBsYWNlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBtYXJrZXRwbGFjZSA9IG1hcmtldHBsYWNlU3RhdGVzW21hcmtldHBsYWNlSW5kZXhdXG4gICAgICAgIGlmIChtYXJrZXRwbGFjZSkge1xuICAgICAgICAgIHNldFNlbGVjdGVkTWFya2V0cGxhY2UobWFya2V0cGxhY2UpXG4gICAgICAgICAgc2V0SW50ZXJuYWxWaWV3KCdjb25maXJtLXJlbW92ZScpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHsgaXNBY3RpdmU6ICFpc1Byb2Nlc3NpbmcgJiYgaW50ZXJuYWxWaWV3ID09PSAnbGlzdCcgfSxcbiAgKVxuXG4gIC8vIERldGFpbHMgdmlldyDigJQgbmF2aWdhdGlvblxuICB1c2VLZXliaW5kaW5ncyhcbiAgICB7XG4gICAgICAnc2VsZWN0OnByZXZpb3VzJzogKCkgPT5cbiAgICAgICAgc2V0RGV0YWlsc01lbnVJbmRleChwcmV2ID0+IE1hdGgubWF4KDAsIHByZXYgLSAxKSksXG4gICAgICAnc2VsZWN0Om5leHQnOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnVPcHRpb25zID0gYnVpbGREZXRhaWxzTWVudU9wdGlvbnMoc2VsZWN0ZWRNYXJrZXRwbGFjZSlcbiAgICAgICAgc2V0RGV0YWlsc01lbnVJbmRleChwcmV2ID0+IE1hdGgubWluKG1lbnVPcHRpb25zLmxlbmd0aCAtIDEsIHByZXYgKyAxKSlcbiAgICAgIH0sXG4gICAgICAnc2VsZWN0OmFjY2VwdCc6ICgpID0+IHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZE1hcmtldHBsYWNlKSByZXR1cm5cbiAgICAgICAgY29uc3QgbWVudU9wdGlvbnMgPSBidWlsZERldGFpbHNNZW51T3B0aW9ucyhzZWxlY3RlZE1hcmtldHBsYWNlKVxuICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IG1lbnVPcHRpb25zW2RldGFpbHNNZW51SW5kZXhdXG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbj8udmFsdWUgPT09ICdicm93c2UnKSB7XG4gICAgICAgICAgc2V0Vmlld1N0YXRlKHtcbiAgICAgICAgICAgIHR5cGU6ICdicm93c2UtbWFya2V0cGxhY2UnLFxuICAgICAgICAgICAgdGFyZ2V0TWFya2V0cGxhY2U6IHNlbGVjdGVkTWFya2V0cGxhY2UubmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkT3B0aW9uPy52YWx1ZSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZXMgPSBtYXJrZXRwbGFjZVN0YXRlcy5tYXAoc3RhdGUgPT5cbiAgICAgICAgICAgIHN0YXRlLm5hbWUgPT09IHNlbGVjdGVkTWFya2V0cGxhY2UubmFtZVxuICAgICAgICAgICAgICA/IHsgLi4uc3RhdGUsIHBlbmRpbmdVcGRhdGU6IHRydWUgfVxuICAgICAgICAgICAgICA6IHN0YXRlLFxuICAgICAgICAgIClcbiAgICAgICAgICBzZXRNYXJrZXRwbGFjZVN0YXRlcyhuZXdTdGF0ZXMpXG4gICAgICAgICAgdm9pZCBhcHBseUNoYW5nZXMobmV3U3RhdGVzKVxuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkT3B0aW9uPy52YWx1ZSA9PT0gJ3RvZ2dsZS1hdXRvLXVwZGF0ZScpIHtcbiAgICAgICAgICB2b2lkIGhhbmRsZVRvZ2dsZUF1dG9VcGRhdGUoc2VsZWN0ZWRNYXJrZXRwbGFjZSlcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZE9wdGlvbj8udmFsdWUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgc2V0SW50ZXJuYWxWaWV3KCdjb25maXJtLXJlbW92ZScpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZXh0OiAnU2VsZWN0JyxcbiAgICAgIGlzQWN0aXZlOiAhaXNQcm9jZXNzaW5nICYmIGludGVybmFsVmlldyA9PT0gJ2RldGFpbHMnLFxuICAgIH0sXG4gIClcblxuICAvLyBDb25maXJtLXJlbW92ZSB2aWV3IOKAlCB5L24gaW5wdXRcbiAgdXNlSW5wdXQoXG4gICAgaW5wdXQgPT4ge1xuICAgICAgaWYgKGlucHV0ID09PSAneScgfHwgaW5wdXQgPT09ICdZJykge1xuICAgICAgICB2b2lkIGNvbmZpcm1SZW1vdmUoKVxuICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ24nIHx8IGlucHV0ID09PSAnTicpIHtcbiAgICAgICAgc2V0SW50ZXJuYWxWaWV3KCdsaXN0JylcbiAgICAgICAgc2V0U2VsZWN0ZWRNYXJrZXRwbGFjZShudWxsKVxuICAgICAgfVxuICAgIH0sXG4gICAgeyBpc0FjdGl2ZTogIWlzUHJvY2Vzc2luZyAmJiBpbnRlcm5hbFZpZXcgPT09ICdjb25maXJtLXJlbW92ZScgfSxcbiAgKVxuXG4gIGlmIChsb2FkaW5nKSB7XG4gICAgcmV0dXJuIDxUZXh0PkxvYWRpbmcgbWFya2V0cGxhY2Vz4oCmPC9UZXh0PlxuICB9XG5cbiAgaWYgKG1hcmtldHBsYWNlU3RhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgPEJveCBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICAgIDxUZXh0IGJvbGQ+TWFuYWdlIG1hcmtldHBsYWNlczwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgey8qIEFkZCBNYXJrZXRwbGFjZSBvcHRpb24gKi99XG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cInJvd1wiIGdhcD17MX0+XG4gICAgICAgICAgPFRleHQgY29sb3I9XCJzdWdnZXN0aW9uXCI+e2ZpZ3VyZXMucG9pbnRlcn0gKzwvVGV4dD5cbiAgICAgICAgICA8VGV4dCBib2xkIGNvbG9yPVwic3VnZ2VzdGlvblwiPlxuICAgICAgICAgICAgQWRkIE1hcmtldHBsYWNlXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cblxuICAgICAgICA8Qm94IG1hcmdpbkxlZnQ9ezN9PlxuICAgICAgICAgIDxUZXh0IGRpbUNvbG9yIGl0YWxpYz5cbiAgICAgICAgICAgIHtleGl0U3RhdGUucGVuZGluZyA/IChcbiAgICAgICAgICAgICAgPD5QcmVzcyB7ZXhpdFN0YXRlLmtleU5hbWV9IGFnYWluIHRvIGdvIGJhY2s8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxCeWxpbmU+XG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludFxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwic2VsZWN0OmFjY2VwdFwiXG4gICAgICAgICAgICAgICAgICBjb250ZXh0PVwiU2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPVwiRW50ZXJcIlxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJzZWxlY3RcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludFxuICAgICAgICAgICAgICAgICAgYWN0aW9uPVwiY29uZmlybTpub1wiXG4gICAgICAgICAgICAgICAgICBjb250ZXh0PVwiQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPVwiRXNjXCJcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiZ28gYmFja1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9CeWxpbmU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0JveD5cbiAgICApXG4gIH1cblxuICAvLyBTaG93IGNvbmZpcm1hdGlvbiBkaWFsb2dcbiAgaWYgKGludGVybmFsVmlldyA9PT0gJ2NvbmZpcm0tcmVtb3ZlJyAmJiBzZWxlY3RlZE1hcmtldHBsYWNlKSB7XG4gICAgY29uc3QgcGx1Z2luQ291bnQgPSBzZWxlY3RlZE1hcmtldHBsYWNlLmluc3RhbGxlZFBsdWdpbnM/Lmxlbmd0aCB8fCAwXG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICA8VGV4dCBib2xkIGNvbG9yPVwid2FybmluZ1wiPlxuICAgICAgICAgIFJlbW92ZSBtYXJrZXRwbGFjZSA8VGV4dCBpdGFsaWM+e3NlbGVjdGVkTWFya2V0cGxhY2UubmFtZX08L1RleHQ+P1xuICAgICAgICA8L1RleHQ+XG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgIHtwbHVnaW5Db3VudCA+IDAgJiYgKFxuICAgICAgICAgICAgPEJveCBtYXJnaW5Ub3A9ezF9PlxuICAgICAgICAgICAgICA8VGV4dCBjb2xvcj1cIndhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICBUaGlzIHdpbGwgYWxzbyB1bmluc3RhbGwge3BsdWdpbkNvdW50fXsnICd9XG4gICAgICAgICAgICAgICAge3BsdXJhbChwbHVnaW5Db3VudCwgJ3BsdWdpbicpfSBmcm9tIHRoaXMgbWFya2V0cGxhY2U6XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3NlbGVjdGVkTWFya2V0cGxhY2UuaW5zdGFsbGVkUGx1Z2lucyAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRNYXJrZXRwbGFjZS5pbnN0YWxsZWRQbHVnaW5zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBtYXJnaW5Ub3A9ezF9IG1hcmdpbkxlZnQ9ezJ9PlxuICAgICAgICAgICAgICAgIHtzZWxlY3RlZE1hcmtldHBsYWNlLmluc3RhbGxlZFBsdWdpbnMubWFwKHBsdWdpbiA9PiAoXG4gICAgICAgICAgICAgICAgICA8VGV4dCBrZXk9e3BsdWdpbi5uYW1lfSBkaW1Db2xvcj5cbiAgICAgICAgICAgICAgICAgICAg4oCiIHtwbHVnaW4ubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICBQcmVzcyA8VGV4dCBib2xkPnk8L1RleHQ+IHRvIGNvbmZpcm0gb3IgPFRleHQgYm9sZD5uPC9UZXh0PiB0b1xuICAgICAgICAgICAgICBjYW5jZWxcbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0JveD5cbiAgICApXG4gIH1cblxuICAvLyBTaG93IG1hcmtldHBsYWNlIGRldGFpbHNcbiAgaWYgKGludGVybmFsVmlldyA9PT0gJ2RldGFpbHMnICYmIHNlbGVjdGVkTWFya2V0cGxhY2UpIHtcbiAgICAvLyBDaGVjayBpZiB0aGlzIG1hcmtldHBsYWNlIGlzIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWRcbiAgICAvLyBDaGVjayBwZW5kaW5nVXBkYXRlIGZpcnN0IHNvIHdlIHNob3cgdXBkYXRpbmcgc3RhdGUgaW1tZWRpYXRlbHkgd2hlbiB1c2VyIHByZXNzZXMgRW50ZXJcbiAgICBjb25zdCBpc1VwZGF0aW5nID0gc2VsZWN0ZWRNYXJrZXRwbGFjZS5wZW5kaW5nVXBkYXRlIHx8IGlzUHJvY2Vzc2luZ1xuXG4gICAgY29uc3QgbWVudU9wdGlvbnMgPSBidWlsZERldGFpbHNNZW51T3B0aW9ucyhzZWxlY3RlZE1hcmtldHBsYWNlKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICA8VGV4dCBib2xkPntzZWxlY3RlZE1hcmtldHBsYWNlLm5hbWV9PC9UZXh0PlxuICAgICAgICA8VGV4dCBkaW1Db2xvcj57c2VsZWN0ZWRNYXJrZXRwbGFjZS5zb3VyY2V9PC9UZXh0PlxuICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICB7c2VsZWN0ZWRNYXJrZXRwbGFjZS5wbHVnaW5Db3VudCB8fCAwfSBhdmFpbGFibGV7JyAnfVxuICAgICAgICAgICAge3BsdXJhbChzZWxlY3RlZE1hcmtldHBsYWNlLnBsdWdpbkNvdW50IHx8IDAsICdwbHVnaW4nKX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuXG4gICAgICAgIHsvKiBJbnN0YWxsZWQgcGx1Z2lucyBzZWN0aW9uICovfVxuICAgICAgICB7c2VsZWN0ZWRNYXJrZXRwbGFjZS5pbnN0YWxsZWRQbHVnaW5zICYmXG4gICAgICAgICAgc2VsZWN0ZWRNYXJrZXRwbGFjZS5pbnN0YWxsZWRQbHVnaW5zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICAgICAgPFRleHQgYm9sZD5cbiAgICAgICAgICAgICAgICBJbnN0YWxsZWQgcGx1Z2lucyAoe3NlbGVjdGVkTWFya2V0cGxhY2UuaW5zdGFsbGVkUGx1Z2lucy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgKTpcbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBtYXJnaW5MZWZ0PXsxfT5cbiAgICAgICAgICAgICAgICB7c2VsZWN0ZWRNYXJrZXRwbGFjZS5pbnN0YWxsZWRQbHVnaW5zLm1hcChwbHVnaW4gPT4gKFxuICAgICAgICAgICAgICAgICAgPEJveCBrZXk9e3BsdWdpbi5uYW1lfSBmbGV4RGlyZWN0aW9uPVwicm93XCIgZ2FwPXsxfT5cbiAgICAgICAgICAgICAgICAgICAgPFRleHQ+e2ZpZ3VyZXMuYnVsbGV0fTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQ+e3BsdWdpbi5uYW1lfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj57cGx1Z2luLm1hbmlmZXN0LmRlc2NyaXB0aW9ufTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApfVxuXG4gICAgICAgIHsvKiBQcm9jZXNzaW5nIGluZGljYXRvciAqL31cbiAgICAgICAge2lzVXBkYXRpbmcgJiYgKFxuICAgICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfSBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICA8VGV4dCBjb2xvcj1cImNsYXVkZVwiPlVwZGF0aW5nIG1hcmtldHBsYWNl4oCmPC9UZXh0PlxuICAgICAgICAgICAge3Byb2dyZXNzTWVzc2FnZSAmJiA8VGV4dCBkaW1Db2xvcj57cHJvZ3Jlc3NNZXNzYWdlfTwvVGV4dD59XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG5cbiAgICAgICAgey8qIFN1Y2Nlc3MgbWVzc2FnZSAqL31cbiAgICAgICAgeyFpc1VwZGF0aW5nICYmIHN1Y2Nlc3NNZXNzYWdlICYmIChcbiAgICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgICA8VGV4dCBjb2xvcj1cImNsYXVkZVwiPntzdWNjZXNzTWVzc2FnZX08L1RleHQ+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG5cbiAgICAgICAgey8qIEVycm9yIG1lc3NhZ2UgKi99XG4gICAgICAgIHshaXNVcGRhdGluZyAmJiBwcm9jZXNzRXJyb3IgJiYgKFxuICAgICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwiZXJyb3JcIj57cHJvY2Vzc0Vycm9yfTwvVGV4dD5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cblxuICAgICAgICB7LyogTWVudSBvcHRpb25zICovfVxuICAgICAgICB7IWlzVXBkYXRpbmcgJiYgKFxuICAgICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgICB7bWVudU9wdGlvbnMubWFwKChvcHRpb24sIGlkeCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIW9wdGlvbikgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGlkeCA9PT0gZGV0YWlsc01lbnVJbmRleFxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxCb3gga2V5PXtvcHRpb24udmFsdWV9PlxuICAgICAgICAgICAgICAgICAgPFRleHQgY29sb3I9e2lzU2VsZWN0ZWQgPyAnc3VnZ2VzdGlvbicgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAgICAgICAgICB7aXNTZWxlY3RlZCA/IGZpZ3VyZXMucG9pbnRlciA6ICcgJ30ge29wdGlvbi5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgIHtvcHRpb24uc2Vjb25kYXJ5TGFiZWwgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj4ge29wdGlvbi5zZWNvbmRhcnlMYWJlbH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cblxuICAgICAgICB7LyogU2hvdyBleHBsYW5hdG9yeSB0ZXh0IGF0IHRoZSBib3R0b20gd2hlbiBhdXRvLXVwZGF0ZSBpcyBlbmFibGVkICovfVxuICAgICAgICB7IWlzVXBkYXRpbmcgJiZcbiAgICAgICAgICAhc2hvdWxkU2tpcFBsdWdpbkF1dG91cGRhdGUoKSAmJlxuICAgICAgICAgIHNlbGVjdGVkTWFya2V0cGxhY2UuYXV0b1VwZGF0ZSAmJiAoXG4gICAgICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgICAgIEF1dG8tdXBkYXRlIGVuYWJsZWQuIENsYXVkZSBDb2RlIHdpbGwgYXV0b21hdGljYWxseSB1cGRhdGUgdGhpc1xuICAgICAgICAgICAgICAgIG1hcmtldHBsYWNlIGFuZCBpdHMgaW5zdGFsbGVkIHBsdWdpbnMuXG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgPEJveCBtYXJnaW5MZWZ0PXszfT5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvciBpdGFsaWM+XG4gICAgICAgICAgICB7aXNVcGRhdGluZyA/IChcbiAgICAgICAgICAgICAgPD5QbGVhc2Ugd2FpdOKApjwvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPEJ5bGluZT5cbiAgICAgICAgICAgICAgICA8Q29uZmlndXJhYmxlU2hvcnRjdXRIaW50XG4gICAgICAgICAgICAgICAgICBhY3Rpb249XCJzZWxlY3Q6YWNjZXB0XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ9XCJTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9XCJFbnRlclwiXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cInNlbGVjdFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Q29uZmlndXJhYmxlU2hvcnRjdXRIaW50XG4gICAgICAgICAgICAgICAgICBhY3Rpb249XCJjb25maXJtOm5vXCJcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ9XCJDb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9XCJFc2NcIlxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJnbyBiYWNrXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0J5bGluZT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvQm94PlxuICAgIClcbiAgfVxuXG4gIC8vIFNob3cgbWFya2V0cGxhY2UgbGlzdFxuICBjb25zdCB7IHVwZGF0ZUNvdW50LCByZW1vdmVDb3VudCB9ID0gZ2V0UGVuZGluZ0NvdW50cygpXG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgIDxCb3ggbWFyZ2luQm90dG9tPXsxfT5cbiAgICAgICAgPFRleHQgYm9sZD5NYW5hZ2UgbWFya2V0cGxhY2VzPC9UZXh0PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIHsvKiBBZGQgTWFya2V0cGxhY2Ugb3B0aW9uICovfVxuICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwicm93XCIgZ2FwPXsxfSBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICA8VGV4dCBjb2xvcj17c2VsZWN0ZWRJbmRleCA9PT0gMCA/ICdzdWdnZXN0aW9uJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAge3NlbGVjdGVkSW5kZXggPT09IDAgPyBmaWd1cmVzLnBvaW50ZXIgOiAnICd9ICtcbiAgICAgICAgPC9UZXh0PlxuICAgICAgICA8VGV4dCBib2xkIGNvbG9yPXtzZWxlY3RlZEluZGV4ID09PSAwID8gJ3N1Z2dlc3Rpb24nIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICBBZGQgTWFya2V0cGxhY2VcbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIHsvKiBNYXJrZXRwbGFjZSBsaXN0ICovfVxuICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgIHttYXJrZXRwbGFjZVN0YXRlcy5tYXAoKHN0YXRlLCBpZHgpID0+IHtcbiAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gaWR4ICsgMSA9PT0gc2VsZWN0ZWRJbmRleCAvLyArMSBiZWNhdXNlIEFkZCBNYXJrZXRwbGFjZSBpcyBhdCBpbmRleCAwXG5cbiAgICAgICAgICAvLyBCdWlsZCBzdGF0dXMgaW5kaWNhdG9yc1xuICAgICAgICAgIGNvbnN0IGluZGljYXRvcnM6IHN0cmluZ1tdID0gW11cbiAgICAgICAgICBpZiAoc3RhdGUucGVuZGluZ1VwZGF0ZSkgaW5kaWNhdG9ycy5wdXNoKCdVUERBVEUnKVxuICAgICAgICAgIGlmIChzdGF0ZS5wZW5kaW5nUmVtb3ZlKSBpbmRpY2F0b3JzLnB1c2goJ1JFTU9WRScpXG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEJveCBrZXk9e3N0YXRlLm5hbWV9IGZsZXhEaXJlY3Rpb249XCJyb3dcIiBnYXA9ezF9IG1hcmdpbkJvdHRvbT17MX0+XG4gICAgICAgICAgICAgIDxUZXh0IGNvbG9yPXtpc1NlbGVjdGVkID8gJ3N1Z2dlc3Rpb24nIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICB7aXNTZWxlY3RlZCA/IGZpZ3VyZXMucG9pbnRlciA6ICcgJ317JyAnfVxuICAgICAgICAgICAgICAgIHtzdGF0ZS5wZW5kaW5nUmVtb3ZlID8gZmlndXJlcy5jcm9zcyA6IGZpZ3VyZXMuYnVsbGV0fVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGZsZXhHcm93PXsxfT5cbiAgICAgICAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJyb3dcIiBnYXA9ezF9PlxuICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgYm9sZFxuICAgICAgICAgICAgICAgICAgICBzdHJpa2V0aHJvdWdoPXtzdGF0ZS5wZW5kaW5nUmVtb3ZlfVxuICAgICAgICAgICAgICAgICAgICBkaW1Db2xvcj17c3RhdGUucGVuZGluZ1JlbW92ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3N0YXRlLm5hbWUgPT09ICdjbGF1ZGUtcGx1Z2lucy1vZmZpY2lhbCcgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwiY2xhdWRlXCI+4py7IDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge3N0YXRlLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5uYW1lID09PSAnY2xhdWRlLXBsdWdpbnMtb2ZmaWNpYWwnICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBjb2xvcj1cImNsYXVkZVwiPiDinLs8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICB7aW5kaWNhdG9ycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRleHQgY29sb3I9XCJ3YXJuaW5nXCI+W3tpbmRpY2F0b3JzLmpvaW4oJywgJyl9XTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+e3N0YXRlLnNvdXJjZX08L1RleHQ+XG4gICAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICAgICAgICB7c3RhdGUucGx1Z2luQ291bnQgIT09IHVuZGVmaW5lZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDw+e3N0YXRlLnBsdWdpbkNvdW50fSBhdmFpbGFibGU8Lz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7c3RhdGUuaW5zdGFsbGVkUGx1Z2lucyAmJlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5pbnN0YWxsZWRQbHVnaW5zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDw+IOKAoiB7c3RhdGUuaW5zdGFsbGVkUGx1Z2lucy5sZW5ndGh9IGluc3RhbGxlZDwvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge3N0YXRlLmxhc3RVcGRhdGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICB7JyAnfVxuICAgICAgICAgICAgICAgICAgICAgIOKAoiBVcGRhdGVkeycgJ31cbiAgICAgICAgICAgICAgICAgICAgICB7bmV3IERhdGUoc3RhdGUubGFzdFVwZGF0ZWQpLnRvTG9jYWxlRGF0ZVN0cmluZygpfVxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIClcbiAgICAgICAgfSl9XG4gICAgICA8L0JveD5cblxuICAgICAgey8qIFBlbmRpbmcgY2hhbmdlcyBzdW1tYXJ5ICovfVxuICAgICAge2hhc1BlbmRpbmdDaGFuZ2VzKCkgJiYgKFxuICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0gZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgPFRleHQgYm9sZD5QZW5kaW5nIGNoYW5nZXM6PC9UZXh0PnsnICd9XG4gICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5FbnRlciB0byBhcHBseTwvVGV4dD5cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAge3VwZGF0ZUNvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAg4oCiIFVwZGF0ZSB7dXBkYXRlQ291bnR9IHtwbHVyYWwodXBkYXRlQ291bnQsICdtYXJrZXRwbGFjZScpfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3JlbW92ZUNvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICA8VGV4dCBjb2xvcj1cIndhcm5pbmdcIj5cbiAgICAgICAgICAgICAg4oCiIFJlbW92ZSB7cmVtb3ZlQ291bnR9IHtwbHVyYWwocmVtb3ZlQ291bnQsICdtYXJrZXRwbGFjZScpfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAgey8qIFByb2Nlc3NpbmcgaW5kaWNhdG9yICovfVxuICAgICAge2lzUHJvY2Vzc2luZyAmJiAoXG4gICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICA8VGV4dCBjb2xvcj1cImNsYXVkZVwiPlByb2Nlc3NpbmcgY2hhbmdlc+KApjwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7LyogRXJyb3IgZGlzcGxheSAqL31cbiAgICAgIHtwcm9jZXNzRXJyb3IgJiYgKFxuICAgICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgICAgPFRleHQgY29sb3I9XCJlcnJvclwiPntwcm9jZXNzRXJyb3J9PC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIDxNYW5hZ2VNYXJrZXRwbGFjZXNLZXlIaW50c1xuICAgICAgICBleGl0U3RhdGU9e2V4aXRTdGF0ZX1cbiAgICAgICAgaGFzUGVuZGluZ0FjdGlvbnM9e2hhc1BlbmRpbmdDaGFuZ2VzKCl9XG4gICAgICAvPlxuICAgIDwvQm94PlxuICApXG59XG5cbnR5cGUgTWFuYWdlTWFya2V0cGxhY2VzS2V5SGludHNQcm9wcyA9IHtcbiAgZXhpdFN0YXRlOiBQcm9wc1snZXhpdFN0YXRlJ11cbiAgaGFzUGVuZGluZ0FjdGlvbnM6IGJvb2xlYW5cbn1cblxuZnVuY3Rpb24gTWFuYWdlTWFya2V0cGxhY2VzS2V5SGludHMoe1xuICBleGl0U3RhdGUsXG4gIGhhc1BlbmRpbmdBY3Rpb25zLFxufTogTWFuYWdlTWFya2V0cGxhY2VzS2V5SGludHNQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGlmIChleGl0U3RhdGUucGVuZGluZykge1xuICAgIHJldHVybiAoXG4gICAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yIGl0YWxpYz5cbiAgICAgICAgICBQcmVzcyB7ZXhpdFN0YXRlLmtleU5hbWV9IGFnYWluIHRvIGdvIGJhY2tcbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9Cb3g+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IG1hcmdpblRvcD17MX0+XG4gICAgICA8VGV4dCBkaW1Db2xvciBpdGFsaWM+XG4gICAgICAgIDxCeWxpbmU+XG4gICAgICAgICAge2hhc1BlbmRpbmdBY3Rpb25zICYmIChcbiAgICAgICAgICAgIDxDb25maWd1cmFibGVTaG9ydGN1dEhpbnRcbiAgICAgICAgICAgICAgYWN0aW9uPVwic2VsZWN0OmFjY2VwdFwiXG4gICAgICAgICAgICAgIGNvbnRleHQ9XCJTZWxlY3RcIlxuICAgICAgICAgICAgICBmYWxsYmFjaz1cIkVudGVyXCJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJhcHBseSBjaGFuZ2VzXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IWhhc1BlbmRpbmdBY3Rpb25zICYmIChcbiAgICAgICAgICAgIDxDb25maWd1cmFibGVTaG9ydGN1dEhpbnRcbiAgICAgICAgICAgICAgYWN0aW9uPVwic2VsZWN0OmFjY2VwdFwiXG4gICAgICAgICAgICAgIGNvbnRleHQ9XCJTZWxlY3RcIlxuICAgICAgICAgICAgICBmYWxsYmFjaz1cIkVudGVyXCJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJzZWxlY3RcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHshaGFzUGVuZGluZ0FjdGlvbnMgJiYgKFxuICAgICAgICAgICAgPEtleWJvYXJkU2hvcnRjdXRIaW50IHNob3J0Y3V0PVwidVwiIGFjdGlvbj1cInVwZGF0ZVwiIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IWhhc1BlbmRpbmdBY3Rpb25zICYmIChcbiAgICAgICAgICAgIDxLZXlib2FyZFNob3J0Y3V0SGludCBzaG9ydGN1dD1cInJcIiBhY3Rpb249XCJyZW1vdmVcIiAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludFxuICAgICAgICAgICAgYWN0aW9uPVwiY29uZmlybTpub1wiXG4gICAgICAgICAgICBjb250ZXh0PVwiQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgIGZhbGxiYWNrPVwiRXNjXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtoYXNQZW5kaW5nQWN0aW9ucyA/ICdjYW5jZWwnIDogJ2dvIGJhY2snfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQnlsaW5lPlxuICAgICAgPC9UZXh0PlxuICAgIDwvQm94PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxPQUFPLE1BQU0sU0FBUztBQUM3QixPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLFNBQVNDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNuRCxTQUNFLEtBQUtDLDBEQUEwRCxFQUMvREMsUUFBUSxRQUNILGlDQUFpQztBQUN4QyxTQUFTQyx3QkFBd0IsUUFBUSw4Q0FBOEM7QUFDdkYsU0FBU0MsTUFBTSxRQUFRLDBDQUEwQztBQUNqRSxTQUFTQyxvQkFBb0IsUUFBUSx3REFBd0Q7QUFDN0Y7QUFDQSxTQUFTQyxHQUFHLEVBQUVDLElBQUksRUFBRUMsUUFBUSxRQUFRLGNBQWM7QUFDbEQsU0FDRUMsYUFBYSxFQUNiQyxjQUFjLFFBQ1Qsb0NBQW9DO0FBQzNDLGNBQWNDLFlBQVksUUFBUSx1QkFBdUI7QUFDekQsU0FBU0MsS0FBSyxRQUFRLHNCQUFzQjtBQUM1QyxTQUFTQywwQkFBMEIsUUFBUSx1QkFBdUI7QUFDbEUsU0FBU0MsWUFBWSxRQUFRLHVCQUF1QjtBQUNwRCxTQUFTQyxjQUFjLFFBQVEsbUNBQW1DO0FBQ2xFLFNBQ0VDLGNBQWMsRUFDZEMsOEJBQThCLEVBQzlCQywyQkFBMkIsRUFDM0JDLHVDQUF1QyxRQUNsQywyQ0FBMkM7QUFDbEQsU0FDRUMsMkJBQTJCLEVBQzNCQyxrQkFBa0IsRUFDbEJDLHVCQUF1QixFQUN2QkMsd0JBQXdCLFFBQ25CLDJDQUEyQztBQUNsRCxTQUFTQyw0QkFBNEIsUUFBUSx5Q0FBeUM7QUFDdEYsU0FBU0MsY0FBYyxRQUFRLHFDQUFxQztBQUNwRSxTQUFTQyx1QkFBdUIsUUFBUSxnQ0FBZ0M7QUFDeEUs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